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