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