DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_DEAL_CREAT_PVT

Source


1 PACKAGE BODY Okl_Deal_Creat_Pvt AS
2 /* $Header: OKLRDCRB.pls 120.5.12010000.5 2008/11/21 21:04:24 cklee ship $ */
3 
4     G_MODULE VARCHAR2(255) := 'okl.authoring.okl_deal_creat_pvt';
5     G_DEBUG_ENABLED CONSTANT VARCHAR2(40) := OKL_DEBUG_PUB.CHECK_LOG_ENABLED;
6     G_IS_DEBUG_STATEMENT_ON BOOLEAN;
7    G_API_TYPE	VARCHAR2(3) := 'PVT';
8 
9    G_RLE_CODE  VARCHAR2(10) := 'LESSEE';
10    G_STS_CODE  VARCHAR2(10) := 'NEW';
11    G_LEASE_VENDOR  VARCHAR2(10) := 'OKL_VENDOR';
12    G_VENDOR_BILL_RGD_CODE  VARCHAR2(10) := 'LAVENB';
13    G_UNEXPECTED_ERROR CONSTANT	VARCHAR2(200) := 'OKC_CONTRACTS_UNEXPECTED_ERROR';
14    G_SQLERRM_TOKEN	 CONSTANT	VARCHAR2(200) := 'ERROR_MESSAGE';
15    G_SQLCODE_TOKEN	 CONSTANT	VARCHAR2(200) := 'ERROR_CODE';
16 
17    SUBTYPE rgpv_rec_type IS OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
18    SUBTYPE rulv_rec_type IS Okl_Rule_Pub.rulv_rec_type;
19    SUBTYPE rulv_tbl_type IS Okl_Rule_Pub.rulv_tbl_type;
20    SUBTYPE chrv_rec_type IS OKL_OKC_MIGRATION_PVT.chrv_rec_type;
21    SUBTYPE khrv_rec_type IS OKL_CONTRACT_PUB.khrv_rec_type;
22 
23    /*
24    -- mvasudev, 08/17/2004
25    -- Added Constants to enable Business Event
26    */
27    G_WF_EVT_KHR_CREATED CONSTANT VARCHAR2(41) := 'oracle.apps.okl.la.lease_contract.created';
28    G_WF_EVT_KHR_UPDATED CONSTANT VARCHAR2(41) := 'oracle.apps.okl.la.lease_contract.updated';
29 
30    G_WF_ITM_CONTRACT_ID CONSTANT VARCHAR2(11) := 'CONTRACT_ID';
31 
32 
33   FUNCTION GET_AK_PROMPT(p_ak_region	IN VARCHAR2, p_ak_attribute	IN VARCHAR2)
34   RETURN VARCHAR2 IS
35 
36   	CURSOR ak_prompt_csr(p_ak_region VARCHAR2, p_ak_attribute VARCHAR2) IS
37 	--start modified abhsaxen for performance SQLID 20562566
38 	    select a.attribute_label_long
39 	 from ak_region_items ri, ak_regions r, ak_attributes_vl a
40 	 where ri.region_code = r.region_code
41 	 and ri.region_application_id = r.region_application_id
42 	 and ri.attribute_code = a.attribute_code
43 	 and ri.attribute_application_id = a.attribute_application_id
44 	 and ri.region_code  =  p_ak_region
45 	 and ri.attribute_code = p_ak_attribute
46 	--end modified abhsaxen for performance SQLID 20562566
47 	;
48 
49   	l_ak_prompt AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
50   BEGIN
51   	OPEN ak_prompt_csr(p_ak_region, p_ak_attribute);
52   	FETCH ak_prompt_csr INTO l_ak_prompt;
53   	CLOSE ak_prompt_csr;
54   	RETURN(l_ak_prompt);
55   END;
56 
57   ---------------------------------------------------------------------------
58   -- FUNCTION get_rec for: OKC_K_HEADERS_V
59   ---------------------------------------------------------------------------
60   FUNCTION get_rec (
61     p_chrv_rec                     IN chrv_rec_type,
62     x_no_data_found                OUT NOCOPY BOOLEAN
63   ) RETURN chrv_rec_type IS
64     CURSOR okc_chrv_pk_csr (p_id                 IN NUMBER) IS
65     SELECT
66             ID,
67             OBJECT_VERSION_NUMBER,
68             SFWT_FLAG,
69             CHR_ID_RESPONSE,
70             CHR_ID_AWARD,
71             INV_ORGANIZATION_ID,
72             STS_CODE,
73             QCL_ID,
74             SCS_CODE,
75             CONTRACT_NUMBER,
76             CURRENCY_CODE,
77             CONTRACT_NUMBER_MODIFIER,
78             ARCHIVED_YN,
79             DELETED_YN,
80             CUST_PO_NUMBER_REQ_YN,
81             PRE_PAY_REQ_YN,
82             CUST_PO_NUMBER,
83             SHORT_DESCRIPTION,
84             COMMENTS,
85             DESCRIPTION,
86             DPAS_RATING,
87             COGNOMEN,
88             TEMPLATE_YN,
89             TEMPLATE_USED,
90             DATE_APPROVED,
91             DATETIME_CANCELLED,
92             AUTO_RENEW_DAYS,
93             DATE_ISSUED,
94             DATETIME_RESPONDED,
95             NON_RESPONSE_REASON,
96             NON_RESPONSE_EXPLAIN,
97             RFP_TYPE,
98             CHR_TYPE,
99             KEEP_ON_MAIL_LIST,
100             SET_ASIDE_REASON,
101             SET_ASIDE_PERCENT,
102             RESPONSE_COPIES_REQ,
103             DATE_CLOSE_PROJECTED,
104             DATETIME_PROPOSED,
105             DATE_SIGNED,
106             DATE_TERMINATED,
107             DATE_RENEWED,
108             TRN_CODE,
109             START_DATE,
110             END_DATE,
111             AUTHORING_ORG_ID,
112             BUY_OR_SELL,
113             ISSUE_OR_RECEIVE,
114 	    ESTIMATED_AMOUNT,
115             ESTIMATED_AMOUNT_RENEWED,
116             CURRENCY_CODE_RENEWED,
117 	    UPG_ORIG_SYSTEM_REF,
118 	    UPG_ORIG_SYSTEM_REF_ID,
119 	    APPLICATION_ID,
120             ORIG_SYSTEM_SOURCE_CODE,
121             ORIG_SYSTEM_ID1,
122             ORIG_SYSTEM_REFERENCE1,
123             PROGRAM_ID,
124             REQUEST_ID,
125             PROGRAM_UPDATE_DATE,
126             PROGRAM_APPLICATION_ID,
127             PRICE_LIST_ID,
128             PRICING_DATE,
129             SIGN_BY_DATE,
130             TOTAL_LINE_LIST_PRICE,
131             USER_ESTIMATED_AMOUNT,
132             ATTRIBUTE_CATEGORY,
133             ATTRIBUTE1,
134             ATTRIBUTE2,
135             ATTRIBUTE3,
136             ATTRIBUTE4,
137             ATTRIBUTE5,
138             ATTRIBUTE6,
139             ATTRIBUTE7,
140             ATTRIBUTE8,
141             ATTRIBUTE9,
142             ATTRIBUTE10,
143             ATTRIBUTE11,
144             ATTRIBUTE12,
145             ATTRIBUTE13,
146             ATTRIBUTE14,
147             ATTRIBUTE15,
148             CREATED_BY,
149             CREATION_DATE,
150             LAST_UPDATED_BY,
151             LAST_UPDATE_DATE,
152             LAST_UPDATE_LOGIN
153       FROM Okc_K_Headers_V
154      WHERE okc_k_headers_v.id   = p_id;
155     l_okc_chrv_pk                  okc_chrv_pk_csr%ROWTYPE;
156     l_chrv_rec                     chrv_rec_type;
157   BEGIN
158 
159     x_no_data_found := TRUE;
160     -- Get current database values
161     OPEN okc_chrv_pk_csr (p_chrv_rec.id);
162     FETCH okc_chrv_pk_csr INTO
163               l_chrv_rec.ID,
164               l_chrv_rec.OBJECT_VERSION_NUMBER,
165               l_chrv_rec.SFWT_FLAG,
166               l_chrv_rec.CHR_ID_RESPONSE,
167               l_chrv_rec.CHR_ID_AWARD,
168               l_chrv_rec.INV_ORGANIZATION_ID,
169               l_chrv_rec.STS_CODE,
170               l_chrv_rec.QCL_ID,
171               l_chrv_rec.SCS_CODE,
172               l_chrv_rec.CONTRACT_NUMBER,
173               l_chrv_rec.CURRENCY_CODE,
174               l_chrv_rec.CONTRACT_NUMBER_MODIFIER,
175               l_chrv_rec.ARCHIVED_YN,
176               l_chrv_rec.DELETED_YN,
177               l_chrv_rec.CUST_PO_NUMBER_REQ_YN,
178               l_chrv_rec.PRE_PAY_REQ_YN,
179               l_chrv_rec.CUST_PO_NUMBER,
180               l_chrv_rec.SHORT_DESCRIPTION,
181               l_chrv_rec.COMMENTS,
182               l_chrv_rec.DESCRIPTION,
183               l_chrv_rec.DPAS_RATING,
184               l_chrv_rec.COGNOMEN,
185               l_chrv_rec.TEMPLATE_YN,
186               l_chrv_rec.TEMPLATE_USED,
187               l_chrv_rec.DATE_APPROVED,
188               l_chrv_rec.DATETIME_CANCELLED,
189               l_chrv_rec.AUTO_RENEW_DAYS,
190               l_chrv_rec.DATE_ISSUED,
191               l_chrv_rec.DATETIME_RESPONDED,
192               l_chrv_rec.NON_RESPONSE_REASON,
193               l_chrv_rec.NON_RESPONSE_EXPLAIN,
194               l_chrv_rec.RFP_TYPE,
195               l_chrv_rec.CHR_TYPE,
196               l_chrv_rec.KEEP_ON_MAIL_LIST,
197               l_chrv_rec.SET_ASIDE_REASON,
198               l_chrv_rec.SET_ASIDE_PERCENT,
199               l_chrv_rec.RESPONSE_COPIES_REQ,
200               l_chrv_rec.DATE_CLOSE_PROJECTED,
201               l_chrv_rec.DATETIME_PROPOSED,
202               l_chrv_rec.DATE_SIGNED,
203               l_chrv_rec.DATE_TERMINATED,
204               l_chrv_rec.DATE_RENEWED,
205               l_chrv_rec.TRN_CODE,
206               l_chrv_rec.START_DATE,
207               l_chrv_rec.END_DATE,
208               l_chrv_rec.AUTHORING_ORG_ID,
209               l_chrv_rec.BUY_OR_SELL,
210               l_chrv_rec.ISSUE_OR_RECEIVE,
211 	      l_chrv_rec.ESTIMATED_AMOUNT,
212               l_chrv_rec.ESTIMATED_AMOUNT_RENEWED,
213               l_chrv_rec.CURRENCY_CODE_RENEWED,
214 	      l_chrv_rec.UPG_ORIG_SYSTEM_REF,
215 	      l_chrv_rec.UPG_ORIG_SYSTEM_REF_ID,
216 	      l_chrv_rec.APPLICATION_ID,
217               l_chrv_rec.ORIG_SYSTEM_SOURCE_CODE,
218               l_chrv_rec.ORIG_SYSTEM_ID1,
219               l_chrv_rec.ORIG_SYSTEM_REFERENCE1,
220               l_chrv_rec.program_id,
221               l_chrv_rec.request_id,
222               l_chrv_rec.program_update_date,
223               l_chrv_rec.program_application_id,
224               l_chrv_rec.price_list_id,
225               l_chrv_rec.pricing_date,
226               l_chrv_rec.sign_by_date,
227               l_chrv_rec.total_line_list_price,
228               l_chrv_rec.USER_ESTIMATED_AMOUNT,
229               l_chrv_rec.ATTRIBUTE_CATEGORY,
230               l_chrv_rec.ATTRIBUTE1,
231               l_chrv_rec.ATTRIBUTE2,
232               l_chrv_rec.ATTRIBUTE3,
233               l_chrv_rec.ATTRIBUTE4,
234               l_chrv_rec.ATTRIBUTE5,
235               l_chrv_rec.ATTRIBUTE6,
236               l_chrv_rec.ATTRIBUTE7,
237               l_chrv_rec.ATTRIBUTE8,
238               l_chrv_rec.ATTRIBUTE9,
239               l_chrv_rec.ATTRIBUTE10,
240               l_chrv_rec.ATTRIBUTE11,
241               l_chrv_rec.ATTRIBUTE12,
242               l_chrv_rec.ATTRIBUTE13,
243               l_chrv_rec.ATTRIBUTE14,
244               l_chrv_rec.ATTRIBUTE15,
245               l_chrv_rec.CREATED_BY,
246               l_chrv_rec.CREATION_DATE,
247               l_chrv_rec.LAST_UPDATED_BY,
248               l_chrv_rec.LAST_UPDATE_DATE,
249               l_chrv_rec.LAST_UPDATE_LOGIN;
250     x_no_data_found := okc_chrv_pk_csr%NOTFOUND;
251     CLOSE okc_chrv_pk_csr;
252     RETURN(l_chrv_rec);
253 
254   END get_rec;
255 
256   FUNCTION get_rec (
257     p_chrv_rec                     IN chrv_rec_type
258   ) RETURN chrv_rec_type IS
259     l_row_notfound                 BOOLEAN := TRUE;
260   BEGIN
261 
262     RETURN(get_rec(p_chrv_rec, l_row_notfound));
263 
264   END get_rec;
265  ---------------------------------------------------------------------------
266   -- FUNCTION get_rec for: OKL_K_HEADERS_V
267   ---------------------------------------------------------------------------
268   FUNCTION get_rec (
269     p_khrv_rec                     IN khrv_rec_type,
270     x_no_data_found                OUT NOCOPY BOOLEAN
271   ) RETURN khrv_rec_type IS
272     CURSOR okl_k_headers_v_pk_csr (p_id                 IN NUMBER) IS
273       SELECT
274 	ID,
275         OBJECT_VERSION_NUMBER,
276         ISG_ID,
277         KHR_ID,
278         PDT_ID,
279         AMD_CODE,
280         DATE_FIRST_ACTIVITY,
281         GENERATE_ACCRUAL_YN,
282         GENERATE_ACCRUAL_OVERRIDE_YN,
283         DATE_REFINANCED,
284         CREDIT_ACT_YN,
285         TERM_DURATION,
286         CONVERTED_ACCOUNT_YN,
287         DATE_CONVERSION_EFFECTIVE,
288         SYNDICATABLE_YN,
289         SALESTYPE_YN,
290         DATE_DEAL_TRANSFERRED,
291         DATETIME_PROPOSAL_EFFECTIVE,
292         DATETIME_PROPOSAL_INEFFECTIVE,
293         DATE_PROPOSAL_ACCEPTED,
294         ATTRIBUTE_CATEGORY,
295         ATTRIBUTE1,
296         ATTRIBUTE2,
297         ATTRIBUTE3,
298         ATTRIBUTE4,
299         ATTRIBUTE5,
300         ATTRIBUTE6,
301         ATTRIBUTE7,
302         ATTRIBUTE8,
303         ATTRIBUTE9,
304         ATTRIBUTE10,
305         ATTRIBUTE11,
306         ATTRIBUTE12,
307         ATTRIBUTE13,
308         ATTRIBUTE14,
309         ATTRIBUTE15,
310         CREATED_BY,
311         CREATION_DATE,
312         LAST_UPDATED_BY,
313         LAST_UPDATE_DATE,
314         LAST_UPDATE_LOGIN,
315         PRE_TAX_YIELD,
316         AFTER_TAX_YIELD,
317         IMPLICIT_INTEREST_RATE,
318         IMPLICIT_NON_IDC_INTEREST_RATE,
319         TARGET_PRE_TAX_YIELD,
320         TARGET_AFTER_TAX_YIELD,
321         TARGET_IMPLICIT_INTEREST_RATE,
322         TARGET_IMPLICIT_NONIDC_INTRATE,
323         DATE_LAST_INTERIM_INTEREST_CAL,
324         DEAL_TYPE,
325         PRE_TAX_IRR,
326         AFTER_TAX_IRR,
327         EXPECTED_DELIVERY_DATE,
328         ACCEPTED_DATE,
329         PREFUNDING_ELIGIBLE_YN,
330         REVOLVING_CREDIT_YN,
331         CURRENCY_CONVERSION_RATE,
332         CURRENCY_CONVERSION_DATE,
333         CURRENCY_CONVERSION_TYPE,
334         ASSIGNABLE_YN
335       FROM OKL_K_HEADERS_V
336       WHERE OKL_K_HEADERS_V.id     = p_id;
337       l_okl_k_headers_v_pk             okl_k_headers_v_pk_csr%ROWTYPE;
338       l_khrv_rec                      khrv_rec_type;
339   BEGIN
340 
341     x_no_data_found := TRUE;
342     -- Get current database values
343     OPEN okl_k_headers_v_pk_csr (p_khrv_rec.id);
344     FETCH okl_k_headers_v_pk_csr INTO
345        l_khrv_rec.ID,
346         l_khrv_rec.OBJECT_VERSION_NUMBER,
347         l_khrv_rec.ISG_ID,
348         l_khrv_rec.KHR_ID,
349         l_khrv_rec.PDT_ID,
350         l_khrv_rec.AMD_CODE,
351         l_khrv_rec.DATE_FIRST_ACTIVITY,
352         l_khrv_rec.GENERATE_ACCRUAL_YN,
353         l_khrv_rec.GENERATE_ACCRUAL_OVERRIDE_YN,
354         l_khrv_rec.DATE_REFINANCED,
355         l_khrv_rec.CREDIT_ACT_YN,
356         l_khrv_rec.TERM_DURATION,
357         l_khrv_rec.CONVERTED_ACCOUNT_YN,
358         l_khrv_rec.DATE_CONVERSION_EFFECTIVE,
359         l_khrv_rec.SYNDICATABLE_YN,
360         l_khrv_rec.SALESTYPE_YN,
361         l_khrv_rec.DATE_DEAL_TRANSFERRED,
362         l_khrv_rec.DATETIME_PROPOSAL_EFFECTIVE,
363         l_khrv_rec.DATETIME_PROPOSAL_INEFFECTIVE,
364         l_khrv_rec.DATE_PROPOSAL_ACCEPTED,
365         l_khrv_rec.ATTRIBUTE_CATEGORY,
366         l_khrv_rec.ATTRIBUTE1,
367         l_khrv_rec.ATTRIBUTE2,
368         l_khrv_rec.ATTRIBUTE3,
369         l_khrv_rec.ATTRIBUTE4,
370         l_khrv_rec.ATTRIBUTE5,
371         l_khrv_rec.ATTRIBUTE6,
372         l_khrv_rec.ATTRIBUTE7,
373         l_khrv_rec.ATTRIBUTE8,
374         l_khrv_rec.ATTRIBUTE9,
375         l_khrv_rec.ATTRIBUTE10,
376         l_khrv_rec.ATTRIBUTE11,
377         l_khrv_rec.ATTRIBUTE12,
378         l_khrv_rec.ATTRIBUTE13,
379         l_khrv_rec.ATTRIBUTE14,
380         l_khrv_rec.ATTRIBUTE15,
381         l_khrv_rec.CREATED_BY,
382         l_khrv_rec.CREATION_DATE,
383         l_khrv_rec.LAST_UPDATED_BY,
384         l_khrv_rec.LAST_UPDATE_DATE,
385         l_khrv_rec.LAST_UPDATE_LOGIN,
386         l_khrv_rec.PRE_TAX_YIELD,
387         l_khrv_rec.AFTER_TAX_YIELD,
388         l_khrv_rec.IMPLICIT_INTEREST_RATE,
389         l_khrv_rec.IMPLICIT_NON_IDC_INTEREST_RATE,
390         l_khrv_rec.TARGET_PRE_TAX_YIELD,
391         l_khrv_rec.TARGET_AFTER_TAX_YIELD,
392         l_khrv_rec.TARGET_IMPLICIT_INTEREST_RATE,
393         l_khrv_rec.TARGET_IMPLICIT_NONIDC_INTRATE,
394         l_khrv_rec.DATE_LAST_INTERIM_INTEREST_CAL,
395         l_khrv_rec.DEAL_TYPE,
396         l_khrv_rec.PRE_TAX_IRR,
397         l_khrv_rec.AFTER_TAX_IRR,
398         l_khrv_rec.EXPECTED_DELIVERY_DATE,
399         l_khrv_rec.ACCEPTED_DATE,
400         l_khrv_rec.PREFUNDING_ELIGIBLE_YN,
401         l_khrv_rec.REVOLVING_CREDIT_YN,
402         l_khrv_rec.CURRENCY_CONVERSION_RATE,
403         l_khrv_rec.CURRENCY_CONVERSION_DATE,
404 	l_khrv_rec.CURRENCY_CONVERSION_TYPE,
405 	l_khrv_rec.ASSIGNABLE_YN
406         ;
407     x_no_data_found := okl_k_headers_v_pk_csr%NOTFOUND;
408     CLOSE okl_k_headers_v_pk_csr;
409     RETURN(l_khrv_rec);
410   END get_rec;
411 
412   FUNCTION get_rec (
413     p_khrv_rec                     IN khrv_rec_type
414   ) RETURN khrv_rec_type IS
415     l_row_notfound                 BOOLEAN := TRUE;
416   BEGIN
417     RETURN(get_rec(p_khrv_rec, l_row_notfound));
418   END get_rec;
419 
420 -- Start of comments
421 --
422 -- Procedure Name  : create_from_template
423 -- Description     : creates a deal from a template
424 -- Business Rules  :
425 -- Parameters      :
426 -- Version         : 1.0
427 -- End of comments
428   PROCEDURE create_from_template(
429     p_api_version                  IN NUMBER,
430     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
431     x_return_status                OUT NOCOPY VARCHAR2,
432     x_msg_count                    OUT NOCOPY NUMBER,
433     x_msg_data                     OUT NOCOPY VARCHAR2,
434     p_contract_number              IN  VARCHAR2,
435     p_source_chr_id                IN  NUMBER,
436     x_chr_id                       OUT NOCOPY  NUMBER) AS
437 
438     l_end_date           OKL_K_HEADERS_FULL_V.END_DATE%TYPE DEFAULT NULL;
439     l_start_date         OKL_K_HEADERS_FULL_V.START_DATE%TYPE DEFAULT NULL;
440     l_term_duration      OKL_K_HEADERS_FULL_V.TERM_DURATION%TYPE DEFAULT NULL;
441 
442     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
443     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
444     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
445     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
446 
447     CURSOR get_k_start_date_and_term_csr(l_chr_id NUMBER) IS
448     -- START: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
449 	--SELECT ADD_MONTHS(start_date,term_duration)-1
450 	SELECT chr.start_date, khr.term_duration
451 	FROM okl_k_headers khr,
452          okc_k_headers_b chr
453     WHERE khr.id = chr.id
454 	AND chr.id = l_chr_id;
455     -- START: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
456 	--WHERE id = l_chr_id;
457 
458     --Bug 4654486
459     l_scs_code                     VARCHAR2(30);
460 
461     Cursor l_scs_csr  is
462     Select scs_code
463     From   okc_k_headers_b
464     where  id = p_source_chr_id;
465     --Bug 4654486 : end
466 
467   BEGIN
468 
469   --Bug 4654486
470    --Call the old api in case of MASTER_LEASE agreement
471     OPEN l_scs_csr;
472     FETCH l_scs_csr into l_scs_code;
473     CLOSE l_scs_csr;
474 
475     IF (l_scs_code  IS NOT NULL) AND (l_scs_code  = 'MASTER_LEASE')  Then
476        OKL_COPY_CONTRACT_PUB.copy_lease_contract(
477           p_api_version              => p_api_version,
478           p_init_msg_list            => p_init_msg_list,
479           x_return_status            => x_return_status,
480           x_msg_count                => x_msg_count,
481           x_msg_data                 => x_msg_data,
482           p_chr_id                   => p_source_chr_id,
483           p_contract_number          => p_contract_number,
484           p_contract_number_modifier => null,
485           p_renew_ref_yn             => OKC_API.G_FALSE,
486           p_trans_type               => 'CFA',
487           x_chr_id                   => x_chr_id);
488     ELSE
489       OKL_COPY_CONTRACT_PUB.copy_lease_contract_new(
490       p_api_version              => p_api_version,
491       p_init_msg_list            => p_init_msg_list,
492       x_return_status            => x_return_status,
493       x_msg_count                => x_msg_count,
494       x_msg_data                 => x_msg_data,
495       p_chr_id                   => p_source_chr_id,
496       p_contract_number          => p_contract_number,
497       p_contract_number_modifier => NULL,
498       p_renew_ref_yn             => OKC_API.G_FALSE,
499       p_trans_type               => 'CFA',
500       x_chr_id                   => x_chr_id);
501     END IF;
502 
503 	  -- START: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
504 	  /*
505       OPEN get_k_start_date_and_term_csr(x_chr_id);
506       FETCH get_k_start_date_and_term_csr INTO l_end_date;
507       CLOSE get_k_start_date_and_term_csr;
508 	  */
509 	  FOR get_k_start_date_and_term_rec IN get_k_start_date_and_term_csr(x_chr_id)
510 	  LOOP
511 	    l_end_date := OKL_LLA_UTIL_PVT.calculate_end_date(get_k_start_date_and_term_rec.start_date,get_k_start_date_and_term_rec.term_duration);
512 	  END LOOP;
513 	  -- END: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
514 
515       lp_chrv_rec.id := x_chr_id;
516       lp_khrv_rec.id := x_chr_id;
517       lp_khrv_rec.template_type_code := OKL_TEMP_TYPE_CONTRACT;
518       lp_chrv_rec.end_date := l_end_date;
519 
520 
521       IF l_end_date IS NOT NULL THEN
522       	      OKL_CONTRACT_PUB.update_contract_header(
523 	         p_api_version    => p_api_version,
524 	         p_init_msg_list  => p_init_msg_list,
525 	         x_return_status  => x_return_status,
526 	         x_msg_count      => x_msg_count,
527 	         x_msg_data       => x_msg_data,
528 	         p_chrv_rec       => lp_chrv_rec,
529 	         p_khrv_rec       => lp_khrv_rec,
530 	         x_chrv_rec       => lx_chrv_rec,
531 	         x_khrv_rec       => lx_khrv_rec);
532       END IF;
533 
534   END;
535 
536 
537 -- Start of comments
538 --
539 -- Procedure Name  : create_from_contract
540 -- Description     : creates a deal from a template
541 -- Business Rules  : I might need to provide yes to p_renew_ref_yn. Then I need to provide Class Operation ID
542 --                   somewhere inside that package
543 -- Parameters      :
544 -- Version         : 1.0
545 -- End of comments
546   PROCEDURE create_from_contract(
547     p_api_version                  IN NUMBER,
548     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
549     x_return_status                OUT NOCOPY VARCHAR2,
550     x_msg_count                    OUT NOCOPY NUMBER,
551     x_msg_data                     OUT NOCOPY VARCHAR2,
552     p_contract_number              IN  VARCHAR2,
553     p_source_chr_id                IN  NUMBER,
554     x_chr_id                       OUT NOCOPY NUMBER) AS
555 
556     --Bug 4654486
557     l_scs_code                     VARCHAR2(30);
558 
559     Cursor l_scs_csr  is
560     Select scs_code
561     From   okc_k_headers_b
562     where  id = p_source_chr_id;
563     --Bug 4654486 : end
564 
565   BEGIN
566 
567   --Bug 4654486
568    --Call the old api in case of MASTER_LEASE agreement
569     OPEN l_scs_csr;
570     FETCH l_scs_csr into l_scs_code;
571     CLOSE l_scs_csr;
572 
573     IF (l_scs_code  IS NOT NULL) AND (l_scs_code  = 'MASTER_LEASE')  Then
574        OKL_COPY_CONTRACT_PUB.copy_lease_contract(
575           p_api_version              => p_api_version,
576           p_init_msg_list            => p_init_msg_list,
577           x_return_status            => x_return_status,
578           x_msg_count                => x_msg_count,
579           x_msg_data                 => x_msg_data,
580           p_chr_id                   => p_source_chr_id,
581           p_contract_number          => p_contract_number,
582           p_contract_number_modifier => null,
583           p_renew_ref_yn             => OKC_API.G_FALSE,
584           p_trans_type               => 'CFA',
585           x_chr_id                   => x_chr_id);
586     ELSE
587       OKL_COPY_CONTRACT_PUB.copy_lease_contract_new(
588       p_api_version              => p_api_version,
589       p_init_msg_list            => p_init_msg_list,
590       x_return_status            => x_return_status,
591       x_msg_count                => x_msg_count,
592       x_msg_data                 => x_msg_data,
593       p_chr_id                   => p_source_chr_id,
594       p_contract_number          => p_contract_number,
595       p_contract_number_modifier => NULL,
596       p_renew_ref_yn             => OKC_API.G_FALSE,
597       p_trans_type               => 'CFA',
598       x_chr_id                   => x_chr_id);
599     END IF;
600 
601     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
602        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
603     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
604        RAISE OKC_API.G_EXCEPTION_ERROR;
605     END IF;
606 
607   END;
608 
609 
610 ------------------------------------------------------------------------------
611 -- PROCEDURE get_sll_rules
612 --
613 --  This procedure retrieves all SLL related to given SLH rule under LALEVL Category
614 --
615 -- Calls:
616 -- Called By:
617 ------------------------------------------------------------------------------
618    PROCEDURE get_sll_rules(
619                            x_return_status  OUT NOCOPY VARCHAR2,
620                            x_msg_count      OUT NOCOPY NUMBER,
621                            x_msg_data       OUT NOCOPY VARCHAR2,
622                            p_rgpv_rec       IN  rgpv_rec_type,
623                            p_rdf_code       IN  VARCHAR2,
624                            p_slh_id         IN  NUMBER,
625                            x_rulv_tbl       OUT NOCOPY rulv_tbl_type,
626                            x_rule_count     OUT NOCOPY NUMBER
627                           ) IS
628     CURSOR okc_rulv_csr (p_rgp_id IN NUMBER,
629                          p_rdf_code IN VARCHAR2,
630                          p_slh_id   IN NUMBER) IS
631     SELECT
632             ID,
633             OBJECT_VERSION_NUMBER,
634             SFWT_FLAG,
635             OBJECT1_ID1,
636             OBJECT2_ID1,
637             OBJECT3_ID1,
638             OBJECT1_ID2,
639             OBJECT2_ID2,
640             OBJECT3_ID2,
641             JTOT_OBJECT1_CODE,
642             JTOT_OBJECT2_CODE,
643             JTOT_OBJECT3_CODE,
644             DNZ_CHR_ID,
645             RGP_ID,
646             PRIORITY,
647             STD_TEMPLATE_YN,
648             COMMENTS,
649             WARN_YN,
650             ATTRIBUTE_CATEGORY,
651             ATTRIBUTE1,
652             ATTRIBUTE2,
653             ATTRIBUTE3,
654             ATTRIBUTE4,
655             ATTRIBUTE5,
656             ATTRIBUTE6,
657             ATTRIBUTE7,
658             ATTRIBUTE8,
659             ATTRIBUTE9,
660             ATTRIBUTE10,
661             ATTRIBUTE11,
662             ATTRIBUTE12,
663             ATTRIBUTE13,
664             ATTRIBUTE14,
665             ATTRIBUTE15,
666             CREATED_BY,
667             CREATION_DATE,
668             LAST_UPDATED_BY,
669             LAST_UPDATE_DATE,
670             LAST_UPDATE_LOGIN,
671             --TEXT,
672             RULE_INFORMATION_CATEGORY,
673             RULE_INFORMATION1,
674             RULE_INFORMATION2,
675             RULE_INFORMATION3,
676             RULE_INFORMATION4,
677             RULE_INFORMATION5,
678             RULE_INFORMATION6,
679             RULE_INFORMATION7,
680             RULE_INFORMATION8,
681             RULE_INFORMATION9,
682             RULE_INFORMATION10,
683             RULE_INFORMATION11,
684             RULE_INFORMATION12,
685             RULE_INFORMATION13,
686             RULE_INFORMATION14,
687             RULE_INFORMATION15,
688             TEMPLATE_YN,
689             ans_set_jtot_object_code,
690             ans_set_jtot_object_id1,
691             ans_set_jtot_object_id2,
692             DISPLAY_SEQUENCE
693      FROM Okc_Rules_V
694      WHERE okc_rules_v.rgp_id      = p_rgp_id
695      AND   okc_rules_v.object2_id1 = p_slh_id
696      AND   RULE_INFORMATION_CATEGORY = DECODE(p_rdf_code,NULL,RULE_INFORMATION_CATEGORY,p_rdf_code);
697 
698      l_rulv_rec                  rulv_rec_type;
699      i                           NUMBER DEFAULT 0;
700      l_proc_name                 VARCHAR2(35) := 'GET_SLL_RULES';
701   BEGIN
702 
703     -- Get current database values
704     OPEN okc_rulv_csr (p_rgpv_rec.id,
705                        p_rdf_code,
706                        p_slh_id);
707     LOOP
708     FETCH okc_rulv_csr INTO
709               l_rulv_rec.ID,
710               l_rulv_rec.OBJECT_VERSION_NUMBER,
711               l_rulv_rec.SFWT_FLAG,
712               l_rulv_rec.OBJECT1_ID1,
713               l_rulv_rec.OBJECT2_ID1,
714               l_rulv_rec.OBJECT3_ID1,
715               l_rulv_rec.OBJECT1_ID2,
716               l_rulv_rec.OBJECT2_ID2,
717               l_rulv_rec.OBJECT3_ID2,
718               l_rulv_rec.JTOT_OBJECT1_CODE,
719               l_rulv_rec.JTOT_OBJECT2_CODE,
720               l_rulv_rec.JTOT_OBJECT3_CODE,
721               l_rulv_rec.DNZ_CHR_ID,
722               l_rulv_rec.RGP_ID,
723               l_rulv_rec.PRIORITY,
724               l_rulv_rec.STD_TEMPLATE_YN,
725               l_rulv_rec.COMMENTS,
726               l_rulv_rec.WARN_YN,
727               l_rulv_rec.ATTRIBUTE_CATEGORY,
728               l_rulv_rec.ATTRIBUTE1,
729               l_rulv_rec.ATTRIBUTE2,
730               l_rulv_rec.ATTRIBUTE3,
731               l_rulv_rec.ATTRIBUTE4,
732               l_rulv_rec.ATTRIBUTE5,
733               l_rulv_rec.ATTRIBUTE6,
734               l_rulv_rec.ATTRIBUTE7,
735               l_rulv_rec.ATTRIBUTE8,
736               l_rulv_rec.ATTRIBUTE9,
737               l_rulv_rec.ATTRIBUTE10,
738               l_rulv_rec.ATTRIBUTE11,
739               l_rulv_rec.ATTRIBUTE12,
740               l_rulv_rec.ATTRIBUTE13,
741               l_rulv_rec.ATTRIBUTE14,
742               l_rulv_rec.ATTRIBUTE15,
743               l_rulv_rec.CREATED_BY,
744               l_rulv_rec.CREATION_DATE,
745               l_rulv_rec.LAST_UPDATED_BY,
746               l_rulv_rec.LAST_UPDATE_DATE,
747               l_rulv_rec.LAST_UPDATE_LOGIN,
748               --l_rulv_rec.TEXT,
749               l_rulv_rec.RULE_INFORMATION_CATEGORY,
750               l_rulv_rec.RULE_INFORMATION1,
751               l_rulv_rec.RULE_INFORMATION2,
752               l_rulv_rec.RULE_INFORMATION3,
753               l_rulv_rec.RULE_INFORMATION4,
754               l_rulv_rec.RULE_INFORMATION5,
755               l_rulv_rec.RULE_INFORMATION6,
756               l_rulv_rec.RULE_INFORMATION7,
757               l_rulv_rec.RULE_INFORMATION8,
758               l_rulv_rec.RULE_INFORMATION9,
759               l_rulv_rec.RULE_INFORMATION10,
760               l_rulv_rec.RULE_INFORMATION11,
761               l_rulv_rec.RULE_INFORMATION12,
762               l_rulv_rec.RULE_INFORMATION13,
763               l_rulv_rec.RULE_INFORMATION14,
764               l_rulv_rec.RULE_INFORMATION15,
765               l_rulv_rec.TEMPLATE_YN,
766               l_rulv_rec.ans_set_jtot_object_code,
767               l_rulv_rec.ans_set_jtot_object_id1,
768               l_rulv_rec.ans_set_jtot_object_id2,
769               l_rulv_rec.DISPLAY_SEQUENCE ;
770     EXIT WHEN okc_rulv_csr%NOTFOUND;
771       i := okc_rulv_csr%RowCount;
772       x_rulv_tbl(i) := l_rulv_rec;
773     END LOOP;
774     CLOSE okc_rulv_csr;
775     x_rule_count := i;
776 
777     RETURN;
778 
779    END get_sll_rules;
780 
781 ------------------------------------------------------------------------------
782 -- PROCEDURE sync_slh_sll
783 --
784 --  This procedure synchronizes SLH and SLL Rules
785 --
786 -- Calls:
787 -- Called By:
788 ------------------------------------------------------------------------------
789 
790   PROCEDURE sync_slh_sll(
791                          x_return_status OUT NOCOPY VARCHAR2,
792                          x_msg_count     OUT NOCOPY NUMBER,
793                          x_msg_data      OUT NOCOPY VARCHAR2,
794                          p_new_chr_id    IN  OKC_K_HEADERS_V.ID%TYPE,
795                          p_old_rgp_id    IN  NUMBER,
796                          p_new_rgp_id    IN  NUMBER
797                         ) IS
798 
799   l_proc_name   VARCHAR2(35)    := 'SYNC_SLH_SLL';
800   sync_failed   EXCEPTION;
801 
802   x_new_rgpv_rec      rgpv_rec_type;
803   x_new_slh_rulv_rec  rulv_rec_type;
804 
805   x_slh_rulv_tbl      rulv_tbl_type;
806   x_slh_rule_count    NUMBER;
807 
808   x_sll_rulv_tbl      rulv_tbl_type;
809   x_sll_rule_count    NUMBER;
810 
811   x_rulv_rec          rulv_rec_type;
812 
813   l_old_rgpv_rec      rgpv_rec_type;
814   l_slh_rulv_rec      rulv_rec_type;
815   l_sll_rulv_rec      rulv_rec_type;
816 
817   l_rebook_rgp_id NUMBER;
818   l_orig_rgp_id   NUMBER;
819 
820   l_rulv_tbl      rulv_tbl_type;
821   i               NUMBER := 0;
822 
823   CURSOR orig_cle_csr(p_cle_id OKC_K_LINES_V.ID%TYPE) IS
824   SELECT orig_system_id1
825   FROM   okc_k_lines_v
826   WHERE  id = p_cle_id;
827 
828   CURSOR del_rgp_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE,
829                      p_rgp_id NUMBER) IS
830   SELECT id
831   FROM   okc_rule_groups_v
832   WHERE  dnz_chr_id = p_chr_id
833   AND    id         = p_rgp_id
834   AND    rgd_code   = 'LALEVL';
835 
836   CURSOR rule_csr(p_rgp_id NUMBER) IS
837   SELECT id
838   FROM   okc_rules_v
839   WHERE  rgp_id = p_rgp_id
840   AND    rule_information_category IN ('LASLH','LASLL');
841 
842   BEGIN
843     x_return_status := Okc_Api.G_RET_STS_SUCCESS;
844 
845       -- Delete SLH, SLL from Original Contract
846       i := 1;
847 
848       FOR del_rgp_rec IN del_rgp_csr(p_new_chr_id,
849                                      p_new_rgp_id)
850       LOOP
851          FOR rule_rec IN rule_csr(del_rgp_rec.id)
852          LOOP
853             l_rulv_tbl(i).id := rule_rec.id;
854             i := i+ 1;
855          END LOOP;
856       END LOOP;
857 
858       Okl_Rule_Pub.delete_rule(
859                                p_api_version    => 1.0,
860                                p_init_msg_list  => Okc_Api.G_FALSE,
861                                x_return_status  => x_return_status,
862                                x_msg_count      => x_msg_count,
863                                x_msg_data       => x_msg_data,
864                                p_rulv_tbl       => l_rulv_tbl
865                               );
866       IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
867         RAISE sync_failed;
868       END IF;
869 
870       l_old_rgpv_rec.id := p_old_rgp_id;
871       --
872       -- Get SLH Rule from OLD Contract
873       --
874       Okl_Rule_Apis_Pvt.Get_Contract_Rules(
875                                            p_api_version    => 1.0,
876                                            p_init_msg_list  => Okl_Api.G_FALSE,
877                                            p_rgpv_rec       => l_old_rgpv_rec,
878                                            p_rdf_code       => 'LASLH',
879                                            x_return_status  => x_return_status,
880                                            x_msg_count      => x_msg_count,
881                                            x_msg_data       => x_msg_data,
882                                            x_rulv_tbl       => x_slh_rulv_tbl,
883                                            x_rule_count     => x_slh_rule_count
884                                           );
885       IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
886          RAISE sync_failed;
887       END IF;
888 
889       --x_slh_rulv_tbl_out := x_slh_rulv_tbl;
890       --x_slh_count        := x_slh_rule_count;
891 
892       --
893       -- create SLH Rule from OLD Contract
894       --
895       FOR i IN 1..x_slh_rule_count
896       LOOP
897          l_slh_rulv_rec            := x_slh_rulv_tbl(i);
898          l_slh_rulv_rec.rgp_id     := p_new_rgp_id;
899          l_slh_rulv_rec.dnz_chr_id := p_new_chr_id;
900 
901          Okl_Rule_Pub.create_rule(
902                                   p_api_version     => 1.0,
903                                   p_init_msg_list   => Okc_Api.G_FALSE,
904                                   x_return_status   => x_return_status,
905                                   x_msg_count       => x_msg_count,
906                                   x_msg_data        => x_msg_data,
907                                   p_rulv_rec        => l_slh_rulv_rec,
908                                   x_rulv_rec        => x_new_slh_rulv_rec
909                                  );
910          IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
911              x_return_status := Okc_Api.G_RET_STS_ERROR;
912              RAISE sync_failed;
913          END IF;
914 
915          --
916          -- Get SLL Rules from Header for a SLH
917          --
918          get_sll_rules(
919                        x_return_status  => x_return_status,
920                        x_msg_count      => x_msg_count,
921                        x_msg_data       => x_msg_data,
922                        p_rgpv_rec       => l_old_rgpv_rec,
923                        p_rdf_code       => 'LASLL',
924                        p_slh_id         => x_slh_rulv_tbl(i).id,
925                        x_rulv_tbl       => x_sll_rulv_tbl,
926                        x_rule_count     => x_sll_rule_count
927                       );
928          IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
929             RAISE sync_failed;
930          END IF;
931 
932          --x_sll_rulv_tbl_out := x_sll_rulv_tbl;
933          --x_sll_count        := x_sll_rule_count;
934 
935          -- Create a SLL rule under SLH created above
936          FOR i IN 1..x_sll_rule_count
937          LOOP
938 
939             l_sll_rulv_rec             := x_sll_rulv_tbl(i);
940             l_sll_rulv_rec.rgp_id      := p_new_rgp_id;
941             l_sll_rulv_rec.object2_id1 := x_new_slh_rulv_rec.id;
942             l_sll_rulv_rec.dnz_chr_id  := p_new_chr_id;
943 
944             Okl_Rule_Pub.create_rule(
945                                      p_api_version     => 1.0,
946                                      p_init_msg_list   => Okc_Api.G_FALSE,
947                                      x_return_status   => x_return_status,
948                                      x_msg_count       => x_msg_count,
949                                      x_msg_data        => x_msg_data,
950                                      p_rulv_rec        => l_sll_rulv_rec,
951                                      x_rulv_rec        => x_rulv_rec
952                                     );
953                IF (x_return_status <> Okc_Api.G_RET_STS_SUCCESS) THEN
954                    x_return_status := Okc_Api.G_RET_STS_ERROR;
955                    RAISE sync_failed;
956                END IF;
957          END LOOP; -- SLL
958 
959       END LOOP; -- SLH
960 
961   EXCEPTION
962     WHEN sync_failed THEN
963        x_return_status := Okc_Api.G_RET_STS_ERROR;
964   END sync_slh_sll;
965 
966 -- Start Bug 2376998
967 ------------------------------------------------------------------------------
968 -- PROCEDURE link_slh_sll
969 --
970 --  This procedure links SLH and SLL by calling sync_slh_sll at LINE level
971 --
972 -- Calls:
973 -- Called By:
974 ------------------------------------------------------------------------------
975 
976   PROCEDURE link_slh_sll(
977                          x_return_status OUT NOCOPY VARCHAR2,
978                          x_msg_count     OUT NOCOPY NUMBER,
979                          x_msg_data      OUT NOCOPY VARCHAR2,
980                          p_old_chr_id    IN  OKC_K_HEADERS_V.ID%TYPE,
981                          p_new_cle_id    IN  OKC_K_LINES_V.ID%TYPE,
982                          p_new_chr_id    IN  OKC_K_HEADERS_V.ID%TYPE
983                         ) IS
984 
985  link_failed EXCEPTION;
986 
987  CURSOR lalevl_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
988                     p_cle_id OKC_K_LINES_V.ID%TYPE) IS
989  SELECT id,
990         cle_id
991  FROM   okc_rule_groups_v
992  WHERE  dnz_chr_id = p_chr_id
993  AND    cle_id     = p_cle_id
994  AND    rgd_code   = 'LALEVL';
995 
996  CURSOR old_lalevl_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
997                         p_cle_id OKC_K_LINES_V.ID%TYPE) IS
998  SELECT id
999  FROM   okc_rule_groups_v
1000  WHERE  dnz_chr_id = p_chr_id
1001  AND    rgd_code   = 'LALEVL'
1002  AND    (cle_id    = p_cle_id
1003          OR ( cle_id IS NULL
1004               AND
1005               p_cle_id IS NULL));
1006 
1007  CURSOR old_line_csr (p_cle_id OKC_K_LINES_V.ID%TYPE) IS
1008  SELECT orig_system_id1
1009  FROM   OKC_K_LINES_V
1010  WHERE  id = p_cle_id;
1011 
1012  l_old_lalevl_id NUMBER;
1013  l_new_lalevl_id NUMBER;
1014  l_old_cle_id    OKC_K_LINES_V.ID%TYPE;
1015  l_new_cle_id    OKC_K_LINES_V.ID%TYPE;
1016 
1017  BEGIN
1018 
1019    -- get into the loop if lalevl entries found for the new contract
1020    FOR new_lalevl_rec IN lalevl_csr(p_new_chr_id,
1021                                     p_new_cle_id)
1022    LOOP
1023       l_new_lalevl_id := new_lalevl_rec.id;
1024       l_new_cle_id    := new_lalevl_rec.cle_id; -- new lalevl cle id in the rule group
1025 
1026       l_old_cle_id    := NULL;
1027       IF (l_new_cle_id IS NOT NULL) THEN
1028          OPEN old_line_csr (l_new_cle_id);  --get the old cle id
1029          FETCH old_line_csr INTO l_old_cle_id;
1030          CLOSE old_line_csr;
1031       END IF;
1032 
1033       OPEN old_lalevl_csr(p_old_chr_id,
1034                           l_old_cle_id);
1035       FETCH old_lalevl_csr INTO l_old_lalevl_id; -- get the old lalevl rue group id
1036       CLOSE old_lalevl_csr;
1037 
1038       sync_slh_sll(
1039                    x_return_status => x_return_status,
1040                    x_msg_count     => x_msg_count,
1041                    x_msg_data      => x_msg_data,
1042                    p_new_chr_id    => p_new_chr_id,
1043                    p_old_rgp_id    => l_old_lalevl_id,
1044                    p_new_rgp_id    => l_new_lalevl_id
1045                   );
1046       IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1047          RAISE Okl_Api.G_EXCEPTION_ERROR;
1048       END IF;
1049    END LOOP;
1050 
1051  EXCEPTION
1052    WHEN link_failed THEN
1053       x_return_status := OKC_API.G_RET_STS_ERROR;
1054  END link_slh_sll;
1055 
1056   PROCEDURE link_slh_sll(
1057                          x_return_status OUT NOCOPY VARCHAR2,
1058                          x_msg_count     OUT NOCOPY NUMBER,
1059                          x_msg_data      OUT NOCOPY VARCHAR2,
1060                          p_old_chr_id    IN OKC_K_HEADERS_V.ID%TYPE,
1061                          p_new_chr_id    IN OKC_K_HEADERS_V.ID%TYPE
1062                         ) IS
1063 
1064  link_failed EXCEPTION;
1065 
1066  CURSOR lalevl_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
1067  SELECT id,
1068         cle_id
1069  FROM   okc_rule_groups_v
1070  WHERE  dnz_chr_id = p_chr_id
1071  AND    cle_id     IS NULL       -- Bug 2376998
1072  AND    rgd_code   = 'LALEVL';
1073 
1074  CURSOR old_lalevl_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
1075                         p_cle_id OKC_K_LINES_V.ID%TYPE) IS
1076  SELECT id
1077  FROM   okc_rule_groups_v
1078  WHERE  dnz_chr_id = p_chr_id
1079  AND    rgd_code   = 'LALEVL'
1080  AND    (cle_id    = p_cle_id
1081          OR ( cle_id IS NULL
1082               AND
1083               p_cle_id IS NULL));
1084 
1085  CURSOR old_line_csr (p_cle_id OKC_K_LINES_V.ID%TYPE) IS
1086  SELECT orig_system_id1
1087  FROM   OKC_K_LINES_V
1088  WHERE  id = p_cle_id;
1089 
1090  l_old_lalevl_id NUMBER;
1091  l_new_lalevl_id NUMBER;
1092  l_old_cle_id    OKC_K_LINES_V.ID%TYPE;
1093  l_new_cle_id    OKC_K_LINES_V.ID%TYPE;
1094 
1095  BEGIN
1096 
1097    FOR new_lalevl_rec IN lalevl_csr(p_new_chr_id)
1098    LOOP
1099       l_new_lalevl_id := new_lalevl_rec.id;
1100       l_new_cle_id    := new_lalevl_rec.cle_id;
1101 
1102       l_old_cle_id    := NULL;
1103       IF (l_new_cle_id IS NOT NULL) THEN
1104          OPEN old_line_csr (l_new_cle_id);
1105          FETCH old_line_csr INTO l_old_cle_id;
1106          CLOSE old_line_csr;
1107       END IF;
1108 
1109       OPEN old_lalevl_csr(p_old_chr_id,
1110                           l_old_cle_id);
1111       FETCH old_lalevl_csr INTO l_old_lalevl_id;
1112       CLOSE old_lalevl_csr;
1113 
1114       sync_slh_sll(
1115                    x_return_status => x_return_status,
1116                    x_msg_count     => x_msg_count,
1117                    x_msg_data      => x_msg_data,
1118                    p_new_chr_id    => p_new_chr_id,
1119                    p_old_rgp_id    => l_old_lalevl_id,
1120                    p_new_rgp_id    => l_new_lalevl_id
1121                   );
1122       IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1123          RAISE OKL_API.G_EXCEPTION_ERROR;
1124       END IF;
1125    END LOOP;
1126 
1127  EXCEPTION
1128    WHEN link_failed THEN
1129       x_return_status := OKC_API.G_RET_STS_ERROR;
1130  END link_slh_sll;
1131 
1132 
1133   PROCEDURE copy_contract(
1134     p_api_version                  IN NUMBER,
1135     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1136     x_return_status                OUT NOCOPY VARCHAR2,
1137     x_msg_count                    OUT NOCOPY NUMBER,
1138     x_msg_data                     OUT NOCOPY VARCHAR2,
1139     p_contract_number              IN  VARCHAR2,
1140     p_source_chr_id                IN  NUMBER,
1141     x_chr_id                       OUT NOCOPY NUMBER) AS
1142 
1143     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1144     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1145     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1146     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1147 
1148     lp_cplv_rec OKC_CONTRACT_PARTY_PUB.cplv_rec_type;
1149     lx_cplv_rec OKC_CONTRACT_PARTY_PUB.cplv_rec_type;
1150 
1151     CURSOR get_curr_csr(p_id IN NUMBER) IS
1152     SELECT id,currency_code,currency_conversion_type,currency_conversion_date,currency_conversion_rate, cust_acct_id, khr_id
1153     FROM   okl_k_headers_full_v
1154     WHERE  scs_code = 'QUOTE'
1155     AND    id = p_id;
1156 
1157     CURSOR c_rgpv IS
1158     SELECT rgp.id
1159     FROM okc_rule_groups_b rgp, okc_subclass_rg_defs rg_defs
1160     WHERE rgp.dnz_chr_id = p_source_chr_id
1161     AND rgp.rgd_code = rg_defs.rgd_code
1162     AND rg_defs.scs_code = 'LEASE'
1163     AND  rgp.cle_id IS NULL
1164     AND  rgp.rgd_code NOT IN ('LATOWN','CURRENCY');
1165 
1166     CURSOR c_governances IS
1167     SELECT gvr.chr_id_referred
1168     FROM okc_governances gvr,
1169          okc_k_headers_b CHR,
1170          okc_k_headers_b mla
1171 	WHERE gvr.dnz_chr_id = p_source_chr_id
1172     AND gvr.chr_id = p_source_chr_id
1173     AND gvr.cle_id IS NULL
1174     AND CHR.id = gvr.dnz_chr_id
1175     AND mla.id = gvr.chr_id_referred
1176     AND mla.scs_code = 'MASTER_LEASE';
1177 
1178     CURSOR c_catv IS
1179     SELECT id
1180     FROM okc_k_articles_b
1181     WHERE dnz_chr_id = p_source_chr_id
1182     AND cle_id IS NULL;
1183 
1184     CURSOR c_cplv IS
1185     SELECT cpl.id
1186     FROM okc_k_party_roles_b cpl, okc_subclass_roles ROLES
1187     WHERE dnz_chr_id = p_source_chr_id
1188     AND cpl.rle_code = ROLES.rle_code
1189     AND ROLES.scs_code = 'LEASE'
1190     AND cpl.cle_id IS NULL;
1191 
1192 
1193         CURSOR c_lines IS
1194         SELECT cle.id
1195         FROM   okc_k_lines_b cle,
1196                okc_line_styles_b lse,
1197                okc_subclass_top_line stl
1198         WHERE  chr_id = p_source_chr_id
1199         AND    cle.lse_id= lse.id
1200         AND    stl.scs_code = 'LEASE'
1201         AND    lse.id = stl.lse_id
1202         AND    lse.lse_type = 'TLS'
1203         AND    lse.lse_parent_id IS NULL;
1204 
1205         CURSOR new_c_lines(p_dest_chr_id NUMBER) IS
1206         SELECT cle.id
1207         FROM   okc_k_lines_b cle,
1208                okc_line_styles_b lse,
1209                okc_subclass_top_line stl
1210         WHERE  chr_id = p_dest_chr_id
1211         AND    cle.lse_id= lse.id
1212         AND    stl.scs_code = 'LEASE'
1213         AND    lse.id = stl.lse_id
1214         AND    lse.lse_type = 'TLS'
1215         AND    lse.lse_parent_id IS NULL;
1216 
1217     l_cust_acct_id   okc_k_headers_b.cust_acct_id%type;
1218     l_khr_id         okl_k_headers.khr_id%type;
1219 
1220     l_chr_id			NUMBER;
1221     l_rgp_id			NUMBER;
1222     l_cpl_id			NUMBER;
1223     l_cle_id			NUMBER;
1224     l_cle_id_out		NUMBER;
1225     l_api_version	CONSTANT NUMBER	  := 1.0;
1226     l_api_name	VARCHAR2(30) := 'CREATE_NEW_DEAL';
1227 
1228     i				NUMBER;
1229     j				NUMBER := 0;
1230     l_mla_gvr_chr_id_referred NUMBER := NULL;
1231 
1232     l_line_tab okl_copy_asset_pub.klev_tbl_type;
1233     x_cle_id_tbl okl_copy_asset_pub.klev_tbl_type;
1234 
1235     l_currency_code okc_k_headers_b.currency_code%TYPE := NULL;
1236     l_currency_conversion_type okl_k_headers.currency_conversion_type%TYPE := NULL;
1237     l_currency_conversion_date okl_k_headers.currency_conversion_date%TYPE := NULL;
1238     l_currency_conversion_rate okl_k_headers.currency_conversion_rate%TYPE := NULL;
1239 
1240     lp_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
1241     lx_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
1242 
1243   BEGIN
1244 
1245   --  read hdr info from the quote contract and create a lease contract
1246   --  use get_rec to read the info
1247 
1248       x_return_status := OKC_API.START_ACTIVITY(
1249   			p_api_name      => l_api_name,
1250   			p_pkg_name      => g_pkg_name,
1251   			p_init_msg_list => p_init_msg_list,
1252   			l_api_version   => l_api_version,
1253   			p_api_version   => p_api_version,
1254   			p_api_type      => g_api_type,
1255   			x_return_status => x_return_status);
1256 
1257       -- check if activity started successfully
1258       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1259          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1260       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1261          RAISE OKC_API.G_EXCEPTION_ERROR;
1262       END IF;
1263 
1264       lp_chrv_rec.id := NULL;
1265       l_cust_acct_id := NULL;
1266       l_khr_id := NULL;
1267       OPEN get_curr_csr(p_source_chr_id);
1268       FETCH get_curr_csr INTO lp_chrv_rec.id,l_currency_code,l_currency_conversion_type,l_currency_conversion_date,l_currency_conversion_rate, l_cust_acct_id,l_khr_id;
1269       CLOSE get_curr_csr;
1270 
1271       IF lp_chrv_rec.id IS NULL THEN
1272 	OKC_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'quote_chr_id_not_found');
1273 	x_return_status := OKC_API.g_ret_sts_error;
1274 	RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1275       END IF;
1276 
1277 
1278       lp_khrv_rec.id := lp_chrv_rec.id;
1279       lp_chrv_rec.id := lp_chrv_rec.id;
1280 
1281       lp_chrv_rec := get_rec(lp_chrv_rec);
1282       lp_khrv_rec := get_rec(lp_khrv_rec);
1283 
1284       lp_chrv_rec.id := NULL;
1285       lp_chrv_rec.scs_code := 'LEASE';
1286       lp_khrv_rec.id := NULL;
1287 
1288       lp_chrv_rec.sfwt_flag := 'N';
1289       lp_chrv_rec.object_version_number := 1.0;
1290       lp_chrv_rec.sts_code := G_STS_CODE; -- 'ENTERED';
1291       lp_chrv_rec.scs_code := 'LEASE';
1292       lp_chrv_rec.contract_number := p_contract_number;
1293       lp_chrv_rec.authoring_org_id := OKL_CONTEXT.GET_OKC_ORG_ID;
1294       lp_chrv_rec.inv_organization_id := OKL_CONTEXT.get_okc_organization_id;
1295 --      lp_chrv_rec.currency_code := OKC_CURRENCY_API.GET_OU_CURRENCY(OKL_CONTEXT.GET_OKC_ORG_ID);
1296 
1297       lp_chrv_rec.cust_acct_id := l_cust_acct_id;
1298       lp_chrv_rec.currency_code := l_currency_code;
1299 
1300       lp_khrv_rec.currency_conversion_type := l_currency_conversion_type;
1301       lp_khrv_rec.currency_conversion_date := l_currency_conversion_date;
1302       lp_khrv_rec.currency_conversion_rate := l_currency_conversion_rate;
1303       lp_khrv_rec.khr_id := l_khr_id;
1304 
1305       lp_chrv_rec.currency_code_renewed := NULL;
1306       lp_chrv_rec.template_yn := 'N';
1307       lp_chrv_rec.chr_type := 'CYA';
1308       lp_chrv_rec.archived_yn := 'N';
1309       lp_chrv_rec.deleted_yn := 'N';
1310       lp_chrv_rec.buy_or_sell := 'S';
1311       lp_chrv_rec.issue_or_receive := 'I';
1312       lp_chrv_rec.orig_system_source_code := 'OKL_QUOTE';
1313       lp_chrv_rec.orig_system_id1 := p_source_chr_id;
1314 
1315       lp_khrv_rec.object_version_number := 1.0;
1316       lp_khrv_rec.generate_accrual_yn := 'Y';
1317       lp_khrv_rec.generate_accrual_override_yn := 'N';
1318   /*
1319       OKL_CONTRACT_PUB.validate_contract_header(
1320         p_api_version    => p_api_version,
1321         p_init_msg_list  => p_init_msg_list,
1322         x_return_status  => x_return_status,
1323         x_msg_count      => x_msg_count,
1324         x_msg_data       => x_msg_data,
1325         p_chrv_rec       => lp_chrv_rec,
1326         p_khrv_rec       => lp_khrv_rec);
1327 
1328       If (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
1329          raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1330       Elsif (x_return_status = OKC_API.G_RET_STS_ERROR) then
1331          raise OKC_API.G_EXCEPTION_ERROR;
1332       End If;
1333   */
1334       OKL_CONTRACT_PUB.create_contract_header(
1335         p_api_version    => p_api_version,
1336         p_init_msg_list  => p_init_msg_list,
1337         x_return_status  => x_return_status,
1338         x_msg_count      => x_msg_count,
1339         x_msg_data       => x_msg_data,
1340         p_chrv_rec       => lp_chrv_rec,
1341         p_khrv_rec       => lp_khrv_rec,
1342         x_chrv_rec       => lx_chrv_rec,
1343         x_khrv_rec       => lx_khrv_rec);
1344 
1345       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1346          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1347       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1348          RAISE OKC_API.G_EXCEPTION_ERROR;
1349       END IF;
1350 
1351       x_chr_id := lx_chrv_rec.id;
1352       l_chr_id := x_chr_id;
1353 
1354 -- copy master lease
1355     OPEN c_governances;
1356     FETCH c_governances INTO l_mla_gvr_chr_id_referred;
1357     CLOSE c_governances;
1358 
1359   IF( l_mla_gvr_chr_id_referred IS NOT NULL) THEN
1360 
1361     lp_mla_gvev_rec.id := NULL;
1362     lp_mla_gvev_rec.dnz_chr_id := l_chr_id;
1363     lp_mla_gvev_rec.chr_id := l_chr_id;
1364     lp_mla_gvev_rec.chr_id_referred := l_mla_gvr_chr_id_referred;
1365     lp_mla_gvev_rec.copied_only_yn := 'N';
1366 
1367     OKL_OKC_MIGRATION_PVT.create_governance(
1368         p_api_version    => p_api_version,
1369         p_init_msg_list  => p_init_msg_list,
1370         x_return_status  => x_return_status,
1371         x_msg_count      => x_msg_count,
1372         x_msg_data       => x_msg_data,
1373         p_gvev_rec       => lp_mla_gvev_rec,
1374         x_gvev_rec       => lx_mla_gvev_rec);
1375 
1376       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1377          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1378       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1379          RAISE OKC_API.G_EXCEPTION_ERROR;
1380       END IF;
1381 
1382    END IF;
1383 
1384 -- parties
1385       FOR l_c_cplv IN c_cplv LOOP
1386             -- l_old_return_status := x_return_status;
1387 
1388         OKL_COPY_CONTRACT_PUB.copy_party_roles(
1389  	        p_api_version    => p_api_version,
1390 	        p_init_msg_list  => p_init_msg_list,
1391 	        x_return_status  => x_return_status,
1392 	        x_msg_count      => x_msg_count,
1393 	        x_msg_data       => x_msg_data,
1394 	        p_cpl_id         => l_c_cplv.id,
1395 	        p_cle_id         => NULL,
1396 	        p_chr_id         => l_chr_id,
1397 	        P_rle_code       => NULL,
1398 	        x_cpl_id	 => l_cpl_id);
1399 
1400 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1401          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1402         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1403          RAISE OKC_API.G_EXCEPTION_ERROR;
1404         END IF;
1405 
1406       END LOOP;
1407 
1408 
1409 -- rules
1410 
1411     FOR l_c_rgpv IN c_rgpv LOOP
1412 
1413       -- l_old_return_status := l_return_status;
1414 
1415       OKL_COPY_CONTRACT_PUB.copy_rules (
1416 	   p_api_version	=> p_api_version,
1417            p_init_msg_list	=> p_init_msg_list,
1418            x_return_status 	=> x_return_status,
1419            x_msg_count     	=> x_msg_count,
1420            x_msg_data      	=> x_msg_data,
1421            p_rgp_id	      	=> l_c_rgpv.id,
1422            p_cle_id		=> NULL,
1423            p_chr_id	        => l_chr_id, -- the new generated contract header id
1424 	   p_to_template_yn     => 'N',
1425            x_rgp_id		=> l_rgp_id);
1426 
1427 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1428          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1429         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1430          RAISE OKC_API.G_EXCEPTION_ERROR;
1431         END IF;
1432 
1433     END LOOP;
1434 
1435 -- lines
1436 
1437    OPEN c_lines;
1438     LOOP
1439      FETCH c_lines INTO l_cle_id;
1440      EXIT WHEN c_lines%NOTFOUND;
1441      i := c_lines%RowCount;
1442      l_line_tab(i).id := l_cle_id;
1443      j := j + 1;
1444     END LOOP;
1445    CLOSE c_lines;
1446 
1447    IF( j > 0) THEN
1448 
1449       OKL_COPY_ASSET_PUB.copy_all_lines(
1450                p_api_version	     => p_api_version,
1451                p_init_msg_list	     => p_init_msg_list,
1452                x_return_status 	     => x_return_status,
1453                x_msg_count     	     => x_msg_count,
1454                x_msg_data      	     => x_msg_data,
1455                p_from_cle_id_tbl     => l_line_tab,
1456      	       p_to_cle_id 	     => NULL,
1457                p_to_chr_id 	     => l_chr_id,
1458        	       p_to_template_yn      => 'N',
1459                p_copy_reference      => 'COPY',
1460                p_copy_line_party_yn  => 'Y',
1461                p_renew_ref_yn        => 'N',
1462                p_trans_type          => 'CFA',
1463                x_cle_id_tbl	     => x_cle_id_tbl);
1464 
1465       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1466          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1467       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1468          RAISE OKC_API.G_EXCEPTION_ERROR;
1469       END IF;
1470 
1471    END IF;
1472 
1473    --
1474    -- Special Process for LALEVL (SLH, SLL) rules
1475    --
1476     l_cle_id := NULL;
1477     OPEN new_c_lines(l_chr_id);
1478      LOOP
1479       FETCH new_c_lines INTO l_cle_id;
1480       EXIT WHEN new_c_lines%NOTFOUND;
1481 
1482         link_slh_sll(
1483                      x_return_status => x_return_status,
1484                      x_msg_count     => x_msg_count,
1485                      x_msg_data      => x_msg_data,
1486                      p_old_chr_id    => p_source_chr_id,
1487                      p_new_cle_id    => l_cle_id,
1488                      p_new_chr_id    => l_chr_id
1489                     );
1490 
1491          IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1492             RAISE OKL_API.G_EXCEPTION_ERROR;
1493          END IF;
1494 
1495      END LOOP;
1496    CLOSE new_c_lines;
1497 
1498    --
1499    -- Special Process for LALEVL (SLH, SLL) rules
1500    --
1501 
1502    link_slh_sll(
1503                 x_return_status => x_return_status,
1504                 x_msg_count     => x_msg_count,
1505                 x_msg_data      => x_msg_data,
1506                 p_old_chr_id    => p_source_chr_id,
1507                 p_new_chr_id    => l_chr_id
1508                );
1509 
1510     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1511        RAISE OKC_API.G_EXCEPTION_ERROR;
1512     END IF;
1513 
1514 
1515     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1516 
1517   OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,     x_msg_data	=> x_msg_data);
1518 
1519   EXCEPTION
1520     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1521       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1522 			p_api_name  => l_api_name,
1523 			p_pkg_name  => g_pkg_name,
1524 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
1525 			x_msg_count => x_msg_count,
1526 			x_msg_data  => x_msg_data,
1527 			p_api_type  => g_api_type);
1528 
1529     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1530       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1531 			p_api_name  => l_api_name,
1532 			p_pkg_name  => g_pkg_name,
1533 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
1534 			x_msg_count => x_msg_count,
1535 			x_msg_data  => x_msg_data,
1536 			p_api_type  => g_api_type);
1537 
1538     WHEN OTHERS THEN
1539       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1540 			p_api_name  => l_api_name,
1541 			p_pkg_name  => g_pkg_name,
1542 			p_exc_name  => 'OTHERS',
1543 			x_msg_count => x_msg_count,
1544 			x_msg_data  => x_msg_data,
1545 			p_api_type  => g_api_type);
1546   END;
1547 
1548 -- Start of comments
1549 --
1550 -- Procedure Name  : create_from_contract
1551 -- Description     : creates a deal from a template
1552 -- Business Rules  : I might need to provide yes to p_renew_ref_yn. Then I need to provide Class Operation ID
1553 --                   somewhere inside that package
1554 -- Parameters      :
1555 -- Version         : 1.0
1556 -- End of comments
1557   PROCEDURE create_from_quote(
1558     p_api_version                  IN NUMBER,
1559     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1560     x_return_status                OUT NOCOPY VARCHAR2,
1561     x_msg_count                    OUT NOCOPY NUMBER,
1562     x_msg_data                     OUT NOCOPY VARCHAR2,
1563     p_contract_number              IN  VARCHAR2,
1564     p_source_chr_id                IN  NUMBER,
1565     x_chr_id                       OUT NOCOPY NUMBER) AS
1566 
1567     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1568     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1569     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1570     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1571 
1572   BEGIN
1573 /*
1574    OKL_QUOTE_TO_CONTRACT_PVT.create_contract(
1575       p_api_version              => p_api_version,
1576       p_init_msg_list            => p_init_msg_list,
1577       x_return_status            => x_return_status,
1578       x_msg_count                => x_msg_count,
1579       x_msg_data                 => x_msg_data,
1580       p_contract_number          => p_contract_number,
1581       p_parent_object_code       => p_source_object_code,
1582       p_parent_object_id         => p_source_chr_id,
1583       x_chr_id                   => x_chr_id);
1584 
1585     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1586        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1587     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1588        RAISE OKC_API.G_EXCEPTION_ERROR;
1589     END IF;
1590 */
1591     x_chr_id := x_chr_id;
1592 
1593   END;
1594 
1595 -- Start of comments
1596 --
1597 -- Procedure Name  : create_from_contract
1598 -- Description     : creates a deal from a template
1599 -- Business Rules  : I might need to provide yes to p_renew_ref_yn.
1600 --                   Then I need to provide Class Operation ID
1601 --                   somewhere inside that package
1602 -- Parameters      :
1603 -- Version         : 1.0
1604 -- End of comments
1605   PROCEDURE create_from_quote(
1606     p_api_version                  IN NUMBER,
1607     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1608     x_return_status                OUT NOCOPY VARCHAR2,
1609     x_msg_count                    OUT NOCOPY NUMBER,
1610     x_msg_data                     OUT NOCOPY VARCHAR2,
1611     p_contract_number              IN  VARCHAR2,
1612     p_source_object_code           IN VARCHAR2,
1613     p_source_chr_id                IN  NUMBER,
1614     x_chr_id                       OUT NOCOPY NUMBER) AS
1615 
1616     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1617     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1618     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1619     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1620 
1621     p_chr_id NUMBER;
1622     x_contract_number   VARCHAR2(120);
1623 
1624   BEGIN
1625 
1626    OKL_QUOTE_TO_CONTRACT_PVT.create_contract(
1627       p_api_version              => p_api_version,
1628       p_init_msg_list            => p_init_msg_list,
1629       x_return_status            => x_return_status,
1630       x_msg_count                => x_msg_count,
1631       x_msg_data                 => x_msg_data,
1632       p_contract_number          => p_contract_number,
1633       p_parent_object_code       => p_source_object_code,
1634       p_parent_object_id         => p_source_chr_id,
1635       x_chr_id                   => x_chr_id,
1636       x_contract_number          => x_contract_number
1637       );
1638 
1639     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1640        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1641     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1642        RAISE OKC_API.G_EXCEPTION_ERROR;
1643     END IF;
1644 
1645     x_chr_id := x_chr_id;
1646 
1647   END;
1648 
1649 -- Start of comments
1650 --
1651 -- Procedure Name  : create_new_deal
1652 -- Description     : creates a deal with no source
1653 -- Business Rules  :
1654 -- Parameters      :
1655 -- Version         : 1.0
1656 -- End of comments
1657   PROCEDURE create_new_deal(
1658     p_api_version                  IN NUMBER,
1659     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1660     x_return_status                OUT NOCOPY VARCHAR2,
1661     x_msg_count                    OUT NOCOPY NUMBER,
1662     x_msg_data                     OUT NOCOPY VARCHAR2,
1663     p_contract_number              IN  VARCHAR2,
1664     p_scs_code                     IN  VARCHAR2,
1665     p_customer_id1                 IN  VARCHAR2,
1666     p_customer_id2                 IN  VARCHAR2,
1667     p_customer_code                IN  VARCHAR2,
1668     x_chr_id                       OUT NOCOPY NUMBER,
1669     --Added by dpsingh for LE Uptake
1670     p_legal_entity_id              IN  NUMBER) AS
1671 
1672     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1673     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1674     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1675     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1676 
1677     --Bug# 4558486
1678     lp_cplv_rec OKC_CONTRACT_PARTY_PUB.cplv_rec_type;
1679     lx_cplv_rec OKC_CONTRACT_PARTY_PUB.cplv_rec_type;
1680 
1681     lp_cplv_rec1 OKL_OKC_MIGRATION_PVT.cplv_rec_type;
1682     lx_cplv_rec1 OKL_OKC_MIGRATION_PVT.cplv_rec_type;
1683 
1684     l_api_version	CONSTANT NUMBER	  := 1.0;
1685     l_api_name	VARCHAR2(30) := 'CREATE_NEW_DEAL';
1686 
1687     CURSOR role_csr(p_rle_code VARCHAR2)  IS
1688     SELECT  access_level
1689     FROM    OKC_ROLE_SOURCES
1690     WHERE rle_code = p_rle_code
1691     AND     buy_or_sell = 'S';
1692 
1693     l_access_level OKC_ROLE_SOURCES.access_level%TYPE;
1694 
1695     --Bug# 4558486
1696     lp_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
1697     lx_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
1698 
1699   BEGIN
1700     x_return_status := OKC_API.START_ACTIVITY(
1701 			p_api_name      => l_api_name,
1702 			p_pkg_name      => g_pkg_name,
1703 			p_init_msg_list => p_init_msg_list,
1704 			l_api_version   => l_api_version,
1705 			p_api_version   => p_api_version,
1706 			p_api_type      => g_api_type,
1707 			x_return_status => x_return_status);
1708 
1709     -- check if activity started successfully
1710     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1711        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1712     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1713        RAISE OKC_API.G_EXCEPTION_ERROR;
1714     END IF;
1715 
1716     lp_chrv_rec.sfwt_flag := 'N';
1717     lp_chrv_rec.object_version_number := 1.0;
1718     lp_chrv_rec.sts_code := G_STS_CODE; -- 'ENTERED';
1719     lp_chrv_rec.scs_code := p_scs_code;
1720     lp_chrv_rec.contract_number := p_contract_number;
1721     lp_chrv_rec.authoring_org_id := OKL_CONTEXT.GET_OKC_ORG_ID;
1722     lp_chrv_rec.inv_organization_id := OKL_CONTEXT.get_okc_organization_id;
1723     lp_chrv_rec.currency_code := OKC_CURRENCY_API.GET_OU_CURRENCY(OKL_CONTEXT.GET_OKC_ORG_ID);
1724     lp_chrv_rec.currency_code_renewed := NULL;
1725     lp_chrv_rec.template_yn := 'N';
1726     lp_chrv_rec.chr_type := 'CYA';
1727     lp_chrv_rec.archived_yn := 'N';
1728     lp_chrv_rec.deleted_yn := 'N';
1729     lp_chrv_rec.buy_or_sell := 'S';
1730     lp_chrv_rec.issue_or_receive := 'I';
1731 
1732     lp_khrv_rec.object_version_number := 1.0;
1733 --    lp_khrv_rec.khr_id := 1;
1734     lp_khrv_rec.generate_accrual_yn := 'Y';
1735     lp_khrv_rec.generate_accrual_override_yn := 'N';
1736     --Added by dpsingh for LE Uptake
1737     lp_khrv_rec.legal_entity_id := p_legal_entity_id;
1738     OKL_CONTRACT_PUB.validate_contract_header(
1739       p_api_version    => p_api_version,
1740       p_init_msg_list  => p_init_msg_list,
1741       x_return_status  => x_return_status,
1742       x_msg_count      => x_msg_count,
1743       x_msg_data       => x_msg_data,
1744       p_chrv_rec       => lp_chrv_rec,
1745       p_khrv_rec       => lp_khrv_rec);
1746 
1747     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1748        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1749     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1750        RAISE OKC_API.G_EXCEPTION_ERROR;
1751     END IF;
1752 
1753     OKL_CONTRACT_PUB.create_contract_header(
1754       p_api_version    => p_api_version,
1755       p_init_msg_list  => p_init_msg_list,
1756       x_return_status  => x_return_status,
1757       x_msg_count      => x_msg_count,
1758       x_msg_data       => x_msg_data,
1759       p_chrv_rec       => lp_chrv_rec,
1760       p_khrv_rec       => lp_khrv_rec,
1761       x_chrv_rec       => lx_chrv_rec,
1762       x_khrv_rec       => lx_khrv_rec);
1763 
1764     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1765        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1766     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1767        RAISE OKC_API.G_EXCEPTION_ERROR;
1768     END IF;
1769 
1770     x_chr_id := lx_chrv_rec.id;
1771 
1772     -- now we attach the party to the header
1773     lp_cplv_rec.object_version_number := 1.0;
1774     lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
1775     lp_cplv_rec.dnz_chr_id := x_chr_id;
1776     lp_cplv_rec.chr_id := x_chr_id;
1777     lp_cplv_rec.cle_id := NULL;
1778     lp_cplv_rec.object1_id1 := p_customer_id1;
1779     lp_cplv_rec.object1_id2 := p_customer_id2;
1780     lp_cplv_rec.jtot_object1_code := p_customer_code;
1781     lp_cplv_rec.rle_code := G_RLE_CODE;
1782 
1783     IF(lp_cplv_rec.object1_id1 IS NOT NULL AND lp_cplv_rec.object1_id2 IS NOT NULL) THEN
1784 
1785     OKC_CONTRACT_PARTY_PUB.validate_k_party_role(
1786       p_api_version    => p_api_version,
1787       p_init_msg_list  => p_init_msg_list,
1788       x_return_status  => x_return_status,
1789       x_msg_count      => x_msg_count,
1790       x_msg_data       => x_msg_data,
1791       p_cplv_rec       => lp_cplv_rec);
1792 
1793     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1794        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1795     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1796        RAISE OKC_API.G_EXCEPTION_ERROR;
1797     END IF;
1798 
1799 ----- Changes by Kanti
1800 ----- Validate the JTOT Object code, ID1 and ID2
1801 
1802      OPEN role_csr(lp_cplv_rec.rle_code);
1803      FETCH role_csr INTO l_access_level;
1804      CLOSE role_csr;
1805 
1806      IF (l_access_level = 'S') THEN
1807 
1808          okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT (p_api_version    => p_api_version,
1809                                                           p_init_msg_list  => OKC_API.G_FALSE,
1810                                                           x_return_status  => x_return_status,
1811                                                           x_msg_count	   => x_msg_count,
1812                                                           x_msg_data	   => x_msg_data,
1813                                                           p_object_name    => lp_cplv_rec.jtot_object1_code,
1814                                                           p_id1            => lp_cplv_rec.object1_id1,
1815                                                           p_id2            => lp_cplv_rec.object1_id2);
1816          IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1817               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1818          ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1819               RAISE OKC_API.G_EXCEPTION_ERROR;
1820          END IF;
1821 
1822      END IF;
1823 
1824 ----  Changes End
1825 
1826     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
1827     --              to create records in tables
1828     --              okc_k_party_roles_b and okl_k_party_roles
1829     /*
1830     OKC_CONTRACT_PARTY_PUB.create_k_party_role(
1831       p_api_version    => p_api_version,
1832       p_init_msg_list  => p_init_msg_list,
1833       x_return_status  => x_return_status,
1834       x_msg_count      => x_msg_count,
1835       x_msg_data       => x_msg_data,
1836       p_cplv_rec       => lp_cplv_rec,
1837       x_cplv_rec       => lx_cplv_rec);
1838     */
1839 
1840     lp_cplv_rec1.object_version_number := lp_cplv_rec.object_version_number;
1841     lp_cplv_rec1.sfwt_flag := lp_cplv_rec.sfwt_flag;
1842     lp_cplv_rec1.dnz_chr_id := lp_cplv_rec.dnz_chr_id;
1843     lp_cplv_rec1.chr_id := lp_cplv_rec.chr_id;
1844     lp_cplv_rec1.cle_id := lp_cplv_rec.cle_id;
1845     lp_cplv_rec1.object1_id1 := lp_cplv_rec.object1_id1;
1846     lp_cplv_rec1.object1_id2 := lp_cplv_rec.object1_id2;
1847     lp_cplv_rec1.jtot_object1_code :=lp_cplv_rec.jtot_object1_code;
1848     lp_cplv_rec1.rle_code := lp_cplv_rec.rle_code;
1849 
1850     okl_k_party_roles_pvt.create_k_party_role(
1851       p_api_version      => p_api_version,
1852       p_init_msg_list    => p_init_msg_list,
1853       x_return_status    => x_return_status,
1854       x_msg_count        => x_msg_count,
1855       x_msg_data         => x_msg_data,
1856       p_cplv_rec         => lp_cplv_rec1,
1857       x_cplv_rec         => lx_cplv_rec1,
1858       p_kplv_rec         => lp_kplv_rec,
1859       x_kplv_rec         => lx_kplv_rec);
1860 
1861     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1862        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1863     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1864        RAISE OKC_API.G_EXCEPTION_ERROR;
1865     END IF;
1866     END IF;
1867 
1868     OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
1869 
1870   EXCEPTION
1871     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1872       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1873 			p_api_name  => l_api_name,
1874 			p_pkg_name  => g_pkg_name,
1875 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
1876 			x_msg_count => x_msg_count,
1877 			x_msg_data  => x_msg_data,
1878 			p_api_type  => g_api_type);
1879 
1880     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1881       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1882 			p_api_name  => l_api_name,
1883 			p_pkg_name  => g_pkg_name,
1884 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
1885 			x_msg_count => x_msg_count,
1886 			x_msg_data  => x_msg_data,
1887 			p_api_type  => g_api_type);
1888 
1889     WHEN OTHERS THEN
1890       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1891 			p_api_name  => l_api_name,
1892 			p_pkg_name  => g_pkg_name,
1893 			p_exc_name  => 'OTHERS',
1894 			x_msg_count => x_msg_count,
1895 			x_msg_data  => x_msg_data,
1896 			p_api_type  => g_api_type);
1897   END;
1898 
1899 -- Start of comments
1900 --
1901 -- Procedure Name  : create_new_deal
1902 -- Description     : creates a deal with no source
1903 -- Business Rules  :
1904 -- Parameters      :
1905 -- Version         : 1.0
1906 -- End of comments
1907   PROCEDURE create_new_deal(
1908     p_api_version                  IN NUMBER,
1909     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1910     x_return_status                OUT NOCOPY VARCHAR2,
1911     x_msg_count                    OUT NOCOPY NUMBER,
1912     x_msg_data                     OUT NOCOPY VARCHAR2,
1913     p_contract_number              IN  VARCHAR2,
1914     p_scs_code                     IN  VARCHAR2,
1915     p_customer_id1                 IN OUT NOCOPY  VARCHAR2,
1916     p_customer_id2                 IN OUT NOCOPY VARCHAR2,
1917     p_customer_code                IN  VARCHAR2,
1918     p_customer_name                IN  VARCHAR2,
1919     x_chr_id                       OUT NOCOPY NUMBER,
1920     --Added by dpsingh for LE Uptake
1921     p_legal_entity_id              IN  NUMBER) AS
1922 
1923     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1924     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
1925     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1926     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
1927 
1928     --Bug# 4558486
1929     lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
1930     lx_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
1931 
1932     l_api_version	CONSTANT NUMBER	  := 1.0;
1933     l_api_name	VARCHAR2(30) := 'CREATE_NEW_DEAL';
1934 
1935     row_count         NUMBER DEFAULT 0;
1936 
1937     CURSOR check_party_csr(p_chr_id NUMBER) IS
1938 	--start modified abhsaxen for performance SQLID 20562707
1939 	SELECT COUNT(1)
1940 	    FROM okc_k_party_roles_B
1941 	    WHERE dnz_chr_id = p_chr_id
1942 	    AND chr_id = p_chr_id
1943 	    AND rle_code = G_RLE_CODE
1944 	    AND object1_id1 = p_customer_id1
1945 	    AND object1_id2 = p_customer_id2
1946 	--end modified abhsaxen for performance SQLID 20562707
1947 	;
1948     CURSOR role_csr(p_rle_code VARCHAR2)  IS
1949     SELECT  access_level
1950     FROM    OKC_ROLE_SOURCES
1951     WHERE rle_code = p_rle_code
1952     AND     buy_or_sell = 'S';
1953 
1954     l_access_level OKC_ROLE_SOURCES.access_level%TYPE;
1955 
1956     --Bug# 4558486
1957     lp_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
1958     lx_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
1959 
1960   BEGIN
1961     x_return_status := OKC_API.START_ACTIVITY(
1962 			p_api_name      => l_api_name,
1963 			p_pkg_name      => g_pkg_name,
1964 			p_init_msg_list => p_init_msg_list,
1965 			l_api_version   => l_api_version,
1966 			p_api_version   => p_api_version,
1967 			p_api_type      => g_api_type,
1968 			x_return_status => x_return_status);
1969 
1970     -- check if activity started successfully
1971     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1972        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1973     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1974        RAISE OKC_API.G_EXCEPTION_ERROR;
1975     END IF;
1976 
1977     lp_chrv_rec.sfwt_flag := 'N';
1978     lp_chrv_rec.object_version_number := 1.0;
1979     lp_chrv_rec.sts_code := G_STS_CODE; -- 'ENTERED';
1980     lp_chrv_rec.scs_code := p_scs_code;
1981     lp_chrv_rec.contract_number := p_contract_number;
1982     lp_chrv_rec.authoring_org_id := OKL_CONTEXT.GET_OKC_ORG_ID;
1983     lp_chrv_rec.inv_organization_id := OKL_CONTEXT.get_okc_organization_id;
1984     lp_chrv_rec.currency_code := OKC_CURRENCY_API.GET_OU_CURRENCY(OKL_CONTEXT.GET_OKC_ORG_ID);
1985     lp_chrv_rec.currency_code_renewed := NULL;
1986     lp_chrv_rec.template_yn := 'N';
1987     lp_chrv_rec.chr_type := 'CYA';
1988     lp_chrv_rec.archived_yn := 'N';
1989     lp_chrv_rec.deleted_yn := 'N';
1990     lp_chrv_rec.buy_or_sell := 'S';
1991     lp_chrv_rec.issue_or_receive := 'I';
1992 
1993     lp_khrv_rec.object_version_number := 1.0;
1994 --    lp_khrv_rec.khr_id := 1;
1995     lp_khrv_rec.generate_accrual_yn := 'Y';
1996     lp_khrv_rec.generate_accrual_override_yn := 'N';
1997     --Added by dpsingh for LE Uptake
1998     lp_khrv_rec.legal_entity_id := p_legal_entity_id;
1999     OKL_CONTRACT_PUB.validate_contract_header(
2000       p_api_version    => p_api_version,
2001       p_init_msg_list  => p_init_msg_list,
2002       x_return_status  => x_return_status,
2003       x_msg_count      => x_msg_count,
2004       x_msg_data       => x_msg_data,
2005       p_chrv_rec       => lp_chrv_rec,
2006       p_khrv_rec       => lp_khrv_rec);
2007 
2008     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2009        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2010     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2011        RAISE OKC_API.G_EXCEPTION_ERROR;
2012     END IF;
2013 
2014     OKL_CONTRACT_PUB.create_contract_header(
2015       p_api_version    => p_api_version,
2016       p_init_msg_list  => p_init_msg_list,
2017       x_return_status  => x_return_status,
2018       x_msg_count      => x_msg_count,
2019       x_msg_data       => x_msg_data,
2020       p_chrv_rec       => lp_chrv_rec,
2021       p_khrv_rec       => lp_khrv_rec,
2022       x_chrv_rec       => lx_chrv_rec,
2023       x_khrv_rec       => lx_khrv_rec);
2024 
2025     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2026        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2027     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2028        RAISE OKC_API.G_EXCEPTION_ERROR;
2029     END IF;
2030 
2031     x_chr_id := lx_chrv_rec.id;
2032 
2033     -- now we attach the party to the header
2034     lp_cplv_rec.object_version_number := 1.0;
2035     lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
2036     lp_cplv_rec.dnz_chr_id := x_chr_id;
2037     lp_cplv_rec.chr_id := x_chr_id;
2038     lp_cplv_rec.cle_id := NULL;
2039     lp_cplv_rec.object1_id1 := p_customer_id1;
2040     lp_cplv_rec.object1_id2 := p_customer_id2;
2041     lp_cplv_rec.jtot_object1_code := p_customer_code;
2042     lp_cplv_rec.rle_code := G_RLE_CODE;
2043 
2044     OPEN check_party_csr(x_chr_id);
2045     FETCH check_party_csr INTO row_count;
2046     CLOSE check_party_csr;
2047     IF row_count = 1 THEN
2048       x_return_status := OKC_API.g_ret_sts_error;
2049       OKC_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'Party_already_exists');
2050       RAISE OKC_API.G_EXCEPTION_ERROR;
2051     END IF;
2052 
2053 /*
2054     okl_la_validation_util_pvt.Validate_Party (
2055       p_api_version    => p_api_version,
2056       p_init_msg_list  => p_init_msg_list,
2057       x_return_status  => x_return_status,
2058       x_msg_count      => x_msg_count,
2059       x_msg_data       => x_msg_data,
2060       p_chr_id         => x_chr_id,
2061       p_cle_id         => null,
2062       p_cpl_id         => null,
2063       p_lty_code       => null,
2064       p_rle_code       => G_RLE_CODE,
2065       p_id1            => p_customer_id1,
2066       p_id2            => p_customer_id2,
2067       p_name           => p_customer_name,
2068       p_object_code    => lp_cplv_rec.jtot_object1_code);
2069 
2070     If (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) then
2071        raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2072     Elsif (x_return_status = OKC_API.G_RET_STS_ERROR) then
2073        raise OKC_API.G_EXCEPTION_ERROR;
2074     End If;
2075 */
2076 
2077 
2078 ----- Changes by Kanti
2079 ----- Validate the JTOT Object code, ID1 and ID2
2080 
2081      OPEN role_csr(lp_cplv_rec.rle_code);
2082      FETCH role_csr INTO l_access_level;
2083      CLOSE role_csr;
2084 
2085      IF (l_access_level = 'S') THEN
2086 
2087        okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT (p_api_version    => p_api_version,
2088                                                           p_init_msg_list  => OKC_API.G_FALSE,
2089                                                           x_return_status  => x_return_status,
2090                                                           x_msg_count	   => x_msg_count,
2091                                                           x_msg_data	   => x_msg_data,
2092                                                           p_object_name    => lp_cplv_rec.jtot_object1_code,
2093                                                           p_id1            => lp_cplv_rec.object1_id1,
2094                                                           p_id2            => lp_cplv_rec.object1_id2);
2095 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2096               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2097             ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2098               RAISE OKC_API.G_EXCEPTION_ERROR;
2099             END IF;
2100 
2101       END IF;
2102 
2103 ----  Changes End
2104 
2105     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
2106     --              to create records in tables
2107     --              okc_k_party_roles_b and okl_k_party_roles
2108     /*
2109     OKC_CONTRACT_PARTY_PUB.create_k_party_role(
2110       p_api_version    => p_api_version,
2111       p_init_msg_list  => p_init_msg_list,
2112       x_return_status  => x_return_status,
2113       x_msg_count      => x_msg_count,
2114       x_msg_data       => x_msg_data,
2115       p_cplv_rec       => lp_cplv_rec,
2116       x_cplv_rec       => lx_cplv_rec);
2117     */
2118 
2119     okl_k_party_roles_pvt.create_k_party_role(
2120       p_api_version      => p_api_version,
2121       p_init_msg_list    => p_init_msg_list,
2122       x_return_status    => x_return_status,
2123       x_msg_count        => x_msg_count,
2124       x_msg_data         => x_msg_data,
2125       p_cplv_rec         => lp_cplv_rec,
2126       x_cplv_rec         => lx_cplv_rec,
2127       p_kplv_rec         => lp_kplv_rec,
2128       x_kplv_rec         => lx_kplv_rec);
2129 
2130     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2131        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2132     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2133        RAISE OKC_API.G_EXCEPTION_ERROR;
2134     END IF;
2135 
2136     OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2137 
2138   EXCEPTION
2139     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2140       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2141 			p_api_name  => l_api_name,
2142 			p_pkg_name  => g_pkg_name,
2143 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
2144 			x_msg_count => x_msg_count,
2145 			x_msg_data  => x_msg_data,
2146 			p_api_type  => g_api_type);
2147 
2148     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2149       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2150 			p_api_name  => l_api_name,
2151 			p_pkg_name  => g_pkg_name,
2152 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
2153 			x_msg_count => x_msg_count,
2154 			x_msg_data  => x_msg_data,
2155 			p_api_type  => g_api_type);
2156 
2157     WHEN OTHERS THEN
2158       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2159 			p_api_name  => l_api_name,
2160 			p_pkg_name  => g_pkg_name,
2161 			p_exc_name  => 'OTHERS',
2162 			x_msg_count => x_msg_count,
2163 			x_msg_data  => x_msg_data,
2164 			p_api_type  => g_api_type);
2165   END;
2166 
2167 
2168 -- Start of comments
2169 --
2170 -- Procedure Name  : create_new_deal
2171 -- Description     : creates a deal with no source
2172 -- Business Rules  :
2173 -- Parameters      :
2174 -- Version         : 1.0
2175 -- End of comments
2176   PROCEDURE create_new_deal(
2177     p_api_version                  IN  NUMBER,
2178     p_init_msg_list                IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
2179     x_return_status                OUT NOCOPY VARCHAR2,
2180     x_msg_count                    OUT NOCOPY NUMBER,
2181     x_msg_data                     OUT NOCOPY VARCHAR2,
2182     p_contract_number              IN  VARCHAR2,
2183     p_scs_code                     IN  VARCHAR2,
2184     p_customer_id1                 IN  OUT NOCOPY  VARCHAR2,
2185     p_customer_id2                 IN  OUT NOCOPY VARCHAR2,
2186     p_customer_code                IN  VARCHAR2,
2187     p_customer_name                IN  VARCHAR2,
2188     p_template_yn                  IN  VARCHAR2,
2189     p_template_type                IN  VARCHAR2,
2190     p_effective_from               IN  DATE,
2191     p_program_name                 IN  VARCHAR2,
2192     p_program_id                   IN  NUMBER,
2193     x_chr_id                       OUT NOCOPY NUMBER,
2194     --Added by dpsingh for LE Uptake
2195     p_legal_entity_id              IN  NUMBER) AS
2196 
2197     -- 5116278
2198     SUBTYPE l_cplv_tbl_type is OKL_OKC_MIGRATION_PVT.cplv_tbl_type;
2199     SUBTYPE l_kplv_tbl_type is okl_kpl_pvt.kplv_tbl_type;
2200 
2201     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
2202     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
2203     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
2204     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
2205 
2206     --Bug# 4558486
2207     lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
2208     lx_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
2209 
2210     -- 5116278
2211     l_cplv_tbl l_cplv_tbl_type;
2212     l_kplv_tbl l_kplv_tbl_type;
2213     lx_cplv_tbl l_cplv_tbl_type;
2214     lx_kplv_tbl l_kplv_tbl_type;
2215 
2216     l_api_version	CONSTANT NUMBER	  := 1.0;
2217     l_api_name	VARCHAR2(30) := 'CREATE_NEW_DEAL';
2218 
2219     row_count         NUMBER DEFAULT 0;
2220 
2221     CURSOR check_party_csr(p_chr_id NUMBER) IS
2222 	--start modified abhsaxen for performance SQLID 20562694
2223 	SELECT COUNT(1)
2224 	    FROM okc_k_party_roles_B
2225 	    WHERE dnz_chr_id = p_chr_id
2226 	    AND chr_id = p_chr_id
2227 	    AND rle_code = G_RLE_CODE
2228 	    AND object1_id1 = p_customer_id1
2229 	    AND object1_id2 = p_customer_id2
2230 	--end modified abhsaxen for performance SQLID 20562694
2231 	;
2232 
2233     CURSOR role_csr(p_rle_code VARCHAR2)  IS
2234     SELECT  access_level
2235     FROM    OKC_ROLE_SOURCES
2236     WHERE rle_code = p_rle_code
2237     AND     buy_or_sell = 'S';
2238 
2239     l_access_level OKC_ROLE_SOURCES.access_level%TYPE;
2240 
2241     --Bug# 4558486
2242     lp_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
2243     lx_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
2244 
2245     --Bug#5116278    start
2246     l_vp_cpl_id okc_k_party_roles_v.id%TYPE := NULL;
2247     x_cpl_id   okc_k_party_roles_v.id%TYPE := NULL;
2248     l_chr_id   okc_k_headers_b.id%type := NULL;
2249 
2250     CURSOR c_vp_cpl_csr(p_source_id NUMBER) IS
2251      SELECT id, object_version_number, sfwt_flag,
2252             cpl_id, chr_id, cle_id,
2253             rle_code, dnz_chr_id, object1_id1,
2254             object1_id2, jtot_object1_code, cognomen,
2255             code, facility, minority_group_lookup_code,
2256             small_business_flag, women_owned_flag, alias,
2257             attribute_category, attribute1, attribute2,
2258             attribute3, attribute4, attribute5,
2259             attribute6, attribute7, attribute8,
2260             attribute9, attribute10, attribute11,
2261             attribute12, attribute13, attribute14,
2262             attribute15, created_by, creation_date,
2263             last_updated_by, last_update_date, last_update_login,
2264             cust_acct_id, bill_to_site_use_id
2265      FROM okc_k_party_roles_v cplv
2266      WHERE cplv.rle_code = G_LEASE_VENDOR
2267      AND cplv.chr_id = p_source_id; -- vendor program id
2268 
2269     --Bug#5116278  end
2270 
2271 
2272   BEGIN
2273     x_return_status := OKC_API.START_ACTIVITY(
2274 			p_api_name      => l_api_name,
2275 			p_pkg_name      => g_pkg_name,
2276 			p_init_msg_list => p_init_msg_list,
2277 			l_api_version   => l_api_version,
2278 			p_api_version   => p_api_version,
2279 			p_api_type      => g_api_type,
2280 			x_return_status => x_return_status);
2281 
2282     -- check if activity started successfully
2283     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2284        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2285     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2286        RAISE OKC_API.G_EXCEPTION_ERROR;
2287     END IF;
2288 
2289     lp_chrv_rec.sfwt_flag := 'N';
2290     lp_chrv_rec.object_version_number := 1.0;
2291     lp_chrv_rec.sts_code := G_STS_CODE; -- 'ENTERED';
2292     lp_chrv_rec.scs_code := p_scs_code;
2293     lp_chrv_rec.contract_number := p_contract_number;
2294     lp_chrv_rec.authoring_org_id := OKL_CONTEXT.GET_OKC_ORG_ID;
2295     lp_chrv_rec.inv_organization_id := OKL_CONTEXT.get_okc_organization_id;
2296 
2297 --    lp_chrv_rec.currency_code := OKC_CURRENCY_API.GET_OU_CURRENCY(OKL_CONTEXT.GET_OKC_ORG_ID);
2298     lp_chrv_rec.currency_code := OKL_ACCOUNTING_UTIL.get_func_curr_code;
2299 
2300     lp_chrv_rec.currency_code_renewed := NULL;
2301     lp_chrv_rec.template_yn := 'N';
2302     lp_chrv_rec.chr_type := 'CYA';
2303     lp_chrv_rec.archived_yn := 'N';
2304     lp_chrv_rec.deleted_yn := 'N';
2305     lp_chrv_rec.buy_or_sell := 'S';
2306     lp_chrv_rec.issue_or_receive := 'I';
2307     lp_chrv_rec.start_date := p_effective_from;
2308 /*
2309     IF ( p_template_yn = 'Y' ) THEN
2310       lp_chrv_rec.template_yn := 'Y';
2311     END IF;
2312 */
2313     lp_khrv_rec.object_version_number := 1.0;
2314 
2315     IF ( p_program_name IS NOT NULL ) THEN
2316       lp_khrv_rec.khr_id := p_program_id;
2317     END IF;
2318 
2319     IF ( p_template_type IS NOT NULL ) THEN
2320       lp_khrv_rec.template_type_code := p_template_type;
2321       lp_chrv_rec.template_yn := 'Y';
2322     END IF;
2323     --Added by dpsingh for LE Uptake
2324     lp_khrv_rec.legal_entity_id := p_legal_entity_id;
2325     OKL_CONTRACT_PUB.create_contract_header(
2326       p_api_version    => p_api_version,
2327       p_init_msg_list  => p_init_msg_list,
2328       x_return_status  => x_return_status,
2329       x_msg_count      => x_msg_count,
2330       x_msg_data       => x_msg_data,
2331       p_chrv_rec       => lp_chrv_rec,
2332       p_khrv_rec       => lp_khrv_rec,
2333       x_chrv_rec       => lx_chrv_rec,
2334       x_khrv_rec       => lx_khrv_rec);
2335 
2336     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2337        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2338     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2339        RAISE OKC_API.G_EXCEPTION_ERROR;
2340     END IF;
2341 
2342     x_chr_id := lx_chrv_rec.id;
2343 
2344     --Bug#5116278  start
2345     IF ( p_program_name IS NOT NULL ) THEN
2346 
2347        -- copy vp party lease vendor to lease contract
2348        l_vp_cpl_id := NULL;
2349 
2350        OPEN c_vp_cpl_csr(p_program_id);
2351        FETCH c_vp_cpl_csr BULK COLLECT INTO l_cplv_tbl;
2352        CLOSE c_vp_cpl_csr;
2353 
2354        IF( l_cplv_tbl.COUNT > 0 ) THEN
2355 
2356         FOR i IN l_cplv_tbl.FIRST..l_cplv_tbl.LAST
2357         LOOP
2358           l_cplv_tbl(i).ID := null;
2359           IF (l_cplv_tbl(i).CHR_ID IS NOT NULL) THEN
2360             l_cplv_tbl(i).CHR_ID := x_chr_id;
2361           END IF;
2362           IF (l_cplv_tbl(i).DNZ_CHR_ID IS NOT NULL) THEN
2363             l_cplv_tbl(i).DNZ_CHR_ID := x_chr_id;
2364           END IF;
2365           l_kplv_tbl(i).attribute_category := null;
2366         END LOOP;
2367 
2368   	IF okl_context.get_okc_org_id  IS NULL THEN
2369    	  l_chr_id := x_chr_id;
2370 	  okl_context.set_okc_org_context(p_chr_id => l_chr_id );
2371         END IF;
2372 
2373         /*OKL_COPY_CONTRACT_PUB.copy_party_roles(
2374                   p_api_version	=> p_api_version,
2375                   p_init_msg_list	=> p_init_msg_list,
2376                   x_return_status 	=> x_return_status,
2377                   x_msg_count     	=> x_msg_count,
2378                   x_msg_data      	=> x_msg_data,
2379      	          p_cpl_id              => l_vp_cpl_id,
2380      	          p_cle_id              => NULL,
2381      	          p_chr_id              => x_chr_id,
2382      	          p_rle_code            => G_LEASE_VENDOR,
2383      	          x_cpl_id		=> x_cpl_id
2384      	   );*/
2385          IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2386                     OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_cplv_tbl.count= ' || l_cplv_tbl.count);
2387          END IF;
2388          okl_k_party_roles_pvt.create_k_party_role(
2389            p_api_version      => p_api_version,
2390            p_init_msg_list    => p_init_msg_list,
2391            x_return_status    => x_return_status,
2392            x_msg_count        => x_msg_count,
2393            x_msg_data         => x_msg_data,
2394            p_cplv_tbl         => l_cplv_tbl,
2395            x_cplv_tbl         => lx_cplv_tbl,
2396            p_kplv_tbl         => l_kplv_tbl,
2397            x_kplv_tbl         => lx_kplv_tbl);
2398 
2399            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2400             RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2401            ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2402                     RAISE OKC_API.G_EXCEPTION_ERROR;
2403            END IF;
2404 
2405        END IF;
2406 
2407     END IF;
2408     --Bug#5116278  end
2409 
2410     IF ( p_customer_name IS NOT NULL ) THEN
2411 
2412     -- now we attach the party to the header
2413     lp_cplv_rec.object_version_number := 1.0;
2414     lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
2415     lp_cplv_rec.dnz_chr_id := x_chr_id;
2416     lp_cplv_rec.chr_id := x_chr_id;
2417     lp_cplv_rec.cle_id := NULL;
2418     lp_cplv_rec.object1_id1 := p_customer_id1;
2419     lp_cplv_rec.object1_id2 := p_customer_id2;
2420     lp_cplv_rec.jtot_object1_code := p_customer_code;
2421     lp_cplv_rec.rle_code := G_RLE_CODE;
2422 
2423     OPEN check_party_csr(x_chr_id);
2424     FETCH check_party_csr INTO row_count;
2425     CLOSE check_party_csr;
2426     IF row_count = 1 THEN
2427       x_return_status := OKC_API.g_ret_sts_error;
2428       OKC_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'Party_already_exists');
2429       RAISE OKC_API.G_EXCEPTION_ERROR;
2430     END IF;
2431 
2432 
2433 ----- Changes by Kanti
2434 ----- Validate the JTOT Object code, ID1 and ID2
2435 
2436      OPEN role_csr(lp_cplv_rec.rle_code);
2437      FETCH role_csr INTO l_access_level;
2438      CLOSE role_csr;
2439 
2440      IF (l_access_level = 'S') THEN
2441 
2442          okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT (p_api_version    => p_api_version,
2443                                                           p_init_msg_list  => OKC_API.G_FALSE,
2444                                                           x_return_status  => x_return_status,
2445                                                           x_msg_count	   => x_msg_count,
2446                                                           x_msg_data	   => x_msg_data,
2447                                                           p_object_name    => lp_cplv_rec.jtot_object1_code,
2448                                                           p_id1            => lp_cplv_rec.object1_id1,
2449                                                           p_id2            => lp_cplv_rec.object1_id2);
2450 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2451               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2452             ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2453               RAISE OKC_API.G_EXCEPTION_ERROR;
2454             END IF;
2455 
2456       END IF;
2457 
2458 ----  Changes End
2459 
2460     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
2461     --              to create records in tables
2462     --              okc_k_party_roles_b and okl_k_party_roles
2463     /*
2464     OKC_CONTRACT_PARTY_PUB.create_k_party_role(
2465       p_api_version    => p_api_version,
2466       p_init_msg_list  => p_init_msg_list,
2467       x_return_status  => x_return_status,
2468       x_msg_count      => x_msg_count,
2469       x_msg_data       => x_msg_data,
2470       p_cplv_rec       => lp_cplv_rec,
2471       x_cplv_rec       => lx_cplv_rec);
2472     */
2473 
2474     okl_k_party_roles_pvt.create_k_party_role(
2475       p_api_version      => p_api_version,
2476       p_init_msg_list    => p_init_msg_list,
2477       x_return_status    => x_return_status,
2478       x_msg_count        => x_msg_count,
2479       x_msg_data         => x_msg_data,
2480       p_cplv_rec         => lp_cplv_rec,
2481       x_cplv_rec         => lx_cplv_rec,
2482       p_kplv_rec         => lp_kplv_rec,
2483       x_kplv_rec         => lx_kplv_rec);
2484 
2485     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2486        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2487     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2488        RAISE OKC_API.G_EXCEPTION_ERROR;
2489     END IF;
2490 
2491     END IF;
2492 
2493 
2494     OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2495 
2496   EXCEPTION
2497     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2498       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2499 			p_api_name  => l_api_name,
2500 			p_pkg_name  => g_pkg_name,
2501 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
2502 			x_msg_count => x_msg_count,
2503 			x_msg_data  => x_msg_data,
2504 			p_api_type  => g_api_type);
2505 
2506     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2507       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2508 			p_api_name  => l_api_name,
2509 			p_pkg_name  => g_pkg_name,
2510 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
2511 			x_msg_count => x_msg_count,
2512 			x_msg_data  => x_msg_data,
2513 			p_api_type  => g_api_type);
2514 
2515     WHEN OTHERS THEN
2516       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2517 			p_api_name  => l_api_name,
2518 			p_pkg_name  => g_pkg_name,
2519 			p_exc_name  => 'OTHERS',
2520 			x_msg_count => x_msg_count,
2521 			x_msg_data  => x_msg_data,
2522 			p_api_type  => g_api_type);
2523   END;
2524 
2525   PROCEDURE delete_rules(
2526     p_api_version                  IN NUMBER,
2527     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2528     x_return_status                OUT NOCOPY VARCHAR2,
2529     x_msg_count                    OUT NOCOPY NUMBER,
2530     x_msg_data                     OUT NOCOPY VARCHAR2,
2531     p_old_khr_id                   IN  NUMBER, -- prev vp id
2532     p_source_id                    IN  NUMBER, -- vp id
2533     p_dest_id                      IN  NUMBER, -- k id
2534     p_org_id                       IN  NUMBER,
2535     p_organization_id              IN  NUMBER) IS
2536 
2537     l_api_name	VARCHAR2(30) := 'DELETE_RULES';
2538     l_api_version	CONSTANT NUMBER	  := 1.0;
2539 
2540     lp_rgpv_rec Okl_Rule_Pub.rgpv_rec_type;
2541 
2542     lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
2543     lp_rmpv_rec OKL_OKC_MIGRATION_PVT.rmpv_rec_type;
2544 
2545     l_rgpr_id NUMBER := NULL;
2546     l_vp_tmpl_id  NUMBER;
2547     l_k_cpl_id okc_k_party_roles_v.id%TYPE := NULL;
2548     l_k_object1_id1 okc_k_party_roles_v.object1_id1%TYPE := NULL;
2549 
2550 --Cursor to get vp template
2551     CURSOR vp_tmpl_csr(p_vp_id IN NUMBER) IS
2552     SELECT id
2553     FROM   okl_k_headers_full_v
2554     WHERE  scs_code = 'PROGRAM'
2555     AND    sts_code IN ('ACTIVE','PASSED')
2556     AND    khr_id = p_vp_id
2557     AND    NVL(template_yn,'N') = 'Y';
2558 
2559  -- returns rgp id thet exist in lease as well as vp
2560     CURSOR c_prev_src_crs(p_vp_tmpl_id IN NUMBER) IS
2561          SELECT rglease.id, rglease.rgd_code
2562          FROM  okc_rule_groups_v rglease
2563          WHERE dnz_chr_id = p_dest_id
2564          AND chr_id = p_dest_id
2565          AND EXISTS(
2566                SELECT '1'
2567                FROM   okc_rule_groups_v rg,
2568                       okc_k_headers_v hdr
2569                WHERE  rg.chr_id = p_vp_tmpl_id
2570                AND    hdr.id = rg.chr_id
2571                AND    hdr.id = rg.dnz_chr_id
2572                AND    rg.cle_id IS NULL
2573                AND    rg.rgd_code = rglease.rgd_code
2574 	       );
2575 
2576 -- gets the party lease vendor that exists in vp
2577 --start modifying abhsaxen Cursor not in use
2578 --   CURSOR c_prev_cpl_csr IS
2579 --end  modifying abhsaxen Cursor not in use
2580 
2581 --start modifying abhsaxen Cursor not in use
2582 
2583 --   CURSOR c_rg_party_csr(p_cpl_id IN NUMBER, p_object1_id1 IN okc_k_party_roles_v.object1_id1%TYPE) IS
2584 --end modifying abhsaxen Cursor not in use
2585   BEGIN
2586 
2587     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
2588 		p_org_id =>  p_org_id,
2589 		p_organization_id	=> p_organization_id);
2590 
2591     x_return_status := OKC_API.START_ACTIVITY(
2592 			p_api_name      => l_api_name,
2593 			p_pkg_name      => g_pkg_name,
2594 			p_init_msg_list => p_init_msg_list,
2595 			l_api_version   => l_api_version,
2596 			p_api_version   => p_api_version,
2597 			p_api_type      => g_api_type,
2598 			x_return_status => x_return_status);
2599 
2600     -- check if activity started successfully
2601     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2602        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2603     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2604        RAISE OKC_API.G_EXCEPTION_ERROR;
2605     END IF;
2606 
2607     OPEN vp_tmpl_csr(p_vp_id => p_old_khr_id);
2608     FETCH vp_tmpl_csr INTO l_vp_tmpl_id;
2609 
2610       IF vp_tmpl_csr%NOTFOUND THEN
2611          NULL;
2612       ELSE
2613 
2614         -- copy vp rules to lease contract
2615         FOR l_c_prev_src_crs IN c_prev_src_crs(p_vp_tmpl_id => l_vp_tmpl_id) LOOP
2616 
2617           lp_rgpv_rec.id := l_c_prev_src_crs.id;
2618 
2619           IF(l_c_prev_src_crs.rgd_code IS NOT NULL AND l_c_prev_src_crs.rgd_code <> G_VENDOR_BILL_RGD_CODE) THEN
2620 
2621             OKL_RULE_PUB.delete_rule_group(
2622              p_api_version	=> p_api_version,
2623              p_init_msg_list	=> p_init_msg_list,
2624              x_return_status 	=> x_return_status,
2625              x_msg_count     	=> x_msg_count,
2626              x_msg_data      	=> x_msg_data,
2627              p_rgpv_rec         => lp_rgpv_rec
2628              );
2629 
2630 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2631 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2632 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2633 	       RAISE OKC_API.G_EXCEPTION_ERROR;
2634 	    END IF;
2635 
2636          END IF;
2637 
2638         END LOOP;
2639 
2640      END IF;
2641 
2642    CLOSE vp_tmpl_csr;
2643 
2644   OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2645 
2646   EXCEPTION
2647     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2648       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2649 			p_api_name  => l_api_name,
2650 			p_pkg_name  => g_pkg_name,
2651 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
2652 			x_msg_count => x_msg_count,
2653 			x_msg_data  => x_msg_data,
2654 			p_api_type  => g_api_type);
2655 
2656     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2657       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2658 			p_api_name  => l_api_name,
2659 			p_pkg_name  => g_pkg_name,
2660 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
2661 			x_msg_count => x_msg_count,
2662 			x_msg_data  => x_msg_data,
2663 			p_api_type  => g_api_type);
2664 
2665     WHEN OTHERS THEN
2666       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2667 			p_api_name  => l_api_name,
2668 			p_pkg_name  => g_pkg_name,
2669 			p_exc_name  => 'OTHERS',
2670 			x_msg_count => x_msg_count,
2671 			x_msg_data  => x_msg_data,
2672 			p_api_type  => g_api_type);
2673   END;
2674 
2675 
2676   PROCEDURE copy_rules(
2677     p_api_version                  IN NUMBER,
2678     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2679     x_return_status                OUT NOCOPY VARCHAR2,
2680     x_msg_count                    OUT NOCOPY NUMBER,
2681     x_msg_data                     OUT NOCOPY VARCHAR2,
2682     p_source_id                    IN  NUMBER, -- vp id
2683     p_dest_id                      IN  NUMBER, -- k id
2684     p_org_id                       IN  NUMBER,
2685     p_organization_id              IN  NUMBER) IS
2686 
2687     l_api_name	VARCHAR2(30) := 'COPY_RULES';
2688     l_api_version	CONSTANT NUMBER	  := 1.0;
2689 
2690     l_rgp_id 		okc_rule_groups_v.id%TYPE;
2691     l_cle_id		okc_rule_groups_v.cle_id%TYPE DEFAULT NULL;
2692     l_chr_id		okc_rule_groups_v.chr_id%TYPE := p_dest_id;
2693     l_to_template_yn	VARCHAR2(5) :='N';
2694     x_rgp_id		okc_rule_groups_v.id%TYPE;
2695 
2696     l_func_curr_code     	okc_k_headers_b.currency_code%TYPE := NULL;
2697     l_k_curr_code        	okc_k_headers_b.currency_code%TYPE := NULL;
2698     l_start_date                okc_k_headers_b.start_date%TYPE;
2699     l_rule_amt                  NUMBER;
2700     x_contract_currency	        okl_k_headers_full_v.currency_code%TYPE := NULL;
2701     x_currency_conversion_type	okl_k_headers_full_v.currency_conversion_type%TYPE := NULL;
2702     x_currency_conversion_rate	okl_k_headers_full_v.currency_conversion_rate%TYPE := NULL;
2703     x_currency_conversion_date	okl_k_headers_full_v.currency_conversion_date%TYPE := NULL;
2704     x_converted_amount 		NUMBER := NULL;
2705 
2706     l_rgd_code                  okc_rule_groups_b.rgd_code%TYPE := NULL;
2707     l_rule_info_cat             okc_rules_b.rule_information_category%TYPE := NULL;
2708     l_rule_id                   NUMBER := NULL;
2709     l_rule_segment              VARCHAR2(250) := NULL;
2710 
2711     l_no_data_found BOOLEAN := TRUE;
2712 
2713     l_vp_tmpl_id  NUMBER;
2714 
2715   --Cursor to get vp template
2716     CURSOR vp_tmpl_csr(p_vp_id IN NUMBER) IS
2717     SELECT id
2718     FROM   okl_k_headers_full_v
2719     WHERE  scs_code = 'PROGRAM'
2720     AND    sts_code IN ('ACTIVE','PASSED')
2721     AND    khr_id = p_vp_id
2722     AND    NVL(template_yn,'N') = 'Y';
2723 
2724     -- returns vendor program rgd codes which are qualified for lease
2725     CURSOR c_src_crs(p_vp_tmpl_id IN NUMBER) IS
2726         SELECT rg.id
2727         FROM   okc_rule_groups_v rg,
2728                okc_k_headers_v hdr
2729         WHERE  rg.chr_id = p_vp_tmpl_id
2730         AND    hdr.id = rg.chr_id
2731         AND    hdr.id = rg.dnz_chr_id
2732         AND    rg.cle_id IS NULL
2733         AND  EXISTS
2734              (SELECT '1'
2735               FROM   okc_subclass_rg_defs rgdfs
2736               WHERE  rgdfs.rgd_code = rg.rgd_code
2737               AND    rgdfs.scs_code = 'LEASE')
2738         AND NOT EXISTS
2739            (SELECT '1'
2740             FROM  okc_rule_groups_v rglease
2741             WHERE dnz_chr_id =p_dest_id
2742             AND chr_id = p_dest_id
2743         AND rglease.rgd_code = rg.rgd_code);
2744 
2745      CURSOR c_rule_amt_crs(p_rule_code IN VARCHAR2, p_rule_group_code IN VARCHAR2) IS
2746 	--Start modified abhsaxen for performance SQLID 20562750
2747 	SELECT fus.application_column_name
2748 		FROM   FND_DESCR_FLEX_COLUMN_USAGES fus,
2749 		       fnd_flex_value_sets ffv,
2750 		       okc_rg_def_rules    defrul,
2751 		       fnd_lookup_values   flup,
2752 		       okc_rule_defs_v     rulup
2753 		WHERE  fus.DESCRIPTIVE_FLEX_CONTEXT_CODE  = defrul.rdf_code
2754 		AND    fus.application_id = 540
2755 		AND    ffv.flex_value_set_id = fus.flex_value_set_id
2756 		AND    flup.lookup_code         = defrul.rgd_code
2757 		AND    flup.lookup_type         = 'OKC_RULE_GROUP_DEF'
2758 		AND    rulup.rule_code          = defrul.rdf_code
2759 		AND    defrul.rdf_code          = p_rule_code
2760 		AND    defrul.rgd_code          = p_rule_group_code
2761 		AND    flex_value_set_name = 'OKC_AMOUNT'
2762 	--end modified abhsaxen for performance SQLID 20562750
2763 	;
2764      CURSOR c_rule_csr (p_rgp_id IN NUMBER) IS
2765 	--Start modified abhsaxen for performance SQLID 20562755
2766 	select rgp.rgd_code,rul.rule_information_category,rul.id
2767 	 from okc_rule_groups_b rgp, okc_rules_b rul
2768 	 where rgp.id = rul.rgp_id
2769 	 and rul.dnz_chr_id = p_dest_id
2770 	 and rgp.id = p_rgp_id
2771 	 and exists (
2772 	  select 1
2773 	  from   FND_DESCR_FLEX_COLUMN_USAGES fus,
2774 	      fnd_flex_value_sets ffv,
2775 	      okc_rg_def_rules    defrul,
2776 	      fnd_lookup_values   flup,
2777 	      okc_rule_defs_b     rulup
2778 	  where  fus.descriptive_flex_context_code  = defrul.rdf_code
2779 		  and    fus.application_id = 540
2780 	  and    ffv.flex_value_set_id(+) =  fus.flex_value_set_id
2781 	  and    flup.lookup_code         =  defrul.rgd_code
2782 	  and    flup.lookup_type         =  'OKC_RULE_GROUP_DEF'
2783 	  and    rulup.rule_code          =  defrul.rdf_code
2784 	  and    flex_value_set_name      =  'OKC_AMOUNT'
2785 	  and    defrul.rdf_code          =  rul.rule_information_category -- rule
2786 	  and    defrul.rgd_code          =  rgp.rgd_code -- rule group
2787 	  );
2788 	--end modified abhsaxen for performance SQLID 20562755
2789 
2790     CURSOR c_k_curr_csr IS
2791      SELECT currency_code, start_date
2792      FROM okc_k_headers_b
2793      WHERE id = p_dest_id;
2794 
2795     CURSOR c_rule_segmnts_csr(p_rule_id IN NUMBER) IS
2796      SELECT RULE_INFORMATION1,RULE_INFORMATION2,RULE_INFORMATION3,RULE_INFORMATION4,RULE_INFORMATION5,
2797             RULE_INFORMATION6,RULE_INFORMATION7,RULE_INFORMATION8,RULE_INFORMATION9,RULE_INFORMATION10,
2798             RULE_INFORMATION11,RULE_INFORMATION12,RULE_INFORMATION13,RULE_INFORMATION14,RULE_INFORMATION15
2799      FROM okc_rules_v
2800      WHERE id = p_rule_id
2801      AND   dnz_chr_id = p_dest_id;
2802 
2803     rul_seg_rec c_rule_segmnts_csr%ROWTYPE;
2804 
2805     lp_rulv_rec Okl_Rule_Pub.rulv_rec_type;
2806     lx_rulv_rec Okl_Rule_Pub.rulv_rec_type;
2807     lp_rmpv_rec OKL_OKC_MIGRATION_PVT.rmpv_rec_type;
2808     lx_rmpv_rec OKL_OKC_MIGRATION_PVT.rmpv_rec_type;
2809 
2810     l_vp_cpl_id okc_k_party_roles_v.id%TYPE := NULL;
2811     x_cpl_id   okc_k_party_roles_v.id%TYPE := NULL;
2812 
2813     l_cpl_id  okc_k_party_roles_v.id%TYPE := NULL;
2814     l_rrd_id  NUMBER := NULL;
2815     l_vndr_blng_rgp_id NUMBER := NULL;
2816 --start modifying abhsaxen Cursor not in use
2817 --   CURSOR c_lse_vndr_csr IS
2818 --end modifying abhsaxen Cursor not in use
2819 
2820    CURSOR c_rrdid_csr IS
2821     SELECT   rgrdfs.id
2822     FROM     okc_k_headers_b CHR,
2823              okc_subclass_roles sre,
2824              okc_role_sources rse,
2825              okc_subclass_rg_defs rgdfs,
2826              okc_rg_role_defs rgrdfs
2827     WHERE    CHR.id =  p_dest_id
2828     AND      sre.scs_code = CHR.scs_code
2829     AND      sre.rle_code = rse.rle_code
2830     AND      rse.rle_code = G_LEASE_VENDOR
2831     AND      rse.buy_or_sell = CHR.buy_or_sell
2832     AND      rgdfs.scs_code = CHR.scs_code
2833     AND      rgdfs.rgd_code = G_VENDOR_BILL_RGD_CODE
2834     AND      rgrdfs.srd_id = rgdfs.id
2835     AND      rgrdfs.sre_id = sre.id;
2836 
2837    CURSOR c_vndr_blng_id_csr IS
2838     SELECT rgpv.id
2839     FROM okc_rule_groups_v rgpv
2840     WHERE rgpv.rgd_code = G_VENDOR_BILL_RGD_CODE
2841     AND rgpv.dnz_chr_id   = p_source_id;
2842 
2843    CURSOR c_vp_cpl_csr IS
2844 --Start modified abhsaxen for performance SQLID 20562566
2845 select cplv.id
2846     from okc_k_party_roles_b cplv
2847     where cplv.rle_code = g_lease_vendor
2848     and cplv.chr_id = p_source_id
2849     and cplv.dnz_chr_id = cplv.chr_id
2850     and not exists (select 1
2851                     from okc_k_party_roles_b s_cpl
2852                     where s_cpl.chr_id = p_dest_id
2853                     and s_cpl.dnz_chr_id = s_cpl.chr_id
2854                     and s_cpl.rle_code = g_lease_vendor
2855                     and cplv.object1_id1 = s_cpl.object1_id1
2856                     );
2857 --end modified abhsaxen for performance SQLID 20562566
2858 
2859     BEGIN
2860 
2861     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
2862 		p_org_id =>  p_org_id,
2863 		p_organization_id	=> p_organization_id);
2864 
2865     x_return_status := OKC_API.START_ACTIVITY(
2866 			p_api_name      => l_api_name,
2867 			p_pkg_name      => g_pkg_name,
2868 			p_init_msg_list => p_init_msg_list,
2869 			l_api_version   => l_api_version,
2870 			p_api_version   => p_api_version,
2871 			p_api_type      => g_api_type,
2872 			x_return_status => x_return_status);
2873 
2874 
2875     -- check if activity started successfully
2876     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2877        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2878     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2879        RAISE OKC_API.G_EXCEPTION_ERROR;
2880     END IF;
2881 
2882          -- copy vp party lease vendor to lease contract
2883          l_vp_cpl_id := NULL;
2884 
2885          OPEN c_vp_cpl_csr;
2886          FETCH c_vp_cpl_csr INTO l_vp_cpl_id;
2887          CLOSE c_vp_cpl_csr;
2888 
2889          IF( l_vp_cpl_id IS NOT NULL) THEN
2890 
2891            OKL_COPY_CONTRACT_PUB.copy_party_roles(
2892               p_api_version	=> p_api_version,
2893               p_init_msg_list	=> p_init_msg_list,
2894               x_return_status 	=> x_return_status,
2895               x_msg_count     	=> x_msg_count,
2896               x_msg_data      	=> x_msg_data,
2897  	      p_cpl_id          => l_vp_cpl_id,
2898  	      p_cle_id          => NULL,
2899  	      p_chr_id          => l_chr_id,
2900  	      P_rle_code        => G_LEASE_VENDOR,
2901  	      x_cpl_id		=> x_cpl_id
2902  	     );
2903 
2904            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2905  	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2906            ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2907                 RAISE OKC_API.G_EXCEPTION_ERROR;
2908            END IF;
2909 
2910            l_vndr_blng_rgp_id := NULL;
2911            OPEN c_vndr_blng_id_csr;
2912            FETCH c_vndr_blng_id_csr INTO l_vndr_blng_rgp_id;
2913            CLOSE c_vndr_blng_id_csr;
2914 
2915            IF( l_vndr_blng_rgp_id IS NOT NULL AND x_cpl_id IS NOT NULL) THEN
2916 
2917             OKL_COPY_CONTRACT_PUB.copy_rules(
2918              p_api_version	=> p_api_version,
2919              p_init_msg_list	=> p_init_msg_list,
2920              x_return_status 	=> x_return_status,
2921              x_msg_count     	=> x_msg_count,
2922              x_msg_data      	=> x_msg_data,
2923              p_rgp_id		=> l_vndr_blng_rgp_id,
2924              p_cle_id		=> NULL,
2925              p_chr_id		=> l_chr_id,
2926              p_to_template_yn   => l_to_template_yn,
2927              x_rgp_id		=> x_rgp_id);
2928 
2929 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2930 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2931 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2932 	       RAISE OKC_API.G_EXCEPTION_ERROR;
2933 	    END IF;
2934 
2935            END IF;
2936 
2937 
2938            IF( x_rgp_id IS NOT NULL AND x_cpl_id IS NOT NULL) THEN
2939 
2940              l_rrd_id := NULL;
2941              OPEN c_rrdid_csr;
2942              FETCH c_rrdid_csr INTO l_rrd_id;
2943              CLOSE c_rrdid_csr;
2944 
2945              lp_rmpv_rec.rgp_id := x_rgp_id;
2946              lp_rmpv_rec.cpl_id := x_cpl_id;
2947              lp_rmpv_rec.dnz_chr_id := l_chr_id;
2948              lp_rmpv_rec.rrd_id := l_rrd_id;
2949 
2950              OKL_RULE_PUB.create_rg_mode_pty_role(
2951 	          p_api_version    => p_api_version,
2952 	          p_init_msg_list  => p_init_msg_list,
2953 	          x_return_status  => x_return_status,
2954 	          x_msg_count      => x_msg_count,
2955 	          x_msg_data       => x_msg_data,
2956 	          p_rmpv_rec       => lp_rmpv_rec,
2957 	          x_rmpv_rec       => lx_rmpv_rec
2958 	          );
2959 
2960 	     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2961 	           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2962 	     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2963 	           RAISE OKC_API.G_EXCEPTION_ERROR;
2964 	     END IF;
2965 
2966            END IF;
2967 
2968         END IF;
2969 
2970 
2971     OPEN vp_tmpl_csr(p_vp_id => p_source_id);
2972       FETCH vp_tmpl_csr INTO l_vp_tmpl_id;
2973       IF vp_tmpl_csr%NOTFOUND THEN
2974          NULL;
2975       ELSE
2976 
2977         -- copy vp rules to lease contract
2978         FOR l_c_src_crs IN c_src_crs(p_vp_tmpl_id => l_vp_tmpl_id) LOOP
2979 
2980         l_rgp_id := l_c_src_crs.id; -- gets vendor program rgd code
2981 
2982         OKL_COPY_CONTRACT_PUB.copy_rules(
2983              p_api_version	=> p_api_version,
2984              p_init_msg_list	=> p_init_msg_list,
2985              x_return_status 	=> x_return_status,
2986              x_msg_count     	=> x_msg_count,
2987              x_msg_data      	=> x_msg_data,
2988              p_rgp_id		=> l_rgp_id,
2989              p_cle_id		=> l_cle_id,
2990              p_chr_id		=> l_chr_id,
2991              p_to_template_yn   => l_to_template_yn,
2992              x_rgp_id		=> x_rgp_id);
2993 
2994 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2995 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2996 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2997 	       RAISE OKC_API.G_EXCEPTION_ERROR;
2998 	    END IF;
2999 
3000 
3001 -- start of currency conversion for program rules
3002 
3003 IF ( x_rgp_id IS NOT NULL) THEN
3004 
3005   l_func_curr_code := NULL;
3006   -- if functional currency code is not equal to contract currency code
3007   l_func_curr_code := OKL_ACCOUNTING_UTIL.get_func_curr_code;
3008 
3009   l_k_curr_code := NULL;
3010   l_start_date := NULL;
3011 
3012   OPEN c_k_curr_csr;
3013   FETCH c_k_curr_csr INTO l_k_curr_code, l_start_date;
3014   CLOSE c_k_curr_csr;
3015 
3016   IF(l_func_curr_code IS NOT NULL AND l_k_curr_code IS NOT NULL AND l_func_curr_code <> l_k_curr_code) THEN
3017 
3018 
3019      FOR l_c_rule_csr IN c_rule_csr(p_rgp_id => x_rgp_id) LOOP -- get all the rules
3020 
3021           l_rgd_code          := l_c_rule_csr.rgd_code;
3022           l_rule_info_cat     := l_c_rule_csr.rule_information_category;
3023           l_rule_id           := l_c_rule_csr.id;
3024 
3025            OPEN c_rule_segmnts_csr (l_rule_id);
3026            FETCH c_rule_segmnts_csr INTO rul_seg_rec;
3027            CLOSE c_rule_segmnts_csr;
3028 
3029            l_rule_segment := NULL;
3030            l_rule_amt := NULL;
3031 
3032            lp_rulv_rec.RULE_INFORMATION1 := rul_seg_rec.RULE_INFORMATION1;
3033            lp_rulv_rec.RULE_INFORMATION2 := rul_seg_rec.RULE_INFORMATION2;
3034            lp_rulv_rec.RULE_INFORMATION3 := rul_seg_rec.RULE_INFORMATION3;
3035            lp_rulv_rec.RULE_INFORMATION4 := rul_seg_rec.RULE_INFORMATION4;
3036            lp_rulv_rec.RULE_INFORMATION5 := rul_seg_rec.RULE_INFORMATION5;
3037            lp_rulv_rec.RULE_INFORMATION6 := rul_seg_rec.RULE_INFORMATION6;
3038            lp_rulv_rec.RULE_INFORMATION7 := rul_seg_rec.RULE_INFORMATION7;
3039            lp_rulv_rec.RULE_INFORMATION8 := rul_seg_rec.RULE_INFORMATION8;
3040            lp_rulv_rec.RULE_INFORMATION9 := rul_seg_rec.RULE_INFORMATION9;
3041            lp_rulv_rec.RULE_INFORMATION10 := rul_seg_rec.RULE_INFORMATION10;
3042            lp_rulv_rec.RULE_INFORMATION11 := rul_seg_rec.RULE_INFORMATION11;
3043            lp_rulv_rec.RULE_INFORMATION12 := rul_seg_rec.RULE_INFORMATION12;
3044            lp_rulv_rec.RULE_INFORMATION13 := rul_seg_rec.RULE_INFORMATION13;
3045            lp_rulv_rec.RULE_INFORMATION14 := rul_seg_rec.RULE_INFORMATION14;
3046            lp_rulv_rec.RULE_INFORMATION15 := rul_seg_rec.RULE_INFORMATION15;
3047 
3048            FOR l_c_rule_amt_crs IN c_rule_amt_crs(p_rule_code => l_rule_info_cat, p_rule_group_code => l_rgd_code) LOOP -- get all the rule amount segments
3049 
3050              l_rule_segment := l_c_rule_amt_crs.application_column_name;
3051              IF(l_rule_segment IS NOT NULL) THEN
3052 
3053                IF (l_rule_segment = 'RULE_INFORMATION1') THEN
3054                 l_rule_amt := rul_seg_rec.RULE_INFORMATION1;
3055                ELSIF (l_rule_segment = 'RULE_INFORMATION2') THEN
3056                 l_rule_amt := rul_seg_rec.RULE_INFORMATION2;
3057                ELSIF (l_rule_segment = 'RULE_INFORMATION3') THEN
3058                 l_rule_amt := rul_seg_rec.RULE_INFORMATION3;
3059                ELSIF (l_rule_segment = 'RULE_INFORMATION4') THEN
3060                 l_rule_amt := rul_seg_rec.RULE_INFORMATION4;
3061                ELSIF (l_rule_segment = 'RULE_INFORMATION5') THEN
3062                 l_rule_amt := rul_seg_rec.RULE_INFORMATION5;
3063                ELSIF (l_rule_segment = 'RULE_INFORMATION6') THEN
3064                 l_rule_amt := rul_seg_rec.RULE_INFORMATION6;
3065                ELSIF (l_rule_segment = 'RULE_INFORMATION7') THEN
3066                 l_rule_amt := rul_seg_rec.RULE_INFORMATION7;
3067                ELSIF (l_rule_segment = 'RULE_INFORMATION8') THEN
3068                 l_rule_amt := rul_seg_rec.RULE_INFORMATION8;
3069                ELSIF (l_rule_segment = 'RULE_INFORMATION9') THEN
3070                 l_rule_amt := rul_seg_rec.RULE_INFORMATION9;
3071                ELSIF (l_rule_segment = 'RULE_INFORMATION10') THEN
3072                 l_rule_amt := rul_seg_rec.RULE_INFORMATION10;
3073                ELSIF (l_rule_segment = 'RULE_INFORMATION11') THEN
3074                 l_rule_amt := rul_seg_rec.RULE_INFORMATION11;
3075                ELSIF (l_rule_segment = 'RULE_INFORMATION12') THEN
3076                 l_rule_amt := rul_seg_rec.RULE_INFORMATION12;
3077                ELSIF (l_rule_segment = 'RULE_INFORMATION13') THEN
3078                 l_rule_amt := rul_seg_rec.RULE_INFORMATION13;
3079                ELSIF (l_rule_segment = 'RULE_INFORMATION14') THEN
3080                 l_rule_amt := rul_seg_rec.RULE_INFORMATION14;
3081                ELSIF (l_rule_segment = 'RULE_INFORMATION15') THEN
3082                 l_rule_amt := rul_seg_rec.RULE_INFORMATION15;
3083                END IF;
3084 
3085              END IF;
3086 
3087                IF (l_rule_amt IS NOT NULL) THEN
3088                 -- do currency conversion for DFF amount columns
3089                 OKL_ACCOUNTING_UTIL.convert_to_contract_currency (
3090    	  		p_khr_id  		  	=> l_chr_id,
3091 	 		p_from_currency   		=> l_func_curr_code,
3092 	 		p_transaction_date 		=> l_start_date,
3093 	 		p_amount 			=> l_rule_amt,
3094 	 		x_contract_currency		=> x_contract_currency,
3095 	 		x_currency_conversion_type	=> x_currency_conversion_type,
3096 	 		x_currency_conversion_rate	=> x_currency_conversion_rate,
3097 	 		x_currency_conversion_date	=> x_currency_conversion_date,
3098 	 		x_converted_amount 		=> x_converted_amount);
3099 
3100 
3101 		       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3102 		          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3103 		       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3104 		          RAISE OKC_API.G_EXCEPTION_ERROR;
3105 		       END IF;
3106 
3107                      IF(l_rule_id IS NOT NULL AND x_converted_amount IS NOT NULL) THEN
3108 
3109                        x_converted_amount := OKL_ACCOUNTING_UTIL.cross_currency_round_amount
3110                                 (
3111                        		p_amount =>  x_converted_amount,
3112                        		p_currency_code => l_k_curr_code
3113                        		);
3114 
3115                        lp_rulv_rec.id := l_rule_id;
3116 	               IF (l_rule_segment = 'RULE_INFORMATION1') THEN
3117                                lp_rulv_rec.RULE_INFORMATION1 := TO_CHAR(x_converted_amount);
3118 	               ELSIF (l_rule_segment = 'RULE_INFORMATION2') THEN
3119 	                       lp_rulv_rec.RULE_INFORMATION2 := TO_CHAR(x_converted_amount);
3120 	               ELSIF (l_rule_segment = 'RULE_INFORMATION3') THEN
3121 	                       lp_rulv_rec.RULE_INFORMATION3 := TO_CHAR(x_converted_amount);
3122 	               ELSIF (l_rule_segment = 'RULE_INFORMATION4') THEN
3123 	                       lp_rulv_rec.RULE_INFORMATION4 := TO_CHAR(x_converted_amount);
3124 	               ELSIF (l_rule_segment = 'RULE_INFORMATION5') THEN
3125 	                       lp_rulv_rec.RULE_INFORMATION5 := TO_CHAR(x_converted_amount);
3126 	               ELSIF (l_rule_segment = 'RULE_INFORMATION6') THEN
3127 	                       lp_rulv_rec.RULE_INFORMATION6 := TO_CHAR(x_converted_amount);
3128 	               ELSIF (l_rule_segment = 'RULE_INFORMATION7') THEN
3129 	                       lp_rulv_rec.RULE_INFORMATION7 := TO_CHAR(x_converted_amount);
3130 	               ELSIF (l_rule_segment = 'RULE_INFORMATION8') THEN
3131 	                       lp_rulv_rec.RULE_INFORMATION8:= TO_CHAR(x_converted_amount);
3132 	               ELSIF (l_rule_segment = 'RULE_INFORMATION9') THEN
3133 	                       lp_rulv_rec.RULE_INFORMATION9 := TO_CHAR(x_converted_amount);
3134 	               ELSIF (l_rule_segment = 'RULE_INFORMATION10') THEN
3135 	                       lp_rulv_rec.RULE_INFORMATION10 := TO_CHAR(x_converted_amount);
3136 	               ELSIF (l_rule_segment = 'RULE_INFORMATION11') THEN
3137 	                       lp_rulv_rec.RULE_INFORMATION11 := TO_CHAR(x_converted_amount);
3138 	               ELSIF (l_rule_segment = 'RULE_INFORMATION12') THEN
3139 	                       lp_rulv_rec.RULE_INFORMATION12 := TO_CHAR(x_converted_amount);
3140 	               ELSIF (l_rule_segment = 'RULE_INFORMATION13') THEN
3141 	                       lp_rulv_rec.RULE_INFORMATION13 := TO_CHAR(x_converted_amount);
3142 	               ELSIF (l_rule_segment = 'RULE_INFORMATION14') THEN
3143 	                       lp_rulv_rec.RULE_INFORMATION14 := TO_CHAR(x_converted_amount);
3144 	               ELSIF (l_rule_segment = 'RULE_INFORMATION15') THEN
3145 	                       lp_rulv_rec.RULE_INFORMATION15 := TO_CHAR(x_converted_amount);
3146 	               END IF;
3147 
3148 	 	       l_rule_segment := NULL;
3149 	 	       l_rule_amt := NULL;
3150 
3151                      END IF;
3152                END IF;
3153 
3154  	   END LOOP;
3155 
3156            IF(l_rule_id IS NOT NULL AND x_converted_amount IS NOT NULL) THEN
3157 
3158                OKL_RULE_PUB.update_rule(
3159 		         p_api_version    => p_api_version,
3160 		         p_init_msg_list  => p_init_msg_list,
3161 		         x_return_status  => x_return_status,
3162 		         x_msg_count      => x_msg_count,
3163 		         x_msg_data       => x_msg_data,
3164 		         p_rulv_rec       => lp_rulv_rec,
3165 		         x_rulv_rec       => lx_rulv_rec);
3166 
3167                 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3168   		          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3169                 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3170 		          RAISE OKC_API.G_EXCEPTION_ERROR;
3171                 END IF;
3172 
3173             END IF;
3174 
3175             l_rgd_code := NULL;
3176             l_rule_info_cat := NULL;
3177             l_rule_id := NULL;
3178             rul_seg_rec := NULL;
3179             x_converted_amount := NULL;
3180 
3181       END LOOP;
3182 
3183   END IF;
3184 
3185  END IF;
3186 
3187 -- end of currency conversion for program rules
3188 
3189  END LOOP;
3190 
3191  END IF;
3192 
3193  CLOSE vp_tmpl_csr;
3194 
3195  OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
3196 
3197   EXCEPTION
3198     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3199       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3200 			p_api_name  => l_api_name,
3201 			p_pkg_name  => g_pkg_name,
3202 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3203 			x_msg_count => x_msg_count,
3204 			x_msg_data  => x_msg_data,
3205 			p_api_type  => g_api_type);
3206 
3207     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3208       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3209 			p_api_name  => l_api_name,
3210 			p_pkg_name  => g_pkg_name,
3211 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3212 			x_msg_count => x_msg_count,
3213 			x_msg_data  => x_msg_data,
3214 			p_api_type  => g_api_type);
3215 
3216     WHEN OTHERS THEN
3217       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3218 			p_api_name  => l_api_name,
3219 			p_pkg_name  => g_pkg_name,
3220 			p_exc_name  => 'OTHERS',
3221 			x_msg_count => x_msg_count,
3222 			x_msg_data  => x_msg_data,
3223 			p_api_type  => g_api_type);
3224   END;
3225 
3226   PROCEDURE copy_rules(
3227     p_api_version                  IN NUMBER,
3228     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3229     x_return_status                OUT NOCOPY VARCHAR2,
3230     x_msg_count                    OUT NOCOPY NUMBER,
3231     x_msg_data                     OUT NOCOPY VARCHAR2,
3232     p_old_khr_id                   IN  NUMBER, -- prev k khr id
3233     p_prog_override_yn             IN  VARCHAR2, -- program yn
3234     p_source_id                    IN  NUMBER, -- vp id
3235     p_dest_id                      IN  NUMBER, -- k id
3236     p_org_id                       IN  NUMBER,
3237     p_organization_id              IN  NUMBER) IS
3238 
3239     l_api_name	VARCHAR2(30) := 'COPY_RULES';
3240     l_api_version	CONSTANT NUMBER	  := 1.0;
3241 
3242     BEGIN
3243 
3244     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(p_org_id =>  p_org_id,  p_organization_id => p_organization_id);
3245 
3246     x_return_status := OKC_API.START_ACTIVITY(
3247 			p_api_name      => l_api_name,
3248 			p_pkg_name      => g_pkg_name,
3249 			p_init_msg_list => p_init_msg_list,
3250 			l_api_version   => l_api_version,
3251 			p_api_version   => p_api_version,
3252 			p_api_type      => g_api_type,
3253 			x_return_status => x_return_status);
3254 
3255     -- check if activity started successfully
3256     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3257        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3258     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3259        RAISE OKC_API.G_EXCEPTION_ERROR;
3260     END IF;
3261 
3262 
3263     IF( (p_old_khr_id IS NOT NULL AND p_source_id IS NOT NULL AND p_old_khr_id <> p_source_id
3264     	  			AND p_prog_override_yn IS NOT NULL AND p_prog_override_yn = 'Y' )
3265       OR (p_old_khr_id IS NOT NULL AND p_source_id IS NULL
3266       				AND p_prog_override_yn IS NOT NULL AND p_prog_override_yn = 'Y' )
3267 
3268       ) THEN
3269 
3270           -- delete all the rules of the old_khr_id'S program template rules
3271            delete_rules(
3272 	        p_api_version       => p_api_version,
3273 	        p_init_msg_list     => p_init_msg_list,
3274 	        x_return_status     => x_return_status,
3275 	        x_msg_count         => x_msg_count,
3276 	        x_msg_data          => x_msg_data,
3277 	        p_old_khr_id        => p_old_khr_id,
3278 	        p_source_id         => p_source_id,
3279 	        p_dest_id           => p_dest_id,
3280 	        p_org_id            => okl_context.get_okc_org_id,
3281 	        p_organization_id   => okl_context.get_okc_organization_id
3282 	        );
3283 
3284            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3285 	         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3286            ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3287 	         RAISE OKC_API.G_EXCEPTION_ERROR;
3288            END IF;
3289 
3290     END IF;
3291 
3292 
3293     IF( p_source_id IS NOT NULL AND p_old_khr_id IS NULL ) THEN
3294 
3295            copy_rules(
3296 	        p_api_version       => p_api_version,
3297 	        p_init_msg_list     => p_init_msg_list,
3298 	        x_return_status     => x_return_status,
3299 	        x_msg_count         => x_msg_count,
3300 	        x_msg_data          => x_msg_data,
3301                 p_source_id         => p_source_id, -- vp id
3302                 p_dest_id           => p_dest_id, -- k id
3303 	        p_org_id            => okl_context.get_okc_org_id,
3304 	        p_organization_id   => okl_context.get_okc_organization_id
3305 	        );
3306 
3307 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3308 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3309 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3310 	       RAISE OKC_API.G_EXCEPTION_ERROR;
3311 	    END IF;
3312 
3313     ELSIF( p_source_id IS NOT NULL AND p_old_khr_id IS NOT NULL AND p_prog_override_yn IS NOT NULL AND p_prog_override_yn = 'Y' ) THEN
3314 
3315            copy_rules(
3316 	        p_api_version       => p_api_version,
3317 	        p_init_msg_list     => p_init_msg_list,
3318 	        x_return_status     => x_return_status,
3319 	        x_msg_count         => x_msg_count,
3320 	        x_msg_data          => x_msg_data,
3321                 p_source_id         => p_source_id, -- vp id
3322                 p_dest_id           => p_dest_id, -- k id
3323 	        p_org_id            => okl_context.get_okc_org_id,
3324 	        p_organization_id   => okl_context.get_okc_organization_id
3325 	        );
3326 
3327 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3328 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3329 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3330 	       RAISE OKC_API.G_EXCEPTION_ERROR;
3331 	    END IF;
3332 
3333     END IF;
3334 
3335   OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
3336 
3337   EXCEPTION
3338     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3339       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3340 			p_api_name  => l_api_name,
3341 			p_pkg_name  => g_pkg_name,
3342 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3343 			x_msg_count => x_msg_count,
3344 			x_msg_data  => x_msg_data,
3345 			p_api_type  => g_api_type);
3346 
3347     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3348       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3349 			p_api_name  => l_api_name,
3350 			p_pkg_name  => g_pkg_name,
3351 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3352 			x_msg_count => x_msg_count,
3353 			x_msg_data  => x_msg_data,
3354 			p_api_type  => g_api_type);
3355 
3356     WHEN OTHERS THEN
3357       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3358 			p_api_name  => l_api_name,
3359 			p_pkg_name  => g_pkg_name,
3360 			p_exc_name  => 'OTHERS',
3361 			x_msg_count => x_msg_count,
3362 			x_msg_data  => x_msg_data,
3363 			p_api_type  => g_api_type);
3364   END;
3365 
3366 -- Start of comments
3367 --
3368 -- Procedure Name  : create_deal
3369 -- Description     : creates a deal based on the information that comes
3370 --	             from the deal creation screen
3371 -- Business Rules  :
3372 -- Parameters      :
3373 -- Version         : 1.0
3374 -- End of comments
3375   PROCEDURE create_deal(
3376     p_api_version                  IN NUMBER,
3377     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3378     x_return_status                OUT NOCOPY VARCHAR2,
3379     x_msg_count                    OUT NOCOPY NUMBER,
3380     x_msg_data                     OUT NOCOPY VARCHAR2,
3381     p_contract_number              IN  VARCHAR2,
3382     p_scs_code                     IN  VARCHAR2,
3383     p_customer_id1                 IN  VARCHAR2,
3384     p_customer_id2                 IN  VARCHAR2,
3385     p_customer_code                IN  VARCHAR2,
3386     p_org_id                       IN  NUMBER,
3387     p_organization_id              IN  NUMBER,
3388     p_source_chr_id                IN  NUMBER,
3389     x_chr_id                       OUT NOCOPY NUMBER,
3390     --Added by dpsingh for LE Uptake
3391     p_legal_entity_id              IN  NUMBER) AS
3392 
3393     l_api_name	VARCHAR2(30) := 'CREATE_DEAL';
3394     l_api_version	CONSTANT NUMBER	  := 1.0;
3395 
3396     CURSOR l_source_crs IS
3397       SELECT template_yn, chr_type
3398       FROM   okc_k_headers_b
3399       WHERE  id = p_source_chr_id;
3400 
3401     l_template_yn OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
3402     l_chr_type    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3403   BEGIN
3404 
3405     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
3406 		p_org_id =>  p_org_id,
3407 		p_organization_id	=> p_organization_id);
3408 
3409     x_return_status := OKC_API.START_ACTIVITY(
3410 			p_api_name      => l_api_name,
3411 			p_pkg_name      => g_pkg_name,
3412 			p_init_msg_list => p_init_msg_list,
3413 			l_api_version   => l_api_version,
3414 			p_api_version   => p_api_version,
3415 			p_api_type      => g_api_type,
3416 			x_return_status => x_return_status);
3417 
3418     -- check if activity started successfully
3419     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3420        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3421     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3422        RAISE OKC_API.G_EXCEPTION_ERROR;
3423     END IF;
3424 
3425     IF (p_source_chr_id IS NULL) OR (p_source_chr_id = OKC_API.G_MISS_NUM) THEN
3426       create_new_deal(
3427          p_api_version     => l_api_version,
3428          p_init_msg_list   => p_init_msg_list,
3429          x_return_status   => x_return_status,
3430          x_msg_count       => x_msg_count,
3431          x_msg_data        => x_msg_data,
3432          p_contract_number => p_contract_number,
3433          p_scs_code        => p_scs_code,
3434          p_customer_id1    => p_customer_id1,
3435          p_customer_id2    => p_customer_id2,
3436          p_customer_code   => p_customer_code,
3437          x_chr_id          => x_chr_id,
3438     --Added by dpsingh for LE Uptake
3439          p_legal_entity_id => p_legal_entity_id);
3440     ELSE
3441     -- need to figure out what kind of source do we have
3442 	OPEN l_source_crs;
3443         FETCH l_source_crs INTO l_template_yn, l_chr_type;
3444         CLOSE l_source_crs;
3445 
3446         -- copy from template
3447         IF (l_template_yn = 'Y') THEN
3448           create_from_template(
3449             p_api_version     => l_api_version,
3450             p_init_msg_list   => p_init_msg_list,
3451             x_return_status   => x_return_status,
3452             x_msg_count       => x_msg_count,
3453             x_msg_data        => x_msg_data,
3454             p_contract_number => p_contract_number,
3455             p_source_chr_id   => p_source_chr_id,
3456             x_chr_id          => x_chr_id);
3457         ELSE
3458           create_from_contract(
3459             p_api_version     => l_api_version,
3460             p_init_msg_list   => p_init_msg_list,
3461             x_return_status   => x_return_status,
3462             x_msg_count       => x_msg_count,
3463             x_msg_data        => x_msg_data,
3464             p_contract_number => p_contract_number,
3465             p_source_chr_id   => p_source_chr_id,
3466             x_chr_id          => x_chr_id);
3467         END IF;
3468     END IF;
3469 
3470     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3471        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3472     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3473        RAISE OKC_API.G_EXCEPTION_ERROR;
3474     END IF;
3475 
3476     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
3477 			 x_msg_data	=> x_msg_data);
3478   EXCEPTION
3479     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3480       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3481 			p_api_name  => l_api_name,
3482 			p_pkg_name  => g_pkg_name,
3483 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3484 			x_msg_count => x_msg_count,
3485 			x_msg_data  => x_msg_data,
3486 			p_api_type  => g_api_type);
3487 
3488     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3489       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3490 			p_api_name  => l_api_name,
3491 			p_pkg_name  => g_pkg_name,
3492 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3493 			x_msg_count => x_msg_count,
3494 			x_msg_data  => x_msg_data,
3495 			p_api_type  => g_api_type);
3496 
3497     WHEN OTHERS THEN
3498       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3499 			p_api_name  => l_api_name,
3500 			p_pkg_name  => g_pkg_name,
3501 			p_exc_name  => 'OTHERS',
3502 			x_msg_count => x_msg_count,
3503 			x_msg_data  => x_msg_data,
3504 			p_api_type  => g_api_type);
3505   END;
3506 
3507 /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
3508 -- Start of comments
3509 --
3510 -- Procedure Name  : create_from_release
3511 -- Description     : creates a deal from release
3512 -- Business Rules  :
3513 -- Parameters      :
3514 -- Version         : 1.0
3515 -- End of comments
3516   PROCEDURE create_from_release (
3517     p_api_version                  IN NUMBER,
3518     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3519     x_return_status                OUT NOCOPY VARCHAR2,
3520     x_msg_count                    OUT NOCOPY NUMBER,
3521     x_msg_data                     OUT NOCOPY VARCHAR2,
3522     p_contract_number              IN  VARCHAR2,
3523     p_source_chr_id                IN  NUMBER,
3524     x_chr_id                       OUT NOCOPY NUMBER) AS
3525 
3526     x_new_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
3527     x_new_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
3528     l_old_contract_number  OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
3529     l_new_contract_number  OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
3530     l_value VARCHAR2(1) := OKL_API.G_FALSE;
3531 
3532     CURSOR l_source_k_num_crs IS
3533       SELECT contract_number
3534       FROM   okc_k_headers_b
3535       WHERE  id = p_source_chr_id;
3536 
3537     l_inv_agmt_chr_id_tbl_type Okl_Securitization_Pvt.inv_agmt_chr_id_tbl_type;
3538 
3539     l_api_name	VARCHAR2(30) := 'CREATE_DEAL';
3540     l_api_version	CONSTANT NUMBER	  := 1.0;
3541 
3542   BEGIN
3543 
3544     x_return_status := OKC_API.START_ACTIVITY(
3545 			p_api_name      => l_api_name,
3546 			p_pkg_name      => g_pkg_name,
3547 			p_init_msg_list => p_init_msg_list,
3548 			l_api_version   => l_api_version,
3549 			p_api_version   => p_api_version,
3550 			p_api_type      => g_api_type,
3551 			x_return_status => x_return_status);
3552 
3553     -- check if activity started successfully
3554     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3555        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3556     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3557        RAISE OKC_API.G_EXCEPTION_ERROR;
3558     END IF;
3559 
3560    okl_securitization_pvt.check_khr_securitized(
3561       p_api_version                  => p_api_version,
3562       p_init_msg_list                => p_init_msg_list,
3563       x_return_status                => x_return_status,
3564       x_msg_count                    => x_msg_count,
3565       x_msg_data                     => x_msg_data,
3566       p_khr_id                       => p_source_chr_id, --source_contract_id
3567       p_effective_date               => SYSDATE,    -- sysdate
3568       x_value                        => l_value, -- varchar2(1)
3569       x_inv_agmt_chr_id_tbl          => l_inv_agmt_chr_id_tbl_type    --okl_securitization_pvt.inv_agmt_chr_id_tbl_type
3570    );
3571 
3572 
3573     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3574        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3575     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3576        RAISE OKC_API.G_EXCEPTION_ERROR;
3577     END IF;
3578 
3579    IF(l_value = OKL_API.G_TRUE) THEN
3580             OKC_API.SET_MESSAGE(     p_app_name => g_app_name
3581           			   , p_msg_name => 'OKL_LLA_CONTRACT_SECU_ERROR'
3582           			   );
3583             RAISE OKC_API.G_EXCEPTION_ERROR;
3584    END IF;
3585 
3586    l_new_contract_number := p_contract_number;
3587 
3588    OPEN  l_source_k_num_crs;
3589    FETCH l_source_k_num_crs INTO l_old_contract_number;
3590    CLOSE l_source_k_num_crs;
3591 
3592    okl_release_pvt.create_release_contract(
3593       p_api_version          => p_api_version,
3594       p_init_msg_list        => p_init_msg_list,
3595       x_return_status        => x_return_status,
3596       x_msg_count            => x_msg_count,
3597       x_msg_data             => x_msg_data,
3598       p_old_contract_number  => l_old_contract_number,
3599       p_new_contract_number  => l_new_contract_number,
3600       x_new_chrv_rec         => x_new_chrv_rec,
3601       x_new_khrv_rec         => x_new_khrv_rec);
3602 
3603       x_chr_id := x_new_chrv_rec.id;
3604 
3605     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3606        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3607     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3608        RAISE OKC_API.G_EXCEPTION_ERROR;
3609     END IF;
3610 
3611     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
3612 			 x_msg_data	=> x_msg_data);
3613   EXCEPTION
3614     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3615       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3616 			p_api_name  => l_api_name,
3617 			p_pkg_name  => g_pkg_name,
3618 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3619 			x_msg_count => x_msg_count,
3620 			x_msg_data  => x_msg_data,
3621 			p_api_type  => g_api_type);
3622 
3623     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3624       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3625 			p_api_name  => l_api_name,
3626 			p_pkg_name  => g_pkg_name,
3627 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3628 			x_msg_count => x_msg_count,
3629 			x_msg_data  => x_msg_data,
3630 			p_api_type  => g_api_type);
3631 
3632     WHEN OTHERS THEN
3633       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3634 			p_api_name  => l_api_name,
3635 			p_pkg_name  => g_pkg_name,
3636 			p_exc_name  => 'OTHERS',
3637 			x_msg_count => x_msg_count,
3638 			x_msg_data  => x_msg_data,
3639 			p_api_type  => g_api_type);
3640 
3641   END;
3642 */
3643 
3644 -- Start of comments
3645 --
3646 -- Procedure Name  : create_deal
3647 -- Description     : creates a deal based on the information that comes
3648 --	             from the deal creation screen
3649 -- Business Rules  :
3650 -- Parameters      :
3651 -- Version         : 1.0
3652 -- End of comments
3653   PROCEDURE create_deal(
3654     p_api_version                  IN NUMBER,
3655     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3656     x_return_status                OUT NOCOPY VARCHAR2,
3657     x_msg_count                    OUT NOCOPY NUMBER,
3658     x_msg_data                     OUT NOCOPY VARCHAR2,
3659     p_source_code                  IN  VARCHAR2,
3660     p_contract_number              IN  VARCHAR2,
3661     p_scs_code                     IN  VARCHAR2,
3662     p_customer_id1                 IN  VARCHAR2,
3663     p_customer_id2                 IN  VARCHAR2,
3664     p_customer_code                IN  VARCHAR2,
3665     p_org_id                       IN  NUMBER,
3666     p_organization_id              IN  NUMBER,
3667     p_source_chr_id                IN  NUMBER,
3668     x_chr_id                       OUT NOCOPY NUMBER,
3669     --Added by dpsingh for LE Uptake
3670     p_legal_entity_id              IN  NUMBER) AS
3671 
3672     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
3673     l_api_version	CONSTANT NUMBER	  := 1.0;
3674 
3675     CURSOR l_source_crs IS
3676       SELECT template_yn, chr_type
3677       FROM   okc_k_headers_b
3678       WHERE  id = p_source_chr_id;
3679 
3680     CURSOR l_source_k_num_crs IS
3681       SELECT contract_number
3682       FROM   okc_k_headers_b
3683       WHERE  id = p_source_chr_id;
3684 
3685     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
3686     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3687     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3688 
3689   BEGIN
3690 
3691     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
3692 		p_org_id =>  p_org_id,
3693 		p_organization_id	=> p_organization_id);
3694 
3695     x_return_status := OKC_API.START_ACTIVITY(
3696 			p_api_name      => l_api_name,
3697 			p_pkg_name      => g_pkg_name,
3698 			p_init_msg_list => p_init_msg_list,
3699 			l_api_version   => l_api_version,
3700 			p_api_version   => p_api_version,
3701 			p_api_type      => g_api_type,
3702 			x_return_status => x_return_status);
3703 
3704     -- check if activity started successfully
3705     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3706        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3707     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3708        RAISE OKC_API.G_EXCEPTION_ERROR;
3709     END IF;
3710 
3711     IF (p_source_chr_id IS NULL) OR (p_source_chr_id = OKC_API.G_MISS_NUM) THEN
3712       create_new_deal(
3713          p_api_version     => l_api_version,
3714          p_init_msg_list   => p_init_msg_list,
3715          x_return_status   => x_return_status,
3716          x_msg_count       => x_msg_count,
3717          x_msg_data        => x_msg_data,
3718          p_contract_number => p_contract_number,
3719          p_scs_code        => p_scs_code,
3720          p_customer_id1    => p_customer_id1,
3721          p_customer_id2    => p_customer_id2,
3722          p_customer_code   => p_customer_code,
3723          x_chr_id          => x_chr_id,
3724     --Added by dpsingh for LE Uptake
3725          p_legal_entity_id => p_legal_entity_id);
3726     ELSE
3727     -- need to figure out what kind of source do we have
3728 	OPEN l_source_crs;
3729         FETCH l_source_crs INTO l_template_yn, l_chr_type;
3730         CLOSE l_source_crs;
3731 
3732         -- copy from template
3733         IF (upper(p_source_code) = 'TEMPLATE') THEN
3734 
3735           create_from_template(
3736             p_api_version     => l_api_version,
3737             p_init_msg_list   => p_init_msg_list,
3738             x_return_status   => x_return_status,
3739             x_msg_count       => x_msg_count,
3740             x_msg_data        => x_msg_data,
3741             p_contract_number => p_contract_number,
3742             p_source_chr_id   => p_source_chr_id,
3743             x_chr_id          => x_chr_id);
3744 
3745         /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
3746         ELSIF (p_source_code = 'Re-Lease') THEN
3747 
3748           create_from_release(
3749             p_api_version     => l_api_version,
3750             p_init_msg_list   => p_init_msg_list,
3751             x_return_status   => x_return_status,
3752             x_msg_count       => x_msg_count,
3753             x_msg_data        => x_msg_data,
3754             p_contract_number => p_contract_number,
3755             p_source_chr_id   => p_source_chr_id,
3756             x_chr_id          => x_chr_id);
3757         */
3758 
3759         ELSIF (upper(p_source_code) = 'COPY' ) THEN
3760 
3761           create_from_contract(
3762             p_api_version     => l_api_version,
3763             p_init_msg_list   => p_init_msg_list,
3764             x_return_status   => x_return_status,
3765             x_msg_count       => x_msg_count,
3766             x_msg_data        => x_msg_data,
3767             p_contract_number => p_contract_number,
3768             p_source_chr_id   => p_source_chr_id,
3769             x_chr_id          => x_chr_id);
3770 
3771         ELSIF (upper(p_source_code) = 'QUOTE') THEN
3772 
3773           create_from_quote(
3774             p_api_version     => l_api_version,
3775             p_init_msg_list   => p_init_msg_list,
3776             x_return_status   => x_return_status,
3777             x_msg_count       => x_msg_count,
3778             x_msg_data        => x_msg_data,
3779             p_contract_number => p_contract_number,
3780             p_source_chr_id   => p_source_chr_id,
3781             x_chr_id          => x_chr_id);
3782 
3783         END IF;
3784     END IF;
3785 
3786     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3787        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3788     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3789        RAISE OKC_API.G_EXCEPTION_ERROR;
3790     END IF;
3791 
3792     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
3793 			 x_msg_data	=> x_msg_data);
3794   EXCEPTION
3795     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3796       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3797 			p_api_name  => l_api_name,
3798 			p_pkg_name  => g_pkg_name,
3799 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3800 			x_msg_count => x_msg_count,
3801 			x_msg_data  => x_msg_data,
3802 			p_api_type  => g_api_type);
3803 
3804     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3805       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3806 			p_api_name  => l_api_name,
3807 			p_pkg_name  => g_pkg_name,
3808 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3809 			x_msg_count => x_msg_count,
3810 			x_msg_data  => x_msg_data,
3811 			p_api_type  => g_api_type);
3812 
3813     WHEN OTHERS THEN
3814       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3815 			p_api_name  => l_api_name,
3816 			p_pkg_name  => g_pkg_name,
3817 			p_exc_name  => 'OTHERS',
3818 			x_msg_count => x_msg_count,
3819 			x_msg_data  => x_msg_data,
3820 			p_api_type  => g_api_type);
3821   END;
3822 
3823 -- Start of comments
3824 --
3825 -- Procedure Name  : create_deal
3826 -- Description     : creates a deal based on the information that comes
3827 --	             from the deal creation screen
3828 -- Business Rules  :
3829 -- Parameters      :
3830 -- Version         : 1.0
3831 -- End of comments
3832   PROCEDURE create_deal(
3833     p_api_version                  IN NUMBER,
3834     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3835     x_return_status                OUT NOCOPY VARCHAR2,
3836     x_msg_count                    OUT NOCOPY NUMBER,
3837     x_msg_data                     OUT NOCOPY VARCHAR2,
3838     p_source_code                  IN  VARCHAR2,
3839     p_contract_number              IN  VARCHAR2,
3840     p_scs_code                     IN  VARCHAR2,
3841     p_customer_id1                 IN OUT NOCOPY  VARCHAR2,
3842     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
3843     p_customer_code                IN  VARCHAR2,
3844     p_customer_name                IN  VARCHAR2,
3845     p_org_id                       IN  NUMBER,
3846     p_organization_id              IN  NUMBER,
3847     p_source_chr_id                IN OUT NOCOPY  NUMBER,
3848     p_source_contract_number       IN  VARCHAR2,
3849     x_chr_id                       OUT NOCOPY NUMBER,
3850     --Added by dpsingh for LE Uptake
3851     p_legal_entity_id              IN  NUMBER) AS
3852 
3853     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
3854     l_api_version	CONSTANT NUMBER	  := 1.0;
3855 
3856     CURSOR l_source_crs IS
3857       SELECT template_yn, chr_type
3858       FROM   okc_k_headers_b
3859       WHERE  id = p_source_chr_id;
3860 
3861     CURSOR l_source_k_num_crs IS
3862       SELECT contract_number
3863       FROM   okc_k_headers_b
3864       WHERE  id = p_source_chr_id;
3865 
3866     CURSOR l_source_chr_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2, p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2) IS
3867        SELECT CHR.id
3868        FROM okc_k_headers_b CHR
3869        , okc_k_party_roles_b prl
3870        WHERE prl.dnz_chr_id = CHR.id
3871        AND prl.chr_id = CHR.id
3872        AND CHR.scs_code = p_scs_code
3873        AND CHR.chr_type = 'CYA'
3874        AND CHR.template_yn = p_temp_yn
3875        AND prl.rle_code = G_RLE_CODE
3876        AND prl.object1_id1 = p_object1_id1
3877        AND prl.object1_id2 = p_object1_id2
3878        AND prl.jtot_object1_code = p_customer_code
3879        AND CHR.contract_number = p_source_contract_number;
3880 
3881     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
3882     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3883     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3884     l_object_code     VARCHAR2(30) DEFAULT NULL;
3885 
3886     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
3887 
3888   BEGIN
3889 
3890     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
3891 		p_org_id =>  p_org_id,
3892 		p_organization_id	=> p_organization_id);
3893 
3894     x_return_status := OKC_API.START_ACTIVITY(
3895 			p_api_name      => l_api_name,
3896 			p_pkg_name      => g_pkg_name,
3897 			p_init_msg_list => p_init_msg_list,
3898 			l_api_version   => l_api_version,
3899 			p_api_version   => p_api_version,
3900 			p_api_type      => g_api_type,
3901 			x_return_status => x_return_status);
3902 
3903     -- check if activity started successfully
3904     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3905        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3906     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3907        RAISE OKC_API.G_EXCEPTION_ERROR;
3908     END IF;
3909 
3910     IF(p_contract_number IS NULL) THEN
3911 	 x_return_status := OKC_API.g_ret_sts_error;
3912 	 IF p_scs_code = 'LEASE' THEN
3913          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
3914          ELSIF p_scs_code = 'MASTER_LEASE' THEN
3915          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_LA_AGREEMENT_NUMBER');
3916          END IF;
3917 
3918          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
3919 				, p_msg_name => 'OKL_REQUIRED_VALUE'
3920 				, p_token1 => 'COL_NAME'
3921 				, p_token1_value => l_ak_prompt
3922 			   );
3923 	 RAISE OKC_API.G_EXCEPTION_ERROR;
3924     END IF;
3925 
3926     IF(p_customer_name IS NULL) THEN
3927 	 x_return_status := OKC_API.g_ret_sts_error;
3928          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
3929          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
3930 				, p_msg_name => 'OKL_REQUIRED_VALUE'
3931 				, p_token1 => 'COL_NAME'
3932 				, p_token1_value => l_ak_prompt
3933 			   );
3934 	 RAISE OKC_API.G_EXCEPTION_ERROR;
3935     END IF;
3936 
3937     IF(upper(p_source_code) <> 'NEW' AND p_source_contract_number IS NULL) THEN
3938 	 x_return_status := OKC_API.g_ret_sts_error;
3939          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
3940          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
3941 				, p_msg_name => 'OKL_REQUIRED_VALUE'
3942 				, p_token1 => 'COL_NAME'
3943 				, p_token1_value => l_ak_prompt
3944 			   );
3945 	 RAISE OKC_API.G_EXCEPTION_ERROR;
3946     END IF;
3947 
3948     okl_la_validation_util_pvt.Get_Party_Jtot_data (
3949       p_api_version    => p_api_version,
3950       p_init_msg_list  => p_init_msg_list,
3951       x_return_status  => x_return_status,
3952       x_msg_count      => x_msg_count,
3953       x_msg_data       => x_msg_data,
3954       p_scs_code       => p_scs_code,
3955       p_buy_or_sell    => 'S',
3956       p_rle_code       => G_RLE_CODE,
3957       p_id1            => p_customer_id1,
3958       p_id2            => p_customer_id2,
3959       p_name           => p_customer_name,
3960       p_object_code    => l_object_code,
3961       p_ak_region      => 'OKL_LA_DEAL_CREAT',
3962       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
3963       );
3964 
3965     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3966        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3967     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3968        RAISE OKC_API.G_EXCEPTION_ERROR;
3969     END IF;
3970 
3971     IF(upper(p_source_code) <> 'NEW' AND p_source_contract_number IS NOT NULL) THEN
3972 
3973      IF (upper(p_source_code) = 'TEMPLATE') THEN
3974        OPEN l_source_chr_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code);
3975        FETCH l_source_chr_id_crs INTO p_source_chr_id;
3976        CLOSE l_source_chr_id_crs;
3977      ELSIF (upper(p_source_code) = 'QUOTE') THEN
3978        OPEN l_source_chr_id_crs('QUOTE','N',p_customer_id1,p_customer_id2,l_object_code);
3979        FETCH l_source_chr_id_crs INTO p_source_chr_id;
3980        CLOSE l_source_chr_id_crs;
3981      ELSE
3982        OPEN l_source_chr_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code);
3983        FETCH l_source_chr_id_crs INTO p_source_chr_id;
3984        CLOSE l_source_chr_id_crs;
3985      END IF;
3986 
3987      IF(p_source_chr_id IS NULL) THEN
3988    	 x_return_status := OKC_API.g_ret_sts_error;
3989          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
3990          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
3991  				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
3992  				, p_token1 => 'COL_NAME'
3993  				, p_token1_value => l_ak_prompt
3994  			   );
3995  	 RAISE OKC_API.G_EXCEPTION_ERROR;
3996      END IF;
3997 
3998     END IF;
3999 
4000     IF (upper(p_source_code) = 'NEW') THEN
4001 
4002         create_new_deal(
4003          p_api_version     => l_api_version,
4004          p_init_msg_list   => p_init_msg_list,
4005          x_return_status   => x_return_status,
4006          x_msg_count       => x_msg_count,
4007          x_msg_data        => x_msg_data,
4008          p_contract_number => p_contract_number,
4009          p_scs_code        => p_scs_code,
4010          p_customer_id1    => p_customer_id1,
4011          p_customer_id2    => p_customer_id2,
4012          p_customer_code   => l_object_code,
4013          p_customer_name   => p_customer_name,
4014          x_chr_id          => x_chr_id,
4015     --Added by dpsingh for LE Uptake
4016          p_legal_entity_id => p_legal_entity_id);
4017 
4018         -- copy from template
4019     ELSIF (upper(p_source_code) = 'TEMPLATE') THEN
4020 
4021           create_from_template(
4022             p_api_version     => l_api_version,
4023             p_init_msg_list   => p_init_msg_list,
4024             x_return_status   => x_return_status,
4025             x_msg_count       => x_msg_count,
4026             x_msg_data        => x_msg_data,
4027             p_contract_number => p_contract_number,
4028             p_source_chr_id   => p_source_chr_id,
4029             x_chr_id          => x_chr_id);
4030 
4031     /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
4032     ELSIF (p_source_code = 'Re-Lease') THEN
4033 
4034           create_from_release(
4035             p_api_version     => l_api_version,
4036             p_init_msg_list   => p_init_msg_list,
4037             x_return_status   => x_return_status,
4038             x_msg_count       => x_msg_count,
4039             x_msg_data        => x_msg_data,
4040             p_contract_number => p_contract_number,
4041             p_source_chr_id   => p_source_chr_id,
4042             x_chr_id          => x_chr_id);
4043     */
4044 
4045     ELSIF (upper(p_source_code) = 'COPY' ) THEN
4046 
4047           create_from_contract(
4048             p_api_version     => l_api_version,
4049             p_init_msg_list   => p_init_msg_list,
4050             x_return_status   => x_return_status,
4051             x_msg_count       => x_msg_count,
4052             x_msg_data        => x_msg_data,
4053             p_contract_number => p_contract_number,
4054             p_source_chr_id   => p_source_chr_id,
4055             x_chr_id          => x_chr_id);
4056 
4057     ELSIF (upper(p_source_code) = 'QUOTE') THEN
4058 
4059           create_from_quote(
4060             p_api_version     => l_api_version,
4061             p_init_msg_list   => p_init_msg_list,
4062             x_return_status   => x_return_status,
4063             x_msg_count       => x_msg_count,
4064             x_msg_data        => x_msg_data,
4065             p_contract_number => p_contract_number,
4066             p_source_chr_id   => p_source_chr_id,
4067             x_chr_id          => x_chr_id);
4068 
4069     END IF;
4070 
4071     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4072        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4073     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4074        RAISE OKC_API.G_EXCEPTION_ERROR;
4075     END IF;
4076 
4077     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
4078 			 x_msg_data	=> x_msg_data);
4079   EXCEPTION
4080     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4081       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4082 			p_api_name  => l_api_name,
4083 			p_pkg_name  => g_pkg_name,
4084 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
4085 			x_msg_count => x_msg_count,
4086 			x_msg_data  => x_msg_data,
4087 			p_api_type  => g_api_type);
4088 
4089     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4090       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4091 			p_api_name  => l_api_name,
4092 			p_pkg_name  => g_pkg_name,
4093 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
4094 			x_msg_count => x_msg_count,
4095 			x_msg_data  => x_msg_data,
4096 			p_api_type  => g_api_type);
4097 
4098     WHEN OTHERS THEN
4099       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4100 			p_api_name  => l_api_name,
4101 			p_pkg_name  => g_pkg_name,
4102 			p_exc_name  => 'OTHERS',
4103 			x_msg_count => x_msg_count,
4104 			x_msg_data  => x_msg_data,
4105 			p_api_type  => g_api_type);
4106   END;
4107 
4108 -- Start of comments
4109 --
4110 -- Procedure Name  : create_deal
4111 -- Description     : creates a deal based on the information that comes
4112 --	             from the deal creation screen
4113 -- Business Rules  :
4114 -- Parameters      :
4115 -- Version         : 1.0
4116 -- End of comments
4117   PROCEDURE create_deal(
4118     p_api_version                  IN NUMBER,
4119     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4120     x_return_status                OUT NOCOPY VARCHAR2,
4121     x_msg_count                    OUT NOCOPY NUMBER,
4122     x_msg_data                     OUT NOCOPY VARCHAR2,
4123     p_source_code                  IN  VARCHAR2,
4124     p_template_yn                  IN  VARCHAR2,
4125     p_contract_number              IN  VARCHAR2,
4126     p_scs_code                     IN  VARCHAR2,
4127     p_customer_id1                 IN OUT NOCOPY  VARCHAR2,
4128     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
4129     p_customer_code                IN  VARCHAR2,
4130     p_customer_name                IN  VARCHAR2,
4131     p_org_id                       IN  NUMBER,
4132     p_organization_id              IN  NUMBER,
4133     p_source_chr_id                IN OUT NOCOPY  NUMBER,
4134     p_source_contract_number       IN  VARCHAR2,
4135     x_chr_id                       OUT NOCOPY NUMBER,
4136     --Added by dpsingh for LE Uptake
4137     p_legal_entity_id              IN  NUMBER) AS
4138 
4139     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
4140     l_api_version	CONSTANT NUMBER	  := 1.0;
4141 
4142     CURSOR l_source_crs IS
4143       SELECT template_yn, chr_type
4144       FROM   okc_k_headers_b
4145       WHERE  id = p_source_chr_id;
4146 
4147     CURSOR l_source_k_num_crs IS
4148       SELECT contract_number
4149       FROM   okc_k_headers_b
4150       WHERE  id = p_source_chr_id;
4151 
4152     CURSOR l_source_chr_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2, p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2) IS
4153        SELECT CHR.id
4154        FROM okc_k_headers_b CHR
4155        , okc_k_party_roles_b prl
4156        WHERE prl.dnz_chr_id = CHR.id
4157        AND prl.chr_id = CHR.id
4158        AND CHR.scs_code = p_scs_code
4159        AND CHR.chr_type = 'CYA'
4160        AND CHR.template_yn = p_temp_yn
4161        AND prl.rle_code = G_RLE_CODE
4162        AND prl.object1_id1 = p_object1_id1
4163        AND prl.object1_id2 = p_object1_id2
4164        AND prl.jtot_object1_code = p_customer_code
4165        AND CHR.contract_number = p_source_contract_number;
4166 
4167     CURSOR l_src_chr_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2) IS
4168        SELECT CHR.id
4169        FROM okc_k_headers_b CHR
4170        WHERE CHR.scs_code = p_scs_code
4171        AND CHR.chr_type = 'CYA'
4172        AND CHR.template_yn = p_temp_yn
4173        AND CHR.contract_number = p_source_contract_number;
4174 
4175     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
4176     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4177     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4178     l_object_code        VARCHAR2(30) DEFAULT NULL;
4179     l_chr_id             OKC_K_HEADERS_B.ID%TYPE;
4180 
4181     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
4182 
4183     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4184     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4185     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4186     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4187 
4188     /*
4189     -- mvasudev, 08/17/2004
4190     -- Added PROCEDURE to enable Business Event
4191     */
4192 	PROCEDURE raise_business_event(
4193     	p_chr_id IN NUMBER
4194 	   ,x_return_status OUT NOCOPY VARCHAR2
4195     )
4196 	IS
4197 	  l_check VARCHAR2(1);
4198       l_parameter_list           wf_parameter_list_t;
4199 	BEGIN
4200 
4201     x_return_status := Okc_Api.G_RET_STS_SUCCESS;
4202 	  -- Raise the event if it is a new Contract
4203 	  --l_check := Okl_Lla_Util_Pvt.check_new_contract(p_chr_id);
4204       --IF (l_check= OKL_API.G_TRUE) THEN
4205 	  IF (upper(p_source_code) = 'NEW') THEN
4206   		 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
4207 
4208          OKL_WF_PVT.raise_event (p_api_version    => p_api_version,
4209                                  p_init_msg_list  => p_init_msg_list,
4210 								 x_return_status  => x_return_status,
4211 								 x_msg_count      => x_msg_count,
4212 								 x_msg_data       => x_msg_data,
4213 								 p_event_name     => G_WF_EVT_KHR_CREATED,
4214 								 p_parameters     => l_parameter_list);
4215 
4216 	  END IF;
4217 
4218      EXCEPTION
4219      WHEN OTHERS THEN
4220        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4221        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4222      END raise_business_event;
4223 
4224 
4225     /*
4226     -- mvasudev, 08/17/2004
4227     -- END, PROCEDURE to enable Business Event
4228     */
4229 
4230 
4231   BEGIN
4232 
4233     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
4234 		p_org_id =>  p_org_id,
4235 		p_organization_id	=> p_organization_id);
4236 
4237     x_return_status := OKC_API.START_ACTIVITY(
4238 			p_api_name      => l_api_name,
4239 			p_pkg_name      => g_pkg_name,
4240 			p_init_msg_list => p_init_msg_list,
4241 			l_api_version   => l_api_version,
4242 			p_api_version   => p_api_version,
4243 			p_api_type      => g_api_type,
4244 			x_return_status => x_return_status);
4245 
4246     -- check if activity started successfully
4247     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4248        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4249     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4250        RAISE OKC_API.G_EXCEPTION_ERROR;
4251     END IF;
4252 /*
4253     If(p_contract_number is null) Then
4254 	 x_return_status := OKC_API.g_ret_sts_error;
4255 	 If p_scs_code = 'LEASE' Then
4256          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
4257          elsIf p_scs_code = 'MASTER_LEASE' Then
4258          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_LA_AGREEMENT_NUMBER');
4259          End If;
4260 
4261          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4262 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4263 				, p_token1 => 'COL_NAME'
4264 				, p_token1_value => l_ak_prompt
4265 			   );
4266 	 raise OKC_API.G_EXCEPTION_ERROR;
4267     End If;
4268 */
4269 
4270     IF(p_customer_name IS NULL) THEN
4271      IF p_scs_code = 'MASTER_LEASE' THEN
4272 	 x_return_status := OKC_API.g_ret_sts_error;
4273          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
4274          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4275 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4276 				, p_token1 => 'COL_NAME'
4277 				, p_token1_value => l_ak_prompt
4278 			   );
4279 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4280      END IF;
4281     END IF;
4282 
4283     IF(upper(p_source_code) <> 'NEW' AND p_source_contract_number IS NULL) THEN
4284 	 x_return_status := OKC_API.g_ret_sts_error;
4285          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
4286          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4287 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4288 				, p_token1 => 'COL_NAME'
4289 				, p_token1_value => l_ak_prompt
4290 			   );
4291 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4292     END IF;
4293 
4294    IF(p_customer_name IS NOT NULL) THEN
4295 
4296     okl_la_validation_util_pvt.Get_Party_Jtot_data (
4297       p_api_version    => p_api_version,
4298       p_init_msg_list  => p_init_msg_list,
4299       x_return_status  => x_return_status,
4300       x_msg_count      => x_msg_count,
4301       x_msg_data       => x_msg_data,
4302       p_scs_code       => p_scs_code,
4303       p_buy_or_sell    => 'S',
4304       p_rle_code       => G_RLE_CODE,
4305       p_id1            => p_customer_id1,
4306       p_id2            => p_customer_id2,
4307       p_name           => p_customer_name,
4308       p_object_code    => l_object_code,
4309       p_ak_region      => 'OKL_LA_DEAL_CREAT',
4310       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
4311       );
4312 
4313     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4314        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4315     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4316        RAISE OKC_API.G_EXCEPTION_ERROR;
4317     END IF;
4318 
4319    END IF;
4320 
4321     IF(upper(p_source_code) <> 'NEW' AND p_source_contract_number IS NOT NULL) THEN
4322 
4323     IF(p_customer_name IS NULL) THEN
4324 
4325       IF (upper(p_source_code) = 'TEMPLATE') THEN
4326        OPEN l_src_chr_id_crs(p_scs_code,'Y');
4327        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4328        CLOSE l_src_chr_id_crs;
4329       ELSIF (upper(p_source_code) = 'QUOTE') THEN
4330        OPEN l_src_chr_id_crs('QUOTE','N');
4331        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4332        CLOSE l_src_chr_id_crs;
4333       ELSE
4334        OPEN l_src_chr_id_crs(p_scs_code,'N');
4335        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4336        CLOSE l_src_chr_id_crs;
4337      END IF;
4338 
4339     ELSE
4340 
4341       IF (upper(p_source_code) = 'TEMPLATE') THEN
4342        OPEN l_source_chr_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code);
4343        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4344        CLOSE l_source_chr_id_crs;
4345       ELSIF (upper(p_source_code) = 'QUOTE') THEN
4346        OPEN l_source_chr_id_crs('QUOTE','N',p_customer_id1,p_customer_id2,l_object_code);
4347        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4348        CLOSE l_source_chr_id_crs;
4349       ELSE
4350        OPEN l_source_chr_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code);
4351        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4352        CLOSE l_source_chr_id_crs;
4353      END IF;
4354 
4355     END IF;
4356 
4357      IF(p_source_chr_id IS NULL) THEN
4358    	 x_return_status := OKC_API.g_ret_sts_error;
4359          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
4360          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4361  				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
4362  				, p_token1 => 'COL_NAME'
4363  				, p_token1_value => l_ak_prompt
4364  			   );
4365  	 RAISE OKC_API.G_EXCEPTION_ERROR;
4366      END IF;
4367 
4368     END IF;
4369 
4370     IF (upper(p_source_code) = 'NEW') THEN
4371 /*
4372         create_new_deal(
4373          p_api_version     => l_api_version,
4374          p_init_msg_list   => p_init_msg_list,
4375          x_return_status   => x_return_status,
4376          x_msg_count       => x_msg_count,
4377          x_msg_data        => x_msg_data,
4378          p_contract_number => p_contract_number,
4379          p_scs_code        => p_scs_code,
4380          p_customer_id1    => p_customer_id1,
4381          p_customer_id2    => p_customer_id2,
4382          p_customer_code   => l_object_code,
4383          p_customer_name   => p_customer_name,
4384          p_template_yn     => p_template_yn,
4385          x_chr_id          => x_chr_id);
4386 
4387        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4388           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4389        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4390           RAISE OKC_API.G_EXCEPTION_ERROR;
4391        END IF;
4392 */
4393        l_chr_id := x_chr_id;
4394 
4395        IF okl_context.get_okc_org_id  IS NULL THEN
4396 		okl_context.set_okc_org_context(p_chr_id => l_chr_id );
4397        END IF;
4398 
4399        -- bug 4227922  property tax options defaulting onto contract
4400        IF ( p_scs_code = 'LEASE') THEN
4401 
4402        OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
4403          p_api_version     => l_api_version,
4404          p_init_msg_list   => p_init_msg_list,
4405          x_return_status   => x_return_status,
4406          x_msg_count       => x_msg_count,
4407          x_msg_data        => x_msg_data,
4408          p_chr_id          => l_chr_id);
4409 
4410        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4411           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4412        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4413           RAISE OKC_API.G_EXCEPTION_ERROR;
4414        END IF;
4415 
4416        END IF;
4417 
4418         -- copy from template
4419     ELSIF (upper(p_source_code) = 'TEMPLATE') THEN
4420 
4421           create_from_template(
4422             p_api_version     => l_api_version,
4423             p_init_msg_list   => p_init_msg_list,
4424             x_return_status   => x_return_status,
4425             x_msg_count       => x_msg_count,
4426             x_msg_data        => x_msg_data,
4427             p_contract_number => p_contract_number,
4428             p_source_chr_id   => p_source_chr_id,
4429             x_chr_id          => x_chr_id);
4430 
4431     /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
4432     ELSIF (p_source_code = 'Re-Lease') THEN
4433 
4434           create_from_release(
4435             p_api_version     => l_api_version,
4436             p_init_msg_list   => p_init_msg_list,
4437             x_return_status   => x_return_status,
4438             x_msg_count       => x_msg_count,
4439             x_msg_data        => x_msg_data,
4440             p_contract_number => p_contract_number,
4441             p_source_chr_id   => p_source_chr_id,
4442             x_chr_id          => x_chr_id);
4443     */
4444 
4445     ELSIF (upper(p_source_code) = 'COPY' ) THEN
4446 
4447           create_from_contract(
4448             p_api_version     => l_api_version,
4449             p_init_msg_list   => p_init_msg_list,
4450             x_return_status   => x_return_status,
4451             x_msg_count       => x_msg_count,
4452             x_msg_data        => x_msg_data,
4453             p_contract_number => p_contract_number,
4454             p_source_chr_id   => p_source_chr_id,
4455             x_chr_id          => x_chr_id);
4456 
4457     ELSIF (upper(p_source_code) = 'QUOTE') THEN
4458 
4459           create_from_quote(
4460             p_api_version     => l_api_version,
4461             p_init_msg_list   => p_init_msg_list,
4462             x_return_status   => x_return_status,
4463             x_msg_count       => x_msg_count,
4464             x_msg_data        => x_msg_data,
4465             p_contract_number => p_contract_number,
4466             p_source_chr_id   => p_source_chr_id,
4467             x_chr_id          => x_chr_id);
4468 
4469     END IF;
4470 
4471     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4472        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4473     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4474        RAISE OKC_API.G_EXCEPTION_ERROR;
4475     END IF;
4476 
4477 
4478 -- update contract header for template_yn
4479    IF ( p_template_yn = 'Y' AND ( upper(p_source_code) = 'QUOTE' OR upper(p_source_code) = 'COPY' OR upper(p_source_code) = 'RE-LEASE'
4480       OR upper(p_source_code) = 'TEMPLATE' )) THEN
4481 
4482     lp_chrv_rec.id := x_chr_id;
4483     lp_khrv_rec.id := x_chr_id;
4484     lp_chrv_rec.template_yn := 'Y';
4485 
4486     OKL_CONTRACT_PUB.update_contract_header(
4487       p_api_version    => p_api_version,
4488       p_init_msg_list  => p_init_msg_list,
4489       x_return_status  => x_return_status,
4490       x_msg_count      => x_msg_count,
4491       x_msg_data       => x_msg_data,
4492       p_chrv_rec       => lp_chrv_rec,
4493       p_khrv_rec       => lp_khrv_rec,
4494       x_chrv_rec       => lx_chrv_rec,
4495       x_khrv_rec       => lx_khrv_rec);
4496 
4497     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4498        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4499     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4500        RAISE OKC_API.G_EXCEPTION_ERROR;
4501     END IF;
4502 
4503    END IF;
4504 
4505    /*
4506    -- mvasudev, 08/17/2004
4507    -- Code change to enable Business Event
4508    */
4509 	raise_business_event(p_chr_id        => x_chr_id
4510 	                    ,x_return_status => x_return_status);
4511     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4512        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4513     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4514        RAISE OKL_API.G_EXCEPTION_ERROR;
4515     END IF;
4516 
4517    /*
4518    -- mvasudev, 08/17/2004
4519    -- END, Code change to enable Business Event
4520    */
4521 
4522    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
4523 			 x_msg_data	=> x_msg_data);
4524   EXCEPTION
4525     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4526       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4527 			p_api_name  => l_api_name,
4528 			p_pkg_name  => g_pkg_name,
4529 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
4530 			x_msg_count => x_msg_count,
4531 			x_msg_data  => x_msg_data,
4532 			p_api_type  => g_api_type);
4533 
4534     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4535       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4536 			p_api_name  => l_api_name,
4537 			p_pkg_name  => g_pkg_name,
4538 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
4539 			x_msg_count => x_msg_count,
4540 			x_msg_data  => x_msg_data,
4541 			p_api_type  => g_api_type);
4542 
4543     WHEN OTHERS THEN
4544       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4545 			p_api_name  => l_api_name,
4546 			p_pkg_name  => g_pkg_name,
4547 			p_exc_name  => 'OTHERS',
4548 			x_msg_count => x_msg_count,
4549 			x_msg_data  => x_msg_data,
4550 			p_api_type  => g_api_type);
4551   END;
4552 
4553 
4554 
4555 -- Start of comments
4556 --
4557 -- Procedure Name  : create_deal
4558 -- Description     : creates a deal based on the information that comes
4559 --	             from the deal creation screen
4560 -- Business Rules  :
4561 -- Parameters      :
4562 -- Version         : 1.0
4563 -- End of comments
4564   PROCEDURE create_deal(
4565     p_api_version                  IN NUMBER,
4566     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4567     x_return_status                OUT NOCOPY VARCHAR2,
4568     x_msg_count                    OUT NOCOPY NUMBER,
4569     x_msg_data                     OUT NOCOPY VARCHAR2,
4570     p_source_code                  IN  VARCHAR2,
4571     p_template_type                IN  VARCHAR2,
4572     p_contract_number              IN  VARCHAR2,
4573     p_scs_code                     IN  VARCHAR2,
4574     p_customer_id1                 IN OUT NOCOPY  VARCHAR2,
4575     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
4576     p_customer_code                IN  VARCHAR2,
4577     p_customer_name                IN  VARCHAR2,
4578     p_effective_from               IN  DATE,
4579     p_program_name                 IN  VARCHAR2,
4580     p_program_id                   IN  NUMBER,
4581     p_org_id                       IN  NUMBER,
4582     p_organization_id              IN  NUMBER,
4583     p_source_chr_id                IN OUT NOCOPY  NUMBER,
4584     p_source_contract_number       IN  VARCHAR2,
4585     x_chr_id                       OUT NOCOPY NUMBER,
4586     --Added by dpsingh for LE Uptake
4587     p_legal_entity_id              IN  NUMBER) AS
4588 
4589     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
4590     l_api_version	CONSTANT NUMBER	  := 1.0;
4591     l_program_id	NUMBER;
4592 
4593     CURSOR l_source_crs IS
4594       SELECT template_yn, chr_type
4595       FROM   okc_k_headers_b
4596       WHERE  id = p_source_chr_id;
4597 
4598     CURSOR l_source_k_num_crs IS
4599       SELECT contract_number
4600       FROM   okc_k_headers_b
4601       WHERE  id = p_source_chr_id;
4602 
4603     -- cursor when only customer is selected
4604     CURSOR l_source_chr_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2, p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2) IS
4605        SELECT CHR.id
4606        FROM okc_k_headers_b CHR
4607        , okc_k_party_roles_b prl
4608        WHERE prl.dnz_chr_id = CHR.id
4609        AND prl.chr_id = CHR.id
4610        AND CHR.scs_code = p_scs_code
4611        AND CHR.chr_type = 'CYA'
4612        AND NVL(chr.template_yn,'N') = p_temp_yn
4613        AND prl.rle_code = G_RLE_CODE
4614        AND prl.object1_id1 = p_object1_id1
4615        AND prl.object1_id2 = p_object1_id2
4616        AND prl.jtot_object1_code = p_customer_code
4617        AND CHR.contract_number = p_source_contract_number;
4618 
4619     -- cursor when only customer is selected
4620 
4621     CURSOR l_leaseAppTmpl1_crs(p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2) IS
4622        SELECT CHR.id
4623        FROM okl_k_headers_full_v CHR
4624           , okc_k_party_roles_b prl
4625        WHERE prl.dnz_chr_id = CHR.id
4626        AND prl.chr_id = CHR.id
4627        AND CHR.scs_code = 'LEASE'
4628        AND CHR.chr_type = 'CYA'
4629        AND NVL(chr.template_yn,'N') = 'Y'
4630        AND prl.rle_code = G_RLE_CODE
4631        AND prl.object1_id1 = p_object1_id1
4632        AND prl.object1_id2 = p_object1_id2
4633        AND prl.jtot_object1_code = p_customer_code
4634        AND NVL(CHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4635        AND CHR.contract_number = p_source_contract_number;
4636 
4637     -- cursor when only customer and program is selected
4638     CURSOR l_source_chr_prog_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2, p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2, l_prog_id NUMBER) IS
4639        SELECT CHR.id
4640        FROM okc_k_headers_b CHR,
4641             okl_k_headers khr
4642           , okc_k_party_roles_b prl
4643        WHERE chr.id = khr.id
4644        AND prl.dnz_chr_id = CHR.id
4645        AND prl.chr_id = CHR.id
4646        AND CHR.scs_code = p_scs_code
4647        AND CHR.chr_type = 'CYA'
4648        AND NVL(CHR.template_yn,'N') = p_temp_yn
4649        AND prl.rle_code = G_RLE_CODE
4650        AND prl.object1_id1 = p_object1_id1
4651        AND prl.object1_id2 = p_object1_id2
4652        AND prl.jtot_object1_code = p_customer_code
4653        AND CHR.contract_number = p_source_contract_number
4654        AND exists( select 1 from okl_vp_associations vpaso
4655                    where vpaso.chr_id = l_prog_id);
4656 
4657     -- cursor when only customer and program is selected
4658     CURSOR l_leaseAppTmpl2_crs(p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2, l_prog_id NUMBER) IS
4659        SELECT CHR.id
4660        FROM okc_k_headers_b CHR,
4661             okl_k_headers khr
4662           , okc_k_party_roles_b prl
4663        WHERE chr.id = khr.id
4664        AND prl.dnz_chr_id = CHR.id
4665        AND prl.chr_id = CHR.id
4666        AND CHR.scs_code = 'LEASE'
4667        AND CHR.chr_type = 'CYA'
4668        AND NVL(CHR.template_yn,'N') = 'Y'
4669        AND prl.rle_code = G_RLE_CODE
4670        AND prl.object1_id1 = p_object1_id1
4671        AND prl.object1_id2 = p_object1_id2
4672        AND prl.jtot_object1_code = p_customer_code
4673        AND CHR.contract_number = p_source_contract_number
4674        AND NVL(KHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4675        AND khr_id = l_prog_id;
4676 
4677     -- cursor when only program is selected
4678     CURSOR l_source_prog_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2, l_prog_id NUMBER) IS
4679        SELECT CHR.id
4680        FROM okc_k_headers_b CHR,
4681             okl_k_headers khr
4682        WHERE chr.id = khr.id
4683        AND CHR.scs_code = p_scs_code
4684        AND CHR.chr_type = 'CYA'
4685        AND NVL(CHR.template_yn,'N') = p_temp_yn
4686        AND CHR.contract_number = p_source_contract_number
4687        AND exists( select 1 from okl_vp_associations vpaso
4688                    where vpaso.chr_id = l_prog_id);
4689 
4690     -- cursor when only program is selected
4691     CURSOR l_leaseAppTmpl3_crs(l_prog_id NUMBER) IS
4692        SELECT CHR.id
4693        FROM okc_k_headers_b CHR,
4694             okl_k_headers khr
4695        WHERE chr.id = khr.id
4696        AND CHR.scs_code = 'LEASE'
4697        AND CHR.chr_type = 'CYA'
4698        AND NVL(CHR.template_yn,'N') = 'Y'
4699        AND CHR.contract_number = p_source_contract_number
4700        AND NVL(KHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4701        AND khr_id = l_prog_id;
4702 
4703     CURSOR l_src_chr_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2) IS
4704        SELECT CHR.id
4705        FROM okc_k_headers_b CHR
4706        WHERE CHR.scs_code = p_scs_code
4707        AND CHR.chr_type = 'CYA'
4708        AND CHR.template_yn = p_temp_yn
4709        AND CHR.contract_number = p_source_contract_number;
4710 
4711     CURSOR l_leaseAppTmpl_crs IS
4712        SELECT CHR.id
4713        FROM okl_k_headers_full_v CHR
4714        WHERE CHR.scs_code = 'LEASE'
4715        AND CHR.chr_type = 'CYA'
4716        AND nvl(CHR.template_yn,'N') = 'Y'
4717        AND NVL(CHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4718        AND CHR.contract_number = p_source_contract_number;
4719 
4720     CURSOR l_program_csr IS
4721        SELECT chr.id
4722        FROM okl_k_headers_full_v chr
4723        WHERE chr.scs_code = 'PROGRAM'
4724        AND nvl(chr.template_yn, 'N') = 'N'
4725        AND chr.sts_code = 'ACTIVE'
4726        AND chr.authoring_org_id = p_org_id
4727        AND NVL(chr.start_date,p_effective_from) <= p_effective_from
4728        AND NVL(chr.end_date,p_effective_from) >= p_effective_from
4729        AND chr.contract_number = p_program_name;
4730 
4731     CURSOR l_progAgrmntTemp_crs(p_prog_id NUMBER) IS
4732        SELECT CHR.id
4733        FROM okl_k_headers_full_v CHR
4734        WHERE CHR.scs_code = p_scs_code
4735        AND CHR.chr_type = 'CYA'
4736        AND nvl(chr.template_yn,'N') = 'Y'
4737        AND NVL(chr.template_type_code,'XXX') = OKL_TEMP_TYPE_PROGRAM
4738        AND CHR.contract_number = p_source_contract_number;
4739        /*
4740        AND exists( select 1
4741                    from okl_vp_associations vpaso
4742                    where vpaso.chr_id = p_prog_id
4743                    and vpaso.assoc_object_type_code = 'LC_TEMPLATE'
4744                    and NVL(vpaso.start_date,p_effective_from) <= p_effective_from
4745                    and NVL(vpaso.end_date,p_effective_from) >= p_effective_from);
4746                    */
4747 
4748     CURSOR l_progAgrmntTemp1_crs IS
4749        SELECT CHR.id
4750        FROM okl_k_headers_full_v CHR
4751        WHERE CHR.scs_code = p_scs_code
4752        AND CHR.chr_type = 'CYA'
4753        AND nvl(chr.template_yn,'N') = 'Y'
4754        AND NVL(chr.template_type_code,'XXX') = OKL_TEMP_TYPE_PROGRAM
4755        AND CHR.contract_number = p_source_contract_number;
4756 
4757     CURSOR l_quote_crs(p_auth_org_id NUMBER, p_inv_org_id NUMBER, p_quote_number VARCHAR2) IS
4758 	SELECT
4759 	 LSQ.ID QUOTE_ID
4760 --	 ,LSQ.REFERENCE_NUMBER QUOTE_NUMBER
4761 --	,LSQT.SHORT_DESCRIPTION QUOTE_DESCRIPTION
4762 	FROM
4763 	 OKL_LEASE_QUOTES_B LSQ
4764 	,OKL_LEASE_QUOTES_TL LSQT
4765 	,OKL_LEASE_OPPORTUNITIES_B LOP
4766 	WHERE  LOP.ORG_ID = p_auth_org_id
4767 	AND LOP.INV_ORG_ID = p_inv_org_id
4768 	AND LSQ.PARENT_OBJECT_CODE = 'LEASEOPP'
4769 	AND LOP.ID = LSQ.PARENT_OBJECT_ID
4770 	AND LSQ.ID = LSQT.ID
4771 	AND LSQT.LANGUAGE = USERENV('LANG')
4772 	AND LSQ.STATUS = 'CT-ACCEPTED'
4773 	AND LSQ.REFERENCE_NUMBER = p_quote_number
4774 	AND NOT EXISTS (SELECT 1
4775 	                FROM OKL_LEASE_APPLICATIONS_B
4776 	                WHERE LEASE_OPPORTUNITY_ID = LOP.ID
4777 	                AND APPLICATION_STATUS <> 'WITHDRAWN')
4778 	AND NOT EXISTS (SELECT 1
4779 	                FROM OKC_K_HEADERS_B
4780 	                WHERE ORIG_SYSTEM_SOURCE_CODE = 'OKL_QUOTE'
4781 	                AND ORIG_SYSTEM_ID1 = LSQ.ID
4782 	                AND STS_CODE <> 'ABANDONED');
4783 
4784 
4785     CURSOR l_leaseapp_crs(p_auth_org_id NUMBER, p_inv_org_id NUMBER, p_leaseapp_number VARCHAR2) IS
4786 	SELECT
4787 	 LAP.ID LEASEAPP_ID
4788 	--,LAP.REFERENCE_NUMBER LEASEAPP_NUMBER
4789 	--,LAPT.SHORT_DESCRIPTION LEASEAPP_DESCRIPTION
4790 	FROM
4791 	 OKL_LEASE_APPLICATIONS_B LAP
4792 	,OKL_LEASE_APPLICATIONS_TL LAPT
4793 	WHERE
4794 	    LAP.ORG_ID = p_auth_org_id
4795 	AND LAP.INV_ORG_ID = p_inv_org_id
4796 	AND LAP.ID = LAPT.ID
4797 	AND LAPT.LANGUAGE = USERENV('LANG')
4798 	AND LAP.APPLICATION_STATUS = 'CR-APPROVED'
4799 	AND LAP.REFERENCE_NUMBER = p_leaseapp_number
4800 	AND NOT EXISTS (SELECT 1
4801 	                FROM OKC_K_HEADERS_B
4802 	                WHERE ORIG_SYSTEM_SOURCE_CODE = 'OKL_LEASE_APP'
4803 	                AND ORIG_SYSTEM_ID1 = LAP.ID
4804 	                AND STS_CODE <> 'ABANDONED')
4805 	AND NOT EXISTS (SELECT 1
4806 			FROM OKL_LEASE_APPLICATIONS_B
4807 			WHERE PARENT_LEASEAPP_ID = LAP.ID
4808 			AND APPLICATION_STATUS NOT IN ('WITHDRAWN' , 'CR-REJECTED'));
4809 
4810     l_template_type      OKL_K_HEADERS.TEMPLATE_TYPE_CODE%TYPE;
4811     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
4812     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4813     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4814     l_object_code        VARCHAR2(30) DEFAULT NULL;
4815     l_chr_id             OKC_K_HEADERS_B.ID%TYPE;
4816 
4817     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
4818 
4819     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4820     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4821     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4822     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4823     p_kpl_rec   OKL_DEAL_CREAT_PVT.party_rec_type;
4824     x_kpl_rec   OKL_DEAL_CREAT_PVT.party_rec_type;
4825     lp_org_id NUMBER;
4826 
4827     CURSOR c_tax_schedule_yn IS
4828     SELECT tax_schedule_yn
4829     FROM   okl_system_params;
4830 
4831     CURSOR c_rule_group(p_chr_id NUMBER, p_rgd_code VARCHAR2) IS
4832     SELECT id,rgd_code
4833     FROM okc_rule_groups_b
4834     WHERE dnz_chr_id = p_chr_id
4835     AND   rgd_code = p_rgd_code;
4836 
4837     CURSOR c_orig_system_source(p_chr_id NUMBER) IS
4838     SELECT orig_system_source_code
4839     FROM   okc_k_headers_all_b
4840     WHERE  id = p_chr_id;
4841 
4842     l_tax_schedule_yn VARCHAR2(1);
4843     lp_lahdtx_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
4844     lx_lahdtx_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
4845     lp_lahdtx_rulv_rec Okl_Rule_Pub.rulv_rec_type;
4846     lx_lahdtx_rulv_rec Okl_Rule_Pub.rulv_rec_type;
4847     l_rgp_id                  NUMBER;
4848     l_rgd_code                VARCHAR2(30);
4849     l_orig_system_source_code VARCHAR2(30);
4850 
4851     /*
4852     -- mvasudev, 08/17/2004
4853     -- Added PROCEDURE to enable Business Event
4854     */
4855 	PROCEDURE raise_business_event(
4856     	p_chr_id IN NUMBER
4857 	   ,x_return_status OUT NOCOPY VARCHAR2
4858     )
4859 	IS
4860 	  l_check VARCHAR2(1);
4861       l_parameter_list           wf_parameter_list_t;
4862 	BEGIN
4863 
4864     x_return_status := Okc_Api.G_RET_STS_SUCCESS;
4865 	  -- Raise the event if it is a new Contract
4866 	  --l_check := Okl_Lla_Util_Pvt.check_new_contract(p_chr_id);
4867       --IF (l_check= OKL_API.G_TRUE) THEN
4868 	  IF (upper(p_source_code) = 'NEW') THEN
4869   		 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
4870 
4871          OKL_WF_PVT.raise_event (p_api_version    => p_api_version,
4872                                  p_init_msg_list  => p_init_msg_list,
4873 								 x_return_status  => x_return_status,
4874 								 x_msg_count      => x_msg_count,
4875 								 x_msg_data       => x_msg_data,
4876 								 p_event_name     => G_WF_EVT_KHR_CREATED,
4877 								 p_parameters     => l_parameter_list);
4878 
4879 	  END IF;
4880 
4881      EXCEPTION
4882      WHEN OTHERS THEN
4883        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4884        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4885      END raise_business_event;
4886 
4887 
4888     /*
4889     -- mvasudev, 08/17/2004
4890     -- END, PROCEDURE to enable Business Event
4891     */
4892 
4893 
4894   BEGIN
4895 
4896   lp_org_id := p_org_id;
4897 
4898     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
4899 		p_org_id =>  lp_org_id,
4900 		p_organization_id	=> p_organization_id);
4901 
4902     x_return_status := OKC_API.START_ACTIVITY(
4903 			p_api_name      => l_api_name,
4904 			p_pkg_name      => g_pkg_name,
4905 			p_init_msg_list => p_init_msg_list,
4906 			l_api_version   => l_api_version,
4907 			p_api_version   => p_api_version,
4908 			p_api_type      => g_api_type,
4909 			x_return_status => x_return_status);
4910 
4911     -- check if activity started successfully
4912     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4913        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4914     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4915        RAISE OKC_API.G_EXCEPTION_ERROR;
4916     END IF;
4917 
4918     IF(p_customer_name IS NULL) THEN
4919      IF p_scs_code = 'MASTER_LEASE' THEN
4920 	 x_return_status := OKC_API.g_ret_sts_error;
4921          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
4922          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4923 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4924 				, p_token1 => 'COL_NAME'
4925 				, p_token1_value => l_ak_prompt
4926 			   );
4927 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4928      END IF;
4929     END IF;
4930 
4931     IF(p_program_name IS NOT NULL AND p_scs_code <> 'MASTER_LEASE' ) THEN
4932          l_program_id := null;
4933          open l_program_csr;
4934          fetch l_program_csr into l_program_id;
4935          close l_program_csr;
4936 
4937          IF( l_program_id IS NULL ) THEN
4938 
4939 	   x_return_status := OKC_API.g_ret_sts_error;
4940            l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_PROGRAM');
4941            OKC_API.SET_MESSAGE(   p_app_name => g_app_name
4942 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
4943 				, p_token1 => 'COL_NAME'
4944 				, p_token1_value => l_ak_prompt
4945 			   );
4946 	   RAISE OKC_API.G_EXCEPTION_ERROR;
4947 
4948 	 END IF;
4949     END IF;
4950 
4951     IF(upper(p_source_code) <> 'NEW' AND p_source_contract_number IS NULL) THEN
4952 	 x_return_status := OKC_API.g_ret_sts_error;
4953          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
4954          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
4955 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4956 				, p_token1 => 'COL_NAME'
4957 				, p_token1_value => l_ak_prompt
4958 			   );
4959 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4960     END IF;
4961 
4962    IF(p_customer_name IS NOT NULL) THEN
4963 
4964     okl_la_validation_util_pvt.Get_Party_Jtot_data (
4965       p_api_version    => p_api_version,
4966       p_init_msg_list  => p_init_msg_list,
4967       x_return_status  => x_return_status,
4968       x_msg_count      => x_msg_count,
4969       x_msg_data       => x_msg_data,
4970       p_scs_code       => p_scs_code,
4971       p_buy_or_sell    => 'S',
4972       p_rle_code       => G_RLE_CODE,
4973       p_id1            => p_customer_id1,
4974       p_id2            => p_customer_id2,
4975       p_name           => p_customer_name,
4976       p_object_code    => l_object_code,
4977       p_ak_region      => 'OKL_LA_DEAL_CREAT',
4978       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
4979       );
4980 
4981     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4982        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4983     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4984        RAISE OKC_API.G_EXCEPTION_ERROR;
4985     END IF;
4986 
4987    END IF;
4988 
4989    IF(upper(p_source_code) <> 'NEW' AND p_source_contract_number IS NOT NULL) THEN
4990 
4991     IF(p_customer_name IS NULL AND p_program_name IS NULL) THEN
4992 
4993       IF (upper(p_source_code) = 'TEMPLATE') THEN
4994        OPEN l_src_chr_id_crs(p_scs_code,'Y');
4995        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4996        CLOSE l_src_chr_id_crs;
4997       ELSIF (upper(p_source_code) = 'QUOTE') THEN
4998        OPEN l_quote_crs(lp_org_id, p_organization_id, p_source_contract_number);
4999        FETCH l_quote_crs INTO p_source_chr_id;
5000        CLOSE l_quote_crs;
5001       ELSIF (upper(p_source_code) = 'LEASEAPP') THEN
5002        OPEN l_leaseapp_crs(lp_org_id, p_organization_id, p_source_contract_number);
5003        FETCH l_leaseapp_crs INTO p_source_chr_id;
5004        CLOSE l_leaseapp_crs;
5005       ELSIF (upper(p_source_code) = 'PROGAGRMNTTEMP') THEN
5006        OPEN  l_progAgrmntTemp1_crs;
5007        FETCH l_progAgrmntTemp1_crs INTO p_source_chr_id;
5008        CLOSE l_progAgrmntTemp1_crs;
5009       ELSIF (upper(p_source_code) = 'LEASEAPPTEMP') THEN
5010        OPEN l_leaseAppTmpl_crs;
5011        FETCH l_leaseAppTmpl_crs INTO p_source_chr_id;
5012        CLOSE l_leaseAppTmpl_crs;
5013       ELSE
5014        OPEN l_src_chr_id_crs(p_scs_code,'N');
5015        FETCH l_src_chr_id_crs INTO p_source_chr_id;
5016        CLOSE l_src_chr_id_crs;
5017       END IF;
5018 
5019     ELSIF( p_customer_name IS NOT NULL AND p_program_name IS NULL) THEN
5020 
5021       IF (upper(p_source_code) = 'TEMPLATE') THEN
5022        OPEN l_source_chr_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code);
5023        FETCH l_source_chr_id_crs INTO p_source_chr_id;
5024        CLOSE l_source_chr_id_crs;
5025       ELSIF (upper(p_source_code) = 'QUOTE') THEN
5026        OPEN l_quote_crs(lp_org_id, p_organization_id, p_source_contract_number);
5027        FETCH l_quote_crs INTO p_source_chr_id;
5028        CLOSE l_quote_crs;
5029       ELSIF (upper(p_source_code) = 'LEASEAPP') THEN
5030        OPEN l_leaseapp_crs(lp_org_id, p_organization_id, p_source_contract_number);
5031        FETCH l_leaseapp_crs INTO p_source_chr_id;
5032        CLOSE l_leaseapp_crs;
5033       ELSIF (upper(p_source_code) = 'PROGAGRMNTTEMP') THEN
5034        OPEN  l_progAgrmntTemp1_crs;
5035        FETCH l_progAgrmntTemp1_crs INTO p_source_chr_id;
5036        CLOSE l_progAgrmntTemp1_crs;
5037       ELSIF (upper(p_source_code) = 'LEASEAPPTEMP') THEN
5038        OPEN l_leaseAppTmpl1_crs(p_customer_id1,p_customer_id2,l_object_code);
5039        FETCH l_leaseAppTmpl1_crs INTO p_source_chr_id;
5040        CLOSE l_leaseAppTmpl1_crs;
5041       ELSE
5042        OPEN l_source_chr_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code);
5043        FETCH l_source_chr_id_crs INTO p_source_chr_id;
5044        CLOSE l_source_chr_id_crs;
5045       END IF;
5046 
5047     ELSIF( p_customer_name IS NOT NULL AND p_program_name IS NOT NULL) THEN
5048 
5049       IF (upper(p_source_code) = 'TEMPLATE') THEN
5050        OPEN l_source_chr_prog_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code, l_program_id);
5051        FETCH l_source_chr_prog_id_crs INTO p_source_chr_id;
5052        CLOSE l_source_chr_prog_id_crs;
5053       ELSIF (upper(p_source_code) = 'QUOTE') THEN
5054        OPEN l_quote_crs(lp_org_id, p_organization_id, p_source_contract_number);
5055        FETCH l_quote_crs INTO p_source_chr_id;
5056        CLOSE l_quote_crs;
5057       ELSIF (upper(p_source_code) = 'LEASEAPP') THEN
5058        OPEN l_leaseapp_crs(lp_org_id, p_organization_id, p_source_contract_number);
5059        FETCH l_leaseapp_crs INTO p_source_chr_id;
5060        CLOSE l_leaseapp_crs;
5061       ELSIF (upper(p_source_code) = 'PROGAGRMNTTEMP') THEN
5062        OPEN  l_progAgrmntTemp_crs(l_program_id);
5063        FETCH l_progAgrmntTemp_crs INTO p_source_chr_id;
5064        CLOSE l_progAgrmntTemp_crs;
5065       ELSIF (upper(p_source_code) = 'LEASEAPPTEMP') THEN
5066        OPEN l_leaseAppTmpl2_crs(p_customer_id1,p_customer_id2,l_object_code, l_program_id);
5067        FETCH l_leaseAppTmpl2_crs INTO p_source_chr_id;
5068        CLOSE l_leaseAppTmpl2_crs;
5069       ELSE
5070        OPEN l_source_chr_prog_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code, l_program_id);
5071        FETCH l_source_chr_prog_id_crs INTO p_source_chr_id;
5072        CLOSE l_source_chr_prog_id_crs;
5073       END IF;
5074 
5075     ELSIF( p_customer_name IS NULL AND p_program_name IS NOT NULL) THEN
5076 
5077       IF (upper(p_source_code) = 'TEMPLATE') THEN
5078        OPEN l_source_prog_crs(p_scs_code,'Y',l_program_id);
5079        FETCH l_source_prog_crs INTO p_source_chr_id;
5080        CLOSE l_source_prog_crs;
5081       ELSIF (upper(p_source_code) = 'QUOTE') THEN
5082        OPEN l_quote_crs(lp_org_id, p_organization_id, p_source_contract_number);
5083        FETCH l_quote_crs INTO p_source_chr_id;
5084        CLOSE l_quote_crs;
5085       ELSIF (upper(p_source_code) = 'LEASEAPP') THEN
5086        OPEN l_leaseapp_crs(lp_org_id, p_organization_id, p_source_contract_number);
5087        FETCH l_leaseapp_crs INTO p_source_chr_id;
5088        CLOSE l_leaseapp_crs;
5089       ELSIF (upper(p_source_code) = 'PROGAGRMNTTEMP') THEN
5090        OPEN  l_progAgrmntTemp_crs(l_program_id);
5091        FETCH l_progAgrmntTemp_crs INTO p_source_chr_id;
5092        CLOSE l_progAgrmntTemp_crs;
5093       ELSIF (upper(p_source_code) = 'LEASEAPPTEMP') THEN
5094        OPEN l_leaseAppTmpl3_crs(l_program_id);
5095        FETCH l_leaseAppTmpl3_crs INTO p_source_chr_id;
5096        CLOSE l_leaseAppTmpl3_crs;
5097       ELSE
5098        OPEN l_source_prog_crs(p_scs_code,'N',l_program_id);
5099        FETCH l_source_prog_crs INTO p_source_chr_id;
5100        CLOSE l_source_prog_crs;
5101       END IF;
5102 
5103     END IF;
5104 
5105     IF(p_source_chr_id IS NULL) THEN
5106    	 x_return_status := OKC_API.g_ret_sts_error;
5107          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
5108          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5109  				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5110  				, p_token1 => 'COL_NAME'
5111  				, p_token1_value => l_ak_prompt
5112  			   );
5113  	 RAISE OKC_API.G_EXCEPTION_ERROR;
5114     END IF;
5115 
5116     END IF;
5117 
5118     IF (upper(p_source_code) = 'NEW') THEN
5119 
5120         create_new_deal(
5121          p_api_version     => l_api_version,
5122          p_init_msg_list   => p_init_msg_list,
5123          x_return_status   => x_return_status,
5124          x_msg_count       => x_msg_count,
5125          x_msg_data        => x_msg_data,
5126          p_contract_number => p_contract_number,
5127          p_scs_code        => p_scs_code,
5128          p_customer_id1    => p_customer_id1,
5129          p_customer_id2    => p_customer_id2,
5130          p_customer_code   => l_object_code,
5131          p_customer_name   => p_customer_name,
5132          p_template_yn     => l_template_yn,
5133          p_template_type   => p_template_type,
5134          p_effective_from  => p_effective_from,
5135          p_program_name    => p_program_name,
5136          p_program_id      => p_program_id,
5137          x_chr_id          => x_chr_id,
5138     --Added by dpsingh for LE Uptake
5139          p_legal_entity_id => p_legal_entity_id);
5140 
5141        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5142           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5143        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5144           RAISE OKC_API.G_EXCEPTION_ERROR;
5145        END IF;
5146 
5147        l_chr_id := x_chr_id;
5148 
5149        IF okl_context.get_okc_org_id  IS NULL THEN
5150 		okl_context.set_okc_org_context(p_chr_id => l_chr_id );
5151        END IF;
5152 
5153     IF (p_scs_code = 'LEASE') THEN
5154        p_kpl_rec.object1_id1       := lp_org_id;
5155        p_kpl_rec.object1_id2       := '#';
5156        p_kpl_rec.jtot_object1_code := 'OKX_OPERUNIT';
5157        p_kpl_rec.rle_code          := 'LESSOR';
5158        p_kpl_rec.dnz_chr_id        := l_chr_id;
5159        p_kpl_rec.chr_id            := l_chr_id;
5160 
5161        OKL_DEAL_CREAT_PVT.create_party(
5162          p_api_version     => l_api_version,
5163          p_init_msg_list   => p_init_msg_list,
5164          x_return_status   => x_return_status,
5165          x_msg_count       => x_msg_count,
5166          x_msg_data        => x_msg_data,
5167          p_kpl_rec         => p_kpl_rec,
5168          x_kpl_rec         => x_kpl_rec);
5169 
5170        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5171           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5172        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5173           RAISE OKC_API.G_EXCEPTION_ERROR;
5174        END IF;
5175 
5176     END IF;
5177        -- bug 4227922  property tax options defaulting onto contract
5178        IF ( p_scs_code = 'LEASE') THEN
5179 
5180        OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
5181          p_api_version     => l_api_version,
5182          p_init_msg_list   => p_init_msg_list,
5183          x_return_status   => x_return_status,
5184          x_msg_count       => x_msg_count,
5185          x_msg_data        => x_msg_data,
5186          p_chr_id          => l_chr_id);
5187 
5188        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5189           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5190        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5191           RAISE OKC_API.G_EXCEPTION_ERROR;
5192        END IF;
5193 
5194        END IF;
5195 
5196         -- copy from template
5197     ELSIF (upper(p_source_code) = 'TEMPLATE') THEN
5198 
5199           create_from_template(
5200             p_api_version     => l_api_version,
5201             p_init_msg_list   => p_init_msg_list,
5202             x_return_status   => x_return_status,
5203             x_msg_count       => x_msg_count,
5204             x_msg_data        => x_msg_data,
5205             p_contract_number => p_contract_number,
5206             p_source_chr_id   => p_source_chr_id,
5207             x_chr_id          => x_chr_id);
5208 
5209     /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
5210     ELSIF (p_source_code = 'Re-Lease') THEN
5211 
5212           create_from_release(
5213             p_api_version     => l_api_version,
5214             p_init_msg_list   => p_init_msg_list,
5215             x_return_status   => x_return_status,
5216             x_msg_count       => x_msg_count,
5217             x_msg_data        => x_msg_data,
5218             p_contract_number => p_contract_number,
5219             p_source_chr_id   => p_source_chr_id,
5220             x_chr_id          => x_chr_id);
5221     */
5222 
5223     ELSIF (upper(p_source_code) = 'COPY' ) THEN
5224 
5225           create_from_contract(
5226             p_api_version     => l_api_version,
5227             p_init_msg_list   => p_init_msg_list,
5228             x_return_status   => x_return_status,
5229             x_msg_count       => x_msg_count,
5230             x_msg_data        => x_msg_data,
5231             p_contract_number => p_contract_number,
5232             p_source_chr_id   => p_source_chr_id,
5233             x_chr_id          => x_chr_id);
5234 
5235     ELSIF (upper(p_source_code) = 'PROGAGRMNTTEMP' ) THEN
5236 
5237           create_from_contract(
5238             p_api_version     => l_api_version,
5239             p_init_msg_list   => p_init_msg_list,
5240             x_return_status   => x_return_status,
5241             x_msg_count       => x_msg_count,
5242             x_msg_data        => x_msg_data,
5243             p_contract_number => p_contract_number,
5244             p_source_chr_id   => p_source_chr_id,
5245             x_chr_id          => x_chr_id);
5246 
5247     ELSIF (upper(p_source_code) = 'LEASEAPPTEMP' ) THEN
5248 
5249           create_from_contract(
5250             p_api_version     => l_api_version,
5251             p_init_msg_list   => p_init_msg_list,
5252             x_return_status   => x_return_status,
5253             x_msg_count       => x_msg_count,
5254             x_msg_data        => x_msg_data,
5255             p_contract_number => p_contract_number,
5256             p_source_chr_id   => p_source_chr_id,
5257             x_chr_id          => x_chr_id);
5258 
5259     ELSIF (upper(p_source_code) = 'QUOTE' ) THEN
5260     -- LEASEOPP
5261           create_from_quote(
5262             p_api_version        => l_api_version,
5263             p_init_msg_list      => p_init_msg_list,
5264             x_return_status      => x_return_status,
5265             x_msg_count          => x_msg_count,
5266             x_msg_data           => x_msg_data,
5267             p_contract_number    => p_contract_number,
5268             p_source_object_code => 'LEASEOPP',
5269             p_source_chr_id      => p_source_chr_id,
5270             x_chr_id             => x_chr_id);
5271 
5272     ELSIF (upper(p_source_code) = 'LEASEAPP' ) THEN
5273     -- LEASEAPP
5274           create_from_quote(
5275             p_api_version        => l_api_version,
5276             p_init_msg_list      => p_init_msg_list,
5277             x_return_status      => x_return_status,
5278             x_msg_count          => x_msg_count,
5279             x_msg_data           => x_msg_data,
5280             p_contract_number    => p_contract_number,
5281             p_source_object_code => 'LEASEAPP',
5282             p_source_chr_id      => p_source_chr_id,
5283             x_chr_id             => x_chr_id);
5284 
5285     END IF;
5286 
5287     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5288        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5289     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5290        RAISE OKC_API.G_EXCEPTION_ERROR;
5291     END IF;
5292 
5293    -- update contract header for template_yn
5294    IF ( p_template_type IS NOT NULL AND ( upper(p_source_code) = 'QUOTE' OR upper(p_source_code) = 'COPY'
5295         OR upper(p_source_code) = 'RE-LEASE' OR upper(p_source_code) = 'TEMPLATE' OR upper(p_source_code) = 'PROGAGRMNTTEMP')) THEN
5296 
5297     lp_chrv_rec.id := x_chr_id;
5298     lp_khrv_rec.id := x_chr_id;
5299 
5300     IF(p_template_type = OKL_TEMP_TYPE_PROGRAM) THEN
5301       lp_khrv_rec.template_type_code := OKL_TEMP_TYPE_PROGRAM;
5302       lp_chrv_rec.template_yn := 'Y';
5303     ELSIF(p_template_type = OKL_TEMP_TYPE_CONTRACT) THEN
5304       lp_khrv_rec.template_type_code := OKL_TEMP_TYPE_CONTRACT;
5305       lp_chrv_rec.template_yn := 'Y';
5306     ELSIF(p_template_type = OKL_TEMP_TYPE_LEASEAPP) THEN
5307       lp_khrv_rec.template_type_code := OKL_TEMP_TYPE_LEASEAPP;
5308       lp_chrv_rec.template_yn := 'Y';
5309     ELSE
5310       lp_khrv_rec.template_type_code := NULL;
5311     END IF;
5312 
5313     IF(p_effective_from IS NOT NULL) THEN
5314 
5315       lp_chrv_rec.start_date := p_effective_from;
5316 
5317     END IF;
5318 
5319     IF(l_program_id IS NOT NULL) THEN
5320 
5321       lp_khrv_rec.khr_id := l_program_id;
5322 
5323     END IF;
5324 
5325     OKL_CONTRACT_PUB.update_contract_header(
5326       p_api_version    => p_api_version,
5327       p_init_msg_list  => p_init_msg_list,
5328       x_return_status  => x_return_status,
5329       x_msg_count      => x_msg_count,
5330       x_msg_data       => x_msg_data,
5331       p_chrv_rec       => lp_chrv_rec,
5332       p_khrv_rec       => lp_khrv_rec,
5333       x_chrv_rec       => lx_chrv_rec,
5334       x_khrv_rec       => lx_khrv_rec);
5335 
5336     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5337        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5338     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5339        RAISE OKC_API.G_EXCEPTION_ERROR;
5340     END IF;
5341 
5342    ELSIF ( p_template_type IS NULL AND ( upper(p_source_code) = 'QUOTE' OR upper(p_source_code) = 'COPY'
5343            OR upper(p_source_code) = 'RE-LEASE' OR upper(p_source_code) = 'TEMPLATE' OR upper(p_source_code) = 'PROGAGRMNTTEMP'
5344            OR upper(p_source_code) = 'LEASEAPPTEMP')) THEN
5345 
5346     lp_chrv_rec.id := x_chr_id;
5347     lp_khrv_rec.id := x_chr_id;
5348     lp_chrv_rec.template_yn := 'N';
5349     lp_khrv_rec.template_type_code := NULL;
5350 
5351     IF(p_effective_from IS NOT NULL) THEN
5352 
5353       lp_chrv_rec.start_date := p_effective_from;
5354 
5355     END IF;
5356 
5357     IF(l_program_id IS NOT NULL) THEN
5358 
5359       lp_khrv_rec.khr_id := l_program_id;
5360 
5361     END IF;
5362 
5363     OKL_CONTRACT_PUB.update_contract_header(
5364       p_api_version    => p_api_version,
5365       p_init_msg_list  => p_init_msg_list,
5366       x_return_status  => x_return_status,
5367       x_msg_count      => x_msg_count,
5368       x_msg_data       => x_msg_data,
5369       p_chrv_rec       => lp_chrv_rec,
5370       p_khrv_rec       => lp_khrv_rec,
5371       x_chrv_rec       => lx_chrv_rec,
5372       x_khrv_rec       => lx_khrv_rec);
5373 
5374     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5375        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5376     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5377        RAISE OKC_API.G_EXCEPTION_ERROR;
5378     END IF;
5379 
5380    END IF;
5381 
5382    OPEN c_orig_system_source(x_chr_id);
5383    FETCH c_orig_system_source INTO l_orig_system_source_code;
5384    CLOSE c_orig_system_source;
5385 
5386    IF NVL(l_orig_system_source_code,'XXXX') <> 'OKL_IMPORT' THEN
5387      OPEN c_tax_schedule_yn;
5388      FETCH c_tax_schedule_yn INTO l_tax_schedule_yn;
5389      CLOSE c_tax_schedule_yn;
5390 
5391      OPEN c_rule_group(x_chr_id,'LAHDTX');
5392      FETCH c_rule_group INTO l_rgp_id,l_rgd_code;
5393      CLOSE c_rule_group;
5394 
5395      IF (NVL(l_rgd_code,'XXXXXX') <> 'LAHDTX') THEN
5396        -- Create rule group LAHDTX
5397        lp_lahdtx_rgpv_rec.id := NULL;
5398        lp_lahdtx_rgpv_rec.rgd_code := 'LAHDTX';
5399        lp_lahdtx_rgpv_rec.dnz_chr_id := x_chr_id;
5400        lp_lahdtx_rgpv_rec.chr_id := x_chr_id;
5401        lp_lahdtx_rgpv_rec.rgp_type := 'KRG';
5402 
5403        OKL_RULE_PUB.create_rule_group(
5404            p_api_version    => p_api_version,
5405            p_init_msg_list  => p_init_msg_list,
5406            x_return_status  => x_return_status,
5407            x_msg_count      => x_msg_count,
5408            x_msg_data       => x_msg_data,
5409            p_rgpv_rec       => lp_lahdtx_rgpv_rec,
5410            x_rgpv_rec       => lx_lahdtx_rgpv_rec);
5411 
5412        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5413           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5414        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5415           RAISE OKC_API.G_EXCEPTION_ERROR;
5416        END IF;
5417 
5418        l_rgp_id := lx_lahdtx_rgpv_rec.id;
5419      END IF;
5420      -- Create rule LASTPR
5421     lp_lahdtx_rulv_rec.id := NULL;
5422     lp_lahdtx_rulv_rec.rgp_id := l_rgp_id;
5423     lp_lahdtx_rulv_rec.rule_information_category := 'LASTPR';
5424     lp_lahdtx_rulv_rec.dnz_chr_id := x_chr_id;
5425     lp_lahdtx_rulv_rec.rule_information5 := l_tax_schedule_yn;
5426     lp_lahdtx_rulv_rec.WARN_YN := 'N';
5427     lp_lahdtx_rulv_rec.STD_TEMPLATE_YN := 'N';
5428 
5429     OKL_RULE_PUB.create_rule(
5430         p_api_version    => p_api_version,
5431         p_init_msg_list  => p_init_msg_list,
5432         x_return_status  => x_return_status,
5433         x_msg_count      => x_msg_count,
5434         x_msg_data       => x_msg_data,
5435         p_rulv_rec       => lp_lahdtx_rulv_rec,
5436         x_rulv_rec       => lx_lahdtx_rulv_rec);
5437 
5438       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5439          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5440       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5441          RAISE OKC_API.G_EXCEPTION_ERROR;
5442       END IF;
5443    END IF;
5444 
5445    /*
5446    -- mvasudev, 08/17/2004
5447    -- Code change to enable Business Event
5448    */
5449 	raise_business_event(p_chr_id        => x_chr_id
5450 	                    ,x_return_status => x_return_status);
5451     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5452        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5453     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5454        RAISE OKL_API.G_EXCEPTION_ERROR;
5455     END IF;
5456 
5457    /*
5458    -- mvasudev, 08/17/2004
5459    -- END, Code change to enable Business Event
5460    */
5461 
5462    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
5463 			 x_msg_data	=> x_msg_data);
5464   EXCEPTION
5465     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5466       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5467 			p_api_name  => l_api_name,
5468 			p_pkg_name  => g_pkg_name,
5469 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
5470 			x_msg_count => x_msg_count,
5471 			x_msg_data  => x_msg_data,
5472 			p_api_type  => g_api_type);
5473 
5474     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5475       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5476 			p_api_name  => l_api_name,
5477 			p_pkg_name  => g_pkg_name,
5478 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
5479 			x_msg_count => x_msg_count,
5480 			x_msg_data  => x_msg_data,
5481 			p_api_type  => g_api_type);
5482 
5483     WHEN OTHERS THEN
5484       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5485 			p_api_name  => l_api_name,
5486 			p_pkg_name  => g_pkg_name,
5487 			p_exc_name  => 'OTHERS',
5488 			x_msg_count => x_msg_count,
5489 			x_msg_data  => x_msg_data,
5490 			p_api_type  => g_api_type);
5491   END;
5492 
5493 
5494 -- Start of comments
5495 --
5496 -- Procedure Name  : validate_deal
5497 -- Description     : creates a deal based on the information that comes
5498 --	             from the deal creation screen
5499 -- Business Rules  :
5500 -- Parameters      :
5501 -- Version         : 1.0
5502 -- End of comments
5503   PROCEDURE validate_deal(
5504     p_api_version                  IN NUMBER,
5505     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5506     x_return_status                OUT NOCOPY VARCHAR2,
5507     x_msg_count                    OUT NOCOPY NUMBER,
5508     x_msg_data                     OUT NOCOPY VARCHAR2,
5509     p_customer_id1                 IN OUT NOCOPY VARCHAR2,
5510     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
5511     p_customer_code                IN OUT NOCOPY VARCHAR2,
5512     p_customer_name                IN  VARCHAR2,
5513     p_customer_acc_id1             IN OUT NOCOPY VARCHAR2,
5514     p_customer_acc_id2             IN OUT NOCOPY VARCHAR2,
5515     p_customer_acc_code            IN OUT NOCOPY VARCHAR2,
5516     p_customer_acc_name            IN  VARCHAR2,
5517     p_product_name                 IN  VARCHAR2,
5518     p_product_id                   IN OUT NOCOPY VARCHAR2,
5519     p_contact_id1                  IN OUT NOCOPY VARCHAR2,
5520     p_contact_id2                  IN OUT NOCOPY VARCHAR2,
5521     p_contact_code                 IN OUT NOCOPY VARCHAR2,
5522     p_contact_name                 IN  VARCHAR2,
5523     p_mla_no                       IN  VARCHAR2,
5524     p_mla_id                       IN OUT NOCOPY VARCHAR2,
5525     p_chrv_rec       		   IN  chrv_rec_type,
5526     p_khrv_rec                     IN  khrv_rec_type,
5527     x_chrv_rec                     OUT NOCOPY chrv_rec_type,
5528     x_khrv_rec                     OUT NOCOPY  khrv_rec_type
5529     ) AS
5530 
5531     l_api_name	        VARCHAR2(30) := 'validate_deal';
5532     l_api_version	CONSTANT NUMBER	  := 1.0;
5533 
5534     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
5535     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5536     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5537     l_object_code     VARCHAR2(30) DEFAULT NULL;
5538 
5539     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
5540     l_chr_id	NUMBER;
5541 
5542     CURSOR l_chk_cust_acc_csr(p_cust_acc_id1 VARCHAR2, p_name VARCHAR2) IS
5543     SELECT COUNT(1)
5544     FROM okx_customer_accounts_v ca, okx_parties_v P
5545     WHERE P.id1 = ca.party_id
5546     AND ca.description = p_cust_acc_id1
5547     AND P.name = p_name;
5548 
5549     CURSOR l_product_csr IS
5550     SELECT id
5551     FROM OKL_PRODUCTS_V
5552     WHERE name = p_product_name;
5553 
5554     row_cnt  NUMBER;
5555 
5556   BEGIN
5557 
5558   IF okl_context.get_okc_org_id  IS NULL THEN
5559 	l_chr_id := p_chrv_rec.id;
5560 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
5561   END IF;
5562 
5563     x_return_status := OKC_API.START_ACTIVITY(
5564 			p_api_name      => l_api_name,
5565 			p_pkg_name      => g_pkg_name,
5566 			p_init_msg_list => p_init_msg_list,
5567 			l_api_version   => l_api_version,
5568 			p_api_version   => p_api_version,
5569 			p_api_type      => g_api_type,
5570 			x_return_status => x_return_status);
5571 
5572     -- check if activity started successfully
5573     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5574        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5575     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5576        RAISE OKC_API.G_EXCEPTION_ERROR;
5577     END IF;
5578 
5579 -- contract number validation
5580 
5581    IF(p_chrv_rec.contract_number IS NULL) THEN
5582 	 x_return_status := OKC_API.g_ret_sts_error;
5583          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
5584          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5585 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5586 				, p_token1 => 'COL_NAME'
5587 				, p_token1_value => l_ak_prompt
5588 			   );
5589 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5590     END IF;
5591 
5592 -- customer validation
5593 
5594    IF(p_customer_name IS NULL) THEN
5595 	 x_return_status := OKC_API.g_ret_sts_error;
5596          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
5597          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5598 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5599 				, p_token1 => 'COL_NAME'
5600 				, p_token1_value => l_ak_prompt
5601 			   );
5602 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5603     END IF;
5604 
5605     okl_la_validation_util_pvt.Get_Party_Jtot_data (
5606       p_api_version    => p_api_version,
5607       p_init_msg_list  => p_init_msg_list,
5608       x_return_status  => x_return_status,
5609       x_msg_count      => x_msg_count,
5610       x_msg_data       => x_msg_data,
5611       p_scs_code       => p_chrv_rec.scs_code,
5612       p_buy_or_sell    => 'S',
5613       p_rle_code       => G_RLE_CODE,
5614       p_id1            => p_customer_id1,
5615       p_id2            => p_customer_id2,
5616       p_name           => p_customer_name,
5617       p_object_code    => p_customer_code,
5618       p_ak_region      => 'OKL_LA_DEAL_CREAT',
5619       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
5620       );
5621 
5622     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5623        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5624     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5625        RAISE OKC_API.G_EXCEPTION_ERROR;
5626     END IF;
5627 
5628 -- customer account validation
5629 
5630    IF(p_customer_acc_name IS NULL) THEN
5631 	 x_return_status := OKC_API.g_ret_sts_error;
5632          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
5633          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5634 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5635 				, p_token1 => 'COL_NAME'
5636 				, p_token1_value => l_ak_prompt
5637 			   );
5638 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5639     END IF;
5640 
5641     okl_la_validation_util_pvt.Validate_Rule (
5642       p_api_version    => p_api_version,
5643       p_init_msg_list  => p_init_msg_list,
5644       x_return_status  => x_return_status,
5645       x_msg_count      => x_msg_count,
5646       x_msg_data       => x_msg_data,
5647       p_chr_id         => p_chrv_rec.id,
5648       p_rgd_code       => 'LACAN',
5649       p_rdf_code       => 'CAN',
5650       p_id1            => p_customer_acc_id1,
5651       p_id2            => p_customer_acc_id2,
5652       p_name           => p_customer_acc_name,
5653       p_object_code    => p_customer_acc_code,
5654       p_ak_region      => 'OKL_CONTRACT_DTLS',
5655       p_ak_attribute   => 'OKL_KDTLS_CUSTOMER_ACCOUNT_N'
5656       );
5657 
5658     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5659        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5660     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5661        RAISE OKC_API.G_EXCEPTION_ERROR;
5662     END IF;
5663 
5664     OPEN l_chk_cust_acc_csr(p_customer_acc_name,p_customer_name);
5665     FETCH l_chk_cust_acc_csr INTO row_cnt;
5666     CLOSE l_chk_cust_acc_csr;
5667 
5668     IF row_cnt = 0 THEN
5669 	 x_return_status := OKC_API.g_ret_sts_error;
5670          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
5671          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5672 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5673 				, p_token1 => 'COL_NAME'
5674 				, p_token1_value => l_ak_prompt
5675 			   );
5676 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5677     END IF;
5678 
5679 -- product validation
5680 
5681     IF(p_product_name IS NULL) THEN
5682 	 x_return_status := OKC_API.g_ret_sts_error;
5683          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5684          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5685 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5686 				, p_token1 => 'COL_NAME'
5687 				, p_token1_value => l_ak_prompt
5688 			   );
5689 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5690     END IF;
5691 
5692     OPEN l_product_csr;
5693     FETCH l_product_csr INTO p_product_id;
5694     CLOSE l_product_csr;
5695 
5696     IF p_product_id IS NULL THEN
5697 	 x_return_status := OKC_API.g_ret_sts_error;
5698          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5699          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5700 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5701 				, p_token1 => 'COL_NAME'
5702 				, p_token1_value => l_ak_prompt
5703 			   );
5704 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5705     END IF;
5706 
5707 -- contact validation
5708 
5709    IF(p_contact_name IS NOT NULL) THEN
5710 
5711      okl_la_validation_util_pvt.Validate_Contact (
5712        p_api_version    => p_api_version,
5713        p_init_msg_list  => p_init_msg_list,
5714        x_return_status  => x_return_status,
5715        x_msg_count      => x_msg_count,
5716        x_msg_data       => x_msg_data,
5717        p_chr_id         => p_chrv_rec.id,
5718        p_rle_code       => 'LESSOR',
5719        p_cro_code       => 'SALESPERSON',
5720        p_id1            => p_contact_id1,
5721        p_id2            => p_contact_id2,
5722        p_name           => p_contact_name,
5723        p_object_code    => p_contact_code,
5724        p_ak_region      => 'OKL_CONTRACT_DTLS',
5725        p_ak_attribute   => 'OKL_KDTLS_SALES_REPRESENTATIVE'
5726        );
5727 
5728      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5729         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5730      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5731         RAISE OKC_API.G_EXCEPTION_ERROR;
5732      END IF;
5733 
5734    END IF;
5735 
5736    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
5737 			 x_msg_data	=> x_msg_data);
5738   EXCEPTION
5739     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5740       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5741 			p_api_name  => l_api_name,
5742 			p_pkg_name  => g_pkg_name,
5743 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
5744 			x_msg_count => x_msg_count,
5745 			x_msg_data  => x_msg_data,
5746 			p_api_type  => g_api_type);
5747 
5748     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5749       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5750 			p_api_name  => l_api_name,
5751 			p_pkg_name  => g_pkg_name,
5752 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
5753 			x_msg_count => x_msg_count,
5754 			x_msg_data  => x_msg_data,
5755 			p_api_type  => g_api_type);
5756 
5757     WHEN OTHERS THEN
5758       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5759 			p_api_name  => l_api_name,
5760 			p_pkg_name  => g_pkg_name,
5761 			p_exc_name  => 'OTHERS',
5762 			x_msg_count => x_msg_count,
5763 			x_msg_data  => x_msg_data,
5764 			p_api_type  => g_api_type);
5765   END;
5766 
5767 
5768 -- Start of comments
5769 --
5770 -- Procedure Name  : update_release_contract
5771 -- Description     : update release contract for
5772 --                   PRODUCT_CHANGE/CUSTOMER_CHANGE
5773 --
5774 -- Business Rules  :
5775 -- Parameters      :
5776 -- Version         : 1.0
5777 -- End of comments
5778   PROCEDURE update_release_contract(
5779     p_api_version                  IN NUMBER,
5780     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5781     x_return_status                OUT NOCOPY VARCHAR2,
5782     x_msg_count                    OUT NOCOPY NUMBER,
5783     x_msg_data                     OUT NOCOPY VARCHAR2,
5784     p_chr_id                       IN  NUMBER,
5785     p_contract_number              IN  VARCHAR2,
5786     p_chr_description              IN  VARCHAR2,
5787     p_cust_id                      IN  NUMBER,
5788     p_customer_name                IN  VARCHAR2,
5789     p_customer_id1                 IN  VARCHAR2,
5790     p_customer_acc_name            IN  VARCHAR2,
5791     p_customer_acct_id1            IN  VARCHAR2,
5792     p_product_name                 IN  VARCHAR2,
5793     p_mla_id                       IN  NUMBER,
5794     p_mla_no                       IN  VARCHAR2,
5795     p_gvr_id_mla                   IN  NUMBER,
5796     p_cl_id                        IN  NUMBER,
5797     p_cl_no                        IN  VARCHAR2,
5798     p_gvr_id_cl                    IN  NUMBER,
5799     p_deal_type                    IN  VARCHAR2,
5800     p_program_no                   IN  VARCHAR2,
5801     p_program_id                   IN  NUMBER,
5802     p_program_yn                   IN  VARCHAR2,
5803     p_bill_to_site_use_id          IN  NUMBER  -- Bug 6493413
5804     ) AS
5805 
5806     l_api_name	        VARCHAR2(30) := 'update_release_contract';
5807     l_api_version	CONSTANT NUMBER	  := 1.0;
5808 
5809     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
5810     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5811     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5812     l_object_code     VARCHAR2(30) DEFAULT NULL;
5813 
5814     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
5815     l_chr_id	NUMBER;
5816 
5817     cursor l_get_cust_id_csr(p_name VARCHAR2) is
5818     select OKX_PARTY.ID1, OKX_PARTY.ID2
5819     from OKX_PARTIES_V OKX_PARTY
5820     where OKX_PARTY.name = p_name
5821     and okx_party.id1 = p_customer_id1;
5822 
5823     l_cust_id1 OKX_PARTIES_V.ID1%type := null;
5824     l_cust_id2 OKX_PARTIES_V.ID2%type := null;
5825 
5826     cursor l_get_cust_acc_csr(p_cust_acc_desc VARCHAR2, p_name VARCHAR2) is
5827     select ca.id1
5828     from okx_customer_accounts_v ca,
5829          okx_parties_v p
5830     where p.id1 = ca.party_id
5831     and ca.description = p_cust_acc_desc
5832     and p.name = p_name;
5833 
5834     l_cust_acct_id okx_customer_accounts_v.id1%type := null;
5835 
5836     CURSOR l_product_csr IS
5837     SELECT id
5838     FROM OKL_PRODUCTS_V
5839     WHERE name = p_product_name;
5840 
5841     l_product_id OKL_PRODUCTS_V.id%type := null;
5842 
5843     row_cnt  NUMBER;
5844 
5845     Cursor l_rbr_csr IS
5846     SELECT rbr_code
5847     FROM okl_trx_contracts
5848     WHERE khr_id_new = p_chr_id
5849     --rkuttiya added for 12.1.1 Multi  GAAP Project
5850     AND representation_type = 'PRIMARY';
5851    --
5852 
5853     l_rbr_code okl_trx_contracts.rbr_code%type := null;
5854 
5855     cursor l_mla_csr is
5856     select id
5857     from OKL_k_headers_full_V
5858     where contract_number = p_mla_no
5859     and   scs_code = 'MASTER_LEASE'
5860     and STS_CODE = 'ACTIVE'
5861     and TEMPLATE_YN = 'N'
5862     and BUY_OR_SELL = 'S';
5863 
5864     l_mla_id number;
5865 
5866     cursor l_credit_line_csr is
5867     select cl.id
5868     from okl_k_hdr_crdtln_uv cl
5869     where  cl.contract_number = p_cl_no
5870     and exists ( select 1
5871                  from okc_k_headers_b chr
5872                  where chr.currency_code = cl.currency_code
5873                  and cl.end_date >= chr.start_date
5874                  and cl.cust_name  = p_customer_name
5875                  and cl.cust_acc_number = p_customer_acc_name);
5876 
5877     l_cl_id NUMBER;
5878 
5879     cursor l_program_csr is
5880     select id
5881     from OKL_k_headers_full_V prg_hdr
5882     where contract_number = p_program_no
5883     and scs_code = 'PROGRAM'
5884     and nvl(TEMPLATE_YN, 'N') = 'N'
5885     and sts_code = 'ACTIVE'
5886     and exists (select 1
5887                 from okc_k_headers_b
5888                 where id = p_chr_id
5889                 and authoring_org_id = prg_hdr.authoring_org_id);
5890 
5891     l_program_id number;
5892 
5893     old_khr_id  NUMBER;
5894 
5895     CURSOR c_vp_exsts_csr IS
5896     SELECT khr_id
5897     FROM okl_k_headers_full_v
5898     WHERE id = p_chr_id;
5899 
5900     CURSOR c_context_csr IS
5901     SELECT authoring_org_id, inv_organization_id
5902     FROM okl_k_headers_full_V
5903     WHERE id = p_chr_id;
5904 
5905     l_auth_org_id okc_k_headers_b.authoring_org_id%type;
5906     l_inv_org_id okc_k_headers_b.inv_organization_id%type;
5907 
5908     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
5909     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
5910 
5911     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
5912     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
5913 
5914     lp_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
5915     lx_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
5916 
5917     lp_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
5918     lp_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
5919     lx_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
5920     lx_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
5921 
5922     lp_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5923     lx_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5924 
5925     lp_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5926     lx_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5927 
5928     X_NO_DATA_FOUND BOOLEAN := TRUE;
5929 
5930     --Bug# 4558486
5931     lp_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
5932     lx_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
5933 
5934   BEGIN
5935 
5936   IF okl_context.get_okc_org_id  IS NULL THEN
5937 	l_chr_id := p_chr_id;
5938 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
5939   END IF;
5940 
5941     x_return_status := OKC_API.START_ACTIVITY(
5942 			p_api_name      => l_api_name,
5943 			p_pkg_name      => g_pkg_name,
5944 			p_init_msg_list => p_init_msg_list,
5945 			l_api_version   => l_api_version,
5946 			p_api_version   => p_api_version,
5947 			p_api_type      => g_api_type,
5948 			x_return_status => x_return_status);
5949 
5950     -- check if activity started successfully
5951     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5952        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5953     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5954        RAISE OKC_API.G_EXCEPTION_ERROR;
5955     END IF;
5956 
5957     l_rbr_code := null;
5958     open l_rbr_csr;
5959     fetch l_rbr_csr into l_rbr_code;
5960     close l_rbr_csr;
5961 
5962    If(l_rbr_code is not null and l_rbr_code = 'PRODUCT_CHANGE') Then
5963 
5964     -- product validation
5965     IF(p_product_name IS NULL) THEN
5966 	 x_return_status := OKC_API.g_ret_sts_error;
5967          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5968          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5969 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5970 				, p_token1 => 'COL_NAME'
5971 				, p_token1_value => l_ak_prompt
5972 			   );
5973 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5974     END IF;
5975 
5976     l_product_id := null;
5977     OPEN l_product_csr;
5978     FETCH l_product_csr INTO l_product_id;
5979     CLOSE l_product_csr;
5980 
5981     IF l_product_id IS NULL THEN
5982 	 x_return_status := OKC_API.g_ret_sts_error;
5983          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5984          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5985 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5986 				, p_token1 => 'COL_NAME'
5987 				, p_token1_value => l_ak_prompt
5988 			   );
5989 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5990     END IF;
5991 
5992   END IF;
5993 
5994   If(l_rbr_code is not null and l_rbr_code = 'CUSTOMER_CHANGE') Then
5995 
5996      -- customer validation
5997      IF(p_customer_name IS NULL) THEN
5998       x_return_status := OKC_API.g_ret_sts_error;
5999       l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
6000       OKC_API.SET_MESSAGE(      p_app_name => g_app_name
6001 				, p_msg_name => 'OKL_REQUIRED_VALUE'
6002 				, p_token1 => 'COL_NAME'
6003 				, p_token1_value => l_ak_prompt
6004 			   );
6005       RAISE OKC_API.G_EXCEPTION_ERROR;
6006      END IF;
6007 
6008     -- customer account validation
6009     IF(p_customer_acc_name IS NULL) THEN
6010 	 x_return_status := OKC_API.g_ret_sts_error;
6011          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
6012          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
6013 				, p_msg_name => 'OKL_REQUIRED_VALUE'
6014 				, p_token1 => 'COL_NAME'
6015 				, p_token1_value => l_ak_prompt
6016 			   );
6017 	 RAISE OKC_API.G_EXCEPTION_ERROR;
6018     END IF;
6019 
6020     -- gboomina Bug 6493413 - Start
6021     -- Bill To Address validation
6022     IF ( p_bill_to_site_use_id IS NULL) THEN
6023     	 x_return_status := OKC_API.g_ret_sts_error;
6024       l_ak_prompt := GET_AK_PROMPT('OKL_LA_LAVENB', 'OKL_LA_BILLTO');
6025       OKC_API.SET_MESSAGE( p_app_name => g_app_name
6026 				                     , p_msg_name => 'OKL_REQUIRED_VALUE'
6027                      				, p_token1 => 'COL_NAME'
6028                       			, p_token1_value => l_ak_prompt
6029                    			   );
6030      	RAISE OKC_API.G_EXCEPTION_ERROR;
6031     END IF;
6032     -- gboomina Bug 6493413 - End
6033 
6034     l_cust_id1 := null;
6035     l_cust_id2 := null;
6036     Open l_get_cust_id_csr(p_customer_name);
6037     Fetch l_get_cust_id_csr into l_cust_id1,l_cust_id2;
6038     Close l_get_cust_id_csr;
6039 
6040     If l_cust_id1 is null Then
6041      x_return_status := OKC_API.g_ret_sts_error;
6042      l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
6043      OKC_API.SET_MESSAGE(      p_app_name => g_app_name
6044                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6045                 , p_token1 => 'COL_NAME'
6046                 , p_token1_value => l_ak_prompt
6047                );
6048      raise OKC_API.G_EXCEPTION_ERROR;
6049     End If;
6050 
6051     l_cust_acct_id := null;
6052     Open l_get_cust_acc_csr(p_customer_acc_name, p_customer_name);
6053     Fetch l_get_cust_acc_csr into l_cust_acct_id;
6054     Close l_get_cust_acc_csr;
6055 
6056     If l_cust_acct_id is null Then
6057      x_return_status := OKC_API.g_ret_sts_error;
6058          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
6059          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
6060                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6061                 , p_token1 => 'COL_NAME'
6062                 , p_token1_value => l_ak_prompt
6063                );
6064      raise OKC_API.G_EXCEPTION_ERROR;
6065     End If;
6066 
6067     -- mla validation
6068     If(p_mla_no is not null) Then
6069 
6070      l_mla_id := null;
6071      open l_mla_csr;
6072      fetch l_mla_csr into l_mla_id;
6073      close l_mla_csr;
6074 
6075      If l_mla_id is null Then
6076          x_return_status := OKC_API.g_ret_sts_error;
6077          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_MASTER_LEASE_NUMBER');
6078          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
6079                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6080                 , p_token1 => 'COL_NAME'
6081                 , p_token1_value => l_ak_prompt
6082                );
6083          raise OKC_API.G_EXCEPTION_ERROR;
6084      End If;
6085 
6086     End If;
6087 
6088    End If; -- end of customer change if
6089 
6090    If(l_rbr_code is not null and (l_rbr_code = 'CUSTOMER_CHANGE'  or  l_rbr_code = 'PRODUCT_CHANGE')) Then
6091 
6092     -- creditline validation
6093     If(p_cl_no is not null) Then
6094 
6095       l_cl_id := null;
6096 
6097       open l_credit_line_csr;
6098       fetch l_credit_line_csr into l_cl_id;
6099       close l_credit_line_csr;
6100 
6101       If l_cl_id is null Then
6102          x_return_status := OKC_API.g_ret_sts_error;
6103          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CREDIT_CONTRACT');
6104          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
6105                                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6106                                 , p_token1 => 'COL_NAME'
6107                                 , p_token1_value => l_ak_prompt
6108 
6109                            );
6110          raise OKC_API.G_EXCEPTION_ERROR;
6111       End If;
6112 
6113     End If;
6114 
6115     -- validation for creditline contract
6116     okl_la_validation_util_pvt.validate_creditline(
6117        p_api_version    => p_api_version,
6118        p_init_msg_list  => p_init_msg_list,
6119        x_return_status  => x_return_status,
6120        x_msg_count      => x_msg_count,
6121        x_msg_data       => x_msg_data,
6122        p_chr_id         => p_chr_id,
6123        p_deal_type      => p_deal_type,
6124        p_mla_no         => p_mla_no,
6125        p_cl_no          => p_cl_no
6126        );
6127 
6128      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6129         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6130      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6131         RAISE OKC_API.G_EXCEPTION_ERROR;
6132      END IF;
6133 
6134     -- program validation
6135     If(p_program_no is not null) Then
6136 
6137       l_program_id := null;
6138       open l_program_csr;
6139       fetch l_program_csr into l_program_id;
6140       close l_program_csr;
6141 
6142       If l_program_id is null Then
6143 
6144          x_return_status := OKC_API.g_ret_sts_error;
6145          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PROGRAM');
6146          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
6147                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6148                 , p_token1 => 'COL_NAME'
6149                 , p_token1_value => l_ak_prompt
6150                );
6151          raise OKC_API.G_EXCEPTION_ERROR;
6152 
6153       End If;
6154 
6155     End If;
6156 
6157 End If;
6158 
6159 
6160   If(l_rbr_code is not null and (l_rbr_code = 'CUSTOMER_CHANGE'  or  l_rbr_code = 'PRODUCT_CHANGE')) Then
6161 
6162     -- product changes
6163     lp_pdtv_rec.id := l_product_id;
6164     OKL_SETUPPRODUCTS_PUB.Getpdt_parameters
6165           (p_api_version   => p_api_version,
6166            p_init_msg_list => p_init_msg_list,
6167            x_return_status => x_return_status,
6168       	   x_no_data_found => x_no_data_found,
6169            x_msg_count     => x_msg_count,
6170            x_msg_data      => x_msg_data,
6171       	   p_pdtv_rec      => lp_pdtv_rec,
6172       	   p_product_date  => NULL,
6173       	   p_pdt_parameter_rec => lx_pdt_param_rec);
6174 
6175     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6176          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6177     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6178          RAISE OKC_API.G_EXCEPTION_ERROR;
6179     END IF;
6180 
6181     lp_chrv_rec.id := p_chr_id;
6182     lp_chrv_rec.contract_number := p_contract_number;
6183     lp_chrv_rec.short_description := p_chr_description;
6184     lp_chrv_rec.description :=  p_chr_description;
6185 
6186     If(l_rbr_code is not null and l_rbr_code = 'CUSTOMER_CHANGE') Then
6187 
6188      lp_chrv_rec.cust_acct_id := l_cust_acct_id;
6189     -- gboomina Bug 6493413 - Start
6190     -- populating Bill to Site Use Id as Bill To Address is updatable during
6191     -- Release Customer Change
6192      lp_chrv_rec.bill_to_site_use_id := p_bill_to_site_use_id;
6193     -- gboomina Bug 6493413 - End
6194 
6195     End IF;
6196 
6197     If(l_rbr_code is not null and l_rbr_code = 'PRODUCT_CHANGE') Then
6198 
6199      lp_khrv_rec.deal_type :=  lx_pdt_param_rec.Deal_Type;
6200 
6201     End IF;
6202 
6203     lp_khrv_rec.id := p_chr_id;
6204     lp_khrv_rec.khr_id := l_program_id;
6205 
6206     OKL_CONTRACT_PUB.update_contract_header(
6207         p_api_version    	=> p_api_version,
6208         p_init_msg_list  	=> p_init_msg_list,
6209         x_return_status  	=> x_return_status,
6210         x_msg_count      	=> x_msg_count,
6211         x_msg_data       	=> x_msg_data,
6212         p_restricted_update     => 'F',
6213         p_chrv_rec       	=> lp_chrv_rec,
6214         p_khrv_rec       	=> lp_khrv_rec,
6215         x_chrv_rec       	=> lx_chrv_rec,
6216         x_khrv_rec       	=> lx_khrv_rec);
6217 
6218       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6219          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6220       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6221          RAISE OKC_API.G_EXCEPTION_ERROR;
6222       END IF;
6223 
6224   END IF;
6225 
6226   If(l_rbr_code is not null and l_rbr_code = 'CUSTOMER_CHANGE' ) Then
6227 
6228         lp_lessee_cplv_rec.id := p_cust_id;
6229         lp_lessee_cplv_rec.dnz_chr_id := p_chr_id;
6230         lp_lessee_cplv_rec.chr_id := p_chr_id;
6231         lp_lessee_cplv_rec.object1_id1 := l_cust_id1;
6232         lp_lessee_cplv_rec.object1_id2 := l_cust_id2;
6233         lp_lessee_cplv_rec.rle_code := 'LESSEE';
6234         lp_lessee_cplv_rec.jtot_object1_code := 'OKX_PARTY';
6235 
6236       --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
6237       --              to update records in tables
6238       --              okc_k_party_roles_b and okl_k_party_roles
6239       /*
6240       OKL_OKC_MIGRATION_PVT.update_k_party_role(
6241              p_api_version    => p_api_version,
6242             p_init_msg_list  => p_init_msg_list,
6243             x_return_status  => x_return_status,
6244             x_msg_count      => x_msg_count,
6245             x_msg_data       => x_msg_data,
6246             p_cplv_rec       => lp_lessee_cplv_rec,
6247             x_cplv_rec       => lx_lessee_cplv_rec);
6248       */
6249 
6250       lp_kplv_rec.id := lp_lessee_cplv_rec.id;
6251       okl_k_party_roles_pvt.update_k_party_role(
6252         p_api_version      => p_api_version,
6253         p_init_msg_list    => p_init_msg_list,
6254         x_return_status    => x_return_status,
6255         x_msg_count        => x_msg_count,
6256         x_msg_data         => x_msg_data,
6257         p_cplv_rec         => lp_lessee_cplv_rec,
6258         x_cplv_rec         => lx_lessee_cplv_rec,
6259         p_kplv_rec         => lp_kplv_rec,
6260         x_kplv_rec         => lx_kplv_rec);
6261 
6262       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6263          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6264       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6265          RAISE OKC_API.G_EXCEPTION_ERROR;
6266       END IF;
6267 
6268    -- mla
6269    IF (p_gvr_id_mla IS NULL AND p_mla_no IS NOT NULL ) THEN
6270 
6271     lp_mla_gvev_rec.id := NULL;
6272     lp_mla_gvev_rec.dnz_chr_id := p_chr_id;
6273     lp_mla_gvev_rec.chr_id := p_chr_id;
6274     lp_mla_gvev_rec.chr_id_referred := l_mla_id;
6275     lp_mla_gvev_rec.copied_only_yn := 'N';
6276 
6277     OKL_OKC_MIGRATION_PVT.create_governance(
6278         p_api_version    => p_api_version,
6279         p_init_msg_list  => p_init_msg_list,
6280         x_return_status  => x_return_status,
6281         x_msg_count      => x_msg_count,
6282         x_msg_data       => x_msg_data,
6283         p_gvev_rec       => lp_mla_gvev_rec,
6284         x_gvev_rec       => lx_mla_gvev_rec);
6285 
6286       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6287          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6288       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6289          RAISE OKC_API.G_EXCEPTION_ERROR;
6290       END IF;
6291 
6292    ELSIF (p_gvr_id_mla IS NOT NULL AND p_mla_no IS NOT NULL ) THEN
6293 
6294     lp_mla_gvev_rec.id := p_gvr_id_mla;
6295     lp_mla_gvev_rec.dnz_chr_id := p_chr_id;
6296     lp_mla_gvev_rec.chr_id := p_chr_id;
6297     lp_mla_gvev_rec.chr_id_referred := l_mla_id;
6298     lp_mla_gvev_rec.copied_only_yn := 'N';
6299 
6300     OKL_OKC_MIGRATION_PVT.update_governance(
6301         p_api_version    => p_api_version,
6302         p_init_msg_list  => p_init_msg_list,
6303         x_return_status  => x_return_status,
6304         x_msg_count      => x_msg_count,
6305         x_msg_data       => x_msg_data,
6306         p_gvev_rec       => lp_mla_gvev_rec,
6307         x_gvev_rec       => lx_mla_gvev_rec);
6308 
6309       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6310          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6311       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6312          RAISE OKC_API.G_EXCEPTION_ERROR;
6313       END IF;
6314 
6315 
6316    ELSIF (p_gvr_id_mla IS NOT NULL AND p_mla_no IS NULL ) THEN
6317 
6318      lp_mla_gvev_rec.id := p_gvr_id_mla;
6319 
6320      OKL_OKC_MIGRATION_PVT.delete_governance(
6321         p_api_version    => p_api_version,
6322         p_init_msg_list  => p_init_msg_list,
6323         x_return_status  => x_return_status,
6324         x_msg_count      => x_msg_count,
6325         x_msg_data       => x_msg_data,
6326         p_gvev_rec       => lp_mla_gvev_rec);
6327 
6328       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6329          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6330       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6331          RAISE OKC_API.G_EXCEPTION_ERROR;
6332       END IF;
6333 
6334     END IF;
6335 
6336   END IF;
6337 
6338   If(l_rbr_code is not null and (l_rbr_code = 'CUSTOMER_CHANGE'  or  l_rbr_code = 'PRODUCT_CHANGE')) Then
6339 
6340    -- creditline
6341    IF (p_gvr_id_cl IS NULL AND p_cl_no IS NOT NULL ) THEN
6342 
6343     lp_cl_gvev_rec.id := NULL;
6344     lp_cl_gvev_rec.dnz_chr_id := p_chr_id;
6345     lp_cl_gvev_rec.chr_id := p_chr_id;
6346     lp_cl_gvev_rec.chr_id_referred := l_cl_id;
6347     lp_cl_gvev_rec.copied_only_yn := 'N';
6348 
6349     OKL_OKC_MIGRATION_PVT.create_governance(
6350         p_api_version    => p_api_version,
6351         p_init_msg_list  => p_init_msg_list,
6352         x_return_status  => x_return_status,
6353         x_msg_count      => x_msg_count,
6354         x_msg_data       => x_msg_data,
6355         p_gvev_rec       => lp_cl_gvev_rec,
6356         x_gvev_rec       => lx_cl_gvev_rec);
6357 
6358       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6359          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6360       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6361          RAISE OKC_API.G_EXCEPTION_ERROR;
6362       END IF;
6363 
6364    ELSIF (p_gvr_id_cl IS NOT NULL AND p_cl_no IS NOT NULL ) THEN
6365 
6366     lp_cl_gvev_rec.id := p_gvr_id_cl;
6367     lp_cl_gvev_rec.dnz_chr_id := p_chr_id;
6368     lp_cl_gvev_rec.chr_id := p_chr_id;
6369     lp_cl_gvev_rec.chr_id_referred := l_cl_id;
6370     lp_cl_gvev_rec.copied_only_yn := 'N';
6371 
6372     OKL_OKC_MIGRATION_PVT.update_governance(
6373         p_api_version    => p_api_version,
6374         p_init_msg_list  => p_init_msg_list,
6375         x_return_status  => x_return_status,
6376         x_msg_count      => x_msg_count,
6377         x_msg_data       => x_msg_data,
6378         p_gvev_rec       => lp_cl_gvev_rec,
6379         x_gvev_rec       => lx_cl_gvev_rec);
6380 
6381       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6382          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6383       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6384          RAISE OKC_API.G_EXCEPTION_ERROR;
6385       END IF;
6386 
6387    ELSIF (p_gvr_id_cl IS NOT NULL AND p_cl_no IS NULL ) THEN
6388 
6389     lp_cl_gvev_rec.id := p_gvr_id_cl;
6390 
6391     OKL_OKC_MIGRATION_PVT.delete_governance(
6392         p_api_version    => p_api_version,
6393         p_init_msg_list  => p_init_msg_list,
6394         x_return_status  => x_return_status,
6395         x_msg_count      => x_msg_count,
6396         x_msg_data       => x_msg_data,
6397         p_gvev_rec       => lp_cl_gvev_rec);
6398 
6399       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6400          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6401       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6402          RAISE OKC_API.G_EXCEPTION_ERROR;
6403       END IF;
6404 
6405    END IF;
6406 
6407     IF (p_program_no IS NULL) THEN
6408      l_program_id := null;
6409     END IF;
6410 
6411     old_khr_id := NULL;
6412     OPEN c_vp_exsts_csr;
6413     FETCH c_vp_exsts_csr INTO old_khr_id;
6414     CLOSE c_vp_exsts_csr;
6415 
6416     l_auth_org_id := null;
6417     l_inv_org_id := null;
6418 
6419     OPEN c_context_csr;
6420     FETCH c_context_csr INTO l_auth_org_id, l_inv_org_id;
6421     CLOSE c_context_csr;
6422 
6423     IF (p_program_no IS NOT NULL OR old_khr_id IS NOT NULL) THEN
6424 
6425        copy_rules
6426        (
6427         p_api_version       => p_api_version,
6428         p_init_msg_list     => p_init_msg_list,
6429         x_return_status     => x_return_status,
6430         x_msg_count         => x_msg_count,
6431         x_msg_data          => x_msg_data,
6432         p_old_khr_id        => old_khr_id,
6433         p_prog_override_yn  => p_program_yn, -- program flag yn
6434         p_source_id         => l_program_id,
6435         p_dest_id           => p_chr_id,
6436         p_org_id            => l_auth_org_id,
6437         p_organization_id   => l_inv_org_id
6438        );
6439 
6440       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6441          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6442       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6443          RAISE OKC_API.G_EXCEPTION_ERROR;
6444       END IF;
6445 
6446     END IF;
6447 
6448   END IF;
6449 
6450    If(l_rbr_code is not null and l_rbr_code = 'PRODUCT_CHANGE') Then
6451 
6452     -- product validation
6453     IF(p_product_name IS NULL) THEN
6454 	 x_return_status := OKC_API.g_ret_sts_error;
6455          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
6456          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
6457 				, p_msg_name => 'OKL_REQUIRED_VALUE'
6458 				, p_token1 => 'COL_NAME'
6459 				, p_token1_value => l_ak_prompt
6460 			   );
6461 	 RAISE OKC_API.G_EXCEPTION_ERROR;
6462     END IF;
6463 
6464     l_product_id := null;
6465     OPEN l_product_csr;
6466     FETCH l_product_csr INTO l_product_id;
6467     CLOSE l_product_csr;
6468 
6469     IF l_product_id IS NULL THEN
6470 	 x_return_status := OKC_API.g_ret_sts_error;
6471          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
6472          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
6473 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6474 				, p_token1 => 'COL_NAME'
6475 				, p_token1_value => l_ak_prompt
6476 			   );
6477 	 RAISE OKC_API.G_EXCEPTION_ERROR;
6478     END IF;
6479 
6480     -- product changes
6481     lp_pdtv_rec.id := l_product_id;
6482     OKL_SETUPPRODUCTS_PUB.Getpdt_parameters
6483           (p_api_version   => p_api_version,
6484            p_init_msg_list => p_init_msg_list,
6485            x_return_status => x_return_status,
6486       	   x_no_data_found => x_no_data_found,
6487            x_msg_count     => x_msg_count,
6488            x_msg_data      => x_msg_data,
6489       	   p_pdtv_rec      => lp_pdtv_rec,
6490       	   p_product_date  => NULL,
6491       	   p_pdt_parameter_rec => lx_pdt_param_rec);
6492 
6493     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6494          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6495     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6496          RAISE OKC_API.G_EXCEPTION_ERROR;
6497     END IF;
6498 
6499     lp_chrv_rec.id := p_chr_id;
6500     lp_khrv_rec.id := p_chr_id;
6501     lp_khrv_rec.deal_type :=  lx_pdt_param_rec.Deal_Type;
6502     lp_khrv_rec.pdt_id := l_product_id;
6503 
6504     OKL_CONTRACT_PUB.update_contract_header(
6505         p_api_version    	=> p_api_version,
6506         p_init_msg_list  	=> p_init_msg_list,
6507         x_return_status  	=> x_return_status,
6508         x_msg_count      	=> x_msg_count,
6509         x_msg_data       	=> x_msg_data,
6510         p_restricted_update     => 'F',
6511         p_chrv_rec       	=> lp_chrv_rec,
6512         p_khrv_rec       	=> lp_khrv_rec,
6513         x_chrv_rec       	=> lx_chrv_rec,
6514         x_khrv_rec       	=> lx_khrv_rec);
6515 
6516       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6517          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6518       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6519          RAISE OKC_API.G_EXCEPTION_ERROR;
6520       END IF;
6521 
6522    End if; -- end of rbr code block
6523 
6524    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count, x_msg_data	=> x_msg_data);
6525 
6526   EXCEPTION
6527     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6528       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6529 			p_api_name  => l_api_name,
6530 			p_pkg_name  => g_pkg_name,
6531 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
6532 			x_msg_count => x_msg_count,
6533 			x_msg_data  => x_msg_data,
6534 			p_api_type  => g_api_type);
6535 
6536     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6537       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6538 			p_api_name  => l_api_name,
6539 			p_pkg_name  => g_pkg_name,
6540 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
6541 			x_msg_count => x_msg_count,
6542 			x_msg_data  => x_msg_data,
6543 			p_api_type  => g_api_type);
6544 
6545     WHEN OTHERS THEN
6546       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6547 			p_api_name  => l_api_name,
6548 			p_pkg_name  => g_pkg_name,
6549 			p_exc_name  => 'OTHERS',
6550 			x_msg_count => x_msg_count,
6551 			x_msg_data  => x_msg_data,
6552 			p_api_type  => g_api_type);
6553   END;
6554 
6555 
6556   PROCEDURE update_deal(
6557       p_api_version                  IN NUMBER,
6558       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6559       x_return_status                OUT NOCOPY VARCHAR2,
6560       x_msg_count                    OUT NOCOPY NUMBER,
6561       x_msg_data                     OUT NOCOPY VARCHAR2,
6562       p_durv_rec                     IN  deal_rec_type,
6563       x_durv_rec                     OUT NOCOPY deal_rec_type
6564     ) AS
6565 
6566     l_api_name	       VARCHAR2(30) := 'update_deal';
6567     l_api_version      CONSTANT NUMBER	  := 1.0;
6568 
6569     l_template_yn      OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
6570     l_chr_type         OKC_K_HEADERS_B.CHR_TYPE%TYPE;
6571     l_contract_number  OKC_K_HEADERS_B.CHR_TYPE%TYPE;
6572     l_object_code      VARCHAR2(30) DEFAULT NULL;
6573     l_temp_yn          OKC_K_HEADERS_B.TEMPLATE_YN%TYPE := p_durv_rec.chr_template_yn;
6574 
6575     l_ak_prompt        AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
6576     l_chr_id	       NUMBER;
6577     row_cnt  NUMBER;
6578     l_rgp_id NUMBER := NULL;
6579     l_rul_id NUMBER := NULL;
6580 
6581     CURSOR l_qcl_csr IS
6582     SELECT qcl.id
6583     FROM  OKC_QA_CHECK_LISTS_TL qcl,
6584           OKC_QA_CHECK_LISTS_B qclv
6585     WHERE qclv.Id = qcl.id
6586     AND UPPER(qcl.name) = 'OKL LA QA CHECK LIST'
6587     AND qcl.LANGUAGE = USERENV('LANG');
6588 
6589 	-- START: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
6590 	/*
6591     CURSOR l_end_date_csr IS
6592     SELECT ADD_MONTHS(p_durv_rec.chr_start_date,p_durv_rec.khr_term_duration)-1
6593 	FROM dual;
6594 	*/
6595 	-- END: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
6596 
6597     CURSOR l_vers_version_csr IS
6598     SELECT vers.major_version||'.'||vers.minor_version
6599     FROM okc_k_vers_numbers_v vers
6600     WHERE vers.chr_id = p_durv_rec.chr_id;
6601 
6602     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
6603     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
6604 
6605     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
6606     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
6607 
6608     lp_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6609     lx_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6610 
6611     lp_lessor_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6612     lx_lessor_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6613     lp_ctcv_rec OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
6614     lx_ctcv_rec OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
6615 
6616     lp_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6617     lx_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6618 
6619     lp_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6620     lx_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6621 
6622     lp_larles_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6623     lx_larles_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6624     lp_larles_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6625     lx_larles_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6626 
6627     lp_LAREBL_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6628     lx_LAREBL_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6629     lp_LAREBL_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6630     lx_LAREBL_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6631 
6632     lp_LATOWN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6633     lx_LATOWN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6634     lp_LATOWN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6635     lx_LATOWN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6636 
6637     lp_LANNTF_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6638     lx_LANNTF_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6639     lp_LANNTF_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6640     lx_LANNTF_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6641 
6642     lp_LACPLN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6643     lx_LACPLN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6644     lp_LACPLN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6645     lx_LACPLN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6646 
6647     lp_LAPACT_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6648     lx_LAPACT_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6649     lp_LAPACT_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6650     lx_LAPACT_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6651 
6652     lp_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
6653     lp_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
6654     lx_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
6655     lx_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
6656 
6657     lp_clev_rec    okl_okc_migration_pvt.clev_rec_type;
6658     lp_klev_rec    okl_kle_pvt.klev_rec_type;
6659     lx_clev_rec    okl_okc_migration_pvt.clev_rec_type;
6660     lx_klev_rec    okl_kle_pvt.klev_rec_type;
6661 
6662     --Bug# 4558486
6663     lp_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
6664     lx_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
6665 
6666     X_NO_DATA_FOUND BOOLEAN := TRUE;
6667 
6668     old_khr_id  NUMBER;
6669 
6670     CURSOR c_vp_exsts_csr IS
6671       SELECT khr_id
6672       FROM okl_k_headers_full_v
6673       WHERE id = p_durv_rec.chr_id;
6674 
6675     l_fin_ast VARCHAR2(1) := 'N';
6676     l_lrls_yn VARCHAR2(1) := 'X';
6677 
6678     CURSOR chk_fin_ast_csr IS
6679     SELECT 'Y'
6680     FROM okc_k_headers_b CHR
6681     WHERE EXISTS (SELECT 1
6682               FROM okc_line_styles_b lse,
6683 	               okc_k_lines_b cle,
6684 	               okl_k_lines kle
6685               WHERE cle.dnz_chr_id = CHR.id
6686               AND cle.lse_id = lse.id
6687               AND cle.id = kle.id
6688               -- START: cklee/mvasudev,10/14/2005,bug#4300891 - (okl.g Bug#4307723)
6689               AND cle.sts_code <> 'ABANDONED'
6690               -- END: cklee/mvasudev,10/14/2005,bug#4300891 - (okl.g Bug#4307723)
6691               AND lse.lty_code = 'FREE_FORM1')
6692     AND CHR.id =  p_durv_rec.chr_id;
6693 
6694     CURSOR get_larles_csr IS
6695     SELECT rul.rule_information1
6696     FROM okc_rule_groups_b rgp,
6697          okc_rules_b rul
6698     WHERE rgp.id = rul.rgp_id
6699     AND rgp.rgd_code = 'LARLES'
6700     AND rul.rule_information_category = 'LARLES'
6701     AND rgp.dnz_chr_id = p_durv_rec.chr_id
6702     AND rgp.chr_id = p_durv_rec.chr_id
6703     AND rul.dnz_chr_id = p_durv_rec.chr_id;
6704 
6705     l_fin_ast_id NUMBER  := NULL;
6706     l_lacpln_yn VARCHAR2(1) := 'X';
6707 
6708     CURSOR get_fin_ast_csr IS
6709     SELECT cle.id
6710     FROM okc_line_styles_b lse,
6711     okc_k_lines_b cle,
6712     okl_k_lines kle
6713     WHERE cle.dnz_chr_id = p_durv_rec.chr_id
6714     AND cle.lse_id = lse.id
6715     AND cle.id = kle.id
6716     AND lse.lty_code = 'FREE_FORM1';
6717 
6718     CURSOR get_lacpln_csr IS
6719     SELECT rul.rule_information1
6720     FROM okc_rules_b rul,
6721          okc_rule_groups_b rgp
6722     WHERE rgp.id = rul.rgp_id
6723     AND rul.rule_information_category = 'LACPLN'
6724     AND rgp.RGD_CODE = 'LACPLN'
6725     AND rul.dnz_chr_id = rgp.dnz_chr_id
6726     AND rgp.dnz_chr_id = p_durv_rec.chr_id
6727     AND rgp.chr_id = p_durv_rec.chr_id;
6728 
6729     CURSOR is_re_lease_csr IS
6730     select chr.orig_system_source_code
6731     from okc_k_headers_b chr
6732     where chr.id = p_durv_rec.chr_id;
6733 
6734     l_orig_sys_src_code okc_k_headers_b.orig_system_source_code%type := null;
6735 
6736     --Bug# 4619575
6737     CURSOR l_ptmpl_csr (p_chr_id IN NUMBER) IS
6738     SELECT chrb.template_yn,
6739            khr.template_type_code
6740     FROM   okc_k_headers_b chrb,
6741            okl_k_headers khr
6742     WHERE   chrb.id = khr.id
6743     AND chrb.id = p_chr_id;
6744 
6745     CURSOR l_pqcl_csr IS
6746     SELECT qcl.id
6747     FROM  OKC_QA_CHECK_LISTS_TL qcl,
6748           OKC_QA_CHECK_LISTS_B qclv
6749     WHERE qclv.Id = qcl.id
6750     AND UPPER(qcl.name) = 'OKL KT for PA QA Checklist'
6751     AND qcl.LANGUAGE = 'US';
6752 
6753     CURSOR l_laqcl_csr IS
6754     SELECT qcl.id
6755     FROM  OKC_QA_CHECK_LISTS_TL qcl,
6756           OKC_QA_CHECK_LISTS_B qclv
6757     WHERE qclv.Id = qcl.id
6758     AND UPPER(qcl.name) = 'OKL KT FOR LA QA CHECKLIST'
6759     AND qcl.LANGUAGE = 'US';
6760 
6761     CURSOR c_lessor(p_chr_id NUMBER) IS
6762     SELECT id
6763     FROM okc_k_party_roles_b
6764     WHERE dnz_chr_id = p_chr_id
6765     AND rle_code ='LESSOR';
6766 
6767     l_template_type_code okl_k_headers.template_type_code%type;
6768     l_ptemplate_yn okc_k_headers_b.template_yn%type;
6769 
6770     CURSOR c_orig_pdt_csr(p_chr_id IN NUMBER) IS
6771     SELECT pdt_id
6772     FROM okl_k_headers
6773     WHERE id = p_chr_id;
6774 
6775     l_orig_pdt_rec c_orig_pdt_csr%ROWTYPE;
6776 
6777     CURSOR c_rates_csr(p_chr_id IN NUMBER,
6778                        p_parameter_type_code IN VARCHAR2) IS
6779     SELECT rate.effective_from_date
6780     FROM   okl_k_rate_params rate
6781     WHERE  rate.khr_id = p_chr_id
6782     AND    rate.parameter_type_code = p_parameter_type_code;
6783 
6784     l_count        NUMBER;
6785     l_krpdel_tbl   OKL_K_RATE_PARAMS_PVT.krpdel_tbl_type;
6786 
6787     /*
6788     -- mvasudev, 08/18/2004
6789     -- Added PROCEDURE to enable Business Event
6790     */
6791     PROCEDURE raise_business_event(
6792         p_chr_id IN NUMBER
6793        ,x_return_status OUT NOCOPY VARCHAR2
6794        )
6795     IS
6796       l_check VARCHAR2(1);
6797          l_parameter_list           wf_parameter_list_t;
6798     BEGIN
6799 
6800       x_return_status := Okc_Api.G_RET_STS_SUCCESS;
6801       -- Raise the event if it is a new Contract
6802 	     l_check := Okl_Lla_Util_Pvt.check_new_contract(p_chr_id);
6803       IF (l_check= OKL_API.G_TRUE) THEN
6804   		    wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
6805          OKL_WF_PVT.raise_event (p_api_version    => p_api_version,
6806                                  p_init_msg_list  => p_init_msg_list,
6807                                  x_return_status  => x_return_status,
6808                                  x_msg_count      => x_msg_count,
6809                                  x_msg_data       => x_msg_data,
6810                                  p_event_name     => G_WF_EVT_KHR_UPDATED,
6811                                  p_parameters     => l_parameter_list);
6812 
6813 	     END IF;
6814 
6815     EXCEPTION
6816     WHEN OTHERS THEN
6817       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6818       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6819     END raise_business_event;
6820 
6821     /*
6822     -- mvasudev, 08/17/2004
6823     -- END, PROCEDURE to enable Business Event
6824     */
6825 
6826 
6827   BEGIN
6828 
6829     IF okl_context.get_okc_org_id  IS NULL THEN
6830 	     l_chr_id := p_durv_rec.chr_id;
6831 	     okl_context.set_okc_org_context(p_chr_id => l_chr_id );
6832     END IF;
6833 
6834     x_return_status := OKC_API.START_ACTIVITY(p_api_name      => l_api_name,
6835                                               p_pkg_name      => g_pkg_name,
6836                                               p_init_msg_list => p_init_msg_list,
6837                                               l_api_version   => l_api_version,
6838                                               p_api_version   => p_api_version,
6839                                               p_api_type      => g_api_type,
6840                                               x_return_status => x_return_status);
6841 
6842     -- check if activity started successfully
6843     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6844       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6845     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6846       RAISE OKC_API.G_EXCEPTION_ERROR;
6847     END IF;
6848 
6849     -- sjalasut, initialize chr_id so that the Entity Object in the java layer can populate
6850     -- the if back in the VO
6851     x_durv_rec.chr_id := p_durv_rec.chr_id;
6852 
6853     l_orig_sys_src_code := null;
6854     Open is_re_lease_csr;
6855     Fetch is_re_lease_csr into l_orig_sys_src_code;
6856     Close is_re_lease_csr;
6857 
6858     If(l_orig_sys_src_code is not null and l_orig_sys_src_code = 'OKL_RELEASE') Then
6859 
6860       lp_chrv_rec.contract_number :=  p_durv_rec.chr_contract_number;
6861       lp_chrv_rec.description :=  p_durv_rec.chr_description;
6862       update_release_contract(p_api_version    	=> p_api_version,
6863         p_init_msg_list  	=> p_init_msg_list,
6864         x_return_status  	=> x_return_status,
6865         x_msg_count      	=> x_msg_count,
6866         x_msg_data       	=> x_msg_data,
6867         p_chr_id	        => p_durv_rec.chr_id,
6868         p_contract_number       => p_durv_rec.chr_contract_number,
6869         p_chr_description       => p_durv_rec.chr_description,
6870         p_cust_id	        => p_durv_rec.cust_id,
6871         p_customer_name         => p_durv_rec.cust_name,
6872         p_customer_id1          => p_durv_rec.cust_object1_id1,
6873         p_customer_acc_name     => p_durv_rec.customer_account,
6874         p_customer_acct_id1     => p_durv_rec.chr_cust_acct_id,
6875         p_product_name          => p_durv_rec.product_name,
6876         p_mla_id                => p_durv_rec.mla_gvr_chr_id_referred,
6877         p_mla_no                => p_durv_rec.mla_contract_number,
6878         p_gvr_id_mla            => p_durv_rec.mla_gvr_id,
6879         p_cl_id                 => p_durv_rec.cl_gvr_chr_id_referred,
6880         p_cl_no                 => p_durv_rec.cl_contract_number,
6881         p_gvr_id_cl             => p_durv_rec.cl_gvr_id,
6882         p_deal_type             => p_durv_rec.khr_deal_type,
6883         p_program_no            => p_durv_rec.program_contract_number,
6884         p_program_id            => p_durv_rec.khr_khr_id,
6885         p_program_yn            => p_durv_rec.khr_generate_accrual_yn,
6886         p_bill_to_site_use_id   => p_durv_rec.labill_labacc_billto -- Bug 6493413
6887         );
6888       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6889         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6890       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6891         RAISE OKC_API.G_EXCEPTION_ERROR;
6892       END IF;
6893     Else
6894 
6895       -- not a release contract, continue with the process
6896 
6897       x_durv_rec.cust_object1_id1         :=  p_durv_rec.cust_object1_id1;
6898       x_durv_rec.cust_object1_id2         :=  p_durv_rec.cust_object1_id2 ;
6899       x_durv_rec.cust_jtot_object1_code   :=  p_durv_rec.cust_jtot_object1_code ;
6900       x_durv_rec.chr_cust_acct_id         :=  p_durv_rec.chr_cust_acct_id;
6901       x_durv_rec.contact_object1_id1      :=  p_durv_rec.contact_object1_id1;
6902       x_durv_rec.contact_object1_id2      :=  p_durv_rec.contact_object1_id2;
6903       x_durv_rec.contact_jtot_object1_code:=  p_durv_rec.contact_jtot_object1_code;
6904       x_durv_rec.mla_gvr_chr_id_referred  :=  p_durv_rec.mla_gvr_chr_id_referred;
6905       x_durv_rec.khr_khr_id               :=  p_durv_rec.khr_khr_id;
6906       x_durv_rec.chr_currency_code        :=  p_durv_rec.chr_currency_code;
6907       x_durv_rec.cl_gvr_chr_id_referred   :=  p_durv_rec.cl_gvr_chr_id_referred;
6908       x_durv_rec.khr_pdt_id               :=  p_durv_rec.khr_pdt_id;
6909       x_durv_rec.product_description      :=  p_durv_rec.product_description;
6910       x_durv_rec.chr_TEMPLATE_YN      :=  p_durv_rec.chr_template_yn;
6911 
6912       okl_la_validation_util_pvt.validate_deal(
6913         p_api_version    	=> p_api_version,
6914         p_init_msg_list  	=> p_init_msg_list,
6915         x_return_status  	=> x_return_status,
6916         x_msg_count      	=> x_msg_count,
6917         x_msg_data       	=> x_msg_data,
6918         p_chr_id	        => p_durv_rec.chr_id,
6919         p_scs_code		=> 'LEASE',
6920         p_contract_number	=> p_durv_rec.chr_contract_number ,
6921         p_customer_id1          => x_durv_rec.cust_object1_id1,
6922         p_customer_id2          => x_durv_rec.cust_object1_id2,
6923         p_customer_code         => x_durv_rec.cust_jtot_object1_code,
6924         p_customer_name         => p_durv_rec.cust_name,
6925         p_chr_cust_acct_id      => x_durv_rec.chr_cust_acct_id,
6926         p_customer_acc_name     => p_durv_rec.customer_account,
6927         p_product_name          => p_durv_rec.product_name,
6928         p_product_id            => x_durv_rec.khr_pdt_id,
6929         p_product_desc          => x_durv_rec.product_description,
6930         p_contact_id1           => x_durv_rec.contact_object1_id1,
6931         p_contact_id2           => x_durv_rec.contact_object1_id2,
6932         p_contact_code          => x_durv_rec.contact_jtot_object1_code,
6933         p_contact_name          => p_durv_rec.contact_name,
6934         p_mla_no                => p_durv_rec.mla_contract_number,
6935         p_mla_id                => x_durv_rec.mla_gvr_chr_id_referred,
6936         p_program_no            => p_durv_rec.program_contract_number,
6937         p_program_id            => x_durv_rec.khr_khr_id,
6938         p_credit_line_no        => p_durv_rec.cl_contract_number,
6939         p_credit_line_id        => x_durv_rec.cl_gvr_chr_id_referred,
6940         p_currency_name         => p_durv_rec.currency_name,
6941         p_currency_code         => x_durv_rec.chr_currency_code,
6942         p_start_date            => p_durv_rec.chr_start_date,
6943         p_deal_type             => p_durv_rec.khr_deal_type
6944         );
6945 
6946       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6947          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6948       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6949          RAISE OKC_API.G_EXCEPTION_ERROR;
6950       END IF;
6951 
6952       -- product changes
6953       lp_pdtv_rec.id := x_durv_rec.khr_pdt_id;
6954       OKL_SETUPPRODUCTS_PUB.Getpdt_parameters(
6955            p_api_version   => p_api_version,
6956            p_init_msg_list => p_init_msg_list,
6957            x_return_status => x_return_status,
6958       	    x_no_data_found => x_no_data_found,
6959            x_msg_count     => x_msg_count,
6960            x_msg_data      => x_msg_data,
6961       	    p_pdtv_rec      => lp_pdtv_rec,
6962       	    p_product_date  => NULL,
6963       	    p_pdt_parameter_rec => lx_pdt_param_rec);
6964 
6965 
6966       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6967         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6968       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6969         RAISE OKC_API.G_EXCEPTION_ERROR;
6970       END IF;
6971 
6972       x_durv_rec.khr_deal_type := lx_pdt_param_rec.Deal_Type;
6973       x_durv_rec.r_latown_rule_information1 := lx_pdt_param_rec.tax_owner;
6974 
6975       -- validation for creditline contract
6976       okl_la_validation_util_pvt.validate_creditline(
6977         p_api_version    => p_api_version,
6978         p_init_msg_list  => p_init_msg_list,
6979         x_return_status  => x_return_status,
6980         x_msg_count      => x_msg_count,
6981         x_msg_data       => x_msg_data,
6982         p_chr_id         => p_durv_rec.chr_id,
6983         p_deal_type      => x_durv_rec.khr_deal_type,
6984         p_mla_no         => p_durv_rec.mla_contract_number,
6985         p_cl_no          => p_durv_rec.cl_contract_number
6986         );
6987 
6988      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6989        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6990      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6991        RAISE OKC_API.G_EXCEPTION_ERROR;
6992      END IF;
6993 
6994      -- update contract header
6995      lp_chrv_rec.id := p_durv_rec.chr_id;
6996      lp_khrv_rec.id := p_durv_rec.chr_id;
6997      lp_chrv_rec.contract_number :=  p_durv_rec.chr_contract_number;
6998      lp_chrv_rec.description :=  p_durv_rec.chr_description;
6999      lp_chrv_rec.short_description :=  p_durv_rec.chr_description;
7000      lp_chrv_rec.sts_code :=  p_durv_rec.chr_sts_code;
7001      lp_chrv_rec.start_date :=  p_durv_rec.chr_start_date;
7002      lp_chrv_rec.end_date :=  p_durv_rec.chr_end_date;
7003      lp_khrv_rec.term_duration :=  p_durv_rec.khr_term_duration;
7004      lp_chrv_rec.CUST_PO_NUMBER :=  p_durv_rec.chr_CUST_PO_NUMBER;
7005      lp_chrv_rec.INV_ORGANIZATION_ID :=  p_durv_rec.chr_INV_ORGANIZATION_ID;
7006      lp_chrv_rec.AUTHORING_ORG_ID :=  p_durv_rec.chr_AUTHORING_ORG_ID;
7007      lp_khrv_rec.GENERATE_ACCRUAL_YN :=  p_durv_rec.khr_GENERATE_ACCRUAL_YN;
7008      lp_khrv_rec.SYNDICATABLE_YN :=  p_durv_rec.khr_SYNDICATABLE_YN;
7009      lp_khrv_rec.PREFUNDING_ELIGIBLE_YN :=  p_durv_rec.khr_PREFUNDING_ELIGIBLE_YN;
7010      lp_khrv_rec.REVOLVING_CREDIT_YN :=  p_durv_rec.khr_REVOLVING_CREDIT_YN;
7011      lp_khrv_rec.CONVERTED_ACCOUNT_YN :=  p_durv_rec.khr_CONVERTED_ACCOUNT_YN;
7012      lp_khrv_rec.CREDIT_ACT_YN :=  p_durv_rec.khr_CREDIT_ACT_YN;
7013      lp_chrv_rec.TEMPLATE_YN :=  p_durv_rec.chr_TEMPLATE_YN;
7014      lp_chrv_rec.DATE_SIGNED :=  p_durv_rec.chr_DATE_SIGNED;
7015      lp_khrv_rec.DATE_DEAL_TRANSFERRED :=  p_durv_rec.khr_DATE_DEAL_TRANSFERRED;
7016      lp_khrv_rec.ACCEPTED_DATE :=  p_durv_rec.khr_ACCEPTED_DATE;
7017      lp_khrv_rec.EXPECTED_DELIVERY_DATE :=  p_durv_rec.khr_EXPECTED_DELIVERY_DATE;
7018      lp_khrv_rec.AMD_CODE :=  p_durv_rec.khr_AMD_CODE;
7019      -- lp_khrv_rec.DEAL_TYPE :=  p_durv_rec.khr_DEAL_TYPE;
7020      lp_khrv_rec.DEAL_TYPE :=  lx_pdt_param_rec.Deal_Type;
7021      lp_chrv_rec.currency_code :=  x_durv_rec.chr_currency_code;
7022      lp_khrv_rec.currency_conversion_type :=  p_durv_rec.khr_currency_conv_type;
7023      lp_khrv_rec.currency_conversion_rate :=  p_durv_rec.khr_currency_conv_rate;
7024      lp_khrv_rec.currency_conversion_date :=  p_durv_rec.khr_currency_conv_date;
7025      lp_khrv_rec.assignable_yn :=  p_durv_rec.khr_assignable_yn;
7026      lp_chrv_rec.cust_acct_id := x_durv_rec.chr_cust_acct_id;
7027      -- Added by dpsingh for LE Uptake
7028      lp_khrv_rec.legal_entity_id :=p_durv_rec.legal_entity_id;
7029      IF (p_durv_rec.khr_assignable_yn <> 'Y') THEN
7030       lp_khrv_rec.assignable_yn := 'N';
7031      END IF;
7032 
7033      -- Added for Bill-To site
7034      lp_chrv_rec.bill_to_site_use_id := p_durv_rec.labill_labacc_billto;
7035 
7036      -- sjalasut, added code below to populate the attribute columns for lp_khrv_rec
7037      -- changes made as part of Authoring OA Migration. START changes
7038      lp_khrv_rec.attribute_category := p_durv_rec.attribute_category;
7039      lp_khrv_rec.attribute1 := p_durv_rec.attribute1;
7040      lp_khrv_rec.attribute2 := p_durv_rec.attribute2;
7041      lp_khrv_rec.attribute3 := p_durv_rec.attribute3;
7042      lp_khrv_rec.attribute4 := p_durv_rec.attribute4;
7043      lp_khrv_rec.attribute5 := p_durv_rec.attribute5;
7044      lp_khrv_rec.attribute6 := p_durv_rec.attribute6;
7045      lp_khrv_rec.attribute7 := p_durv_rec.attribute7;
7046      lp_khrv_rec.attribute8 := p_durv_rec.attribute8;
7047      lp_khrv_rec.attribute9 := p_durv_rec.attribute9;
7048      lp_khrv_rec.attribute10 := p_durv_rec.attribute10;
7049      lp_khrv_rec.attribute11 := p_durv_rec.attribute11;
7050      lp_khrv_rec.attribute12 := p_durv_rec.attribute12;
7051      lp_khrv_rec.attribute13 := p_durv_rec.attribute13;
7052      lp_khrv_rec.attribute14 := p_durv_rec.attribute14;
7053      lp_khrv_rec.attribute15 := p_durv_rec.attribute15;
7054      -- sjalasut, added code above to populate the attribute columns for lp_khrv_rec
7055      -- changes made as part of Authoring OA Migration. END  changes
7056 
7057      l_template_yn := 'N';
7058      l_template_type_code := 'XXX';
7059      OPEN l_ptmpl_csr(p_chr_id => l_chr_id);
7060      FETCH l_ptmpl_csr INTO l_template_yn, l_template_type_code;
7061      CLOSE l_ptmpl_csr;
7062 
7063      --Bug# 4619575
7064      IF(l_ptemplate_yn = 'Y' AND l_template_type_code = 'PROGRAM') THEN
7065       OPEN  l_pqcl_csr;
7066       FETCH l_pqcl_csr INTO lp_chrv_rec.qcl_id;
7067       CLOSE l_pqcl_csr;
7068      --Bug# 4619575
7069      ELSIF(l_ptemplate_yn = 'Y' AND l_template_type_code = 'LEASEAPP') THEN
7070       OPEN  l_laqcl_csr;
7071       FETCH l_laqcl_csr INTO lp_chrv_rec.qcl_id;
7072       CLOSE l_laqcl_csr;
7073      ELSE
7074       OPEN  l_qcl_csr;
7075       FETCH l_qcl_csr INTO lp_chrv_rec.qcl_id;
7076       CLOSE l_qcl_csr;
7077      END IF;
7078 
7079     -- START: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
7080    /*
7081     OPEN  l_end_date_csr;
7082     FETCH l_end_date_csr INTO lp_chrv_rec.end_date;
7083     CLOSE l_end_date_csr;
7084    */
7085 	   lp_chrv_rec.end_date := OKL_LLA_UTIL_PVT.calculate_end_date(p_durv_rec.chr_start_date,p_durv_rec.khr_term_duration);
7086     -- END: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
7087 
7088     x_durv_rec.chr_end_date := lp_chrv_rec.end_date;
7089 
7090    /*
7091     If (lp_chrv_rec.TEMPLATE_YN is not null and lp_chrv_rec.TEMPLATE_YN = 'Y') then
7092       lp_chrv_rec.end_date := null;
7093       x_durv_rec.chr_end_date := null;
7094     End If;
7095    */
7096 
7097     IF (p_durv_rec.product_name IS NULL) THEN
7098      lp_khrv_rec.pdt_id :=  NULL;
7099      x_durv_rec.khr_pdt_id := NULL;
7100     ELSE
7101      lp_khrv_rec.pdt_id :=  x_durv_rec.khr_pdt_id;
7102     END IF;
7103 
7104     IF (p_durv_rec.program_contract_number IS NULL) THEN
7105      lp_khrv_rec.khr_id :=  NULL;
7106      x_durv_rec.khr_khr_id := NULL;
7107     END IF;
7108 
7109      old_khr_id := NULL;
7110      OPEN c_vp_exsts_csr;
7111      FETCH c_vp_exsts_csr INTO old_khr_id;
7112      CLOSE c_vp_exsts_csr;
7113 
7114      lp_khrv_rec.khr_id :=  x_durv_rec.khr_khr_id;
7115 
7116    IF( p_durv_rec.cust_id IS NOT NULL AND p_durv_rec.cust_name IS NULL AND l_temp_yn IS NOT NULL AND l_temp_yn = 'Y' ) THEN
7117     lp_chrv_rec.cust_acct_id := NULL;
7118    END IF;
7119 
7120    --Bug# 7440232 start
7121    OPEN c_orig_pdt_csr(p_chr_id => lp_chrv_rec.id);
7122    FETCH c_orig_pdt_csr INTO l_orig_pdt_rec;
7123    CLOSE c_orig_pdt_csr;
7124 
7125    IF (NVL(l_orig_pdt_rec.pdt_id, OKL_API.G_MISS_NUM) <>
7126        NVL(lp_khrv_rec.pdt_id, OKL_API.G_MISS_NUM)) THEN
7127 
7128      l_count := 0;
7129      FOR l_rates_rec IN c_rates_csr(lp_chrv_rec.id, 'ACTUAL') LOOP
7130         l_count := l_count + 1;
7131         l_krpdel_tbl(l_count).khr_id := lp_chrv_rec.id;
7132         l_krpdel_tbl(l_count).effective_from_date := l_rates_rec.effective_from_date;
7133         l_krpdel_tbl(l_count).rate_type := 'INTEREST_RATE_PARAMS';
7134      END LOOP;
7135 
7136      IF l_count > 0 THEN
7137         OKL_K_RATE_PARAMS_PVT.delete_k_rate_params(
7138           p_api_version    => p_api_version,
7139           p_init_msg_list  => p_init_msg_list,
7140           x_return_status  => x_return_status,
7141           x_msg_count  	   => x_msg_count,
7142           x_msg_data       => x_msg_data,
7143           p_krpdel_tbl     => l_krpdel_tbl);
7144 
7145         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7146            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7147         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7148            RAISE OKL_API.G_EXCEPTION_ERROR;
7149         END IF;
7150 
7151      END IF;
7152    END IF;
7153    --Bug# 7440232  end
7154 
7155     OKL_CONTRACT_PUB.update_contract_header(
7156         p_api_version    	=> p_api_version,
7157         p_init_msg_list  	=> p_init_msg_list,
7158         x_return_status  	=> x_return_status,
7159         x_msg_count      	=> x_msg_count,
7160         x_msg_data       	=> x_msg_data,
7161         p_restricted_update     => 'F',
7162         p_chrv_rec       	=> lp_chrv_rec,
7163         p_khrv_rec       	=> lp_khrv_rec,
7164         x_chrv_rec       	=> lx_chrv_rec,
7165         x_khrv_rec       	=> lx_khrv_rec);
7166 
7167       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7168          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7169       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7170          RAISE OKC_API.G_EXCEPTION_ERROR;
7171       END IF;
7172    /*
7173     open  l_vers_version_csr;
7174     fetch l_vers_version_csr into x_durv_rec.vers_version;
7175     close l_vers_version_csr;
7176    */
7177 -- lessee
7178 
7179     IF (p_durv_rec.cust_id IS NULL AND p_durv_rec.cust_name IS NOT NULL ) THEN
7180 
7181     lp_lessee_cplv_rec.id := NULL;
7182     lp_lessee_cplv_rec.dnz_chr_id := p_durv_rec.chr_id;
7183     lp_lessee_cplv_rec.chr_id := p_durv_rec.chr_id;
7184     lp_lessee_cplv_rec.object1_id1 := x_durv_rec.cust_object1_id1;
7185     lp_lessee_cplv_rec.object1_id2 := x_durv_rec.cust_object1_id2;
7186     lp_lessee_cplv_rec.rle_code := 'LESSEE';
7187     lp_lessee_cplv_rec.jtot_object1_code := p_durv_rec.cust_jtot_object1_code;
7188 
7189 
7190     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
7191     --              to create records in tables
7192     --              okc_k_party_roles_b and okl_k_party_roles
7193     /*
7194     OKL_OKC_MIGRATION_PVT.create_k_party_role(
7195         p_api_version    => p_api_version,
7196         p_init_msg_list  => p_init_msg_list,
7197         x_return_status  => x_return_status,
7198         x_msg_count      => x_msg_count,
7199         x_msg_data       => x_msg_data,
7200         p_cplv_rec       => lp_lessee_cplv_rec,
7201         x_cplv_rec       => lx_lessee_cplv_rec);
7202     */
7203 
7204     okl_k_party_roles_pvt.create_k_party_role(
7205       p_api_version      => p_api_version,
7206       p_init_msg_list    => p_init_msg_list,
7207       x_return_status    => x_return_status,
7208       x_msg_count        => x_msg_count,
7209       x_msg_data         => x_msg_data,
7210       p_cplv_rec         => lp_lessee_cplv_rec,
7211       x_cplv_rec         => lx_lessee_cplv_rec,
7212       p_kplv_rec         => lp_kplv_rec,
7213       x_kplv_rec         => lx_kplv_rec);
7214 
7215       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7216          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7217       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7218          RAISE OKC_API.G_EXCEPTION_ERROR;
7219       END IF;
7220 
7221       x_durv_rec.cust_id := lx_lessee_cplv_rec.id;
7222 
7223    ELSIF (p_durv_rec.cust_id IS NOT NULL AND p_durv_rec.cust_name IS NOT NULL ) THEN
7224 
7225     lp_lessee_cplv_rec.id := p_durv_rec.cust_id;
7226     lp_lessee_cplv_rec.dnz_chr_id := p_durv_rec.chr_id;
7227     lp_lessee_cplv_rec.chr_id := p_durv_rec.chr_id;
7228     lp_lessee_cplv_rec.object1_id1 := x_durv_rec.cust_object1_id1;
7229     lp_lessee_cplv_rec.object1_id2 := x_durv_rec.cust_object1_id2;
7230     lp_lessee_cplv_rec.rle_code := 'LESSEE';
7231     lp_lessee_cplv_rec.jtot_object1_code := p_durv_rec.cust_jtot_object1_code;
7232 
7233     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
7234     --              to update records in tables
7235     --              okc_k_party_roles_b and okl_k_party_roles
7236     /*
7237     OKL_OKC_MIGRATION_PVT.update_k_party_role(
7238         p_api_version    => p_api_version,
7239         p_init_msg_list  => p_init_msg_list,
7240         x_return_status  => x_return_status,
7241         x_msg_count      => x_msg_count,
7242         x_msg_data       => x_msg_data,
7243         p_cplv_rec       => lp_lessee_cplv_rec,
7244         x_cplv_rec       => lx_lessee_cplv_rec);
7245     */
7246 
7247     lp_kplv_rec.id := lp_lessee_cplv_rec.id;
7248     okl_k_party_roles_pvt.update_k_party_role(
7249       p_api_version      => p_api_version,
7250       p_init_msg_list    => p_init_msg_list,
7251       x_return_status    => x_return_status,
7252       x_msg_count        => x_msg_count,
7253       x_msg_data         => x_msg_data,
7254       p_cplv_rec         => lp_lessee_cplv_rec,
7255       x_cplv_rec         => lx_lessee_cplv_rec,
7256       p_kplv_rec         => lp_kplv_rec,
7257       x_kplv_rec         => lx_kplv_rec);
7258 
7259       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7260          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7261       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7262          RAISE OKC_API.G_EXCEPTION_ERROR;
7263       END IF;
7264 
7265    ELSIF( p_durv_rec.cust_id IS NOT NULL AND p_durv_rec.cust_name IS NULL ) THEN
7266 
7267     IF( l_temp_yn = 'Y' ) THEN
7268 
7269 	lp_lessee_cplv_rec.id := p_durv_rec.cust_id;
7270         lp_lessee_cplv_rec.dnz_chr_id := p_durv_rec.chr_id;
7271         lp_lessee_cplv_rec.chr_id := p_durv_rec.chr_id;
7272 
7273         --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
7274         --              to delete records in tables
7275         --              okc_k_party_roles_b and okl_k_party_roles
7276         /*
7277         OKL_OKC_MIGRATION_PVT.delete_k_party_role(
7278            p_api_version    => p_api_version,
7279            p_init_msg_list  => p_init_msg_list,
7280            x_return_status  => x_return_status,
7281            x_msg_count      => x_msg_count,
7282            x_msg_data       => x_msg_data,
7283            p_cplv_rec       => lp_lessee_cplv_rec);
7284         */
7285 
7286         lp_kplv_rec.id := lp_lessee_cplv_rec.id;
7287         OKL_K_PARTY_ROLES_PVT.delete_k_party_role(
7288           p_api_version   => p_api_version,
7289           p_init_msg_list => p_init_msg_list,
7290           x_return_status => x_return_status,
7291           x_msg_count     => x_msg_count,
7292           x_msg_data      => x_msg_data,
7293           p_cplv_rec      => lp_lessee_cplv_rec,
7294           p_kplv_rec      => lp_kplv_rec);
7295 
7296         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7297            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7298         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7299            RAISE OKC_API.G_EXCEPTION_ERROR;
7300         END IF;
7301 
7302        l_rgp_id := NULL;
7303        l_rul_id := NULL;
7304 
7305      END IF;
7306 
7307    END IF;
7308 
7309 -- contact
7310    IF (p_durv_rec.contact_id IS NULL AND p_durv_rec.contact_name IS NOT NULL ) THEN
7311 
7312     lp_ctcv_rec.id := NULL;
7313     OPEN c_lessor(p_durv_rec.chr_id);
7314     FETCH c_lessor INTO lp_ctcv_rec.cpl_id;
7315     CLOSE c_lessor;
7316     --lp_ctcv_rec.cpl_id := p_durv_rec.lessor_id;
7317     lp_ctcv_rec.dnz_chr_id := p_durv_rec.chr_id;
7318     lp_ctcv_rec.object1_id1 := x_durv_rec.contact_object1_id1;
7319     lp_ctcv_rec.object1_id2 := x_durv_rec.contact_object1_id2;
7320     lp_ctcv_rec.jtot_object1_code := p_durv_rec.contact_jtot_object1_code;
7321     lp_ctcv_rec.cro_code := 'SALESPERSON';
7322 
7323     OKL_OKC_MIGRATION_PVT.create_contact(
7324         p_api_version    => p_api_version,
7325         p_init_msg_list  => p_init_msg_list,
7326         x_return_status  => x_return_status,
7327         x_msg_count      => x_msg_count,
7328         x_msg_data       => x_msg_data,
7329         p_ctcv_rec       => lp_ctcv_rec,
7330         x_ctcv_rec       => lx_ctcv_rec);
7331 
7332       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7333          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7334       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7335          RAISE OKC_API.G_EXCEPTION_ERROR;
7336       END IF;
7337 
7338       x_durv_rec.contact_id := lx_ctcv_rec.id;
7339 
7340    ELSIF (p_durv_rec.contact_id IS NOT NULL AND p_durv_rec.contact_name IS NOT NULL ) THEN
7341 
7342     lp_ctcv_rec.id := p_durv_rec.contact_id;
7343     lp_ctcv_rec.cpl_id := lx_lessor_cplv_rec.id;
7344     lp_ctcv_rec.dnz_chr_id := p_durv_rec.chr_id;
7345     lp_ctcv_rec.object1_id1 := x_durv_rec.contact_object1_id1;
7346     lp_ctcv_rec.object1_id2 := x_durv_rec.contact_object1_id2;
7347     lp_ctcv_rec.jtot_object1_code := p_durv_rec.contact_jtot_object1_code;
7348     lp_ctcv_rec.cro_code := 'SALESPERSON';
7349 
7350     OKL_OKC_MIGRATION_PVT.update_contact(
7351         p_api_version    => p_api_version,
7352         p_init_msg_list  => p_init_msg_list,
7353         x_return_status  => x_return_status,
7354         x_msg_count      => x_msg_count,
7355         x_msg_data       => x_msg_data,
7356         p_ctcv_rec       => lp_ctcv_rec,
7357         x_ctcv_rec       => lx_ctcv_rec);
7358 
7359       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7360          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7361       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7362          RAISE OKC_API.G_EXCEPTION_ERROR;
7363       END IF;
7364 
7365    ELSIF (p_durv_rec.contact_id IS NOT NULL AND p_durv_rec.contact_name IS NULL ) THEN
7366 
7367     lp_ctcv_rec.id := p_durv_rec.contact_id;
7368     lp_ctcv_rec.cpl_id := lx_lessor_cplv_rec.id;
7369     lp_ctcv_rec.dnz_chr_id := p_durv_rec.chr_id;
7370     lp_ctcv_rec.object1_id1 := x_durv_rec.contact_object1_id1;
7371     lp_ctcv_rec.object1_id2 := x_durv_rec.contact_object1_id2;
7372     lp_ctcv_rec.jtot_object1_code := p_durv_rec.contact_jtot_object1_code;
7373     lp_ctcv_rec.cro_code := 'SALESPERSON';
7374 
7375     OKL_OKC_MIGRATION_PVT.delete_contact(
7376         p_api_version    => p_api_version,
7377         p_init_msg_list  => p_init_msg_list,
7378         x_return_status  => x_return_status,
7379         x_msg_count      => x_msg_count,
7380         x_msg_data       => x_msg_data,
7381         p_ctcv_rec       => lp_ctcv_rec);
7382 
7383       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7384          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7385       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7386          RAISE OKC_API.G_EXCEPTION_ERROR;
7387       END IF;
7388 
7389      x_durv_rec.contact_id := NULL;
7390 
7391    END IF;
7392 
7393 -- mla
7394    IF (p_durv_rec.mla_gvr_id IS NULL AND p_durv_rec.mla_contract_number IS NOT NULL ) THEN
7395 
7396     lp_mla_gvev_rec.id := NULL;
7397     lp_mla_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7398     lp_mla_gvev_rec.chr_id := p_durv_rec.chr_id;
7399     lp_mla_gvev_rec.chr_id_referred := x_durv_rec.mla_gvr_chr_id_referred;
7400     lp_mla_gvev_rec.copied_only_yn := 'N';
7401 
7402     OKL_OKC_MIGRATION_PVT.create_governance(
7403         p_api_version    => p_api_version,
7404         p_init_msg_list  => p_init_msg_list,
7405         x_return_status  => x_return_status,
7406         x_msg_count      => x_msg_count,
7407         x_msg_data       => x_msg_data,
7408         p_gvev_rec       => lp_mla_gvev_rec,
7409         x_gvev_rec       => lx_mla_gvev_rec);
7410 
7411       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7412          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7413       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7414          RAISE OKC_API.G_EXCEPTION_ERROR;
7415       END IF;
7416 
7417       x_durv_rec.mla_gvr_id := lx_mla_gvev_rec.id;
7418 
7419    ELSIF (p_durv_rec.mla_gvr_id IS NOT NULL AND p_durv_rec.mla_contract_number IS NOT NULL ) THEN
7420 
7421     lp_mla_gvev_rec.id := p_durv_rec.mla_gvr_id;
7422     lp_mla_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7423     lp_mla_gvev_rec.chr_id := p_durv_rec.chr_id;
7424     lp_mla_gvev_rec.chr_id_referred := x_durv_rec.mla_gvr_chr_id_referred;
7425     lp_mla_gvev_rec.copied_only_yn := 'N';
7426 
7427     OKL_OKC_MIGRATION_PVT.update_governance(
7428         p_api_version    => p_api_version,
7429         p_init_msg_list  => p_init_msg_list,
7430         x_return_status  => x_return_status,
7431         x_msg_count      => x_msg_count,
7432         x_msg_data       => x_msg_data,
7433         p_gvev_rec       => lp_mla_gvev_rec,
7434         x_gvev_rec       => lx_mla_gvev_rec);
7435 
7436       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7437          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7438       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7439          RAISE OKC_API.G_EXCEPTION_ERROR;
7440       END IF;
7441 
7442    ELSIF (p_durv_rec.mla_gvr_id IS NOT NULL AND p_durv_rec.mla_contract_number IS NULL ) THEN
7443 
7444     lp_mla_gvev_rec.id := p_durv_rec.mla_gvr_id;
7445     lp_mla_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7446     lp_mla_gvev_rec.chr_id := p_durv_rec.chr_id;
7447     lp_mla_gvev_rec.chr_id_referred := x_durv_rec.mla_gvr_chr_id_referred;
7448     lp_mla_gvev_rec.copied_only_yn := 'N';
7449 
7450     OKL_OKC_MIGRATION_PVT.delete_governance(
7451         p_api_version    => p_api_version,
7452         p_init_msg_list  => p_init_msg_list,
7453         x_return_status  => x_return_status,
7454         x_msg_count      => x_msg_count,
7455         x_msg_data       => x_msg_data,
7456         p_gvev_rec       => lp_mla_gvev_rec);
7457 
7458       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7459          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7460       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7461          RAISE OKC_API.G_EXCEPTION_ERROR;
7462       END IF;
7463 
7464       x_durv_rec.mla_gvr_id := NULL;
7465 
7466    END IF;
7467 
7468 -- creditline
7469    IF (p_durv_rec.cl_gvr_id IS NULL AND p_durv_rec.cl_contract_number IS NOT NULL ) THEN
7470 
7471     lp_cl_gvev_rec.id := NULL;
7472     lp_cl_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7473     lp_cl_gvev_rec.chr_id := p_durv_rec.chr_id;
7474     lp_cl_gvev_rec.chr_id_referred := x_durv_rec.cl_gvr_chr_id_referred;
7475     lp_cl_gvev_rec.copied_only_yn := 'N';
7476 
7477     OKL_OKC_MIGRATION_PVT.create_governance(
7478         p_api_version    => p_api_version,
7479         p_init_msg_list  => p_init_msg_list,
7480         x_return_status  => x_return_status,
7481         x_msg_count      => x_msg_count,
7482         x_msg_data       => x_msg_data,
7483         p_gvev_rec       => lp_cl_gvev_rec,
7484         x_gvev_rec       => lx_cl_gvev_rec);
7485 
7486       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7487          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7488       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7489          RAISE OKC_API.G_EXCEPTION_ERROR;
7490       END IF;
7491 
7492       x_durv_rec.cl_gvr_id := lx_cl_gvev_rec.id;
7493 
7494    ELSIF (p_durv_rec.cl_gvr_id IS NOT NULL AND p_durv_rec.cl_contract_number IS NOT NULL ) THEN
7495 
7496     lp_cl_gvev_rec.id := p_durv_rec.cl_gvr_id;
7497     lp_cl_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7498     lp_cl_gvev_rec.chr_id := p_durv_rec.chr_id;
7499     lp_cl_gvev_rec.chr_id_referred := x_durv_rec.cl_gvr_chr_id_referred;
7500     lp_cl_gvev_rec.copied_only_yn := 'N';
7501 
7502     OKL_OKC_MIGRATION_PVT.update_governance(
7503         p_api_version    => p_api_version,
7504         p_init_msg_list  => p_init_msg_list,
7505         x_return_status  => x_return_status,
7506         x_msg_count      => x_msg_count,
7507         x_msg_data       => x_msg_data,
7508         p_gvev_rec       => lp_cl_gvev_rec,
7509         x_gvev_rec       => lx_cl_gvev_rec);
7510 
7511       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7512          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7513       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7514          RAISE OKC_API.G_EXCEPTION_ERROR;
7515       END IF;
7516 
7517    ELSIF (p_durv_rec.cl_gvr_id IS NOT NULL AND p_durv_rec.cl_contract_number IS NULL ) THEN
7518 
7519     lp_cl_gvev_rec.id := p_durv_rec.cl_gvr_id;
7520     lp_cl_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7521     lp_cl_gvev_rec.chr_id := p_durv_rec.chr_id;
7522     lp_cl_gvev_rec.chr_id_referred := x_durv_rec.cl_gvr_chr_id_referred;
7523     lp_cl_gvev_rec.copied_only_yn := 'N';
7524 
7525     OKL_OKC_MIGRATION_PVT.delete_governance(
7526         p_api_version    => p_api_version,
7527         p_init_msg_list  => p_init_msg_list,
7528         x_return_status  => x_return_status,
7529         x_msg_count      => x_msg_count,
7530         x_msg_data       => x_msg_data,
7531         p_gvev_rec       => lp_cl_gvev_rec);
7532 
7533       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7534          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7535       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7536          RAISE OKC_API.G_EXCEPTION_ERROR;
7537       END IF;
7538 
7539       x_durv_rec.cl_gvr_id := NULL;
7540 
7541    END IF;
7542 
7543  -- rule group larles
7544    IF (p_durv_rec.rg_larles_id IS NULL) THEN
7545 
7546     lp_larles_rgpv_rec.id := NULL;
7547     lp_larles_rgpv_rec.rgd_code := 'LARLES';
7548     lp_larles_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7549     lp_larles_rgpv_rec.chr_id := p_durv_rec.chr_id;
7550     lp_larles_rgpv_rec.rgp_type := 'KRG';
7551 
7552     OKL_RULE_PUB.create_rule_group(
7553         p_api_version    => p_api_version,
7554         p_init_msg_list  => p_init_msg_list,
7555         x_return_status  => x_return_status,
7556         x_msg_count      => x_msg_count,
7557         x_msg_data       => x_msg_data,
7558         p_rgpv_rec       => lp_larles_rgpv_rec,
7559         x_rgpv_rec       => lx_larles_rgpv_rec);
7560 
7561       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7562          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7563       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7564          RAISE OKC_API.G_EXCEPTION_ERROR;
7565       END IF;
7566 
7567       x_durv_rec.rg_larles_id := lx_larles_rgpv_rec.id;
7568 
7569    ELSIF (p_durv_rec.rg_larles_id IS NOT NULL ) THEN
7570 
7571     lp_larles_rgpv_rec.id := p_durv_rec.rg_larles_id;
7572     lp_larles_rgpv_rec.rgd_code := 'LARLES';
7573     lp_larles_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7574     lp_larles_rgpv_rec.chr_id := p_durv_rec.chr_id;
7575     lp_larles_rgpv_rec.rgp_type := 'KRG';
7576 
7577     OKL_RULE_PUB.update_rule_group(
7578         p_api_version    => p_api_version,
7579         p_init_msg_list  => p_init_msg_list,
7580         x_return_status  => x_return_status,
7581         x_msg_count      => x_msg_count,
7582         x_msg_data       => x_msg_data,
7583         p_rgpv_rec       => lp_larles_rgpv_rec,
7584         x_rgpv_rec       => lx_larles_rgpv_rec);
7585 
7586       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7587          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7588       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7589          RAISE OKC_API.G_EXCEPTION_ERROR;
7590       END IF;
7591 
7592    END IF;
7593 
7594 -- rule larles
7595    IF (p_durv_rec.r_larles_id IS NULL ) THEN
7596 
7597     lp_larles_rulv_rec.id := NULL;
7598     lp_larles_rulv_rec.rgp_id := lx_larles_rgpv_rec.id;
7599     lp_larles_rulv_rec.rule_information_category := 'LARLES';
7600     lp_larles_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7601     lp_larles_rulv_rec.rule_information1 := p_durv_rec.r_larles_rule_information1;
7602     lp_larles_rulv_rec.WARN_YN := 'N';
7603     lp_larles_rulv_rec.STD_TEMPLATE_YN := 'N';
7604 
7605     OKL_RULE_PUB.create_rule(
7606         p_api_version    => p_api_version,
7607         p_init_msg_list  => p_init_msg_list,
7608         x_return_status  => x_return_status,
7609         x_msg_count      => x_msg_count,
7610         x_msg_data       => x_msg_data,
7611         p_rulv_rec       => lp_larles_rulv_rec,
7612         x_rulv_rec       => lx_larles_rulv_rec);
7613 
7614       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7615          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7616       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7617          RAISE OKC_API.G_EXCEPTION_ERROR;
7618       END IF;
7619 
7620       x_durv_rec.r_larles_id := lx_larles_rulv_rec.id;
7621 
7622   ELSIF (p_durv_rec.r_larles_id IS NOT NULL ) THEN
7623 
7624     l_fin_ast := 'N';
7625     OPEN chk_fin_ast_csr;
7626     FETCH chk_fin_ast_csr INTO l_fin_ast;
7627     CLOSE chk_fin_ast_csr;
7628 
7629     l_lrls_yn := 'X';
7630     OPEN get_larles_csr;
7631     FETCH get_larles_csr INTO l_lrls_yn;
7632     CLOSE get_larles_csr;
7633 
7634     IF( (l_fin_ast = 'Y') AND (NOT(p_durv_rec.r_larles_rule_information1 = l_lrls_yn))) THEN
7635 
7636          x_return_status := OKC_API.g_ret_sts_error;
7637          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
7638                 , p_msg_name => 'OKL_LLA_RELSE_AST'
7639                );
7640          RAISE OKC_API.G_EXCEPTION_ERROR;
7641 
7642     END IF;
7643 
7644     lp_larles_rulv_rec.id := p_durv_rec.r_larles_id;
7645     lp_larles_rulv_rec.rgp_id := lx_larles_rgpv_rec.id;
7646     lp_larles_rulv_rec.rule_information_category := 'LARLES';
7647     lp_larles_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7648     lp_larles_rulv_rec.rule_information1 := p_durv_rec.r_larles_rule_information1;
7649     lp_larles_rulv_rec.WARN_YN := 'N';
7650     lp_larles_rulv_rec.STD_TEMPLATE_YN := 'N';
7651 
7652     OKL_RULE_PUB.update_rule(
7653         p_api_version    => p_api_version,
7654         p_init_msg_list  => p_init_msg_list,
7655         x_return_status  => x_return_status,
7656         x_msg_count      => x_msg_count,
7657         x_msg_data       => x_msg_data,
7658         p_rulv_rec       => lp_larles_rulv_rec,
7659         x_rulv_rec       => lx_larles_rulv_rec);
7660 
7661     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7662          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7663       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7664          RAISE OKC_API.G_EXCEPTION_ERROR;
7665       END IF;
7666 
7667    END IF;
7668 
7669 -- rule group LAREBL
7670    IF (p_durv_rec.rg_LAREBL_id IS NULL) THEN
7671 
7672     lp_larebl_rgpv_rec.id := NULL;
7673     lp_larebl_rgpv_rec.rgd_code := 'LAREBL';
7674     lp_larebl_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7675     lp_larebl_rgpv_rec.chr_id := p_durv_rec.chr_id;
7676     lp_larebl_rgpv_rec.rgp_type := 'KRG';
7677 
7678     OKL_RULE_PUB.create_rule_group(
7679         p_api_version    => p_api_version,
7680         p_init_msg_list  => p_init_msg_list,
7681         x_return_status  => x_return_status,
7682         x_msg_count      => x_msg_count,
7683         x_msg_data       => x_msg_data,
7684         p_rgpv_rec       => lp_larebl_rgpv_rec,
7685         x_rgpv_rec       => lx_larebl_rgpv_rec);
7686 
7687       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7688          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7689       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7690          RAISE OKC_API.G_EXCEPTION_ERROR;
7691       END IF;
7692 
7693       x_durv_rec.rg_larebl_id := lx_larebl_rgpv_rec.id;
7694 
7695    ELSIF (p_durv_rec.rg_larebl_id IS NOT NULL ) THEN
7696 
7697     lp_larebl_rgpv_rec.id := p_durv_rec.rg_larebl_id;
7698     lp_larebl_rgpv_rec.rgd_code := 'LAREBL';
7699     lp_larebl_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7700     lp_larebl_rgpv_rec.chr_id := p_durv_rec.chr_id;
7701     lp_larebl_rgpv_rec.rgp_type := 'KRG';
7702 
7703     OKL_RULE_PUB.update_rule_group(
7704         p_api_version    => p_api_version,
7705         p_init_msg_list  => p_init_msg_list,
7706         x_return_status  => x_return_status,
7707         x_msg_count      => x_msg_count,
7708         x_msg_data       => x_msg_data,
7709         p_rgpv_rec       => lp_larebl_rgpv_rec,
7710         x_rgpv_rec       => lx_larebl_rgpv_rec);
7711 
7712       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7713          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7714       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7715          RAISE OKC_API.G_EXCEPTION_ERROR;
7716       END IF;
7717 
7718    END IF;
7719 
7720 -- rule larebl
7721    IF (p_durv_rec.r_larebl_id IS NULL) THEN
7722 
7723     lp_larebl_rulv_rec.id := NULL;
7724     lp_larebl_rulv_rec.rgp_id := lx_larebl_rgpv_rec.id;
7725     lp_larebl_rulv_rec.rule_information_category := 'LAREBL';
7726     lp_larebl_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7727     lp_larebl_rulv_rec.rule_information1 := p_durv_rec.r_larebl_rule_information1;
7728     lp_larebl_rulv_rec.WARN_YN := 'N';
7729     lp_larebl_rulv_rec.STD_TEMPLATE_YN := 'N';
7730 
7731     OKL_RULE_PUB.create_rule(
7732         p_api_version    => p_api_version,
7733         p_init_msg_list  => p_init_msg_list,
7734         x_return_status  => x_return_status,
7735         x_msg_count      => x_msg_count,
7736         x_msg_data       => x_msg_data,
7737         p_rulv_rec       => lp_larebl_rulv_rec,
7738         x_rulv_rec       => lx_larebl_rulv_rec);
7739 
7740       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7741          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7742       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7743          RAISE OKC_API.G_EXCEPTION_ERROR;
7744       END IF;
7745 
7746       x_durv_rec.r_larebl_id := lx_larebl_rulv_rec.id;
7747 
7748    ELSIF (p_durv_rec.r_larebl_id IS NOT NULL ) THEN
7749 
7750     lp_larebl_rulv_rec.id := p_durv_rec.r_larebl_id;
7751     lp_larebl_rulv_rec.rgp_id := lx_larebl_rgpv_rec.id;
7752     lp_larebl_rulv_rec.rule_information_category := 'LAREBL';
7753     lp_larebl_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7754     lp_larebl_rulv_rec.rule_information1 := p_durv_rec.r_larebl_rule_information1;
7755     lp_larebl_rulv_rec.WARN_YN := 'N';
7756     lp_larebl_rulv_rec.STD_TEMPLATE_YN := 'N';
7757 
7758     OKL_RULE_PUB.update_rule(
7759         p_api_version    => p_api_version,
7760         p_init_msg_list  => p_init_msg_list,
7761         x_return_status  => x_return_status,
7762         x_msg_count      => x_msg_count,
7763         x_msg_data       => x_msg_data,
7764         p_rulv_rec       => lp_larebl_rulv_rec,
7765         x_rulv_rec       => lx_larebl_rulv_rec);
7766 
7767       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7768          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7769       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7770          RAISE OKC_API.G_EXCEPTION_ERROR;
7771       END IF;
7772    ELSIF (p_durv_rec.r_larebl_id IS NOT NULL AND p_durv_rec.r_larebl_rule_information1 IS NULL) THEN
7773 
7774     lp_larebl_rulv_rec.id := p_durv_rec.r_larebl_id;
7775     lp_larebl_rulv_rec.rgp_id := lx_larebl_rgpv_rec.id;
7776     lp_larebl_rulv_rec.rule_information_category := 'LAREBL';
7777     lp_larebl_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7778     lp_larebl_rulv_rec.rule_information1 := p_durv_rec.r_larebl_rule_information1;
7779     lp_larebl_rulv_rec.WARN_YN := 'N';
7780     lp_larebl_rulv_rec.STD_TEMPLATE_YN := 'N';
7781 
7782     OKL_RULE_PUB.delete_rule(
7783         p_api_version    => p_api_version,
7784         p_init_msg_list  => p_init_msg_list,
7785         x_return_status  => x_return_status,
7786         x_msg_count      => x_msg_count,
7787         x_msg_data       => x_msg_data,
7788         p_rulv_rec       => lp_larebl_rulv_rec);
7789 
7790       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7791          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7792       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7793          RAISE OKC_API.G_EXCEPTION_ERROR;
7794       END IF;
7795 
7796     x_durv_rec.r_larebl_id := NULL;
7797 
7798    END IF;
7799 
7800  -- rule group lanntf
7801     IF (p_durv_rec.rg_lanntf_id IS NULL) THEN
7802 
7803      lp_lanntf_rgpv_rec.id := NULL;
7804      lp_lanntf_rgpv_rec.rgd_code := 'LANNTF';
7805      lp_lanntf_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7806      lp_lanntf_rgpv_rec.chr_id := p_durv_rec.chr_id;
7807      lp_lanntf_rgpv_rec.rgp_type := 'KRG';
7808 
7809      OKL_RULE_PUB.create_rule_group(
7810          p_api_version    => p_api_version,
7811          p_init_msg_list  => p_init_msg_list,
7812          x_return_status  => x_return_status,
7813          x_msg_count      => x_msg_count,
7814          x_msg_data       => x_msg_data,
7815          p_rgpv_rec       => lp_lanntf_rgpv_rec,
7816          x_rgpv_rec       => lx_lanntf_rgpv_rec);
7817 
7818        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7819           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7820        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7821           RAISE OKC_API.G_EXCEPTION_ERROR;
7822        END IF;
7823 
7824         x_durv_rec.rg_lanntf_id := lx_lanntf_rgpv_rec.id;
7825 
7826     ELSIF (p_durv_rec.rg_lanntf_id IS NOT NULL ) THEN
7827 
7828      lp_lanntf_rgpv_rec.id := p_durv_rec.rg_lanntf_id;
7829      lp_lanntf_rgpv_rec.rgd_code := 'LANNTF';
7830      lp_lanntf_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7831      lp_lanntf_rgpv_rec.chr_id := p_durv_rec.chr_id;
7832      lp_lanntf_rgpv_rec.rgp_type := 'KRG';
7833 
7834      OKL_RULE_PUB.update_rule_group(
7835          p_api_version    => p_api_version,
7836          p_init_msg_list  => p_init_msg_list,
7837          x_return_status  => x_return_status,
7838          x_msg_count      => x_msg_count,
7839          x_msg_data       => x_msg_data,
7840          p_rgpv_rec       => lp_lanntf_rgpv_rec,
7841          x_rgpv_rec       => lx_lanntf_rgpv_rec);
7842 
7843        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7844           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7845        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7846           RAISE OKC_API.G_EXCEPTION_ERROR;
7847        END IF;
7848 
7849     END IF;
7850 
7851  -- rule lanntf
7852     IF (p_durv_rec.r_lanntf_id IS NULL) THEN
7853 
7854      lp_lanntf_rulv_rec.id := NULL;
7855      lp_lanntf_rulv_rec.rgp_id := lx_lanntf_rgpv_rec.id;
7856      lp_lanntf_rulv_rec.rule_information_category := 'LANNTF';
7857      lp_lanntf_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7858      lp_lanntf_rulv_rec.rule_information1 := p_durv_rec.r_lanntf_rule_information1;
7859      lp_lanntf_rulv_rec.WARN_YN := 'N';
7860      lp_lanntf_rulv_rec.STD_TEMPLATE_YN := 'N';
7861 
7862      OKL_RULE_PUB.create_rule(
7863          p_api_version    => p_api_version,
7864          p_init_msg_list  => p_init_msg_list,
7865          x_return_status  => x_return_status,
7866          x_msg_count      => x_msg_count,
7867          x_msg_data       => x_msg_data,
7868          p_rulv_rec       => lp_lanntf_rulv_rec,
7869          x_rulv_rec       => lx_lanntf_rulv_rec);
7870 
7871        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7872           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7873        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7874           RAISE OKC_API.G_EXCEPTION_ERROR;
7875        END IF;
7876 
7877        x_durv_rec.r_lanntf_id := lx_lanntf_rulv_rec.id;
7878 
7879     ELSIF (p_durv_rec.r_lanntf_id IS NOT NULL ) THEN
7880 
7881      lp_lanntf_rulv_rec.id := p_durv_rec.r_lanntf_id;
7882      lp_lanntf_rulv_rec.rgp_id := lx_lanntf_rgpv_rec.id;
7883      lp_lanntf_rulv_rec.rule_information_category := 'LANNTF';
7884      lp_lanntf_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7885      lp_lanntf_rulv_rec.rule_information1 := p_durv_rec.r_lanntf_rule_information1;
7886      lp_lanntf_rulv_rec.WARN_YN := 'N';
7887      lp_lanntf_rulv_rec.STD_TEMPLATE_YN := 'N';
7888 
7889      OKL_RULE_PUB.update_rule(
7890          p_api_version    => p_api_version,
7891          p_init_msg_list  => p_init_msg_list,
7892          x_return_status  => x_return_status,
7893          x_msg_count      => x_msg_count,
7894          x_msg_data       => x_msg_data,
7895          p_rulv_rec       => lp_lanntf_rulv_rec,
7896          x_rulv_rec       => lx_lanntf_rulv_rec);
7897 
7898        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7899           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7900        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7901           RAISE OKC_API.G_EXCEPTION_ERROR;
7902        END IF;
7903 
7904     END IF;
7905 
7906   -- rule group lacpln
7907     IF (p_durv_rec.rg_lacpln_id IS NULL) THEN
7908 
7909      lp_lacpln_rgpv_rec.id := NULL;
7910      lp_lacpln_rgpv_rec.rgd_code := 'LACPLN';
7911      lp_lacpln_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7912      lp_lacpln_rgpv_rec.chr_id := p_durv_rec.chr_id;
7913      lp_lacpln_rgpv_rec.rgp_type := 'KRG';
7914 
7915      OKL_RULE_PUB.create_rule_group(
7916          p_api_version    => p_api_version,
7917          p_init_msg_list  => p_init_msg_list,
7918          x_return_status  => x_return_status,
7919          x_msg_count      => x_msg_count,
7920          x_msg_data       => x_msg_data,
7921          p_rgpv_rec       => lp_lacpln_rgpv_rec,
7922          x_rgpv_rec       => lx_lacpln_rgpv_rec);
7923 
7924        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7925           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7926        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7927           RAISE OKC_API.G_EXCEPTION_ERROR;
7928        END IF;
7929 
7930        x_durv_rec.rg_lacpln_id := lx_lacpln_rgpv_rec.id;
7931 
7932     ELSIF (p_durv_rec.rg_lacpln_id IS NOT NULL ) THEN
7933 
7934      lp_lacpln_rgpv_rec.id := p_durv_rec.rg_lacpln_id;
7935      lp_lacpln_rgpv_rec.rgd_code := 'LACPLN';
7936      lp_lacpln_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7937      lp_lacpln_rgpv_rec.chr_id := p_durv_rec.chr_id;
7938      lp_lacpln_rgpv_rec.rgp_type := 'KRG';
7939 
7940      OKL_RULE_PUB.update_rule_group(
7941          p_api_version    => p_api_version,
7942          p_init_msg_list  => p_init_msg_list,
7943          x_return_status  => x_return_status,
7944          x_msg_count      => x_msg_count,
7945          x_msg_data       => x_msg_data,
7946          p_rgpv_rec       => lp_lacpln_rgpv_rec,
7947          x_rgpv_rec       => lx_lacpln_rgpv_rec);
7948 
7949        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7950           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7951        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7952           RAISE OKC_API.G_EXCEPTION_ERROR;
7953        END IF;
7954 
7955     END IF;
7956 
7957  -- rule lacpln
7958     IF (p_durv_rec.r_lacpln_id IS NULL) THEN
7959 
7960      lp_lacpln_rulv_rec.id := NULL;
7961      lp_lacpln_rulv_rec.rgp_id := lx_lacpln_rgpv_rec.id;
7962      lp_lacpln_rulv_rec.rule_information_category := 'LACPLN';
7963      lp_lacpln_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7964      lp_lacpln_rulv_rec.rule_information1 := p_durv_rec.r_lacpln_rule_information1;
7965      lp_lacpln_rulv_rec.WARN_YN := 'N';
7966      lp_lacpln_rulv_rec.STD_TEMPLATE_YN := 'N';
7967 
7968      OKL_RULE_PUB.create_rule(
7969          p_api_version    => p_api_version,
7970          p_init_msg_list  => p_init_msg_list,
7971          x_return_status  => x_return_status,
7972          x_msg_count      => x_msg_count,
7973          x_msg_data       => x_msg_data,
7974          p_rulv_rec       => lp_lacpln_rulv_rec,
7975          x_rulv_rec       => lx_lacpln_rulv_rec);
7976 
7977        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7978           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7979        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7980           RAISE OKC_API.G_EXCEPTION_ERROR;
7981        END IF;
7982 
7983        x_durv_rec.r_lacpln_id := lx_lacpln_rulv_rec.id;
7984 
7985     ELSIF (p_durv_rec.r_lacpln_id IS NOT NULL ) THEN
7986 
7987     l_lacpln_yn := 'X';
7988 
7989     OPEN get_lacpln_csr;
7990     FETCH get_lacpln_csr INTO l_lacpln_yn;
7991     CLOSE get_lacpln_csr;
7992 
7993     IF( l_lacpln_yn = 'Y' AND  NVL(p_durv_rec.r_lacpln_rule_information1,'N') = 'N') THEN
7994 
7995 	l_fin_ast_id := NULL;
7996         -- update capitalized interest to null
7997 	FOR l_get_fin_ast_csr IN get_fin_ast_csr LOOP
7998 
7999 	  -- l_fin_ast_id := l_get_fin_ast_csr.id;
8000 	  lp_klev_rec.id := l_get_fin_ast_csr.id;
8001 	  lp_clev_rec.id := l_get_fin_ast_csr.id;
8002           lp_klev_rec.capitalized_interest := NULL;
8003 
8004           OKL_CONTRACT_PUB.update_contract_line(
8005             p_api_version    => p_api_version,
8006             p_init_msg_list  => p_init_msg_list,
8007             x_return_status  => x_return_status,
8008             x_msg_count      => x_msg_count,
8009             x_msg_data       => x_msg_data,
8010 	    p_clev_rec       => lp_clev_rec,
8011 	    p_klev_rec       => lp_klev_rec,
8012 	    p_edit_mode      => 'N',
8013 	    x_clev_rec       => lx_clev_rec,
8014 	    x_klev_rec       => lx_klev_rec);
8015 
8016           IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8017              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8018           ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8019              RAISE OKC_API.G_EXCEPTION_ERROR;
8020           END IF;
8021 
8022  	END LOOP;
8023 
8024      END IF;
8025 
8026      lp_lacpln_rulv_rec.id := p_durv_rec.r_lacpln_id;
8027      lp_lacpln_rulv_rec.rgp_id := lx_lacpln_rgpv_rec.id;
8028      lp_lacpln_rulv_rec.rule_information_category := 'LACPLN';
8029      lp_lacpln_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
8030      lp_lacpln_rulv_rec.rule_information1 := p_durv_rec.r_lacpln_rule_information1;
8031      lp_lacpln_rulv_rec.WARN_YN := 'N';
8032      lp_lacpln_rulv_rec.STD_TEMPLATE_YN := 'N';
8033 
8034      OKL_RULE_PUB.update_rule(
8035          p_api_version    => p_api_version,
8036          p_init_msg_list  => p_init_msg_list,
8037          x_return_status  => x_return_status,
8038          x_msg_count      => x_msg_count,
8039          x_msg_data       => x_msg_data,
8040          p_rulv_rec       => lp_lacpln_rulv_rec,
8041          x_rulv_rec       => lx_lacpln_rulv_rec);
8042 
8043        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8044           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8045        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8046           RAISE OKC_API.G_EXCEPTION_ERROR;
8047        END IF;
8048 
8049     END IF;
8050 
8051 
8052  -- rule group lapact
8053     IF (p_durv_rec.rg_lapact_id IS NULL) THEN
8054 
8055      lp_lapact_rgpv_rec.id := NULL;
8056      lp_lapact_rgpv_rec.rgd_code := 'LAPACT';
8057      lp_lapact_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
8058      lp_lapact_rgpv_rec.chr_id := p_durv_rec.chr_id;
8059      lp_lapact_rgpv_rec.rgp_type := 'KRG';
8060 
8061      OKL_RULE_PUB.create_rule_group(
8062          p_api_version    => p_api_version,
8063          p_init_msg_list  => p_init_msg_list,
8064          x_return_status  => x_return_status,
8065          x_msg_count      => x_msg_count,
8066          x_msg_data       => x_msg_data,
8067          p_rgpv_rec       => lp_lapact_rgpv_rec,
8068          x_rgpv_rec       => lx_lapact_rgpv_rec);
8069 
8070        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8071           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8072        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8073           RAISE OKC_API.G_EXCEPTION_ERROR;
8074        END IF;
8075 
8076        x_durv_rec.rg_lapact_id := lx_lapact_rgpv_rec.id;
8077 
8078     ELSIF (p_durv_rec.rg_lapact_id IS NOT NULL ) THEN
8079 
8080      lp_lapact_rgpv_rec.id := p_durv_rec.rg_lapact_id;
8081      lp_lapact_rgpv_rec.rgd_code := 'LAPACT';
8082      lp_lapact_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
8083      lp_lapact_rgpv_rec.chr_id := p_durv_rec.chr_id;
8084      lp_lapact_rgpv_rec.rgp_type := 'KRG';
8085 
8086      OKL_RULE_PUB.update_rule_group(
8087          p_api_version    => p_api_version,
8088          p_init_msg_list  => p_init_msg_list,
8089          x_return_status  => x_return_status,
8090          x_msg_count      => x_msg_count,
8091          x_msg_data       => x_msg_data,
8092          p_rgpv_rec       => lp_lapact_rgpv_rec,
8093          x_rgpv_rec       => lx_lapact_rgpv_rec);
8094 
8095        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8096           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8097        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8098           RAISE OKC_API.G_EXCEPTION_ERROR;
8099        END IF;
8100 
8101     END IF;
8102 
8103  -- rule lapact
8104     IF (p_durv_rec.r_lapact_id IS NULL) THEN
8105 
8106      lp_lapact_rulv_rec.id := NULL;
8107      lp_lapact_rulv_rec.rgp_id := lx_lapact_rgpv_rec.id;
8108      lp_lapact_rulv_rec.rule_information_category := 'LAPACT';
8109      lp_lapact_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
8110      lp_lapact_rulv_rec.rule_information1 := p_durv_rec.r_lapact_rule_information1;
8111      lp_lapact_rulv_rec.WARN_YN := 'N';
8112      lp_lapact_rulv_rec.STD_TEMPLATE_YN := 'N';
8113 
8114      OKL_RULE_PUB.create_rule(
8115          p_api_version    => p_api_version,
8116          p_init_msg_list  => p_init_msg_list,
8117          x_return_status  => x_return_status,
8118          x_msg_count      => x_msg_count,
8119          x_msg_data       => x_msg_data,
8120          p_rulv_rec       => lp_lapact_rulv_rec,
8121          x_rulv_rec       => lx_lapact_rulv_rec);
8122 
8123        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8124           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8125        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8126           RAISE OKC_API.G_EXCEPTION_ERROR;
8127        END IF;
8128 
8129        x_durv_rec.r_lapact_id := lx_lapact_rulv_rec.id;
8130 
8131     ELSIF (p_durv_rec.r_lapact_id IS NOT NULL ) THEN
8132 
8133      lp_lapact_rulv_rec.id := p_durv_rec.r_lapact_id;
8134      lp_lapact_rulv_rec.rgp_id := lx_lapact_rgpv_rec.id;
8135      lp_lapact_rulv_rec.rule_information_category := 'LAPACT';
8136      lp_lapact_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
8137      lp_lapact_rulv_rec.rule_information1 := p_durv_rec.r_lapact_rule_information1;
8138      lp_lapact_rulv_rec.WARN_YN := 'N';
8139      lp_lapact_rulv_rec.STD_TEMPLATE_YN := 'N';
8140 
8141      OKL_RULE_PUB.update_rule(
8142          p_api_version    => p_api_version,
8143          p_init_msg_list  => p_init_msg_list,
8144          x_return_status  => x_return_status,
8145          x_msg_count      => x_msg_count,
8146          x_msg_data       => x_msg_data,
8147          p_rulv_rec       => lp_lapact_rulv_rec,
8148          x_rulv_rec       => lx_lapact_rulv_rec);
8149 
8150        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8151           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8152        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8153           RAISE OKC_API.G_EXCEPTION_ERROR;
8154        END IF;
8155 
8156     END IF;
8157 
8158   IF okl_context.get_okc_org_id  IS NULL THEN
8159 	l_chr_id := p_durv_rec.chr_id;
8160 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
8161   END IF;
8162 
8163   IF (p_durv_rec.program_contract_number IS NOT NULL OR old_khr_id IS NOT NULL) THEN
8164 
8165        copy_rules(
8166         p_api_version       => p_api_version,
8167         p_init_msg_list     => p_init_msg_list,
8168         x_return_status     => x_return_status,
8169         x_msg_count         => x_msg_count,
8170         x_msg_data          => x_msg_data,
8171         p_old_khr_id        => old_khr_id,
8172         p_prog_override_yn  => p_durv_rec.khr_generate_accrual_yn, -- program flag yn
8173         p_source_id         => x_durv_rec.khr_khr_id, -- program id
8174         p_dest_id           => p_durv_rec.chr_id,
8175         p_org_id            => okl_context.get_okc_org_id,
8176         p_organization_id   => okl_context.get_okc_organization_id
8177         );
8178 
8179       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8180          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8181       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8182          RAISE OKC_API.G_EXCEPTION_ERROR;
8183       END IF;
8184 
8185    END IF;
8186 
8187  End if; --close of release if block
8188    /*
8189    -- mvasudev, 08/17/2004
8190    -- Code change to enable Business Event
8191    */
8192 	raise_business_event(p_chr_id        => p_durv_rec.chr_id
8193 	                    ,x_return_status => x_return_status);
8194     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8195        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8196     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8197        RAISE OKL_API.G_EXCEPTION_ERROR;
8198     END IF;
8199 
8200    /*
8201    -- mvasudev, 08/17/2004
8202    -- END, Code change to enable Business Event
8203    */
8204 
8205 
8206   OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,	 x_msg_data	=> x_msg_data);
8207 
8208   EXCEPTION
8209     WHEN OKC_API.G_EXCEPTION_ERROR THEN
8210       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8211 			p_api_name  => l_api_name,
8212 			p_pkg_name  => g_pkg_name,
8213 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
8214 			x_msg_count => x_msg_count,
8215 			x_msg_data  => x_msg_data,
8216 			p_api_type  => g_api_type);
8217 
8218     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8219       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8220 			p_api_name  => l_api_name,
8221 			p_pkg_name  => g_pkg_name,
8222 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
8223 			x_msg_count => x_msg_count,
8224 			x_msg_data  => x_msg_data,
8225 			p_api_type  => g_api_type);
8226 
8227     WHEN OTHERS THEN
8228       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8229 			p_api_name  => l_api_name,
8230 			p_pkg_name  => g_pkg_name,
8231 			p_exc_name  => 'OTHERS',
8232 			x_msg_count => x_msg_count,
8233 			x_msg_data  => x_msg_data,
8234 			p_api_type  => g_api_type);
8235   END;
8236 
8237 PROCEDURE load_deal(
8238       p_api_version                  IN NUMBER,
8239       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8240       x_return_status                OUT NOCOPY VARCHAR2,
8241       x_msg_count                    OUT NOCOPY NUMBER,
8242       x_msg_data                     OUT NOCOPY VARCHAR2,
8243       p_durv_rec                     IN  deal_rec_type,
8244       x_durv_rec                     OUT NOCOPY  deal_rec_type
8245     ) AS
8246 
8247     l_api_name	       VARCHAR2(30) := 'load_deal';
8248     l_api_version      CONSTANT NUMBER	  := 1.0;
8249 
8250     l_template_yn      OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
8251     l_chr_type         OKC_K_HEADERS_B.CHR_TYPE%TYPE;
8252     l_contract_number  OKC_K_HEADERS_B.CHR_TYPE%TYPE;
8253     l_object_code      VARCHAR2(30) DEFAULT NULL;
8254 
8255     l_ak_prompt        AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
8256     l_chr_id	       NUMBER;
8257     row_cnt  NUMBER;
8258 
8259     CURSOR l_load_hdr_csr IS
8260     SELECT id,
8261         contract_number,
8262         description,
8263         sts_code,
8264         start_date,
8265         end_date,
8266         term_duration,
8267         cust_po_number,
8268         inv_organization_id,
8269         authoring_org_id,
8270         generate_accrual_yn,
8271         syndicatable_yn,
8272         prefunding_eligible_yn,
8273         revolving_credit_yn,
8274         converted_account_yn,
8275         credit_act_yn,
8276         template_yn,
8277         date_signed,
8278         date_deal_transferred,
8279         accepted_date,
8280         expected_delivery_date,
8281         amd_code,
8282         deal_type,
8283 --        orig_system_reference1,
8284 --        orig_system_source_code,
8285 --        orig_system_id1,
8286         currency_code,
8287         pdt_id,
8288         khr_id
8289     FROM okl_k_headers_full_v
8290     WHERE id = p_durv_rec.chr_id;
8291 
8292 
8293     CURSOR l_vers_version_csr IS
8294     SELECT vers.major_version||'.'||vers.minor_version
8295     FROM okc_k_vers_numbers_v vers
8296     WHERE vers.chr_id = p_durv_rec.chr_id;
8297 
8298     CURSOR l_gvr_csr(p_scs_code VARCHAR2) IS
8299     SELECT mla.contract_number, gvr.chr_id_referred, gvr.id
8300     FROM  okl_k_headers_full_v mla, okc_governances_v gvr
8301     WHERE mla.id = gvr.chr_id_referred
8302     AND mla.scs_code = p_scs_code -- mla or cl
8303     AND gvr.chr_id = p_durv_rec.chr_id
8304     AND gvr.dnz_chr_id = p_durv_rec.chr_id;
8305 
8306     CURSOR l_dff_rule_csr(p_rgd_code VARCHAR2, p_rule_information_category VARCHAR2) IS
8307     SELECT rgp.id, rul.id, rul.rule_information1
8308     FROM  okc_rule_groups_v rgp, okc_rules_v rul
8309     WHERE rgp.id = rul.rgp_id
8310     AND rgp.rgd_code = p_rgd_code
8311     AND rul.rule_information_category = p_rule_information_category
8312     AND rul.dnz_chr_id = p_durv_rec.chr_id
8313     AND rgp.dnz_chr_id = p_durv_rec.chr_id
8314     AND rgp.chr_id = p_durv_rec.chr_id;
8315 
8316     CURSOR l_party_csr(p_rle_code VARCHAR2) IS
8317 	--Start modified abhsaxen for performance SQLID 20563248
8318 	SELECT cpl.id,cpl.object1_id1,cpl.object1_id2,cpl.jtot_object1_code
8319 	    FROM okc_k_party_roles_B cpl
8320 	    WHERE cpl.rle_code = p_rle_code
8321 	    AND cpl.chr_id = p_durv_rec.chr_id
8322 	    AND cpl.dnz_chr_id = p_durv_rec.chr_id
8323 	--end modified abhsaxen for performance SQLID 20563248
8324 	;
8325     CURSOR l_customer_account_csr IS
8326     SELECT rgp.id, rul.id, rul.object1_id1,rul.object1_id2,rul.jtot_object1_code
8327     FROM  okc_rule_groups_v rgp, okc_rules_v rul
8328     WHERE rgp.id = rul.rgp_id
8329     AND rgp.rgd_code = 'LACAN'
8330     AND rul.rule_information_category = 'CAN'
8331     AND rul.dnz_chr_id = p_durv_rec.chr_id
8332     AND rgp.dnz_chr_id = p_durv_rec.chr_id
8333     AND rgp.chr_id = p_durv_rec.chr_id;
8334 
8335     CURSOR l_legal_address_csr(p_cust_id1 VARCHAR2) IS
8336     SELECT cust_site.description
8337     FROM okx_cust_site_uses_v cust_site
8338     WHERE cust_site.party_id = p_cust_id1
8339     AND cust_site.site_use_code = 'LEGAL';
8340 
8341     CURSOR l_product_csr(product_id  NUMBER) IS
8342     SELECT id,name,description
8343     FROM okl_products_v
8344     WHERE id = product_id;
8345 
8346     CURSOR l_currency_csr(p_currency_code  VARCHAR2) IS
8347     SELECT currency_code, name
8348     FROM fnd_currencies_vl
8349     WHERE currency_code = p_currency_code;
8350 
8351     CURSOR l_program_csr(program_id  NUMBER) IS
8352     SELECT id,contract_number
8353     FROM okl_k_headers_full_v
8354     WHERE id = program_id;
8355 
8356     CURSOR l_contact_csr IS
8357 	--Start modified abhsaxen for performance SQLID 20563327
8358 	select ctc.id,ctc.object1_id1,ctc.object1_id2,ctc.jtot_object1_code
8359 	    from okc_k_party_roles_b cpl, okc_contacts ctc
8360 	    where cpl.id = ctc.cpl_id
8361 	    and cpl.rle_code = 'LESSOR'
8362 	    and ctc.cro_code = 'SALESPERSON'
8363 	    and cpl.chr_id = p_durv_rec.chr_id
8364 	    and cpl.dnz_chr_id = p_durv_rec.chr_id
8365 	    and ctc.dnz_chr_id = p_durv_rec.chr_id
8366 	--end modified abhsaxen for performance SQLID 20563327
8367 	;
8368 
8369     CURSOR l_sts_code_csr IS
8370     SELECT CHR.sts_code
8371     FROM OKC_STATUSES_B sts,okc_k_headers_v CHR
8372     WHERE STS.CODE = CHR.STS_CODE
8373     AND CHR.id = p_durv_rec.chr_id;
8374 
8375 
8376   BEGIN
8377 
8378   IF okl_context.get_okc_org_id  IS NULL THEN
8379 	   l_chr_id := p_durv_rec.chr_id;
8380    	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
8381   END IF;
8382 
8383     x_return_status := OKC_API.START_ACTIVITY(
8384 			p_api_name      => l_api_name,
8385 			p_pkg_name      => g_pkg_name,
8386 			p_init_msg_list => p_init_msg_list,
8387 			l_api_version   => l_api_version,
8388 			p_api_version   => p_api_version,
8389 			p_api_type      => g_api_type,
8390 			x_return_status => x_return_status);
8391 
8392     -- check if activity started successfully
8393     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8394        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8395     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8396        RAISE OKC_API.G_EXCEPTION_ERROR;
8397     END IF;
8398 /*
8399     open l_load_hdr_csr;
8400     fetch l_load_hdr_csr into   x_durv_rec.chr_id,
8401  		   	        x_durv_rec.chr_contract_number,
8402     				x_durv_rec.chr_description,
8403     				x_durv_rec.chr_sts_code,
8404     				x_durv_rec.chr_start_date,
8405     				x_durv_rec.chr_end_date,
8406     				x_durv_rec.khr_term_duration,
8407     				x_durv_rec.chr_cust_po_number,
8408     				x_durv_rec.chr_inv_organization_id,
8409     				x_durv_rec.chr_authoring_org_id,
8410     				x_durv_rec.khr_generate_accrual_yn,
8411     				x_durv_rec.khr_syndicatable_yn,
8412     				x_durv_rec.khr_prefunding_eligible_yn,
8413     				x_durv_rec.khr_revolving_credit_yn,
8414     				x_durv_rec.khr_converted_account_yn,
8415     				x_durv_rec.khr_credit_act_yn,
8416     				x_durv_rec.chr_template_yn,
8417     				x_durv_rec.chr_date_signed,
8418     				x_durv_rec.khr_date_deal_transferred,
8419     				x_durv_rec.khr_accepted_date,
8420     				x_durv_rec.khr_expected_delivery_date,
8421     				x_durv_rec.khr_amd_code,
8422     				x_durv_rec.khr_deal_type,
8423 --    				x_durv_rec.chr_orig_system_reference1,
8424 --    				x_durv_rec.chr_orig_system_source_code,
8425 --    				x_durv_rec.chr_orig_system_id1,
8426     				x_durv_rec.chr_currency_code,
8427     				x_durv_rec.khr_pdt_id,
8428     				x_durv_rec.khr_khr_id;
8429     close  l_load_hdr_csr;
8430 
8431     open l_vers_version_csr;
8432     fetch l_vers_version_csr into x_durv_rec.vers_version;
8433     close l_vers_version_csr;
8434 
8435     open l_gvr_csr('MASTER_LEASE');
8436     fetch l_gvr_csr into x_durv_rec.mla_contract_number, x_durv_rec.mla_gvr_chr_id_referred, x_durv_rec.mla_gvr_id;
8437     close l_gvr_csr;
8438 
8439     open l_gvr_csr('CREDITLINE_CONTRACT');
8440     fetch l_gvr_csr into x_durv_rec.cl_contract_number, x_durv_rec.cl_gvr_chr_id_referred, x_durv_rec.cl_gvr_id;
8441     close l_gvr_csr;
8442 
8443     open l_dff_rule_csr('LARLES','LARLES');
8444     fetch l_dff_rule_csr into x_durv_rec.rg_larles_id,x_durv_rec.r_larles_id,x_durv_rec.r_larles_rule_information1;
8445     close l_dff_rule_csr;
8446 
8447     open l_dff_rule_csr('LANNTF','LANNTF');
8448     fetch l_dff_rule_csr into x_durv_rec.rg_lanntf_id,x_durv_rec.r_lanntf_id,x_durv_rec.r_lanntf_rule_information1;
8449     close l_dff_rule_csr;
8450 
8451     open l_dff_rule_csr('LATOWN','LATOWN');
8452     fetch l_dff_rule_csr into x_durv_rec.rg_latown_id,x_durv_rec.r_latown_id,x_durv_rec.r_latown_rule_information1;
8453     close l_dff_rule_csr;
8454 
8455     open l_dff_rule_csr('LAPACT','LAPACT');
8456     fetch l_dff_rule_csr into x_durv_rec.rg_lapact_id,x_durv_rec.r_lapact_id,x_durv_rec.r_lapact_rule_information1;
8457     close l_dff_rule_csr;
8458 
8459     open l_dff_rule_csr('LAREBL','LAREBL');
8460     fetch l_dff_rule_csr into x_durv_rec.rg_larebl_id,x_durv_rec.r_larebl_id,x_durv_rec.r_larebl_rule_information1;
8461     close l_dff_rule_csr;
8462 
8463     open l_dff_rule_csr('LACPLN','LACPLN');
8464     fetch l_dff_rule_csr into x_durv_rec.rg_lacpln_id,x_durv_rec.r_lacpln_id,x_durv_rec.r_lacpln_rule_information1;
8465     close l_dff_rule_csr;
8466 
8467     open l_party_csr('LESSEE');
8468     fetch l_party_csr into x_durv_rec.cust_id,x_durv_rec.cust_object1_id1,x_durv_rec.cust_object1_id2,x_durv_rec.cust_jtot_object1_code;
8469     close l_party_csr;
8470 
8471     open l_party_csr('LESSOR');
8472     fetch l_party_csr into x_durv_rec.lessor_id,x_durv_rec.lessor_object1_id1,x_durv_rec.lessor_object1_id2,x_durv_rec.lessor_jtot_object1_code;
8473     close l_party_csr;
8474 
8475     open l_customer_account_csr;
8476     fetch l_customer_account_csr into x_durv_rec.rg_lacan_id,x_durv_rec.r_can_id,x_durv_rec.r_can_object1_id1,x_durv_rec.r_can_object1_id2,x_durv_rec.r_can_jtot_object1_code;
8477     close l_customer_account_csr;
8478 
8479     open l_legal_address_csr(x_durv_rec.cust_object1_id1);
8480     fetch l_legal_address_csr into x_durv_rec.cust_site_description;
8481     close l_legal_address_csr;
8482 
8483     open l_product_csr(x_durv_rec.khr_pdt_id);
8484     fetch l_product_csr into x_durv_rec.khr_pdt_id,x_durv_rec.product_name,x_durv_rec.product_description;
8485     close l_product_csr;
8486 
8487     open l_currency_csr(x_durv_rec.chr_currency_code);
8488     fetch l_currency_csr into x_durv_rec.chr_currency_code, x_durv_rec.currency_name;
8489     close l_currency_csr;
8490 
8491     open l_program_csr(x_durv_rec.khr_khr_id);
8492     fetch l_program_csr into x_durv_rec.khr_khr_id,x_durv_rec.program_contract_number;
8493     close l_program_csr;
8494 
8495     open l_contact_csr;
8496     fetch l_contact_csr into x_durv_rec.contact_id,x_durv_rec.contact_object1_id1,x_durv_rec.contact_object1_id2,x_durv_rec.contact_jtot_object1_code;
8497     close l_contact_csr;
8498 */
8499 /*
8500     open l_set_of_books_csr;
8501     fetch l_set_of_books_csr into x_durv_rec.books_short_name,x_durv_rec.oper_units_name;
8502     close l_set_of_books_csr;
8503 */
8504 /*
8505     open l_sts_code_csr;
8506     fetch l_sts_code_csr into x_durv_rec.chr_sts_code;
8507     close l_sts_code_csr;
8508     */
8509   OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,	 x_msg_data	=> x_msg_data);
8510 
8511   EXCEPTION
8512     WHEN OKC_API.G_EXCEPTION_ERROR THEN
8513       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8514 			p_api_name  => l_api_name,
8515 			p_pkg_name  => g_pkg_name,
8516 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
8517 			x_msg_count => x_msg_count,
8518 			x_msg_data  => x_msg_data,
8519 			p_api_type  => g_api_type);
8520 
8521     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8522       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8523 			p_api_name  => l_api_name,
8524 			p_pkg_name  => g_pkg_name,
8525 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
8526 			x_msg_count => x_msg_count,
8527 			x_msg_data  => x_msg_data,
8528 			p_api_type  => g_api_type);
8529 
8530     WHEN OTHERS THEN
8531       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8532 			p_api_name  => l_api_name,
8533 			p_pkg_name  => g_pkg_name,
8534 			p_exc_name  => 'OTHERS',
8535 			x_msg_count => x_msg_count,
8536 			x_msg_data  => x_msg_data,
8537 			p_api_type  => g_api_type);
8538   END;
8539 
8540 
8541 Procedure confirm_cancel_contract
8542                   (p_api_version          IN  NUMBER,
8543                    p_init_msg_list        IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8544                    x_return_status        OUT NOCOPY VARCHAR2,
8545                    x_msg_count            OUT NOCOPY NUMBER,
8546                    x_msg_data             OUT NOCOPY VARCHAR2,
8547                    p_contract_id          IN  NUMBER,
8548                    p_contract_number      IN VARCHAR2) AS
8549 
8550 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
8551 l_api_name             CONSTANT varchar2(30) := 'confirm_cancel_contract';
8552 l_api_version          CONSTANT NUMBER := 1.0;
8553 
8554 Begin
8555      x_return_status := OKL_API.G_RET_STS_SUCCESS;
8556     -- Call start_activity to create savepoint, check compatibility
8557     -- and initialize message list
8558     x_return_status := OKL_API.START_ACTIVITY (
8559                                l_api_name
8560                                ,p_init_msg_list
8561                                ,'_PVT'
8562                                ,x_return_status);
8563     -- Check if activity started successfully
8564     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8565        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8566     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8567        RAISE OKL_API.G_EXCEPTION_ERROR;
8568     END IF;
8569 
8570     okl_maintain_contract_pvt.confirm_cancel_contract(
8571       p_api_version    => p_api_version,
8572       p_init_msg_list  => p_init_msg_list,
8573       x_return_status  => x_return_status,
8574       x_msg_count      => x_msg_count,
8575       x_msg_data       => x_msg_data,
8576       p_contract_id    => p_contract_id,
8577       p_new_contract_number => p_contract_number);
8578 
8579     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8580        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8581     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8582        RAISE OKL_API.G_EXCEPTION_ERROR;
8583     END IF;
8584 
8585     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8586 
8587     EXCEPTION
8588     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8589     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8590                                l_api_name,
8591                                G_PKG_NAME,
8592                                'OKL_API.G_RET_STS_ERROR',
8593                                x_msg_count,
8594                                x_msg_data,
8595                                '_PVT');
8596     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8597     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8598                               l_api_name,
8599                               G_PKG_NAME,
8600                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8601                               x_msg_count,
8602                               x_msg_data,
8603                               '_PVT');
8604     WHEN OTHERS THEN
8605     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8606                               l_api_name,
8607                               G_PKG_NAME,
8608                               'OTHERS',
8609                               x_msg_count,
8610                               x_msg_data,
8611                               '_PVT');
8612 
8613 end;
8614 
8615 Procedure copy_lease_contract
8616                   (p_api_version          IN  NUMBER,
8617                    p_init_msg_list        IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8618                    x_return_status        OUT NOCOPY VARCHAR2,
8619                    x_msg_count            OUT NOCOPY NUMBER,
8620                    x_msg_data             OUT NOCOPY VARCHAR2,
8621                    p_contract_number      IN  VARCHAR2,
8622                    p_source_chr_id        IN  NUMBER,
8623                    x_chr_id               OUT NOCOPY NUMBER) AS
8624 
8625 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
8626 l_api_name             CONSTANT varchar2(30) := 'copy_lease_contract';
8627 l_api_version          CONSTANT NUMBER := 1.0;
8628 
8629 Begin
8630     x_return_status := OKL_API.G_RET_STS_SUCCESS;
8631     -- Call start_activity to create savepoint, check compatibility
8632     -- and initialize message list
8633     x_return_status := OKL_API.START_ACTIVITY (
8634                                l_api_name
8635                                ,p_init_msg_list
8636                                ,'_PVT'
8637                                ,x_return_status);
8638     -- Check if activity started successfully
8639     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8640        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8641     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8642        RAISE OKL_API.G_EXCEPTION_ERROR;
8643     END IF;
8644 
8645     OKL_COPY_CONTRACT_PUB.copy_lease_contract_new(
8646       p_api_version              => p_api_version,
8647       p_init_msg_list            => p_init_msg_list,
8648       x_return_status            => x_return_status,
8649       x_msg_count                => x_msg_count,
8650       x_msg_data                 => x_msg_data,
8651       p_chr_id                   => p_source_chr_id,
8652       p_contract_number          => p_contract_number,
8653       p_contract_number_modifier => NULL,
8654       p_renew_ref_yn             => OKL_API.G_FALSE,
8655       p_trans_type               => 'CFA',
8656       x_chr_id                   => x_chr_id);
8657 
8658     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8659        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8660     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8661        RAISE OKL_API.G_EXCEPTION_ERROR;
8662     END IF;
8663 
8664     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8665 
8666     EXCEPTION
8667     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8668     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8669                                l_api_name,
8670                                G_PKG_NAME,
8671                                'OKL_API.G_RET_STS_ERROR',
8672                                x_msg_count,
8673                                x_msg_data,
8674                                '_PVT');
8675     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8676     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8677                               l_api_name,
8678                               G_PKG_NAME,
8679                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8680                               x_msg_count,
8681                               x_msg_data,
8682                               '_PVT');
8683     WHEN OTHERS THEN
8684     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8685                               l_api_name,
8686                               G_PKG_NAME,
8687                               'OTHERS',
8688                               x_msg_count,
8689                               x_msg_data,
8690                               '_PVT');
8691 
8692 end;
8693 
8694 PROCEDURE create_party(
8695       p_api_version                  IN NUMBER,
8696       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8697       x_return_status                OUT NOCOPY VARCHAR2,
8698       x_msg_count                    OUT NOCOPY NUMBER,
8699       x_msg_data                     OUT NOCOPY VARCHAR2,
8700       p_kpl_rec                 IN  party_rec_type,
8701       x_kpl_rec                 OUT NOCOPY party_rec_type
8702       ) AS
8703 
8704 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
8705 l_api_name             CONSTANT varchar2(30) := 'create_party';
8706 l_api_version          CONSTANT NUMBER := 1.0;
8707 
8708 lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8709 lx_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8710 lp_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8711 lx_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8712 
8713 Begin
8714      x_return_status := OKL_API.G_RET_STS_SUCCESS;
8715     -- Call start_activity to create savepoint, check compatibility
8716     -- and initialize message list
8717     x_return_status := OKL_API.START_ACTIVITY (
8718                                l_api_name
8719                                ,p_init_msg_list
8720                                ,'_PVT'
8721                                ,x_return_status);
8722     -- Check if activity started successfully
8723     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8724        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8725     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8726        RAISE OKL_API.G_EXCEPTION_ERROR;
8727     END IF;
8728 
8729     lp_cplv_rec.id := p_kpl_rec.id;
8730     lp_cplv_rec.object1_id1 := p_kpl_rec.object1_id1;
8731     lp_cplv_rec.object1_id2 := p_kpl_rec.object1_id2;
8732     lp_cplv_rec.jtot_object1_code := p_kpl_rec.jtot_object1_code;
8733     lp_cplv_rec.rle_code := p_kpl_rec.rle_code;
8734     lp_cplv_rec.dnz_chr_id := p_kpl_rec.dnz_chr_id;
8735     lp_cplv_rec.chr_id := p_kpl_rec.chr_id;
8736     lp_cplv_rec.cognomen:= p_kpl_rec.cognomen;
8737     lp_cplv_rec.alias:= p_kpl_rec.alias;
8738     lp_kplv_rec.attribute_category := p_kpl_rec.attribute_category;
8739     lp_kplv_rec.attribute1 := p_kpl_rec.attribute1;
8740     lp_kplv_rec.attribute2 := p_kpl_rec.attribute2;
8741     lp_kplv_rec.attribute3 := p_kpl_rec.attribute3;
8742     lp_kplv_rec.attribute4 := p_kpl_rec.attribute4;
8743     lp_kplv_rec.attribute5 := p_kpl_rec.attribute5;
8744     lp_kplv_rec.attribute6 := p_kpl_rec.attribute6;
8745     lp_kplv_rec.attribute7 := p_kpl_rec.attribute7;
8746     lp_kplv_rec.attribute8 := p_kpl_rec.attribute8;
8747     lp_kplv_rec.attribute9 := p_kpl_rec.attribute9;
8748     lp_kplv_rec.attribute10 := p_kpl_rec.attribute10;
8749     lp_kplv_rec.attribute11 := p_kpl_rec.attribute11;
8750     lp_kplv_rec.attribute12 := p_kpl_rec.attribute12;
8751     lp_kplv_rec.attribute13 := p_kpl_rec.attribute13;
8752     lp_kplv_rec.attribute14 := p_kpl_rec.attribute14;
8753     lp_kplv_rec.attribute15 := p_kpl_rec.attribute15;
8754 
8755     IF(p_kpl_rec.rle_code IS NOT NULL AND
8756     	NOT (p_kpl_rec.rle_code = 'LESSEE' OR p_kpl_rec.rle_code = 'LESSOR')) THEN
8757      lp_kplv_rec.validate_dff_yn := 'Y';
8758     END IF;
8759 
8760     okl_k_party_roles_pvt.create_k_party_role(
8761       p_api_version      => p_api_version,
8762       p_init_msg_list    => p_init_msg_list,
8763       x_return_status    => x_return_status,
8764       x_msg_count        => x_msg_count,
8765       x_msg_data         => x_msg_data,
8766       p_cplv_rec         => lp_cplv_rec,
8767       x_cplv_rec         => lx_cplv_rec,
8768       p_kplv_rec         => lp_kplv_rec,
8769       x_kplv_rec         => lx_kplv_rec);
8770 
8771     x_kpl_rec.id := lx_cplv_rec.id;
8772 
8773     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8774        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8775     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8776        RAISE OKL_API.G_EXCEPTION_ERROR;
8777     END IF;
8778 
8779     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8780 
8781     EXCEPTION
8782     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8783     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8784                                l_api_name,
8785                                G_PKG_NAME,
8786                                'OKL_API.G_RET_STS_ERROR',
8787                                x_msg_count,
8788                                x_msg_data,
8789                                '_PVT');
8790     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8791     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8792                               l_api_name,
8793                               G_PKG_NAME,
8794                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8795                               x_msg_count,
8796                               x_msg_data,
8797                               '_PVT');
8798     WHEN OTHERS THEN
8799     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8800                               l_api_name,
8801                               G_PKG_NAME,
8802                               'OTHERS',
8803                               x_msg_count,
8804                               x_msg_data,
8805                               '_PVT');
8806 
8807 end;
8808 
8809 PROCEDURE update_party(
8810       p_api_version                  IN NUMBER,
8811       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8812       x_return_status                OUT NOCOPY VARCHAR2,
8813       x_msg_count                    OUT NOCOPY NUMBER,
8814       x_msg_data                     OUT NOCOPY VARCHAR2,
8815       p_kpl_rec                 IN  party_rec_type,
8816       x_kpl_rec                 OUT NOCOPY party_rec_type
8817       ) AS
8818 
8819 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
8820 l_api_name             CONSTANT varchar2(30) := 'update_party';
8821 l_api_version          CONSTANT NUMBER := 1.0;
8822 
8823 lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8824 lx_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8825 lp_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8826 lx_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8827 
8828 Begin
8829      x_return_status := OKL_API.G_RET_STS_SUCCESS;
8830     -- Call start_activity to create savepoint, check compatibility
8831     -- and initialize message list
8832     x_return_status := OKL_API.START_ACTIVITY (
8833                                l_api_name
8834                                ,p_init_msg_list
8835                                ,'_PVT'
8836                                ,x_return_status);
8837     -- Check if activity started successfully
8838     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8839        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8840     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8841        RAISE OKL_API.G_EXCEPTION_ERROR;
8842     END IF;
8843 
8844     lp_cplv_rec.id := p_kpl_rec.id;
8845     lp_cplv_rec.object1_id1 := p_kpl_rec.object1_id1;
8846     lp_cplv_rec.object1_id2 := p_kpl_rec.object1_id2;
8847     lp_cplv_rec.rle_code := p_kpl_rec.rle_code;
8848     lp_cplv_rec.dnz_chr_id := p_kpl_rec.dnz_chr_id;
8849     lp_cplv_rec.chr_id := p_kpl_rec.chr_id;
8850     lp_cplv_rec.cognomen:= p_kpl_rec.cognomen;
8851     lp_cplv_rec.alias:= p_kpl_rec.alias;
8852     lp_kplv_rec.attribute_category := p_kpl_rec.attribute_category;
8853     lp_kplv_rec.attribute1 := p_kpl_rec.attribute1;
8854     lp_kplv_rec.attribute2 := p_kpl_rec.attribute2;
8855     lp_kplv_rec.attribute3 := p_kpl_rec.attribute3;
8856     lp_kplv_rec.attribute4 := p_kpl_rec.attribute4;
8857     lp_kplv_rec.attribute5 := p_kpl_rec.attribute5;
8858     lp_kplv_rec.attribute6 := p_kpl_rec.attribute6;
8859     lp_kplv_rec.attribute7 := p_kpl_rec.attribute7;
8860     lp_kplv_rec.attribute8 := p_kpl_rec.attribute8;
8861     lp_kplv_rec.attribute9 := p_kpl_rec.attribute9;
8862     lp_kplv_rec.attribute10 := p_kpl_rec.attribute10;
8863     lp_kplv_rec.attribute11 := p_kpl_rec.attribute11;
8864     lp_kplv_rec.attribute12 := p_kpl_rec.attribute12;
8865     lp_kplv_rec.attribute13 := p_kpl_rec.attribute13;
8866     lp_kplv_rec.attribute14 := p_kpl_rec.attribute14;
8867     lp_kplv_rec.attribute15 := p_kpl_rec.attribute15;
8868     lp_kplv_rec.validate_dff_yn := 'Y';
8869 
8870     okl_k_party_roles_pvt.update_k_party_role(
8871       p_api_version      => p_api_version,
8872       p_init_msg_list    => p_init_msg_list,
8873       x_return_status    => x_return_status,
8874       x_msg_count        => x_msg_count,
8875       x_msg_data         => x_msg_data,
8876       p_cplv_rec         => lp_cplv_rec,
8877       x_cplv_rec         => lx_cplv_rec,
8878       p_kplv_rec         => lp_kplv_rec,
8879       x_kplv_rec         => lx_kplv_rec);
8880 
8881 
8882     x_kpl_rec.id := lx_cplv_rec.id;
8883 
8884     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8885        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8886     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8887        RAISE OKL_API.G_EXCEPTION_ERROR;
8888     END IF;
8889 
8890     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8891 
8892     EXCEPTION
8893     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8894     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8895                                l_api_name,
8896                                G_PKG_NAME,
8897                                'OKL_API.G_RET_STS_ERROR',
8898                                x_msg_count,
8899                                x_msg_data,
8900                                '_PVT');
8901     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8902     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8903                               l_api_name,
8904                               G_PKG_NAME,
8905                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8906                               x_msg_count,
8907                               x_msg_data,
8908                               '_PVT');
8909     WHEN OTHERS THEN
8910     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8911                               l_api_name,
8912                               G_PKG_NAME,
8913                               'OTHERS',
8914                               x_msg_count,
8915                               x_msg_data,
8916                               '_PVT');
8917 
8918 end;
8919 
8920 
8921   PROCEDURE load_deal(
8922     p_api_version                IN  NUMBER,
8923     p_init_msg_list              IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8924     x_return_status              OUT NOCOPY VARCHAR2,
8925     x_msg_count                  OUT NOCOPY NUMBER,
8926     x_msg_data                   OUT NOCOPY VARCHAR2,
8927     p_chr_id                     IN  NUMBER,
8928     x_deal_values_rec            OUT NOCOPY deal_values_rec
8929   ) IS
8930 
8931   l_return_status        VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
8932   l_api_name             CONSTANT VARCHAR2(30) := 'load_deal';
8933   l_api_version          CONSTANT NUMBER := 1.0;
8934 
8935   CURSOR c_hdr_full_uv(p_chr_id OKC_K_HEADERS_ALL_B.ID%TYPE) IS
8936   SELECT *
8937   FROM okl_k_hdrs_full_uv
8938   WHERE chr_id = p_chr_id;
8939 
8940   l_hdr_uv_rec c_hdr_full_uv%ROWTYPE;
8941 
8942   CURSOR c_hdr_full_v(p_chr_id OKC_K_HEADERS_ALL_B.ID%TYPE) IS
8943   SELECT *
8944   FROM okl_k_headers_full_v
8945   WHERE id = p_chr_id;
8946 
8947   l_hdr_rec c_hdr_full_v%ROWTYPE;
8948 
8949   CURSOR c_okc_hdr(p_chr_id OKC_K_HEADERS_ALL_B.ID%TYPE) IS
8950   SELECT contract_number
8951   FROM okc_k_headers_all_b
8952   WHERE id = p_chr_id;
8953 
8954   CURSOR c_bill_to_site(p_site_use_id NUMBER) IS
8955   SELECT description
8956   FROM okl_la_bill_to_uv
8957   WHERE id1 = p_site_use_id;
8958 
8959   CURSOR c_gvr_data(p_scs_code   VARCHAR2,
8960                     p_chr_id     NUMBER,
8961                     p_dnz_chr_id NUMBER) IS
8962   SELECT mla.contract_number,gvr.chr_id_referred,gvr.id
8963   FROM  okl_k_headers_full_v mla,
8964         okc_governances_v gvr
8965   WHERE mla.id = gvr.chr_id_referred
8966   AND   mla.scs_code = p_scs_code
8967   AND   gvr.dnz_chr_id = p_dnz_chr_id
8968   AND   gvr.chr_id = p_chr_id;
8969 
8970   CURSOR c_ledger(p_chr_id NUMBER, p_organization_id NUMBER) IS
8971 --  start:|   21-Nov-2008 cklee Bug 7569200 -- Fixed display LEDGER NAME issue         |
8972 --  SELECT bks.ledger_id,bks.short_name,ou.name
8973   SELECT bks.ledger_id,bks.name,ou.name
8974 --  end:|   21-Nov-2008 cklee Bug 7569200 -- Fixed display LEDGER NAME issue         |
8975 
8976   FROM gl_ledgers_public_v bks,
8977        hr_operating_units ou,
8978        okc_k_headers_b chr
8979   WHERE bks.ledger_id = ou.set_of_books_id
8980   AND ou.organization_id = chr.authoring_org_id
8981   AND chr.authoring_org_id = p_organization_id
8982   AND chr.id = p_chr_id;
8983 
8984 --start|   27-Jun-2008 cklee Bug 6957971                                            |
8985 /*cklee 06/27/08
8986   CURSOR c_legal_address(p_party_id NUMBER) IS
8987   SELECT cust_site.description
8988   FROM okx_cust_site_uses_v cust_site
8989   WHERE cust_site.party_id = p_party_id
8990   AND cust_site.site_use_code = 'LEGAL';
8991 */
8992 -- Each account may have one primary legal address (purpose = Legal)
8993 -- So when there have multiple accounts for the customer, we need
8994 -- to add additional cust_account_id as a key to retrieve specific
8995 -- legal address for the account
8996   CURSOR c_legal_address(p_party_id NUMBER, cp_cust_acct_id NUMBER) IS
8997   SELECT cust_site.description
8998   FROM okx_cust_site_uses_v cust_site
8999   WHERE cust_site.party_id = p_party_id
9000   AND cust_site.cust_account_id = cp_cust_acct_id
9001   AND cust_site.site_use_code = 'LEGAL';
9002 --end|   27-Jun-2008 cklee Bug 6957971                                            |
9003 
9004   CURSOR c_le_name(cp_legal_entity_id NUMBER) IS
9005   SELECT name
9006   FROM xle_entity_profiles
9007   WHERE legal_entity_id = cp_legal_entity_id;
9008 
9009   CURSOR c_quote_name(p_chr_orig_system_id1 NUMBER) IS
9010   SELECT lsq.reference_number
9011   FROM okl_lease_quotes_b lsq
9012   WHERE LSQ.parent_object_id = p_chr_orig_system_id1
9013   AND lsq.status = 'CT-ACCEPTED';
9014 
9015   CURSOR c_program_template_name(p_orig_system_id1 NUMBER, p_khr_khr_id NUMBER) IS
9016   SELECT chr.contract_number
9017   FROM okl_k_headers_full_v chr
9018   WHERE chr.id = p_orig_system_id1
9019   AND chr.template_type_code = 'PROGRAM'
9020   AND NVL(chr.template_yn,'N') = 'Y'
9021   AND EXISTS(SELECT 1
9022              FROM okl_vp_associations vpaso
9023 	     WHERE vpaso.chr_id =  p_khr_khr_id
9024 	     AND vpaso.assoc_object_id = p_orig_system_id1
9025 	     AND vpaso.assoc_object_type_code = 'LC_TEMPLATE');
9026 
9027   CURSOR c_orig_lease_application(p_orig_syststem_id1 NUMBER) IS
9028   SELECT LAP.reference_number
9029   FROM OKL_LEASE_APPLICATIONS_B LAP,
9030        OKL_LEASE_APPLICATIONS_TL LAPT
9031   WHERE LAP.id = LAPT.id
9032   AND LAPT.LANGUAGE = USERENV('LANG')
9033   AND lap.id = p_orig_syststem_id1;
9034 
9035   CURSOR c_cust_name(cp_party_id NUMBER) IS
9036   SELECT hp.party_name
9037   FROM hz_parties hp
9038   WHERE hp.party_id = cp_party_id;
9039 
9040   CURSOR c_cust_acct_num_csr(cp_cust_acct_id NUMBER)IS
9041   SELECT account_number
9042     FROM hz_Cust_Accounts
9043    WHERE cust_account_id = cp_cust_acct_id;
9044 
9045   CURSOR c_salesrep(p_salesrep_id NUMBER) IS
9046   SELECT name
9047   FROM okx_salesreps_v
9048   WHERE id1 = p_salesrep_id;
9049 
9050   CURSOR c_prompt_name IS
9051   SELECT rdef.rule_code,col.form_left_prompt
9052   FROM  fnd_descr_flex_col_usage_vl col,
9053         okc_rule_defs_v  rdef
9054   WHERE col.application_id = rdef.application_id
9055   AND   col.descriptive_flexfield_name=rdef.descriptive_flexfield_name
9056   AND   col.descriptive_flex_context_code=rdef.rule_code
9057   AND   rdef.rule_code  in ('LACPLN','LANNTF','LAREBL','LARLES','LATOWN','LAPACT');
9058 
9059   BEGIN
9060     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9061     -- Call start_activity to create savepoint, check compatibility
9062     -- and initialize message list
9063     x_return_status := OKL_API.START_ACTIVITY (
9064                                l_api_name
9065                                ,p_init_msg_list
9066                                ,'_PVT'
9067                                ,x_return_status);
9068     -- Check if activity started successfully
9069     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9070        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9071     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9072        RAISE OKL_API.G_EXCEPTION_ERROR;
9073     END IF;
9074 
9075   OPEN c_hdr_full_uv(p_chr_id);
9076   FETCH c_hdr_full_uv INTO l_hdr_uv_rec;
9077 
9078   OPEN c_hdr_full_v(p_chr_id);
9079   FETCH c_hdr_full_v INTO l_hdr_rec;
9080 
9081   X_DEAL_VALUES_REC.ACCEPTANCE_METHOD_MEANING     :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_ACCEPTANCE_METHOD',L_HDR_UV_REC.KHR_AMD_CODE);
9082   X_DEAL_VALUES_REC.ASSIGNABLE_MEANING            :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',l_HDR_UV_REC.KHR_ASSIGNABLE_YN);
9083   X_DEAL_VALUES_REC.BILL_TO_SITE_USE_ID           :=  L_HDR_REC.BILL_TO_SITE_USE_ID;
9084 
9085   OPEN c_bill_to_site(l_HDR_REC.BILL_TO_SITE_USE_ID);
9086   FETCH c_bill_to_site INTO X_DEAL_VALUES_REC.BILL_TO_ADDRESS_DESC;
9087   CLOSE c_bill_to_site;
9088 
9089   X_DEAL_VALUES_REC.BOOK_CLASS_MEANING           :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_BOOK_CLASS',L_HDR_UV_REC.KHR_DEAL_TYPE);
9090   X_DEAL_VALUES_REC.CAP_INTERIM_INTERST_MEANING  :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',l_HDR_UV_REC.R_LACPLN_RULE_INFORMATION1);
9091   X_DEAL_VALUES_REC.CAP_INTERIM_INT_RGD_CODE     :=  'LACPLN';
9092   X_DEAL_VALUES_REC.CAP_INTERIM_INT_RGP_ID       :=  L_HDR_UV_REC.RG_LACPLN_ID;
9093   X_DEAL_VALUES_REC.CAP_INTERIM_INT_RUL_ID       :=  L_HDR_UV_REC.R_LACPLN_ID;
9094   X_DEAL_VALUES_REC.CAP_INTERIM_INT_RUL_INF1     :=  L_HDR_UV_REC.R_LACPLN_RULE_INFORMATION1;
9095   X_DEAL_VALUES_REC.CAP_INTERIM_INT_RUL_INF_CAT  :=  'LACPLN';
9096   X_DEAL_VALUES_REC.CONSUMER_CREDIT_ACT_MEANING  :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',L_HDR_UV_REC.KHR_CREDIT_ACT_YN);
9097   X_DEAL_VALUES_REC.CONVERTED_ACCT_MEANING       :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',L_HDR_UV_REC.KHR_CONVERTED_ACCOUNT_YN);
9098 
9099   OPEN c_gvr_data('CREDITLINE_CONTRACT',L_HDR_UV_REC.CHR_ID,L_HDR_UV_REC.CHR_ID);
9100   FETCH c_gvr_data INTO X_DEAL_VALUES_REC.CREDIT_LINE_CONTRACT_NUMBER,X_DEAL_VALUES_REC.CREDIT_LINE_CHR_ID,X_DEAL_VALUES_REC.CREDIT_GVR_ID;
9101   CLOSE c_gvr_data;
9102 
9103   X_DEAL_VALUES_REC.CURRENCY_CONV_TYPE_MEANING    :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_CONVERSION_TYPE_CODE',L_HDR_UV_REC.KHR_CURRENCY_CONVERSION_TYPE);
9104 
9105   -- splitting the customer name and customer account number cursors to support
9106   -- ui query to show customer name without customer account.
9107   OPEN c_cust_name(L_HDR_UV_REC.CUST_OBJECT1_ID1);
9108   FETCH c_cust_name INTO X_DEAL_VALUES_REC.CUSTOMER_NAME;
9109   CLOSE c_cust_name;
9110 
9111   OPEN c_cust_acct_num_csr(L_HDR_UV_REC.CHR_CUST_ACCT_ID);
9112   FETCH c_cust_acct_num_csr INTO X_DEAL_VALUES_REC.CUSTOMER_ACCOUNT;
9113   CLOSE c_cust_acct_num_csr;
9114 
9115   X_DEAL_VALUES_REC.CUSTOMER_CPL_ID              :=  L_HDR_UV_REC.CUST_ID;
9116   IF(L_HDR_UV_REC.CUST_JTOT_OBJECT1_CODE IS NULL)THEN
9117     X_DEAL_VALUES_REC.CUSTOMER_JTOT_OBJECT1_CODE   := 'OKX_PARTY';
9118   ELSE
9119     X_DEAL_VALUES_REC.CUSTOMER_JTOT_OBJECT1_CODE   :=  L_HDR_UV_REC.CUST_JTOT_OBJECT1_CODE;
9120   END IF;
9121 
9122   X_DEAL_VALUES_REC.CUSTOMER_OBJECT1_ID1         :=  L_HDR_UV_REC.CUST_OBJECT1_ID1;
9123   X_DEAL_VALUES_REC.CUSTOMER_OBJECT1_ID2         :=  L_HDR_UV_REC.CUST_OBJECT1_ID2;
9124   X_DEAL_VALUES_REC.CUST_ACCT_ID                 :=  L_HDR_UV_REC.CHR_CUST_ACCT_ID;
9125   X_DEAL_VALUES_REC.CUST_PO_NUMBER               :=  L_HDR_UV_REC.CHR_CUST_PO_NUMBER;
9126   X_DEAL_VALUES_REC.DEAL_TYPE                    :=  L_HDR_UV_REC.KHR_DEAL_TYPE;
9127 
9128   X_DEAL_VALUES_REC.DESCRIPTION                  :=  L_HDR_UV_REC.CHR_DESCRIPTION;
9129   X_DEAL_VALUES_REC.ELIG_FOR_PREFUNDING_MEANING  :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',L_HDR_UV_REC.KHR_PREFUNDING_ELIGIBLE_YN);
9130   X_DEAL_VALUES_REC.ID                           :=  L_HDR_UV_REC.CHR_ID;
9131   X_DEAL_VALUES_REC.INTEREST_CALC_MEANING         :=  L_HDR_UV_REC.INTEREST_CALCULATION_MEANING;
9132 
9133   OPEN c_ledger(l_hdr_rec.id,l_hdr_rec.authoring_org_id);
9134   FETCH c_ledger INTO X_DEAL_VALUES_REC.LEDGER_ID, X_DEAL_VALUES_REC.LEDGER_NAME, X_DEAL_VALUES_REC.OPERATING_UNIT_NAME;
9135   CLOSE c_ledger;
9136 
9137   IF (l_HDR_UV_REC.CHR_ORIG_SYSTEM_SOURCE_CODE = 'OKL_IMPORT') THEN
9138       X_DEAL_VALUES_REC.LEGACY_NUMBER             :=  L_HDR_UV_REC.CHR_ORIG_SYSTEM_REFERENCE1;
9139   END IF;
9140 
9141 --start|   27-Jun-2008 cklee Bug 6957971                                            |
9142   OPEN c_legal_address(l_HDR_UV_REC.cust_object1_id1,
9143                        L_HDR_UV_REC.CHR_CUST_ACCT_ID); -- cklee 06/27/08
9144   FETCH c_legal_address INTO X_DEAL_VALUES_REC.LEGAL_ADDRESS;
9145   CLOSE c_legal_address;
9146 --end|   27-Jun-2008 cklee Bug 6957971                                            |
9147 
9148 
9149   X_DEAL_VALUES_REC.LEGAL_ADDRESS_ID              :=  NULL;
9150 
9151   OPEN c_le_name(l_hdr_rec.legal_entity_id);
9152   FETCH c_le_name INTO X_DEAL_VALUES_REC.LEGAL_ENTITY_NAME;
9153   CLOSE c_le_name;
9154 
9155   X_DEAL_VALUES_REC.LESSOR_INSURED_MEANING        :=  NULL;
9156   X_DEAL_VALUES_REC.LESSOR_PAYEE_MEANING          :=  NULL;
9157   X_DEAL_VALUES_REC.LESSOR_SERV_ORG_CODE          :=  NULL;
9158 
9159   OPEN c_gvr_data('MASTER_LEASE',l_HDR_UV_REC.CHR_ID,l_HDR_UV_REC.CHR_ID);
9160   FETCH c_gvr_data INTO X_DEAL_VALUES_REC.MLA_CONTRACT_NUMBER,X_DEAL_VALUES_REC.MLA_CHR_ID,X_DEAL_VALUES_REC.MLA_GVR_ID;
9161   CLOSE c_gvr_data;
9162 
9163   X_DEAL_VALUES_REC.NNTF_RGD_CODE               :=  'LANNTF';
9164   X_DEAL_VALUES_REC.NNTF_RGP_ID                 :=  L_HDR_UV_REC.RG_LANNTF_ID;
9165   X_DEAL_VALUES_REC.NNTF_RUL_ID                 :=  L_HDR_UV_REC.R_LANNTF_ID;
9166   X_DEAL_VALUES_REC.NNTF_RUL_INF1               :=  L_HDR_UV_REC.R_LANNTF_RULE_INFORMATION1;
9167   X_DEAL_VALUES_REC.NNTF_RUL_INF_CAT            :=  'LANNTF';
9168   X_DEAL_VALUES_REC.NON_NOTIFICATION_MEANING    :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',L_HDR_UV_REC.R_LANNTF_RULE_INFORMATION1);
9169 
9170   FOR c_prompt_rec in c_prompt_name
9171   LOOP
9172     IF (c_prompt_rec.rule_code = 'LACPLN') THEN
9173         X_DEAL_VALUES_REC.COL_LACPLN_FORM_LEFT_PROMPT :=  C_PROMPT_REC.FORM_LEFT_PROMPT;
9174     ELSIF (c_prompt_rec.rule_code = 'LANNTF') THEN
9175         X_DEAL_VALUES_REC.COL_LANNTF_FORM_LEFT_PROMPT :=  C_PROMPT_REC.FORM_LEFT_PROMPT;
9176     ELSIF (c_prompt_rec.rule_code = 'LAREBL') THEN
9177         X_DEAL_VALUES_REC.COL_LAREBL_FORM_LEFT_PROMPT :=  C_PROMPT_REC.FORM_LEFT_PROMPT;
9178     ELSIF (c_prompt_rec.rule_code = 'LARLES') THEN
9179         X_DEAL_VALUES_REC.COL_LARLES_FORM_LEFT_PROMPT :=  C_PROMPT_REC.FORM_LEFT_PROMPT;
9180     ELSIF (c_prompt_rec.rule_code = 'LATOWN') THEN
9181         X_DEAL_VALUES_REC.COL_LATOWN_FORM_LEFT_PROMPT :=  C_PROMPT_REC.FORM_LEFT_PROMPT;
9182     ELSIF (c_prompt_rec.rule_code = 'LAPACT') THEN
9183         X_DEAL_VALUES_REC.COL_LAPACT_FORM_LEFT_PROMPT :=  C_PROMPT_REC.FORM_LEFT_PROMPT;
9184     END IF;
9185   END LOOP;
9186 
9187   IF (l_HDR_UV_REC.CHR_ORIG_SYSTEM_SOURCE_CODE = 'OKL_QUOTE') THEN
9188      X_DEAL_VALUES_REC.ORIGINATION_QUOTE_ID       :=  L_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1;
9189      OPEN c_quote_name(l_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1);
9190      FETCH c_quote_name INTO X_DEAL_VALUES_REC.ORIGINATION_QUOTE_NAME;
9191      CLOSE c_quote_name;
9192   END IF;
9193 
9194   X_DEAL_VALUES_REC.ORIG_SYSTEM_ID1               :=  L_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1;
9195   X_DEAL_VALUES_REC.ORIG_SYSTEM_REFERENCE1        :=  L_HDR_UV_REC.CHR_ORIG_SYSTEM_REFERENCE1;
9196   X_DEAL_VALUES_REC.ORIG_SYSTEM_SOURCE_CODE       :=  L_HDR_UV_REC.CHR_ORIG_SYSTEM_SOURCE_CODE;
9197 
9198   IF (l_HDR_UV_REC.CHR_ORIG_SYSTEM_SOURCE_CODE = 'OKL_LEASE_APP') THEN
9199       OPEN c_orig_lease_application(L_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1);
9200       FETCH c_orig_lease_application INTO X_DEAL_VALUES_REC.ORIGINATION_LEASE_APPLICATION;
9201       X_DEAL_VALUES_REC.LEASE_APPLICATION_ID   := L_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1;
9202       X_DEAL_VALUES_REC.LEASE_APPLICATION_NAME := X_DEAL_VALUES_REC.ORIGINATION_LEASE_APPLICATION;
9203       CLOSE c_orig_lease_application;
9204   END IF;
9205 
9206   X_DEAL_VALUES_REC.PRIVATE_ACT_BOND_MEANING    :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',L_HDR_UV_REC.R_LAPACT_RULE_INFORMATION1);
9207   X_DEAL_VALUES_REC.PRODUCT_DESCRIPTION         :=  L_HDR_UV_REC.PRODUCT_DESCRIPTION;
9208   X_DEAL_VALUES_REC.PRODUCT_NAME                :=  L_HDR_UV_REC.PRODUCT_NAME;
9209 
9210   IF ((L_HDR_UV_REC.CHR_ORIG_SYSTEM_SOURCE_CODE = 'OKC_HDR') AND (L_HDR_UV_REC.KHR_KHR_ID IS NOT NULL))THEN
9211      X_DEAL_VALUES_REC.PROGRAM_TEMPLATE_CHR_ID    :=  L_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1;
9212      OPEN c_program_template_name(l_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1,l_HDR_UV_REC.KHR_KHR_ID);
9213      FETCH c_program_template_name INTO X_DEAL_VALUES_REC.PROGRAM_TEMPLATE_NAME;
9214      CLOSE c_program_template_name;
9215   END IF;
9216 
9217   X_DEAL_VALUES_REC.PRV_ACT_BOND_RGD_CODE         :=  'LAPACT';
9218   X_DEAL_VALUES_REC.PRV_ACT_BOND_RGP_ID           :=  L_HDR_UV_REC.RG_LAPACT_ID;
9219   X_DEAL_VALUES_REC.PRV_ACT_BOND_RUL_ID           :=  L_HDR_UV_REC.R_LAPACT_ID;
9220   X_DEAL_VALUES_REC.PRV_ACT_BOND_RUL_INF1         :=  L_HDR_UV_REC.R_LAPACT_RULE_INFORMATION1;
9221   X_DEAL_VALUES_REC.PRV_ACT_BOND_RUL_INF_CAT      :=  'LAPACT';
9222 
9223   X_DEAL_VALUES_REC.REBOOK_LIMIT_DATE             :=  TO_CHAR(TO_DATE(L_HDR_UV_REC.R_LAREBL_RULE_INFORMATION1,'YYYY/MM/DD'));
9224   X_DEAL_VALUES_REC.REBOOK_LIMIT_DATE_RGD_CODE    :=  'LAREBL';
9225   X_DEAL_VALUES_REC.REBOOK_LIMIT_DATE_RGP_ID      :=  L_HDR_UV_REC.RG_LAREBL_ID;
9226   X_DEAL_VALUES_REC.REBOOK_LIMIT_DATE_RUL_ID      :=  L_HDR_UV_REC.R_LAREBL_ID;
9227   X_DEAL_VALUES_REC.REBOOK_LIMIT_RUL_INF1         :=  L_HDR_UV_REC.R_LAREBL_RULE_INFORMATION1;
9228   X_DEAL_VALUES_REC.REBOOK_LIMIT_RUL_INF_CAT      :=  'LAREBL';
9229 
9230   IF (L_HDR_UV_REC.CHR_ORIG_SYSTEM_SOURCE_CODE = 'OKL_RELEASE') THEN
9231      X_DEAL_VALUES_REC.REPLACES_CHR_ID            :=  L_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1;
9232      OPEN c_okc_hdr(l_HDR_UV_REC.CHR_ORIG_SYSTEM_ID1);
9233      FETCH c_okc_hdr INTO X_DEAL_VALUES_REC.REPLACES_CONTRACT_NUMBER;
9234      CLOSE c_okc_hdr;
9235   END IF;
9236 
9237   X_DEAL_VALUES_REC.REP_CONTACT_ID                :=  L_HDR_UV_REC.CONTACT_ID;
9238   X_DEAL_VALUES_REC.REP_CONTACT_JTOT_OBJECT1_CODE :=  L_HDR_UV_REC.CONTACT_JTOT_OBJECT1_CODE;
9239   X_DEAL_VALUES_REC.REP_CONTACT_OBJECT1_ID1       :=  L_HDR_UV_REC.CONTACT_OBJECT1_ID1;
9240 
9241   IF (L_HDR_UV_REC.CONTACT_OBJECT1_ID2 <> '#') THEN
9242       X_DEAL_VALUES_REC.REP_CONTACT_OBJECT1_ID2   :=  L_HDR_UV_REC.CONTACT_OBJECT1_ID2;
9243   END IF;
9244 
9245   X_DEAL_VALUES_REC.REVENUE_RECOGNITION_MEANING   :=  L_HDR_UV_REC.REVENUE_RECOGNITION_MEANING;
9246   X_DEAL_VALUES_REC.REVOLVING_CREDIT_YN           :=  L_HDR_UV_REC.KHR_REVOLVING_CREDIT_YN;
9247 
9248   X_DEAL_VALUES_REC.RLES_RGD_CODE                 :=  'LARLES';
9249   X_DEAL_VALUES_REC.RLES_RGP_ID                   :=  L_HDR_UV_REC.RG_LARLES_ID;
9250   X_DEAL_VALUES_REC.RLES_RUL_ID                   :=  L_HDR_UV_REC.R_LARLES_ID;
9251   X_DEAL_VALUES_REC.RLES_RUL_INF1                 :=  L_HDR_UV_REC.R_LARLES_RULE_INFORMATION1;
9252   X_DEAL_VALUES_REC.RLES_RUL_INF_CAT              :=  'LARLES';
9253   X_DEAL_VALUES_REC.RELEASED_ASSET_MEANING        :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_YES_NO',L_HDR_UV_REC.R_LARLES_RULE_INFORMATION1);
9254 
9255   OPEN c_salesrep(L_HDR_UV_REC.contact_object1_id1);
9256   FETCH c_salesrep INTO X_DEAL_VALUES_REC.SALES_REPRESENTATIVE_NAME;
9257   CLOSE c_salesrep;
9258 
9259   X_DEAL_VALUES_REC.SCS_CODE_MEANING            :=  NULL;
9260   X_DEAL_VALUES_REC.SPLIT_FROM_CHR_ID           :=  NULL;
9261   X_DEAL_VALUES_REC.SPLIT_FROM_CONTRACT_NUMBER  :=  NULL;
9262   X_DEAL_VALUES_REC.STS_CODE_MEANING            :=  L_HDR_UV_REC.CHR_STS_MEANING;
9263 
9264   X_DEAL_VALUES_REC.TAX_OWNER_CODE            :=  L_HDR_UV_REC.R_LATOWN_RULE_INFORMATION1;
9265   X_DEAL_VALUES_REC.TAX_OWNER_MEANING         :=  OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_TAX_OWNER',l_HDR_UV_REC.R_LATOWN_RULE_INFORMATION1);
9266   X_DEAL_VALUES_REC.TAX_OWNER_RGD_CODE        :=  'LATOWN';
9267   X_DEAL_VALUES_REC.TAX_OWNER_RGP_ID          :=  L_HDR_UV_REC.RG_LATOWN_ID;
9268   X_DEAL_VALUES_REC.TAX_OWNER_RUL_ID          :=  L_HDR_UV_REC.R_LATOWN_ID;
9269   X_DEAL_VALUES_REC.TAX_OWNER_RUL_INF1        :=  L_HDR_UV_REC.R_LATOWN_RULE_INFORMATION1;
9270   X_DEAL_VALUES_REC.TAX_OWNER_RUL_INF_CAT     :=  'LATOWN';
9271 
9272   X_DEAL_VALUES_REC.UPG_ORIG_SYSTEM_REF       :=  NULL;
9273   X_DEAL_VALUES_REC.UPG_ORIG_SYSTEM_REF_ID    :=  NULL;
9274   X_DEAL_VALUES_REC.VPA_CONTRACT_NUMBER       :=  L_HDR_UV_REC.PROGRAM_CONTRACT_NUMBER;
9275   X_DEAL_VALUES_REC.VPA_KHR_ID                :=  L_HDR_UV_REC.KHR_KHR_ID;
9276   X_DEAL_VALUES_REC.VERS_VERSION              :=  L_HDR_UV_REC.VERS_VERSION;
9277 
9278   -- sjalasut, added product subclass code which will serve as a criteria to the Product List of values page
9279   X_DEAL_VALUES_REC.PRODUCT_SUBCLASS_CODE     := 'LEASE';
9280   CLOSE c_hdr_full_v;
9281   CLOSE c_hdr_full_uv;
9282 
9283     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9284        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9285     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9286        RAISE OKL_API.G_EXCEPTION_ERROR;
9287     END IF;
9288 
9289     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
9290 
9291     EXCEPTION
9292     WHEN OKL_API.G_EXCEPTION_ERROR THEN
9293     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9294                                l_api_name,
9295                                G_PKG_NAME,
9296                                'OKL_API.G_RET_STS_ERROR',
9297                                x_msg_count,
9298                                x_msg_data,
9299                                '_PVT');
9300     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9301     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9302                               l_api_name,
9303                               G_PKG_NAME,
9304                               'OKL_API.G_RET_STS_UNEXP_ERROR',
9305                               x_msg_count,
9306                               x_msg_data,
9307                               '_PVT');
9308     WHEN OTHERS THEN
9309     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9310                               l_api_name,
9311                               G_PKG_NAME,
9312                               'OTHERS',
9313                               x_msg_count,
9314                               x_msg_data,
9315                               '_PVT');
9316   END load_deal;
9317 
9318   -- Start of comments
9319   -- API name       : load_booking_summary
9320   -- Pre-reqs       : None
9321   -- Function       : This procedure loads booking summary record
9322   -- Parameters     :
9323   -- IN             : p_api_version - Standard input parameter
9324   --                  p_init_msg_list - Standard input parameter
9325   --                  p_chr_id  - Contract ID
9326   -- Version        : 1.0
9327   -- History        : asahoo created.
9328   -- End of comments
9329 
9330   PROCEDURE load_booking_summary(
9331       p_api_version                IN  NUMBER,
9332       p_init_msg_list              IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9333       x_return_status              OUT NOCOPY VARCHAR2,
9334       x_msg_count                  OUT NOCOPY NUMBER,
9335       x_msg_data                   OUT NOCOPY VARCHAR2,
9336       p_chr_id                     IN  NUMBER,
9337       x_booking_summary_rec        OUT NOCOPY booking_summary_rec) IS
9338 
9339   l_return_status        VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
9340   l_api_name             CONSTANT VARCHAR2(30) := 'load_booking_summary';
9341   l_api_version          CONSTANT NUMBER := 1.0;
9342 
9343   CURSOR c_khr_currency(p_chr_id IN NUMBER) IS
9344   SELECT CURRENCY_CODE
9345   FROM   OKC_K_HEADERS_B
9346   WHERE  ID = p_chr_id;
9347 
9348   CURSOR c_residual_amt(p_chr_id NUMBER) IS
9349   SELECT SUM(kle.residual_value) total_residual_amount
9350   FROM okl_k_lines kle,
9351        okc_k_lines_b cleb
9352   WHERE cleb.dnz_chr_id = p_chr_id
9353   AND   cleb.chr_id = p_chr_id
9354   AND   kle.id = cleb.id;
9355 
9356   CURSOR c_eot(p_chr_id NUMBER) IS
9357   SELECT rul.rule_information1 eot_option_code,
9358          rul.rule_information2 eot_option_amount
9359   FROM   okc_rule_groups_b rgp,
9360          okc_rules_b rul
9361   WHERE  rgp.dnz_chr_id = p_chr_id
9362   AND    rgp.rgd_code = 'AMTFOC'
9363   AND    rgp.dnz_chr_id = rgp.dnz_chr_id
9364   AND    rul.rgp_id = rgp.id
9365   AND    rul.rule_information_category = 'AMBPOC';
9366 
9367   CURSOR c_upfront_tax(p_chr_id NUMBER) IS
9368   SELECT SUM(NVL(total_tax,0))
9369   FROM okl_tax_sources txs
9370   WHERE txs.khr_id = p_chr_id
9371   AND txs.tax_line_status_code = 'ACTIVE'
9372   AND txs.tax_call_type_code = 'UPFRONT_TAX';
9373 
9374   CURSOR c_rvi_premium(p_chr_id NUMBER) IS
9375   SELECT kle.amount rvi_premium
9376   FROM   okc_k_lines_b cleb,
9377          okl_k_lines kle,
9378          okc_line_styles_b lseb
9379   WHERE cleb.dnz_chr_id = p_chr_id
9380   AND   cleb.chr_id = p_chr_id
9381   AND   kle.id = cleb.id
9382   AND   cleb.lse_id = lseb.id
9383   AND   lseb.lty_code = 'FEE'
9384   AND   kle.fee_purpose_code = 'RVI';
9385 
9386   l_eot_option_code       okc_rules_b.rule_information1%TYPE;
9387   l_currency_code         okc_k_headers_b.currency_code%TYPE;
9388   l_total_financed_amount NUMBER;
9389   l_total_funded          NUMBER;
9390   l_total_subsidies       NUMBER;
9391   l_eot_amount            NUMBER;
9392   l_upfront_sales_tax     NUMBER;
9393   l_rvi_premium           NUMBER;
9394   l_residual_amount       NUMBER;
9395 
9396   BEGIN
9397     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
9398           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, 'OKL_DEAL_CREAT_PVT.load_booking_summary.', 'Begin(+)');
9399      END IF;
9400 
9401     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9402     -- Call start_activity to create savepoint, check compatibility
9403     -- and initialize message list
9404     x_return_status := OKL_API.START_ACTIVITY (
9405                                l_api_name
9406                                ,p_init_msg_list
9407                                ,'_PVT'
9408                                ,x_return_status);
9409     -- Check if activity started successfully
9410     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9411        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9412     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9413        RAISE OKL_API.G_EXCEPTION_ERROR;
9414     END IF;
9415 
9416     IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
9417             FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, 'OKL_DEAL_CREAT_PVT.load_booking_summary.',
9418                    'p_chr_id :'||p_chr_id);
9419     END IF;
9420 
9421     x_booking_summary_rec.dnz_chr_id := p_chr_id;
9422 
9423     OPEN c_khr_currency(p_chr_id => p_chr_id);
9424     FETCH c_khr_currency INTO l_currency_code;
9425     CLOSE c_khr_currency;
9426 
9427     OKL_EXECUTE_FORMULA_PUB.execute(
9428                                    p_api_version          => p_api_version,
9429                                    p_init_msg_list        => p_init_msg_list,
9430                                    x_return_status        => x_return_status,
9431                                    x_msg_count            => x_msg_count,
9432                                    x_msg_data             => x_msg_data,
9433                                    p_formula_name         => 'CONTRACT_FINANCED_AMOUNT_BKG',
9434                                    p_contract_id          => p_chr_id,
9435                                    p_line_id              => NULL,
9436                                    x_value                => l_total_financed_amount);
9437 
9438     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9439        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9440     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9441        RAISE OKL_API.G_EXCEPTION_ERROR;
9442     END IF;
9443 
9444     -- Format the financed amt
9445     x_booking_summary_rec.total_financed_amount := OKL_ACCOUNTING_UTIL.format_amount(
9446                                                             l_total_financed_amount,
9447                                                             l_currency_code);
9448 
9449     OKL_EXECUTE_FORMULA_PUB.execute(
9450                                    p_api_version          => p_api_version,
9451                                    p_init_msg_list        => p_init_msg_list,
9452                                    x_return_status        => x_return_status,
9453                                    x_msg_count            => x_msg_count,
9454                                    x_msg_data             => x_msg_data,
9455                                    p_formula_name         => 'CONTRACT_TOT_FNDED',
9456                                    p_contract_id          => p_chr_id,
9457                                    p_line_id              => NULL,
9458                                    x_value                => l_total_funded);
9459 
9460     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9461        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9462     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9463        RAISE OKL_API.G_EXCEPTION_ERROR;
9464     END IF;
9465 
9466     -- Format the funded amt
9467     x_booking_summary_rec.total_funded := OKL_ACCOUNTING_UTIL.format_amount(
9468                                                             l_total_funded,
9469                                                             l_currency_code);
9470 
9471     OPEN c_residual_amt(p_chr_id => p_chr_id);
9472     FETCH c_residual_amt INTO l_residual_amount;
9473     CLOSE c_residual_amt;
9474     -- Format the residual amt
9475     x_booking_summary_rec.total_residual_amount := OKL_ACCOUNTING_UTIL.format_amount(
9476                                                             l_residual_amount,
9477                                                             l_currency_code);
9478 
9479     OKL_SUBSIDY_PROCESS_PVT.get_contract_subsidy_amount(
9480                                    p_api_version       => p_api_version,
9481                                    p_init_msg_list     => p_init_msg_list,
9482                                    x_return_status     => x_return_status,
9483                                    x_msg_count         => x_msg_count,
9484                                    x_msg_data          => x_msg_data,
9485                                    p_chr_id            => p_chr_id,
9486                                    p_accounting_method => NULL,
9487                                    x_subsidy_amount    => l_total_subsidies);
9488 
9489     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9490        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9491     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9492        RAISE OKL_API.G_EXCEPTION_ERROR;
9493     END IF;
9494 
9495     -- Format the subsidy amt
9496     x_booking_summary_rec.total_subsidies := OKL_ACCOUNTING_UTIL.format_amount(
9497                                                             l_total_subsidies,
9498                                                             l_currency_code);
9499 
9500     OPEN c_eot(p_chr_id => p_chr_id);
9501     FETCH c_eot INTO l_eot_option_code,l_eot_amount;
9502     CLOSE c_eot;
9503     -- Format the end of term amt
9504     x_booking_summary_rec.eot_amount := OKL_ACCOUNTING_UTIL.format_amount(
9505                                                             l_eot_amount,
9506                                                             l_currency_code);
9507 
9508     x_booking_summary_rec.eot_option := OKL_LLA_UTIL_PVT.GET_LOOKUP_MEANING('OKL_QUOTE_RULE_OPTION_TYPE',l_eot_option_code);
9509 
9510     OPEN c_upfront_tax(p_chr_id => p_chr_id);
9511     FETCH c_upfront_tax INTO l_upfront_sales_tax;
9512     CLOSE c_upfront_tax;
9513     -- Format the upfront tax amt
9514     x_booking_summary_rec.total_upfront_sales_tax := OKL_ACCOUNTING_UTIL.format_amount(
9515                                                             l_upfront_sales_tax,
9516                                                             l_currency_code);
9517 
9518     OPEN c_rvi_premium(p_chr_id => p_chr_id);
9519     FETCH c_rvi_premium INTO l_rvi_premium;
9520     CLOSE c_rvi_premium;
9521     -- Format the rvi premium amt
9522     x_booking_summary_rec.rvi_premium := OKL_ACCOUNTING_UTIL.format_amount(
9523                                                             l_rvi_premium,
9524                                                             l_currency_code);
9525 
9526     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
9527 
9528     IF( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
9529           FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, 'OKL_DEAL_CREAT_PVT.load_booking_summary.', 'End(-)');
9530      END IF;
9531 
9532     EXCEPTION
9533     WHEN OKL_API.G_EXCEPTION_ERROR THEN
9534          IF c_khr_currency%ISOPEN THEN
9535             CLOSE c_khr_currency;
9536          END IF;
9537          IF c_residual_amt%ISOPEN THEN
9538             CLOSE c_residual_amt;
9539          END IF;
9540          IF c_eot%ISOPEN THEN
9541             CLOSE c_eot;
9542          END IF;
9543          IF c_upfront_tax%ISOPEN THEN
9544             CLOSE c_upfront_tax;
9545          END IF;
9546          IF c_rvi_premium%ISOPEN THEN
9547             CLOSE c_rvi_premium;
9548          END IF;
9549          x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9550                                     l_api_name,
9551                                     G_PKG_NAME,
9552                                     'OKL_API.G_RET_STS_ERROR',
9553                                     x_msg_count,
9554                                     x_msg_data,
9555                                     '_PVT');
9556          IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
9557               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, 'OKL_DEAL_CREAT_PVT.load_booking_summary.', 'EXP - ERROR');
9558          END IF;
9559     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9560          IF c_khr_currency%ISOPEN THEN
9561             CLOSE c_khr_currency;
9562          END IF;
9563          IF c_residual_amt%ISOPEN THEN
9564             CLOSE c_residual_amt;
9565          END IF;
9566          IF c_eot%ISOPEN THEN
9567             CLOSE c_eot;
9568          END IF;
9569          IF c_upfront_tax%ISOPEN THEN
9570             CLOSE c_upfront_tax;
9571          END IF;
9572          IF c_rvi_premium%ISOPEN THEN
9573             CLOSE c_rvi_premium;
9574          END IF;
9575          x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9576                                    l_api_name,
9577                                    G_PKG_NAME,
9578                                    'OKL_API.G_RET_STS_UNEXP_ERROR',
9579                                    x_msg_count,
9580                                    x_msg_data,
9581                                    '_PVT');
9582          IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
9583               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, 'OKL_DEAL_CREAT_PVT.load_booking_summary.', 'EXP - UNEXCP ERROR');
9584          END IF;
9585     WHEN OTHERS THEN
9586          IF c_khr_currency%ISOPEN THEN
9587             CLOSE c_khr_currency;
9588          END IF;
9589          IF c_residual_amt%ISOPEN THEN
9590             CLOSE c_residual_amt;
9591          END IF;
9592          IF c_eot%ISOPEN THEN
9593             CLOSE c_eot;
9594          END IF;
9595          IF c_upfront_tax%ISOPEN THEN
9596             CLOSE c_upfront_tax;
9597          END IF;
9598          IF c_rvi_premium%ISOPEN THEN
9599             CLOSE c_rvi_premium;
9600          END IF;
9601          x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9602                                    l_api_name,
9603                                    G_PKG_NAME,
9604                                    'OTHERS',
9605                                    x_msg_count,
9606                                    x_msg_data,
9607                                    '_PVT');
9608          IF( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
9609               FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, 'OKL_DEAL_CREAT_PVT.load_booking_summary.', 'EXP - OTHERS');
9610          END IF;
9611        END load_booking_summary;
9612 
9613 END Okl_Deal_Creat_Pvt;