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.52.12020000.2 2013/03/07 05:08:59 racheruv 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     --Bug# 12780638: Removed cust_acct_id and bill_to_site_use_id
2252     --               from this cursor as we are not copying
2253     --               vendor billing details from VPA to contract
2254     CURSOR c_vp_cpl_csr(p_source_id NUMBER) IS
2255      SELECT id, object_version_number, sfwt_flag,
2256             cpl_id, chr_id, cle_id,
2257             rle_code, dnz_chr_id, object1_id1,
2258             object1_id2, jtot_object1_code, cognomen,
2259             code, facility, minority_group_lookup_code,
2260             small_business_flag, women_owned_flag, alias,
2261             attribute_category, attribute1, attribute2,
2262             attribute3, attribute4, attribute5,
2263             attribute6, attribute7, attribute8,
2264             attribute9, attribute10, attribute11,
2265             attribute12, attribute13, attribute14,
2266             attribute15, created_by, creation_date,
2267             last_updated_by, last_update_date, last_update_login,
2268             NULL cust_acct_id, NULL bill_to_site_use_id
2269      FROM okc_k_party_roles_v cplv
2270      WHERE cplv.rle_code = G_LEASE_VENDOR
2271      AND cplv.chr_id = p_source_id; -- vendor program id
2272 
2273     --Bug#5116278  end
2274 
2275 
2276   BEGIN
2277     x_return_status := OKC_API.START_ACTIVITY(
2278 			p_api_name      => l_api_name,
2279 			p_pkg_name      => g_pkg_name,
2280 			p_init_msg_list => p_init_msg_list,
2281 			l_api_version   => l_api_version,
2282 			p_api_version   => p_api_version,
2283 			p_api_type      => g_api_type,
2284 			x_return_status => x_return_status);
2285 
2286     -- check if activity started successfully
2287     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2288        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2289     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2290        RAISE OKC_API.G_EXCEPTION_ERROR;
2291     END IF;
2292 
2293     lp_chrv_rec.sfwt_flag := 'N';
2294     lp_chrv_rec.object_version_number := 1.0;
2295     lp_chrv_rec.sts_code := G_STS_CODE; -- 'ENTERED';
2296     lp_chrv_rec.scs_code := p_scs_code;
2297     lp_chrv_rec.contract_number := p_contract_number;
2298     lp_chrv_rec.authoring_org_id := OKL_CONTEXT.GET_OKC_ORG_ID;
2299     lp_chrv_rec.inv_organization_id := OKL_CONTEXT.get_okc_organization_id;
2300 
2301 --    lp_chrv_rec.currency_code := OKC_CURRENCY_API.GET_OU_CURRENCY(OKL_CONTEXT.GET_OKC_ORG_ID);
2302     lp_chrv_rec.currency_code := OKL_ACCOUNTING_UTIL.get_func_curr_code;
2303 
2304     lp_chrv_rec.currency_code_renewed := NULL;
2305     lp_chrv_rec.template_yn := 'N';
2306     lp_chrv_rec.chr_type := 'CYA';
2307     lp_chrv_rec.archived_yn := 'N';
2308     lp_chrv_rec.deleted_yn := 'N';
2309     lp_chrv_rec.buy_or_sell := 'S';
2310     lp_chrv_rec.issue_or_receive := 'I';
2311     lp_chrv_rec.start_date := p_effective_from;
2312 /*
2313     IF ( p_template_yn = 'Y' ) THEN
2314       lp_chrv_rec.template_yn := 'Y';
2315     END IF;
2316 */
2317     lp_khrv_rec.object_version_number := 1.0;
2318 
2319     IF ( p_program_name IS NOT NULL ) THEN
2320       lp_khrv_rec.khr_id := p_program_id;
2321     END IF;
2322 
2323     IF ( p_template_type IS NOT NULL ) THEN
2324       lp_khrv_rec.template_type_code := p_template_type;
2325       lp_chrv_rec.template_yn := 'Y';
2326     END IF;
2327     --Added by dpsingh for LE Uptake
2328     lp_khrv_rec.legal_entity_id := p_legal_entity_id;
2329     OKL_CONTRACT_PUB.create_contract_header(
2330       p_api_version    => p_api_version,
2331       p_init_msg_list  => p_init_msg_list,
2332       x_return_status  => x_return_status,
2333       x_msg_count      => x_msg_count,
2334       x_msg_data       => x_msg_data,
2335       p_chrv_rec       => lp_chrv_rec,
2336       p_khrv_rec       => lp_khrv_rec,
2337       x_chrv_rec       => lx_chrv_rec,
2338       x_khrv_rec       => lx_khrv_rec);
2339 
2340     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2341        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2342     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2343        RAISE OKC_API.G_EXCEPTION_ERROR;
2344     END IF;
2345 
2346     x_chr_id := lx_chrv_rec.id;
2347 
2348     --Bug#5116278  start
2349     IF ( p_program_name IS NOT NULL ) THEN
2350 
2351        -- copy vp party lease vendor to lease contract
2352        l_vp_cpl_id := NULL;
2353 
2354        OPEN c_vp_cpl_csr(p_program_id);
2355        FETCH c_vp_cpl_csr BULK COLLECT INTO l_cplv_tbl;
2356        CLOSE c_vp_cpl_csr;
2357 
2358        IF( l_cplv_tbl.COUNT > 0 ) THEN
2359 
2360         FOR i IN l_cplv_tbl.FIRST..l_cplv_tbl.LAST
2361         LOOP
2362           l_cplv_tbl(i).ID := null;
2363           IF (l_cplv_tbl(i).CHR_ID IS NOT NULL) THEN
2364             l_cplv_tbl(i).CHR_ID := x_chr_id;
2365           END IF;
2366           IF (l_cplv_tbl(i).DNZ_CHR_ID IS NOT NULL) THEN
2367             l_cplv_tbl(i).DNZ_CHR_ID := x_chr_id;
2368           END IF;
2369           l_kplv_tbl(i).attribute_category := null;
2370         END LOOP;
2371 
2372   	IF okl_context.get_okc_org_id  IS NULL THEN
2373    	  l_chr_id := x_chr_id;
2374 	  okl_context.set_okc_org_context(p_chr_id => l_chr_id );
2375         END IF;
2376 
2377         /*OKL_COPY_CONTRACT_PUB.copy_party_roles(
2378                   p_api_version	=> p_api_version,
2379                   p_init_msg_list	=> p_init_msg_list,
2380                   x_return_status 	=> x_return_status,
2381                   x_msg_count     	=> x_msg_count,
2382                   x_msg_data      	=> x_msg_data,
2383      	          p_cpl_id              => l_vp_cpl_id,
2384      	          p_cle_id              => NULL,
2385      	          p_chr_id              => x_chr_id,
2386      	          p_rle_code            => G_LEASE_VENDOR,
2387      	          x_cpl_id		=> x_cpl_id
2388      	   );*/
2389 
2390          IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2391                     OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,'l_cplv_tbl.count=' || l_cplv_tbl.count);
2392          END IF;
2393          okl_k_party_roles_pvt.create_k_party_role(
2394            p_api_version      => p_api_version,
2395            p_init_msg_list    => p_init_msg_list,
2396            x_return_status    => x_return_status,
2397            x_msg_count        => x_msg_count,
2398            x_msg_data         => x_msg_data,
2399            p_cplv_tbl         => l_cplv_tbl,
2400            x_cplv_tbl         => lx_cplv_tbl,
2401            p_kplv_tbl         => l_kplv_tbl,
2402            x_kplv_tbl         => lx_kplv_tbl);
2403 
2404            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2405             RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2406            ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2407                     RAISE OKC_API.G_EXCEPTION_ERROR;
2408            END IF;
2409 
2410        END IF;
2411 
2412     END IF;
2413     --Bug#5116278  end
2414 
2415     IF ( p_customer_name IS NOT NULL ) THEN
2416 
2417     -- now we attach the party to the header
2418     lp_cplv_rec.object_version_number := 1.0;
2419     lp_cplv_rec.sfwt_flag := OKC_API.G_FALSE;
2420     lp_cplv_rec.dnz_chr_id := x_chr_id;
2421     lp_cplv_rec.chr_id := x_chr_id;
2422     lp_cplv_rec.cle_id := NULL;
2423     lp_cplv_rec.object1_id1 := p_customer_id1;
2424     lp_cplv_rec.object1_id2 := p_customer_id2;
2425     lp_cplv_rec.jtot_object1_code := p_customer_code;
2426     lp_cplv_rec.rle_code := G_RLE_CODE;
2427 
2428     OPEN check_party_csr(x_chr_id);
2429     FETCH check_party_csr INTO row_count;
2430     CLOSE check_party_csr;
2431     IF row_count = 1 THEN
2432       x_return_status := OKC_API.g_ret_sts_error;
2433       OKC_API.SET_MESSAGE(p_app_name => g_app_name, p_msg_name => 'Party_already_exists');
2434       RAISE OKC_API.G_EXCEPTION_ERROR;
2435     END IF;
2436 
2437 
2438 ----- Changes by Kanti
2439 ----- Validate the JTOT Object code, ID1 and ID2
2440 
2441      OPEN role_csr(lp_cplv_rec.rle_code);
2442      FETCH role_csr INTO l_access_level;
2443      CLOSE role_csr;
2444 
2445      IF (l_access_level = 'S') THEN
2446 
2447          okl_la_validation_util_pvt.VALIDATE_ROLE_JTOT (p_api_version    => p_api_version,
2448                                                           p_init_msg_list  => OKC_API.G_FALSE,
2449                                                           x_return_status  => x_return_status,
2450                                                           x_msg_count	   => x_msg_count,
2451                                                           x_msg_data	   => x_msg_data,
2452                                                           p_object_name    => lp_cplv_rec.jtot_object1_code,
2453                                                           p_id1            => lp_cplv_rec.object1_id1,
2454                                                           p_id2            => lp_cplv_rec.object1_id2);
2455 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2456               RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2457             ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2458               RAISE OKC_API.G_EXCEPTION_ERROR;
2459             END IF;
2460 
2461       END IF;
2462 
2463 ----  Changes End
2464 
2465     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
2466     --              to create records in tables
2467     --              okc_k_party_roles_b and okl_k_party_roles
2468     /*
2469     OKC_CONTRACT_PARTY_PUB.create_k_party_role(
2470       p_api_version    => p_api_version,
2471       p_init_msg_list  => p_init_msg_list,
2472       x_return_status  => x_return_status,
2473       x_msg_count      => x_msg_count,
2474       x_msg_data       => x_msg_data,
2475       p_cplv_rec       => lp_cplv_rec,
2476       x_cplv_rec       => lx_cplv_rec);
2477     */
2478 
2479     okl_k_party_roles_pvt.create_k_party_role(
2480       p_api_version      => p_api_version,
2481       p_init_msg_list    => p_init_msg_list,
2482       x_return_status    => x_return_status,
2483       x_msg_count        => x_msg_count,
2484       x_msg_data         => x_msg_data,
2485       p_cplv_rec         => lp_cplv_rec,
2486       x_cplv_rec         => lx_cplv_rec,
2487       p_kplv_rec         => lp_kplv_rec,
2488       x_kplv_rec         => lx_kplv_rec);
2489 
2490     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2491        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2492     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2493        RAISE OKC_API.G_EXCEPTION_ERROR;
2494     END IF;
2495 
2496     END IF;
2497 
2498 
2499     OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2500 
2501   EXCEPTION
2502     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2503       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2504 			p_api_name  => l_api_name,
2505 			p_pkg_name  => g_pkg_name,
2506 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
2507 			x_msg_count => x_msg_count,
2508 			x_msg_data  => x_msg_data,
2509 			p_api_type  => g_api_type);
2510 
2511     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2512       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2513 			p_api_name  => l_api_name,
2514 			p_pkg_name  => g_pkg_name,
2515 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
2516 			x_msg_count => x_msg_count,
2517 			x_msg_data  => x_msg_data,
2518 			p_api_type  => g_api_type);
2519 
2520     WHEN OTHERS THEN
2521       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2522 			p_api_name  => l_api_name,
2523 			p_pkg_name  => g_pkg_name,
2524 			p_exc_name  => 'OTHERS',
2525 			x_msg_count => x_msg_count,
2526 			x_msg_data  => x_msg_data,
2527 			p_api_type  => g_api_type);
2528   END;
2529 
2530   PROCEDURE delete_rules(
2531     p_api_version                  IN NUMBER,
2532     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2533     x_return_status                OUT NOCOPY VARCHAR2,
2534     x_msg_count                    OUT NOCOPY NUMBER,
2535     x_msg_data                     OUT NOCOPY VARCHAR2,
2536     p_old_khr_id                   IN  NUMBER, -- prev vp id
2537     p_source_id                    IN  NUMBER, -- vp id
2538     p_dest_id                      IN  NUMBER, -- k id
2539     p_org_id                       IN  NUMBER,
2540     p_organization_id              IN  NUMBER) IS
2541 
2542     l_api_name	VARCHAR2(30) := 'DELETE_RULES';
2543     l_api_version	CONSTANT NUMBER	  := 1.0;
2544 
2545     lp_rgpv_rec Okl_Rule_Pub.rgpv_rec_type;
2546 
2547     lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
2548     lp_rmpv_rec OKL_OKC_MIGRATION_PVT.rmpv_rec_type;
2549 
2550     l_rgpr_id NUMBER := NULL;
2551     l_vp_tmpl_id  NUMBER;
2552     l_k_cpl_id okc_k_party_roles_v.id%TYPE := NULL;
2553     l_k_object1_id1 okc_k_party_roles_v.object1_id1%TYPE := NULL;
2554 
2555 --Cursor to get vp template
2556     CURSOR vp_tmpl_csr(p_vp_id IN NUMBER) IS
2557     /* Modified this query to improve performance for bug#6979120
2558     SELECT id
2559     FROM   okl_k_headers_full_v
2560     WHERE  scs_code = 'PROGRAM'
2561     AND    sts_code IN ('ACTIVE','PASSED')
2562     AND    khr_id = p_vp_id
2563     AND    NVL(template_yn,'N') = 'Y'; */
2564     SELECT CHRB.ID ID
2565     FROM OKC_K_HEADERS_ALL_B CHRB,
2566          OKL_K_HEADERS KHR
2567     WHERE CHRB.SCS_CODE = 'PROGRAM'
2568     AND CHRB.ID = KHR.ID
2569     AND CHRB.STS_CODE IN ('ACTIVE', 'PASSED')
2570     AND CHRB.TEMPLATE_YN = 'Y'
2571     AND KHR.KHR_ID = p_vp_id;
2572 
2573  -- returns rgp id thet exist in lease as well as vp
2574     CURSOR c_prev_src_crs(p_vp_tmpl_id IN NUMBER) IS
2575          SELECT rglease.id, rglease.rgd_code
2576          FROM  okc_rule_groups_v rglease
2577          WHERE dnz_chr_id = p_dest_id
2578          AND chr_id = p_dest_id
2579          AND EXISTS(
2580                SELECT '1'
2581                FROM   okc_rule_groups_v rg,
2582                       okc_k_headers_v hdr
2583                WHERE  rg.chr_id = p_vp_tmpl_id
2584                AND    hdr.id = rg.chr_id
2585                AND    hdr.id = rg.dnz_chr_id
2586                AND    rg.cle_id IS NULL
2587                AND    rg.rgd_code = rglease.rgd_code
2588 	       );
2589 
2590 -- gets the party lease vendor that exists in vp
2591 --start modifying abhsaxen Cursor not in use
2592 --   CURSOR c_prev_cpl_csr IS
2593 --end  modifying abhsaxen Cursor not in use
2594 
2595 --start modifying abhsaxen Cursor not in use
2596 
2597 --   CURSOR c_rg_party_csr(p_cpl_id IN NUMBER, p_object1_id1 IN okc_k_party_roles_v.object1_id1%TYPE) IS
2598 --end modifying abhsaxen Cursor not in use
2599   BEGIN
2600 
2601     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
2602 		p_org_id =>  p_org_id,
2603 		p_organization_id	=> p_organization_id);
2604 
2605     x_return_status := OKC_API.START_ACTIVITY(
2606 			p_api_name      => l_api_name,
2607 			p_pkg_name      => g_pkg_name,
2608 			p_init_msg_list => p_init_msg_list,
2609 			l_api_version   => l_api_version,
2610 			p_api_version   => p_api_version,
2611 			p_api_type      => g_api_type,
2612 			x_return_status => x_return_status);
2613 
2614     -- check if activity started successfully
2615     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2616        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2617     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2618        RAISE OKC_API.G_EXCEPTION_ERROR;
2619     END IF;
2620 
2621     OPEN vp_tmpl_csr(p_vp_id => p_old_khr_id);
2622     FETCH vp_tmpl_csr INTO l_vp_tmpl_id;
2623 
2624       IF vp_tmpl_csr%NOTFOUND THEN
2625          NULL;
2626       ELSE
2627 
2628         -- copy vp rules to lease contract
2629         FOR l_c_prev_src_crs IN c_prev_src_crs(p_vp_tmpl_id => l_vp_tmpl_id) LOOP
2630 
2631           lp_rgpv_rec.id := l_c_prev_src_crs.id;
2632 
2633           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
2634 
2635             OKL_RULE_PUB.delete_rule_group(
2636              p_api_version	=> p_api_version,
2637              p_init_msg_list	=> p_init_msg_list,
2638              x_return_status 	=> x_return_status,
2639              x_msg_count     	=> x_msg_count,
2640              x_msg_data      	=> x_msg_data,
2641              p_rgpv_rec         => lp_rgpv_rec
2642              );
2643 
2644 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2645 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2646 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2647 	       RAISE OKC_API.G_EXCEPTION_ERROR;
2648 	    END IF;
2649 
2650          END IF;
2651 
2652         END LOOP;
2653 
2654      END IF;
2655 
2656    CLOSE vp_tmpl_csr;
2657 
2658   OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
2659 
2660   EXCEPTION
2661     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2662       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2663 			p_api_name  => l_api_name,
2664 			p_pkg_name  => g_pkg_name,
2665 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
2666 			x_msg_count => x_msg_count,
2667 			x_msg_data  => x_msg_data,
2668 			p_api_type  => g_api_type);
2669 
2670     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2671       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2672 			p_api_name  => l_api_name,
2673 			p_pkg_name  => g_pkg_name,
2674 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
2675 			x_msg_count => x_msg_count,
2676 			x_msg_data  => x_msg_data,
2677 			p_api_type  => g_api_type);
2678 
2679     WHEN OTHERS THEN
2680       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2681 			p_api_name  => l_api_name,
2682 			p_pkg_name  => g_pkg_name,
2683 			p_exc_name  => 'OTHERS',
2684 			x_msg_count => x_msg_count,
2685 			x_msg_data  => x_msg_data,
2686 			p_api_type  => g_api_type);
2687   END;
2688 
2689 
2690   PROCEDURE copy_rules(
2691     p_api_version                  IN NUMBER,
2692     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2693     x_return_status                OUT NOCOPY VARCHAR2,
2694     x_msg_count                    OUT NOCOPY NUMBER,
2695     x_msg_data                     OUT NOCOPY VARCHAR2,
2696     p_source_id                    IN  NUMBER, -- vp id
2697     p_dest_id                      IN  NUMBER, -- k id
2698     p_org_id                       IN  NUMBER,
2699     p_organization_id              IN  NUMBER) IS
2700 
2701     l_api_name	VARCHAR2(30) := 'COPY_RULES';
2702     l_api_version	CONSTANT NUMBER	  := 1.0;
2703 
2704     l_rgp_id 		okc_rule_groups_v.id%TYPE;
2705     l_cle_id		okc_rule_groups_v.cle_id%TYPE DEFAULT NULL;
2706     l_chr_id		okc_rule_groups_v.chr_id%TYPE := p_dest_id;
2707     l_to_template_yn	VARCHAR2(5) :='N';
2708     x_rgp_id		okc_rule_groups_v.id%TYPE;
2709 
2710     l_func_curr_code     	okc_k_headers_b.currency_code%TYPE := NULL;
2711     l_k_curr_code        	okc_k_headers_b.currency_code%TYPE := NULL;
2712     l_start_date                okc_k_headers_b.start_date%TYPE;
2713     l_rule_amt                  NUMBER;
2714     x_contract_currency	        okl_k_headers_full_v.currency_code%TYPE := NULL;
2715     x_currency_conversion_type	okl_k_headers_full_v.currency_conversion_type%TYPE := NULL;
2716     x_currency_conversion_rate	okl_k_headers_full_v.currency_conversion_rate%TYPE := NULL;
2717     x_currency_conversion_date	okl_k_headers_full_v.currency_conversion_date%TYPE := NULL;
2718     x_converted_amount 		NUMBER := NULL;
2719 
2720     l_rgd_code                  okc_rule_groups_b.rgd_code%TYPE := NULL;
2721     l_rule_info_cat             okc_rules_b.rule_information_category%TYPE := NULL;
2722     l_rule_id                   NUMBER := NULL;
2723     l_rule_segment              VARCHAR2(250) := NULL;
2724 
2725     l_no_data_found BOOLEAN := TRUE;
2726 
2727     l_vp_tmpl_id  NUMBER;
2728 
2729   --Cursor to get vp template
2730     CURSOR vp_tmpl_csr(p_vp_id IN NUMBER) IS
2731     /* Modified this query to improve performance for bug#6979120
2732     SELECT id
2733     FROM   okl_k_headers_full_v
2734     WHERE  scs_code = 'PROGRAM'
2735     AND    sts_code IN ('ACTIVE','PASSED')
2736     AND    khr_id = p_vp_id
2737     AND    NVL(template_yn,'N') = 'Y'; */
2738     SELECT CHRB.ID ID
2739     FROM OKC_K_HEADERS_ALL_B CHRB,
2740          OKL_K_HEADERS KHR
2741     WHERE CHRB.SCS_CODE = 'PROGRAM'
2742     AND CHRB.ID = KHR.ID
2743     AND CHRB.STS_CODE IN ('ACTIVE', 'PASSED')
2744     AND CHRB.TEMPLATE_YN = 'Y'
2745     AND KHR.KHR_ID = p_vp_id;
2746 
2747     -- returns vendor program rgd codes which are qualified for lease
2748     CURSOR c_src_crs(p_vp_tmpl_id IN NUMBER) IS
2749         SELECT rg.id
2750         FROM   okc_rule_groups_v rg,
2751                okc_k_headers_v hdr
2752         WHERE  rg.chr_id = p_vp_tmpl_id
2753         AND    hdr.id = rg.chr_id
2754         AND    hdr.id = rg.dnz_chr_id
2755         AND    rg.cle_id IS NULL
2756         AND  EXISTS
2757              (SELECT '1'
2758               FROM   okc_subclass_rg_defs rgdfs
2759               WHERE  rgdfs.rgd_code = rg.rgd_code
2760               AND    rgdfs.scs_code = 'LEASE')
2761         AND NOT EXISTS
2762            (SELECT '1'
2763             FROM  okc_rule_groups_v rglease
2764             WHERE dnz_chr_id =p_dest_id
2765             AND chr_id = p_dest_id
2766         AND rglease.rgd_code = rg.rgd_code);
2767 
2768      CURSOR c_rule_amt_crs(p_rule_code IN VARCHAR2, p_rule_group_code IN VARCHAR2) IS
2769 	--Start modified abhsaxen for performance SQLID 20562750
2770 	SELECT fus.application_column_name
2771 		FROM   FND_DESCR_FLEX_COLUMN_USAGES fus,
2772 		       fnd_flex_value_sets ffv,
2773 		       okc_rg_def_rules    defrul,
2774 		       fnd_lookup_values   flup,
2775 		       okc_rule_defs_v     rulup
2776 		WHERE  fus.DESCRIPTIVE_FLEX_CONTEXT_CODE  = defrul.rdf_code
2777 		AND    fus.application_id = 540
2778 		AND    ffv.flex_value_set_id = fus.flex_value_set_id
2779 		AND    flup.lookup_code         = defrul.rgd_code
2780 		AND    flup.lookup_type         = 'OKC_RULE_GROUP_DEF'
2781 		AND    rulup.rule_code          = defrul.rdf_code
2782 		AND    defrul.rdf_code          = p_rule_code
2783 		AND    defrul.rgd_code          = p_rule_group_code
2784 		AND    flex_value_set_name = 'OKC_AMOUNT'
2785 	--end modified abhsaxen for performance SQLID 20562750
2786 	;
2787      CURSOR c_rule_csr (p_rgp_id IN NUMBER) IS
2788 	--Start modified abhsaxen for performance SQLID 20562755
2789 	select rgp.rgd_code,rul.rule_information_category,rul.id
2790 	 from okc_rule_groups_b rgp, okc_rules_b rul
2791 	 where rgp.id = rul.rgp_id
2792 	 and rul.dnz_chr_id = p_dest_id
2793 	 and rgp.id = p_rgp_id
2794 	 and exists (
2795 	  select 1
2796 	  from   FND_DESCR_FLEX_COLUMN_USAGES fus,
2797 	      fnd_flex_value_sets ffv,
2798 	      okc_rg_def_rules    defrul,
2799 	      fnd_lookup_values   flup,
2800 	      okc_rule_defs_b     rulup
2801 	  where  fus.descriptive_flex_context_code  = defrul.rdf_code
2802 		  and    fus.application_id = 540
2803 	  and    ffv.flex_value_set_id(+) =  fus.flex_value_set_id
2804 	  and    flup.lookup_code         =  defrul.rgd_code
2805 	  and    flup.lookup_type         =  'OKC_RULE_GROUP_DEF'
2806 	  and    rulup.rule_code          =  defrul.rdf_code
2807 	  and    flex_value_set_name      =  'OKC_AMOUNT'
2808 	  and    defrul.rdf_code          =  rul.rule_information_category -- rule
2809 	  and    defrul.rgd_code          =  rgp.rgd_code -- rule group
2810 	  );
2811 	--end modified abhsaxen for performance SQLID 20562755
2812 
2813     CURSOR c_k_curr_csr IS
2814      SELECT currency_code, start_date
2815      FROM okc_k_headers_b
2816      WHERE id = p_dest_id;
2817 
2818     CURSOR c_rule_segmnts_csr(p_rule_id IN NUMBER) IS
2819      SELECT RULE_INFORMATION1,RULE_INFORMATION2,RULE_INFORMATION3,RULE_INFORMATION4,RULE_INFORMATION5,
2820             RULE_INFORMATION6,RULE_INFORMATION7,RULE_INFORMATION8,RULE_INFORMATION9,RULE_INFORMATION10,
2821             RULE_INFORMATION11,RULE_INFORMATION12,RULE_INFORMATION13,RULE_INFORMATION14,RULE_INFORMATION15
2822      FROM okc_rules_v
2823      WHERE id = p_rule_id
2824      AND   dnz_chr_id = p_dest_id;
2825 
2826     rul_seg_rec c_rule_segmnts_csr%ROWTYPE;
2827 
2828     lp_rulv_rec Okl_Rule_Pub.rulv_rec_type;
2829     lx_rulv_rec Okl_Rule_Pub.rulv_rec_type;
2830     lp_rmpv_rec OKL_OKC_MIGRATION_PVT.rmpv_rec_type;
2831     lx_rmpv_rec OKL_OKC_MIGRATION_PVT.rmpv_rec_type;
2832 
2833     l_vp_cpl_id okc_k_party_roles_v.id%TYPE := NULL;
2834     x_cpl_id   okc_k_party_roles_v.id%TYPE := NULL;
2835 
2836     l_cpl_id  okc_k_party_roles_v.id%TYPE := NULL;
2837     l_rrd_id  NUMBER := NULL;
2838     l_vndr_blng_rgp_id NUMBER := NULL;
2839 --start modifying abhsaxen Cursor not in use
2840 --   CURSOR c_lse_vndr_csr IS
2841 --end modifying abhsaxen Cursor not in use
2842 
2843    CURSOR c_rrdid_csr IS
2844     SELECT   rgrdfs.id
2845     FROM     okc_k_headers_b CHR,
2846              okc_subclass_roles sre,
2847              okc_role_sources rse,
2848              okc_subclass_rg_defs rgdfs,
2849              okc_rg_role_defs rgrdfs
2850     WHERE    CHR.id =  p_dest_id
2851     AND      sre.scs_code = CHR.scs_code
2852     AND      sre.rle_code = rse.rle_code
2853     AND      rse.rle_code = G_LEASE_VENDOR
2854     AND      rse.buy_or_sell = CHR.buy_or_sell
2855     AND      rgdfs.scs_code = CHR.scs_code
2856     AND      rgdfs.rgd_code = G_VENDOR_BILL_RGD_CODE
2857     AND      rgrdfs.srd_id = rgdfs.id
2858     AND      rgrdfs.sre_id = sre.id;
2859 
2860    CURSOR c_vndr_blng_id_csr IS
2861     SELECT rgpv.id
2862     FROM okc_rule_groups_v rgpv
2863     WHERE rgpv.rgd_code = G_VENDOR_BILL_RGD_CODE
2864     AND rgpv.dnz_chr_id   = p_source_id;
2865 
2866    CURSOR c_vp_cpl_csr IS
2867 --Start modified abhsaxen for performance SQLID 20562566
2868 select cplv.id
2869     from okc_k_party_roles_b cplv
2870     where cplv.rle_code = g_lease_vendor
2871     and cplv.chr_id = p_source_id
2872     and cplv.dnz_chr_id = cplv.chr_id
2873     and not exists (select 1
2874                     from okc_k_party_roles_b s_cpl
2875                     where s_cpl.chr_id = p_dest_id
2876                     and s_cpl.dnz_chr_id = s_cpl.chr_id
2877                     and s_cpl.rle_code = g_lease_vendor
2878                     and cplv.object1_id1 = s_cpl.object1_id1
2879                     );
2880 --end modified abhsaxen for performance SQLID 20562566
2881 
2882     BEGIN
2883 
2884     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
2885 		p_org_id =>  p_org_id,
2886 		p_organization_id	=> p_organization_id);
2887 
2888     x_return_status := OKC_API.START_ACTIVITY(
2889 			p_api_name      => l_api_name,
2890 			p_pkg_name      => g_pkg_name,
2891 			p_init_msg_list => p_init_msg_list,
2892 			l_api_version   => l_api_version,
2893 			p_api_version   => p_api_version,
2894 			p_api_type      => g_api_type,
2895 			x_return_status => x_return_status);
2896 
2897 
2898     -- check if activity started successfully
2899     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2900        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2901     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2902        RAISE OKC_API.G_EXCEPTION_ERROR;
2903     END IF;
2904 
2905          -- copy vp party lease vendor to lease contract
2906          l_vp_cpl_id := NULL;
2907 
2908          OPEN c_vp_cpl_csr;
2909          FETCH c_vp_cpl_csr INTO l_vp_cpl_id;
2910          CLOSE c_vp_cpl_csr;
2911 
2912          IF( l_vp_cpl_id IS NOT NULL) THEN
2913 
2914            OKL_COPY_CONTRACT_PUB.copy_party_roles(
2915               p_api_version	=> p_api_version,
2916               p_init_msg_list	=> p_init_msg_list,
2917               x_return_status 	=> x_return_status,
2918               x_msg_count     	=> x_msg_count,
2919               x_msg_data      	=> x_msg_data,
2920  	      p_cpl_id          => l_vp_cpl_id,
2921  	      p_cle_id          => NULL,
2922  	      p_chr_id          => l_chr_id,
2923  	      P_rle_code        => G_LEASE_VENDOR,
2924  	      x_cpl_id		=> x_cpl_id
2925  	     );
2926 
2927            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2928  	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2929            ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2930                 RAISE OKC_API.G_EXCEPTION_ERROR;
2931            END IF;
2932 
2933            l_vndr_blng_rgp_id := NULL;
2934            OPEN c_vndr_blng_id_csr;
2935            FETCH c_vndr_blng_id_csr INTO l_vndr_blng_rgp_id;
2936            CLOSE c_vndr_blng_id_csr;
2937 
2938            IF( l_vndr_blng_rgp_id IS NOT NULL AND x_cpl_id IS NOT NULL) THEN
2939 
2940             OKL_COPY_CONTRACT_PUB.copy_rules(
2941              p_api_version	=> p_api_version,
2942              p_init_msg_list	=> p_init_msg_list,
2943              x_return_status 	=> x_return_status,
2944              x_msg_count     	=> x_msg_count,
2945              x_msg_data      	=> x_msg_data,
2946              p_rgp_id		=> l_vndr_blng_rgp_id,
2947              p_cle_id		=> NULL,
2948              p_chr_id		=> l_chr_id,
2949              p_to_template_yn   => l_to_template_yn,
2950              x_rgp_id		=> x_rgp_id);
2951 
2952 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2953 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2954 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2955 	       RAISE OKC_API.G_EXCEPTION_ERROR;
2956 	    END IF;
2957 
2958            END IF;
2959 
2960 
2961            IF( x_rgp_id IS NOT NULL AND x_cpl_id IS NOT NULL) THEN
2962 
2963              l_rrd_id := NULL;
2964              OPEN c_rrdid_csr;
2965              FETCH c_rrdid_csr INTO l_rrd_id;
2966              CLOSE c_rrdid_csr;
2967 
2968              lp_rmpv_rec.rgp_id := x_rgp_id;
2969              lp_rmpv_rec.cpl_id := x_cpl_id;
2970              lp_rmpv_rec.dnz_chr_id := l_chr_id;
2971              lp_rmpv_rec.rrd_id := l_rrd_id;
2972 
2973              OKL_RULE_PUB.create_rg_mode_pty_role(
2974 	          p_api_version    => p_api_version,
2975 	          p_init_msg_list  => p_init_msg_list,
2976 	          x_return_status  => x_return_status,
2977 	          x_msg_count      => x_msg_count,
2978 	          x_msg_data       => x_msg_data,
2979 	          p_rmpv_rec       => lp_rmpv_rec,
2980 	          x_rmpv_rec       => lx_rmpv_rec
2981 	          );
2982 
2983 	     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2984 	           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2985 	     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2986 	           RAISE OKC_API.G_EXCEPTION_ERROR;
2987 	     END IF;
2988 
2989            END IF;
2990 
2991         END IF;
2992 
2993 
2994     OPEN vp_tmpl_csr(p_vp_id => p_source_id);
2995       FETCH vp_tmpl_csr INTO l_vp_tmpl_id;
2996       IF vp_tmpl_csr%NOTFOUND THEN
2997          NULL;
2998       ELSE
2999 
3000         -- copy vp rules to lease contract
3001         FOR l_c_src_crs IN c_src_crs(p_vp_tmpl_id => l_vp_tmpl_id) LOOP
3002 
3003         l_rgp_id := l_c_src_crs.id; -- gets vendor program rgd code
3004 
3005         OKL_COPY_CONTRACT_PUB.copy_rules(
3006              p_api_version	=> p_api_version,
3007              p_init_msg_list	=> p_init_msg_list,
3008              x_return_status 	=> x_return_status,
3009              x_msg_count     	=> x_msg_count,
3010              x_msg_data      	=> x_msg_data,
3011              p_rgp_id		=> l_rgp_id,
3012              p_cle_id		=> l_cle_id,
3013              p_chr_id		=> l_chr_id,
3014              p_to_template_yn   => l_to_template_yn,
3015              x_rgp_id		=> x_rgp_id);
3016 
3017 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3018 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3019 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3020 	       RAISE OKC_API.G_EXCEPTION_ERROR;
3021 	    END IF;
3022 
3023 
3024 -- start of currency conversion for program rules
3025 
3026 IF ( x_rgp_id IS NOT NULL) THEN
3027 
3028   l_func_curr_code := NULL;
3029   -- if functional currency code is not equal to contract currency code
3030   l_func_curr_code := OKL_ACCOUNTING_UTIL.get_func_curr_code;
3031 
3032   l_k_curr_code := NULL;
3033   l_start_date := NULL;
3034 
3035   OPEN c_k_curr_csr;
3036   FETCH c_k_curr_csr INTO l_k_curr_code, l_start_date;
3037   CLOSE c_k_curr_csr;
3038 
3039   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
3040 
3041 
3042      FOR l_c_rule_csr IN c_rule_csr(p_rgp_id => x_rgp_id) LOOP -- get all the rules
3043 
3044           l_rgd_code          := l_c_rule_csr.rgd_code;
3045           l_rule_info_cat     := l_c_rule_csr.rule_information_category;
3046           l_rule_id           := l_c_rule_csr.id;
3047 
3048            OPEN c_rule_segmnts_csr (l_rule_id);
3049            FETCH c_rule_segmnts_csr INTO rul_seg_rec;
3050            CLOSE c_rule_segmnts_csr;
3051 
3052            l_rule_segment := NULL;
3053            l_rule_amt := NULL;
3054 
3055            lp_rulv_rec.RULE_INFORMATION1 := rul_seg_rec.RULE_INFORMATION1;
3056            lp_rulv_rec.RULE_INFORMATION2 := rul_seg_rec.RULE_INFORMATION2;
3057            lp_rulv_rec.RULE_INFORMATION3 := rul_seg_rec.RULE_INFORMATION3;
3058            lp_rulv_rec.RULE_INFORMATION4 := rul_seg_rec.RULE_INFORMATION4;
3059            lp_rulv_rec.RULE_INFORMATION5 := rul_seg_rec.RULE_INFORMATION5;
3060            lp_rulv_rec.RULE_INFORMATION6 := rul_seg_rec.RULE_INFORMATION6;
3061            lp_rulv_rec.RULE_INFORMATION7 := rul_seg_rec.RULE_INFORMATION7;
3062            lp_rulv_rec.RULE_INFORMATION8 := rul_seg_rec.RULE_INFORMATION8;
3063            lp_rulv_rec.RULE_INFORMATION9 := rul_seg_rec.RULE_INFORMATION9;
3064            lp_rulv_rec.RULE_INFORMATION10 := rul_seg_rec.RULE_INFORMATION10;
3065            lp_rulv_rec.RULE_INFORMATION11 := rul_seg_rec.RULE_INFORMATION11;
3066            lp_rulv_rec.RULE_INFORMATION12 := rul_seg_rec.RULE_INFORMATION12;
3067            lp_rulv_rec.RULE_INFORMATION13 := rul_seg_rec.RULE_INFORMATION13;
3068            lp_rulv_rec.RULE_INFORMATION14 := rul_seg_rec.RULE_INFORMATION14;
3069            lp_rulv_rec.RULE_INFORMATION15 := rul_seg_rec.RULE_INFORMATION15;
3070 
3071            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
3072 
3073              l_rule_segment := l_c_rule_amt_crs.application_column_name;
3074              IF(l_rule_segment IS NOT NULL) THEN
3075 
3076                IF (l_rule_segment = 'RULE_INFORMATION1') THEN
3077                 l_rule_amt := rul_seg_rec.RULE_INFORMATION1;
3078                ELSIF (l_rule_segment = 'RULE_INFORMATION2') THEN
3079                 l_rule_amt := rul_seg_rec.RULE_INFORMATION2;
3080                ELSIF (l_rule_segment = 'RULE_INFORMATION3') THEN
3081                 l_rule_amt := rul_seg_rec.RULE_INFORMATION3;
3082                ELSIF (l_rule_segment = 'RULE_INFORMATION4') THEN
3083                 l_rule_amt := rul_seg_rec.RULE_INFORMATION4;
3084                ELSIF (l_rule_segment = 'RULE_INFORMATION5') THEN
3085                 l_rule_amt := rul_seg_rec.RULE_INFORMATION5;
3086                ELSIF (l_rule_segment = 'RULE_INFORMATION6') THEN
3087                 l_rule_amt := rul_seg_rec.RULE_INFORMATION6;
3088                ELSIF (l_rule_segment = 'RULE_INFORMATION7') THEN
3089                 l_rule_amt := rul_seg_rec.RULE_INFORMATION7;
3090                ELSIF (l_rule_segment = 'RULE_INFORMATION8') THEN
3091                 l_rule_amt := rul_seg_rec.RULE_INFORMATION8;
3092                ELSIF (l_rule_segment = 'RULE_INFORMATION9') THEN
3093                 l_rule_amt := rul_seg_rec.RULE_INFORMATION9;
3094                ELSIF (l_rule_segment = 'RULE_INFORMATION10') THEN
3095                 l_rule_amt := rul_seg_rec.RULE_INFORMATION10;
3096                ELSIF (l_rule_segment = 'RULE_INFORMATION11') THEN
3097                 l_rule_amt := rul_seg_rec.RULE_INFORMATION11;
3098                ELSIF (l_rule_segment = 'RULE_INFORMATION12') THEN
3099                 l_rule_amt := rul_seg_rec.RULE_INFORMATION12;
3100                ELSIF (l_rule_segment = 'RULE_INFORMATION13') THEN
3101                 l_rule_amt := rul_seg_rec.RULE_INFORMATION13;
3102                ELSIF (l_rule_segment = 'RULE_INFORMATION14') THEN
3103                 l_rule_amt := rul_seg_rec.RULE_INFORMATION14;
3104                ELSIF (l_rule_segment = 'RULE_INFORMATION15') THEN
3105                 l_rule_amt := rul_seg_rec.RULE_INFORMATION15;
3106                END IF;
3107 
3108              END IF;
3109 
3110                IF (l_rule_amt IS NOT NULL) THEN
3111                 -- do currency conversion for DFF amount columns
3112                 OKL_ACCOUNTING_UTIL.convert_to_contract_currency (
3113    	  		p_khr_id  		  	=> l_chr_id,
3114 	 		p_from_currency   		=> l_func_curr_code,
3115 	 		p_transaction_date 		=> l_start_date,
3116 	 		p_amount 			=> l_rule_amt,
3117 	 		x_contract_currency		=> x_contract_currency,
3118 	 		x_currency_conversion_type	=> x_currency_conversion_type,
3119 	 		x_currency_conversion_rate	=> x_currency_conversion_rate,
3120 	 		x_currency_conversion_date	=> x_currency_conversion_date,
3121 	 		x_converted_amount 		=> x_converted_amount);
3122 
3123 
3124 		       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3125 		          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3126 		       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3127 		          RAISE OKC_API.G_EXCEPTION_ERROR;
3128 		       END IF;
3129 
3130                      IF(l_rule_id IS NOT NULL AND x_converted_amount IS NOT NULL) THEN
3131 
3132                        x_converted_amount := OKL_ACCOUNTING_UTIL.cross_currency_round_amount
3133                                 (
3134                        		p_amount =>  x_converted_amount,
3135                        		p_currency_code => l_k_curr_code
3136                        		);
3137 
3138                        lp_rulv_rec.id := l_rule_id;
3139 	               IF (l_rule_segment = 'RULE_INFORMATION1') THEN
3140                                lp_rulv_rec.RULE_INFORMATION1 := TO_CHAR(x_converted_amount);
3141 	               ELSIF (l_rule_segment = 'RULE_INFORMATION2') THEN
3142 	                       lp_rulv_rec.RULE_INFORMATION2 := TO_CHAR(x_converted_amount);
3143 	               ELSIF (l_rule_segment = 'RULE_INFORMATION3') THEN
3144 	                       lp_rulv_rec.RULE_INFORMATION3 := TO_CHAR(x_converted_amount);
3145 	               ELSIF (l_rule_segment = 'RULE_INFORMATION4') THEN
3146 	                       lp_rulv_rec.RULE_INFORMATION4 := TO_CHAR(x_converted_amount);
3147 	               ELSIF (l_rule_segment = 'RULE_INFORMATION5') THEN
3148 	                       lp_rulv_rec.RULE_INFORMATION5 := TO_CHAR(x_converted_amount);
3149 	               ELSIF (l_rule_segment = 'RULE_INFORMATION6') THEN
3150 	                       lp_rulv_rec.RULE_INFORMATION6 := TO_CHAR(x_converted_amount);
3151 	               ELSIF (l_rule_segment = 'RULE_INFORMATION7') THEN
3152 	                       lp_rulv_rec.RULE_INFORMATION7 := TO_CHAR(x_converted_amount);
3153 	               ELSIF (l_rule_segment = 'RULE_INFORMATION8') THEN
3154 	                       lp_rulv_rec.RULE_INFORMATION8:= TO_CHAR(x_converted_amount);
3155 	               ELSIF (l_rule_segment = 'RULE_INFORMATION9') THEN
3156 	                       lp_rulv_rec.RULE_INFORMATION9 := TO_CHAR(x_converted_amount);
3157 	               ELSIF (l_rule_segment = 'RULE_INFORMATION10') THEN
3158 	                       lp_rulv_rec.RULE_INFORMATION10 := TO_CHAR(x_converted_amount);
3159 	               ELSIF (l_rule_segment = 'RULE_INFORMATION11') THEN
3160 	                       lp_rulv_rec.RULE_INFORMATION11 := TO_CHAR(x_converted_amount);
3161 	               ELSIF (l_rule_segment = 'RULE_INFORMATION12') THEN
3162 	                       lp_rulv_rec.RULE_INFORMATION12 := TO_CHAR(x_converted_amount);
3163 	               ELSIF (l_rule_segment = 'RULE_INFORMATION13') THEN
3164 	                       lp_rulv_rec.RULE_INFORMATION13 := TO_CHAR(x_converted_amount);
3165 	               ELSIF (l_rule_segment = 'RULE_INFORMATION14') THEN
3166 	                       lp_rulv_rec.RULE_INFORMATION14 := TO_CHAR(x_converted_amount);
3167 	               ELSIF (l_rule_segment = 'RULE_INFORMATION15') THEN
3168 	                       lp_rulv_rec.RULE_INFORMATION15 := TO_CHAR(x_converted_amount);
3169 	               END IF;
3170 
3171 	 	       l_rule_segment := NULL;
3172 	 	       l_rule_amt := NULL;
3173 
3174                      END IF;
3175                END IF;
3176 
3177  	   END LOOP;
3178 
3179            IF(l_rule_id IS NOT NULL AND x_converted_amount IS NOT NULL) THEN
3180 
3181                OKL_RULE_PUB.update_rule(
3182 		         p_api_version    => p_api_version,
3183 		         p_init_msg_list  => p_init_msg_list,
3184 		         x_return_status  => x_return_status,
3185 		         x_msg_count      => x_msg_count,
3186 		         x_msg_data       => x_msg_data,
3187 		         p_rulv_rec       => lp_rulv_rec,
3188 		         x_rulv_rec       => lx_rulv_rec);
3189 
3190                 IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3191   		          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3192                 ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3193 		          RAISE OKC_API.G_EXCEPTION_ERROR;
3194                 END IF;
3195 
3196             END IF;
3197 
3198             l_rgd_code := NULL;
3199             l_rule_info_cat := NULL;
3200             l_rule_id := NULL;
3201             rul_seg_rec := NULL;
3202             x_converted_amount := NULL;
3203 
3204       END LOOP;
3205 
3206   END IF;
3207 
3208  END IF;
3209 
3210 -- end of currency conversion for program rules
3211 
3212  END LOOP;
3213 
3214  END IF;
3215 
3216  CLOSE vp_tmpl_csr;
3217 
3218  OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
3219 
3220   EXCEPTION
3221     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3222       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3223 			p_api_name  => l_api_name,
3224 			p_pkg_name  => g_pkg_name,
3225 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3226 			x_msg_count => x_msg_count,
3227 			x_msg_data  => x_msg_data,
3228 			p_api_type  => g_api_type);
3229 
3230     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3231       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3232 			p_api_name  => l_api_name,
3233 			p_pkg_name  => g_pkg_name,
3234 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3235 			x_msg_count => x_msg_count,
3236 			x_msg_data  => x_msg_data,
3237 			p_api_type  => g_api_type);
3238 
3239     WHEN OTHERS THEN
3240       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3241 			p_api_name  => l_api_name,
3242 			p_pkg_name  => g_pkg_name,
3243 			p_exc_name  => 'OTHERS',
3244 			x_msg_count => x_msg_count,
3245 			x_msg_data  => x_msg_data,
3246 			p_api_type  => g_api_type);
3247   END;
3248 
3249   PROCEDURE copy_rules(
3250     p_api_version                  IN NUMBER,
3251     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3252     x_return_status                OUT NOCOPY VARCHAR2,
3253     x_msg_count                    OUT NOCOPY NUMBER,
3254     x_msg_data                     OUT NOCOPY VARCHAR2,
3255     p_old_khr_id                   IN  NUMBER, -- prev k khr id
3256     p_prog_override_yn             IN  VARCHAR2, -- program yn
3257     p_source_id                    IN  NUMBER, -- vp id
3258     p_dest_id                      IN  NUMBER, -- k id
3259     p_org_id                       IN  NUMBER,
3260     p_organization_id              IN  NUMBER) IS
3261 
3262     l_api_name	VARCHAR2(30) := 'COPY_RULES';
3263     l_api_version	CONSTANT NUMBER	  := 1.0;
3264 
3265     BEGIN
3266 
3267     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(p_org_id =>  p_org_id,  p_organization_id => p_organization_id);
3268 
3269     x_return_status := OKC_API.START_ACTIVITY(
3270 			p_api_name      => l_api_name,
3271 			p_pkg_name      => g_pkg_name,
3272 			p_init_msg_list => p_init_msg_list,
3273 			l_api_version   => l_api_version,
3274 			p_api_version   => p_api_version,
3275 			p_api_type      => g_api_type,
3276 			x_return_status => x_return_status);
3277 
3278     -- check if activity started successfully
3279     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3280        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3281     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3282        RAISE OKC_API.G_EXCEPTION_ERROR;
3283     END IF;
3284 
3285 
3286     IF( (p_old_khr_id IS NOT NULL AND p_source_id IS NOT NULL AND p_old_khr_id <> p_source_id
3287     	  			AND p_prog_override_yn IS NOT NULL AND p_prog_override_yn = 'Y' )
3288       OR (p_old_khr_id IS NOT NULL AND p_source_id IS NULL
3289       				AND p_prog_override_yn IS NOT NULL AND p_prog_override_yn = 'Y' )
3290 
3291       ) THEN
3292 
3293           -- delete all the rules of the old_khr_id'S program template rules
3294            delete_rules(
3295 	        p_api_version       => p_api_version,
3296 	        p_init_msg_list     => p_init_msg_list,
3297 	        x_return_status     => x_return_status,
3298 	        x_msg_count         => x_msg_count,
3299 	        x_msg_data          => x_msg_data,
3300 	        p_old_khr_id        => p_old_khr_id,
3301 	        p_source_id         => p_source_id,
3302 	        p_dest_id           => p_dest_id,
3303 	        p_org_id            => okl_context.get_okc_org_id,
3304 	        p_organization_id   => okl_context.get_okc_organization_id
3305 	        );
3306 
3307            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3308 	         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3309            ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3310 	         RAISE OKC_API.G_EXCEPTION_ERROR;
3311            END IF;
3312 
3313     END IF;
3314 
3315 
3316     IF( p_source_id IS NOT NULL AND p_old_khr_id IS NULL ) THEN
3317 
3318            copy_rules(
3319 	        p_api_version       => p_api_version,
3320 	        p_init_msg_list     => p_init_msg_list,
3321 	        x_return_status     => x_return_status,
3322 	        x_msg_count         => x_msg_count,
3323 	        x_msg_data          => x_msg_data,
3324                 p_source_id         => p_source_id, -- vp id
3325                 p_dest_id           => p_dest_id, -- k id
3326 	        p_org_id            => okl_context.get_okc_org_id,
3327 	        p_organization_id   => okl_context.get_okc_organization_id
3328 	        );
3329 
3330 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3331 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3332 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3333 	       RAISE OKC_API.G_EXCEPTION_ERROR;
3334 	    END IF;
3335 
3336     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
3337 
3338            copy_rules(
3339 	        p_api_version       => p_api_version,
3340 	        p_init_msg_list     => p_init_msg_list,
3341 	        x_return_status     => x_return_status,
3342 	        x_msg_count         => x_msg_count,
3343 	        x_msg_data          => x_msg_data,
3344                 p_source_id         => p_source_id, -- vp id
3345                 p_dest_id           => p_dest_id, -- k id
3346 	        p_org_id            => okl_context.get_okc_org_id,
3347 	        p_organization_id   => okl_context.get_okc_organization_id
3348 	        );
3349 
3350 	    IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3351 	       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3352 	    ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3353 	       RAISE OKC_API.G_EXCEPTION_ERROR;
3354 	    END IF;
3355 
3356     END IF;
3357 
3358   OKC_API.END_ACTIVITY(x_msg_count => x_msg_count, x_msg_data => x_msg_data);
3359 
3360   EXCEPTION
3361     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3362       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3363 			p_api_name  => l_api_name,
3364 			p_pkg_name  => g_pkg_name,
3365 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3366 			x_msg_count => x_msg_count,
3367 			x_msg_data  => x_msg_data,
3368 			p_api_type  => g_api_type);
3369 
3370     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3371       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3372 			p_api_name  => l_api_name,
3373 			p_pkg_name  => g_pkg_name,
3374 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3375 			x_msg_count => x_msg_count,
3376 			x_msg_data  => x_msg_data,
3377 			p_api_type  => g_api_type);
3378 
3379     WHEN OTHERS THEN
3380       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3381 			p_api_name  => l_api_name,
3382 			p_pkg_name  => g_pkg_name,
3383 			p_exc_name  => 'OTHERS',
3384 			x_msg_count => x_msg_count,
3385 			x_msg_data  => x_msg_data,
3386 			p_api_type  => g_api_type);
3387   END;
3388 
3389 -- Start of comments
3390 --
3391 -- Procedure Name  : create_deal
3392 -- Description     : creates a deal based on the information that comes
3393 --	             from the deal creation screen
3394 -- Business Rules  :
3395 -- Parameters      :
3396 -- Version         : 1.0
3397 -- End of comments
3398   PROCEDURE create_deal(
3399     p_api_version                  IN NUMBER,
3400     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3401     x_return_status                OUT NOCOPY VARCHAR2,
3402     x_msg_count                    OUT NOCOPY NUMBER,
3403     x_msg_data                     OUT NOCOPY VARCHAR2,
3404     p_contract_number              IN  VARCHAR2,
3405     p_scs_code                     IN  VARCHAR2,
3406     p_customer_id1                 IN  VARCHAR2,
3407     p_customer_id2                 IN  VARCHAR2,
3408     p_customer_code                IN  VARCHAR2,
3409     p_org_id                       IN  NUMBER,
3410     p_organization_id              IN  NUMBER,
3411     p_source_chr_id                IN  NUMBER,
3412     x_chr_id                       OUT NOCOPY NUMBER,
3413     --Added by dpsingh for LE Uptake
3414     p_legal_entity_id              IN  NUMBER) AS
3415 
3416     l_api_name	VARCHAR2(30) := 'CREATE_DEAL';
3417     l_api_version	CONSTANT NUMBER	  := 1.0;
3418 
3419     CURSOR l_source_crs IS
3420       SELECT template_yn, chr_type
3421       FROM   okc_k_headers_b
3422       WHERE  id = p_source_chr_id;
3423 
3424     l_template_yn OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
3425     l_chr_type    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3426   BEGIN
3427 
3428     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
3429 		p_org_id =>  p_org_id,
3430 		p_organization_id	=> p_organization_id);
3431 
3432     x_return_status := OKC_API.START_ACTIVITY(
3433 			p_api_name      => l_api_name,
3434 			p_pkg_name      => g_pkg_name,
3435 			p_init_msg_list => p_init_msg_list,
3436 			l_api_version   => l_api_version,
3437 			p_api_version   => p_api_version,
3438 			p_api_type      => g_api_type,
3439 			x_return_status => x_return_status);
3440 
3441     -- check if activity started successfully
3442     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3443        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3444     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3445        RAISE OKC_API.G_EXCEPTION_ERROR;
3446     END IF;
3447 
3448     IF (p_source_chr_id IS NULL) OR (p_source_chr_id = OKC_API.G_MISS_NUM) THEN
3449       create_new_deal(
3450          p_api_version     => l_api_version,
3451          p_init_msg_list   => p_init_msg_list,
3452          x_return_status   => x_return_status,
3453          x_msg_count       => x_msg_count,
3454          x_msg_data        => x_msg_data,
3455          p_contract_number => p_contract_number,
3456          p_scs_code        => p_scs_code,
3457          p_customer_id1    => p_customer_id1,
3458          p_customer_id2    => p_customer_id2,
3459          p_customer_code   => p_customer_code,
3460          x_chr_id          => x_chr_id,
3461     --Added by dpsingh for LE Uptake
3462          p_legal_entity_id => p_legal_entity_id);
3463     ELSE
3464     -- need to figure out what kind of source do we have
3465 	OPEN l_source_crs;
3466         FETCH l_source_crs INTO l_template_yn, l_chr_type;
3467         CLOSE l_source_crs;
3468 
3469         -- copy from template
3470         IF (l_template_yn = 'Y') THEN
3471           create_from_template(
3472             p_api_version     => l_api_version,
3473             p_init_msg_list   => p_init_msg_list,
3474             x_return_status   => x_return_status,
3475             x_msg_count       => x_msg_count,
3476             x_msg_data        => x_msg_data,
3477             p_contract_number => p_contract_number,
3478             p_source_chr_id   => p_source_chr_id,
3479             x_chr_id          => x_chr_id);
3480         ELSE
3481           create_from_contract(
3482             p_api_version     => l_api_version,
3483             p_init_msg_list   => p_init_msg_list,
3484             x_return_status   => x_return_status,
3485             x_msg_count       => x_msg_count,
3486             x_msg_data        => x_msg_data,
3487             p_contract_number => p_contract_number,
3488             p_source_chr_id   => p_source_chr_id,
3489             x_chr_id          => x_chr_id);
3490         END IF;
3491     END IF;
3492 
3493     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3494        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3495     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3496        RAISE OKC_API.G_EXCEPTION_ERROR;
3497     END IF;
3498 
3499     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
3500 			 x_msg_data	=> x_msg_data);
3501   EXCEPTION
3502     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3503       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3504 			p_api_name  => l_api_name,
3505 			p_pkg_name  => g_pkg_name,
3506 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3507 			x_msg_count => x_msg_count,
3508 			x_msg_data  => x_msg_data,
3509 			p_api_type  => g_api_type);
3510 
3511     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3512       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3513 			p_api_name  => l_api_name,
3514 			p_pkg_name  => g_pkg_name,
3515 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3516 			x_msg_count => x_msg_count,
3517 			x_msg_data  => x_msg_data,
3518 			p_api_type  => g_api_type);
3519 
3520     WHEN OTHERS THEN
3521       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3522 			p_api_name  => l_api_name,
3523 			p_pkg_name  => g_pkg_name,
3524 			p_exc_name  => 'OTHERS',
3525 			x_msg_count => x_msg_count,
3526 			x_msg_data  => x_msg_data,
3527 			p_api_type  => g_api_type);
3528   END;
3529 
3530 /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
3531 -- Start of comments
3532 --
3533 -- Procedure Name  : create_from_release
3534 -- Description     : creates a deal from release
3535 -- Business Rules  :
3536 -- Parameters      :
3537 -- Version         : 1.0
3538 -- End of comments
3539   PROCEDURE create_from_release (
3540     p_api_version                  IN NUMBER,
3541     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3542     x_return_status                OUT NOCOPY VARCHAR2,
3543     x_msg_count                    OUT NOCOPY NUMBER,
3544     x_msg_data                     OUT NOCOPY VARCHAR2,
3545     p_contract_number              IN  VARCHAR2,
3546     p_source_chr_id                IN  NUMBER,
3547     x_chr_id                       OUT NOCOPY NUMBER) AS
3548 
3549     x_new_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
3550     x_new_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
3551     l_old_contract_number  OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
3552     l_new_contract_number  OKC_K_HEADERS_V.CONTRACT_NUMBER%TYPE;
3553     l_value VARCHAR2(1) := OKL_API.G_FALSE;
3554 
3555     CURSOR l_source_k_num_crs IS
3556       SELECT contract_number
3557       FROM   okc_k_headers_b
3558       WHERE  id = p_source_chr_id;
3559 
3560     l_inv_agmt_chr_id_tbl_type Okl_Securitization_Pvt.inv_agmt_chr_id_tbl_type;
3561 
3562     l_api_name	VARCHAR2(30) := 'CREATE_DEAL';
3563     l_api_version	CONSTANT NUMBER	  := 1.0;
3564 
3565   BEGIN
3566 
3567     x_return_status := OKC_API.START_ACTIVITY(
3568 			p_api_name      => l_api_name,
3569 			p_pkg_name      => g_pkg_name,
3570 			p_init_msg_list => p_init_msg_list,
3571 			l_api_version   => l_api_version,
3572 			p_api_version   => p_api_version,
3573 			p_api_type      => g_api_type,
3574 			x_return_status => x_return_status);
3575 
3576     -- check if activity started successfully
3577     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3578        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3579     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3580        RAISE OKC_API.G_EXCEPTION_ERROR;
3581     END IF;
3582 
3583    okl_securitization_pvt.check_khr_securitized(
3584       p_api_version                  => p_api_version,
3585       p_init_msg_list                => p_init_msg_list,
3586       x_return_status                => x_return_status,
3587       x_msg_count                    => x_msg_count,
3588       x_msg_data                     => x_msg_data,
3589       p_khr_id                       => p_source_chr_id, --source_contract_id
3590       p_effective_date               => SYSDATE,    -- sysdate
3591       x_value                        => l_value, -- varchar2(1)
3592       x_inv_agmt_chr_id_tbl          => l_inv_agmt_chr_id_tbl_type    --okl_securitization_pvt.inv_agmt_chr_id_tbl_type
3593    );
3594 
3595 
3596     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3597        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3598     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3599        RAISE OKC_API.G_EXCEPTION_ERROR;
3600     END IF;
3601 
3602    IF(l_value = OKL_API.G_TRUE) THEN
3603             OKC_API.SET_MESSAGE(     p_app_name => g_app_name
3604           			   , p_msg_name => 'OKL_LLA_CONTRACT_SECU_ERROR'
3605           			   );
3606             RAISE OKC_API.G_EXCEPTION_ERROR;
3607    END IF;
3608 
3609    l_new_contract_number := p_contract_number;
3610 
3611    OPEN  l_source_k_num_crs;
3612    FETCH l_source_k_num_crs INTO l_old_contract_number;
3613    CLOSE l_source_k_num_crs;
3614 
3615    okl_release_pvt.create_release_contract(
3616       p_api_version          => p_api_version,
3617       p_init_msg_list        => p_init_msg_list,
3618       x_return_status        => x_return_status,
3619       x_msg_count            => x_msg_count,
3620       x_msg_data             => x_msg_data,
3621       p_old_contract_number  => l_old_contract_number,
3622       p_new_contract_number  => l_new_contract_number,
3623       x_new_chrv_rec         => x_new_chrv_rec,
3624       x_new_khrv_rec         => x_new_khrv_rec);
3625 
3626       x_chr_id := x_new_chrv_rec.id;
3627 
3628     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3629        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3630     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3631        RAISE OKC_API.G_EXCEPTION_ERROR;
3632     END IF;
3633 
3634     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
3635 			 x_msg_data	=> x_msg_data);
3636   EXCEPTION
3637     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3638       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3639 			p_api_name  => l_api_name,
3640 			p_pkg_name  => g_pkg_name,
3641 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3642 			x_msg_count => x_msg_count,
3643 			x_msg_data  => x_msg_data,
3644 			p_api_type  => g_api_type);
3645 
3646     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3647       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3648 			p_api_name  => l_api_name,
3649 			p_pkg_name  => g_pkg_name,
3650 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3651 			x_msg_count => x_msg_count,
3652 			x_msg_data  => x_msg_data,
3653 			p_api_type  => g_api_type);
3654 
3655     WHEN OTHERS THEN
3656       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3657 			p_api_name  => l_api_name,
3658 			p_pkg_name  => g_pkg_name,
3659 			p_exc_name  => 'OTHERS',
3660 			x_msg_count => x_msg_count,
3661 			x_msg_data  => x_msg_data,
3662 			p_api_type  => g_api_type);
3663 
3664   END;
3665 */
3666 
3667 -- Start of comments
3668 --
3669 -- Procedure Name  : create_deal
3670 -- Description     : creates a deal based on the information that comes
3671 --	             from the deal creation screen
3672 -- Business Rules  :
3673 -- Parameters      :
3674 -- Version         : 1.0
3675 -- End of comments
3676   PROCEDURE create_deal(
3677     p_api_version                  IN NUMBER,
3678     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3679     x_return_status                OUT NOCOPY VARCHAR2,
3680     x_msg_count                    OUT NOCOPY NUMBER,
3681     x_msg_data                     OUT NOCOPY VARCHAR2,
3682     p_source_code                  IN  VARCHAR2,
3683     p_contract_number              IN  VARCHAR2,
3684     p_scs_code                     IN  VARCHAR2,
3685     p_customer_id1                 IN  VARCHAR2,
3686     p_customer_id2                 IN  VARCHAR2,
3687     p_customer_code                IN  VARCHAR2,
3688     p_org_id                       IN  NUMBER,
3689     p_organization_id              IN  NUMBER,
3690     p_source_chr_id                IN  NUMBER,
3691     x_chr_id                       OUT NOCOPY NUMBER,
3692     --Added by dpsingh for LE Uptake
3693     p_legal_entity_id              IN  NUMBER) AS
3694 
3695     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
3696     l_api_version	CONSTANT NUMBER	  := 1.0;
3697 
3698     CURSOR l_source_crs IS
3699       SELECT template_yn, chr_type
3700       FROM   okc_k_headers_b
3701       WHERE  id = p_source_chr_id;
3702 
3703     CURSOR l_source_k_num_crs IS
3704       SELECT contract_number
3705       FROM   okc_k_headers_b
3706       WHERE  id = p_source_chr_id;
3707 
3708     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
3709     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3710     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3711 
3712   BEGIN
3713 
3714     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
3715 		p_org_id =>  p_org_id,
3716 		p_organization_id	=> p_organization_id);
3717 
3718     x_return_status := OKC_API.START_ACTIVITY(
3719 			p_api_name      => l_api_name,
3720 			p_pkg_name      => g_pkg_name,
3721 			p_init_msg_list => p_init_msg_list,
3722 			l_api_version   => l_api_version,
3723 			p_api_version   => p_api_version,
3724 			p_api_type      => g_api_type,
3725 			x_return_status => x_return_status);
3726 
3727     -- check if activity started successfully
3728     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3729        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3730     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3731        RAISE OKC_API.G_EXCEPTION_ERROR;
3732     END IF;
3733 
3734     IF (p_source_chr_id IS NULL) OR (p_source_chr_id = OKC_API.G_MISS_NUM) THEN
3735       create_new_deal(
3736          p_api_version     => l_api_version,
3737          p_init_msg_list   => p_init_msg_list,
3738          x_return_status   => x_return_status,
3739          x_msg_count       => x_msg_count,
3740          x_msg_data        => x_msg_data,
3741          p_contract_number => p_contract_number,
3742          p_scs_code        => p_scs_code,
3743          p_customer_id1    => p_customer_id1,
3744          p_customer_id2    => p_customer_id2,
3745          p_customer_code   => p_customer_code,
3746          x_chr_id          => x_chr_id,
3747     --Added by dpsingh for LE Uptake
3748          p_legal_entity_id => p_legal_entity_id);
3749     ELSE
3750     -- need to figure out what kind of source do we have
3751 	OPEN l_source_crs;
3752         FETCH l_source_crs INTO l_template_yn, l_chr_type;
3753         CLOSE l_source_crs;
3754 
3755         -- copy from template
3756         IF (p_source_code = 'template') THEN
3757 
3758           create_from_template(
3759             p_api_version     => l_api_version,
3760             p_init_msg_list   => p_init_msg_list,
3761             x_return_status   => x_return_status,
3762             x_msg_count       => x_msg_count,
3763             x_msg_data        => x_msg_data,
3764             p_contract_number => p_contract_number,
3765             p_source_chr_id   => p_source_chr_id,
3766             x_chr_id          => x_chr_id);
3767 
3768         /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
3769         ELSIF (p_source_code = 'Re-Lease') THEN
3770 
3771           create_from_release(
3772             p_api_version     => l_api_version,
3773             p_init_msg_list   => p_init_msg_list,
3774             x_return_status   => x_return_status,
3775             x_msg_count       => x_msg_count,
3776             x_msg_data        => x_msg_data,
3777             p_contract_number => p_contract_number,
3778             p_source_chr_id   => p_source_chr_id,
3779             x_chr_id          => x_chr_id);
3780         */
3781 
3782         ELSIF (p_source_code = 'copy' ) THEN
3783 
3784           create_from_contract(
3785             p_api_version     => l_api_version,
3786             p_init_msg_list   => p_init_msg_list,
3787             x_return_status   => x_return_status,
3788             x_msg_count       => x_msg_count,
3789             x_msg_data        => x_msg_data,
3790             p_contract_number => p_contract_number,
3791             p_source_chr_id   => p_source_chr_id,
3792             x_chr_id          => x_chr_id);
3793 
3794         ELSIF (p_source_code = 'quote') THEN
3795 
3796           create_from_quote(
3797             p_api_version     => l_api_version,
3798             p_init_msg_list   => p_init_msg_list,
3799             x_return_status   => x_return_status,
3800             x_msg_count       => x_msg_count,
3801             x_msg_data        => x_msg_data,
3802             p_contract_number => p_contract_number,
3803             p_source_chr_id   => p_source_chr_id,
3804             x_chr_id          => x_chr_id);
3805 
3806         END IF;
3807     END IF;
3808 
3809     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3810        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3811     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3812        RAISE OKC_API.G_EXCEPTION_ERROR;
3813     END IF;
3814 
3815     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
3816 			 x_msg_data	=> x_msg_data);
3817   EXCEPTION
3818     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3819       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3820 			p_api_name  => l_api_name,
3821 			p_pkg_name  => g_pkg_name,
3822 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
3823 			x_msg_count => x_msg_count,
3824 			x_msg_data  => x_msg_data,
3825 			p_api_type  => g_api_type);
3826 
3827     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3828       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3829 			p_api_name  => l_api_name,
3830 			p_pkg_name  => g_pkg_name,
3831 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
3832 			x_msg_count => x_msg_count,
3833 			x_msg_data  => x_msg_data,
3834 			p_api_type  => g_api_type);
3835 
3836     WHEN OTHERS THEN
3837       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
3838 			p_api_name  => l_api_name,
3839 			p_pkg_name  => g_pkg_name,
3840 			p_exc_name  => 'OTHERS',
3841 			x_msg_count => x_msg_count,
3842 			x_msg_data  => x_msg_data,
3843 			p_api_type  => g_api_type);
3844   END;
3845 
3846 -- Start of comments
3847 --
3848 -- Procedure Name  : create_deal
3849 -- Description     : creates a deal based on the information that comes
3850 --	             from the deal creation screen
3851 -- Business Rules  :
3852 -- Parameters      :
3853 -- Version         : 1.0
3854 -- End of comments
3855   PROCEDURE create_deal(
3856     p_api_version                  IN NUMBER,
3857     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3858     x_return_status                OUT NOCOPY VARCHAR2,
3859     x_msg_count                    OUT NOCOPY NUMBER,
3860     x_msg_data                     OUT NOCOPY VARCHAR2,
3861     p_source_code                  IN  VARCHAR2,
3862     p_contract_number              IN  VARCHAR2,
3863     p_scs_code                     IN  VARCHAR2,
3864     p_customer_id1                 IN OUT NOCOPY  VARCHAR2,
3865     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
3866     p_customer_code                IN  VARCHAR2,
3867     p_customer_name                IN  VARCHAR2,
3868     p_org_id                       IN  NUMBER,
3869     p_organization_id              IN  NUMBER,
3870     p_source_chr_id                IN OUT NOCOPY  NUMBER,
3871     p_source_contract_number       IN  VARCHAR2,
3872     x_chr_id                       OUT NOCOPY NUMBER,
3873     --Added by dpsingh for LE Uptake
3874     p_legal_entity_id              IN  NUMBER) AS
3875 
3876     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
3877     l_api_version	CONSTANT NUMBER	  := 1.0;
3878 
3879     CURSOR l_source_crs IS
3880       SELECT template_yn, chr_type
3881       FROM   okc_k_headers_b
3882       WHERE  id = p_source_chr_id;
3883 
3884     CURSOR l_source_k_num_crs IS
3885       SELECT contract_number
3886       FROM   okc_k_headers_b
3887       WHERE  id = p_source_chr_id;
3888 
3889     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
3890        SELECT CHR.id
3891        FROM okc_k_headers_b CHR
3892        , okc_k_party_roles_b prl
3893        WHERE prl.dnz_chr_id = CHR.id
3894        AND prl.chr_id = CHR.id
3895        AND CHR.scs_code = p_scs_code
3896        AND CHR.chr_type = 'CYA'
3897        AND CHR.template_yn = p_temp_yn
3898        AND prl.rle_code = G_RLE_CODE
3899        AND prl.object1_id1 = p_object1_id1
3900        AND prl.object1_id2 = p_object1_id2
3901        AND prl.jtot_object1_code = p_customer_code
3902        AND CHR.contract_number = p_source_contract_number;
3903 
3904     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
3905     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3906     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
3907     l_object_code     VARCHAR2(30) DEFAULT NULL;
3908 
3909     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
3910 
3911   BEGIN
3912 
3913     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
3914 		p_org_id =>  p_org_id,
3915 		p_organization_id	=> p_organization_id);
3916 
3917     x_return_status := OKC_API.START_ACTIVITY(
3918 			p_api_name      => l_api_name,
3919 			p_pkg_name      => g_pkg_name,
3920 			p_init_msg_list => p_init_msg_list,
3921 			l_api_version   => l_api_version,
3922 			p_api_version   => p_api_version,
3923 			p_api_type      => g_api_type,
3924 			x_return_status => x_return_status);
3925 
3926     -- check if activity started successfully
3927     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3928        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3929     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3930        RAISE OKC_API.G_EXCEPTION_ERROR;
3931     END IF;
3932 
3933     IF(p_contract_number IS NULL) THEN
3934 	 x_return_status := OKC_API.g_ret_sts_error;
3935 	 IF p_scs_code = 'LEASE' THEN
3936          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
3937          ELSIF p_scs_code = 'MASTER_LEASE' THEN
3938          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_LA_AGREEMENT_NUMBER');
3939          END IF;
3940 
3941          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
3942 				, p_msg_name => 'OKL_REQUIRED_VALUE'
3943 				, p_token1 => 'COL_NAME'
3944 				, p_token1_value => l_ak_prompt
3945 			   );
3946 	 RAISE OKC_API.G_EXCEPTION_ERROR;
3947     END IF;
3948 
3949     IF(p_customer_name IS NULL) THEN
3950 	 x_return_status := OKC_API.g_ret_sts_error;
3951          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
3952          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
3953 				, p_msg_name => 'OKL_REQUIRED_VALUE'
3954 				, p_token1 => 'COL_NAME'
3955 				, p_token1_value => l_ak_prompt
3956 			   );
3957 	 RAISE OKC_API.G_EXCEPTION_ERROR;
3958     END IF;
3959 
3960     IF(p_source_code <> 'new' AND p_source_contract_number IS NULL) THEN
3961 	 x_return_status := OKC_API.g_ret_sts_error;
3962          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
3963          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
3964 				, p_msg_name => 'OKL_REQUIRED_VALUE'
3965 				, p_token1 => 'COL_NAME'
3966 				, p_token1_value => l_ak_prompt
3967 			   );
3968 	 RAISE OKC_API.G_EXCEPTION_ERROR;
3969     END IF;
3970 
3971     okl_la_validation_util_pvt.Get_Party_Jtot_data (
3972       p_api_version    => p_api_version,
3973       p_init_msg_list  => p_init_msg_list,
3974       x_return_status  => x_return_status,
3975       x_msg_count      => x_msg_count,
3976       x_msg_data       => x_msg_data,
3977       p_scs_code       => p_scs_code,
3978       p_buy_or_sell    => 'S',
3979       p_rle_code       => G_RLE_CODE,
3980       p_id1            => p_customer_id1,
3981       p_id2            => p_customer_id2,
3982       p_name           => p_customer_name,
3983       p_object_code    => l_object_code,
3984       p_ak_region      => 'OKL_LA_DEAL_CREAT',
3985       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
3986       );
3987 
3988     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3989        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3990     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3991        RAISE OKC_API.G_EXCEPTION_ERROR;
3992     END IF;
3993 
3994     IF(p_source_code <> 'new' AND p_source_contract_number IS NOT NULL) THEN
3995 
3996      IF (p_source_code = 'template') THEN
3997        OPEN l_source_chr_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code);
3998        FETCH l_source_chr_id_crs INTO p_source_chr_id;
3999        CLOSE l_source_chr_id_crs;
4000      ELSIF (p_source_code = 'quote') THEN
4001        OPEN l_source_chr_id_crs('QUOTE','N',p_customer_id1,p_customer_id2,l_object_code);
4002        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4003        CLOSE l_source_chr_id_crs;
4004      ELSE
4005        OPEN l_source_chr_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code);
4006        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4007        CLOSE l_source_chr_id_crs;
4008      END IF;
4009 
4010      IF(p_source_chr_id IS NULL) THEN
4011    	 x_return_status := OKC_API.g_ret_sts_error;
4012          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
4013          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4014  				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
4015  				, p_token1 => 'COL_NAME'
4016  				, p_token1_value => l_ak_prompt
4017  			   );
4018  	 RAISE OKC_API.G_EXCEPTION_ERROR;
4019      END IF;
4020 
4021     END IF;
4022 
4023     IF (p_source_code = 'new') THEN
4024 
4025         create_new_deal(
4026          p_api_version     => l_api_version,
4027          p_init_msg_list   => p_init_msg_list,
4028          x_return_status   => x_return_status,
4029          x_msg_count       => x_msg_count,
4030          x_msg_data        => x_msg_data,
4031          p_contract_number => p_contract_number,
4032          p_scs_code        => p_scs_code,
4033          p_customer_id1    => p_customer_id1,
4034          p_customer_id2    => p_customer_id2,
4035          p_customer_code   => l_object_code,
4036          p_customer_name   => p_customer_name,
4037          x_chr_id          => x_chr_id,
4038     --Added by dpsingh for LE Uptake
4039          p_legal_entity_id => p_legal_entity_id);
4040 
4041         -- copy from template
4042     ELSIF (p_source_code = 'template') THEN
4043 
4044           create_from_template(
4045             p_api_version     => l_api_version,
4046             p_init_msg_list   => p_init_msg_list,
4047             x_return_status   => x_return_status,
4048             x_msg_count       => x_msg_count,
4049             x_msg_data        => x_msg_data,
4050             p_contract_number => p_contract_number,
4051             p_source_chr_id   => p_source_chr_id,
4052             x_chr_id          => x_chr_id);
4053 
4054     /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
4055     ELSIF (p_source_code = 'Re-Lease') THEN
4056 
4057           create_from_release(
4058             p_api_version     => l_api_version,
4059             p_init_msg_list   => p_init_msg_list,
4060             x_return_status   => x_return_status,
4061             x_msg_count       => x_msg_count,
4062             x_msg_data        => x_msg_data,
4063             p_contract_number => p_contract_number,
4064             p_source_chr_id   => p_source_chr_id,
4065             x_chr_id          => x_chr_id);
4066     */
4067 
4068     ELSIF (p_source_code = 'copy' ) THEN
4069 
4070           create_from_contract(
4071             p_api_version     => l_api_version,
4072             p_init_msg_list   => p_init_msg_list,
4073             x_return_status   => x_return_status,
4074             x_msg_count       => x_msg_count,
4075             x_msg_data        => x_msg_data,
4076             p_contract_number => p_contract_number,
4077             p_source_chr_id   => p_source_chr_id,
4078             x_chr_id          => x_chr_id);
4079 
4080     ELSIF (p_source_code = 'quote') THEN
4081 
4082           create_from_quote(
4083             p_api_version     => l_api_version,
4084             p_init_msg_list   => p_init_msg_list,
4085             x_return_status   => x_return_status,
4086             x_msg_count       => x_msg_count,
4087             x_msg_data        => x_msg_data,
4088             p_contract_number => p_contract_number,
4089             p_source_chr_id   => p_source_chr_id,
4090             x_chr_id          => x_chr_id);
4091 
4092     END IF;
4093 
4094     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4095        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4096     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4097        RAISE OKC_API.G_EXCEPTION_ERROR;
4098     END IF;
4099 
4100     OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
4101 			 x_msg_data	=> x_msg_data);
4102   EXCEPTION
4103     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4104       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4105 			p_api_name  => l_api_name,
4106 			p_pkg_name  => g_pkg_name,
4107 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
4108 			x_msg_count => x_msg_count,
4109 			x_msg_data  => x_msg_data,
4110 			p_api_type  => g_api_type);
4111 
4112     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4113       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4114 			p_api_name  => l_api_name,
4115 			p_pkg_name  => g_pkg_name,
4116 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
4117 			x_msg_count => x_msg_count,
4118 			x_msg_data  => x_msg_data,
4119 			p_api_type  => g_api_type);
4120 
4121     WHEN OTHERS THEN
4122       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4123 			p_api_name  => l_api_name,
4124 			p_pkg_name  => g_pkg_name,
4125 			p_exc_name  => 'OTHERS',
4126 			x_msg_count => x_msg_count,
4127 			x_msg_data  => x_msg_data,
4128 			p_api_type  => g_api_type);
4129   END;
4130 
4131 -- Start of comments
4132 --
4133 -- Procedure Name  : create_deal
4134 -- Description     : creates a deal based on the information that comes
4135 --	             from the deal creation screen
4136 -- Business Rules  :
4137 -- Parameters      :
4138 -- Version         : 1.0
4139 -- End of comments
4140   PROCEDURE create_deal(
4141     p_api_version                  IN NUMBER,
4142     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4143     x_return_status                OUT NOCOPY VARCHAR2,
4144     x_msg_count                    OUT NOCOPY NUMBER,
4145     x_msg_data                     OUT NOCOPY VARCHAR2,
4146     p_source_code                  IN  VARCHAR2,
4147     p_template_yn                  IN  VARCHAR2,
4148     p_contract_number              IN  VARCHAR2,
4149     p_scs_code                     IN  VARCHAR2,
4150     p_customer_id1                 IN OUT NOCOPY  VARCHAR2,
4151     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
4152     p_customer_code                IN  VARCHAR2,
4153     p_customer_name                IN  VARCHAR2,
4154     p_org_id                       IN  NUMBER,
4155     p_organization_id              IN  NUMBER,
4156     p_source_chr_id                IN OUT NOCOPY  NUMBER,
4157     p_source_contract_number       IN  VARCHAR2,
4158     x_chr_id                       OUT NOCOPY NUMBER,
4159     --Added by dpsingh for LE Uptake
4160     p_legal_entity_id              IN  NUMBER) AS
4161 
4162     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
4163     l_api_version	CONSTANT NUMBER	  := 1.0;
4164 
4165     CURSOR l_source_crs IS
4166       SELECT template_yn, chr_type
4167       FROM   okc_k_headers_b
4168       WHERE  id = p_source_chr_id;
4169 
4170     CURSOR l_source_k_num_crs IS
4171       SELECT contract_number
4172       FROM   okc_k_headers_b
4173       WHERE  id = p_source_chr_id;
4174 
4175     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
4176        SELECT CHR.id
4177        FROM okc_k_headers_b CHR
4178        , okc_k_party_roles_b prl
4179        WHERE prl.dnz_chr_id = CHR.id
4180        AND prl.chr_id = CHR.id
4181        AND CHR.scs_code = p_scs_code
4182        AND CHR.chr_type = 'CYA'
4183        AND CHR.template_yn = p_temp_yn
4184        AND prl.rle_code = G_RLE_CODE
4185        AND prl.object1_id1 = p_object1_id1
4186        AND prl.object1_id2 = p_object1_id2
4187        AND prl.jtot_object1_code = p_customer_code
4188        AND CHR.contract_number = p_source_contract_number;
4189 
4190     CURSOR l_src_chr_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2) IS
4191        SELECT CHR.id
4192        FROM okc_k_headers_b CHR
4193        WHERE CHR.scs_code = p_scs_code
4194        AND CHR.chr_type = 'CYA'
4195        AND CHR.template_yn = p_temp_yn
4196        AND CHR.contract_number = p_source_contract_number;
4197 
4198     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
4199     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4200     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4201     l_object_code        VARCHAR2(30) DEFAULT NULL;
4202     l_chr_id             OKC_K_HEADERS_B.ID%TYPE;
4203 
4204     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
4205 
4206     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4207     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4208     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4209     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4210 
4211     /*
4212     -- mvasudev, 08/17/2004
4213     -- Added PROCEDURE to enable Business Event
4214     */
4215 	PROCEDURE raise_business_event(
4216     	p_chr_id IN NUMBER
4217 	   ,x_return_status OUT NOCOPY VARCHAR2
4218     )
4219 	IS
4220 	  l_check VARCHAR2(1);
4221       l_parameter_list           wf_parameter_list_t;
4222 	BEGIN
4223 
4224     x_return_status := Okc_Api.G_RET_STS_SUCCESS;
4225 	  -- Raise the event if it is a new Contract
4226 	  --l_check := Okl_Lla_Util_Pvt.check_new_contract(p_chr_id);
4227       --IF (l_check= OKL_API.G_TRUE) THEN
4228 	  IF (p_source_code = 'new') THEN
4229   		 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
4230 
4231          OKL_WF_PVT.raise_event (p_api_version    => p_api_version,
4232                                  p_init_msg_list  => p_init_msg_list,
4233 								 x_return_status  => x_return_status,
4234 								 x_msg_count      => x_msg_count,
4235 								 x_msg_data       => x_msg_data,
4236 								 p_event_name     => G_WF_EVT_KHR_CREATED,
4237 								 p_parameters     => l_parameter_list);
4238 
4239 	  END IF;
4240 
4241      EXCEPTION
4242      WHEN OTHERS THEN
4243        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4244        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4245      END raise_business_event;
4246 
4247 
4248     /*
4249     -- mvasudev, 08/17/2004
4250     -- END, PROCEDURE to enable Business Event
4251     */
4252 
4253 
4254   BEGIN
4255 
4256     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
4257 		p_org_id =>  p_org_id,
4258 		p_organization_id	=> p_organization_id);
4259 
4260     x_return_status := OKC_API.START_ACTIVITY(
4261 			p_api_name      => l_api_name,
4262 			p_pkg_name      => g_pkg_name,
4263 			p_init_msg_list => p_init_msg_list,
4264 			l_api_version   => l_api_version,
4265 			p_api_version   => p_api_version,
4266 			p_api_type      => g_api_type,
4267 			x_return_status => x_return_status);
4268 
4269     -- check if activity started successfully
4270     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4271        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4272     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4273        RAISE OKC_API.G_EXCEPTION_ERROR;
4274     END IF;
4275 /*
4276     If(p_contract_number is null) Then
4277 	 x_return_status := OKC_API.g_ret_sts_error;
4278 	 If p_scs_code = 'LEASE' Then
4279          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
4280          elsIf p_scs_code = 'MASTER_LEASE' Then
4281          	l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_LA_AGREEMENT_NUMBER');
4282          End If;
4283 
4284          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4285 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4286 				, p_token1 => 'COL_NAME'
4287 				, p_token1_value => l_ak_prompt
4288 			   );
4289 	 raise OKC_API.G_EXCEPTION_ERROR;
4290     End If;
4291 */
4292 
4293     IF(p_customer_name IS NULL) THEN
4294      IF p_scs_code = 'MASTER_LEASE' THEN
4295 	 x_return_status := OKC_API.g_ret_sts_error;
4296          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
4297          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4298 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4299 				, p_token1 => 'COL_NAME'
4300 				, p_token1_value => l_ak_prompt
4301 			   );
4302 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4303      END IF;
4304     END IF;
4305 
4306     IF(p_source_code <> 'new' AND p_source_contract_number IS NULL) THEN
4307 	 x_return_status := OKC_API.g_ret_sts_error;
4308          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
4309          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4310 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4311 				, p_token1 => 'COL_NAME'
4312 				, p_token1_value => l_ak_prompt
4313 			   );
4314 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4315     END IF;
4316 
4317    IF(p_customer_name IS NOT NULL) THEN
4318 
4319     okl_la_validation_util_pvt.Get_Party_Jtot_data (
4320       p_api_version    => p_api_version,
4321       p_init_msg_list  => p_init_msg_list,
4322       x_return_status  => x_return_status,
4323       x_msg_count      => x_msg_count,
4324       x_msg_data       => x_msg_data,
4325       p_scs_code       => p_scs_code,
4326       p_buy_or_sell    => 'S',
4327       p_rle_code       => G_RLE_CODE,
4328       p_id1            => p_customer_id1,
4329       p_id2            => p_customer_id2,
4330       p_name           => p_customer_name,
4331       p_object_code    => l_object_code,
4332       p_ak_region      => 'OKL_LA_DEAL_CREAT',
4333       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
4334       );
4335 
4336     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4337        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4338     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4339        RAISE OKC_API.G_EXCEPTION_ERROR;
4340     END IF;
4341 
4342    END IF;
4343 
4344     IF(p_source_code <> 'new' AND p_source_contract_number IS NOT NULL) THEN
4345 
4346     IF(p_customer_name IS NULL) THEN
4347 
4348       IF (p_source_code = 'template') THEN
4349        OPEN l_src_chr_id_crs(p_scs_code,'Y');
4350        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4351        CLOSE l_src_chr_id_crs;
4352       ELSIF (p_source_code = 'quote') THEN
4353        OPEN l_src_chr_id_crs('QUOTE','N');
4354        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4355        CLOSE l_src_chr_id_crs;
4356       ELSE
4357        OPEN l_src_chr_id_crs(p_scs_code,'N');
4358        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4359        CLOSE l_src_chr_id_crs;
4360      END IF;
4361 
4362     ELSE
4363 
4364       IF (p_source_code = 'template') THEN
4365        OPEN l_source_chr_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code);
4366        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4367        CLOSE l_source_chr_id_crs;
4368       ELSIF (p_source_code = 'quote') THEN
4369        OPEN l_source_chr_id_crs('QUOTE','N',p_customer_id1,p_customer_id2,l_object_code);
4370        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4371        CLOSE l_source_chr_id_crs;
4372       ELSE
4373        OPEN l_source_chr_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code);
4374        FETCH l_source_chr_id_crs INTO p_source_chr_id;
4375        CLOSE l_source_chr_id_crs;
4376      END IF;
4377 
4378     END IF;
4379 
4380      IF(p_source_chr_id IS NULL) THEN
4381    	 x_return_status := OKC_API.g_ret_sts_error;
4382          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
4383          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4384  				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
4385  				, p_token1 => 'COL_NAME'
4386  				, p_token1_value => l_ak_prompt
4387  			   );
4388  	 RAISE OKC_API.G_EXCEPTION_ERROR;
4389      END IF;
4390 
4391     END IF;
4392 
4393     IF (p_source_code = 'new') THEN
4394 /*
4395         create_new_deal(
4396          p_api_version     => l_api_version,
4397          p_init_msg_list   => p_init_msg_list,
4398          x_return_status   => x_return_status,
4399          x_msg_count       => x_msg_count,
4400          x_msg_data        => x_msg_data,
4401          p_contract_number => p_contract_number,
4402          p_scs_code        => p_scs_code,
4403          p_customer_id1    => p_customer_id1,
4404          p_customer_id2    => p_customer_id2,
4405          p_customer_code   => l_object_code,
4406          p_customer_name   => p_customer_name,
4407          p_template_yn     => p_template_yn,
4408          x_chr_id          => x_chr_id);
4409 
4410        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4411           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4412        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4413           RAISE OKC_API.G_EXCEPTION_ERROR;
4414        END IF;
4415 */
4416        l_chr_id := x_chr_id;
4417 
4418        IF okl_context.get_okc_org_id  IS NULL THEN
4419 		okl_context.set_okc_org_context(p_chr_id => l_chr_id );
4420        END IF;
4421 
4422        -- bug 4227922  property tax options defaulting onto contract
4423        IF ( p_scs_code = 'LEASE') THEN
4424 
4425        OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
4426          p_api_version     => l_api_version,
4427          p_init_msg_list   => p_init_msg_list,
4428          x_return_status   => x_return_status,
4429          x_msg_count       => x_msg_count,
4430          x_msg_data        => x_msg_data,
4431          p_chr_id          => l_chr_id);
4432 
4433        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4434           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4435        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4436           RAISE OKC_API.G_EXCEPTION_ERROR;
4437        END IF;
4438 
4439        END IF;
4440 
4441         -- copy from template
4442     ELSIF (p_source_code = 'template') THEN
4443 
4444           create_from_template(
4445             p_api_version     => l_api_version,
4446             p_init_msg_list   => p_init_msg_list,
4447             x_return_status   => x_return_status,
4448             x_msg_count       => x_msg_count,
4449             x_msg_data        => x_msg_data,
4450             p_contract_number => p_contract_number,
4451             p_source_chr_id   => p_source_chr_id,
4452             x_chr_id          => x_chr_id);
4453 
4454     /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
4455     ELSIF (p_source_code = 'Re-Lease') THEN
4456 
4457           create_from_release(
4458             p_api_version     => l_api_version,
4459             p_init_msg_list   => p_init_msg_list,
4460             x_return_status   => x_return_status,
4461             x_msg_count       => x_msg_count,
4462             x_msg_data        => x_msg_data,
4463             p_contract_number => p_contract_number,
4464             p_source_chr_id   => p_source_chr_id,
4465             x_chr_id          => x_chr_id);
4466     */
4467 
4468     ELSIF (p_source_code = 'copy' ) THEN
4469 
4470           create_from_contract(
4471             p_api_version     => l_api_version,
4472             p_init_msg_list   => p_init_msg_list,
4473             x_return_status   => x_return_status,
4474             x_msg_count       => x_msg_count,
4475             x_msg_data        => x_msg_data,
4476             p_contract_number => p_contract_number,
4477             p_source_chr_id   => p_source_chr_id,
4478             x_chr_id          => x_chr_id);
4479 
4480     ELSIF (p_source_code = 'quote') THEN
4481 
4482           create_from_quote(
4483             p_api_version     => l_api_version,
4484             p_init_msg_list   => p_init_msg_list,
4485             x_return_status   => x_return_status,
4486             x_msg_count       => x_msg_count,
4487             x_msg_data        => x_msg_data,
4488             p_contract_number => p_contract_number,
4489             p_source_chr_id   => p_source_chr_id,
4490             x_chr_id          => x_chr_id);
4491 
4492     END IF;
4493 
4494     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4495        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4496     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4497        RAISE OKC_API.G_EXCEPTION_ERROR;
4498     END IF;
4499 
4500 
4501 -- update contract header for template_yn
4502    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
4503 
4504     lp_chrv_rec.id := x_chr_id;
4505     lp_khrv_rec.id := x_chr_id;
4506     lp_chrv_rec.template_yn := 'Y';
4507 
4508     OKL_CONTRACT_PUB.update_contract_header(
4509       p_api_version    => p_api_version,
4510       p_init_msg_list  => p_init_msg_list,
4511       x_return_status  => x_return_status,
4512       x_msg_count      => x_msg_count,
4513       x_msg_data       => x_msg_data,
4514       p_chrv_rec       => lp_chrv_rec,
4515       p_khrv_rec       => lp_khrv_rec,
4516       x_chrv_rec       => lx_chrv_rec,
4517       x_khrv_rec       => lx_khrv_rec);
4518 
4519     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4520        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4521     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4522        RAISE OKC_API.G_EXCEPTION_ERROR;
4523     END IF;
4524 
4525    END IF;
4526 
4527    /*
4528    -- mvasudev, 08/17/2004
4529    -- Code change to enable Business Event
4530    */
4531 	raise_business_event(p_chr_id        => x_chr_id
4532 	                    ,x_return_status => x_return_status);
4533     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4534        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4535     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4536        RAISE OKL_API.G_EXCEPTION_ERROR;
4537     END IF;
4538 
4539    /*
4540    -- mvasudev, 08/17/2004
4541    -- END, Code change to enable Business Event
4542    */
4543 
4544    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
4545 			 x_msg_data	=> x_msg_data);
4546   EXCEPTION
4547     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4548       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4549 			p_api_name  => l_api_name,
4550 			p_pkg_name  => g_pkg_name,
4551 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
4552 			x_msg_count => x_msg_count,
4553 			x_msg_data  => x_msg_data,
4554 			p_api_type  => g_api_type);
4555 
4556     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4557       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4558 			p_api_name  => l_api_name,
4559 			p_pkg_name  => g_pkg_name,
4560 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
4561 			x_msg_count => x_msg_count,
4562 			x_msg_data  => x_msg_data,
4563 			p_api_type  => g_api_type);
4564 
4565     WHEN OTHERS THEN
4566       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
4567 			p_api_name  => l_api_name,
4568 			p_pkg_name  => g_pkg_name,
4569 			p_exc_name  => 'OTHERS',
4570 			x_msg_count => x_msg_count,
4571 			x_msg_data  => x_msg_data,
4572 			p_api_type  => g_api_type);
4573   END;
4574 
4575 
4576 
4577 -- Start of comments
4578 --
4579 -- Procedure Name  : create_deal
4580 -- Description     : creates a deal based on the information that comes
4581 --	             from the deal creation screen
4582 -- Business Rules  :
4583 -- Parameters      :
4584 -- Version         : 1.0
4585 -- End of comments
4586   PROCEDURE create_deal(
4587     p_api_version                  IN NUMBER,
4588     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4589     x_return_status                OUT NOCOPY VARCHAR2,
4590     x_msg_count                    OUT NOCOPY NUMBER,
4591     x_msg_data                     OUT NOCOPY VARCHAR2,
4592     p_source_code                  IN  VARCHAR2,
4593     p_template_type                IN  VARCHAR2,
4594     p_contract_number              IN  VARCHAR2,
4595     p_scs_code                     IN  VARCHAR2,
4596     p_customer_id1                 IN OUT NOCOPY  VARCHAR2,
4597     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
4598     p_customer_code                IN  VARCHAR2,
4599     p_customer_name                IN  VARCHAR2,
4600     p_effective_from               IN  DATE,
4601     p_program_name                 IN  VARCHAR2,
4602     p_program_id                   IN  NUMBER,
4603     p_org_id                       IN  NUMBER,
4604     p_organization_id              IN  NUMBER,
4605     p_source_chr_id                IN OUT NOCOPY  NUMBER,
4606     p_source_contract_number       IN  VARCHAR2,
4607     x_chr_id                       OUT NOCOPY NUMBER,
4608     --Added by dpsingh for LE Uptake
4609     p_legal_entity_id              IN  NUMBER) AS
4610 
4611     l_api_name	        VARCHAR2(30) := 'CREATE_DEAL';
4612     l_api_version	CONSTANT NUMBER	  := 1.0;
4613     l_program_id	NUMBER;
4614 
4615     CURSOR l_source_crs IS
4616       SELECT template_yn, chr_type
4617       FROM   okc_k_headers_b
4618       WHERE  id = p_source_chr_id;
4619 
4620     CURSOR l_source_k_num_crs IS
4621       SELECT contract_number
4622       FROM   okc_k_headers_b
4623       WHERE  id = p_source_chr_id;
4624 
4625     -- cursor when only customer is selected
4626     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
4627        SELECT CHR.id
4628        FROM okc_k_headers_b CHR
4629        , okc_k_party_roles_b prl
4630        WHERE prl.dnz_chr_id = CHR.id
4631        AND prl.chr_id = CHR.id
4632        AND CHR.scs_code = p_scs_code
4633        AND CHR.chr_type = 'CYA'
4634        AND NVL(chr.template_yn,'N') = p_temp_yn
4635        AND prl.rle_code = G_RLE_CODE
4636        AND prl.object1_id1 = p_object1_id1
4637        AND prl.object1_id2 = p_object1_id2
4638        AND prl.jtot_object1_code = p_customer_code
4639        AND CHR.contract_number = p_source_contract_number;
4640 
4641     -- cursor when only customer is selected
4642 
4643     CURSOR l_leaseAppTmpl1_crs(p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2) IS
4644        SELECT CHR.id
4645        FROM okl_k_headers_full_v CHR
4646           , okc_k_party_roles_b prl
4647        WHERE prl.dnz_chr_id = CHR.id
4648        AND prl.chr_id = CHR.id
4649        AND CHR.scs_code = 'LEASE'
4650        AND CHR.chr_type = 'CYA'
4651        AND NVL(chr.template_yn,'N') = 'Y'
4652        AND prl.rle_code = G_RLE_CODE
4653        AND prl.object1_id1 = p_object1_id1
4654        AND prl.object1_id2 = p_object1_id2
4655        AND prl.jtot_object1_code = p_customer_code
4656        AND NVL(CHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4657        AND CHR.contract_number = p_source_contract_number;
4658 
4659     -- cursor when only customer and program is selected
4660     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
4661        SELECT CHR.id
4662        FROM okc_k_headers_b CHR,
4663             okl_k_headers khr
4664           , okc_k_party_roles_b prl
4665        WHERE chr.id = khr.id
4666        AND prl.dnz_chr_id = CHR.id
4667        AND prl.chr_id = CHR.id
4668        AND CHR.scs_code = p_scs_code
4669        AND CHR.chr_type = 'CYA'
4670        AND NVL(CHR.template_yn,'N') = p_temp_yn
4671        AND prl.rle_code = G_RLE_CODE
4672        AND prl.object1_id1 = p_object1_id1
4673        AND prl.object1_id2 = p_object1_id2
4674        AND prl.jtot_object1_code = p_customer_code
4675        AND CHR.contract_number = p_source_contract_number
4676        AND exists( select 1 from okl_vp_associations vpaso
4677                    where vpaso.chr_id = l_prog_id);
4678 
4679     -- cursor when only customer and program is selected
4680     CURSOR l_leaseAppTmpl2_crs(p_object1_id1 VARCHAR2, p_object1_id2 VARCHAR2, p_customer_code VARCHAR2, l_prog_id NUMBER) IS
4681        SELECT CHR.id
4682        FROM okc_k_headers_b CHR,
4683             okl_k_headers khr
4684           , okc_k_party_roles_b prl
4685        WHERE chr.id = khr.id
4686        AND prl.dnz_chr_id = CHR.id
4687        AND prl.chr_id = CHR.id
4688        AND CHR.scs_code = 'LEASE'
4689        AND CHR.chr_type = 'CYA'
4690        AND NVL(CHR.template_yn,'N') = 'Y'
4691        AND prl.rle_code = G_RLE_CODE
4692        AND prl.object1_id1 = p_object1_id1
4693        AND prl.object1_id2 = p_object1_id2
4694        AND prl.jtot_object1_code = p_customer_code
4695        AND CHR.contract_number = p_source_contract_number
4696        AND NVL(KHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4697        AND khr_id = l_prog_id;
4698 
4699     -- cursor when only program is selected
4700     CURSOR l_source_prog_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2, l_prog_id NUMBER) IS
4701        SELECT CHR.id
4702        FROM okc_k_headers_b CHR,
4703             okl_k_headers khr
4704        WHERE chr.id = khr.id
4705        AND CHR.scs_code = p_scs_code
4706        AND CHR.chr_type = 'CYA'
4707        AND NVL(CHR.template_yn,'N') = p_temp_yn
4708        AND CHR.contract_number = p_source_contract_number
4709        AND exists( select 1 from okl_vp_associations vpaso
4710                    where vpaso.chr_id = l_prog_id);
4711 
4712     -- cursor when only program is selected
4713     CURSOR l_leaseAppTmpl3_crs(l_prog_id NUMBER) IS
4714        SELECT CHR.id
4715        FROM okc_k_headers_b CHR,
4716             okl_k_headers khr
4717        WHERE chr.id = khr.id
4718        AND CHR.scs_code = 'LEASE'
4719        AND CHR.chr_type = 'CYA'
4720        AND NVL(CHR.template_yn,'N') = 'Y'
4721        AND CHR.contract_number = p_source_contract_number
4722        AND NVL(KHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4723        AND khr_id = l_prog_id;
4724 
4725     CURSOR l_src_chr_id_crs(p_scs_code VARCHAR2, p_temp_yn VARCHAR2) IS
4726        SELECT CHR.id
4727        FROM okc_k_headers_b CHR
4728        WHERE CHR.scs_code = p_scs_code
4729        AND CHR.chr_type = 'CYA'
4730        AND CHR.template_yn = p_temp_yn
4731        AND CHR.contract_number = p_source_contract_number;
4732 
4733     CURSOR l_leaseAppTmpl_crs IS
4734        SELECT CHR.id
4735        FROM okl_k_headers_full_v CHR
4736        WHERE CHR.scs_code = 'LEASE'
4737        AND CHR.chr_type = 'CYA'
4738        AND nvl(CHR.template_yn,'N') = 'Y'
4739        AND NVL(CHR.TEMPLATE_TYPE_CODE,'XXX') = 'LEASEAPP'
4740        AND CHR.contract_number = p_source_contract_number;
4741 
4742     CURSOR l_program_csr IS
4743        SELECT chr.id
4744        FROM okl_k_headers_full_v chr
4745        WHERE chr.scs_code = 'PROGRAM'
4746        AND nvl(chr.template_yn, 'N') = 'N'
4747        AND chr.sts_code = 'ACTIVE'
4748        AND chr.authoring_org_id = p_org_id
4749        AND NVL(chr.start_date,p_effective_from) <= p_effective_from
4750        AND NVL(chr.end_date,p_effective_from) >= p_effective_from
4751        AND chr.contract_number = p_program_name;
4752 
4753     CURSOR l_progAgrmntTemp_crs(p_prog_id NUMBER) IS
4754        SELECT CHR.id
4755        FROM okl_k_headers_full_v CHR
4756        WHERE CHR.scs_code = p_scs_code
4757        AND CHR.chr_type = 'CYA'
4758        AND nvl(chr.template_yn,'N') = 'Y'
4759        AND NVL(chr.template_type_code,'XXX') = OKL_TEMP_TYPE_PROGRAM
4760        AND CHR.contract_number = p_source_contract_number;
4761        /*
4762        AND exists( select 1
4763                    from okl_vp_associations vpaso
4764                    where vpaso.chr_id = p_prog_id
4765                    and vpaso.assoc_object_type_code = 'LC_TEMPLATE'
4766                    and NVL(vpaso.start_date,p_effective_from) <= p_effective_from
4767                    and NVL(vpaso.end_date,p_effective_from) >= p_effective_from);
4768                    */
4769 
4770     CURSOR l_progAgrmntTemp1_crs IS
4771        SELECT CHR.id
4772        FROM okl_k_headers_full_v CHR
4773        WHERE CHR.scs_code = p_scs_code
4774        AND CHR.chr_type = 'CYA'
4775        AND nvl(chr.template_yn,'N') = 'Y'
4776        AND NVL(chr.template_type_code,'XXX') = OKL_TEMP_TYPE_PROGRAM
4777        AND CHR.contract_number = p_source_contract_number;
4778 
4779 --start changed by abhsaxen for Bug#6174484
4780      CURSOR l_quote_crs(p_auth_org_id NUMBER, p_inv_org_id NUMBER, p_quote_number VARCHAR2) IS
4781 	select
4782 	  lsq.id quote_id
4783 	 from
4784 	  okl_lease_quotes_b lsq
4785 	 ,okl_lease_quotes_tl lsqt
4786 	 ,okl_lease_opportunities_b lop
4787 	 where  lop.org_id = p_auth_org_id
4788 	 and lop.inv_org_id = p_inv_org_id
4789 	 and lsq.parent_object_code = 'LEASEOPP'
4790 	 and lop.id = lsq.parent_object_id
4791 	 and lsq.id = lsqt.id
4792 	 and lsqt.language = userenv('LANG')
4793 	 and lsq.status = 'ACCEPTED'
4794 	 and lsq.reference_number = p_quote_number
4795 	 and not exists (select 1
4796 			 from okl_lease_apps_all_b
4797 			 where lease_opportunity_id = lop.id
4798 			 and application_status <> 'WITHDRAWN')
4799 	 and not exists (select 1
4800 			 from okc_k_headers_all_b
4801 			 where orig_system_source_code = 'OKL_QUOTE'
4802 			 and orig_system_id1 = lsq.id
4803 			 and sts_code <> 'ABANDONED');
4804 --end changed by abhsaxen for Bug#6174484
4805 
4806 --start changed by abhsaxen for Bug#6174484
4807     CURSOR l_leaseapp_crs(p_auth_org_id NUMBER, p_inv_org_id NUMBER, p_leaseapp_number VARCHAR2) IS
4808 	select
4809 	  lap.id leaseapp_id
4810 	 from
4811 	  okl_lease_applications_b lap
4812 	 ,okl_lease_applications_tl lapt
4813 	 where
4814 	     lap.org_id = p_auth_org_id
4815 	 and lap.inv_org_id = p_inv_org_id
4816 	 and lap.id = lapt.id
4817 	 and lapt.language = userenv('LANG')
4818 	 and lap.application_status = 'CR-APPROVED'
4819 	 and lap.reference_number = p_leaseapp_number
4820 	 and not exists (select 1
4821 			 from okc_k_headers_all_b
4822 			 where orig_system_source_code = 'OKL_LEASE_APP'
4823 			 and orig_system_id1 = lap.id
4824 			 and sts_code <> 'ABANDONED')
4825 	 and not exists (select 1
4826 	   from okl_lease_apps_all_b
4827 	   where parent_leaseapp_id = lap.id
4828 	   and application_status not in ('WITHDRAWN' , 'CR-REJECTED'))
4829 	;
4830 --end changed by abhsaxen for Bug#6174484
4831 
4832     l_template_type      OKL_K_HEADERS.TEMPLATE_TYPE_CODE%TYPE;
4833     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
4834     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4835     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
4836     l_object_code        VARCHAR2(30) DEFAULT NULL;
4837     l_chr_id             OKC_K_HEADERS_B.ID%TYPE;
4838 
4839     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
4840 
4841     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4842     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
4843     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4844     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
4845 
4846     /*
4847     -- mvasudev, 08/17/2004
4848     -- Added PROCEDURE to enable Business Event
4849     */
4850 	PROCEDURE raise_business_event(
4851     	p_chr_id IN NUMBER
4852 	   ,x_return_status OUT NOCOPY VARCHAR2
4853     )
4854 	IS
4855 	  l_check VARCHAR2(1);
4856       l_parameter_list           wf_parameter_list_t;
4857 	BEGIN
4858 
4859     x_return_status := Okc_Api.G_RET_STS_SUCCESS;
4860 	  -- Raise the event if it is a new Contract
4861 	  --l_check := Okl_Lla_Util_Pvt.check_new_contract(p_chr_id);
4862       --IF (l_check= OKL_API.G_TRUE) THEN
4863 	  IF (p_source_code = 'new') THEN
4864   		 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
4865 
4866          OKL_WF_PVT.raise_event (p_api_version    => p_api_version,
4867                                  p_init_msg_list  => p_init_msg_list,
4868 								 x_return_status  => x_return_status,
4869 								 x_msg_count      => x_msg_count,
4870 								 x_msg_data       => x_msg_data,
4871 								 p_event_name     => G_WF_EVT_KHR_CREATED,
4872 								 p_parameters     => l_parameter_list);
4873 
4874 	  END IF;
4875 
4876      EXCEPTION
4877      WHEN OTHERS THEN
4878        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4879        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4880      END raise_business_event;
4881 
4882 
4883     /*
4884     -- mvasudev, 08/17/2004
4885     -- END, PROCEDURE to enable Business Event
4886     */
4887 
4888 
4889   BEGIN
4890 
4891     OKC_CONTEXT.SET_OKC_ORG_CONTEXT(
4892 		p_org_id =>  p_org_id,
4893 		p_organization_id	=> p_organization_id);
4894 
4895     x_return_status := OKC_API.START_ACTIVITY(
4896 			p_api_name      => l_api_name,
4897 			p_pkg_name      => g_pkg_name,
4898 			p_init_msg_list => p_init_msg_list,
4899 			l_api_version   => l_api_version,
4900 			p_api_version   => p_api_version,
4901 			p_api_type      => g_api_type,
4902 			x_return_status => x_return_status);
4903 
4904     -- check if activity started successfully
4905     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4906        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4907     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4908        RAISE OKC_API.G_EXCEPTION_ERROR;
4909     END IF;
4910 
4911     IF(p_customer_name IS NULL) THEN
4912      IF p_scs_code = 'MASTER_LEASE' THEN
4913 	 x_return_status := OKC_API.g_ret_sts_error;
4914          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
4915          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
4916 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4917 				, p_token1 => 'COL_NAME'
4918 				, p_token1_value => l_ak_prompt
4919 			   );
4920 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4921      END IF;
4922     END IF;
4923 
4924     IF(p_program_name IS NOT NULL AND p_scs_code <> 'MASTER_LEASE' ) THEN
4925          l_program_id := null;
4926          open l_program_csr;
4927          fetch l_program_csr into l_program_id;
4928          close l_program_csr;
4929 
4930          IF( l_program_id IS NULL ) THEN
4931 
4932 	   x_return_status := OKC_API.g_ret_sts_error;
4933            l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_PROGRAM');
4934            OKC_API.SET_MESSAGE(   p_app_name => g_app_name
4935 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
4936 				, p_token1 => 'COL_NAME'
4937 				, p_token1_value => l_ak_prompt
4938 			   );
4939 	   RAISE OKC_API.G_EXCEPTION_ERROR;
4940 
4941 	 END IF;
4942     END IF;
4943 
4944     IF(p_source_code <> 'new' AND p_source_contract_number IS NULL) THEN
4945 	 x_return_status := OKC_API.g_ret_sts_error;
4946          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
4947          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
4948 				, p_msg_name => 'OKL_REQUIRED_VALUE'
4949 				, p_token1 => 'COL_NAME'
4950 				, p_token1_value => l_ak_prompt
4951 			   );
4952 	 RAISE OKC_API.G_EXCEPTION_ERROR;
4953     END IF;
4954 
4955    IF(p_customer_name IS NOT NULL) THEN
4956 
4957     okl_la_validation_util_pvt.Get_Party_Jtot_data (
4958       p_api_version    => p_api_version,
4959       p_init_msg_list  => p_init_msg_list,
4960       x_return_status  => x_return_status,
4961       x_msg_count      => x_msg_count,
4962       x_msg_data       => x_msg_data,
4963       p_scs_code       => p_scs_code,
4964       p_buy_or_sell    => 'S',
4965       p_rle_code       => G_RLE_CODE,
4966       p_id1            => p_customer_id1,
4967       p_id2            => p_customer_id2,
4968       p_name           => p_customer_name,
4969       p_object_code    => l_object_code,
4970       p_ak_region      => 'OKL_LA_DEAL_CREAT',
4971       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
4972       );
4973 
4974     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4975        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4976     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4977        RAISE OKC_API.G_EXCEPTION_ERROR;
4978     END IF;
4979 
4980    END IF;
4981 
4982    IF(p_source_code <> 'new' AND p_source_contract_number IS NOT NULL) THEN
4983 
4984     IF(p_customer_name IS NULL AND p_program_name IS NULL) THEN
4985 
4986       IF (p_source_code = 'template') THEN
4987        OPEN l_src_chr_id_crs(p_scs_code,'Y');
4988        FETCH l_src_chr_id_crs INTO p_source_chr_id;
4989        CLOSE l_src_chr_id_crs;
4990       ELSIF (p_source_code = 'quote') THEN
4991        OPEN l_quote_crs(p_org_id, p_organization_id, p_source_contract_number);
4992        FETCH l_quote_crs INTO p_source_chr_id;
4993        CLOSE l_quote_crs;
4994       ELSIF (p_source_code = 'leaseApp') THEN
4995        OPEN l_leaseapp_crs(p_org_id, p_organization_id, p_source_contract_number);
4996        FETCH l_leaseapp_crs INTO p_source_chr_id;
4997        CLOSE l_leaseapp_crs;
4998       ELSIF (p_source_code = 'progAgrmntTemp') THEN
4999        OPEN  l_progAgrmntTemp1_crs;
5000        FETCH l_progAgrmntTemp1_crs INTO p_source_chr_id;
5001        CLOSE l_progAgrmntTemp1_crs;
5002       ELSIF (p_source_code = 'leaseAppTemp') THEN
5003        OPEN l_leaseAppTmpl_crs;
5004        FETCH l_leaseAppTmpl_crs INTO p_source_chr_id;
5005        CLOSE l_leaseAppTmpl_crs;
5006       ELSE
5007        OPEN l_src_chr_id_crs(p_scs_code,'N');
5008        FETCH l_src_chr_id_crs INTO p_source_chr_id;
5009        CLOSE l_src_chr_id_crs;
5010       END IF;
5011 
5012     ELSIF( p_customer_name IS NOT NULL AND p_program_name IS NULL) THEN
5013 
5014       IF (p_source_code = 'template') THEN
5015        OPEN l_source_chr_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code);
5016        FETCH l_source_chr_id_crs INTO p_source_chr_id;
5017        CLOSE l_source_chr_id_crs;
5018       ELSIF (p_source_code = 'quote') THEN
5019        OPEN l_quote_crs(p_org_id, p_organization_id, p_source_contract_number);
5020        FETCH l_quote_crs INTO p_source_chr_id;
5021        CLOSE l_quote_crs;
5022       ELSIF (p_source_code = 'leaseApp') THEN
5023        OPEN l_leaseapp_crs(p_org_id, p_organization_id, p_source_contract_number);
5024        FETCH l_leaseapp_crs INTO p_source_chr_id;
5025        CLOSE l_leaseapp_crs;
5026       ELSIF (p_source_code = 'progAgrmntTemp') THEN
5027        OPEN  l_progAgrmntTemp1_crs;
5028        FETCH l_progAgrmntTemp1_crs INTO p_source_chr_id;
5029        CLOSE l_progAgrmntTemp1_crs;
5030       ELSIF (p_source_code = 'leaseAppTemp') THEN
5031        OPEN l_leaseAppTmpl1_crs(p_customer_id1,p_customer_id2,l_object_code);
5032        FETCH l_leaseAppTmpl1_crs INTO p_source_chr_id;
5033        CLOSE l_leaseAppTmpl1_crs;
5034       ELSE
5035        OPEN l_source_chr_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code);
5036        FETCH l_source_chr_id_crs INTO p_source_chr_id;
5037        CLOSE l_source_chr_id_crs;
5038       END IF;
5039 
5040     ELSIF( p_customer_name IS NOT NULL AND p_program_name IS NOT NULL) THEN
5041 
5042       IF (p_source_code = 'template') THEN
5043        OPEN l_source_chr_prog_id_crs(p_scs_code,'Y',p_customer_id1,p_customer_id2,l_object_code, l_program_id);
5044        FETCH l_source_chr_prog_id_crs INTO p_source_chr_id;
5045        CLOSE l_source_chr_prog_id_crs;
5046       ELSIF (p_source_code = 'quote') THEN
5047        OPEN l_quote_crs(p_org_id, p_organization_id, p_source_contract_number);
5048        FETCH l_quote_crs INTO p_source_chr_id;
5049        CLOSE l_quote_crs;
5050       ELSIF (p_source_code = 'leaseApp') THEN
5051        OPEN l_leaseapp_crs(p_org_id, p_organization_id, p_source_contract_number);
5052        FETCH l_leaseapp_crs INTO p_source_chr_id;
5053        CLOSE l_leaseapp_crs;
5054       ELSIF (p_source_code = 'progAgrmntTemp') THEN
5055        OPEN  l_progAgrmntTemp_crs(l_program_id);
5056        FETCH l_progAgrmntTemp_crs INTO p_source_chr_id;
5057        CLOSE l_progAgrmntTemp_crs;
5058       ELSIF (p_source_code = 'leaseAppTemp') THEN
5059        OPEN l_leaseAppTmpl2_crs(p_customer_id1,p_customer_id2,l_object_code, l_program_id);
5060        FETCH l_leaseAppTmpl2_crs INTO p_source_chr_id;
5061        CLOSE l_leaseAppTmpl2_crs;
5062       ELSE
5063        OPEN l_source_chr_prog_id_crs(p_scs_code,'N',p_customer_id1,p_customer_id2,l_object_code, l_program_id);
5064        FETCH l_source_chr_prog_id_crs INTO p_source_chr_id;
5065        CLOSE l_source_chr_prog_id_crs;
5066       END IF;
5067 
5068     ELSIF( p_customer_name IS NULL AND p_program_name IS NOT NULL) THEN
5069 
5070       IF (p_source_code = 'template') THEN
5071        OPEN l_source_prog_crs(p_scs_code,'Y',l_program_id);
5072        FETCH l_source_prog_crs INTO p_source_chr_id;
5073        CLOSE l_source_prog_crs;
5074       ELSIF (p_source_code = 'quote') THEN
5075        OPEN l_quote_crs(p_org_id, p_organization_id, p_source_contract_number);
5076        FETCH l_quote_crs INTO p_source_chr_id;
5077        CLOSE l_quote_crs;
5078       ELSIF (p_source_code = 'leaseApp') THEN
5079        OPEN l_leaseapp_crs(p_org_id, p_organization_id, p_source_contract_number);
5080        FETCH l_leaseapp_crs INTO p_source_chr_id;
5081        CLOSE l_leaseapp_crs;
5082       ELSIF (p_source_code = 'progAgrmntTemp') THEN
5083        OPEN  l_progAgrmntTemp_crs(l_program_id);
5084        FETCH l_progAgrmntTemp_crs INTO p_source_chr_id;
5085        CLOSE l_progAgrmntTemp_crs;
5086       ELSIF (p_source_code = 'leaseAppTemp') THEN
5087        OPEN l_leaseAppTmpl3_crs(l_program_id);
5088        FETCH l_leaseAppTmpl3_crs INTO p_source_chr_id;
5089        CLOSE l_leaseAppTmpl3_crs;
5090       ELSE
5091        OPEN l_source_prog_crs(p_scs_code,'N',l_program_id);
5092        FETCH l_source_prog_crs INTO p_source_chr_id;
5093        CLOSE l_source_prog_crs;
5094       END IF;
5095 
5096     END IF;
5097 
5098     IF(p_source_chr_id IS NULL) THEN
5099    	 x_return_status := OKC_API.g_ret_sts_error;
5100          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_SOURCE');
5101          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5102  				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5103  				, p_token1 => 'COL_NAME'
5104  				, p_token1_value => l_ak_prompt
5105  			   );
5106  	 RAISE OKC_API.G_EXCEPTION_ERROR;
5107     END IF;
5108 
5109     END IF;
5110 
5111     IF (p_source_code = 'new') THEN
5112 
5113         create_new_deal(
5114          p_api_version     => l_api_version,
5115          p_init_msg_list   => p_init_msg_list,
5116          x_return_status   => x_return_status,
5117          x_msg_count       => x_msg_count,
5118          x_msg_data        => x_msg_data,
5119          p_contract_number => p_contract_number,
5120          p_scs_code        => p_scs_code,
5121          p_customer_id1    => p_customer_id1,
5122          p_customer_id2    => p_customer_id2,
5123          p_customer_code   => l_object_code,
5124          p_customer_name   => p_customer_name,
5125          p_template_yn     => l_template_yn,
5126          p_template_type   => p_template_type,
5127          p_effective_from  => p_effective_from,
5128          p_program_name    => p_program_name,
5129          p_program_id      => p_program_id,
5130          x_chr_id          => x_chr_id,
5131     --Added by dpsingh for LE Uptake
5132          p_legal_entity_id => p_legal_entity_id);
5133 
5134        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5135           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5136        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5137           RAISE OKC_API.G_EXCEPTION_ERROR;
5138        END IF;
5139 
5140        l_chr_id := x_chr_id;
5141 
5142        IF okl_context.get_okc_org_id  IS NULL THEN
5143 		okl_context.set_okc_org_context(p_chr_id => l_chr_id );
5144        END IF;
5145 
5146        -- bug 4227922  property tax options defaulting onto contract
5147        IF ( p_scs_code = 'LEASE') THEN
5148 
5149        OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
5150          p_api_version     => l_api_version,
5151          p_init_msg_list   => p_init_msg_list,
5152          x_return_status   => x_return_status,
5153          x_msg_count       => x_msg_count,
5154          x_msg_data        => x_msg_data,
5155          p_chr_id          => l_chr_id);
5156 
5157        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5158           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5159        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5160           RAISE OKC_API.G_EXCEPTION_ERROR;
5161        END IF;
5162 
5163        END IF;
5164 
5165         -- copy from template
5166     ELSIF (p_source_code = 'template') THEN
5167 
5168           create_from_template(
5169             p_api_version     => l_api_version,
5170             p_init_msg_list   => p_init_msg_list,
5171             x_return_status   => x_return_status,
5172             x_msg_count       => x_msg_count,
5173             x_msg_data        => x_msg_data,
5174             p_contract_number => p_contract_number,
5175             p_source_chr_id   => p_source_chr_id,
5176             x_chr_id          => x_chr_id);
5177 
5178     /* Bug# 3948361 - Re-lease contract functionality is moved to Revisions page
5179     ELSIF (p_source_code = 'Re-Lease') THEN
5180 
5181           create_from_release(
5182             p_api_version     => l_api_version,
5183             p_init_msg_list   => p_init_msg_list,
5184             x_return_status   => x_return_status,
5185             x_msg_count       => x_msg_count,
5186             x_msg_data        => x_msg_data,
5187             p_contract_number => p_contract_number,
5188             p_source_chr_id   => p_source_chr_id,
5189             x_chr_id          => x_chr_id);
5190     */
5191 
5192     ELSIF (p_source_code = 'copy' ) THEN
5193 
5194           create_from_contract(
5195             p_api_version     => l_api_version,
5196             p_init_msg_list   => p_init_msg_list,
5197             x_return_status   => x_return_status,
5198             x_msg_count       => x_msg_count,
5199             x_msg_data        => x_msg_data,
5200             p_contract_number => p_contract_number,
5201             p_source_chr_id   => p_source_chr_id,
5202             x_chr_id          => x_chr_id);
5203 
5204     ELSIF (p_source_code = 'progAgrmntTemp' ) THEN
5205 
5206           create_from_contract(
5207             p_api_version     => l_api_version,
5208             p_init_msg_list   => p_init_msg_list,
5209             x_return_status   => x_return_status,
5210             x_msg_count       => x_msg_count,
5211             x_msg_data        => x_msg_data,
5212             p_contract_number => p_contract_number,
5213             p_source_chr_id   => p_source_chr_id,
5214             x_chr_id          => x_chr_id);
5215 
5216     ELSIF (p_source_code = 'leaseAppTemp' ) THEN
5217 
5218           create_from_contract(
5219             p_api_version     => l_api_version,
5220             p_init_msg_list   => p_init_msg_list,
5221             x_return_status   => x_return_status,
5222             x_msg_count       => x_msg_count,
5223             x_msg_data        => x_msg_data,
5224             p_contract_number => p_contract_number,
5225             p_source_chr_id   => p_source_chr_id,
5226             x_chr_id          => x_chr_id);
5227 
5228     ELSIF (p_source_code = 'quote' ) THEN
5229     -- LEASEOPP
5230           create_from_quote(
5231             p_api_version        => l_api_version,
5232             p_init_msg_list      => p_init_msg_list,
5233             x_return_status      => x_return_status,
5234             x_msg_count          => x_msg_count,
5235             x_msg_data           => x_msg_data,
5236             p_contract_number    => p_contract_number,
5237             p_source_object_code => 'LEASEOPP',
5238             p_source_chr_id      => p_source_chr_id,
5239             x_chr_id             => x_chr_id);
5240 
5241     ELSIF (p_source_code = 'leaseApp' ) THEN
5242     -- LEASEAPP
5243           create_from_quote(
5244             p_api_version        => l_api_version,
5245             p_init_msg_list      => p_init_msg_list,
5246             x_return_status      => x_return_status,
5247             x_msg_count          => x_msg_count,
5248             x_msg_data           => x_msg_data,
5249             p_contract_number    => p_contract_number,
5250             p_source_object_code => 'LEASEAPP',
5251             p_source_chr_id      => p_source_chr_id,
5252             x_chr_id             => x_chr_id);
5253 
5254     END IF;
5255 
5256     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5257        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5258     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5259        RAISE OKC_API.G_EXCEPTION_ERROR;
5260     END IF;
5261 
5262    -- update contract header for template_yn
5263    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
5264 
5265     lp_chrv_rec.id := x_chr_id;
5266     lp_khrv_rec.id := x_chr_id;
5267 
5268     IF(p_template_type = OKL_TEMP_TYPE_PROGRAM) THEN
5269       lp_khrv_rec.template_type_code := OKL_TEMP_TYPE_PROGRAM;
5270       lp_chrv_rec.template_yn := 'Y';
5271     ELSIF(p_template_type = OKL_TEMP_TYPE_CONTRACT) THEN
5272       lp_khrv_rec.template_type_code := OKL_TEMP_TYPE_CONTRACT;
5273       lp_chrv_rec.template_yn := 'Y';
5274     ELSIF(p_template_type = OKL_TEMP_TYPE_LEASEAPP) THEN
5275       lp_khrv_rec.template_type_code := OKL_TEMP_TYPE_LEASEAPP;
5276       lp_chrv_rec.template_yn := 'Y';
5277     ELSE
5278       lp_khrv_rec.template_type_code := NULL;
5279     END IF;
5280 
5281     IF(p_effective_from IS NOT NULL) THEN
5282 
5283       lp_chrv_rec.start_date := p_effective_from;
5284 
5285     END IF;
5286 
5287     IF(l_program_id IS NOT NULL) THEN
5288 
5289       lp_khrv_rec.khr_id := l_program_id;
5290 
5291     END IF;
5292 
5293     OKL_CONTRACT_PUB.update_contract_header(
5294       p_api_version    => p_api_version,
5295       p_init_msg_list  => p_init_msg_list,
5296       x_return_status  => x_return_status,
5297       x_msg_count      => x_msg_count,
5298       x_msg_data       => x_msg_data,
5299       p_chrv_rec       => lp_chrv_rec,
5300       p_khrv_rec       => lp_khrv_rec,
5301       x_chrv_rec       => lx_chrv_rec,
5302       x_khrv_rec       => lx_khrv_rec);
5303 
5304     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5305        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5306     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5307        RAISE OKC_API.G_EXCEPTION_ERROR;
5308     END IF;
5309 
5310    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
5311 
5312     lp_chrv_rec.id := x_chr_id;
5313     lp_khrv_rec.id := x_chr_id;
5314     lp_chrv_rec.template_yn := 'N';
5315     lp_khrv_rec.template_type_code := NULL;
5316 
5317     IF(p_effective_from IS NOT NULL) THEN
5318 
5319       lp_chrv_rec.start_date := p_effective_from;
5320 
5321     END IF;
5322 
5323     IF(l_program_id IS NOT NULL) THEN
5324 
5325       lp_khrv_rec.khr_id := l_program_id;
5326 
5327     END IF;
5328 
5329     OKL_CONTRACT_PUB.update_contract_header(
5330       p_api_version    => p_api_version,
5331       p_init_msg_list  => p_init_msg_list,
5332       x_return_status  => x_return_status,
5333       x_msg_count      => x_msg_count,
5334       x_msg_data       => x_msg_data,
5335       p_chrv_rec       => lp_chrv_rec,
5336       p_khrv_rec       => lp_khrv_rec,
5337       x_chrv_rec       => lx_chrv_rec,
5338       x_khrv_rec       => lx_khrv_rec);
5339 
5340     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5341        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5342     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5343        RAISE OKC_API.G_EXCEPTION_ERROR;
5344     END IF;
5345 
5346    END IF;
5347 
5348    /*
5349    -- mvasudev, 08/17/2004
5350    -- Code change to enable Business Event
5351    */
5352 	raise_business_event(p_chr_id        => x_chr_id
5353 	                    ,x_return_status => x_return_status);
5354     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5355        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5356     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5357        RAISE OKL_API.G_EXCEPTION_ERROR;
5358     END IF;
5359 
5360    /*
5361    -- mvasudev, 08/17/2004
5362    -- END, Code change to enable Business Event
5363    */
5364 
5365    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
5366 			 x_msg_data	=> x_msg_data);
5367   EXCEPTION
5368     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5369       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5370 			p_api_name  => l_api_name,
5371 			p_pkg_name  => g_pkg_name,
5372 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
5373 			x_msg_count => x_msg_count,
5374 			x_msg_data  => x_msg_data,
5375 			p_api_type  => g_api_type);
5376 
5377     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5378       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5379 			p_api_name  => l_api_name,
5380 			p_pkg_name  => g_pkg_name,
5381 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
5382 			x_msg_count => x_msg_count,
5383 			x_msg_data  => x_msg_data,
5384 			p_api_type  => g_api_type);
5385 
5386     WHEN OTHERS THEN
5387       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5388 			p_api_name  => l_api_name,
5389 			p_pkg_name  => g_pkg_name,
5390 			p_exc_name  => 'OTHERS',
5391 			x_msg_count => x_msg_count,
5392 			x_msg_data  => x_msg_data,
5393 			p_api_type  => g_api_type);
5394   END;
5395 
5396 
5397 -- Start of comments
5398 --
5399 -- Procedure Name  : validate_deal
5400 -- Description     : creates a deal based on the information that comes
5401 --	             from the deal creation screen
5402 -- Business Rules  :
5403 -- Parameters      :
5404 -- Version         : 1.0
5405 -- End of comments
5406   PROCEDURE validate_deal(
5407     p_api_version                  IN NUMBER,
5408     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5409     x_return_status                OUT NOCOPY VARCHAR2,
5410     x_msg_count                    OUT NOCOPY NUMBER,
5411     x_msg_data                     OUT NOCOPY VARCHAR2,
5412     p_customer_id1                 IN OUT NOCOPY VARCHAR2,
5413     p_customer_id2                 IN OUT NOCOPY  VARCHAR2,
5414     p_customer_code                IN OUT NOCOPY VARCHAR2,
5415     p_customer_name                IN  VARCHAR2,
5416     p_customer_acc_id1             IN OUT NOCOPY VARCHAR2,
5417     p_customer_acc_id2             IN OUT NOCOPY VARCHAR2,
5418     p_customer_acc_code            IN OUT NOCOPY VARCHAR2,
5419     p_customer_acc_name            IN  VARCHAR2,
5420     p_product_name                 IN  VARCHAR2,
5421     p_product_id                   IN OUT NOCOPY VARCHAR2,
5422     p_contact_id1                  IN OUT NOCOPY VARCHAR2,
5423     p_contact_id2                  IN OUT NOCOPY VARCHAR2,
5424     p_contact_code                 IN OUT NOCOPY VARCHAR2,
5425     p_contact_name                 IN  VARCHAR2,
5426     p_mla_no                       IN  VARCHAR2,
5427     p_mla_id                       IN OUT NOCOPY VARCHAR2,
5428     p_chrv_rec       		   IN  chrv_rec_type,
5429     p_khrv_rec                     IN  khrv_rec_type,
5430     x_chrv_rec                     OUT NOCOPY chrv_rec_type,
5431     x_khrv_rec                     OUT NOCOPY  khrv_rec_type
5432     ) AS
5433 
5434     l_api_name	        VARCHAR2(30) := 'validate_deal';
5435     l_api_version	CONSTANT NUMBER	  := 1.0;
5436 
5437     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
5438     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5439     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5440     l_object_code     VARCHAR2(30) DEFAULT NULL;
5441 
5442     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
5443     l_chr_id	NUMBER;
5444 
5445     CURSOR l_chk_cust_acc_csr(p_cust_acc_id1 VARCHAR2, p_name VARCHAR2) IS
5446     SELECT COUNT(1)
5447     FROM okx_customer_accounts_v ca, okx_parties_v P
5448     WHERE P.id1 = ca.party_id
5449     AND ca.description = p_cust_acc_id1
5450     AND P.name = p_name;
5451 
5452     CURSOR l_product_csr IS
5453     SELECT id
5454     FROM OKL_PRODUCTS_V
5455     WHERE name = p_product_name;
5456 
5457     row_cnt  NUMBER;
5458 
5459   BEGIN
5460 
5461   IF okl_context.get_okc_org_id  IS NULL THEN
5462 	l_chr_id := p_chrv_rec.id;
5463 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
5464   END IF;
5465 
5466     x_return_status := OKC_API.START_ACTIVITY(
5467 			p_api_name      => l_api_name,
5468 			p_pkg_name      => g_pkg_name,
5469 			p_init_msg_list => p_init_msg_list,
5470 			l_api_version   => l_api_version,
5471 			p_api_version   => p_api_version,
5472 			p_api_type      => g_api_type,
5473 			x_return_status => x_return_status);
5474 
5475     -- check if activity started successfully
5476     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5477        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5478     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5479        RAISE OKC_API.G_EXCEPTION_ERROR;
5480     END IF;
5481 
5482 -- contract number validation
5483 
5484    IF(p_chrv_rec.contract_number IS NULL) THEN
5485 	 x_return_status := OKC_API.g_ret_sts_error;
5486          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CONTRACT_NUMBER');
5487          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5488 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5489 				, p_token1 => 'COL_NAME'
5490 				, p_token1_value => l_ak_prompt
5491 			   );
5492 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5493     END IF;
5494 
5495 -- customer validation
5496 
5497    IF(p_customer_name IS NULL) THEN
5498 	 x_return_status := OKC_API.g_ret_sts_error;
5499          l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
5500          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5501 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5502 				, p_token1 => 'COL_NAME'
5503 				, p_token1_value => l_ak_prompt
5504 			   );
5505 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5506     END IF;
5507 
5508     okl_la_validation_util_pvt.Get_Party_Jtot_data (
5509       p_api_version    => p_api_version,
5510       p_init_msg_list  => p_init_msg_list,
5511       x_return_status  => x_return_status,
5512       x_msg_count      => x_msg_count,
5513       x_msg_data       => x_msg_data,
5514       p_scs_code       => p_chrv_rec.scs_code,
5515       p_buy_or_sell    => 'S',
5516       p_rle_code       => G_RLE_CODE,
5517       p_id1            => p_customer_id1,
5518       p_id2            => p_customer_id2,
5519       p_name           => p_customer_name,
5520       p_object_code    => p_customer_code,
5521       p_ak_region      => 'OKL_LA_DEAL_CREAT',
5522       p_ak_attribute   => 'OKL_CUSTOMER_NAME'
5523       );
5524 
5525     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5526        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5527     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5528        RAISE OKC_API.G_EXCEPTION_ERROR;
5529     END IF;
5530 
5531 -- customer account validation
5532 
5533    IF(p_customer_acc_name IS NULL) THEN
5534 	 x_return_status := OKC_API.g_ret_sts_error;
5535          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
5536          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5537 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5538 				, p_token1 => 'COL_NAME'
5539 				, p_token1_value => l_ak_prompt
5540 			   );
5541 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5542     END IF;
5543 
5544     okl_la_validation_util_pvt.Validate_Rule (
5545       p_api_version    => p_api_version,
5546       p_init_msg_list  => p_init_msg_list,
5547       x_return_status  => x_return_status,
5548       x_msg_count      => x_msg_count,
5549       x_msg_data       => x_msg_data,
5550       p_chr_id         => p_chrv_rec.id,
5551       p_rgd_code       => 'LACAN',
5552       p_rdf_code       => 'CAN',
5553       p_id1            => p_customer_acc_id1,
5554       p_id2            => p_customer_acc_id2,
5555       p_name           => p_customer_acc_name,
5556       p_object_code    => p_customer_acc_code,
5557       p_ak_region      => 'OKL_CONTRACT_DTLS',
5558       p_ak_attribute   => 'OKL_KDTLS_CUSTOMER_ACCOUNT_N'
5559       );
5560 
5561     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5562        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5563     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5564        RAISE OKC_API.G_EXCEPTION_ERROR;
5565     END IF;
5566 
5567     OPEN l_chk_cust_acc_csr(p_customer_acc_name,p_customer_name);
5568     FETCH l_chk_cust_acc_csr INTO row_cnt;
5569     CLOSE l_chk_cust_acc_csr;
5570 
5571     IF row_cnt = 0 THEN
5572 	 x_return_status := OKC_API.g_ret_sts_error;
5573          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
5574          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5575 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5576 				, p_token1 => 'COL_NAME'
5577 				, p_token1_value => l_ak_prompt
5578 			   );
5579 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5580     END IF;
5581 
5582 -- product validation
5583 
5584     IF(p_product_name IS NULL) THEN
5585 	 x_return_status := OKC_API.g_ret_sts_error;
5586          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5587          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5588 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5589 				, p_token1 => 'COL_NAME'
5590 				, p_token1_value => l_ak_prompt
5591 			   );
5592 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5593     END IF;
5594 
5595     OPEN l_product_csr;
5596     FETCH l_product_csr INTO p_product_id;
5597     CLOSE l_product_csr;
5598 
5599     IF p_product_id IS NULL THEN
5600 	 x_return_status := OKC_API.g_ret_sts_error;
5601          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5602          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5603 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5604 				, p_token1 => 'COL_NAME'
5605 				, p_token1_value => l_ak_prompt
5606 			   );
5607 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5608     END IF;
5609 
5610 -- contact validation
5611 
5612    IF(p_contact_name IS NOT NULL) THEN
5613 
5614      okl_la_validation_util_pvt.Validate_Contact (
5615        p_api_version    => p_api_version,
5616        p_init_msg_list  => p_init_msg_list,
5617        x_return_status  => x_return_status,
5618        x_msg_count      => x_msg_count,
5619        x_msg_data       => x_msg_data,
5620        p_chr_id         => p_chrv_rec.id,
5621        p_rle_code       => 'LESSOR',
5622        p_cro_code       => 'SALESPERSON',
5623        p_id1            => p_contact_id1,
5624        p_id2            => p_contact_id2,
5625        p_name           => p_contact_name,
5626        p_object_code    => p_contact_code,
5627        p_ak_region      => 'OKL_CONTRACT_DTLS',
5628        p_ak_attribute   => 'OKL_KDTLS_SALES_REPRESENTATIVE'
5629        );
5630 
5631      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5632         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5633      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5634         RAISE OKC_API.G_EXCEPTION_ERROR;
5635      END IF;
5636 
5637    END IF;
5638 
5639    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,
5640 			 x_msg_data	=> x_msg_data);
5641   EXCEPTION
5642     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5643       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5644 			p_api_name  => l_api_name,
5645 			p_pkg_name  => g_pkg_name,
5646 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
5647 			x_msg_count => x_msg_count,
5648 			x_msg_data  => x_msg_data,
5649 			p_api_type  => g_api_type);
5650 
5651     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5652       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5653 			p_api_name  => l_api_name,
5654 			p_pkg_name  => g_pkg_name,
5655 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
5656 			x_msg_count => x_msg_count,
5657 			x_msg_data  => x_msg_data,
5658 			p_api_type  => g_api_type);
5659 
5660     WHEN OTHERS THEN
5661       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
5662 			p_api_name  => l_api_name,
5663 			p_pkg_name  => g_pkg_name,
5664 			p_exc_name  => 'OTHERS',
5665 			x_msg_count => x_msg_count,
5666 			x_msg_data  => x_msg_data,
5667 			p_api_type  => g_api_type);
5668   END;
5669 
5670 
5671 -- Start of comments
5672 --
5673 -- Procedure Name  : update_release_contract
5674 -- Description     : update release contract for
5675 --                   PRODUCT_CHANGE/CUSTOMER_CHANGE
5676 --
5677 -- Business Rules  :
5678 -- Parameters      :
5679 -- Version         : 1.0
5680 -- End of comments
5681   PROCEDURE update_release_contract(
5682     p_api_version                  IN NUMBER,
5683     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
5684     x_return_status                OUT NOCOPY VARCHAR2,
5685     x_msg_count                    OUT NOCOPY NUMBER,
5686     x_msg_data                     OUT NOCOPY VARCHAR2,
5687     p_chr_id                       IN  NUMBER,
5688     p_contract_number              IN  VARCHAR2,
5689     p_chr_description              IN  VARCHAR2,
5690     p_cust_id                      IN  NUMBER,
5691     p_customer_name                IN  VARCHAR2,
5692     p_customer_id1                 IN  VARCHAR2,
5693     p_customer_acc_name            IN  VARCHAR2,
5694     p_customer_acct_id1            IN  VARCHAR2,
5695     p_product_name                 IN  VARCHAR2,
5696     p_mla_id                       IN  NUMBER,
5697     p_mla_no                       IN  VARCHAR2,
5698     p_gvr_id_mla                   IN  NUMBER,
5699     p_cl_id                        IN  NUMBER,
5700     p_cl_no                        IN  VARCHAR2,
5701     p_gvr_id_cl                    IN  NUMBER,
5702     p_deal_type                    IN  VARCHAR2,
5703     p_program_no                   IN  VARCHAR2,
5704     p_program_id                   IN  NUMBER,
5705     p_program_yn                   IN  VARCHAR2
5706     ) AS
5707 
5708     l_api_name	        VARCHAR2(30) := 'update_release_contract';
5709     l_api_version	CONSTANT NUMBER	  := 1.0;
5710 
5711     l_template_yn        OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
5712     l_chr_type           OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5713     l_contract_number    OKC_K_HEADERS_B.CHR_TYPE%TYPE;
5714     l_object_code     VARCHAR2(30) DEFAULT NULL;
5715 
5716     l_ak_prompt  AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
5717     l_chr_id	NUMBER;
5718 
5719     cursor l_get_cust_id_csr(p_name VARCHAR2) is
5720     select OKX_PARTY.ID1, OKX_PARTY.ID2
5721     from OKX_PARTIES_V OKX_PARTY
5722     where OKX_PARTY.name = p_name
5723     and okx_party.id1 = p_customer_id1;
5724 
5725     l_cust_id1 OKX_PARTIES_V.ID1%type := null;
5726     l_cust_id2 OKX_PARTIES_V.ID2%type := null;
5727 
5728     cursor l_get_cust_acc_csr(p_cust_acc_desc VARCHAR2, p_name VARCHAR2) is
5729     select ca.id1
5730     from okx_customer_accounts_v ca,
5731          okx_parties_v p
5732     where p.id1 = ca.party_id
5733     and ca.description = p_cust_acc_desc
5734     and p.name = p_name;
5735 
5736     l_cust_acct_id okx_customer_accounts_v.id1%type := null;
5737 
5738     CURSOR l_product_csr IS
5739     SELECT id
5740     FROM OKL_PRODUCTS_V
5741     WHERE name = p_product_name;
5742 
5743     l_product_id OKL_PRODUCTS_V.id%type := null;
5744 
5745     row_cnt  NUMBER;
5746 
5747     Cursor l_rbr_csr IS
5748     SELECT rbr_code
5749     FROM okl_trx_contracts
5750     WHERE khr_id_new = p_chr_id
5751 --rkuttiya added for 12.1.1 multigaap project
5752     AND representation_type = 'PRIMARY';
5753 --
5754 
5755     l_rbr_code okl_trx_contracts.rbr_code%type := null;
5756 
5757     cursor l_mla_csr is
5758     select id
5759     from OKL_k_headers_full_V
5760     where contract_number = p_mla_no
5761     and   scs_code = 'MASTER_LEASE'
5762     and STS_CODE = 'ACTIVE'
5763     and TEMPLATE_YN = 'N'
5764     and BUY_OR_SELL = 'S';
5765 
5766     l_mla_id number;
5767 
5768     cursor l_credit_line_csr is
5769     select cl.id
5770     from okl_k_hdr_crdtln_uv cl
5771     where  cl.contract_number = p_cl_no
5772     and exists ( select 1
5773                  from okc_k_headers_b chr
5774                  where chr.currency_code = cl.currency_code
5775                  and cl.end_date >= chr.start_date
5776                  and cl.cust_name  = p_customer_name
5777                  and cl.cust_acc_number = p_customer_acc_name);
5778 
5779     l_cl_id NUMBER;
5780 
5781     cursor l_program_csr is
5782     select id
5783     from OKL_k_headers_full_V prg_hdr
5784     where contract_number = p_program_no
5785     and scs_code = 'PROGRAM'
5786     and nvl(TEMPLATE_YN, 'N') = 'N'
5787     and sts_code = 'ACTIVE'
5788     and exists (select 1
5789                 from okc_k_headers_b
5790                 where id = p_chr_id
5791                 and authoring_org_id = prg_hdr.authoring_org_id);
5792 
5793     l_program_id number;
5794 
5795     old_khr_id  NUMBER;
5796 
5797     CURSOR c_vp_exsts_csr IS
5798     SELECT khr_id
5799     FROM okl_k_headers_full_v
5800     WHERE id = p_chr_id;
5801 
5802     CURSOR c_context_csr IS
5803     SELECT authoring_org_id, inv_organization_id
5804     FROM okl_k_headers_full_V
5805     WHERE id = p_chr_id;
5806 
5807     l_auth_org_id okc_k_headers_b.authoring_org_id%type;
5808     l_inv_org_id okc_k_headers_b.inv_organization_id%type;
5809 
5810     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
5811     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
5812 
5813     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
5814     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
5815 
5816     lp_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
5817     lx_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
5818 
5819     lp_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
5820     lp_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
5821     lx_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
5822     lx_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
5823 
5824     lp_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5825     lx_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5826 
5827     lp_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5828     lx_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
5829 
5830     X_NO_DATA_FOUND BOOLEAN := TRUE;
5831 
5832     --Bug# 4558486
5833     lp_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
5834     lx_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
5835 
5836   BEGIN
5837 
5838   IF okl_context.get_okc_org_id  IS NULL THEN
5839 	l_chr_id := p_chr_id;
5840 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
5841   END IF;
5842 
5843     x_return_status := OKC_API.START_ACTIVITY(
5844 			p_api_name      => l_api_name,
5845 			p_pkg_name      => g_pkg_name,
5846 			p_init_msg_list => p_init_msg_list,
5847 			l_api_version   => l_api_version,
5848 			p_api_version   => p_api_version,
5849 			p_api_type      => g_api_type,
5850 			x_return_status => x_return_status);
5851 
5852     -- check if activity started successfully
5853     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5854        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5855     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5856        RAISE OKC_API.G_EXCEPTION_ERROR;
5857     END IF;
5858 
5859     l_rbr_code := null;
5860     open l_rbr_csr;
5861     fetch l_rbr_csr into l_rbr_code;
5862     close l_rbr_csr;
5863 
5864    If(l_rbr_code is not null and l_rbr_code = 'PRODUCT_CHANGE') Then
5865 
5866     -- product validation
5867     IF(p_product_name IS NULL) THEN
5868 	 x_return_status := OKC_API.g_ret_sts_error;
5869          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5870          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5871 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5872 				, p_token1 => 'COL_NAME'
5873 				, p_token1_value => l_ak_prompt
5874 			   );
5875 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5876     END IF;
5877 
5878     l_product_id := null;
5879     OPEN l_product_csr;
5880     FETCH l_product_csr INTO l_product_id;
5881     CLOSE l_product_csr;
5882 
5883     IF l_product_id IS NULL THEN
5884 	 x_return_status := OKC_API.g_ret_sts_error;
5885          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
5886          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5887 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5888 				, p_token1 => 'COL_NAME'
5889 				, p_token1_value => l_ak_prompt
5890 			   );
5891 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5892     END IF;
5893 
5894   END IF;
5895 
5896   If(l_rbr_code is not null and l_rbr_code = 'CUSTOMER_CHANGE') Then
5897 
5898      -- customer validation
5899      IF(p_customer_name IS NULL) THEN
5900       x_return_status := OKC_API.g_ret_sts_error;
5901       l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
5902       OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5903 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5904 				, p_token1 => 'COL_NAME'
5905 				, p_token1_value => l_ak_prompt
5906 			   );
5907       RAISE OKC_API.G_EXCEPTION_ERROR;
5908      END IF;
5909 
5910     -- customer account validation
5911     IF(p_customer_acc_name IS NULL) THEN
5912 	 x_return_status := OKC_API.g_ret_sts_error;
5913          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
5914          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5915 				, p_msg_name => 'OKL_REQUIRED_VALUE'
5916 				, p_token1 => 'COL_NAME'
5917 				, p_token1_value => l_ak_prompt
5918 			   );
5919 	 RAISE OKC_API.G_EXCEPTION_ERROR;
5920     END IF;
5921 
5922     l_cust_id1 := null;
5923     l_cust_id2 := null;
5924     Open l_get_cust_id_csr(p_customer_name);
5925     Fetch l_get_cust_id_csr into l_cust_id1,l_cust_id2;
5926     Close l_get_cust_id_csr;
5927 
5928     If l_cust_id1 is null Then
5929      x_return_status := OKC_API.g_ret_sts_error;
5930      l_ak_prompt := GET_AK_PROMPT('OKL_LA_DEAL_CREAT', 'OKL_CUSTOMER_NAME');
5931      OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5932                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5933                 , p_token1 => 'COL_NAME'
5934                 , p_token1_value => l_ak_prompt
5935                );
5936      raise OKC_API.G_EXCEPTION_ERROR;
5937     End If;
5938 
5939     l_cust_acct_id := null;
5940     Open l_get_cust_acc_csr(p_customer_acc_name, p_customer_name);
5941     Fetch l_get_cust_acc_csr into l_cust_acct_id;
5942     Close l_get_cust_acc_csr;
5943 
5944     If l_cust_acct_id is null Then
5945      x_return_status := OKC_API.g_ret_sts_error;
5946          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CUSTOMER_ACCOUNT_N');
5947          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
5948                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5949                 , p_token1 => 'COL_NAME'
5950                 , p_token1_value => l_ak_prompt
5951                );
5952      raise OKC_API.G_EXCEPTION_ERROR;
5953     End If;
5954 
5955     -- mla validation
5956     If(p_mla_no is not null) Then
5957 
5958      l_mla_id := null;
5959      open l_mla_csr;
5960      fetch l_mla_csr into l_mla_id;
5961      close l_mla_csr;
5962 
5963      If l_mla_id is null Then
5964          x_return_status := OKC_API.g_ret_sts_error;
5965          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_MASTER_LEASE_NUMBER');
5966          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5967                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5968                 , p_token1 => 'COL_NAME'
5969                 , p_token1_value => l_ak_prompt
5970                );
5971          raise OKC_API.G_EXCEPTION_ERROR;
5972      End If;
5973 
5974     End If;
5975 
5976    End If; -- end of customer change if
5977 
5978    If(l_rbr_code is not null and (l_rbr_code = 'CUSTOMER_CHANGE'  or  l_rbr_code = 'PRODUCT_CHANGE')) Then
5979 
5980     -- creditline validation
5981     If(p_cl_no is not null) Then
5982 
5983       l_cl_id := null;
5984 
5985       open l_credit_line_csr;
5986       fetch l_credit_line_csr into l_cl_id;
5987       close l_credit_line_csr;
5988 
5989       If l_cl_id is null Then
5990          x_return_status := OKC_API.g_ret_sts_error;
5991          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_CREDIT_CONTRACT');
5992          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
5993                                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
5994                                 , p_token1 => 'COL_NAME'
5995                                 , p_token1_value => l_ak_prompt
5996 
5997                            );
5998          raise OKC_API.G_EXCEPTION_ERROR;
5999       End If;
6000 
6001     End If;
6002 
6003     -- validation for creditline contract
6004     okl_la_validation_util_pvt.validate_creditline(
6005        p_api_version    => p_api_version,
6006        p_init_msg_list  => p_init_msg_list,
6007        x_return_status  => x_return_status,
6008        x_msg_count      => x_msg_count,
6009        x_msg_data       => x_msg_data,
6010        p_chr_id         => p_chr_id,
6011        p_deal_type      => p_deal_type,
6012        p_mla_no         => p_mla_no,
6013        p_cl_no          => p_cl_no
6014        );
6015 
6016      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6017         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6018      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6019         RAISE OKC_API.G_EXCEPTION_ERROR;
6020      END IF;
6021 
6022     -- program validation
6023     If(p_program_no is not null) Then
6024 
6025       l_program_id := null;
6026       open l_program_csr;
6027       fetch l_program_csr into l_program_id;
6028       close l_program_csr;
6029 
6030       If l_program_id is null Then
6031 
6032          x_return_status := OKC_API.g_ret_sts_error;
6033          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PROGRAM');
6034          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
6035                 , p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6036                 , p_token1 => 'COL_NAME'
6037                 , p_token1_value => l_ak_prompt
6038                );
6039          raise OKC_API.G_EXCEPTION_ERROR;
6040 
6041       End If;
6042 
6043     End If;
6044 
6045 End If;
6046 
6047 
6048   If(l_rbr_code is not null and (l_rbr_code = 'CUSTOMER_CHANGE'  or  l_rbr_code = 'PRODUCT_CHANGE')) Then
6049 
6050     -- product changes
6051     lp_pdtv_rec.id := l_product_id;
6052     OKL_SETUPPRODUCTS_PUB.Getpdt_parameters
6053           (p_api_version   => p_api_version,
6054            p_init_msg_list => p_init_msg_list,
6055            x_return_status => x_return_status,
6056       	   x_no_data_found => x_no_data_found,
6057            x_msg_count     => x_msg_count,
6058            x_msg_data      => x_msg_data,
6059       	   p_pdtv_rec      => lp_pdtv_rec,
6060       	   p_product_date  => NULL,
6061       	   p_pdt_parameter_rec => lx_pdt_param_rec);
6062 
6063     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6064          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6065     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6066          RAISE OKC_API.G_EXCEPTION_ERROR;
6067     END IF;
6068 
6069     lp_chrv_rec.id := p_chr_id;
6070     lp_chrv_rec.contract_number := p_contract_number;
6071     lp_chrv_rec.short_description := p_chr_description;
6072     lp_chrv_rec.description :=  p_chr_description;
6073 
6074     If(l_rbr_code is not null and l_rbr_code = 'CUSTOMER_CHANGE') Then
6075 
6076      lp_chrv_rec.cust_acct_id := l_cust_acct_id;
6077 
6078     End IF;
6079 
6080     If(l_rbr_code is not null and l_rbr_code = 'PRODUCT_CHANGE') Then
6081 
6082      lp_khrv_rec.deal_type :=  lx_pdt_param_rec.Deal_Type;
6083 
6084     End IF;
6085 
6086     lp_khrv_rec.id := p_chr_id;
6087     lp_khrv_rec.khr_id := l_program_id;
6088 
6089     OKL_CONTRACT_PUB.update_contract_header(
6090         p_api_version    	=> p_api_version,
6091         p_init_msg_list  	=> p_init_msg_list,
6092         x_return_status  	=> x_return_status,
6093         x_msg_count      	=> x_msg_count,
6094         x_msg_data       	=> x_msg_data,
6095         p_restricted_update     => 'F',
6096         p_chrv_rec       	=> lp_chrv_rec,
6097         p_khrv_rec       	=> lp_khrv_rec,
6098         x_chrv_rec       	=> lx_chrv_rec,
6099         x_khrv_rec       	=> lx_khrv_rec);
6100 
6101       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6102          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6103       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6104          RAISE OKC_API.G_EXCEPTION_ERROR;
6105       END IF;
6106 
6107   END IF;
6108 
6109   If(l_rbr_code is not null and l_rbr_code = 'CUSTOMER_CHANGE' ) Then
6110 
6111         lp_lessee_cplv_rec.id := p_cust_id;
6112         lp_lessee_cplv_rec.dnz_chr_id := p_chr_id;
6113         lp_lessee_cplv_rec.chr_id := p_chr_id;
6114         lp_lessee_cplv_rec.object1_id1 := l_cust_id1;
6115         lp_lessee_cplv_rec.object1_id2 := l_cust_id2;
6116         lp_lessee_cplv_rec.rle_code := 'LESSEE';
6117         lp_lessee_cplv_rec.jtot_object1_code := 'OKX_PARTY';
6118 
6119       --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
6120       --              to update records in tables
6121       --              okc_k_party_roles_b and okl_k_party_roles
6122       /*
6123       OKL_OKC_MIGRATION_PVT.update_k_party_role(
6124              p_api_version    => p_api_version,
6125             p_init_msg_list  => p_init_msg_list,
6126             x_return_status  => x_return_status,
6127             x_msg_count      => x_msg_count,
6128             x_msg_data       => x_msg_data,
6129             p_cplv_rec       => lp_lessee_cplv_rec,
6130             x_cplv_rec       => lx_lessee_cplv_rec);
6131       */
6132 
6133       lp_kplv_rec.id := lp_lessee_cplv_rec.id;
6134       okl_k_party_roles_pvt.update_k_party_role(
6135         p_api_version      => p_api_version,
6136         p_init_msg_list    => p_init_msg_list,
6137         x_return_status    => x_return_status,
6138         x_msg_count        => x_msg_count,
6139         x_msg_data         => x_msg_data,
6140         p_cplv_rec         => lp_lessee_cplv_rec,
6141         x_cplv_rec         => lx_lessee_cplv_rec,
6142         p_kplv_rec         => lp_kplv_rec,
6143         x_kplv_rec         => lx_kplv_rec);
6144 
6145       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6146          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6147       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6148          RAISE OKC_API.G_EXCEPTION_ERROR;
6149       END IF;
6150 
6151    -- mla
6152    IF (p_gvr_id_mla IS NULL AND p_mla_no IS NOT NULL ) THEN
6153 
6154     lp_mla_gvev_rec.id := NULL;
6155     lp_mla_gvev_rec.dnz_chr_id := p_chr_id;
6156     lp_mla_gvev_rec.chr_id := p_chr_id;
6157     lp_mla_gvev_rec.chr_id_referred := l_mla_id;
6158     lp_mla_gvev_rec.copied_only_yn := 'N';
6159 
6160     OKL_OKC_MIGRATION_PVT.create_governance(
6161         p_api_version    => p_api_version,
6162         p_init_msg_list  => p_init_msg_list,
6163         x_return_status  => x_return_status,
6164         x_msg_count      => x_msg_count,
6165         x_msg_data       => x_msg_data,
6166         p_gvev_rec       => lp_mla_gvev_rec,
6167         x_gvev_rec       => lx_mla_gvev_rec);
6168 
6169       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6170          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6171       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6172          RAISE OKC_API.G_EXCEPTION_ERROR;
6173       END IF;
6174 
6175    ELSIF (p_gvr_id_mla IS NOT NULL AND p_mla_no IS NOT NULL ) THEN
6176 
6177     lp_mla_gvev_rec.id := p_gvr_id_mla;
6178     lp_mla_gvev_rec.dnz_chr_id := p_chr_id;
6179     lp_mla_gvev_rec.chr_id := p_chr_id;
6180     lp_mla_gvev_rec.chr_id_referred := l_mla_id;
6181     lp_mla_gvev_rec.copied_only_yn := 'N';
6182 
6183     OKL_OKC_MIGRATION_PVT.update_governance(
6184         p_api_version    => p_api_version,
6185         p_init_msg_list  => p_init_msg_list,
6186         x_return_status  => x_return_status,
6187         x_msg_count      => x_msg_count,
6188         x_msg_data       => x_msg_data,
6189         p_gvev_rec       => lp_mla_gvev_rec,
6190         x_gvev_rec       => lx_mla_gvev_rec);
6191 
6192       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6193          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6194       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6195          RAISE OKC_API.G_EXCEPTION_ERROR;
6196       END IF;
6197 
6198 
6199    ELSIF (p_gvr_id_mla IS NOT NULL AND p_mla_no IS NULL ) THEN
6200 
6201      lp_mla_gvev_rec.id := p_gvr_id_mla;
6202 
6203      OKL_OKC_MIGRATION_PVT.delete_governance(
6204         p_api_version    => p_api_version,
6205         p_init_msg_list  => p_init_msg_list,
6206         x_return_status  => x_return_status,
6207         x_msg_count      => x_msg_count,
6208         x_msg_data       => x_msg_data,
6209         p_gvev_rec       => lp_mla_gvev_rec);
6210 
6211       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6212          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6213       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6214          RAISE OKC_API.G_EXCEPTION_ERROR;
6215       END IF;
6216 
6217     END IF;
6218 
6219   END IF;
6220 
6221   If(l_rbr_code is not null and (l_rbr_code = 'CUSTOMER_CHANGE'  or  l_rbr_code = 'PRODUCT_CHANGE')) Then
6222 
6223    -- creditline
6224    IF (p_gvr_id_cl IS NULL AND p_cl_no IS NOT NULL ) THEN
6225 
6226     lp_cl_gvev_rec.id := NULL;
6227     lp_cl_gvev_rec.dnz_chr_id := p_chr_id;
6228     lp_cl_gvev_rec.chr_id := p_chr_id;
6229     lp_cl_gvev_rec.chr_id_referred := l_cl_id;
6230     lp_cl_gvev_rec.copied_only_yn := 'N';
6231 
6232     OKL_OKC_MIGRATION_PVT.create_governance(
6233         p_api_version    => p_api_version,
6234         p_init_msg_list  => p_init_msg_list,
6235         x_return_status  => x_return_status,
6236         x_msg_count      => x_msg_count,
6237         x_msg_data       => x_msg_data,
6238         p_gvev_rec       => lp_cl_gvev_rec,
6239         x_gvev_rec       => lx_cl_gvev_rec);
6240 
6241       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6242          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6243       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6244          RAISE OKC_API.G_EXCEPTION_ERROR;
6245       END IF;
6246 
6247    ELSIF (p_gvr_id_cl IS NOT NULL AND p_cl_no IS NOT NULL ) THEN
6248 
6249     lp_cl_gvev_rec.id := p_gvr_id_cl;
6250     lp_cl_gvev_rec.dnz_chr_id := p_chr_id;
6251     lp_cl_gvev_rec.chr_id := p_chr_id;
6252     lp_cl_gvev_rec.chr_id_referred := l_cl_id;
6253     lp_cl_gvev_rec.copied_only_yn := 'N';
6254 
6255     OKL_OKC_MIGRATION_PVT.update_governance(
6256         p_api_version    => p_api_version,
6257         p_init_msg_list  => p_init_msg_list,
6258         x_return_status  => x_return_status,
6259         x_msg_count      => x_msg_count,
6260         x_msg_data       => x_msg_data,
6261         p_gvev_rec       => lp_cl_gvev_rec,
6262         x_gvev_rec       => lx_cl_gvev_rec);
6263 
6264       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6265          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6266       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6267          RAISE OKC_API.G_EXCEPTION_ERROR;
6268       END IF;
6269 
6270    ELSIF (p_gvr_id_cl IS NOT NULL AND p_cl_no IS NULL ) THEN
6271 
6272     lp_cl_gvev_rec.id := p_gvr_id_cl;
6273 
6274     OKL_OKC_MIGRATION_PVT.delete_governance(
6275         p_api_version    => p_api_version,
6276         p_init_msg_list  => p_init_msg_list,
6277         x_return_status  => x_return_status,
6278         x_msg_count      => x_msg_count,
6279         x_msg_data       => x_msg_data,
6280         p_gvev_rec       => lp_cl_gvev_rec);
6281 
6282       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6283          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6284       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6285          RAISE OKC_API.G_EXCEPTION_ERROR;
6286       END IF;
6287 
6288    END IF;
6289 
6290     IF (p_program_no IS NULL) THEN
6291      l_program_id := null;
6292     END IF;
6293 
6294     old_khr_id := NULL;
6295     OPEN c_vp_exsts_csr;
6296     FETCH c_vp_exsts_csr INTO old_khr_id;
6297     CLOSE c_vp_exsts_csr;
6298 
6299     l_auth_org_id := null;
6300     l_inv_org_id := null;
6301 
6302     OPEN c_context_csr;
6303     FETCH c_context_csr INTO l_auth_org_id, l_inv_org_id;
6304     CLOSE c_context_csr;
6305 
6306     IF (p_program_no IS NOT NULL OR old_khr_id IS NOT NULL) THEN
6307 
6308        copy_rules
6309        (
6310         p_api_version       => p_api_version,
6311         p_init_msg_list     => p_init_msg_list,
6312         x_return_status     => x_return_status,
6313         x_msg_count         => x_msg_count,
6314         x_msg_data          => x_msg_data,
6315         p_old_khr_id        => old_khr_id,
6316         p_prog_override_yn  => p_program_yn, -- program flag yn
6317         p_source_id         => l_program_id,
6318         p_dest_id           => p_chr_id,
6319         p_org_id            => l_auth_org_id,
6320         p_organization_id   => l_inv_org_id
6321        );
6322 
6323       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6324          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6325       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6326          RAISE OKC_API.G_EXCEPTION_ERROR;
6327       END IF;
6328 
6329     END IF;
6330 
6331   END IF;
6332 
6333    If(l_rbr_code is not null and l_rbr_code = 'PRODUCT_CHANGE') Then
6334 
6335     -- product validation
6336     IF(p_product_name IS NULL) THEN
6337 	 x_return_status := OKC_API.g_ret_sts_error;
6338          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
6339          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
6340 				, p_msg_name => 'OKL_REQUIRED_VALUE'
6341 				, p_token1 => 'COL_NAME'
6342 				, p_token1_value => l_ak_prompt
6343 			   );
6344 	 RAISE OKC_API.G_EXCEPTION_ERROR;
6345     END IF;
6346 
6347     l_product_id := null;
6348     OPEN l_product_csr;
6349     FETCH l_product_csr INTO l_product_id;
6350     CLOSE l_product_csr;
6351 
6352     IF l_product_id IS NULL THEN
6353 	 x_return_status := OKC_API.g_ret_sts_error;
6354          l_ak_prompt := GET_AK_PROMPT('OKL_CONTRACT_DTLS', 'OKL_KDTLS_PRODUCT');
6355          OKC_API.SET_MESSAGE(     p_app_name => g_app_name
6356 				, p_msg_name => 'OKL_LLA_INVALID_LOV_VALUE'
6357 				, p_token1 => 'COL_NAME'
6358 				, p_token1_value => l_ak_prompt
6359 			   );
6360 	 RAISE OKC_API.G_EXCEPTION_ERROR;
6361     END IF;
6362 
6363     -- product changes
6364     lp_pdtv_rec.id := l_product_id;
6365     OKL_SETUPPRODUCTS_PUB.Getpdt_parameters
6366           (p_api_version   => p_api_version,
6367            p_init_msg_list => p_init_msg_list,
6368            x_return_status => x_return_status,
6369       	   x_no_data_found => x_no_data_found,
6370            x_msg_count     => x_msg_count,
6371            x_msg_data      => x_msg_data,
6372       	   p_pdtv_rec      => lp_pdtv_rec,
6373       	   p_product_date  => NULL,
6374       	   p_pdt_parameter_rec => lx_pdt_param_rec);
6375 
6376     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6377          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6378     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6379          RAISE OKC_API.G_EXCEPTION_ERROR;
6380     END IF;
6381 
6382     lp_chrv_rec.id := p_chr_id;
6383     lp_khrv_rec.id := p_chr_id;
6384     lp_khrv_rec.deal_type :=  lx_pdt_param_rec.Deal_Type;
6385     lp_khrv_rec.pdt_id := l_product_id;
6386 
6387     OKL_CONTRACT_PUB.update_contract_header(
6388         p_api_version    	=> p_api_version,
6389         p_init_msg_list  	=> p_init_msg_list,
6390         x_return_status  	=> x_return_status,
6391         x_msg_count      	=> x_msg_count,
6392         x_msg_data       	=> x_msg_data,
6393         p_restricted_update     => 'F',
6394         p_chrv_rec       	=> lp_chrv_rec,
6395         p_khrv_rec       	=> lp_khrv_rec,
6396         x_chrv_rec       	=> lx_chrv_rec,
6397         x_khrv_rec       	=> lx_khrv_rec);
6398 
6399       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6400          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6401       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6402          RAISE OKC_API.G_EXCEPTION_ERROR;
6403       END IF;
6404 
6405    End if; -- end of rbr code block
6406 
6407    OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count, x_msg_data	=> x_msg_data);
6408 
6409   EXCEPTION
6410     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6411       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6412 			p_api_name  => l_api_name,
6413 			p_pkg_name  => g_pkg_name,
6414 			p_exc_name  => 'OKC_API.G_RET_STS_ERROR',
6415 			x_msg_count => x_msg_count,
6416 			x_msg_data  => x_msg_data,
6417 			p_api_type  => g_api_type);
6418 
6419     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6420       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6421 			p_api_name  => l_api_name,
6422 			p_pkg_name  => g_pkg_name,
6423 			p_exc_name  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
6424 			x_msg_count => x_msg_count,
6425 			x_msg_data  => x_msg_data,
6426 			p_api_type  => g_api_type);
6427 
6428     WHEN OTHERS THEN
6429       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
6430 			p_api_name  => l_api_name,
6431 			p_pkg_name  => g_pkg_name,
6432 			p_exc_name  => 'OTHERS',
6433 			x_msg_count => x_msg_count,
6434 			x_msg_data  => x_msg_data,
6435 			p_api_type  => g_api_type);
6436   END;
6437 
6438 
6439   PROCEDURE update_deal(
6440       p_api_version                  IN NUMBER,
6441       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
6442       x_return_status                OUT NOCOPY VARCHAR2,
6443       x_msg_count                    OUT NOCOPY NUMBER,
6444       x_msg_data                     OUT NOCOPY VARCHAR2,
6445       p_durv_rec                     IN  deal_rec_type,
6446       x_durv_rec                     OUT NOCOPY deal_rec_type
6447     ) AS
6448 
6449     l_api_name	       VARCHAR2(30) := 'update_deal';
6450     l_api_version      CONSTANT NUMBER	  := 1.0;
6451 
6452     l_template_yn      OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
6453     l_chr_type         OKC_K_HEADERS_B.CHR_TYPE%TYPE;
6454     l_contract_number  OKC_K_HEADERS_B.CHR_TYPE%TYPE;
6455     l_object_code      VARCHAR2(30) DEFAULT NULL;
6456     l_temp_yn          OKC_K_HEADERS_B.TEMPLATE_YN%TYPE := p_durv_rec.chr_template_yn;
6457 
6458     l_ak_prompt        AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
6459     l_chr_id	       NUMBER;
6460     row_cnt  NUMBER;
6461     l_rgp_id NUMBER := NULL;
6462     l_rul_id NUMBER := NULL;
6463 
6464     CURSOR l_qcl_csr IS
6465     SELECT qcl.id
6466     FROM  OKC_QA_CHECK_LISTS_TL qcl,
6467           OKC_QA_CHECK_LISTS_B qclv
6468     WHERE qclv.Id = qcl.id
6469     AND UPPER(qcl.name) = 'OKL LA QA CHECK LIST'
6470     AND qcl.LANGUAGE = USERENV('LANG');
6471 
6472 	-- START: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
6473 	/*
6474     CURSOR l_end_date_csr IS
6475     SELECT ADD_MONTHS(p_durv_rec.chr_start_date,p_durv_rec.khr_term_duration)-1
6476 	FROM dual;
6477 	*/
6478 	-- END: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
6479 
6480     CURSOR l_vers_version_csr IS
6481     SELECT vers.major_version||'.'||vers.minor_version
6482     FROM okc_k_vers_numbers_v vers
6483     WHERE vers.chr_id = p_durv_rec.chr_id;
6484 
6485     lp_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
6486     lx_chrv_rec OKL_OKC_MIGRATION_PVT.chrv_rec_type;
6487 
6488     lp_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
6489     lx_khrv_rec OKL_CONTRACT_PUB.khrv_rec_type;
6490 
6491     lp_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6492     lx_lessee_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6493 
6494     lp_lessor_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6495     lx_lessor_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
6496     lp_ctcv_rec OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
6497     lx_ctcv_rec OKL_OKC_MIGRATION_PVT.ctcv_rec_type;
6498 
6499     lp_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6500     lx_mla_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6501 
6502     lp_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6503     lx_cl_gvev_rec OKL_OKC_MIGRATION_PVT.gvev_rec_type;
6504 
6505     lp_larles_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6506     lx_larles_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6507     lp_larles_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6508     lx_larles_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6509 
6510     lp_LAREBL_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6511     lx_LAREBL_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6512     lp_LAREBL_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6513     lx_LAREBL_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6514 
6515     lp_LATOWN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6516     lx_LATOWN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6517     lp_LATOWN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6518     lx_LATOWN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6519 
6520     lp_LANNTF_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6521     lx_LANNTF_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6522     lp_LANNTF_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6523     lx_LANNTF_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6524 
6525     lp_LACPLN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6526     lx_LACPLN_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6527     lp_LACPLN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6528     lx_LACPLN_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6529 
6530     lp_LAPACT_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6531     lx_LAPACT_rgpv_rec OKL_OKC_MIGRATION_PVT.rgpv_rec_type;
6532     lp_LAPACT_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6533     lx_LAPACT_rulv_rec Okl_Rule_Pub.rulv_rec_type;
6534 
6535     lp_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
6536     lp_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
6537     lx_pdtv_rec OKL_SETUPPRODUCTS_PUB.pdtv_rec_type;
6538     lx_pdt_param_rec OKL_SETUPPRODUCTS_PUB.pdt_parameters_rec_type;
6539 
6540     lp_clev_rec    okl_okc_migration_pvt.clev_rec_type;
6541     lp_klev_rec    okl_kle_pvt.klev_rec_type;
6542     lx_clev_rec    okl_okc_migration_pvt.clev_rec_type;
6543     lx_klev_rec    okl_kle_pvt.klev_rec_type;
6544 
6545     --Bug# 4558486
6546     lp_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
6547     lx_kplv_rec      okl_k_party_roles_pvt.kplv_rec_type;
6548 
6549     X_NO_DATA_FOUND BOOLEAN := TRUE;
6550 
6551     old_khr_id  NUMBER;
6552 
6553     CURSOR c_vp_exsts_csr IS
6554       SELECT khr_id
6555       FROM okl_k_headers_full_v
6556       WHERE id = p_durv_rec.chr_id;
6557 
6558     l_fin_ast VARCHAR2(1) := 'N';
6559     l_lrls_yn VARCHAR2(1) := 'X';
6560 
6561     CURSOR chk_fin_ast_csr IS
6562     SELECT 'Y'
6563     FROM okc_k_headers_b CHR
6564     WHERE EXISTS (SELECT 1
6565               FROM okc_line_styles_b lse,
6566 	               okc_k_lines_b cle,
6567 	               okl_k_lines kle
6568               WHERE cle.dnz_chr_id = CHR.id
6569               AND cle.lse_id = lse.id
6570               AND cle.id = kle.id
6571               -- START: cklee/mvasudev,10/14/2005,bug#4300891 - (okl.g Bug#4307723)
6572               AND cle.sts_code <> 'ABANDONED'
6573               -- END: cklee/mvasudev,10/14/2005,bug#4300891 - (okl.g Bug#4307723)
6574               AND lse.lty_code = 'FREE_FORM1')
6575     AND CHR.id =  p_durv_rec.chr_id;
6576 
6577 
6578     CURSOR get_larles_csr IS
6579     SELECT rul.rule_information1
6580     FROM okc_rule_groups_b rgp,
6581          okc_rules_b rul
6582     WHERE rgp.id = rul.rgp_id
6583     AND rgp.rgd_code = 'LARLES'
6584     AND rul.rule_information_category = 'LARLES'
6585     AND rgp.dnz_chr_id = p_durv_rec.chr_id
6586     AND rgp.chr_id = p_durv_rec.chr_id
6587     AND rul.dnz_chr_id = p_durv_rec.chr_id;
6588 
6589     l_fin_ast_id NUMBER  := NULL;
6590     l_lacpln_yn VARCHAR2(1) := 'X';
6591 
6592     CURSOR get_fin_ast_csr IS
6593     SELECT cle.id
6594     FROM okc_line_styles_b lse,
6595 	 okc_k_lines_b cle,
6596 	 okl_k_lines kle
6597     WHERE cle.dnz_chr_id = p_durv_rec.chr_id
6598     AND cle.lse_id = lse.id
6599     AND cle.id = kle.id
6600     AND lse.lty_code = 'FREE_FORM1';
6601 
6602     CURSOR get_lacpln_csr IS
6603     SELECT rul.rule_information1
6604     FROM okc_rules_b rul,
6605          okc_rule_groups_b rgp
6606     WHERE rgp.id = rul.rgp_id
6607     AND rul.rule_information_category = 'LACPLN'
6608     AND rgp.RGD_CODE = 'LACPLN'
6609     AND rul.dnz_chr_id = rgp.dnz_chr_id
6610     AND rgp.dnz_chr_id = p_durv_rec.chr_id
6611     AND rgp.chr_id = p_durv_rec.chr_id;
6612 
6613     CURSOR is_re_lease_csr IS
6614     select chr.orig_system_source_code
6615     from okc_k_headers_b chr
6616     where chr.id = p_durv_rec.chr_id;
6617 
6618     l_orig_sys_src_code okc_k_headers_b.orig_system_source_code%type := null;
6619 
6620     --Bug# 4619575
6621     CURSOR l_ptmpl_csr (p_chr_id IN NUMBER) IS
6622     SELECT chrb.template_yn,
6623            khr.template_type_code
6624     FROM   okc_k_headers_b chrb,
6625            okl_k_headers khr
6626     WHERE   chrb.id = khr.id
6627     AND chrb.id = p_chr_id;
6628 
6629     CURSOR l_pqcl_csr IS
6630     SELECT qcl.id
6631     FROM  OKC_QA_CHECK_LISTS_TL qcl,
6632           OKC_QA_CHECK_LISTS_B qclv
6633     WHERE qclv.Id = qcl.id
6634     AND UPPER(qcl.name) = 'OKL KT for PA QA Checklist'
6635     AND qcl.LANGUAGE = 'US';
6636 
6637     CURSOR l_laqcl_csr IS
6638     SELECT qcl.id
6639     FROM  OKC_QA_CHECK_LISTS_TL qcl,
6640           OKC_QA_CHECK_LISTS_B qclv
6641     WHERE qclv.Id = qcl.id
6642     AND UPPER(qcl.name) = 'OKL KT FOR LA QA CHECKLIST'
6643     AND qcl.LANGUAGE = 'US';
6644 
6645     l_template_type_code okl_k_headers.template_type_code%type;
6646     l_ptemplate_yn okc_k_headers_b.template_yn%type;
6647 
6648     /*
6649     -- mvasudev, 08/18/2004
6650     -- Added PROCEDURE to enable Business Event
6651     */
6652 	PROCEDURE raise_business_event(
6653     	p_chr_id IN NUMBER
6654 	   ,x_return_status OUT NOCOPY VARCHAR2
6655     )
6656 	IS
6657 	  l_check VARCHAR2(1);
6658       l_parameter_list           wf_parameter_list_t;
6659 	BEGIN
6660 
6661     x_return_status := Okc_Api.G_RET_STS_SUCCESS;
6662 	  -- Raise the event if it is a new Contract
6663 	  l_check := Okl_Lla_Util_Pvt.check_new_contract(p_chr_id);
6664       IF (l_check= OKL_API.G_TRUE) THEN
6665   		 wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID,p_chr_id,l_parameter_list);
6666 
6667          OKL_WF_PVT.raise_event (p_api_version    => p_api_version,
6668                                  p_init_msg_list  => p_init_msg_list,
6669 								 x_return_status  => x_return_status,
6670 								 x_msg_count      => x_msg_count,
6671 								 x_msg_data       => x_msg_data,
6672 								 p_event_name     => G_WF_EVT_KHR_UPDATED,
6673 								 p_parameters     => l_parameter_list);
6674 
6675 	  END IF;
6676 
6677      EXCEPTION
6678      WHEN OTHERS THEN
6679        x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
6680        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6681      END raise_business_event;
6682 
6683     /*
6684     -- mvasudev, 08/17/2004
6685     -- END, PROCEDURE to enable Business Event
6686     */
6687 
6688 
6689   BEGIN
6690 
6691   IF okl_context.get_okc_org_id  IS NULL THEN
6692 	l_chr_id := p_durv_rec.chr_id;
6693 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
6694   END IF;
6695 
6696     x_return_status := OKC_API.START_ACTIVITY(
6697 			p_api_name      => l_api_name,
6698 			p_pkg_name      => g_pkg_name,
6699 			p_init_msg_list => p_init_msg_list,
6700 			l_api_version   => l_api_version,
6701 			p_api_version   => p_api_version,
6702 			p_api_type      => g_api_type,
6703 			x_return_status => x_return_status);
6704 
6705     -- check if activity started successfully
6706     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6707        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6708     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6709        RAISE OKC_API.G_EXCEPTION_ERROR;
6710     END IF;
6711 
6712     l_orig_sys_src_code := null;
6713     Open is_re_lease_csr;
6714     Fetch is_re_lease_csr into l_orig_sys_src_code;
6715     Close is_re_lease_csr;
6716 
6717     If(l_orig_sys_src_code is not null and l_orig_sys_src_code = 'OKL_RELEASE') Then
6718 
6719     lp_chrv_rec.contract_number :=  p_durv_rec.chr_contract_number;
6720     lp_chrv_rec.description :=  p_durv_rec.chr_description;
6721       update_release_contract(
6722         p_api_version    	=> p_api_version,
6723         p_init_msg_list  	=> p_init_msg_list,
6724         x_return_status  	=> x_return_status,
6725         x_msg_count      	=> x_msg_count,
6726         x_msg_data       	=> x_msg_data,
6727         p_chr_id	        => p_durv_rec.chr_id,
6728         p_contract_number       => p_durv_rec.chr_contract_number,
6729         p_chr_description       => p_durv_rec.chr_description,
6730         p_cust_id	        => p_durv_rec.cust_id,
6731         p_customer_name         => p_durv_rec.cust_name,
6732         p_customer_id1          => p_durv_rec.cust_object1_id1,
6733         p_customer_acc_name     => p_durv_rec.customer_account,
6734         p_customer_acct_id1     => p_durv_rec.chr_cust_acct_id,
6735         p_product_name          => p_durv_rec.product_name,
6736         p_mla_id                => p_durv_rec.mla_gvr_chr_id_referred,
6737         p_mla_no                => p_durv_rec.mla_contract_number,
6738         p_gvr_id_mla            => p_durv_rec.mla_gvr_id,
6739         p_cl_id                 => p_durv_rec.cl_gvr_chr_id_referred,
6740         p_cl_no                 => p_durv_rec.cl_contract_number,
6741         p_gvr_id_cl             => p_durv_rec.cl_gvr_id,
6742         p_deal_type             => p_durv_rec.khr_deal_type,
6743    	p_program_no            => p_durv_rec.program_contract_number,
6744    	p_program_id            => p_durv_rec.khr_khr_id,
6745    	p_program_yn            => p_durv_rec.khr_generate_accrual_yn
6746         );
6747 
6748       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6749          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6750       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6751          RAISE OKC_API.G_EXCEPTION_ERROR;
6752       END IF;
6753 
6754     Else
6755 
6756     -- not a release contract, continue with the process
6757 
6758       x_durv_rec.cust_object1_id1         :=  p_durv_rec.cust_object1_id1;
6759       x_durv_rec.cust_object1_id2         :=  p_durv_rec.cust_object1_id2 ;
6760       x_durv_rec.cust_jtot_object1_code   :=  p_durv_rec.cust_jtot_object1_code ;
6761       x_durv_rec.chr_cust_acct_id         :=  p_durv_rec.chr_cust_acct_id;
6762       x_durv_rec.contact_object1_id1      :=  p_durv_rec.contact_object1_id1;
6763       x_durv_rec.contact_object1_id2      :=  p_durv_rec.contact_object1_id2;
6764       x_durv_rec.contact_jtot_object1_code:=  p_durv_rec.contact_jtot_object1_code;
6765       x_durv_rec.mla_gvr_chr_id_referred  :=  p_durv_rec.mla_gvr_chr_id_referred;
6766       x_durv_rec.khr_khr_id               :=  p_durv_rec.khr_khr_id;
6767       x_durv_rec.chr_currency_code        :=  p_durv_rec.chr_currency_code;
6768       x_durv_rec.cl_gvr_chr_id_referred   :=  p_durv_rec.cl_gvr_chr_id_referred;
6769       x_durv_rec.khr_pdt_id               :=  p_durv_rec.khr_pdt_id;
6770       x_durv_rec.product_description      :=  p_durv_rec.product_description;
6771       x_durv_rec.product_description      :=  p_durv_rec.chr_template_yn;
6772 
6773       okl_la_validation_util_pvt.validate_deal(
6774         p_api_version    	=> p_api_version,
6775         p_init_msg_list  	=> p_init_msg_list,
6776         x_return_status  	=> x_return_status,
6777         x_msg_count      	=> x_msg_count,
6778         x_msg_data       	=> x_msg_data,
6779         p_chr_id	        => p_durv_rec.chr_id,
6780    	p_scs_code		=> 'LEASE',
6781    	p_contract_number	=> p_durv_rec.chr_contract_number ,
6782    	p_customer_id1          => x_durv_rec.cust_object1_id1,
6783    	p_customer_id2          => x_durv_rec.cust_object1_id2,
6784    	p_customer_code         => x_durv_rec.cust_jtot_object1_code,
6785    	p_customer_name         => p_durv_rec.cust_name,
6786    	p_chr_cust_acct_id      => x_durv_rec.chr_cust_acct_id,
6787    	p_customer_acc_name     => p_durv_rec.customer_account,
6788         p_product_name          => p_durv_rec.product_name,
6789    	p_product_id            => x_durv_rec.khr_pdt_id,
6790    	p_product_desc          => x_durv_rec.product_description,
6791    	p_contact_id1           => x_durv_rec.contact_object1_id1,
6792    	p_contact_id2           => x_durv_rec.contact_object1_id2,
6793    	p_contact_code          => x_durv_rec.contact_jtot_object1_code,
6794    	p_contact_name          => p_durv_rec.contact_name,
6795     	p_mla_no                => p_durv_rec.mla_contract_number,
6796    	p_mla_id                => x_durv_rec.mla_gvr_chr_id_referred,
6797    	p_program_no            => p_durv_rec.program_contract_number,
6798    	p_program_id            => x_durv_rec.khr_khr_id,
6799    	p_credit_line_no        => p_durv_rec.cl_contract_number,
6800    	p_credit_line_id        => x_durv_rec.cl_gvr_chr_id_referred,
6801    	p_currency_name         => p_durv_rec.currency_name,
6802    	p_currency_code         => x_durv_rec.chr_currency_code,
6803    	p_start_date            => p_durv_rec.chr_start_date,
6804    	p_deal_type             => p_durv_rec.khr_deal_type
6805    	);
6806 
6807       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6808          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6809       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6810          RAISE OKC_API.G_EXCEPTION_ERROR;
6811       END IF;
6812 
6813       -- product changes
6814       lp_pdtv_rec.id := x_durv_rec.khr_pdt_id;
6815       OKL_SETUPPRODUCTS_PUB.Getpdt_parameters(
6816            p_api_version   => p_api_version,
6817            p_init_msg_list => p_init_msg_list,
6818            x_return_status => x_return_status,
6819       	   x_no_data_found => x_no_data_found,
6820            x_msg_count     => x_msg_count,
6821            x_msg_data      => x_msg_data,
6822       	   p_pdtv_rec      => lp_pdtv_rec,
6823       	   p_product_date  => NULL,
6824       	   p_pdt_parameter_rec => lx_pdt_param_rec);
6825 
6826 
6827       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6828          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6829       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6830          RAISE OKC_API.G_EXCEPTION_ERROR;
6831       END IF;
6832 
6833     x_durv_rec.khr_deal_type := lx_pdt_param_rec.Deal_Type;
6834     x_durv_rec.r_latown_rule_information1 := lx_pdt_param_rec.tax_owner;
6835 
6836     -- validation for creditline contract
6837      okl_la_validation_util_pvt.validate_creditline(
6838        p_api_version    => p_api_version,
6839        p_init_msg_list  => p_init_msg_list,
6840        x_return_status  => x_return_status,
6841        x_msg_count      => x_msg_count,
6842        x_msg_data       => x_msg_data,
6843        p_chr_id         => p_durv_rec.chr_id,
6844        p_deal_type      => x_durv_rec.khr_deal_type,
6845        p_mla_no         => p_durv_rec.mla_contract_number,
6846        p_cl_no          => p_durv_rec.cl_contract_number
6847        );
6848 
6849      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6850         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6851      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6852         RAISE OKC_API.G_EXCEPTION_ERROR;
6853      END IF;
6854 
6855      -- update contract header
6856     lp_chrv_rec.id := p_durv_rec.chr_id;
6857     lp_khrv_rec.id := p_durv_rec.chr_id;
6858     lp_chrv_rec.contract_number :=  p_durv_rec.chr_contract_number;
6859     lp_chrv_rec.description :=  p_durv_rec.chr_description;
6860     lp_chrv_rec.short_description :=  p_durv_rec.chr_description;
6861     lp_chrv_rec.sts_code :=  p_durv_rec.chr_sts_code;
6862     lp_chrv_rec.start_date :=  p_durv_rec.chr_start_date;
6863     lp_chrv_rec.end_date :=  p_durv_rec.chr_end_date;
6864     lp_khrv_rec.term_duration :=  p_durv_rec.khr_term_duration;
6865     lp_chrv_rec.CUST_PO_NUMBER :=  p_durv_rec.chr_CUST_PO_NUMBER;
6866     lp_chrv_rec.INV_ORGANIZATION_ID :=  p_durv_rec.chr_INV_ORGANIZATION_ID;
6867     lp_chrv_rec.AUTHORING_ORG_ID :=  p_durv_rec.chr_AUTHORING_ORG_ID;
6868     lp_khrv_rec.GENERATE_ACCRUAL_YN :=  p_durv_rec.khr_GENERATE_ACCRUAL_YN;
6869     lp_khrv_rec.SYNDICATABLE_YN :=  p_durv_rec.khr_SYNDICATABLE_YN;
6870     lp_khrv_rec.PREFUNDING_ELIGIBLE_YN :=  p_durv_rec.khr_PREFUNDING_ELIGIBLE_YN;
6871     lp_khrv_rec.REVOLVING_CREDIT_YN :=  p_durv_rec.khr_REVOLVING_CREDIT_YN;
6872     lp_khrv_rec.CONVERTED_ACCOUNT_YN :=  p_durv_rec.khr_CONVERTED_ACCOUNT_YN;
6873     lp_khrv_rec.CREDIT_ACT_YN :=  p_durv_rec.khr_CREDIT_ACT_YN;
6874     lp_chrv_rec.TEMPLATE_YN :=  p_durv_rec.chr_TEMPLATE_YN;
6875     lp_chrv_rec.DATE_SIGNED :=  p_durv_rec.chr_DATE_SIGNED;
6876     lp_khrv_rec.DATE_DEAL_TRANSFERRED :=  p_durv_rec.khr_DATE_DEAL_TRANSFERRED;
6877     lp_khrv_rec.ACCEPTED_DATE :=  p_durv_rec.khr_ACCEPTED_DATE;
6878     lp_khrv_rec.EXPECTED_DELIVERY_DATE :=  p_durv_rec.khr_EXPECTED_DELIVERY_DATE;
6879     lp_khrv_rec.AMD_CODE :=  p_durv_rec.khr_AMD_CODE;
6880 --    lp_khrv_rec.DEAL_TYPE :=  p_durv_rec.khr_DEAL_TYPE;
6881     lp_khrv_rec.DEAL_TYPE :=  lx_pdt_param_rec.Deal_Type;
6882     lp_chrv_rec.currency_code :=  x_durv_rec.chr_currency_code;
6883     lp_khrv_rec.currency_conversion_type :=  p_durv_rec.khr_currency_conv_type;
6884     lp_khrv_rec.currency_conversion_rate :=  p_durv_rec.khr_currency_conv_rate;
6885     lp_khrv_rec.currency_conversion_date :=  p_durv_rec.khr_currency_conv_date;
6886     lp_khrv_rec.assignable_yn :=  p_durv_rec.khr_assignable_yn;
6887     lp_chrv_rec.cust_acct_id := x_durv_rec.chr_cust_acct_id;
6888    --Added by dpsingh for LE Uptake
6889     lp_khrv_rec.legal_entity_id :=p_durv_rec.legal_entity_id;
6890     IF (p_durv_rec.khr_assignable_yn <> 'Y') THEN
6891      lp_khrv_rec.assignable_yn := 'N';
6892     END IF;
6893 
6894     l_template_yn := 'N';
6895     l_template_type_code := 'XXX';
6896     OPEN l_ptmpl_csr(p_chr_id => l_chr_id);
6897     FETCH l_ptmpl_csr INTO l_template_yn, l_template_type_code;
6898     CLOSE l_ptmpl_csr;
6899 
6900     --Bug# 4619575
6901     IF(l_ptemplate_yn = 'Y' AND l_template_type_code = 'PROGRAM') THEN
6902      OPEN  l_pqcl_csr;
6903      FETCH l_pqcl_csr INTO lp_chrv_rec.qcl_id;
6904      CLOSE l_pqcl_csr;
6905     --Bug# 4619575
6906     ELSIF(l_ptemplate_yn = 'Y' AND l_template_type_code = 'LEASEAPP') THEN
6907      OPEN  l_laqcl_csr;
6908      FETCH l_laqcl_csr INTO lp_chrv_rec.qcl_id;
6909      CLOSE l_laqcl_csr;
6910     ELSE
6911      OPEN  l_qcl_csr;
6912      FETCH l_qcl_csr INTO lp_chrv_rec.qcl_id;
6913      CLOSE l_qcl_csr;
6914     END IF;
6915 
6916     -- START: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
6917    /*
6918     OPEN  l_end_date_csr;
6919     FETCH l_end_date_csr INTO lp_chrv_rec.end_date;
6920     CLOSE l_end_date_csr;
6921    */
6922 	lp_chrv_rec.end_date := OKL_LLA_UTIL_PVT.calculate_end_date(p_durv_rec.chr_start_date,p_durv_rec.khr_term_duration);
6923     -- END: cklee/mvasudev,6/2/2005, Bug#4392051/okl.h 4437938
6924 
6925     x_durv_rec.chr_end_date := lp_chrv_rec.end_date;
6926 
6927    /*
6928     If (lp_chrv_rec.TEMPLATE_YN is not null and lp_chrv_rec.TEMPLATE_YN = 'Y') then
6929       lp_chrv_rec.end_date := null;
6930       x_durv_rec.chr_end_date := null;
6931     End If;
6932    */
6933 
6934     IF (p_durv_rec.product_name IS NULL) THEN
6935      lp_khrv_rec.pdt_id :=  NULL;
6936      x_durv_rec.khr_pdt_id := NULL;
6937     ELSE
6938      lp_khrv_rec.pdt_id :=  x_durv_rec.khr_pdt_id;
6939     END IF;
6940 
6941     IF (p_durv_rec.program_contract_number IS NULL) THEN
6942      lp_khrv_rec.khr_id :=  NULL;
6943      x_durv_rec.khr_khr_id := NULL;
6944     END IF;
6945 
6946      old_khr_id := NULL;
6947      OPEN c_vp_exsts_csr;
6948      FETCH c_vp_exsts_csr INTO old_khr_id;
6949      CLOSE c_vp_exsts_csr;
6950 
6951      lp_khrv_rec.khr_id :=  x_durv_rec.khr_khr_id;
6952 
6953    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
6954     lp_chrv_rec.cust_acct_id := NULL;
6955    END IF;
6956 
6957     OKL_CONTRACT_PUB.update_contract_header(
6958         p_api_version    	=> p_api_version,
6959         p_init_msg_list  	=> p_init_msg_list,
6960         x_return_status  	=> x_return_status,
6961         x_msg_count      	=> x_msg_count,
6962         x_msg_data       	=> x_msg_data,
6963         p_restricted_update     => 'F',
6964         p_chrv_rec       	=> lp_chrv_rec,
6965         p_khrv_rec       	=> lp_khrv_rec,
6966         x_chrv_rec       	=> lx_chrv_rec,
6967         x_khrv_rec       	=> lx_khrv_rec);
6968 
6969       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6970          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6971       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6972          RAISE OKC_API.G_EXCEPTION_ERROR;
6973       END IF;
6974    /*
6975     open  l_vers_version_csr;
6976     fetch l_vers_version_csr into x_durv_rec.vers_version;
6977     close l_vers_version_csr;
6978    */
6979 -- lessee
6980 
6981     IF (p_durv_rec.cust_id IS NULL AND p_durv_rec.cust_name IS NOT NULL ) THEN
6982 
6983     lp_lessee_cplv_rec.id := NULL;
6984     lp_lessee_cplv_rec.dnz_chr_id := p_durv_rec.chr_id;
6985     lp_lessee_cplv_rec.chr_id := p_durv_rec.chr_id;
6986     lp_lessee_cplv_rec.object1_id1 := x_durv_rec.cust_object1_id1;
6987     lp_lessee_cplv_rec.object1_id2 := x_durv_rec.cust_object1_id2;
6988     lp_lessee_cplv_rec.rle_code := 'LESSEE';
6989     lp_lessee_cplv_rec.jtot_object1_code := p_durv_rec.cust_jtot_object1_code;
6990 
6991 
6992     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
6993     --              to create records in tables
6994     --              okc_k_party_roles_b and okl_k_party_roles
6995     /*
6996     OKL_OKC_MIGRATION_PVT.create_k_party_role(
6997         p_api_version    => p_api_version,
6998         p_init_msg_list  => p_init_msg_list,
6999         x_return_status  => x_return_status,
7000         x_msg_count      => x_msg_count,
7001         x_msg_data       => x_msg_data,
7002         p_cplv_rec       => lp_lessee_cplv_rec,
7003         x_cplv_rec       => lx_lessee_cplv_rec);
7004     */
7005 
7006     okl_k_party_roles_pvt.create_k_party_role(
7007       p_api_version      => p_api_version,
7008       p_init_msg_list    => p_init_msg_list,
7009       x_return_status    => x_return_status,
7010       x_msg_count        => x_msg_count,
7011       x_msg_data         => x_msg_data,
7012       p_cplv_rec         => lp_lessee_cplv_rec,
7013       x_cplv_rec         => lx_lessee_cplv_rec,
7014       p_kplv_rec         => lp_kplv_rec,
7015       x_kplv_rec         => lx_kplv_rec);
7016 
7017       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7018          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7019       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7020          RAISE OKC_API.G_EXCEPTION_ERROR;
7021       END IF;
7022 
7023       x_durv_rec.cust_id := lx_lessee_cplv_rec.id;
7024 
7025    ELSIF (p_durv_rec.cust_id IS NOT NULL AND p_durv_rec.cust_name IS NOT NULL ) THEN
7026 
7027     lp_lessee_cplv_rec.id := p_durv_rec.cust_id;
7028     lp_lessee_cplv_rec.dnz_chr_id := p_durv_rec.chr_id;
7029     lp_lessee_cplv_rec.chr_id := p_durv_rec.chr_id;
7030     lp_lessee_cplv_rec.object1_id1 := x_durv_rec.cust_object1_id1;
7031     lp_lessee_cplv_rec.object1_id2 := x_durv_rec.cust_object1_id2;
7032     lp_lessee_cplv_rec.rle_code := 'LESSEE';
7033     lp_lessee_cplv_rec.jtot_object1_code := p_durv_rec.cust_jtot_object1_code;
7034 
7035     --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
7036     --              to update records in tables
7037     --              okc_k_party_roles_b and okl_k_party_roles
7038     /*
7039     OKL_OKC_MIGRATION_PVT.update_k_party_role(
7040         p_api_version    => p_api_version,
7041         p_init_msg_list  => p_init_msg_list,
7042         x_return_status  => x_return_status,
7043         x_msg_count      => x_msg_count,
7044         x_msg_data       => x_msg_data,
7045         p_cplv_rec       => lp_lessee_cplv_rec,
7046         x_cplv_rec       => lx_lessee_cplv_rec);
7047     */
7048 
7049     lp_kplv_rec.id := lp_lessee_cplv_rec.id;
7050     okl_k_party_roles_pvt.update_k_party_role(
7051       p_api_version      => p_api_version,
7052       p_init_msg_list    => p_init_msg_list,
7053       x_return_status    => x_return_status,
7054       x_msg_count        => x_msg_count,
7055       x_msg_data         => x_msg_data,
7056       p_cplv_rec         => lp_lessee_cplv_rec,
7057       x_cplv_rec         => lx_lessee_cplv_rec,
7058       p_kplv_rec         => lp_kplv_rec,
7059       x_kplv_rec         => lx_kplv_rec);
7060 
7061       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7062          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7063       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7064          RAISE OKC_API.G_EXCEPTION_ERROR;
7065       END IF;
7066 
7067    ELSIF( p_durv_rec.cust_id IS NOT NULL AND p_durv_rec.cust_name IS NULL ) THEN
7068 
7069     IF( l_temp_yn = 'Y' ) THEN
7070 
7071 	lp_lessee_cplv_rec.id := p_durv_rec.cust_id;
7072         lp_lessee_cplv_rec.dnz_chr_id := p_durv_rec.chr_id;
7073         lp_lessee_cplv_rec.chr_id := p_durv_rec.chr_id;
7074 
7075         --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
7076         --              to delete records in tables
7077         --              okc_k_party_roles_b and okl_k_party_roles
7078         /*
7079         OKL_OKC_MIGRATION_PVT.delete_k_party_role(
7080            p_api_version    => p_api_version,
7081            p_init_msg_list  => p_init_msg_list,
7082            x_return_status  => x_return_status,
7083            x_msg_count      => x_msg_count,
7084            x_msg_data       => x_msg_data,
7085            p_cplv_rec       => lp_lessee_cplv_rec);
7086         */
7087 
7088         lp_kplv_rec.id := lp_lessee_cplv_rec.id;
7089         OKL_K_PARTY_ROLES_PVT.delete_k_party_role(
7090           p_api_version   => p_api_version,
7091           p_init_msg_list => p_init_msg_list,
7092           x_return_status => x_return_status,
7093           x_msg_count     => x_msg_count,
7094           x_msg_data      => x_msg_data,
7095           p_cplv_rec      => lp_lessee_cplv_rec,
7096           p_kplv_rec      => lp_kplv_rec);
7097 
7098         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7099            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7100         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7101            RAISE OKC_API.G_EXCEPTION_ERROR;
7102         END IF;
7103 
7104        l_rgp_id := NULL;
7105        l_rul_id := NULL;
7106 
7107      END IF;
7108 
7109    END IF;
7110 
7111 -- contact
7112    IF (p_durv_rec.contact_id IS NULL AND p_durv_rec.contact_name IS NOT NULL ) THEN
7113 
7114     lp_ctcv_rec.id := NULL;
7115     lp_ctcv_rec.cpl_id := p_durv_rec.lessor_id;
7116     lp_ctcv_rec.dnz_chr_id := p_durv_rec.chr_id;
7117     lp_ctcv_rec.object1_id1 := x_durv_rec.contact_object1_id1;
7118     lp_ctcv_rec.object1_id2 := x_durv_rec.contact_object1_id2;
7119     lp_ctcv_rec.jtot_object1_code := p_durv_rec.contact_jtot_object1_code;
7120     lp_ctcv_rec.cro_code := 'SALESPERSON';
7121 
7122     OKL_OKC_MIGRATION_PVT.create_contact(
7123         p_api_version    => p_api_version,
7124         p_init_msg_list  => p_init_msg_list,
7125         x_return_status  => x_return_status,
7126         x_msg_count      => x_msg_count,
7127         x_msg_data       => x_msg_data,
7128         p_ctcv_rec       => lp_ctcv_rec,
7129         x_ctcv_rec       => lx_ctcv_rec);
7130 
7131       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7132          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7133       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7134          RAISE OKC_API.G_EXCEPTION_ERROR;
7135       END IF;
7136 
7137       x_durv_rec.contact_id := lx_ctcv_rec.id;
7138 
7139    ELSIF (p_durv_rec.contact_id IS NOT NULL AND p_durv_rec.contact_name IS NOT NULL ) THEN
7140 
7141     lp_ctcv_rec.id := p_durv_rec.contact_id;
7142     lp_ctcv_rec.cpl_id := lx_lessor_cplv_rec.id;
7143     lp_ctcv_rec.dnz_chr_id := p_durv_rec.chr_id;
7144     lp_ctcv_rec.object1_id1 := x_durv_rec.contact_object1_id1;
7145     lp_ctcv_rec.object1_id2 := x_durv_rec.contact_object1_id2;
7146     lp_ctcv_rec.jtot_object1_code := p_durv_rec.contact_jtot_object1_code;
7147     lp_ctcv_rec.cro_code := 'SALESPERSON';
7148 
7149     OKL_OKC_MIGRATION_PVT.update_contact(
7150         p_api_version    => p_api_version,
7151         p_init_msg_list  => p_init_msg_list,
7152         x_return_status  => x_return_status,
7153         x_msg_count      => x_msg_count,
7154         x_msg_data       => x_msg_data,
7155         p_ctcv_rec       => lp_ctcv_rec,
7156         x_ctcv_rec       => lx_ctcv_rec);
7157 
7158       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7159          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7160       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7161          RAISE OKC_API.G_EXCEPTION_ERROR;
7162       END IF;
7163 
7164    ELSIF (p_durv_rec.contact_id IS NOT NULL AND p_durv_rec.contact_name IS NULL ) THEN
7165 
7166     lp_ctcv_rec.id := p_durv_rec.contact_id;
7167     lp_ctcv_rec.cpl_id := lx_lessor_cplv_rec.id;
7168     lp_ctcv_rec.dnz_chr_id := p_durv_rec.chr_id;
7169     lp_ctcv_rec.object1_id1 := x_durv_rec.contact_object1_id1;
7170     lp_ctcv_rec.object1_id2 := x_durv_rec.contact_object1_id2;
7171     lp_ctcv_rec.jtot_object1_code := p_durv_rec.contact_jtot_object1_code;
7172     lp_ctcv_rec.cro_code := 'SALESPERSON';
7173 
7174     OKL_OKC_MIGRATION_PVT.delete_contact(
7175         p_api_version    => p_api_version,
7176         p_init_msg_list  => p_init_msg_list,
7177         x_return_status  => x_return_status,
7178         x_msg_count      => x_msg_count,
7179         x_msg_data       => x_msg_data,
7180         p_ctcv_rec       => lp_ctcv_rec);
7181 
7182       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7183          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7184       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7185          RAISE OKC_API.G_EXCEPTION_ERROR;
7186       END IF;
7187 
7188      x_durv_rec.contact_id := NULL;
7189 
7190    END IF;
7191 
7192 -- mla
7193    IF (p_durv_rec.mla_gvr_id IS NULL AND p_durv_rec.mla_contract_number IS NOT NULL ) THEN
7194 
7195     lp_mla_gvev_rec.id := NULL;
7196     lp_mla_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7197     lp_mla_gvev_rec.chr_id := p_durv_rec.chr_id;
7198     lp_mla_gvev_rec.chr_id_referred := x_durv_rec.mla_gvr_chr_id_referred;
7199     lp_mla_gvev_rec.copied_only_yn := 'N';
7200 
7201     OKL_OKC_MIGRATION_PVT.create_governance(
7202         p_api_version    => p_api_version,
7203         p_init_msg_list  => p_init_msg_list,
7204         x_return_status  => x_return_status,
7205         x_msg_count      => x_msg_count,
7206         x_msg_data       => x_msg_data,
7207         p_gvev_rec       => lp_mla_gvev_rec,
7208         x_gvev_rec       => lx_mla_gvev_rec);
7209 
7210       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7211          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7212       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7213          RAISE OKC_API.G_EXCEPTION_ERROR;
7214       END IF;
7215 
7216       x_durv_rec.mla_gvr_id := lx_mla_gvev_rec.id;
7217 
7218    ELSIF (p_durv_rec.mla_gvr_id IS NOT NULL AND p_durv_rec.mla_contract_number IS NOT NULL ) THEN
7219 
7220     lp_mla_gvev_rec.id := p_durv_rec.mla_gvr_id;
7221     lp_mla_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7222     lp_mla_gvev_rec.chr_id := p_durv_rec.chr_id;
7223     lp_mla_gvev_rec.chr_id_referred := x_durv_rec.mla_gvr_chr_id_referred;
7224     lp_mla_gvev_rec.copied_only_yn := 'N';
7225 
7226     OKL_OKC_MIGRATION_PVT.update_governance(
7227         p_api_version    => p_api_version,
7228         p_init_msg_list  => p_init_msg_list,
7229         x_return_status  => x_return_status,
7230         x_msg_count      => x_msg_count,
7231         x_msg_data       => x_msg_data,
7232         p_gvev_rec       => lp_mla_gvev_rec,
7233         x_gvev_rec       => lx_mla_gvev_rec);
7234 
7235       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7236          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7237       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7238          RAISE OKC_API.G_EXCEPTION_ERROR;
7239       END IF;
7240 
7241    ELSIF (p_durv_rec.mla_gvr_id IS NOT NULL AND p_durv_rec.mla_contract_number IS NULL ) THEN
7242 
7243     lp_mla_gvev_rec.id := p_durv_rec.mla_gvr_id;
7244     lp_mla_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7245     lp_mla_gvev_rec.chr_id := p_durv_rec.chr_id;
7246     lp_mla_gvev_rec.chr_id_referred := x_durv_rec.mla_gvr_chr_id_referred;
7247     lp_mla_gvev_rec.copied_only_yn := 'N';
7248 
7249     OKL_OKC_MIGRATION_PVT.delete_governance(
7250         p_api_version    => p_api_version,
7251         p_init_msg_list  => p_init_msg_list,
7252         x_return_status  => x_return_status,
7253         x_msg_count      => x_msg_count,
7254         x_msg_data       => x_msg_data,
7255         p_gvev_rec       => lp_mla_gvev_rec);
7256 
7257       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7258          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7259       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7260          RAISE OKC_API.G_EXCEPTION_ERROR;
7261       END IF;
7262 
7263       x_durv_rec.mla_gvr_id := NULL;
7264 
7265    END IF;
7266 
7267 -- creditline
7268    IF (p_durv_rec.cl_gvr_id IS NULL AND p_durv_rec.cl_contract_number IS NOT NULL ) THEN
7269 
7270     lp_cl_gvev_rec.id := NULL;
7271     lp_cl_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7272     lp_cl_gvev_rec.chr_id := p_durv_rec.chr_id;
7273     lp_cl_gvev_rec.chr_id_referred := x_durv_rec.cl_gvr_chr_id_referred;
7274     lp_cl_gvev_rec.copied_only_yn := 'N';
7275 
7276     OKL_OKC_MIGRATION_PVT.create_governance(
7277         p_api_version    => p_api_version,
7278         p_init_msg_list  => p_init_msg_list,
7279         x_return_status  => x_return_status,
7280         x_msg_count      => x_msg_count,
7281         x_msg_data       => x_msg_data,
7282         p_gvev_rec       => lp_cl_gvev_rec,
7283         x_gvev_rec       => lx_cl_gvev_rec);
7284 
7285       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7286          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7287       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7288          RAISE OKC_API.G_EXCEPTION_ERROR;
7289       END IF;
7290 
7291       x_durv_rec.cl_gvr_id := lx_cl_gvev_rec.id;
7292 
7293    ELSIF (p_durv_rec.cl_gvr_id IS NOT NULL AND p_durv_rec.cl_contract_number IS NOT NULL ) THEN
7294 
7295     lp_cl_gvev_rec.id := p_durv_rec.cl_gvr_id;
7296     lp_cl_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7297     lp_cl_gvev_rec.chr_id := p_durv_rec.chr_id;
7298     lp_cl_gvev_rec.chr_id_referred := x_durv_rec.cl_gvr_chr_id_referred;
7299     lp_cl_gvev_rec.copied_only_yn := 'N';
7300 
7301     OKL_OKC_MIGRATION_PVT.update_governance(
7302         p_api_version    => p_api_version,
7303         p_init_msg_list  => p_init_msg_list,
7304         x_return_status  => x_return_status,
7305         x_msg_count      => x_msg_count,
7306         x_msg_data       => x_msg_data,
7307         p_gvev_rec       => lp_cl_gvev_rec,
7308         x_gvev_rec       => lx_cl_gvev_rec);
7309 
7310       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7311          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7312       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7313          RAISE OKC_API.G_EXCEPTION_ERROR;
7314       END IF;
7315 
7316    ELSIF (p_durv_rec.cl_gvr_id IS NOT NULL AND p_durv_rec.cl_contract_number IS NULL ) THEN
7317 
7318     lp_cl_gvev_rec.id := p_durv_rec.cl_gvr_id;
7319     lp_cl_gvev_rec.dnz_chr_id := p_durv_rec.chr_id;
7320     lp_cl_gvev_rec.chr_id := p_durv_rec.chr_id;
7321     lp_cl_gvev_rec.chr_id_referred := x_durv_rec.cl_gvr_chr_id_referred;
7322     lp_cl_gvev_rec.copied_only_yn := 'N';
7323 
7324     OKL_OKC_MIGRATION_PVT.delete_governance(
7325         p_api_version    => p_api_version,
7326         p_init_msg_list  => p_init_msg_list,
7327         x_return_status  => x_return_status,
7328         x_msg_count      => x_msg_count,
7329         x_msg_data       => x_msg_data,
7330         p_gvev_rec       => lp_cl_gvev_rec);
7331 
7332       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7333          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7334       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7335          RAISE OKC_API.G_EXCEPTION_ERROR;
7336       END IF;
7337 
7338       x_durv_rec.cl_gvr_id := NULL;
7339 
7340    END IF;
7341 
7342 -- rule group larles
7343    IF (p_durv_rec.rg_larles_id IS NULL) THEN
7344 
7345     lp_larles_rgpv_rec.id := NULL;
7346     lp_larles_rgpv_rec.rgd_code := 'LARLES';
7347     lp_larles_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7348     lp_larles_rgpv_rec.chr_id := p_durv_rec.chr_id;
7349     lp_larles_rgpv_rec.rgp_type := 'KRG';
7350 
7351     OKL_RULE_PUB.create_rule_group(
7352         p_api_version    => p_api_version,
7353         p_init_msg_list  => p_init_msg_list,
7354         x_return_status  => x_return_status,
7355         x_msg_count      => x_msg_count,
7356         x_msg_data       => x_msg_data,
7357         p_rgpv_rec       => lp_larles_rgpv_rec,
7358         x_rgpv_rec       => lx_larles_rgpv_rec);
7359 
7360       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7361          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7362       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7363          RAISE OKC_API.G_EXCEPTION_ERROR;
7364       END IF;
7365 
7366       x_durv_rec.rg_larles_id := lx_larles_rgpv_rec.id;
7367 
7368    ELSIF (p_durv_rec.rg_larles_id IS NOT NULL ) THEN
7369 
7370     lp_larles_rgpv_rec.id := p_durv_rec.rg_larles_id;
7371     lp_larles_rgpv_rec.rgd_code := 'LARLES';
7372     lp_larles_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7373     lp_larles_rgpv_rec.chr_id := p_durv_rec.chr_id;
7374     lp_larles_rgpv_rec.rgp_type := 'KRG';
7375 
7376     OKL_RULE_PUB.update_rule_group(
7377         p_api_version    => p_api_version,
7378         p_init_msg_list  => p_init_msg_list,
7379         x_return_status  => x_return_status,
7380         x_msg_count      => x_msg_count,
7381         x_msg_data       => x_msg_data,
7382         p_rgpv_rec       => lp_larles_rgpv_rec,
7383         x_rgpv_rec       => lx_larles_rgpv_rec);
7384 
7385       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7386          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7387       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7388          RAISE OKC_API.G_EXCEPTION_ERROR;
7389       END IF;
7390 
7391    END IF;
7392 
7393 -- rule larles
7394    IF (p_durv_rec.r_larles_id IS NULL ) THEN
7395 
7396     lp_larles_rulv_rec.id := NULL;
7397     lp_larles_rulv_rec.rgp_id := lx_larles_rgpv_rec.id;
7398     lp_larles_rulv_rec.rule_information_category := 'LARLES';
7399     lp_larles_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7400     lp_larles_rulv_rec.rule_information1 := p_durv_rec.r_larles_rule_information1;
7401     lp_larles_rulv_rec.WARN_YN := 'N';
7402     lp_larles_rulv_rec.STD_TEMPLATE_YN := 'N';
7403 
7404     OKL_RULE_PUB.create_rule(
7405         p_api_version    => p_api_version,
7406         p_init_msg_list  => p_init_msg_list,
7407         x_return_status  => x_return_status,
7408         x_msg_count      => x_msg_count,
7409         x_msg_data       => x_msg_data,
7410         p_rulv_rec       => lp_larles_rulv_rec,
7411         x_rulv_rec       => lx_larles_rulv_rec);
7412 
7413       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7414          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7415       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7416          RAISE OKC_API.G_EXCEPTION_ERROR;
7417       END IF;
7418 
7419       x_durv_rec.r_larles_id := lx_larles_rulv_rec.id;
7420 
7421    ELSIF (p_durv_rec.r_larles_id IS NOT NULL ) THEN
7422 
7423     l_fin_ast := 'N';
7424     OPEN chk_fin_ast_csr;
7425     FETCH chk_fin_ast_csr INTO l_fin_ast;
7426     CLOSE chk_fin_ast_csr;
7427 
7428     l_lrls_yn := 'X';
7429     OPEN get_larles_csr;
7430     FETCH get_larles_csr INTO l_lrls_yn;
7431     CLOSE get_larles_csr;
7432 
7433 
7434    --Bug# 15992711: Comment the validation at contract header level
7435    --               on the re-leased asset flag.
7436    --               whether an asset is a release or new asset is determined by
7437    --               the the re_lease_yn flag on okl_k_lines
7438    /* IF( (l_fin_ast = 'Y') AND (NOT(p_durv_rec.r_larles_rule_information1 = l_lrls_yn))) THEN
7439 
7440          x_return_status := OKC_API.g_ret_sts_error;
7441          OKC_API.SET_MESSAGE(      p_app_name => g_app_name
7442                 , p_msg_name => 'OKL_LLA_RELSE_AST'
7443                );
7444          RAISE OKC_API.G_EXCEPTION_ERROR;
7445 
7446     END IF;*/
7447     --Bug# 15992711 end
7448 
7449     lp_larles_rulv_rec.id := p_durv_rec.r_larles_id;
7450     lp_larles_rulv_rec.rgp_id := lx_larles_rgpv_rec.id;
7451     lp_larles_rulv_rec.rule_information_category := 'LARLES';
7452     lp_larles_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7453     lp_larles_rulv_rec.rule_information1 := p_durv_rec.r_larles_rule_information1;
7454     lp_larles_rulv_rec.WARN_YN := 'N';
7455     lp_larles_rulv_rec.STD_TEMPLATE_YN := 'N';
7456 
7457     OKL_RULE_PUB.update_rule(
7458         p_api_version    => p_api_version,
7459         p_init_msg_list  => p_init_msg_list,
7460         x_return_status  => x_return_status,
7461         x_msg_count      => x_msg_count,
7462         x_msg_data       => x_msg_data,
7463         p_rulv_rec       => lp_larles_rulv_rec,
7464         x_rulv_rec       => lx_larles_rulv_rec);
7465 
7466       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7467          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7468       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7469          RAISE OKC_API.G_EXCEPTION_ERROR;
7470       END IF;
7471 
7472    END IF;
7473 
7474 -- rule group LAREBL
7475    IF (p_durv_rec.rg_LAREBL_id IS NULL) THEN
7476 
7477     lp_larebl_rgpv_rec.id := NULL;
7478     lp_larebl_rgpv_rec.rgd_code := 'LAREBL';
7479     lp_larebl_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7480     lp_larebl_rgpv_rec.chr_id := p_durv_rec.chr_id;
7481     lp_larebl_rgpv_rec.rgp_type := 'KRG';
7482 
7483     OKL_RULE_PUB.create_rule_group(
7484         p_api_version    => p_api_version,
7485         p_init_msg_list  => p_init_msg_list,
7486         x_return_status  => x_return_status,
7487         x_msg_count      => x_msg_count,
7488         x_msg_data       => x_msg_data,
7489         p_rgpv_rec       => lp_larebl_rgpv_rec,
7490         x_rgpv_rec       => lx_larebl_rgpv_rec);
7491 
7492       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7493          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7494       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7495          RAISE OKC_API.G_EXCEPTION_ERROR;
7496       END IF;
7497 
7498       x_durv_rec.rg_larebl_id := lx_larebl_rgpv_rec.id;
7499 
7500    ELSIF (p_durv_rec.rg_larebl_id IS NOT NULL ) THEN
7501 
7502     lp_larebl_rgpv_rec.id := p_durv_rec.rg_larebl_id;
7503     lp_larebl_rgpv_rec.rgd_code := 'LAREBL';
7504     lp_larebl_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7505     lp_larebl_rgpv_rec.chr_id := p_durv_rec.chr_id;
7506     lp_larebl_rgpv_rec.rgp_type := 'KRG';
7507 
7508     OKL_RULE_PUB.update_rule_group(
7509         p_api_version    => p_api_version,
7510         p_init_msg_list  => p_init_msg_list,
7511         x_return_status  => x_return_status,
7512         x_msg_count      => x_msg_count,
7513         x_msg_data       => x_msg_data,
7514         p_rgpv_rec       => lp_larebl_rgpv_rec,
7515         x_rgpv_rec       => lx_larebl_rgpv_rec);
7516 
7517       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7518          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7519       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7520          RAISE OKC_API.G_EXCEPTION_ERROR;
7521       END IF;
7522 
7523    END IF;
7524 
7525 -- rule larebl
7526    IF (p_durv_rec.r_larebl_id IS NULL) THEN
7527 
7528     lp_larebl_rulv_rec.id := NULL;
7529     lp_larebl_rulv_rec.rgp_id := lx_larebl_rgpv_rec.id;
7530     lp_larebl_rulv_rec.rule_information_category := 'LAREBL';
7531     lp_larebl_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7532     lp_larebl_rulv_rec.rule_information1 := p_durv_rec.r_larebl_rule_information1;
7533     lp_larebl_rulv_rec.WARN_YN := 'N';
7534     lp_larebl_rulv_rec.STD_TEMPLATE_YN := 'N';
7535 
7536     OKL_RULE_PUB.create_rule(
7537         p_api_version    => p_api_version,
7538         p_init_msg_list  => p_init_msg_list,
7539         x_return_status  => x_return_status,
7540         x_msg_count      => x_msg_count,
7541         x_msg_data       => x_msg_data,
7542         p_rulv_rec       => lp_larebl_rulv_rec,
7543         x_rulv_rec       => lx_larebl_rulv_rec);
7544 
7545       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7546          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7547       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7548          RAISE OKC_API.G_EXCEPTION_ERROR;
7549       END IF;
7550 
7551       x_durv_rec.r_larebl_id := lx_larebl_rulv_rec.id;
7552 
7553    ELSIF (p_durv_rec.r_larebl_id IS NOT NULL ) THEN
7554 
7555     lp_larebl_rulv_rec.id := p_durv_rec.r_larebl_id;
7556     lp_larebl_rulv_rec.rgp_id := lx_larebl_rgpv_rec.id;
7557     lp_larebl_rulv_rec.rule_information_category := 'LAREBL';
7558     lp_larebl_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7559     lp_larebl_rulv_rec.rule_information1 := p_durv_rec.r_larebl_rule_information1;
7560     lp_larebl_rulv_rec.WARN_YN := 'N';
7561     lp_larebl_rulv_rec.STD_TEMPLATE_YN := 'N';
7562 
7563     OKL_RULE_PUB.update_rule(
7564         p_api_version    => p_api_version,
7565         p_init_msg_list  => p_init_msg_list,
7566         x_return_status  => x_return_status,
7567         x_msg_count      => x_msg_count,
7568         x_msg_data       => x_msg_data,
7569         p_rulv_rec       => lp_larebl_rulv_rec,
7570         x_rulv_rec       => lx_larebl_rulv_rec);
7571 
7572       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7573          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7574       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7575          RAISE OKC_API.G_EXCEPTION_ERROR;
7576       END IF;
7577    ELSIF (p_durv_rec.r_larebl_id IS NOT NULL AND p_durv_rec.r_larebl_rule_information1 IS NULL) THEN
7578 
7579     lp_larebl_rulv_rec.id := p_durv_rec.r_larebl_id;
7580     lp_larebl_rulv_rec.rgp_id := lx_larebl_rgpv_rec.id;
7581     lp_larebl_rulv_rec.rule_information_category := 'LAREBL';
7582     lp_larebl_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7583     lp_larebl_rulv_rec.rule_information1 := p_durv_rec.r_larebl_rule_information1;
7584     lp_larebl_rulv_rec.WARN_YN := 'N';
7585     lp_larebl_rulv_rec.STD_TEMPLATE_YN := 'N';
7586 
7587     OKL_RULE_PUB.delete_rule(
7588         p_api_version    => p_api_version,
7589         p_init_msg_list  => p_init_msg_list,
7590         x_return_status  => x_return_status,
7591         x_msg_count      => x_msg_count,
7592         x_msg_data       => x_msg_data,
7593         p_rulv_rec       => lp_larebl_rulv_rec);
7594 
7595       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7596          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7597       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7598          RAISE OKC_API.G_EXCEPTION_ERROR;
7599       END IF;
7600 
7601     x_durv_rec.r_larebl_id := NULL;
7602 
7603    END IF;
7604 
7605  -- rule group lanntf
7606     IF (p_durv_rec.rg_lanntf_id IS NULL) THEN
7607 
7608      lp_lanntf_rgpv_rec.id := NULL;
7609      lp_lanntf_rgpv_rec.rgd_code := 'LANNTF';
7610      lp_lanntf_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7611      lp_lanntf_rgpv_rec.chr_id := p_durv_rec.chr_id;
7612      lp_lanntf_rgpv_rec.rgp_type := 'KRG';
7613 
7614      OKL_RULE_PUB.create_rule_group(
7615          p_api_version    => p_api_version,
7616          p_init_msg_list  => p_init_msg_list,
7617          x_return_status  => x_return_status,
7618          x_msg_count      => x_msg_count,
7619          x_msg_data       => x_msg_data,
7620          p_rgpv_rec       => lp_lanntf_rgpv_rec,
7621          x_rgpv_rec       => lx_lanntf_rgpv_rec);
7622 
7623        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7624           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7625        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7626           RAISE OKC_API.G_EXCEPTION_ERROR;
7627        END IF;
7628 
7629         x_durv_rec.rg_lanntf_id := lx_lanntf_rgpv_rec.id;
7630 
7631     ELSIF (p_durv_rec.rg_lanntf_id IS NOT NULL ) THEN
7632 
7633      lp_lanntf_rgpv_rec.id := p_durv_rec.rg_lanntf_id;
7634      lp_lanntf_rgpv_rec.rgd_code := 'LANNTF';
7635      lp_lanntf_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7636      lp_lanntf_rgpv_rec.chr_id := p_durv_rec.chr_id;
7637      lp_lanntf_rgpv_rec.rgp_type := 'KRG';
7638 
7639      OKL_RULE_PUB.update_rule_group(
7640          p_api_version    => p_api_version,
7641          p_init_msg_list  => p_init_msg_list,
7642          x_return_status  => x_return_status,
7643          x_msg_count      => x_msg_count,
7644          x_msg_data       => x_msg_data,
7645          p_rgpv_rec       => lp_lanntf_rgpv_rec,
7646          x_rgpv_rec       => lx_lanntf_rgpv_rec);
7647 
7648        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7649           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7650        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7651           RAISE OKC_API.G_EXCEPTION_ERROR;
7652        END IF;
7653 
7654     END IF;
7655 
7656  -- rule lanntf
7657     IF (p_durv_rec.r_lanntf_id IS NULL) THEN
7658 
7659      lp_lanntf_rulv_rec.id := NULL;
7660      lp_lanntf_rulv_rec.rgp_id := lx_lanntf_rgpv_rec.id;
7661      lp_lanntf_rulv_rec.rule_information_category := 'LANNTF';
7662      lp_lanntf_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7663      lp_lanntf_rulv_rec.rule_information1 := p_durv_rec.r_lanntf_rule_information1;
7664      lp_lanntf_rulv_rec.WARN_YN := 'N';
7665      lp_lanntf_rulv_rec.STD_TEMPLATE_YN := 'N';
7666 
7667      OKL_RULE_PUB.create_rule(
7668          p_api_version    => p_api_version,
7669          p_init_msg_list  => p_init_msg_list,
7670          x_return_status  => x_return_status,
7671          x_msg_count      => x_msg_count,
7672          x_msg_data       => x_msg_data,
7673          p_rulv_rec       => lp_lanntf_rulv_rec,
7674          x_rulv_rec       => lx_lanntf_rulv_rec);
7675 
7676        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7677           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7678        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7679           RAISE OKC_API.G_EXCEPTION_ERROR;
7680        END IF;
7681 
7682        x_durv_rec.r_lanntf_id := lx_lanntf_rulv_rec.id;
7683 
7684     ELSIF (p_durv_rec.r_lanntf_id IS NOT NULL ) THEN
7685 
7686      lp_lanntf_rulv_rec.id := p_durv_rec.r_lanntf_id;
7687      lp_lanntf_rulv_rec.rgp_id := lx_lanntf_rgpv_rec.id;
7688      lp_lanntf_rulv_rec.rule_information_category := 'LANNTF';
7689      lp_lanntf_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7690      lp_lanntf_rulv_rec.rule_information1 := p_durv_rec.r_lanntf_rule_information1;
7691      lp_lanntf_rulv_rec.WARN_YN := 'N';
7692      lp_lanntf_rulv_rec.STD_TEMPLATE_YN := 'N';
7693 
7694      OKL_RULE_PUB.update_rule(
7695          p_api_version    => p_api_version,
7696          p_init_msg_list  => p_init_msg_list,
7697          x_return_status  => x_return_status,
7698          x_msg_count      => x_msg_count,
7699          x_msg_data       => x_msg_data,
7700          p_rulv_rec       => lp_lanntf_rulv_rec,
7701          x_rulv_rec       => lx_lanntf_rulv_rec);
7702 
7703        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7704           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7705        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7706           RAISE OKC_API.G_EXCEPTION_ERROR;
7707        END IF;
7708 
7709     END IF;
7710 
7711   -- rule group lacpln
7712     IF (p_durv_rec.rg_lacpln_id IS NULL) THEN
7713 
7714      lp_lacpln_rgpv_rec.id := NULL;
7715      lp_lacpln_rgpv_rec.rgd_code := 'LACPLN';
7716      lp_lacpln_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7717      lp_lacpln_rgpv_rec.chr_id := p_durv_rec.chr_id;
7718      lp_lacpln_rgpv_rec.rgp_type := 'KRG';
7719 
7720      OKL_RULE_PUB.create_rule_group(
7721          p_api_version    => p_api_version,
7722          p_init_msg_list  => p_init_msg_list,
7723          x_return_status  => x_return_status,
7724          x_msg_count      => x_msg_count,
7725          x_msg_data       => x_msg_data,
7726          p_rgpv_rec       => lp_lacpln_rgpv_rec,
7727          x_rgpv_rec       => lx_lacpln_rgpv_rec);
7728 
7729        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7730           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7731        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7732           RAISE OKC_API.G_EXCEPTION_ERROR;
7733        END IF;
7734 
7735        x_durv_rec.rg_lacpln_id := lx_lacpln_rgpv_rec.id;
7736 
7737     ELSIF (p_durv_rec.rg_lacpln_id IS NOT NULL ) THEN
7738 
7739      lp_lacpln_rgpv_rec.id := p_durv_rec.rg_lacpln_id;
7740      lp_lacpln_rgpv_rec.rgd_code := 'LACPLN';
7741      lp_lacpln_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7742      lp_lacpln_rgpv_rec.chr_id := p_durv_rec.chr_id;
7743      lp_lacpln_rgpv_rec.rgp_type := 'KRG';
7744 
7745      OKL_RULE_PUB.update_rule_group(
7746          p_api_version    => p_api_version,
7747          p_init_msg_list  => p_init_msg_list,
7748          x_return_status  => x_return_status,
7749          x_msg_count      => x_msg_count,
7750          x_msg_data       => x_msg_data,
7751          p_rgpv_rec       => lp_lacpln_rgpv_rec,
7752          x_rgpv_rec       => lx_lacpln_rgpv_rec);
7753 
7754        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7755           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7756        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7757           RAISE OKC_API.G_EXCEPTION_ERROR;
7758        END IF;
7759 
7760     END IF;
7761 
7762  -- rule lacpln
7763     IF (p_durv_rec.r_lacpln_id IS NULL) THEN
7764 
7765      lp_lacpln_rulv_rec.id := NULL;
7766      lp_lacpln_rulv_rec.rgp_id := lx_lacpln_rgpv_rec.id;
7767      lp_lacpln_rulv_rec.rule_information_category := 'LACPLN';
7768      lp_lacpln_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7769      lp_lacpln_rulv_rec.rule_information1 := p_durv_rec.r_lacpln_rule_information1;
7770      lp_lacpln_rulv_rec.WARN_YN := 'N';
7771      lp_lacpln_rulv_rec.STD_TEMPLATE_YN := 'N';
7772 
7773      OKL_RULE_PUB.create_rule(
7774          p_api_version    => p_api_version,
7775          p_init_msg_list  => p_init_msg_list,
7776          x_return_status  => x_return_status,
7777          x_msg_count      => x_msg_count,
7778          x_msg_data       => x_msg_data,
7779          p_rulv_rec       => lp_lacpln_rulv_rec,
7780          x_rulv_rec       => lx_lacpln_rulv_rec);
7781 
7782        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7783           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7784        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7785           RAISE OKC_API.G_EXCEPTION_ERROR;
7786        END IF;
7787 
7788        x_durv_rec.r_lacpln_id := lx_lacpln_rulv_rec.id;
7789 
7790     ELSIF (p_durv_rec.r_lacpln_id IS NOT NULL ) THEN
7791 
7792     l_lacpln_yn := 'X';
7793 
7794     OPEN get_lacpln_csr;
7795     FETCH get_lacpln_csr INTO l_lacpln_yn;
7796     CLOSE get_lacpln_csr;
7797 
7798     IF( l_lacpln_yn = 'Y' AND  NVL(p_durv_rec.r_lacpln_rule_information1,'N') = 'N') THEN
7799 
7800 	l_fin_ast_id := NULL;
7801         -- update capitalized interest to null
7802 	FOR l_get_fin_ast_csr IN get_fin_ast_csr LOOP
7803 
7804 	  -- l_fin_ast_id := l_get_fin_ast_csr.id;
7805 	  lp_klev_rec.id := l_get_fin_ast_csr.id;
7806 	  lp_clev_rec.id := l_get_fin_ast_csr.id;
7807           lp_klev_rec.capitalized_interest := NULL;
7808 
7809           OKL_CONTRACT_PUB.update_contract_line(
7810             p_api_version    => p_api_version,
7811             p_init_msg_list  => p_init_msg_list,
7812             x_return_status  => x_return_status,
7813             x_msg_count      => x_msg_count,
7814             x_msg_data       => x_msg_data,
7815 	    p_clev_rec       => lp_clev_rec,
7816 	    p_klev_rec       => lp_klev_rec,
7817 	    p_edit_mode      => 'N',
7818 	    x_clev_rec       => lx_clev_rec,
7819 	    x_klev_rec       => lx_klev_rec);
7820 
7821           IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7822              RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7823           ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7824              RAISE OKC_API.G_EXCEPTION_ERROR;
7825           END IF;
7826 
7827  	END LOOP;
7828 
7829      END IF;
7830 
7831      lp_lacpln_rulv_rec.id := p_durv_rec.r_lacpln_id;
7832      lp_lacpln_rulv_rec.rgp_id := lx_lacpln_rgpv_rec.id;
7833      lp_lacpln_rulv_rec.rule_information_category := 'LACPLN';
7834      lp_lacpln_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7835      lp_lacpln_rulv_rec.rule_information1 := p_durv_rec.r_lacpln_rule_information1;
7836      lp_lacpln_rulv_rec.WARN_YN := 'N';
7837      lp_lacpln_rulv_rec.STD_TEMPLATE_YN := 'N';
7838 
7839      OKL_RULE_PUB.update_rule(
7840          p_api_version    => p_api_version,
7841          p_init_msg_list  => p_init_msg_list,
7842          x_return_status  => x_return_status,
7843          x_msg_count      => x_msg_count,
7844          x_msg_data       => x_msg_data,
7845          p_rulv_rec       => lp_lacpln_rulv_rec,
7846          x_rulv_rec       => lx_lacpln_rulv_rec);
7847 
7848        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7849           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7850        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7851           RAISE OKC_API.G_EXCEPTION_ERROR;
7852        END IF;
7853 
7854     END IF;
7855 
7856 
7857  -- rule group lapact
7858     IF (p_durv_rec.rg_lapact_id IS NULL) THEN
7859 
7860      lp_lapact_rgpv_rec.id := NULL;
7861      lp_lapact_rgpv_rec.rgd_code := 'LAPACT';
7862      lp_lapact_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7863      lp_lapact_rgpv_rec.chr_id := p_durv_rec.chr_id;
7864      lp_lapact_rgpv_rec.rgp_type := 'KRG';
7865 
7866      OKL_RULE_PUB.create_rule_group(
7867          p_api_version    => p_api_version,
7868          p_init_msg_list  => p_init_msg_list,
7869          x_return_status  => x_return_status,
7870          x_msg_count      => x_msg_count,
7871          x_msg_data       => x_msg_data,
7872          p_rgpv_rec       => lp_lapact_rgpv_rec,
7873          x_rgpv_rec       => lx_lapact_rgpv_rec);
7874 
7875        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7876           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7877        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7878           RAISE OKC_API.G_EXCEPTION_ERROR;
7879        END IF;
7880 
7881        x_durv_rec.rg_lapact_id := lx_lapact_rgpv_rec.id;
7882 
7883     ELSIF (p_durv_rec.rg_lapact_id IS NOT NULL ) THEN
7884 
7885      lp_lapact_rgpv_rec.id := p_durv_rec.rg_lapact_id;
7886      lp_lapact_rgpv_rec.rgd_code := 'LAPACT';
7887      lp_lapact_rgpv_rec.dnz_chr_id := p_durv_rec.chr_id;
7888      lp_lapact_rgpv_rec.chr_id := p_durv_rec.chr_id;
7889      lp_lapact_rgpv_rec.rgp_type := 'KRG';
7890 
7891      OKL_RULE_PUB.update_rule_group(
7892          p_api_version    => p_api_version,
7893          p_init_msg_list  => p_init_msg_list,
7894          x_return_status  => x_return_status,
7895          x_msg_count      => x_msg_count,
7896          x_msg_data       => x_msg_data,
7897          p_rgpv_rec       => lp_lapact_rgpv_rec,
7898          x_rgpv_rec       => lx_lapact_rgpv_rec);
7899 
7900        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7901           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7902        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7903           RAISE OKC_API.G_EXCEPTION_ERROR;
7904        END IF;
7905 
7906     END IF;
7907 
7908  -- rule lapact
7909     IF (p_durv_rec.r_lapact_id IS NULL) THEN
7910 
7911      lp_lapact_rulv_rec.id := NULL;
7912      lp_lapact_rulv_rec.rgp_id := lx_lapact_rgpv_rec.id;
7913      lp_lapact_rulv_rec.rule_information_category := 'LAPACT';
7914      lp_lapact_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7915      lp_lapact_rulv_rec.rule_information1 := p_durv_rec.r_lapact_rule_information1;
7916      lp_lapact_rulv_rec.WARN_YN := 'N';
7917      lp_lapact_rulv_rec.STD_TEMPLATE_YN := 'N';
7918 
7919      OKL_RULE_PUB.create_rule(
7920          p_api_version    => p_api_version,
7921          p_init_msg_list  => p_init_msg_list,
7922          x_return_status  => x_return_status,
7923          x_msg_count      => x_msg_count,
7924          x_msg_data       => x_msg_data,
7925          p_rulv_rec       => lp_lapact_rulv_rec,
7926          x_rulv_rec       => lx_lapact_rulv_rec);
7927 
7928        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7929           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7930        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7931           RAISE OKC_API.G_EXCEPTION_ERROR;
7932        END IF;
7933 
7934        x_durv_rec.r_lapact_id := lx_lapact_rulv_rec.id;
7935 
7936     ELSIF (p_durv_rec.r_lapact_id IS NOT NULL ) THEN
7937 
7938      lp_lapact_rulv_rec.id := p_durv_rec.r_lapact_id;
7939      lp_lapact_rulv_rec.rgp_id := lx_lapact_rgpv_rec.id;
7940      lp_lapact_rulv_rec.rule_information_category := 'LAPACT';
7941      lp_lapact_rulv_rec.dnz_chr_id := p_durv_rec.chr_id;
7942      lp_lapact_rulv_rec.rule_information1 := p_durv_rec.r_lapact_rule_information1;
7943      lp_lapact_rulv_rec.WARN_YN := 'N';
7944      lp_lapact_rulv_rec.STD_TEMPLATE_YN := 'N';
7945 
7946      OKL_RULE_PUB.update_rule(
7947          p_api_version    => p_api_version,
7948          p_init_msg_list  => p_init_msg_list,
7949          x_return_status  => x_return_status,
7950          x_msg_count      => x_msg_count,
7951          x_msg_data       => x_msg_data,
7952          p_rulv_rec       => lp_lapact_rulv_rec,
7953          x_rulv_rec       => lx_lapact_rulv_rec);
7954 
7955        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7956           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7957        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7958           RAISE OKC_API.G_EXCEPTION_ERROR;
7959        END IF;
7960 
7961     END IF;
7962 
7963   IF okl_context.get_okc_org_id  IS NULL THEN
7964 	l_chr_id := p_durv_rec.chr_id;
7965 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
7966   END IF;
7967 
7968   IF (p_durv_rec.program_contract_number IS NOT NULL OR old_khr_id IS NOT NULL) THEN
7969 
7970        copy_rules(
7971         p_api_version       => p_api_version,
7972         p_init_msg_list     => p_init_msg_list,
7973         x_return_status     => x_return_status,
7974         x_msg_count         => x_msg_count,
7975         x_msg_data          => x_msg_data,
7976         p_old_khr_id        => old_khr_id,
7977         p_prog_override_yn  => p_durv_rec.khr_generate_accrual_yn, -- program flag yn
7978         p_source_id         => x_durv_rec.khr_khr_id, -- program id
7979         p_dest_id           => p_durv_rec.chr_id,
7980         p_org_id            => okl_context.get_okc_org_id,
7981         p_organization_id   => okl_context.get_okc_organization_id
7982         );
7983 
7984       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7985          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7986       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7987          RAISE OKC_API.G_EXCEPTION_ERROR;
7988       END IF;
7989 
7990    END IF;
7991 
7992  End if; --close of release if block
7993    /*
7994    -- mvasudev, 08/17/2004
7995    -- Code change to enable Business Event
7996    */
7997 	raise_business_event(p_chr_id        => p_durv_rec.chr_id
7998 	                    ,x_return_status => x_return_status);
7999     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8000        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8001     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8002        RAISE OKL_API.G_EXCEPTION_ERROR;
8003     END IF;
8004 
8005    /*
8006    -- mvasudev, 08/17/2004
8007    -- END, Code change to enable Business Event
8008    */
8009 
8010 
8011   OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,	 x_msg_data	=> x_msg_data);
8012 
8013   EXCEPTION
8014     WHEN OKC_API.G_EXCEPTION_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_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 OKC_API.G_EXCEPTION_UNEXPECTED_ERROR 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  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
8028 			x_msg_count => x_msg_count,
8029 			x_msg_data  => x_msg_data,
8030 			p_api_type  => g_api_type);
8031 
8032     WHEN OTHERS THEN
8033       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8034 			p_api_name  => l_api_name,
8035 			p_pkg_name  => g_pkg_name,
8036 			p_exc_name  => 'OTHERS',
8037 			x_msg_count => x_msg_count,
8038 			x_msg_data  => x_msg_data,
8039 			p_api_type  => g_api_type);
8040   END;
8041 
8042 PROCEDURE load_deal(
8043       p_api_version                  IN NUMBER,
8044       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8045       x_return_status                OUT NOCOPY VARCHAR2,
8046       x_msg_count                    OUT NOCOPY NUMBER,
8047       x_msg_data                     OUT NOCOPY VARCHAR2,
8048       p_durv_rec                     IN  deal_rec_type,
8049       x_durv_rec                     OUT NOCOPY  deal_rec_type
8050     ) AS
8051 
8052     l_api_name	       VARCHAR2(30) := 'load_deal';
8053     l_api_version      CONSTANT NUMBER	  := 1.0;
8054 
8055     l_template_yn      OKC_K_HEADERS_B.TEMPLATE_YN%TYPE;
8056     l_chr_type         OKC_K_HEADERS_B.CHR_TYPE%TYPE;
8057     l_contract_number  OKC_K_HEADERS_B.CHR_TYPE%TYPE;
8058     l_object_code      VARCHAR2(30) DEFAULT NULL;
8059 
8060     l_ak_prompt        AK_ATTRIBUTES_VL.attribute_label_long%TYPE;
8061     l_chr_id	       NUMBER;
8062     row_cnt  NUMBER;
8063 
8064     CURSOR l_load_hdr_csr IS
8065     SELECT id,
8066         contract_number,
8067         description,
8068         sts_code,
8069         start_date,
8070         end_date,
8071         term_duration,
8072         cust_po_number,
8073         inv_organization_id,
8074         authoring_org_id,
8075         generate_accrual_yn,
8076         syndicatable_yn,
8077         prefunding_eligible_yn,
8078         revolving_credit_yn,
8079         converted_account_yn,
8080         credit_act_yn,
8081         template_yn,
8082         date_signed,
8083         date_deal_transferred,
8084         accepted_date,
8085         expected_delivery_date,
8086         amd_code,
8087         deal_type,
8088 --        orig_system_reference1,
8089 --        orig_system_source_code,
8090 --        orig_system_id1,
8091         currency_code,
8092         pdt_id,
8093         khr_id
8094     FROM okl_k_headers_full_v
8095     WHERE id = p_durv_rec.chr_id;
8096 
8097 
8098     CURSOR l_vers_version_csr IS
8099     SELECT vers.major_version||'.'||vers.minor_version
8100     FROM okc_k_vers_numbers_v vers
8101     WHERE vers.chr_id = p_durv_rec.chr_id;
8102 
8103     CURSOR l_gvr_csr(p_scs_code VARCHAR2) IS
8104     SELECT mla.contract_number, gvr.chr_id_referred, gvr.id
8105     FROM  okl_k_headers_full_v mla, okc_governances_v gvr
8106     WHERE mla.id = gvr.chr_id_referred
8107     AND mla.scs_code = p_scs_code -- mla or cl
8108     AND gvr.chr_id = p_durv_rec.chr_id
8109     AND gvr.dnz_chr_id = p_durv_rec.chr_id;
8110 
8111     CURSOR l_dff_rule_csr(p_rgd_code VARCHAR2, p_rule_information_category VARCHAR2) IS
8112     SELECT rgp.id, rul.id, rul.rule_information1
8113     FROM  okc_rule_groups_v rgp, okc_rules_v rul
8114     WHERE rgp.id = rul.rgp_id
8115     AND rgp.rgd_code = p_rgd_code
8116     AND rul.rule_information_category = p_rule_information_category
8117     AND rul.dnz_chr_id = p_durv_rec.chr_id
8118     AND rgp.dnz_chr_id = p_durv_rec.chr_id
8119     AND rgp.chr_id = p_durv_rec.chr_id;
8120 
8121     CURSOR l_party_csr(p_rle_code VARCHAR2) IS
8122 	--Start modified abhsaxen for performance SQLID 20563248
8123 	SELECT cpl.id,cpl.object1_id1,cpl.object1_id2,cpl.jtot_object1_code
8124 	    FROM okc_k_party_roles_B cpl
8125 	    WHERE cpl.rle_code = p_rle_code
8126 	    AND cpl.chr_id = p_durv_rec.chr_id
8127 	    AND cpl.dnz_chr_id = p_durv_rec.chr_id
8128 	--end modified abhsaxen for performance SQLID 20563248
8129 	;
8130     CURSOR l_customer_account_csr IS
8131     SELECT rgp.id, rul.id, rul.object1_id1,rul.object1_id2,rul.jtot_object1_code
8132     FROM  okc_rule_groups_v rgp, okc_rules_v rul
8133     WHERE rgp.id = rul.rgp_id
8134     AND rgp.rgd_code = 'LACAN'
8135     AND rul.rule_information_category = 'CAN'
8136     AND rul.dnz_chr_id = p_durv_rec.chr_id
8137     AND rgp.dnz_chr_id = p_durv_rec.chr_id
8138     AND rgp.chr_id = p_durv_rec.chr_id;
8139 
8140     CURSOR l_legal_address_csr(p_cust_id1 VARCHAR2) IS
8141     SELECT cust_site.description
8142     FROM okx_cust_site_uses_v cust_site
8143     WHERE cust_site.party_id = p_cust_id1
8144     AND cust_site.site_use_code = 'LEGAL';
8145 
8146     CURSOR l_product_csr(product_id  NUMBER) IS
8147     SELECT id,name,description
8148     FROM okl_products_v
8149     WHERE id = product_id;
8150 
8151     CURSOR l_currency_csr(p_currency_code  VARCHAR2) IS
8152     SELECT currency_code, name
8153     FROM fnd_currencies_vl
8154     WHERE currency_code = p_currency_code;
8155 
8156     CURSOR l_program_csr(program_id  NUMBER) IS
8157     SELECT id,contract_number
8158     FROM okl_k_headers_full_v
8159     WHERE id = program_id;
8160 
8161     CURSOR l_contact_csr IS
8162 	--Start modified abhsaxen for performance SQLID 20563327
8163 	select ctc.id,ctc.object1_id1,ctc.object1_id2,ctc.jtot_object1_code
8164 	    from okc_k_party_roles_b cpl, okc_contacts ctc
8165 	    where cpl.id = ctc.cpl_id
8166 	    and cpl.rle_code = 'LESSOR'
8167 	    and ctc.cro_code = 'SALESPERSON'
8168 	    and cpl.chr_id = p_durv_rec.chr_id
8169 	    and cpl.dnz_chr_id = p_durv_rec.chr_id
8170 	    and ctc.dnz_chr_id = p_durv_rec.chr_id
8171 	--end modified abhsaxen for performance SQLID 20563327
8172 	;
8173 
8174     CURSOR l_sts_code_csr IS
8175     SELECT CHR.sts_code
8176     FROM OKC_STATUSES_B sts,okc_k_headers_v CHR
8177     WHERE STS.CODE = CHR.STS_CODE
8178     AND CHR.id = p_durv_rec.chr_id;
8179 
8180 
8181   BEGIN
8182 
8183   IF okl_context.get_okc_org_id  IS NULL THEN
8184 	l_chr_id := p_durv_rec.chr_id;
8185 	okl_context.set_okc_org_context(p_chr_id => l_chr_id );
8186   END IF;
8187 
8188     x_return_status := OKC_API.START_ACTIVITY(
8189 			p_api_name      => l_api_name,
8190 			p_pkg_name      => g_pkg_name,
8191 			p_init_msg_list => p_init_msg_list,
8192 			l_api_version   => l_api_version,
8193 			p_api_version   => p_api_version,
8194 			p_api_type      => g_api_type,
8195 			x_return_status => x_return_status);
8196 
8197     -- check if activity started successfully
8198     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8199        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8200     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8201        RAISE OKC_API.G_EXCEPTION_ERROR;
8202     END IF;
8203 /*
8204     open l_load_hdr_csr;
8205     fetch l_load_hdr_csr into   x_durv_rec.chr_id,
8206  		   	        x_durv_rec.chr_contract_number,
8207     				x_durv_rec.chr_description,
8208     				x_durv_rec.chr_sts_code,
8209     				x_durv_rec.chr_start_date,
8210     				x_durv_rec.chr_end_date,
8211     				x_durv_rec.khr_term_duration,
8212     				x_durv_rec.chr_cust_po_number,
8213     				x_durv_rec.chr_inv_organization_id,
8214     				x_durv_rec.chr_authoring_org_id,
8215     				x_durv_rec.khr_generate_accrual_yn,
8216     				x_durv_rec.khr_syndicatable_yn,
8217     				x_durv_rec.khr_prefunding_eligible_yn,
8218     				x_durv_rec.khr_revolving_credit_yn,
8219     				x_durv_rec.khr_converted_account_yn,
8220     				x_durv_rec.khr_credit_act_yn,
8221     				x_durv_rec.chr_template_yn,
8222     				x_durv_rec.chr_date_signed,
8223     				x_durv_rec.khr_date_deal_transferred,
8224     				x_durv_rec.khr_accepted_date,
8225     				x_durv_rec.khr_expected_delivery_date,
8226     				x_durv_rec.khr_amd_code,
8227     				x_durv_rec.khr_deal_type,
8228 --    				x_durv_rec.chr_orig_system_reference1,
8229 --    				x_durv_rec.chr_orig_system_source_code,
8230 --    				x_durv_rec.chr_orig_system_id1,
8231     				x_durv_rec.chr_currency_code,
8232     				x_durv_rec.khr_pdt_id,
8233     				x_durv_rec.khr_khr_id;
8234     close  l_load_hdr_csr;
8235 
8236     open l_vers_version_csr;
8237     fetch l_vers_version_csr into x_durv_rec.vers_version;
8238     close l_vers_version_csr;
8239 
8240     open l_gvr_csr('MASTER_LEASE');
8241     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;
8242     close l_gvr_csr;
8243 
8244     open l_gvr_csr('CREDITLINE_CONTRACT');
8245     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;
8246     close l_gvr_csr;
8247 
8248     open l_dff_rule_csr('LARLES','LARLES');
8249     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;
8250     close l_dff_rule_csr;
8251 
8252     open l_dff_rule_csr('LANNTF','LANNTF');
8253     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;
8254     close l_dff_rule_csr;
8255 
8256     open l_dff_rule_csr('LATOWN','LATOWN');
8257     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;
8258     close l_dff_rule_csr;
8259 
8260     open l_dff_rule_csr('LAPACT','LAPACT');
8261     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;
8262     close l_dff_rule_csr;
8263 
8264     open l_dff_rule_csr('LAREBL','LAREBL');
8265     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;
8266     close l_dff_rule_csr;
8267 
8268     open l_dff_rule_csr('LACPLN','LACPLN');
8269     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;
8270     close l_dff_rule_csr;
8271 
8272     open l_party_csr('LESSEE');
8273     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;
8274     close l_party_csr;
8275 
8276     open l_party_csr('LESSOR');
8277     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;
8278     close l_party_csr;
8279 
8280     open l_customer_account_csr;
8281     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;
8282     close l_customer_account_csr;
8283 
8284     open l_legal_address_csr(x_durv_rec.cust_object1_id1);
8285     fetch l_legal_address_csr into x_durv_rec.cust_site_description;
8286     close l_legal_address_csr;
8287 
8288     open l_product_csr(x_durv_rec.khr_pdt_id);
8289     fetch l_product_csr into x_durv_rec.khr_pdt_id,x_durv_rec.product_name,x_durv_rec.product_description;
8290     close l_product_csr;
8291 
8292     open l_currency_csr(x_durv_rec.chr_currency_code);
8293     fetch l_currency_csr into x_durv_rec.chr_currency_code, x_durv_rec.currency_name;
8294     close l_currency_csr;
8295 
8296     open l_program_csr(x_durv_rec.khr_khr_id);
8297     fetch l_program_csr into x_durv_rec.khr_khr_id,x_durv_rec.program_contract_number;
8298     close l_program_csr;
8299 
8300     open l_contact_csr;
8301     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;
8302     close l_contact_csr;
8303 */
8304 /*
8305     open l_set_of_books_csr;
8306     fetch l_set_of_books_csr into x_durv_rec.books_short_name,x_durv_rec.oper_units_name;
8307     close l_set_of_books_csr;
8308 */
8309 /*
8310     open l_sts_code_csr;
8311     fetch l_sts_code_csr into x_durv_rec.chr_sts_code;
8312     close l_sts_code_csr;
8313     */
8314   OKC_API.END_ACTIVITY(x_msg_count	=> x_msg_count,	 x_msg_data	=> x_msg_data);
8315 
8316   EXCEPTION
8317     WHEN OKC_API.G_EXCEPTION_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_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 OKC_API.G_EXCEPTION_UNEXPECTED_ERROR 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  => 'OKC_API.G_RET_STS_UNEXP_ERROR',
8331 			x_msg_count => x_msg_count,
8332 			x_msg_data  => x_msg_data,
8333 			p_api_type  => g_api_type);
8334 
8335     WHEN OTHERS THEN
8336       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
8337 			p_api_name  => l_api_name,
8338 			p_pkg_name  => g_pkg_name,
8339 			p_exc_name  => 'OTHERS',
8340 			x_msg_count => x_msg_count,
8341 			x_msg_data  => x_msg_data,
8342 			p_api_type  => g_api_type);
8343   END;
8344 
8345 
8346 Procedure confirm_cancel_contract
8347                   (p_api_version          IN  NUMBER,
8348                    p_init_msg_list        IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8349                    x_return_status        OUT NOCOPY VARCHAR2,
8350                    x_msg_count            OUT NOCOPY NUMBER,
8351                    x_msg_data             OUT NOCOPY VARCHAR2,
8352                    p_contract_id          IN  NUMBER,
8353                    p_contract_number      IN VARCHAR2) AS
8354 
8355 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
8356 l_api_name             CONSTANT varchar2(30) := 'confirm_cancel_contract';
8357 l_api_version          CONSTANT NUMBER := 1.0;
8358 
8359 Begin
8360      x_return_status := OKL_API.G_RET_STS_SUCCESS;
8361     -- Call start_activity to create savepoint, check compatibility
8362     -- and initialize message list
8363     x_return_status := OKL_API.START_ACTIVITY (
8364                                l_api_name
8365                                ,p_init_msg_list
8366                                ,'_PVT'
8367                                ,x_return_status);
8368     -- Check if activity started successfully
8369     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8370        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8371     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8372        RAISE OKL_API.G_EXCEPTION_ERROR;
8373     END IF;
8374 
8375     okl_maintain_contract_pvt.confirm_cancel_contract(
8376       p_api_version    => p_api_version,
8377       p_init_msg_list  => p_init_msg_list,
8378       x_return_status  => x_return_status,
8379       x_msg_count      => x_msg_count,
8380       x_msg_data       => x_msg_data,
8381       p_contract_id    => p_contract_id,
8382       p_new_contract_number => p_contract_number);
8383 
8384     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8385        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8386     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8387        RAISE OKL_API.G_EXCEPTION_ERROR;
8388     END IF;
8389 
8390     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8391 
8392     EXCEPTION
8393     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8394     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8395                                l_api_name,
8396                                G_PKG_NAME,
8397                                'OKL_API.G_RET_STS_ERROR',
8398                                x_msg_count,
8399                                x_msg_data,
8400                                '_PVT');
8401     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8402     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8403                               l_api_name,
8404                               G_PKG_NAME,
8405                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8406                               x_msg_count,
8407                               x_msg_data,
8408                               '_PVT');
8409     WHEN OTHERS THEN
8410     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8411                               l_api_name,
8412                               G_PKG_NAME,
8413                               'OTHERS',
8414                               x_msg_count,
8415                               x_msg_data,
8416                               '_PVT');
8417 
8418 end;
8419 
8420 PROCEDURE create_party(
8421       p_api_version                  IN NUMBER,
8422       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8423       x_return_status                OUT NOCOPY VARCHAR2,
8424       x_msg_count                    OUT NOCOPY NUMBER,
8425       x_msg_data                     OUT NOCOPY VARCHAR2,
8426       p_kpl_rec                 IN  party_rec_type,
8427       x_kpl_rec                 OUT NOCOPY party_rec_type
8428       ) AS
8429 
8430 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
8431 l_api_name             CONSTANT varchar2(30) := 'create_party';
8432 l_api_version          CONSTANT NUMBER := 1.0;
8433 
8434 lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8435 lx_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8436 lp_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8437 lx_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8438 
8439 Begin
8440      x_return_status := OKL_API.G_RET_STS_SUCCESS;
8441     -- Call start_activity to create savepoint, check compatibility
8442     -- and initialize message list
8443     x_return_status := OKL_API.START_ACTIVITY (
8444                                l_api_name
8445                                ,p_init_msg_list
8446                                ,'_PVT'
8447                                ,x_return_status);
8448     -- Check if activity started successfully
8449     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8450        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8451     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8452        RAISE OKL_API.G_EXCEPTION_ERROR;
8453     END IF;
8454 
8455     lp_cplv_rec.id := p_kpl_rec.id;
8456     lp_cplv_rec.object1_id1 := p_kpl_rec.object1_id1;
8457     lp_cplv_rec.object1_id2 := p_kpl_rec.object1_id2;
8458     lp_cplv_rec.jtot_object1_code := p_kpl_rec.jtot_object1_code;
8459     lp_cplv_rec.rle_code := p_kpl_rec.rle_code;
8460     lp_cplv_rec.dnz_chr_id := p_kpl_rec.dnz_chr_id;
8461     lp_cplv_rec.chr_id := p_kpl_rec.chr_id;
8462     lp_kplv_rec.attribute_category := p_kpl_rec.attribute_category;
8463     lp_kplv_rec.attribute1 := p_kpl_rec.attribute1;
8464     lp_kplv_rec.attribute2 := p_kpl_rec.attribute2;
8465     lp_kplv_rec.attribute3 := p_kpl_rec.attribute3;
8466     lp_kplv_rec.attribute4 := p_kpl_rec.attribute4;
8467     lp_kplv_rec.attribute5 := p_kpl_rec.attribute5;
8468     lp_kplv_rec.attribute6 := p_kpl_rec.attribute6;
8469     lp_kplv_rec.attribute7 := p_kpl_rec.attribute7;
8470     lp_kplv_rec.attribute8 := p_kpl_rec.attribute8;
8471     lp_kplv_rec.attribute9 := p_kpl_rec.attribute9;
8472     lp_kplv_rec.attribute10 := p_kpl_rec.attribute10;
8473     lp_kplv_rec.attribute11 := p_kpl_rec.attribute11;
8474     lp_kplv_rec.attribute12 := p_kpl_rec.attribute12;
8475     lp_kplv_rec.attribute13 := p_kpl_rec.attribute13;
8476     lp_kplv_rec.attribute14 := p_kpl_rec.attribute14;
8477     lp_kplv_rec.attribute15 := p_kpl_rec.attribute15;
8478 
8479     IF(p_kpl_rec.rle_code IS NOT NULL AND
8480     	NOT (p_kpl_rec.rle_code = 'LESSEE' OR p_kpl_rec.rle_code = 'LESSOR')) THEN
8481      lp_kplv_rec.validate_dff_yn := 'Y';
8482     END IF;
8483 
8484     okl_k_party_roles_pvt.create_k_party_role(
8485       p_api_version      => p_api_version,
8486       p_init_msg_list    => p_init_msg_list,
8487       x_return_status    => x_return_status,
8488       x_msg_count        => x_msg_count,
8489       x_msg_data         => x_msg_data,
8490       p_cplv_rec         => lp_cplv_rec,
8491       x_cplv_rec         => lx_cplv_rec,
8492       p_kplv_rec         => lp_kplv_rec,
8493       x_kplv_rec         => lx_kplv_rec);
8494 
8495     x_kpl_rec.id := lx_cplv_rec.id;
8496 
8497     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8498        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8499     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8500        RAISE OKL_API.G_EXCEPTION_ERROR;
8501     END IF;
8502 
8503     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8504 
8505     EXCEPTION
8506     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8507     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8508                                l_api_name,
8509                                G_PKG_NAME,
8510                                'OKL_API.G_RET_STS_ERROR',
8511                                x_msg_count,
8512                                x_msg_data,
8513                                '_PVT');
8514     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8515     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8516                               l_api_name,
8517                               G_PKG_NAME,
8518                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8519                               x_msg_count,
8520                               x_msg_data,
8521                               '_PVT');
8522     WHEN OTHERS THEN
8523     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8524                               l_api_name,
8525                               G_PKG_NAME,
8526                               'OTHERS',
8527                               x_msg_count,
8528                               x_msg_data,
8529                               '_PVT');
8530 
8531 end;
8532 
8533 PROCEDURE update_party(
8534       p_api_version                  IN NUMBER,
8535       p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
8536       x_return_status                OUT NOCOPY VARCHAR2,
8537       x_msg_count                    OUT NOCOPY NUMBER,
8538       x_msg_data                     OUT NOCOPY VARCHAR2,
8539       p_kpl_rec                 IN  party_rec_type,
8540       x_kpl_rec                 OUT NOCOPY party_rec_type
8541       ) AS
8542 
8543 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
8544 l_api_name             CONSTANT varchar2(30) := 'update_party';
8545 l_api_version          CONSTANT NUMBER := 1.0;
8546 
8547 lp_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8548 lx_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
8549 lp_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8550 lx_kplv_rec okl_k_party_roles_pvt.kplv_rec_type;
8551 
8552 Begin
8553      x_return_status := OKL_API.G_RET_STS_SUCCESS;
8554     -- Call start_activity to create savepoint, check compatibility
8555     -- and initialize message list
8556     x_return_status := OKL_API.START_ACTIVITY (
8557                                l_api_name
8558                                ,p_init_msg_list
8559                                ,'_PVT'
8560                                ,x_return_status);
8561     -- Check if activity started successfully
8562     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8563        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8564     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8565        RAISE OKL_API.G_EXCEPTION_ERROR;
8566     END IF;
8567 
8568     lp_cplv_rec.id := p_kpl_rec.id;
8569     lp_cplv_rec.object1_id1 := p_kpl_rec.object1_id1;
8570     lp_cplv_rec.object1_id2 := p_kpl_rec.object1_id2;
8571     lp_cplv_rec.rle_code := p_kpl_rec.rle_code;
8572     lp_cplv_rec.dnz_chr_id := p_kpl_rec.dnz_chr_id;
8573     lp_cplv_rec.chr_id := p_kpl_rec.chr_id;
8574     lp_kplv_rec.attribute_category := p_kpl_rec.attribute_category;
8575     lp_kplv_rec.attribute1 := p_kpl_rec.attribute1;
8576     lp_kplv_rec.attribute2 := p_kpl_rec.attribute2;
8577     lp_kplv_rec.attribute3 := p_kpl_rec.attribute3;
8578     lp_kplv_rec.attribute4 := p_kpl_rec.attribute4;
8579     lp_kplv_rec.attribute5 := p_kpl_rec.attribute5;
8580     lp_kplv_rec.attribute6 := p_kpl_rec.attribute6;
8581     lp_kplv_rec.attribute7 := p_kpl_rec.attribute7;
8582     lp_kplv_rec.attribute8 := p_kpl_rec.attribute8;
8583     lp_kplv_rec.attribute9 := p_kpl_rec.attribute9;
8584     lp_kplv_rec.attribute10 := p_kpl_rec.attribute10;
8585     lp_kplv_rec.attribute11 := p_kpl_rec.attribute11;
8586     lp_kplv_rec.attribute12 := p_kpl_rec.attribute12;
8587     lp_kplv_rec.attribute13 := p_kpl_rec.attribute13;
8588     lp_kplv_rec.attribute14 := p_kpl_rec.attribute14;
8589     lp_kplv_rec.attribute15 := p_kpl_rec.attribute15;
8590     lp_kplv_rec.validate_dff_yn := 'Y';
8591 
8592     okl_k_party_roles_pvt.update_k_party_role(
8593       p_api_version      => p_api_version,
8594       p_init_msg_list    => p_init_msg_list,
8595       x_return_status    => x_return_status,
8596       x_msg_count        => x_msg_count,
8597       x_msg_data         => x_msg_data,
8598       p_cplv_rec         => lp_cplv_rec,
8599       x_cplv_rec         => lx_cplv_rec,
8600       p_kplv_rec         => lp_kplv_rec,
8601       x_kplv_rec         => lx_kplv_rec);
8602 
8603 
8604     x_kpl_rec.id := lx_cplv_rec.id;
8605 
8606     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8607        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8608     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8609        RAISE OKL_API.G_EXCEPTION_ERROR;
8610     END IF;
8611 
8612     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
8613 
8614     EXCEPTION
8615     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8616     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8617                                l_api_name,
8618                                G_PKG_NAME,
8619                                'OKL_API.G_RET_STS_ERROR',
8620                                x_msg_count,
8621                                x_msg_data,
8622                                '_PVT');
8623     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8624     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8625                               l_api_name,
8626                               G_PKG_NAME,
8627                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8628                               x_msg_count,
8629                               x_msg_data,
8630                               '_PVT');
8631     WHEN OTHERS THEN
8632     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8633                               l_api_name,
8634                               G_PKG_NAME,
8635                               'OTHERS',
8636                               x_msg_count,
8637                               x_msg_data,
8638                               '_PVT');
8639 
8640 end;
8641 
8642 END Okl_Deal_Create_Pub;