[Home] [Help]
PACKAGE BODY: APPS.OKL_VP_COPY_CONTRACT_PVT
Source
1 PACKAGE BODY okl_vp_copy_contract_pvt as
2 /*$Header: OKLRCPXB.pls 120.8 2008/02/15 11:03:00 abhsaxen noship $*/
3
4 SUBTYPE gvev_rec_type IS OKC_CONTRACT_PUB.gvev_rec_type;
5 SUBTYPE chrv_rec_type IS OKC_CONTRACT_PUB.chrv_rec_type;
6 --fmiao copy pa associations--
7 subtype vasv_rec_type is okl_vas_pvt.vasv_rec_type;
8 subtype vasv_tbl_type is okl_vas_pvt.vasv_tbl_type;
9
10 -- abindal --
11 SUBTYPE ech_rec_type IS okl_ech_pvt.okl_ech_rec;
12 SUBTYPE ecl_tbl_type IS okl_ecl_pvt.okl_ecl_tbl;
13 SUBTYPE ecv_tbl_type IS okl_ecv_pvt.okl_ecv_tbl;
14 SUBTYPE rgr_tbl_type IS okl_rgrp_rules_process_pvt.rgr_tbl_type;
15
16 G_VENDOR_PROGRAM_CODE CONSTANT fnd_lookups.lookup_code%TYPE DEFAULT 'VENDOR_PROGRAM';
17
18 --------------------------------------------------------------------------
19 --Procedure copy_governances - Makes a copy of the okc_governances.
20 --------------------------------------------------------------------------
21 PROCEDURE copy_governances(
22 p_api_version IN NUMBER,
23 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
24 x_return_status OUT NOCOPY VARCHAR2,
25 x_msg_count OUT NOCOPY NUMBER,
26 x_msg_data OUT NOCOPY VARCHAR2,
27 p_from_chr_id IN NUMBER,
28 p_to_chr_id IN NUMBER) IS
29
30 l_gvev_rec gvev_rec_type;
31 x_gvev_rec gvev_rec_type;
32 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
33
34 CURSOR c_governances IS
35 SELECT id
36 FROM okc_governances_v
37 WHERE dnz_chr_id = p_from_chr_id
38 AND cle_id is null;
39
40 ----------------------------------------------------------------------------
41 --Function to populate the contract governance record to be copied.
42 ----------------------------------------------------------------------------
43 FUNCTION get_gvev_rec(p_gve_id IN NUMBER,
44 x_gvev_rec OUT NOCOPY gvev_rec_type)
45 RETURN VARCHAR2 IS
46 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
47 l_no_data_found BOOLEAN := TRUE;
48
49 CURSOR c_gvev_rec IS
50 SELECT DNZ_CHR_ID,
51 ISA_AGREEMENT_ID,
52 CHR_ID,
53 CLE_ID,
54 CHR_ID_REFERRED,
55 CLE_ID_REFERRED,
56 COPIED_ONLY_YN
57 FROM OKC_GOVERNANCES
58 WHERE ID = p_gve_id;
59 BEGIN
60 OPEN c_gvev_rec;
61 FETCH c_gvev_rec
62 INTO x_gvev_rec.DNZ_CHR_ID,
63 x_gvev_rec.ISA_AGREEMENT_ID,
64 x_gvev_rec.CHR_ID,
65 x_gvev_rec.CLE_ID,
66 x_gvev_rec.CHR_ID_REFERRED,
67 x_gvev_rec.CLE_ID_REFERRED,
68 x_gvev_rec.COPIED_ONLY_YN;
69
70 l_no_data_found := c_gvev_rec%NOTFOUND;
71 CLOSE c_gvev_rec;
72 IF l_no_data_found THEN
73 l_return_status := OKL_API.G_RET_STS_ERROR;
74 return(l_return_status);
75 ELSE
76 return(l_return_status);
77 END IF;
78 EXCEPTION
79 WHEN OTHERS THEN
80 -- store SQL error message on message stack for caller
81 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
82 p_msg_name => g_unexpected_error,
83 p_token1 => g_sqlcode_token,
84 p_token1_value => SQLCODE,
85 p_token2 => g_sqlerrm_token,
86 p_token2_value => SQLERRM);
87
88 -- notify caller of an UNEXPECTED error
89 l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
90 return(l_return_status);
91
92 END get_gvev_rec;
93 BEGIN
94 x_return_status := l_return_status;
95 FOR l_c_governances IN c_governances LOOP
96 l_return_status := get_gvev_rec( p_gve_id => l_c_governances.id,
97 x_gvev_rec => l_gvev_rec);
98 l_gvev_rec.chr_id := p_to_chr_id;
99 l_gvev_rec.dnz_chr_id := p_to_chr_id;
100 IF(l_return_status = OKL_API.G_RET_STS_SUCCESS)THEN
101 OKC_CONTRACT_PUB.create_governance(
102 p_api_version => p_api_version,
103 p_init_msg_list => p_init_msg_list,
104 x_return_status => l_return_status,
105 x_msg_count => x_msg_count,
106 x_msg_data => x_msg_data,
107 p_gvev_rec => l_gvev_rec,
108 x_gvev_rec => x_gvev_rec);
109 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
110 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
111 x_return_status := l_return_status;
112 RAISE G_EXCEPTION_HALT_VALIDATION;
113 ELSE
114 x_return_status := l_return_status;
115 END IF;
116 END IF;
117 END IF;
118 END LOOP;
119
120 EXCEPTION
121 WHEN G_EXCEPTION_HALT_VALIDATION THEN
122 NULL;
123 WHEN OTHERS THEN
124 -- store SQL error message on message stack for caller
125 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
126 p_msg_name => g_unexpected_error,
127 p_token1 => g_sqlcode_token,
128 p_token1_value => SQLCODE,
129 p_token2 => g_sqlerrm_token,
130 p_token2_value => SQLERRM);
131
132 -- notify caller of an UNEXPECTED error
133 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
134
135 END copy_governances;
136
137
138 FUNCTION is_copy_allowed(p_chr_id IN NUMBER,p_sts_code IN VARCHAR2 DEFAULT NULL) RETURN varchar2 IS
139
140 l_count NUMBER;
141 l_template_yn VARCHAR2(3);
142 l_return_value VARCHAR2(3) := 'Y';
143
144
145 CURSOR c_template IS
146 SELECT template_yn
147 FROM okc_k_headers_b
148 WHERE id = p_chr_id;
149
150 CURSOR invalid_template IS
151 SELECT count(*)
152 FROM okc_k_headers_b
153 WHERE template_yn = 'Y'
154 AND sysdate between start_date and nvl(end_date, sysdate)
155 AND id = p_chr_id;
156 BEGIN
157 OPEN c_template;
158 FETCH c_template INTO l_template_yn;
159 CLOSE c_template;
160
161 If l_template_yn = 'Y' Then
162 OPEN invalid_template;
163 FETCH invalid_template INTO l_count;
164 CLOSE invalid_template;
165
166 If l_count>0 Then
167 l_return_value := 'Y';
168 RETURN(l_return_value);
169 Else
170 l_return_value := 'N';
171 RETURN(l_return_value);
172 End If;
173 Else
174 l_return_value := 'Y';
175 RETURN(l_return_value);
176 End If;
177 RETURN(l_return_value);
178 END is_copy_allowed;
179
180
181 PROCEDURE copy_contract(p_api_version IN NUMBER,
182 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
183 x_return_status OUT NOCOPY VARCHAR2,
184 x_msg_count OUT NOCOPY NUMBER,
185 x_msg_data OUT NOCOPY VARCHAR2,
186 p_copy_rec IN copy_header_rec_type,
187 x_new_contract_id OUT NOCOPY NUMBER)IS
188
189 l_copy_allowed varchar2(1);
190 l_contract_id number;
191 l_sts_code varchar2(30);
192 l_governances number;
193 l_return_value number;
194 l_chr_id number;
195 l_api_version number := 1.0;
196
197 l_api_name CONSTANT VARCHAR2(30) := 'copy_contract';
198
199 l_from_agreement_number varchar2(120);
200 l_to_agreement_number varchar2(120);
201 l_template_yn varchar2(3);
202 l1_return_status varchar2(3);
203 l2_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
204 l_dummy VARCHAR2(1);
205 l_found BOOLEAN;
206 l_process_id NUMBER;
207
208 l_line_id NUMBER;
209 l_cpl_id NUMBER;
210 l_rrd_id NUMBER;
211 l_authoring_org_id NUMBER; --CDUBEY l_authoring_org_id added for MOAC
212
213 l1_header_rec chrv_rec_type;
214 l2_header_rec chrv_rec_type;
215 l_cpsv_rec OKC_CONTRACT_PUB.cpsv_rec_type;
216
217 CURSOR cur_k_header(p_id number) IS
218 SELECT contract_number,sts_code,authoring_org_id FROM okc_k_headers_v
219 WHERE id=p_id;
220
221
222 CURSOR count_governances(p_from_chr_id number) IS
223 SELECT id
224 FROM okc_governances_v
225 WHERE dnz_chr_id = p_from_chr_id;
226
227 CURSOR l_chr_csr2(contract_no varchar2,contract_no_modifier varchar2) IS
228 SELECT 'x'
229 FROM okc_k_headers_b
230 WHERE contract_number = contract_no
231 AND contract_number_modifier = contract_no_modifier;
232
233 CURSOR cur_contract_process(p_chr_id NUMBER) IS
234 SELECT id FROM okc_k_processes WHERE chr_id = p_chr_id;
235
236 -- begin of block
237
238 --fmiao copy pa associations
239 CURSOR copy_pa_assoc_csr (p_chr_id NUMBER) IS
240 SELECT id
241 FROM okl_vp_associations
242 WHERE chr_id = p_chr_id
243 AND crs_id IS NULL;
244
245 -- cursor for fetching the rules group.
246 CURSOR c_get_rules_csr (cp_chr_id okc_k_headers_b.id%TYPE) IS
247 SELECT rle.id,
248 rle.rgp_id,
249 rle.dnz_chr_id,
250 rle.std_template_yn,
251 rle.warn_yn,
252 rle.rule_information_category,
253 prl.id rule_information1,
254 rle.rule_information2,
255 rle.template_yn,
256 rle.comments,
257 rlg.rgd_code
258 FROM okc_rules_b rle,
259 okc_k_party_roles_b prl,
260 okc_k_party_roles_b prl1,
261 okc_rule_groups_b rlg
262 WHERE rle.dnz_chr_id = cp_chr_id
263 AND prl.dnz_chr_id = cp_chr_id
264 AND prl.rle_code = prl1.rle_code
265 AND prl1.id = rle.rule_information1
266 AND rle.rule_information_category = 'VGLRSP'
267 AND rle.rgp_id = rlg.id;
268
269
270 -- abindal start --
271 CURSOR c_get_agrmt_dates_csr(cp_chr_id okc_k_headers_b.id%TYPE) IS
272 SELECT start_date
273 ,end_date
274 FROM okc_k_headers_b
275 WHERE id = cp_chr_id;
276
277 --abhsxen bug 6481995 start
278 CURSOR cur_k_party_roles(contract_id NUMBER) IS
279 SELECT id FROM okc_k_party_roles_v
280 WHERE chr_id = contract_id
281 AND rle_code = 'OKL_VENDOR';
282
283 l_party_id NUMBER;
284 l_kplv_rec okl_kpl_pvt.kplv_rec_type;
285 x_kplv_rec okl_kpl_pvt.kplv_rec_type;
286 --abhsxen bug 6487870 end
287
288 cv_get_agrmnt_dates c_get_agrmt_dates_csr%ROWTYPE;
289
290 lx_ech_rec ech_rec_type;
291 lx_ecl_tbl ecl_tbl_type;
292 lx_ecv_tbl ecv_tbl_type;
293
294 x_ech_rec ech_rec_type;
295 x_ecl_tbl ecl_tbl_type;
296 x_ecv_tbl ecv_tbl_type;
297 -- abindal end --
298
299 l_rgr_tbl_type rgr_tbl_type;
300 l_vasv_tbl vasv_tbl_type;
301 xl_vasv_tbl vasv_tbl_type;
302 l_vasv_rec vasv_rec_type;
303 i NUMBER;
304 j NUMBER;
305
306 BEGIN
307 x_return_status := OKL_API.START_ACTIVITY(p_api_name => l_api_name
308 ,p_init_msg_list => p_init_msg_list
309 ,p_api_type => '_PVT'
310 ,x_return_status => x_return_status
311 );
312 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
313 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
314 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
315 RAISE OKL_API.G_EXCEPTION_ERROR;
316 END IF;
317
318 x_return_status := OKL_API.G_RET_STS_SUCCESS;
319
320 IF((p_copy_rec.p_to_agreement_number = OKL_API.G_MISS_CHAR) OR (p_copy_rec.p_to_agreement_number IS NULL)) THEN
321 OKL_API.SET_MESSAGE(p_app_name => g_app_name,p_msg_name => 'OKL_COPY_TO_NO_REQD');
322 x_return_status :=okl_api.g_ret_sts_error;
323 RAISE OKL_API.G_EXCEPTION_ERROR;
324 END IF;
325
326 l_contract_id :=p_copy_rec.p_id;
327 l_to_agreement_number :=p_copy_rec.p_to_agreement_number;
328 l_template_yn :=p_copy_rec.p_template_yn;
329
330 open cur_k_header(l_contract_id);
331 fetch cur_k_header into l_from_agreement_number,l_sts_code,l_authoring_org_id; --CDUBEY l_authoring_org_id added for MOAC
332
333 if (cur_k_header%found) then
334 -- to check whether the new contract you want to create already exists
335 open l_chr_csr2(p_copy_rec.p_to_agreement_number,'1.0');
336 fetch l_chr_csr2 into l_dummy;
337 l_found := l_chr_csr2%FOUND;
338 close l_chr_csr2;
339
340 If (l_found) Then
341 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
342 p_msg_name => 'OKL_VP_CONTRACT_EXISTS',
343 p_token1 => 'NUMBER',
344 p_token1_value => p_copy_rec.p_to_agreement_number
345 );
346 RAISE OKL_API.G_EXCEPTION_ERROR;
347 end if;
348
349 l_copy_allowed :=is_copy_allowed(l_contract_id,l_sts_code);
350
351 -- COMMENTING TO BE TAKEN OUT LATER AS PACKAGE OKL_COPY_CONTRACT_PUB HAS NOT BEEN CHECKED IN
352
353 if(l_copy_allowed='Y')then
354 okl_copy_contract_pub.copy_contract(
355 p_api_version => l_api_version,
356 p_init_msg_list => OKC_API.G_TRUE,
357 x_return_status => x_return_status,
358 x_msg_count => x_msg_count,
359 x_msg_data => x_msg_data,
360 p_commit =>okc_api.g_false,
361 p_chr_id =>l_contract_id,
362 p_contract_number =>l_to_agreement_number,
363 p_contract_number_modifier => '1.0',
364 p_to_template_yn => l_template_yn,
365 p_renew_ref_yn => 'N',
366 p_override_org => 'Y',
367 x_chr_id => l_chr_id);
368 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
369 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
370 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
371 RAISE OKL_API.G_EXCEPTION_ERROR;
372 END IF;
373
374 --abhsxen bug 6487870 start
375
376 OPEN cur_k_party_roles(l_chr_id);
377 FETCH cur_k_party_roles INTO l_party_id;
378 IF (cur_k_party_roles%NOTFOUND) THEN
379 CLOSE cur_k_party_roles;
380 OKL_API.set_message(p_app_name => g_app_name,
381 p_msg_name => 'OKL_JTOT_CODE_NOT_FOUND'
382 );
383 RAISE OKL_API.G_EXCEPTION_ERROR;
384 END IF;
385 CLOSE cur_k_party_roles;
386
387 l_kplv_rec.ID :=l_party_id;
388
389 OKL_KPL_PVT.insert_row(
390 p_api_version => p_api_version,
391 p_init_msg_list => p_init_msg_list,
392 x_return_status => x_return_status,
393 x_msg_count => x_msg_count,
394 x_msg_data => x_msg_data,
395 p_kplv_rec => l_kplv_rec,
396 x_kplv_rec => x_kplv_rec);
397
398 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
399 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
400 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
401 RAISE OKL_API.G_EXCEPTION_ERROR;
402 END IF;
403 --abhsxen bug 6487870 end
404
405 -- copy governances
406 copy_governances(
407 p_api_version => p_api_version
408 ,p_init_msg_list => p_init_msg_list
409 ,x_return_status => x_return_status
410 ,x_msg_count => x_msg_count
411 ,x_msg_data => x_msg_data
412 ,p_from_chr_id => l_contract_id
413 ,p_to_chr_id => l_chr_id
414 );
415 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
416 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
417 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
418 RAISE OKL_API.G_EXCEPTION_ERROR;
419 END IF;
420
421 -- fmiao copy pa associations --
422 OPEN copy_pa_assoc_csr (l_contract_id);
423 LOOP
424 FETCH copy_pa_assoc_csr INTO l_vasv_rec.id;
425 EXIT WHEN copy_pa_assoc_csr%NOTFOUND;
426 i := copy_pa_assoc_csr%RowCount;
427 l_vasv_rec.chr_id := l_chr_id;
428 l_vasv_tbl(i) := l_vasv_rec;
429 END LOOP;
430 CLOSE copy_pa_assoc_csr;
431
432 IF(l_vasv_tbl.count <> 0) THEN
433 okl_vp_associations_pvt.copy_vp_associations(
434 p_api_version => p_api_version,
435 p_init_msg_list => p_init_msg_list,
436 x_return_status => x_return_status,
437 x_msg_count => x_msg_count,
438 x_msg_data => x_msg_data,
439 p_vasv_tbl => l_vasv_tbl,
440 x_vasv_tbl => xl_vasv_tbl
441 );
442 END IF;
443
444 -- end fmiao copy pa associations --
445
446 -- updating the rules group record of the new contract created.--
447 j := 0;
448 FOR rules_rec IN c_get_rules_csr(l_chr_id) LOOP
449 j := j + 1;
450 l_rgr_tbl_type(j).rule_id := rules_rec.id;
451 l_rgr_tbl_type(j).rgp_id := rules_rec.rgp_id;
452 l_rgr_tbl_type(j).dnz_chr_id := rules_rec.dnz_chr_id;
453 l_rgr_tbl_type(j).std_template_yn := rules_rec.std_template_yn;
454 l_rgr_tbl_type(j).warn_yn := rules_rec.warn_yn;
455 l_rgr_tbl_type(j).rule_information_category := rules_rec.rule_information_category;
456 l_rgr_tbl_type(j).rule_information1 := rules_rec.rule_information1;
457 l_rgr_tbl_type(j).rule_information2 := rules_rec.rule_information2;
458 l_rgr_tbl_type(j).template_yn := rules_rec.template_yn;
459 l_rgr_tbl_type(j).comments := rules_rec.comments;
460 l_rgr_tbl_type(j).rgd_code := rules_rec.rgd_code;
461 END LOOP;
462 IF(j > 0) THEN
463 okl_rgrp_rules_process_pvt.process_rule_group_rules( p_api_version => p_api_version
464 ,p_init_msg_list => p_init_msg_list
465 ,x_return_status => x_return_status
466 ,x_msg_count => x_msg_count
467 ,x_msg_data => x_msg_data
468 ,p_chr_id => l_chr_id
469 ,p_line_id => l_line_id
470 ,p_cpl_id => l_cpl_id
471 ,p_rrd_id => l_rrd_id
472 ,p_rgr_tbl => l_rgr_tbl_type
473 );
474 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
475 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
476 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
477 RAISE OKL_API.G_EXCEPTION_ERROR;
478 END IF;
479 END IF;
480 -- end rules group updation --
481
482 -- abindal start copy eligibility criteria --
483 OPEN c_get_agrmt_dates_csr(l_chr_id);
484 FETCH c_get_agrmt_dates_csr INTO cv_get_agrmnt_dates;
485 CLOSE c_get_agrmt_dates_csr;
486
487 okl_ecc_values_pvt.get_eligibility_criteria(p_api_version => p_api_version
488 ,p_init_msg_list => p_init_msg_list
489 ,x_return_status => x_return_status
490 ,x_msg_count => x_msg_count
491 ,x_msg_data => x_msg_data
492 ,p_source_id => l_contract_id
493 ,p_source_type => G_VENDOR_PROGRAM_CODE
494 ,x_ech_rec => lx_ech_rec
495 ,x_ecl_tbl => lx_ecl_tbl
496 ,x_ecv_tbl => lx_ecv_tbl
497 );
498
499 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
500 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
501 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
502 RAISE OKL_API.G_EXCEPTION_ERROR;
503 END IF;
504
505 IF(lx_ecl_tbl.count > 0)THEN
506 -- set the eligibility criteria headers id to the original agreement id
507 -- and the source to VENDOR_PROGRAM
508 lx_ech_rec.source_id := l_chr_id;
509 lx_ech_rec.source_object_code := G_VENDOR_PROGRAM_CODE;
510
511 -- pass the criteria set id as null to indicate creation of the eligibility criteria on the original agreement
512 lx_ech_rec.criteria_set_id := NULL;
513
514 FOR i IN lx_ecl_tbl.FIRST..lx_ecl_tbl.LAST LOOP
515 -- is_new_flag = Y indicates create mode
516 lx_ecl_tbl(i).is_new_flag := 'Y';
517 END LOOP;
518
519 FOR i IN lx_ecv_tbl.FIRST..lx_ecv_tbl.LAST LOOP
520 lx_ecv_tbl(i).criterion_value_id := NULL;
521 -- validate_record = N indicates that the values in crit_cat_value1 and crit_cat_value2 will not be
522 -- validated again. since this is the case of synchronization, the validation would have happened while
523 -- saving the criteria values on the change request
524 lx_ecv_tbl(i).validate_record := 'N';
525 END LOOP;
526
527 --call handle_eligibility_criteria
528 okl_ecc_values_pvt.handle_eligibility_criteria(p_api_version => p_api_version
529 ,p_init_msg_list => p_init_msg_list
530 ,x_return_status => x_return_status
531 ,x_msg_count => x_msg_count
532 ,x_msg_data => x_msg_data
533 ,p_source_eff_from => cv_get_agrmnt_dates.start_date
534 ,p_source_eff_to => cv_get_agrmnt_dates.end_date
535 ,x_ech_rec => x_ech_rec -- OUT
536 ,x_ecl_tbl => x_ecl_tbl -- OUT
537 ,x_ecv_tbl => x_ecv_tbl -- OUT
538 ,p_ech_rec => lx_ech_rec -- IN
539 ,p_ecl_tbl => lx_ecl_tbl -- IN
540 ,p_ecv_tbl => lx_ecv_tbl -- IN
541 );
542 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
543 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
544 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
545 RAISE OKL_API.G_EXCEPTION_ERROR;
546 END IF;
547 END IF;
548 -- abindal end copy eligibility criteria --
549
550
551 -- Murthy commented out code for count governances
552 IF(x_return_status = OKL_API.G_RET_STS_SUCCESS) Then
553 x_new_contract_id :=l_chr_id;
554 -- updating to set new contract to status NEW
555
556 l1_header_rec.id := l_chr_id;
557 l1_header_rec.sts_code := 'NEW';
558 l1_header_rec.org_id :=l_authoring_org_id; --CDUBEY added for MOAC
559
560
561 OKC_CONTRACT_PUB.update_contract_header(
562 p_api_version => l_api_version,
563 x_return_status => x_return_status,
564 p_init_msg_list => OKL_API.G_TRUE,
565 x_msg_count => x_msg_count,
566 x_msg_data => x_msg_data,
567 p_restricted_update => OKL_API.G_FALSE,
568 p_chrv_rec => l1_header_rec,
569 x_chrv_rec => l2_header_rec);
570 IF(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
571 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
572 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
573 RAISE OKL_API.G_EXCEPTION_ERROR;
574 END IF;
575
576 IF (l_template_yn = 'Y') THEN
577 -- If template is yes, do not create workflow process. Since it
578 -- is already created in call to copy_contract, delete the
579 -- workflow process for this copied template.
580 OPEN cur_contract_process(l_chr_id);
581 FETCH cur_contract_process INTO l_process_id;
582 IF(cur_contract_process%found) THEN
583 CLOSE cur_contract_process;
584 l_cpsv_rec.id := l_process_id;
585 l_cpsv_rec.chr_id := l_chr_id;
586 OKC_CONTRACT_PVT.delete_contract_process(
587 p_api_version => p_api_version,
588 p_init_msg_list => p_init_msg_list,
589 x_return_status => x_return_status,
590 x_msg_count => x_msg_count,
591 x_msg_data => x_msg_data,
592 p_cpsv_rec => l_cpsv_rec);
593 -- okl delete contract process api failed
594 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
595 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
596 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
597 RAISE OKL_API.G_EXCEPTION_ERROR;
598 END IF;
599 END IF;
600 END IF;
601 ELSE
602 -- okl copy contract api failed
603 IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
604 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
605 ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
606 RAISE OKL_API.G_EXCEPTION_ERROR;
607 END IF;
608 END IF;
609 ELSE
610 -- copy is not allowed as it is a template
611 x_return_status :=OKL_API.G_RET_STS_ERROR;
612 OKC_API.SET_MESSAGE('OKL','OKL_INVALID_TEMPLATE');
613 RAISE OKL_API.G_EXCEPTION_ERROR;
614 END IF;
615 CLOSE cur_k_header;
616 ELSE
617 NULL;
618 CLOSE cur_k_header;
619 END IF;
620 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count ,x_msg_data => x_msg_data );
621
622 EXCEPTION
623 WHEN OKL_API.G_EXCEPTION_ERROR THEN
624 x_return_status := OKL_API.HANDLE_EXCEPTIONS
625 (p_api_name => l_api_name
626 ,p_pkg_name => G_PKG_NAME
627 ,p_exc_name => 'OKL_API.G_RET_STS_ERROR'
628 ,x_msg_count => x_msg_count
629 ,x_msg_data => x_msg_data
630 ,p_api_type => '_PVT'
631 );
632
633 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
634 x_return_status := OKL_API.HANDLE_EXCEPTIONS(l_api_name
635 ,g_pkg_name
636 ,'OKL_API.G_RET_STS_ERROR'
637 ,x_msg_count
638 ,x_msg_data
639 ,'_PVT'
640 );
641 WHEN OTHERS THEN
642 x_return_status := OKL_API.HANDLE_EXCEPTIONS(l_api_name
643 ,g_pkg_name
644 ,'OTHERS'
645 ,x_msg_count
646 ,x_msg_data
647 ,'_PVT'
648 );
649 -- end of function copy contract
650 END copy_contract;
651 END okl_vp_copy_contract_pvt;