DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_COPY_CONTRACT_PVT

Source


1 Package body OKC_COPY_CONTRACT_PVT AS
2 /*$Header: OKCRCPYB.pls 120.20.12010000.2 2008/10/24 08:02:16 ssreekum ship $*/
3 
4   l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
5   SUBTYPE tavv_rec_type 	IS OKC_TIME_PUB.tavv_rec_type;
6   SUBTYPE talv_evt_rec_type 	IS OKC_TIME_PUB.talv_evt_rec_type;
7   SUBTYPE tgdv_ext_rec_type     IS OKC_TIME_PUB.tgdv_ext_rec_type;
8   SUBTYPE tgnv_rec_type 	IS OKC_TIME_PUB.tgnv_rec_type;
9   SUBTYPE isev_rec_type 	IS OKC_TIME_PUB.isev_rec_type;
10   SUBTYPE isev_ext_rec_type 	IS OKC_TIME_PUB.isev_ext_rec_type;
11   SUBTYPE isev_rel_rec_type 	IS OKC_TIME_PUB.isev_rel_rec_type;
12   SUBTYPE igsv_ext_rec_type 	IS OKC_TIME_PUB.igsv_ext_rec_type;
13   SUBTYPE cylv_ext_rec_type 	IS OKC_TIME_PUB.cylv_ext_rec_type;
14   SUBTYPE spnv_rec_type 	IS OKC_TIME_PUB.spnv_rec_type;
15   SUBTYPE tcuv_rec_type 	IS OKC_TIME_PUB.tcuv_rec_type;
16   SUBTYPE rtvv_rec_type 	IS OKC_TIME_PUB.rtvv_rec_type;
17   sUBTYPE ocev_rec_type 	IS OKC_OUTCOME_PUB.ocev_rec_type;
18   SUBTYPE oatv_rec_type 	IS OKC_OUTCOME_PUB.oatv_rec_type;
19   SUBTYPE pavv_rec_type 	IS OKC_PRICE_ADJUSTMENT_PUB.pavv_rec_type;
20   SUBTYPE scnv_rec_type 	IS OKC_SECTIONS_PUB.scnv_rec_type;
21   SUBTYPE sccv_rec_type 	IS OKC_SECTIONS_PUB.sccv_rec_type;
22   SUBTYPE ctiv_rec_type  IS OKC_RULE_PUB.ctiv_rec_type;
23   SUBTYPE rilv_rec_type  IS OKC_RULE_PUB.rilv_rec_type;
24   SUBTYPE gvev_rec_type  IS OKC_CONTRACT_PUB.gvev_rec_type;
25   SUBTYPE patv_rec_type         IS OKC_PRICE_ADJUSTMENT_PUB.patv_rec_type;
26   SUBTYPE paav_rec_type         IS OKC_PRICE_ADJUSTMENT_PUB.paav_rec_type;
27   SUBTYPE pacv_rec_type         IS OKC_PRICE_ADJUSTMENT_PUB.pacv_rec_type;
28   g_chrv_rec chrv_rec_type;
29 
30   g_pricelist              varchar2(100) := NULL; /* For Euro Conversion - Bug 2155930 */
31   g_conversion_type        varchar2(40) := NULL; /* For Euro Conversion - Bug 2155930 */
32   g_conversion_rate        number := NULL; /* For Euro Conversion - Bug 2155930 */
33   g_conversion_date        date := NULL; /* For Euro Conversion - Bug 2155930 */
34 
35   G_COPY_HISTORY_YN             VARCHAR2(3) := 'N';
36   G_FROM_VERSION_NUMBER         NUMBER;
37   -- keep actual G_COPY_HISTORY_YN in l_old_history_yn
38   -- when need to read any record from base table while copying history
39   -- This is required as the get_xxxv_rec is general -
40   -- means used to read record from both base and history tables
41   l_old_history_yn              VARCHAR2(3);
42 
43 -- /striping/
44 p_rule_code   OKC_RULE_DEFS_B.rule_code%TYPE;
45 p_appl_id     OKC_RULE_DEFS_B.application_id%TYPE;
46 p_dff_name    OKC_RULE_DEFS_B.descriptive_flexfield_name%TYPE;
47 
48 --/rules migration/
49 g_application_id number;
50   ----------------------------------------------------------------------------
51   --PL/SQL Table to check the sections has already copied.
52   --If Yes give the new scn_id
53   ----------------------------------------------------------------------------
54   TYPE sections_rec_type IS RECORD (
55     old_scn_id		NUMBER := OKC_API.G_MISS_NUM,
56     new_scn_id		NUMBER := OKC_API.G_MISS_NUM);
57   TYPE	sections_tbl_type IS TABLE OF sections_rec_type
58   INDEX	BY BINARY_INTEGER;
59   g_sections	sections_tbl_type;
60 
61   --PL/SQL Table to check time value id has already copied.
62   --If Yes give the new tve_id ----Begins
63 -------------------------------------------------------------------------------
64   TYPE price_adjustments_rec_type IS RECORD (
65     old_pat_id          NUMBER := OKC_API.G_MISS_NUM,
66     new_pat_id          NUMBER := OKC_API.G_MISS_NUM);
67   TYPE price_adjustments_tbl_type IS TABLE OF price_adjustments_rec_type
68   INDEX BY BINARY_INTEGER;
69   g_price_adjustments    price_adjustments_tbl_type;
70   ----------------------------------------------------------------------------
71   TYPE timevalues_rec_type IS RECORD (
72     old_tve_id		NUMBER := OKC_API.G_MISS_NUM,
73     new_tve_id		NUMBER := OKC_API.G_MISS_NUM);
74   TYPE	timevalues_tbl_type IS TABLE OF timevalues_rec_type
75   INDEX	BY BINARY_INTEGER;
76   g_timevalues	timevalues_tbl_type;
77 
78   ----------------------------------------------------------------------------
79   --PL/SQL Table to check the rule has already copied.
80   --If Yes give the new rul_id ----Begins
81   ----------------------------------------------------------------------------
82   TYPE ruls_rec_type IS RECORD (
83     old_rul_id		NUMBER := OKC_API.G_MISS_NUM,
84     new_rul_id		NUMBER := OKC_API.G_MISS_NUM);
85   TYPE	ruls_tbl_type IS TABLE OF ruls_rec_type
86   INDEX	BY BINARY_INTEGER;
87   g_ruls	ruls_tbl_type;
88 
89   ----------------------------------------------------------------------------
90   --PL/SQL Table to check the party has already copied.
91   --If Yes give the new cpl_id ----Begins
92   ----------------------------------------------------------------------------
93   TYPE party_rec_type IS RECORD (
94     old_cpl_id		NUMBER := OKC_API.G_MISS_NUM,
95     new_cpl_id		NUMBER := OKC_API.G_MISS_NUM);
96   TYPE	party_tbl_type IS TABLE OF party_rec_type
97   INDEX	BY BINARY_INTEGER;
98   g_party	party_tbl_type;
99 
100   ----------------------------------------------------------------------------
101   --Logic to check the event has already copied.
102   --If Yes give the new cnh_id ----Begins
103   ----------------------------------------------------------------------------
104   TYPE events_rec_type IS RECORD (
105     old_cnh_id		NUMBER := OKC_API.G_MISS_NUM,
106     new_cnh_id		NUMBER := OKC_API.G_MISS_NUM);
107   TYPE	events_tbl_type IS TABLE OF events_rec_type
108   INDEX	BY BINARY_INTEGER;
109   g_events	events_tbl_type;
110   -- Added for Bug 1917514
111   -- This variable identifies whether COPY called for Header or Line
112   -- If it is called from HEader it will call OKS copy procedure with chr id
113   -- and cle id NULL it means COPY is done for Contract HEader
114   -- If it is called from Line it will call OKS copy procedure with chr id
115   -- and cle id  it means COPY is done for specific Contract Line
116   l_oks_copy  VARCHAR2(1) := 'Y';
117 
118   ----------------------------------------------------------------------------
119   -- PL/SQL table to keep line/header id and corresponding ole_id
120   -- This table will store the following combinations
121   --                 Header Id  - OLE_ID for Header
122   --                 Line ID    - OLE_ID for the Line
123   -- To get PARENT_OLE_ID for top line, search for ID = header_id
124   --                      for sub line, search for ID = Parent Line Id
125   ----------------------------------------------------------------------------
126   TYPE line_op_rec_type IS RECORD (
127     id                           NUMBER := OKC_API.G_MISS_NUM,
128     ole_id                       NUMBER := OKC_API.G_MISS_NUM);
129 
130   TYPE line_op_tbl_type IS TABLE OF line_op_rec_type
131     INDEX BY BINARY_INTEGER;
132 
133   g_op_lines line_op_tbl_type;
134 
135   FUNCTION Is_Number(p_string VARCHAR2) Return BOOLEAN IS
136     n NUMBER;
137   BEGIN
138     n := to_number(p_string);
139     return TRUE;
140   EXCEPTION
141     WHEN OTHERS THEN
142          return FALSE;
143   END;
144 
145   -- Added for Bug 1917514
146   -- p_pdf id is for Process Defn id for OKS seeded procedure
147   -- p_chr_id is Contract id (always required) for Contract Header Copy
148   -- p_cle_id is Contract Line id (optional ) for Contract Header Copy it is
149   -- NULL and for Contract Line Copy is is required
150 
151   -- Bugfix 2151523(1917514) - modified the name of the procedure from CREATE_PLSQL
152   -- to OKC_CREATE_PLSQL
153   PROCEDURE OKC_CREATE_PLSQL (p_pdf_id IN  NUMBER,
154                           --  p_chr_id IN  NUMBER,  Bugfix 2151523(1917514) - variable not used
155                           --  p_cle_id IN  NUMBER ,  Bugfix 2151523(1917514) - variable not used
156                               x_string OUT NOCOPY VARCHAR2) IS
157 
158   l_string     VARCHAR2(2000);
159 --  l_chr_id     NUMBER;   Bugfix 2151523(1917514) - variable not used
160 --  l_cle_id     NUMBER;   Bugfix 2151523(1917514) - variable not used
161 
162    -- Cursor to get the package.procedure name from PDF
163    CURSOR pdf_cur(l_pdf_id IN NUMBER) IS
164    SELECT
165    decode(pdf.pdf_type,'PPS',
166           pdf.package_name||'.'||pdf.procedure_name,NULL) proc_name
167    FROM okc_process_defs_v pdf
168         -- bug 2112814 ,okc_process_def_parameters_v pdp
169    WHERE pdf.id = l_pdf_id;
170 
171    pdf_rec pdf_cur%ROWTYPE;
172 
173 /*  Bugfix 2151523(1917514) - Commented out nocopy as it is not being used
174    -- Cursor to get the parameters defined for the package.procedure name from PDF
175    CURSOR pdp_cur(l_pdf_id IN NUMBER) IS
176    SELECT pdp.name param_name
177    FROM okc_process_defs_v pdf,
178         okc_process_def_parameters_v pdp
179    WHERE pdf.id = l_pdf_id
180    AND   pdf.id = pdp.pdf_id;
181 
182    pdp_rec pdp_cur%ROWTYPE;
183 */
184    BEGIN
185       OPEN pdf_cur(p_pdf_id);
186       FETCH pdf_cur INTO pdf_rec;
187       CLOSE pdf_cur;
188 
189       l_string := l_string||pdf_rec.proc_name;
190       x_string := l_string ;
191 
192   END OKC_CREATE_PLSQL;
193 
194   PROCEDURE add_events(	p_old_cnh_id IN NUMBER,
195 			p_new_cnh_id IN NUMBER) IS
196     i 		NUMBER := 0;
197   BEGIN
198     IF g_events.COUNT > 0 THEN
199       i := g_events.LAST;
200     END IF;
201     g_events(i+1).old_cnh_id	:= p_old_cnh_id;
202     g_events(i+1).new_cnh_id	:= p_new_cnh_id;
203   END add_events;
204 
205   FUNCTION get_new_cnh_id(	p_old_cnh_id IN NUMBER,
206 				p_new_cnh_id OUT NOCOPY NUMBER) RETURN BOOLEAN IS
207     i 		NUMBER := 0;
208   BEGIN
209     IF g_events.COUNT > 0 THEN
210       i := g_events.FIRST;
211       LOOP
212         IF g_events(i).old_cnh_id = p_old_cnh_id THEN
213           p_new_cnh_id := g_events(i).new_cnh_id;
214           RETURN TRUE;
215         END IF;
216         EXIT WHEN (i = g_events.LAST);
217         i := g_events.NEXT(i);
218       END LOOP;
219       RETURN FALSE;
220     END IF;
221     RETURN FALSE;
222   END get_new_cnh_id;
223   ----------------------------------------------------------------------------
224   --Logic to check the event has already copied.
225   --If Yes give the new cnh_id ----Ends.
226   ----------------------------------------------------------------------------
227   ----------------------------------------------------------------------------
228   --Logic to check the sections has already copied.
229   --If Yes give the new scn_id ----Begins
230   ----------------------------------------------------------------------------
231 
232   PROCEDURE add_sections(	p_old_scn_id IN NUMBER,
233 			p_new_scn_id IN NUMBER) IS
234     i 		NUMBER := 0;
235   BEGIN
236     IF g_sections.COUNT > 0 THEN
237       i := g_sections.LAST;
238     END IF;
239     g_sections(i+1).old_scn_id	:= p_old_scn_id;
240     g_sections(i+1).new_scn_id	:= p_new_scn_id;
241   END add_sections;
242 
243   FUNCTION get_new_scn_id(	p_old_scn_id IN NUMBER,
244 				p_new_scn_id OUT NOCOPY NUMBER) RETURN BOOLEAN IS
245     i 		NUMBER := 0;
246   BEGIN
247     IF g_sections.COUNT > 0 THEN
248       i := g_sections.FIRST;
249       LOOP
250         IF g_sections(i).old_scn_id = p_old_scn_id THEN
251           p_new_scn_id := g_sections(i).new_scn_id;
252           RETURN TRUE;
253         END IF;
254         EXIT WHEN (i = g_sections.LAST);
255         i := g_sections.NEXT(i);
256       END LOOP;
257       RETURN FALSE;
258     END IF;
259     RETURN FALSE;
260   END get_new_scn_id;
261 
262   PROCEDURE add_price_adjustments(       p_old_pat_id IN NUMBER,
263                         p_new_pat_id IN NUMBER) IS
264     i           NUMBER := 0;
265   BEGIN
266     IF g_price_adjustments.COUNT > 0 THEN
267       i := g_price_adjustments.LAST;
268     END IF;
269     g_price_adjustments(i+1).old_pat_id  := p_old_pat_id;
270     g_price_adjustments(i+1).new_pat_id  := p_new_pat_id;
271   END add_price_adjustments;
272 
273   FUNCTION get_new_pat_id(      p_old_pat_id IN NUMBER,
274                                 p_new_pat_id OUT NOCOPY NUMBER) RETURN BOOLEAN IS
275     i           NUMBER := 0;
276   BEGIN
277     IF g_price_adjustments.COUNT > 0 THEN
278       i := g_price_adjustments.FIRST;
279       LOOP
280         IF g_price_adjustments(i).old_pat_id = p_old_pat_id THEN
281           p_new_pat_id := g_price_adjustments(i).new_pat_id;
282           RETURN TRUE;
283         END IF;
284         EXIT WHEN (i = g_price_adjustments.LAST);
285         i := g_price_adjustments.NEXT(i);
286       END LOOP;
287       RETURN FALSE;
288     END IF;
289     RETURN FALSE;
290   END get_new_pat_id;
291 
292 
293 
294   -----------------------------------------------------------------------------
295   -- Logic to check the timevalues has already copied.
296   -- If Yes give the new tve_id
297   -----------------------------------------------------------------------------
298   PROCEDURE add_timevalues(p_old_tve_id IN NUMBER,
299 			p_new_tve_id IN NUMBER) IS
300     i 		NUMBER := 0;
301   BEGIN
302     IF g_timevalues.COUNT > 0 THEN
303       i := g_timevalues.LAST;
304     END IF;
305     g_timevalues(i+1).old_tve_id	:= p_old_tve_id;
306     g_timevalues(i+1).new_tve_id	:= p_new_tve_id;
307   END add_timevalues;
308 
309   FUNCTION get_new_tve_id(p_old_tve_id IN NUMBER,
310 				      p_new_tve_id OUT NOCOPY NUMBER) RETURN BOOLEAN IS
311     i 		NUMBER := 0;
312   BEGIN
313 
314     IF g_timevalues.COUNT > 0 THEN
315       i := g_timevalues.FIRST;
316       LOOP
317         IF g_timevalues(i).old_tve_id = p_old_tve_id THEN
318           p_new_tve_id := g_timevalues(i).new_tve_id;
319           RETURN TRUE;
320         END IF;
321         EXIT WHEN (i = g_timevalues.LAST);
322         i := g_timevalues.NEXT(i);
323       END LOOP;
324       RETURN FALSE;
325     END IF;
326     RETURN FALSE;
327   END get_new_tve_id;
328 
329   ----------------------------------------------------------------------------
330   --Logic to check the rul has already copied.
331   --If Yes give the new scn_id
332   ----------------------------------------------------------------------------
333   --Logic to check the rule has already copied.
334   --If Yes give the new rul_id
335   ----------------------------------------------------------------------------
336 
337   PROCEDURE add_ruls(	p_old_rul_id IN NUMBER,
338 			p_new_rul_id IN NUMBER) IS
339     i 		NUMBER := 0;
340   BEGIN
341     IF g_ruls.COUNT > 0 THEN
342       i := g_ruls.LAST;
343     END IF;
344     g_ruls(i+1).old_rul_id	:= p_old_rul_id;
345     g_ruls(i+1).new_rul_id	:= p_new_rul_id;
346   END add_ruls;
347 
348   FUNCTION get_new_rul_id(	p_old_rul_id IN NUMBER,
349 				p_new_rul_id OUT NOCOPY NUMBER) RETURN BOOLEAN IS
350     i 		NUMBER := 0;
351   BEGIN
352     IF g_ruls.COUNT > 0 THEN
353       i := g_ruls.FIRST;
354       LOOP
355         IF g_ruls(i).old_rul_id = p_old_rul_id THEN
356           p_new_rul_id := g_ruls(i).new_rul_id;
357           RETURN TRUE;
358         END IF;
359         EXIT WHEN (i = g_ruls.LAST);
360         i := g_ruls.NEXT(i);
361       END LOOP;
362       RETURN FALSE;
363     END IF;
364     RETURN FALSE;
365   END get_new_rul_id;
366   ----------------------------------------------------------------------------
367   --Logic to check the rul has already copied.
368   --If Yes give the new rul_id ----Ends.
369   ----------------------------------------------------------------------------
370   ----------------------------------------------------------------------------
371   --Logic to check the party has already copied.
372   --If Yes give the new cpl_id ----Begins
373   ----------------------------------------------------------------------------
374 
375   PROCEDURE add_party(	p_old_cpl_id IN NUMBER,
376 			p_new_cpl_id IN NUMBER) IS
377     i 		NUMBER := 0;
378   BEGIN
379     IF g_party.COUNT > 0 THEN
380       i := g_party.LAST;
381     END IF;
382     g_party(i+1).old_cpl_id	:= p_old_cpl_id;
383     g_party(i+1).new_cpl_id	:= p_new_cpl_id;
384   END add_party;
385 
386   FUNCTION get_new_cpl_id(	p_old_cpl_id IN NUMBER,
387 				p_new_cpl_id OUT NOCOPY NUMBER) RETURN BOOLEAN IS
388     i 		NUMBER := 0;
389   BEGIN
390     IF g_party.COUNT > 0 THEN
391       i := g_party.FIRST;
392       LOOP
393         IF g_party(i).old_cpl_id = p_old_cpl_id THEN
394           p_new_cpl_id := g_party(i).new_cpl_id;
395           RETURN TRUE;
396         END IF;
397         EXIT WHEN (i = g_party.LAST);
398         i := g_party.NEXT(i);
399       END LOOP;
400       RETURN FALSE;
401     END IF;
402     RETURN FALSE;
403   END get_new_cpl_id;
404   ----------------------------------------------------------------------------
405   --Logic to check the party has already copied.
406   --If Yes give the new cpl_id ----Ends.
407   ----------------------------------------------------------------------------
408   ----------------------------------------------------------------------------
409   --Function specs  to populate pl/sql record with database values begins
410   ----------------------------------------------------------------------------
411     FUNCTION    get_atnv_rec(p_atn_id IN NUMBER,
412 				x_atnv_rec OUT NOCOPY atnv_rec_type) RETURN  VARCHAR2;
413     FUNCTION    get_catv_rec(p_cat_id IN NUMBER,
414 				x_catv_rec OUT NOCOPY catv_rec_type) RETURN  VARCHAR2;
415     FUNCTION    get_cimv_rec(p_cim_id IN NUMBER,
416 				x_cimv_rec OUT NOCOPY cimv_rec_type) RETURN  VARCHAR2;
417     FUNCTION    get_cacv_rec(p_cac_id IN NUMBER,
418 				x_cacv_rec OUT NOCOPY cacv_rec_type) RETURN  VARCHAR2;
419     FUNCTION    get_cplv_rec(p_cpl_id IN NUMBER,
420 				x_cplv_rec OUT NOCOPY cplv_rec_type) RETURN  VARCHAR2;
421     FUNCTION    get_cpsv_rec(p_cps_id IN NUMBER,
422 				x_cpsv_rec OUT NOCOPY cpsv_rec_type) RETURN  VARCHAR2;
423     FUNCTION    get_cgcv_rec(p_cgc_id IN NUMBER,
424 				x_cgcv_rec OUT NOCOPY cgcv_rec_type) RETURN  VARCHAR2;
425     FUNCTION    get_cnhv_rec(p_cnh_id IN NUMBER,
426 				x_cnhv_rec OUT NOCOPY cnhv_rec_type) RETURN  VARCHAR2;
427     FUNCTION    get_cnlv_rec(p_cnl_id IN NUMBER,
428 				x_cnlv_rec OUT NOCOPY cnlv_rec_type) RETURN  VARCHAR2;
429     FUNCTION    get_rgpv_rec(p_rgp_id IN NUMBER,
430 				x_rgpv_rec OUT NOCOPY rgpv_rec_type) RETURN  VARCHAR2;
431     FUNCTION    get_rulv_rec(p_rul_id IN NUMBER,
432 				x_rulv_rec OUT NOCOPY rulv_rec_type) RETURN  VARCHAR2;
433     FUNCTION    get_clev_rec(p_cle_id IN NUMBER,
434                              p_renew_ref_yn IN VARCHAR2, -- Added for bugfix 2307197
435 				x_clev_rec OUT NOCOPY clev_rec_type) RETURN  VARCHAR2;
436     FUNCTION    get_chrv_rec(p_chr_id IN NUMBER,
437 				x_chrv_rec OUT NOCOPY chrv_rec_type) RETURN  VARCHAR2;
438     FUNCTION    get_tvev_rec(p_tve_id IN NUMBER,
439 				x_tvev_rec OUT NOCOPY tvev_rec_type) RETURN  VARCHAR2;
440     FUNCTION    get_ctcv_rec(p_ctc_id IN NUMBER,
441 				x_ctcv_rec OUT NOCOPY ctcv_rec_type) RETURN  VARCHAR2;
442     FUNCTION    get_ocev_rec(p_oce_id IN NUMBER,
443 				x_ocev_rec OUT NOCOPY ocev_rec_type) RETURN  VARCHAR2;
444     FUNCTION    get_oatv_rec(p_oat_id IN NUMBER,
445 				x_oatv_rec OUT NOCOPY oatv_rec_type) RETURN  VARCHAR2;
446     FUNCTION    get_pavv_rec(p_pav_id IN NUMBER,
447 				x_pavv_rec OUT NOCOPY pavv_rec_type) RETURN  VARCHAR2;
448     FUNCTION    get_patv_rec(p_pat_id IN NUMBER,
449                                 x_patv_rec OUT NOCOPY patv_rec_type) RETURN  VARCHAR2;
450 
451     FUNCTION    get_paav_rec(p_paa_id IN NUMBER,
452                                 x_paav_rec OUT NOCOPY paav_rec_type) RETURN  VARCHAR2;
453     FUNCTION    get_pacv_rec(p_pac_id IN NUMBER,
454                                 x_pacv_rec OUT NOCOPY pacv_rec_type) RETURN  VARCHAR2;
455     FUNCTION    get_scnv_rec(p_scn_id IN NUMBER,
456 				x_scnv_rec OUT NOCOPY scnv_rec_type) RETURN  VARCHAR2;
457     FUNCTION    get_sccv_rec(p_scc_id IN NUMBER,
458 				x_sccv_rec OUT NOCOPY sccv_rec_type) RETURN  VARCHAR2;
459   ----------------------------------------------------------------------------
460   --Function specs  to populate pl/sql record with database values ends
461   ----------------------------------------------------------------------------
462   ----------------------------------------------------------------------------
463   --Procedure  desides whether target contract is updateable or not
464   ----------------------------------------------------------------------------
465 
466   FUNCTION is_copy_allowed(p_chr_id IN NUMBER,p_sts_code IN VARCHAR2 ) RETURN BOOLEAN IS
467     l_count		NUMBER;
468     l_dummy         VARCHAR2(1) := '?';
469     l_term_dummy         VARCHAR2(1) := '?';
470     l_cancel_dummy         VARCHAR2(1) := '?';
471     l_template_yn	VARCHAR2(3);
472 
473     CURSOR c_template IS
474     SELECT template_yn
475     FROM okc_k_headers_b
476     WHERE id = p_chr_id;
477 
478     CURSOR invalid_template IS
479     SELECT '1'
480     FROM okc_k_headers_b
481     WHERE template_yn = 'Y'
482 	AND nvl(end_date, sysdate+1) >= trunc(sysdate)
483 	AND id = p_chr_id;
484 
485 	/*hkamdar 12-12-2005 Commented as this check is not required for source contract.
486 	-- Bug #4693415 28-Nov-2005 hkamdar
487     CURSOR term_cntr IS
488     SELECT '1'
489     FROM  okc_k_headers_b
490     WHERE id = p_chr_id
491       AND date_terminated IS NOT NULL
492 	 AND date_terminated <= SYSDATE;
493 
494     CURSOR cancel_cntr IS
495     SELECT '1'
496     FROM   okc_k_headers_b hdr, okc_statuses_b status
497     WHERE  hdr.id = p_chr_id
498       AND  hdr.sts_code = status.code
499       AND  status.ste_code = 'CANCELLED';
500 	 */
501   BEGIN
502 
503 IF (l_debug = 'Y') THEN
504    OKC_DEBUG.Set_Indentation(' IS_Copy_Allowed ');
505    OKC_DEBUG.log('1001 : Entering  IS_Copy_Allowed  ', 2);
506 END IF;
507 
508     OPEN c_template;
509     FETCH c_template INTO l_template_yn;
510     CLOSE c_template;
511 
512     If l_template_yn = 'Y' Then
513       OPEN invalid_template;
514       FETCH invalid_template INTO l_dummy;
515       CLOSE invalid_template;
516 
517       If l_dummy = '1' Then
518 	   IF (l_debug = 'Y') THEN
519    	   OKC_DEBUG.ReSet_Indentation;
520 	   END IF;
521 	   RETURN(TRUE);
522       Else
523 	   OKC_API.SET_MESSAGE('OKC', 'OKC_INVALID_TEMPLATE');
524 	   IF (l_debug = 'Y') THEN
525    	   OKC_DEBUG.ReSet_Indentation;
526 	   END IF;
527         RETURN(FALSE);
528       End If;
529     Else
530 
531 	 IF (l_debug = 'Y') THEN
532    	 OKC_DEBUG.ReSet_Indentation;
533 	 END IF;
534 	 RETURN(TRUE);
535     End If;
536 
537 IF (l_debug = 'Y') THEN
538    OKC_DEBUG.log('1001 : Exiting Function IS_Copy_Allowed ', 2);
539    OKC_DEBUG.ReSet_Indentation;
540 END IF;
541 
542   END is_copy_allowed;
543 
544 
545   FUNCTION is_subcontract_allowed(p_chr_id IN NUMBER,p_sts_code IN VARCHAR2) RETURN BOOLEAN IS
546 
547     l_sts_code VARCHAR2(100);
548     l_cls_code VARCHAR2(100);
549     l_scs_code VARCHAR2(100);
550     l_template_yn VARCHAR2(10);
551     l_code VARCHAR2(100);
552 
553     CURSOR c_chr IS
554     SELECT sts_code,template_yn,scs_code
555     FROM   okc_k_headers_b
556     WHERE  id = p_chr_id;
557 
558     CURSOR c_sts(p_code IN VARCHAR2) IS
559     SELECT ste_code
560     FROM   okc_statuses_b
561     WHERE  code = p_code;
562 
563     CURSOR c_class(p_scs_code IN VARCHAR2) IS
564     SELECT cls_code
565     FROM   okc_subclasses_b
566     WHERE  code = p_scs_code;
567 
568   BEGIN
569 
570     OPEN c_chr;
571     FETCH c_chr INTO l_code,l_template_yn,l_scs_code;
572     CLOSE c_chr;
573 
574     IF l_template_yn = 'Y' then
575 	 RETURN(FALSE);
576     END IF;
577 
578     OPEN c_class(l_scs_code);
579     FETCH c_class INTO l_cls_code;
580     CLOSE c_class;
581 
582     If l_cls_code = 'SERVICE' THEN
583       RETURN(FALSE);
584     END IF;
585 
586     OPEN c_sts(l_code);
587     FETCH c_sts INTO l_sts_code;
588     CLOSE c_sts;
589 
590     IF l_sts_code in ('ENTERED','SIGNED','ACTIVE') THEN
591       RETURN(TRUE);
592     ELSE
593       RETURN(FALSE);
594     END IF;
595   END is_subcontract_allowed;
596 
597   FUNCTION update_target_contract(p_chr_id IN NUMBER) RETURN BOOLEAN IS
598     l_in_process_yn         VARCHAR2(1) := '?';
599     l_user_id               NUMBER;
600     l_current_user_id       NUMBER := FND_GLOBAL.USER_ID;
601 
602     CURSOR  c_locked_user(p_chr_id IN NUMBER) IS
603     SELECT  cps.user_id,
604             upper(substr(cps.in_process_yn,1,1)) in_process_yn
605     FROM    okc_k_processes_v cps,
606             okc_change_requests_b crt
607     WHERE   crt.id = cps.crt_id
608     AND     crt.chr_id = p_chr_id;
609 
610   BEGIN
611     IF p_chr_id IS NOT NULL THEN
612 
613 	 -- No update allowed if process is active for the contract
614 	 If (OKC_CONTRACT_PVT.Is_Process_Active(p_chr_id) = 'Y') Then
615          RETURN(FALSE);
616       End If;
617       IF OKC_ASSENT_PUB.HEADER_OPERATION_ALLOWED(p_chr_id,'UPDATE') = 'T' THEN
618         OPEN c_locked_user(p_chr_id);
619         FETCH c_locked_user INTO l_user_id,l_in_process_yn;
620         IF c_locked_user%NOTFOUND THEN --No change request
621            RETURN(TRUE);
622         END IF;
623         LOOP
624           IF l_user_id = l_current_user_id and l_in_process_yn = 'Y' THEN --locked by same user
625              RETURN(TRUE);
626           ELSIF l_user_id <> l_current_user_id and l_in_process_yn = 'Y' THEN -- locked be same user
627              RETURN(FALSE);
628           END IF;
629           FETCH c_locked_user INTO l_user_id,l_in_process_yn;
630           EXIT WHEN c_locked_user%NOTFOUND;
631         END LOOP;
632         -- If it comes out of the loop then "No Lock"
633         RETURN(TRUE);
634       ELSIF OKC_ASSENT_PUB.HEADER_OPERATION_ALLOWED(p_chr_id,'CHG_REQ') = 'T' THEN
635         OPEN c_locked_user(p_chr_id);
636         FETCH c_locked_user INTO l_user_id,l_in_process_yn;
637         IF c_locked_user%NOTFOUND THEN --No change request
638            RETURN(FALSE);
639         END IF;
640         LOOP
641           IF l_user_id = l_current_user_id and l_in_process_yn = 'Y' THEN --locked by same user
642              RETURN(TRUE);
643           ELSIF l_user_id <> l_current_user_id and l_in_process_yn = 'Y' THEN -- locked be same user
644              RETURN(FALSE);
645           END IF;
646           FETCH c_locked_user INTO l_user_id,l_in_process_yn;
647           EXIT WHEN c_locked_user%NOTFOUND;
648         END LOOP;
649         -- If it comes out of the loop then "No Lock"
650         RETURN(FALSE);
651       END IF;
652       RETURN(FALSE);
653     END IF;
654     RETURN(FALSE);
655   END update_target_contract;
656   ----------------------------------------------------------------------------
657   --Procedure  to derive a compatible line style
658   ----------------------------------------------------------------------------
659 
660   PROCEDURE derive_line_style(p_old_lse_id     IN  NUMBER,
661                               p_old_jtot_code  IN  VARCHAR2,
662                               p_new_subclass   IN  VARCHAR2,
663                               p_new_parent_lse IN  NUMBER,
664                               x_new_lse_count  OUT NOCOPY NUMBER,
665                               x_new_lse_ids    OUT NOCOPY VARCHAR2) IS
666     l_lty_code     VARCHAR2(30);
667     l_lse_id 	   NUMBER;
668     l_recursive_yn VARCHAR2(1);
669     l_new_lse_ids  VARCHAR2(2000);
670     l_new_lse_count NUMBER := 0;
671 
672 -- Modified Cursor for Bug 1993566
673 -- Getting recursive flag for line styles
674 
675     CURSOR c_lty_code IS
676     SELECT lty_code,recursive_yn
677     FROM   okc_line_styles_b
678     WHERE  id = p_old_lse_id;
679 
680 --    Commented for Bug 1993566
681 --    CURSOR c_lty_code IS
682 --    SELECT lty_code,recursive_yn
683 --    FROM   okc_line_styles_b
684 --    WHERE  id = p_old_lse_id;
685 
686 /*
687     CURSOR c_top_lse_lty(p_lty_code IN VARCHAR2) IS
688     SELECT lse.id
689     FROM   okc_subclass_top_line_v stl,
690            okc_line_styles_b lse
691     WHERE  stl.lse_id = lse.id
692     AND    lse.lty_code = p_lty_code
693     AND    stl.scs_code = p_new_subclass;
694 */
695 
696 -- added Sanjay  for bug # 1923216
697 
698     CURSOR c_top_lse_lty(p_lty_code IN VARCHAR2) IS
699     SELECT lse.id
700     FROM   okc_subclass_top_line_v stl,
701            okc_line_styles_b lse
702     WHERE  stl.lse_id = lse.id
703     AND    lse.id = p_old_lse_id  -- added
704     AND    lse.lty_code = p_lty_code
705     AND    stl.scs_code = p_new_subclass
706     AND    sysdate BETWEEN stl.start_date and nvl(stl.end_date,sysdate);  -- added
707 
708 -- end added by Sanjay for bug # 1923216
709 
710     CURSOR c_sub_lse_lty(p_lty_code IN VARCHAR2) IS
711     SELECT lse.id
712     FROM   okc_line_styles_b lse
713     WHERE  lse.lty_code = p_lty_code
714     AND    lse.lse_parent_id = p_new_parent_lse;
715 
716     FUNCTION get_source(p_lse_id IN NUMBER) RETURN VARCHAR2 IS
717 
718       l_source VARCHAR2(30);
719 
720       CURSOR c_source(p_lse_id IN NUMBER) IS
721       SELECT jtot_object_code
722       FROM   okc_line_style_sources_v
723       WHERE  lse_id = p_lse_id
724       AND    sysdate BETWEEN start_date and nvl(end_date,sysdate);
725 
726     BEGIN
727       OPEN  c_source(p_lse_id);
728       FETCH c_source INTO l_source;
729       CLOSE c_source;
730       RETURN(l_source);
731     END get_source;
732 
733   BEGIN
734     OPEN  c_lty_code;
735     FETCH c_lty_code INTO l_lty_code,l_recursive_yn;
736     CLOSE c_lty_code;
737 
738     -- Added for Bug 1993566
739     -- Checking recursive flag , if it is 'Y' then
740     -- it simply return same lse id as the parent lse id
741     IF l_recursive_yn = 'Y' THEN
742          OPEN c_top_lse_lty(l_lty_code);
743          FETCH c_top_lse_lty INTO l_lse_id;
744          CLOSE c_top_lse_lty;
745          l_new_lse_count := l_new_lse_count + 1;
746          l_new_lse_ids := '('||to_char(l_lse_id) ||')';
747            x_new_lse_count := l_new_lse_count;
748            x_new_lse_ids := l_new_lse_ids;
749          RETURN;
750     END IF;
751     -- Added for Bug 1993566
752 
753 
754     IF p_new_parent_lse IS NULL THEN
755       OPEN c_top_lse_lty(l_lty_code);
756       FETCH c_top_lse_lty INTO l_lse_id;
757       IF c_top_lse_lty%NOTFOUND THEN
758         CLOSE c_top_lse_lty;
759         RETURN;
760       ELSE
761         IF NVL(p_old_jtot_code,'!!') = NVL(get_source(l_lse_id),'!!') THEN
762             l_new_lse_count := l_new_lse_count + 1;
763             l_new_lse_ids := '('||to_char(l_lse_id);
764         END IF;
765       END IF;
766       LOOP
767         FETCH c_top_lse_lty INTO l_lse_id;
768         EXIT WHEN c_top_lse_lty%NOTFOUND;
769         IF NVL(p_old_jtot_code,'!!') = NVL(get_source(l_lse_id),'!!') THEN
770           l_new_lse_count := l_new_lse_count + 1;
771           l_new_lse_ids := l_new_lse_ids||','||to_char(l_lse_id);
772         END IF;
773       END LOOP;
774       IF c_top_lse_lty%ISOPEN THEN
775         CLOSE c_top_lse_lty;
776       END IF;
777       l_new_lse_ids := l_new_lse_ids||')';
778 
779       x_new_lse_count := l_new_lse_count;
780       x_new_lse_ids := l_new_lse_ids;
781     ELSE
782       OPEN c_sub_lse_lty(l_lty_code);
783       FETCH c_sub_lse_lty INTO l_lse_id;
784       IF c_sub_lse_lty%NOTFOUND THEN
785         CLOSE c_sub_lse_lty;
786         RETURN;
787       ELSE
788         IF NVL(p_old_jtot_code,'!!') = NVL(get_source(l_lse_id),'!!') THEN
789             l_new_lse_count := l_new_lse_count + 1;
790             l_new_lse_ids := '('||to_char(l_lse_id);
791         END IF;
792       END IF;
793       LOOP
794         FETCH c_sub_lse_lty INTO l_lse_id;
795         EXIT WHEN c_sub_lse_lty%NOTFOUND;
796         IF NVL(p_old_jtot_code,'!!') = NVL(get_source(l_lse_id),'!!') THEN
797           l_new_lse_count := l_new_lse_count + 1;
798 		IF l_new_lse_ids is null THEN
799 		   l_new_lse_ids := '('||to_char(l_lse_id);
800           ELSE
801              l_new_lse_ids := l_new_lse_ids||','||to_char(l_lse_id);
802           END IF;
803         END IF;
804       END LOOP;
805       IF c_sub_lse_lty%ISOPEN THEN
806         CLOSE c_sub_lse_lty;
807       END IF;
808       l_new_lse_ids := l_new_lse_ids||')';
809 
810       x_new_lse_count := l_new_lse_count;
811       x_new_lse_ids := l_new_lse_ids;
812     END IF;
813 
814   EXCEPTION
815     WHEN OTHERS THEN
816       -- store SQL error message on message stack for caller
817       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
818       -- notify caller of an UNEXPECTED error
819 
820   END derive_line_style;
821 
822   ----------------------------------------------------------------------------
823   --Procedure spec  to copy time values.
824   ----------------------------------------------------------------------------
825   PROCEDURE copy_timevalues(
826     p_api_version                  IN NUMBER,
827     p_init_msg_list                IN VARCHAR2 ,
828     x_return_status                OUT NOCOPY VARCHAR2,
829     x_msg_count                    OUT NOCOPY NUMBER,
830     x_msg_data                     OUT NOCOPY VARCHAR2,
831     p_tve_id                  	   IN NUMBER,
832     p_to_chr_id                    IN NUMBER ,
833     p_to_template_yn               IN VARCHAR2,
834     x_tve_id		           OUT NOCOPY NUMBER);
835 
836   ----------------------------------------------------------------------------
837   --Procedure copy_sections - Makes a copy of the okc_sections and okc_section_contents.
838   ----------------------------------------------------------------------------
839   PROCEDURE copy_sections(
840     p_api_version                  IN NUMBER,
841     p_init_msg_list                IN VARCHAR2 ,
842     x_return_status                OUT NOCOPY VARCHAR2,
843     x_msg_count                    OUT NOCOPY NUMBER,
844     x_msg_data                     OUT NOCOPY VARCHAR2,
845     p_scc_id                       IN NUMBER,
846     p_to_cat_id                    IN NUMBER,
847     p_to_chr_id                    IN NUMBER,
848     p_scn_id					IN NUMBER) IS
849 
850     l_scn_id    	NUMBER;
851     l_scn_id_new    NUMBER;
852     l_scn_id_out    NUMBER;
853     l_scn_count 	NUMBER := 0;
854 
855     l_sccv_rec 	sccv_rec_type;
856     x_sccv_rec 	sccv_rec_type;
857     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
858 
859     TYPE sec_rec_type IS RECORD (
860       scn_id		NUMBER := OKC_API.G_MISS_NUM);
861     TYPE	sec_tbl_type IS TABLE OF sec_rec_type
862     INDEX	BY BINARY_INTEGER;
863     l_sec	sec_tbl_type;
864 
865     CURSOR c_scc IS
866     SELECT scn_id
867     FROM   okc_section_contents_v
868     WHERE  id = p_scc_id;
869 
870     CURSOR c_scn(p_scn_id IN NUMBER) IS
871     SELECT id,level
872     FROM   okc_sections_b
873     CONNECT BY PRIOR scn_id = id
874     START WITH id = p_scn_id;
875 
876     PROCEDURE copy_section(
877        p_api_version                  IN NUMBER,
878        p_init_msg_list                IN VARCHAR2 ,
879        x_return_status                OUT NOCOPY VARCHAR2,
880        x_msg_count                    OUT NOCOPY NUMBER,
881        x_msg_data                     OUT NOCOPY VARCHAR2,
882        p_scn_id                       IN NUMBER,
883        p_to_chr_id                    IN NUMBER,
884        x_scn_id                       OUT NOCOPY NUMBER) IS
885 
886 
887       l_new_scn_id      	NUMBER;
888       l_scnv_rec 		scnv_rec_type;
889       x_scnv_rec 		scnv_rec_type;
890       l_return_status    VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
891 
892     BEGIN
893       x_return_status := l_return_status;
894       IF get_new_scn_id(p_scn_id,l_new_scn_id) THEN
895         x_scn_id := l_new_scn_id;
896         RAISE G_EXCEPTION_HALT_VALIDATION;
897       END IF;
898 
899       l_return_status := get_scnv_rec(	p_scn_id 	=> p_scn_id,
900 							x_scnv_rec 	=> l_scnv_rec);
901 
902       l_scnv_rec.chr_id := p_to_chr_id;
903 
904       IF get_new_scn_id(l_scnv_rec.scn_id,l_new_scn_id) THEN
905         l_scnv_rec.scn_id := l_new_scn_id;
906       ELSE
907         l_scnv_rec.scn_id := null;
908       END IF;
909 
910       OKC_SECTIONS_PUB.create_section(
911 	   	 p_api_version		=> p_api_version,
912            p_init_msg_list	=> p_init_msg_list,
913            x_return_status 	=> l_return_status,
914            x_msg_count     	=> x_msg_count,
915            x_msg_data      	=> x_msg_data,
916            p_scnv_rec		=> l_scnv_rec,
917            x_scnv_rec		=> x_scnv_rec);
918 
919       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
920 	 x_return_status := l_return_status;
921          RAISE G_EXCEPTION_HALT_VALIDATION;
922       END IF;
923 
924       x_scn_id := x_scnv_rec.id;
925 
926       add_sections(p_scn_id,x_scnv_rec.id); --adds the new section id in the global PL/SQL table.
927 
928     EXCEPTION
929       WHEN G_EXCEPTION_HALT_VALIDATION THEN
930         NULL;
931       WHEN OTHERS THEN
932         -- store SQL error message on message stack for caller
933         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
934         -- notify caller of an UNEXPECTED error
935         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
936     END copy_section;
937 
938   BEGIN
939     x_return_status := l_return_status;
940     -- Execute below If statement only if the procedure is called from
941     -- copy_articles
942     If p_scc_id IS NOT NULL Then
943       OPEN c_scc;
944     	 FETCH c_scc INTO l_scn_id;
945       CLOSE c_scc;
946 
947       FOR l_c_scn IN c_scn(l_scn_id) LOOP
948         l_sec(l_c_scn.level).scn_id := l_c_scn.id;
949         l_scn_count := l_c_scn.level;
950       END LOOP;
951     End If;
952 
953     -- Execute below If statement only if this procedure is called from
954     -- copy_other_sections
955     If p_scn_id IS NOT NULL Then
956 	  l_scn_count := 1;
957 	  l_sec(1).scn_id := p_scn_id;
958     End If;
959 
960     FOR i IN REVERSE 1 .. l_scn_count LOOP
961        copy_section (
962 	   	 p_api_version	     => p_api_version,
963            p_init_msg_list	=> p_init_msg_list,
964            x_return_status 	=> l_return_status,
965            x_msg_count     	=> x_msg_count,
966            x_msg_data      	=> x_msg_data,
967            p_scn_id			=> l_sec(i).scn_id,
968            p_to_chr_id		=> p_to_chr_id,
969            x_scn_id			=> l_scn_id_out);
970 
971         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
972             x_return_status := l_return_status;
973             RAISE G_EXCEPTION_HALT_VALIDATION;
974         END IF;
975      END LOOP;
976 
977     -- Execute below If statement only if called from copy_articles procedure
978     If p_scc_id IS NOT NULL Then
979       l_return_status := get_sccv_rec(	p_scc_id 	=> p_scc_id,
980 							x_sccv_rec 	=> l_sccv_rec);
981 
982       IF get_new_scn_id(l_scn_id,l_scn_id_new) THEN
983         l_sccv_rec.scn_id := l_scn_id_new;
984       ELSE
985         RAISE G_EXCEPTION_HALT_VALIDATION;
986       END IF;
987 
988       l_sccv_rec.cat_id := p_to_cat_id;
989 
990       OKC_SECTIONS_PUB.create_section_content(
991 	   	 p_api_version		=> p_api_version,
992            p_init_msg_list	=> p_init_msg_list,
993            x_return_status 	=> l_return_status,
994            x_msg_count     	=> x_msg_count,
995            x_msg_data      	=> x_msg_data,
996            p_sccv_rec		=> l_sccv_rec,
997            x_sccv_rec		=> x_sccv_rec);
998 
999       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1000         x_return_status := l_return_status;
1001         RAISE G_EXCEPTION_HALT_VALIDATION;
1002       END IF;
1003    End If;
1004 
1005   EXCEPTION
1006     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1007       NULL;
1008     WHEN OTHERS THEN
1009       -- store SQL error message on message stack for caller
1010       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1011       -- notify caller of an UNEXPECTED error
1012       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1013   END copy_sections;
1014 
1015   ----------------------------------------------------------------------------
1016   -- Proceudre copy_cover_times - Makes a copy of cover times
1017   ----------------------------------------------------------------------------
1018   PROCEDURE copy_cover_times(
1019        p_api_version     IN NUMBER,
1020        p_init_msg_list   IN VARCHAR2 ,
1021        x_return_status   OUT NOCOPY VARCHAR2,
1022        x_msg_count       OUT NOCOPY NUMBER,
1023        x_msg_data        OUT NOCOPY VARCHAR2,
1024 	  p_to_template_yn  IN VARCHAR2,
1025        p_from_rul_id     IN NUMBER,
1026        p_to_rul_id       IN NUMBER,
1027 	  p_chr_id		IN NUMBER,
1028        p_cle_id         	IN NUMBER,
1029        p_to_chr_id       IN NUMBER) IS
1030 
1031       Cursor l_ctiv_csr Is
1032 		SELECT tve_id
1033 		FROM okc_cover_times_v
1034 		WHERE RUL_ID = p_from_rul_id;
1035 
1036       l_new_tve_id	NUMBER;
1037       l_ctiv_rec 	ctiv_rec_type;
1038       x_ctiv_rec 	ctiv_rec_type;
1039       l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1040 
1041   BEGIN
1042 
1043     -------------------------------------------------------------------------
1044     -- get all cover times records from okc_cover_times_v
1045     -- if timevalue not copied, copy time value
1046     -- copy cover time record
1047     -------------------------------------------------------------------------
1048 
1049       x_return_status := l_return_status;
1050 
1051 	 FOR l_csr IN l_ctiv_csr
1052 	 LOOP
1053 	    -- check if the time value already copied
1054 	    If (get_new_tve_id(l_csr.TVE_ID, l_new_tve_id)) Then
1055 		  l_ctiv_rec.TVE_ID := l_new_tve_id;
1056          Else
1057 		 -- if time value not copied , copy now
1058            copy_timevalues (
1059       	      p_api_version	   => p_api_version,
1060                 p_init_msg_list  => p_init_msg_list,
1061                 x_return_status  => l_return_status,
1062                 x_msg_count      => x_msg_count,
1063                 x_msg_data       => x_msg_data,
1064                 p_tve_id		   => l_csr.TVE_ID,
1065                 p_to_chr_id	   => p_to_chr_id,
1066 	           p_to_template_yn => p_to_template_yn,
1067                 x_tve_id	        => l_new_tve_id);
1068 
1069              IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1070                 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1071                     x_return_status := l_return_status;
1072                     RAISE G_EXCEPTION_HALT_VALIDATION;
1073                 ELSE
1074 	               x_return_status := l_return_status;
1075                 END IF;
1076              END IF;
1077 		   add_timevalues(l_ctiv_rec.TVE_ID,l_new_tve_id);
1078 		   l_ctiv_rec.TVE_ID := l_new_tve_id;
1079          End If;
1080 	    l_ctiv_rec.DNZ_CHR_ID := p_to_chr_id;
1081 	    l_ctiv_rec.RUL_ID := p_to_rul_id;
1082 
1083          OKC_RULE_PUB.create_cover_time(
1084 	         p_api_version	=> p_api_version,
1085               p_init_msg_list	=> p_init_msg_list,
1086               x_return_status => l_return_status,
1087               x_msg_count     => x_msg_count,
1088               x_msg_data      => x_msg_data,
1089               p_ctiv_rec		=> l_ctiv_rec,
1090               x_ctiv_rec		=> x_ctiv_rec);
1091 
1092          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1093             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1094                 x_return_status := l_return_status;
1095                 RAISE G_EXCEPTION_HALT_VALIDATION;
1096             ELSE
1097 	           x_return_status := l_return_status;
1098             END IF;
1099          END IF;
1100 
1101 	 END LOOP;
1102 
1103   EXCEPTION
1104       WHEN G_EXCEPTION_HALT_VALIDATION THEN
1105         NULL;
1106       WHEN OTHERS THEN
1107         -- store SQL error message on message stack for caller
1108         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1109         -- notify caller of an UNEXPECTED error
1110         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1111   END copy_cover_times;
1112 
1113   ----------------------------------------------------------------------------
1114   -- Proceudre copy_react_intervals - Makes copy of react_intervals
1115   ----------------------------------------------------------------------------
1116   PROCEDURE copy_react_intervals(
1117        p_api_version     IN NUMBER,
1118        p_init_msg_list   IN VARCHAR2 ,
1119        x_return_status   OUT NOCOPY VARCHAR2,
1120        x_msg_count       OUT NOCOPY NUMBER,
1121        x_msg_data        OUT NOCOPY VARCHAR2,
1122 	  p_to_template_yn  IN VARCHAR2,
1123        p_from_rul_id     IN NUMBER,
1124        p_to_rul_id       IN NUMBER,
1125 	  p_chr_id		IN NUMBER,
1126        p_cle_id         	IN NUMBER,
1127        p_to_chr_id       IN NUMBER) IS
1128 
1129       Cursor l_rilv_csr Is
1130 		SELECT tve_id,
1131 			  uom_code,
1132 			  duration
1133 		FROM okc_react_intervals_v
1134 		WHERE RUL_ID = p_from_rul_id;
1135 
1136       l_new_tve_id	NUMBER;
1137       l_rilv_rec 	rilv_rec_type;
1138       x_rilv_rec 	rilv_rec_type;
1139       l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1140 
1141   BEGIN
1142 
1143     -------------------------------------------------------------------------
1144     -- get all react interval records from okc_react_intervals_v
1145     -- if timevalue not copied, copy time value
1146     -- copy react interval record
1147     -------------------------------------------------------------------------
1148 
1149       x_return_status := l_return_status;
1150 
1151 	 FOR l_csr IN l_rilv_csr
1152 	 LOOP
1153 	    -- check if the time value already copied
1154 	    If (get_new_tve_id(l_csr.TVE_ID, l_new_tve_id)) Then
1155 		  l_rilv_rec.TVE_ID := l_new_tve_id;
1156          Else
1157 		 -- if time value not copied , copy now
1158            copy_timevalues (
1159       	      p_api_version	   => p_api_version,
1160                 p_init_msg_list  => p_init_msg_list,
1161                 x_return_status  => l_return_status,
1162                 x_msg_count      => x_msg_count,
1163                 x_msg_data       => x_msg_data,
1164                 p_tve_id		   => l_csr.TVE_ID,
1165                 p_to_chr_id	   => p_to_chr_id,
1166 	           p_to_template_yn => p_to_template_yn,
1167                 x_tve_id	        => l_new_tve_id);
1168 
1169              IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1170                 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1171                     x_return_status := l_return_status;
1172                     RAISE G_EXCEPTION_HALT_VALIDATION;
1173                 ELSE
1174 	               x_return_status := l_return_status;
1175                 END IF;
1176              END IF;
1177 		   add_timevalues(l_rilv_rec.TVE_ID,l_new_tve_id);
1178 		   l_rilv_rec.TVE_ID := l_new_tve_id;
1179          End If;
1180 	    l_rilv_rec.DNZ_CHR_ID := p_to_chr_id;
1181 	    l_rilv_rec.RUL_ID := p_to_rul_id;
1182 	    l_rilv_rec.uom_code := l_csr.uom_code;
1183 	    l_rilv_rec.duration := l_csr.duration;
1184 
1185          OKC_RULE_PUB.create_react_interval(
1186 	         p_api_version	=> p_api_version,
1187               p_init_msg_list	=> p_init_msg_list,
1188               x_return_status => l_return_status,
1189               x_msg_count     => x_msg_count,
1190               x_msg_data      => x_msg_data,
1191               p_rilv_rec		=> l_rilv_rec,
1192               x_rilv_rec		=> x_rilv_rec);
1193 
1194          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1195             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1196                 x_return_status := l_return_status;
1197                 RAISE G_EXCEPTION_HALT_VALIDATION;
1198             ELSE
1199 	           x_return_status := l_return_status;
1200             END IF;
1201          END IF;
1202 
1203 	 END LOOP;
1204 
1205   EXCEPTION
1206       WHEN G_EXCEPTION_HALT_VALIDATION THEN
1207         NULL;
1208       WHEN OTHERS THEN
1209         -- store SQL error message on message stack for caller
1210         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1211         -- notify caller of an UNEXPECTED error
1212         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1213   END copy_react_intervals;
1214 
1215   --------------------------------------------------------------------------
1216   --Proceudre copy_accesses - Makes a copy of the okc_k_accesses.
1217   --------------------------------------------------------------------------
1218   PROCEDURE copy_accesses(
1219     p_api_version                  IN NUMBER,
1220     p_init_msg_list                IN VARCHAR2 ,
1221     x_return_status                OUT NOCOPY VARCHAR2,
1222     x_msg_count                    OUT NOCOPY NUMBER,
1223     x_msg_data                     OUT NOCOPY VARCHAR2,
1224     p_from_chr_id                  IN NUMBER,
1225     p_to_chr_id                    IN NUMBER) IS
1226 
1227     l_cacv_rec 	cacv_rec_type;
1228     x_cacv_rec 	cacv_rec_type;
1229     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1230 
1231     CURSOR 	c_access IS
1232     SELECT 	id
1233     FROM 	okc_k_accesses_v
1234     WHERE 	chr_id = p_from_chr_id;
1235 
1236   BEGIN
1237     x_return_status := l_return_status;
1238     FOR l_c_access IN c_access LOOP
1239       l_return_status := get_cacv_rec(	p_cac_id 	=> l_c_access.id,
1240 					x_cacv_rec 	=> l_cacv_rec);
1241       l_cacv_rec.chr_id := p_to_chr_id;
1242 
1243       OKC_CONTRACT_PUB.create_contract_access(
1244 	   p_api_version	=> p_api_version,
1245            p_init_msg_list	=> p_init_msg_list,
1246            x_return_status 	=> l_return_status,
1247            x_msg_count     	=> x_msg_count,
1248            x_msg_data      	=> x_msg_data,
1249            p_cacv_rec		=> l_cacv_rec,
1250            x_cacv_rec		=> x_cacv_rec);
1251 
1252       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1253         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1254           x_return_status := l_return_status;
1255           RAISE G_EXCEPTION_HALT_VALIDATION;
1256         ELSE
1257 	     x_return_status := l_return_status;
1258         END IF;
1259       END IF;
1260     END LOOP;
1261 
1262   EXCEPTION
1263     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1264       NULL;
1265     WHEN OTHERS THEN
1266       -- store SQL error message on message stack for caller
1267       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1268       -- notify caller of an UNEXPECTED error
1269       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1270 
1271   END copy_accesses;
1272 
1273   ----------------------------------------------------------------------------
1274   --Proceudre copy_processes - Makes a copy of the okc_k_processes.
1275   ----------------------------------------------------------------------------
1276   PROCEDURE copy_processes(
1277     p_api_version                  IN NUMBER,
1278     p_init_msg_list                IN VARCHAR2 ,
1279     x_return_status                OUT NOCOPY VARCHAR2,
1280     x_msg_count                    OUT NOCOPY NUMBER,
1281     x_msg_data                     OUT NOCOPY VARCHAR2,
1282     p_from_chr_id                  IN NUMBER,
1283     p_to_chr_id                    IN NUMBER) IS
1284 
1285     l_cpsv_rec 	cpsv_rec_type;
1286     x_cpsv_rec 	cpsv_rec_type;
1287     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1288 
1289     CURSOR 	c_process IS
1290     SELECT 	id
1291     FROM 	okc_k_processes_v
1292     WHERE 	chr_id = p_from_chr_id;
1293 
1294   BEGIN
1295     x_return_status := l_return_status;
1296     FOR l_c_process IN c_process LOOP
1297       l_return_status := get_cpsv_rec(	p_cps_id 	=> l_c_process.id,
1298 					x_cpsv_rec 	=> l_cpsv_rec);
1299       l_cpsv_rec.chr_id := p_to_chr_id;
1300       l_cpsv_rec.process_id := NULL;
1301 
1302       OKC_CONTRACT_PUB.create_contract_process(
1303 	   p_api_version	=> p_api_version,
1304            p_init_msg_list	=> p_init_msg_list,
1305            x_return_status 	=> l_return_status,
1306            x_msg_count     	=> x_msg_count,
1307            x_msg_data      	=> x_msg_data,
1308            p_cpsv_rec		=> l_cpsv_rec,
1309            x_cpsv_rec		=> x_cpsv_rec);
1310 
1311       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1312         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1313           x_return_status := l_return_status;
1314           RAISE G_EXCEPTION_HALT_VALIDATION;
1315         ELSE
1316 	     x_return_status := l_return_status;
1317         END IF;
1318       END IF;
1319     END LOOP;
1320 
1321   EXCEPTION
1322     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1323       NULL;
1324     WHEN OTHERS THEN
1325       -- store SQL error message on message stack for caller
1326       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1327       -- notify caller of an UNEXPECTED error
1328       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1329 
1330   END copy_processes;
1331 
1332   ----------------------------------------------------------------------------
1333   --Proceudre copy_grpings - Makes a copy of the okc_k_grpings.
1334   ----------------------------------------------------------------------------
1335   PROCEDURE copy_grpings(
1336     p_api_version                  IN NUMBER,
1337     p_init_msg_list                IN VARCHAR2 ,
1338     x_return_status                OUT NOCOPY VARCHAR2,
1339     x_msg_count                    OUT NOCOPY NUMBER,
1340     x_msg_data                     OUT NOCOPY VARCHAR2,
1341     p_from_chr_id                  IN NUMBER,
1342     p_to_chr_id                    IN NUMBER) IS
1343 
1344     l_cgcv_rec 	cgcv_rec_type;
1345     x_cgcv_rec 	cgcv_rec_type;
1346     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1347 
1348     CURSOR 	c_grpings IS
1349     SELECT 	cgcv.id
1350     FROM 	     okc_k_grpings_v cgcv,
1351                okc_k_groups_b cgpv
1352     WHERE 	cgcv.included_chr_id = p_from_chr_id
1353     AND        cgcv.cgp_parent_id = cgpv.id
1354     AND        (cgpv.public_yn = 'Y' OR cgpv.user_id = fnd_global.user_id);
1355 
1356   BEGIN
1357     x_return_status := l_return_status;
1358     FOR l_c_grpings IN c_grpings LOOP
1359       l_return_status := get_cgcv_rec(	p_cgc_id 	=> l_c_grpings.id,
1360 					x_cgcv_rec 	=> l_cgcv_rec);
1361       l_cgcv_rec.included_chr_id := p_to_chr_id;
1362 
1363       OKC_CONTRACT_GROUP_PUB.create_contract_grpngs(
1364 	   p_api_version	=> p_api_version,
1365            p_init_msg_list	=> p_init_msg_list,
1366            x_return_status 	=> l_return_status,
1367            x_msg_count     	=> x_msg_count,
1368            x_msg_data      	=> x_msg_data,
1369            p_cgcv_rec		=> l_cgcv_rec,
1370            x_cgcv_rec		=> x_cgcv_rec);
1371 
1372       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1373         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1374           x_return_status := l_return_status;
1375           RAISE G_EXCEPTION_HALT_VALIDATION;
1376         ELSE
1377 	     x_return_status := l_return_status;
1378         END IF;
1379       END IF;
1380     END LOOP;
1381 
1382   EXCEPTION
1383     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1384       NULL;
1385     WHEN OTHERS THEN
1386       -- store SQL error message on message stack for caller
1387       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1388       -- notify caller of an UNEXPECTED error
1389       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1390 
1391   END copy_grpings;
1392 
1393   /*******************************************************************************
1394    This used to make a copy of goverances only at the header level
1395    We have replaced it by code that copies at both header and line level
1396   --------------------------------------------------------------------------
1397   --Proceudre copy_governances - Makes a copy of the okc_governances.
1398   --------------------------------------------------------------------------
1399   PROCEDURE copy_governances(
1400     p_api_version                  IN NUMBER,
1401     p_init_msg_list                IN VARCHAR2 ,
1402     x_return_status                OUT NOCOPY VARCHAR2,
1403     x_msg_count                    OUT NOCOPY NUMBER,
1404     x_msg_data                     OUT NOCOPY VARCHAR2,
1405     p_from_chr_id                  IN NUMBER,
1406     p_to_chr_id                    IN NUMBER) IS
1407 
1408     l_gvev_rec 	gvev_rec_type;
1409     x_gvev_rec 	gvev_rec_type;
1410     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1411 
1412     CURSOR 	c_governances IS
1413     SELECT 	id
1414     FROM 		okc_governances_v
1415     WHERE 	dnz_chr_id = p_from_chr_id
1416     AND		cle_id is null;
1417 
1418   ----------------------------------------------------------------------------
1419   --Function to populate the contract governance record to be copied.
1420   ----------------------------------------------------------------------------
1421     FUNCTION get_gvev_rec(p_gve_id IN NUMBER,
1422 				      x_gvev_rec OUT NOCOPY gvev_rec_type)
1423     RETURN  VARCHAR2 IS
1424       l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1425       l_no_data_found BOOLEAN := TRUE;
1426 
1427       CURSOR c_gvev_rec IS
1428       SELECT
1429 	    DNZ_CHR_ID,
1430 	    ISA_AGREEMENT_ID,
1431 	    CHR_ID,
1432 	    CLE_ID,
1433 	    CHR_ID_REFERRED,
1434 	    CLE_ID_REFERRED,
1435 	    COPIED_ONLY_YN
1436 	 FROM    OKC_GOVERNANCES
1437 	 WHERE 	ID = p_gve_id;
1438     BEGIN
1439       OPEN c_gvev_rec;
1440       FETCH c_gvev_rec
1441       INTO x_gvev_rec.DNZ_CHR_ID,
1442 		x_gvev_rec.ISA_AGREEMENT_ID,
1443 		x_gvev_rec.CHR_ID,
1444 		x_gvev_rec.CLE_ID,
1445 		x_gvev_rec.CHR_ID_REFERRED,
1446 		x_gvev_rec.CLE_ID_REFERRED,
1447 		x_gvev_rec.COPIED_ONLY_YN;
1448 
1449       l_no_data_found := c_gvev_rec%NOTFOUND;
1450       CLOSE c_gvev_rec;
1451       IF l_no_data_found THEN
1452         l_return_status := OKC_API.G_RET_STS_ERROR;
1453         return(l_return_status);
1454       ELSE
1455         return(l_return_status);
1456       END IF;
1457     EXCEPTION
1458       WHEN OTHERS THEN
1459         -- store SQL error message on message stack for caller
1460         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1461         -- notify caller of an UNEXPECTED error
1462         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1463         return(l_return_status);
1464 
1465     END get_gvev_rec;
1466   BEGIN
1467     x_return_status := l_return_status;
1468     FOR l_c_governances IN c_governances LOOP
1469       l_return_status := get_gvev_rec(	p_gve_id 	 => l_c_governances.id,
1470 					               x_gvev_rec => l_gvev_rec);
1471       l_gvev_rec.chr_id := p_to_chr_id;
1472       l_gvev_rec.dnz_chr_id := p_to_chr_id;
1473 
1474       OKC_CONTRACT_PUB.create_governance(
1475 	   p_api_version	=> p_api_version,
1476            p_init_msg_list	=> p_init_msg_list,
1477            x_return_status 	=> l_return_status,
1478            x_msg_count     	=> x_msg_count,
1479            x_msg_data      	=> x_msg_data,
1480            p_gvev_rec		=> l_gvev_rec,
1481            x_gvev_rec		=> x_gvev_rec);
1482 
1483       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1484         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1485           x_return_status := l_return_status;
1486           RAISE G_EXCEPTION_HALT_VALIDATION;
1487         ELSE
1488 	     x_return_status := l_return_status;
1489         END IF;
1490       END IF;
1491     END LOOP;
1492 
1493   EXCEPTION
1494     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1495       NULL;
1496     WHEN OTHERS THEN
1497       -- store SQL error message on message stack for caller
1498       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1499       -- notify caller of an UNEXPECTED error
1500       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1501 
1502   END copy_governances;
1503   *******************************************************************************/
1504 
1505   ----------------------------------------------------------------------------
1506   --Procedure copy_articles - Makes a copy of the articles.
1507   ----------------------------------------------------------------------------
1508   PROCEDURE copy_articles(
1509     p_api_version                  IN NUMBER,
1510     p_init_msg_list                IN VARCHAR2 ,
1511     x_return_status                OUT NOCOPY VARCHAR2,
1512     x_msg_count                    OUT NOCOPY NUMBER,
1513     x_msg_data                     OUT NOCOPY VARCHAR2,
1514     p_cat_id                  	   IN NUMBER,
1515     p_cle_id                       IN NUMBER ,
1516     p_chr_id                       IN NUMBER ,
1517     p_sav_sav_release              IN VARCHAR2 ,
1518     x_cat_id		               OUT NOCOPY NUMBER) IS
1519 
1520     l_catv_rec 			catv_rec_type;
1521     x_catv_rec 			catv_rec_type;
1522     l_atnv_rec 			atnv_rec_type;
1523     x_atnv_rec 			atnv_rec_type;
1524 
1525     l_return_status	          VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1526     l_cle_id			     NUMBER := OKC_API.G_MISS_NUM;
1527     l_new_rul_id			NUMBER := OKC_API.G_MISS_NUM;
1528 
1529     CURSOR c_dnz_chr_id(p_id IN NUMBER) IS
1530     SELECT dnz_chr_id
1531     FROM okc_k_lines_b
1532     WHERE id = p_id;
1533 
1534     CURSOR c_atn(p_id IN NUMBER) IS
1535     SELECT id
1536     FROM   okc_article_trans_v
1537     WHERE  cat_id = p_id;
1538 
1539     CURSOR c_scc IS
1540     SELECT id
1541     FROM   okc_section_contents_v
1542     WHERE  cat_id = p_cat_id;
1543 
1544   BEGIN
1545     IF (l_debug = 'Y') THEN
1546        OKC_DEBUG.Set_Indentation('OKC_COPY_CONTRACT_PVT.Copy_Articles ');
1547        OKC_DEBUG.log('100 : Entering Copy_Articles ', 2);
1548        OKC_DEBUG.log('101 : p_cat_id: '||p_cat_id, 2);
1549        OKC_DEBUG.log('101 : p_cle_id: '||p_cle_id, 2);
1550        OKC_DEBUG.log('101 : p_chr_id: '||p_chr_id, 2);
1551        OKC_DEBUG.log('101 : p_sav_sav_release: '||p_sav_sav_release, 2);
1552     END IF;
1553 
1554     x_return_status := l_return_status;
1555     l_return_status := get_catv_rec(	p_cat_id 	=> p_cat_id,
1556 					x_catv_rec 	=> l_catv_rec);
1557 
1558     IF (l_debug = 'Y') THEN
1559        OKC_DEBUG.log('200 : get_catv_rec returns ' || l_return_status, 2);
1560     END IF;
1561     If p_sav_sav_release IS NOT NULL Then
1562        l_catv_rec.sav_sav_release := p_sav_sav_release;
1563     End If;
1564 
1565     IF p_chr_id IS NULL OR p_chr_id = OKC_API.G_MISS_NUM THEN
1566       OPEN c_dnz_chr_id(p_cle_id);
1567       FETCH c_dnz_chr_id INTO l_catv_rec.dnz_chr_id;
1568       CLOSE c_dnz_chr_id;
1569     ELSE
1570       l_catv_rec.dnz_chr_id := p_chr_id;
1571     END IF;
1572 
1573     l_catv_rec.id := NULL;
1574     l_catv_rec.chr_id := p_chr_id;
1575     l_catv_rec.cle_id := p_cle_id;
1576 
1577     IF (l_debug = 'Y') THEN
1578        OKC_DEBUG.log('300 : calling OKC_K_ARTICLE_PUB.create_k_article ',2);
1579     END IF;
1580     OKC_K_ARTICLE_PUB.create_k_article(
1581 	   p_api_version	=> p_api_version,
1582            p_init_msg_list	=> p_init_msg_list,
1583            x_return_status 	=> l_return_status,
1584            x_msg_count     	=> x_msg_count,
1585            x_msg_data      	=> x_msg_data,
1586            p_catv_rec		=> l_catv_rec,
1587            x_catv_rec		=> x_catv_rec);
1588 
1589     IF (l_debug = 'Y') THEN
1590        OKC_DEBUG.log('400 : create_k_article returns ' || l_return_status, 2);
1591     END IF;
1592 
1593       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1594         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1595           x_return_status := l_return_status;
1596           RAISE G_EXCEPTION_HALT_VALIDATION;
1597         ELSE
1598 	     x_return_status := l_return_status;
1599         END IF;
1600       END IF;
1601 /* 11510 - do not copy translations, sections and section contents
1602     FOR l_c_atn IN c_atn(l_catv_rec.id)
1603     LOOP
1604       l_return_status := get_atnv_rec(	p_atn_id 	=> l_c_atn.id,
1605 					x_atnv_rec 	=> l_atnv_rec);
1606       IF get_new_rul_id(l_atnv_rec.rul_id,l_new_rul_id) THEN
1607         l_atnv_rec.rul_id := l_new_rul_id;
1608         l_atnv_rec.cat_id := x_catv_rec.id;
1609         l_atnv_rec.dnz_chr_id := x_catv_rec.dnz_chr_id;
1610 
1611         OKC_K_ARTICLE_PUB.create_article_translation(
1612         	   p_api_version	=> p_api_version,
1613                p_init_msg_list	=> p_init_msg_list,
1614                x_return_status 	=> l_return_status,
1615                x_msg_count     	=> x_msg_count,
1616                x_msg_data      	=> x_msg_data,
1617                p_atnv_rec		=> l_atnv_rec,
1618                x_atnv_rec		=> x_atnv_rec);
1619 
1620           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1621             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1622               x_return_status := l_return_status;
1623               RAISE G_EXCEPTION_HALT_VALIDATION;
1624             ELSE
1625         	     x_return_status := l_return_status;
1626             END IF;
1627           END IF;
1628       END IF;
1629     END LOOP;
1630 
1631     x_cat_id := x_catv_rec.id; -- passes the new generated id to the caller.
1632 
1633     FOR l_c_scc IN c_scc LOOP
1634       copy_sections (
1635 	   p_api_version	=> p_api_version,
1636            p_init_msg_list	=> p_init_msg_list,
1637            x_return_status 	=> l_return_status,
1638            x_msg_count     	=> x_msg_count,
1639            x_msg_data      	=> x_msg_data,
1640            p_scc_id		=> l_c_scc.id,
1641            p_to_cat_id		=> x_catv_rec.id,
1642            p_to_chr_id		=> x_catv_rec.dnz_chr_id,
1643 		 p_scn_id		     => NULL);
1644 
1645       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1646         x_return_status := l_return_status;
1647         RAISE G_EXCEPTION_HALT_VALIDATION;
1648       END IF;
1649     END LOOP;
1650 */
1651   IF (l_debug = 'Y') THEN
1652      OKC_DEBUG.log('500 : Exiting Procedure Copy_articles ', 2);
1653      OKC_DEBUG.ReSet_Indentation;
1654   END IF;
1655 
1656   EXCEPTION
1657     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1658       NULL;
1659 	    IF (l_debug = 'Y') THEN
1660    	    OKC_DEBUG.ReSet_Indentation;
1661 	    END IF;
1662     WHEN OTHERS THEN
1663       -- store SQL error message on message stack for caller
1664       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1665       -- notify caller of an UNEXPECTED error
1666       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1667 	    IF (l_debug = 'Y') THEN
1668    	    OKC_DEBUG.ReSet_Indentation;
1669 	    END IF;
1670 
1671   END copy_articles;
1672 
1673   ----------------------------------------------------------------------------------
1674   --Procedure copy_latest_articles - Makes a copy of the latest version of articles.
1675   ----------------------------------------------------------------------------------
1676   PROCEDURE copy_latest_articles(
1677     p_api_version                  IN NUMBER,
1678     p_init_msg_list                IN VARCHAR2 ,
1679     x_return_status                OUT NOCOPY VARCHAR2,
1680     x_msg_count                    OUT NOCOPY NUMBER,
1681     x_msg_data                     OUT NOCOPY VARCHAR2,
1682     p_cat_id                  	   IN NUMBER,
1683     p_cle_id                       IN NUMBER ,
1684     p_chr_id                       IN NUMBER ,
1685     x_cat_id		               OUT NOCOPY NUMBER) IS
1686 
1687 
1688     l_return_status	        		VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1689     l_sae_id			  		NUMBER;
1690     l_sav_release              	VARCHAR2(150);
1691 
1692     CURSOR c_sav_sae_id(p_cat_id IN NUMBER) IS
1693     SELECT sav_sae_id
1694     FROM okc_k_articles_b
1695     WHERE id = p_cat_id;
1696 
1697     CURSOR c_latest_version(p_sae_id IN NUMBER) IS
1698     SELECT sav_release
1699     FROM okc_std_art_versions_v
1700     WHERE sae_id = p_sae_id
1701        AND creation_date = (SELECT max(creation_date)
1702                             FROM okc_std_art_versions_v
1703                             WHERE sae_id = p_sae_id)
1704        AND date_active <= sysdate;
1705 
1706   BEGIN
1707 --
1708 IF (l_debug = 'Y') THEN
1709    OKC_DEBUG.Set_Indentation(' --- Copy_Latest_Articles ');
1710    OKC_DEBUG.log('1001 : Entering Copy_Latest_Articles ', 2);
1711 END IF;
1712 --
1713     x_return_status := l_return_status;
1714     OPEN c_sav_sae_id(p_cat_id);
1715     FETCH c_sav_sae_id INTO l_sae_id;
1716     CLOSE c_sav_sae_id;
1717 
1718     OPEN c_latest_version(l_sae_id);
1719 	    FETCH c_latest_version INTO l_sav_release;
1720     CLOSE c_latest_version;
1721 
1722 IF (l_debug = 'Y') THEN
1723    OKC_DEBUG.log('1002 : Before OKC_COPY_CONTRACT_PUB.Copy_Articles ', 2);
1724    OKC_DEBUG.log('1003 : ID='|| to_char(p_cat_id) || ', l_sav_release = ' || l_sav_release, 2);
1725    OKC_DEBUG.log('1004 : CHR_ID='|| to_char(p_chr_id) , 2);
1726 END IF;
1727 
1728 IF (l_debug = 'Y') THEN
1729    OKC_DEBUG.log('1005 : p_cle_id='|| to_char(p_cle_id) , 2);
1730 END IF;
1731 
1732     OKC_COPY_CONTRACT_PUB.copy_articles(
1733 	  p_api_version		=> p_api_version,
1734           p_init_msg_list	=> p_init_msg_list,
1735           x_return_status 	=> l_return_status,
1736           x_msg_count     	=> x_msg_count,
1737           x_msg_data      	=> x_msg_data,
1738           p_cat_id 			=> p_cat_id,
1739     	  p_cle_id            => p_cle_id,
1740     	  p_chr_id            => p_chr_id,
1741 	  p_sav_sav_release 	=> l_sav_release,
1742     	  x_cat_id			=> x_cat_id);
1743 
1744 IF (l_debug = 'Y') THEN
1745    OKC_DEBUG.log('1006 : After OKC_COPY_CONTRACT_PUB.Copy_Articles ' || l_return_status  );
1746 END IF;
1747 
1748      IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1749         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1750           x_return_status := l_return_status;
1751           RAISE G_EXCEPTION_HALT_VALIDATION;
1752         ELSE
1753 	     x_return_status := l_return_status;
1754         END IF;
1755      END IF;
1756 
1757   IF (l_debug = 'Y') THEN
1758      OKC_DEBUG.log('1007 : Exiting Procedure Copy_Latest_Articles ', 2);
1759      OKC_DEBUG.ReSet_Indentation;
1760   END IF;
1761 
1762   EXCEPTION
1763     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1764 	 IF (l_debug = 'Y') THEN
1765    	 OKC_DEBUG.ReSet_Indentation;
1766 	 END IF;
1767       NULL;
1768     WHEN OTHERS THEN
1769       -- store SQL error message on message stack for caller
1770       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1771       -- notify caller of an UNEXPECTED error
1772       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1773 	 IF (l_debug = 'Y') THEN
1774    	 OKC_DEBUG.ReSet_Indentation;
1775 	 END IF;
1776 
1777   END Copy_Latest_Articles;
1778 
1779   ----------------------------------------------------------------------------
1780   --Proceudre copy_price_att_values - Makes a copy of the price attribute values.
1781   ----------------------------------------------------------------------------
1782   PROCEDURE copy_price_att_values(
1783     p_api_version                  IN NUMBER,
1784     p_init_msg_list                IN VARCHAR2 ,
1785     x_return_status                OUT NOCOPY VARCHAR2,
1786     x_msg_count                    OUT NOCOPY NUMBER,
1787     x_msg_data                     OUT NOCOPY VARCHAR2,
1788     p_pav_id                  	   IN NUMBER,
1789     p_cle_id                       IN NUMBER ,
1790     p_chr_id                       IN NUMBER ,
1791     x_pav_id		           OUT NOCOPY NUMBER) IS
1792 
1793     l_pavv_rec 	pavv_rec_type;
1794     x_pavv_rec 	pavv_rec_type;
1795 
1796     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1797     l_cle_id			NUMBER := OKC_API.G_MISS_NUM;
1798 
1799   BEGIN
1800     x_return_status := l_return_status;
1801     l_return_status := get_pavv_rec(	p_pav_id 	=> p_pav_id,
1802 					x_pavv_rec 	=> l_pavv_rec);
1803 
1804     l_pavv_rec.chr_id := p_chr_id;
1805     l_pavv_rec.cle_id := p_cle_id;
1806 
1807     OKC_PRICE_ADJUSTMENT_PUB.create_price_att_value(
1808 	   p_api_version	=> p_api_version,
1809            p_init_msg_list	=> p_init_msg_list,
1810            x_return_status 	=> l_return_status,
1811            x_msg_count     	=> x_msg_count,
1812            x_msg_data      	=> x_msg_data,
1813            p_pavv_rec		=> l_pavv_rec,
1814            x_pavv_rec		=> x_pavv_rec);
1815 
1816       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1817         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1818           x_return_status := l_return_status;
1819           RAISE G_EXCEPTION_HALT_VALIDATION;
1820         ELSE
1821 	     x_return_status := l_return_status;
1822         END IF;
1823       END IF;
1824 
1825     x_pav_id := x_pavv_rec.id; -- passes the new generated id to the caller.
1826 
1827   EXCEPTION
1828     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1829       NULL;
1830     WHEN OTHERS THEN
1831       -- store SQL error message on message stack for caller
1832       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1833       -- notify caller of an UNEXPECTED error
1834       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1835 
1836   END copy_price_att_values;
1837 
1838 
1839 -------------------------------------------
1840 --------copy price adjustments
1841 ------------------------------------
1842    PROCEDURE copy_price_adjustments(
1843     p_api_version                  IN NUMBER,
1844     p_init_msg_list                IN VARCHAR2 ,
1845     x_return_status                OUT NOCOPY VARCHAR2,
1846     x_msg_count                    OUT NOCOPY NUMBER,
1847     x_msg_data                     OUT NOCOPY VARCHAR2,
1848     p_pat_id                       IN NUMBER,
1849     p_cle_id                       IN NUMBER ,
1850     p_chr_id                       IN NUMBER ,
1851     x_pat_id                       OUT NOCOPY NUMBER) IS
1852 
1853     l_patv_rec  patv_rec_type;
1854     x_patv_rec  patv_rec_type;
1855 
1856     l_return_status             VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1857     l_cle_id                    NUMBER := OKC_API.G_MISS_NUM;
1858 
1859     l_new_pat_id  NUMBER;
1860   BEGIN
1861     x_return_status := l_return_status;
1862     l_return_status := get_patv_rec(    p_pat_id        => p_pat_id,
1863                                         x_patv_rec      => l_patv_rec);
1864 
1865     l_patv_rec.chr_id := p_chr_id;
1866     l_patv_rec.cle_id := p_cle_id;
1867     l_patv_rec.id := NULL;
1868 
1869    IF get_new_pat_id(l_patv_rec.pat_id,l_new_pat_id) THEN
1870         l_patv_rec.pat_id := l_new_pat_id;
1871    END IF;
1872     OKC_PRICE_ADJUSTMENT_PUB.create_price_adjustment(
1873            p_api_version        => p_api_version,
1874            p_init_msg_list      => p_init_msg_list,
1875            x_return_status      => l_return_status,
1876            x_msg_count          => x_msg_count,
1877            x_msg_data           => x_msg_data,
1878            p_patv_rec           => l_patv_rec,
1879            x_patv_rec           => x_patv_rec);
1880 
1881 
1882            IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1883         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1884           x_return_status := l_return_status;
1885           RAISE G_EXCEPTION_HALT_VALIDATION;
1886         ELSE
1887              x_return_status := l_return_status;
1888         END IF;
1889       END IF;
1890 
1891     x_pat_id := x_patv_rec.id; -- passes the new generated id to the caller.
1892    add_price_adjustments(p_pat_id,x_patv_rec.id);
1893 
1894   EXCEPTION
1895     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1896       NULL;
1897     WHEN OTHERS THEN
1898       -- store SQL error message on message stack for caller
1899       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1900       -- notify caller of an UNEXPECTED error
1901       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1902 
1903   END copy_price_adjustments;
1904 
1905 ---------------------------------------------------------------------------------------------------
1906 
1907     PROCEDURE copy_price_adj_assocs(
1908     p_api_version                  IN NUMBER,
1909     p_init_msg_list                IN VARCHAR2 ,
1910     x_return_status                OUT NOCOPY VARCHAR2,
1911     x_msg_count                    OUT NOCOPY NUMBER,
1912     x_msg_data                     OUT NOCOPY VARCHAR2,
1913     p_pac_id                       IN NUMBER,
1914     p_cle_id                       IN NUMBER ,
1915     p_pat_id                       IN NUMBER ,
1916     x_pac_id                       OUT NOCOPY NUMBER) IS
1917 
1918     l_pacv_rec  pacv_rec_type;
1919     x_pacv_rec  pacv_rec_type;
1920 
1921     l_return_status             VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1922     l_cle_id                    NUMBER := OKC_API.G_MISS_NUM;
1923 
1924     l_new_pat_id                NUMBER := OKC_API.G_MISS_NUM;
1925     l_new_pat_id_from           NUMBER := OKC_API.G_MISS_NUM; -- Added as per Bug 2554460
1926 
1927   BEGIN
1928     x_return_status := l_return_status;
1929     l_return_status := get_pacv_rec(    p_pac_id        => p_pac_id,
1930                                         x_pacv_rec      => l_pacv_rec);
1931 
1932     l_pacv_rec.cle_id := p_cle_id;
1933 
1934     -- Modified for Bug 2554460/2580522
1935     IF get_new_pat_id(l_pacv_rec.pat_id_from,l_new_pat_id_from) THEN
1936         l_pacv_rec.pat_id_from := l_new_pat_id_from;
1937 
1938         IF get_new_pat_id(l_pacv_rec.pat_id,l_new_pat_id) THEN
1939            l_pacv_rec.pat_id := l_new_pat_id;
1940         ELSE
1941            l_pacv_rec.pat_id := NULL;
1942         END IF;
1943 
1944     END IF;
1945 
1946     /*  Commented for Bug 2554460
1947     IF get_new_pat_id(l_pacv_rec.pat_id_from,l_new_pat_id) THEN
1948         l_pacv_rec.pat_id_from := l_new_pat_id;
1949     ELSE
1950         l_pacv_rec.pat_id := NULL;
1951     END IF;
1952     */
1953 
1954     OKC_PRICE_ADJUSTMENT_PUB.create_price_adj_assoc(
1955            p_api_version        => p_api_version,
1956            p_init_msg_list      => p_init_msg_list,
1957            x_return_status      => l_return_status,
1958            x_msg_count          => x_msg_count,
1959            x_msg_data           => x_msg_data,
1960            p_pacv_rec           => l_pacv_rec,
1961            x_pacv_rec           => x_pacv_rec);
1962 
1963            IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1964         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1965           x_return_status := l_return_status;
1966            RAISE G_EXCEPTION_HALT_VALIDATION;
1967         ELSE
1968              x_return_status := l_return_status;
1969         END IF;
1970       END IF;
1971 
1972     x_pac_id := x_pacv_rec.id; -- passes the new generated id to the caller.
1973 
1974   EXCEPTION
1975     WHEN G_EXCEPTION_HALT_VALIDATION THEN
1976       NULL;
1977     WHEN OTHERS THEN
1978       -- store SQL error message on message stack for caller
1979       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1980       -- notify caller of an UNEXPECTED error
1981       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1982 
1983   END copy_price_adj_assocs;
1984 
1985   ----------------------------------------------------------------
1986      PROCEDURE copy_price_adj_attribs(
1987     p_api_version                  IN NUMBER,
1988     p_init_msg_list                IN VARCHAR2 ,
1989     x_return_status                OUT NOCOPY VARCHAR2,
1990     x_msg_count                    OUT NOCOPY NUMBER,
1991     x_msg_data                     OUT NOCOPY VARCHAR2,
1992     p_paa_id                       IN NUMBER ,
1993     p_pat_id                       IN NUMBER
1994                                       ) IS
1995 
1996     l_paav_rec  paav_rec_type;
1997     x_paav_rec  paav_rec_type;
1998 
1999      l_new_pat_id   NUMBER := OKC_API.G_MISS_NUM;
2000 
2001     l_return_status             VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2002 
2003 
2004      CURSOR c_paav IS
2005     SELECT id
2006     FROM okc_price_adj_attribs_v
2007     WHERE pat_id = p_pat_id;
2008 
2009   BEGIN
2010      x_return_status := l_return_status;
2011 ----   IF get_new_pat_id(p_pat_id,l_new_pat_id) THEN
2012    ----     l_new_pat_id := l_new_pat_id;
2013 ---        RAISE G_EXCEPTION_HALT_VALIDATION;
2014 --      END IF;
2015   FOR l_c_paav IN c_paav LOOP
2016     l_return_status := get_paav_rec(    p_paa_id        => l_c_paav.id,
2017                                         x_paav_rec      => l_paav_rec);
2018 
2019     IF get_new_pat_id(l_paav_rec.pat_id,l_new_pat_id) THEN
2020         l_paav_rec.pat_id := l_new_pat_id;
2021      --- ELSE
2022      -----    l_paav_rec.pat_id := null;
2023       END IF;
2024 
2025 
2026     OKC_PRICE_ADJUSTMENT_PUB.create_price_adj_attrib(
2027            p_api_version        => p_api_version,
2028            p_init_msg_list      => p_init_msg_list,
2029            x_return_status      => l_return_status,
2030            x_msg_count          => x_msg_count,
2031            x_msg_data           => x_msg_data,
2032            p_paav_rec           => l_paav_rec,
2033            x_paav_rec           => x_paav_rec);
2034            IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2035         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2036           x_return_status := l_return_status;
2037            RAISE G_EXCEPTION_HALT_VALIDATION;
2038         ELSE
2039              x_return_status := l_return_status;
2040         END IF;
2041       END IF;
2042 
2043     END LOOP;
2044   ----  x_paa_id := x_paav_rec.id; -- passes the new generated id to the caller.
2045 
2046   EXCEPTION
2047     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2048       NULL;
2049     WHEN OTHERS THEN
2050       -- store SQL error message on message stack for caller
2051       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2052       -- notify caller of an UNEXPECTED error
2053       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2054 
2055   END copy_price_adj_attribs;
2056 
2057 --------------------------------------------------------------------------------------------
2058 
2059 
2060 
2061 
2062   ----------------------------------------------------------------------------
2063   --Function to populate the sales credit record to be copied.
2064   ----------------------------------------------------------------------------
2065      FUNCTION get_scrv_rec(p_scrv_id IN NUMBER,
2066                                 x_scrv_rec OUT NOCOPY OKC_SALES_CREDIT_PUB.scrv_rec_type) RETURN  VARCHAR2 IS
2067 
2068       l_return_status           VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2069       l_no_data_found BOOLEAN := TRUE;
2070 
2071       CURSOR c_scrv_rec IS
2072       SELECT
2073               --ID,
2074               DNZ_CHR_ID,
2075               PERCENT,
2076               CHR_ID,
2077               CLE_ID,
2078               SALESREP_ID1,
2079               SALESREP_ID2,
2080               SALES_CREDIT_TYPE_ID1,
2081               SALES_CREDIT_TYPE_ID2,
2082               OBJECT_VERSION_NUMBER,
2083               CREATED_BY,
2084               CREATION_DATE,
2085               LAST_UPDATED_BY,
2086               LAST_UPDATE_DATE
2087         FROM  OKC_K_SALES_CREDITS_V
2088         WHERE ID = p_scrv_id;
2089     BEGIN
2090       OPEN c_scrv_rec;
2091       FETCH c_scrv_rec
2092       INTO
2093             --- x_scrv_rec.ID,
2094 
2095               x_scrv_rec.DNZ_CHR_ID,
2096               x_scrv_rec.PERCENT,
2097               x_scrv_rec.CHR_ID,
2098               x_scrv_rec.CLE_ID,
2099               x_scrv_rec.SALESREP_ID1,
2100               x_scrv_rec.SALESREP_ID2,
2101               x_scrv_rec.SALES_CREDIT_TYPE_ID1,
2102               x_scrv_rec.SALES_CREDIT_TYPE_ID2,
2103               x_scrv_rec.OBJECT_VERSION_NUMBER,
2104               x_scrv_rec.CREATED_BY,
2105               x_scrv_rec.CREATION_DATE,
2106               x_scrv_rec.LAST_UPDATED_BY,
2107               x_scrv_rec.LAST_UPDATE_DATE;
2108 
2109                l_no_data_found := c_scrv_rec%NOTFOUND;
2110       CLOSE c_scrv_rec;
2111       IF l_no_data_found THEN
2112         l_return_status := OKC_API.G_RET_STS_ERROR;
2113         return(l_return_status);
2114       ELSE
2115         return(l_return_status);
2116       END IF;
2117     EXCEPTION
2118       WHEN OTHERS THEN
2119         -- store SQL error message on message stack for caller
2120         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2121         -- notify caller of an UNEXPECTED error
2122         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2123         return(l_return_status);
2124 
2125     END get_scrv_rec;
2126 
2127 
2128 
2129 
2130   ----------------------------------------------------------------------------
2131   --Procedure copy_sales_credits - Makes a copy of sales credits
2132   ----------------------------------------------------------------------------
2133   PROCEDURE copy_sales_credits (
2134     p_api_version                  IN NUMBER,
2135     p_init_msg_list                IN VARCHAR2 ,
2136     x_return_status                OUT NOCOPY VARCHAR2,
2137     x_msg_count                    OUT NOCOPY NUMBER,
2138     x_msg_data                     OUT NOCOPY VARCHAR2,
2139     p_scrv_id                  	   IN NUMBER,
2140     p_cle_id                       IN NUMBER ,
2141     p_chr_id                       IN NUMBER ,
2142     x_scrv_id		           OUT NOCOPY NUMBER) IS
2143 
2144     l_scrv_rec 	OKC_SALES_credit_PUB.scrv_rec_type;
2145     x_scrv_rec 	OKC_SALES_credit_PUB.scrv_rec_type;
2146 
2147 
2148     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2149     l_cle_id			NUMBER := OKC_API.G_MISS_NUM;
2150 
2151   BEGIN
2152     x_return_status := l_return_status;
2153 
2154 
2155     l_return_status := get_scrv_rec(p_scrv_id 	=> p_scrv_id,
2156 				    x_scrv_rec 	=> l_scrv_rec);
2157 
2158     l_scrv_rec.chr_id := p_chr_id;
2159     l_scrv_rec.dnz_chr_id := p_chr_id;
2160     l_scrv_rec.cle_id := p_cle_id;
2161 
2162     OKC_SALES_credit_PUB.insert_Sales_credit(
2163 	   p_api_version	=> p_api_version,
2164            p_init_msg_list	=> p_init_msg_list,
2165            x_return_status 	=> l_return_status,
2166            x_msg_count     	=> x_msg_count,
2167            x_msg_data      	=> x_msg_data,
2168            p_scrv_rec		=> l_scrv_rec,
2169            x_scrv_rec		=> x_scrv_rec);
2170 
2171 
2172       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2173         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2174           x_return_status := l_return_status;
2175           RAISE G_EXCEPTION_HALT_VALIDATION;
2176         ELSE
2177 	     x_return_status := l_return_status;
2178         END IF;
2179       END IF;
2180 
2181     x_scrv_id := x_scrv_rec.id; -- passes the new generated id to the caller.
2182 
2183   EXCEPTION
2184     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2185       NULL;
2186     WHEN OTHERS THEN
2187       -- store SQL error message on message stack for caller
2188       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2189       -- notify caller of an UNEXPECTED error
2190       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2191 
2192   END copy_sales_credits ;
2193 
2194 
2195 
2196 
2197 
2198     ----------------------------------------------------------------------------
2199   --Function to populate the price hold line breaks record to be copied.
2200 
2201   ----------------------------------------------------------------------------
2202      FUNCTION get_okc_ph_line_breaks_v_rec(p_okc_ph_line_breaks_v_id IN NUMBER,
2203                                 x_okc_ph_line_breaks_v_rec OUT NOCOPY OKC_PH_LINE_BREAKS_PUB.okc_ph_line_breaks_v_rec_type)
2204                         RETURN  VARCHAR2 IS
2205 
2206       l_return_status           VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2207       l_no_data_found BOOLEAN := TRUE;
2208 
2209       CURSOR c_okc_ph_line_breaks_v_rec IS
2210       SELECT
2211               --ID
2212               CLE_ID,
2213               VALUE_FROM,
2214               VALUE_TO,
2215               PRICING_TYPE,
2216               VALUE,
2217               START_DATE,
2218               END_DATE,
2219               INTEGRATED_WITH_QP,
2220               QP_REFERENCE_ID,
2221               SHIP_TO_ORGANIZATION_ID,
2222               SHIP_TO_LOCATION_ID,
2223               OBJECT_VERSION_NUMBER,
2224               CREATED_BY,
2225               CREATION_DATE,
2226               LAST_UPDATED_BY,
2227               LAST_UPDATE_DATE
2228 
2229         FROM  OKC_PH_LINE_BREAKS_V
2230         WHERE ID = p_okc_ph_line_breaks_v_id;
2231     BEGIN
2232       OPEN c_okc_ph_line_breaks_v_rec;
2233       FETCH c_okc_ph_line_breaks_v_rec
2234       INTO
2235               -----x_okc_ph_line_breaks_v_rec.CLE_ID,
2236 
2237               x_okc_ph_line_breaks_v_rec.CLE_ID,
2238               x_okc_ph_line_breaks_v_rec.VALUE_FROM,
2239               x_okc_ph_line_breaks_v_rec.VALUE_TO,
2240               x_okc_ph_line_breaks_v_rec.PRICING_TYPE,
2241               x_okc_ph_line_breaks_v_rec.VALUE,
2242               x_okc_ph_line_breaks_v_rec.START_DATE,
2243               x_okc_ph_line_breaks_v_rec.END_DATE,
2244               x_okc_ph_line_breaks_v_rec.INTEGRATED_WITH_QP,
2245               x_okc_ph_line_breaks_v_rec.QP_REFERENCE_ID,
2246               x_okc_ph_line_breaks_v_rec.SHIP_TO_ORGANIZATION_ID,
2247               x_okc_ph_line_breaks_v_rec.SHIP_TO_LOCATION_ID,
2248               x_okc_ph_line_breaks_v_rec.OBJECT_VERSION_NUMBER,
2249               x_okc_ph_line_breaks_v_rec.CREATED_BY,
2250               x_okc_ph_line_breaks_v_rec.CREATION_DATE,
2251               x_okc_ph_line_breaks_v_rec.LAST_UPDATED_BY,
2252               x_okc_ph_line_breaks_v_rec.LAST_UPDATE_DATE;
2253 
2254 
2255               l_no_data_found := c_okc_ph_line_breaks_v_rec%NOTFOUND;
2256       CLOSE c_okc_ph_line_breaks_v_rec;
2257       IF l_no_data_found THEN
2258         l_return_status := OKC_API.G_RET_STS_ERROR;
2259         return(l_return_status);
2260       ELSE
2261         return(l_return_status);
2262       END IF;
2263     EXCEPTION
2264       WHEN OTHERS THEN
2265         -- store SQL error message on message stack for caller
2266         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2267         -- notify caller of an UNEXPECTED error
2268         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2269         return(l_return_status);
2270 
2271     END get_okc_ph_line_breaks_v_rec;
2272 
2273 
2274 
2275 /********Commented for bug 3033281 *******************************
2276 -- Price Hold is bosoleted and this procedure is nolonger required.
2277   ----------------------------------------------------------------------------
2278   --Procedure copy_price_hold_line_breaks - Makes a copy of price hold line breaks
2279   ----------------------------------------------------------------------------
2280   PROCEDURE copy_price_hold_line_breaks (
2281     p_api_version                  IN NUMBER,
2282     p_init_msg_list                IN VARCHAR2 ,
2283     x_return_status                OUT NOCOPY VARCHAR2,
2284     x_msg_count                    OUT NOCOPY NUMBER,
2285     x_msg_data                     OUT NOCOPY VARCHAR2,
2286     p_okc_ph_line_breaks_v_rec_id  IN NUMBER,
2287     p_cle_id                       IN NUMBER ,
2288     ----p_chr_id                       IN NUMBER ,
2289     x_okc_ph_line_breaks_v_rec_id  OUT NOCOPY NUMBER) IS
2290 
2291     l_okc_ph_line_breaks_v_rec   OKC_PH_LINE_BREAKS_PUB.okc_ph_line_breaks_v_rec_type;
2292     x_okc_ph_line_breaks_v_rec   OKC_PH_LINE_BREAKS_PUB.okc_ph_line_breaks_v_rec_type;
2293 
2294 
2295     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2296     l_cle_id			NUMBER := OKC_API.G_MISS_NUM;
2297 
2298   BEGIN
2299     x_return_status := l_return_status;
2300 
2301     l_return_status := get_okc_ph_line_breaks_v_rec(p_okc_ph_line_breaks_v_id => p_okc_ph_line_breaks_v_rec_id,
2302                                                     x_okc_ph_line_breaks_v_rec => l_okc_ph_line_breaks_v_rec);
2303 
2304     ------l_scrv_rec.chr_id := p_chr_id;
2305     ------l_scrv_rec.dnz_chr_id := p_chr_id;
2306     l_okc_ph_line_breaks_v_rec.cle_id := p_cle_id;
2307     l_okc_ph_line_breaks_v_rec.qp_reference_id := null;
2308     l_okc_ph_line_breaks_v_rec.integrated_with_qp := 'N';
2309 
2310 
2311     OKC_PH_LINE_BREAKS_PUB.create_Price_Hold_Line_Breaks(
2312 	   p_api_version	=> p_api_version,
2313            p_init_msg_list	=> p_init_msg_list,
2314            x_return_status 	=> l_return_status,
2315            x_msg_count     	=> x_msg_count,
2316            x_msg_data      	=> x_msg_data,
2317            p_okc_ph_line_breaks_v_rec => l_okc_ph_line_breaks_v_rec,
2318            x_okc_ph_line_breaks_v_rec => x_okc_ph_line_breaks_v_rec);
2319 
2320 
2321 
2322       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2323         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2324           x_return_status := l_return_status;
2325           RAISE G_EXCEPTION_HALT_VALIDATION;
2326         ELSE
2327 	     x_return_status := l_return_status;
2328         END IF;
2329       END IF;
2330 
2331     x_okc_ph_line_breaks_v_rec_id := x_okc_ph_line_breaks_v_rec.id; -- passes the new generated id to the caller.
2332 
2333   EXCEPTION
2334     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2335       NULL;
2336     WHEN OTHERS THEN
2337       -- store SQL error message on message stack for caller
2338       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2339       -- notify caller of an UNEXPECTED error
2340       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2341 
2342   END copy_price_hold_line_breaks ;
2343 
2344 -- Price Hold is bosoleted and this procedure is nolonger required.
2345 ********Commented for bug 3033281 *******************************************/
2346   ----------------------------------------------------------------------------
2347   --Function to populate the contract governance record to be copied.
2348   ----------------------------------------------------------------------------
2349     FUNCTION get_gvev_rec(p_gve_id IN NUMBER,
2350 				      x_gvev_rec OUT NOCOPY gvev_rec_type)
2351     RETURN  VARCHAR2 IS
2352       l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2353       l_no_data_found BOOLEAN := TRUE;
2354 
2355       CURSOR c_gvev_rec IS
2356       SELECT
2357 	    DNZ_CHR_ID,
2358 	    ISA_AGREEMENT_ID,
2359 	    CHR_ID,
2360 	    CLE_ID,
2361 	    CHR_ID_REFERRED,
2362 	    CLE_ID_REFERRED,
2363 	    COPIED_ONLY_YN
2364 	 FROM    OKC_GOVERNANCES
2365 	 WHERE 	ID = p_gve_id;
2366     BEGIN
2367       OPEN c_gvev_rec;
2368       FETCH c_gvev_rec
2369       INTO x_gvev_rec.DNZ_CHR_ID,
2370 		x_gvev_rec.ISA_AGREEMENT_ID,
2371 		x_gvev_rec.CHR_ID,
2372 		x_gvev_rec.CLE_ID,
2373 		x_gvev_rec.CHR_ID_REFERRED,
2374 		x_gvev_rec.CLE_ID_REFERRED,
2375 		x_gvev_rec.COPIED_ONLY_YN;
2376 
2377       l_no_data_found := c_gvev_rec%NOTFOUND;
2378       CLOSE c_gvev_rec;
2379       IF l_no_data_found THEN
2380         l_return_status := OKC_API.G_RET_STS_ERROR;
2381         return(l_return_status);
2382       ELSE
2383         return(l_return_status);
2384       END IF;
2385     EXCEPTION
2386       WHEN OTHERS THEN
2387         -- store SQL error message on message stack for caller
2388         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2389         -- notify caller of an UNEXPECTED error
2390         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2391         return(l_return_status);
2392 
2393     END get_gvev_rec;
2394 
2395 
2396   --------------------------------------------------------------------------
2397   --Procedure copy_governances - Makes a copy of the okc_governances
2398   --------------------------------------------------------------------------
2399   PROCEDURE copy_governances(
2400     p_api_version                  IN NUMBER,
2401     p_init_msg_list                IN VARCHAR2 ,
2402     x_return_status                OUT NOCOPY VARCHAR2,
2403     x_msg_count                    OUT NOCOPY NUMBER,
2404     x_msg_data                     OUT NOCOPY VARCHAR2,
2405     p_gvev_id                  	   IN NUMBER,
2406     p_cle_id                       IN NUMBER ,
2407     p_chr_id                       IN NUMBER ,
2408     x_gvev_id		           OUT NOCOPY NUMBER) IS
2409 
2410 
2411     l_gvev_rec 	gvev_rec_type;
2412     x_gvev_rec 	gvev_rec_type;
2413 
2414     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2415 
2416   BEGIN
2417 
2418     x_return_status := l_return_status;
2419 
2420     l_return_status := get_gvev_rec(p_gve_id   => p_gvev_id,
2421 			            x_gvev_rec => l_gvev_rec);
2422 
2423     IF p_cle_id IS NOT NULL AND p_cle_id <> OKC_API.G_MISS_NUM THEN
2424        --we are copying at line level so chr_id should be null
2425        l_gvev_rec.chr_id        :=   NULL;
2426     ELSE
2427        --we are copying at header level
2428        l_gvev_rec.chr_id        :=   p_chr_id;
2429     END IF;
2430 
2431     l_gvev_rec.dnz_chr_id    :=   p_chr_id;
2432     l_gvev_rec.cle_id        :=   p_cle_id;   --p_cle_id will be passed here as null if we are copying at header level
2433 
2434 
2435     OKC_CONTRACT_PUB.create_governance(
2436 	   p_api_version	=> p_api_version,
2437            p_init_msg_list	=> p_init_msg_list,
2438            x_return_status 	=> l_return_status,
2439            x_msg_count     	=> x_msg_count,
2440            x_msg_data      	=> x_msg_data,
2441            p_gvev_rec		=> l_gvev_rec,
2442            x_gvev_rec		=> x_gvev_rec);
2443 
2444     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2445         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2446             x_return_status := l_return_status;
2447             RAISE G_EXCEPTION_HALT_VALIDATION;
2448         ELSE
2449 	    x_return_status := l_return_status;
2450         END IF;
2451     END IF;
2452 
2453     x_gvev_id := x_gvev_rec.id; -- passes the new generated id to the caller.
2454 
2455   EXCEPTION
2456     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2457       NULL;
2458     WHEN OTHERS THEN
2459       -- store SQL error message on message stack for caller
2460       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2461       -- notify caller of an UNEXPECTED error
2462       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2463 
2464   END copy_governances;
2465 
2466 
2467 
2468 
2469   ----------------------------------------------------------------------------
2470   --Proceudre copy_party_roles - Makes a copy of the party_roles.
2471   ----------------------------------------------------------------------------
2472   PROCEDURE copy_party_roles(
2473     p_api_version                  IN NUMBER,
2474     p_init_msg_list                IN VARCHAR2 ,
2475     x_return_status                OUT NOCOPY VARCHAR2,
2476     x_msg_count                    OUT NOCOPY NUMBER,
2477     x_msg_data                     OUT NOCOPY VARCHAR2,
2478     p_cpl_id                  	   IN NUMBER,
2479     p_cle_id                       IN NUMBER ,
2480     p_chr_id                       IN NUMBER ,
2481     P_rle_code                     IN VARCHAR2,
2482     x_cpl_id		           OUT NOCOPY NUMBER) IS
2483 
2484     l_cplv_rec 	cplv_rec_type;
2485     x_cplv_rec 	cplv_rec_type;
2486     l_ctcv_rec 	ctcv_rec_type;
2487     x_ctcv_rec 	ctcv_rec_type;
2488 
2489     l_party_name                VARCHAR2(200);
2490     l_party_desc                VARCHAR2(2000);
2491     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2492     l_cle_id			NUMBER := OKC_API.G_MISS_NUM;
2493 
2494     CURSOR c_dnz_chr_id(p_id IN NUMBER) IS
2495     SELECT dnz_chr_id
2496     FROM okc_k_lines_b
2497     WHERE id = p_id;
2498 
2499     CURSOR c_ctcv IS
2500     SELECT id
2501     FROM okc_contacts_v
2502     WHERE cpl_id = p_cpl_id;
2503 
2504   BEGIN
2505     x_return_status := l_return_status;
2506     l_return_status := get_cplv_rec(	p_cpl_id 	=> p_cpl_id,
2507 					x_cplv_rec 	=> l_cplv_rec);
2508 
2509     IF p_chr_id IS NULL OR p_chr_id = OKC_API.G_MISS_NUM THEN
2510       OPEN c_dnz_chr_id(p_cle_id);
2511       FETCH c_dnz_chr_id INTO l_cplv_rec.dnz_chr_id;
2512       CLOSE c_dnz_chr_id;
2513     ELSE
2514       l_cplv_rec.dnz_chr_id := p_chr_id;
2515     END IF;
2516 
2517     l_cplv_rec.chr_id := p_chr_id;
2518     l_cplv_rec.cle_id := p_cle_id;
2519     IF p_rle_code IS NOT NULL THEN
2520       l_cplv_rec.rle_code := p_rle_code;
2521     END IF;
2522 
2523     OKC_CONTRACT_PARTY_PUB.create_k_party_role(
2524 	   p_api_version	=> p_api_version,
2525            p_init_msg_list	=> p_init_msg_list,
2526            x_return_status 	=> l_return_status,
2527            x_msg_count     	=> x_msg_count,
2528            x_msg_data      	=> x_msg_data,
2529            p_cplv_rec		=> l_cplv_rec,
2530            x_cplv_rec		=> x_cplv_rec);
2531 
2532       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2533           x_return_status := l_return_status;
2534           RAISE G_EXCEPTION_HALT_VALIDATION;
2535       END IF;
2536 
2537     x_cpl_id := x_cplv_rec.id; -- passes the new generated id to the caller.
2538 
2539      --stores the new rul_id in a global pl/sql table.
2540      add_party(l_cplv_rec.id,x_cplv_rec.id);
2541 
2542 
2543     FOR l_c_ctcv IN c_ctcv LOOP
2544       l_return_status := get_ctcv_rec(	p_ctc_id 	=> l_c_ctcv.id,
2545 					x_ctcv_rec 	=> l_ctcv_rec);
2546 
2547       l_ctcv_rec.dnz_chr_id := l_cplv_rec.dnz_chr_id;
2548       l_ctcv_rec.cpl_id := x_cplv_rec.id;
2549 
2550       OKC_CONTRACT_PARTY_PUB.create_contact(
2551 	   p_api_version	=> p_api_version,
2552            p_init_msg_list	=> p_init_msg_list,
2553            x_return_status 	=> l_return_status,
2554            x_msg_count     	=> x_msg_count,
2555            x_msg_data      	=> x_msg_data,
2556            p_ctcv_rec		=> l_ctcv_rec,
2557            x_ctcv_rec		=> x_ctcv_rec);
2558 
2559       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2560         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2561           x_return_status := l_return_status;
2562           RAISE G_EXCEPTION_HALT_VALIDATION;
2563         ELSE
2564 	  x_return_status := OKC_API.G_RET_STS_WARNING;
2565           okc_util.get_name_desc_from_jtfv( p_object_code  => x_cplv_rec.jtot_object1_code,
2566                                         p_id1          => x_cplv_rec.object1_id1,
2567                                         p_id2          => x_cplv_rec.object1_id2,
2568                                         x_name         => l_party_name,
2569                                         x_description  => l_party_desc);
2570 
2571           OKC_API.set_message(G_APP_NAME,'OKC_CONTACT_NOT_COPIED','PARTY_NAME',l_party_name);
2572         END IF;
2573       END IF;
2574     END LOOP;
2575 
2576   EXCEPTION
2577     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2578       NULL;
2579     WHEN OTHERS THEN
2580       -- store SQL error message on message stack for caller
2581       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2582       -- notify caller of an UNEXPECTED error
2583       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2584 
2585   END copy_party_roles;
2586 
2587   ----------------------------------------------------------------------------
2588   --Proceudre copy_events - Makes a copy of the condition header and all condition lines under the header.
2589   ----------------------------------------------------------------------------
2590   PROCEDURE copy_events(
2591     p_api_version                  IN NUMBER,
2592     p_init_msg_list                IN VARCHAR2 ,
2593     x_return_status                OUT NOCOPY VARCHAR2,
2594     x_msg_count                    OUT NOCOPY NUMBER,
2595     x_msg_data                     OUT NOCOPY VARCHAR2,
2596     p_cnh_id                  	   IN NUMBER,
2597     p_chr_id                       IN NUMBER ,
2598     p_to_template_yn               IN VARCHAR2,
2599     x_cnh_id		           OUT NOCOPY NUMBER) IS
2600 
2601     l_cnhv_rec 	cnhv_rec_type;
2602     x_cnhv_rec 	cnhv_rec_type;
2603     l_cnlv_rec 	cnlv_rec_type;
2604     x_cnlv_rec 	cnlv_rec_type;
2605     l_ocev_rec 	ocev_rec_type;
2606     x_ocev_rec 	ocev_rec_type;
2607     l_oatv_rec 	oatv_rec_type;
2608     x_oatv_rec 	oatv_rec_type;
2609 
2610     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2611     l_cle_id			NUMBER := OKC_API.G_MISS_NUM;
2612     l_new_cnh_id 		NUMBER;
2613 
2614     CURSOR 	c_cnlv IS
2615     SELECT 	id
2616     FROM 	okc_condition_lines_b
2617     WHERE 	cnh_id = p_cnh_id;
2618 
2619     CURSOR 	c_ocev IS
2620     SELECT 	id
2621     FROM 	okc_outcomes_b
2622     WHERE 	cnh_id = p_cnh_id;
2623 
2624     CURSOR 	c_oatv(p_oce_id IN NUMBER) IS
2625     SELECT 	id
2626     FROM 	okc_outcome_arguments_v
2627     WHERE 	oce_id = p_oce_id;
2628 
2629   BEGIN
2630     x_return_status := l_return_status;
2631     IF get_new_cnh_id(p_cnh_id,l_new_cnh_id) THEN --If the events is already copied then return.
2632       x_cnh_id := l_new_cnh_id;
2633       RAISE G_EXCEPTION_HALT_VALIDATION;
2634     END IF;
2635     l_return_status := get_cnhv_rec(	p_cnh_id 	=> p_cnh_id,
2636 					x_cnhv_rec 	=> l_cnhv_rec);
2637 
2638     l_cnhv_rec.dnz_chr_id := p_chr_id;
2639     l_cnhv_rec.object_id  := p_chr_id;
2640     l_cnhv_rec.jtot_object_code  := 'OKC_K_HEADER';
2641     IF p_to_template_yn = 'Y' THEN
2642       l_cnhv_rec.template_yn := 'Y';
2643     ELSIF p_to_template_yn = 'N' THEN
2644       l_cnhv_rec.template_yn := 'N';
2645     END IF;
2646     If (l_cnhv_rec.date_active < g_chrv_rec.start_date OR
2647 	   l_cnhv_rec.date_active > g_chrv_rec.end_date)
2648     Then
2649         l_cnhv_rec.date_active := g_chrv_rec.start_date;
2650     End If;
2651     If (l_cnhv_rec.date_inactive > g_chrv_rec.end_date OR
2652 	   l_cnhv_rec.date_inactive < g_chrv_rec.start_date)
2653     Then
2654         l_cnhv_rec.date_inactive := g_chrv_rec.end_date;
2655     End If;
2656 
2657     OKC_CONDITIONS_PUB.create_cond_hdrs(
2658 	   p_api_version	=> p_api_version,
2659            p_init_msg_list	=> p_init_msg_list,
2660            x_return_status 	=> l_return_status,
2661            x_msg_count     	=> x_msg_count,
2662            x_msg_data      	=> x_msg_data,
2663            p_cnhv_rec		=> l_cnhv_rec,
2664            x_cnhv_rec		=> x_cnhv_rec);
2665 
2666       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2667         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2668           x_return_status := l_return_status;
2669           RAISE G_EXCEPTION_HALT_VALIDATION;
2670         ELSE
2671 	     x_return_status := OKC_API.G_RET_STS_WARNING;
2672 
2673           OKC_API.set_message(G_APP_NAME,'OKC_CONDITION_NOT_COPIED','CONDITION',l_cnhv_rec.name);
2674           RAISE G_EXCEPTION_HALT_VALIDATION;
2675         END IF;
2676       END IF;
2677 
2678     x_cnh_id := x_cnhv_rec.id; -- passes the new generated id to the caller.
2679 
2680     FOR l_c_cnlv IN c_cnlv LOOP
2681       l_return_status := get_cnlv_rec(	p_cnl_id 	=> l_c_cnlv.id,
2682 					x_cnlv_rec 	=> l_cnlv_rec);
2683 
2684       l_cnlv_rec.dnz_chr_id := l_cnhv_rec.dnz_chr_id;
2685       l_cnlv_rec.cnh_id := x_cnhv_rec.id;
2686 
2687       OKC_CONDITIONS_PUB.create_cond_lines(
2688 	   p_api_version	=> p_api_version,
2689            p_init_msg_list	=> p_init_msg_list,
2690            x_return_status 	=> l_return_status,
2691            x_msg_count     	=> x_msg_count,
2692            x_msg_data      	=> x_msg_data,
2693            p_cnlv_rec		=> l_cnlv_rec,
2694            x_cnlv_rec		=> x_cnlv_rec);
2695 
2696       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2697         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2698           x_return_status := l_return_status;
2699           RAISE G_EXCEPTION_HALT_VALIDATION;
2700         ELSE
2701 	     x_return_status := l_return_status;
2702         END IF;
2703       END IF;
2704     END LOOP;
2705 
2706     FOR l_c_ocev IN c_ocev LOOP
2707       l_return_status := get_ocev_rec(	p_oce_id 	=> l_c_ocev.id,
2708 					x_ocev_rec 	=> l_ocev_rec);
2709 
2710       l_ocev_rec.dnz_chr_id := l_cnhv_rec.dnz_chr_id;
2711       l_ocev_rec.cnh_id := x_cnhv_rec.id;
2712 
2713       OKC_OUTCOME_PUB.create_outcome(
2714 	   p_api_version	=> p_api_version,
2715            p_init_msg_list	=> p_init_msg_list,
2716            x_return_status 	=> l_return_status,
2717            x_msg_count     	=> x_msg_count,
2718            x_msg_data      	=> x_msg_data,
2719            p_ocev_rec		=> l_ocev_rec,
2720            x_ocev_rec		=> x_ocev_rec);
2721 
2722       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2723         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2724           x_return_status := l_return_status;
2725           RAISE G_EXCEPTION_HALT_VALIDATION;
2726         ELSE
2727 	     x_return_status := l_return_status;
2728         END IF;
2729       END IF;
2730 
2731       FOR l_c_oatv IN c_oatv(l_ocev_rec.id) LOOP
2732         l_return_status := get_oatv_rec(	p_oat_id 	=> l_c_oatv.id,
2733 					x_oatv_rec 	=> l_oatv_rec);
2734 
2735         l_oatv_rec.dnz_chr_id := l_cnhv_rec.dnz_chr_id;
2736         l_oatv_rec.oce_id := x_ocev_rec.id;
2737 
2738         OKC_OUTCOME_PUB.create_out_arg(
2739 	   p_api_version	=> p_api_version,
2740            p_init_msg_list	=> p_init_msg_list,
2741            x_return_status 	=> l_return_status,
2742            x_msg_count     	=> x_msg_count,
2743            x_msg_data      	=> x_msg_data,
2744            p_oatv_rec		=> l_oatv_rec,
2745            x_oatv_rec		=> x_oatv_rec);
2746 
2747         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2748           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2749             x_return_status := l_return_status;
2750             RAISE G_EXCEPTION_HALT_VALIDATION;
2751           ELSE
2752 	     x_return_status := l_return_status;
2753           END IF;
2754         END IF;
2755       END LOOP;
2756 
2757     END LOOP;
2758 
2759     add_events(p_cnh_id,x_cnhv_rec.id); --adds the new event id in the global PL/SQL table.
2760 
2761   EXCEPTION
2762     WHEN G_EXCEPTION_HALT_VALIDATION THEN
2763       NULL;
2764     WHEN OTHERS THEN
2765       -- store SQL error message on message stack for caller
2766       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2767       -- notify caller of an UNEXPECTED error
2768       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2769 
2770   END copy_events;
2771 
2772   ----------------------------------------------------------------------------
2773   --Proceudre copy_rules - Makes a copy of the rule group and all the rules under the group.
2774   ----------------------------------------------------------------------------
2775   PROCEDURE copy_rules(
2776     p_api_version                  IN NUMBER,
2777     p_init_msg_list                IN VARCHAR2 ,
2778     x_return_status                OUT NOCOPY VARCHAR2,
2779     x_msg_count                    OUT NOCOPY NUMBER,
2780     x_msg_data                     OUT NOCOPY VARCHAR2,
2781     p_rgp_id                  	   IN NUMBER,
2782     p_cle_id                       IN NUMBER ,
2783     p_chr_id                       IN NUMBER ,
2784     p_to_template_yn			   IN VARCHAR2,
2785     x_rgp_id		           OUT NOCOPY NUMBER) IS
2786 
2787     l_rgpv_rec 	rgpv_rec_type;
2788     x_rgpv_rec 	rgpv_rec_type;
2789     l_rulv_rec 	rulv_rec_type;
2790     x_rulv_rec 	rulv_rec_type;
2791     l_rmpv_rec 	rmpv_rec_type;
2792     x_rmpv_rec 	rmpv_rec_type;
2793 
2794     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2795     l_old_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2796     l_cle_id			   NUMBER := OKC_API.G_MISS_NUM;
2797     l_tve_id                NUMBER;
2798     l_tve_id_out            NUMBER;
2799     l_col_vals              okc_time_util_pub.t_col_vals;
2800     l_col_vals_temp         okc_time_util_pub.t_col_vals;
2801     l_no_of_cols            NUMBER;
2802     l_string                VARCHAR2(2000);
2803     l_time_value_copied     VARCHAR2(1):= 'Y';
2804     i                       NUMBER := 0;
2805     tmp_rulv_rec            rulv_rec_type;
2806 
2807     l_found                 BOOLEAN;
2808     l_cpl_id                NUMBER;
2809     l_new_cpl_id            NUMBER;
2810     l_result                VARCHAR2(1):='?';
2811 
2812     CURSOR c_dnz_chr_id(p_id IN NUMBER) IS
2813     SELECT dnz_chr_id
2814     FROM okc_k_lines_b
2815     WHERE id = p_id;
2816 --->NO Union
2817 
2818     --Bug:3626930 cursor modified to check whether the rule
2819     --to be copied is also available in the rules setup i.e
2820     --in okc_rg_def_rules table
2821     CURSOR c_rulv(p_rgp_id IN NUMBER) IS
2822     SELECT rul.id,rule_information_category
2823     FROM okc_rules_b rul, okc_rule_groups_b rgp ,okc_rg_def_rules rgdef
2824     WHERE rul.rgp_id = p_rgp_id
2825     and rul.rgp_id=rgp.id
2826     and rgp.rgd_code=rgdef.rgd_code
2827     and rul.rule_information_category=rgdef.rdf_code;
2828 --->No union
2829 
2830     CURSOR c_rmpv(p_rgp_id IN NUMBER) IS
2831     SELECT rrd_id,cpl_id
2832     FROM okc_rg_party_roles_v
2833     WHERE rgp_id = p_rgp_id;
2834 --->Union Yes
2835 
2836     CURSOR c_rrdv(p_rgp_id IN NUMBER) IS
2837     SELECT cpl_id
2838     FROM okc_rg_party_roles_v rgp, okc_rg_role_defs rrd
2839     WHERE rrd.id = rgp.rrd_id
2840     and rgp.dnz_chr_id = (select dnz_chr_id
2841                           from okc_rule_groups_b
2842                           where id = p_rgp_id)
2843     and rgp.rgp_id = p_rgp_id
2844     and rrd.subject_object_flag = 'O';
2845 ---No Union REQD
2846 
2847 --Bug 3948599
2848     CURSOR c_rgdv_csr(p_rgp_id IN NUMBER,p_dnz_chr_id IN NUMBER) IS
2849         SELECT 'x'
2850         FROM   FND_LOOKUP_VALUES rgdv,
2851                okc_rule_groups_b rgp,
2852                OKC_SUBCLASS_RG_DEFS srdv,
2853                OKC_K_HEADERS_B chrv
2854         WHERE rgp.id           = p_rgp_id
2855           AND rgdv.LOOKUP_CODE = rgp.rgd_code
2856           AND rgdv.lookup_type = 'OKC_RULE_GROUP_DEF'
2857           AND srdv.RGD_CODE = rgp.rgd_code
2858           AND srdv.SCS_CODE = chrv.SCS_CODE
2859           AND chrv.ID       = p_dnz_chr_id;
2860 
2861   BEGIN
2862 
2863 IF (l_debug = 'Y') THEN
2864    OKC_DEBUG.Set_Indentation(' Copy_Rules ');
2865    OKC_DEBUG.log('2001 : Entering Copy_Rules ', 2);
2866 END IF;
2867 
2868     x_return_status := l_return_status;
2869     l_return_status := get_rgpv_rec(	p_rgp_id 	=> p_rgp_id,
2870 					x_rgpv_rec 	=> l_rgpv_rec);
2871 
2872     IF p_chr_id IS NULL OR p_chr_id = OKC_API.G_MISS_NUM THEN
2873       OPEN c_dnz_chr_id(p_cle_id);
2874       FETCH c_dnz_chr_id INTO l_rgpv_rec.dnz_chr_id;
2875       CLOSE c_dnz_chr_id;
2876     ELSE
2877       l_rgpv_rec.dnz_chr_id := p_chr_id;
2878     END IF;
2879 
2880     --
2881     -- Do not copy the rule group and rules under it
2882     -- if the rule group has a object(party)
2883     -- which is not in the target contract
2884     --
2885 
2886     -- check whether object (party) exists for this rule group
2887     OPEN c_rrdv(p_rgp_id);
2888     FETCH c_rrdv INTO l_cpl_id;
2889     l_found := c_rrdv%FOUND;
2890     CLOSE c_rrdv;
2891 
2892     --
2893     -- If there is a object (party) in the source contract
2894     -- and found in target contract, continue copy
2895     -- else do not copy this rule group
2896     --
2897     If (l_found) Then
2898        If (get_new_cpl_id(l_cpl_id,l_new_cpl_id)) Then
2899           null;
2900        Else
2901 		IF (l_debug = 'Y') THEN
2902    		OKC_DEBUG.ReSet_Indentation;
2903 		END IF;
2904           return;
2905        End If;
2906     End If;
2907 
2908 --Bug 3948599 Added cursor c_rgdv_csr to check if subclass rulegroup definition is present for the scs_code of that contract
2909     l_result := '?';
2910     OPEN  c_rgdv_csr(p_rgp_id,l_rgpv_rec.dnz_chr_id);
2911     FETCH c_rgdv_csr INTO l_result;
2912     CLOSE c_rgdv_csr;
2913 
2914     IF l_result <> 'x' THEN
2915     -- Cannot be copied. Skip this rule group.
2916       IF (l_debug = 'Y') THEN
2917    		OKC_DEBUG.ReSet_Indentation;
2918 	  END IF;
2919       return;
2920     END IF;
2921 
2922 
2923     l_return_status := get_chrv_rec(l_rgpv_rec.dnz_chr_id,g_chrv_rec); --this is to populate global
2924 
2925     -- preserve the actuval history flag
2926     l_old_history_yn := G_COPY_HISTORY_YN;
2927     G_COPY_HISTORY_YN := 'N';
2928     l_return_status := get_chrv_rec(l_rgpv_rec.dnz_chr_id,g_chrv_rec); --this is to populate global
2929     -- reset G_COPY_HISTORY_YN;
2930     G_COPY_HISTORY_YN := l_old_history_yn;
2931 
2932     --header rec when copy is called while copying rules from Standard article library.
2933     l_rgpv_rec.chr_id := p_chr_id;
2934     l_rgpv_rec.cle_id := p_cle_id;
2935     l_rgpv_rec.rgp_type := 'KRG';
2936     l_rgpv_rec.sat_code := null;
2937 
2938 IF (l_debug = 'Y') THEN
2939    OKC_DEBUG.log('2001 : Before Procedure  Create_Rule_Group : ' );
2940 END IF;
2941     OKC_RULE_PUB.create_rule_group(
2942 	   p_api_version	=> p_api_version,
2943            p_init_msg_list	=> p_init_msg_list,
2944            x_return_status 	=> l_return_status,
2945            x_msg_count     	=> x_msg_count,
2946            x_msg_data      	=> x_msg_data,
2947            p_rgpv_rec		=> l_rgpv_rec,
2948            x_rgpv_rec		=> x_rgpv_rec);
2949 
2950     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2951         x_return_status := l_return_status;
2952         RAISE G_EXCEPTION_HALT_VALIDATION;
2953     END IF;
2954 
2955     x_rgp_id := x_rgpv_rec.id; -- passes the new generated id to the caller.
2956 
2957 IF (l_debug = 'Y') THEN
2958    OKC_DEBUG.log('2001 : After Procedure Create_Rule_Group : ');
2959 END IF;
2960     FOR l_c_rmpv IN c_rmpv(p_rgp_id) LOOP
2961       l_old_return_status := x_return_status;
2962       l_rmpv_rec.dnz_chr_id := l_rgpv_rec.dnz_chr_id;
2963       l_rmpv_rec.rgp_id := x_rgpv_rec.id;
2964       l_rmpv_rec.rrd_id := l_c_rmpv.rrd_id;
2965 
2966       IF get_new_cpl_id(l_c_rmpv.cpl_id,l_rmpv_rec.cpl_id) THEN
2967 
2968 IF (l_debug = 'Y') THEN
2969    OKC_DEBUG.log('2001 : Before Procedure Create_Rg_Mode_Pty_Role : '  );
2970 END IF;
2971         OKC_RULE_PUB.create_rg_mode_pty_role(
2972  	   p_api_version	=> p_api_version,
2973             p_init_msg_list	=> p_init_msg_list,
2974             x_return_status 	=> l_return_status,
2975             x_msg_count     	=> x_msg_count,
2976             x_msg_data      	=> x_msg_data,
2977             p_rmpv_rec		=> l_rmpv_rec,
2978             x_rmpv_rec		=> x_rmpv_rec);
2979 
2980         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2981           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2982             x_return_status := l_return_status;
2983             RAISE G_EXCEPTION_HALT_VALIDATION;
2984           ELSE
2985             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR then
2986               x_return_status := OKC_API.G_RET_STS_WARNING;
2987             END IF;
2988           END IF;
2989         END IF;
2990       END IF;
2991 
2992     END LOOP;
2993 
2994     FOR l_c_rulv IN c_rulv(p_rgp_id) LOOP
2995       l_return_status := get_rulv_rec(	p_rul_id 	=> l_c_rulv.id,
2996 					x_rulv_rec 	=> l_rulv_rec);
2997 
2998       l_rulv_rec.dnz_chr_id := l_rgpv_rec.dnz_chr_id;
2999       l_rulv_rec.rgp_id := x_rgpv_rec.id;
3000 
3001 	 --For Bug#3095455
3002 	 -- by passing rules validation in okc_rul_pvt,when value is 'N' for NCR.
3003 	 l_rulv_rec.VALIDATE_YN  := 'N';
3004 	 --For Bug#3095455
3005 
3006       IF p_to_template_yn = 'Y' THEN
3007 	   l_rulv_rec.std_template_yn := 'Y';
3008       ELSE
3009 	   l_rulv_rec.std_template_yn := 'N';
3010       END IF;
3011 
3012       -- logic to copy the timevalue associated with the rule begins
3013 
3014      g_rulv_rec := l_rulv_rec;
3015      l_col_vals := l_col_vals_temp; -- initialising the table with null
3016 
3017 -- /striping/
3018 p_appl_id  := okc_rld_pvt.get_appl_id(l_c_rulv.rule_information_category);
3019 p_dff_name := okc_rld_pvt.get_dff_name(l_c_rulv.rule_information_category);
3020 
3021 --     okc_time_util_pub.get_dff_column_values( p_app_id => 510,     -- /striping/
3022      okc_time_util_pub.get_dff_column_values( p_app_id => p_appl_id,
3023 --               p_dff_name => 'OKC Rule Developer DF',              -- /striping/
3024                p_dff_name => p_dff_name,
3025                p_rdf_code => l_c_rulv.rule_information_category,
3026                p_fvs_name => 'OKC_TIMEVALUES',
3027                p_rule_id  => l_c_rulv.id,
3028                p_col_vals => l_col_vals,
3029                p_no_of_cols => l_no_of_cols );
3030      IF l_col_vals.COUNT > 0 THEN
3031        i := l_col_vals.FIRST;
3032        LOOP
3033 	    l_tve_id := to_number(l_col_vals(i).col_value);
3034 	    IF l_tve_id IS NOT NULL THEN
3035            copy_timevalues (
3036       	   p_api_version	=> p_api_version,
3037              p_init_msg_list	=> p_init_msg_list,
3038              x_return_status 	=> l_return_status,
3039              x_msg_count     	=> x_msg_count,
3040              x_msg_data      	=> x_msg_data,
3041              p_tve_id		=> l_tve_id,
3042              p_to_chr_id		=> l_rgpv_rec.dnz_chr_id,-- the rule group dnz_chr_id is passed
3043 	        p_to_template_yn => p_to_template_yn,
3044              x_tve_id	     => l_tve_id_out);
3045 
3046           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3047             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3048               x_return_status := l_return_status;
3049               RAISE G_EXCEPTION_HALT_VALIDATION;
3050             ELSE
3051               l_time_value_copied := 'N';
3052               x_return_status := l_return_status;
3053 /*
3054               l_string := 'BEGIN OKC_COPY_CONTRACT_PVT.g_rulv_rec.' ||l_col_vals(i).col_name||' := null; END;';
3055               EXECUTE IMMEDIATE l_string;
3056 */
3057 
3058 -- skekkar
3059 -- Bug 2934909  Changed dynamic sql to static
3060 --
3061 
3062               IF l_col_vals(i).col_name = 'RULE_INFORMATION1' THEN
3063                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION1 := NULL;
3064               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION2' THEN
3065                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION2 := NULL;
3066               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION3' THEN
3067                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION3 := NULL;
3068               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION4' THEN
3069                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION4 := NULL;
3070               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION5' THEN
3071                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION5 := NULL;
3072               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION6' THEN
3073                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION6 := NULL;
3074               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION7' THEN
3075                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION7 := NULL;
3076               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION8' THEN
3077                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION8 := NULL;
3078               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION9' THEN
3079                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION9 := NULL;
3080               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION10' THEN
3081                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION10 := NULL;
3082               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION11' THEN
3083                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION11 := NULL;
3084               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION12' THEN
3085                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION12 := NULL;
3086               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION13' THEN
3087                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION13 := NULL;
3088               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION14' THEN
3089                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION14 := NULL;
3090               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION15' THEN
3091                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION15 := NULL;
3092               END IF;
3093 
3094 
3095               EXIT;
3096             END IF;
3097           ELSE
3098 		 add_timevalues(l_tve_id,l_tve_id_out);
3099 
3100 /*
3101         l_string := 'BEGIN OKC_COPY_CONTRACT_PVT.g_rulv_rec.' ||l_col_vals(i).col_name||' := :l_tve_id_out; END;';
3102              -- bug#2256693 ||to_char(l_tve_id_out)||'; END;';
3103         EXECUTE IMMEDIATE l_string USING IN l_tve_id_out;
3104 */
3105 
3106 -- skekkar
3107 -- Bug 2934909  Changed dynamic sql to static
3108 --
3109 
3110               IF l_col_vals(i).col_name = 'RULE_INFORMATION1' THEN
3111                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION1 := l_tve_id_out;
3112               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION2' THEN
3113                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION2 := l_tve_id_out;
3114               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION3' THEN
3115                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION3 := l_tve_id_out;
3116               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION4' THEN
3117                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION4 := l_tve_id_out;
3118               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION5' THEN
3119                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION5 := l_tve_id_out;
3120               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION6' THEN
3121                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION6 := l_tve_id_out;
3122               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION7' THEN
3123                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION7 := l_tve_id_out;
3124               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION8' THEN
3125                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION8 := l_tve_id_out;
3126               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION9' THEN
3127                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION9 := l_tve_id_out;
3128               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION10' THEN
3129                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION10 := l_tve_id_out;
3130               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION11' THEN
3131                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION11 := l_tve_id_out;
3132               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION12' THEN
3133                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION12 := l_tve_id_out;
3134               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION13' THEN
3135                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION13 := l_tve_id_out;
3136               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION14' THEN
3137                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION14 := l_tve_id_out;
3138               ELSIF l_col_vals(i).col_name = 'RULE_INFORMATION15' THEN
3139                  OKC_COPY_CONTRACT_PVT.g_rulv_rec.RULE_INFORMATION15 := l_tve_id_out;
3140               END IF;
3141 
3142 
3143              EXIT WHEN (i = l_col_vals.LAST);
3144              i := l_col_vals.NEXT(i);
3145           END IF;
3146         ELSE
3147            EXIT WHEN (i = l_col_vals.LAST); --if tve_id is null and there are no more time_values .
3148         END IF;
3149        END LOOP;
3150      END IF;
3151 
3152       -- logic to copy the timevalue associated with the rule ends
3153 --     IF l_time_value_copied = 'Y' THEN
3154 
3155 /* Euro Conersion - Override the pricelist based on Euro for contract header level based on the default profile- Bug 2155930 */
3156 
3157        IF g_rulv_rec.rule_information_category = 'PRE' THEN
3158           IF p_chr_id IS NOT NULL and p_cle_id IS NULL THEN
3159              IF g_pricelist is NOT NULL THEN
3160                g_rulv_rec.object1_id1 := g_pricelist;
3161                g_pricelist := NULL;
3162              END IF;
3163           END IF;
3164        END IF;
3165 
3166 
3167        OKC_RULE_PUB.create_rule(
3168 	   p_api_version	=> p_api_version,
3169            p_init_msg_list	=> p_init_msg_list,
3170            x_return_status 	=> l_return_status,
3171            x_msg_count     	=> x_msg_count,
3172            x_msg_data      	=> x_msg_data,
3173            p_rulv_rec		=> g_rulv_rec,
3174            x_rulv_rec		=> x_rulv_rec);
3175 
3176        IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3177          IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3178            x_return_status := l_return_status;
3179            RAISE G_EXCEPTION_HALT_VALIDATION;
3180          ELSE
3181            x_return_status := l_return_status;
3182          END IF;
3183        END IF;
3184 	  --stores the new rul_id in a global pl/sql table.
3185 	  add_ruls(g_rulv_rec.id,x_rulv_rec.id);
3186 
3187       -----------------------------------------------------------------------
3188       -- Copy cover times if rule information category is 'CVR'
3189       -----------------------------------------------------------------------
3190 
3191        If (x_rulv_rec.rule_information_category = 'CVR') Then
3192 
3193           copy_cover_times(
3194 	        p_api_version    => p_api_version,
3195              p_init_msg_list	=> p_init_msg_list,
3196              x_return_status 	=> l_return_status,
3197              x_msg_count     	=> x_msg_count,
3198              x_msg_data      	=> x_msg_data,
3199 	        p_to_template_yn => p_to_template_yn,
3200 		   p_from_rul_id	=> g_rulv_rec.id,
3201              p_to_rul_id   	=> x_rulv_rec.id,
3202              p_chr_id         => p_chr_id,
3203              p_cle_id         => p_cle_id,
3204              p_to_chr_id      => l_rgpv_rec.dnz_chr_id);
3205 
3206        IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3207          IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3208            x_return_status := l_return_status;
3209            RAISE G_EXCEPTION_HALT_VALIDATION;
3210          ELSE
3211            x_return_status := l_return_status;
3212          END IF;
3213        END IF;
3214 
3215 	  End If; -- if rule - 'CVR'
3216 
3217       -----------------------------------------------------------------------
3218       -- Copy react intervals if rule information category is 'RCN'
3219       -- Copy react intervals if rule information category is 'RSN' - Bug 2601345
3220       -----------------------------------------------------------------------
3221        --If (x_rulv_rec.rule_information_category = 'RCN') Then
3222        If (x_rulv_rec.rule_information_category in ('RSN','RCN')) Then
3223 
3224           copy_react_intervals(
3225 	        p_api_version    => p_api_version,
3226              p_init_msg_list	=> p_init_msg_list,
3227              x_return_status 	=> l_return_status,
3228              x_msg_count     	=> x_msg_count,
3229              x_msg_data      	=> x_msg_data,
3230 	        p_to_template_yn => p_to_template_yn,
3231 		   p_from_rul_id	=> g_rulv_rec.id,
3232              p_to_rul_id   	=> x_rulv_rec.id,
3233              p_chr_id         => p_chr_id,
3234              p_cle_id         => p_cle_id,
3235              p_to_chr_id      => l_rgpv_rec.dnz_chr_id);
3236 
3237        IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3238          IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3239            x_return_status := l_return_status;
3240            RAISE G_EXCEPTION_HALT_VALIDATION;
3241          ELSE
3242            x_return_status := l_return_status;
3243          END IF;
3244        END IF;
3245 
3246 	  End If; -- if rule - 'RCN'
3247 
3248  --    ELSE
3249  --      l_time_value_copied := 'Y';
3250  --    END IF;
3251      -- Clear previously populated values because the next rule will use the same global variable
3252      g_rulv_rec := tmp_rulv_rec;
3253     END LOOP;
3254 
3255   IF (l_debug = 'Y') THEN
3256      OKC_DEBUG.log('1001 : Exiting Procedure Copy_Rules ', 2);
3257      OKC_DEBUG.ReSet_Indentation;
3258   END IF;
3259 
3260   EXCEPTION
3261     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3262 	    IF (l_debug = 'Y') THEN
3263    	    OKC_DEBUG.ReSet_Indentation;
3264 	    END IF;
3265       NULL;
3266     WHEN OTHERS THEN
3267       -- store SQL error message on message stack for caller
3268       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
3269       -- notify caller of an UNEXPECTED error
3270       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3271       IF (l_debug = 'Y') THEN
3272          OKC_DEBUG.ReSet_Indentation;
3273       END IF;
3274 
3275   END copy_rules;
3276 
3277   ----------------------------------------------------------------------------
3278   --Proceudre copy_items
3279   ----------------------------------------------------------------------------
3280   PROCEDURE copy_items(
3281     p_api_version                  IN NUMBER,
3282     p_init_msg_list                IN VARCHAR2 ,
3283     x_return_status                OUT NOCOPY VARCHAR2,
3284     x_msg_count                    OUT NOCOPY NUMBER,
3285     x_msg_data                     OUT NOCOPY VARCHAR2,
3286     p_from_cle_id                  IN NUMBER,
3287     p_copy_reference               IN VARCHAR2 ,
3288     p_to_cle_id                    IN NUMBER ) IS
3289 
3290     l_cimv_rec 	cimv_rec_type;
3291     x_cimv_rec 	cimv_rec_type;
3292 
3293     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3294     l_dnz_chr_id		NUMBER := OKC_API.G_MISS_NUM;
3295     l_price_level_ind   VARCHAR2(20);
3296     l_item_name         VARCHAR2(2000);
3297     l_item_desc         VARCHAR2(2000);
3298 
3299 
3300     l_a                 NUMBER;  -- Added for Bug 2387094/2292697
3301     l_b                 NUMBER;  -- Added for Bug 2387094/2292697
3302     l_c                 NUMBER;  -- Added for Bug 2387094/2292697
3303 
3304     CURSOR c_dnz_chr_id IS
3305     SELECT dnz_chr_id,price_level_ind
3306     FROM okc_k_lines_b
3307     WHERE id = p_to_cle_id;
3308 
3309     CURSOR c_cimv IS
3310     SELECT id
3311     FROM okc_k_items_v
3312     WHERE cle_id = p_from_cle_id;
3313 
3314   BEGIN
3315     x_return_status := l_return_status;
3316 
3317     OPEN c_dnz_chr_id;
3318     FETCH c_dnz_chr_id INTO l_dnz_chr_id,l_price_level_ind;
3319     CLOSE c_dnz_chr_id;
3320 
3321     FOR l_c_cimv IN c_cimv LOOP
3322       l_return_status := get_cimv_rec(	p_cim_id 	=> l_c_cimv.id,
3323 					x_cimv_rec 	=> l_cimv_rec);
3324 
3325       l_cimv_rec.cle_id := p_to_cle_id;
3326       l_cimv_rec.dnz_chr_id := l_dnz_chr_id;
3327 
3328       -- skekkar bug 2621279
3329       IF l_cimv_rec.chr_id IS NOT NULL THEN
3330          l_cimv_rec.chr_id := l_dnz_chr_id;
3331       END IF;
3332       -- skekkar bug 2621279
3333 
3334 	 IF p_copy_reference = 'REFERENCE' THEN
3335 	   l_cimv_rec.cle_id_for := p_from_cle_id;
3336 	   l_cimv_rec.chr_id := null;
3337 	 ELSE
3338 	   l_cimv_rec.cle_id_for := NULL;
3339 	 END IF;
3340 
3341 	 IF l_price_level_ind = 'N' THEN
3342             l_cimv_rec.priced_item_yn := 'N';
3343 	 END IF;
3344 
3345 -- Modified Below for Bug 2387094/2292697 - Begin
3346       OKC_CONTRACT_ITEM_PUB.create_contract_item(
3347            p_api_version      => p_api_version,
3348            p_init_msg_list    => p_init_msg_list,
3349            x_return_status    => l_return_status,
3350            x_msg_count        => x_msg_count,
3351            x_msg_data         => x_msg_data,
3352            p_cimv_rec         => l_cimv_rec,
3353            x_cimv_rec         => x_cimv_rec);
3354 
3355       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3356         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3357 --bug 2667634 start , changes commented for bug 2774888
3358 -- IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) OR (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3359 --bug 2667634 end
3360           x_return_status := l_return_status;
3361           RAISE G_EXCEPTION_HALT_VALIDATION;
3362         ELSE
3363            -- Getting the original line id from where this new line is copied
3364            SELECT nvl(orig_system_id1,-001) into l_a FROM okc_k_lines_b
3365            WHERE  id = l_cimv_rec.cle_id;
3366 
3367            -- Getting the object1_id1 for original line id from where new line is copied
3368            SELECT nvl(object1_id1,-002) into l_b FROM okc_k_items
3369            WHERE  cle_id = l_a;
3370 
3371            -- Getting the new line id
3372            SELECT nvl(id,-003) into l_c FROM okc_k_lines_b
3373            WHERE orig_system_id1 = l_b
3374            AND   dnz_chr_id      = l_cimv_rec.dnz_chr_id;
3375 
3376             IF l_c <> -003 THEN   --if for l_c
3377                -- Need to set the org as per new contract id
3378                okc_context.set_okc_org_context(p_chr_id => l_cimv_rec.dnz_chr_id);
3379 
3380                l_cimv_rec.object1_id1 := l_c;
3381 
3382                OKC_CONTRACT_ITEM_PUB.create_contract_item(
3383                     p_api_version       => p_api_version,
3384                     p_init_msg_list     => p_init_msg_list,
3385                     x_return_status     => l_return_status,
3386                     x_msg_count         => x_msg_count,
3387                     x_msg_data          => x_msg_data,
3388                     p_cimv_rec          => l_cimv_rec,
3389                     x_cimv_rec          => x_cimv_rec);
3390 
3391                 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3392                   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3393                     x_return_status := l_return_status;
3394                     RAISE G_EXCEPTION_HALT_VALIDATION;
3395                   ELSE
3396                     okc_util.get_name_desc_from_jtfv( p_object_code  => l_cimv_rec.jtot_object1_code,
3397                                                   p_id1          => l_cimv_rec.object1_id1,
3398                                                   p_id2          => l_cimv_rec.object1_id2,
3399                                                   x_name         => l_item_name,
3400                                                   x_description  => l_item_desc);
3401 
3402                       OKC_API.set_message(G_APP_NAME,'OKC_ITEM_NOT_COPIED','ITEM_NAME',l_item_name);
3403 
3404                       -- Begin Added for Bug 2207226
3405 
3406                       DELETE FROM okc_k_lines_b
3407                       WHERE  id =  l_cimv_rec.cle_id;
3408 
3409                       DELETE FROM okc_k_lines_tl
3410                       WHERE  id =  l_cimv_rec.cle_id;
3411 
3412                       -- End Added for Bug 2207226
3413 
3414                       x_return_status := l_return_status;
3415                    END IF;
3416                  END IF;
3417             ELSE  -- else for l_c
3418                     okc_util.get_name_desc_from_jtfv( p_object_code  => l_cimv_rec.jtot_object1_code,
3419                                                   p_id1          => l_cimv_rec.object1_id1,
3420                                                   p_id2          => l_cimv_rec.object1_id2,
3421                                                   x_name         => l_item_name,
3422                                                   x_description  => l_item_desc);
3423 
3424                       OKC_API.set_message(G_APP_NAME,'OKC_ITEM_NOT_COPIED','ITEM_NAME',l_item_name);
3425 
3426                       -- Begin Added for Bug 2207226
3427 
3428                       DELETE FROM okc_k_lines_b
3429                       WHERE  id =  l_cimv_rec.cle_id;
3430 
3431                       DELETE FROM okc_k_lines_tl
3432                       WHERE  id =  l_cimv_rec.cle_id;
3433 
3434                       -- End Added for Bug 2207226
3435 
3436                       x_return_status := l_return_status;
3437             END IF;  -- endif for l_c
3438         END IF;
3439       END IF;
3440 -- Modified Above for Bug 2387094/2292697 - End
3441 
3442 /*  Begin  Commented for Bug 2387094/2292697
3443       OKC_CONTRACT_ITEM_PUB.create_contract_item(
3444 	      p_api_version	=> p_api_version,
3445            p_init_msg_list	=> p_init_msg_list,
3446            x_return_status 	=> l_return_status,
3447            x_msg_count     	=> x_msg_count,
3448            x_msg_data      	=> x_msg_data,
3449            p_cimv_rec		=> l_cimv_rec,
3450            x_cimv_rec		=> x_cimv_rec);
3451 
3452       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3453         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3454           x_return_status := l_return_status;
3455           RAISE G_EXCEPTION_HALT_VALIDATION;
3456         ELSE
3457           okc_util.get_name_desc_from_jtfv( p_object_code  => l_cimv_rec.jtot_object1_code,
3458                                         p_id1          => l_cimv_rec.object1_id1,
3459                                         p_id2          => l_cimv_rec.object1_id2,
3460                                         x_name         => l_item_name,
3461                                         x_description  => l_item_desc);
3462 
3463           OKC_API.set_message(G_APP_NAME,'OKC_ITEM_NOT_COPIED','ITEM_NAME',l_item_name);
3464 
3465           -- Begin Added for Bug 2207226
3466 
3467           DELETE FROM okc_k_lines_b
3468           WHERE  id =  l_cimv_rec.cle_id;
3469 
3470           DELETE FROM okc_k_lines_tl
3471           WHERE  id =  l_cimv_rec.cle_id;
3472 
3473           -- End Added for Bug 2207226
3474 
3475           x_return_status := l_return_status;
3476         END IF;
3477       END IF;
3478          End  Commented for Bug 2387094/2292697 */
3479     END LOOP;
3480 
3481   EXCEPTION
3482     WHEN G_EXCEPTION_HALT_VALIDATION THEN
3483       NULL;
3484     WHEN OTHERS THEN
3485       -- store SQL error message on message stack for caller
3486       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
3487       -- notify caller of an UNEXPECTED error
3488       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3489 
3490   END copy_items;
3491 
3492   --
3493   -- Procedure to set attachement session variables if they are null
3494   -- Currently set only set for OKCAUDET and OKSAUDET
3495   --
3496   -- If want to get rid of this hard coding, COPY should add
3497   -- parameters and user should pass attachement_funtion_name
3498   -- and attachment_funtion_type
3499   --
3500   PROCEDURE Set_Attach_Session_Vars(p_chr_id NUMBER) IS
3501     l_app_id NUMBER;
3502     Cursor l_chr_csr Is
3503 	      SELECT application_id
3504 	      FROM okc_k_headers_b
3505 	      WHERE id = p_chr_id;
3506   BEGIN
3507     If (p_chr_id IS NOT NULL AND
3508 	   FND_ATTACHMENT_UTIL_PKG.function_name IS NULL
3509 	  )
3510     Then
3511       open l_chr_csr;
3512       fetch l_chr_csr into l_app_id;
3513       close l_chr_csr;
3514 
3515        -- Added for Bug 2384423
3516       If (l_app_id = 515) Then
3517 	    FND_ATTACHMENT_UTIL_PKG.function_name := 'OKSAUDET';
3518 	    FND_ATTACHMENT_UTIL_PKG.function_type := 'O';
3519       Else
3520 	    FND_ATTACHMENT_UTIL_PKG.function_name := 'OKCAUDET';
3521 	    FND_ATTACHMENT_UTIL_PKG.function_type := 'O';
3522       End If;
3523 
3524       /*  Commented for Bug 2384423
3525       If (l_app_id = 510) Then
3526 	    FND_ATTACHMENT_UTIL_PKG.function_name := 'OKCAUDET';
3527 	    FND_ATTACHMENT_UTIL_PKG.function_type := 'O';
3528       Elsif (l_app_id = 515) Then
3529 	    FND_ATTACHMENT_UTIL_PKG.function_name := 'OKSAUDET';
3530 	    FND_ATTACHMENT_UTIL_PKG.function_type := 'O';
3531       End If;
3532       */
3533     End If;
3534   END;
3535 
3536   ----------------------------------------------------------------------------
3537   -- Function to return the major version of the contract
3538   -- Major version is required to while copying attachments for
3539   -- header and line
3540   ----------------------------------------------------------------------------
3541   FUNCTION Get_Major_Version(p_chr_id NUMBER) RETURN VARCHAR2 IS
3542 
3543     CURSOR l_cvm_csr IS
3544     SELECT to_char(major_version)
3545     FROM okc_k_vers_numbers
3546     WHERE chr_id = p_chr_id;
3547 
3548     x_from_version  FND_ATTACHED_DOCUMENTS.PK2_VALUE%TYPE := NULL;
3549 
3550   BEGIN
3551     open l_cvm_csr;
3552     fetch l_cvm_csr into x_from_version;
3553     close l_cvm_csr;
3554 
3555     return x_from_version;
3556   EXCEPTION
3557     WHEN OTHERS THEN
3558 	    return OKC_API.G_RET_STS_UNEXP_ERROR;
3559 
3560   END Get_Major_Version;
3561 
3562   ----------------------------------------------------------------------------
3563   --Proceudre copy_contract_line
3564   ----------------------------------------------------------------------------
3565   PROCEDURE copy_contract_line(
3566     p_api_version                  IN NUMBER,
3567     p_init_msg_list                IN VARCHAR2 ,
3568     x_return_status                OUT NOCOPY VARCHAR2,
3569     x_msg_count                    OUT NOCOPY NUMBER,
3570     x_msg_data                     OUT NOCOPY VARCHAR2,
3571     p_from_cle_id                  IN NUMBER,
3572     p_from_chr_id                  IN NUMBER,
3573     p_to_cle_id                    IN NUMBER ,
3574     p_to_chr_id                    IN NUMBER ,
3575     p_lse_id                       IN NUMBER,
3576     p_to_template_yn               IN VARCHAR2,
3577     p_copy_reference               IN VARCHAR2 ,
3578     p_copy_line_party_yn           IN VARCHAR2,
3579     p_renew_ref_yn                 IN VARCHAR2,
3580     p_generate_line_number         IN VARCHAR2 ,
3581     x_cle_id		           OUT NOCOPY NUMBER,
3582     p_change_status		          IN VARCHAR2 ) -- LLC Added additional flag parameter to the call
3583     									    -- to not allow change of status of sublines of the
3584 									    -- topline during update service
3585 
3586     IS
3587 
3588     l_clev_rec 	clev_rec_type;
3589     x_clev_rec 	clev_rec_type;
3590     xx_clev_rec     clev_rec_type; ---for Bug#3155217.
3591 
3592     l_sts_code              VARCHAR2(30);
3593     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3594     l_old_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3595     l_cle_id			NUMBER := OKC_API.G_MISS_NUM;
3596     l_rgp_id			NUMBER;
3597     l_cat_id			NUMBER;
3598     l_pav_id			NUMBER;
3599     l_pat_id                   NUMBER;
3600     l_pac_id                   NUMBER;
3601     l_paa_id                   NUMBER;
3602     l_cpl_id			NUMBER;
3603     l_start_date      DATE;
3604     l_end_date        DATE;
3605     l_old_lse_id		NUMBER;
3606     l_from_version  FND_ATTACHED_DOCUMENTS.PK2_VALUE%TYPE;
3607     l_to_version    FND_ATTACHED_DOCUMENTS.PK2_VALUE%TYPE;
3608 
3609     l_euro_currency          varchar2(15) := NULL; /* For Euro Conversion - Bug 2155930 */
3610     l_converted_amount       number := NULL; /* For Euro Conversion - Bug 2155930 */
3611 
3612     l_scrv_id                  NUMBER;
3613 
3614     l_okc_ph_line_breaks_v_id  NUMBER;
3615 
3616     l_gvev_id       NUMBER;
3617     l_category          VARCHAR2(200); --added for bug 3764231
3618 
3619  --LLC
3620     l_date_cancelled        DATE := NULL;
3621     l_trn_code              varchar2(30) := NULL;
3622     l_term_cancel_source    varchar2(30) := NULL;
3623     l_cancelled_amount      NUMBER       := NULL;
3624 
3625 -- LLC NEW CURSOR
3626 
3627     Cursor get_line_status_csr(p_from_cle_id in number) IS
3628     select sts_code, date_cancelled, trn_code, term_cancel_source, cancelled_amount
3629     from okc_k_lines_b
3630     where id= p_from_cle_id;
3631 
3632 -- Cursor created to get the PDF_ID for Class 'SERVICE' - Bug 1917514
3633     CURSOR c_pdf IS
3634     SELECT pdf_id
3635     FROM okc_class_operations
3636     WHERE opn_code = 'COPY'
3637     AND   cls_code = 'SERVICE';
3638 
3639     l_pdf_id  NUMBER;
3640      l_cle_id1  NUMBER;
3641     l_chr_id  NUMBER;
3642     l_cnt  NUMBER;
3643     l_string VARCHAR2(32000);
3644     proc_string VARCHAR2(32000);
3645 -- Cursor created to get the PDF_ID for Class 'SERVICE' - Bug 1917514
3646 
3647     -- Added for Bug 3764231
3648     -- cursor to get the contract category
3649 
3650     CURSOR l_Service_Contract_csr IS
3651     SELECT osb.cls_code
3652     FROM  okc_subclasses_b osb,okc_k_headers_b okb
3653     WHERE okb.id = p_from_chr_id
3654     AND   okb.scs_code = osb.code ;
3655 
3656     -- Added for Bug 3764231
3657 
3658     CURSOR c_dnz_chr_id IS
3659     SELECT dnz_chr_id
3660     FROM okc_k_lines_b
3661     WHERE id = p_to_cle_id;
3662 
3663     CURSOR c_rgpv IS
3664     SELECT id
3665     FROM okc_rule_groups_b
3666     WHERE cle_id = p_from_cle_id;
3667 
3668     CURSOR c_catv IS
3669     SELECT id
3670     FROM okc_k_articles_b
3671     WHERE cle_id = p_from_cle_id;
3672 
3673     CURSOR c_pavv IS
3674     SELECT id
3675     FROM okc_price_att_values_v
3676     WHERE cle_id = p_from_cle_id;
3677 
3678     CURSOR c_patv IS
3679     SELECT id
3680     FROM okc_price_adjustments_v
3681     WHERE cle_id = p_from_cle_id;
3682     -- Commented 'chr_id IS NOT NULL' as per Bug 2143018
3683     --AND  chr_id IS NOT NULL;
3684     -- Added 'chr_id IS NOT NULL ' for Bug 2027165
3685 
3686     CURSOR c_pacv IS
3687     SELECT id
3688     FROM okc_price_adj_assocs_v
3689     WHERE cle_id = p_from_cle_id;
3690 
3691    /* CURSOR c_paav IS
3692     SELECT id
3693     FROM okc_price_adj_attribs_v
3694     WHERE cle_id = p_from_cle_id;
3695     */
3696 
3697     -- cursor for sales credits
3698     CURSOR c_scrv IS
3699     SELECT id
3700     FROM okc_k_sales_credits_v
3701     WHERE cle_id = p_from_cle_id
3702     AND  G_COPY_HISTORY_YN = 'N'
3703 UNION ALL
3704     SELECT id
3705     FROM okc_k_sales_credits_hv
3706     WHERE cle_id = p_from_cle_id
3707     AND  major_version = G_FROM_VERSION_NUMBER
3708     AND  G_COPY_HISTORY_YN = 'Y';
3709 
3710 /**********-Bug#3052910 -*********************************
3711 ---Removed for Bug#3052910--
3712 ---Copy governance for lines is added as a part of PRICE HOLD change,
3713 -- Price hold is obsoleted hence this change is not required*
3714 
3715     -- cursor for governances
3716     CURSOR  c_governances IS
3717     SELECT  id
3718     FROM    okc_governances_v
3719     WHERE   cle_id = p_from_cle_id
3720     AND     G_COPY_HISTORY_YN = 'N'
3721 UNION ALL
3722     SELECT  id
3723     FROM    okc_governances_hv
3724     WHERE   cle_id = p_from_cle_id
3725     AND     major_version = G_FROM_VERSION_NUMBER
3726     AND     G_COPY_HISTORY_YN = 'Y';
3727 
3728 ---Removed for Bug#3052910
3729 -- Bug# 3052910--Price hold is obsoleted hence this change is not required*
3730 
3731     -- cursor for price hold line breaks
3732     CURSOR c_okc_ph_line_breaks_v IS
3733     SELECT id
3734     FROM okc_ph_line_breaks_v
3735     WHERE cle_id = p_from_cle_id
3736     AND  G_COPY_HISTORY_YN = 'N'
3737 UNION ALL
3738     SELECT id
3739     FROM okc_ph_line_breaks_hv
3740     WHERE cle_id = p_from_cle_id
3741     AND  major_version = G_FROM_VERSION_NUMBER
3742     AND  G_COPY_HISTORY_YN = 'Y';
3743 
3744 ******* Bug# 3052910 ********************************/
3745 
3746     -- Pkoganti 08/31, Bug 1392336
3747     -- Added rle_code <> 'LICENCEE_ACCT'
3748     -- When the user chooses to copy only the lines, the LICENCEE_ACCT
3749     -- party role should not be copied, because the target contract
3750     -- may not have the constraining party information.  This is a temp
3751     -- fix for GSR.
3752     --
3753     CURSOR c_cplv IS
3754     SELECT id
3755     FROM okc_k_party_roles_b
3756     WHERE cle_id = p_from_cle_id
3757     AND   rle_code <> 'LICENCEE_ACCT'
3758     and   dnz_chr_id = p_from_chr_id;
3759 
3760     PROCEDURE get_priced_line_rec(p_clev_rec  IN clev_rec_type,
3761                               x_clev_rec  OUT NOCOPY clev_rec_type) IS
3762       l_priced_yn VARCHAR2(3);
3763       l_cim_id    NUMBER;
3764       l_lty_code  VARCHAR2(90);
3765       l_clev_rec  clev_rec_type := p_clev_rec;
3766       l_cimv_rec 	cimv_rec_type;
3767 
3768       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3769 
3770       CURSOR c_lse(p_id IN NUMBER) IS
3771       SELECT lty_code,
3772              priced_yn
3773       FROM   okc_line_styles_b
3774       WHERE  id = p_id;
3775 
3776       CURSOR c_cim(p_cle_id IN NUMBER) IS
3777       SELECT id
3778       FROM   okc_k_items_v
3779       WHERE  cle_id = p_cle_id
3780       AND    priced_item_yn = 'Y';
3781 
3782     BEGIN
3783       OPEN c_lse(l_clev_rec.lse_id);
3784       FETCH c_lse INTO l_lty_code,l_priced_yn;
3785       CLOSE c_lse;
3786 
3787       IF l_clev_rec.price_level_ind = 'N' THEN
3788         IF l_priced_yn = 'N' THEN
3789           l_clev_rec.price_negotiated := NULL;
3790         ELSE
3791           l_clev_rec.price_negotiated := NULL;
3792           IF l_lty_code <> 'FREE_FORM' THEN
3793             l_clev_rec.name := NULL;
3794           END IF;
3795         END IF;
3796       ELSE
3797         IF l_priced_yn = 'N' THEN
3798           l_clev_rec.price_negotiated := NULL;
3799           l_clev_rec.PRICE_UNIT := NULL;
3800           IF l_lty_code <> 'FREE_FORM' THEN
3801             l_clev_rec.name := NULL;
3802           END IF;
3803         ELSE
3804           OPEN c_cim(l_clev_rec.id);
3805           FETCH c_cim INTO l_cim_id;
3806           CLOSE c_cim;
3807 
3808           IF l_cim_id IS NOT NULL THEN
3809             l_return_status := get_cimv_rec(	p_cim_id 	=> l_cim_id,
3810     					x_cimv_rec 	=> l_cimv_rec);
3811             OKC_CONTRACT_ITEM_PUB.validate_contract_item(
3812       	          p_api_version	=> p_api_version,
3813                  p_init_msg_list	=> p_init_msg_list,
3814                  x_return_status 	=> l_return_status,
3815                  x_msg_count     	=> x_msg_count,
3816                  x_msg_data      	=> x_msg_data,
3817                  p_cimv_rec		=> l_cimv_rec);
3818 
3819              IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3820                l_clev_rec.price_negotiated := NULL;
3821                l_clev_rec.PRICE_UNIT := NULL;
3822                l_clev_rec.name := NULL;
3823              END IF;
3824            END IF;
3825          END IF;
3826       END IF;
3827       x_clev_rec := l_clev_rec;
3828     exception when others then
3829       x_clev_rec := l_clev_rec;
3830     END get_priced_line_rec;
3831 
3832     PROCEDURE instantiate_counters_events (
3833          p_api_version    IN NUMBER,
3834          p_init_msg_list  IN VARCHAR2 ,
3835          x_return_status  OUT NOCOPY VARCHAR2,
3836          x_msg_count      OUT NOCOPY NUMBER,
3837          x_msg_data       OUT NOCOPY VARCHAR2,
3838          p_old_cle_id     IN  NUMBER,
3839          p_old_lse_id     IN  NUMBER,
3840          p_start_date     IN  DATE,
3841          p_end_date       IN  DATE,
3842          p_new_cle_id     IN  NUMBER) IS
3843 
3844       l_item_id             VARCHAR2(40);
3845       l_counter_grp_id	   NUMBER;
3846       l_found               BOOLEAN;
3847       l_return_status	   VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3848       l_ctr_grp_id_template NUMBER;
3849       l_ctr_grp_id_instance NUMBER;
3850       l_instcnd_inp_rec     OKC_INST_CND_PUB.instcnd_inp_rec;
3851       l_ac_rec OKS_COVERAGES_PUB.ac_rec_type;
3852       l_actual_coverage_id NUMBER;
3853 
3854       CURSOR c_item IS
3855       SELECT object1_id1
3856       FROM   okc_k_items_v
3857       WHERE  cle_id = p_old_cle_id;
3858 
3859       Cursor l_ctr_csr (p_id Number) Is
3860 	 Select Counter_Group_id
3861 	 From   OKX_CTR_ASSOCIATIONS_V
3862 	 Where  Source_Object_Id = p_id;
3863 
3864       CURSOR c_cov_temp(p_item_id IN NUMBER) IS
3865       SELECT coverage_template_id
3866       FROM   okx_system_items_v
3867       WHERE  id1 = p_item_id;
3868 
3869     BEGIN
3870       x_return_status := l_return_status;
3871       OPEN c_item;
3872       FETCH c_item INTO l_item_id;
3873       CLOSE c_item;
3874 
3875       IF l_item_id IS NOT NULL AND Is_Number(l_item_id) THEN
3876 
3877 	    -- Check whether counters are attached to the item
3878 	    OPEN l_ctr_csr(l_item_id);
3879 	    FETCH l_ctr_csr INTO l_counter_grp_id;
3880          l_found := l_ctr_csr%FOUND;
3881 	    CLOSE l_ctr_csr;
3882 
3883         If (l_found) Then
3884 		   CS_COUNTERS_PUB.AUTOINSTANTIATE_COUNTERS(
3885 			 p_api_version               => p_api_version,
3886 			 p_init_msg_list             => p_init_msg_list,
3887 			 x_return_status             => l_return_status,
3888 			 x_msg_count                 => x_msg_count,
3889 			 x_msg_data             	    => x_msg_data,
3890 			 p_commit                    => 'F',
3891 			 p_source_object_id_template => l_item_id,
3892 			 p_source_object_id_instance => p_new_cle_id,
3893 			 x_ctr_grp_id_template       => l_ctr_grp_id_template,
3894 			 x_ctr_grp_id_instance       => l_ctr_grp_id_instance);
3895 
3896 		   IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3897 			x_return_status := l_return_status;
3898 			RAISE G_EXCEPTION_HALT_VALIDATION;
3899 		   END IF;
3900 
3901 		   l_instcnd_inp_rec.ins_ctr_grp_id   := l_ctr_grp_id_instance;
3902 		   l_instcnd_inp_rec.tmp_ctr_grp_id   := l_ctr_grp_id_template;
3903 		   l_instcnd_inp_rec.jtot_object_code := 'OKC_K_LINE';
3904 		   l_instcnd_inp_rec.cle_id           := p_new_cle_id;
3905 
3906 		   OKC_INST_CND_PUB.INST_CONDITION(
3907 			 p_api_version               => p_api_version,
3908 			 p_init_msg_list             => p_init_msg_list,
3909 			 x_return_status             => l_return_status,
3910 			 x_msg_count                 => x_msg_count,
3911 			 x_msg_data             	    => x_msg_data,
3912 			 p_instcnd_inp_rec           => l_instcnd_inp_rec);
3913 
3914 		   IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3915 			x_return_status := l_return_status;
3916 			RAISE G_EXCEPTION_HALT_VALIDATION;
3917 		   END IF;
3918           End If;
3919       END IF;
3920 
3921       IF p_old_lse_id <> 1 THEN --the service line is copied from different line style id.
3922         -- Instantiate the coverage.
3923         l_ac_rec.svc_cle_id := p_new_cle_id;
3924         l_ac_rec.start_date := p_start_date;
3925         l_ac_rec.end_date   := p_end_date;
3926 
3927         OPEN c_cov_temp(to_number(l_item_id));
3928         FETCH c_cov_temp INTO l_ac_rec.tmp_cle_id;
3929         CLOSE c_cov_temp;
3930 
3931         IF l_ac_rec.tmp_cle_id IS NOT NULL THEN
3932           OKS_COVERAGES_PUB.CREATE_ACTUAL_COVERAGE(
3933              p_api_version               => p_api_version,
3934              p_init_msg_list             => p_init_msg_list,
3935              x_return_status             => l_return_status,
3936              x_msg_count                 => x_msg_count,
3937              x_msg_data             	    => x_msg_data,
3938              p_ac_rec_in            	    => l_ac_rec,
3939              x_actual_coverage_id   	    => l_actual_coverage_id);
3940         END IF;
3941 
3942         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
3943           x_return_status := l_return_status;
3944           RAISE G_EXCEPTION_HALT_VALIDATION;
3945         END IF;
3946 
3947       END IF;
3948     EXCEPTION
3949       WHEN G_EXCEPTION_HALT_VALIDATION THEN
3950         NULL;
3951       WHEN OTHERS THEN
3952         -- store SQL error message on message stack for caller
3953         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
3954         -- notify caller of an UNEXPECTED error
3955         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3956     END instantiate_counters_events;
3957 
3958     FUNCTION get_parent_date(p_from_start_date IN DATE,
3959                              p_from_end_date   IN DATE,
3960                              p_to_cle_id       IN NUMBER,
3961                              p_to_chr_id       IN NUMBER,
3962                              x_start_date      OUT NOCOPY DATE,
3963                              x_end_date        OUT NOCOPY DATE) RETURN BOOLEAN IS
3964 
3965       l_parent_start_date      DATE;
3966       l_parent_end_date        DATE;
3967 
3968 	 CURSOR  c_cle IS
3969       SELECT  start_date,end_date
3970       FROM    okc_k_lines_b
3971       WHERE   id = p_to_cle_id;
3972 
3973 	 CURSOR  c_chr IS
3974       SELECT  start_date,end_date
3975       FROM    okc_k_headers_b
3976       WHERE   id = p_to_chr_id;
3977 
3978     BEGIN
3979       IF (p_to_chr_id IS NULL OR p_to_chr_id = OKC_API.G_MISS_NUM) THEN
3980         OPEN c_cle;
3981         FETCH c_cle INTO l_parent_start_date,l_parent_end_date;
3982         CLOSE c_cle;
3983         IF (NVL(p_from_start_date,sysdate)
3984            BETWEEN NVL(l_parent_start_date,sysdate) AND NVL(l_parent_end_date,sysdate)) AND
3985            (NVL(p_from_end_date,sysdate)
3986            BETWEEN NVL(l_parent_start_date,sysdate) AND NVL(l_parent_end_date,sysdate)) THEN
3987            RETURN(TRUE);
3988         ELSE
3989            x_start_date := l_parent_start_date;
3990            x_end_date := l_parent_end_date;
3991            RETURN(FALSE);
3992         END IF;
3993       ELSE
3994         OPEN c_chr;
3995         FETCH c_chr INTO l_parent_start_date,l_parent_end_date;
3996         CLOSE c_chr;
3997         IF (NVL(p_from_start_date,sysdate)
3998            BETWEEN NVL(l_parent_start_date,sysdate) AND NVL(l_parent_end_date,sysdate)) AND
3999            (NVL(p_from_end_date,sysdate)
4000            BETWEEN NVL(l_parent_start_date,sysdate) AND NVL(l_parent_end_date,sysdate)) THEN
4001            RETURN(TRUE);
4002         ELSE
4003            x_start_date := l_parent_start_date;
4004            x_end_date := l_parent_end_date;
4005            RETURN(FALSE);
4006        END IF;
4007      END IF;
4008      RETURN(TRUE);
4009     END get_parent_date;
4010 
4011   ----------------------------------------------------------------------------
4012   -- Proceduere to create operation operation lines for contract lines
4013   -- in case of RENEW
4014   -- Parameters: p_from_cle_id - object_cle_id
4015   --             p_to_cle_id   - subject_cle_id
4016   ----------------------------------------------------------------------------
4017   PROCEDURE Create_Renewal_Line_Link (
4018     p_api_version                  IN NUMBER,
4019     p_init_msg_list                IN VARCHAR2 ,
4020     x_return_status                OUT NOCOPY VARCHAR2,
4021     x_msg_count                    OUT NOCOPY NUMBER,
4022     x_msg_data                     OUT NOCOPY VARCHAR2,
4023     p_to_chr_id                    IN NUMBER,
4024     p_to_cle_id                    IN NUMBER)
4025   IS
4026 
4027     -- Cursor to get operation instance id
4028     Cursor oie_csr Is
4029 		 SELECT id
4030 		 FROM okc_operation_instances
4031 		 WHERE target_chr_id = p_to_chr_id;
4032 
4033     l_oie_id        NUMBER;
4034     l_olev_rec      OKC_OPER_INST_PUB.olev_rec_type;
4035     lx_olev_rec     OKC_OPER_INST_PUB.olev_rec_type;
4036     i NUMBER := 0;
4037     l_count  NUMBER;
4038 
4039     ----------------------------------------------------------------------------
4040     -- Function to find whether the line is a top line or not
4041     -- Returns header id if the line is a top line, else return parent line id
4042     ----------------------------------------------------------------------------
4043     FUNCTION get_parent_id(p_cle_id IN NUMBER) RETURN NUMBER IS
4044 	 Cursor cle_csr Is
4045 		   SELECT nvl(chr_id , cle_id)
4046 		   FROM   okc_k_lines_b
4047 		   WHERE  id = p_cle_id;
4048     l_parent_id NUMBER := -1;
4049     BEGIN
4050 	 open cle_csr;
4051 	 fetch cle_csr into l_parent_id;
4052 	 close cle_csr;
4053 
4054 	 return l_parent_id;
4055     END get_parent_id;
4056 
4057     ----------------------------------------------------------------------------
4058     -- Function to find parent ole id from g_op_lines PL/SQL table
4059     ----------------------------------------------------------------------------
4060     FUNCTION get_parent_ole_id(p_id IN NUMBER) RETURN NUMBER IS
4061       i NUMBER := 0;
4062     BEGIN
4063       IF g_op_lines.COUNT > 0 THEN
4064         i := g_op_lines.FIRST;
4065         LOOP
4066           IF g_op_lines(i).id = p_id THEN
4067             return(g_op_lines(i).ole_id);
4068           END IF;
4069           EXIT WHEN (i = g_op_lines.LAST);
4070           i := g_op_lines.NEXT(i);
4071         END LOOP;
4072       END IF;
4073       return(-1);
4074     EXCEPTION
4075       WHEN OTHERS THEN
4076         return(-1);
4077     END get_parent_ole_id;
4078 
4079   BEGIN
4080 
4081     -- get class operation id
4082     open oie_csr;
4083     fetch oie_csr into l_oie_id;
4084     close oie_csr;
4085 
4086     l_olev_rec.SELECT_YN      := NULL;
4087     l_olev_rec.ACTIVE_YN      := 'Y';
4088     l_olev_rec.PROCESS_FLAG   := 'P';
4089     l_olev_rec.OIE_ID         := l_oie_id;
4090     l_olev_rec.SUBJECT_CHR_ID := p_to_chr_id;
4091     l_olev_rec.OBJECT_CHR_ID  := p_from_chr_id;
4092     l_olev_rec.SUBJECT_CLE_ID := p_to_cle_id;
4093     l_olev_rec.OBJECT_CLE_ID  := p_from_cle_id;
4094     l_olev_rec.PARENT_OLE_ID  := get_parent_ole_id(get_parent_id(p_from_cle_id));
4095 
4096     OKC_OPER_INST_PUB.Create_Operation_Line (
4097 	       p_api_version	=> p_api_version,
4098 	       p_init_msg_list	=> p_init_msg_list,
4099             x_return_status 	=> x_return_status,
4100             x_msg_count     	=> x_msg_count,
4101             x_msg_data      	=> x_msg_data,
4102             p_olev_rec		=> l_olev_rec,
4103             x_olev_rec		=> lx_olev_rec);
4104 
4105     -- set g_op_lines table
4106     l_count := g_op_lines.COUNT + 1;
4107     g_op_lines(l_count).id     := p_from_cle_id;
4108     g_op_lines(l_count).ole_id := lx_olev_rec.ID;
4109 
4110   EXCEPTION
4111     when NO_DATA_FOUND then
4112 	  -- store SQL error message on message stack
4113 	  x_return_status := OKC_API.G_RET_STS_ERROR;
4114   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
4115 					  p_msg_name		=> 'OKC_NOT_FOUND',
4116 					  p_token1		=> 'VALUE1',
4117 					  p_token1_value	=> 'Status Code',
4118 					  p_token2		=> 'VALUE2',
4119 					  p_token2_value	=> 'OKC_CLASS_OPERATIONS_V');
4120     when OTHERS then
4121 	  -- store SQL error message on message stack
4122   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
4123 					  p_msg_name		=> g_unexpected_error,
4124 					  p_token1		=> g_sqlcode_token,
4125 					  p_token1_value	=> sqlcode,
4126 					  p_token2		=> g_sqlerrm_token,
4127 					  p_token2_value	=> sqlerrm);
4128 	   -- notify caller of an error as UNEXPETED error
4129         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4130   END Create_Renewal_Line_Link;
4131 
4132   BEGIN
4133 
4134 IF (l_debug = 'Y') THEN
4135    OKC_DEBUG.Set_Indentation(' copy_contract_line ');
4136    OKC_DEBUG.log('100 : Entering  copy_contract_line  ', 2);
4137    OKC_DEBUG.log('100 : p_from_cle_id : '||p_from_cle_id);
4138    OKC_DEBUG.log('100 : p_from_chr_id : '||p_from_chr_id);
4139    OKC_DEBUG.log('100 : p_to_cle_id : '||p_to_cle_id);
4140    OKC_DEBUG.log('100 : p_to_chr_id : '||p_to_chr_id);
4141    OKC_DEBUG.log('100 : p_lse_id : '||p_lse_id);
4142    OKC_DEBUG.log('100 : p_to_template_yn : '||p_to_template_yn);
4143    OKC_DEBUG.log('100 : p_copy_reference : '||p_copy_reference);
4144    OKC_DEBUG.log('100 : p_copy_line_party_yn : '||p_copy_line_party_yn);
4145    OKC_DEBUG.log('100 : p_renew_ref_yn : '||p_renew_ref_yn);
4146    OKC_DEBUG.log('100 : p_generate_line_number : '||p_generate_line_number);
4147    OKC_DEBUG.log('100 : *************************************************** ');
4148 END IF;
4149 
4150     IF g_price_adjustments.COUNT > 0 THEN
4151        g_price_adjustments.DELETE;
4152     END IF;
4153 
4154     x_return_status := l_return_status;
4155     l_return_status := get_clev_rec(p_cle_id 	=> p_from_cle_id,
4156                                     p_renew_ref_yn  => p_renew_ref_yn, -- Added for bugfix 2307197
4157 					x_clev_rec 	=> l_clev_rec);
4158 IF (l_debug = 'Y') THEN
4159    OKC_DEBUG.log('110 : After get_clev_rec ',2);
4160    OKC_DEBUG.log('110 : l_return_status : '||l_return_status);
4161    OKC_DEBUG.log('110 : l_clev_rec.id : '||l_clev_rec.id);
4162    OKC_DEBUG.log('110 : l_clev_rec.chr_id : '||l_clev_rec.chr_id);
4163    OKC_DEBUG.log('110 : l_clev_rec.dnz_chr_id : '||l_clev_rec.dnz_chr_id);
4164 END IF;
4165 
4166 -- Bug 2489856
4167  -- If it is not a case of Renew and line numbers are required to be generated, then reset line_number to Null
4168     if p_renew_ref_yn <> 'Y' then
4169        if p_generate_line_number = 'Y' then
4170            l_clev_rec.line_number := NULL;
4171        end if;
4172     end if;
4173 -- End Bug 2489856
4174 
4175 IF (l_debug = 'Y') THEN
4176    OKC_DEBUG.log('200 : In copy_contract_line ',2);
4177    OKC_DEBUG.log('200 : p_renew_ref_yn : '||p_renew_ref_yn);
4178 END IF;
4179     --
4180     -- If copy called for renewal, do not copy renewed lines
4181     --
4182     IF p_renew_ref_yn = 'Y' AND l_clev_rec.date_renewed is not null THEN
4183 	  return;
4184     END IF;
4185     --
4186     -- If copy called for renewal, do not copy terminated lines (Bug 2157087)
4187     --
4188     IF p_renew_ref_yn = 'Y' AND l_clev_rec.date_terminated is not null THEN
4189 	  return;
4190     END IF;
4191 
4192     /* Fixing Renewal for Euro Conversion - at Line Level -  Bug 2155930 */
4193 
4194     if (p_renew_ref_yn = 'Y') then
4195 
4196        l_euro_currency := OKC_CURRENCY_API.GET_EURO_CURRENCY_CODE(l_clev_rec.currency_code);
4197 
4198 IF (l_debug = 'Y') THEN
4199    OKC_DEBUG.log('300 : l_euro_currency : '||l_euro_currency);
4200 END IF;
4201 
4202         if (l_euro_currency <> l_clev_rec.currency_code) then
4203 
4204            OKC_CURRENCY_API.CONVERT_AMOUNT
4205                          (p_FROM_CURRENCY => l_clev_rec.currency_code,
4206                           p_TO_CURRENCY => l_euro_currency,
4207                           p_CONVERSION_DATE => g_conversion_date,
4208                           p_CONVERSION_TYPE => g_conversion_type,
4209                           p_AMOUNT => l_clev_rec.price_negotiated,
4210                           x_CONVERSION_RATE => g_conversion_rate,
4211                           x_CONVERTED_AMOUNT => l_converted_amount
4212                          );
4213            l_clev_rec.price_negotiated := l_converted_amount;
4214 
4215 IF (l_debug = 'Y') THEN
4216    OKC_DEBUG.log('350 : l_converted_amount : '||l_converted_amount);
4217 END IF;
4218 
4219            OKC_CURRENCY_API.CONVERT_AMOUNT
4220                          (p_FROM_CURRENCY => l_clev_rec.currency_code,
4221                           p_TO_CURRENCY => l_euro_currency,
4222                           p_CONVERSION_DATE => g_conversion_date,
4223                           p_CONVERSION_TYPE => g_conversion_type,
4224                           p_AMOUNT => l_clev_rec.price_unit,
4225                           x_CONVERSION_RATE => g_conversion_rate,
4226                           x_CONVERTED_AMOUNT => l_converted_amount
4227                          );
4228            l_clev_rec.price_unit := l_converted_amount;
4229 
4230 IF (l_debug = 'Y') THEN
4231    OKC_DEBUG.log('400 : l_converted_amount : '||l_converted_amount);
4232 END IF;
4233 
4234 
4235 /* Commented out nocopy as line_list_price is in 11.5.6 and not available here
4236            OKC_CURRENCY_API.CONVERT_AMOUNT
4237                          (p_FROM_CURRENCY => l_clev_rec.currency_code,
4238                           p_TO_CURRENCY => l_euro_currency,
4239                           p_CONVERSION_DATE => g_conversion_date,
4240                           p_CONVERSION_TYPE => g_conversion_type,
4241                           p_AMOUNT => l_clev_rec.line_list_price,
4242                           x_CONVERSION_RATE => g_conversion_rate,
4243                           x_CONVERTED_AMOUNT => l_converted_amount
4244                          );
4245            l_clev_rec.line_list_price := l_converted_amount;
4246 */
4247            l_clev_rec.currency_code := l_euro_currency;
4248 
4249 --/rules migration/
4250 -- update price list at line level instead of rules
4251 		If g_pricelist is not null  AND
4252              g_application_id not in (510,871) Then
4253 	      	l_clev_rec.price_list_id:= g_pricelist;
4254 	     End if;
4255 
4256 
4257 IF (l_debug = 'Y') THEN
4258    OKC_DEBUG.log('450 : l_euro_currency : '||l_euro_currency);
4259 END IF;
4260 
4261        end if;
4262     end if;
4263 
4264     IF p_to_chr_id IS NULL OR p_to_chr_id = OKC_API.G_MISS_NUM THEN
4265       OPEN c_dnz_chr_id;
4266       FETCH c_dnz_chr_id INTO l_clev_rec.dnz_chr_id;
4267       CLOSE c_dnz_chr_id;
4268     ELSE
4269       l_clev_rec.dnz_chr_id := p_to_chr_id;
4270     END IF;
4271 
4272 
4273     l_clev_rec.cle_id := p_to_cle_id;
4274     l_clev_rec.chr_id := p_to_chr_id;
4275     l_clev_rec.trn_code    := NULL;
4276     l_clev_rec.date_terminated    := NULL;
4277 
4278 --LLC
4279 
4280    l_clev_rec.date_cancelled := NULL;
4281    l_clev_rec.term_cancel_source := NULL;
4282    l_clev_rec.cancelled_amount :=NULL;
4283 
4284      IF (p_change_status ='N') THEN  --status of sublines to retained after update service
4285 
4286         Open    get_line_status_csr (p_from_cle_id);
4287         Fetch   get_line_status_csr Into l_sts_code, l_date_cancelled, l_trn_code, l_term_cancel_source, l_cancelled_amount;
4288         Close   get_line_status_csr;
4289 
4290 	   l_clev_rec.date_cancelled := l_date_cancelled;
4291 	   l_clev_rec.trn_code := l_trn_code;
4292         l_clev_rec.term_cancel_source := l_term_cancel_source;
4293         l_clev_rec.cancelled_amount := l_cancelled_amount;
4294 
4295     ELSE  --status of subline of the defaulted to ENTERED status
4296 
4297  	okc_assent_pub.get_default_status( x_return_status => l_return_status,
4298 							    p_status_type  => 'ENTERED',
4299 							    x_status_code  => l_sts_code);
4300 
4301     END IF; --p_change_status ='N'
4302 
4303 --LLC
4304 
4305     l_clev_rec.sts_code := l_sts_code;
4306 
4307 
4308 IF (l_debug = 'Y') THEN
4309    OKC_DEBUG.log('500 : x_return_status : '||l_return_status);
4310    OKC_DEBUG.log('500 : l_sts_code : '||l_sts_code);
4311 END IF;
4312 
4313     IF NOT get_parent_date(p_from_start_date => l_clev_rec.start_date,
4314                        p_from_end_date   => l_clev_rec.end_date,
4315                        p_to_cle_id       => p_to_cle_id,
4316                        p_to_chr_id       => p_to_chr_id,
4317                        x_start_date      => l_start_date,
4318                        x_end_date        => l_end_date) THEN
4319       -- If the line dates are not in between its parents date default to parent date.
4320       l_clev_rec.start_date := l_start_date;
4321       l_clev_rec.end_date := l_end_date;
4322     END IF;
4323 
4324     l_old_lse_id := l_clev_rec.lse_id;
4325 
4326     IF p_renew_ref_yn = 'Y' THEN
4327 	  l_clev_rec.PRICE_NEGOTIATED_RENEWED := l_clev_rec.PRICE_NEGOTIATED;
4328 	  l_clev_rec.CURRENCY_CODE_RENEWED := l_clev_rec.CURRENCY_CODE;
4329     END IF;
4330 
4331     IF p_lse_id IS NOT NULL THEN
4332        l_clev_rec.lse_id := p_lse_id;
4333     END IF;
4334     -- Modified for Bug 2480813
4335     -- No need to call get_priced_line_rec in case of RENEW
4336     IF p_renew_ref_yn = 'N' THEN
4337        ---get_priced_line_rec(l_clev_rec,l_clev_rec);
4338 	  get_priced_line_rec(l_clev_rec,xx_clev_rec);  --- For Bug#3155217.
4339           --xx_clev_rec holds the value of output.
4340           l_clev_rec :=  xx_clev_rec ; --- For Bug#3155217.
4341     END IF;
4342 
4343     --get_priced_line_rec(l_clev_rec,l_clev_rec);  -- commented for Bug 2480813
4344 
4345     l_clev_rec.orig_system_source_code  := 'OKC_LINE';
4346     l_clev_rec.orig_system_id1 		:= p_from_cle_id;
4347     l_clev_rec.orig_system_reference1   := NULL;
4348     -- Bug 1975070 - Date Renewed, Date Terminated should be Null after Copy
4349     l_clev_rec.date_renewed    		:= NULL;
4350     l_clev_rec.date_terminated 		:= NULL;
4351     -- Bug 1975070
4352 
4353 
4354     -- new price hold column
4355     l_clev_rec.ph_qp_reference_id       := NULL;
4356     l_clev_rec.ph_integrated_with_qp    := 'N';
4357 
4358 IF (l_debug = 'Y') THEN
4359    OKC_DEBUG.log('550 : Calling OKC_CONTRACT_PUB.create_contract_line ');
4360    OKC_DEBUG.log('550 : l_clev_rec.id : '||l_clev_rec.id);
4361    OKC_DEBUG.log('550 : l_clev_rec.chr_id : '||l_clev_rec.chr_id);
4362    OKC_DEBUG.log('550 : l_clev_rec.dnz_chr_id : '||l_clev_rec.dnz_chr_id);
4363 END IF;
4364 
4365     OKC_CONTRACT_PUB.create_contract_line(
4366            p_api_version      => p_api_version,
4367            p_init_msg_list	=> p_init_msg_list,
4368            x_return_status 	=> l_return_status,
4369            x_msg_count     	=> x_msg_count,
4370            x_msg_data      	=> x_msg_data,
4371            p_clev_rec		=> l_clev_rec,
4372            x_clev_rec		=> x_clev_rec);
4373 
4374 IF (l_debug = 'Y') THEN
4375    OKC_DEBUG.log('555 : After OKC_CONTRACT_PUB.create_contract_line ');
4376    OKC_DEBUG.log('555 : x_return_status : '||l_return_status);
4377    OKC_DEBUG.log('555 : x_msg_count : '||x_msg_count);
4378    OKC_DEBUG.log('555 : x_msg_data : '||x_msg_data);
4379 END IF;
4380 
4381       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4382         x_return_status := l_return_status;
4383         RAISE G_EXCEPTION_HALT_VALIDATION;
4384       END IF;
4385 
4386     x_cle_id := x_clev_rec.id; -- passes the new generated id to the caller.
4387 
4388 IF (l_debug = 'Y') THEN
4389    OKC_DEBUG.log('650 : After OKC_CONTRACT_PUB.create_contract_line ');
4390    OKC_DEBUG.log('650 : x_return_status : '||l_return_status);
4391    OKC_DEBUG.log('650 : x_cle_id : '||x_cle_id);
4392 END IF;
4393 
4394     IF p_renew_ref_yn = 'Y' THEN
4395        --if the copy is for RENEW, create operation line
4396        Create_Renewal_Line_Link(
4397 	      p_api_version	     => p_api_version,
4398            p_init_msg_list	=> p_init_msg_list,
4399            x_return_status 	=> l_return_status,
4400            x_msg_count     	=> x_msg_count,
4401            x_msg_data      	=> x_msg_data,
4402 		 p_to_chr_id        => l_clev_rec.dnz_chr_id,
4403 		 p_to_cle_id        => x_cle_id);
4404 
4405        IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4406            x_return_status := l_return_status;
4407            RAISE G_EXCEPTION_HALT_VALIDATION;
4408        END IF;
4409     END IF;
4410 
4411     -- copy associated attachments
4412     l_from_version := Get_Major_Version(p_from_chr_id);
4413 
4414 IF (l_debug = 'Y') THEN
4415    OKC_DEBUG.log('750 : l_from_version : '||l_from_version);
4416 END IF;
4417 
4418     IF (l_from_version = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4419         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4420         RAISE G_EXCEPTION_HALT_VALIDATION;
4421     END IF;
4422 
4423     -- set attachement session variables
4424     -- before calling fnd_attachment_util_pkg.get_atchmt_exists
4425     Set_Attach_Session_Vars(x_clev_rec.dnz_chr_id);
4426 
4427     If (fnd_attachment_util_pkg.get_atchmt_exists (
4428 			  l_entity_name => 'OKC_K_LINES_B',
4429 			  l_pkey1 => p_from_cle_id,
4430 			  l_pkey2 => l_from_version) = 'Y')
4431 
4432 			  -- The following line to be added to the code once
4433 			  -- bug 1553916 completes
4434 			  -- ,l_pkey2 => l_from_version) = 'Y')
4435 			  -- also below remove the comments
4436 			  -- in fnd_attached_documents2_pkg.copy_attachments call
4437     Then
4438 	   l_to_version := Get_Major_Version(x_clev_rec.dnz_chr_id);
4439 
4440         fnd_attached_documents2_pkg.copy_attachments(
4441                           x_from_entity_name => 'OKC_K_LINES_B',
4442                           x_from_pk1_value   => p_from_cle_id,
4443                           x_from_pk2_value   => l_from_version,
4444                           x_to_entity_name => 'OKC_K_LINES_B',
4445                           x_to_pk1_value   => x_clev_rec.id,
4446                           x_to_pk2_value   => l_to_version
4447 					 );
4448     End if;
4449 
4450     IF l_clev_rec.lse_id = 1 THEN
4451       instantiate_counters_events(
4452            p_api_version               => p_api_version,
4453            p_init_msg_list             => p_init_msg_list,
4454            x_return_status             => l_return_status,
4455            x_msg_count                 => x_msg_count,
4456            x_msg_data             	    => x_msg_data,
4457            p_old_cle_id           	    => l_clev_rec.id,
4458            p_old_lse_id           	    => l_old_lse_id,
4459            p_start_date           	    => x_clev_rec.start_date,
4460            p_end_date           	    => x_clev_rec.end_date,
4461            p_new_cle_id           	    => x_clev_rec.id);
4462 
4463       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4464         x_return_status := l_return_status;
4465         RAISE G_EXCEPTION_HALT_VALIDATION;
4466       END IF;
4467     END IF;
4468 
4469 IF (l_debug = 'Y') THEN
4470    OKC_DEBUG.log('850 : ');
4471 END IF;
4472 
4473     --
4474     -- Bug 3611000
4475     -- Rules may exist for pre-11.5.10 contracts - they should not be tried to copy in 11.5.10 onwards for service contracts
4476     --
4477     IF G_APPLICATION_ID <> 515 THEN
4478 
4479     FOR l_c_rgpv IN c_rgpv LOOP
4480       l_old_return_status := l_return_status;
4481       copy_rules (
4482 	   p_api_version	=> p_api_version,
4483            p_init_msg_list	=> p_init_msg_list,
4484            x_return_status 	=> l_return_status,
4485            x_msg_count     	=> x_msg_count,
4486            x_msg_data      	=> x_msg_data,
4487            p_rgp_id		     => l_c_rgpv.id,
4488            p_cle_id		     => x_clev_rec.id,
4489            p_chr_id		     => NULL,
4490 		 p_to_template_yn   => p_to_template_yn,
4491            x_rgp_id		     => l_rgp_id);
4492 
4493       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4494         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4495           x_return_status := l_return_status;
4496           RAISE G_EXCEPTION_HALT_VALIDATION;
4497         ELSE
4498           IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
4499             x_return_status := l_return_status;
4500           END IF;
4501         END IF;
4502       END IF;
4503     END LOOP;
4504 
4505     l_old_return_status := l_return_status;
4506 
4507     END IF; -- G_APPLICATION_ID <> 515
4508 
4509     FOR l_c_catv IN c_catv LOOP
4510       copy_articles (
4511 	   p_api_version	=> p_api_version,
4512            p_init_msg_list	=> p_init_msg_list,
4513            x_return_status 	=> l_return_status,
4514            x_msg_count     	=> x_msg_count,
4515            x_msg_data      	=> x_msg_data,
4516            p_cat_id		=> l_c_catv.id,
4517            p_cle_id		=> x_clev_rec.id,
4518            p_chr_id		=> NULL,
4519            x_cat_id		=> l_cat_id);
4520 
4521       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4522         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4523           x_return_status := l_return_status;
4524           RAISE G_EXCEPTION_HALT_VALIDATION;
4525         ELSE
4526 	     x_return_status := l_return_status;
4527         END IF;
4528       END IF;
4529     END LOOP;
4530 
4531     l_old_return_status := l_return_status;
4532 
4533 IF (l_debug = 'Y') THEN
4534    OKC_DEBUG.log('950 : ');
4535 END IF;
4536 
4537     FOR l_c_pavv IN c_pavv LOOP
4538       copy_price_att_values (
4539 	   p_api_version	=> p_api_version,
4540            p_init_msg_list	=> p_init_msg_list,
4541            x_return_status 	=> l_return_status,
4542            x_msg_count     	=> x_msg_count,
4543            x_msg_data      	=> x_msg_data,
4544            p_pav_id		=> l_c_pavv.id,
4545            p_cle_id		=> x_clev_rec.id,
4546            p_chr_id		=> NULL,
4547            x_pav_id		=> l_pav_id);
4548 
4549       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4550         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4551           x_return_status := l_return_status;
4552           RAISE G_EXCEPTION_HALT_VALIDATION;
4553         ELSE
4554 	     x_return_status := l_return_status;
4555         END IF;
4556       END IF;
4557     END LOOP;
4558 
4559     l_old_return_status := l_return_status;
4560 
4561 IF (l_debug = 'Y') THEN
4562    OKC_DEBUG.log('1100 : ');
4563 END IF;
4564 
4565      FOR l_c_patv IN c_patv LOOP
4566       copy_price_adjustments (
4567            p_api_version        => p_api_version,
4568            p_init_msg_list      => p_init_msg_list,
4569            x_return_status      => l_return_status,
4570            x_msg_count          => x_msg_count,
4571            x_msg_data           => x_msg_data,
4572            p_pat_id             => l_c_patv.id,
4573            p_cle_id             => x_clev_rec.id,
4574            p_chr_id             => x_clev_rec.dnz_chr_id,
4575          --p_chr_id             => NULL,  Modified for Bug 2027165
4576            x_pat_id             => l_pat_id);
4577 
4578       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4579         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4580           x_return_status := l_return_status;
4581           RAISE G_EXCEPTION_HALT_VALIDATION;
4582         ELSE
4583              x_return_status := l_return_status;
4584         END IF;
4585       END IF;
4586 
4587 IF (l_debug = 'Y') THEN
4588    OKC_DEBUG.log('1200 : ');
4589 END IF;
4590 
4591     copy_price_adj_attribs (
4592            p_api_version        => p_api_version,
4593            p_init_msg_list      => p_init_msg_list,
4594            x_return_status      => l_return_status,
4595            x_msg_count          => x_msg_count,
4596            x_msg_data           => x_msg_data,
4597             p_paa_id             => NULL,
4598            p_pat_id             => l_c_patv.id
4599            );
4600 
4601       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4602         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4603           x_return_status := l_return_status;
4604           RAISE G_EXCEPTION_HALT_VALIDATION;
4605         ELSE
4606              x_return_status := l_return_status;
4607         END IF;
4608       END IF;
4609     END LOOP;
4610 
4611     l_old_return_status := l_return_status;
4612 
4613 IF (l_debug = 'Y') THEN
4614    OKC_DEBUG.log('1300 : ');
4615 END IF;
4616 
4617          FOR l_c_pacv IN c_pacv LOOP
4618       copy_price_adj_assocs (
4619            p_api_version        => p_api_version,
4620            p_init_msg_list      => p_init_msg_list,
4621            x_return_status      => l_return_status,
4622            x_msg_count          => x_msg_count,
4623            x_msg_data           => x_msg_data,
4624            p_pac_id             => l_c_pacv.id,
4625            p_cle_id             => x_clev_rec.id,
4626            p_pat_id             => NULL,
4627            x_pac_id             => l_pac_id);
4628 
4629       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4630         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4631           x_return_status := l_return_status;
4632           RAISE G_EXCEPTION_HALT_VALIDATION;
4633         ELSE
4634              x_return_status := l_return_status;
4635         END IF;
4636       END IF;
4637     END LOOP;
4638 
4639     l_old_return_status := l_return_status;
4640 
4641    /*   FOR l_c_paav IN c_paav LOOP
4642       copy_price_adj_attribs (
4643            p_api_version        => p_api_version,
4644            p_init_msg_list      => p_init_msg_list,
4645            x_return_status      => l_return_status,
4646            x_msg_count          => x_msg_count,
4647            x_msg_data           => x_msg_data,
4648            p_paa_id             => l_c_paav.id,
4649            p_pat_id             => NULL,
4650            x_paa_id             => l_paa_id);
4651 
4652       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4653         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4654           x_return_status := l_return_status;
4655           RAISE G_EXCEPTION_HALT_VALIDATION;
4656         ELSE
4657              x_return_status := l_return_status;
4658         END IF;
4659       END IF;
4660     END LOOP;
4661 
4662     l_old_return_status := l_return_status;
4663  */
4664 
4665 IF (l_debug = 'Y') THEN
4666    OKC_DEBUG.log('1400 : ');
4667 END IF;
4668 
4669     FOR l_c_scrv IN c_scrv LOOP
4670       copy_sales_credits (
4671 	   p_api_version	=> p_api_version,
4672            p_init_msg_list	=> p_init_msg_list,
4673            x_return_status 	=> l_return_status,
4674            x_msg_count     	=> x_msg_count,
4675            x_msg_data      	=> x_msg_data,
4676            p_scrv_id            => l_c_scrv.id,
4677            p_cle_id		=> x_clev_rec.id,
4678            p_chr_id		=> g_chrv_rec.id, --NULL,  --must always have a value in sales credits table
4679            x_scrv_id		=> l_scrv_id);
4680 
4681       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4682         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4683           x_return_status := l_return_status;
4684           RAISE G_EXCEPTION_HALT_VALIDATION;
4685         ELSE
4686 	     x_return_status := l_return_status;
4687         END IF;
4688       END IF;
4689     END LOOP;
4690 
4691 IF (l_debug = 'Y') THEN
4692    OKC_DEBUG.log('1500 : ');
4693 END IF;
4694 
4695 /******* commented For Bug# 3052910 ***************************
4696 -- Copy_governance for lines is added for Price_hold. Bug#2399377 .
4697 -- and Price Hold is obsoleted hence the code is commented.
4698 
4699     FOR l_c_governances IN c_governances LOOP
4700 
4701       copy_governances (
4702 	   p_api_version	=> p_api_version,
4703            p_init_msg_list	=> p_init_msg_list,
4704            x_return_status 	=> l_return_status,
4705            x_msg_count     	=> x_msg_count,
4706            x_msg_data      	=> x_msg_data,
4707            p_gvev_id            => l_c_governances.id,
4708            p_cle_id		=> x_clev_rec.id,
4709            p_chr_id		=> g_chrv_rec.id,
4710 
4711            x_gvev_id		=> l_gvev_id);
4712 
4713       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4714          IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4715              x_return_status := l_return_status;
4716              RAISE G_EXCEPTION_HALT_VALIDATION;
4717          ELSE
4718 	     x_return_status := l_return_status;
4719          END IF;
4720       END IF;
4721     END LOOP;
4722 *************commented For Bug# 3052910 *******************/
4723 
4724 /*****Commented For Bug# 3052910 **********************************
4725 -- price hold is  added for Bug#2399377 and it is obsoleted ,
4726 -- hence the following code is commented.
4727 
4728 IF (l_debug = 'Y') THEN
4729    OKC_DEBUG.log('1600 : ');
4730 END IF;
4731 
4732     FOR l_c_okc_ph_line_breaks_v IN c_okc_ph_line_breaks_v LOOP
4733 
4734        copy_price_hold_line_breaks (
4735 	   p_api_version                  => p_api_version,
4736            p_init_msg_list	          => p_init_msg_list,
4737            x_return_status 	          => l_return_status,
4738            x_msg_count     	          => x_msg_count,
4739            x_msg_data      	          => x_msg_data,
4740            p_okc_ph_line_breaks_v_rec_id  => l_c_okc_ph_line_breaks_v.id,
4741            p_cle_id		          => x_clev_rec.id,
4742            x_okc_ph_line_breaks_v_rec_id  => l_okc_ph_line_breaks_v_id);
4743 
4744       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4745         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4746           x_return_status := l_return_status;
4747           RAISE G_EXCEPTION_HALT_VALIDATION;
4748         ELSE
4749 	     x_return_status := l_return_status;
4750         END IF;
4751       END IF;
4752     END LOOP;
4753 
4754 *****Commented For Bug# 3052910 ************************************/
4755 
4756 IF (l_debug = 'Y') THEN
4757    OKC_DEBUG.log('1700 : ');
4758 END IF;
4759 
4760 
4761     IF p_copy_line_party_yn = 'Y' THEN
4762       FOR l_c_cplv IN c_cplv LOOP
4763         l_old_return_status := l_return_status;
4764         copy_party_roles (
4765              p_api_version	=> p_api_version,
4766              p_init_msg_list	=> p_init_msg_list,
4767              x_return_status 	=> l_return_status,
4768              x_msg_count     	=> x_msg_count,
4769              x_msg_data      	=> x_msg_data,
4770              p_cpl_id		=> l_c_cplv.id,
4771              p_cle_id		=> x_clev_rec.id,
4772              p_chr_id		=> NULL,
4773              p_rle_code         => NULL,
4774              x_cpl_id		=> l_cpl_id);
4775 
4776         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4777           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4778             x_return_status := l_return_status;
4779             RAISE G_EXCEPTION_HALT_VALIDATION;
4780           ELSE
4781             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
4782               x_return_status := l_return_status;
4783             END IF;
4784           END IF;
4785         END IF;
4786       END LOOP;
4787     END IF;
4788 
4789     l_old_return_status := l_return_status;
4790 
4791 IF (l_debug = 'Y') THEN
4792    OKC_DEBUG.log('1800 : ');
4793 END IF;
4794 
4795     copy_items (
4796 	   p_api_version	=> p_api_version,
4797            p_init_msg_list	=> p_init_msg_list,
4798            x_return_status 	=> l_return_status,
4799            x_msg_count     	=> x_msg_count,
4800            x_msg_data      	=> x_msg_data,
4801            p_from_cle_id	=> p_from_cle_id,
4802            p_copy_reference     => p_copy_reference,
4803            p_to_cle_id		=> x_clev_rec.id);
4804 
4805 
4806     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4807       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4808 -- bug 2667634 start  , changes commented for bug 2774888
4809 -- IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) OR (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4810 -- bug 2667634 end
4811         x_return_status := l_return_status;
4812         RAISE G_EXCEPTION_HALT_VALIDATION;
4813       ELSE
4814         IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
4815           x_return_status := OKC_API.G_RET_STS_WARNING;
4816         END IF;
4817       END IF;
4818     END IF;
4819 
4820 IF (l_debug = 'Y') THEN
4821    OKC_DEBUG.log('2000 : ');
4822 END IF;
4823 
4824 
4825       --Changes done for Bug 3764231 to execute the dynamic SQL only for service contracts
4826       OPEN l_Service_Contract_csr;
4827       FETCH l_Service_Contract_csr into l_category;
4828       CLOSE l_Service_Contract_csr;
4829       --Changes done for Bug 3764231 to execute the dynamic SQL only for service contracts
4830 
4831       -- Begin - Changes done for Bug 1917514
4832 
4833       -- Need to check if this procedure is already called from Copy Header or not
4834       -- If it is already called then l_oks_copy is alreadt set to N then donot
4835       -- need to execute this logic otherwise need to execute
4836   IF l_category = 'SERVICE' then   --Bug 3764231
4837    IF l_oks_copy = 'Y' THEN -- Begin -Copy is called from Line
4838       l_chr_id := l_clev_rec.dnz_chr_id ;
4839       l_cle_id1 := x_clev_rec.id;
4840    OPEN c_pdf;
4841    FETCH c_pdf INTO l_pdf_id;
4842       okc_create_plsql (p_pdf_id => l_pdf_id,
4843                     x_string => l_string) ;
4844    CLOSE c_pdf;
4845 
4846 IF (l_debug = 'Y') THEN
4847    OKC_DEBUG.log('2100 : l_string : '||l_string);
4848 END IF;
4849     IF l_string is NOT NULL THEN   -- Begin L_STRING IF
4850        proc_string := 'begin '||l_string || ' (:b1,:b2,:b3); end ;';
4851        EXECUTE IMMEDIATE proc_string using l_chr_id,l_cle_id1, out l_return_status; -- Bugfix 2151523(1917514) - changed l_cle_id to l_cle_id1.
4852 
4853          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
4854             x_return_status := l_return_status;
4855             RAISE G_EXCEPTION_HALT_VALIDATION;
4856          ELSE
4857             x_return_status := l_return_status;
4858          END IF;
4859     END IF;  -- End L_STRING IF
4860 
4861    END IF;  -- End - Copy is called from Line
4862  END IF; -- End l_category ='SERVICE'
4863   -- End - Changes done for Bug 1917514
4864 
4865   IF (l_debug = 'Y') THEN
4866      OKC_DEBUG.log('10000 : Exiting Procedure copy_contract_line ', 2);
4867      OKC_DEBUG.ReSet_Indentation;
4868   END IF;
4869 
4870   EXCEPTION
4871     WHEN G_EXCEPTION_HALT_VALIDATION THEN
4872   IF (l_debug = 'Y') THEN
4873      OKC_DEBUG.log('20000 : Exiting Procedure copy_contract_line ', 2);
4874      OKC_DEBUG.ReSet_Indentation;
4875   END IF;
4876       NULL;
4877     WHEN OTHERS THEN
4878       -- store SQL error message on message stack for caller
4879       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
4880   IF (l_debug = 'Y') THEN
4881      OKC_DEBUG.log('30000 : SQLCODE : '||SQLCODE);
4882      OKC_DEBUG.log('30000 : SQLERRM : '||SQLERRM);
4883      OKC_DEBUG.log('30000 : Exiting Procedure copy_contract_line ', 2);
4884      OKC_DEBUG.ReSet_Indentation;
4885   END IF;
4886       -- notify caller of an UNEXPECTED error
4887       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4888 
4889   END copy_contract_line;
4890 
4891   ----------------------------------------------------------------------------
4892   --Proceudre copy_contract_lines.
4893   --This procedure copies the given line and its children
4894   --(eg sub lines, rules etc.)
4895   ----------------------------------------------------------------------------
4896   PROCEDURE copy_contract_lines(
4897     p_api_version                  IN NUMBER,
4898     p_init_msg_list                IN VARCHAR2 ,
4899     x_return_status                OUT NOCOPY VARCHAR2,
4900     x_msg_count                    OUT NOCOPY NUMBER,
4901     x_msg_data                     OUT NOCOPY VARCHAR2,
4902     p_from_cle_id                  IN NUMBER,
4903     p_to_cle_id                    IN NUMBER,
4904     p_to_chr_id                    IN NUMBER,
4905     p_to_template_yn               IN VARCHAR2,
4906     p_copy_reference               IN VARCHAR2,
4907     p_copy_line_party_yn           IN VARCHAR2,
4908     p_renew_ref_yn                 IN VARCHAR2,
4909     p_generate_line_number         IN VARCHAR2 ,
4910     x_cle_id	                   OUT NOCOPY NUMBER,
4911     p_change_status		          IN VARCHAR2) -- LLC Added an additional flag parameter, p_change_status,
4912     									   -- to decide whether to allow change of status of sublines
4913 									   -- of the topline during update service
4914 
4915     IS
4916 
4917     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4918     l_cle_id			NUMBER := OKC_API.G_MISS_NUM;
4919     l_cle_id_out		NUMBER := OKC_API.G_MISS_NUM;
4920     i 				NUMBER := 0;
4921     l_lse_id            NUMBER := OKC_API.G_MISS_NUM;
4922 
4923     TYPE lines_rec_type IS RECORD (
4924       level                        NUMBER := OKC_API.G_MISS_NUM,
4925       line_id                      NUMBER := OKC_API.G_MISS_NUM,
4926       new_line_id                  NUMBER := OKC_API.G_MISS_NUM,
4927       cle_id                       NUMBER := OKC_API.G_MISS_NUM,
4928       new_cle_id                   NUMBER := OKC_API.G_MISS_NUM,
4929 	 ole_id                       NUMBER := OKC_API.G_MISS_NUM);
4930 
4931     TYPE lines_tbl_type IS TABLE OF lines_rec_type
4932       INDEX BY BINARY_INTEGER;
4933 
4934     l_lines_rec 	lines_rec_type;
4935     l_lines_tbl 	lines_tbl_type;
4936 
4937     CURSOR	c_lines IS
4938     SELECT 	level,
4939 		id,
4940 		chr_id,
4941 		cle_id,
4942 		dnz_chr_id,
4943                 lse_id
4944     FROM 	okc_k_lines_b
4945     CONNECT BY  PRIOR id = cle_id
4946     START WITH  id = p_from_cle_id;
4947 
4948     CURSOR	c_application_id IS
4949     SELECT 	chr.application_id
4950     FROM 	okc_k_headers_b chr,
4951                 okc_k_lines_b cle
4952     WHERE       chr.id = cle.dnz_chr_id
4953     AND         cle.id = p_from_cle_id;
4954   ----------------------------------------------------------------------------
4955   -- Function to find the new cle_id.
4956   ----------------------------------------------------------------------------
4957     FUNCTION    get_new_cle_id(p_line_id IN NUMBER,
4958 				p_cle_id IN NUMBER,
4959 				p_new_cle_id OUT NOCOPY NUMBER)
4960     				RETURN VARCHAR2 IS
4961       l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4962       i 			  NUMBER := 0;
4963     BEGIN
4964 
4965       IF l_lines_tbl.COUNT > 0 THEN
4966         i := l_lines_tbl.FIRST;
4967         LOOP
4968           IF l_lines_tbl(i).line_id = p_cle_id THEN
4969             p_new_cle_id := l_lines_tbl(i).new_line_id;
4970             return(l_return_status);
4971           END IF;
4972           EXIT WHEN (i = l_lines_tbl.LAST);
4973           i := l_lines_tbl.NEXT(i);
4974         END LOOP;
4975       END IF;
4976       l_return_status := OKC_API.G_RET_STS_ERROR;
4977       return(l_return_status);
4978     EXCEPTION
4979       WHEN OTHERS THEN
4980         -- store SQL error message on message stack for caller
4981         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
4982         -- notify caller of an UNEXPECTED error
4983         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4984         return(l_return_status);
4985     END get_new_cle_id;
4986 
4987   ----------------------------------------------------------------------------
4988   --Proceudre body copy_contract_lines begins
4989   ----------------------------------------------------------------------------
4990   BEGIN
4991 
4992 IF (l_debug = 'Y') THEN
4993    OKC_DEBUG.Set_Indentation(' copy_contract_lines ');
4994    OKC_DEBUG.log('100 : Entering  copy_contract_lines  ', 2);
4995 END IF;
4996 
4997 x_return_status := l_return_status;
4998 
4999 --Initialized g_application_id for bug 3948599
5000     OPEN c_application_id;
5001     FETCH c_application_id INTO g_application_id;
5002     CLOSE c_application_id;
5003 
5004     FOR l_c_lines IN c_lines
5005     LOOP
5006       i := i+1;
5007       l_lines_tbl(i).level := l_c_lines.level;
5008       l_lines_tbl(i).line_id := l_c_lines.id;
5009       l_lines_tbl(i).cle_id := l_c_lines.cle_id;
5010       l_lse_id := l_c_lines.lse_id;
5011       IF l_c_lines.level = 1 THEN
5012         --Bug:3668722 As line with lse=20 is already copied by call to copy_contract_line
5013         --from copy_components,In the if part just preserve the cle_id for copying lines
5014         --with lse(21,22,23)
5015         IF l_lse_id = 20 then
5016           l_cle_id_out := p_to_cle_id;
5017         Else
5018         copy_contract_line(
5019 	   p_api_version	     => p_api_version,
5020            p_init_msg_list	=> p_init_msg_list,
5021            x_return_status 	=> l_return_status,
5022            x_msg_count     	=> x_msg_count,
5023            x_msg_data      	=> x_msg_data,
5024            p_from_cle_id		=> l_c_lines.id,
5025            p_from_chr_id		=> l_c_lines.dnz_chr_id,
5026 	   p_to_cle_id 		=> P_to_cle_id,
5027 	   p_to_chr_id		=> p_to_chr_id,
5028 	   p_lse_id           => NULL,
5029 	   p_to_template_yn     => p_to_template_yn,
5030            p_copy_reference     => 'COPY',
5031            p_copy_line_party_yn => 'Y',
5032 	   p_renew_ref_yn     => p_renew_ref_yn,
5033            p_generate_line_number  => p_generate_line_number, --Bug 2489856
5034            x_cle_id		=> l_cle_id_out,
5035 	   p_change_status      => p_change_status); -- LLC Added an additional flag parameter, p_change_status,
5036 	   									-- to decide whether to allow change of status of sublines
5037 										-- of the topline during update service
5038 
5039            x_cle_id := l_cle_id_out; -- only the 1st level line id generated is passed out.
5040         END IF;--IF l_lse_id = 20 then
5041       ELSE
5042         l_return_status := get_new_cle_id(p_line_id 	=> l_c_lines.id,
5043 					p_cle_id 	=> l_c_lines.cle_id,
5044 					p_new_cle_id    => l_cle_id);
5045 
5046         copy_contract_line (
5047 	   p_api_version	     => p_api_version,
5048            p_init_msg_list	=> p_init_msg_list,
5049            x_return_status 	=> l_return_status,
5050            x_msg_count     	=> x_msg_count,
5051            x_msg_data      	=> x_msg_data,
5052            p_from_cle_id	     => l_c_lines.id,
5053            p_from_chr_id		=> l_c_lines.dnz_chr_id,
5054 	   p_to_cle_id 		=> l_cle_id, -- the new generated parent line id.
5055 	   p_to_chr_id		=> NULL,
5056 	   p_lse_id           => NULL,
5057 	   p_to_template_yn   => p_to_template_yn,
5058            p_copy_reference     => 'COPY',
5059            p_copy_line_party_yn => 'Y',
5060 	   p_renew_ref_yn     => p_renew_ref_yn,
5061            p_generate_line_number  => p_generate_line_number, --Bug 2489856
5062            x_cle_id		     => l_cle_id_out,
5063 	   p_change_status      => p_change_status); -- LLC Added an additional flag parameter, p_change_status,
5064 	   								     -- to decide whether to allow change of status of sublines
5065 										-- of the topline during update service
5066 
5067       END IF;
5068 
5069 IF (l_debug = 'Y') THEN
5070    OKC_DEBUG.log('500 :  copy_contract_line - x_return_status : '||l_return_status);
5071 END IF;
5072 
5073       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5074           x_return_status := l_return_status;
5075 
5076 		-- Continue line copy in case of warning
5077 		If (l_return_status <> OKC_API.G_RET_STS_WARNING) Then
5078              RAISE G_EXCEPTION_HALT_VALIDATION;
5079 		End If;
5080       END IF;
5081 
5082       l_lines_tbl(i).new_line_id := l_cle_id_out; -- the new generated line id is stored in PL/SQL Table.
5083 
5084     END LOOP;
5085     i := 0;
5086 
5087     If (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) Then
5088 	   If (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) Then
5089 		  x_return_status := l_return_status;
5090         Elsif (x_return_status <> OKC_API.G_RET_STS_ERROR) Then
5091 		 If (l_return_status = OKC_API.G_RET_STS_ERROR) Then
5092 		    x_return_status := l_return_status;
5093            Elsif (x_return_status <> OKC_API.G_RET_STS_WARNING) Then
5094 	            x_return_status := l_return_status;
5095            End If;
5096 	   End If;
5097     End If;
5098 
5099   IF (l_debug = 'Y') THEN
5100      OKC_DEBUG.log('10000 : Exiting Procedure copy_contract_lines ', 2);
5101      OKC_DEBUG.ReSet_Indentation;
5102   END IF;
5103 
5104   EXCEPTION
5105     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5106   IF (l_debug = 'Y') THEN
5107      OKC_DEBUG.log('20000 : Exiting Procedure copy_contract_lines ', 2);
5108      OKC_DEBUG.ReSet_Indentation;
5109   END IF;
5110       NULL;
5111     WHEN OTHERS THEN
5112       -- store SQL error message on message stack for caller
5113       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
5114   IF (l_debug = 'Y') THEN
5115      OKC_DEBUG.log('30000 : SQLCODE : '||SQLCODE);
5116      OKC_DEBUG.log('30000 : SQLERRM : '||SQLERRM);
5117      OKC_DEBUG.log('30000 : Exiting Procedure copy_contract_lines ', 2);
5118      OKC_DEBUG.ReSet_Indentation;
5119   END IF;
5120       -- notify caller of an UNEXPECTED error
5121       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5122 
5123   END copy_contract_lines;
5124 
5125   ----------------------------------------------------------------------------
5126   -- Proceduere to create operation instance and operation lines for
5127   -- contract header in case of RENEW
5128   -- Parameters: p_chrv_rec    - in header record for object_chr_id and scs_code
5129   --             p_to_chr_id   - subject_chr_id
5130   ----------------------------------------------------------------------------
5131   PROCEDURE Create_Renewal_Header_Link (
5132     p_api_version                  IN NUMBER,
5133     p_init_msg_list                IN VARCHAR2 ,
5134     x_return_status                OUT NOCOPY VARCHAR2,
5135     x_msg_count                    OUT NOCOPY NUMBER,
5136     x_msg_data                     OUT NOCOPY VARCHAR2,
5137     p_chrv_rec                     IN OKC_CONTRACT_PUB.chrv_rec_type,
5138     p_to_chr_id                    IN NUMBER)
5139   IS
5140     -- Cursor to get class operation id
5141     Cursor cop_csr Is
5142 		 SELECT id
5143 		 FROM okc_class_operations
5144 		 WHERE cls_code = ( SELECT cls_code
5145 						FROM okc_subclasses_b
5146 						WHERE code = p_chrv_rec.scs_code )
5147            AND opn_code = 'RENEWAL';
5148 
5149     l_cop_id        NUMBER;
5150     l_oiev_rec      OKC_OPER_INST_PUB.oiev_rec_type;
5151     lx_oiev_rec     OKC_OPER_INST_PUB.oiev_rec_type;
5152     l_olev_rec      OKC_OPER_INST_PUB.olev_rec_type;
5153     lx_olev_rec     OKC_OPER_INST_PUB.olev_rec_type;
5154     l_count         NUMBER := 0;
5155   BEGIN
5156     -- get class operation id
5157     open cop_csr;
5158     fetch cop_csr into l_cop_id;
5159     close cop_csr;
5160 
5161     l_oiev_rec.cop_id := l_cop_id;
5162     l_oiev_rec.target_chr_id := p_to_chr_id;
5163     --l_oiev_rec.status_code := 'ENTERED';
5164     l_oiev_rec.status_code := 'PROCESSED';
5165 
5166     OKC_OPER_INST_PUB.Create_Operation_Instance (
5167 	 p_api_version		=> p_api_version,
5168 	 p_init_msg_list	=> p_init_msg_list,
5169       x_return_status 	=> x_return_status,
5170       x_msg_count     	=> x_msg_count,
5171       x_msg_data      	=> x_msg_data,
5172       p_oiev_rec		=> l_oiev_rec,
5173       x_oiev_rec		=> lx_oiev_rec);
5174 
5175    If (x_return_status = OKC_API.G_RET_STS_SUCCESS) Then
5176        l_olev_rec.SELECT_YN      := NULL;
5177        l_olev_rec.ACTIVE_YN      := 'Y';
5178        l_olev_rec.PROCESS_FLAG   := 'P';
5179 	  l_olev_rec.OIE_ID         := lx_oiev_rec.id;
5180 	  l_olev_rec.SUBJECT_CHR_ID := p_to_chr_id;
5181 	  l_olev_rec.OBJECT_CHR_ID  := p_chrv_rec.id;
5182 
5183        OKC_OPER_INST_PUB.Create_Operation_Line (
5184 	       p_api_version	=> p_api_version,
5185 	       p_init_msg_list	=> p_init_msg_list,
5186             x_return_status 	=> x_return_status,
5187             x_msg_count     	=> x_msg_count,
5188             x_msg_data      	=> x_msg_data,
5189             p_olev_rec		=> l_olev_rec,
5190             x_olev_rec		=> lx_olev_rec);
5191 	  If (x_return_status = OKC_API.G_RET_STS_SUCCESS) Then
5192            -- set g_op_lines table
5193            l_count := g_op_lines.COUNT + 1;
5194            g_op_lines(l_count).id     := p_chrv_rec.ID;
5195            g_op_lines(l_count).ole_id := lx_olev_rec.ID;
5196        End if;
5197    End If;
5198 
5199   EXCEPTION
5200     when NO_DATA_FOUND then
5201 	  -- store SQL error message on message stack
5202 	  x_return_status := OKC_API.G_RET_STS_ERROR;
5203   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
5204 					  p_msg_name		=> 'OKC_NOT_FOUND',
5205 					  p_token1		=> 'VALUE1',
5206 					  p_token1_value	=> 'Status Code',
5207 					  p_token2		=> 'VALUE2',
5208 					  p_token2_value	=> 'OKC_CLASS_OPERATIONS_V');
5209     when OTHERS then
5210 	  -- store SQL error message on message stack
5211   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
5212 					  p_msg_name		=> g_unexpected_error,
5213 					  p_token1		=> g_sqlcode_token,
5214 					  p_token1_value	=> sqlcode,
5215 					  p_token2		=> g_sqlerrm_token,
5216 					  p_token2_value	=> sqlerrm);
5217 	   -- notify caller of an error as UNEXPECTED error
5218         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5219   END Create_Renewal_Header_Link;
5220 
5221   ----------------------------------------------------------------------------
5222   --Proceudre copy_contract_header
5223   ----------------------------------------------------------------------------
5224   PROCEDURE copy_contract_header(
5225     p_api_version                  IN NUMBER,
5226     p_init_msg_list                IN VARCHAR2 ,
5227     x_return_status                OUT NOCOPY VARCHAR2,
5228     x_msg_count                    OUT NOCOPY NUMBER,
5229     x_msg_data                     OUT NOCOPY VARCHAR2,
5230     p_from_chr_id                  IN NUMBER,
5231     p_contract_number		   IN VARCHAR2,
5232     p_contract_number_modifier     IN VARCHAR2,
5233     p_scs_code                     IN VARCHAR2,
5234     p_intent                       IN VARCHAR2,
5235     p_prospect                     IN VARCHAR2,
5236     p_called_from                  IN VARCHAR2,
5237     p_to_template_yn     	   IN VARCHAR2,
5238     p_renew_ref_yn                 IN VARCHAR2,
5239     p_override_org                 IN VARCHAR2 ,
5240     p_calling_mode                 IN VARCHAR2 ,
5241     x_chr_id		           OUT NOCOPY NUMBER) IS
5242 
5243     l_chrv_rec 	chrv_rec_type;
5244     x_chrv_rec 	chrv_rec_type;
5245 
5246     l_pat_id        NUMBER;
5247     l_pav_id        NUMBER;
5248     l_pac_id        NUMBER;
5249     l_paa_id        NUMBER;
5250     l_sts_code      VARCHAR2(30);
5251     l_status_type   VARCHAR2(30) := 'ENTERED';
5252     l_orig_system_source_code   VARCHAR2(30) := 'OKC_HDR';
5253     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5254     l_from_version  FND_ATTACHED_DOCUMENTS.PK2_VALUE%TYPE;
5255 
5256     l_euro_currency          varchar2(15) := NULL; /* For Euro Conversion - Bug 2155930 */
5257     l_converted_amount       number := NULL; /* For Euro Conversion - Bug 2155930 */
5258 
5259     l_scrv_id       NUMBER;
5260     l_history_id    NUMBER;
5261 
5262     l_gvev_id       NUMBER;
5263     l_entity_name     VARCHAR2(30);
5264     l_from_entity_name VARCHAR2(30);
5265     l_to_entity_name   VARCHAR2(30);
5266 
5267 --- Following Cursors are modified for Bug 1846967
5268     CURSOR c_pavv IS
5269     SELECT id
5270     FROM okc_price_att_values_V
5271     WHERE chr_id = p_from_chr_id
5272     AND  G_COPY_HISTORY_YN = 'N'
5273 UNION ALL
5274     SELECT id
5275     FROM okc_price_att_values_HV
5276     WHERE chr_id = p_from_chr_id
5277     AND  major_version = G_FROM_VERSION_NUMBER
5278     AND  G_COPY_HISTORY_YN = 'Y';
5279 -----------------------------------
5280     CURSOR c_patv IS
5281     SELECT id
5282     FROM okc_price_adjustments_V
5283     WHERE chr_id = p_from_chr_id
5284     AND  cle_id IS NULL -- Added for Bug 2027165
5285     AND  G_COPY_HISTORY_YN = 'N'
5286 UNION ALL
5287     SELECT id
5288     FROM okc_price_adjustments_HV
5289     WHERE chr_id = p_from_chr_id
5290     AND  cle_id IS NULL -- Added for Bug 2027165
5291     AND  major_version = G_FROM_VERSION_NUMBER
5292     AND  G_COPY_HISTORY_YN = 'Y';
5293 -----------------------------------
5294     CURSOR c_pacv IS
5295     SELECT id
5296     FROM okc_price_adj_assocs_v
5297     WHERE
5298       pat_id_from IN
5299         ( SELECT id
5300           FROM OKC_PRICE_ADJUSTMENTS
5301            WHERE chr_id = p_from_chr_id)
5302     AND  G_COPY_HISTORY_YN = 'N'
5303 UNION ALL
5304     SELECT id
5305     FROM okc_price_adj_assocs_HV
5306     WHERE
5307       pat_id_from IN
5308         ( SELECT id
5309           FROM OKC_PRICE_ADJUSTMENTS
5310            WHERE chr_id = p_from_chr_id)
5311     AND   major_version = G_FROM_VERSION_NUMBER
5312     AND   G_COPY_HISTORY_YN = 'Y';
5313 -------------------------------------------
5314   /* CURSOR c_paav IS
5315     SELECT id
5316     FROM okc_price_adj_attribs_v
5317     WHERE
5318          pat_id IN
5319         ( SELECT pat_id
5320           FROM OKC_PRICE_ADJUSTMENTS
5321            WHERE
5322          chr_id = p_from_chr_id);
5323    */
5324 
5325     -- cursor for sales credits
5326     CURSOR c_scrv IS
5327     SELECT id
5328     FROM okc_k_sales_credits_v
5329     WHERE dnz_chr_id = p_from_chr_id
5330     AND   cle_id IS NULL
5331     AND  G_COPY_HISTORY_YN = 'N'
5332 UNION ALL
5333     SELECT id
5334     FROM okc_k_sales_credits_hv
5335     WHERE dnz_chr_id = p_from_chr_id
5336     AND   cle_id IS NULL
5337     AND  major_version = G_FROM_VERSION_NUMBER
5338     AND  G_COPY_HISTORY_YN = 'Y';
5339 
5340 --
5341     -- cursor for goverances
5342     CURSOR  c_governances IS
5343     SELECT  id
5344     FROM    okc_governances_v
5345     WHERE   dnz_chr_id = p_from_chr_id
5346     AND	    cle_id is null
5347     AND     G_COPY_HISTORY_YN = 'N'
5348 UNION ALL
5349     SELECT  id
5350     FROM    okc_governances_hv
5351     WHERE   dnz_chr_id = p_from_chr_id
5352     AND	    cle_id is null
5353     AND     major_version = G_FROM_VERSION_NUMBER
5354     AND     G_COPY_HISTORY_YN = 'Y';
5355 
5356 
5357 -- Cursor for status change history
5358    CURSOR history_csr(p_chr_id NUMBER) IS
5359    SELECT id
5360    FROM okc_k_history_b
5361    WHERE TO_CHAR(CREATION_DATE, 'DD-MON-YYYY HH:MI:SS') =
5362        (SELECT MAX(TO_CHAR(CREATION_DATE, 'DD-MON-YYYY HH:MI:SS'))
5363         FROM OKC_K_HISTORY_B
5364         WHERE CHR_ID = p_chr_id)
5365    AND CHR_ID = p_chr_id;
5366 
5367 
5368   BEGIN
5369 
5370     x_return_status := l_return_status;
5371     l_return_status := get_chrv_rec(	p_chr_id 	=> p_from_chr_id,
5372 					x_chrv_rec 	=> l_chrv_rec);
5373 
5374 /* The following logic of setting the context has been moved here from below becasue of the requirement of Euro Conversion - Bug 2155930 */
5375     -- Sets the context.
5376     IF p_override_org = 'N' THEN
5377       okc_context.set_okc_org_context;
5378     ELSE
5379       okc_context.set_okc_org_context(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
5380     END IF;
5381 
5382     IF l_chrv_rec.authoring_org_id <> okc_context.get_okc_org_id OR
5383        l_chrv_rec.inv_organization_id <> okc_context.get_okc_organization_id THEN
5384       OKC_API.SET_MESSAGE('OKC','OKC_INCOMPATIBLE_ORG');
5385       x_return_status := OKC_API.G_RET_STS_ERROR;
5386       RAISE G_EXCEPTION_HALT_VALIDATION;
5387     END IF;
5388 
5389    --moving the initialization of g_application_id up for Bug 3693912
5390      g_application_id := l_chrv_rec.application_id;
5391 
5392     /* Fixing Renewal for Euro Conversion - at Header Level - Bug 2155930 */
5393     if (p_renew_ref_yn = 'Y') then
5394 
5395        l_euro_currency := OKC_CURRENCY_API.GET_EURO_CURRENCY_CODE(l_chrv_rec.currency_code);
5396 
5397        if (l_euro_currency <> l_chrv_rec.currency_code) then
5398          If l_chrv_rec.application_id in (510,871) Then
5399            select CONVERSION_TYPE, CONVERSION_RATE, CONVERSION_DATE
5400            into   g_conversion_type, g_conversion_rate, g_conversion_date
5401            from   okc_conversion_attribs_v
5402            where  DNZ_CHR_ID = l_chrv_rec.id
5403            and    chr_id = l_chrv_rec.id;
5404          Else
5405             -- /Rules migration/
5406             --FOr other contracts classes, conversion data is now stored at the header level
5407              select CONVERSION_TYPE, CONVERSION_RATE, CONVERSION_rate_DATE
5408              into   g_conversion_type, g_conversion_rate, g_conversion_date
5409              from okc_k_headers_b
5410              where id = l_chrv_rec.id;
5411          End If;
5412 
5413 
5414            fnd_profile.get('OKC_EURO_DEFAULT_PRICELIST', g_pricelist);
5415 
5416            if (g_pricelist is NULL) then
5417               fnd_message.set_name('OKC','OKC_PROFILE_CHECK');
5418               fnd_message.set_token('PROFILE','OKC_EURO_DEFAULT_PRICELIST');
5419               FND_MSG_PUB.add;
5420               x_return_status := OKC_API.G_RET_STS_ERROR;
5421               RAISE G_EXCEPTION_HALT_VALIDATION;
5422            end if;
5423 
5424    --/Rule Migration/
5425    --Update price list on the header instead of price rule
5426           --moving the initialization of g_application_id up for Bug 3693912
5427           -- g_application_id := l_chrv_rec.application_id;
5428            If l_chrv_rec.application_id not in (510,871) Then
5429               l_chrv_rec.price_list_id := g_pricelist;
5430            End If;
5431      --
5432 
5433 
5434            OKC_CURRENCY_API.CONVERT_AMOUNT
5435                          (p_FROM_CURRENCY => l_chrv_rec.currency_code,
5436                           p_TO_CURRENCY => l_euro_currency,
5437                           p_CONVERSION_DATE => g_conversion_date,
5438                           p_CONVERSION_TYPE => g_conversion_type,
5439                           p_AMOUNT => l_chrv_rec.estimated_amount,
5440                           x_CONVERSION_RATE => g_conversion_rate,
5441                           x_CONVERTED_AMOUNT => l_converted_amount
5442                          );
5443            l_chrv_rec.estimated_amount := l_converted_amount;
5444 
5445 /* Commented out nocopy as total_line_list_price is in 11.5.6 and not available here
5446            OKC_CURRENCY_API.CONVERT_AMOUNT
5447                          (p_FROM_CURRENCY => l_chrv_rec.currency_code,
5448                           p_TO_CURRENCY => l_euro_currency,
5449                           p_CONVERSION_DATE => g_conversion_date,
5450                           p_CONVERSION_TYPE => g_conversion_type,
5451                           p_AMOUNT => l_chrv_rec.total_line_list_price,
5452                           x_CONVERSION_RATE => g_conversion_rate,
5453                           x_CONVERTED_AMOUNT => l_converted_amount
5454                          );
5455            l_chrv_rec.total_line_list_price := l_converted_amount;
5456 */
5457 /*
5458    Commented out nocopy as user_estimated_amount is in 11.5.6 and not available here
5459 
5460            OKC_CURRENCY_API.CONVERT_AMOUNT
5461                          (p_FROM_CURRENCY => l_chrv_rec.currency_code,
5462                           p_TO_CURRENCY => l_euro_currency,
5463                           p_CONVERSION_DATE => g_conversion_date,
5464                           p_CONVERSION_TYPE => g_conversion_type,
5465                           p_AMOUNT => l_chrv_rec.user_estimated_amount,
5466                           x_CONVERSION_RATE => g_conversion_rate,
5467                           x_CONVERTED_AMOUNT => l_converted_amount
5468                          );
5469            l_chrv_rec.user_estimated_amount := l_converted_amount;
5470 */
5471 
5472            l_chrv_rec.currency_code := l_euro_currency;
5473 
5474        end if;
5475     end if;
5476 
5477     IF p_called_from = 'C' THEN -- for subcontracting only
5478       l_chrv_rec.buy_or_sell      := p_intent;
5479       l_chrv_rec.issue_or_receive := p_prospect;
5480       l_chrv_rec.scs_code         := p_scs_code;
5481     END IF;
5482     l_chrv_rec.chr_id_response    		:= NULL;
5483     l_chrv_rec.chr_id_award       		:= NULL;
5484     l_chrv_rec.archived_yn        		:= 'N';
5485     l_chrv_rec.deleted_yn         		:= 'N';
5486     -- Bug#2310764. If the copy is called from contracts online then
5487     -- let the status of the new contract be the same as old contract.
5488     -- orig_system_sorce_code will be 'KSSA_HDR' if copy is done from
5489     -- contracts online so that the contract can be updated from KOL.
5490     IF UPPER(NVL(p_calling_mode,'OKC')) = 'KOL_IMPORT' THEN
5491        l_status_type := l_chrv_rec.sts_code;
5492        l_orig_system_source_code:= 'KSSA_HDR' ;
5493     ELSIF UPPER(NVL(p_calling_mode,'OKC')) = 'KOL_COPY' THEN
5494        l_orig_system_source_code:= 'KSSA_HDR' ;
5495     END IF;
5496     okc_assent_pub.get_default_status( x_return_status => l_return_status,
5497 							    p_status_type  => l_status_type,
5498 							    x_status_code  => l_sts_code);
5499     l_chrv_rec.sts_code                         := l_sts_code;
5500     l_chrv_rec.date_approved    		:= NULL;
5501     l_chrv_rec.datetime_cancelled    		:= NULL;
5502     l_chrv_rec.date_issued	    		:= NULL;
5503     l_chrv_rec.datetime_responded    		:= NULL;
5504     l_chrv_rec.non_response_reason    		:= NULL;
5505     l_chrv_rec.non_response_explain    		:= NULL;
5506     l_chrv_rec.rfp_type		    		:= NULL;
5507     l_chrv_rec.set_aside_reason    		:= NULL;
5508     l_chrv_rec.set_aside_percent    		:= NULL;
5509     l_chrv_rec.response_copies_req    		:= NULL;
5510     l_chrv_rec.date_close_projected    		:= NULL;
5511     l_chrv_rec.datetime_proposed    		:= NULL;
5512     l_chrv_rec.date_signed	    		:= NULL;
5513     l_chrv_rec.date_terminated    		:= NULL;
5514     -- Bug 1975070 - Date Approved should be Null after Copy
5515     l_chrv_rec.date_approved    		:= NULL;
5516     -- Bug 1975070
5517     l_chrv_rec.date_renewed	    		:= NULL;
5518     l_chrv_rec.trn_code    			:= NULL;
5519     l_chrv_rec.orig_system_source_code          := l_orig_system_source_code;
5520     l_chrv_rec.orig_system_id1 			:= p_from_chr_id;
5521     l_chrv_rec.orig_system_reference1           := NULL;
5522 
5523      IF g_price_adjustments.COUNT > 0 THEN
5524        g_price_adjustments.DELETE;
5525     END IF;
5526 
5527     IF p_to_template_yn = 'Y' THEN
5528       IF l_chrv_rec.template_yn = 'N' THEN
5529         l_chrv_rec.template_yn := 'Y';
5530         l_chrv_rec.template_used := NULL;
5531       END IF;
5532     ELSIF p_to_template_yn = 'N' THEN
5533       IF l_chrv_rec.template_yn = 'Y' THEN
5534         l_chrv_rec.template_yn := 'N';
5535         l_chrv_rec.template_used := l_chrv_rec.contract_number;
5536       END IF;
5537     END IF;
5538 
5539     -- this needs to be assigned after the template used is assigned from the old contract number
5540     l_chrv_rec.contract_number			:= p_contract_number;
5541     l_chrv_rec.contract_number_modifier		:= p_contract_number_modifier;
5542 
5543     IF p_renew_ref_yn = 'Y' THEN
5544 	  l_chrv_rec.ESTIMATED_AMOUNT_RENEWED := l_chrv_rec.ESTIMATED_AMOUNT;
5545 	  l_chrv_rec.CURRENCY_CODE_RENEWED    := l_chrv_rec.CURRENCY_CODE;
5546     END IF;
5547     --l_chrv_rec.estimated_amount		:= NULL;
5548     -- Bug 2069569 When Copy called from renew donot nullify estimated amount
5549     --             Otherwise nullify estimated amount
5550 -- Bug 2836000 start  commented out as copy api should copy header amoutn as well in all the cases
5551 /*
5552     IF p_renew_ref_yn <> 'Y'  THEN
5553        l_chrv_rec.estimated_amount		:= NULL;
5554     END IF;
5555 */
5556 -- Bug 2836000 end  commented out as copy api should copy header amoutn as well in all the cases
5557     -- Bug 2027165 - Added user_estimated amount as this is new column
5558     l_chrv_rec.user_estimated_amount	:= NULL;
5559 
5560 /*  The following logic of setting the context has been moved in the top for the requirement of Euro Conversion- Bug 2155930 */
5561 /*
5562     -- Sets the context.
5563     IF p_override_org = 'N' THEN
5564       okc_context.set_okc_org_context;
5565     ELSE
5566       okc_context.set_okc_org_context(l_chrv_rec.authoring_org_id,l_chrv_rec.inv_organization_id);
5567     END IF;
5568 
5569     IF l_chrv_rec.authoring_org_id <> okc_context.get_okc_org_id OR
5570        l_chrv_rec.inv_organization_id <> okc_context.get_okc_organization_id THEN
5571       OKC_API.SET_MESSAGE('OKC','OKC_INCOMPATIBLE_ORG');
5572       x_return_status := OKC_API.G_RET_STS_ERROR;
5573       RAISE G_EXCEPTION_HALT_VALIDATION;
5574     END IF;
5575 */
5576 
5577     OKC_CONTRACT_PUB.create_contract_header(
5578 	   p_api_version	     => p_api_version,
5579            p_init_msg_list	=> p_init_msg_list,
5580            x_return_status 	=> l_return_status,
5581            x_msg_count     	=> x_msg_count,
5582            x_msg_data      	=> x_msg_data,
5583            p_chrv_rec		=> l_chrv_rec,
5584            x_chrv_rec		=> x_chrv_rec);
5585 
5586     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5587         x_return_status := l_return_status;
5588         RAISE G_EXCEPTION_HALT_VALIDATION;
5589     END IF;
5590 
5591     g_chrv_rec := x_chrv_rec;
5592     x_chr_id := x_chrv_rec.id; -- passes the new generated id to the caller.
5593 
5594   -- skekkar  bug 2794905 (base bug 2774888) set the context here for the new contract
5595      OKC_CONTEXT.SET_OKC_ORG_CONTEXT(p_chr_id => x_chrv_rec.id);
5596   -- skekkar
5597 
5598     IF p_renew_ref_yn = 'Y' THEN
5599        --if the copy is for RENEW, create operation instance and operation lines
5600        Create_Renewal_Header_Link(
5601 	      p_api_version	     => p_api_version,
5602            p_init_msg_list	=> p_init_msg_list,
5603            x_return_status 	=> l_return_status,
5604            x_msg_count     	=> x_msg_count,
5605            x_msg_data      	=> x_msg_data,
5606            p_chrv_rec		=> l_chrv_rec,
5607            p_to_chr_id		=> x_chr_id);
5608 
5609        IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5610            x_return_status := l_return_status;
5611            RAISE G_EXCEPTION_HALT_VALIDATION;
5612        END IF;
5613 
5614        OPEN history_csr(x_chr_id);
5615        FETCH history_csr INTO l_history_id;
5616        CLOSE history_csr;
5617 
5618        If l_history_id IS NOT NULL Then
5619           UPDATE okc_k_history_b
5620           SET reason_code = 'RENEW'
5621           WHERE id = l_history_id;
5622        End If;
5623 
5624     END IF;
5625 
5626     -- copy associated attachments
5627     l_from_version := Get_Major_Version(p_from_chr_id);
5628 
5629     IF (l_from_version = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5630         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5631         RAISE G_EXCEPTION_HALT_VALIDATION;
5632     END IF;
5633 
5634     -- set attachement session variables
5635     -- before calling fnd_attachment_util_pkg.get_atchmt_exists
5636     Set_Attach_Session_Vars(p_from_chr_id);
5637 
5638     --Bug 3326337 Removed the hard coding for entity names
5639     /* Commentedout for 11510 GSI Issue on copying attachments
5640     If(FND_ATTACHMENT_UTIL_PKG.function_name = 'OKSAUDET') THEN
5641      l_entity_name := 'OKC_K_HEADERS_V';
5642      l_from_entity_name := 'OKC_K_HEADERS_V';
5643      l_to_entity_name := 'OKC_K_HEADERS_V';
5644     ELSE */
5645      l_entity_name := 'OKC_K_HEADERS_B';
5646      l_from_entity_name := 'OKC_K_HEADERS_B';
5647      l_to_entity_name := 'OKC_K_HEADERS_B';
5648     --End If;
5649 
5650     If (fnd_attachment_util_pkg.get_atchmt_exists (
5651 			  l_entity_name => l_entity_name,
5652 			  l_pkey1 => p_from_chr_id,
5653 			  l_pkey2 => l_from_version) = 'Y')
5654 
5655 			  -- The following line to be added to the code once
5656 			  -- bug 1553916 completes
5657 			  -- ,l_pkey2 => l_from_version) = 'Y')
5658 			  -- also below remove the comments
5659 			  -- in fnd_attached_documents2_pkg.copy_attachments call
5660     Then
5661         fnd_attached_documents2_pkg.copy_attachments(
5662                           x_from_entity_name => l_from_entity_name,
5663                           x_from_pk1_value   => p_from_chr_id,
5664                           x_from_pk2_value   => l_from_version,
5665                           x_to_entity_name => l_to_entity_name,
5666                           x_to_pk1_value   => x_chr_id,
5667                           x_to_pk2_value   => '0'
5668 					 );
5669     End if;
5670 
5671     copy_accesses(
5672 	   p_api_version	=> p_api_version,
5673            p_init_msg_list	=> p_init_msg_list,
5674            x_return_status 	=> l_return_status,
5675            x_msg_count     	=> x_msg_count,
5676            x_msg_data      	=> x_msg_data,
5677            p_from_chr_id	=> p_from_chr_id,
5678 	   p_to_chr_id 		=> x_chrv_rec.id);
5679 
5680     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5681       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5682         x_return_status := l_return_status;
5683         RAISE G_EXCEPTION_HALT_VALIDATION;
5684       ELSE
5685         x_return_status := l_return_status;
5686       END IF;
5687     END IF;
5688 
5689     copy_processes(
5690 	   p_api_version	=> p_api_version,
5691            p_init_msg_list	=> p_init_msg_list,
5692            x_return_status 	=> l_return_status,
5693            x_msg_count     	=> x_msg_count,
5694            x_msg_data      	=> x_msg_data,
5695            p_from_chr_id	=> p_from_chr_id,
5696 	   p_to_chr_id 		=> x_chrv_rec.id);
5697 
5698     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5699       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5700         x_return_status := l_return_status;
5701         RAISE G_EXCEPTION_HALT_VALIDATION;
5702       ELSE
5703         x_return_status := l_return_status;
5704       END IF;
5705     END IF;
5706 
5707     copy_grpings(
5708 	   p_api_version	=> p_api_version,
5709            p_init_msg_list	=> p_init_msg_list,
5710            x_return_status 	=> l_return_status,
5711            x_msg_count     	=> x_msg_count,
5712            x_msg_data      	=> x_msg_data,
5713            p_from_chr_id	=> p_from_chr_id,
5714 	   p_to_chr_id 		=> x_chrv_rec.id);
5715 
5716     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5717       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5718         x_return_status := l_return_status;
5719         RAISE G_EXCEPTION_HALT_VALIDATION;
5720       ELSE
5721         x_return_status := l_return_status;
5722       END IF;
5723     END IF;
5724 
5725     /*************************************
5726         This used to make a copy of goverances only at the header level
5727         We have replaced it by code that copies at both header and line level
5728 
5729         also, we no longer do it conditionally for renewal contracts
5730 
5731 
5732     IF (p_renew_ref_yn = 'Y') THEN
5733     copy_governances(
5734             p_api_version        => p_api_version,
5735 	    p_init_msg_list      => p_init_msg_list,
5736 	    x_return_status      => l_return_status,
5737 	    x_msg_count          => x_msg_count,
5738 	    x_msg_data           => x_msg_data,
5739 	    p_from_chr_id        => p_from_chr_id,
5740 	    p_to_chr_id          => x_chrv_rec.id);
5741 
5742 
5743 
5744     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5745       IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5746         x_return_status := l_return_status;
5747         RAISE G_EXCEPTION_HALT_VALIDATION;
5748       ELSE
5749         x_return_status := l_return_status;
5750       END IF;
5751     END IF;
5752 
5753     END IF;
5754     ****************************************/
5755 
5756 /****** For Bug#3052910 ***********************************************************
5757 --Following condn is added .IF (p_renew_ref_yn = 'Y') THEN before the loop.
5758 --The condition " IF (p_renew_ref_yn = 'Y') THEN " is removed for price hold change
5759 --Price hold changes are obsoleted hence reverting the changes.
5760 ******* For Bug#3052910 ***********************************************************/
5761 
5762    IF (p_renew_ref_yn = 'Y') THEN --Added for Bug#3052910
5763 
5764     FOR l_c_governances IN c_governances LOOP
5765 
5766       copy_governances (
5767 	   p_api_version	=> p_api_version,
5768            p_init_msg_list	=> p_init_msg_list,
5769            x_return_status 	=> l_return_status,
5770            x_msg_count     	=> x_msg_count,
5771            x_msg_data      	=> x_msg_data,
5772            p_gvev_id            => l_c_governances.id,
5773            p_cle_id		=> NULL,
5774            p_chr_id		=> x_chrv_rec.id,
5775            x_gvev_id		=> l_gvev_id);
5776 
5777 
5778       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5779          IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5780              x_return_status := l_return_status;
5781              RAISE G_EXCEPTION_HALT_VALIDATION;
5782          ELSE
5783 	     x_return_status := l_return_status;
5784          END IF;
5785       END IF;
5786     END LOOP;
5787 
5788   END IF; -- IF (p_renew_ref_yn = 'Y') THEN
5789 
5790 
5791     FOR l_c_pavv IN c_pavv LOOP
5792       copy_price_att_values (
5793 	   p_api_version	=> p_api_version,
5794            p_init_msg_list	=> p_init_msg_list,
5795            x_return_status 	=> l_return_status,
5796            x_msg_count     	=> x_msg_count,
5797            x_msg_data      	=> x_msg_data,
5798            p_pav_id		=> l_c_pavv.id,
5799            p_cle_id		=> NULL,
5800            p_chr_id		=> x_chrv_rec.id,
5801            x_pav_id		=> l_pav_id);
5802 
5803       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5804         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5805           x_return_status := l_return_status;
5806           RAISE G_EXCEPTION_HALT_VALIDATION;
5807         ELSE
5808 	     x_return_status := l_return_status;
5809         END IF;
5810       END IF;
5811     END LOOP;
5812 
5813     FOR l_c_patv IN c_patv LOOP
5814       copy_price_adjustments (
5815            p_api_version        => p_api_version,
5816            p_init_msg_list      => p_init_msg_list,
5817            x_return_status      => l_return_status,
5818            x_msg_count          => x_msg_count,
5819            x_msg_data           => x_msg_data,
5820            p_pat_id             => l_c_patv.id,
5821            p_cle_id             => NULL,
5822            p_chr_id             => x_chrv_rec.id,
5823            x_pat_id             => l_pat_id);
5824 
5825       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5826         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5827           x_return_status := l_return_status;
5828           RAISE G_EXCEPTION_HALT_VALIDATION;
5829         ELSE
5830              x_return_status := l_return_status;
5831         END IF;
5832       END IF;
5833      copy_price_adj_attribs (
5834            p_api_version        => p_api_version,
5835            p_init_msg_list      => p_init_msg_list,
5836            x_return_status      => l_return_status,
5837            x_msg_count          => x_msg_count,
5838            x_msg_data           => x_msg_data,
5839            p_paa_id             => NULL,
5840            p_pat_id             => l_c_patv.id);
5841 
5842     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5843         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5844           x_return_status := l_return_status;
5845           RAISE G_EXCEPTION_HALT_VALIDATION;
5846         ELSE
5847              x_return_status := l_return_status;
5848         END IF;
5849       END IF;
5850 
5851   END LOOP;
5852 
5853 
5854     FOR l_c_pacv IN c_pacv LOOP
5855       copy_price_adj_assocs (
5856            p_api_version        => p_api_version,
5857            p_init_msg_list      => p_init_msg_list,
5858            x_return_status      => l_return_status,
5859            x_msg_count          => x_msg_count,
5860            x_msg_data           => x_msg_data,
5861            p_pac_id             => l_c_pacv.id,
5862            p_cle_id             => NULL,
5863            p_pat_id             => l_pat_id,
5864            x_pac_id             => l_pac_id);
5865 
5866       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5867         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5868           x_return_status := l_return_status;
5869           RAISE G_EXCEPTION_HALT_VALIDATION;
5870         ELSE
5871              x_return_status := l_return_status;
5872         END IF;
5873       END IF;
5874     END LOOP;
5875 
5876   /* FOR l_c_paav IN c_paav LOOP
5877       copy_price_adj_attribs (
5878            p_api_version        => p_api_version,
5879            p_init_msg_list      => p_init_msg_list,
5880            x_return_status      => l_return_status,
5881            x_msg_count          => x_msg_count,
5882            x_msg_data           => x_msg_data,
5883            p_paa_id             => l_c_paav.id,
5884            p_pat_id             => x_patv_rec.id,
5885       );
5886 
5887       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5888         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5889           x_return_status := l_return_status;
5890           RAISE G_EXCEPTION_HALT_VALIDATION;
5891         ELSE
5892              x_return_status := l_return_status;
5893         END IF;
5894       END IF;
5895     END LOOP;
5896    */
5897 
5898     FOR l_c_scrv IN c_scrv LOOP
5899 
5900       copy_sales_credits (
5901 	   p_api_version	=> p_api_version,
5902            p_init_msg_list	=> p_init_msg_list,
5903            x_return_status 	=> l_return_status,
5904            x_msg_count     	=> x_msg_count,
5905            x_msg_data      	=> x_msg_data,
5906            p_scrv_id            => l_c_scrv.id,
5907            p_cle_id		=> NULL,
5908            p_chr_id		=> x_chrv_rec.id,
5909            x_scrv_id		=> l_scrv_id);
5910 
5911       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5912         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5913           x_return_status := l_return_status;
5914           RAISE G_EXCEPTION_HALT_VALIDATION;
5915         ELSE
5916 	     x_return_status := l_return_status;
5917         END IF;
5918       END IF;
5919     END LOOP;
5920 
5921 
5922 
5923 
5924   EXCEPTION
5925     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5926       NULL;
5927     WHEN OTHERS THEN
5928       -- store SQL error message on message stack for caller
5929       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
5930       -- notify caller of an UNEXPECTED error
5931       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5932 
5933   END copy_contract_header;
5934 
5935 ----------------------------------------------------------------------------
5936 -- This procedure is used to copy the sections to which no articles are
5937 -- attached. In other words this is used to copy all the sections which
5938 -- were not copied in copy_sections procedure
5939 ----------------------------------------------------------------------------
5940   PROCEDURE copy_other_sections(p_chr_id IN NUMBER, l_to_chr_id IN NUMBER) IS
5941 
5942     l_return_status	  	  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5943     l_section_id	  	  NUMBER;
5944     l_scn_id			  NUMBER;
5945     l_level		  	  NUMBER;
5946     l_api_version          CONSTANT  NUMBER    := 1.0;
5947     l_init_msg_list   	  CONSTANT  VARCHAR2(1) := 'T';
5948     l_msg_count            NUMBER;
5949     l_msg_data             VARCHAR2(2000);
5950 
5951 -- Cursor to get all the top sections
5952     CURSOR get_main_sections(p_chr_id IN NUMBER) IS
5953     select id
5954     from okc_sections_b
5955     where chr_id = p_chr_id
5956 	 and scn_id IS NULL;
5957 -- Cursor to get all the sub sections in order
5958     CURSOR get_all_sections(p_id IN NUMBER) IS
5959     select id, level
5960     from okc_sections_b
5961     CONNECT BY PRIOR id = scn_id
5962     START WITH id = p_id;
5963   Begin
5964     OPEN get_main_sections(p_chr_id);
5965     LOOP
5966       FETCH get_main_sections INTO l_section_id;
5967       EXIT when get_main_sections%NOTFOUND;
5968 
5969 	 OPEN get_all_sections(l_section_id);
5970         LOOP
5971 	    FETCH get_all_sections INTO l_scn_id, l_level;
5972 	    EXIT when get_all_sections%NOTFOUND;
5973          copy_sections (
5974 	      p_api_version		=> l_api_version,
5975            p_init_msg_list	=> l_init_msg_list,
5976            x_return_status 	=> l_return_status,
5977            x_msg_count     	=> l_msg_count,
5978            x_msg_data      	=> l_msg_data,
5979            p_scc_id		     => NULL,
5980            p_to_cat_id		=> NULL,
5981            p_to_chr_id		=> l_to_chr_id,
5982            p_scn_id			=> l_scn_id);
5983 
5984          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5985 	      --x_return_status := l_return_status;
5986             RAISE G_EXCEPTION_HALT_VALIDATION;
5987          END IF;
5988         END LOOP;
5989         CLOSE get_all_sections;
5990      END LOOP;
5991      CLOSE get_main_sections;
5992   EXCEPTION
5993     WHEN G_EXCEPTION_HALT_VALIDATION THEN
5994       NULL;
5995     WHEN OTHERS THEN
5996       -- store SQL error message on message stack for caller
5997       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
5998       -- notify caller of an UNEXPECTED error
5999       --x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6000   END copy_other_sections;
6001 
6002   ----------------------------------------------------------------------------
6003   --Proceudre copy_contract. Copies the contract header and all its components.
6004   ----------------------------------------------------------------------------
6005   PROCEDURE copy_contract(
6006     p_api_version                  IN NUMBER,
6007     p_init_msg_list                IN VARCHAR2 ,
6008     x_return_status                OUT NOCOPY VARCHAR2,
6009     x_msg_count                    OUT NOCOPY NUMBER,
6010     x_msg_data                     OUT NOCOPY VARCHAR2,
6011     p_commit			          IN VARCHAR2 ,
6012     p_chr_id                  	   IN NUMBER,
6013     p_contract_number		   IN VARCHAR2,
6014     p_contract_number_modifier     IN VARCHAR2,
6015     p_to_template_yn			   IN VARCHAR2,
6016     P_renew_ref_yn                 IN VARCHAR2,
6017     p_copy_lines_yn                IN VARCHAR2,
6018     p_override_org                 IN VARCHAR2 ,
6019     p_copy_from_history_yn              IN VARCHAR2 ,
6020     p_from_version_number          IN NUMBER ,
6021     p_copy_latest_articles         IN VARCHAR2 ,
6022     p_calling_mode                 IN VARCHAR2 ,
6023     x_chr_id                       OUT NOCOPY NUMBER) IS
6024 
6025     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6026     l_old_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6027     l_chr_id			NUMBER;
6028     l_cle_id_out		NUMBER;
6029     l_rgp_id			NUMBER;
6030     l_cat_id			NUMBER;
6031     l_cpl_id			NUMBER;
6032     l_cnh_id			NUMBER;
6033     l_result			BOOLEAN;
6034     l_category          VARCHAR2(200); --added for bug 3672759
6035 
6036 -- Cursor created to get the PDF_ID for Class 'SERVICE' - Bug 2151523(1917514)
6037     CURSOR c_pdf IS
6038     SELECT pdf_id
6039     FROM okc_class_operations
6040     WHERE opn_code = 'COPY'
6041     AND   cls_code = 'SERVICE';
6042 
6043     l_pdf_id  NUMBER;
6044     l_cle_id  NUMBER := OKC_API.G_MISS_NUM;
6045     --l_chr_id  NUMBER;
6046     l_string VARCHAR2(32000);
6047     proc_string VARCHAR2(32000);
6048 -- Cursor created to get the PDF_ID for Class 'SERVICE' - Bug 2151523(1917514)
6049 
6050 -- Added for Bug 3672759
6051 -- cursor to get the contract category
6052 
6053     CURSOR l_Service_Contract_csr IS
6054     SELECT osb.cls_code
6055     FROM  okc_subclasses_b osb,okc_k_headers_b okb
6056     WHERE okb.id = p_chr_id
6057     AND   okb.scs_code = osb.code ;
6058 
6059     CURSOR c_lines IS
6060     SELECT cle.id,lse.lty_code
6061     FROM   okc_k_lines_b cle,
6062 	   okc_line_styles_b lse
6063     WHERE chr_id = p_chr_id
6064         AND   cle.lse_id= lse.id
6065         AND   g_copy_history_yn = 'N'
6066     UNION ALL
6067     SELECT cle.id,lse.lty_code
6068     FROM   okc_k_lines_bh cle,
6069 	   okc_line_styles_b lse
6070     WHERE chr_id = p_chr_id
6071         AND  cle.lse_id= lse.id
6072         AND  major_version = G_FROM_VERSION_NUMBER
6073         AND  G_COPY_HISTORY_YN = 'Y';
6074 --------------------------------------------------
6075     CURSOR c_rgpv IS
6076     SELECT id
6077     FROM okc_rule_groups_b
6078     WHERE dnz_chr_id = p_chr_id
6079         AND  cle_id is null
6080         AND  g_copy_history_yn = 'N'
6081     UNION ALL
6082     SELECT id
6083     FROM okc_rule_groups_bH
6084     WHERE dnz_chr_id = p_chr_id and cle_id is null
6085        AND   major_version = G_FROM_VERSION_NUMBER
6086        AND   G_COPY_HISTORY_YN = 'Y';
6087 ---------------------------------------------------
6088 /* 11510
6089     CURSOR c_catv IS
6090     SELECT id
6091     FROM okc_k_articles_b
6092     WHERE dnz_chr_id = p_chr_id
6093        AND cle_id is null
6094        AND g_copy_history_yn = 'N'
6095     UNION ALL
6096     SELECT id
6097     FROM okc_k_articles_bH
6098     WHERE dnz_chr_id = p_chr_id and cle_id is null
6099        AND   major_version = G_FROM_VERSION_NUMBER
6100        AND   G_COPY_HISTORY_YN = 'Y';
6101 */
6102 
6103     --11510
6104     l_source_doc_type VARCHAR2(60);
6105     l_source_doc_ID   NUMBER;
6106     l_target_doc_type VARCHAR2(60);
6107     l_target_doc_id   NUMBER;
6108     l_keep_version VARCHAR2(1);
6109     l_eff_date DATE;
6110 
6111 
6112     -- 11510 get chr start date for effective date for copy_doc
6113     CURSOR c_art_eff_date (p_doc_type VARCHAR2,p_doc_id NUMBER) IS
6114     SELECT article_effective_date
6115      FROM okc_template_usages_v
6116      WHERE document_type=p_doc_type AND document_id=p_doc_id;
6117 ---------------------------------------------------
6118     CURSOR c_cplv IS
6119     SELECT id
6120     FROM okc_k_party_roles_b
6121     WHERE dnz_chr_id = p_chr_id
6122           and cle_id is NULL
6123           AND  g_copy_history_yn = 'N'
6124     UNION ALL
6125     SELECT id
6126     FROM okc_k_party_roles_bH
6127     WHERE dnz_chr_id = p_chr_id and cle_id is NULL
6128           AND   major_version = G_FROM_VERSION_NUMBER
6129           AND   G_COPY_HISTORY_YN = 'Y';
6130 ---------------------------------------------------
6131     CURSOR c_cnhv IS
6132     SELECT id
6133     FROM okc_condition_headers_b
6134     WHERE dnz_chr_id = p_chr_id
6135     AND   g_copy_history_yn = 'N'
6136     UNION ALL
6137     SELECT id
6138     FROM okc_condition_headers_bH
6139     WHERE dnz_chr_id = p_chr_id
6140           AND   major_version = G_FROM_VERSION_NUMBER
6141           AND   G_COPY_HISTORY_YN = 'Y';
6142 ---------------------------------------------------
6143   BEGIN
6144     IF (l_debug = 'Y') THEN
6145      OKC_DEBUG.Set_Indentation('Copy_contract');
6146      OKC_DEBUG.log('1000 : Entering Copy_contract', 2);
6147     END IF;
6148     G_COPY_HISTORY_YN      := NVL(upper(p_copy_from_history_yn),'N');
6149     IF G_COPY_HISTORY_YN = 'Y'  THEN
6150        IF  p_from_version_number    IS NOT NULL then
6151            IF (l_debug = 'Y') THEN
6152               OKC_DEBUG.log('1010 : G_COPY_HISTORY_YN = Y', 2);
6153            END IF;
6154            G_FROM_VERSION_NUMBER  := p_from_version_number;
6155        ELSE
6156 
6157            IF (l_debug = 'Y') THEN
6158               OKC_DEBUG.log('1020 : G_COPY_HISTORY_YN = N', 2);
6159            END IF;
6160       	   OKC_API.SET_MESSAGE(G_APP_NAME,'OKC_VERSION_NUMBER_MISSING');
6161            X_return_status := OKC_API.G_RET_STS_ERROR;
6162 	         raise G_EXCEPTION_HALT_VALIDATION;
6163        END IF;
6164      ELSE
6165        G_FROM_VERSION_NUMBER  := NULL;
6166     END IF;
6167 
6168 ----------------------------------------------------
6169     l_result := OKC_COPY_CONTRACT_PUB.IS_COPY_ALLOWED(p_chr_id, NULL);
6170     IF (l_debug = 'Y') THEN
6171        OKC_DEBUG.log('1301 : After OKC_COPY_CONTRACT_PUB ' || X_return_status );
6172     END IF;
6173     If NOT l_result Then
6174 
6175          IF (l_debug = 'Y') THEN
6176             OKC_DEBUG.log('1040 : Inside If NOT l_result Then', 2);
6177          END IF;
6178 	 -- notify caller of an UNEXPECTED error
6179 	 x_return_status := OKC_API.G_RET_STS_ERROR;
6180 	 raise G_EXCEPTION_HALT_VALIDATION;
6181     End If;
6182 
6183     -- Intitialize globals.
6184     IF g_events.COUNT > 0 THEN
6185        g_events.DELETE;
6186     END IF;
6187 
6188     IF g_ruls.COUNT > 0 THEN
6189        g_ruls.DELETE;
6190     END IF;
6191 
6192     IF g_sections.COUNT > 0 THEN
6193        g_sections.DELETE;
6194     END IF;
6195 
6196    IF g_price_adjustments.COUNT > 0 THEN
6197        g_price_adjustments.DELETE;
6198     END IF;
6199 
6200     IF g_timevalues.COUNT > 0 THEN
6201        g_timevalues.DELETE;
6202     END IF;
6203 
6204     IF g_party.COUNT > 0 THEN
6205        g_party.DELETE;
6206     END IF;
6207 
6208     IF g_op_lines.COUNT > 0 THEN
6209 	  g_op_lines.DELETE;
6210     END IF;
6211 
6212     x_return_status := l_return_status;
6213 
6214 IF (l_debug = 'Y') THEN
6215    OKC_DEBUG.log('1050 : Before Procedure : copy_contract_header ' ,1);
6216 END IF;
6217     copy_contract_header(
6218 	      p_api_version		     => p_api_version,
6219            p_init_msg_list		=> p_init_msg_list,
6220            x_return_status 		=> l_return_status,
6221            x_msg_count     		=> x_msg_count,
6222            x_msg_data      		=> x_msg_data,
6223            p_from_chr_id	        => p_chr_id,
6224            p_contract_number		=> p_contract_number,
6225            p_contract_number_modifier	=> p_contract_number_modifier,
6226            p_scs_code              => NULL,
6227            p_intent                => NULL,
6228            p_prospect              => NULL,
6229            p_called_from           => 'M', -- called from main copy contract.
6230 	   p_to_template_yn        => p_to_template_yn,
6231 	   p_renew_ref_yn          => p_renew_ref_yn,
6232 	   p_override_org          => p_override_org,
6233 	   p_calling_mode          => p_calling_mode,
6234            x_chr_id	           => l_chr_id);
6235 
6236                l_oks_copy := 'N';      -- Bugfix 2151523(1917514)
6237 IF (l_debug = 'Y') THEN
6238    OKC_DEBUG.log('1003 : After Procedure : Copy_contract_header ', 1);
6239 END IF;
6240     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6241         x_return_status := l_return_status;
6242         RAISE G_EXCEPTION_HALT_VALIDATION;
6243     END IF;
6244 
6245     x_chr_id := l_chr_id; --the new contract header id is passed out.
6246 
6247     FOR l_c_cnhv IN c_cnhv LOOP -- events procedure needs to be called before rules.
6248       l_old_return_status := l_return_status;
6249 
6250 IF (l_debug = 'Y') THEN
6251    OKC_DEBUG.log('Before Procedure : copy_events ' || l_return_status);
6252 END IF;
6253       copy_events(
6254 	   p_api_version	=> p_api_version,
6255            p_init_msg_list	=> p_init_msg_list,
6256            x_return_status 	=> l_return_status,
6257            x_msg_count     	=> x_msg_count,
6258            x_msg_data      	=> x_msg_data,
6259            p_cnh_id		=> l_c_cnhv.id,
6260            p_chr_id		=> l_chr_id, -- the new generated contract header id
6261            p_to_template_yn   => p_to_template_yn,
6262            x_cnh_id		=> l_cnh_id);
6263 
6264 IF (l_debug = 'Y') THEN
6265    OKC_DEBUG.log(' After Procedure : copy_events ' || l_return_status);
6266 END IF;
6267         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6268           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6269             x_return_status := l_return_status;
6270             RAISE G_EXCEPTION_HALT_VALIDATION;
6271           ELSE
6272             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
6273               x_return_status := l_return_status;
6274             END IF;
6275           END IF;
6276         END IF;
6277     END LOOP;
6278 
6279     FOR l_c_cplv IN c_cplv LOOP
6280       l_old_return_status := l_return_status;
6281 
6282 IF (l_debug = 'Y') THEN
6283    OKC_DEBUG.log(' Before Procedure : copy_party_roles ' || l_return_status);
6284 END IF;
6285       copy_party_roles (
6286 	   p_api_version	=> p_api_version,
6287            p_init_msg_list	=> p_init_msg_list,
6288            x_return_status 	=> l_return_status,
6289            x_msg_count     	=> x_msg_count,
6290            x_msg_data      	=> x_msg_data,
6291            p_cpl_id		=> l_c_cplv.id,
6292            p_cle_id		=> NULL,
6293            p_chr_id		=> l_chr_id, -- the new generated contract header id
6294            p_rle_code           => NULL,
6295            x_cpl_id		=> l_cpl_id);
6296 
6297 IF (l_debug = 'Y') THEN
6298    OKC_DEBUG.log(' After Procedure : copy_party_roles ' || l_return_status);
6299 END IF;
6300         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6301           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6302             x_return_status := l_return_status;
6303             RAISE G_EXCEPTION_HALT_VALIDATION;
6304           ELSE
6305             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
6306               x_return_status := l_return_status;
6307             END IF;
6308           END IF;
6309         END IF;
6310 
6311       END LOOP;
6312 
6313     --
6314     -- Bug 3611000
6315     -- Rules may exist for pre-11.5.10 contracts - they should not be tried to copy in 11.5.10 onwards for service contracts
6316     --
6317     IF G_APPLICATION_ID <> 515 THEN
6318 
6319 		  FOR l_c_rgpv IN c_rgpv LOOP
6320 		    l_old_return_status := l_return_status;
6321 
6322 	       IF (l_debug = 'Y') THEN
6323 		     OKC_DEBUG.log(' Before Procedure : copy_rules ' || l_return_status);
6324 	       END IF;
6325 
6326 		    copy_rules (
6327 			 p_api_version	=> p_api_version,
6328 			    p_init_msg_list	=> p_init_msg_list,
6329 			    x_return_status 	=> l_return_status,
6330 			    x_msg_count     	=> x_msg_count,
6331 			    x_msg_data      	=> x_msg_data,
6332 			    p_rgp_id	      	=> l_c_rgpv.id,
6333 			    p_cle_id		=> NULL,
6334 			    p_chr_id	        => l_chr_id, -- the new generated contract header id
6335 			 p_to_template_yn     => p_to_template_yn,
6336 			    x_rgp_id		=> l_rgp_id);
6337 
6338 		    IF (l_debug = 'Y') THEN
6339 			  OKC_DEBUG.log(' After Procedure : copy_rules ' || l_return_status);
6340 		    END IF;
6341 			 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6342 			   IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6343 				x_return_status := l_return_status;
6344 				RAISE G_EXCEPTION_HALT_VALIDATION;
6345 			   ELSE
6346 				IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
6347 				  x_return_status := l_return_status;
6348 				END IF;
6349 			   END IF;
6350 			 END IF;
6351 		  END LOOP;
6352 
6353     END IF; -- G_APPLICATION_ID <> 515
6354 
6355     /* 11510
6356 -----Bug.No-1754245
6357 IF (l_debug = 'Y') THEN
6358    OKC_DEBUG.log('p_renew_ref_yn='||p_renew_ref_yn||' p_copy_latest_articles='||p_copy_latest_articles,2);
6359 END IF;
6360 
6361      IF     p_renew_ref_yn = 'Y'  OR
6362              p_copy_latest_articles = 'N' THEN
6363         FOR l_c_catv IN c_catv LOOP
6364 ---Current(may be an old verssion) release of article is copied here.
6365 
6366 IF (l_debug = 'Y') THEN
6367    OKC_DEBUG.log(' Before Procedure : copy_articles ' || l_return_status);
6368 END IF;
6369 
6370              copy_articles (
6371 	     p_api_version	=> p_api_version,
6372              p_init_msg_list	=> p_init_msg_list,
6373              x_return_status 	=> l_return_status,
6374              x_msg_count     	=> x_msg_count,
6375              x_msg_data      	=> x_msg_data,
6376              p_cat_id		=> l_c_catv.id,
6377              p_cle_id		=> NULL,
6378              p_chr_id		=> l_chr_id, -- the new generated contract header id
6379              x_cat_id		=> l_cat_id);
6380 
6381 IF (l_debug = 'Y') THEN
6382    OKC_DEBUG.log(' After Procedure : copy_articles ' || l_return_status);
6383 END IF;
6384              IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6385                IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6386                  x_return_status := l_return_status;
6387                  RAISE G_EXCEPTION_HALT_VALIDATION;
6388                ELSE
6389                  x_return_status := l_return_status;
6390                END IF;
6391              END IF;
6392         END LOOP;
6393      ELSE  ---> Copy Latest release of article.---
6394         FOR l_c_catv IN c_catv LOOP
6395 IF (l_debug = 'Y') THEN
6396    OKC_DEBUG.log('Before Procedure : copy_latest_articles : ' || l_return_status);
6397 END IF;
6398 
6399            copy_latest_articles(
6400              p_api_version                  => p_api_version,
6401              p_init_msg_list                => p_init_msg_list,
6402              x_return_status                => l_return_status,
6403              x_msg_count                    => x_msg_count,
6404              x_msg_data                     => x_msg_data,
6405              p_cat_id                       => l_c_catv.id,
6406              p_cle_id                       => NULL,
6407              p_chr_id                       => l_chr_id,
6408              x_cat_id  		            => l_cat_id);
6409 
6410 IF (l_debug = 'Y') THEN
6411    OKC_DEBUG.log(' After Procedure : copy_latest_articles : ' || l_return_status);
6412 END IF;
6413              IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6414                 IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6415                    x_return_status := l_return_status;
6416                    RAISE G_EXCEPTION_HALT_VALIDATION;
6417                 ELSE
6418                    x_return_status := l_return_status;
6419                 END IF;
6420              END IF;
6421          END LOOP;
6422      END IF;
6423 */
6424 -----Bug.No-1754245
6425 /********************************************
6426     FOR l_c_catv IN c_catv LOOP
6427       copy_articles (
6428 	   p_api_version	=> p_api_version,
6429            p_init_msg_list	=> p_init_msg_list,
6430            x_return_status 	=> l_return_status,
6431            x_msg_count     	=> x_msg_count,
6432            x_msg_data      	=> x_msg_data,
6433            p_cat_id		=> l_c_catv.id,
6434            p_cle_id		=> NULL,
6435            p_chr_id		=> l_chr_id, -- the new generated contract header id
6436            x_cat_id		=> l_cat_id);
6437 
6438       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6439         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6440           x_return_status := l_return_status;
6441           RAISE G_EXCEPTION_HALT_VALIDATION;
6442         ELSE
6443           x_return_status := l_return_status;
6444         END IF;
6445       END IF;
6446     END LOOP;
6447 **************************************/
6448     -- Call to the procedure to copy all other remaining sections
6449 /* 11510    copy_other_sections(p_chr_id, l_chr_id);
6450 IF (l_debug = 'Y') THEN
6451    OKC_DEBUG.log(' After Procedure : copy_other_sections ' || l_return_status);
6452 END IF;
6453 */
6454 
6455     -- new 11510 code
6456     IF p_renew_ref_yn = 'Y' OR p_copy_latest_articles = 'N' THEN
6457       l_keep_version := 'Y';
6458      ELSE
6459       l_keep_version := 'N';
6460     END IF;
6461      OKC_TERMS_UTIL_GRP.Get_Contract_Document_Type_ID(
6462         p_api_version   => p_api_version,
6463         x_return_status => l_return_status,
6464         x_msg_data      => x_msg_data,
6465         x_msg_count     => x_msg_count,
6466         p_chr_id        => p_chr_id,
6467         x_doc_id        => l_source_doc_id,
6468         x_doc_type      => l_source_doc_type
6469     );
6470 
6471 IF (l_debug = 'Y') THEN
6472    OKC_DEBUG.log(' After Procedure : Get_Contract_Document_Type for source chr_id ' || l_return_status);
6473 END IF;
6474         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6475           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6476             x_return_status := l_return_status;
6477             RAISE G_EXCEPTION_HALT_VALIDATION;
6478           ELSE
6479             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
6480               x_return_status := l_return_status;
6481             END IF;
6482           END IF;
6483         END IF;
6484      OKC_TERMS_UTIL_GRP.Get_Contract_Document_Type_ID(
6485         p_api_version   => p_api_version,
6486         x_return_status => l_return_status,
6487         x_msg_data      => x_msg_data,
6488         x_msg_count     => x_msg_count,
6489         p_chr_id        => x_chr_id,
6490         x_doc_id        => l_target_doc_id,
6491         x_doc_type      => l_target_doc_type);
6492 
6493 IF (l_debug = 'Y') THEN
6494    OKC_DEBUG.log(' After Procedure : Get_Contract_Document_Type for target chr_id ' || l_return_status);
6495 END IF;
6496         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6497           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6498             x_return_status := l_return_status;
6499             RAISE G_EXCEPTION_HALT_VALIDATION;
6500           ELSE
6501             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
6502               x_return_status := l_return_status;
6503             END IF;
6504           END IF;
6505         END IF;
6506     OPEN c_art_eff_date(l_source_doc_type, l_source_doc_id);
6507     FETCH c_art_eff_date INTO l_eff_date;
6508     CLOSE c_art_eff_date;
6509 
6510 
6511     IF G_COPY_HISTORY_YN = 'Y' THEN
6512       OKC_TERMS_COPY_GRP.copy_archived_doc(
6513         p_api_version	     => p_api_version,
6514         x_return_status 	     => l_return_status,
6515         x_msg_count     	     => x_msg_count,
6516         x_msg_data      	     => x_msg_data,
6517 
6518         p_source_doc_type      => l_source_doc_type,
6519         p_source_doc_id        => l_source_doc_id,
6520         p_source_version_number=> G_FROM_VERSION_NUMBER,
6521         p_target_doc_type      => l_target_doc_type,
6522         p_target_doc_id        => l_target_doc_id,
6523 --        p_keep_version         => l_keep_version,
6524 --        p_article_effective_date => Nvl(l_eff_date,Sysdate),
6525         p_document_number      => p_contract_number,
6526         p_allow_duplicate_terms=>'Y'
6527       );
6528      ELSE
6529       OKC_TERMS_COPY_GRP.copy_doc(
6530         p_api_version	     => p_api_version,
6531         x_return_status 	     => l_return_status,
6532         x_msg_count     	     => x_msg_count,
6533         x_msg_data      	     => x_msg_data,
6534 
6535         p_source_doc_type      => l_source_doc_type,
6536         p_source_doc_id        => l_source_doc_id,
6537         p_target_doc_type      => l_target_doc_type,
6538         p_target_doc_id        => l_target_doc_id,
6539         p_keep_version         => l_keep_version,
6540         p_article_effective_date => Nvl(l_eff_date,Sysdate),
6541         p_document_number      => p_contract_number,
6542         p_allow_duplicate_terms=>'Y'
6543       );
6544     END IF;
6545 IF (l_debug = 'Y') THEN
6546    OKC_DEBUG.log(' After Procedure : OKC_TERMS_COPY_GRP.copy_doc ' || l_return_status);
6547 END IF;
6548         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6549           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6550             x_return_status := l_return_status;
6551             RAISE G_EXCEPTION_HALT_VALIDATION;
6552           ELSE
6553             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
6554               x_return_status := l_return_status;
6555             END IF;
6556           END IF;
6557         END IF;
6558 
6559     IF p_copy_lines_yn = 'Y' then
6560       -- the cursor below identifies the 1st level of lines and call the copy_contract_lines procedure
6561       -- which copies all the components of the identified lines (like articles,rules,sublines etc.
6562 
6563       FOR l_c_lines IN c_lines LOOP
6564         IF l_c_lines.lty_code <> 'WARRANTY' THEN -- AND l_c_lines.lty_code <> 'EXT_WARRANTY'  THEN
6565 
6566 IF (l_debug = 'Y') THEN
6567    OKC_DEBUG.log(' Before Procedure : copy_contract_lines ' || l_return_status);
6568 END IF;
6569           copy_contract_lines(
6570                p_api_version	     => p_api_version,
6571                p_init_msg_list	     => p_init_msg_list,
6572                x_return_status 	     => l_return_status,
6573                x_msg_count     	     => x_msg_count,
6574                x_msg_data      	     => x_msg_data,
6575                p_from_cle_id	     => l_c_lines.id,
6576      	       p_to_chr_id 		=> l_chr_id, --the new generated contract header id
6577                p_to_cle_id 		=> NULL, -- used only when a line is copied under a line.
6578        	       p_to_template_yn      => p_to_template_yn,
6579                p_copy_reference      =>'COPY',
6580                p_copy_line_party_yn  => 'Y',
6581                p_renew_ref_yn        => p_renew_ref_yn,
6582                p_generate_line_number => 'N', -- Bug 2489856
6583                x_cle_id		     => l_cle_id_out);
6584 	   -- DND    p_change_status       => 'Y');  --LLC
6585 
6586 IF (l_debug = 'Y') THEN
6587    OKC_DEBUG.log(' After Procedure : copy_contract_lines ' || l_return_status);
6588 END IF;
6589 
6590           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6591             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6592 -- bug 2667634 start  , changes commented for bug 2774888
6593 -- IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) OR (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6594 -- bug 2667634 end
6595               x_return_status := l_return_status;
6596               RAISE G_EXCEPTION_HALT_VALIDATION;
6597             ELSE
6598               x_return_status := l_return_status;
6599             END IF;
6600           END IF;
6601         END IF;
6602       END LOOP;
6603 
6604     END IF;
6605   -- Changes done for Bug 2054090
6606   -- PURPOSE  : Creates new configuration header and revision while
6607   --            copying a contract. The newly copied contract will point
6608   --            to the newly created config header and revisions.
6609   --            This procedure will handle all configured models in a contract.
6610   --             It updates contract lines for this config with new pointers
6611   --             for the columns config_top_model_line_id,
6612   --             config_header_id, config_revision_number.
6613 
6614   -- ---------------------------------------------------------------------------
6615 
6616      OKC_CFG_PUB.COPY_CONFIG(p_dnz_chr_id    => l_chr_id,
6617                              x_return_status => l_return_status);
6618 
6619          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6620            IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6621                x_return_status := l_return_status;
6622                RAISE G_EXCEPTION_HALT_VALIDATION;
6623            ELSE
6624                x_return_status := l_return_status;
6625            END IF;
6626          END IF;
6627   -- Changes done for Bug 2054090
6628 
6629   --Changes done for Bug 3672759 to execute the dynamic SQL only for service contracts
6630       OPEN l_Service_Contract_csr;
6631       FETCH l_Service_Contract_csr into l_category;
6632       CLOSE l_Service_Contract_csr;
6633 
6634   IF l_category = 'SERVICE' then
6635   -- Begin - Changes done for Bug 2151523(1917514)
6636       OPEN c_pdf;
6637       FETCH c_pdf INTO l_pdf_id;
6638       okc_create_plsql (p_pdf_id => l_pdf_id,
6639                     x_string => l_string) ;
6640       CLOSE c_pdf;
6641 
6642     IF l_string is NOT NULL THEN
6643        proc_string := 'begin '||l_string || ' (:b1,:b2,:b3); end ;';
6644        EXECUTE IMMEDIATE proc_string using l_chr_id,l_cle_id, out l_return_status;
6645        IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6646            x_return_status := l_return_status;
6647            RAISE G_EXCEPTION_HALT_VALIDATION;
6648        ELSE
6649            x_return_status := l_return_status;
6650            l_oks_copy := 'N';
6651            -- Setting l_oks_copy to 'N' so that this procedure should not be called from
6652            -- Copy Line if it is already called from Copy Header
6653        END IF;
6654     END IF;
6655   END IF;
6656   -- End - Changes done for Bug 2151523(1917514)
6657 
6658 
6659 /*    IF p_commit = 'T' THEN
6660        commit;
6661     END IF;
6662 */
6663 
6664   IF (l_debug = 'Y') THEN
6665      OKC_DEBUG.log('10000 : Exiting Copy_contract ', 2);
6666      OKC_DEBUG.ReSet_Indentation;
6667   END IF;
6668 
6669   EXCEPTION
6670     WHEN G_EXCEPTION_HALT_VALIDATION THEN
6671 	    IF (l_debug = 'Y') THEN
6672    	    OKC_DEBUG.ReSet_Indentation;
6673 	    END IF;
6674       NULL;
6675 
6676     WHEN OTHERS THEN
6677       -- store SQL error message on message stack for caller
6678       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
6679       -- notify caller of an UNEXPECTED error
6680       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6681 
6682       ---Initialisation is not to create contract from History Tables
6683       G_COPY_HISTORY_YN := 'N';
6684       IF (l_debug = 'Y') THEN
6685          OKC_DEBUG.ReSet_Indentation;
6686       END IF;
6687 
6688   END COPY_CONTRACT;
6689 
6690   ----------------------------------------------------------------------------
6691   --Function to populate the articles translation record to be copied.
6692   ----------------------------------------------------------------------------
6693     FUNCTION    get_atnv_rec(p_atn_id IN NUMBER,
6694 				x_atnv_rec OUT NOCOPY atnv_rec_type)
6695     				RETURN  VARCHAR2 IS
6696       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6697       l_no_data_found BOOLEAN := TRUE;
6698 
6699       CURSOR c_atnv_rec IS
6700       SELECT	ID,
6701 		CAT_ID,
6702 		CLE_ID,
6703 		RUL_ID,
6704 		DNZ_CHR_ID
6705 	FROM    OKC_ARTICLE_TRANS_V
6706 	WHERE 	ID = p_atn_id
6707           AND   g_copy_history_yn = 'N'
6708     UNION ALL
6709       SELECT	ID,
6710 		CAT_ID,
6711 		CLE_ID,
6712 		RUL_ID,
6713 		DNZ_CHR_ID
6714 	FROM    OKC_ARTICLE_TRANS_HV
6715 	WHERE 	ID = p_atn_id
6716           AND   major_version = G_FROM_VERSION_NUMBER
6717           AND   G_COPY_HISTORY_YN = 'Y';
6718     BEGIN
6719       OPEN c_atnv_rec;
6720       FETCH c_atnv_rec
6721       INTO	x_atnv_rec.ID,
6722 		x_atnv_rec.CAT_ID,
6723 		x_atnv_rec.CLE_ID,
6724 		x_atnv_rec.RUL_ID,
6725 		x_atnv_rec.DNZ_CHR_ID;
6726 
6727       l_no_data_found := c_atnv_rec%NOTFOUND;
6728       CLOSE c_atnv_rec;
6729       IF l_no_data_found THEN
6730         l_return_status := OKC_API.G_RET_STS_ERROR;
6731         return(l_return_status);
6732       ELSE
6733         return(l_return_status);
6734       END IF;
6735     EXCEPTION
6736       WHEN OTHERS THEN
6737         -- store SQL error message on message stack for caller
6738         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
6739         -- notify caller of an UNEXPECTED error
6740         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6741         return(l_return_status);
6742 
6743     END get_atnv_rec;
6744 
6745   ----------------------------------------------------------------------------
6746   --Function to populate the articles record to be copied.
6747   ----------------------------------------------------------------------------
6748     FUNCTION get_catv_rec(p_cat_id IN NUMBER,
6749 				x_catv_rec OUT NOCOPY catv_rec_type)
6750     				RETURN  VARCHAR2 IS
6751       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6752       l_no_data_found BOOLEAN := TRUE;
6753     BEGIN
6754       x_catv_rec := OKC_K_ARTICLE_PUB.Get_Rec(
6755          p_id => p_cat_id,
6756          p_major_version => G_FROM_VERSION_NUMBER,
6757          x_no_data_found => l_no_data_found
6758       );
6759       IF l_no_data_found THEN
6760         l_return_status := OKC_API.G_RET_STS_ERROR;
6761         return(l_return_status);
6762       ELSE
6763         return(l_return_status);
6764       END IF;
6765     EXCEPTION
6766       WHEN OTHERS THEN
6767         -- store SQL error message on message stack for caller
6768         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
6769         -- notify caller of an UNEXPECTED error
6770         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6771         return(l_return_status);
6772 
6773     END get_catv_rec;
6774 
6775   ----------------------------------------------------------------------------
6776   --Function to populate the contract items record to be copied.
6777   ----------------------------------------------------------------------------
6778     FUNCTION    get_cimv_rec(p_cim_id IN NUMBER,
6779 				x_cimv_rec OUT NOCOPY cimv_rec_type) RETURN  VARCHAR2 IS
6780       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6781       l_no_data_found BOOLEAN := TRUE;
6782 
6783       CURSOR c_cimv_rec IS
6784       SELECT	ID,
6785 		CLE_ID,
6786 		CHR_ID,
6787 		CLE_ID_FOR,
6788 		DNZ_CHR_ID,
6789 		OBJECT1_ID1,
6790 		OBJECT1_ID2,
6791 		JTOT_OBJECT1_CODE,
6792 		UOM_CODE,
6793 		EXCEPTION_YN,
6794 		NUMBER_OF_ITEMS,
6795                 PRICED_ITEM_YN
6796 	FROM    OKC_K_ITEMS_V
6797 	WHERE 	ID = p_cim_id;
6798     BEGIN
6799       OPEN c_cimv_rec;
6800       FETCH c_cimv_rec
6801       INTO	x_cimv_rec.ID,
6802 		x_cimv_rec.CLE_ID,
6803 		x_cimv_rec.CHR_ID,
6804 		x_cimv_rec.CLE_ID_FOR,
6805 		x_cimv_rec.DNZ_CHR_ID,
6806 		x_cimv_rec.OBJECT1_ID1,
6807 		x_cimv_rec.OBJECT1_ID2,
6808 		x_cimv_rec.JTOT_OBJECT1_CODE,
6809 		x_cimv_rec.UOM_CODE,
6810 		x_cimv_rec.EXCEPTION_YN,
6811 		x_cimv_rec.NUMBER_OF_ITEMS,
6812 		x_cimv_rec.PRICED_ITEM_YN;
6813 
6814 
6815       l_no_data_found := c_cimv_rec%NOTFOUND;
6816       CLOSE c_cimv_rec;
6817       IF l_no_data_found THEN
6818         l_return_status := OKC_API.G_RET_STS_ERROR;
6819         return(l_return_status);
6820       ELSE
6821         return(l_return_status);
6822       END IF;
6823     EXCEPTION
6824       WHEN OTHERS THEN
6825         -- store SQL error message on message stack for caller
6826         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
6827         -- notify caller of an UNEXPECTED error
6828         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6829         return(l_return_status);
6830 
6831     END get_cimv_rec;
6832   ----------------------------------------------------------------------------
6833   --Function to populate the contract access record to be copied.
6834   ----------------------------------------------------------------------------
6835     FUNCTION    get_cacv_rec(p_cac_id IN NUMBER,
6836 				x_cacv_rec OUT NOCOPY cacv_rec_type) RETURN  VARCHAR2 IS
6837       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6838       l_no_data_found BOOLEAN := TRUE;
6839 
6840       CURSOR c_cacv_rec IS
6841       SELECT	ID,
6842 		GROUP_ID,
6843 		CHR_ID,
6844 		RESOURCE_ID,
6845 		ACCESS_LEVEL
6846 	FROM    OKC_K_ACCESSES_V
6847 	WHERE 	ID = p_cac_id;
6848 
6849     BEGIN
6850       OPEN c_cacv_rec;
6851       FETCH c_cacv_rec
6852       INTO	x_cacv_rec.ID,
6853 		x_cacv_rec.GROUP_ID,
6854 		x_cacv_rec.CHR_ID,
6855 		x_cacv_rec.RESOURCE_ID,
6856 		x_cacv_rec.ACCESS_LEVEL;
6857 
6858       l_no_data_found := c_cacv_rec%NOTFOUND;
6859       CLOSE c_cacv_rec;
6860       IF l_no_data_found THEN
6861         l_return_status := OKC_API.G_RET_STS_ERROR;
6862         return(l_return_status);
6863       ELSE
6864         return(l_return_status);
6865       END IF;
6866     EXCEPTION
6867       WHEN OTHERS THEN
6868         -- store SQL error message on message stack for caller
6869         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
6870         -- notify caller of an UNEXPECTED error
6871         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6872         return(l_return_status);
6873 
6874     END get_cacv_rec;
6875   ----------------------------------------------------------------------------
6876   --Function to populate the contract party roles record to be copied.
6877   ----------------------------------------------------------------------------
6878     FUNCTION    get_cplv_rec(p_cpl_id IN NUMBER,
6879 				x_cplv_rec OUT NOCOPY cplv_rec_type) RETURN  VARCHAR2 IS
6880       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6881       l_no_data_found BOOLEAN := TRUE;
6882 
6883       CURSOR c_cplv_rec IS
6884       SELECT	ID,
6885 		SFWT_FLAG,
6886 		CHR_ID,
6887 		CLE_ID,
6888 		RLE_CODE,
6889 		DNZ_CHR_ID,
6890 		OBJECT1_ID1,
6891 		OBJECT1_ID2,
6892 		JTOT_OBJECT1_CODE,
6893 		COGNOMEN,
6894 		CODE,
6895 		FACILITY,
6896 		MINORITY_GROUP_LOOKUP_CODE,
6897 		SMALL_BUSINESS_FLAG,
6898 		WOMEN_OWNED_FLAG,
6899 		ALIAS,
6900 		ATTRIBUTE_CATEGORY,
6901 		ATTRIBUTE1,
6902 		ATTRIBUTE2,
6903 		ATTRIBUTE3,
6904 		ATTRIBUTE4,
6905 		ATTRIBUTE5,
6906 		ATTRIBUTE6,
6907 		ATTRIBUTE7,
6908 		ATTRIBUTE8,
6909 		ATTRIBUTE9,
6910 		ATTRIBUTE10,
6911 		ATTRIBUTE11,
6912 		ATTRIBUTE12,
6913 		ATTRIBUTE13,
6914 		ATTRIBUTE14,
6915 		ATTRIBUTE15,
6916           PRIMARY_YN,    -- Bug 2374325
6917            --- new columns to replace rules
6918           CUST_ACCT_ID,
6919           BILL_TO_SITE_USE_ID
6920 
6921 	FROM    OKC_K_PARTY_ROLES_V
6922 	WHERE 	ID = p_cpl_id
6923           AND   G_COPY_HISTORY_YN = 'N'
6924   UNION ALL
6925       SELECT	ID,
6926 		SFWT_FLAG,
6927 		CHR_ID,
6928 		CLE_ID,
6929 		RLE_CODE,
6930 		DNZ_CHR_ID,
6931 		OBJECT1_ID1,
6932 		OBJECT1_ID2,
6933 		JTOT_OBJECT1_CODE,
6934 		COGNOMEN,
6935 		CODE,
6936 		FACILITY,
6937 		MINORITY_GROUP_LOOKUP_CODE,
6938 		SMALL_BUSINESS_FLAG,
6939 		WOMEN_OWNED_FLAG,
6940 		ALIAS,
6941 		ATTRIBUTE_CATEGORY,
6942 		ATTRIBUTE1,
6943 		ATTRIBUTE2,
6944 		ATTRIBUTE3,
6945 		ATTRIBUTE4,
6946 		ATTRIBUTE5,
6947 		ATTRIBUTE6,
6948 		ATTRIBUTE7,
6949 		ATTRIBUTE8,
6950 		ATTRIBUTE9,
6951 		ATTRIBUTE10,
6952 		ATTRIBUTE11,
6953 		ATTRIBUTE12,
6954 		ATTRIBUTE13,
6955 		ATTRIBUTE14,
6956 		ATTRIBUTE15,
6957           PRIMARY_YN,    -- Bug 2374325
6958            --- new columns to replace rules
6959           CUST_ACCT_ID,
6960           BILL_TO_SITE_USE_ID
6961 
6962 	FROM    OKC_K_PARTY_ROLES_HV
6963 	WHERE 	ID = p_cpl_id
6964           AND   major_version = G_FROM_VERSION_NUMBER
6965           AND   G_COPY_HISTORY_YN = 'Y';
6966     BEGIN
6967       OPEN c_cplv_rec;
6968       FETCH c_cplv_rec
6969       INTO	x_cplv_rec.ID,
6970 		x_cplv_rec.SFWT_FLAG,
6971 		x_cplv_rec.CHR_ID,
6972 		x_cplv_rec.CLE_ID,
6973 		x_cplv_rec.RLE_CODE,
6974 		x_cplv_rec.DNZ_CHR_ID,
6975 		x_cplv_rec.OBJECT1_ID1,
6976 		x_cplv_rec.OBJECT1_ID2,
6977 		x_cplv_rec.JTOT_OBJECT1_CODE,
6978 		x_cplv_rec.COGNOMEN,
6979 		x_cplv_rec.CODE,
6980 		x_cplv_rec.FACILITY,
6981 		x_cplv_rec.MINORITY_GROUP_LOOKUP_CODE,
6982 		x_cplv_rec.SMALL_BUSINESS_FLAG,
6983 		x_cplv_rec.WOMEN_OWNED_FLAG,
6984 		x_cplv_rec.ALIAS,
6985 		x_cplv_rec.ATTRIBUTE_CATEGORY,
6986 		x_cplv_rec.ATTRIBUTE1,
6987 		x_cplv_rec.ATTRIBUTE2,
6988 		x_cplv_rec.ATTRIBUTE3,
6989 		x_cplv_rec.ATTRIBUTE4,
6990 		x_cplv_rec.ATTRIBUTE5,
6991 		x_cplv_rec.ATTRIBUTE6,
6992 		x_cplv_rec.ATTRIBUTE7,
6993 		x_cplv_rec.ATTRIBUTE8,
6994 		x_cplv_rec.ATTRIBUTE9,
6995 		x_cplv_rec.ATTRIBUTE10,
6996 		x_cplv_rec.ATTRIBUTE11,
6997 		x_cplv_rec.ATTRIBUTE12,
6998 		x_cplv_rec.ATTRIBUTE13,
6999 		x_cplv_rec.ATTRIBUTE14,
7000 		x_cplv_rec.ATTRIBUTE15,
7001           x_cplv_rec.PRIMARY_YN,
7002           --new columns to replace rules
7003           x_cplv_rec.CUST_ACCT_ID,
7004           x_cplv_rec.BILL_TO_SITE_USE_ID;
7005 
7006       l_no_data_found := c_cplv_rec%NOTFOUND;
7007       CLOSE c_cplv_rec;
7008       IF l_no_data_found THEN
7009         l_return_status := OKC_API.G_RET_STS_ERROR;
7010         return(l_return_status);
7011       ELSE
7012         return(l_return_status);
7013       END IF;
7014     EXCEPTION
7015       WHEN OTHERS THEN
7016         -- store SQL error message on message stack for caller
7017         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7018         -- notify caller of an UNEXPECTED error
7019         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7020         return(l_return_status);
7021 
7022     END get_cplv_rec;
7023   ----------------------------------------------------------------------------
7024   --Function to populate the contract process record to be copied.
7025   ----------------------------------------------------------------------------
7026     FUNCTION    get_cpsv_rec(p_cps_id IN NUMBER,
7027 				x_cpsv_rec OUT NOCOPY cpsv_rec_type) RETURN  VARCHAR2 IS
7028       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7029       l_no_data_found BOOLEAN := TRUE;
7030 
7031       CURSOR c_cpsv_rec IS
7032       SELECT	ID,
7033 		PDF_ID,
7034 		CHR_ID,
7035 		USER_ID,
7036 		CRT_ID,
7037 		PROCESS_ID,
7038 		IN_PROCESS_YN,
7039 		ATTRIBUTE_CATEGORY,
7040 		ATTRIBUTE1,
7041 		ATTRIBUTE2,
7042 		ATTRIBUTE3,
7043 		ATTRIBUTE4,
7044 		ATTRIBUTE5,
7045 		ATTRIBUTE6,
7046 		ATTRIBUTE7,
7047 		ATTRIBUTE8,
7048 		ATTRIBUTE9,
7049 		ATTRIBUTE10,
7050 		ATTRIBUTE11,
7051 		ATTRIBUTE12,
7052 		ATTRIBUTE13,
7053 		ATTRIBUTE14,
7054 		ATTRIBUTE15
7055 	FROM    OKC_K_PROCESSES_V
7056 	WHERE 	ID = p_cps_id;
7057     BEGIN
7058       OPEN c_cpsv_rec;
7059       FETCH c_cpsv_rec
7060       INTO	x_cpsv_rec.ID,
7061 		x_cpsv_rec.PDF_ID,
7062 		x_cpsv_rec.CHR_ID,
7063 		x_cpsv_rec.USER_ID,
7064 		x_cpsv_rec.CRT_ID,
7065 		x_cpsv_rec.PROCESS_ID,
7066 		x_cpsv_rec.IN_PROCESS_YN,
7067 		x_cpsv_rec.ATTRIBUTE_CATEGORY,
7068 		x_cpsv_rec.ATTRIBUTE1,
7069 		x_cpsv_rec.ATTRIBUTE2,
7070 		x_cpsv_rec.ATTRIBUTE3,
7071 		x_cpsv_rec.ATTRIBUTE4,
7072 		x_cpsv_rec.ATTRIBUTE5,
7073 		x_cpsv_rec.ATTRIBUTE6,
7074 		x_cpsv_rec.ATTRIBUTE7,
7075 		x_cpsv_rec.ATTRIBUTE8,
7076 		x_cpsv_rec.ATTRIBUTE9,
7077 		x_cpsv_rec.ATTRIBUTE10,
7078 		x_cpsv_rec.ATTRIBUTE11,
7079 		x_cpsv_rec.ATTRIBUTE12,
7080 		x_cpsv_rec.ATTRIBUTE13,
7081 		x_cpsv_rec.ATTRIBUTE14,
7082 		x_cpsv_rec.ATTRIBUTE15;
7083 
7084       l_no_data_found := c_cpsv_rec%NOTFOUND;
7085       CLOSE c_cpsv_rec;
7086       IF l_no_data_found THEN
7087         l_return_status := OKC_API.G_RET_STS_ERROR;
7088         return(l_return_status);
7089       ELSE
7090         return(l_return_status);
7091       END IF;
7092     EXCEPTION
7093       WHEN OTHERS THEN
7094         -- store SQL error message on message stack for caller
7095         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7096         -- notify caller of an UNEXPECTED error
7097         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7098         return(l_return_status);
7099 
7100     END get_cpsv_rec;
7101   ----------------------------------------------------------------------------
7102   --Function to populate the contract group record to be copied.
7103   ----------------------------------------------------------------------------
7104     FUNCTION    get_cgcv_rec(p_cgc_id IN NUMBER,
7105 				x_cgcv_rec OUT NOCOPY cgcv_rec_type) RETURN  VARCHAR2 IS
7106       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7107       l_no_data_found BOOLEAN := TRUE;
7108 
7109       CURSOR c_cgcv_rec IS
7110       SELECT	ID,
7111 		CGP_PARENT_ID,
7112 		INCLUDED_CHR_ID,
7113 		INCLUDED_CGP_ID
7114 	FROM    OKC_K_GRPINGS_V
7115 	WHERE 	ID = p_cgc_id;
7116 
7117     BEGIN
7118       OPEN c_cgcv_rec;
7119       FETCH c_cgcv_rec
7120       INTO	x_cgcv_rec.ID,
7121 		x_cgcv_rec.CGP_PARENT_ID,
7122 		x_cgcv_rec.INCLUDED_CHR_ID,
7123 		x_cgcv_rec.INCLUDED_CGP_ID;
7124       l_no_data_found := c_cgcv_rec%NOTFOUND;
7125       CLOSE c_cgcv_rec;
7126       IF l_no_data_found THEN
7127         l_return_status := OKC_API.G_RET_STS_ERROR;
7128         return(l_return_status);
7129       ELSE
7130         return(l_return_status);
7131       END IF;
7132     EXCEPTION
7133       WHEN OTHERS THEN
7134         -- store SQL error message on message stack for caller
7135         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7136         -- notify caller of an UNEXPECTED error
7137         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7138         return(l_return_status);
7139 
7140     END get_cgcv_rec;
7141   ----------------------------------------------------------------------------
7142   --Function to populate the condition headers record to be copied.
7143   ----------------------------------------------------------------------------
7144     FUNCTION    get_cnhv_rec(p_cnh_id IN NUMBER,
7145 				x_cnhv_rec OUT NOCOPY cnhv_rec_type) RETURN  VARCHAR2 IS
7146       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7147       l_no_data_found BOOLEAN := TRUE;
7148 
7149       CURSOR c_cnhv_rec IS
7150       SELECT	ID,
7151 		SFWT_FLAG,
7152 		ACN_ID,
7153 		COUNTER_GROUP_ID,
7154 		DESCRIPTION,
7155 		SHORT_DESCRIPTION,
7156 		COMMENTS,
7157 		ONE_TIME_YN,
7158 		NAME,
7159 		CONDITION_VALID_YN,
7160 		BEFORE_AFTER,
7161 		TRACKED_YN,
7162 		CNH_VARIANCE,
7163 		DNZ_CHR_ID,
7164 		TEMPLATE_YN,
7165 		DATE_ACTIVE,
7166 		OBJECT_ID,
7167 		DATE_INACTIVE,
7168 		JTOT_OBJECT_CODE,
7169 		TASK_OWNER_ID,
7170 		CNH_TYPE,
7171 	        ATTRIBUTE_CATEGORY,
7172 		ATTRIBUTE1,
7173 		ATTRIBUTE2,
7174 		ATTRIBUTE3,
7175 		ATTRIBUTE4,
7176 		ATTRIBUTE5,
7177 		ATTRIBUTE6,
7178 		ATTRIBUTE7,
7179 		ATTRIBUTE8,
7180 		ATTRIBUTE9,
7181 		ATTRIBUTE10,
7182 		ATTRIBUTE11,
7183 		ATTRIBUTE12,
7184 		ATTRIBUTE13,
7185 		ATTRIBUTE14,
7186 		ATTRIBUTE15
7187 	FROM    OKC_CONDITION_HEADERS_V
7188 	WHERE 	ID = p_cnh_id
7189           AND   G_COPY_HISTORY_YN = 'N'
7190   UNION ALL
7191       SELECT	ID,
7192 		SFWT_FLAG,
7193 		ACN_ID,
7194 		COUNTER_GROUP_ID,
7195 		DESCRIPTION,
7196 		SHORT_DESCRIPTION,
7197 		COMMENTS,
7198 		ONE_TIME_YN,
7199 		NAME,
7200 		CONDITION_VALID_YN,
7201 		BEFORE_AFTER,
7202 		TRACKED_YN,
7203 		CNH_VARIANCE,
7204 		DNZ_CHR_ID,
7205 		TEMPLATE_YN,
7206 		DATE_ACTIVE,
7207 		OBJECT_ID,
7208 		DATE_INACTIVE,
7209 		JTOT_OBJECT_CODE,
7210 		TASK_OWNER_ID,
7211 		CNH_TYPE,
7212 	        ATTRIBUTE_CATEGORY,
7213 		ATTRIBUTE1,
7214 		ATTRIBUTE2,
7215 		ATTRIBUTE3,
7216 		ATTRIBUTE4,
7217 		ATTRIBUTE5,
7218 		ATTRIBUTE6,
7219 		ATTRIBUTE7,
7220 		ATTRIBUTE8,
7221 		ATTRIBUTE9,
7222 		ATTRIBUTE10,
7223 		ATTRIBUTE11,
7224 		ATTRIBUTE12,
7225 		ATTRIBUTE13,
7226 		ATTRIBUTE14,
7227 		ATTRIBUTE15
7228 	FROM    OKC_CONDITION_HEADERS_HV
7229 	WHERE 	ID = p_cnh_id
7230           AND   major_version = G_FROM_VERSION_NUMBER
7231           AND   G_COPY_HISTORY_YN = 'Y';
7232     BEGIN
7233       OPEN c_cnhv_rec;
7234       FETCH c_cnhv_rec
7235       INTO	x_cnhv_rec.ID,
7236 		x_cnhv_rec.SFWT_FLAG,
7237 		x_cnhv_rec.ACN_ID,
7238 		x_cnhv_rec.COUNTER_GROUP_ID,
7239 		x_cnhv_rec.DESCRIPTION,
7240 		x_cnhv_rec.SHORT_DESCRIPTION,
7241 		x_cnhv_rec.COMMENTS,
7242 		x_cnhv_rec.ONE_TIME_YN,
7243 		x_cnhv_rec.NAME,
7244 		x_cnhv_rec.CONDITION_VALID_YN,
7245 		x_cnhv_rec.BEFORE_AFTER,
7246 		x_cnhv_rec.TRACKED_YN,
7247 		x_cnhv_rec.CNH_VARIANCE,
7248 		x_cnhv_rec.DNZ_CHR_ID,
7249 		x_cnhv_rec.TEMPLATE_YN,
7250 		x_cnhv_rec.DATE_ACTIVE,
7251 		x_cnhv_rec.OBJECT_ID,
7252 		x_cnhv_rec.DATE_INACTIVE,
7253 		x_cnhv_rec.JTOT_OBJECT_CODE,
7254 		x_cnhv_rec.TASK_OWNER_ID,
7255 		x_cnhv_rec.CNH_TYPE,
7256 		x_cnhv_rec.ATTRIBUTE_CATEGORY,
7257 		x_cnhv_rec.ATTRIBUTE1,
7258 		x_cnhv_rec.ATTRIBUTE2,
7259 		x_cnhv_rec.ATTRIBUTE3,
7260 		x_cnhv_rec.ATTRIBUTE4,
7261 		x_cnhv_rec.ATTRIBUTE5,
7262 		x_cnhv_rec.ATTRIBUTE6,
7263 		x_cnhv_rec.ATTRIBUTE7,
7264 		x_cnhv_rec.ATTRIBUTE8,
7265 		x_cnhv_rec.ATTRIBUTE9,
7266 		x_cnhv_rec.ATTRIBUTE10,
7267 		x_cnhv_rec.ATTRIBUTE11,
7268 		x_cnhv_rec.ATTRIBUTE12,
7269 		x_cnhv_rec.ATTRIBUTE13,
7270 		x_cnhv_rec.ATTRIBUTE14,
7271 		x_cnhv_rec.ATTRIBUTE15;
7272 
7273       l_no_data_found := c_cnhv_rec%NOTFOUND;
7274       CLOSE c_cnhv_rec;
7275       IF l_no_data_found THEN
7276         l_return_status := OKC_API.G_RET_STS_ERROR;
7277         return(l_return_status);
7278       ELSE
7279         return(l_return_status);
7280       END IF;
7281     EXCEPTION
7282       WHEN OTHERS THEN
7283         -- store SQL error message on message stack for caller
7284         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7285         -- notify caller of an UNEXPECTED error
7286         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7287         return(l_return_status);
7288 
7289     END get_cnhv_rec;
7290   ----------------------------------------------------------------------------
7291   --Function to populate the condition lines record to be copied.
7292   ----------------------------------------------------------------------------
7293     FUNCTION    get_cnlv_rec(p_cnl_id IN NUMBER,
7294 				x_cnlv_rec OUT NOCOPY cnlv_rec_type) RETURN  VARCHAR2 IS
7295       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7296       l_no_data_found BOOLEAN := TRUE;
7297 
7298       CURSOR c_cnlv_rec IS
7299       SELECT	ID,
7300 		SFWT_FLAG,
7301 		START_AT,
7302 		CNH_ID,
7303 		PDF_ID,
7304 		AAE_ID,
7305 		LEFT_CTR_MASTER_ID,
7306 		RIGHT_CTR_MASTER_ID,
7307 		LEFT_COUNTER_ID,
7308 		RIGHT_COUNTER_ID,
7309 		DNZ_CHR_ID,
7310 		SORTSEQ,
7311 		CNL_TYPE,
7312 		DESCRIPTION,
7313 		LEFT_PARENTHESIS,
7314 		RELATIONAL_OPERATOR,
7315 		RIGHT_PARENTHESIS,
7316 		LOGICAL_OPERATOR,
7317 		TOLERANCE,
7318 		RIGHT_OPERAND,
7319 		ATTRIBUTE_CATEGORY,
7320 		ATTRIBUTE1,
7321 		ATTRIBUTE2,
7322 		ATTRIBUTE3,
7323 		ATTRIBUTE4,
7324 		ATTRIBUTE5,
7325 		ATTRIBUTE6,
7326 		ATTRIBUTE7,
7327 		ATTRIBUTE8,
7328 		ATTRIBUTE9,
7329 		ATTRIBUTE10,
7330 		ATTRIBUTE11,
7331 		ATTRIBUTE12,
7332 		ATTRIBUTE13,
7333 		ATTRIBUTE14,
7334 		ATTRIBUTE15
7335 	FROM    OKC_CONDITION_LINES_V
7336 	WHERE 	ID = p_cnl_id
7337           AND   G_COPY_HISTORY_YN = 'N'
7338    UNION ALL
7339       SELECT	ID,
7340 		SFWT_FLAG,
7341 		START_AT,
7342 		CNH_ID,
7343 		PDF_ID,
7344 		AAE_ID,
7345 		LEFT_CTR_MASTER_ID,
7346 		RIGHT_CTR_MASTER_ID,
7347 		LEFT_COUNTER_ID,
7348 		RIGHT_COUNTER_ID,
7349 		DNZ_CHR_ID,
7350 		SORTSEQ,
7351 		CNL_TYPE,
7352 		DESCRIPTION,
7353 		LEFT_PARENTHESIS,
7354 		RELATIONAL_OPERATOR,
7355 		RIGHT_PARENTHESIS,
7356 		LOGICAL_OPERATOR,
7357 		TOLERANCE,
7358 		RIGHT_OPERAND,
7359 		ATTRIBUTE_CATEGORY,
7360 		ATTRIBUTE1,
7361 		ATTRIBUTE2,
7362 		ATTRIBUTE3,
7363 		ATTRIBUTE4,
7364 		ATTRIBUTE5,
7365 		ATTRIBUTE6,
7366 		ATTRIBUTE7,
7367 		ATTRIBUTE8,
7368 		ATTRIBUTE9,
7369 		ATTRIBUTE10,
7370 		ATTRIBUTE11,
7371 		ATTRIBUTE12,
7372 		ATTRIBUTE13,
7373 		ATTRIBUTE14,
7374 		ATTRIBUTE15
7375 	FROM    OKC_CONDITION_LINES_HV
7376 	WHERE 	ID = p_cnl_id
7377           AND   major_version = G_FROM_VERSION_NUMBER
7378           AND   G_COPY_HISTORY_YN = 'Y';
7379     BEGIN
7380       OPEN c_cnlv_rec;
7381       FETCH c_cnlv_rec
7382       INTO	x_cnlv_rec.ID,
7383 		x_cnlv_rec.SFWT_FLAG,
7384 		x_cnlv_rec.START_AT,
7385 		x_cnlv_rec.CNH_ID,
7386 		x_cnlv_rec.PDF_ID,
7387 		x_cnlv_rec.AAE_ID,
7388 		x_cnlv_rec.LEFT_CTR_MASTER_ID,
7389 		x_cnlv_rec.RIGHT_CTR_MASTER_ID,
7390 		x_cnlv_rec.LEFT_COUNTER_ID,
7391 		x_cnlv_rec.RIGHT_COUNTER_ID,
7392 		x_cnlv_rec.DNZ_CHR_ID,
7393 		x_cnlv_rec.SORTSEQ,
7394 		x_cnlv_rec.CNL_TYPE,
7395 		x_cnlv_rec.DESCRIPTION,
7396 		x_cnlv_rec.LEFT_PARENTHESIS,
7397 		x_cnlv_rec.RELATIONAL_OPERATOR,
7398 		x_cnlv_rec.RIGHT_PARENTHESIS,
7399 		x_cnlv_rec.LOGICAL_OPERATOR,
7400 		x_cnlv_rec.TOLERANCE,
7401 		x_cnlv_rec.RIGHT_OPERAND,
7402 		x_cnlv_rec.ATTRIBUTE_CATEGORY,
7403 		x_cnlv_rec.ATTRIBUTE1,
7404 		x_cnlv_rec.ATTRIBUTE2,
7405 		x_cnlv_rec.ATTRIBUTE3,
7406 		x_cnlv_rec.ATTRIBUTE4,
7407 		x_cnlv_rec.ATTRIBUTE5,
7408 		x_cnlv_rec.ATTRIBUTE6,
7409 		x_cnlv_rec.ATTRIBUTE7,
7410 		x_cnlv_rec.ATTRIBUTE8,
7411 		x_cnlv_rec.ATTRIBUTE9,
7412 		x_cnlv_rec.ATTRIBUTE10,
7413 		x_cnlv_rec.ATTRIBUTE11,
7414 		x_cnlv_rec.ATTRIBUTE12,
7415 		x_cnlv_rec.ATTRIBUTE13,
7416 		x_cnlv_rec.ATTRIBUTE14,
7417 		x_cnlv_rec.ATTRIBUTE15;
7418 
7419       l_no_data_found := c_cnlv_rec%NOTFOUND;
7420       CLOSE c_cnlv_rec;
7421       IF l_no_data_found THEN
7422         l_return_status := OKC_API.G_RET_STS_ERROR;
7423         return(l_return_status);
7424       ELSE
7425         return(l_return_status);
7426       END IF;
7427     EXCEPTION
7428       WHEN OTHERS THEN
7429         -- store SQL error message on message stack for caller
7430         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7431         -- notify caller of an UNEXPECTED error
7432         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7433         return(l_return_status);
7434 
7435     END get_cnlv_rec;
7436   ----------------------------------------------------------------------------
7437   --Function to populate the contacts record to be copied.
7438   ----------------------------------------------------------------------------
7439 
7440     FUNCTION    get_ctcv_rec(p_ctc_id IN NUMBER,
7441 				x_ctcv_rec OUT NOCOPY ctcv_rec_type) RETURN  VARCHAR2 IS
7442 
7443       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7444       l_no_data_found BOOLEAN := TRUE;
7445 
7446       CURSOR c_ctcv_rec IS
7447       SELECT	ID,
7448                 CPL_ID,
7449                 CRO_CODE,
7450                 DNZ_CHR_ID,
7451                 CONTACT_SEQUENCE,
7452                 OBJECT1_ID1,
7453                 OBJECT1_ID2,
7454                 JTOT_OBJECT1_CODE,
7455 			 RESOURCE_CLASS,--Bug#3038104
7456 			 SALES_GROUP_ID, --Bug#2882737
7457                 ATTRIBUTE_CATEGORY,
7458                 ATTRIBUTE1,
7459                 ATTRIBUTE2,
7460                 ATTRIBUTE3,
7461                 ATTRIBUTE4,
7462                 ATTRIBUTE5,
7463                 ATTRIBUTE6,
7464                 ATTRIBUTE7,
7465                 ATTRIBUTE8,
7466                 ATTRIBUTE9,
7467                 ATTRIBUTE10,
7468                 ATTRIBUTE11,
7469                 ATTRIBUTE12,
7470                 ATTRIBUTE13,
7471                 ATTRIBUTE14,
7472                 ATTRIBUTE15,
7473                 START_DATE,
7474                 END_DATE,
7475                 PRIMARY_YN  -- Bug 2374325
7476 
7477 	FROM    OKC_CONTACTS_V
7478 	WHERE 	ID = p_ctc_id
7479           AND   G_COPY_HISTORY_YN = 'N'
7480 UNION ALL
7481       SELECT	ID,
7482                 CPL_ID,
7483                 CRO_CODE,
7484                 DNZ_CHR_ID,
7485                 CONTACT_SEQUENCE,
7486                 OBJECT1_ID1,
7487                 OBJECT1_ID2,
7488                 JTOT_OBJECT1_CODE,
7489 			 RESOURCE_CLASS,--Bug#3038104
7490 			 SALES_GROUP_ID, --Bug#2882737
7491                 ATTRIBUTE_CATEGORY,
7492                 ATTRIBUTE1,
7493                 ATTRIBUTE2,
7494                 ATTRIBUTE3,
7495                 ATTRIBUTE4,
7496                 ATTRIBUTE5,
7497                 ATTRIBUTE6,
7498                 ATTRIBUTE7,
7499                 ATTRIBUTE8,
7500                 ATTRIBUTE9,
7501                 ATTRIBUTE10,
7502                 ATTRIBUTE11,
7503                 ATTRIBUTE12,
7504                 ATTRIBUTE13,
7505                 ATTRIBUTE14,
7506                 ATTRIBUTE15,
7507                 START_DATE,
7508                 END_DATE,
7509                 PRIMARY_YN  -- Bug 2374325
7510 	FROM    OKC_CONTACTS_HV
7511 	WHERE 	ID = p_ctc_id
7512           AND   major_version = G_FROM_VERSION_NUMBER
7513           AND   G_COPY_HISTORY_YN = 'Y';
7514     BEGIN
7515       OPEN c_ctcv_rec;
7516       FETCH c_ctcv_rec
7517       INTO	x_ctcv_rec.ID,
7518                 x_ctcv_rec.CPL_ID,
7519                 x_ctcv_rec.CRO_CODE,
7520                 x_ctcv_rec.DNZ_CHR_ID,
7521                 x_ctcv_rec.CONTACT_SEQUENCE,
7522                 x_ctcv_rec.OBJECT1_ID1,
7523                 x_ctcv_rec.OBJECT1_ID2,
7524                 x_ctcv_rec.JTOT_OBJECT1_CODE,
7525 			 x_ctcv_rec.resource_class,--Bug#3038104
7526 			 x_ctcv_rec.SALES_GROUP_ID, --Bug#2882737
7527                 x_ctcv_rec.ATTRIBUTE_CATEGORY,
7528                 x_ctcv_rec.ATTRIBUTE1,
7529                 x_ctcv_rec.ATTRIBUTE2,
7530                 x_ctcv_rec.ATTRIBUTE3,
7531                 x_ctcv_rec.ATTRIBUTE4,
7532                 x_ctcv_rec.ATTRIBUTE5,
7533                 x_ctcv_rec.ATTRIBUTE6,
7534                 x_ctcv_rec.ATTRIBUTE7,
7535                 x_ctcv_rec.ATTRIBUTE8,
7536                 x_ctcv_rec.ATTRIBUTE9,
7537                 x_ctcv_rec.ATTRIBUTE10,
7538                 x_ctcv_rec.ATTRIBUTE11,
7539                 x_ctcv_rec.ATTRIBUTE12,
7540                 x_ctcv_rec.ATTRIBUTE13,
7541                 x_ctcv_rec.ATTRIBUTE14,
7542                 x_ctcv_rec.ATTRIBUTE15,
7543                 x_ctcv_rec.START_DATE,
7544                 x_ctcv_rec.END_DATE,
7545                 x_ctcv_rec.PRIMARY_YN;
7546       l_no_data_found := c_ctcv_rec%NOTFOUND;
7547       CLOSE c_ctcv_rec;
7548       IF l_no_data_found THEN
7549         l_return_status := OKC_API.G_RET_STS_ERROR;
7550         return(l_return_status);
7551       ELSE
7552         return(l_return_status);
7553       END IF;
7554     EXCEPTION
7555       WHEN OTHERS THEN
7556         -- store SQL error message on message stack for caller
7557         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7558         -- notify caller of an UNEXPECTED error
7559         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7560         return(l_return_status);
7561 
7562     END get_ctcv_rec;
7563   ----------------------------------------------------------------------------
7564   --Function to populate the rule groups record to be copied.
7565   ----------------------------------------------------------------------------
7566     FUNCTION    get_rgpv_rec(p_rgp_id IN NUMBER,
7567 				x_rgpv_rec OUT NOCOPY rgpv_rec_type)
7568     				RETURN  VARCHAR2 IS
7569       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7570       l_no_data_found BOOLEAN := TRUE;
7571 
7572       CURSOR c_rgpv_rec IS
7573       SELECT	ID,
7574 		SFWT_FLAG,
7575 		RGP_TYPE,
7576 		RGD_CODE,
7577 		CLE_ID,
7578 		CHR_ID,
7579 		DNZ_CHR_ID,
7580 		PARENT_RGP_ID,
7581 		SAT_CODE,
7582 		COMMENTS,
7583 		ATTRIBUTE_CATEGORY,
7584 		ATTRIBUTE1,
7585 		ATTRIBUTE2,
7586 		ATTRIBUTE3,
7587 		ATTRIBUTE4,
7588 		ATTRIBUTE5,
7589 		ATTRIBUTE6,
7590 		ATTRIBUTE7,
7591 		ATTRIBUTE8,
7592 		ATTRIBUTE9,
7593 		ATTRIBUTE10,
7594 		ATTRIBUTE11,
7595 		ATTRIBUTE12,
7596 		ATTRIBUTE13,
7597 		ATTRIBUTE14,
7598 		ATTRIBUTE15
7599       FROM 	OKC_RULE_GROUPS_V
7600       WHERE	ID = p_rgp_id
7601        AND      G_COPY_HISTORY_YN = 'N'
7602   UNION ALL
7603       SELECT	ID,
7604 		SFWT_FLAG,
7605 		RGP_TYPE,
7606 		RGD_CODE,
7607 		CLE_ID,
7608 		CHR_ID,
7609 		DNZ_CHR_ID,
7610 		PARENT_RGP_ID,
7611 		SAT_CODE,
7612 		COMMENTS,
7613 		ATTRIBUTE_CATEGORY,
7614 		ATTRIBUTE1,
7615 		ATTRIBUTE2,
7616 		ATTRIBUTE3,
7617 		ATTRIBUTE4,
7618 		ATTRIBUTE5,
7619 		ATTRIBUTE6,
7620 		ATTRIBUTE7,
7621 		ATTRIBUTE8,
7622 		ATTRIBUTE9,
7623 		ATTRIBUTE10,
7624 		ATTRIBUTE11,
7625 		ATTRIBUTE12,
7626 		ATTRIBUTE13,
7627 		ATTRIBUTE14,
7628 		ATTRIBUTE15
7629       FROM 	OKC_RULE_GROUPS_HV
7630       WHERE	ID = p_rgp_id
7631        AND      G_COPY_HISTORY_YN = 'Y'
7632        AND      major_version = G_FROM_VERSION_NUMBER;
7633    BEGIN
7634       OPEN c_rgpv_rec;
7635       FETCH c_rgpv_rec
7636       INTO	x_rgpv_rec.ID,
7637 		x_rgpv_rec.SFWT_FLAG,
7638 		x_rgpv_rec.RGP_TYPE,
7639 		x_rgpv_rec.RGD_CODE,
7640 		x_rgpv_rec.CLE_ID,
7641 		x_rgpv_rec.CHR_ID,
7642 		x_rgpv_rec.DNZ_CHR_ID,
7643 		x_rgpv_rec.PARENT_RGP_ID,
7644 		x_rgpv_rec.SAT_CODE,
7645 		x_rgpv_rec.COMMENTS,
7646 		x_rgpv_rec.ATTRIBUTE_CATEGORY,
7647 		x_rgpv_rec.ATTRIBUTE1,
7648 		x_rgpv_rec.ATTRIBUTE2,
7649 		x_rgpv_rec.ATTRIBUTE3,
7650 		x_rgpv_rec.ATTRIBUTE4,
7651 		x_rgpv_rec.ATTRIBUTE5,
7652 		x_rgpv_rec.ATTRIBUTE6,
7653 		x_rgpv_rec.ATTRIBUTE7,
7654 		x_rgpv_rec.ATTRIBUTE8,
7655 		x_rgpv_rec.ATTRIBUTE9,
7656 		x_rgpv_rec.ATTRIBUTE10,
7657 		x_rgpv_rec.ATTRIBUTE11,
7658 		x_rgpv_rec.ATTRIBUTE12,
7659 		x_rgpv_rec.ATTRIBUTE13,
7660 		x_rgpv_rec.ATTRIBUTE14,
7661 		x_rgpv_rec.ATTRIBUTE15;
7662 
7663       l_no_data_found := c_rgpv_rec%NOTFOUND;
7664       CLOSE c_rgpv_rec;
7665       IF l_no_data_found THEN
7666         l_return_status := OKC_API.G_RET_STS_ERROR;
7667         return(l_return_status);
7668       ELSE
7669         return(l_return_status);
7670       END IF;
7671     EXCEPTION
7672       WHEN OTHERS THEN
7673         -- store SQL error message on message stack for caller
7674         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7675         -- notify caller of an UNEXPECTED error
7676         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7677         return(l_return_status);
7678     END get_rgpv_rec;
7679 
7680   ----------------------------------------------------------------------------
7681   --Function to populate the timevalues to be copied.
7682   ----------------------------------------------------------------------------
7683     FUNCTION    get_tvev_rec(p_tve_id IN NUMBER,
7684 				x_tvev_rec OUT NOCOPY tvev_rec_type)
7685     				RETURN  VARCHAR2 IS
7686       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7687       l_no_data_found BOOLEAN := TRUE;
7688 
7689       CURSOR c_tvev_rec IS
7690       SELECT	ID,
7691 		SFWT_FLAG,
7692 		SPN_ID,
7693 		TVE_ID_OFFSET,
7694 		UOM_CODE,
7695 		TVE_ID_GENERATED_BY,
7696 		TVE_ID_STARTED,
7697 		TVE_ID_ENDED,
7698 		TVE_ID_LIMITED,
7699 		CNH_ID,
7700 		DNZ_CHR_ID,
7701 		TZE_ID,
7702 		DESCRIPTION,
7703 		SHORT_DESCRIPTION,
7704 		COMMENTS,
7705 		DURATION,
7706 		OPERATOR,
7707 		BEFORE_AFTER,
7708 		DATETIME,
7709 		MONTH,
7710 		DAY,
7711 		DAY_OF_WEEK,
7712 		HOUR,
7713 		MINUTE,
7714 		SECOND,
7715 		NAME,
7716 		INTERVAL_YN,
7717 		NTH,
7718 		ATTRIBUTE_CATEGORY,
7719 		ATTRIBUTE1,
7720 		ATTRIBUTE2,
7721 		ATTRIBUTE3,
7722 		ATTRIBUTE4,
7723 		ATTRIBUTE5,
7724 		ATTRIBUTE6,
7725 		ATTRIBUTE7,
7726 		ATTRIBUTE8,
7727 		ATTRIBUTE9,
7728 		ATTRIBUTE10,
7729 		ATTRIBUTE11,
7730 		ATTRIBUTE12,
7731 		ATTRIBUTE13,
7732 		ATTRIBUTE14,
7733 		ATTRIBUTE15,
7734 		TVE_TYPE
7735       FROM 	OKC_TIMEVALUES_V
7736       WHERE	ID = p_tve_id;
7737     BEGIN
7738       OPEN c_tvev_rec;
7739       FETCH c_tvev_rec
7740       INTO	x_tvev_rec.ID,
7741 		x_tvev_rec.SFWT_FLAG,
7742 		x_tvev_rec.SPN_ID,
7743 		x_tvev_rec.TVE_ID_OFFSET,
7744 		x_tvev_rec.UOM_CODE,
7745 		x_tvev_rec.TVE_ID_GENERATED_BY,
7746 		x_tvev_rec.TVE_ID_STARTED,
7747 		x_tvev_rec.TVE_ID_ENDED,
7748 		x_tvev_rec.TVE_ID_LIMITED,
7749 		x_tvev_rec.CNH_ID,
7750 		x_tvev_rec.DNZ_CHR_ID,
7751 		x_tvev_rec.TZE_ID,
7752 		x_tvev_rec.DESCRIPTION,
7753 		x_tvev_rec.SHORT_DESCRIPTION,
7754 		x_tvev_rec.COMMENTS,
7755 		x_tvev_rec.DURATION,
7756 		x_tvev_rec.OPERATOR,
7757 		x_tvev_rec.BEFORE_AFTER,
7758 		x_tvev_rec.DATETIME,
7759 		x_tvev_rec.MONTH,
7760 		x_tvev_rec.DAY,
7761 		x_tvev_rec.DAY_OF_WEEK,
7762 		x_tvev_rec.HOUR,
7763 		x_tvev_rec.MINUTE,
7764 		x_tvev_rec.SECOND,
7765 		x_tvev_rec.NAME,
7766 		x_tvev_rec.INTERVAL_YN,
7767 		x_tvev_rec.NTH,
7768 		x_tvev_rec.ATTRIBUTE_CATEGORY,
7769 		x_tvev_rec.ATTRIBUTE1,
7770 		x_tvev_rec.ATTRIBUTE2,
7771 		x_tvev_rec.ATTRIBUTE3,
7772 		x_tvev_rec.ATTRIBUTE4,
7773 		x_tvev_rec.ATTRIBUTE5,
7774 		x_tvev_rec.ATTRIBUTE6,
7775 		x_tvev_rec.ATTRIBUTE7,
7776 		x_tvev_rec.ATTRIBUTE8,
7777 		x_tvev_rec.ATTRIBUTE9,
7778 		x_tvev_rec.ATTRIBUTE10,
7779 		x_tvev_rec.ATTRIBUTE11,
7780 		x_tvev_rec.ATTRIBUTE12,
7781 		x_tvev_rec.ATTRIBUTE13,
7782 		x_tvev_rec.ATTRIBUTE14,
7783 		x_tvev_rec.ATTRIBUTE15,
7784 		x_tvev_rec.TVE_TYPE;
7785 
7786       l_no_data_found := c_tvev_rec%NOTFOUND;
7787       CLOSE c_tvev_rec;
7788       IF l_no_data_found THEN
7789         l_return_status := OKC_API.G_RET_STS_ERROR;
7790         return(l_return_status);
7791       ELSE
7792         return(l_return_status);
7793       END IF;
7794     EXCEPTION
7795       WHEN OTHERS THEN
7796         -- store SQL error message on message stack for caller
7797         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7798         -- notify caller of an UNEXPECTED error
7799         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7800         return(l_return_status);
7801     END get_tvev_rec;
7802 
7803 
7804   ----------------------------------------------------------------------------
7805   --Function to populate the rules record to be copied.
7806   ----------------------------------------------------------------------------
7807     FUNCTION    get_rulv_rec(p_rul_id IN NUMBER,
7808 				x_rulv_rec OUT NOCOPY rulv_rec_type)
7809     				RETURN  VARCHAR2 IS
7810       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7811       l_no_data_found BOOLEAN := TRUE;
7812 
7813       CURSOR c_rulv_rec IS
7814       SELECT	ID,
7815 --Bug 3055393		SFWT_FLAG,
7816 		OBJECT1_ID1,
7817 		OBJECT2_ID1,
7818 		OBJECT3_ID1,
7819 		OBJECT1_ID2,
7820 		OBJECT2_ID2,
7821 		OBJECT3_ID2,
7822 		JTOT_OBJECT1_CODE,
7823 		JTOT_OBJECT2_CODE,
7824 		JTOT_OBJECT3_CODE,
7825 		DNZ_CHR_ID,
7826 		RGP_ID,
7827 		PRIORITY,
7828 		STD_TEMPLATE_YN,
7829 		COMMENTS,
7830 		WARN_YN,
7831 		ATTRIBUTE_CATEGORY,
7832 		ATTRIBUTE1,
7833 		ATTRIBUTE2,
7834 		ATTRIBUTE3,
7835 		ATTRIBUTE4,
7836 		ATTRIBUTE5,
7837 		ATTRIBUTE6,
7838 		ATTRIBUTE7,
7839 		ATTRIBUTE8,
7840 		ATTRIBUTE9,
7841 		ATTRIBUTE10,
7842 		ATTRIBUTE11,
7843 		ATTRIBUTE12,
7844 		ATTRIBUTE13,
7845 		ATTRIBUTE14,
7846 		ATTRIBUTE15,
7847 --Bug 3055393		TEXT,
7848 		RULE_INFORMATION_CATEGORY,
7849 		RULE_INFORMATION1,
7850 		RULE_INFORMATION2,
7851 		RULE_INFORMATION3,
7852 		RULE_INFORMATION4,
7853 		RULE_INFORMATION5,
7854 		RULE_INFORMATION6,
7855 		RULE_INFORMATION7,
7856 		RULE_INFORMATION8,
7857 		RULE_INFORMATION9,
7858 		RULE_INFORMATION10,
7859 		RULE_INFORMATION11,
7860 		RULE_INFORMATION12,
7861 		RULE_INFORMATION13,
7862 		RULE_INFORMATION14,
7863 		RULE_INFORMATION15
7864       FROM 	OKC_RULES_V
7865       WHERE	ID = p_rul_id
7866         AND     G_COPY_HISTORY_YN = 'N'
7867   UNION ALL
7868       SELECT	ID,
7869 -- Bug 3055393		SFWT_FLAG,
7870 		OBJECT1_ID1,
7871 		OBJECT2_ID1,
7872 		OBJECT3_ID1,
7873 		OBJECT1_ID2,
7874 		OBJECT2_ID2,
7875 		OBJECT3_ID2,
7876 		JTOT_OBJECT1_CODE,
7877 		JTOT_OBJECT2_CODE,
7878 		JTOT_OBJECT3_CODE,
7879 		DNZ_CHR_ID,
7880 		RGP_ID,
7881 		PRIORITY,
7882 		STD_TEMPLATE_YN,
7883 		COMMENTS,
7884 		WARN_YN,
7885 		ATTRIBUTE_CATEGORY,
7886 		ATTRIBUTE1,
7887 		ATTRIBUTE2,
7888 		ATTRIBUTE3,
7889 		ATTRIBUTE4,
7890 		ATTRIBUTE5,
7891 		ATTRIBUTE6,
7892 		ATTRIBUTE7,
7893 		ATTRIBUTE8,
7894 		ATTRIBUTE9,
7895 		ATTRIBUTE10,
7896 		ATTRIBUTE11,
7897 		ATTRIBUTE12,
7898 		ATTRIBUTE13,
7899 		ATTRIBUTE14,
7900 		ATTRIBUTE15,
7901 --Bug 3055393		TEXT,
7902 		RULE_INFORMATION_CATEGORY,
7903 		RULE_INFORMATION1,
7904 		RULE_INFORMATION2,
7905 		RULE_INFORMATION3,
7906 		RULE_INFORMATION4,
7907 		RULE_INFORMATION5,
7908 		RULE_INFORMATION6,
7909 		RULE_INFORMATION7,
7910 		RULE_INFORMATION8,
7911 		RULE_INFORMATION9,
7912 		RULE_INFORMATION10,
7913 		RULE_INFORMATION11,
7914 		RULE_INFORMATION12,
7915 		RULE_INFORMATION13,
7916 		RULE_INFORMATION14,
7917 		RULE_INFORMATION15
7918       FROM 	OKC_RULES_HV
7919       WHERE	ID = p_rul_id
7920         AND major_version = G_FROM_VERSION_NUMBER
7921         AND G_COPY_HISTORY_YN = 'Y';
7922     BEGIN
7923       OPEN c_rulv_rec;
7924       FETCH c_rulv_rec
7925       INTO	x_rulv_rec.ID,
7926 --Bug 3055393		x_rulv_rec.SFWT_FLAG,
7927 		x_rulv_rec.OBJECT1_ID1,
7928 		x_rulv_rec.OBJECT2_ID1,
7929 		x_rulv_rec.OBJECT3_ID1,
7930 		x_rulv_rec.OBJECT1_ID2,
7931 		x_rulv_rec.OBJECT2_ID2,
7932 		x_rulv_rec.OBJECT3_ID2,
7933 		x_rulv_rec.JTOT_OBJECT1_CODE,
7934 		x_rulv_rec.JTOT_OBJECT2_CODE,
7935 		x_rulv_rec.JTOT_OBJECT3_CODE,
7936 		x_rulv_rec.DNZ_CHR_ID,
7937 		x_rulv_rec.RGP_ID,
7938 		x_rulv_rec.PRIORITY,
7939 		x_rulv_rec.STD_TEMPLATE_YN,
7940 		x_rulv_rec.COMMENTS,
7941 		x_rulv_rec.WARN_YN,
7942 		x_rulv_rec.ATTRIBUTE_CATEGORY,
7943 		x_rulv_rec.ATTRIBUTE1,
7944 		x_rulv_rec.ATTRIBUTE2,
7945 		x_rulv_rec.ATTRIBUTE3,
7946 		x_rulv_rec.ATTRIBUTE4,
7947 		x_rulv_rec.ATTRIBUTE5,
7948 		x_rulv_rec.ATTRIBUTE6,
7949 		x_rulv_rec.ATTRIBUTE7,
7950 		x_rulv_rec.ATTRIBUTE8,
7951 		x_rulv_rec.ATTRIBUTE9,
7952 		x_rulv_rec.ATTRIBUTE10,
7953 		x_rulv_rec.ATTRIBUTE11,
7954 		x_rulv_rec.ATTRIBUTE12,
7955 		x_rulv_rec.ATTRIBUTE13,
7956 		x_rulv_rec.ATTRIBUTE14,
7957 		x_rulv_rec.ATTRIBUTE15,
7958 --Bug 3055393	     x_rulv_rec.TEXT,
7959 		x_rulv_rec.RULE_INFORMATION_CATEGORY,
7960 		x_rulv_rec.RULE_INFORMATION1,
7961 		x_rulv_rec.RULE_INFORMATION2,
7962 		x_rulv_rec.RULE_INFORMATION3,
7963 		x_rulv_rec.RULE_INFORMATION4,
7964 		x_rulv_rec.RULE_INFORMATION5,
7965 		x_rulv_rec.RULE_INFORMATION6,
7966 		x_rulv_rec.RULE_INFORMATION7,
7967 		x_rulv_rec.RULE_INFORMATION8,
7968 		x_rulv_rec.RULE_INFORMATION9,
7969 		x_rulv_rec.RULE_INFORMATION10,
7970 		x_rulv_rec.RULE_INFORMATION11,
7971 		x_rulv_rec.RULE_INFORMATION12,
7972 		x_rulv_rec.RULE_INFORMATION13,
7973 		x_rulv_rec.RULE_INFORMATION14,
7974 		x_rulv_rec.RULE_INFORMATION15;
7975       l_no_data_found := c_rulv_rec%NOTFOUND;
7976       CLOSE c_rulv_rec;
7977       IF l_no_data_found THEN
7978         l_return_status := OKC_API.G_RET_STS_ERROR;
7979         return(l_return_status);
7980       ELSE
7981         return(l_return_status);
7982       END IF;
7983     EXCEPTION
7984       WHEN OTHERS THEN
7985         -- store SQL error message on message stack for caller
7986         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
7987         -- notify caller of an UNEXPECTED error
7988         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7989         return(l_return_status);
7990     END get_rulv_rec;
7991 
7992   ----------------------------------------------------------------------------
7993   --Function to populate the lines record to be copied.
7994   ----------------------------------------------------------------------------
7995     FUNCTION    get_clev_rec(p_cle_id IN NUMBER,
7996                              p_renew_ref_yn IN VARCHAR2, -- Added for bugfix 2307197
7997 				x_clev_rec OUT NOCOPY clev_rec_type)
7998     				RETURN  VARCHAR2 IS
7999       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8000       l_no_data_found BOOLEAN := TRUE;
8001 
8002       CURSOR c_clev_rec IS
8003       SELECT 	ID,
8004 		SFWT_FLAG,
8005 		CHR_ID,
8006 		CLE_ID,
8007                 decode(p_renew_ref_yn, 'Y', LINE_NUMBER,''),       -- Modified for bugfix 2307197
8008                 LSE_ID,
8009 		STS_CODE,
8010 		DISPLAY_SEQUENCE,
8011 		TRN_CODE,
8012 		COMMENTS,
8013 		ITEM_DESCRIPTION,
8014 		OKE_BOE_DESCRIPTION,
8015 		COGNOMEN,
8016 		HIDDEN_IND,
8017                 PRICE_UNIT,
8018                 PRICE_UNIT_PERCENT,
8019 		PRICE_NEGOTIATED,
8020 		PRICE_LEVEL_IND,
8021 		INVOICE_LINE_LEVEL_IND,
8022 		DPAS_RATING,
8023 		BLOCK23TEXT,
8024 		EXCEPTION_YN,
8025 		TEMPLATE_USED,
8026 		DATE_TERMINATED,
8027 		NAME,
8028 		START_DATE,
8029 		END_DATE,
8030 		DATE_RENEWED,
8031                 REQUEST_ID,
8032                 PROGRAM_APPLICATION_ID,
8033                 PROGRAM_ID,
8034                 PROGRAM_UPDATE_DATE,
8035                 PRICE_LIST_ID,
8036                 PRICING_DATE,
8037                 PRICE_LIST_LINE_ID,
8038                 LINE_LIST_PRICE,
8039                 ITEM_TO_PRICE_YN,
8040                 PRICE_BASIS_YN,
8041                 CONFIG_HEADER_ID,
8042                 CONFIG_REVISION_NUMBER,
8043                 CONFIG_COMPLETE_YN,
8044                 CONFIG_VALID_YN,
8045                 CONFIG_TOP_MODEL_LINE_ID,
8046                 CONFIG_ITEM_TYPE,
8047              ---Bug.No.-1942374
8048                 CONFIG_ITEM_ID,
8049              ---Bug.No.-1942374
8050 		ATTRIBUTE_CATEGORY,
8051 		ATTRIBUTE1,
8052 		ATTRIBUTE2,
8053 		ATTRIBUTE3,
8054 		ATTRIBUTE4,
8055 		ATTRIBUTE5,
8056 		ATTRIBUTE6,
8057 		ATTRIBUTE7,
8058 		ATTRIBUTE8,
8059 		ATTRIBUTE9,
8060 		ATTRIBUTE10,
8061 		ATTRIBUTE11,
8062 		ATTRIBUTE12,
8063 		ATTRIBUTE13,
8064 		ATTRIBUTE14,
8065 		ATTRIBUTE15,
8066 		PRICE_TYPE,
8067 		CURRENCY_CODE,
8068           SERVICE_ITEM_YN,
8069                        -- new columns for price hold
8070           PH_PRICING_TYPE,
8071           PH_ADJUSTMENT,
8072           PH_PRICE_BREAK_BASIS,
8073           PH_MIN_QTY,
8074           PH_MIN_AMT,
8075           PH_QP_REFERENCE_ID,
8076           PH_VALUE,
8077           PH_ENFORCE_PRICE_LIST_YN,
8078           PH_INTEGRATED_WITH_QP,
8079                 -- new colums to replace rules
8080           CUST_ACCT_ID,
8081           BILL_TO_SITE_USE_ID,
8082           INV_RULE_ID,
8083           LINE_RENEWAL_TYPE_CODE,
8084           SHIP_TO_SITE_USE_ID,
8085           PAYMENT_TERM_ID,
8086 		ANNUALIZED_FACTOR,       --Bug 4722452: Added these two column to support Update_Service
8087 		PAYMENT_INSTRUCTION_TYPE --in R12
8088 
8089       FROM	OKC_K_LINES_V
8090       WHERE	id = p_cle_id;
8091     BEGIN
8092 IF (l_debug = 'Y') THEN
8093    OKC_DEBUG.Set_Indentation(' get_clev_rec ');
8094    OKC_DEBUG.log('100 : Entering  get_clev_rec  ', 2);
8095    OKC_DEBUG.log('100 : p_cle_id : '||p_cle_id);
8096 END IF;
8097       OPEN c_clev_rec;
8098       FETCH c_clev_rec
8099       INTO	x_clev_rec.ID,
8100 		x_clev_rec.SFWT_FLAG,
8101 		x_clev_rec.CHR_ID,
8102 		x_clev_rec.CLE_ID,
8103                 x_clev_rec.LINE_NUMBER,
8104 		x_clev_rec.LSE_ID,
8105 		x_clev_rec.STS_CODE,
8106 		x_clev_rec.DISPLAY_SEQUENCE,
8107 		x_clev_rec.TRN_CODE,
8108 		x_clev_rec.COMMENTS,
8109 		x_clev_rec.ITEM_DESCRIPTION,
8110 		x_clev_rec.OKE_BOE_DESCRIPTION,
8111 		x_clev_rec.COGNOMEN,
8112 		x_clev_rec.HIDDEN_IND,
8113                 x_clev_rec.PRICE_UNIT,
8114                 x_clev_rec.PRICE_UNIT_PERCENT,
8115 		x_clev_rec.PRICE_NEGOTIATED,
8116 		x_clev_rec.PRICE_LEVEL_IND,
8117 		x_clev_rec.INVOICE_LINE_LEVEL_IND,
8118 		x_clev_rec.DPAS_RATING,
8119 		x_clev_rec.BLOCK23TEXT,
8120 		x_clev_rec.EXCEPTION_YN,
8121 		x_clev_rec.TEMPLATE_USED,
8122 		x_clev_rec.DATE_TERMINATED,
8123 		x_clev_rec.NAME,
8124 		x_clev_rec.START_DATE,
8125 		x_clev_rec.END_DATE,
8126 		x_clev_rec.DATE_RENEWED,
8127                 x_clev_rec.REQUEST_ID,
8128                 x_clev_rec.PROGRAM_APPLICATION_ID,
8129                 x_clev_rec.PROGRAM_ID,
8130                 x_clev_rec.PROGRAM_UPDATE_DATE,
8131                 x_clev_rec.PRICE_LIST_ID,
8132                 x_clev_rec.PRICING_DATE,
8133                 x_clev_rec.PRICE_LIST_LINE_ID,
8134                 x_clev_rec.LINE_LIST_PRICE,
8135                 x_clev_rec.ITEM_TO_PRICE_YN,
8136                 x_clev_rec.PRICE_BASIS_YN,
8137                 x_clev_rec.CONFIG_HEADER_ID,
8138                 x_clev_rec.CONFIG_REVISION_NUMBER,
8139                 x_clev_rec.CONFIG_COMPLETE_YN,
8140                 x_clev_rec.CONFIG_VALID_YN,
8141                 x_clev_rec.CONFIG_TOP_MODEL_LINE_ID,
8142                 x_clev_rec.CONFIG_ITEM_TYPE,
8143              ---Bug.No.-1942374
8144                 x_clev_rec.CONFIG_ITEM_ID,
8145              ---Bug.No.-1942374
8146 		x_clev_rec.ATTRIBUTE_CATEGORY,
8147 		x_clev_rec.ATTRIBUTE1,
8148 		x_clev_rec.ATTRIBUTE2,
8149 		x_clev_rec.ATTRIBUTE3,
8150 		x_clev_rec.ATTRIBUTE4,
8151 		x_clev_rec.ATTRIBUTE5,
8152 		x_clev_rec.ATTRIBUTE6,
8153 		x_clev_rec.ATTRIBUTE7,
8154 		x_clev_rec.ATTRIBUTE8,
8155 		x_clev_rec.ATTRIBUTE9,
8156 		x_clev_rec.ATTRIBUTE10,
8157 		x_clev_rec.ATTRIBUTE11,
8158 		x_clev_rec.ATTRIBUTE12,
8159 		x_clev_rec.ATTRIBUTE13,
8160 		x_clev_rec.ATTRIBUTE14,
8161 		x_clev_rec.ATTRIBUTE15,
8162 		x_clev_rec.PRICE_TYPE,
8163 		x_clev_rec.CURRENCY_CODE,
8164 		x_clev_rec.SERVICE_ITEM_YN,
8165                         --new columns for price hold
8166           x_clev_rec.PH_PRICING_TYPE,
8167           x_clev_rec.PH_ADJUSTMENT,
8168           x_clev_rec.PH_PRICE_BREAK_BASIS,
8169           x_clev_rec.PH_MIN_QTY,
8170           x_clev_rec.PH_MIN_AMT,
8171           x_clev_rec.PH_QP_REFERENCE_ID,
8172           x_clev_rec.PH_VALUE,
8173           x_clev_rec.PH_ENFORCE_PRICE_LIST_YN,
8174           x_clev_rec.PH_INTEGRATED_WITH_QP,
8175             -- new colums to replace rules
8176           x_clev_rec.CUST_ACCT_ID,
8177           x_clev_rec.BILL_TO_SITE_USE_ID,
8178           x_clev_rec.INV_RULE_ID,
8179           x_clev_rec.LINE_RENEWAL_TYPE_CODE,
8180           x_clev_rec.SHIP_TO_SITE_USE_ID,
8181           x_clev_rec.PAYMENT_TERM_ID,
8182 		x_clev_rec.ANNUALIZED_FACTOR,         --Fix for bug 4722452
8183 		x_clev_rec.PAYMENT_INSTRUCTION_TYPE;  --
8184 
8185       l_no_data_found := c_clev_rec%NOTFOUND;
8186       CLOSE c_clev_rec;
8187       IF l_no_data_found THEN
8188         l_return_status := OKC_API.G_RET_STS_ERROR;
8189          IF (l_debug = 'Y') THEN
8190             OKC_DEBUG.log('10000 : Exiting Procedure get_clev_rec ', 2);
8191             OKC_DEBUG.ReSet_Indentation;
8192          END IF;
8193         return(l_return_status);
8194       ELSE
8195          IF (l_debug = 'Y') THEN
8196             OKC_DEBUG.log('30000 : Exiting Procedure get_clev_rec ', 2);
8197             OKC_DEBUG.ReSet_Indentation;
8198          END IF;
8199         return(l_return_status);
8200       END IF;
8201     EXCEPTION
8202       WHEN OTHERS THEN
8203         -- store SQL error message on message stack for caller
8204         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
8205         -- notify caller of an UNEXPECTED error
8206         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
8207          IF (l_debug = 'Y') THEN
8208             OKC_DEBUG.log('40000 : Exiting Procedure get_clev_rec ', 2);
8209             OKC_DEBUG.ReSet_Indentation;
8210          END IF;
8211         return(l_return_status);
8212     END get_clev_rec;
8213 
8214   ----------------------------------------------------------------------------
8215   --Function to populate the Header record to be copied.
8216   ----------------------------------------------------------------------------
8217     FUNCTION    get_chrv_rec(p_chr_id IN NUMBER,
8218 				x_chrv_rec OUT NOCOPY chrv_rec_type)
8219     				RETURN  VARCHAR2 IS
8220       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8221       l_no_data_found BOOLEAN := TRUE;
8222 
8223 -- Bug 1922121: Compilation errors on ktst115. Problem occurred
8224 -- because application_id is defined as varchar2(240) in
8225 -- okc_k_headers_bh/hv and as NUMBER in okc_k_headers_b/v. This gives
8226 -- problems in the UNION ALL because it tries to combine datatypes
8227 -- Fix: Put a to_char() around application_id in the first cursor
8228 
8229       CURSOR c_chrv_rec IS
8230       SELECT 	ID,
8231 		SFWT_FLAG,
8232 		CHR_ID_RESPONSE,
8233 		CHR_ID_AWARD,
8234 		INV_ORGANIZATION_ID,
8235 		to_char(APPLICATION_ID),
8236 		STS_CODE,
8237 		QCL_ID,
8238 		SCS_CODE,
8239 		CONTRACT_NUMBER,
8240 		CURRENCY_CODE,
8241 		CONTRACT_NUMBER_MODIFIER,
8242 		ARCHIVED_YN,
8243 		DELETED_YN,
8244 		CUST_PO_NUMBER_REQ_YN,
8245 		PRE_PAY_REQ_YN,
8246 		CUST_PO_NUMBER,
8247 		SHORT_DESCRIPTION,
8248 		COMMENTS,
8249 		DESCRIPTION,
8250 		DPAS_RATING,
8251 		COGNOMEN,
8252 		TEMPLATE_YN,
8253 		TEMPLATE_USED,
8254 		DATE_APPROVED,
8255 		DATETIME_CANCELLED,
8256 		AUTO_RENEW_DAYS,
8257 		DATE_ISSUED,
8258 		DATETIME_RESPONDED,
8259 		NON_RESPONSE_REASON,
8260 		NON_RESPONSE_EXPLAIN,
8261 		RFP_TYPE,
8262 		CHR_TYPE,
8263 		KEEP_ON_MAIL_LIST,
8264 		SET_ASIDE_REASON,
8265 		SET_ASIDE_PERCENT,
8266 		RESPONSE_COPIES_REQ,
8267 		DATE_CLOSE_PROJECTED,
8268 		DATETIME_PROPOSED,
8269 		DATE_SIGNED,
8270 		DATE_TERMINATED,
8271 		DATE_RENEWED,
8272 		TRN_CODE,
8273 		START_DATE,
8274 		END_DATE,
8275 		AUTHORING_ORG_ID,
8276 		BUY_OR_SELL,
8277 		ISSUE_OR_RECEIVE,
8278 		ESTIMATED_AMOUNT,
8279 		PROGRAM_ID,
8280                 REQUEST_ID,
8281                 PRICE_LIST_ID,
8282                 PRICING_DATE,
8283                 SIGN_BY_DATE,
8284                 PROGRAM_UPDATE_DATE,
8285                 TOTAL_LINE_LIST_PRICE,
8286                 PROGRAM_APPLICATION_ID,
8287 		ATTRIBUTE_CATEGORY,
8288 		ATTRIBUTE1,
8289 		ATTRIBUTE2,
8290 		ATTRIBUTE3,
8291 		ATTRIBUTE4,
8292 		ATTRIBUTE5,
8293 		ATTRIBUTE6,
8294 		ATTRIBUTE7,
8295 		ATTRIBUTE8,
8296 		ATTRIBUTE9,
8297 		ATTRIBUTE10,
8298 		ATTRIBUTE11,
8299 		ATTRIBUTE12,
8300 		ATTRIBUTE13,
8301 		ATTRIBUTE14,
8302 		ATTRIBUTE15,
8303           GOVERNING_CONTRACT_YN,
8304        -- new colums to replace rules
8305           CONVERSION_TYPE,
8306           CONVERSION_RATE,
8307           CONVERSION_RATE_DATE,
8308           CONVERSION_EURO_RATE,
8309           CUST_ACCT_ID,
8310           BILL_TO_SITE_USE_ID,
8311           INV_RULE_ID,
8312           RENEWAL_TYPE_CODE,
8313           RENEWAL_NOTIFY_TO,
8314           RENEWAL_END_DATE,
8315           SHIP_TO_SITE_USE_ID,
8316           PAYMENT_TERM_ID
8317 
8318       FROM	OKC_K_HEADERS_V
8319       WHERE	id = p_chr_id
8320         AND     G_COPY_HISTORY_YN = 'N'
8321   UNION ALL
8322       SELECT 	ID,
8323 		SFWT_FLAG,
8324 		CHR_ID_RESPONSE,
8325 		CHR_ID_AWARD,
8326 		INV_ORGANIZATION_ID,
8327 		APPLICATION_ID,
8328 		STS_CODE,
8329 		QCL_ID,
8330 		SCS_CODE,
8331 		CONTRACT_NUMBER,
8332 		CURRENCY_CODE,
8333 		CONTRACT_NUMBER_MODIFIER,
8334 		ARCHIVED_YN,
8335 		DELETED_YN,
8336 		CUST_PO_NUMBER_REQ_YN,
8337 		PRE_PAY_REQ_YN,
8338 		CUST_PO_NUMBER,
8339 		SHORT_DESCRIPTION,
8340 		COMMENTS,
8341 		DESCRIPTION,
8342 		DPAS_RATING,
8343 		COGNOMEN,
8344 		TEMPLATE_YN,
8345 		TEMPLATE_USED,
8346 		DATE_APPROVED,
8347 		DATETIME_CANCELLED,
8348 		AUTO_RENEW_DAYS,
8349 		DATE_ISSUED,
8350 		DATETIME_RESPONDED,
8351 		NON_RESPONSE_REASON,
8352 		NON_RESPONSE_EXPLAIN,
8353 		RFP_TYPE,
8354 		CHR_TYPE,
8355 		KEEP_ON_MAIL_LIST,
8356 		SET_ASIDE_REASON,
8357 		SET_ASIDE_PERCENT,
8358 		RESPONSE_COPIES_REQ,
8359 		DATE_CLOSE_PROJECTED,
8360 		DATETIME_PROPOSED,
8361 		DATE_SIGNED,
8362 		DATE_TERMINATED,
8363 		DATE_RENEWED,
8364 		TRN_CODE,
8365 		START_DATE,
8366 		END_DATE,
8367 		AUTHORING_ORG_ID,
8368 		BUY_OR_SELL,
8369 		ISSUE_OR_RECEIVE,
8370 		ESTIMATED_AMOUNT,
8371 		PROGRAM_ID,
8372                 REQUEST_ID,
8373                 PRICE_LIST_ID,
8374                 PRICING_DATE,
8375                 SIGN_BY_DATE,
8376                 PROGRAM_UPDATE_DATE,
8377                 TOTAL_LINE_LIST_PRICE,
8378                 PROGRAM_APPLICATION_ID,
8379 		ATTRIBUTE_CATEGORY,
8380 		ATTRIBUTE1,
8381 		ATTRIBUTE2,
8382 		ATTRIBUTE3,
8383 		ATTRIBUTE4,
8384 		ATTRIBUTE5,
8385 		ATTRIBUTE6,
8386 		ATTRIBUTE7,
8387 		ATTRIBUTE8,
8388 		ATTRIBUTE9,
8389 		ATTRIBUTE10,
8390 		ATTRIBUTE11,
8391 		ATTRIBUTE12,
8392 		ATTRIBUTE13,
8393 		ATTRIBUTE14,
8394 		ATTRIBUTE15,
8395           GOVERNING_CONTRACT_YN,
8396                       -- new colums to replace rules
8397           CONVERSION_TYPE,
8398           CONVERSION_RATE,
8399           CONVERSION_RATE_DATE,
8400           CONVERSION_EURO_RATE,
8401           CUST_ACCT_ID,
8402           BILL_TO_SITE_USE_ID,
8403           INV_RULE_ID,
8404           RENEWAL_TYPE_CODE,
8405           RENEWAL_NOTIFY_TO,
8406           RENEWAL_END_DATE,
8407           SHIP_TO_SITE_USE_ID,
8408           PAYMENT_TERM_ID
8409 
8410       FROM	OKC_K_HEADERS_HV
8411       WHERE	id = p_chr_id
8412         AND     major_version     = G_FROM_VERSION_NUMBER
8413         AND     G_COPY_HISTORY_YN = 'Y';
8414     BEGIN
8415       OPEN c_chrv_rec;
8416       FETCH c_chrv_rec
8417       INTO	x_chrv_rec.ID,
8418 		x_chrv_rec.SFWT_FLAG,
8419 		x_chrv_rec.CHR_ID_RESPONSE,
8420 		x_chrv_rec.CHR_ID_AWARD,
8421 		x_chrv_rec.INV_ORGANIZATION_ID,
8422 		x_chrv_rec.APPLICATION_ID,
8423 		x_chrv_rec.STS_CODE,
8424 		x_chrv_rec.QCL_ID,
8425 		x_chrv_rec.SCS_CODE,
8426 		x_chrv_rec.CONTRACT_NUMBER,
8427 		x_chrv_rec.CURRENCY_CODE,
8428 		x_chrv_rec.CONTRACT_NUMBER_MODIFIER,
8429 		x_chrv_rec.ARCHIVED_YN,
8430 		x_chrv_rec.DELETED_YN,
8431 		x_chrv_rec.CUST_PO_NUMBER_REQ_YN,
8432 		x_chrv_rec.PRE_PAY_REQ_YN,
8433 		x_chrv_rec.CUST_PO_NUMBER,
8434 		x_chrv_rec.SHORT_DESCRIPTION,
8435 		x_chrv_rec.COMMENTS,
8436 		x_chrv_rec.DESCRIPTION,
8437 		x_chrv_rec.DPAS_RATING,
8438 		x_chrv_rec.COGNOMEN,
8439 		x_chrv_rec.TEMPLATE_YN,
8440 		x_chrv_rec.TEMPLATE_USED,
8441 		x_chrv_rec.DATE_APPROVED,
8442 		x_chrv_rec.DATETIME_CANCELLED,
8443 		x_chrv_rec.AUTO_RENEW_DAYS,
8444 		x_chrv_rec.DATE_ISSUED,
8445 		x_chrv_rec.DATETIME_RESPONDED,
8446 		x_chrv_rec.NON_RESPONSE_REASON,
8447 		x_chrv_rec.NON_RESPONSE_EXPLAIN,
8448 		x_chrv_rec.RFP_TYPE,
8449 		x_chrv_rec.CHR_TYPE,
8450 		x_chrv_rec.KEEP_ON_MAIL_LIST,
8451 		x_chrv_rec.SET_ASIDE_REASON,
8452 		x_chrv_rec.SET_ASIDE_PERCENT,
8453 		x_chrv_rec.RESPONSE_COPIES_REQ,
8454 		x_chrv_rec.DATE_CLOSE_PROJECTED,
8455 		x_chrv_rec.DATETIME_PROPOSED,
8456 		x_chrv_rec.DATE_SIGNED,
8457 		x_chrv_rec.DATE_TERMINATED,
8458 		x_chrv_rec.DATE_RENEWED,
8459 		x_chrv_rec.TRN_CODE,
8460 		x_chrv_rec.START_DATE,
8461 		x_chrv_rec.END_DATE,
8462 		x_chrv_rec.AUTHORING_ORG_ID,
8463 		x_chrv_rec.BUY_OR_SELL,
8464 		x_chrv_rec.ISSUE_OR_RECEIVE,
8465 		x_chrv_rec.ESTIMATED_AMOUNT,
8466 		x_chrv_rec.PROGRAM_ID,
8467                 x_chrv_rec.REQUEST_ID,
8468                 x_chrv_rec.PRICE_LIST_ID,
8469                 x_chrv_rec.PRICING_DATE,
8470                 x_chrv_rec.SIGN_BY_DATE,
8471                 x_chrv_rec.PROGRAM_UPDATE_DATE,
8472                 x_chrv_rec.TOTAL_LINE_LIST_PRICE,
8473                 x_chrv_rec.PROGRAM_APPLICATION_ID,
8474 		x_chrv_rec.ATTRIBUTE_CATEGORY,
8475 		x_chrv_rec.ATTRIBUTE1,
8476 		x_chrv_rec.ATTRIBUTE2,
8477 		x_chrv_rec.ATTRIBUTE3,
8478 		x_chrv_rec.ATTRIBUTE4,
8479 		x_chrv_rec.ATTRIBUTE5,
8480 		x_chrv_rec.ATTRIBUTE6,
8481 		x_chrv_rec.ATTRIBUTE7,
8482 		x_chrv_rec.ATTRIBUTE8,
8483 		x_chrv_rec.ATTRIBUTE9,
8484 		x_chrv_rec.ATTRIBUTE10,
8485 		x_chrv_rec.ATTRIBUTE11,
8486 		x_chrv_rec.ATTRIBUTE12,
8487 		x_chrv_rec.ATTRIBUTE13,
8488 		x_chrv_rec.ATTRIBUTE14,
8489 		x_chrv_rec.ATTRIBUTE15,
8490           x_chrv_rec.GOVERNING_CONTRACT_YN,
8491                -- new colums to replace rules
8492           x_chrv_rec.CONVERSION_TYPE,
8493           x_chrv_rec.CONVERSION_RATE,
8494           x_chrv_rec.CONVERSION_RATE_DATE,
8495           x_chrv_rec.CONVERSION_EURO_RATE,
8496           x_chrv_rec.CUST_ACCT_ID,
8497           x_chrv_rec.BILL_TO_SITE_USE_ID,
8498           x_chrv_rec.INV_RULE_ID,
8499           x_chrv_rec.RENEWAL_TYPE_CODE,
8500           x_chrv_rec.RENEWAL_NOTIFY_TO,
8501           x_chrv_rec.RENEWAL_END_DATE,
8502           x_chrv_rec.SHIP_TO_SITE_USE_ID,
8503           x_chrv_rec.PAYMENT_TERM_ID;
8504 
8505       l_no_data_found := c_chrv_rec%NOTFOUND;
8506       CLOSE c_chrv_rec;
8507       IF l_no_data_found THEN
8508          l_return_status := OKC_API.G_RET_STS_ERROR;
8509          return(l_return_status);
8510       ELSE
8511          return(l_return_status);
8512       END IF;
8513      EXCEPTION
8514       WHEN OTHERS THEN
8515         -- store SQL error message on message stack for caller
8516         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
8517         -- notify caller of an UNEXPECTED error
8518         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
8519         return(l_return_status);
8520     END get_chrv_rec;
8521 
8522   ----------------------------------------------------------------------------
8523   --Function to populate the outcome record to be copied.
8524   ----------------------------------------------------------------------------
8525 
8526     FUNCTION    get_ocev_rec(p_oce_id IN NUMBER,
8527 				x_ocev_rec OUT NOCOPY ocev_rec_type) RETURN  VARCHAR2 IS
8528 
8529       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8530       l_no_data_found BOOLEAN := TRUE;
8531 
8532       CURSOR c_ocev_rec IS
8533       SELECT	ID,
8534                 SFWT_FLAG,
8535                 PDF_ID,
8536                 CNH_ID,
8537                 DNZ_CHR_ID,
8538                 ENABLED_YN,
8539                 COMMENTS,
8540                 ATTRIBUTE_CATEGORY,
8541                 ATTRIBUTE1,
8542                 ATTRIBUTE2,
8543                 ATTRIBUTE3,
8544                 ATTRIBUTE4,
8545                 ATTRIBUTE5,
8546                 ATTRIBUTE6,
8547                 ATTRIBUTE7,
8548                 ATTRIBUTE8,
8549                 ATTRIBUTE9,
8550                 ATTRIBUTE10,
8551                 ATTRIBUTE11,
8552                 ATTRIBUTE12,
8553                 ATTRIBUTE13,
8554                 ATTRIBUTE14,
8555                 ATTRIBUTE15
8556 	FROM    OKC_OUTCOMES_V
8557 	WHERE 	ID = p_oce_id
8558          AND    G_COPY_HISTORY_YN = 'N'
8559   UNION ALL
8560       SELECT	ID,
8561                 SFWT_FLAG,
8562                 PDF_ID,
8563                 CNH_ID,
8564                 DNZ_CHR_ID,
8565                 ENABLED_YN,
8566                 COMMENTS,
8567                 ATTRIBUTE_CATEGORY,
8568                 ATTRIBUTE1,
8569                 ATTRIBUTE2,
8570                 ATTRIBUTE3,
8571                 ATTRIBUTE4,
8572                 ATTRIBUTE5,
8573                 ATTRIBUTE6,
8574                 ATTRIBUTE7,
8575                 ATTRIBUTE8,
8576                 ATTRIBUTE9,
8577                 ATTRIBUTE10,
8578                 ATTRIBUTE11,
8579                 ATTRIBUTE12,
8580                 ATTRIBUTE13,
8581                 ATTRIBUTE14,
8582                 ATTRIBUTE15
8583 	FROM    OKC_OUTCOMES_HV
8584 	WHERE 	ID = p_oce_id
8585           AND   major_version     = G_FROM_VERSION_NUMBER
8586           AND   G_COPY_HISTORY_YN = 'Y';
8587     BEGIN
8588       OPEN c_ocev_rec;
8589       FETCH c_ocev_rec
8590       INTO	x_ocev_rec.ID,
8591                 x_ocev_rec.SFWT_FLAG,
8592                 x_ocev_rec.PDF_ID,
8593                 x_ocev_rec.CNH_ID,
8594                 x_ocev_rec.DNZ_CHR_ID,
8595                 x_ocev_rec.ENABLED_YN,
8596                 x_ocev_rec.COMMENTS,
8597                 x_ocev_rec.ATTRIBUTE_CATEGORY,
8598                 x_ocev_rec.ATTRIBUTE1,
8599                 x_ocev_rec.ATTRIBUTE2,
8600                 x_ocev_rec.ATTRIBUTE3,
8601                 x_ocev_rec.ATTRIBUTE4,
8602                 x_ocev_rec.ATTRIBUTE5,
8603                 x_ocev_rec.ATTRIBUTE6,
8604                 x_ocev_rec.ATTRIBUTE7,
8605                 x_ocev_rec.ATTRIBUTE8,
8606                 x_ocev_rec.ATTRIBUTE9,
8607                 x_ocev_rec.ATTRIBUTE10,
8608                 x_ocev_rec.ATTRIBUTE11,
8609                 x_ocev_rec.ATTRIBUTE12,
8610                 x_ocev_rec.ATTRIBUTE13,
8611                 x_ocev_rec.ATTRIBUTE14,
8612                 x_ocev_rec.ATTRIBUTE15;
8613 
8614       l_no_data_found := c_ocev_rec%NOTFOUND;
8615       CLOSE c_ocev_rec;
8616       IF l_no_data_found THEN
8617         l_return_status := OKC_API.G_RET_STS_ERROR;
8618         return(l_return_status);
8619       ELSE
8620         return(l_return_status);
8621       END IF;
8622     EXCEPTION
8623       WHEN OTHERS THEN
8624         -- store SQL error message on message stack for caller
8625         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
8626         -- notify caller of an UNEXPECTED error
8627         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
8628         return(l_return_status);
8629     END get_ocev_rec;
8630 
8631   ----------------------------------------------------------------------------
8632   --Function to populate the outcome arguments record to be copied.
8633   ----------------------------------------------------------------------------
8634     FUNCTION    get_oatv_rec(p_oat_id IN NUMBER,
8635 				x_oatv_rec OUT NOCOPY oatv_rec_type) RETURN  VARCHAR2 IS
8636 
8637       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8638       l_no_data_found BOOLEAN := TRUE;
8639 
8640       CURSOR c_oatv_rec IS
8641       SELECT	ID,
8642                 PDP_ID,
8643                 OCE_ID,
8644                 AAE_ID,
8645                 DNZ_CHR_ID,
8646                 VALUE
8647 	FROM    OKC_OUTCOME_ARGUMENTS_V
8648 	WHERE 	ID = p_oat_id
8649         AND     G_COPY_HISTORY_YN = 'N'
8650   UNION ALL
8651       SELECT	ID,
8652                 PDP_ID,
8653                 OCE_ID,
8654                 AAE_ID,
8655                 DNZ_CHR_ID,
8656                 VALUE
8657 	FROM    OKC_OUTCOME_ARGUMENTS_HV
8658 	WHERE 	ID = p_oat_id
8659         AND     major_version     = G_FROM_VERSION_NUMBER
8660         AND     G_COPY_HISTORY_YN = 'Y';
8661     BEGIN
8662       OPEN c_oatv_rec;
8663       FETCH c_oatv_rec
8664       INTO	x_oatv_rec.ID,
8665                 x_oatv_rec.PDP_ID,
8666                 x_oatv_rec.OCE_ID,
8667                 x_oatv_rec.AAE_ID,
8668                 x_oatv_rec.DNZ_CHR_ID,
8669                 x_oatv_rec.VALUE;
8670 
8671       l_no_data_found := c_oatv_rec%NOTFOUND;
8672       CLOSE c_oatv_rec;
8673       IF l_no_data_found THEN
8674         l_return_status := OKC_API.G_RET_STS_ERROR;
8675         return(l_return_status);
8676       ELSE
8677         return(l_return_status);
8678       END IF;
8679     EXCEPTION
8680       WHEN OTHERS THEN
8681         -- store SQL error message on message stack for caller
8682         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
8683         -- notify caller of an UNEXPECTED error
8684         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
8685         return(l_return_status);
8686 
8687     END get_oatv_rec;
8688 
8689   ----------------------------------------------------------------------------
8690   --Function to populate the sections record to be copied.
8691   ----------------------------------------------------------------------------
8692 
8693     FUNCTION    get_scnv_rec(p_scn_id IN NUMBER,
8694 				x_scnv_rec OUT NOCOPY scnv_rec_type) RETURN  VARCHAR2 IS
8695 
8696       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8697       l_no_data_found BOOLEAN := TRUE;
8698 
8699       CURSOR c_scnv_rec IS
8700       SELECT	 ID,
8701                 SCN_TYPE,
8702                 CHR_ID,
8703                 SAT_CODE,
8704                 SECTION_SEQUENCE,
8705                 LABEL,
8706                 HEADING,
8707                 SCN_ID,
8708                 SFWT_FLAG,
8709                 ATTRIBUTE_CATEGORY,
8710                 ATTRIBUTE1,
8711                 ATTRIBUTE2,
8712                 ATTRIBUTE3,
8713                 ATTRIBUTE4,
8714                 ATTRIBUTE5,
8715                 ATTRIBUTE6,
8716                 ATTRIBUTE7,
8717                 ATTRIBUTE8,
8718                 ATTRIBUTE9,
8719                 ATTRIBUTE10,
8720                 ATTRIBUTE11,
8721                 ATTRIBUTE12,
8722                 ATTRIBUTE13,
8723                 ATTRIBUTE14,
8724                 ATTRIBUTE15
8725 	FROM    OKC_SECTIONS_V
8726 	WHERE 	ID = p_scn_id;
8727     BEGIN
8728       OPEN c_scnv_rec;
8729       FETCH c_scnv_rec
8730       INTO	 x_scnv_rec.ID,
8731                 x_scnv_rec.SCN_TYPE,
8732                 x_scnv_rec.CHR_ID,
8733                 x_scnv_rec.SAT_CODE,
8734                 x_scnv_rec.SECTION_SEQUENCE,
8735                 x_scnv_rec.LABEL,
8736                 x_scnv_rec.HEADING,
8737                 x_scnv_rec.SCN_ID,
8738                 x_scnv_rec.SFWT_FLAG,
8739                 x_scnv_rec.ATTRIBUTE_CATEGORY,
8740                 x_scnv_rec.ATTRIBUTE1,
8741                 x_scnv_rec.ATTRIBUTE2,
8742                 x_scnv_rec.ATTRIBUTE3,
8743                 x_scnv_rec.ATTRIBUTE4,
8744                 x_scnv_rec.ATTRIBUTE5,
8745                 x_scnv_rec.ATTRIBUTE6,
8746                 x_scnv_rec.ATTRIBUTE7,
8747                 x_scnv_rec.ATTRIBUTE8,
8748                 x_scnv_rec.ATTRIBUTE9,
8749                 x_scnv_rec.ATTRIBUTE10,
8750                 x_scnv_rec.ATTRIBUTE11,
8751                 x_scnv_rec.ATTRIBUTE12,
8752                 x_scnv_rec.ATTRIBUTE13,
8753                 x_scnv_rec.ATTRIBUTE14,
8754                 x_scnv_rec.ATTRIBUTE15;
8755 
8756       l_no_data_found := c_scnv_rec%NOTFOUND;
8757       CLOSE c_scnv_rec;
8758       IF l_no_data_found THEN
8759         l_return_status := OKC_API.G_RET_STS_ERROR;
8760         return(l_return_status);
8761       ELSE
8762         return(l_return_status);
8763       END IF;
8764     EXCEPTION
8765       WHEN OTHERS THEN
8766         -- store SQL error message on message stack for caller
8767         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
8768         -- notify caller of an UNEXPECTED error
8769         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
8770         return(l_return_status);
8771 
8772     END get_scnv_rec;
8773 
8774   ----------------------------------------------------------------------------
8775   --Function to populate the section contents record to be copied.
8776   ----------------------------------------------------------------------------
8777 
8778     FUNCTION    get_sccv_rec(p_scc_id IN NUMBER,
8779 				x_sccv_rec OUT NOCOPY sccv_rec_type) RETURN  VARCHAR2 IS
8780 
8781       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8782       l_no_data_found BOOLEAN := TRUE;
8783 
8784       CURSOR c_sccv_rec IS
8785       SELECT	 ID,
8786                 SCN_ID,
8787                 LABEL,
8788                 CAT_ID,
8789                 CLE_ID,
8790                 SAE_ID,
8791                 CONTENT_SEQUENCE,
8792                 ATTRIBUTE_CATEGORY,
8793                 ATTRIBUTE1,
8794                 ATTRIBUTE2,
8795                 ATTRIBUTE3,
8796                 ATTRIBUTE4,
8797                 ATTRIBUTE5,
8798                 ATTRIBUTE6,
8799                 ATTRIBUTE7,
8800                 ATTRIBUTE8,
8801                 ATTRIBUTE9,
8802                 ATTRIBUTE10,
8803                 ATTRIBUTE11,
8804                 ATTRIBUTE12,
8805                 ATTRIBUTE13,
8806                 ATTRIBUTE14,
8807                 ATTRIBUTE15
8808 	FROM    OKC_SECTION_CONTENTS_V
8809 	WHERE 	ID = p_scc_id;
8810     BEGIN
8811       OPEN c_sccv_rec;
8812       FETCH c_sccv_rec
8813       INTO	 x_sccv_rec.ID,
8814                 x_sccv_rec.SCN_ID,
8815                 x_sccv_rec.LABEL,
8816                 x_sccv_rec.CAT_ID,
8817                 x_sccv_rec.CLE_ID,
8818                 x_sccv_rec.SAE_ID,
8819                 x_sccv_rec.CONTENT_SEQUENCE,
8820                 x_sccv_rec.ATTRIBUTE_CATEGORY,
8821                 x_sccv_rec.ATTRIBUTE1,
8822                 x_sccv_rec.ATTRIBUTE2,
8823                 x_sccv_rec.ATTRIBUTE3,
8824                 x_sccv_rec.ATTRIBUTE4,
8825                 x_sccv_rec.ATTRIBUTE5,
8826                 x_sccv_rec.ATTRIBUTE6,
8827                 x_sccv_rec.ATTRIBUTE7,
8828                 x_sccv_rec.ATTRIBUTE8,
8829                 x_sccv_rec.ATTRIBUTE9,
8830                 x_sccv_rec.ATTRIBUTE10,
8831                 x_sccv_rec.ATTRIBUTE11,
8832                 x_sccv_rec.ATTRIBUTE12,
8833                 x_sccv_rec.ATTRIBUTE13,
8834                 x_sccv_rec.ATTRIBUTE14,
8835                 x_sccv_rec.ATTRIBUTE15;
8836 
8837       l_no_data_found := c_sccv_rec%NOTFOUND;
8838       CLOSE c_sccv_rec;
8839       IF l_no_data_found THEN
8840         l_return_status := OKC_API.G_RET_STS_ERROR;
8841         return(l_return_status);
8842       ELSE
8843         return(l_return_status);
8844       END IF;
8845     EXCEPTION
8846       WHEN OTHERS THEN
8847         -- store SQL error message on message stack for caller
8848         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
8849         -- notify caller of an UNEXPECTED error
8850         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
8851         return(l_return_status);
8852 
8853     END get_sccv_rec;
8854 
8855   ----------------------------------------------------------------------------
8856   --Function to populate the price_attributes record to be copied.
8857   ----------------------------------------------------------------------------
8858      FUNCTION    get_patv_rec(p_pat_id IN NUMBER,
8859                                 x_patv_rec OUT NOCOPY patv_rec_type) RETURN  VARCHAR2 IS
8860 
8861       l_return_status           VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8862       l_no_data_found BOOLEAN := TRUE;
8863 
8864       CURSOR c_patv_rec IS
8865       SELECT
8866               --ID,
8867             PAT_ID,
8868             CHR_ID,
8869             CLE_ID,
8870             BSL_ID,
8871             BCL_ID,
8872             CREATED_BY,
8873             CREATION_DATE,
8874             LAST_UPDATED_BY,
8875             LAST_UPDATE_DATE,
8876             MODIFIED_FROM,
8877             MODIFIED_TO,
8878             MODIFIER_MECHANISM_TYPE_CODE,
8879             OPERAND,
8880             ARITHMETIC_OPERATOR,
8881             AUTOMATIC_FLAG,
8882             UPDATE_ALLOWED,
8883             UPDATED_FLAG,
8884             APPLIED_FLAG,
8885             ON_INVOICE_FLAG,
8886             PRICING_PHASE_ID,
8887            CONTEXT,
8888             PROGRAM_APPLICATION_ID,
8889             PROGRAM_ID,
8890             PROGRAM_UPDATE_DATE,
8891             REQUEST_ID,
8892             LIST_HEADER_ID,
8893             LIST_LINE_ID,
8894             LIST_LINE_TYPE_CODE,
8895             CHANGE_REASON_CODE,
8896             CHANGE_REASON_TEXT,
8897             ESTIMATED_FLAG,
8898             ADJUSTED_AMOUNT,
8899            CHARGE_TYPE_CODE,
8900            CHARGE_SUBTYPE_CODE,
8901            RANGE_BREAK_QUANTITY,
8902            ACCRUAL_CONVERSION_RATE,
8903            PRICING_GROUP_SEQUENCE,
8904            ACCRUAL_FLAG,
8905            LIST_LINE_NO,
8906            SOURCE_SYSTEM_CODE,
8907            BENEFIT_QTY,
8908            BENEFIT_UOM_CODE,
8909            EXPIRATION_DATE,
8910            MODIFIER_LEVEL_CODE,
8911            PRICE_BREAK_TYPE_CODE,
8912            SUBSTITUTION_ATTRIBUTE,
8913            PRORATION_TYPE_CODE,
8914            INCLUDE_ON_RETURNS_FLAG,
8915            OBJECT_VERSION_NUMBER,
8916             ATTRIBUTE1,
8917             ATTRIBUTE2,
8918             ATTRIBUTE3,
8919             ATTRIBUTE4,
8920             ATTRIBUTE5,
8921             ATTRIBUTE6,
8922             ATTRIBUTE7,
8923             ATTRIBUTE8,
8924             ATTRIBUTE9,
8925             ATTRIBUTE10,
8926             ATTRIBUTE11,
8927             ATTRIBUTE12,
8928             ATTRIBUTE13,
8929             ATTRIBUTE14,
8930             ATTRIBUTE15,
8931             LAST_UPDATE_LOGIN,
8932             REBATE_TRANSACTION_TYPE_CODE
8933              FROM    OKC_PRICE_ADJUSTMENTS_V
8934         WHERE   ID = p_pat_id;
8935     BEGIN
8936       OPEN c_patv_rec;
8937       FETCH c_patv_rec
8938       INTO
8939             --- x_patv_rec.ID,
8940               x_patv_rec.PAT_ID,
8941               x_patv_rec.CHR_ID,
8942               x_patv_rec.CLE_ID,
8943               x_patv_rec.BSL_ID,
8944               x_patv_rec.BCL_ID,
8945               x_patv_rec.CREATED_BY,
8946               x_patv_rec.CREATION_DATE,
8947               x_patv_rec.LAST_UPDATED_BY,
8948               x_patv_rec.LAST_UPDATE_DATE,
8949               x_patv_rec.MODIFIED_FROM,
8950               x_patv_rec.MODIFIED_TO,
8951               x_patv_rec.MODIFIER_MECHANISM_TYPE_CODE,
8952               x_patv_rec.OPERAND,
8953               x_patv_rec.ARITHMETIC_OPERATOR,
8954               x_patv_rec.AUTOMATIC_FLAG,
8955               x_patv_rec.UPDATE_ALLOWED,
8956               x_patv_rec.UPDATED_FLAG,
8957               x_patv_rec.APPLIED_FLAG,
8958               x_patv_rec.ON_INVOICE_FLAG,
8959               x_patv_rec.PRICING_PHASE_ID,
8960               x_patv_rec.CONTEXT,
8961            x_patv_rec.PROGRAM_APPLICATION_ID,
8962            x_patv_rec.PROGRAM_ID,
8963            x_patv_rec.PROGRAM_UPDATE_DATE,
8964            x_patv_rec.REQUEST_ID,
8965             x_patv_rec.LIST_HEADER_ID,
8966             x_patv_rec.LIST_LINE_ID,
8967            x_patv_rec.LIST_LINE_TYPE_CODE,
8968             x_patv_rec.CHANGE_REASON_CODE,
8969             x_patv_rec.CHANGE_REASON_TEXT,
8970             x_patv_rec.ESTIMATED_FLAG,
8971             x_patv_rec.ADJUSTED_AMOUNT,
8972            x_patv_rec.CHARGE_TYPE_CODE,
8973            x_patv_rec.CHARGE_SUBTYPE_CODE,
8974            x_patv_rec.RANGE_BREAK_QUANTITY,
8975            x_patv_rec.ACCRUAL_CONVERSION_RATE,
8976            x_patv_rec.PRICING_GROUP_SEQUENCE,
8977            x_patv_rec.ACCRUAL_FLAG,
8978             x_patv_rec.LIST_LINE_NO,
8979            x_patv_rec.SOURCE_SYSTEM_CODE,
8980            x_patv_rec.BENEFIT_QTY,
8981            x_patv_rec.BENEFIT_UOM_CODE,
8982            x_patv_rec.EXPIRATION_DATE,
8983            x_patv_rec.MODIFIER_LEVEL_CODE,
8984            x_patv_rec.PRICE_BREAK_TYPE_CODE,
8985            x_patv_rec.SUBSTITUTION_ATTRIBUTE,
8986            x_patv_rec.PRORATION_TYPE_CODE,
8987            x_patv_rec.INCLUDE_ON_RETURNS_FLAG,
8988            x_patv_rec.OBJECT_VERSION_NUMBER,
8989               x_patv_rec.ATTRIBUTE1,
8990               x_patv_rec.ATTRIBUTE2,
8991               x_patv_rec.ATTRIBUTE3,
8992               x_patv_rec.ATTRIBUTE4,
8993               x_patv_rec.ATTRIBUTE5,
8994               x_patv_rec.ATTRIBUTE6,
8995               x_patv_rec.ATTRIBUTE7,
8996               x_patv_rec.ATTRIBUTE8,
8997               x_patv_rec.ATTRIBUTE9,
8998               x_patv_rec.ATTRIBUTE10,
8999               x_patv_rec.ATTRIBUTE11,
9000               x_patv_rec.ATTRIBUTE12,
9001               x_patv_rec.ATTRIBUTE13,
9002               x_patv_rec.ATTRIBUTE14,
9003               x_patv_rec.ATTRIBUTE15,
9004               x_patv_rec.LAST_UPDATE_LOGIN,
9005               x_patv_rec.REBATE_TRANSACTION_TYPE_CODE;
9006 
9007                l_no_data_found := c_patv_rec%NOTFOUND;
9008       CLOSE c_patv_rec;
9009       IF l_no_data_found THEN
9010         l_return_status := OKC_API.G_RET_STS_ERROR;
9011         return(l_return_status);
9012       ELSE
9013         return(l_return_status);
9014       END IF;
9015     EXCEPTION
9016       WHEN OTHERS THEN
9017         -- store SQL error message on message stack for caller
9018         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
9019         -- notify caller of an UNEXPECTED error
9020         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
9021         return(l_return_status);
9022 
9023     END get_patv_rec;
9024 --------------------------------------------------------------------------------------------------
9025 
9026     FUNCTION    get_pacv_rec(p_pac_id IN NUMBER,
9027                                 x_pacv_rec OUT NOCOPY pacv_rec_type) RETURN  VARCHAR2 IS
9028 
9029       l_return_status           VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
9030       l_no_data_found BOOLEAN := TRUE;
9031 
9032       CURSOR c_pacv_rec IS
9033       SELECT
9034            ID,
9035             PAT_ID,
9036             PAT_ID_FROM,
9037             BSL_ID,
9038             CLE_ID,
9039             BCL_ID,
9040             CREATED_BY,
9041             CREATION_DATE,
9042             LAST_UPDATED_BY,
9043             LAST_UPDATE_DATE,
9044             LAST_UPDATE_LOGIN,
9045             PROGRAM_APPLICATION_ID,
9046             PROGRAM_ID,
9047             PROGRAM_UPDATE_DATE,
9048             REQUEST_ID,
9049             OBJECT_VERSION_NUMBER
9050         FROM    OKC_PRICE_ADJ_ASSOCS_V
9051         WHERE   ID = p_pac_id;
9052     BEGIN
9053       OPEN c_pacv_rec;
9054       FETCH c_pacv_rec
9055       INTO
9056               x_pacv_rec.ID,
9057               x_pacv_rec.PAT_ID,
9058               x_pacv_rec.PAT_ID_FROM,
9059               x_pacv_rec.BSL_ID,
9060               x_pacv_rec.CLE_ID,
9061               x_pacv_rec.BCL_ID,
9062               x_pacv_rec.CREATED_BY,
9063               x_pacv_rec.CREATION_DATE,
9064               x_pacv_rec.LAST_UPDATED_BY,
9065               x_pacv_rec.LAST_UPDATE_DATE,
9066               x_pacv_rec.LAST_UPDATE_LOGIN,
9067               x_pacv_rec.PROGRAM_APPLICATION_ID,
9068               x_pacv_rec.PROGRAM_ID,
9069               x_pacv_rec.PROGRAM_UPDATE_DATE,
9070               x_pacv_rec.REQUEST_ID,
9071               x_pacv_rec.OBJECT_VERSION_NUMBER;
9072               l_no_data_found := c_pacv_rec%NOTFOUND;
9073       CLOSE c_pacv_rec;
9074       IF l_no_data_found THEN
9075         l_return_status := OKC_API.G_RET_STS_ERROR;
9076         return(l_return_status);
9077       ELSE
9078         return(l_return_status);
9079       END IF;
9080     EXCEPTION
9081       WHEN OTHERS THEN
9082         -- store SQL error message on message stack for caller
9083         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
9084         -- notify caller of an UNEXPECTED error
9085         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
9086         return(l_return_status);
9087 
9088     END get_pacv_rec;
9089 ----------------------------------------------------------------------------------------------
9090         FUNCTION    get_paav_rec(p_paa_id IN NUMBER,
9091                                 x_paav_rec OUT NOCOPY paav_rec_type) RETURN  VARCHAR2 IS
9092 
9093       l_return_status           VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
9094       l_no_data_found BOOLEAN := TRUE;
9095 
9096       CURSOR c_paav_rec IS
9097       SELECT
9098            ID,
9099             PAT_ID,
9100             FLEX_TITLE,
9101             PRICING_CONTEXT,
9102             PRICING_ATTRIBUTE,
9103             CREATED_BY,
9104             CREATION_DATE,
9105             LAST_UPDATED_BY,
9106             LAST_UPDATE_DATE,
9107             PRICING_ATTR_VALUE_FROM,
9108             PRICING_ATTR_VALUE_TO,
9109             COMPARISON_OPERATOR,
9110             LAST_UPDATE_LOGIN,
9111             PROGRAM_APPLICATION_ID,
9112             PROGRAM_ID,
9113             PROGRAM_UPDATE_DATE,
9114             REQUEST_ID,
9115            OBJECT_VERSION_NUMBER
9116              FROM    OKC_PRICE_ADJ_ATTRIBS_V
9117         WHERE   ID = p_paa_id;
9118     BEGIN
9119       OPEN c_paav_rec;
9120       FETCH c_paav_rec
9121       INTO
9122          x_paav_rec.ID,
9123               x_paav_rec.PAT_ID,
9124               x_paav_rec.FLEX_TITLE,
9125               x_paav_rec.PRICING_CONTEXT,
9126               x_paav_rec.PRICING_ATTRIBUTE,
9127               x_paav_rec.CREATED_BY,
9128               x_paav_rec.CREATION_DATE,
9129               x_paav_rec.LAST_UPDATED_BY,
9130               x_paav_rec.LAST_UPDATE_DATE,
9131               x_paav_rec.PRICING_ATTR_VALUE_FROM,
9132               x_paav_rec.PRICING_ATTR_VALUE_TO,
9133               x_paav_rec.COMPARISON_OPERATOR,
9134               x_paav_rec.LAST_UPDATE_LOGIN,
9135               x_paav_rec.PROGRAM_APPLICATION_ID,
9136               x_paav_rec.PROGRAM_ID,
9137               x_paav_rec.PROGRAM_UPDATE_DATE,
9138               x_paav_rec.REQUEST_ID,
9139               x_paav_rec.OBJECT_VERSION_NUMBER;
9140                  l_no_data_found := c_paav_rec%NOTFOUND;
9141       CLOSE c_paav_rec;
9142       IF l_no_data_found THEN
9143         l_return_status := OKC_API.G_RET_STS_ERROR;
9144         return(l_return_status);
9145       ELSE
9146         return(l_return_status);
9147       END IF;
9148     EXCEPTION
9149       WHEN OTHERS THEN
9150         -- store SQL error message on message stack for caller
9151         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
9152         -- notify caller of an UNEXPECTED error
9153         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
9154         return(l_return_status);
9155 
9156     END get_paav_rec;
9157 
9158 
9159 -----------------------------------------------------------------------------------------------
9160     FUNCTION    get_pavv_rec(p_pav_id IN NUMBER,
9161 				x_pavv_rec OUT NOCOPY pavv_rec_type) RETURN  VARCHAR2 IS
9162 
9163       l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
9164       l_no_data_found BOOLEAN := TRUE;
9165 
9166       CURSOR c_pavv_rec IS
9167       SELECT	ID,
9168                 CHR_ID,
9169                 CLE_ID,
9170                 FLEX_TITLE,
9171                 PRICING_CONTEXT,
9172                 PRICING_ATTRIBUTE1,
9173                 PRICING_ATTRIBUTE2,
9174                 PRICING_ATTRIBUTE3,
9175                 PRICING_ATTRIBUTE4,
9176                 PRICING_ATTRIBUTE5,
9177                 PRICING_ATTRIBUTE6,
9178                 PRICING_ATTRIBUTE7,
9179                 PRICING_ATTRIBUTE8,
9180                 PRICING_ATTRIBUTE9,
9181                 PRICING_ATTRIBUTE10,
9182                 PRICING_ATTRIBUTE11,
9183                 PRICING_ATTRIBUTE12,
9184                 PRICING_ATTRIBUTE13,
9185                 PRICING_ATTRIBUTE14,
9186                 PRICING_ATTRIBUTE15,
9187                 PRICING_ATTRIBUTE16,
9188                 PRICING_ATTRIBUTE17,
9189                 PRICING_ATTRIBUTE18,
9190                 PRICING_ATTRIBUTE19,
9191                 PRICING_ATTRIBUTE20,
9192                 PRICING_ATTRIBUTE21,
9193                 PRICING_ATTRIBUTE22,
9194                 PRICING_ATTRIBUTE23,
9195                 PRICING_ATTRIBUTE24,
9196                 PRICING_ATTRIBUTE25,
9197                 PRICING_ATTRIBUTE26,
9198                 PRICING_ATTRIBUTE27,
9199                 PRICING_ATTRIBUTE28,
9200                 PRICING_ATTRIBUTE29,
9201                 PRICING_ATTRIBUTE30,
9202                 PRICING_ATTRIBUTE31,
9203                 PRICING_ATTRIBUTE32,
9204                 PRICING_ATTRIBUTE33,
9205                 PRICING_ATTRIBUTE34,
9206                 PRICING_ATTRIBUTE35,
9207                 PRICING_ATTRIBUTE36,
9208                 PRICING_ATTRIBUTE37,
9209                 PRICING_ATTRIBUTE38,
9210                 PRICING_ATTRIBUTE39,
9211                 PRICING_ATTRIBUTE40,
9212                 PRICING_ATTRIBUTE41,
9213                 PRICING_ATTRIBUTE42,
9214                 PRICING_ATTRIBUTE43,
9215                 PRICING_ATTRIBUTE44,
9216                 PRICING_ATTRIBUTE45,
9217                 PRICING_ATTRIBUTE46,
9218                 PRICING_ATTRIBUTE47,
9219                 PRICING_ATTRIBUTE48,
9220                 PRICING_ATTRIBUTE49,
9221                 PRICING_ATTRIBUTE50,
9222                 PRICING_ATTRIBUTE51,
9223                 PRICING_ATTRIBUTE52,
9224                 PRICING_ATTRIBUTE53,
9225                 PRICING_ATTRIBUTE54,
9226                 PRICING_ATTRIBUTE55,
9227                 PRICING_ATTRIBUTE56,
9228                 PRICING_ATTRIBUTE57,
9229                 PRICING_ATTRIBUTE58,
9230                 PRICING_ATTRIBUTE59,
9231                 PRICING_ATTRIBUTE60,
9232                 PRICING_ATTRIBUTE61,
9233                 PRICING_ATTRIBUTE62,
9234                 PRICING_ATTRIBUTE63,
9235                 PRICING_ATTRIBUTE64,
9236                 PRICING_ATTRIBUTE65,
9237                 PRICING_ATTRIBUTE66,
9238                 PRICING_ATTRIBUTE67,
9239                 PRICING_ATTRIBUTE68,
9240                 PRICING_ATTRIBUTE69,
9241                 PRICING_ATTRIBUTE70,
9242                 PRICING_ATTRIBUTE71,
9243                 PRICING_ATTRIBUTE72,
9244                 PRICING_ATTRIBUTE73,
9245                 PRICING_ATTRIBUTE74,
9246                 PRICING_ATTRIBUTE75,
9247                 PRICING_ATTRIBUTE76,
9248                 PRICING_ATTRIBUTE77,
9249                 PRICING_ATTRIBUTE78,
9250                 PRICING_ATTRIBUTE79,
9251                 PRICING_ATTRIBUTE80,
9252                 PRICING_ATTRIBUTE81,
9253                 PRICING_ATTRIBUTE82,
9254                 PRICING_ATTRIBUTE83,
9255                 PRICING_ATTRIBUTE84,
9256                 PRICING_ATTRIBUTE85,
9257                 PRICING_ATTRIBUTE86,
9258                 PRICING_ATTRIBUTE87,
9259                 PRICING_ATTRIBUTE88,
9260                 PRICING_ATTRIBUTE89,
9261                 PRICING_ATTRIBUTE90,
9262                 PRICING_ATTRIBUTE91,
9263                 PRICING_ATTRIBUTE92,
9264                 PRICING_ATTRIBUTE93,
9265                 PRICING_ATTRIBUTE94,
9266                 PRICING_ATTRIBUTE95,
9267                 PRICING_ATTRIBUTE96,
9268                 PRICING_ATTRIBUTE97,
9269                 PRICING_ATTRIBUTE98,
9270                 PRICING_ATTRIBUTE99,
9271                 PRICING_ATTRIBUTE100,
9272                 QUALIFIER_CONTEXT,
9273                 QUALIFIER_ATTRIBUTE1,
9274                 QUALIFIER_ATTRIBUTE2,
9275                 QUALIFIER_ATTRIBUTE3,
9276                 QUALIFIER_ATTRIBUTE4,
9277                 QUALIFIER_ATTRIBUTE5,
9278                 QUALIFIER_ATTRIBUTE6,
9279                 QUALIFIER_ATTRIBUTE7,
9280                 QUALIFIER_ATTRIBUTE8,
9281                 QUALIFIER_ATTRIBUTE9,
9282                 QUALIFIER_ATTRIBUTE10,
9283                 QUALIFIER_ATTRIBUTE11,
9284                 QUALIFIER_ATTRIBUTE12,
9285                 QUALIFIER_ATTRIBUTE13,
9286                 QUALIFIER_ATTRIBUTE14,
9287                 QUALIFIER_ATTRIBUTE15,
9288                 QUALIFIER_ATTRIBUTE16,
9289                 QUALIFIER_ATTRIBUTE17,
9290                 QUALIFIER_ATTRIBUTE18,
9291                 QUALIFIER_ATTRIBUTE19,
9292                 QUALIFIER_ATTRIBUTE20,
9293                 QUALIFIER_ATTRIBUTE21,
9294                 QUALIFIER_ATTRIBUTE22,
9295                 QUALIFIER_ATTRIBUTE23,
9296                 QUALIFIER_ATTRIBUTE24,
9297                 QUALIFIER_ATTRIBUTE25,
9298                 QUALIFIER_ATTRIBUTE26,
9299                 QUALIFIER_ATTRIBUTE27,
9300                 QUALIFIER_ATTRIBUTE28,
9301                 QUALIFIER_ATTRIBUTE29,
9302                 QUALIFIER_ATTRIBUTE30,
9303                 QUALIFIER_ATTRIBUTE31,
9304                 QUALIFIER_ATTRIBUTE32,
9305                 QUALIFIER_ATTRIBUTE33,
9306                 QUALIFIER_ATTRIBUTE34,
9307                 QUALIFIER_ATTRIBUTE35,
9308                 QUALIFIER_ATTRIBUTE36,
9309                 QUALIFIER_ATTRIBUTE37,
9310                 QUALIFIER_ATTRIBUTE38,
9311                 QUALIFIER_ATTRIBUTE39,
9312                 QUALIFIER_ATTRIBUTE40,
9313                 QUALIFIER_ATTRIBUTE41,
9314                 QUALIFIER_ATTRIBUTE42,
9315                 QUALIFIER_ATTRIBUTE43,
9316                 QUALIFIER_ATTRIBUTE44,
9317                 QUALIFIER_ATTRIBUTE45,
9318                 QUALIFIER_ATTRIBUTE46,
9319                 QUALIFIER_ATTRIBUTE47,
9320                 QUALIFIER_ATTRIBUTE48,
9321                 QUALIFIER_ATTRIBUTE49,
9322                 QUALIFIER_ATTRIBUTE50,
9323                 QUALIFIER_ATTRIBUTE51,
9324                 QUALIFIER_ATTRIBUTE52,
9325                 QUALIFIER_ATTRIBUTE53,
9326                 QUALIFIER_ATTRIBUTE54,
9327                 QUALIFIER_ATTRIBUTE55,
9328                 QUALIFIER_ATTRIBUTE56,
9329                 QUALIFIER_ATTRIBUTE57,
9330                 QUALIFIER_ATTRIBUTE58,
9331                 QUALIFIER_ATTRIBUTE59,
9332                 QUALIFIER_ATTRIBUTE60,
9333                 QUALIFIER_ATTRIBUTE61,
9334                 QUALIFIER_ATTRIBUTE62,
9335                 QUALIFIER_ATTRIBUTE63,
9336                 QUALIFIER_ATTRIBUTE64,
9337                 QUALIFIER_ATTRIBUTE65,
9338                 QUALIFIER_ATTRIBUTE66,
9339                 QUALIFIER_ATTRIBUTE67,
9340                 QUALIFIER_ATTRIBUTE68,
9341                 QUALIFIER_ATTRIBUTE69,
9342                 QUALIFIER_ATTRIBUTE70,
9343                 QUALIFIER_ATTRIBUTE71,
9344                 QUALIFIER_ATTRIBUTE72,
9345                 QUALIFIER_ATTRIBUTE73,
9346                 QUALIFIER_ATTRIBUTE74,
9347                 QUALIFIER_ATTRIBUTE75,
9348                 QUALIFIER_ATTRIBUTE76,
9349                 QUALIFIER_ATTRIBUTE77,
9350                 QUALIFIER_ATTRIBUTE78,
9351                 QUALIFIER_ATTRIBUTE79,
9352                 QUALIFIER_ATTRIBUTE80,
9353                 QUALIFIER_ATTRIBUTE81,
9354                 QUALIFIER_ATTRIBUTE82,
9355                 QUALIFIER_ATTRIBUTE83,
9356                 QUALIFIER_ATTRIBUTE84,
9357                 QUALIFIER_ATTRIBUTE85,
9358                 QUALIFIER_ATTRIBUTE86,
9359                 QUALIFIER_ATTRIBUTE87,
9360                 QUALIFIER_ATTRIBUTE88,
9361                 QUALIFIER_ATTRIBUTE89,
9362                 QUALIFIER_ATTRIBUTE90,
9363                 QUALIFIER_ATTRIBUTE91,
9364                 QUALIFIER_ATTRIBUTE92,
9365                 QUALIFIER_ATTRIBUTE93,
9366                 QUALIFIER_ATTRIBUTE94,
9367                 QUALIFIER_ATTRIBUTE95,
9368                 QUALIFIER_ATTRIBUTE96,
9369                 QUALIFIER_ATTRIBUTE97,
9370                 QUALIFIER_ATTRIBUTE98,
9371                 QUALIFIER_ATTRIBUTE99,
9372                 QUALIFIER_ATTRIBUTE100
9373 	FROM    OKC_PRICE_ATT_VALUES_V
9374        	WHERE   ID = p_pav_id;
9375     BEGIN
9376       OPEN c_pavv_rec;
9377       FETCH c_pavv_rec
9378       INTO	x_pavv_rec.ID,
9379                 x_pavv_rec.CHR_ID,
9380                 x_pavv_rec.CLE_ID,
9381                 x_pavv_rec.FLEX_TITLE,
9382                 x_pavv_rec.PRICING_CONTEXT,
9383                 x_pavv_rec.PRICING_ATTRIBUTE1,
9384                 x_pavv_rec.PRICING_ATTRIBUTE2,
9385                 x_pavv_rec.PRICING_ATTRIBUTE3,
9386                 x_pavv_rec.PRICING_ATTRIBUTE4,
9387                 x_pavv_rec.PRICING_ATTRIBUTE5,
9388                 x_pavv_rec.PRICING_ATTRIBUTE6,
9389                 x_pavv_rec.PRICING_ATTRIBUTE7,
9390                 x_pavv_rec.PRICING_ATTRIBUTE8,
9391                 x_pavv_rec.PRICING_ATTRIBUTE9,
9392                 x_pavv_rec.PRICING_ATTRIBUTE10,
9393                 x_pavv_rec.PRICING_ATTRIBUTE11,
9394                 x_pavv_rec.PRICING_ATTRIBUTE12,
9395                 x_pavv_rec.PRICING_ATTRIBUTE13,
9396                 x_pavv_rec.PRICING_ATTRIBUTE14,
9397                 x_pavv_rec.PRICING_ATTRIBUTE15,
9398                 x_pavv_rec.PRICING_ATTRIBUTE16,
9399                 x_pavv_rec.PRICING_ATTRIBUTE17,
9400                 x_pavv_rec.PRICING_ATTRIBUTE18,
9401                 x_pavv_rec.PRICING_ATTRIBUTE19,
9402                 x_pavv_rec.PRICING_ATTRIBUTE20,
9403                 x_pavv_rec.PRICING_ATTRIBUTE21,
9404                 x_pavv_rec.PRICING_ATTRIBUTE22,
9405                 x_pavv_rec.PRICING_ATTRIBUTE23,
9406                 x_pavv_rec.PRICING_ATTRIBUTE24,
9407                 x_pavv_rec.PRICING_ATTRIBUTE25,
9408                 x_pavv_rec.PRICING_ATTRIBUTE26,
9409                 x_pavv_rec.PRICING_ATTRIBUTE27,
9410                 x_pavv_rec.PRICING_ATTRIBUTE28,
9411                 x_pavv_rec.PRICING_ATTRIBUTE29,
9412                 x_pavv_rec.PRICING_ATTRIBUTE30,
9413                 x_pavv_rec.PRICING_ATTRIBUTE31,
9414                 x_pavv_rec.PRICING_ATTRIBUTE32,
9415                 x_pavv_rec.PRICING_ATTRIBUTE33,
9416                 x_pavv_rec.PRICING_ATTRIBUTE34,
9417                 x_pavv_rec.PRICING_ATTRIBUTE35,
9418                 x_pavv_rec.PRICING_ATTRIBUTE36,
9419                 x_pavv_rec.PRICING_ATTRIBUTE37,
9420                 x_pavv_rec.PRICING_ATTRIBUTE38,
9421                 x_pavv_rec.PRICING_ATTRIBUTE39,
9422                 x_pavv_rec.PRICING_ATTRIBUTE40,
9423                 x_pavv_rec.PRICING_ATTRIBUTE41,
9424                 x_pavv_rec.PRICING_ATTRIBUTE42,
9425                 x_pavv_rec.PRICING_ATTRIBUTE43,
9426                 x_pavv_rec.PRICING_ATTRIBUTE44,
9427                 x_pavv_rec.PRICING_ATTRIBUTE45,
9428                 x_pavv_rec.PRICING_ATTRIBUTE46,
9429                 x_pavv_rec.PRICING_ATTRIBUTE47,
9430                 x_pavv_rec.PRICING_ATTRIBUTE48,
9431                 x_pavv_rec.PRICING_ATTRIBUTE49,
9432                 x_pavv_rec.PRICING_ATTRIBUTE50,
9433                 x_pavv_rec.PRICING_ATTRIBUTE51,
9434                 x_pavv_rec.PRICING_ATTRIBUTE52,
9435                 x_pavv_rec.PRICING_ATTRIBUTE53,
9436                 x_pavv_rec.PRICING_ATTRIBUTE54,
9437                 x_pavv_rec.PRICING_ATTRIBUTE55,
9438                 x_pavv_rec.PRICING_ATTRIBUTE56,
9439                 x_pavv_rec.PRICING_ATTRIBUTE57,
9440                 x_pavv_rec.PRICING_ATTRIBUTE58,
9441                 x_pavv_rec.PRICING_ATTRIBUTE59,
9442                 x_pavv_rec.PRICING_ATTRIBUTE60,
9443                 x_pavv_rec.PRICING_ATTRIBUTE61,
9444                 x_pavv_rec.PRICING_ATTRIBUTE62,
9445                 x_pavv_rec.PRICING_ATTRIBUTE63,
9446                 x_pavv_rec.PRICING_ATTRIBUTE64,
9447                 x_pavv_rec.PRICING_ATTRIBUTE65,
9448                 x_pavv_rec.PRICING_ATTRIBUTE66,
9449                 x_pavv_rec.PRICING_ATTRIBUTE67,
9450                 x_pavv_rec.PRICING_ATTRIBUTE68,
9451                 x_pavv_rec.PRICING_ATTRIBUTE69,
9452                 x_pavv_rec.PRICING_ATTRIBUTE70,
9453                 x_pavv_rec.PRICING_ATTRIBUTE71,
9454                 x_pavv_rec.PRICING_ATTRIBUTE72,
9455                 x_pavv_rec.PRICING_ATTRIBUTE73,
9456                 x_pavv_rec.PRICING_ATTRIBUTE74,
9457                 x_pavv_rec.PRICING_ATTRIBUTE75,
9458                 x_pavv_rec.PRICING_ATTRIBUTE76,
9459                 x_pavv_rec.PRICING_ATTRIBUTE77,
9460                 x_pavv_rec.PRICING_ATTRIBUTE78,
9461                 x_pavv_rec.PRICING_ATTRIBUTE79,
9462                 x_pavv_rec.PRICING_ATTRIBUTE80,
9463                 x_pavv_rec.PRICING_ATTRIBUTE81,
9464                 x_pavv_rec.PRICING_ATTRIBUTE82,
9465                 x_pavv_rec.PRICING_ATTRIBUTE83,
9466                 x_pavv_rec.PRICING_ATTRIBUTE84,
9467                 x_pavv_rec.PRICING_ATTRIBUTE85,
9468                 x_pavv_rec.PRICING_ATTRIBUTE86,
9469                 x_pavv_rec.PRICING_ATTRIBUTE87,
9470                 x_pavv_rec.PRICING_ATTRIBUTE88,
9471                 x_pavv_rec.PRICING_ATTRIBUTE89,
9472                 x_pavv_rec.PRICING_ATTRIBUTE90,
9473                 x_pavv_rec.PRICING_ATTRIBUTE91,
9474                 x_pavv_rec.PRICING_ATTRIBUTE92,
9475                 x_pavv_rec.PRICING_ATTRIBUTE93,
9476                 x_pavv_rec.PRICING_ATTRIBUTE94,
9477                 x_pavv_rec.PRICING_ATTRIBUTE95,
9478                 x_pavv_rec.PRICING_ATTRIBUTE96,
9479                 x_pavv_rec.PRICING_ATTRIBUTE97,
9480                 x_pavv_rec.PRICING_ATTRIBUTE98,
9481                 x_pavv_rec.PRICING_ATTRIBUTE99,
9482                 x_pavv_rec.PRICING_ATTRIBUTE100,
9483                 x_pavv_rec.QUALIFIER_CONTEXT,
9484                 x_pavv_rec.QUALIFIER_ATTRIBUTE1,
9485                 x_pavv_rec.QUALIFIER_ATTRIBUTE2,
9486                 x_pavv_rec.QUALIFIER_ATTRIBUTE3,
9487                 x_pavv_rec.QUALIFIER_ATTRIBUTE4,
9488                 x_pavv_rec.QUALIFIER_ATTRIBUTE5,
9489                 x_pavv_rec.QUALIFIER_ATTRIBUTE6,
9490                 x_pavv_rec.QUALIFIER_ATTRIBUTE7,
9491                 x_pavv_rec.QUALIFIER_ATTRIBUTE8,
9492                 x_pavv_rec.QUALIFIER_ATTRIBUTE9,
9493                 x_pavv_rec.QUALIFIER_ATTRIBUTE10,
9494                 x_pavv_rec.QUALIFIER_ATTRIBUTE11,
9495                 x_pavv_rec.QUALIFIER_ATTRIBUTE12,
9496                 x_pavv_rec.QUALIFIER_ATTRIBUTE13,
9497                 x_pavv_rec.QUALIFIER_ATTRIBUTE14,
9498                 x_pavv_rec.QUALIFIER_ATTRIBUTE15,
9499                 x_pavv_rec.QUALIFIER_ATTRIBUTE16,
9500                 x_pavv_rec.QUALIFIER_ATTRIBUTE17,
9501                 x_pavv_rec.QUALIFIER_ATTRIBUTE18,
9502                 x_pavv_rec.QUALIFIER_ATTRIBUTE19,
9503                 x_pavv_rec.QUALIFIER_ATTRIBUTE20,
9504                 x_pavv_rec.QUALIFIER_ATTRIBUTE21,
9505                 x_pavv_rec.QUALIFIER_ATTRIBUTE22,
9506                 x_pavv_rec.QUALIFIER_ATTRIBUTE23,
9507                 x_pavv_rec.QUALIFIER_ATTRIBUTE24,
9508                 x_pavv_rec.QUALIFIER_ATTRIBUTE25,
9509                 x_pavv_rec.QUALIFIER_ATTRIBUTE26,
9510                 x_pavv_rec.QUALIFIER_ATTRIBUTE27,
9511                 x_pavv_rec.QUALIFIER_ATTRIBUTE28,
9512                 x_pavv_rec.QUALIFIER_ATTRIBUTE29,
9513                 x_pavv_rec.QUALIFIER_ATTRIBUTE30,
9514                 x_pavv_rec.QUALIFIER_ATTRIBUTE31,
9515                 x_pavv_rec.QUALIFIER_ATTRIBUTE32,
9516                 x_pavv_rec.QUALIFIER_ATTRIBUTE33,
9517                 x_pavv_rec.QUALIFIER_ATTRIBUTE34,
9518                 x_pavv_rec.QUALIFIER_ATTRIBUTE35,
9519                 x_pavv_rec.QUALIFIER_ATTRIBUTE36,
9520                 x_pavv_rec.QUALIFIER_ATTRIBUTE37,
9521                 x_pavv_rec.QUALIFIER_ATTRIBUTE38,
9522                 x_pavv_rec.QUALIFIER_ATTRIBUTE39,
9523                 x_pavv_rec.QUALIFIER_ATTRIBUTE40,
9524                 x_pavv_rec.QUALIFIER_ATTRIBUTE41,
9525                 x_pavv_rec.QUALIFIER_ATTRIBUTE42,
9526                 x_pavv_rec.QUALIFIER_ATTRIBUTE43,
9527                 x_pavv_rec.QUALIFIER_ATTRIBUTE44,
9528                 x_pavv_rec.QUALIFIER_ATTRIBUTE45,
9529                 x_pavv_rec.QUALIFIER_ATTRIBUTE46,
9530                 x_pavv_rec.QUALIFIER_ATTRIBUTE47,
9531                 x_pavv_rec.QUALIFIER_ATTRIBUTE48,
9532                 x_pavv_rec.QUALIFIER_ATTRIBUTE49,
9533                 x_pavv_rec.QUALIFIER_ATTRIBUTE50,
9534                 x_pavv_rec.QUALIFIER_ATTRIBUTE51,
9535                 x_pavv_rec.QUALIFIER_ATTRIBUTE52,
9536                 x_pavv_rec.QUALIFIER_ATTRIBUTE53,
9537                 x_pavv_rec.QUALIFIER_ATTRIBUTE54,
9538                 x_pavv_rec.QUALIFIER_ATTRIBUTE55,
9539                 x_pavv_rec.QUALIFIER_ATTRIBUTE56,
9540                 x_pavv_rec.QUALIFIER_ATTRIBUTE57,
9541                 x_pavv_rec.QUALIFIER_ATTRIBUTE58,
9542                 x_pavv_rec.QUALIFIER_ATTRIBUTE59,
9543                 x_pavv_rec.QUALIFIER_ATTRIBUTE60,
9544                 x_pavv_rec.QUALIFIER_ATTRIBUTE61,
9545                 x_pavv_rec.QUALIFIER_ATTRIBUTE62,
9546                 x_pavv_rec.QUALIFIER_ATTRIBUTE63,
9547                 x_pavv_rec.QUALIFIER_ATTRIBUTE64,
9548                 x_pavv_rec.QUALIFIER_ATTRIBUTE65,
9549                 x_pavv_rec.QUALIFIER_ATTRIBUTE66,
9550                 x_pavv_rec.QUALIFIER_ATTRIBUTE67,
9551                 x_pavv_rec.QUALIFIER_ATTRIBUTE68,
9552                 x_pavv_rec.QUALIFIER_ATTRIBUTE69,
9553                 x_pavv_rec.QUALIFIER_ATTRIBUTE70,
9554                 x_pavv_rec.QUALIFIER_ATTRIBUTE71,
9555                 x_pavv_rec.QUALIFIER_ATTRIBUTE72,
9556                 x_pavv_rec.QUALIFIER_ATTRIBUTE73,
9557                 x_pavv_rec.QUALIFIER_ATTRIBUTE74,
9558                 x_pavv_rec.QUALIFIER_ATTRIBUTE75,
9559                 x_pavv_rec.QUALIFIER_ATTRIBUTE76,
9560                 x_pavv_rec.QUALIFIER_ATTRIBUTE77,
9561                 x_pavv_rec.QUALIFIER_ATTRIBUTE78,
9562                 x_pavv_rec.QUALIFIER_ATTRIBUTE79,
9563                 x_pavv_rec.QUALIFIER_ATTRIBUTE80,
9564                 x_pavv_rec.QUALIFIER_ATTRIBUTE81,
9565                 x_pavv_rec.QUALIFIER_ATTRIBUTE82,
9566                 x_pavv_rec.QUALIFIER_ATTRIBUTE83,
9567                 x_pavv_rec.QUALIFIER_ATTRIBUTE84,
9568                 x_pavv_rec.QUALIFIER_ATTRIBUTE85,
9569                 x_pavv_rec.QUALIFIER_ATTRIBUTE86,
9570                 x_pavv_rec.QUALIFIER_ATTRIBUTE87,
9571                 x_pavv_rec.QUALIFIER_ATTRIBUTE88,
9572                 x_pavv_rec.QUALIFIER_ATTRIBUTE89,
9573                 x_pavv_rec.QUALIFIER_ATTRIBUTE90,
9574                 x_pavv_rec.QUALIFIER_ATTRIBUTE91,
9575                 x_pavv_rec.QUALIFIER_ATTRIBUTE92,
9576                 x_pavv_rec.QUALIFIER_ATTRIBUTE93,
9577                 x_pavv_rec.QUALIFIER_ATTRIBUTE94,
9578                 x_pavv_rec.QUALIFIER_ATTRIBUTE95,
9579                 x_pavv_rec.QUALIFIER_ATTRIBUTE96,
9580                 x_pavv_rec.QUALIFIER_ATTRIBUTE97,
9581                 x_pavv_rec.QUALIFIER_ATTRIBUTE98,
9582                 x_pavv_rec.QUALIFIER_ATTRIBUTE99,
9583                 x_pavv_rec.QUALIFIER_ATTRIBUTE100;
9584 
9585       l_no_data_found := c_pavv_rec%NOTFOUND;
9586       CLOSE c_pavv_rec;
9587       IF l_no_data_found THEN
9588         l_return_status := OKC_API.G_RET_STS_ERROR;
9589         return(l_return_status);
9590       ELSE
9591         return(l_return_status);
9592       END IF;
9593     EXCEPTION
9594       WHEN OTHERS THEN
9595         -- store SQL error message on message stack for caller
9596         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
9597         -- notify caller of an UNEXPECTED error
9598         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
9599         return(l_return_status);
9600 
9601     END get_pavv_rec;
9602 
9603   ----------------------------------------------------------------------------
9604 
9605   ----------------------------------------------------------------------------
9606   --Proceudres for migrating different type of time values view record type. Begins.
9607   ----------------------------------------------------------------------------
9608   ----------------------------------------------------------------------------
9609   --Proceudres for migrating to tavv_rec_type
9610   ----------------------------------------------------------------------------
9611   PROCEDURE migrate (
9612     p_from      IN tvev_rec_type,
9613     p_to        IN OUT NOCOPY tavv_rec_type
9614   ) IS
9615   BEGIN
9616     p_to.id 			:= p_from.id;
9617     p_to.spn_id 		:= p_from.spn_id;
9618     p_to.tve_id_generated_by 	:= p_from.tve_id_generated_by;
9619     p_to.tve_id_limited 	:= p_from.tve_id_limited;
9620     p_to.dnz_chr_id 		:= p_from.dnz_chr_id;
9621     p_to.tze_id 		:= p_from.tze_id;
9622     p_to.object_version_number 	:= p_from.object_version_number;
9623     p_to.created_by 		:= p_from.created_by;
9624     p_to.creation_date 		:= p_from.creation_date;
9625     p_to.last_updated_by 	:= p_from.last_updated_by;
9626     p_to.last_update_date 	:= p_from.last_update_date;
9627     p_to.datetime 		:= p_from.datetime;
9628     p_to.last_update_login 	:= p_from.last_update_login;
9629     p_to.attribute_category 	:= p_from.attribute_category;
9630     p_to.attribute1 		:= p_from.attribute1;
9631     p_to.attribute2 		:= p_from.attribute2;
9632     p_to.attribute3 		:= p_from.attribute3;
9633     p_to.attribute4 		:= p_from.attribute4;
9634     p_to.attribute5 		:= p_from.attribute5;
9635     p_to.attribute6 		:= p_from.attribute6;
9636     p_to.attribute7 		:= p_from.attribute7;
9637     p_to.attribute8 		:= p_from.attribute8;
9638     p_to.attribute9 		:= p_from.attribute9;
9639     p_to.attribute10 		:= p_from.attribute10;
9640     p_to.attribute11 		:= p_from.attribute11;
9641     p_to.attribute12 		:= p_from.attribute12;
9642     p_to.attribute13 		:= p_from.attribute13;
9643     p_to.attribute14 		:= p_from.attribute14;
9644     p_to.attribute15 		:= p_from.attribute15;
9645     p_to.sfwt_flag 		:= p_from.sfwt_flag;
9646     p_to.description 		:= p_from.description;
9647     p_to.short_description 	:= p_from.short_description;
9648     p_to.comments 		:= p_from.comments;
9649   END migrate;
9650 
9651   ----------------------------------------------------------------------------
9652   --Proceudres for migrating to tavv_rec_type
9653   ----------------------------------------------------------------------------
9654   PROCEDURE migrate (
9655     p_from      IN tvev_rec_type,
9656     p_to        IN OUT NOCOPY talv_evt_rec_type
9657   ) IS
9658   BEGIN
9659     p_to.id 			:= p_from.id;
9660     p_to.spn_id 		:= p_from.spn_id;
9661     p_to.tve_id_offset 		:= p_from.tve_id_offset;
9662     p_to.dnz_chr_id 		:= p_from.dnz_chr_id;
9663     p_to.tze_id 		:= p_from.tze_id;
9664     p_to.tve_id_limited 	:= p_from.tve_id_limited;
9665     p_to.UOM_CODE 		:= p_from.UOM_CODE;
9666     p_to.object_version_number 	:= p_from.object_version_number;
9667     p_to.created_by 		:= p_from.created_by;
9668     p_to.creation_date 		:= p_from.creation_date;
9669     p_to.last_updated_by 	:= p_from.last_updated_by;
9670     p_to.last_update_date 	:= p_from.last_update_date;
9671     p_to.duration 		:= p_from.duration;
9672     p_to.operator 		:= p_from.operator;
9673     p_to.before_after 		:= p_from.before_after;
9674     p_to.last_update_login 	:= p_from.last_update_login;
9675     p_to.attribute_category 	:= p_from.attribute_category;
9676     p_to.attribute1 		:= p_from.attribute1;
9677     p_to.attribute2 		:= p_from.attribute2;
9678     p_to.attribute3 		:= p_from.attribute3;
9679     p_to.attribute4 		:= p_from.attribute4;
9680     p_to.attribute5 		:= p_from.attribute5;
9681     p_to.attribute6 		:= p_from.attribute6;
9682     p_to.attribute7 		:= p_from.attribute7;
9683     p_to.attribute8 		:= p_from.attribute8;
9684     p_to.attribute9 		:= p_from.attribute9;
9685     p_to.attribute10 		:= p_from.attribute10;
9686     p_to.attribute11 		:= p_from.attribute11;
9687     p_to.attribute12 		:= p_from.attribute12;
9688     p_to.attribute13 		:= p_from.attribute13;
9689     p_to.attribute14 		:= p_from.attribute14;
9690     p_to.attribute15 		:= p_from.attribute15;
9691     p_to.sfwt_flag 		:= p_from.sfwt_flag;
9692     p_to.description 		:= p_from.description;
9693     p_to.short_description 	:= p_from.short_description;
9694     p_to.comments 		:= p_from.comments;
9695   END migrate;
9696   ----------------------------------------------------------------------------
9697   --Proceudres for migrating to tgdv_rec_type
9698   ----------------------------------------------------------------------------
9699   PROCEDURE migrate (
9700     p_from      IN tvev_rec_type,
9701     p_to        IN OUT NOCOPY tgdv_ext_rec_type
9702   ) IS
9703     CURSOR 	c_start_end(p_id IN NUMBER) IS
9704     SELECT 	start_date,end_date
9705     FROM 	okc_time_ia_startend_val_v
9706     WHERE 	id = p_id;
9707   BEGIN
9708     p_to.id 			:= p_from.id;
9709     p_to.tve_id_limited 	:= p_from.tve_id_limited;
9710     p_to.tze_id 		:= p_from.tze_id;
9711     p_to.dnz_chr_id 		:= p_from.dnz_chr_id;
9712     p_to.object_version_number 	:= p_from.object_version_number;
9713     p_to.created_by 		:= p_from.created_by;
9714     p_to.creation_date 		:= p_from.creation_date;
9715     p_to.last_updated_by 	:= p_from.last_updated_by;
9716     p_to.last_update_date 	:= p_from.last_update_date;
9717     p_to.month 			:= p_from.month;
9718     p_to.day 			:= p_from.day;
9719     p_to.hour 			:= p_from.hour;
9720     p_to.minute 		:= p_from.minute;
9721     p_to.second 		:= p_from.second;
9722     p_to.nth 			:= p_from.nth;
9723     p_to.day_of_week 		:= p_from.day_of_week;
9724     p_to.last_update_login 	:= p_from.last_update_login;
9725     p_to.attribute_category 	:= p_from.attribute_category;
9726     p_to.attribute1 		:= p_from.attribute1;
9727     p_to.attribute2 		:= p_from.attribute2;
9728     p_to.attribute3 		:= p_from.attribute3;
9729     p_to.attribute4 		:= p_from.attribute4;
9730     p_to.attribute5 		:= p_from.attribute5;
9731     p_to.attribute6 		:= p_from.attribute6;
9732     p_to.attribute7 		:= p_from.attribute7;
9733     p_to.attribute8 		:= p_from.attribute8;
9734     p_to.attribute9 		:= p_from.attribute9;
9735     p_to.attribute10 		:= p_from.attribute10;
9736     p_to.attribute11 		:= p_from.attribute11;
9737     p_to.attribute12 		:= p_from.attribute12;
9738     p_to.attribute13 		:= p_from.attribute13;
9739     p_to.attribute14 		:= p_from.attribute14;
9740     p_to.attribute15 		:= p_from.attribute15;
9741     p_to.sfwt_flag 		:= p_from.sfwt_flag;
9742     p_to.description 		:= p_from.description;
9743     p_to.short_description 	:= p_from.short_description;
9744     p_to.comments 		:= p_from.comments;
9745     IF p_from.tve_id_limited IS NULL OR p_from.tve_id_limited = OKC_API.G_MISS_NUM THEN
9746       p_to.limited_start_date := NULL;
9747       p_to.limited_end_date := NULL;
9748     ELSE
9749       OPEN c_start_end(p_from.tve_id_limited);
9750       FETCH c_start_end INTO p_to.limited_start_date,p_to.limited_end_date;
9751       CLOSE c_start_end;
9752     END IF;
9753   END migrate;
9754 
9755   ----------------------------------------------------------------------------
9756   --Proceudres for migrating to tgnv_rec_type
9757   ----------------------------------------------------------------------------
9758   PROCEDURE migrate (
9759     p_from      IN tvev_rec_type,
9760     p_to        IN OUT NOCOPY tgnv_rec_type
9761   ) IS
9762   BEGIN
9763     p_to.id 			:= p_from.id;
9764     p_to.dnz_chr_id 		:= p_from.dnz_chr_id;
9765     p_to.tze_id 		:= p_from.tze_id;
9766     p_to.tve_id_limited 	:= p_from.tve_id_limited;
9767     p_to.object_version_number 	:= p_from.object_version_number;
9768     p_to.created_by 		:= p_from.created_by;
9769     p_to.creation_date 		:= p_from.creation_date;
9770     p_to.last_updated_by 	:= p_from.last_updated_by;
9771     p_to.last_update_date 	:= p_from.last_update_date;
9772     p_to.last_update_login 	:= p_from.last_update_login;
9773     p_to.attribute_category 	:= p_from.attribute_category;
9774     p_to.attribute1 		:= p_from.attribute1;
9775     p_to.attribute2 		:= p_from.attribute2;
9776     p_to.attribute3 		:= p_from.attribute3;
9777     p_to.attribute4 		:= p_from.attribute4;
9778     p_to.attribute5 		:= p_from.attribute5;
9779     p_to.attribute6 		:= p_from.attribute6;
9780     p_to.attribute7 		:= p_from.attribute7;
9781     p_to.attribute8 		:= p_from.attribute8;
9782     p_to.attribute9 		:= p_from.attribute9;
9783     p_to.attribute10 		:= p_from.attribute10;
9784     p_to.attribute11 		:= p_from.attribute11;
9785     p_to.attribute12 		:= p_from.attribute12;
9786     p_to.attribute13 		:= p_from.attribute13;
9787     p_to.attribute14 		:= p_from.attribute14;
9788     p_to.attribute15 		:= p_from.attribute15;
9789     p_to.sfwt_flag 		:= p_from.sfwt_flag;
9790     p_to.description 		:= p_from.description;
9791     p_to.short_description 	:= p_from.short_description;
9792     p_to.comments 		:= p_from.comments;
9793   END migrate;
9794   ----------------------------------------------------------------------------
9795   --Proceudres for migrating to igsv_rec_type
9796   ----------------------------------------------------------------------------
9797   PROCEDURE migrate (
9798     p_from      IN tvev_rec_type,
9799     p_to        IN OUT NOCOPY igsv_ext_rec_type
9800   ) IS
9801     CURSOR 	c_igs(p_id IN NUMBER) IS
9802     SELECT 	START_MONTH,
9803 		START_NTH,
9804 		START_DAY_OF_WEEK,
9805 		START_DAY,
9806 		START_HOUR,
9807 		START_MINUTE,
9808 		START_SECOND,
9809 		END_MONTH,
9810 		END_NTH,
9811 		END_DAY_OF_WEEK,
9812 		END_DAY,
9813 		END_HOUR,
9814 		END_MINUTE,
9815 		END_SECOND
9816     FROM 	okc_time_ig_startend_val_v
9817     WHERE 	id = p_id;
9818 
9819   BEGIN
9820     p_to.id 			:= p_from.id;
9821     p_to.tve_id_started 	:= p_from.tve_id_started;
9822     p_to.tve_id_ended 		:= p_from.tve_id_ended;
9823     p_to.tve_id_limited 	:= p_from.tve_id_limited;
9824     p_to.dnz_chr_id 		:= p_from.dnz_chr_id;
9825     p_to.tze_id 		:= p_from.tze_id;
9826     p_to.object_version_number 	:= p_from.object_version_number;
9827     p_to.created_by 		:= p_from.created_by;
9828     p_to.creation_date 		:= p_from.creation_date;
9829     p_to.last_updated_by 	:= p_from.last_updated_by;
9830     p_to.last_update_date 	:= p_from.last_update_date;
9831     p_to.last_update_login 	:= p_from.last_update_login;
9832     p_to.attribute_category 	:= p_from.attribute_category;
9833     p_to.attribute1 		:= p_from.attribute1;
9834     p_to.attribute2 		:= p_from.attribute2;
9835     p_to.attribute3 		:= p_from.attribute3;
9836     p_to.attribute4 		:= p_from.attribute4;
9837     p_to.attribute5 		:= p_from.attribute5;
9838     p_to.attribute6 		:= p_from.attribute6;
9839     p_to.attribute7 		:= p_from.attribute7;
9840     p_to.attribute8 		:= p_from.attribute8;
9841     p_to.attribute9 		:= p_from.attribute9;
9842     p_to.attribute10 		:= p_from.attribute10;
9843     p_to.attribute11 		:= p_from.attribute11;
9844     p_to.attribute12 		:= p_from.attribute12;
9845     p_to.attribute13 		:= p_from.attribute13;
9846     p_to.attribute14 		:= p_from.attribute14;
9847     p_to.attribute15 		:= p_from.attribute15;
9848     p_to.sfwt_flag 		:= p_from.sfwt_flag;
9849     p_to.description 		:= p_from.description;
9850     p_to.short_description 	:= p_from.short_description;
9851     p_to.comments 		:= p_from.comments;
9852 
9853     OPEN 	c_igs(p_from.id);
9854     FETCH 	c_igs
9855     INTO	p_to.START_MONTH,
9856 		p_to.START_NTH,
9857 		p_to.START_DAY_OF_WEEK,
9858 		p_to.START_DAY,
9859 		p_to.START_HOUR,
9860 		p_to.START_MINUTE,
9861 		p_to.START_SECOND,
9862 		p_to.END_MONTH,
9863 		p_to.END_NTH,
9864 		p_to.END_DAY_OF_WEEK,
9865 		p_to.END_DAY,
9866 		p_to.END_HOUR,
9867 		p_to.END_MINUTE,
9868 		p_to.END_SECOND;
9869     CLOSE 	c_igs;
9870   END migrate;
9871   ----------------------------------------------------------------------------
9872   --Proceudres for migrating to cylv_rec_type
9873   ----------------------------------------------------------------------------
9874   PROCEDURE migrate (
9875     p_from      IN tvev_rec_type,
9876     p_to        IN OUT NOCOPY cylv_ext_rec_type
9877   ) IS
9878 
9879     CURSOR 	c_start_end(p_id IN NUMBER) IS
9880     SELECT 	start_date,end_date
9881     FROM 	okc_time_ia_startend_val_v
9882     WHERE 	id = p_id;
9883 
9884     CURSOR 	c_cyl(p_id IN NUMBER) IS
9885     SELECT 	uom_code,duration,active_yn
9886     FROM 	okc_time_cycle_span_v
9887     WHERE 	id = p_id;
9888 
9889 
9890   BEGIN
9891     p_to.id 			:= p_from.id;
9892     p_to.spn_id 		:= p_from.spn_id;
9893     p_to.tve_id_limited 	:= p_from.tve_id_limited;
9894     p_to.dnz_chr_id 		:= p_from.dnz_chr_id;
9895     p_to.tze_id 		:= p_from.tze_id;
9896     p_to.object_version_number 	:= p_from.object_version_number;
9897     p_to.created_by 		:= p_from.created_by;
9898     p_to.creation_date 		:= p_from.creation_date;
9899     p_to.last_updated_by 	:= p_from.last_updated_by;
9900     p_to.last_update_date 	:= p_from.last_update_date;
9901     p_to.interval_yn 		:= p_from.interval_yn;
9902     p_to.last_update_login 	:= p_from.last_update_login;
9903     p_to.attribute_category 	:= p_from.attribute_category;
9904     p_to.attribute1 		:= p_from.attribute1;
9905     p_to.attribute2 		:= p_from.attribute2;
9906     p_to.attribute3 		:= p_from.attribute3;
9907     p_to.attribute4 		:= p_from.attribute4;
9908     p_to.attribute5 		:= p_from.attribute5;
9909     p_to.attribute6 		:= p_from.attribute6;
9910     p_to.attribute7 		:= p_from.attribute7;
9911     p_to.attribute8 		:= p_from.attribute8;
9912     p_to.attribute9 		:= p_from.attribute9;
9913     p_to.attribute10 		:= p_from.attribute10;
9914     p_to.attribute11 		:= p_from.attribute11;
9915     p_to.attribute12 		:= p_from.attribute12;
9916     p_to.attribute13 		:= p_from.attribute13;
9917     p_to.attribute14 		:= p_from.attribute14;
9918     p_to.attribute15 		:= p_from.attribute15;
9919     p_to.sfwt_flag 		:= p_from.sfwt_flag;
9920     p_to.description 		:= p_from.description;
9921     p_to.short_description 	:= p_from.short_description;
9922     p_to.comments 		:= p_from.comments;
9923     p_to.name 			:= p_from.name;
9924 
9925     OPEN c_cyl(p_from.id);
9926     FETCH c_cyl INTO p_to.uom_code,p_to.duration,p_to.active_yn;
9927     CLOSE c_cyl;
9928 
9929     IF p_from.tve_id_limited IS NULL OR p_from.tve_id_limited = OKC_API.G_MISS_NUM THEN
9930       p_to.limited_start_date := NULL;
9931       p_to.limited_end_date := NULL;
9932     ELSE
9933       OPEN c_start_end(p_from.tve_id_limited);
9934       FETCH c_start_end INTO p_to.limited_start_date,p_to.limited_end_date;
9935       CLOSE c_start_end;
9936     END IF;
9937   END migrate;
9938 
9939   ----------------------------------------------------------------------------
9940   --Proceudres for migrating different type of time values view record type. Ends.
9941   ----------------------------------------------------------------------------
9942   ----------------------------------------------------------------------------
9943   --Proceudre copy_timevalues - Makes a copy of the timevalues.
9944   ----------------------------------------------------------------------------
9945   PROCEDURE copy_timevalues(
9946     p_api_version                  IN NUMBER,
9947     p_init_msg_list                IN VARCHAR2 ,
9948     x_return_status                OUT NOCOPY VARCHAR2,
9949     x_msg_count                    OUT NOCOPY NUMBER,
9950     x_msg_data                     OUT NOCOPY VARCHAR2,
9951     p_tve_id                  	   IN NUMBER,
9952     p_to_chr_id                    IN NUMBER ,
9953     p_to_template_yn			   IN VARCHAR2,
9954     x_tve_id		           OUT NOCOPY NUMBER) IS
9955 
9956     l_tvev_rec			tvev_rec_type;
9957     l_tavv_rec			tavv_rec_type;
9958     x_tavv_rec			tavv_rec_type;
9959     l_talv_evt_rec		talv_evt_rec_type;
9960     x_talv_evt_rec		talv_evt_rec_type;
9961     l_tgdv_ext_rec		tgdv_ext_rec_type;
9962     x_tgdv_ext_rec		tgdv_ext_rec_type;
9963     l_tgnv_rec			tgnv_rec_type;
9964     x_tgnv_rec			tgnv_rec_type;
9965     l_igsv_ext_rec		igsv_ext_rec_type;
9966     x_igsv_ext_rec		igsv_ext_rec_type;
9967     l_cylv_ext_rec		cylv_ext_rec_type;
9968     x_cylv_ext_rec		cylv_ext_rec_type;
9969     l_isev_rel_rec		isev_rel_rec_type;
9970     x_isev_rel_rec		isev_rel_rec_type;
9971     l_isev_ext_rec		isev_ext_rec_type;
9972     x_isev_ext_rec		isev_ext_rec_type;
9973     l_tve_type 		VARCHAR2(10);
9974     l_return_status	        VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
9975     l_cnh_id_out 		NUMBER;
9976     l_cnh_id_temp 		NUMBER;
9977     l_dnz_chr_id         NUMBER;
9978     l_template_yn        VARCHAR2(3);
9979 
9980     CURSOR 	c_tpa_rel(p_id IN NUMBER) IS
9981     SELECT 	tve_type,cnh_id
9982     FROM 	okc_timevalues
9983     WHERE 	id = p_id;
9984 
9985     CURSOR 	c_cnh(p_id IN NUMBER) IS
9986     SELECT 	dnz_chr_id,
9987                template_yn
9988     FROM 	     okc_condition_headers_b
9989     WHERE 	id = p_id;
9990 
9991     CURSOR  c_isev_rel(p_id IN NUMBER)  IS
9992     SELECT  START_PARENT_DATE,
9993             END_DATE,
9994             ID,
9995             TZE_ID,
9996             START_UOM_CODE,
9997             START_DURATION,
9998             START_TVE_ID_OFFSET,
9999             OBJECT_VERSION_NUMBER,
10000             SFWT_FLAG,
10001             TVE_ID_STARTED,
10002             TVE_ID_ENDED,
10003             TVE_ID_LIMITED,
10004             DNZ_CHR_ID,
10005             DESCRIPTION,
10006             SHORT_DESCRIPTION,
10007             COMMENTS,
10008             OPERATOR,
10009             DURATION,
10010             UOM_CODE,
10011             BEFORE_AFTER,
10012             ATTRIBUTE_CATEGORY,
10013             ATTRIBUTE1,
10014             ATTRIBUTE2,
10015             ATTRIBUTE3,
10016             ATTRIBUTE4,
10017             ATTRIBUTE5,
10018             ATTRIBUTE6,
10019             ATTRIBUTE7,
10020             ATTRIBUTE8,
10021             ATTRIBUTE9,
10022             ATTRIBUTE10,
10023             ATTRIBUTE11,
10024             ATTRIBUTE12,
10025             ATTRIBUTE13,
10026             ATTRIBUTE14,
10027             ATTRIBUTE15
10028      FROM   OKC_TIME_IA_STARTEND_REL_V
10029 	WHERE  ID = p_id;
10030 
10031      CURSOR c_isev_ext(p_id IN NUMBER)  IS
10032      SELECT START_DATE,
10033             END_DATE,
10034             ID,
10035             OBJECT_VERSION_NUMBER,
10036             TZE_ID,
10037             SFWT_FLAG,
10038             TVE_ID_STARTED,
10039             TVE_ID_ENDED,
10040             TVE_ID_LIMITED,
10041             DNZ_CHR_ID,
10042             DESCRIPTION,
10043             SHORT_DESCRIPTION,
10044             COMMENTS,
10045             OPERATOR,
10046             DURATION,
10047             UOM_CODE,
10048             BEFORE_AFTER,
10049             ATTRIBUTE_CATEGORY,
10050             ATTRIBUTE1,
10051             ATTRIBUTE2,
10052             ATTRIBUTE3,
10053             ATTRIBUTE4,
10054             ATTRIBUTE5,
10055             ATTRIBUTE6,
10056             ATTRIBUTE7,
10057             ATTRIBUTE8,
10058             ATTRIBUTE9,
10059             ATTRIBUTE10,
10060             ATTRIBUTE11,
10061             ATTRIBUTE12,
10062             ATTRIBUTE13,
10063             ATTRIBUTE14,
10064             ATTRIBUTE15
10065     FROM    OKC_TIME_IA_STARTEND_VAL_V
10066     WHERE   ID = p_id;
10067 
10068   BEGIN
10069     l_return_status := get_tvev_rec(	p_tve_id 	=> p_tve_id,
10070 					x_tvev_rec 	=> l_tvev_rec);
10071     IF l_tvev_rec.tve_type = 'TAV' THEN
10072       migrate(l_tvev_rec,l_tavv_rec);
10073       l_tavv_rec.dnz_chr_id := p_to_chr_id;
10074       OKC_TIME_PUB.create_tpa_value(
10075 	   p_api_version	=> p_api_version,
10076            p_init_msg_list	=> p_init_msg_list,
10077            x_return_status 	=> l_return_status,
10078            x_msg_count     	=> x_msg_count,
10079            x_msg_data      	=> x_msg_data,
10080            p_tavv_rec		=> l_tavv_rec,
10081            x_tavv_rec		=> x_tavv_rec);
10082 
10083       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10084           x_return_status := l_return_status;
10085           RAISE G_EXCEPTION_HALT_VALIDATION;
10086       END IF;
10087       x_tve_id := x_tavv_rec.id;
10088 
10089     ELSIF l_tvev_rec.tve_type = 'TAL' THEN
10090       OPEN c_tpa_rel(l_tvev_rec.tve_id_offset);
10091       FETCH c_tpa_rel INTO l_tve_type,l_cnh_id_temp;
10092       IF c_tpa_rel%FOUND THEN
10093         IF l_tve_type = 'TGN' THEN
10094 
10095           migrate(l_tvev_rec,l_talv_evt_rec);
10096           l_talv_evt_rec.dnz_chr_id := p_to_chr_id;
10097 
10098           OPEN c_cnh(l_cnh_id_temp);
10099 		FETCH c_cnh INTO l_dnz_chr_id,l_template_yn;
10100           CLOSE c_cnh;
10101           IF (l_dnz_chr_id IS NOT NULL OR l_template_yn = 'Y') THEN
10102             copy_events (
10103       	      p_api_version	     => p_api_version,
10104                 p_init_msg_list	=> p_init_msg_list,
10105                 x_return_status 	=> l_return_status,
10106                 x_msg_count     	=> x_msg_count,
10107                 x_msg_data      	=> x_msg_data,
10108                 p_cnh_id		     => l_cnh_id_temp,
10109                 p_chr_id		     => p_to_chr_id,
10110                 p_to_template_yn   => p_to_template_yn,
10111                 x_cnh_id		     => l_cnh_id_out);
10112 
10113                IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10114                  x_return_status := l_return_status;
10115                  RAISE G_EXCEPTION_HALT_VALIDATION;
10116                END IF;
10117 
10118                l_talv_evt_rec.cnh_id := l_cnh_id_out; -- the new event id generated is assigned to the time value
10119           ELSE
10120             l_talv_evt_rec.cnh_id := l_cnh_id_temp;
10121           END IF;
10122 
10123           OKC_TIME_PUB.create_tpa_reltv(
10124 	   p_api_version	=> p_api_version,
10125            p_init_msg_list	=> p_init_msg_list,
10126            x_return_status 	=> l_return_status,
10127            x_msg_count     	=> x_msg_count,
10128            x_msg_data      	=> x_msg_data,
10129            p_talv_evt_rec	=> l_talv_evt_rec,
10130            x_talv_evt_rec	=> x_talv_evt_rec);
10131 
10132           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10133               x_return_status := l_return_status;
10134               RAISE G_EXCEPTION_HALT_VALIDATION;
10135           END IF;
10136           x_tve_id := x_talv_evt_rec.id;
10137 
10138         END IF;
10139       END IF;
10140       CLOSE c_tpa_rel;
10141     ELSIF l_tvev_rec.tve_type = 'TGD' THEN
10142       migrate(l_tvev_rec,l_tgdv_ext_rec);
10143       l_tgdv_ext_rec.dnz_chr_id := p_to_chr_id;
10144       OKC_TIME_PUB.create_tpg_delimited(
10145 	   p_api_version	=> p_api_version,
10146            p_init_msg_list	=> p_init_msg_list,
10147            x_return_status 	=> l_return_status,
10148            x_msg_count     	=> x_msg_count,
10149            x_msg_data      	=> x_msg_data,
10150            p_tgdv_ext_rec	=> l_tgdv_ext_rec,
10151            x_tgdv_ext_rec	=> x_tgdv_ext_rec);
10152 
10153       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10154           x_return_status := l_return_status;
10155           RAISE G_EXCEPTION_HALT_VALIDATION;
10156       END IF;
10157       x_tve_id := x_tgdv_ext_rec.id;
10158 
10159     ELSIF l_tvev_rec.tve_type = 'TGN' THEN
10160       migrate(l_tvev_rec,l_tgnv_rec);
10161       l_tgnv_rec.dnz_chr_id := p_to_chr_id;
10162 
10163       OPEN c_cnh(l_tvev_rec.cnh_id);
10164       FETCH c_cnh INTO l_dnz_chr_id,l_template_yn;
10165       CLOSE c_cnh;
10166       IF (l_dnz_chr_id IS NOT NULL OR l_template_yn = 'Y')  THEN
10167         copy_events (
10168 	     p_api_version	=> p_api_version,
10169            p_init_msg_list	=> p_init_msg_list,
10170            x_return_status 	=> l_return_status,
10171            x_msg_count     	=> x_msg_count,
10172            x_msg_data      	=> x_msg_data,
10173            p_cnh_id		=> l_tvev_rec.cnh_id,
10174            p_chr_id		=> p_to_chr_id,
10175            p_to_template_yn   => p_to_template_yn,
10176            x_cnh_id		=> l_cnh_id_out);
10177 
10178         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10179           x_return_status := l_return_status;
10180           RAISE G_EXCEPTION_HALT_VALIDATION;
10181         END IF;
10182         l_tgnv_rec.cnh_id := l_cnh_id_out; -- the new event id generated is assigned to the time value
10183       ELSE
10184         l_talv_evt_rec.cnh_id := l_tvev_rec.cnh_id;
10185       END IF;
10186 
10187       OKC_TIME_PUB.create_tpg_named(
10188 	      p_api_version	     => p_api_version,
10189            p_init_msg_list	=> p_init_msg_list,
10190            x_return_status 	=> l_return_status,
10191            x_msg_count     	=> x_msg_count,
10192            x_msg_data      	=> x_msg_data,
10193            p_tgnv_rec		=> l_tgnv_rec,
10194            x_tgnv_rec		=> x_tgnv_rec);
10195 
10196       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10197           x_return_status := l_return_status;
10198           RAISE G_EXCEPTION_HALT_VALIDATION;
10199       END IF;
10200       x_tve_id := x_tgnv_rec.id;
10201 
10202     ELSIF l_tvev_rec.tve_type = 'ISE' THEN
10203 
10204       OPEN c_isev_ext(l_tvev_rec.id);
10205 	 FETCH c_isev_ext INTO
10206             l_isev_ext_rec.START_DATE,
10207             l_isev_ext_rec.END_DATE,
10208             l_isev_ext_rec.ID,
10209             l_isev_ext_rec.OBJECT_VERSION_NUMBER,
10210             l_isev_ext_rec.TZE_ID,
10211             l_isev_ext_rec.SFWT_FLAG,
10212             l_isev_ext_rec.TVE_ID_STARTED,
10213             l_isev_ext_rec.TVE_ID_ENDED,
10214             l_isev_ext_rec.TVE_ID_LIMITED,
10215             l_isev_ext_rec.DNZ_CHR_ID,
10216             l_isev_ext_rec.DESCRIPTION,
10217             l_isev_ext_rec.SHORT_DESCRIPTION,
10218             l_isev_ext_rec.COMMENTS,
10219             l_isev_ext_rec.OPERATOR,
10220             l_isev_ext_rec.DURATION,
10221             l_isev_ext_rec.UOM_CODE,
10222             l_isev_ext_rec.BEFORE_AFTER,
10223             l_isev_ext_rec.ATTRIBUTE_CATEGORY,
10224             l_isev_ext_rec.ATTRIBUTE1,
10225             l_isev_ext_rec.ATTRIBUTE2,
10226             l_isev_ext_rec.ATTRIBUTE3,
10227             l_isev_ext_rec.ATTRIBUTE4,
10228             l_isev_ext_rec.ATTRIBUTE5,
10229             l_isev_ext_rec.ATTRIBUTE6,
10230             l_isev_ext_rec.ATTRIBUTE7,
10231             l_isev_ext_rec.ATTRIBUTE8,
10232             l_isev_ext_rec.ATTRIBUTE9,
10233             l_isev_ext_rec.ATTRIBUTE10,
10234             l_isev_ext_rec.ATTRIBUTE11,
10235             l_isev_ext_rec.ATTRIBUTE12,
10236             l_isev_ext_rec.ATTRIBUTE13,
10237             l_isev_ext_rec.ATTRIBUTE14,
10238             l_isev_ext_rec.ATTRIBUTE15;
10239 
10240       l_isev_ext_rec.dnz_chr_id := p_to_chr_id;
10241 
10242       IF NOT c_isev_ext%NOTFOUND THEN
10243 
10244         OKC_TIME_PUB.create_ia_startend(
10245 	      p_api_version	     => p_api_version,
10246            p_init_msg_list	=> p_init_msg_list,
10247            x_return_status 	=> l_return_status,
10248            x_msg_count     	=> x_msg_count,
10249            x_msg_data      	=> x_msg_data,
10250            p_isev_ext_rec	=> l_isev_ext_rec,
10251            x_isev_ext_rec	=> x_isev_ext_rec);
10252 
10253         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10254             x_return_status := l_return_status;
10255             RAISE G_EXCEPTION_HALT_VALIDATION;
10256         END IF;
10257         x_tve_id := x_isev_ext_rec.id;
10258       END IF;
10259 
10260       IF c_isev_ext%NOTFOUND THEN
10261 	   OPEN c_isev_rel(l_tvev_rec.id);
10262 	   FETCH c_isev_rel INTO
10263             l_isev_rel_rec.START_PARENT_DATE,
10264             l_isev_rel_rec.END_DATE,
10265             l_isev_rel_rec.ID,
10266             l_isev_rel_rec.TZE_ID,
10267             l_isev_rel_rec.START_UOM_CODE,
10268             l_isev_rel_rec.START_DURATION,
10269             l_isev_rel_rec.START_TVE_ID_OFFSET,
10270             l_isev_rel_rec.OBJECT_VERSION_NUMBER,
10271             l_isev_rel_rec.SFWT_FLAG,
10272             l_isev_rel_rec.TVE_ID_STARTED,
10273             l_isev_rel_rec.TVE_ID_ENDED,
10274             l_isev_rel_rec.TVE_ID_LIMITED,
10275             l_isev_rel_rec.DNZ_CHR_ID,
10276             l_isev_rel_rec.DESCRIPTION,
10277             l_isev_rel_rec.SHORT_DESCRIPTION,
10278             l_isev_rel_rec.COMMENTS,
10279             l_isev_rel_rec.OPERATOR,
10280             l_isev_rel_rec.DURATION,
10281             l_isev_rel_rec.UOM_CODE,
10282             l_isev_rel_rec.BEFORE_AFTER,
10283             l_isev_rel_rec.ATTRIBUTE_CATEGORY,
10284             l_isev_rel_rec.ATTRIBUTE1,
10285             l_isev_rel_rec.ATTRIBUTE2,
10286             l_isev_rel_rec.ATTRIBUTE3,
10287             l_isev_rel_rec.ATTRIBUTE4,
10288             l_isev_rel_rec.ATTRIBUTE5,
10289             l_isev_rel_rec.ATTRIBUTE6,
10290             l_isev_rel_rec.ATTRIBUTE7,
10291             l_isev_rel_rec.ATTRIBUTE8,
10292             l_isev_rel_rec.ATTRIBUTE9,
10293             l_isev_rel_rec.ATTRIBUTE10,
10294             l_isev_rel_rec.ATTRIBUTE11,
10295             l_isev_rel_rec.ATTRIBUTE12,
10296             l_isev_rel_rec.ATTRIBUTE13,
10297             l_isev_rel_rec.ATTRIBUTE14,
10298             l_isev_rel_rec.ATTRIBUTE15;
10299 
10300         l_isev_rel_rec.dnz_chr_id := p_to_chr_id;
10301 
10302         OKC_TIME_PUB.create_ia_startend(
10303 	      p_api_version	     => p_api_version,
10304            p_init_msg_list	=> p_init_msg_list,
10305            x_return_status 	=> l_return_status,
10306            x_msg_count     	=> x_msg_count,
10307            x_msg_data      	=> x_msg_data,
10308            p_isev_rel_rec	=> l_isev_rel_rec,
10309            x_isev_rel_rec	=> x_isev_rel_rec);
10310 
10311         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10312             x_return_status := l_return_status;
10313             RAISE G_EXCEPTION_HALT_VALIDATION;
10314         END IF;
10315         x_tve_id := x_isev_rel_rec.id;
10316 
10317 	   CLOSE c_isev_rel;
10318 	 END IF;
10319 	 CLOSE c_isev_ext;
10320     ELSIF l_tvev_rec.tve_type = 'IGS' THEN
10321       migrate(l_tvev_rec,l_igsv_ext_rec);
10322       l_igsv_ext_rec.dnz_chr_id := p_to_chr_id;
10323       OKC_TIME_PUB.create_ig_startend(
10324 	      p_api_version  	=> p_api_version,
10325            p_init_msg_list	=> p_init_msg_list,
10326            x_return_status 	=> l_return_status,
10327            x_msg_count     	=> x_msg_count,
10328            x_msg_data      	=> x_msg_data,
10329            p_igsv_ext_rec	=> l_igsv_ext_rec,
10330            x_igsv_ext_rec	=> x_igsv_ext_rec);
10331 
10332       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10333           x_return_status := l_return_status;
10334           RAISE G_EXCEPTION_HALT_VALIDATION;
10335       END IF;
10336       x_tve_id := x_igsv_ext_rec.id;
10337 
10338     ELSIF l_tvev_rec.tve_type = 'CYL' THEN
10339       migrate(l_tvev_rec,l_cylv_ext_rec);
10340       l_cylv_ext_rec.dnz_chr_id := p_to_chr_id;
10341       OKC_TIME_PUB.create_cycle(
10342 	      p_api_version	     => p_api_version,
10343            p_init_msg_list	=> p_init_msg_list,
10344            x_return_status 	=> l_return_status,
10345            x_msg_count     	=> x_msg_count,
10346            x_msg_data      	=> x_msg_data,
10347            p_cylv_ext_rec	=> l_cylv_ext_rec,
10348            x_cylv_ext_rec	=> x_cylv_ext_rec);
10349 
10350       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10351           x_return_status := l_return_status;
10352           RAISE G_EXCEPTION_HALT_VALIDATION;
10353       END IF;
10354       x_tve_id := x_cylv_ext_rec.id;
10355 
10356     END IF;
10357     x_return_status := l_return_status;
10358   EXCEPTION
10359     WHEN G_EXCEPTION_HALT_VALIDATION THEN
10360       NULL;
10361     WHEN OTHERS THEN
10362       -- store SQL error message on message stack for caller
10363       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
10364       -- notify caller of an UNEXPECTED error
10365       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
10366 
10367   END copy_timevalues;
10368 
10369  PROCEDURE copy_components(
10370     p_api_version                  IN NUMBER,
10371     p_init_msg_list                IN VARCHAR2 ,
10372     x_return_status                OUT NOCOPY VARCHAR2,
10373     x_msg_count                    OUT NOCOPY NUMBER,
10374     x_msg_data                     OUT NOCOPY VARCHAR2,
10375     p_from_chr_id                  IN NUMBER,
10376     p_to_chr_id                  IN NUMBER,
10377     p_contract_number		     IN VARCHAR2,
10378     p_contract_number_modifier     IN VARCHAR2,
10379     p_to_template_yn			IN VARCHAR2 ,
10380     p_copy_reference			IN VARCHAR2 ,
10381     p_copy_line_party_yn           IN VARCHAR2,
10382     p_scs_code                     IN VARCHAR2,
10383     p_intent                       IN VARCHAR2,
10384     p_prospect                     IN VARCHAR2,
10385     p_components_tbl			IN api_components_tbl,
10386     p_lines_tbl				IN api_lines_tbl,
10387     x_chr_id                    OUT NOCOPY NUMBER,
10388     p_concurrent_request           IN VARCHAR2 DEFAULT 'N',
10389     p_include_cancelled_lines  IN VARCHAR2 DEFAULT 'Y',
10390     p_include_terminated_lines IN VARCHAR2 DEFAULT 'Y') IS
10391     --Bug 2950549 added new parameter p_concurrent_request
10392 
10393     l_components_tbl  api_components_tbl := p_components_tbl;
10394     l_lines_tbl       api_lines_tbl := p_lines_tbl;
10395     l_published_line_ids_tbl  OKS_COPY_CONTRACT_PVT.published_line_ids_tbl;
10396 
10397     l_return_status	  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
10398     l_old_return_status	  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
10399     l_cle_id_out      NUMBER;
10400     l_chr_id          NUMBER;
10401     l_cnh_id          NUMBER;
10402     l_rgp_id          NUMBER;
10403     l_cat_id          NUMBER;
10404     l_cpl_id          NUMBER;
10405     l_from_cle_id     NUMBER;
10406     l_to_cle_id       NUMBER;
10407     l_to_chr_id       NUMBER;
10408     i                 NUMBER := 0;
10409     j                 NUMBER := 0;
10410     l_old_lse_id      NUMBER;
10411     l_copy_sublines   VARCHAR2(1) := 'F';
10412     l_generate_line_number   VARCHAR2(1) := 'Y'; --Bug 2489856
10413     l_result		  BOOLEAN;
10414     --Bug:3668722
10415     l_cle_id_out20    NUMBER := OKC_API.G_MISS_NUM;
10416     l_cle_id_out21    NUMBER := OKC_API.G_MISS_NUM;
10417     l_c_lines_id			 NUMBER := OKC_API.G_MISS_NUM;
10418     l_c_lines_dnz_chr_id		 NUMBER := OKC_API.G_MISS_NUM;
10419 
10420 
10421     --11510
10422     l_source_doc_type VARCHAR2(60);
10423     l_source_doc_ID   NUMBER;
10424     l_target_doc_type VARCHAR2(60);
10425     l_target_doc_ID   NUMBER;
10426     l_keep_version VARCHAR2(1);
10427     l_eff_date DATE;
10428     l_category          VARCHAR2(200); --added for bug 3764231
10429 
10430     -- 11510 get chr start date for effective date for copy_doc
10431     CURSOR c_art_eff_date (p_doc_type VARCHAR2,p_doc_id NUMBER) IS
10432     SELECT article_effective_date
10433      FROM okc_template_usages_v
10434      WHERE document_type=p_doc_type AND document_id=p_doc_id;
10435 
10436    --cursor to fetch id of line with lseid =20 -Bug:3668722
10437    CURSOR	c_lines(p NUMBER) IS
10438     SELECT id,
10439            dnz_chr_id
10440     FROM   okc_k_lines_b
10441     where lse_id=20
10442     CONNECT BY  PRIOR id = cle_id
10443     START WITH  id =p;
10444 
10445 -- Cursor created to get the PDF_ID for Class 'SERVICE' - Bug 1917514
10446     CURSOR c_pdf IS
10447     SELECT pdf_id
10448     FROM okc_class_operations
10449     WHERE opn_code = 'COPY'
10450     AND   cls_code = 'SERVICE';
10451 
10452     l_pdf_id  NUMBER;
10453     l_cle_id  NUMBER := OKC_API.G_MISS_NUM; -- Bugfix 2151523(1917514) - Initializing
10454     --l_chr_id  NUMBER;
10455     l_string VARCHAR2(32000);
10456     proc_string VARCHAR2(32000);
10457 -- Cursor created to get the PDF_ID for Class 'SERVICE' - Bug 1917514
10458 
10459     CURSOR c_old_lse_id (p_id IN NUMBER) IS
10460     SELECT lse_id
10461     FROM   OKC_K_LINES_b
10462     WHERE  id = p_id;
10463 
10464     -- Added for Bug 3764231
10465     -- cursor to get the contract category
10466 
10467     CURSOR l_Service_Contract_csr IS
10468     SELECT osb.cls_code
10469     FROM  okc_subclasses_b osb,okc_k_headers_b okb
10470     WHERE okb.id = p_from_chr_id
10471     AND   okb.scs_code = osb.code ;
10472 
10473     -- Added for Bug 3764231
10474 
10475     TYPE 	new_cle_id_rec IS RECORD(id             NUMBER,
10476                                    new_id           NUMBER);
10477     TYPE	new_cle_id_tbl IS TABLE OF new_cle_id_rec
10478     INDEX	BY BINARY_INTEGER;
10479 
10480     l_new_cle_id_tbl  new_cle_id_tbl;
10481 
10482     l_module_name VARCHAR2(30) := 'COPY_COMPONENTS';
10483     PROCEDURE add_new_cle_id(p_id   IN NUMBER,
10484 					  p_new_id IN NUMBER) IS
10485       i NUMBER := 0;
10486     BEGIN
10487 	 IF l_new_cle_id_tbl.COUNT > 0 THEN
10488 	   i := l_new_cle_id_tbl.LAST;
10489 	 END IF;
10490 	 l_new_cle_id_tbl(i+1).id := p_id;
10491       l_new_cle_id_tbl(i+1).new_id := p_new_id;
10492     END add_new_cle_id;
10493 
10494     PROCEDURE get_new_cle_id(p_id   IN NUMBER,
10495 					  p_new_id OUT NOCOPY NUMBER) IS
10496       i NUMBER := 0;
10497     BEGIN
10498 	 IF l_new_cle_id_tbl.COUNT > 0 THEN
10499 	   i := l_new_cle_id_tbl.FIRST;
10500 	   LOOP
10501 		IF l_new_cle_id_tbl(i).id = p_id THEN
10502 		  p_new_id := l_new_cle_id_tbl(i).new_id;
10503 		  EXIT;
10504 		END IF;
10505 		EXIT WHEN i = l_new_cle_id_tbl.LAST;
10506 		i := l_new_cle_id_tbl.NEXT(i);
10507 	   END LOOP;
10508 	 END IF;
10509     END get_new_cle_id;
10510 
10511   BEGIN
10512 /*********************************************************************************
10513 -- Following code is commented out for Bug#2855853.
10514 
10515 IF (l_debug = 'Y') THEN
10516    OKC_DEBUG.Set_Indentation(' copy_components ');
10517    OKC_DEBUG.log('100 : Entering  OKC_COPY_CONTRACT_PVT.copy_components  ', 2);
10518    OKC_DEBUG.log('l_components_tbl.COUNT : '||l_components_tbl.COUNT,2);
10519    For i IN NVL(l_components_tbl.FIRST,0)..NVL(l_components_tbl.LAST,-1)
10520    LOOP
10521       OKC_DEBUG.log('Component : '||i,2);
10522       OKC_DEBUG.log('l_components_tbl(i).component_type : '||l_components_tbl(i).component_type,2);
10523       OKC_DEBUG.log('l_components_tbl(i).attribute1 : '||l_components_tbl(i).attribute1,2);
10524       OKC_DEBUG.log('l_components_tbl(i).id : '||l_components_tbl(i).id,2);
10525       OKC_DEBUG.log('l_components_tbl(i).to_k : '||l_components_tbl(i).to_k,2);
10526    END LOOP;
10527 END IF;
10528 ********************************************************************************/
10529 --added for bug 2950549
10530  fnd_msg_pub.initialize;
10531  IF p_concurrent_request = 'Y' then
10532 
10533     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
10534       FND_LOG.string(FND_LOG.level_statement
10535                         ,G_PKG_NAME||'.'||l_module_name
10536                         ,'Before call to Add_Concurrent'
10537                        ||'p_from_chr_id='||p_from_chr_id
10538 		       ||'p_contract_number='||p_contract_number);
10539     END IF;
10540 
10541 	   add_concurrent(p_components_tbl,
10542 		             p_lines_tbl,
10543 				   p_from_chr_id,
10544 				   p_to_chr_id,
10545 				   p_contract_number,
10546 				   p_contract_number_modifier,
10547 				   p_to_template_yn,
10548 				   p_copy_reference,
10549 				   p_copy_line_party_yn,
10550 				   p_scs_code,
10551 				   p_intent,
10552 				   p_prospect,
10553 				   p_include_cancelled_lines => p_include_cancelled_lines,
10554 				   p_include_terminated_lines => p_include_terminated_lines);
10555 
10556     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
10557       FND_LOG.string(FND_LOG.level_statement
10558                         ,G_PKG_NAME||'.'||l_module_name
10559                         ,'After call to Add_Concurrent'
10560                        ||'p_from_chr_id='||p_from_chr_id
10561                        ||'p_contract_number='||p_contract_number);
10562     END IF;
10563  ELSE
10564 -- hkamdar R12 Copy Enhancements
10565 -- Commenting entire else part and including this code into OKS_COPY_CONTRACT_PVT.COPY_COMPONENTS API
10566 /*        ---Initialisation is not to read records from History Tables
10567         G_COPY_HISTORY_YN := 'N';
10568 
10569 IF (l_debug = 'Y') THEN
10570    OKC_DEBUG.log('200 : Calling OKC_COPY_CONTRACT_PUB.IS_COPY_ALLOWED');
10571 END IF;
10572 	l_result := OKC_COPY_CONTRACT_PUB.IS_COPY_ALLOWED(p_from_chr_id, NULL);
10573 	If NOT l_result Then
10574 	  -- notify caller of an UNEXPECTED error
10575 	  x_return_status := OKC_API.G_RET_STS_ERROR;
10576 	  raise G_EXCEPTION_HALT_VALIDATION;
10577 	End If;
10578 
10579     -- Intitialize globals.
10580     IF g_events.COUNT > 0 THEN
10581        g_events.DELETE;
10582     END IF;
10583 
10584     IF g_ruls.COUNT > 0 THEN
10585        g_ruls.DELETE;
10586     END IF;
10587 
10588     IF g_sections.COUNT > 0 THEN
10589        g_sections.DELETE;
10590     END IF;
10591 
10592     IF g_timevalues.COUNT > 0 THEN
10593        g_timevalues.DELETE;
10594     END IF;
10595 
10596     IF g_party.COUNT > 0 THEN
10597        g_party.DELETE;
10598     END IF;
10599 
10600     x_return_status := l_return_status;
10601 
10602 IF (l_debug = 'Y') THEN
10603    OKC_DEBUG.log('250 : x_return_status : '||x_return_status);
10604    OKC_DEBUG.log('250 : p_to_chr_id : '||p_to_chr_id);
10605 END IF;
10606 
10607     IF p_to_chr_id IS NULL THEN
10608       copy_contract_header(
10609 	   	 p_api_version				=> p_api_version,
10610            p_init_msg_list			=> p_init_msg_list,
10611            x_return_status 			=> l_return_status,
10612            x_msg_count     			=> x_msg_count,
10613            x_msg_data      			=> x_msg_data,
10614            p_from_chr_id				=> p_from_chr_id,
10615            p_contract_number			=> p_contract_number,
10616            p_contract_number_modifier	=> p_contract_number_modifier,
10617            p_scs_code                   => p_scs_code,
10618            p_intent                     => p_intent,
10619            p_prospect                   => p_prospect,
10620            p_called_from                => 'C',
10621 	      p_to_template_yn             => p_to_template_yn,
10622 		 p_renew_ref_yn               => 'N',
10623            x_chr_id					=> l_chr_id);
10624 
10625                l_oks_copy := 'N';      -- Bugfix 1917514
10626                -- Setting l_oks_copy to 'N' so that this procedure should not be called from
10627                -- Copy Line if it is already called from Copy Header
10628       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10629           x_return_status := l_return_status;
10630           RAISE G_EXCEPTION_HALT_VALIDATION;
10631       END IF;
10632     ELSE
10633       l_return_status := get_chrv_rec(p_to_chr_id,g_chrv_rec);
10634 	    l_chr_id := p_to_chr_id;
10635     END IF;
10636 
10637     x_chr_id := l_chr_id;
10638 
10639 IF (l_debug = 'Y') THEN
10640    OKC_DEBUG.log('300 : After copy_contract_header  ');
10641    OKC_DEBUG.log('300 : x_chr_id : '||x_chr_id);
10642    OKC_DEBUG.log('300 : x_return_status : '||l_return_status);
10643 END IF;
10644 
10645     IF l_components_tbl.COUNT >0 THEN
10646       i := l_components_tbl.FIRST;
10647       LOOP
10648 	   -- IF l_components_tbl(i).component_type = 'Events' THEN
10649            -- skekkar bug 2802203 ( base bug 2794662 )
10650 	   IF l_components_tbl(i).component_type = 'EVENTS' THEN
10651           l_old_return_status := l_return_status;
10652           copy_events (
10653 	          p_api_version	     => p_api_version,
10654                p_init_msg_list	=> p_init_msg_list,
10655                x_return_status 	=> l_return_status,
10656                x_msg_count     	=> x_msg_count,
10657                x_msg_data      	=> x_msg_data,
10658                p_cnh_id		     => l_components_tbl(i).id,
10659                p_chr_id		     => l_chr_id,
10660                p_to_template_yn   => p_to_template_yn,
10661                x_cnh_id		     => l_cnh_id);
10662 
10663           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10664             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
10665               x_return_status := l_return_status;
10666               RAISE G_EXCEPTION_HALT_VALIDATION;
10667             ELSE
10668               IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
10669                 x_return_status := l_return_status;
10670               END IF;
10671             END IF;
10672           END IF;
10673 
10674         END IF;
10675         EXIT WHEN i = l_components_tbl.LAST;
10676         i := l_components_tbl.NEXT(i);
10677       END LOOP;
10678 
10679 IF (l_debug = 'Y') THEN
10680    OKC_DEBUG.log('350 : After copy_events  ');
10681    OKC_DEBUG.log('350 : x_return_status : '||l_return_status);
10682 END IF;
10683 
10684       i := l_components_tbl.FIRST;
10685       LOOP
10686         -- IF l_components_tbl(i).component_type = 'Parties' THEN
10687         -- skekkar bug 2802203 ( base bug 2794662 )
10688         IF l_components_tbl(i).component_type = 'PARTIES' THEN
10689           l_old_return_status := l_return_status;
10690           copy_party_roles (
10691 	       p_api_version	=> p_api_version,
10692                p_init_msg_list	=> p_init_msg_list,
10693                x_return_status 	=> l_return_status,
10694                x_msg_count     	=> x_msg_count,
10695                x_msg_data      	=> x_msg_data,
10696                p_cpl_id		=> l_components_tbl(i).id,
10697                p_cle_id	     	=> NULL,
10698                p_chr_id	     	=> l_chr_id,
10699                p_rle_code       => l_components_tbl(i).attribute1,
10700                x_cpl_id	     	=> l_cpl_id);
10701 
10702           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10703             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
10704               x_return_status := l_return_status;
10705               RAISE G_EXCEPTION_HALT_VALIDATION;
10706             ELSE
10707               IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
10708                 x_return_status := l_return_status;
10709               END IF;
10710             END IF;
10711           END IF;
10712 
10713         END IF;
10714         EXIT WHEN i = l_components_tbl.LAST;
10715         i := l_components_tbl.NEXT(i);
10716       END LOOP;
10717 
10718 IF (l_debug = 'Y') THEN
10719    OKC_DEBUG.log('400 : After copy_party_roles  ');
10720    OKC_DEBUG.log('400 : x_return_status : '||l_return_status);
10721 END IF;
10722 
10723     --
10724     -- Bug 3611000
10725     -- Rules may exist for pre-11.5.10 contracts - they should not be tried to copy in 11.5.10 onwards for service contracts
10726     --
10727     IF G_APPLICATION_ID <> 515 THEN
10728 
10729       i := l_components_tbl.FIRST;
10730       LOOP
10731         -- IF l_components_tbl(i).component_type = 'Rules' THEN
10732         -- skekkar bug 2802203 ( base bug 2794662 )
10733         IF l_components_tbl(i).component_type = 'RULES' THEN
10734           l_old_return_status := l_return_status;
10735           copy_rules (
10736 	          p_api_version	     => p_api_version,
10737                p_init_msg_list	=> p_init_msg_list,
10738                x_return_status 	=> l_return_status,
10739                x_msg_count     	=> x_msg_count,
10740                x_msg_data      	=> x_msg_data,
10741                p_rgp_id		     => l_components_tbl(i).id,
10742                p_cle_id		     => NULL,
10743                p_chr_id		     => l_chr_id,
10744 		     p_to_template_yn    => p_to_template_yn,
10745                x_rgp_id		     => l_rgp_id);
10746 
10747           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10748             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
10749               x_return_status := l_return_status;
10750               RAISE G_EXCEPTION_HALT_VALIDATION;
10751             ELSE
10752               IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
10753                 x_return_status := l_return_status;
10754               END IF;
10755             END IF;
10756           END IF;
10757 
10758 	   END IF;
10759 	   EXIT WHEN i = l_components_tbl.LAST;
10760 	   i := l_components_tbl.NEXT(i);
10761       END LOOP;
10762 
10763       IF (l_debug = 'Y') THEN
10764          OKC_DEBUG.log('450 : After copy_rules  ');
10765          OKC_DEBUG.log('450 : x_return_status : '||l_return_status);
10766       END IF;
10767     END IF; --G_APPLICATION_ID <> 515
10768 */
10769 /* 11510
10770       i := l_components_tbl.FIRST;
10771       LOOP
10772         l_old_return_status := l_return_status;
10773 	-- IF l_components_tbl(i).component_type = 'Articles' THEN
10774         -- skekkar bug 2802203 ( base bug 2794662 )
10775 	IF l_components_tbl(i).component_type = 'ARTICLES' THEN
10776           copy_articles (
10777 	          p_api_version	     => p_api_version,
10778                p_init_msg_list	=> p_init_msg_list,
10779                x_return_status 	=> l_return_status,
10780                x_msg_count     	=> x_msg_count,
10781                x_msg_data      	=> x_msg_data,
10782                p_cat_id		     => l_components_tbl(i).id,
10783                p_cle_id		     => NULL,
10784                p_chr_id		     => l_chr_id,
10785                x_cat_id		     => l_cat_id);
10786 
10787           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10788             l_old_return_status := l_return_status;
10789             IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
10790               x_return_status := l_return_status;
10791               RAISE G_EXCEPTION_HALT_VALIDATION;
10792             ELSE
10793 	         x_return_status := l_return_status;
10794             END IF;
10795           END IF;
10796 	   END IF;
10797 	   EXIT WHEN i = l_components_tbl.LAST;
10798 	   i := l_components_tbl.NEXT(i);
10799       END LOOP;
10800 
10801 IF (l_debug = 'Y') THEN
10802    OKC_DEBUG.log('500 : After copy_articles  ');
10803    OKC_DEBUG.log('500 : x_return_status : '||l_return_status);
10804 END IF;
10805 */
10806 /*
10807     -- new 11510 code
10808       i := l_components_tbl.FIRST;
10809       l_old_return_status := l_return_status;
10810       LOOP
10811 	IF l_components_tbl(i).component_type = 'ARTICLES' THEN
10812 -- temporary: copy all document articles after one article component to copy found
10813     l_keep_version := 'Y'; -- keep version as was doing before
10814      OKC_TERMS_UTIL_GRP.Get_Contract_Document_Type_ID(
10815         p_api_version   => p_api_version,
10816         x_return_status => l_return_status,
10817         x_msg_data      => x_msg_data,
10818         x_msg_count     => x_msg_count,
10819         p_chr_id        => p_from_chr_id,
10820         x_doc_type      => l_source_doc_type,
10821         x_doc_id        => l_source_doc_id
10822     );
10823 IF (l_debug = 'Y') THEN
10824    OKC_DEBUG.log(' After Procedure : Get_Contract_Document_Type for source chr_id ' || l_return_status);
10825 END IF;
10826         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10827           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
10828             x_return_status := l_return_status;
10829             RAISE G_EXCEPTION_HALT_VALIDATION;
10830           ELSE
10831             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
10832               x_return_status := l_return_status;
10833             END IF;
10834           END IF;
10835         END IF;
10836      OKC_TERMS_UTIL_GRP.Get_Contract_Document_Type_ID(
10837         p_api_version   => p_api_version,
10838         x_return_status => l_return_status,
10839         x_msg_data      => x_msg_data,
10840         x_msg_count     => x_msg_count,
10841         p_chr_id        => x_chr_id,
10842         x_doc_type      => l_target_doc_type,
10843         x_doc_id        => l_target_doc_id
10844     );
10845 
10846 IF (l_debug = 'Y') THEN
10847    OKC_DEBUG.log(' After Procedure : Get_Contract_Document_Type for target chr_id ' || l_return_status);
10848 END IF;
10849         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10850           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
10851             x_return_status := l_return_status;
10852             RAISE G_EXCEPTION_HALT_VALIDATION;
10853           ELSE
10854             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
10855               x_return_status := l_return_status;
10856             END IF;
10857           END IF;
10858         END IF;
10859     OPEN c_art_eff_date(l_source_doc_type, l_source_doc_id);
10860     FETCH c_art_eff_date INTO l_eff_date;
10861     CLOSE c_art_eff_date;
10862 
10863 
10864     OKC_TERMS_COPY_GRP.copy_doc(
10865         p_api_version	     => p_api_version,
10866         x_return_status	     => l_return_status,
10867         x_msg_count    	     => x_msg_count,
10868         x_msg_data     	     => x_msg_data,
10869 
10870         p_source_doc_type    => l_source_doc_type,
10871         p_source_doc_id      => l_source_doc_id,
10872         p_target_doc_type    => l_target_doc_type,
10873         p_target_doc_id      => l_target_doc_id,
10874         p_keep_version       => l_keep_version,
10875         p_article_effective_date => Nvl(l_eff_date,Sysdate),
10876         p_document_number    => p_contract_number,
10877         p_allow_duplicate_terms=>'Y'
10878     );
10879 IF (l_debug = 'Y') THEN
10880    OKC_DEBUG.log(' After Procedure : OKC_TERMS_COPY_GRP.copy_doc ' || l_return_status);
10881 END IF;
10882         IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10883           IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
10884             x_return_status := l_return_status;
10885             RAISE G_EXCEPTION_HALT_VALIDATION;
10886           ELSE
10887             IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
10888               x_return_status := l_return_status;
10889             END IF;
10890           END IF;
10891         END IF;
10892 
10893        EXIT; -- exit after one article component to copy found
10894       ELSE
10895        EXIT WHEN i = l_components_tbl.LAST;
10896   	   i := l_components_tbl.NEXT(i);
10897 	   END IF;
10898     END LOOP;
10899 -- end of new 11510 code
10900     END IF;
10901 
10902     -- Call to the procedure to copy all other remaining sections
10903 --11510    copy_other_sections(p_from_chr_id, l_chr_id);
10904 
10905 
10906     IF l_lines_tbl.COUNT >0 THEN
10907 	 j := l_lines_tbl.FIRST;
10908  	 LOOP
10909 	   IF l_lines_tbl(j).to_line IS NULL THEN
10910           l_from_cle_id := l_lines_tbl(j).id;
10911           l_to_cle_id   := NULL;
10912           l_to_chr_id   := l_chr_id;
10913 	     IF l_lines_tbl(j).lse_id = 1 THEN
10914              -- this logic is to find the service line came from a service line or a core line.
10915              -- If it came from a service line all sublines need to be identified and copied.
10916             OPEN c_old_lse_Id(l_lines_tbl(j).id);
10917             FEtCH c_old_lse_Id INTO l_old_lse_id;
10918             CLOSE c_old_lse_Id;
10919             IF l_old_lse_id = 1 THEN
10920               l_copy_sublines := 'T';
10921             ELSE
10922               l_copy_sublines := 'F';
10923             END IF;
10924           END IF;
10925 --mmadhavi added following code for bug 3990643
10926 	  IF l_lines_tbl(j).lse_id = 19 THEN
10927             OPEN c_old_lse_Id(l_lines_tbl(j).id);
10928             FEtCH c_old_lse_Id INTO l_old_lse_id;
10929             CLOSE c_old_lse_Id;
10930             IF l_old_lse_id = 19 then
10931 	      if l_lines_tbl(j).line_exp_yn = 'Y' THEN
10932 		l_copy_sublines := 'T';
10933 	      ELSE
10934                 l_copy_sublines := 'F';
10935 	      End if;
10936             END IF;
10937           END IF;
10938 --mmadhavi
10939 
10940 -- Bug 2489856
10941           if p_to_chr_id IS NULL Then -- New Contract Preserve line no during copy
10942                l_generate_line_number := 'N';
10943              else
10944                l_generate_line_number := 'Y';
10945              end if;
10946 -- End Bug 2489856
10947 
10948 IF (l_debug = 'Y') THEN
10949    OKC_DEBUG.log('600 : Before copy_contract_line  ');
10950    OKC_DEBUG.log('600 : l_copy_sublines : '||l_copy_sublines);
10951 END IF;
10952 
10953           IF l_copy_sublines = 'F' THEN
10954             copy_contract_line(
10955                p_api_version	      => p_api_version,
10956                p_init_msg_list      => p_init_msg_list,
10957                x_return_status      => l_return_status,
10958                x_msg_count          => x_msg_count,
10959                x_msg_data           => x_msg_data,
10960                p_from_cle_id	      => l_from_cle_id,
10961                p_from_chr_id		 => p_from_chr_id,
10962                p_to_cle_id          => l_to_cle_id,
10963                p_to_chr_id          => l_to_chr_id,
10964 	          p_lse_id             => l_lines_tbl(j).lse_id,
10965                p_to_template_yn     => p_to_template_yn,
10966                p_copy_reference     =>p_copy_reference,
10967                p_copy_line_party_yn => p_copy_line_party_yn,
10968                p_renew_ref_yn       => 'N',
10969                p_generate_line_number => l_generate_line_number, --Bug 2489856
10970                x_cle_id		      => l_cle_id_out);
10971 
10972 IF (l_debug = 'Y') THEN
10973    OKC_DEBUG.log('650 : After copy_contract_line  ');
10974    OKC_DEBUG.log('650 : x_return_status : '||l_return_status);
10975    OKC_DEBUG.log('650 : x_msg_count : '||x_msg_count);
10976    OKC_DEBUG.log('650 : x_msg_data : '||x_msg_data);
10977 END IF;
10978             -- If any error happens it exits the loop or if it is a warning it still continues.
10979             IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
10980               IF (l_return_status = OKC_API.G_RET_STS_WARNING) THEN
10981                 IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
10982                   x_return_status := OKC_API.G_RET_STS_WARNING;
10983                 END IF;
10984               ELSE
10985                 x_return_status := l_return_status;
10986                 RAISE G_EXCEPTION_HALT_VALIDATION;
10987               END IF;
10988             END IF;
10989             --Bug:3668722 copy coverage line(lse=20) for Ext Warratny line(lse=19)
10990            IF(l_lines_tbl(j).lse_id=19 ) then
10991              OPEN c_lines(l_from_cle_id);
10992                 FETCH c_lines INTO l_c_lines_id,l_c_lines_dnz_chr_id;
10993              CLOSE c_lines;
10994             IF(l_c_lines_id <> OKC_API.G_MISS_NUM) THEN
10995               copy_contract_line (
10996 	       p_api_version    => p_api_version,
10997                p_init_msg_list	=> p_init_msg_list,
10998                x_return_status 	=> l_return_status,
10999                x_msg_count     	=> x_msg_count,
11000                x_msg_data      	=> x_msg_data,
11001                p_from_cle_id    => l_c_lines_id,
11002                p_from_chr_id	=> l_c_lines_dnz_chr_id,
11003 	       p_to_cle_id 		=> l_cle_id_out, -- the new generated parent line id.
11004 	       p_to_chr_id		=> NULL,
11005 	       p_lse_id         => 20,
11006 	       p_to_template_yn => p_to_template_yn,
11007                p_copy_reference     => 'COPY',
11008                p_copy_line_party_yn => 'Y',
11009 	       p_renew_ref_yn        => 'N',
11010                p_generate_line_number  => l_generate_line_number, --Bug 2489856
11011                x_cle_id	        => l_cle_id_out20);
11012                IF (l_debug = 'Y') THEN
11013                  OKC_DEBUG.log('660 :after copy_contract_line');
11014                END IF;
11015                -- If any error happens it exits the loop or if it is a warning it still continues.
11016               IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
11017                 IF (l_return_status = OKC_API.G_RET_STS_WARNING) THEN
11018                   IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
11019                     x_return_status := OKC_API.G_RET_STS_WARNING;
11020                   END IF;
11021                 ELSE
11022                   x_return_status := l_return_status;
11023                   RAISE G_EXCEPTION_HALT_VALIDATION;
11024                 END IF;
11025               END IF;
11026               --Bug:3668722 copy sublines(lse=21,22,23) for coverage line(lse=20)
11027               copy_contract_lines(
11028                  p_api_version	     => p_api_version,
11029                  p_init_msg_list	 => p_init_msg_list,
11030                  x_return_status 	 => l_return_status,
11031                  x_msg_count     	 => x_msg_count,
11032                  x_msg_data      	 => x_msg_data,
11033                  p_from_cle_id	     => l_c_lines_id,
11034                  p_to_chr_id 		=> NULL, --the new generated contract header id
11035                  p_to_cle_id 		=> l_cle_id_out20,
11036                  p_to_template_yn      => p_to_template_yn,
11037                  p_copy_reference      =>p_copy_reference,
11038                  p_copy_line_party_yn  => p_copy_line_party_yn,
11039                  p_renew_ref_yn        => 'N',
11040                  p_generate_line_number => l_generate_line_number, --Bug 2489856
11041                  x_cle_id		     => l_cle_id_out21);
11042 		  -- DND p_change_status        => 'Y');  --LLC
11043 
11044                IF (l_debug = 'Y') THEN
11045                  OKC_DEBUG.log('670 :after copy_contract_lines');
11046                END IF;
11047                -- If any error happens it exits the loop or if it is a warning it still continues.
11048                IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
11049                 IF (l_return_status = OKC_API.G_RET_STS_WARNING) THEN
11050                  IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
11051                   x_return_status := OKC_API.G_RET_STS_WARNING;
11052                  END IF;
11053                 ELSE
11054                  x_return_status := l_return_status;
11055                  RAISE G_EXCEPTION_HALT_VALIDATION;
11056                END IF;
11057              END IF;
11058             END IF;
11059            END IF;--IF(l_lines_tbl(j).lse_id = 19 ) THEN
11060           ELSE
11061             copy_contract_lines(
11062                  p_api_version	     => p_api_version,
11063                  p_init_msg_list	     => p_init_msg_list,
11064                  x_return_status 	     => l_return_status,
11065                  x_msg_count     	     => x_msg_count,
11066                  x_msg_data      	     => x_msg_data,
11067                  p_from_cle_id	     => l_from_cle_id,
11068                  p_to_chr_id 		=> l_to_chr_id, --the new generated contract header id
11069                  p_to_cle_id 		=> l_to_cle_id,
11070                  p_to_template_yn      => p_to_template_yn,
11071                  p_copy_reference      =>p_copy_reference,
11072                  p_copy_line_party_yn  => p_copy_line_party_yn,
11073                  p_renew_ref_yn        => 'N',
11074                  p_generate_line_number => l_generate_line_number, --Bug 2489856
11075                  x_cle_id		     => l_cle_id_out);
11076 		 -- DND p_change_status	=> 'Y');  --LLC
11077 
11078 IF (l_debug = 'Y') THEN
11079    OKC_DEBUG.log('750 : After copy_contract_line  ');
11080    OKC_DEBUG.log('750 : x_return_status : '||l_return_status);
11081 END IF;
11082 
11083             l_copy_sublines := 'F';
11084             -- If any error happens it exits the loop or if it is a warning it still continues.
11085             IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
11086               IF (l_return_status = OKC_API.G_RET_STS_WARNING) THEN
11087                 IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
11088                   x_return_status := OKC_API.G_RET_STS_WARNING;
11089                 END IF;
11090               ELSE
11091                 x_return_status := l_return_status;
11092                 RAISE G_EXCEPTION_HALT_VALIDATION;
11093               END IF;
11094             END IF;
11095           END IF;
11096 		add_new_cle_id(l_lines_tbl(j).id,l_cle_id_out);
11097           ELSIF l_lines_tbl(j).line_exists_yn = 'Y' THEN
11098              l_from_cle_id := l_lines_tbl(j).id;
11099              l_to_cle_id   := l_lines_tbl(j).to_line;
11100              l_to_chr_id   := NULL;
11101           copy_contract_line(
11102 	        p_api_version	=> p_api_version,
11103              p_init_msg_list	=> p_init_msg_list,
11104              x_return_status 	=> l_return_status,
11105              x_msg_count     	=> x_msg_count,
11106              x_msg_data      	=> x_msg_data,
11107              p_from_cle_id	=> l_from_cle_id,
11108              p_from_chr_id    => p_from_chr_id,
11109 	     p_to_cle_id 	=> l_to_cle_id,
11110 	     p_to_chr_id		=> l_to_chr_id,
11111 	     p_lse_id         => l_lines_tbl(j).lse_id,
11112 	     p_to_template_yn => p_to_template_yn,
11113              p_copy_reference     =>p_copy_reference,
11114              p_copy_line_party_yn => p_copy_line_party_yn,
11115 	     p_renew_ref_yn     => 'N',
11116              p_generate_line_number => l_generate_line_number, --Bug 2489856
11117              x_cle_id		=> l_cle_id_out);
11118 
11119 IF (l_debug = 'Y') THEN
11120    OKC_DEBUG.log('850 : After copy_contract_line  ');
11121    OKC_DEBUG.log('850 : x_return_status : '||l_return_status);
11122 END IF;
11123 
11124 
11125           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
11126             IF (l_return_status = OKC_API.G_RET_STS_WARNING) THEN
11127               IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
11128                 x_return_status := OKC_API.G_RET_STS_WARNING;
11129               END IF;
11130             ELSE
11131               x_return_status := l_return_status;
11132               RAISE G_EXCEPTION_HALT_VALIDATION;
11133             END IF;
11134           END IF;
11135 		add_new_cle_id(l_lines_tbl(j).id,l_cle_id_out);
11136 	   ELSIF l_lines_tbl(j).line_exists_yn = 'N' THEN
11137 		get_new_cle_id(l_lines_tbl(j).to_line,l_to_cle_id);
11138              l_from_cle_id := l_lines_tbl(j).id;
11139              l_to_chr_id   := NULL;
11140           copy_contract_line(
11141 	     p_api_version	=> p_api_version,
11142              p_init_msg_list	=> p_init_msg_list,
11143              x_return_status 	=> l_return_status,
11144              x_msg_count     	=> x_msg_count,
11145              x_msg_data      	=> x_msg_data,
11146              p_from_cle_id	=> l_from_cle_id,
11147              p_from_chr_id    => p_from_chr_id,
11148 	     p_to_cle_id 	=> l_to_cle_id,
11149 	     p_to_chr_id		=> l_to_chr_id,
11150 	     p_lse_id         => l_lines_tbl(j).lse_id,
11151 	     p_to_template_yn => p_to_template_yn,
11152              p_copy_reference => p_copy_reference,
11153              p_copy_line_party_yn => p_copy_line_party_yn,
11154 	     p_renew_ref_yn   => 'N',
11155              p_generate_line_number => l_generate_line_number, --Bug 2489856
11156              x_cle_id		=> l_cle_id_out);
11157 
11158 
11159 IF (l_debug = 'Y') THEN
11160    OKC_DEBUG.log('950 : After copy_contract_line  ');
11161    OKC_DEBUG.log('950 : x_return_status : '||l_return_status);
11162 END IF;
11163 
11164 
11165           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
11166             IF (l_return_status = OKC_API.G_RET_STS_WARNING) THEN
11167               IF l_old_return_status <> OKC_API.G_RET_STS_ERROR THEN -- do not overwrite error with warning.
11168                 x_return_status := OKC_API.G_RET_STS_WARNING;
11169               END IF;
11170             ELSE
11171               x_return_status := l_return_status;
11172               RAISE G_EXCEPTION_HALT_VALIDATION;
11173             END IF;
11174           END IF;
11175 		add_new_cle_id(l_lines_tbl(j).id,l_cle_id_out);
11176 	   END IF;
11177 	   EXIT WHEN j = l_lines_tbl.LAST;
11178 	   j := l_lines_tbl.NEXT(j);
11179 	 END LOOP;
11180     END IF;
11181 
11182   -- Changes done for Bug 2054090
11183   -- PURPOSE  : Creates new configuration header and revision while
11184   --            copying a contract. The newly copied contract will point
11185   --            to the newly created config header and revisions.
11186   --            This procedure will handle all configured models in a contract.
11187   --             It updates contract lines for this config with new pointers
11188   --             for the columns config_top_model_line_id,
11189   --             config_header_id, config_revision_number.
11190 
11191   -- ---------------------------------------------------------------------------
11192 
11193      OKC_CFG_PUB.COPY_CONFIG(p_dnz_chr_id    => l_chr_id,
11194                              x_return_status => l_return_status);
11195 
11196          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
11197            IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
11198                x_return_status := l_return_status;
11199                RAISE G_EXCEPTION_HALT_VALIDATION;
11200            ELSE
11201                x_return_status := l_return_status;
11202            END IF;
11203          END IF;
11204 
11205 IF (l_debug = 'Y') THEN
11206    OKC_DEBUG.log('1000 : After OKC_CFG_PUB.COPY_CONFIG  ');
11207    OKC_DEBUG.log('1000 : x_return_status : '||l_return_status);
11208 END IF;
11209 
11210   -- Changes done for Bug 2054090
11211 
11212   --Changes done for Bug 3764231 to execute the dynamic SQL only for service contracts
11213       OPEN l_Service_Contract_csr;
11214       FETCH l_Service_Contract_csr into l_category;
11215       CLOSE l_Service_Contract_csr;
11216   --Changes done for Bug 3764231 to execute the dynamic SQL only for service contracts
11217 
11218    IF l_category = 'SERVICE' then   --Bug 3764231
11219 
11220       -- Begin - Changes done for Bug 1917514
11221 
11222       OPEN c_pdf;
11223       FETCH c_pdf INTO l_pdf_id;
11224       okc_create_plsql (p_pdf_id => l_pdf_id,
11225                     x_string => l_string) ;
11226       CLOSE c_pdf;
11227 
11228 
11229 IF (l_debug = 'Y') THEN
11230    OKC_DEBUG.log('1100 : l_string : '||l_string);
11231 END IF;
11232 
11233     IF l_string is NOT NULL THEN
11234        proc_string := 'begin '||l_string || ' (:b1,:b2,:b3); end ;';
11235        EXECUTE IMMEDIATE proc_string using l_chr_id,l_cle_id, out l_return_status;
11236          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN -- Bugfix 2151523(1917514) - modified IF
11237              x_return_status := l_return_status;
11238              RAISE G_EXCEPTION_HALT_VALIDATION;
11239          ELSE
11240 		   --for Bug#3101222 -Return status below is not properly initialized.
11241              --x_return_status := l_return_status; --for Bug#3101222
11242              l_oks_copy := 'N';
11243              -- Setting l_oks_copy to 'N' so that this procedure should not be called from
11244              -- Copy Line if it is already called from Copy Header
11245          END IF;
11246     END IF;
11247   END IF; -- End l_category ='SERVICE'
11248 */
11249 -- hkamdar R12
11250     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
11251       FND_LOG.string(FND_LOG.level_statement
11252                         ,G_PKG_NAME||'.'||l_module_name
11253                         ,'Before call to OKS_COPY_CONTRACT_PVT.COPY_COMPONENTS'
11254                        ||'p_from_chr_id='||p_from_chr_id
11255                        ||'p_contract_number='||p_contract_number);
11256     END IF;
11257 
11258   OKS_COPY_CONTRACT_PVT.COPY_COMPONENTS(
11259     p_api_version                  => p_api_version,
11260     p_init_msg_list                => p_init_msg_list,
11261     x_return_status                => l_return_status,
11262     x_msg_count                    => x_msg_count,
11263     x_msg_data                     => x_msg_data,
11264     p_from_chr_id                  => p_from_chr_id,
11265     p_to_chr_id                    => p_to_chr_id,
11266     p_contract_number              => p_contract_number,
11267     p_contract_number_modifier     => p_contract_number_modifier,
11268     p_to_template_yn               => p_to_template_yn,
11269     p_components_tbl               => p_components_tbl,
11270     p_lines_tbl                    => p_lines_tbl,
11271     x_to_chr_id                    => l_to_chr_id,
11272     p_published_line_ids_tbl => l_published_line_ids_tbl,
11273     p_include_cancelled_lines => p_include_cancelled_lines,
11274     p_include_terminated_lines => p_include_terminated_lines);
11275 
11276     IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
11277       FND_LOG.string(FND_LOG.level_statement
11278                         ,G_PKG_NAME||'.'||l_module_name
11279                         ,'After call to OKS_COPY_CONTRACT_PVT.COPY_COMPONENTS'
11280                        ||'p_from_chr_id='||p_from_chr_id
11281                        ||'p_contract_number='||p_contract_number
11282 		       ||'Return Status='||l_return_status
11283 		       ||'New Chr Id='||l_to_chr_id);
11284     END IF;
11285     x_chr_id := l_to_chr_id;
11286     x_return_status := l_return_status;
11287 
11288     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN -- Bugfix 2151523(1917514) - modified IF
11289         x_return_status := l_return_status;
11290         RAISE G_EXCEPTION_HALT_VALIDATION;
11291     END IF;
11292 -- End
11293   -- End - Changes done for Bug 1917514
11294 END IF;
11295   IF (l_debug = 'Y') THEN
11296      OKC_DEBUG.log('10000 : Exiting Procedure OKC_COPY_CONTRACT_PVT.copy_components ', 2);
11297      OKC_DEBUG.ReSet_Indentation;
11298   END IF;
11299 
11300   EXCEPTION
11301     WHEN G_EXCEPTION_HALT_VALIDATION THEN
11302       IF (l_debug = 'Y') THEN
11303        OKC_DEBUG.log('20000 : Exiting Procedure OKC_COPY_CONTRACT_PVT.copy_components ', 2);
11304        OKC_DEBUG.ReSet_Indentation;
11305       END IF;
11306       NULL;
11307     WHEN OTHERS THEN
11308       -- store SQL error message on message stack for caller
11309       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
11310       IF (l_debug = 'Y') THEN
11311          OKC_DEBUG.log('30000 : SQLCODE : '||SQLCODE);
11312          OKC_DEBUG.log('30000 : SQLERRM : '||SQLERRM);
11313          OKC_DEBUG.log('30000 : Exiting Procedure OKC_COPY_CONTRACT_PVT.copy_components ', 2);
11314          OKC_DEBUG.ReSet_Indentation;
11315       END IF;
11316       -- notify caller of an UNEXPECTED error
11317       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
11318 
11319   END copy_components;
11320 
11321   -- Bug 2950549 - Added procedure add_concurent : This procedure will make a call-- to the concurrent program and insert records in OKC_CONC_requests table.
11322   PROCEDURE add_concurrent(p_components_tbl   IN api_components_tbl,
11323 	                      p_lines_tbl    IN api_lines_tbl,
11324 					  p_from_chr_id  IN NUMBER,
11325 					  p_to_chr_id    IN NUMBER,
11326 					  p_contract_number IN VARCHAR2,
11327 					  p_contract_number_modifier IN VARCHAR2,
11328 					  p_to_template_yn IN VARCHAR2 DEFAULT 'N',
11329 					  p_copy_reference IN VARCHAR2 DEFAULT 'COPY',
11330 					  p_copy_line_party_yn IN VARCHAR2,
11331 					  p_scs_code     IN VARCHAR2,
11332 					  p_intent       IN VARCHAR2,
11333 					  p_prospect     IN VARCHAR,
11334 					  p_include_cancelled_lines IN VARCHAR2 DEFAULT 'Y',
11335 					  p_include_terminated_lines IN VARCHAR2 DEFAULT 'Y') IS
11336     l_request_id NUMBER;
11337     l_id NUMBER;
11338 
11339   BEGIN
11340   SELECT  okc_conc_requests_s.nextval into l_id from dual;
11341  IF p_components_tbl.COUNT > 0 THEN
11342    FOR i IN p_components_tbl.FIRST .. p_components_tbl.LAST LOOP
11343    INSERT INTO OKC_CONC_REQUESTS(
11344 						   ID,
11345 						   SOURCE_ID,
11346 						   TARGET_CHR_ID,
11347 						   COMPONENT_TYPE,
11348 						   ATTRIBUTE1,
11349 						   PROCESS_NAME,
11350 						   ORG_ID,
11351 						   CREATED_BY,
11352 						   CREATION_DATE,
11353 						   LAST_UPDATED_BY,
11354 						   LAST_UPDATE_LOGIN,
11355                                        LAST_UPDATE_DATE,
11356                		  	         PROGRAM_APPLICATION_ID,
11357 						   PROGRAM_ID,
11358 						   PROGRAM_UPDATE_DATE,
11359 						   REQUEST_ID)
11360      VALUES
11361 				   (l_id,
11362 				    p_components_tbl(i).id,
11363 				    p_components_tbl(i).to_k,
11364 				    p_components_tbl(i).component_type,
11365 				    p_components_tbl(i).attribute1,
11366     			    'OKCCPCON',
11367                    FND_PROFILE.VALUE('ORG_ID'),
11368                    FND_GLOBAL.USER_ID,
11369 			    SYSDATE,
11370 			    FND_GLOBAL.USER_ID,
11371 			    FND_GLOBAL.LOGIN_ID,
11372 			    SYSDATE,
11373           decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
11374           decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
11375 		decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
11376 		decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID)
11377 		);
11378 		END LOOP;
11379 END IF;
11380 IF p_lines_tbl.count > 0 THEN
11381 	FOR j  in p_lines_tbl.FIRST .. p_lines_tbl.LAST LOOP
11382       INSERT INTO OKC_CONC_REQUESTS(ID,
11383                                SOURCE_ID,
11384 	 	   	             TARGET_CLE_ID,
11385 					 LSE_ID,
11386 	        			 LINE_EXISTS_YN,
11387 					 LINE_EXP_YN,  --bug 3990643
11388 					 PROCESS_NAME,
11389 					 ORG_ID,
11390 					 CREATED_BY,
11391 					 CREATION_DATE,
11392 					 LAST_UPDATED_BY,
11393 					 LAST_UPDATE_LOGIN,
11394 	         			 LAST_UPDATE_DATE,
11395 					 PROGRAM_APPLICATION_ID,
11396 					 PROGRAM_ID,
11397 					 PROGRAM_UPDATE_DATE,
11398 					 REQUEST_ID)
11399                    VALUES      ( l_id,
11400 					  p_lines_tbl(j).id,
11401 					  p_lines_tbl(j).to_line,
11402 		        		  p_lines_tbl(j).lse_id,
11403 					  p_lines_tbl(j).line_exists_yn,
11404 					  p_lines_tbl(j).line_exp_yn,  --bug 3990643
11405 					  'OKCCPCON',
11406 					  FND_PROFILE.VALUE('ORG_ID'),
11407 		          		   FND_GLOBAL.USER_ID,
11408 					   SYSDATE,
11409 					   FND_GLOBAL.USER_ID,
11410 					   FND_GLOBAL.LOGIN_ID,
11411 					   SYSDATE,
11412       decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
11413 	decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
11414 	decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
11415      	decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID)
11416 										);
11417 		END LOOP;
11418 END IF;
11419           COMMIT;
11420 
11421 		select okc_conc_requests_s.currval into l_id from dual;
11422 
11423 		l_request_id := FND_REQUEST.SUBMIT_REQUEST(
11424 						 APPLICATION => 'OKC',
11425 						 PROGRAM     => 'OKCCPCON',
11426 						 ARGUMENT1   => l_id,
11427 						 ARGUMENT2   => p_from_chr_id,
11428 						 ARGUMENT3   => p_to_chr_id,
11429 						 ARGUMENT4   => p_contract_number,
11430 						 ARGUMENT5   => p_contract_number_modifier,
11431 						 ARGUMENT6   => p_to_template_yn,
11432 						 ARGUMENT7   => p_copy_reference,
11433 						 ARGUMENT8   => p_copy_line_party_yn,
11434 						 ARGUMENT9   => p_scs_code,
11435 						 ARGUMENT10  => p_intent,
11436 						 ARGUMENT11  => p_prospect,
11437 						 ARGUMENT12  => 'N', /*P_Copy_Entire_K_YN*/
11438 						 ARGUMENT13  => p_include_cancelled_lines,
11439 						 ARGUMENT14  => p_include_terminated_lines);
11440    IF l_request_id > 0 THEN
11441        OKC_API.SET_MESSAGE(p_app_name => g_app_name,
11442                            p_msg_name => 'OKC_COPY_SUBMIT_S',
11443                            p_token1  => 'TOKEN1',
11444                            p_token1_value => l_request_id);
11445   END IF;
11446 
11447 
11448   END ADD_CONCURRENT ;
11449 
11450 
11451 
11452   PROCEDURE copy_concurrent(errbuf out NOCOPY VARCHAR2,
11453 					   retcode out NOCOPY NUMBER,
11454                             p_id in NUMBER,
11455 					    p_from_chr_id IN NUMBER,
11456 					    p_to_chr_id IN NUMBER,
11457 						p_contract_number IN VARCHAR2,
11458 						 p_contract_number_modifier IN VARCHAR2,
11459 						 p_to_template_yn IN VARCHAR2,
11460 						 p_copy_reference IN VARCHAR2,
11461 						 p_copy_line_party_yn IN VARCHAR2,
11462 						 p_scs_code IN VARCHAR2,
11463 						 p_intent   IN VARCHAR2,
11464 						 p_prospect IN VARCHAR2,
11465 						 p_copy_entire_k_yn IN VARCHAR2, -- hkamdar R12
11466 					    	 p_include_cancelled_lines IN VARCHAR2 DEFAULT 'Y', p_include_terminated_lines IN VARCHAR2 DEFAULT 'Y') IS
11467     l_comp_tbl         api_components_tbl;
11468     l_lines_tbl        api_lines_tbl;
11469     l_published_line_ids_tbl OKS_COPY_CONTRACT_PVT.published_line_ids_tbl;
11470 
11471     l_api_version                 CONSTANT NUMBER := 1;
11472     x_return_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
11473     l_init_msg_list               VARCHAR2(1) := 'T';
11474     x_msg_count                   NUMBER := OKC_API.G_MISS_NUM;
11475     x_msg_data                    VARCHAR2(2000) := OKC_API.G_MISS_CHAR;
11476     l_chr_id                     NUMBER;
11477     CURSOR cur_select_records IS SELECT
11478 		                    	SOURCE_ID ID,
11479 						TARGET_CHR_ID TO_K,
11480 						COMPONENT_TYPE,
11481 						ATTRIBUTE1,
11482 						TARGET_CLE_ID to_line,
11483 						LSE_ID,
11484 						LINE_EXISTS_YN,
11485 						LINE_EXP_YN --mmadhavi bug 3990643
11486 					      FROM    OKC_CONC_REQUESTS
11487 						WHERE ID = p_id;
11488 
11489       --Bug 4045272
11490 	 --Adding cursor to get Contract Number of Copied Contract for writing to Concurrent Manager log file
11491 	 CURSOR get_k_num_csr(p_chr_id IN NUMBER)
11492 	 IS
11493 	 SELECT
11494 	  contract_number ||' '|| contract_number_modifier
11495 	 FROM okc_k_headers_b
11496 	 WHERE id = p_chr_id;
11497 
11498 	 l_token                       VARCHAR2(250);
11499 	 l_msg_stack VARCHAR2(250);
11500 
11501 	i NUMBER := 1;
11502         l_app_name VARCHAR2(30) := 'Copy_Concurrent';
11503     	l_no_of_cancel_lines NUMBER;
11504     	l_no_of_termn_lines  NUMBER;
11505     	l_include_cancelled_lines varchar2(1) := p_include_cancelled_lines;
11506     	l_include_terminated_lines varchar2(1) := p_include_terminated_lines;
11507 
11508    CURSOR l_lines_csr(p_chr_id in number) IS
11509      SELECT COUNT(date_cancelled), COUNT(date_terminated)
11510         FROM okc_k_lines_b okcb, oks_k_lines_b oksb
11511         WHERE okcb.id = oksb.cle_id
11512         AND okcb.dnz_chr_id = p_chr_id;
11513 BEGIN
11514 -- hkamdar R12 Copy MOAC changes
11515 OKC_CONTEXT.SET_OKC_ORG_CONTEXT(p_chr_id => p_from_chr_id);
11516           -- hkamdar R12 Copy Enhancements
11517    IF p_copy_entire_k_yn = 'Y' THEN -- When Entire contract needs to copied
11518 
11519 	IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
11520       			FND_LOG.string(FND_LOG.level_statement
11521                         ,G_PKG_NAME||'.'||l_app_name
11522                         ,'Before call to OKS_COPY_CONTRACT_PVT.COPY_CONTRACT'
11523                        ||'p_chr_id='||p_from_chr_id
11524                        ||'p_contract_number='||p_contract_number);
11525 	END IF;
11526 
11527               -- Call OKS Copy Contract
11528               OKS_COPY_CONTRACT_PVT.COPY_CONTRACT(
11529    						 p_api_version               => l_api_version,
11530 						 p_init_msg_list             => l_init_msg_list,
11531     						 x_return_status             => x_return_status,
11532 						 x_msg_count                 => x_msg_count,
11533 						 x_msg_data                  => x_msg_data,
11534     						 p_chr_id                    => p_from_chr_id,
11535     						 p_contract_number           => p_contract_number,
11536    						 p_contract_number_modifier  => p_contract_number_modifier,
11537 						 p_to_template_yn            => p_to_template_yn,
11538     						 p_renew_ref_yn              => 'N',
11539 					         x_to_chr_id                 => l_chr_id,
11540 						 p_include_cancelled_lines  => p_include_cancelled_lines, p_include_terminated_lines => p_include_terminated_lines);
11541 
11542                 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
11543                         FND_LOG.string(FND_LOG.level_statement
11544                         ,G_PKG_NAME||'.'||l_app_name
11545                         ,'After call to OKS_COPY_CONTRACT_PVT.COPY_CONTRACT'
11546                        ||'p_chr_id='||p_from_chr_id
11547                        ||'p_contract_number='||p_contract_number
11548 		       ||'Return Status='||x_return_status
11549 		       ||'New Chr Id='||l_chr_id);
11550                 END IF;
11551 
11552               If x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
11553 			  FOR i in 1..fnd_msg_pub.count_msg LOOP
11554 				l_msg_stack := fnd_msg_pub.get(p_msg_index => i
11555 				                             ,p_encoded => 'F');
11556 			     FND_FILE.PUT_LINE (FND_FILE.LOG,l_msg_stack);
11557 			  END LOOP;
11558 
11559                  IF l_chr_id is NULL THEN
11560                     RETCODE := 2;
11561                  ELSE
11562                     RETCODE := 1;
11563                  END IF;
11564               ELSE
11565 		      Open get_k_num_csr(l_chr_id);
11566 			 Fetch get_k_num_csr into l_token;
11567 			 Close get_k_num_csr;
11568 		       IF L_INCLUDE_CANCELLED_LINES = 'N' OR L_INCLUDE_TERMINATED_LINES = 'N' THEN
11569 
11570         		OPEN L_LINES_CSR(p_from_chr_id);
11571         		FETCH L_LINES_CSR INTO l_no_of_cancel_lines, l_no_of_termn_lines;
11572         		CLOSE L_LINES_CSR;
11573 
11574          		IF l_no_of_cancel_lines <> 0 OR l_no_of_termn_lines <> 0 THEN
11575 			 IF (l_no_of_cancel_lines <> 0 AND l_no_of_termn_lines <> 0) AND (L_INCLUDE_CANCELLED_LINES = 'N' AND L_INCLUDE_TERMINATED_LINES = 'N') THEN
11576 
11577 			  fnd_message.set_name('OKC', 'OKC_NO_CANC_TERMN_LINE');
11578         		  FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11579 
11580         		ELSIF l_no_of_cancel_lines <> 0 AND L_INCLUDE_CANCELLED_LINES = 'N' THEN
11581 			  fnd_message.set_name('OKC', 'OKC_NO_CANCEL_LINE');
11582         		  FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11583         	        ELSIF l_no_of_termn_lines <> 0 AND L_INCLUDE_TERMINATED_LINES = 'N' THEN
11584 			  fnd_message.set_name('OKC', 'OKC_NO_TERMN_LINE');
11585         		  FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11586 			END IF;
11587 			END IF;
11588                        END IF;
11589 
11590                 fnd_message.set_name('OKC', 'OKC_COPY_CONTRACT');
11591 		      fnd_message.set_token(token =>'KNUM', value => l_token);
11592 	           FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11593 
11594                 RETCODE := 0;
11595               END IF;
11596 
11597               ERRBUF := x_msg_data;
11598   ELSE
11599   -- End hkamdar R12
11600 
11601 	   FOR p_cur_select_records IN cur_select_records LOOP
11602 		 l_comp_tbl(i).id := p_cur_select_records.id;
11603 		 l_comp_tbl(i).to_k := p_cur_select_records.to_k;
11604            IF p_cur_select_records.component_type is not null then
11605 		    l_comp_tbl(i).component_type := p_cur_select_records.component_type;
11606 	         l_comp_tbl(i).attribute1 := p_cur_select_records.attribute1;
11607 		 ELSE
11608               l_lines_tbl(i).id := p_cur_select_records.id;
11609 		    l_lines_tbl(i).to_line := p_cur_select_records.to_line;
11610 		    l_lines_tbl(i).lse_id := p_cur_select_records.lse_id;
11611 		    l_lines_tbl(i).line_exists_yn := p_cur_select_records.line_exists_yn;
11612 		    l_lines_tbl(i).line_exp_yn := p_cur_select_records.line_exp_yn; --bug 3990643
11613 		 END IF;
11614            i := i + 1;
11615 	   END LOOP;
11616 
11617 -- hkamdar R12 modified call parameters 7/25/2005.
11618 
11619                 IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
11620                         FND_LOG.string(FND_LOG.level_statement
11621                         ,G_PKG_NAME||'.'||l_app_name
11622                         ,'Before call to OKS_COPY_CONTRACT_PVT.COPY_COMPONENTS'
11623                        ||'p_from_chr_id='||p_from_chr_id
11624 		       ||'p_to_chr_id='||p_to_chr_id
11625                        ||'p_contract_number='||p_contract_number);
11626                 END IF;
11627 
11628         OKS_COPY_CONTRACT_PVT.copy_components(
11629 	              p_api_version         => l_api_version,
11630 			    p_init_msg_list         => l_init_msg_list,
11631 			    x_return_status         => x_return_status,
11632 			    x_msg_count             => x_msg_count,
11633 			    x_msg_data              => x_msg_data,
11634 			    p_from_chr_id           => p_from_chr_id,
11635 			    p_to_chr_id             => p_to_chr_id,
11636 			    p_contract_number       => p_contract_number,
11637 			    p_contract_number_modifier   => p_contract_number_modifier,
11638 			    p_to_template_yn        => p_to_template_yn,
11639 			    p_components_tbl       => l_comp_tbl,
11640 			    p_lines_tbl             => l_lines_tbl,
11641 		 	    x_to_chr_id           => l_chr_id,
11642 			    p_published_line_ids_tbl => l_published_line_ids_tbl,
11643 			    p_include_cancelled_lines => p_include_cancelled_lines,
11644 		 	    p_include_terminated_lines => p_include_terminated_lines);
11645 
11646               IF (FND_LOG.level_statement >= FND_LOG.g_current_runtime_level) THEN
11647                         FND_LOG.string(FND_LOG.level_statement
11648                         ,G_PKG_NAME||'.'||l_app_name
11649                         ,'After call to OKS_COPY_CONTRACT_PVT.COPY_COMPONENTS'
11650                        ||'p_from_chr_id='||p_from_chr_id
11651                        ||'p_to_chr_id='||p_to_chr_id
11652                        ||'p_contract_number='||p_contract_number
11653 		       ||'Return Status='||x_return_status);
11654               END IF;
11655 
11656        IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
11657 	     FOR i in 1..fnd_msg_pub.count_msg LOOP
11658 		    l_msg_stack := fnd_msg_pub.get(p_msg_index => i
11659 		                                 ,p_encoded => 'F');
11660 		    FND_FILE.PUT_LINE (FND_FILE.LOG,l_msg_stack);
11661 		END LOOP;
11662 
11663 		 IF l_chr_id is NULL THEN
11664 		    RETCODE := 2;
11665           ELSE
11666 		    RETCODE := 1;
11667           END IF;
11668        ELSE
11669           Open get_k_num_csr(l_chr_id);
11670           Fetch get_k_num_csr into l_token;
11671           Close get_k_num_csr;
11672 
11673 		     IF L_INCLUDE_CANCELLED_LINES = 'N' OR L_INCLUDE_TERMINATED_LINES = 'N' THEN
11674 
11675         		OPEN L_LINES_CSR(p_from_chr_id);
11676         		FETCH L_LINES_CSR INTO l_no_of_cancel_lines, l_no_of_termn_lines;
11677         		CLOSE L_LINES_CSR;
11678 
11679          		IF l_no_of_cancel_lines <> 0 OR l_no_of_termn_lines <> 0 THEN
11680 			 IF (l_no_of_cancel_lines <> 0 AND l_no_of_termn_lines <> 0) AND (L_INCLUDE_CANCELLED_LINES = 'N' AND L_INCLUDE_TERMINATED_LINES = 'N') THEN
11681 			  fnd_message.set_name('OKC', 'OKC_NO_CANC_TERMN_LINE');
11682         		  FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11683 
11684         		ELSIF l_no_of_cancel_lines <> 0 AND L_INCLUDE_CANCELLED_LINES = 'N' THEN
11685 			  fnd_message.set_name('OKC', 'OKC_NO_CANCEL_LINE');
11686         		  FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11687         	        ELSIF l_no_of_termn_lines <> 0 AND L_INCLUDE_TERMINATED_LINES = 'N' THEN
11688 			  fnd_message.set_name('OKC', 'OKC_NO_TERMN_LINE');
11689         		  FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11690 			END IF;
11691 			END IF;
11692                       END IF;
11693 
11694           fnd_message.set_name('OKC', 'OKC_COPY_CONTRACT');
11695           fnd_message.set_token(token =>'KNUM', value => l_token);
11696 	     FND_FILE.PUT_LINE (FND_FILE.LOG, fnd_message.get);
11697 
11698 
11699 		RETCODE := 0;
11700        END IF;
11701 	  ERRBUF := x_msg_data;
11702      END IF;-- hkamdar R12
11703  END copy_concurrent;
11704 
11705  -- IKON ER 3819893
11706 
11707 
11708  PROCEDURE UPDATE_TEMPLATE_CONTRACT (p_api_version  IN NUMBER,
11709 				    p_chr_id        IN NUMBER,
11710 				    p_start_date    IN DATE,
11711 				    p_end_date      IN DATE,
11712 				    x_msg_count     OUT  NOCOPY  NUMBER,
11713 				    x_msg_data      OUT   NOCOPY VARCHAR2,
11714                                     x_return_status OUT   NOCOPY VARCHAR2)
11715 IS
11716 
11717      l_msg_count          NUMBER;
11718      l_msg_data           VARCHAR2(2000);
11719      l_return_status      VARCHAR2(1) := 'S';
11720      l_api_version        NUMBER := 1.0;
11721      l_init_msg_list      CONSTANT VARCHAR2(1) := 'F';
11722      l_duration           NUMBER := 0;
11723      l_period             VARCHAR2(20);
11724      l_hdr_duration       NUMBER := 0;
11725      l_line_duration      NUMBER := 0;
11726      l_hdr_line_duration  NUMBER := 0;
11727      l_hdr_est_duration   NUMBER := 0;
11728      l_hdr_period         VARCHAR2(20);
11729      l_start_date         DATE;
11730      l_end_date           DATE;
11731      l_hdr_end_date       DATE;
11732      l_hdr_start_date     DATE;
11733      l_invoice_rule_id    NUMBER;
11734      l_hdr_acct_rule      NUMBER;
11735      l_line_acct_rule     NUMBER;
11736      l_hdr_timeunit       VARCHAR2(100);
11737      l_line_timeunit      VARCHAR2(100);
11738      l_hdr_est_timeunit   VARCHAR2(100);
11739      l_hdr_line_timeunit  VARCHAR2(100);
11740      l_timeunit           VARCHAR2(100);
11741     -- x_return_status VARCHAR2(10);
11742 
11743      -- QP input params
11744      qp_rec              OKS_QP_PKG.Input_details;
11745      price_details_rec   OKS_QP_PKG.PRICE_DETAILS;
11746      modifier_det_tbl    QP_PREQ_GRP.LINE_DETAIL_TBL_TYPE;
11747      price_break_det_tbl OKS_QP_PKG.G_PRICE_BREAK_TBL_TYPE;
11748 
11749      subtype chrv_rec_type is okc_contract_pvt.chrv_rec_type;
11750      l_chrv_rec    chrv_rec_type;
11751      x_chrv_rec chrv_rec_type;
11752 
11753      l_billing_type     VARCHAR2(2000);
11754      l_rec              OKS_BILLING_PROFILES_PUB.Billing_profile_rec;
11755      l_sll_tbl_out      OKS_BILLING_PROFILES_PUB.Stream_Level_tbl;
11756      l_slh_rec          OKS_BILL_SCH.StreamHdr_Type;
11757      l_sll_tbl          OKS_BILL_SCH.StreamLvl_tbl;
11758      l_bil_sch_out_tbl  OKS_BILL_SCH.ItemBillSch_tbl;
11759      rru_id             NUMBER;
11760      ire_id             NUMBER;
11761      l_klnv_id          NUMBER;
11762      l_obj_num          NUMBER;
11763      l_timevalue_id     NUMBER;
11764      l_arl_exist_flag   VARCHAR2(1) := 'Y';
11765      l_ire_exist_flag   VARCHAR2(1) := 'Y';
11766      l_rgp_id           NUMBER;
11767 
11768      -- Estimation Params
11769      l_khrv_tbl_in    oks_contract_hdr_pub.khrv_tbl_type;
11770      l_khrv_tbl_out   oks_contract_hdr_pub.khrv_tbl_type;
11771      l_klnv_tbl_in    oks_contract_line_pub.klnv_tbl_type;
11772      l_klnv_tbl_out   oks_contract_line_pub.klnv_tbl_type;
11773      l_est_id         NUMBER;
11774      l_est_date       DATE;
11775      l_est_date_s     VARCHAR2(50);
11776      l_est_obj_num    NUMBER;
11777 
11778 
11779      -- To delete security levels
11780      subtype cacv_rec_type is okc_contract_pvt.cacv_rec_type;
11781      cacv_rec    cacv_rec_type;
11782 
11783      --Partial Period Uptake changes
11784      l_SrcContractPPSetupExists_YN VARCHAR2(1);
11785      l_GCDPPSetupExists_YN VARCHAR2(1) ;
11786 
11787 
11788      -- Get Source Contract ID
11789      CURSOR GetSourceContractID(P_To_Chr_ID IN NUMBER) IS
11790      select orig_system_id1
11791      from
11792      okc_k_headers_b
11793      where id = P_To_Chr_ID;
11794 
11795      P_From_Chr_ID  NUMBER;
11796 
11797      -- Get current security restrictions
11798      CURSOR get_access_level (p_chr_id IN NUMBER) IS
11799             SELECT id
11800             FROM okc_k_accesses
11801             WHERE chr_id = p_chr_id;
11802 
11803       -- Select all top lines and sublines
11804      CURSOR get_contract_lines_csr (p_chr_id IN NUMBER) IS
11805             SELECT  id,start_date,end_date,lse_id
11806             FROM    OKC_K_LINES_B
11807             WHERE   lse_id in (1,7,8,9,10,11,12,13,14,19,18,25,35,46)
11808             CONNECT BY cle_id = PRIOR id
11809             START WITH CHR_ID = p_chr_id;
11810 
11811 
11812      -- Get Header start date and rules
11813      CURSOR get_hdr_date_csr(p_chr_id IN NUMBER) IS
11814             SELECT start_date,end_date
11815             FROM OKC_K_HEADERS_B
11816             WHERE id = p_chr_id;
11817 
11818      -- Get all top lines
11819      CURSOR topline_csr(p_chr_id IN NUMBER) IS
11820         SELECT id, dnz_chr_id
11821                 , start_date, end_date,lse_id,inv_rule_id
11822                 --npalepu added new column on 18-may-2006 for bug # 5211482
11823                 ,ORIG_SYSTEM_ID1
11824                 --end npalepu
11825          FROM   OKC_K_LINES_B
11826          WHERE  dnz_chr_id = p_chr_id
11827          AND    cle_id IS NULL;
11828 
11829 
11830      --npalepu added on 18-may-2006 for bug # 5211482
11831      CURSOR GetStreamsForSourceLine(P_From_Cle_ID IN NUMBER) IS
11832         SELECT  SEQUENCE_NO
11833                 ,UOM_CODE
11834                 ,START_DATE
11835                 ,END_DATE
11836                 ,LEVEL_PERIODS
11837                 ,UOM_PER_PERIOD
11838                 ,ADVANCE_PERIODS
11839                 ,LEVEL_AMOUNT
11840                 ,INVOICE_OFFSET_DAYS
11841                 ,INTERFACE_OFFSET_DAYS
11842                 ,COMMENTS
11843                 ,DUE_ARR_YN
11844                 ,AMOUNT
11845                 ,LINES_DETAILED_YN
11846         FROM    OKS_STREAM_LEVELS_B
11847         WHERE CLE_ID = P_From_Cle_ID
11848         AND dnz_chr_id = P_FROM_CHR_ID
11849         ORDER BY SEQUENCE_NO;
11850 
11851      TYPE l_SrcLnStreams_Tbl_Type IS TABLE OF GetStreamsForSourceLine%ROWTYPE INDEX BY BINARY_INTEGER;
11852      l_SrcLnStreams_Tbl l_SrcLnStreams_Tbl_Type;
11853      l_SrcLnStreams_Exists_YN VARCHAR2(1);
11854 
11855      l_LineStreams_tbl OKS_BILL_SCH.StreamLvl_tbl;
11856      l_LineStreams_tbl_Ctr NUMBER := 0;
11857      l_duration_match   VARCHAR2(1);
11858      --end npalepu
11859 
11860      --  Get current Hdr ARL rule.
11861      CURSOR get_hdr_arl_csr(p_cle_id IN NUMBER) IS
11862         SELECT acct_rule_id
11863         FROM   OKS_K_HEADERS_B
11864         WHERE chr_id = p_chr_id;
11865 
11866      -- Get current billing  type
11867      CURSOR get_billing_type_csr(p_cle_id IN NUMBER) IS
11868         SELECT  billing_schedule_type
11869         FROM    OKS_K_LINES_B
11870         WHERE cle_id = p_cle_id
11871 	and dnz_chr_id = p_chr_id;
11872 
11873 
11874      --  Get current ARL rule.
11875      CURSOR get_arl_csr(p_cle_id IN NUMBER) IS
11876         SELECT id,acct_rule_id, object_version_number
11877 	FROM OKS_K_LINES_B
11878         WHERE cle_id = p_cle_id
11879 	and dnz_chr_id = p_chr_id;
11880 
11881      -- Get Estimation date
11882 
11883          CURSOR get_estimation_date(p_chr_id IN NUMBER) IS
11884                 SELECT id, object_version_number, est_rev_date
11885                 FROM OKS_K_HEADERS_B
11886                 WHERE chr_id = p_chr_id;
11887 
11888      --npalepu added on 27-FEB-2007 for bug # 5671352
11889      CURSOR toplinetax_cur(p_cle_id IN NUMBER) IS
11890         SELECT SUM(nvl(tax_amount, 0)) amount
11891         FROM okc_k_lines_b cle, oks_k_lines_b kln
11892         WHERE cle.cle_id = p_cle_id
11893         AND   cle.id = kln.cle_id
11894         AND   cle.lse_id IN (7, 8, 9, 10, 11, 13, 35, 25)
11895         AND   cle.date_cancelled IS NULL;
11896 
11897      l_tax_amount       toplinetax_cur%ROWTYPE;
11898      l_topline_count    NUMBER;
11899 
11900      CURSOR Get_oks_Lines_details(p_cle_id IN NUMBER) IS
11901         SELECT id, object_version_number, dnz_chr_id
11902         FROM oks_k_lines_b
11903         WHERE cle_id = p_cle_id ;
11904 
11905      l_get_oks_details               Get_oks_Lines_details%ROWTYPE;
11906      l_klnv_tax_tbl_in               oks_contract_line_pub.klnv_tbl_type;
11907      l_klnv_tax_tbl_out              oks_contract_line_pub.klnv_tbl_type;
11908 
11909      CURSOR hdrtax_cur IS
11910         SELECT SUM(kln.tax_amount)  amount
11911         FROM okc_k_lines_b cle, oks_k_lines_b kln
11912         WHERE cle.dnz_chr_id = p_chr_id
11913         AND   cle.id = kln.cle_id
11914         AND   cle.lse_id IN (7, 8, 9, 10, 11, 13, 35, 25, 46)
11915         AND   cle.date_cancelled IS NULL;
11916 
11917      l_total_tax hdrtax_cur%ROWTYPE;
11918 
11919      CURSOR Get_Header_details IS
11920         SELECT id, object_version_number
11921         FROM OKS_K_HEADERS_B
11922         WHERE chr_id = p_chr_id ;
11923 
11924      l_get_hdr_details   get_header_details%ROWTYPE;
11925      l_khrv_tax_tbl_in   oks_contract_hdr_pub.khrv_tbl_type;
11926      l_khrv_tax_tbl_out  oks_contract_hdr_pub.khrv_tbl_type;
11927      --end bug # 5671352
11928 
11929       -------------------------------------------------------------------------------------
11930       -- This procedure updates all the line start date and end date based on new start date
11931       -- p_cle_id     - Line ID
11932       -- p_start_date - New Line Strat Date
11933       -- p_end_date   - New Line End Date
11934       -- p_lse_id     - Line Type
11935       --------------------------------------------------------------------------------------
11936 
11937      PROCEDURE UPDATE_LINE_DETAILS(p_cle_id        NUMBER,
11938                                    p_start_date    DATE,
11939                                    p_end_date      DATE,
11940                                    p_lse_id        NUMBER,
11941                                    x_msg_count     OUT  NOCOPY  NUMBER,
11942                                    x_msg_data      OUT   NOCOPY VARCHAR2,
11943                                    x_return_status OUT   NOCOPY VARCHAR2) IS
11944 
11945        l_api_version      NUMBER := 1.0;
11946        l_msg_count        NUMBER;
11947        l_end_date         DATE;
11948        l_msg_data         VARCHAR2(2000);
11949        l_return_status    VARCHAR2(1) := 'S';
11950        l_hdr_end_date     DATE;
11951        l_line_end_date    DATE;
11952        l_quantity         NUMBER;
11953        l_temp             VARCHAR2(2);
11954        l_hdr_inv_rule     NUMBER;
11955        l_line_inv_rule    NUMBER;
11956 
11957        subtype clev_rec_type is okc_contract_pvt.clev_rec_type;
11958        l_clev_rec  clev_rec_type;
11959        x_clev_rec  clev_rec_type;
11960        l_id               NUMBER;
11961 
11962 
11963      -- Check PM
11964      CURSOR check_pm_sch_csr(p_chr_id IN NUMBER, p_cle_id IN NUMBER) IS
11965             SELECT '1'
11966             FROM  OKS_PM_SCHEDULES
11967             WHERE dnz_chr_id = p_chr_id
11968             --npalepu modified on 5/12/2006 for bug # 5211447
11969             --changing because from R12 onwards the PM schedules will be directly
11970             --attached to the TOP line but not to the coverage line
11971             /* AND   cle_id in ( SELECT id
11972                               FROM  OKC_K_LINES_B
11973                               WHERE cle_id = p_cle_id); */
11974            AND   cle_id = p_cle_id;
11975            --end npalepu
11976 
11977      CURSOR get_hdr_enddate (p_chr_id IN NUMBER) IS
11978             SELECT end_date,inv_rule_id
11979             FROM okc_k_headers_b
11980             WHERE id=  p_chr_id;
11981 
11982      CURSOR get_parent_line_enddate (p_cle_id IN NUMBER) IS
11983             SELECT end_date,inv_rule_id
11984             FROM okc_k_lines_b
11985             WHERE id IN (SELECT b.cle_id
11986                          FROM OKC_K_LINES_B b
11987                          WHERE b.id = p_cle_id);
11988 
11989      -- Get the coverage line
11990        CURSOR line_cov_cur(p_cle_id IN Number) Is
11991               SELECT id
11992               FROM   OKC_K_LINES_V
11993               WHERE  cle_id = p_cle_id
11994               AND    lse_id in (2,13,15,20);
11995 
11996      BEGIN
11997 
11998 
11999             IF (l_debug = 'Y') THEN
12000                okc_debug.log('1130: Inside Update Lines');
12001             END IF;
12002           -- Compare parent and child dates.
12003            --Bug 4698309: Added lse_id checks for 12 and 46 also
12004           IF (   ( p_lse_id = 1)
12005 		    OR (p_lse_id = 12)
12006 		    OR (p_lse_id = 14)
12007 		    OR (p_lse_id = 19)
12008 		    OR (p_lse_id = 46)) THEN
12009              OPEN get_hdr_enddate (p_chr_id);
12010              FETCH get_hdr_enddate INTO l_hdr_end_date,l_hdr_inv_rule;
12011              CLOSE get_hdr_enddate;
12012 
12013              IF (p_end_date > l_hdr_end_date) THEN
12014                  l_end_date := l_hdr_end_date;
12015              ELSE
12016                  l_end_date := p_end_date;
12017              END IF;
12018           ELSE
12019                 OPEN get_parent_line_enddate(p_cle_id);
12020                 FETCH get_parent_line_enddate INTO l_line_end_date,l_line_inv_rule;
12021                 CLOSE get_parent_line_enddate;
12022                 IF (p_end_date > l_line_end_date) THEN
12023                    l_end_date := l_line_end_date;
12024                 ELSE
12025                    l_end_date := p_end_date;
12026                 END IF;
12027           END IF;
12028 
12029           l_clev_rec.id         := p_cle_id;
12030           l_clev_rec.start_date := p_start_date;
12031           l_clev_rec.end_date   := l_end_date;
12032 	  IF l_line_inv_rule IS NULL then
12033            l_clev_rec.inv_rule_id   := l_hdr_inv_rule;
12034 	 END IF;
12035 
12036           IF (l_debug = 'Y') THEN
12037                okc_debug.log('1140: Before calling OKC_CONTRACT_PUB.update_contract_line '|| p_cle_id);
12038                okc_debug.log('1141: Line New Start Date ' || p_start_date);
12039                okc_debug.log('1142: Line New End Date ' || l_end_date);
12040           END IF;
12041 
12042           OKC_CONTRACT_PUB.update_contract_line(p_api_version   => l_api_version,
12043                                                   x_return_status => l_return_status ,
12044                                                   x_msg_count     => l_msg_count,
12045                                                   x_msg_data      => l_msg_data,
12046                                                   p_clev_rec      => l_clev_rec ,
12047                                                   x_clev_rec      => x_clev_rec);
12048 
12049           IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12050                RAISE G_EXCEPTION_HALT_VALIDATION;
12051           END IF;
12052 
12053           IF (p_lse_id =1) OR (p_lse_id = 14) OR (p_lse_id = 19)  THEN
12054 
12055 	      OPEN  line_cov_cur(p_cle_id);
12056               FETCH line_cov_cur into l_id;
12057 
12058 
12059               IF line_cov_cur%Found THEN
12060 
12061 
12062                   IF (l_debug = 'Y') THEN
12063                      okc_debug.log('1150: Before Update Coverage');
12064                   END IF;
12065 
12066                   OKS_COVERAGES_PVT.Update_COVERAGE_Effectivity(
12067                               p_api_version     => l_api_version,
12068                               p_init_msg_list   => l_init_msg_list,
12069                               x_return_status   => l_return_status,
12070                               x_msg_count       => l_msg_count,
12071                               x_msg_data        => l_msg_data,
12072                               p_service_Line_Id => p_cle_id,
12073                               p_New_Start_Date  => p_start_date,
12074                               p_New_End_Date    => l_end_date  );
12075               END IF;
12076               CLOSE line_cov_cur;
12077               IF (l_debug = 'Y') THEN
12078                   okc_debug.log('1150: After Update Coverage ' || l_return_status);
12079               END IF;
12080 
12081 
12082               IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12083                  RAISE G_EXCEPTION_HALT_VALIDATION;
12084               END IF;
12085 
12086               -- Update PM Schedules.
12087               OPEN check_pm_sch_csr(p_chr_id,p_cle_id);
12088               FETCH check_pm_sch_csr INTO l_temp;
12089               IF check_pm_sch_csr%FOUND THEN
12090 
12091                  OKS_PM_PROGRAMS_PVT.ADJUST_PM_PROGRAM_SCHEDULE(p_api_version    => l_api_version,
12092                                                               p_contract_line_id => p_cle_id,
12093                                                               p_new_start_date   => p_start_date,
12094                                                               p_new_end_date     => l_end_date,
12095                                                               x_return_status    => l_return_status,
12096                                                               x_msg_count        => l_msg_count,
12097                                                               x_msg_data         => l_msg_data);
12098 
12099                  IF (l_debug = 'Y') THEN
12100                     okc_debug.log('1160: After Adjust PM Pgm ' || l_return_status);
12101                  END IF;
12102 
12103               END IF;
12104               CLOSE check_pm_sch_csr;
12105 
12106             /*  IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12107                   RAISE G_EXCEPTION_HALT_VALIDATION;
12108                END IF; */
12109           END IF;
12110 
12111 
12112 
12113            IF (p_lse_id = 46) THEN
12114 
12115                OKS_SUBSCRIPTION_PUB.RECREATE_SCHEDULE(p_api_version    => l_api_version,
12116                                                        p_init_msg_list  => OKC_API.G_FALSE,
12117                                                        x_return_status  => l_return_status,
12118                                                        x_msg_count      => l_msg_count,
12119                                                        x_msg_data       => l_msg_data,
12120                                                        p_cle_id         => p_cle_id,
12121                                                        p_intent         => null,
12122                                                        x_quantity       => l_quantity);
12123                IF (l_debug = 'Y') THEN
12124                   okc_debug.log('1170: After Sucbscription recreate ' || l_return_status);
12125                END IF;
12126 
12127                IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12128                   RAISE G_EXCEPTION_HALT_VALIDATION;
12129                END IF;
12130            END IF;
12131 
12132      EXCEPTION
12133         WHEN G_EXCEPTION_HALT_VALIDATION THEN
12134                IF  check_pm_sch_csr%ISOPEN THEN
12135                    CLOSE check_pm_sch_csr;
12136                END IF;
12137                x_return_status := l_return_status;
12138        WHEN OTHERS  THEN
12139             IF check_pm_sch_csr%ISOPEN THEN
12140                CLOSE check_pm_sch_csr;
12141             END IF;
12142             x_return_status := l_return_status;
12143      END UPDATE_LINE_DETAILS;
12144 /*
12145     -- This function is to get the timevalue id for Billing
12146     FUNCTION Create_Timevalue
12147           (
12148           l_start_date      IN DATE,
12149           l_chr_id          IN  NUMBER
12150           ) RETURN NUMBER Is
12151 
12152       l_p_tavv_tbl     OKC_TIME_PUB.TAVV_TBL_TYPE;
12153       l_x_tavv_tbl     OKC_TIME_PUB.TAVV_TBL_TYPE;
12154       l_api_version    NUMBER := 1.0;
12155       l_init_msg_list  VARCHAR2(1) := 'T';
12156       l_return_status  VARCHAR2(200);
12157       l_msg_count      NUMBER;
12158       l_msg_data       VARCHAR2(2000);
12159     BEGIN
12160 
12161       IF (l_debug = 'Y') THEN
12162           okc_debug.log('1175: FUNCTION Create_Timevalue');
12163       END IF;
12164 
12165       l_p_tavv_tbl(1).id                    := NULL;
12166       l_p_tavv_tbl(1).object_version_number := NULL;
12167       l_p_tavv_tbl(1).sfwt_flag             := 'N';
12168       l_p_tavv_tbl(1).spn_id                := NULL;
12169       l_p_tavv_tbl(1).tve_id_generated_by   := NULL;
12170       l_p_tavv_tbl(1).dnz_chr_id            := NULL;
12171       l_p_tavv_tbl(1).tze_id                := NULL;
12172       l_p_tavv_tbl(1).tve_id_limited        := NULL;
12173       l_p_tavv_tbl(1).description           := '';
12174       l_p_tavv_tbl(1).short_description     := '';
12175       l_p_tavv_tbl(1).comments              := '';
12176       l_p_tavv_tbl(1).datetime              := NULL;
12177       l_p_tavv_tbl(1).attribute_category    := '';
12178       l_p_tavv_tbl(1).attribute1  := '';
12179       l_p_tavv_tbl(1).attribute2  := '';
12180       l_p_tavv_tbl(1).attribute3  := '';
12181       l_p_tavv_tbl(1).attribute4  := '';
12182       l_p_tavv_tbl(1).attribute5  := '';
12183       l_p_tavv_tbl(1).attribute6  := '';
12184       l_p_tavv_tbl(1).attribute7  := '';
12185       l_p_tavv_tbl(1).attribute8  := '';
12186       l_p_tavv_tbl(1).attribute9  := '';
12187       l_p_tavv_tbl(1).attribute10 := '';
12188       l_p_tavv_tbl(1).attribute11 := '';
12189       l_p_tavv_tbl(1).attribute12 := '';
12190       l_p_tavv_tbl(1).attribute13 := '';
12191       l_p_tavv_tbl(1).attribute14 := '';
12192       l_p_tavv_tbl(1).attribute15 := '';
12193       l_p_tavv_tbl(1).created_by        := NULL;
12194       l_p_tavv_tbl(1).creation_date     := NULL;
12195       l_p_tavv_tbl(1).last_updated_by   := NULL;
12196       l_p_tavv_tbl(1).last_update_date  := NULL;
12197       l_p_tavv_tbl(1).last_update_login := NULL;
12198       l_p_tavv_tbl(1).datetime          := l_start_date;
12199       l_p_tavv_tbl(1).dnz_chr_id        := l_chr_id;
12200 
12201       okc_time_pub.create_tpa_value
12202          (p_api_version   => l_api_version,
12203           p_init_msg_list => l_init_msg_list,
12204           x_return_status => l_return_status,
12205           x_msg_count     => l_msg_count,
12206           x_msg_data      => l_msg_data,
12207           p_tavv_tbl      => l_p_tavv_tbl,
12208           x_tavv_tbl      => l_x_tavv_tbl) ;
12209 
12210        If l_return_status <> 'S' then
12211           OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Create TPA Value ');
12212           Raise G_EXCEPTION_HALT_VALIDATION;
12213        End If;
12214 
12215        RETURN(l_x_tavv_tbl(1).id);
12216 
12217     End Create_Timevalue;
12218     */
12219 
12220 BEGIN
12221        --Partial Period Uptake change
12222        --Get Source Contract ID--
12223        OPEN GetSourceContractID(P_To_Chr_ID => p_chr_id);
12224        FETCH GetSourceContractID into P_From_Chr_ID;
12225        CLOSE GetSourceContractID;
12226 
12227        l_SrcContractPPSetupExists_YN := OKS_COPY_CONTRACT_PVT.ContractPPSetupEXISTS(P_Chr_ID => P_From_Chr_ID);
12228        IF (OKS_SETUP_UTIL_PUB.G_GCD_PERIOD_START IS NOT NULL and OKS_SETUP_UTIL_PUB.G_GCD_PERIOD_TYPE IS NOT NULL) then
12229         l_GCDPPSetupExists_YN := 'Y';
12230        ELSE
12231         l_GCDPPSetupExists_YN := 'N';
12232        END IF;
12233 
12234        IF (l_debug = 'Y') THEN
12235           okc_debug.Set_Indentation('UPDATE_TEMPLATE_CONTRACT ');
12236           okc_debug.log('1000: Entering Update Template Contract' || to_char(sysdate,'HH:MI:SS'));
12237        END IF;
12238 
12239        -- Get the current header start date and rule
12240        OPEN  get_hdr_date_csr(p_chr_id);
12241        FETCH get_hdr_date_csr INTO l_hdr_start_date,l_hdr_end_date;
12242        CLOSE get_hdr_date_csr;
12243 
12244        IF p_end_date IS NOT NULL THEN
12245 
12246             IF (l_debug = 'Y') THEN
12247                okc_debug.log('1010: P_END_DATE is not null');
12248             END IF;
12249 
12250             l_chrv_rec.id           := p_chr_id;
12251             l_chrv_rec.start_date   := p_start_date;
12252             l_chrv_rec.end_date     := p_end_date;
12253 
12254 
12255             OKC_CONTRACT_PUB.update_contract_header(p_api_version   => l_api_version,
12256                                                     x_return_status => l_return_status,
12257                                                     x_msg_count     => l_msg_count,
12258                                                     x_msg_data      => l_msg_data,
12259                                                     p_chrv_rec      => l_chrv_rec,
12260                                                     x_chrv_rec      => x_chrv_rec);
12261 
12262             IF (l_debug = 'Y') THEN
12263                okc_debug.log('1020: After OKC_CONTRACT_PUB.update_contract_header call ' || l_return_status);
12264             END IF;
12265             IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12266               RAISE G_EXCEPTION_HALT_VALIDATION;
12267             END IF;
12268 
12269 	    -- Delete Header billing schedule bug# 4188236
12270 	    DELETE FROM OKS_LEVEL_ELEMENTS
12271 	    WHERE RUL_ID IN
12272 	    (SELECT SLL.ID
12273 	     FROM OKS_STREAM_LEVELS_B SLL
12274 	     WHERE SLL.DNZ_CHR_ID=P_CHR_ID and CLE_ID IS NULL);
12275 
12276             DELETE FROM OKS_STREAM_LEVELS_B
12277 	    WHERE DNZ_CHR_ID = P_CHR_ID and CLE_ID IS NULL;
12278 
12279             -- bug fix 4188236
12280 
12281             -- Check for Revenue estimation date
12282             OPEN  get_estimation_date(p_chr_id);
12283             FETCH get_estimation_date INTO l_est_id,l_est_obj_num,l_est_date_s;
12284             IF (get_estimation_date%FOUND) THEN
12285                 l_khrv_tbl_in(1).id :=l_est_id;
12286                 l_khrv_tbl_in(1).chr_id := p_chr_id;
12287                 l_khrv_tbl_in(1).object_version_number := l_est_obj_num;
12288                 l_khrv_tbl_in(1).est_rev_date := p_start_date;
12289 
12290                 OKS_CONTRACT_HDR_PUB.update_header
12291                            (
12292                             p_api_version 	=> 1,
12293                             p_init_msg_list	=> 'F',
12294                             x_return_status	=> l_return_status,
12295                             x_msg_count	        => l_msg_count,
12296                             x_msg_data		=> l_msg_data,
12297                             p_khrv_tbl		=> l_khrv_tbl_in,
12298                             x_khrv_tbl		=> l_khrv_tbl_out,
12299                             p_validate_yn       => 'N');
12300                 l_khrv_tbl_in.delete;
12301             END IF;
12302             CLOSE get_estimation_date;
12303 
12304             IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12305                    RAISE G_EXCEPTION_HALT_VALIDATION;
12306             END IF;
12307             -- Delete all security restriction for this contract.
12308             FOR l_access_rec IN get_access_level(p_chr_id) LOOP
12309                 cacv_rec.id := l_access_rec.id;
12310                 OKC_CONTRACT_PUB.delete_contract_access(p_api_version    => l_api_version,
12311                                                         x_return_status  => l_return_status,
12312                                                         x_msg_count      => l_msg_count,
12313                                                         x_msg_data       => l_msg_data,
12314                                                         p_cacv_rec       => cacv_rec);
12315 
12316                 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12317                    RAISE G_EXCEPTION_HALT_VALIDATION;
12318                 END IF;
12319             END LOOP;
12320 
12321             IF (l_debug = 'Y') THEN
12322                 okc_debug.log('1030: After Deleting security restriction');
12323             END IF;
12324             -- Update all the lines with the same start date and end date.
12325             FOR l_line_rec IN get_contract_lines_csr(p_chr_id)
12326             LOOP
12327                    UPDATE_LINE_DETAILS(p_cle_id       => l_line_rec.id,
12328                                       p_start_date    => p_start_date,
12329                                       p_end_date      => p_end_date,
12330                                       p_lse_id        => l_line_rec.lse_id,
12331                                       x_msg_count     => l_msg_count,
12332 			              x_msg_data      => l_msg_data,
12333                                       x_return_status => l_return_status );
12334 
12335             IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12336                RAISE G_EXCEPTION_HALT_VALIDATION;
12337             END IF;
12338 
12339             END LOOP;
12340 
12341             IF (l_debug = 'Y') THEN
12342                 okc_debug.log('1040: Completed Line Updates');
12343             END IF;
12344 
12345        ELSE
12346 
12347              IF (l_debug = 'Y') THEN
12348                 okc_debug.log('1050: End Date is NULL');
12349              END IF;
12350              -- Need to derive the end date based on template start date and UI start date
12351 
12352                  OKC_TIME_UTIL_PUB.get_duration(p_start_date    => l_hdr_start_date, -- Template Hdr Start Date
12353                                                 p_end_date      => l_hdr_end_date,
12354                                                 x_duration      => l_hdr_duration,
12355                                                 x_timeunit      => l_hdr_timeunit,
12356                                                 x_return_status => l_return_status);
12357 
12358              IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12359                RAISE G_EXCEPTION_HALT_VALIDATION;
12360              END IF;
12361 
12362              IF (l_debug = 'Y') THEN
12363                 okc_debug.log('1060: after OKC_TIME_UTIL_PUB.get_duration Call');
12364              END IF;
12365              -- Get the new end date for header
12366              l_hdr_end_date := OKC_TIME_UTIL_PUB.get_enddate(p_start_date  => p_start_date,
12367                                                              p_timeunit    => l_hdr_timeunit,
12368                                                              p_duration    => l_hdr_duration);
12369              IF (l_debug = 'Y') THEN
12370                 okc_debug.log('1065: after OKC_TIME_UTIL_PUB.get_end date Call'||l_hdr_end_date);
12371              END IF;
12372 
12373 
12374              l_chrv_rec.id           := p_chr_id;
12375              l_chrv_rec.start_date   := p_start_date;
12376              l_chrv_rec.end_date     := l_hdr_end_date;
12377 
12378              OKC_CONTRACT_PUB.update_contract_header(p_api_version   => l_api_version,
12379                                                      x_return_status => l_return_status,
12380                                                      x_msg_count     => l_msg_count,
12381                                                      x_msg_data      => l_msg_data,
12382                                                      p_chrv_rec      => l_chrv_rec,
12383                                                      x_chrv_rec      => x_chrv_rec);
12384 
12385             IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12386               RAISE G_EXCEPTION_HALT_VALIDATION;
12387             END IF;
12388 
12389             IF (l_debug = 'Y') THEN
12390                 okc_debug.log('1070: Completed header update ' || l_return_status );
12391             END IF;
12392 
12393 	    -- Delete Header billing schedule bug# 4188236
12394 	    DELETE FROM OKS_LEVEL_ELEMENTS
12395 	    WHERE RUL_ID IN
12396 	    (SELECT SLL.ID
12397 	     FROM OKS_STREAM_LEVELS_B SLL
12398 	     WHERE SLL.DNZ_CHR_ID=P_CHR_ID and CLE_ID IS NULL);
12399 
12400             DELETE FROM OKS_STREAM_LEVELS_B
12401 	    WHERE DNZ_CHR_ID = P_CHR_ID and CLE_ID IS NULL;
12402 
12403             -- bug fix 4188236
12404 
12405              -- Check for Revenue estimation date
12406             OPEN  get_estimation_date(p_chr_id);
12407             FETCH get_estimation_date INTO l_est_id,l_est_obj_num, l_est_date_s;
12408             IF (get_estimation_date%FOUND) THEN
12409 	        l_khrv_tbl_in(1).id := l_est_id;
12410                 l_khrv_tbl_in(1).chr_id := p_chr_id;
12411                 --npalepu modified on 31-jan-2006 for bug # 5621746
12412                 /* l_khrv_tbl_in(1).object_version_number := p_chr_id; */
12413                 l_khrv_tbl_in(1).object_version_number := l_est_obj_num;
12414                 --end npalepu
12415                 IF l_est_date_s IS NOT NULL THEN
12416                    l_est_date := l_est_date_s;
12417 
12418                    -- Get the duratio b/n header start date and Line start date
12419                    IF ( TRUNC(l_est_date) <=  TRUNC(l_hdr_start_date) ) THEN
12420                       l_khrv_tbl_in(1).est_rev_date := p_start_date;
12421                    ELSE
12422                        OKC_TIME_UTIL_PUB.get_duration(p_start_date    => l_hdr_start_date,
12423                                                       p_end_date      => l_est_date -1,
12424                                                       x_duration      => l_hdr_est_duration,
12425                                                       x_timeunit      => l_hdr_est_timeunit,
12426                                                       x_return_status => l_return_status);
12427 
12428                        -- Get the line start date based on new start date
12429                        l_start_date := OKC_TIME_UTIL_PUB.get_enddate(p_start_date  => p_start_date + 1,
12430                                                                      p_timeunit    => l_hdr_est_timeunit,
12431                                                                      p_duration    => l_hdr_est_duration);
12432                         l_khrv_tbl_in(1).est_rev_date:= l_start_date;
12433                    END IF;
12434 
12435 		   OKS_CONTRACT_HDR_PUB.update_header
12436                            (
12437                             p_api_version 	=> 1,
12438                             p_init_msg_list	=> 'F',
12439                             x_return_status	=> l_return_status,
12440                             x_msg_count	        => l_msg_count,
12441                             x_msg_data		=> l_msg_data,
12442                             p_khrv_tbl		=> l_khrv_tbl_in,
12443                             x_khrv_tbl		=> l_khrv_tbl_out,
12444                             p_validate_yn       => 'N');
12445 
12446 
12447 
12448                    IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12449                        RAISE G_EXCEPTION_HALT_VALIDATION;
12450                    END IF;
12451 		   l_khrv_tbl_in.delete;
12452 
12453                 END IF;
12454             END IF;
12455             CLOSE get_estimation_date;
12456 
12457 
12458 
12459             -- Delete all security restrictions for this contract.
12460             FOR l_access_rec IN get_access_level(p_chr_id) LOOP
12461                 cacv_rec.id := l_access_rec.id;
12462                 OKC_CONTRACT_PUB.delete_contract_access(p_api_version    => l_api_version,
12463                                                         x_return_status  => l_return_status,
12464                                                         x_msg_count      => l_msg_count,
12465                                                         x_msg_data       => l_msg_data,
12466                                                         p_cacv_rec       => cacv_rec);
12467 
12468             IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12469                 RAISE G_EXCEPTION_HALT_VALIDATION;
12470             END IF;
12471 
12472             IF (l_debug = 'Y') THEN
12473                 okc_debug.log('1080: After contract access delete');
12474             END IF;
12475 
12476             END LOOP;
12477 
12478             -- Update the line details. Get the offset for each line based on template start date and UI start date.
12479 
12480             FOR line_rec IN get_contract_lines_csr(p_chr_id)
12481             LOOP
12482 
12483                -- Get the line duration
12484                OKC_TIME_UTIL_PUB.get_duration(p_start_date    => line_rec.start_date,
12485                                               p_end_date      => line_rec.end_date,
12486                                               x_duration      => l_line_duration,
12487                                               x_timeunit      => l_line_timeunit,
12488                                               x_return_status => l_return_status);
12489 
12490                IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12491                    RAISE G_EXCEPTION_HALT_VALIDATION;
12492                END IF;
12493 
12494                IF (l_debug = 'Y') THEN
12495                    okc_debug.log('1090: After contract access delete');
12496                END IF;
12497 
12498 
12499                IF ( TRUNC(l_hdr_start_date) <> TRUNC(line_rec.start_date)) THEN
12500 
12501                        IF (l_debug = 'Y') THEN
12502                            okc_debug.log('1100: Line start date and hdr date is different. '|| line_rec.id);
12503                         END IF;
12504 
12505                        -- Get the duratio b/n header start date and Line start date
12506                          OKC_TIME_UTIL_PUB.get_duration(p_start_date    => l_hdr_start_date,
12507                                                         p_end_date      => line_rec.start_date-1,
12508                                                         x_duration      => l_hdr_line_duration,
12509                                                         x_timeunit      => l_hdr_line_timeunit,
12510                                                         x_return_status => l_return_status);
12511 
12512                          -- Get the line start date based on new start date
12513                        l_start_date := OKC_TIME_UTIL_PUB.get_enddate(p_start_date  => p_start_date + 1,
12514                                                                      p_timeunit    => l_hdr_line_timeunit,
12515                                                                      p_duration    => l_hdr_line_duration);
12516 
12517                        l_end_date := OKC_TIME_UTIL_PUB.get_enddate(p_start_date  => l_start_date,
12518                                                                    p_timeunit    => l_line_timeunit,
12519                                                                    p_duration    => l_line_duration);
12520 
12521                ELSE
12522                   IF (l_debug = 'Y') THEN
12523                            okc_debug.log('1110: Line start date and hdr start date is same. '|| line_rec.id);
12524                   END IF;
12525                   l_start_date :=  p_start_date;
12526                   l_end_date   :=  OKC_TIME_UTIL_PUB.get_enddate(p_start_date  => l_start_date,
12527                                                                  p_timeunit    => l_line_timeunit,
12528                                                                  p_duration    => l_line_duration);
12529                END IF;
12530 
12531                UPDATE_LINE_DETAILS(p_cle_id        => line_rec.id,
12532                                    p_start_date    => l_start_date,
12533                                    p_end_date      => l_end_date,
12534                                    p_lse_id        => line_rec.lse_id,
12535                                    x_msg_count     => l_msg_count,
12536 			           x_msg_data      => l_msg_data,
12537                                    x_return_status => l_return_status );
12538 
12539               IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12540                   RAISE G_EXCEPTION_HALT_VALIDATION;
12541               END IF;
12542 
12543             END LOOP;
12544 
12545             IF (l_debug = 'Y') THEN
12546                okc_debug.log('1120: Completed Line update');
12547             END IF;
12548 
12549 
12550        END IF;
12551 
12552        -- Call Pricing API to reprice.
12553 
12554 
12555        qp_rec.chr_id := p_chr_id;
12556        qp_rec.intent := 'HP';
12557 
12558        IF (l_debug = 'Y') THEN
12559           okc_debug.log('1185: Before QP Call: Hdr ID: ' || p_chr_id);
12560        END IF;
12561        OKS_QP_INT_PVT.COMPUTE_PRICE( p_api_version          => l_api_version,
12562                                      p_init_msg_list        => l_init_msg_list,
12563                                      p_detail_rec           => qp_rec,
12564                                      x_price_details        => price_details_rec,
12565                                      x_modifier_details     => modifier_det_tbl,
12566                                      x_price_break_details  => price_break_det_tbl,
12567                                      x_return_status        => l_return_status,
12568                                      x_msg_count            => l_msg_count,
12569                                      x_msg_data             => l_msg_data);
12570 
12571         IF (l_debug = 'Y') THEN
12572           okc_debug.log('1190: After QP Call ' || l_return_status);
12573         END IF;
12574 
12575         IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12576                 RAISE G_EXCEPTION_HALT_VALIDATION;
12577         END IF;
12578 
12579         --npalepu added on 27-FEB-2007 for bug # 5671352
12580         --updating top lines tax amounts
12581         l_topline_count := 0;
12582 
12583         FOR topline_rec IN topline_csr(p_chr_id)
12584         LOOP
12585             IF topline_rec.lse_id <> 46 THEN
12586                 l_topline_count := l_topline_count + 1 ;
12587 
12588                 OPEN Get_oks_Lines_details(topline_rec.id);
12589                 FETCH Get_oks_Lines_details INTO l_get_oks_details ;
12590                 CLOSE Get_oks_Lines_details;
12591 
12592                 OPEN toplinetax_cur(topline_rec.id);
12593                 FETCH toplinetax_cur INTO l_tax_amount;
12594                 CLOSE toplinetax_cur;
12595 
12596                 l_klnv_tax_tbl_in(l_topline_count).id := l_get_oks_details.id ;
12597                 l_klnv_tax_tbl_in(l_topline_count).object_version_number := l_get_oks_details.object_version_number;
12598                 l_klnv_tax_tbl_in(l_topline_count).dnz_chr_id := l_get_oks_details.dnz_chr_id;
12599                 l_klnv_tax_tbl_in(l_topline_count).cle_id := topline_rec.id;
12600                 l_klnv_tax_tbl_in(l_topline_count).tax_amount := l_tax_amount.amount;
12601             END IF;
12602         END LOOP;
12603 
12604         oks_contract_line_pub.update_line
12605         (
12606          p_api_version => l_api_version,
12607          p_init_msg_list => l_init_msg_list,
12608          x_return_status => l_return_status,
12609          x_msg_count => l_msg_count,
12610          x_msg_data => l_msg_data,
12611          p_klnv_tbl => l_klnv_tax_tbl_in,
12612          x_klnv_tbl => l_klnv_tax_tbl_out,
12613          p_validate_yn => 'N'
12614         );
12615 
12616         x_return_status := l_return_status;
12617         IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12618              RAISE G_EXCEPTION_HALT_VALIDATION;
12619         END IF;
12620 
12621         --updating contract header tax amount
12622         OPEN get_header_details;
12623         FETCH get_header_details INTO l_get_hdr_details;
12624         CLOSE get_header_details;
12625 
12626         OPEN hdrtax_cur;
12627         FETCH hdrtax_cur INTO l_total_tax;
12628         CLOSE hdrtax_cur;
12629 
12630         l_khrv_tax_tbl_in(1).id := l_get_hdr_details.id;
12631         l_khrv_tax_tbl_in(1).chr_id := p_chr_id;
12632         l_khrv_tax_tbl_in(1).object_version_number := l_get_hdr_details.object_version_number;
12633         l_khrv_tax_tbl_in(1).tax_amount := l_total_tax.amount;
12634 
12635         oks_contract_hdr_pub.update_header(
12636                                            p_api_version => l_api_version,
12637                                            p_init_msg_list => l_init_msg_list,
12638                                            x_return_status => l_return_status,
12639                                            x_msg_count => l_msg_count,
12640                                            x_msg_data => l_msg_data,
12641                                            p_khrv_tbl => l_khrv_tax_tbl_in,
12642                                            x_khrv_tbl => l_khrv_tax_tbl_out,
12643                                            p_validate_yn => 'N');
12644 
12645         x_return_status := l_return_status;
12646         IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12647                 RAISE G_EXCEPTION_HALT_VALIDATION;
12648         END IF;
12649         --end 5671352
12650 
12651        -- Call Billing Schedule API (Should create one time billing).
12652 
12653       /**********  Start Billing *************************************************/
12654       IF (
12655 	     (l_SrcContractPPSetupExists_YN = 'Y') OR
12656 	     (l_SrcContractPPSetupExists_YN = 'N' and l_GCDPPSetupExists_YN = 'N')
12657 	    ) THEN --Partial Period Uptake check
12658 
12659 
12660        FOR topline_rec IN topline_csr(p_chr_id)
12661        LOOP
12662 
12663        l_invoice_rule_id := topline_rec.inv_rule_id;
12664        OPEN  get_billing_type_csr(topline_rec.id);
12665        FETCH get_billing_type_csr INTO l_billing_type;
12666        CLOSE get_billing_type_csr;
12667 
12668 
12669        OPEN  get_arl_csr(topline_rec.id);
12670        FETCH get_arl_csr INTO l_klnv_id,l_line_acct_rule,l_obj_num;
12671        CLOSE get_arl_csr;
12672 
12673         -- Get Accounting rule from Hdr
12674          IF (l_line_acct_rule IS NULL) THEN
12675              l_arl_exist_flag := 'N';
12676              OPEN  get_hdr_arl_csr(topline_rec.id);
12677              FETCH get_hdr_arl_csr INTO l_line_acct_rule;
12678              CLOSE get_hdr_arl_csr;
12679          END IF;
12680 
12681          IF (l_debug = 'Y') THEN
12682              okc_debug.log('1190: Billing Type ' || l_billing_type);
12683              okc_debug.log('1191: Invoice rule id  ' || l_invoice_rule_id);
12684          END IF;
12685 
12686          -- Delete SLL and level elements.
12687 
12688          OKS_BILL_SCH.Del_Rul_Elements(p_top_line_id   => topline_rec.id,
12689                                        x_return_status => l_return_status,
12690                                        x_msg_count     => l_msg_count,
12691                                        x_msg_data      => l_msg_data);
12692 
12693          IF (l_debug = 'Y') THEN
12694              okc_debug.log('1200: After deleting SLL ' || l_return_status);
12695          END IF;
12696 
12697          IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12698               RAISE G_EXCEPTION_HALT_VALIDATION;
12699          END IF;
12700 
12701          -- l_timevalue_id := Create_Timevalue(topline_rec.start_date,topline_rec.dnz_chr_id);
12702 
12703 
12704          --slh
12705          --npalepu modified the code on 18-may-2006 for bug # 5211482
12706    /*    l_slh_rec.chr_id                           := topline_rec.dnz_chr_id;
12707          l_slh_rec.cle_id                           := topline_rec.id;
12708          l_slh_rec.rule_information1                := l_billing_type;
12709          l_slh_rec.rule_information_category        := 'SLH';
12710          l_slh_rec.object1_id1                      := '1';
12711          l_slh_rec.object1_id2                      := '#';
12712          l_slh_rec.object2_id1                      := l_timevalue_id;
12713          l_slh_rec.object2_id2                      := '#';
12714          l_slh_rec.jtot_object1_code                := 'OKS_STRM_TYPE';
12715          l_slh_rec.jtot_object2_code                := 'OKS_TIMEVAL';
12716        --l_slh_rec.rule_information_category        := 'SLH';
12717 
12718     --sll
12719          OKC_TIME_UTIL_PUB.get_duration(p_start_date  => topline_rec.start_date
12720                                         , p_end_date  => topline_rec.end_date
12721                                         , x_duration  => l_duration
12722                                         , x_timeunit  => l_timeunit
12723                                         , x_return_status => x_return_status);
12724 
12725          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12726              RAISE G_EXCEPTION_HALT_VALIDATION;
12727          END IF;
12728 
12729          l_sll_tbl(1).cle_id                        := topline_rec.id;
12730          l_sll_tbl(1).dnz_chr_id                    := topline_rec.dnz_chr_id;
12731          l_sll_tbl(1).sequence_no                   :='1';
12732          l_sll_tbl(1).start_date                    := topline_rec.start_date;
12733          l_sll_tbl(1).level_periods                 := '1';
12734          l_sll_tbl(1).uom_per_period                := l_duration;
12735          l_sll_tbl(1).level_amount                  := NULL;
12736          l_sll_tbl(1).invoice_offset_days           := NULL;
12737          l_sll_tbl(1).interface_offset_days         := NULL;
12738          l_sll_tbl(1).uom_code                      := l_timeunit;
12739 
12740 
12741          IF l_billing_type IS NULL THEN
12742            IF topline_rec.lse_id = '46'
12743            THEN
12744               l_billing_type := 'E';
12745            ELSE
12746               l_billing_type := 'T';
12747            END IF;
12748          END IF;
12749 
12750 
12751          -- Create new billing schedule..
12752          OKS_BILL_SCH.Create_Bill_Sch_Rules
12753              (p_billing_type    => l_billing_type,
12754               p_sll_tbl         => l_sll_tbl,
12755               p_invoice_rule_id => l_invoice_rule_id,
12756               x_bil_sch_out_tbl => l_bil_sch_out_tbl,
12757               x_return_status   => l_return_status
12758              );
12759 
12760          IF (l_debug = 'Y') THEN
12761              okc_debug.log('1210: After Creating Billing Schedule ' || l_return_status);
12762          END IF;
12763 
12764          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) Then
12765              RAISE G_EXCEPTION_HALT_VALIDATION;
12766          END IF;  */
12767 
12768          --check for template duration and new contract duration or matching or not
12769          oks_copy_contract_pvt.chk_line_effectivity(topline_rec.id,l_duration_match, x_return_status);
12770 
12771          IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12772              RAISE G_EXCEPTION_HALT_VALIDATION;
12773          END IF;
12774 
12775          IF l_duration_match = 'T' THEN
12776                 OPEN GetStreamsForSourceLine(topline_rec.ORIG_SYSTEM_ID1);
12777                 FETCH GetStreamsForSourceLine BULK COLLECT INTO l_SrcLnStreams_Tbl;
12778                 IF l_SrcLnStreams_Tbl.COUNT > 0 then
12779                         l_SrcLnStreams_Exists_YN := 'Y';
12780                 ELSE
12781                         l_SrcLnStreams_Exists_YN := 'N';
12782                 END IF;
12783                 CLOSE GetStreamsForSourceLine;
12784 
12785                 IF l_SrcLnStreams_Exists_YN = 'Y' THEN
12786                         --Resetting PLSQL table for populating line streams--
12787                         l_LineStreams_tbl.DELETE;
12788                         l_LineStreams_tbl_Ctr := 0;
12789                         --Generate Schedule for Top Line using Header Streams--
12790                         BEGIN --Begin of looping through l_TrgHdrStreams_Tbl
12791                                 FOR j IN l_SrcLnStreams_Tbl.FIRST..l_SrcLnStreams_Tbl.LAST LOOP --4)
12792                                         l_LineStreams_tbl_Ctr := l_LineStreams_tbl_Ctr + 1;
12793 
12794 
12795                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).id := FND_API.g_miss_num;
12796                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).chr_id := FND_API.g_miss_num;
12797                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).cle_id := topline_rec.id;
12798                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).dnz_chr_id := P_Chr_ID;
12799                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).sequence_no := l_SrcLnStreams_Tbl(j).sequence_no;
12800                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).uom_code := l_SrcLnStreams_Tbl(j).uom_code;
12801                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).start_date := topline_rec.start_date;
12802                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).end_date := topline_rec.end_date;
12803                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).level_periods := l_SrcLnStreams_Tbl(j).level_periods;
12804                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).uom_per_period := l_SrcLnStreams_Tbl(j).uom_per_period;
12805                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).advance_periods := l_SrcLnStreams_Tbl(j).advance_periods;
12806                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).level_amount := l_SrcLnStreams_Tbl(j).level_amount;
12807                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).invoice_offset_days := l_SrcLnStreams_Tbl(j).invoice_offset_days;
12808                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).interface_offset_days := l_SrcLnStreams_Tbl(j).interface_offset_days;
12809                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).comments := l_SrcLnStreams_Tbl(j).comments;
12810                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).due_arr_yn := l_SrcLnStreams_Tbl(j).due_arr_yn;
12811                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).amount := l_SrcLnStreams_Tbl(j).amount;
12812                                         l_LineStreams_tbl(l_LineStreams_tbl_Ctr).lines_detailed_yn := l_SrcLnStreams_Tbl(j).lines_detailed_yn;
12813                                 END LOOP; --End LOOP for looping through Target header Streams PLSQL table
12814                         EXCEPTION
12815                         WHEN OTHERS THEN
12816                                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
12817                                 RAISE;
12818                         END; --End of looping through l_TrgHdrStreams_Tbl
12819 
12820                 END IF; -- check for l_SrcLnStreams_Exists_YN = 'Y'
12821 
12822                 --Generate Billing Schedule for Top Line--
12823                 OKS_BILL_SCH.create_bill_sch_rules(p_billing_type => l_billing_type
12824                                                   ,p_sll_tbl => l_LineStreams_tbl
12825                                                   ,p_invoice_rule_id => topline_rec.INV_RULE_ID
12826                                                   ,x_bil_sch_out_tbl => l_bil_sch_out_tbl
12827                                                   ,x_return_status => x_return_status);
12828                 IF (l_debug = 'Y') THEN
12829                         okc_debug.log('1210: After Creating Billing Schedule ' || l_return_status);
12830                 END IF;
12831 
12832                 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) Then
12833                         RAISE G_EXCEPTION_HALT_VALIDATION;
12834                 END IF;
12835 
12836           END IF; -- l_duration_match check
12837          --end npalepu
12838 
12839          IF (l_arl_exist_flag = 'N') THEN
12840 
12841             l_klnv_tbl_in(1).id	                   := l_klnv_id;
12842             l_klnv_tbl_in(1).object_version_number := l_obj_num;
12843             l_klnv_tbl_in(1).cle_id	           := topline_rec.id;
12844             l_klnv_tbl_in(1).acct_rule_id          := l_line_acct_rule;
12845 
12846             oks_contract_line_pub.update_line
12847               (p_api_version     => l_api_version,
12848                p_init_msg_list   => l_init_msg_list,
12849                x_return_status   => l_return_status,
12850                x_msg_count	 => x_msg_count,
12851                x_msg_data        => x_msg_data,
12852                p_klnv_tbl        => l_klnv_tbl_in,
12853                x_klnv_tbl        => l_klnv_tbl_out,
12854 	       p_validate_yn     => 'N'
12855                );
12856 
12857             IF (l_debug = 'Y') THEN
12858                 okc_debug.log('1211: After Creating Accounting rule ' || l_return_status);
12859             END IF;
12860 
12861          END IF;
12862 
12863          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) Then
12864              RAISE G_EXCEPTION_HALT_VALIDATION;
12865          END IF;
12866 
12867          -- Reset the flags.
12868          l_arl_exist_flag  := 'Y';
12869          l_line_acct_rule  := NULL;
12870          l_hdr_acct_rule   := NULL;
12871 
12872       END LOOP;
12873 
12874       IF (l_debug = 'Y') THEN
12875              okc_debug.log('1220: Exiting UPDATE_TEMPLATE_CONTRACT' || to_char(sysdate,'HH:MI:SS'));
12876              okc_debug.Reset_Indentation;
12877       END IF;
12878 
12879     --Partial Period Uptake changes
12880     ELSIF (l_SrcContractPPSetupExists_YN = 'N' AND l_GCDPPSetupExists_YN = 'Y') THEN
12881       --npalepu added on 24-may-2006 for bug # 5211482
12882        FOR topline_rec IN topline_csr(p_chr_id)
12883        LOOP
12884          -- Delete SLL and level elements.
12885            OKS_BILL_SCH.Del_Rul_Elements(p_top_line_id   => topline_rec.id,
12886                                        x_return_status => l_return_status,
12887                                        x_msg_count     => l_msg_count,
12888                                        x_msg_data      => l_msg_data);
12889 
12890            IF  (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
12891               RAISE G_EXCEPTION_HALT_VALIDATION;
12892            END IF;
12893        END LOOP;
12894       --end npalepu
12895       OKS_COPY_CONTRACT_PVT.create_bsch_using_PPSetup(P_To_Chr_ID        => p_chr_id
12896 	                                                ,P_From_Chr_ID      => P_From_Chr_ID
12897                                                      ,P_Partial_Copy_YN  => 'N'
12898                                                      ,p_init_msg_list    => l_init_msg_list
12899                              			             ,x_return_status    => l_return_status
12900                              			             ,x_msg_count        => x_msg_count
12901                                                      ,x_msg_data         => x_msg_data);
12902 
12903     END IF;
12904        /**********  End Billing *************************************************/
12905 
12906       x_return_status := l_return_status;
12907 
12908 
12909        EXCEPTION
12910 
12911          WHEN G_EXCEPTION_HALT_VALIDATION THEN
12912                 x_return_status := l_return_status;
12913                IF  get_estimation_date%ISOPEN THEN
12914                    CLOSE get_estimation_date;
12915                END IF;
12916                IF (l_debug = 'Y') THEN
12917                    okc_debug.log('1230: Exception: Return Status ' || x_return_status);
12918                    okc_debug.Reset_Indentation;
12919                END IF;
12920 
12921          WHEN OTHERS THEN
12922               x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
12923               IF  get_estimation_date%ISOPEN THEN
12924                    CLOSE get_estimation_date;
12925               END IF;
12926               IF (l_debug = 'Y') THEN
12927                    okc_debug.log('1230: Unexpected Error');
12928                    okc_debug.Reset_Indentation;
12929               END IF;
12930               OKC_API.set_message
12931               (G_APP_NAME,G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
12932 
12933  END  UPDATE_TEMPLATE_CONTRACT ;
12934 
12935 END OKC_COPY_CONTRACT_PVT;