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