DBA Data[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;