DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_DEAL_CREATE_PUB

Source


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