[Home] [Help]
PACKAGE BODY: APPS.OKS_MASS_UPDATE_PVT
Source
1 PACKAGE BODY OKS_MASS_UPDATE_PVT AS
2 /* $Header: OKSRMUPB.pls 120.57.12000000.5 2007/10/18 15:02:50 cgopinee ship $ */
3
4 --+---------------------------------+---+---+---+---+---+----------------------+
5 --| OBJECT |SEL|INS|UPD|DEL|CRE|OTHER |
6 --+---------------------------------+---+---+---+---+---+----------------------+
7 --| OKC_CLASS_OPERATIONS | X | | | | | |
8 --+---------------------------------+---+---+---+---+---+----------------------+
9 --| OKC_SUBCLASSES_B | X | | | | | |
10 --+---------------------------------+---+---+---+---+---+----------------------+
11 --| OKC_OPER_INST_PVT | | | | | |X |
12 --+---------------------------------+---+---+---+---+---+----------------------+
13 --| OKS_STREAM_LEVELS_V | X | | | | | |
14 --+---------------------------------+---+---+---+---+---+----------------------+
15 --| HZ_CUST_ACCOUNTS | X | | | | | |
16 --+---------------------------------+---+---+---+---+---+----------------------+
17 --| MTL_SYSTEM_ITEMS_TL | X | | | | | |
18 --+---------------------------------+---+---+---+---+---+----------------------+
19 --| MTL_SYSTEM_ITEMS_B_KFV | X | | | | | |
20 --+---------------------------------+---+---+---+---+---+----------------------+
21 --| OKC_K_ITEMS | X | X | | | |X |
22 --+---------------------------------+---+---+---+---+---+----------------------+
23 --| OKS_RENEW_UTIL_PVT | | | | | |X |
24 --+---------------------------------+---+---+---+---+---+----------------------+
25 --| OKC_K_VERS_NUMBERS | X | | X | | | |
26 --+---------------------------------+---+---+---+---+---+----------------------+
27 --| FND_ATTACHED_DOCUMENTS | | | | | |X |
28 --+---------------------------------+---+---+---+---+---+----------------------+
29 --| okc_k_headers_all_b | X | | X | | | |
30 --+---------------------------------+---+---+---+---+---+----------------------+
31 --| JTF_NOTES_PUB | | | | | |X |
32 --+---------------------------------+---+---+---+---+---+----------------------+
33 --| JTF_NOTES_VL | X | | | | | |
34 --+---------------------------------+---+---+---+---+---+----------------------+
35 --| HZ_PARTIES | X | | | | | |
36 --+---------------------------------+---+---+---+---+---+----------------------+
37 --| HZ_CUST_ACCT_RELATE_ALL | X | | | | | |
38 --+---------------------------------+---+---+---+---+---+----------------------+
39 --| DUAL | X | | | | | |
40 --+---------------------------------+---+---+---+---+---+----------------------+
41 --| OKC_K_GROUPS_B | X | | | | | |
42 --+---------------------------------+---+---+---+---+---+----------------------+
43 --| HZ_RELATIONSHIPS | X | | | | | |
44 --+---------------------------------+---+---+---+---+---+----------------------+
45 --| HZ_ORG_CONTACTS | X | | | | | |
46 --+---------------------------------+---+---+---+---+---+----------------------+
47 --| HZ_CUST_SITE_USES_ALL | X | | | | | |
48 --+---------------------------------+---+---+---+---+---+----------------------+
49 --| HZ_CUST_ACCT_SITES_ALL | X | | | | | |
50 --+---------------------------------+---+---+---+---+---+----------------------+
51 --| OKS_INSTANCE_K_DTLS_TEMP | X | X | | | | |
52 --+---------------------------------+---+---+---+---+---+----------------------+
53 --| OKS_K_SALES_CREDITS_V | X | | | | | |
54 --+---------------------------------+---+---+---+---+---+----------------------+
55 --| OKC_K_ACCESSES_V | X | | | | | |
56 --+---------------------------------+---+---+---+---+---+----------------------+
57 --| OKC_CLASSES_B | X | | | | | |
58 --+---------------------------------+---+---+---+---+---+----------------------+
59 --| OKC_DATATYPES | | | | | |X |
60 --+---------------------------------+---+---+---+---+---+----------------------+
61 --| OKS_KHR_PVT | | | | | |X |
62 --+---------------------------------+---+---+---+---+---+----------------------+
63 --| OKC_CHR_PVT | | | | | |X |
64 --+---------------------------------+---+---+---+---+---+----------------------+
65 --| OKC_GVE_PVT | | | | | |X |
66 --+---------------------------------+---+---+---+---+---+----------------------+
67 --| OKC_CPL_PVT | | | | | |X |
68 --+---------------------------------+---+---+---+---+---+----------------------+
69 --| OKX_CUST_SITE_USES_V | X | | | | | |
70 --+---------------------------------+---+---+---+---+---+----------------------+
71 --| OKS_K_HEADERS_B | X | X | | | | |
72 --+---------------------------------+---+---+---+---+---+----------------------+
73 --| OKC_K_ACCESSES | | X | | | | |
74 --+---------------------------------+---+---+---+---+---+----------------------+
75 --| OKS_K_SALES_CREDITS | | X | | | | |
76 --+---------------------------------+---+---+---+---+---+----------------------+
77 --| CS_CTR_ASSOCIATIONS | X | | | | | |
78 --+---------------------------------+---+---+---+---+---+----------------------+
79 --| OKS_COVERAGES_PUB | | | | | |X |
80 --+---------------------------------+---+---+---+---+---+----------------------+
81 --| OKC_INST_CND_PUB | | | | | |X |
82 --+---------------------------------+---+---+---+---+---+----------------------+
83 --| OKC_K_LINES_B | X | X | X | | | |
84 --+---------------------------------+---+---+---+---+---+----------------------+
85 --| OKC_K_LINES_TL | | X | | | | |
86 --+---------------------------------+---+---+---+---+---+----------------------+
87 --| OKS_K_LINES_B | X | X | | | | |
88 --+---------------------------------+---+---+---+---+---+----------------------+
89 --| OKS_K_LINES_TL | | X | | | | |
90 --+---------------------------------+---+---+---+---+---+----------------------+
91 --| OKS_BILLING_PROFILES_B | X | | | | | |
92 --+---------------------------------+---+---+---+---+---+----------------------+
93 --| OKS_BILL_SCH | | | | | |X |
94 --+---------------------------------+---+---+---+---+---+----------------------+
95 --| OKC_K_HEADERS_B_S | X | | | | | |
96 --+---------------------------------+---+---+---+---+---+----------------------+
97 --| OKC_OPERATION_LINES | X | | | | | |
98 --+---------------------------------+---+---+---+---+---+----------------------+
99 --| OKC_OPERATION_INSTANCES | X | | | | | |
100 --+---------------------------------+---+---+---+---+---+----------------------+
101 --| OKC_K_ITEMS_V | X | | | | | |
102 --+---------------------------------+---+---+---+---+---+----------------------+
103 --| OKC_K_LINES_V | X | | | | | |
104 --+---------------------------------+---+---+---+---+---+----------------------+
105 --| OKC_K_PARTY_ROLES_B | X | | | | | |
106 --+---------------------------------+---+---+---+---+---+----------------------+
107 --| OKS_INSTANCE_TEMP | X | | | | | |
108 --+---------------------------------+---+---+---+---+---+----------------------+
109 --| OKC_STATUSES_V | X | | | | | |
110 --+---------------------------------+---+---+---+---+---+----------------------+
111 --| OKC_STATUSES_B | X | | | | | |
112 --+---------------------------------+---+---+---+---+---+----------------------+
113 --| CS_COUNTERS | X | | | | | |
114 --+---------------------------------+---+---+---+---+---+----------------------+
115 --| CS_COUNTER_GROUPS | X | | | | | |
116 --+---------------------------------+---+---+---+---+---+----------------------+
117 --| CS_INCIDENTS_ALL_B | X | | | | | |
118 --+---------------------------------+---+---+---+---+---+----------------------+
119 --| OKS_BATCH_RULES | X | | | | | |
120 --+---------------------------------+---+---+---+---+---+----------------------+
121 --| CSI_MASS_EDIT_ENTRIES_TL | X | | | | | |
122 --+---------------------------------+---+---+---+---+---+----------------------+
123 --| OKS_INSTANCE_HISTORY | X | X | | | | |
124 --+---------------------------------+---+---+---+---+---+----------------------+
125 --| OKC_QA_CHECK_PUB | | | | | |X |
126 --+---------------------------------+---+---+---+---+---+----------------------+
127 --| OKC_CONTRACT_PUB | | | | | |X |
128 --+---------------------------------+---+---+---+---+---+----------------------+
129 --| OKS_WF_K_PROCESS_PVT | | | | | |X |
130 --+---------------------------------+---+---+---+---+---+----------------------+
131 --| OKS_IHD_PVT | | | | | |X |
132 --+---------------------------------+---+---+---+---+---+----------------------+
133 --| OKS_INS_PVT | | | | | |X |
134 --+---------------------------------+---+---+---+---+---+----------------------+
135 --| CSI_ITEM_INSTANCES | X | | | | | |
136 --+---------------------------------+---+---+---+---+---+----------------------+
137 --| OKS_INST_HIST_DETAILS | | X | | | | |
138 --+---------------------------------+---+---+---+---+---+----------------------+
139
140 l_hdr_id NUMBER;
141 l_line_id NUMBER;
142 l_lineno_new NUMBER := 0;
143 l_Tlineno_new NUMBER := 0;
144 l_gl_dummy NUMBER := 0;
145 TYPE Var2000TabTyp IS TABLE OF Varchar2(2000)
146 INDEX BY BINARY_INTEGER;
147 ------* Procedure create_transaction_source *-------
148 -- Procedure to create transaction souce in operation
149 -- instance and opeatiopn lines.
150 -- One line per contract will be created in operation
151 -- instance and one line for each new subline will be
152 -- created in operation lines.
153 -----------------------------------------------------
154
155
156 PROCEDURE create_transaction_source (
157 p_batch_id NUMBER,
158 p_source_line_id NUMBER,
159 p_target_line_id NUMBER,
160 p_source_chr_id NUMBER,
161 p_target_chr_id NUMBER,
162 p_transaction VARCHAR2,
163 x_return_status OUT NOCOPY VARCHAR2,
164 x_msg_count OUT NOCOPY NUMBER,
165 x_msg_data OUT NOCOPY VARCHAR2
166 )
167 IS
168 CURSOR cop_csr (
169 p_opn_code VARCHAR2
170 )
171 IS
172 SELECT ID
173 FROM okc_class_operations
174 WHERE cls_code = (SELECT cls_code
175 FROM okc_subclasses_b
176 WHERE code = 'SERVICE')
177 AND opn_code = p_opn_code;
178
179
180 CURSOR check_oper_inst_csr (
181 p_cop_id NUMBER,
182 p_chr_id NUMBER,
183 p_batch_id NUMBER
184 )
185 IS
186 SELECT ID
187 FROM okc_operation_instances
188 WHERE cop_id = p_cop_id
189 AND target_chr_id = p_chr_id
190 AND batch_id = p_batch_id
191 AND status_code = 'PROCESSED';
192
193 Cursor check_rec_exists(P_Id Number) Is
194 Select 'X'
195 From Okc_operation_lines ol
196 ,okc_operation_instances Ins
197 Where ol.subject_chr_id = P_target_chr_id
198 And ol.object_chr_id = p_source_chr_id
199 And ol.subject_cle_id Is Null
200 And ol.object_cle_id Is Null
201 And ins.id = p_id;
202
203 l_cop_id NUMBER;
204 l_api_version CONSTANT NUMBER := 1.0;
205 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
206 l_return_status VARCHAR2 (1) := 'S';
207 l_oiev_tbl_in okc_oper_inst_pvt.oiev_tbl_type;
208 l_oiev_tbl_out okc_oper_inst_pvt.oiev_tbl_type;
209 l_olev_tbl_in okc_oper_inst_pvt.olev_tbl_type;
210 l_olev_tbl_out okc_oper_inst_pvt.olev_tbl_type;
211 l_oie_id NUMBER;
212 l_oper_instance_id NUMBER;
213 l_exists Varchar2(1);
214 BEGIN
215 x_return_status := l_return_status;
216
217 -- get class operation id
218 OPEN cop_csr (p_transaction);
219 FETCH cop_csr INTO l_cop_id;
220 CLOSE cop_csr;
221
222
223
224 OPEN check_oper_inst_csr(l_cop_id, p_target_chr_id,p_batch_id);
225 FETCH check_oper_inst_csr INTO l_oie_id;
226
227 IF check_oper_inst_csr%FOUND
228 THEN
229 l_return_status := 'S';
230 l_oper_instance_id := l_oie_id;
231
232 ELSE
233 l_oper_instance_id := okc_p_util.raw_to_number (SYS_GUID ());
234 INSERT INTO OKC_OPERATION_INSTANCES(
235 id,
236 cop_id,
237 status_code,
238 object_version_number,
239 created_by,
240 creation_date,
241 last_updated_by,
242 last_update_date,
243 last_update_login,
244 name,
245 target_chr_id,
246 request_id,
247 program_application_id,
248 program_id,
249 program_update_date,
250 jtot_object1_code,
251 object1_id1,
252 object1_id2,
253 batch_id
254
255 )
256 VALUES (
257 l_oper_instance_id,
258 l_cop_id,
259 'PROCESSED',
260 1,
261 fnd_global.user_id,
262 sysdate,
263 fnd_global.user_id,
264 sysdate,
265 fnd_global.user_id,
266 null,
267 p_target_chr_id,
268 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
269 decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
270 decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
271 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
272 null,
273 null,
274 null,
275 p_batch_id
276 );
277 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
278 fnd_log.string(FND_LOG.LEVEL_STATEMENT,G_MODULE_CURRENT||'.OKS_IB_UTIL_UB.Create_transaction_source',
279 '.Create_Operation_Instance(Return status = '||l_return_status ||')' );
280 END IF;
281
282 End If;
283 CLOSE check_oper_inst_csr;
284
285 INSERT INTO OKC_OPERATION_LINES(
286 id,
287 select_yn,
288 process_flag,
289 active_yn,
290 oie_id,
291 parent_ole_id,
292 subject_chr_id,
293 object_chr_id,
294 subject_cle_id,
295 object_cle_id,
296 object_version_number,
297 created_by,
298 creation_date,
299 last_updated_by,
300 last_update_date,
301 last_update_login,
302 request_id,
303 program_application_id,
304 program_id,
305 program_update_date,
306 message_code)
307 VALUES (
308 okc_p_util.raw_to_number (SYS_GUID ()),
309 null,
310 'P',
311 'Y',
312 l_oper_instance_id,
313 null,
314 p_target_chr_id,
315 p_source_chr_id,
316 p_target_line_id,
317 p_source_line_id,
318 1,
319 fnd_global.user_id,
320 sysdate,
321 fnd_global.user_id,
322 sysdate,
323 fnd_global.user_id,
324 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
325 decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
326 decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
327 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
328 null);
329
330
331 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
332 fnd_log.string(FND_LOG.LEVEL_STATEMENT,G_MODULE_CURRENT||'.OKS_IB_UTIL_UB.Create_transaction_source',
333 'OKC_OPER_INST_PUB.Create_Operation_Line(Return status = '||l_return_status ||')' );
334 END IF;
335 If p_transaction = 'RENEWAL' Then
336 Open check_rec_exists(l_oper_instance_id);
337 Fetch check_rec_exists into l_exists ;
338 Close check_rec_exists;
339 If l_exists is Null Then
340 INSERT INTO OKC_OPERATION_LINES(
341 id,
342 select_yn,
343 process_flag,
344 active_yn,
345 oie_id,
346 parent_ole_id,
347 subject_chr_id,
348 object_chr_id,
349 subject_cle_id,
350 object_cle_id,
351 object_version_number,
352 created_by,
353 creation_date,
354 last_updated_by,
355 last_update_date,
356 last_update_login,
357 request_id,
358 program_application_id,
359 program_id,
360 program_update_date,
361 message_code)
362 VALUES (
363 okc_p_util.raw_to_number (SYS_GUID ()),
364 null,
365 'P',
366 'Y',
367 l_oper_instance_id,
368 null,
369 p_target_chr_id,
370 p_source_chr_id,
371 Null,
372 Null,
373 1,
374 fnd_global.user_id,
375 sysdate,
376 fnd_global.user_id,
377 sysdate,
378 fnd_global.user_id,
379 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
380 decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
381 decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
382 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
383 null);
384
385
386 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
387 fnd_log.string(FND_LOG.LEVEL_STATEMENT,G_MODULE_CURRENT||'.OKS_IB_UTIL_UB.Create_transaction_source',
388 'OKC_OPER_INST_PUB.Create_Operation_Line(Return status = '||l_return_status ||')' );
389 END IF;
390 End If;
391
392 End If;
393 x_return_status := l_return_status;
394 EXCEPTION
395 WHEN g_exception_halt_validation
396 THEN
397 x_return_status := l_return_status;
398 fnd_file.put_line(fnd_file.log,' Error while creating the transaction sourec : '
399 || SQLCODE||':'|| SQLERRM );
400 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
401 fnd_log.string(FND_LOG.LEVEL_STATEMENT,G_MODULE_CURRENT||'.OKS_IB_UTIL_UB.Create_transaction_source',
402 'Error while creating the transaction sourec :( sqlcode = '||SQLCODE
403 ||') sqlerrm = ( '|| SQLERRM || ')' );
404 END IF;
405
406 NULL;
407 WHEN OTHERS
408 THEN
409 x_return_status := okc_api.g_ret_sts_unexp_error;
410 fnd_file.put_line(fnd_file.log,' Error while creating the transaction sourec : '
411 || SQLCODE||':'|| SQLERRM );
412 okc_api.set_message (g_app_name,
413 g_unexpected_error,
414 g_sqlcode_token,
415 SQLCODE,
416 g_sqlerrm_token,
417 SQLERRM
418 );
419 END;
420
421
422
423
424 Function get_ste_code(p_sts_code Varchar2) return Varchar2
425 Is
426 CUrsor l_ste_csr Is
427 Select ste_code
428 From Okc_statuses_b
429 Where code = p_sts_code;
430 l_ste_code Varchar2(30);
431 Begin
432 Open l_ste_csr;
433 Fetch l_ste_csr into l_ste_code;
434 Close l_ste_csr;
435 return(l_ste_code);
436 End;
437
438
439 Function Negotiated_amount
440 (P_start_date IN Date
441 ,P_end_date IN Date
442 ,P_price_uom IN Varchar2
443 ,P_period_type IN Varchar2
444 ,P_period_start IN Varchar2
445 ,P_new_start_date IN Date
446 ,P_amount IN Number
447 ,P_Currency IN Varchar2) Return Number Is
448 l_duration_xfer Number;
449 l_duration_total Number;
450 l_amount Number;
451 l_price_uom Varchar2(30);
452 price_uom_trf Varchar2(30);
453
454 Begin
455
456 If P_price_uom is Null Then
457 l_price_uom := Oks_misc_util_web.duration_unit
458 (
459 P_start_Date,
460 P_end_date);
461
462 Else
463 l_price_uom := p_price_uom;
464
465 End If;
466
467 l_duration_xfer := OKS_TIME_MEASURES_PUB.get_quantity
468 (trunc(P_new_start_date ) ,
469 trunc(P_end_date),
470 l_price_uom ,
471 P_period_type ,
472 P_period_Start );
473
474
475
476 l_duration_total := OKS_TIME_MEASURES_PUB.get_quantity
477 (trunc(P_Start_date) ,
478 trunc(P_end_date),
479 l_price_uom,
480 P_period_type ,
481 P_period_Start );
482
483
484 l_amount := oks_extwar_util_pvt.round_currency_amt(P_amount * l_duration_xfer/l_duration_total,P_currency);
485
486 return (nvl(l_amount,0));
487
488
489 End;
490
491 Function get_line_status(p_lse_id Number,P_start_date date, p_end_date Date, P_line_status varchar2,p_batch_status Varchar2) return Varchar2 Is
492 l_sts_code Varchar2(50);
493 begin
494 If p_lse_id in (14,18) Then
495 IF trunc(p_start_date) > trunc(SYSDATE)
496 THEN
497 l_sts_code := get_status_code('SIGNED');
498
499 ELSIF trunc(p_start_date) <= trunc(SYSDATE) AND p_end_date >= trunc(SYSDATE)
500 THEN
501 l_sts_code := get_status_code('ACTIVE');
502
503 END IF;
504
505 Else
506 If p_line_status = 'ENTERED' Then
507 l_sts_code := get_status_code('ENTERED');
508 Else
509 If get_ste_code(p_batch_status) = 'ACTIVE' Then
510 IF trunc(p_start_date) > trunc(SYSDATE)
511 THEN
512 l_sts_code := get_status_code('SIGNED');
513
514 ELSIF trunc(p_start_date) <= trunc(SYSDATE) AND trunc(p_end_date) >= trunc(SYSDATE)
515 THEN
516 l_sts_code := get_status_code('ACTIVE');
517
518 END IF;
519 Else
520 l_sts_code := p_batch_status;
521 End if;
522 End If;
523
524
525 End If;
526 return(l_sts_code);
527 End;
528
529
530 Function get_status_code(p_ste_code Varchar2) return Varchar2
531 Is
532 CUrsor l_sts_csr Is
533 Select code
534 From Okc_statuses_b
535 Where ste_code = p_ste_code
536 And default_yn = 'Y';
537 l_sts_code Varchar2(30);
538 Begin
539 Open l_sts_csr;
540 Fetch l_sts_csr into l_sts_code;
541 Close l_sts_csr;
542 return(l_sts_code);
543 End;
544
545
546 -----------* Procedure get_sts_code *--------------
547 -- Procedure to get the default sts code and ste code.
548
549 -----------------------------------------------------
550
551 PROCEDURE get_sts_code(
552 p_ste_code VARCHAR2,
553 p_sts_code VARCHAR2,
554 x_ste_code OUT NOCOPY VARCHAR2,
555 x_sts_code OUT NOCOPY VARCHAR2
556 ) IS
557 CURSOR l_ste_csr IS
558 SELECT code
559 FROM okc_statuses_b
560 WHERE ste_code = p_ste_code
561 AND default_yn = 'Y';
562
563 CURSOR l_sts_csr IS
564 SELECT a.code, a.ste_code
565 FROM okc_statuses_b a, okc_statuses_b b
566 WHERE b.code = p_sts_code
567 AND b.ste_code = a.ste_code
568 AND a.default_yn = 'Y';
569
570 l_sts_code VARCHAR2( 30 );
571 BEGIN
572 IF p_sts_code IS NULL THEN
573 OPEN l_ste_csr;
574 FETCH l_ste_csr INTO x_sts_code;
575 CLOSE l_ste_csr;
576 x_ste_code := p_ste_code;
577 ELSE
578 OPEN l_sts_csr;
579 FETCH l_sts_csr INTO x_sts_code, x_ste_code;
580 CLOSE l_sts_csr;
581 END IF;
582 EXCEPTION
583 WHEN OTHERS THEN
584 OKC_API.SET_MESSAGE(
585 g_app_name,
586 g_unexpected_error,
587 g_sqlcode_token,
588 SQLCODE,
589 g_sqlerrm_token,
590 SQLERRM
591 );
592 END;
593
594 --------* Procedure initialize_okc_hdr_tbl *--------
595 -- Procedure to initialize okc_hdr plsql table before
596 -- assigning values
597 -----------------------------------------------------
598
599 PROCEDURE initialize_okc_hdr_tbl (
600 x_okc_hdr_tbl OUT NOCOPY okc_chr_pvt.chrv_tbl_type,
601 p_index NUMBER DEFAULT g_num_one
602 )
603 IS
604 BEGIN
605 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
606 THEN
607 fnd_log.STRING (fnd_log.level_event,
608 g_module_current || 'oks_mass_update.initialize_okc_tbl',
609 'Begin'
610 );
611 END IF;
612
613 x_okc_hdr_tbl (p_index).ID := okc_api.g_miss_num;
614 x_okc_hdr_tbl (p_index).object_version_number := okc_api.g_miss_num;
615 x_okc_hdr_tbl (p_index).sfwt_flag := okc_api.g_miss_char;
616 x_okc_hdr_tbl (p_index).chr_id_response := okc_api.g_miss_num;
617 x_okc_hdr_tbl (p_index).chr_id_award := okc_api.g_miss_num;
618 x_okc_hdr_tbl (p_index).chr_id_renewed := okc_api.g_miss_num;
619 x_okc_hdr_tbl (p_index).inv_organization_id := okc_api.g_miss_num;
620 x_okc_hdr_tbl (p_index).sts_code := okc_api.g_miss_char;
621 x_okc_hdr_tbl (p_index).qcl_id := okc_api.g_miss_num;
622 x_okc_hdr_tbl (p_index).scs_code := okc_api.g_miss_char;
623 x_okc_hdr_tbl (p_index).contract_number := okc_api.g_miss_char;
624 x_okc_hdr_tbl (p_index).currency_code := okc_api.g_miss_char;
625 x_okc_hdr_tbl (p_index).contract_number_modifier := okc_api.g_miss_char;
626 x_okc_hdr_tbl (p_index).archived_yn := okc_api.g_miss_char;
627 x_okc_hdr_tbl (p_index).deleted_yn := okc_api.g_miss_char;
628 x_okc_hdr_tbl (p_index).cust_po_number_req_yn := okc_api.g_miss_char;
629 x_okc_hdr_tbl (p_index).pre_pay_req_yn := okc_api.g_miss_char;
630 x_okc_hdr_tbl (p_index).cust_po_number := okc_api.g_miss_char;
631 x_okc_hdr_tbl (p_index).short_description := okc_api.g_miss_char;
632 x_okc_hdr_tbl (p_index).comments := okc_api.g_miss_char;
633 x_okc_hdr_tbl (p_index).description := okc_api.g_miss_char;
634 x_okc_hdr_tbl (p_index).dpas_rating := okc_api.g_miss_char;
635 x_okc_hdr_tbl (p_index).cognomen := okc_api.g_miss_char;
636 x_okc_hdr_tbl (p_index).template_yn := okc_api.g_miss_char;
637 x_okc_hdr_tbl (p_index).template_used := okc_api.g_miss_char;
638 x_okc_hdr_tbl (p_index).date_approved := okc_api.g_miss_date;
639 x_okc_hdr_tbl (p_index).datetime_cancelled := okc_api.g_miss_date;
640 x_okc_hdr_tbl (p_index).auto_renew_days := okc_api.g_miss_num;
641 x_okc_hdr_tbl (p_index).date_issued := okc_api.g_miss_date;
642 x_okc_hdr_tbl (p_index).datetime_responded := okc_api.g_miss_date;
643 x_okc_hdr_tbl (p_index).non_response_reason := okc_api.g_miss_char;
644 x_okc_hdr_tbl (p_index).non_response_explain := okc_api.g_miss_char;
645 x_okc_hdr_tbl (p_index).rfp_type := okc_api.g_miss_char;
646 x_okc_hdr_tbl (p_index).chr_type := okc_api.g_miss_char;
647 x_okc_hdr_tbl (p_index).keep_on_mail_list := okc_api.g_miss_char;
648 x_okc_hdr_tbl (p_index).set_aside_reason := okc_api.g_miss_char;
649 x_okc_hdr_tbl (p_index).set_aside_percent := okc_api.g_miss_num;
650 x_okc_hdr_tbl (p_index).response_copies_req := okc_api.g_miss_num;
651 x_okc_hdr_tbl (p_index).date_close_projected := okc_api.g_miss_date;
652 x_okc_hdr_tbl (p_index).datetime_proposed := okc_api.g_miss_date;
653 x_okc_hdr_tbl (p_index).date_signed := okc_api.g_miss_date;
654 x_okc_hdr_tbl (p_index).date_terminated := okc_api.g_miss_date;
655 x_okc_hdr_tbl (p_index).date_renewed := okc_api.g_miss_date;
656 x_okc_hdr_tbl (p_index).trn_code := okc_api.g_miss_char;
657 x_okc_hdr_tbl (p_index).start_date := okc_api.g_miss_date;
658 x_okc_hdr_tbl (p_index).end_date := okc_api.g_miss_date;
659 x_okc_hdr_tbl (p_index).org_id := okc_api.g_miss_num;
660 x_okc_hdr_tbl (p_index).buy_or_sell := okc_api.g_miss_char;
661 x_okc_hdr_tbl (p_index).issue_or_receive := okc_api.g_miss_char;
662 x_okc_hdr_tbl (p_index).estimated_amount := okc_api.g_miss_num;
663 x_okc_hdr_tbl (p_index).chr_id_renewed_to := okc_api.g_miss_num;
664 x_okc_hdr_tbl (p_index).estimated_amount_renewed
665 := okc_api.g_miss_num;
666 x_okc_hdr_tbl (p_index).currency_code_renewed := okc_api.g_miss_char;
667 x_okc_hdr_tbl (p_index).upg_orig_system_ref := okc_api.g_miss_char;
668 x_okc_hdr_tbl (p_index).upg_orig_system_ref_id
669 := okc_api.g_miss_num;
670 x_okc_hdr_tbl (p_index).application_id := okc_api.g_miss_num;
671 x_okc_hdr_tbl (p_index).orig_system_source_code
672 := okc_api.g_miss_char;
673 x_okc_hdr_tbl (p_index).orig_system_id1 := okc_api.g_miss_num;
674 x_okc_hdr_tbl (p_index).orig_system_reference1
675 := okc_api.g_miss_char;
676 x_okc_hdr_tbl (p_index).program_id := okc_api.g_miss_num;
677 x_okc_hdr_tbl (p_index).request_id := okc_api.g_miss_num;
678 x_okc_hdr_tbl (p_index).price_list_id := okc_api.g_miss_num;
679 x_okc_hdr_tbl (p_index).pricing_date := okc_api.g_miss_date;
680 x_okc_hdr_tbl (p_index).sign_by_date := okc_api.g_miss_date;
681 x_okc_hdr_tbl (p_index).program_update_date := okc_api.g_miss_date;
682 x_okc_hdr_tbl (p_index).total_line_list_price := okc_api.g_miss_num;
683 x_okc_hdr_tbl (p_index).program_application_id
684 := okc_api.g_miss_num;
685 x_okc_hdr_tbl (p_index).user_estimated_amount := okc_api.g_miss_num;
686 x_okc_hdr_tbl (p_index).governing_contract_yn := okc_api.g_miss_char;
687 x_okc_hdr_tbl (p_index).attribute_category := okc_api.g_miss_char;
688 x_okc_hdr_tbl (p_index).attribute1 := okc_api.g_miss_char;
689 x_okc_hdr_tbl (p_index).attribute2 := okc_api.g_miss_char;
690 x_okc_hdr_tbl (p_index).attribute3 := okc_api.g_miss_char;
691 x_okc_hdr_tbl (p_index).attribute4 := okc_api.g_miss_char;
692 x_okc_hdr_tbl (p_index).attribute5 := okc_api.g_miss_char;
693 x_okc_hdr_tbl (p_index).attribute6 := okc_api.g_miss_char;
694 x_okc_hdr_tbl (p_index).attribute7 := okc_api.g_miss_char;
695 x_okc_hdr_tbl (p_index).attribute8 := okc_api.g_miss_char;
696 x_okc_hdr_tbl (p_index).attribute9 := okc_api.g_miss_char;
697 x_okc_hdr_tbl (p_index).attribute10 := okc_api.g_miss_char;
698 x_okc_hdr_tbl (p_index).attribute11 := okc_api.g_miss_char;
699 x_okc_hdr_tbl (p_index).attribute12 := okc_api.g_miss_char;
700 x_okc_hdr_tbl (p_index).attribute13 := okc_api.g_miss_char;
701 x_okc_hdr_tbl (p_index).attribute14 := okc_api.g_miss_char;
702 x_okc_hdr_tbl (p_index).attribute15 := okc_api.g_miss_char;
703 x_okc_hdr_tbl (p_index).created_by := okc_api.g_miss_num;
704 x_okc_hdr_tbl (p_index).creation_date := okc_api.g_miss_date;
705 x_okc_hdr_tbl (p_index).last_updated_by := okc_api.g_miss_num;
706 x_okc_hdr_tbl (p_index).last_update_date := okc_api.g_miss_date;
707 x_okc_hdr_tbl (p_index).last_update_login := okc_api.g_miss_num;
708 x_okc_hdr_tbl (p_index).old_sts_code := okc_api.g_miss_char;
709 x_okc_hdr_tbl (p_index).new_sts_code := okc_api.g_miss_char;
710 x_okc_hdr_tbl (p_index).old_ste_code := okc_api.g_miss_char;
711 x_okc_hdr_tbl (p_index).new_ste_code := okc_api.g_miss_char;
712 --new columns to replace rules
713 x_okc_hdr_tbl (p_index).conversion_type := okc_api.g_miss_char;
714 x_okc_hdr_tbl (p_index).payment_instruction_type := okc_api.g_miss_char;
715
716 x_okc_hdr_tbl (p_index).conversion_rate := okc_api.g_miss_num;
717 x_okc_hdr_tbl (p_index).conversion_rate_date := okc_api.g_miss_date;
718 x_okc_hdr_tbl (p_index).conversion_euro_rate := okc_api.g_miss_num;
719 x_okc_hdr_tbl (p_index).cust_acct_id := okc_api.g_miss_num;
720 x_okc_hdr_tbl (p_index).bill_to_site_use_id := okc_api.g_miss_num;
721 x_okc_hdr_tbl (p_index).inv_rule_id := okc_api.g_miss_num;
722 x_okc_hdr_tbl (p_index).renewal_type_code := okc_api.g_miss_char;
723 x_okc_hdr_tbl (p_index).renewal_notify_to := okc_api.g_miss_num;
724 x_okc_hdr_tbl (p_index).renewal_end_date := okc_api.g_miss_date;
725 x_okc_hdr_tbl (p_index).ship_to_site_use_id := okc_api.g_miss_num;
726 x_okc_hdr_tbl (p_index).payment_term_id := okc_api.g_miss_num;
727 END initialize_okc_hdr_tbl;
728
729 --------* Procedure initialize_oks_hdr_tbl *--------
730 -- Procedure to initialize oks_hdr plsql table before
731 -- assigning values
732 -----------------------------------------------------
733
734 PROCEDURE initialize_oks_hdr_tbl (
735 x_oks_hdr_tbl OUT NOCOPY oks_khr_pvt.khrv_tbl_type,
736 p_index NUMBER DEFAULT g_num_one
737 )
738 IS
739 BEGIN
740 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
741 THEN
742 fnd_log.STRING (fnd_log.level_event,
743 g_module_current || 'oks_mass_update.initialize_oks_tbl',
744 'Begin'
745 );
746 END IF;
747
748 x_oks_hdr_tbl (p_index).ID := okc_api.g_miss_num;
749 x_oks_hdr_tbl (p_index).chr_id := okc_api.g_miss_num;
750 x_oks_hdr_tbl (p_index).acct_rule_id := okc_api.g_miss_num;
751 x_oks_hdr_tbl (p_index).payment_type := okc_api.g_miss_char;
752 x_oks_hdr_tbl (p_index).cc_no := okc_api.g_miss_char;
753 x_oks_hdr_tbl (p_index).cc_expiry_date := okc_api.g_miss_date;
754 x_oks_hdr_tbl (p_index).cc_bank_acct_id := okc_api.g_miss_num;
755 x_oks_hdr_tbl (p_index).cc_auth_code := okc_api.g_miss_char;
756 x_oks_hdr_tbl (p_index).commitment_id := okc_api.g_miss_num;
757 x_oks_hdr_tbl (p_index).grace_duration := okc_api.g_miss_num;
758 x_oks_hdr_tbl (p_index).grace_period := okc_api.g_miss_char;
759 x_oks_hdr_tbl (p_index).est_rev_percent := okc_api.g_miss_num;
760 x_oks_hdr_tbl (p_index).est_rev_date := okc_api.g_miss_date;
761 x_oks_hdr_tbl (p_index).tax_amount := okc_api.g_miss_num;
762 x_oks_hdr_tbl (p_index).tax_status := okc_api.g_miss_char;
763 x_oks_hdr_tbl (p_index).tax_code := okc_api.g_miss_num;
764 x_oks_hdr_tbl (p_index).tax_exemption_id := okc_api.g_miss_num;
765 x_oks_hdr_tbl (p_index).billing_profile_id := okc_api.g_miss_num;
766 x_oks_hdr_tbl (p_index).renewal_status := okc_api.g_miss_char;
767 x_oks_hdr_tbl (p_index).electronic_renewal_flag := okc_api.g_miss_char;
768 x_oks_hdr_tbl (p_index).quote_to_contact_id := okc_api.g_miss_num;
769 x_oks_hdr_tbl (p_index).quote_to_site_id := okc_api.g_miss_num;
770 x_oks_hdr_tbl (p_index).quote_to_email_id := okc_api.g_miss_num;
771 x_oks_hdr_tbl (p_index).quote_to_phone_id := okc_api.g_miss_num;
772 x_oks_hdr_tbl (p_index).quote_to_fax_id := okc_api.g_miss_num;
773 x_oks_hdr_tbl (p_index).renewal_po_required := okc_api.g_miss_char;
774 x_oks_hdr_tbl (p_index).renewal_po_number := okc_api.g_miss_char;
775 x_oks_hdr_tbl (p_index).renewal_price_list := okc_api.g_miss_num;
776 x_oks_hdr_tbl (p_index).renewal_pricing_type := okc_api.g_miss_char;
777 x_oks_hdr_tbl (p_index).renewal_markup_percent := okc_api.g_miss_num;
778 x_oks_hdr_tbl (p_index).renewal_grace_duration := okc_api.g_miss_num;
779 x_oks_hdr_tbl (p_index).renewal_grace_period := okc_api.g_miss_char;
780 x_oks_hdr_tbl (p_index).renewal_est_rev_percent := okc_api.g_miss_num;
781 x_oks_hdr_tbl (p_index).renewal_est_rev_duration
782 := okc_api.g_miss_num;
783 x_oks_hdr_tbl (p_index).renewal_est_rev_period := okc_api.g_miss_char;
784 x_oks_hdr_tbl (p_index).renewal_price_list_used := okc_api.g_miss_num;
785 x_oks_hdr_tbl (p_index).renewal_type_used := okc_api.g_miss_char;
786 x_oks_hdr_tbl (p_index).renewal_notification_to := okc_api.g_miss_num;
787 x_oks_hdr_tbl (p_index).renewal_po_used := okc_api.g_miss_char;
788 x_oks_hdr_tbl (p_index).renewal_pricing_type_used
789 := okc_api.g_miss_char;
790 x_oks_hdr_tbl (p_index).renewal_markup_percent_used
791 := okc_api.g_miss_num;
792 x_oks_hdr_tbl (p_index).rev_est_percent_used := okc_api.g_miss_num;
793 x_oks_hdr_tbl (p_index).rev_est_duration_used := okc_api.g_miss_num;
794 x_oks_hdr_tbl (p_index).rev_est_period_used := okc_api.g_miss_char;
795 x_oks_hdr_tbl (p_index).billing_profile_used := okc_api.g_miss_num;
796 x_oks_hdr_tbl (p_index).ern_flag_used_yn := okc_api.g_miss_char;
797 x_oks_hdr_tbl (p_index).evn_threshold_amt := okc_api.g_miss_num;
798 x_oks_hdr_tbl (p_index).evn_threshold_cur := okc_api.g_miss_char;
799 x_oks_hdr_tbl (p_index).ern_threshold_amt := okc_api.g_miss_num;
800 x_oks_hdr_tbl (p_index).ern_threshold_cur := okc_api.g_miss_char;
801 x_oks_hdr_tbl (p_index).renewal_grace_duration_used
802 := okc_api.g_miss_num;
803 x_oks_hdr_tbl (p_index).renewal_grace_period_used
804 := okc_api.g_miss_char;
805 x_oks_hdr_tbl (p_index).inv_trx_type := okc_api.g_miss_char;
806 x_oks_hdr_tbl (p_index).inv_print_profile := okc_api.g_miss_char;
807 x_oks_hdr_tbl (p_index).ar_interface_yn := okc_api.g_miss_char;
808 x_oks_hdr_tbl (p_index).hold_billing := okc_api.g_miss_char;
809 x_oks_hdr_tbl (p_index).summary_trx_yn := okc_api.g_miss_char;
810 x_oks_hdr_tbl (p_index).service_po_number := okc_api.g_miss_char;
811 x_oks_hdr_tbl (p_index).service_po_required := okc_api.g_miss_char;
812 x_oks_hdr_tbl (p_index).object_version_number := okc_api.g_miss_num;
813 x_oks_hdr_tbl (p_index).security_group_id := okc_api.g_miss_num;
814 x_oks_hdr_tbl (p_index).request_id := okc_api.g_miss_num;
815 x_oks_hdr_tbl (p_index).created_by := okc_api.g_miss_num;
816 x_oks_hdr_tbl (p_index).creation_date := okc_api.g_miss_date;
817 x_oks_hdr_tbl (p_index).last_updated_by := okc_api.g_miss_num;
818 x_oks_hdr_tbl (p_index).last_update_date := okc_api.g_miss_date;
819 x_oks_hdr_tbl (p_index).last_update_login := okc_api.g_miss_num;
820 END initialize_oks_hdr_tbl;
821
822 ----------* Function check_strmlvl_exists *---------
823 -- function to check if billing schedule exists for a
824 -- service line.
825 -----------------------------------------------------
826
827 FUNCTION check_strmlvl_exists (
828 p_cle_id IN NUMBER
829 )
830 RETURN BOOLEAN
831 IS
832 CURSOR l_billsch_csr (
833 p_cle_id IN NUMBER
834 )
835 IS
836 SELECT ID
837 FROM oks_stream_levels_v
838 WHERE cle_id = p_cle_id;
839
840 l_strmlvl_id NUMBER;
841 BEGIN
842 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
843 fnd_log.string(FND_LOG.LEVEL_STATEMENT,G_MODULE_CURRENT||'oks_mass_update.check_strmlvl_exists',
844 'Begin' );
845 END IF;
846
847 OPEN l_billsch_csr (p_cle_id);
848 FETCH l_billsch_csr INTO l_strmlvl_id;
849
850 IF (l_billsch_csr%FOUND)
851 THEN
852 RETURN (FALSE);
853 ELSE
854 RETURN (TRUE);
855 END IF;
856
857 CLOSE l_billsch_csr;
858 EXCEPTION
859 WHEN NO_DATA_FOUND
860 THEN
861 RETURN (TRUE);
862 END check_strmlvl_exists;
863
864 -------------* Procedure get_party_id *-------------
865 -- Procedure to get party_id for a given account
866 -----------------------------------------------------
867
868 PROCEDURE get_party_id (
869 p_cust_id IN NUMBER,
870 x_party_id OUT NOCOPY NUMBER
871 )
872 IS
873 CURSOR l_party_csr
874 IS
875 SELECT party_id
876 FROM hz_cust_accounts
877 WHERE cust_account_id = p_cust_id;
878 BEGIN
879 OPEN l_party_csr;
880
881 FETCH l_party_csr
882 INTO x_party_id;
883
884 CLOSE l_party_csr;
885 END get_party_id;
886
887 -------------* Procedure get_invoice_text *-------------
888 -- Procedure to get format the invoice text
889 -----------------------------------------------------
890
891 FUNCTION get_invoice_text (
892 p_product_item IN NUMBER,
893 p_start_date IN DATE,
894 p_end_date IN DATE
895 )
896 RETURN VARCHAR2
897 IS
898 CURSOR l_inv_csr (
899 p_product_item NUMBER
900 )
901 IS
902 SELECT t.description NAME,
903 b.concatenated_segments description
904 FROM mtl_system_items_b_kfv b,
905 mtl_system_items_tl t
906 WHERE b.inventory_item_id = t.inventory_item_id
907 AND b.organization_id = t.organization_id
908 AND t.LANGUAGE = USERENV ('LANG')
909 AND b.inventory_item_id = p_product_item
910 AND ROWNUM < 2;
911
912 l_object_code okc_k_items.jtot_object1_code%TYPE;
913 l_object1_id1 okc_k_items.object1_id1%TYPE;
914 l_object1_id2 okc_k_items.object1_id2%TYPE;
915 l_no_of_items okc_k_items.number_of_items%TYPE;
916 l_name VARCHAR2 (2000);
917 l_desc VARCHAR2 (2000);
918 l_formatted_invoice_text VARCHAR2 (2000);
919 BEGIN
920 OPEN l_inv_csr (p_product_item);
921
922 FETCH l_inv_csr
923 INTO l_name,
924 l_desc;
925
926 CLOSE l_inv_csr;
927
928 IF fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE') = 'DISPLAY_DESC'
929 THEN
930 l_desc := l_name;
931 ELSE
932 l_desc := l_desc;
933 END IF;
934
935 l_formatted_invoice_text := SUBSTR ( l_desc
936 || ':'
937 || p_start_date
938 || ':'
939 || p_end_date,
940 1,
941 450
942 );
943 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
944 fnd_log.string(FND_LOG.LEVEL_STATEMENT,G_MODULE_CURRENT||'oks_mass_update.get_invoice_text',
945 'l_formatted_invoice_text = ('|| l_formatted_invoice_text || ')' );
946 END IF;
947
948 RETURN (l_formatted_invoice_text);
949 END get_invoice_text;
950
951 ------------* Procedure get_setup_attr *------------
952 -- Procedure to get the GCD set up attributes required
953 -- for transfer contracts creation.
954 -- qcl_id, prd_id, contract_group,third party rle_code
955 -----------------------------------------------------
956
957 PROCEDURE get_setup_attr (
958 p_party_id IN NUMBER,
959 p_org_id IN NUMBER,
960 setup_attr OUT NOCOPY setup_rec,
961 x_return_status OUT NOCOPY VARCHAR2,
962 x_msg_count OUT NOCOPY NUMBER,
963 x_msg_data OUT NOCOPY VARCHAR2
964 )
965 IS
966 l_rnrl_rec_out oks_renew_util_pvt.rnrl_rec_type;
967 BEGIN
968 Oks_Renew_Util_Pub.get_renew_rules (
969 p_api_version => 1.0,
970 p_init_msg_list => 'T',
971 x_return_status => x_return_status,
972 x_msg_count => x_msg_count,
973 x_msg_data => x_msg_data,
974 p_chr_id => NULL,
975 p_party_id => p_party_id,
976 p_org_id => p_org_id,
977 p_date => SYSDATE,
978 p_rnrl_rec => NULL,
979 x_rnrl_rec => l_rnrl_rec_out
980 );
981
982 IF (Fnd_Log.LEVEL_EVENT >= Fnd_Log.G_CURRENT_RUNTIME_LEVEL) THEN
983 Fnd_Log.string(Fnd_Log.LEVEL_EVENT,G_MODULE_CURRENT||'.get_setup_attr',
984 'get_renew_rules: status = ( '|| x_return_status|| ' )' );
985 END IF;
986 If Not x_return_status = 'S' Then
987
988 Raise G_EXCEPTION_HALT_VALIDATION;
989 End If;
990 setup_attr.cgp_new_id := l_rnrl_rec_out.cgp_new_id;
991 setup_attr.pdf_id := l_rnrl_rec_out.pdf_id;
992 setup_attr.qcl_id := l_rnrl_rec_out.qcl_id;
993 setup_attr.rle_code := l_rnrl_rec_out.rle_code;
994
995 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
996 THEN
997 fnd_log.STRING (fnd_log.level_event,
998 g_module_current || '.get_setup_attr',
999 'get_renew_rules: values = ( group ='
1000 || setup_attr.cgp_new_id
1001 || 'pdf id ='
1002 || setup_attr.pdf_id
1003 || 'qcl_id ='
1004 || setup_attr.qcl_id
1005 || 'rle_code = '
1006 || setup_attr.rle_code
1007 || ' )'
1008 );
1009 END IF;
1010
1011
1012 EXCEPTION
1013 WHEN G_EXCEPTION_HALT_VALIDATION THEN
1014
1015 NULL;
1016 END get_setup_attr;
1017
1018
1019
1020
1021 -----------* Function get_major_version *-----------
1022 -- Procedure to get the contracts major version to
1023 -- copy the notes
1024 -----------------------------------------------------
1025
1026 FUNCTION get_major_version (
1027 p_chr_id NUMBER
1028 )
1029 RETURN VARCHAR2
1030 IS
1031 CURSOR l_cvm_csr
1032 IS
1033 SELECT TO_CHAR (major_version)
1034 FROM okc_k_vers_numbers
1035 WHERE chr_id = p_chr_id;
1036
1037 x_from_version fnd_attached_documents.pk2_value%TYPE := NULL;
1038 BEGIN
1039 OPEN l_cvm_csr;
1040
1041 FETCH l_cvm_csr
1042 INTO x_from_version;
1043
1044 CLOSE l_cvm_csr;
1045
1046 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1047 THEN
1048 fnd_log.STRING (fnd_log.level_event,
1049 g_module_current || '.get_major_version',
1050 'version = ( ' || x_from_version || ' )'
1051 );
1052 END IF;
1053
1054 RETURN x_from_version;
1055 EXCEPTION
1056 WHEN OTHERS
1057 THEN
1058 RETURN okc_api.g_ret_sts_unexp_error;
1059 okc_api.set_message (g_app_name,
1060 g_unexpected_error,
1061 g_sqlcode_token,
1062 SQLCODE,
1063 g_sqlerrm_token,
1064 SQLERRM
1065 );
1066 END get_major_version;
1067
1068 --------* Procedure set_attch_session_vars *--------
1069 -- Procedure to set the attached session variables
1070 -- to copy the notes
1071 -----------------------------------------------------
1072
1073 PROCEDURE set_attach_session_vars (
1074 p_chr_id NUMBER
1075 )
1076 IS
1077 l_app_id NUMBER;
1078
1079 CURSOR l_chr_csr
1080 IS
1081 SELECT application_id
1082 FROM okc_k_headers_all_b
1083 WHERE ID = p_chr_id;
1084 BEGIN
1085 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1086 THEN
1087 fnd_log.STRING (fnd_log.level_event,
1088 g_module_current || 'oks_mass_update.set_attach_ses_vars',
1089 'Begin'
1090 );
1091 END IF;
1092
1093 IF ( p_chr_id IS NOT NULL
1094 AND fnd_attachment_util_pkg.function_name IS NULL
1095 )
1096 THEN
1097 OPEN l_chr_csr;
1098
1099 FETCH l_chr_csr
1100 INTO l_app_id;
1101
1102 CLOSE l_chr_csr;
1103
1104 IF (l_app_id = 515)
1105 THEN
1106 fnd_attachment_util_pkg.function_name := 'OKSAUDET';
1107 fnd_attachment_util_pkg.function_type := 'O';
1108 ELSE
1109 fnd_attachment_util_pkg.function_name := 'OKCAUDET';
1110 fnd_attachment_util_pkg.function_type := 'O';
1111 END IF;
1112 END IF;
1113 END set_attach_session_vars;
1114
1115 -----------* Procedure create_csi_note *------------
1116 -- Procedure to copy the csi note to each contract.
1117 -----------------------------------------------------
1118
1119 PROCEDURE create_csi_note (
1120 p_source_object_id IN NUMBER,
1121 p_note IN VARCHAR2,
1122 x_return_status OUT NOCOPY VARCHAR2,
1123 x_msg_count OUT NOCOPY NUMBER,
1124 x_msg_data OUT NOCOPY VARCHAR2
1125 )
1126 IS
1127 l_jtf_note_id NUMBER;
1128 l_jtf_note_contexts_tab jtf_notes_pub.jtf_note_contexts_tbl_type;
1129
1130 BEGIN
1131 x_return_status := okc_api.g_ret_sts_success;
1132 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1133 THEN
1134 fnd_log.STRING (fnd_log.level_event,
1135 g_module_current || '.create_csi_note',
1136 'note = ( ' || p_note || ' )'
1137 );
1138 END IF;
1139
1140 jtf_notes_pub.create_note
1141 (p_jtf_note_id => NULL,
1142 p_api_version => 1.0,
1143 p_init_msg_list => 'F',
1144 p_commit => 'F',
1145 p_validation_level => 0,
1146 x_return_status => x_return_status,
1147 x_msg_count => x_msg_count,
1148 x_msg_data => x_msg_data,
1149 p_source_object_code => 'OKS_HDR_NOTE',
1150 p_source_object_id => p_source_object_id,
1151 p_notes => p_note,
1152 p_notes_detail => NULL,
1153 p_note_status => 'I',
1154 p_note_type => NULL, --- What should be the note type
1155 p_entered_by => fnd_global.user_id,
1156 p_entered_date => SYSDATE,
1157 x_jtf_note_id => l_jtf_note_id,
1158 p_creation_date => SYSDATE,
1159 p_created_by => fnd_global.user_id,
1160 p_last_update_date => SYSDATE,
1161 p_last_updated_by => fnd_global.user_id,
1162 p_last_update_login => fnd_global.login_id,
1163 p_attribute1 => NULL,
1164 p_attribute2 => NULL,
1165 p_attribute3 => NULL,
1166 p_attribute4 => NULL,
1167 p_attribute5 => NULL,
1168 p_attribute6 => NULL,
1169 p_attribute7 => NULL,
1170 p_attribute8 => NULL,
1171 p_attribute9 => NULL,
1172 p_attribute10 => NULL,
1173 p_attribute11 => NULL,
1174 p_attribute12 => NULL,
1175 p_attribute13 => NULL,
1176 p_attribute14 => NULL,
1177 p_attribute15 => NULL,
1178 p_context => NULL,
1179 p_jtf_note_contexts_tab => l_jtf_note_contexts_tab
1180 );
1181 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1182 THEN
1183 fnd_log.STRING (fnd_log.level_event,
1184 g_module_current || '.create_csi_note',
1185 'status = ( ' || x_return_status || ' )'
1186 );
1187 END IF;
1188
1189 IF NOT x_return_status = okc_api.g_ret_sts_success
1190 THEN
1191 okc_api.set_message (g_app_name,
1192 'OKS_CSI_NOTES_ERROR');
1193
1194 RAISE g_exception_halt_validation;
1195 END IF;
1196
1197
1198 EXCEPTION
1199 WHEN g_exception_halt_validation
1200 THEN
1201
1202 fnd_file.put_line(fnd_file.log,' Error while creating the csi note: '
1203 || SQLCODE||':'|| SQLERRM );
1204 NULL;
1205 WHEN OTHERS
1206 THEN
1207 x_return_status := 'U';
1208 fnd_file.put_line(fnd_file.log,' Error while creating the csi note: '
1209 || SQLCODE||':'|| SQLERRM );
1210 okc_api.set_message (g_app_name,
1211 g_unexpected_error,
1212 g_sqlcode_token,
1213 SQLCODE,
1214 g_sqlerrm_token,
1215 SQLERRM
1216 );
1217 END create_csi_note;
1218
1219 -----------* Procedure get_notes_details *----------
1220 -- Procedure to get the notes details which need to be
1221 -- copied from impacted contract to new contract.
1222 -----------------------------------------------------
1223
1224 PROCEDURE get_notes_details (
1225 p_source_object_id IN NUMBER,
1226 x_notes_tbl OUT NOCOPY jtf_note_tbl_type,
1227 x_return_status OUT NOCOPY VARCHAR2
1228 )
1229 IS
1230 CURSOR get_notes_details_cur (
1231 l_id IN NUMBER
1232 )
1233 IS
1234 SELECT b.jtf_note_id jtf_note_id,
1235 b.source_object_code source_object_code,
1236 b.note_status note_status,
1237 b.note_type note_type,
1238 b.notes notes,
1239 b.notes_detail notes_detail
1240 FROM jtf_notes_vl b
1241 WHERE b.source_object_id = l_id;
1242
1243 i NUMBER := 0;
1244 BEGIN
1245 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1246 THEN
1247 fnd_log.STRING (fnd_log.level_event,
1248 g_module_current || 'oks_mass_update.get_notes_details',
1249 'Begin'
1250 );
1251 END IF;
1252
1253 i := 0;
1254 l_notes_tbl.DELETE;
1255
1256 FOR get_notes_details_rec IN get_notes_details_cur (p_source_object_id)
1257 LOOP
1258 l_notes_tbl (i).source_object_code :=
1259 get_notes_details_rec.source_object_code;
1260 l_notes_tbl (i).notes := get_notes_details_rec.notes;
1261 jtf_notes_pub.writelobtodata (get_notes_details_rec.jtf_note_id,
1262 l_notes_tbl (i).notes_detail
1263 );
1264 l_notes_tbl (i).note_status := get_notes_details_rec.note_status;
1265 l_notes_tbl (i).note_type := get_notes_details_rec.note_type;
1266 i := i + 1;
1267 END LOOP;
1268
1269 x_return_status := 'S';
1270 EXCEPTION
1271 WHEN OTHERS
1272 THEN
1273 x_return_status := 'U';
1274 fnd_file.put_line(fnd_file.log,' Error while getting the notes details: '
1275 || SQLCODE||':'|| SQLERRM );
1276 okc_api.set_message (g_app_name,
1277 g_unexpected_error,
1278 g_sqlcode_token,
1279 SQLCODE,
1280 g_sqlerrm_token,
1281 SQLERRM
1282 );
1283 END get_notes_details;
1284
1285 -------* Function check_acct_not_related *----------
1286 -- Function to check if bill to contact account is
1287 -- related to the transfer party accounts and its
1288 -- related accounts for the contracts org id.
1289 -----------------------------------------------------
1290
1291 FUNCTION check_acct_not_related (
1292 p_party_id IN NUMBER,
1293 p_acct_id IN NUMBER,
1294 p_org_id IN NUMBER
1295 )
1296 RETURN BOOLEAN
1297 IS
1298 l_dummy_var VARCHAR2 (1);
1299
1300 CURSOR check_acct_csr
1301 IS
1302 SELECT 'x'
1303 FROM DUAL
1304 WHERE p_acct_id IN (
1305 SELECT ca1.cust_account_id id1
1306 FROM hz_cust_accounts ca1,
1307 hz_parties party
1308 WHERE ca1.party_id = p_party_id
1309 AND ca1.party_id = party.party_id
1310 AND ca1.status = 'A'
1311 UNION
1312 SELECT ca2.cust_account_id id1
1313 FROM hz_cust_accounts ca2,
1314 hz_parties party1
1315 WHERE ca2.party_id = party1.party_id
1316 AND ca2.cust_account_id IN (
1317 SELECT a.related_cust_account_id
1318 FROM hz_cust_acct_relate_all a,
1319 hz_cust_accounts b
1320 WHERE b.cust_account_id = a.cust_account_id
1321 AND b.party_id = p_party_id
1322 AND b.status = 'A'
1323 AND a.status = 'A'
1324 AND a.org_id = p_org_id)
1325 AND ca2.status = 'A');
1326 BEGIN
1327 OPEN check_acct_csr;
1328 FETCH check_acct_csr INTO l_dummy_var;
1329 IF check_acct_csr%FOUND
1330 THEN
1331 RETURN (FALSE);
1332 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1333 THEN
1334 fnd_log.STRING (fnd_log.level_event,
1335 g_module_current || 'oks_mass_update.create_csi_note',
1336 'Account = '|| p_acct_id || 'is related to '|| p_party_id );
1337 END IF;
1338
1339 ELSE
1340 RETURN (TRUE);
1341 END IF;
1342 CLOSE check_acct_csr;
1343
1344 EXCEPTION
1345 WHEN OTHERS
1346 THEN
1347
1348 fnd_file.put_line(fnd_file.log,' Error while checking the related accounts : '
1349 || SQLCODE||':'|| SQLERRM );
1350 okc_api.set_message (g_app_name,
1351 g_unexpected_error,
1352 g_sqlcode_token,
1353 SQLCODE,
1354 g_sqlerrm_token,
1355 SQLERRM
1356 );
1357
1358 END check_acct_not_related;
1359
1360 ------------* Procedure Site_address *--------------
1361 -- Procedure to get the primary address.
1362 -----------------------------------------------------
1363
1364 FUNCTION site_address (
1365 p_customer_id NUMBER,
1366 p_party_id NUMBER,
1367 p_code VARCHAR2,
1368 p_org_id NUMBER
1369 )
1370 RETURN NUMBER
1371 IS
1372 CURSOR l_address_csr
1373 IS
1374 SELECT CS.SITE_USE_ID ID1
1375 FROM HZ_CUST_SITE_USES_all CS
1376 ,HZ_PARTY_SITES PS
1377 ,HZ_CUST_ACCT_SITES_ALL CA
1378 WHERE PS.PARTY_SITE_ID = CA.PARTY_SITE_ID
1379 AND CA.CUST_ACCT_SITE_ID = CS.CUST_ACCT_SITE_ID
1380 And Ps.party_id = p_party_id
1381 And Ca.cust_account_id = p_customer_id
1382 And Cs.site_use_code = p_code
1383 AND Ps.identifying_address_flag = 'Y'
1384 AND cs.status = 'A'
1385 AND cs.org_id = p_org_id
1386 ;
1387
1388 l_site_id NUMBER;
1389 BEGIN
1390 OPEN l_address_csr;
1391
1392 FETCH l_address_csr
1393 INTO l_site_id;
1394
1395 IF l_address_csr%NOTFOUND
1396 THEN
1397 CLOSE l_address_csr;
1398
1399 RETURN (NULL);
1400 END IF;
1401
1402 CLOSE l_address_csr;
1403
1404 RETURN (l_site_id);
1405 END;
1406
1407 -------* Procedure validate_contract_number *-------
1408 -- Procedure to validate the contract number
1409 -----------------------------------------------------
1410
1411 PROCEDURE validate_contract_number (
1412 p_contract_number_modifier IN VARCHAR2,
1413 p_contract_number IN VARCHAR2,
1414 x_return_status OUT NOCOPY VARCHAR2
1415 )
1416 IS
1417 l_dummy_var VARCHAR2 (1);
1418
1419 CURSOR l_chr_csr2
1420 IS
1421 SELECT 'x'
1422 FROM okc_k_headers_all_b
1423 WHERE contract_number = p_contract_number
1424 AND contract_number_modifier = p_contract_number_modifier;
1425
1426 l_found BOOLEAN := FALSE;
1427 BEGIN
1428 x_return_status := okc_api.g_ret_sts_success;
1429
1430 IF ( p_contract_number_modifier IS NOT NULL
1431 AND p_contract_number IS NOT NULL
1432 )
1433 THEN
1434 OPEN l_chr_csr2;
1435
1436 FETCH l_chr_csr2
1437 INTO l_dummy_var;
1438
1439 l_found := l_chr_csr2%FOUND;
1440
1441 CLOSE l_chr_csr2;
1442 END IF;
1443
1444 IF (l_found)
1445 THEN
1446 x_return_status := okc_api.g_ret_sts_error;
1447 okc_api.set_message (g_app_name,
1448 'OKS_CONTRACT_EXISTS',
1449 'CONTRACT_NUMBER',
1450 p_contract_number,
1451 'CONTRACT_NUMBER_MODIFIER',
1452 p_contract_number_modifier
1453 );
1454 END IF;
1455 END validate_contract_number;
1456
1457 -------* Procedure validate_contract_group *--------
1458 -- Procedure to validate the contract group
1459 -----------------------------------------------------
1460
1461 PROCEDURE validate_contract_group (
1462 p_group_id IN NUMBER,
1463 x_return_status OUT NOCOPY VARCHAR2
1464 )
1465 IS
1466 l_dummy_var VARCHAR2 (1) := '1';
1467
1468 CURSOR l_grpid_csr
1469 IS
1470 SELECT 'x'
1471 FROM okc_k_groups_b
1472 WHERE ID = p_group_id
1473 AND public_yn = 'Y'
1474 OR user_id = fnd_global.user_id;
1475 BEGIN
1476 x_return_status := okc_api.g_ret_sts_success;
1477
1478 IF ( p_group_id <> okc_api.g_miss_num
1479 OR p_group_id IS NOT NULL)
1480 THEN
1481 OPEN l_grpid_csr;
1482
1483 FETCH l_grpid_csr
1484 INTO l_dummy_var;
1485
1486 IF l_grpid_csr%NOTFOUND
1487 THEN
1488 x_return_status := okc_api.g_ret_sts_error;
1489 okc_api.set_message (g_app_name,
1490 'OKS_INV_GROUP',
1491 'GROUP_ID',
1492 p_group_id
1493 );
1494
1495 CLOSE l_grpid_csr;
1496 END IF;
1497
1498 IF l_grpid_csr%ISOPEN
1499 THEN
1500 CLOSE l_grpid_csr;
1501 END IF;
1502 END IF;
1503 END validate_contract_group;
1504
1505 -----------* Procedure validate_party_id *----------
1506 -- Procedure to validate the transfer party id
1507 -----------------------------------------------------
1508
1509 PROCEDURE validate_party_id (
1510 p_party_id IN NUMBER,
1511 x_return_status OUT NOCOPY VARCHAR2
1512 )
1513 IS
1514 l_dummy_var VARCHAR2 (3);
1515
1516 CURSOR l_party_csr
1517 IS
1518 SELECT 'x'
1519 FROM hz_parties party
1520 WHERE EXISTS (SELECT 'x'
1521 FROM hz_cust_accounts acct
1522 WHERE party.party_id = acct.party_id
1523 AND acct.status = 'A')
1524 AND party.party_id = p_party_id;
1525 BEGIN
1526 x_return_status := okc_api.g_ret_sts_success;
1527
1528 IF ( p_party_id = okc_api.g_miss_num
1529 OR p_party_id IS NULL)
1530 THEN
1531 x_return_status := okc_api.g_ret_sts_error;
1532 okc_api.set_message (g_app_name, 'OKS_REQ_PARTY');
1533 ELSE
1534 OPEN l_party_csr;
1535
1536 FETCH l_party_csr
1537 INTO l_dummy_var;
1538
1539 IF l_party_csr%NOTFOUND
1540 THEN
1541 x_return_status := okc_api.g_ret_sts_error;
1542 okc_api.set_message (g_app_name,
1543 'OKS_INV_PARTY',
1544 'PARTY_ID',
1545 p_party_id
1546 );
1547
1548 CLOSE l_party_csr;
1549 END IF;
1550
1551 IF l_party_csr%ISOPEN
1552 THEN
1553 CLOSE l_party_csr;
1554 END IF;
1555 END IF;
1556 END validate_party_id;
1557
1558 -------* Procedure validate_billing_contact *-------
1559 -- Procedure to validate the billing contact
1560 -----------------------------------------------------
1561
1562 PROCEDURE validate_billing_contact (
1563 p_contact_id IN NUMBER,
1564 p_party_id IN NUMBER,
1565 p_trxn_date IN DATE,
1566 x_return_status OUT NOCOPY VARCHAR2
1567 )
1568 IS
1569 l_dummy_var VARCHAR2 (1);
1570
1571 CURSOR l_cust_ctc_csr
1572 IS
1573 SELECT 'x'
1574 FROM hz_relationships r,
1575 hz_parties p3,
1576 hz_parties p2,
1577 hz_org_contacts oc
1578 WHERE p2.party_id = r.subject_id
1579 AND r.relationship_code IN ('CONTACT_OF', 'EMPLOYEE_OF')
1580 AND r.content_source_type = 'USER_ENTERED'
1581 AND p3.party_id = r.party_id
1582 AND oc.party_relationship_id = r.relationship_id
1583 AND r.object_id = p_party_id
1584 AND trunc(p_trxn_date) BETWEEN NVL (r.start_date, SYSDATE)
1585 AND NVL (r.end_date, SYSDATE)
1586 AND r.status = 'A'
1587 AND r.party_id = p_contact_id;
1588 BEGIN
1589 x_return_status := okc_api.g_ret_sts_success;
1590
1591 OPEN l_cust_ctc_csr;
1592 FETCH l_cust_ctc_csr INTO l_dummy_var;
1593
1594 IF l_cust_ctc_csr%NOTFOUND
1595 THEN
1596 x_return_status := okc_api.g_ret_sts_error;
1597 okc_api.set_message (g_app_name,
1598 'OKS_INV_CONTACT',
1599 'CONTACT_ID',
1600 p_contact_id,
1601 'PARTY_ID',
1602 p_party_id
1603 );
1604
1605 CLOSE l_cust_ctc_csr;
1606 END IF;
1607
1608 IF l_cust_ctc_csr%ISOPEN
1609 THEN
1610 CLOSE l_cust_ctc_csr;
1611 END IF;
1612 END validate_billing_contact;
1613
1614
1615
1616 ---------* Procedure validate_site_use_id *---------
1617 -- Procedure to validate the bill to and ship to site
1618 -- use ids
1619 -----------------------------------------------------
1620
1621 FUNCTION validate_site_use_id (
1622 p_site_use_id IN NUMBER,
1623 p_site_use_code IN VARCHAR2,
1624 p_cust_acct_id IN NUMBER,
1625 p_org_id IN NUMBER
1626 ) return VARCHAR2
1627 IS
1628 l_dummy_var VARCHAR2 (3) := 'N';
1629
1630 CURSOR l_site_csr
1631 IS
1632 SELECT 'Y'
1633 FROM hz_cust_site_uses_all a,
1634 hz_cust_acct_sites_all b
1635 WHERE a.site_use_id = p_site_use_id
1636 AND a.site_use_code = p_site_use_code
1637 AND a.cust_acct_site_id = b.cust_acct_site_id
1638 AND a.status = 'A'
1639 AND b.status = 'A'
1640 AND a.org_id = p_org_id
1641 AND b.cust_account_id = p_cust_acct_id;
1642
1643 BEGIN
1644
1645
1646 OPEN l_site_csr;
1647 FETCH l_site_csr INTO l_dummy_var;
1648 CLOSE l_site_csr;
1649
1650 return(l_dummy_var);
1651
1652 END validate_site_use_id;
1653
1654 ---------* Procedure validate_account_id *----------
1655 -- Procedure to validate the account id
1656 -----------------------------------------------------
1657
1658 FUNCTION validate_account_id (
1659 p_account_id NUMBER,
1660 p_party_id Number,
1661 p_org_id NUMBER
1662 ) Return Number
1663 IS
1664 l_dummy_var VARCHAR2 (3);
1665 Cursor Check_Acct_Csr Is
1666 SELECT 'Y'
1667 From HZ_CUST_ACCOUNTS CA1
1668 , HZ_PARTIES party
1669 WHERE CA1.party_id = P_party_id
1670 And CA1. cust_account_id = p_account_id
1671 And CA1.party_id = party.party_id
1672 And CA1.status = 'A'
1673
1674 UNION
1675
1676 SELECT 'Y'
1677 FROM HZ_CUST_ACCOUNTS CA2
1678 , HZ_CUST_ACCT_RELATE_ALL A
1679 , HZ_CUST_ACCOUNTS B
1680 WHERE CA2.cust_account_id = A.RELATED_CUST_ACCOUNT_ID
1681 And B.CUST_ACCOUNT_ID = A.CUST_ACCOUNT_ID
1682 And Ca2.cust_account_id = p_account_id
1683 And B.party_id = p_party_id and B.status = 'A'
1684 And A.status = 'A'
1685 And A.org_id = p_org_id
1686 And CA2.status = 'A';
1687
1688 BEGIN
1689
1690
1691 IF p_account_id IS NOT NULL THEN
1692 OPEN Check_Acct_Csr;
1693 FETCH Check_Acct_Csr INTO l_dummy_var;
1694 CLOSE Check_Acct_Csr;
1695
1696 If l_dummy_var = 'Y' then
1697
1698 return(p_account_id);
1699 Else
1700 return(null);
1701 End if;
1702 Else
1703 return(null);
1704 END IF;
1705
1706 END validate_account_id;
1707
1708
1709
1710 Function Get_address
1711 (P_address_id Number,
1712 P_account_id Number,
1713 p_party_id Number,
1714 P_Site_use Varchar2,
1715 P_org_id Number
1716 ) Return Number Is
1717 l_address_valid Varchar2(1) := 'N';
1718 l_address_id Number;
1719 L_valid_account Number;
1720 Begin
1721
1722 If P_account_id Is Not null Then
1723 L_valid_account := validate_account_id(p_account_id,p_party_id,p_org_id);
1724
1725 If l_valid_account Is not null and P_address_Id Is not null Then
1726 l_address_valid := validate_site_use_id
1727 (
1728 p_site_use_id => P_address_id,
1729 p_site_use_code => P_Site_use,
1730 p_cust_acct_id => p_account_id,
1731 p_org_id => p_org_id
1732 );
1733 End If;
1734
1735 If l_address_valid <> 'Y' or P_address_Id Is Null Then
1736
1737 l_address_id := site_address(p_account_id,
1738 p_party_id,
1739 P_Site_use,
1740 p_org_id
1741 );
1742
1743
1744 Else
1745 l_address_id := P_address_id;
1746
1747 End If;
1748
1749 return(l_address_id);
1750
1751 Else
1752 Return(Null);
1753 End If;
1754
1755
1756
1757
1758 End;
1759
1760 Function get_modifier(Contract_id Number) return varchar2 Is
1761 Cursor l_renewal_csr Is
1762 SELECT object_chr_id
1763 FROM okc_operation_instances op
1764 , okc_class_operations cls
1765 , okc_subclasses_b sl
1766 , okc_operation_lines ol
1767 WHERE ol.subject_chr_id = contract_id
1768 And ol.subject_cle_id is null
1769 And op.id = ol.oie_id
1770 AND op.cop_id = cls.id
1771 And cls.cls_code = sl.cls_code
1772 And sl.code = 'SERVICE'
1773 And cls.opn_code in ('RENEWAL','REN_CON');
1774
1775 Cursor check_renis_xfd(p_contract_id Number) Is
1776 Select 'x'
1777 From Oks_instance_k_dtls_temp
1778 Where contract_id = p_contract_id
1779 And new_contract_id is not null;
1780
1781 l_renewal_id Number;
1782 l_trf Varchar2(1);
1783
1784 Begin
1785
1786 Open l_renewal_csr;
1787 Fetch l_renewal_csr into l_renewal_id;
1788 Close l_renewal_csr;
1789
1790 If l_renewal_id is not null Then
1791 Open check_renis_xfd(l_renewal_id);
1792 Fetch check_renis_xfd into l_trf;
1793 Close check_renis_xfd;
1794
1795
1796 If l_trf = 'x' Then
1797 return(fnd_profile.value('OKC_CONTRACT_IDENTIFIER'));
1798 Else
1799 return(null);
1800
1801 End If;
1802 Else
1803 return(null);
1804
1805 End If;
1806
1807
1808 End;
1809
1810
1811
1812 -------* Procedure create_contract_header *---------
1813 -- Procedure to create the contract header
1814 -- which will create records in okc and oks header tables
1815 -- also will copy the sales credits from impacted
1816 -- contarct to new contracts.
1817 ------------------------------------------------------
1818
1819 PROCEDURE create_contract_header (
1820 p_api_version IN NUMBER,
1821 p_batch_rules IN batch_rules_rec_type,
1822 p_transfer_date IN DATE,
1823 x_return_status OUT NOCOPY VARCHAR2,
1824 x_msg_count OUT NOCOPY NUMBER,
1825 x_msg_Data OUT NOCOPY VARCHAR2
1826
1827 )
1828 IS
1829 CURSOR get_hdr_details_csr
1830 IS
1831 SELECT DISTINCT (temp.new_contract_id) contract_id,
1832 temp.contract_id,
1833 kh.scs_code hdr_scs,
1834 st.ste_code hdr_sts,
1835 kh.authoring_org_id hdr_authorg,
1836 kh.inv_organization_id hdr_invorg,
1837 kh.price_list_id hdr_pl,
1838 kh.currency_code hdr_curr,
1839 kh.payment_term_id hdr_payment,
1840 kh.conversion_type hdr_conv_type,
1841 kh.conversion_rate hdr_conv_rate,
1842 kh.conversion_rate_date hdr_conv_date,
1843 kh.conversion_euro_rate hdr_euro_rate,
1844 ks.hold_billing hdr_hold_bill,
1845 ks.summary_trx_yn hdr_sum_trx,
1846 ks.payment_type hdr_payment_type,
1847 ks.inv_trx_type hdr_inv_trx,
1848 ks.period_start hdr_period_start,
1849 ks.period_type hdr_period_type,
1850 gov.isa_agreement_id agreement_id,
1851 (SELECT MIN (temp1.new_start_date)
1852 FROM oks_instance_k_dtls_temp temp1
1853 WHERE temp1.contract_id = temp.contract_id) hdr_sdate,
1854 (SELECT MAX (temp1.new_end_date)
1855 FROM oks_instance_k_dtls_temp temp1
1856 WHERE temp1.contract_id = temp.contract_id) hdr_edate,
1857 kh.contract_number contract_number,
1858 kh.contract_number_modifier,
1859 get_modifier(temp.contract_id),
1860 (SELECT okc_p_util.raw_to_number (SYS_GUID ())
1861 FROM okc_k_headers_all_b where id = contract_id ) oks_id,
1862 ks.price_uom
1863
1864 FROM okc_k_headers_all_b kh,
1865 oks_k_headers_b ks,
1866 oks_instance_k_dtls_temp temp,
1867 okc_statuses_b st,
1868 okc_governances gov
1869 WHERE kh.ID = temp.contract_id
1870 AND temp.new_contract_id is not null
1871 AND st.code = kh.sts_code
1872 AND ks.chr_id(+) = kh.ID
1873 AND gov.chr_id(+) = kh.ID
1874 AND gov.dnz_chr_id(+) = kh.ID;
1875
1876 CURSOR get_hdr_salescredits_csr
1877 IS
1878 SELECT DISTINCT (temp.new_contract_id),
1879 sc.ctc_id,
1880 sc.sales_credit_type_id1,
1881 sc.PERCENT,
1882 sc.sales_group_id
1883 FROM oks_k_sales_credits_v sc,
1884 oks_instance_k_dtls_temp temp
1885 WHERE sc.chr_id = temp.contract_id
1886 AND sc.cle_id IS NULL
1887 AND temp.new_contract_id IS NOT NULL;
1888
1889 CURSOR get_hdr_access_csr
1890 IS
1891 SELECT DISTINCT (temp.new_contract_id),
1892 ac.GROUP_ID,
1893 ac.resource_id,
1894 ac.access_level
1895 FROM okc_k_accesses_v ac,
1896 oks_instance_k_dtls_temp temp
1897 WHERE chr_id = temp.contract_id;
1898
1899 CURSOR l_app_csr (
1900 p_scs_code VARCHAR2
1901 )
1902 IS
1903 SELECT application_id
1904 FROM okc_classes_b cls,
1905 okc_subclasses_b scs
1906 WHERE cls.code = scs.cls_code
1907 AND scs.code = p_scs_code;
1908
1909 --Territory changes
1910 CURSOR Salesrep_details(p_resource_id number, p_org_id Number) IS
1911 SELECT Salesrep_id
1912 FROM jtf_rs_salesreps Sales
1913 WHERE sales.resource_id = P_resource_id
1914 And sales.org_id = p_org_id;
1915
1916 --Check for vendor object_code
1917 CURSOR object_code_csr( p_code VARCHAR2 ) IS
1918 SELECT 'x'
1919 FROM okc_contact_sources_v
1920 WHERE cro_code = p_code
1921 AND buy_or_sell = 'S'
1922 AND rle_code = 'VENDOR'
1923 AND jtot_object_code = 'OKX_SALEPERS';
1924 Cursor l_ste_csr(p_sts_code varchar2) Is
1925 Select ste_code
1926 From okc_statuses_b
1927 WHere code = p_sts_code;
1928
1929 Cursor l_warranty_csr(p_hdr_Id Number) Is
1930 Select lse_id
1931 From Okc_k_lines_b kl
1932 Where chr_id = p_hdr_id
1933 And lse_id in (1,19,14);
1934
1935
1936
1937
1938 hdr_id okc_datatypes.numbertabtyp;
1939 old_contract_id okc_datatypes.numbertabtyp;
1940
1941 hdr_inv_org_id okc_datatypes.numbertabtyp;
1942 hdr_sts_code okc_datatypes.var30tabtyp;
1943 hdr_qcl_id okc_datatypes.numbertabtyp;
1944 hdr_scs_code okc_datatypes.var30tabtyp;
1945 hdr_contract_number okc_datatypes.var120tabtyp;
1946 hdr_currency_code okc_datatypes.var15tabtyp;
1947 hdr_contract_number_modifier okc_datatypes.var120tabtyp;
1948 hdr_short_description okc_datatypes.var600tabtyp;
1949 hdr_start_date okc_datatypes.datetabtyp;
1950 hdr_end_date okc_datatypes.datetabtyp;
1951 hdr_date_renewed okc_datatypes.datetabtyp;
1952 hdr_authoring_org_id okc_datatypes.numbertabtyp;
1953 hdr_price_list_id okc_datatypes.numbertabtyp;
1954 hdr_conversion_type okc_datatypes.var30tabtyp;
1955 hdr_conversion_rate okc_datatypes.numbertabtyp;
1956 hdr_conversion_rate_date okc_datatypes.datetabtyp;
1957 hdr_conversion_euro_rate okc_datatypes.numbertabtyp;
1958 hdr_cust_acct_id okc_datatypes.number15tabtyp;
1959 hdr_bill_to_site_use_id okc_datatypes.number15tabtyp;
1960 hdr_inv_rule_id okc_datatypes.number15tabtyp;
1961 hdr_renewal_type_code okc_datatypes.var30tabtyp;
1962 hdr_ship_to_site_use_id okc_datatypes.number15tabtyp;
1963 hdr_payment_term_id okc_datatypes.number15tabtyp;
1964 hdr_hold_bill okc_datatypes.var3tabtyp;
1965 hdr_sum_trx okc_datatypes.var3tabtyp;
1966 hdr_payment_type okc_datatypes.var3tabtyp;
1967 hdr_inv_trx okc_datatypes.var3tabtyp;
1968 hdr_agreement_id okc_datatypes.numbertabtyp;
1969 hdr_identifier okc_datatypes.var120tabtyp;
1970 hdr_oks_id okc_datatypes.numbertabtyp;
1971 hdr_period_type okc_datatypes.var10tabtyp;
1972 hdr_period_start okc_datatypes.var30tabtyp;
1973 ar_interface_yn okc_datatypes.var30tabtyp;
1974 renewal_status okc_datatypes.var30tabtyp;
1975 Accting_rule okc_datatypes.numbertabtyp;
1976 Billing_profile okc_datatypes.numbertabtyp;
1977 price_uom okc_datatypes.var30tabtyp;
1978 -- Sales credits
1979 ctc_id okc_datatypes.numbertabtyp;
1980 sales_credit_type_id1 okc_datatypes.var40tabtyp;
1981 PERCENT okc_datatypes.numbertabtyp;
1982 sales_group_id okc_datatypes.numbertabtyp;
1983 -- Access
1984 resource_id okc_datatypes.numbertabtyp;
1985 groupid okc_datatypes.numbertabtyp;
1986 access_level okc_datatypes.var3tabtyp;
1987 setup_attr setup_rec;
1988 l_return_status VARCHAR2 (1) := 'S';
1989 l_msg_count NUMBER;
1990 l_msg_data VARCHAR2 (2000);
1991 j NUMBER := 1;
1992 k NUMBER := 1;
1993 l_third_party_id NUMBER;
1994 -- plsql tables
1995 l_khrv_tbl_out oks_khr_pvt.khrv_tbl_type;
1996 l_cpsv_tbl_in okc_cps_pvt.cpsv_tbl_type;
1997 l_chrv_tbl_in okc_chr_pvt.chrv_tbl_type;
1998 l_khrv_tbl_in oks_khr_pvt.khrv_tbl_type;
1999 l_gvev_tbl_in okc_gve_pvt.gvev_tbl_type;
2000 l_cgcv_tbl_in okc_cgc_pvt.cgcv_tbl_type;
2001 l_cpl_tbl_in okc_cpl_pvt.cplv_tbl_type;
2002 l_ctcv_tbl_in okc_ctc_pvt.ctcv_tbl_type;
2003 -- Local variables
2004 l_ren_identifier VARCHAR2(120);
2005 l_sts_code VARCHAR2 (30);
2006 l_ste_code VARCHAR2 (30);
2007 l_time NUMBER;
2008 l_valid_billto VARCHAR2(1);
2009 l_valid_shipto VARCHAR2(1);
2010 l_lse_id NUMBER;
2011
2012 l_gen_return_Rec JTF_TERR_ASSIGN_PUB.bulk_winners_rec_type;
2013 l_salesrep_id Number;
2014 l_salesgroup_id Number;
2015 l_temp Varchar2(30);
2016
2017 -- Main
2018 BEGIN
2019
2020 l_return_status := okc_api.g_ret_sts_success;
2021 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2022 THEN
2023 fnd_log.STRING (fnd_log.level_event,
2024 g_module_current || 'oks_mass_update.creat_contract_header',
2025 'Begin'
2026 );
2027 END IF;
2028
2029 l_ren_identifier := fnd_profile.value('OKC_CONTRACT_IDENTIFIER');
2030 OPEN get_hdr_details_csr;
2031
2032 FETCH get_hdr_details_csr
2033 BULK COLLECT INTO hdr_id,
2034 old_contract_id,
2035 hdr_scs_code,
2036 hdr_sts_code,
2037 hdr_authoring_org_id,
2038 hdr_inv_org_id,
2039 hdr_price_list_id,
2040 hdr_currency_code,
2041 hdr_payment_term_id,
2042 hdr_conversion_type,
2043 hdr_conversion_rate,
2044 hdr_conversion_rate_date,
2045 hdr_conversion_euro_rate,
2046 hdr_hold_bill,
2047 hdr_sum_trx,
2048 hdr_payment_type,
2049 hdr_inv_trx,
2050 hdr_period_start,
2051 hdr_period_type,
2052 hdr_agreement_id,
2053 hdr_start_date,
2054 hdr_end_date,
2055 hdr_contract_number,
2056 hdr_contract_number_modifier,
2057 hdr_identifier,
2058 hdr_oks_id,
2059 price_uom;
2060
2061 CLOSE get_hdr_details_csr;
2062
2063 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2064 THEN
2065 fnd_log.STRING (fnd_log.level_event,
2066 g_module_current || 'oks_mass_update.create_contract_header',
2067 'Contracts count = (' || hdr_id.COUNT ||')');
2068 END IF;
2069
2070 l_chrv_tbl_in.DELETE;
2071 l_khrv_tbl_in.DELETE;
2072
2073 If hdr_id.count >0
2074 THEN
2075 initialize_okc_hdr_tbl (x_okc_hdr_tbl => l_chrv_tbl_in);
2076 initialize_oks_hdr_tbl (x_oks_hdr_tbl => l_khrv_tbl_in);
2077 END IF;
2078 l_time := 0;
2079 FOR i IN 1 .. hdr_id.COUNT
2080 LOOP
2081 l_valid_shipto := Null;
2082 l_valid_billto := Null;
2083 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2084 THEN
2085 fnd_log.STRING (fnd_log.level_event,
2086 g_module_current || 'oks_mass_update.create_contract_header',
2087 'Process Contract id = (' ||i|| '--->'|| hdr_id(i)
2088 ||'). Set org context( authoring_org_id ='|| hdr_authoring_org_id(i)
2089 ||', org id = '||hdr_inv_org_id (i)|| ')' );
2090 END IF;
2091 get_setup_attr (p_party_id => p_batch_rules.new_party_id,
2092 p_org_id => hdr_authoring_org_id (i),
2093 setup_attr => setup_attr,
2094 x_return_status => l_return_status,
2095 x_msg_count => x_msg_count,
2096 x_msg_data => x_msg_data
2097 );
2098
2099
2100 IF NOT l_return_status = okc_api.g_ret_sts_success THEN
2101
2102 Raise G_EXCEPTION_HALT_VALIDATION;
2103 End if;
2104
2105 OPEN l_app_csr (hdr_scs_code (i));
2106 FETCH l_app_csr INTO l_chrv_tbl_in (i).application_id;
2107 CLOSE l_app_csr;
2108
2109 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2110 THEN
2111 fnd_log.STRING (fnd_log.level_event,
2112 g_module_current || 'oks_mass_update.create_contract_header',
2113 'Application org id = '||l_chrv_tbl_in (i).application_id );
2114 END IF;
2115
2116 l_chrv_tbl_in (i).ID := hdr_id (i);
2117 l_chrv_tbl_in (i).document_id := hdr_id (i);
2118 l_chrv_tbl_in (i).object_version_number := 1;
2119 l_chrv_tbl_in (i).sfwt_flag := 'N';
2120 l_chrv_tbl_in (i).chr_id_renewed := NULL;
2121 l_chrv_tbl_in (i).chr_id_response := NULL;
2122 l_chrv_tbl_in (i).chr_id_award := NULL;
2123 l_chrv_tbl_in (i).inv_organization_id := hdr_inv_org_id (i);
2124 l_chrv_tbl_in (i).start_date := hdr_start_date (i);
2125 l_chrv_tbl_in (i).end_date := hdr_end_date (i);
2126 --l_chrv_tbl_in (i).Date_renewed := nvl(hdr_date_renewed(i),p_transfer_date);
2127 l_chrv_tbl_in (i).org_id := hdr_authoring_org_id (i);
2128 l_chrv_tbl_in (i).authoring_org_id := hdr_authoring_org_id (i);
2129 l_chrv_tbl_in (i).scs_code := hdr_scs_code (i);
2130 l_chrv_tbl_in (i).price_list_id := hdr_price_list_id (i);
2131 l_chrv_tbl_in (i).currency_code := hdr_currency_code (i);
2132 l_chrv_tbl_in (i).conversion_type := hdr_conversion_type (i);
2133 l_chrv_tbl_in (i).conversion_rate := hdr_conversion_rate (i);
2134 l_chrv_tbl_in (i).conversion_rate_date := hdr_conversion_rate_date (i);
2135 l_chrv_tbl_in (i).conversion_euro_rate := hdr_conversion_euro_rate (i);
2136 l_chrv_tbl_in (i).payment_term_id := hdr_payment_term_id (i);
2137
2138 --Fix for Bug 5140969
2139 Open l_warranty_csr(old_contract_id(i));
2140 Fetch l_warranty_csr into l_lse_id;
2141 Close l_warranty_csr;
2142 If l_lse_id = 14 Then
2143 l_chrv_tbl_in (i).contract_number := hdr_contract_number (i);
2144 -- Contract number modifier
2145 IF p_batch_rules.contract_modifier IS NOT NULL
2146 THEN
2147 l_chrv_tbl_in (i).contract_number_modifier :=
2148 p_batch_rules.contract_modifier ||':'||
2149 (sysdate+l_time)||' '||to_char(sysdate + l_time,'HH24:MI:SS');
2150 ELSE
2151
2152 l_chrv_tbl_in (i).contract_number_modifier :=
2153 fnd_profile.value('OKS_TRANSFER_CONTRACT_IDENTIFIER')
2154 ||':'||(sysdate+l_time)||' '|| to_char(sysdate + l_time,'HH24:MI:SS');
2155
2156 END IF;
2157 ar_interface_yn(i) := 'N';
2158 renewal_status(i) := 'COMPLETE';
2159 If trunc(hdr_start_date (i)) > trunc(sysdate) Then
2160 l_chrv_tbl_in (i).sts_code := get_status_code('SIGNED');
2161 Else
2162 l_chrv_tbl_in (i).sts_code := get_status_code('ACTIVE');
2163 End If;
2164 l_chrv_tbl_in (i).date_signed := SYSDATE;
2165 l_chrv_tbl_in (i).date_approved := SYSDATE;
2166 Accting_rule(i) := NULL;
2167 l_chrv_tbl_in (i).inv_rule_id := NULL;
2168 l_chrv_tbl_in (i).qcl_id := Null;
2169 Billing_profile(i) := Null;
2170
2171
2172
2173
2174 Else
2175
2176 fnd_file.put_line(fnd_file.log,'retain k no'||p_batch_rules.retain_contract_number_flag ||p_batch_rules.contract_modifier );
2177
2178 IF NVL (p_batch_rules.retain_contract_number_flag, 'N') = 'N'
2179 THEN
2180 okc_contract_pvt.generate_contract_number
2181 (p_scs_code => hdr_scs_code (i),
2182 p_modifier => p_batch_rules.contract_modifier,
2183 x_return_status => l_return_status,
2184 x_contract_number => l_chrv_tbl_in (i).contract_number
2185 );
2186
2187 IF NOT l_return_status = okc_api.g_ret_sts_success THEN
2188 Raise G_EXCEPTION_HALT_VALIDATION;
2189 End if;
2190 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2191 THEN
2192 fnd_log.STRING (fnd_log.level_event,
2193 g_module_current || 'oks_mass_update.create_contract_header',
2194 'After generate contract number, status = ('
2195 || l_return_status|| '). Contract Number = ('
2196 ||l_chrv_tbl_in (i).contract_number || ')');
2197 END IF;
2198
2199 -- Contract number modifier
2200 IF p_batch_rules.contract_modifier IS NOT NULL
2201 THEN
2202 l_chrv_tbl_in (i).contract_number_modifier :=
2203 Nvl(p_batch_rules.contract_modifier ,fnd_profile.value('OKS_TRANSFER_CONTRACT_IDENTIFIER'))
2204 ||':'|| sysdate ||' '||to_char(sysdate,'HH24:MI:SS');
2205 Else
2206 l_chrv_tbl_in (i).contract_number_modifier := Null;
2207 End If;
2208 ELSE
2209 l_chrv_tbl_in (i).contract_number := hdr_contract_number (i);
2210
2211 -- Contract number modifier
2212 IF p_batch_rules.contract_modifier IS NOT NULL
2213 THEN
2214 l_chrv_tbl_in (i).contract_number_modifier :=
2215 Nvl(hdr_identifier (i),p_batch_rules.contract_modifier ) ||':'||
2216 (sysdate+l_time)||' '||to_char(sysdate + l_time,'HH24:MI:SS');
2217 ELSE
2218
2219 l_chrv_tbl_in (i).contract_number_modifier :=
2220 nvl(hdr_identifier (i),fnd_profile.value('OKS_TRANSFER_CONTRACT_IDENTIFIER'))
2221 ||':'||(sysdate+l_time)||' '|| to_char(sysdate + l_time,'HH24:MI:SS');
2222
2223
2224 END IF;
2225 END IF;
2226 IF p_batch_rules.bill_lines_flag = 'R'
2227 THEN
2228 IF hdr_identifier (i) = l_ren_identifier
2229 THEN
2230 ar_interface_yn(i) := 'Y';
2231 ELSE
2232 IF hdr_sts_code(i) = 'ENTERED' Then
2233 ar_interface_yn(i) := 'Y';
2234 Else
2235 ar_interface_yn(i) := 'R';
2236 End If;
2237 END IF;
2238 ELSE
2239 ar_interface_yn(i) := p_batch_rules.bill_lines_flag;
2240 END IF;
2241 If get_ste_code(p_batch_rules.contract_status) = 'ENTERED' or hdr_sts_code(i) = 'ENTERED' Then
2242 renewal_status(i) := 'DRAFT';
2243 Else
2244 renewal_status(i) := 'COMPLETE';
2245 End If;
2246 Accting_rule(i) := p_batch_rules.accounting_rule;
2247 Billing_profile(i) := p_batch_rules.billing_profile_id;
2248 l_chrv_tbl_in (i).inv_rule_id :=
2249 NVL (p_batch_rules.invoicing_rule,
2250 -2);
2251 l_chrv_tbl_in (i).qcl_id := setup_attr.qcl_id;
2252
2253
2254 IF hdr_sts_code(i) = 'ENTERED'
2255 THEN
2256 l_chrv_tbl_in (i).sts_code := get_status_code('ENTERED');
2257 l_chrv_tbl_in (i).date_signed := '';
2258 l_chrv_tbl_in (i).date_approved := '';
2259 ELSE
2260
2261 IF get_ste_code(p_batch_rules.contract_status) = 'ACTIVE'
2262 THEN
2263 If trunc(hdr_start_date (i)) > trunc(sysdate) Then
2264 l_chrv_tbl_in (i).sts_code := get_status_code('SIGNED');
2265 Else
2266 l_chrv_tbl_in (i).sts_code := p_batch_rules.contract_status;
2267 End If;
2268 l_chrv_tbl_in (i).date_signed := SYSDATE;
2269 l_chrv_tbl_in (i).date_approved := SYSDATE;
2270 ELSE
2271 l_chrv_tbl_in (i).sts_code := p_batch_rules.contract_status;
2272 l_chrv_tbl_in (i).date_signed := '';
2273 l_chrv_tbl_in (i).date_approved := '';
2274 END IF;
2275 END IF;
2276 End If;
2277
2278
2279 l_time := l_time + 1/(24 * 60 * 60) ;
2280
2281 fnd_file.put_line(fnd_file.log,l_chrv_tbl_in (i).contract_number ||l_chrv_tbl_in (i).contract_number_modifier);
2282 fnd_file.put_line(fnd_file.log,l_chrv_tbl_in (i).id);
2283 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2284 THEN
2285 fnd_log.STRING (fnd_log.level_event,
2286 g_module_current || 'oks_mass_update.create_contract_header',
2287 'After contract Modifier ('
2288 || l_chrv_tbl_in (i).contract_number_modifier || ')');
2289 END IF;
2290
2291 validate_contract_number
2292 (p_contract_number_modifier => l_chrv_tbl_in (i).contract_number_modifier,
2293 p_contract_number => l_chrv_tbl_in (i).contract_number,
2294 x_return_status => l_return_status
2295 );
2296 fnd_file.put_line(fnd_file.log,'validate_contract_number'||l_return_status);
2297 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2298 THEN
2299 fnd_log.STRING (fnd_log.level_event,
2300 g_module_current || 'oks_mass_update.create_contract_header',
2301 'after Validate contract number status = ('
2302 || l_return_status || ')');
2303 END IF;
2304
2305 l_chrv_tbl_in (i).short_description :=
2306 'Transferred from Contract : ' || hdr_contract_number (i)||' '||hdr_contract_number_modifier(i) ;
2307
2308
2309 l_chrv_tbl_in (i).archived_yn := 'N';
2310 l_chrv_tbl_in (i).deleted_yn := 'N';
2311 l_chrv_tbl_in (i).cust_po_number_req_yn := 'N';
2312 l_chrv_tbl_in (i).buy_or_sell := 'S';
2313 l_chrv_tbl_in (i).issue_or_receive := 'I';
2314 l_chrv_tbl_in (i).chr_type := 'CYA';
2315 l_chrv_tbl_in (i).template_yn := 'N';
2316 l_chrv_tbl_in (i).old_sts_code := '';
2317 l_chrv_tbl_in (i).old_ste_code := '';
2318 l_chrv_tbl_in (i).new_sts_code := '';
2319 l_chrv_tbl_in (i).new_ste_code := '';
2320 l_chrv_tbl_in (i).chr_id_renewed_to := NULL;
2321 l_chrv_tbl_in (i).pre_pay_req_yn := '';
2322 l_chrv_tbl_in (i).cust_po_number := '';
2323 l_chrv_tbl_in (i).comments := '';
2324 l_chrv_tbl_in (i).description := '';
2325 l_chrv_tbl_in (i).dpas_rating := NULL;
2326 l_chrv_tbl_in (i).cognomen := '';
2327 l_chrv_tbl_in (i).template_used := '';
2328 l_chrv_tbl_in (i).datetime_cancelled := '';
2329 l_chrv_tbl_in (i).auto_renew_days := NULL;
2330 l_chrv_tbl_in (i).date_issued := '';
2331 l_chrv_tbl_in (i).datetime_responded := '';
2332 l_chrv_tbl_in (i).non_response_reason := '';
2333 l_chrv_tbl_in (i).non_response_explain := '';
2334 l_chrv_tbl_in (i).rfp_type := '';
2335 l_chrv_tbl_in (i).keep_on_mail_list := '';
2336 l_chrv_tbl_in (i).set_aside_reason := '';
2337 l_chrv_tbl_in (i).set_aside_percent := NULL;
2338 l_chrv_tbl_in (i).response_copies_req := '';
2339 l_chrv_tbl_in (i).date_close_projected := '';
2340 l_chrv_tbl_in (i).datetime_proposed := '';
2341 l_chrv_tbl_in (i).date_terminated := '';
2342 l_chrv_tbl_in (i).date_renewed := '';
2343 l_chrv_tbl_in (i).trn_code := '';
2344 l_chrv_tbl_in (i).estimated_amount := NULL;
2345 l_chrv_tbl_in (i).estimated_amount_renewed := NULL;
2346 l_chrv_tbl_in (i).currency_code_renewed := '';
2347 l_chrv_tbl_in (i).upg_orig_system_ref := '';
2348 l_chrv_tbl_in (i).upg_orig_system_ref_id := NULL;
2349 l_chrv_tbl_in (i).orig_system_source_code := '';
2350 l_chrv_tbl_in (i).orig_system_id1 := NULL;
2351 l_chrv_tbl_in (i).orig_system_reference1 := NULL;
2352 l_chrv_tbl_in (i).program_id := NULL;
2353 l_chrv_tbl_in (i).request_id := NULL;
2354 l_chrv_tbl_in (i).program_update_date := '';
2355 l_chrv_tbl_in (i).program_application_id := NULL;
2356 l_chrv_tbl_in (i).pricing_date := '';
2357 l_chrv_tbl_in (i).sign_by_date := '';
2358 l_chrv_tbl_in (i).total_line_list_price := NULL;
2359 l_chrv_tbl_in (i).user_estimated_amount := NULL;
2360 l_chrv_tbl_in (i).governing_contract_yn := '';
2361 l_chrv_tbl_in (i).attribute_category := '';
2362 l_chrv_tbl_in (i).attribute1 := '';
2363 l_chrv_tbl_in (i).attribute2 := '';
2364 l_chrv_tbl_in (i).attribute3 := '';
2365 l_chrv_tbl_in (i).attribute4 := '';
2366 l_chrv_tbl_in (i).attribute5 := '';
2367 l_chrv_tbl_in (i).attribute6 := '';
2368 l_chrv_tbl_in (i).attribute7 := '';
2369 l_chrv_tbl_in (i).attribute8 := '';
2370 l_chrv_tbl_in (i).attribute9 := '';
2371 l_chrv_tbl_in (i).attribute10 := '';
2372 l_chrv_tbl_in (i).attribute11 := '';
2373 l_chrv_tbl_in (i).attribute12 := '';
2374 l_chrv_tbl_in (i).attribute13 := '';
2375 l_chrv_tbl_in (i).attribute14 := '';
2376 l_chrv_tbl_in (i).attribute15 := '';
2377 l_chrv_tbl_in (i).renewal_type_code := '';
2378 l_chrv_tbl_in (i).renewal_notify_to := NULL;
2379 l_chrv_tbl_in (i).renewal_end_date := NULL;
2380 l_chrv_tbl_in (i).created_by := fnd_global.user_id;
2381 l_chrv_tbl_in (i).creation_date := SYSDATE;
2382 l_chrv_tbl_in (i).last_updated_by := fnd_global.user_id;
2383 l_chrv_tbl_in (i).last_update_date := SYSDATE;
2384 l_chrv_tbl_in (i).last_update_login := fnd_global.login_id;
2385 l_chrv_tbl_in (i).cust_acct_id := NULL;
2386 l_chrv_tbl_in (i).payment_instruction_type := '';
2387
2388 IF p_batch_rules.bill_address_id Is Not Null Then
2389 L_valid_billto := validate_site_use_id
2390 (
2391 p_site_use_id => p_batch_rules.bill_address_id,
2392 p_site_use_code => 'BILL_TO',
2393 p_cust_acct_id => p_batch_rules.bill_account_id,
2394 p_org_id => hdr_authoring_org_id (i)
2395 );
2396 End If;
2397 fnd_file.put_line(fnd_file.log,'l_valid_billto'||l_valid_billto);
2398 If l_valid_billto <> 'Y' or p_batch_rules.bill_address_id Is Null Then
2399
2400 l_chrv_tbl_in(i).bill_to_site_use_id := site_address(nvl(p_batch_rules.bill_account_id,p_batch_rules.new_customer_id),
2401 p_batch_rules.new_party_id,
2402 'BILL_TO',
2403 hdr_authoring_org_id (i)
2404 );
2405 Else
2406 l_chrv_tbl_in(i).bill_to_site_use_id := p_batch_rules.bill_address_id;
2407 End If;
2408
2409
2410
2411
2412 IF p_batch_rules.Ship_address_id Is Not Null Then
2413 L_valid_Shipto := validate_site_use_id
2414 (
2415 p_site_use_id => p_batch_rules.Ship_address_id,
2416 p_site_use_code => 'SHIP_TO',
2417 p_cust_acct_id => p_batch_rules.Ship_account_id,
2418 p_org_id => hdr_authoring_org_id (i)
2419 );
2420 End If;
2421 fnd_file.put_line(fnd_file.log,'L_valid_Shipto'||L_valid_Shipto);
2422 If L_valid_Shipto <> 'Y' or p_batch_rules.Ship_address_id Is Null Then
2423
2424 l_chrv_tbl_in(i).Ship_to_site_use_id := site_address(nvl(p_batch_rules.Ship_account_id
2425 ,p_batch_rules.new_customer_id),
2426 p_batch_rules.new_party_id,
2427 'SHIP_TO',
2428 hdr_authoring_org_id (i)
2429 );
2430 Else
2431 l_chrv_tbl_in(i).Ship_to_site_use_id := p_batch_rules.Ship_address_id;
2432 End If;
2433
2434
2435
2436 -- Assigning records for okS_k_headers_b
2437 l_khrv_tbl_in (i).ID := hdr_oks_id(i); --okc_p_util.raw_to_number (SYS_GUID ());
2438 l_khrv_tbl_in (i).chr_id := hdr_id (i);
2439 l_khrv_tbl_in (i).summary_trx_yn := hdr_sum_trx (i);
2440 l_khrv_tbl_in (i).hold_billing := hdr_hold_bill (i);
2441 l_khrv_tbl_in (i).inv_trx_type := hdr_inv_trx (i);
2442
2443 -- l_khrv_tbl_in (1).est_rev_percent :=
2444 -- l_khrv_tbl_in (1).est_rev_date := p_header_rec.est_rev_date;
2445 fnd_file.put_line(fnd_file.log,'setup_attr.pdf_id ***'||setup_attr.pdf_id );
2446
2447 -- create wf process
2448 IF setup_attr.pdf_id IS NOT NULL and l_lse_id <> 14
2449 THEN
2450 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2451 THEN
2452 fnd_log.STRING (fnd_log.level_event,
2453 g_module_current || 'oks_mass_update.create_contract_header',
2454 'Inside pdf assignment');
2455 END IF;
2456
2457 l_cpsv_tbl_in (i).ID := okc_p_util.raw_to_number (SYS_GUID ());
2458 l_cpsv_tbl_in (i).chr_id := hdr_id (i);
2459 l_cpsv_tbl_in (i).pdf_id := setup_attr.pdf_id;
2460 l_cpsv_tbl_in (i).user_id := fnd_global.user_id;
2461 l_cpsv_tbl_in (i).created_by := fnd_global.user_id;
2462 l_cpsv_tbl_in (i).creation_date := SYSDATE;
2463 l_cpsv_tbl_in (i).last_updated_by := fnd_global.user_id;
2464 l_cpsv_tbl_in (i).last_update_date := SYSDATE;
2465 l_cpsv_tbl_in (i).object_version_number := 1;
2466 l_cpsv_tbl_in (i).crt_id := NULL;
2467 l_cpsv_tbl_in (i).process_id := NULL;
2468 l_cpsv_tbl_in (i).in_process_yn := '';
2469 l_cpsv_tbl_in (i).attribute_category := '';
2470 l_cpsv_tbl_in (i).attribute1 := '';
2471 l_cpsv_tbl_in (i).attribute2 := '';
2472 l_cpsv_tbl_in (i).attribute3 := '';
2473 l_cpsv_tbl_in (i).attribute4 := '';
2474 l_cpsv_tbl_in (i).attribute5 := '';
2475 l_cpsv_tbl_in (i).attribute6 := '';
2476 l_cpsv_tbl_in (i).attribute7 := '';
2477 l_cpsv_tbl_in (i).attribute8 := '';
2478 l_cpsv_tbl_in (i).attribute9 := '';
2479 l_cpsv_tbl_in (i).attribute10 := '';
2480 l_cpsv_tbl_in (i).attribute11 := '';
2481 l_cpsv_tbl_in (i).attribute12 := '';
2482 l_cpsv_tbl_in (i).attribute13 := '';
2483 l_cpsv_tbl_in (i).attribute14 := '';
2484 l_cpsv_tbl_in (i).attribute15 := '';
2485 l_cpsv_tbl_in (i).last_update_login := fnd_global.login_id;
2486 END IF;
2487 -- create contract group
2488 IF setup_attr.cgp_new_id IS NOT NULL
2489 THEN
2490
2491 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2492 THEN
2493 fnd_log.STRING (fnd_log.level_event,
2494 g_module_current || 'oks_mass_update.create_contract_header',
2495 'Inside contract group assignment');
2496 END IF;
2497
2498 l_cgcv_tbl_in (i).ID := okc_p_util.raw_to_number (SYS_GUID ());
2499 l_cgcv_tbl_in (i).cgp_parent_id := setup_attr.cgp_new_id;
2500 l_cgcv_tbl_in (i).included_chr_id := hdr_id (i);
2501 l_cgcv_tbl_in (i).object_version_number := 1;
2502 l_cgcv_tbl_in (i).scs_code := hdr_scs_code (i);
2503 l_cgcv_tbl_in (i).created_by := fnd_global.user_id;
2504 l_cgcv_tbl_in (i).creation_date := SYSDATE;
2505 l_cgcv_tbl_in (i).last_updated_by := fnd_global.user_id;
2506 l_cgcv_tbl_in (i).last_update_date := SYSDATE;
2507 l_cgcv_tbl_in (i).last_update_login := fnd_global.login_id;
2508 END IF;
2509
2510 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2511 THEN
2512 fnd_log.STRING (fnd_log.level_event,
2513 g_module_current || 'oks_mass_update.create_contract_header',
2514 'Party roles assignment, Vendor = '|| hdr_authoring_org_id (i)
2515 || 'Customer = '|| p_batch_rules.new_party_id );
2516 END IF;
2517
2518 l_cpl_tbl_in (j).ID := okc_p_util.raw_to_number (SYS_GUID ());
2519 l_cpl_tbl_in (j).object_version_number := 1;
2520 l_cpl_tbl_in (j).sfwt_flag := 'N';
2521 l_cpl_tbl_in (j).cpl_id := '';
2522 l_cpl_tbl_in (j).chr_id := hdr_id (i);
2523 l_cpl_tbl_in (j).cle_id := '';
2524 IF hdr_scs_code(i) IN ('WARRANTY' , 'SERVICE' )
2525 THEN
2526 l_cpl_tbl_in (j).rle_code := 'VENDOR';
2527 ELSE
2528 l_cpl_tbl_in (j).rle_code := 'MERCHANT';
2529 END IF;
2530 l_cpl_tbl_in (j).dnz_chr_id := hdr_id (i);
2531 l_cpl_tbl_in (j).object1_id1 := hdr_authoring_org_id (i);
2532 l_cpl_tbl_in (j).object1_id2 := '#';
2533 l_cpl_tbl_in (j).jtot_object1_code := 'OKX_OPERUNIT';
2534 l_cpl_tbl_in (j).cognomen := '';
2535 l_cpl_tbl_in (j).code := '';
2536 l_cpl_tbl_in (j).facility := '';
2537 l_cpl_tbl_in (j).minority_group_lookup_code := '';
2538 l_cpl_tbl_in (j).small_business_flag := '';
2539 l_cpl_tbl_in (j).women_owned_flag := '';
2540 l_cpl_tbl_in (j).alias := '';
2541 l_cpl_tbl_in (j).primary_yn := '';
2542 l_cpl_tbl_in (j).cust_acct_id := '';
2543 l_cpl_tbl_in (j).bill_to_site_use_id := '';
2544 l_cpl_tbl_in (j).attribute_category := '';
2545 l_cpl_tbl_in (j).attribute1 := '';
2546 l_cpl_tbl_in (j).attribute2 := '';
2547 l_cpl_tbl_in (j).attribute3 := '';
2548 l_cpl_tbl_in (j).attribute4 := '';
2549 l_cpl_tbl_in (j).attribute5 := '';
2550 l_cpl_tbl_in (j).attribute6 := '';
2551 l_cpl_tbl_in (j).attribute7 := '';
2552 l_cpl_tbl_in (j).attribute8 := '';
2553 l_cpl_tbl_in (j).attribute9 := '';
2554 l_cpl_tbl_in (j).attribute10 := '';
2555 l_cpl_tbl_in (j).attribute11 := '';
2556 l_cpl_tbl_in (j).attribute12 := '';
2557 l_cpl_tbl_in (j).attribute13 := '';
2558 l_cpl_tbl_in (j).attribute14 := '';
2559 l_cpl_tbl_in (j).attribute15 := '';
2560 l_cpl_tbl_in (j).created_by := fnd_global.user_id;
2561 l_cpl_tbl_in (j).creation_date := SYSDATE;
2562 l_cpl_tbl_in (j).last_updated_by := fnd_global.user_id;
2563 l_cpl_tbl_in (j).last_update_date := SYSDATE;
2564 l_cpl_tbl_in (j).last_update_login := fnd_global.login_id;
2565 If l_lse_id <> 14 Then
2566 If NVL(fnd_profile.value('OKS_USE_JTF'),'NO') = 'YES' Then
2567
2568 --Vendor Contact Derived from territory Setup
2569 OKS_EXTWARPRGM_PVT.GET_JTF_RESOURCE (p_authorg_id => hdr_authoring_org_id (i),
2570 p_party_id => p_batch_rules.new_party_id ,
2571 x_winners_rec => l_gen_return_rec,
2572 x_msg_count => x_msg_count,
2573 x_msg_data => x_msg_data,
2574 x_return_status => l_return_status
2575 );
2576 fnd_file.put_line(fnd_file.log,'GET_JTF_RESOURCE ret status'||l_return_status);
2577 IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2578 -- Setup error
2579 fnd_file.put_line(fnd_file.log,'SEND_NOTIFICATION');
2580
2581 OKS_EXTWARPRGM_PVT.SEND_NOTIFICATION(null, hdr_id (i),'SER');
2582 ELSE
2583
2584
2585 If l_gen_return_rec.trans_object_id.Count > 0 Then
2586
2587 For l_counter in l_gen_return_rec.trans_object_id.FIRST..l_gen_return_Rec.trans_object_id.LAST
2588 LOOP
2589 l_salesrep_id := Null;
2590 fnd_file.put_line(fnd_file.log,'in loop'||l_gen_return_Rec.RESOURCE_ID(l_counter)||'org'||hdr_authoring_org_id (i) );
2591
2592 OPEN Salesrep_details(l_gen_return_Rec.RESOURCE_ID(l_counter),hdr_authoring_org_id (i) );
2593 FETCH Salesrep_details INTO l_Salesrep_id;
2594 CLOSE Salesrep_details;
2595 fnd_file.put_line(fnd_file.log,'in loop l_Salesrep_id'||l_Salesrep_id);
2596
2597 If l_salesrep_id is not null Then
2598 Exit;
2599 End If;
2600 End Loop;
2601
2602
2603 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
2604 fnd_log.string(FND_LOG.LEVEL_STATEMENT,G_MODULE_CURRENT,
2605 'Salesrep ID is : ' || l_salesrep_id );
2606 END IF;
2607 IF l_salesrep_id Is Null THEN
2608 fnd_file.put_line(fnd_file.log,'SEND_NOTIFICATION 1');
2609
2610 OKS_EXTWARPRGM_PVT.SEND_NOTIFICATION(null,hdr_id(i) ,'ISP');
2611 End If;
2612 Else
2613 fnd_file.put_line(fnd_file.log,'SEND_NOTIFICATION 2');
2614 OKS_EXTWARPRGM_PVT.SEND_NOTIFICATION(null, hdr_id(i),'NRS');
2615 END IF;
2616
2617 END IF;
2618 fnd_file.put_line(fnd_file.log,'l_salesrep_id value'||l_salesrep_id);
2619 If l_salesrep_id Is Not Null And fnd_profile.VALUE('OKS_VENDOR_CONTACT_ROLE' ) IS NOT NULL THEN
2620 l_salesgroup_id := Null;
2621 fnd_file.put_line(fnd_file.log,'l_salesrep_id not nul');
2622 l_salesgroup_id := jtf_rs_integration_pub.get_default_sales_group
2623 (p_salesrep_id => l_salesrep_id,
2624 p_org_id => hdr_authoring_org_id (i),
2625 p_date => hdr_start_date (i));
2626
2627
2628 OPEN object_code_csr( fnd_profile.VALUE('OKS_VENDOR_CONTACT_ROLE' ));
2629 FETCH object_code_csr INTO l_temp;
2630 IF object_code_csr%NOTFOUND THEN
2631 CLOSE object_code_csr;
2632 OKC_API.SET_MESSAGE(
2633 g_app_name,
2634 g_unexpected_error,
2635 g_sqlcode_token,
2636 SQLCODE,
2637 g_sqlerrm_token,
2638 'Wrong vendor contact role assigned'
2639 );
2640
2641 l_return_status := okc_api.g_ret_sts_error;
2642 RAISE G_EXCEPTION_HALT_VALIDATION;
2643 END IF;
2644 CLOSE object_code_csr;
2645
2646
2647 l_ctcv_tbl_in (k).ID := okc_p_util.raw_to_number (SYS_GUID ());
2648 l_ctcv_tbl_in (k).object_version_number := 1;
2649
2650 l_ctcv_tbl_in (k).cpl_id := l_cpl_tbl_in (j).ID;
2651
2652 l_ctcv_tbl_in (k).cro_code := fnd_profile.VALUE('OKS_VENDOR_CONTACT_ROLE' );
2653 l_ctcv_tbl_in (k).dnz_chr_id := hdr_id (i);
2654 l_ctcv_tbl_in (k).contact_sequence := 1;
2655 l_ctcv_tbl_in (k).object1_id1 := l_salesrep_id;
2656 l_ctcv_tbl_in (k).object1_id2 := '#';
2657 l_ctcv_tbl_in (k).jtot_object1_code := 'OKX_SALEPERS' ;
2658 l_ctcv_tbl_in (k).primary_yn := 'N';
2659 l_ctcv_tbl_in (k).resource_class := '';
2660 l_ctcv_tbl_in (k).sales_group_id := l_salesgroup_id;
2661
2662 l_ctcv_tbl_in (k).attribute_category := '';
2663 l_ctcv_tbl_in (k).attribute1 := '';
2664 l_ctcv_tbl_in (k).attribute2 := '';
2665 l_ctcv_tbl_in (k).attribute3 := '';
2666 l_ctcv_tbl_in (k).attribute4 := '';
2667 l_ctcv_tbl_in (k).attribute5 := '';
2668 l_ctcv_tbl_in (k).attribute6 := '';
2669 l_ctcv_tbl_in (k).attribute7 := '';
2670 l_ctcv_tbl_in (k).attribute8 := '';
2671 l_ctcv_tbl_in (k).attribute9 := '';
2672 l_ctcv_tbl_in (k).attribute10 := '';
2673 l_ctcv_tbl_in (k).attribute11 := '';
2674 l_ctcv_tbl_in (k).attribute12 := '';
2675 l_ctcv_tbl_in (k).attribute13 := '';
2676 l_ctcv_tbl_in (k).attribute14 := '';
2677 l_ctcv_tbl_in (k).attribute15 := '';
2678 l_ctcv_tbl_in (k).created_by := fnd_global.user_id;
2679 l_ctcv_tbl_in (k).creation_date := SYSDATE;
2680 l_ctcv_tbl_in (k).last_updated_by := fnd_global.user_id;
2681 l_ctcv_tbl_in (k).last_update_date := SYSDATE;
2682 l_ctcv_tbl_in (k).last_update_login := fnd_global.login_id;
2683 l_ctcv_tbl_in (k).start_date := hdr_start_date (i);
2684 l_ctcv_tbl_in (k).end_date := hdr_end_date (i);
2685
2686
2687 K := K + 1;
2688
2689 End If;
2690 End If;
2691 End If;
2692
2693 l_cpl_tbl_in (j + 1).ID := okc_p_util.raw_to_number (SYS_GUID ());
2694 l_cpl_tbl_in (j + 1).object_version_number := 1;
2695 l_cpl_tbl_in (j + 1).sfwt_flag := 'N';
2696 l_cpl_tbl_in (j + 1).cpl_id := '';
2697 l_cpl_tbl_in (j + 1).chr_id := hdr_id (i);
2698 l_cpl_tbl_in (j + 1).cle_id := '';
2699 IF hdr_scs_code(i) IN ('WARRANTY' , 'SERVICE' )
2700 THEN
2701 l_cpl_tbl_in (j + 1).rle_code := 'CUSTOMER';
2702 ELSE
2703 l_cpl_tbl_in (j + 1).rle_code := 'SUBSCRIBER';
2704 END IF;
2705 l_cpl_tbl_in (j + 1).dnz_chr_id := hdr_id (i);
2706 l_cpl_tbl_in (j + 1).object1_id1 := p_batch_rules.new_party_id;
2707 l_cpl_tbl_in (j + 1).object1_id2 := '#';
2708 l_cpl_tbl_in (j + 1).jtot_object1_code := 'OKX_PARTY';
2709 l_cpl_tbl_in (j + 1).cognomen := '';
2710 l_cpl_tbl_in (j + 1).code := '';
2711 l_cpl_tbl_in (j + 1).facility := '';
2712 l_cpl_tbl_in (j + 1).minority_group_lookup_code := '';
2713 l_cpl_tbl_in (j + 1).small_business_flag := '';
2714 l_cpl_tbl_in (j + 1).women_owned_flag := '';
2715 l_cpl_tbl_in (j + 1).alias := '';
2716 l_cpl_tbl_in (j + 1).primary_yn := '';
2717 l_cpl_tbl_in (j + 1).cust_acct_id := '';
2718 l_cpl_tbl_in (j + 1).bill_to_site_use_id := '';
2719 l_cpl_tbl_in (j + 1).attribute_category := '';
2720 l_cpl_tbl_in (j + 1).attribute1 := '';
2721 l_cpl_tbl_in (j + 1).attribute2 := '';
2722 l_cpl_tbl_in (j + 1).attribute3 := '';
2723 l_cpl_tbl_in (j + 1).attribute4 := '';
2724 l_cpl_tbl_in (j + 1).attribute5 := '';
2725 l_cpl_tbl_in (j + 1).attribute6 := '';
2726 l_cpl_tbl_in (j + 1).attribute7 := '';
2727 l_cpl_tbl_in (j + 1).attribute8 := '';
2728 l_cpl_tbl_in (j + 1).attribute9 := '';
2729 l_cpl_tbl_in (j + 1).attribute10 := '';
2730 l_cpl_tbl_in (j + 1).attribute11 := '';
2731 l_cpl_tbl_in (j + 1).attribute12 := '';
2732 l_cpl_tbl_in (j + 1).attribute13 := '';
2733 l_cpl_tbl_in (j + 1).attribute14 := '';
2734 l_cpl_tbl_in (j + 1).attribute15 := '';
2735 l_cpl_tbl_in (j + 1).created_by := fnd_global.user_id;
2736 l_cpl_tbl_in (j + 1).creation_date := SYSDATE;
2737 l_cpl_tbl_in (j + 1).last_updated_by := fnd_global.user_id;
2738 l_cpl_tbl_in (j + 1).last_update_date := SYSDATE;
2739 l_cpl_tbl_in (j + 1).last_update_login := fnd_global.login_id;
2740
2741 IF p_batch_rules.bill_contact_id IS NOT NULL
2742 THEN
2743 IF check_acct_not_related(p_batch_rules.new_party_id,
2744 p_batch_rules.bill_account_id,
2745 hdr_authoring_org_id (i))
2746 THEN
2747 get_party_id (p_cust_id => p_batch_rules.bill_account_id,
2748 x_party_id => l_third_party_id
2749 );
2750 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2751 THEN
2752 fnd_log.STRING (fnd_log.level_event,
2753 g_module_current || 'oks_mass_update.create_contract_header',
2754 'Billing account not related, create billing contact.'
2755 || l_third_party_id);
2756 END IF;
2757
2758 l_cpl_tbl_in (j + 2).ID :=
2759 okc_p_util.raw_to_number (SYS_GUID ());
2760 l_cpl_tbl_in (j + 2).object_version_number := 1;
2761 l_cpl_tbl_in (j + 2).sfwt_flag := 'N';
2762 l_cpl_tbl_in (j + 2).cpl_id := '';
2763 l_cpl_tbl_in (j + 2).chr_id := hdr_id (i);
2764 l_cpl_tbl_in (j + 2).cle_id := '';
2765 l_cpl_tbl_in (j + 2).rle_code := setup_attr.rle_code ; --'THIRD_PARTY';
2766 l_cpl_tbl_in (j + 2).dnz_chr_id := hdr_id (i);
2767 l_cpl_tbl_in (j + 2).object1_id1 := l_third_party_id;
2768 l_cpl_tbl_in (j + 2).object1_id2 := '#';
2769 l_cpl_tbl_in (j + 2).jtot_object1_code := 'OKX_PARTY';
2770 l_cpl_tbl_in (j + 2).cognomen := '';
2771 l_cpl_tbl_in (j + 2).code := '';
2772 l_cpl_tbl_in (j + 2).facility := '';
2773 l_cpl_tbl_in (j + 2).minority_group_lookup_code := '';
2774 l_cpl_tbl_in (j + 2).small_business_flag := '';
2775 l_cpl_tbl_in (j + 2).women_owned_flag := '';
2776 l_cpl_tbl_in (j + 2).alias := '';
2777 l_cpl_tbl_in (j + 2).primary_yn := '';
2778 l_cpl_tbl_in (j + 2).cust_acct_id := '';
2779 l_cpl_tbl_in (j + 2).bill_to_site_use_id := '';
2780 l_cpl_tbl_in (j + 2).attribute_category := '';
2781 l_cpl_tbl_in (j + 2).attribute1 := '';
2782 l_cpl_tbl_in (j + 2).attribute2 := '';
2783 l_cpl_tbl_in (j + 2).attribute3 := '';
2784 l_cpl_tbl_in (j + 2).attribute4 := '';
2785 l_cpl_tbl_in (j + 2).attribute5 := '';
2786 l_cpl_tbl_in (j + 2).attribute6 := '';
2787 l_cpl_tbl_in (j + 2).attribute7 := '';
2788 l_cpl_tbl_in (j + 2).attribute8 := '';
2789 l_cpl_tbl_in (j + 2).attribute9 := '';
2790 l_cpl_tbl_in (j + 2).attribute10 := '';
2791 l_cpl_tbl_in (j + 2).attribute11 := '';
2792 l_cpl_tbl_in (j + 2).attribute12 := '';
2793 l_cpl_tbl_in (j + 2).attribute13 := '';
2794 l_cpl_tbl_in (j + 2).attribute14 := '';
2795 l_cpl_tbl_in (j + 2).attribute15 := '';
2796 l_cpl_tbl_in (j + 2).created_by := fnd_global.user_id;
2797 l_cpl_tbl_in (j + 2).creation_date := SYSDATE;
2798 l_cpl_tbl_in (j + 2).last_updated_by := fnd_global.user_id;
2799 l_cpl_tbl_in (j + 2).last_update_date := SYSDATE;
2800 l_cpl_tbl_in (j + 2).last_update_login := fnd_global.login_id;
2801
2802
2803 l_ctcv_tbl_in (k).ID := okc_p_util.raw_to_number (SYS_GUID ());
2804 l_ctcv_tbl_in (k).object_version_number := 1;
2805 l_ctcv_tbl_in (k).cpl_id := l_cpl_tbl_in (j + 2).ID;
2806 l_ctcv_tbl_in (k).cro_code := 'BILLING';
2807 l_ctcv_tbl_in (k).dnz_chr_id := hdr_id (i);
2808 l_ctcv_tbl_in (k).contact_sequence := 1;
2809 l_ctcv_tbl_in (k).object1_id1 := p_batch_rules.bill_contact_id;
2810 l_ctcv_tbl_in (k).object1_id2 := '#';
2811 l_ctcv_tbl_in (k).jtot_object1_code := 'OKX_PCONTACT';
2812 l_ctcv_tbl_in (k).primary_yn := 'N';
2813 l_ctcv_tbl_in (k).resource_class := '';
2814 l_ctcv_tbl_in (k).sales_group_id := NULL;
2815 l_ctcv_tbl_in (k).attribute_category := '';
2816 l_ctcv_tbl_in (k).attribute1 := '';
2817 l_ctcv_tbl_in (k).attribute2 := '';
2818 l_ctcv_tbl_in (k).attribute3 := '';
2819 l_ctcv_tbl_in (k).attribute4 := '';
2820 l_ctcv_tbl_in (k).attribute5 := '';
2821 l_ctcv_tbl_in (k).attribute6 := '';
2822 l_ctcv_tbl_in (k).attribute7 := '';
2823 l_ctcv_tbl_in (k).attribute8 := '';
2824 l_ctcv_tbl_in (k).attribute9 := '';
2825 l_ctcv_tbl_in (k).attribute10 := '';
2826 l_ctcv_tbl_in (k).attribute11 := '';
2827 l_ctcv_tbl_in (k).attribute12 := '';
2828 l_ctcv_tbl_in (k).attribute13 := '';
2829 l_ctcv_tbl_in (k).attribute14 := '';
2830 l_ctcv_tbl_in (k).attribute15 := '';
2831 l_ctcv_tbl_in (k).created_by := fnd_global.user_id;
2832 l_ctcv_tbl_in (k).creation_date := SYSDATE;
2833 l_ctcv_tbl_in (k).last_updated_by := fnd_global.user_id;
2834 l_ctcv_tbl_in (k).last_update_date := SYSDATE;
2835 l_ctcv_tbl_in (k).last_update_login := fnd_global.login_id;
2836 l_ctcv_tbl_in (k).start_date := hdr_start_date (i);
2837 l_ctcv_tbl_in (k).end_date := hdr_end_date (i);
2838 j := j + 3;
2839 ELSE
2840 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2841 THEN
2842 fnd_log.STRING (fnd_log.level_event,
2843 g_module_current || 'oks_mass_update.create_contract_header',
2844 'Billing account are related, create billing contact.');
2845 END IF;
2846
2847 l_ctcv_tbl_in (k).ID := okc_p_util.raw_to_number (SYS_GUID ());
2848 l_ctcv_tbl_in (k).object_version_number := 1;
2849 l_ctcv_tbl_in (k).cpl_id := l_cpl_tbl_in (j + 1).ID;
2850 l_ctcv_tbl_in (k).cro_code := 'BILLING';
2851 l_ctcv_tbl_in (k).dnz_chr_id := hdr_id (i);
2852 l_ctcv_tbl_in (k).contact_sequence := 1;
2853 l_ctcv_tbl_in (k).object1_id1 := p_batch_rules.bill_contact_id;
2854 l_ctcv_tbl_in (k).object1_id2 := '#';
2855 l_ctcv_tbl_in (k).jtot_object1_code := 'OKX_PCONTACT';
2856 l_ctcv_tbl_in (k).primary_yn := 'N';
2857 l_ctcv_tbl_in (k).resource_class := '';
2858 l_ctcv_tbl_in (k).sales_group_id := NULL;
2859 l_ctcv_tbl_in (k).attribute_category := '';
2860 l_ctcv_tbl_in (k).attribute1 := '';
2861 l_ctcv_tbl_in (k).attribute2 := '';
2862 l_ctcv_tbl_in (k).attribute3 := '';
2863 l_ctcv_tbl_in (k).attribute4 := '';
2864 l_ctcv_tbl_in (k).attribute5 := '';
2865 l_ctcv_tbl_in (k).attribute6 := '';
2866 l_ctcv_tbl_in (k).attribute7 := '';
2867 l_ctcv_tbl_in (k).attribute8 := '';
2868 l_ctcv_tbl_in (k).attribute9 := '';
2869 l_ctcv_tbl_in (k).attribute10 := '';
2870 l_ctcv_tbl_in (k).attribute11 := '';
2871 l_ctcv_tbl_in (k).attribute12 := '';
2872 l_ctcv_tbl_in (k).attribute13 := '';
2873 l_ctcv_tbl_in (k).attribute14 := '';
2874 l_ctcv_tbl_in (k).attribute15 := '';
2875 l_ctcv_tbl_in (k).created_by := fnd_global.user_id;
2876 l_ctcv_tbl_in (k).creation_date := SYSDATE;
2877 l_ctcv_tbl_in (k).last_updated_by := fnd_global.user_id;
2878 l_ctcv_tbl_in (k).last_update_date := SYSDATE;
2879 l_ctcv_tbl_in (k).last_update_login := fnd_global.login_id;
2880 l_ctcv_tbl_in (k).start_date := hdr_start_date (i);
2881 l_ctcv_tbl_in (k).end_date := hdr_end_date (i);
2882 K := K + 1;
2883 j := j + 2;
2884 END IF;
2885 ELSE
2886 j := j + 2;
2887 END IF;
2888
2889
2890
2891 END LOOP;
2892
2893 -- Insert into okc tables
2894 IF l_chrv_tbl_in.COUNT > 0
2895 THEN
2896 fnd_file.put_line(fnd_file.log,' insert_row_upg');
2897 okc_chr_pvt.insert_row_upg (x_return_status => l_return_status,
2898 p_chrv_tbl => l_chrv_tbl_in
2899 );
2900
2901 fnd_file.put_line(fnd_file.log,'(OKS) -> Call to okc_chr_pvt.insert_row_upg , status = ( '
2902 || l_return_status || ' )');
2903
2904 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2905 THEN
2906 fnd_log.STRING (fnd_log.level_event,
2907 g_module_current || 'oks_mass_update.create_contract_header',
2908 'okc_chr_pvt.insert_row_upg, status = ('
2909 || l_return_status || ')');
2910 END IF;
2911
2912 IF l_return_status <> okc_api.g_ret_sts_success
2913 THEN
2914
2915 RAISE g_exception_halt_validation;
2916 END IF;
2917 END IF;
2918
2919 -- Insert into oks tables
2920 IF l_khrv_tbl_in.COUNT > 0
2921 THEN
2922
2923 FORALL i IN hdr_oks_id.FIRST..hdr_oks_id.LAST
2924 INSERT INTO OKS_K_HEADERS_B(
2925 id,
2926 chr_id,
2927 acct_rule_id,
2928 tax_code,
2929 billing_profile_id,
2930 inv_trx_type,
2931 inv_print_profile,
2932 ar_interface_yn,
2933 hold_billing,
2934 summary_trx_yn,
2935 object_version_number,
2936 period_start,
2937 period_type,
2938 created_by,
2939 creation_date,
2940 last_updated_by,
2941 last_update_date,
2942 last_update_login,
2943 renewal_status,
2944 price_uom)
2945 VALUES (
2946 hdr_oks_id (i),
2947 hdr_id (i),
2948 Accting_rule(i),
2949 '',
2950 Billing_profile(i),
2951 hdr_inv_trx (i),
2952 'Y',
2953 ar_interface_yn(i),
2954 hdr_hold_bill (i),
2955 hdr_sum_trx (i),
2956 1,
2957 hdr_period_start(i),
2958 hdr_period_type(i),
2959 fnd_global.user_id,
2960 sysdate,
2961 fnd_global.user_id,
2962 sysdate,
2963 fnd_global.login_id,
2964 renewal_status(i),
2965 price_uom(i));
2966
2967 fnd_file.put_line(fnd_file.log,'(OKS) -> Created oks header table records sucessfully');
2968
2969 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2970 THEN
2971 fnd_log.STRING (fnd_log.level_event,
2972 g_module_current || 'oks_mass_update.create_contract_header',
2973 'oks_chr_pvt.insert_row_upg, status = ('
2974 || l_return_status || ')');
2975 END IF;
2976 END IF;
2977
2978 -- create party roles
2979 IF l_cpl_tbl_in.COUNT > 0
2980 THEN
2981 okc_cpl_pvt.insert_row_upg (x_return_status => l_return_status,
2982 p_cplv_tbl => l_cpl_tbl_in
2983 );
2984
2985 fnd_file.put_line(fnd_file.log,'(OKS) -> Call to okc_cpl_pvt.insert_row_upg , status = ( '
2986 || l_return_status || ' )');
2987
2988 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2989 THEN
2990 fnd_log.STRING (fnd_log.level_event,
2991 g_module_current || 'oks_mass_update.create_contract_header',
2992 'okc_cpl_pvt.insert_row_upg, status = ('
2993 || l_return_status || ')');
2994 END IF;
2995 IF l_return_status <> okc_api.g_ret_sts_success
2996 THEN
2997
2998 RAISE g_exception_halt_validation;
2999 END IF;
3000 END IF;
3001
3002 -- create party contacts
3003 IF l_cpl_tbl_in.COUNT > 0
3004 THEN
3005 okc_ctc_pvt.insert_row_upg (x_return_status => x_return_status,
3006 p_ctcv_tbl => l_ctcv_tbl_in
3007 );
3008
3009 fnd_file.put_line(fnd_file.log,'(OKS) -> Call to okc_ctc_pvt.insert_row_upg , status = ( '
3010 || l_return_status || ' )');
3011
3012 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3013 THEN
3014 fnd_log.STRING (fnd_log.level_event,
3015 g_module_current || 'oks_mass_update.create_contract_header',
3016 'okc_ctc_pvt.insert_row_upg, status = ('
3017 || l_return_status || ')');
3018 END IF;
3019 IF l_return_status <> okc_api.g_ret_sts_success
3020 THEN
3021
3022 RAISE g_exception_halt_validation;
3023 END IF;
3024 END IF;
3025 /*
3026 -- insert goverance
3027 IF l_gvev_tbl_in.COUNT > 0
3028 THEN
3029 okc_gve_pvt.insert_row_upg (x_return_status => x_return_status,
3030 p_gvev_tbl => l_gvev_tbl_in
3031 );
3032
3033 fnd_file.put_line(fnd_file.log,'(OKS) -> Call to okc_gve_pvt.insert_row_upg , status = ( '
3034 || l_return_status || ' )');
3035
3036 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3037 THEN
3038 fnd_log.STRING (fnd_log.level_event,
3039 g_module_current || 'oks_mass_update.create_contract_header',
3040 'okc_gve_pvt.insert_row_upg, status = ('
3041 || l_return_status || ')');
3042 END IF;
3043 IF x_return_status <> okc_api.g_ret_sts_success
3044 THEN
3045 RAISE g_exception_halt_validation;
3046 END IF;
3047 END IF;
3048 */
3049 -- Insert approval workflow
3050 IF l_cpsv_tbl_in.COUNT > 0
3051 THEN
3052 okc_cps_pvt.insert_row_upg (x_return_status => l_return_status,
3053 p_cpsv_tbl => l_cpsv_tbl_in
3054 );
3055
3056 fnd_file.put_line(fnd_file.log,'(OKS) -> Call to okc_cps_pvt.insert_row_upg , status = ( '
3057 || l_return_status || ' )');
3058
3059 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3060 THEN
3061 fnd_log.STRING (fnd_log.level_event,
3062 g_module_current || 'oks_mass_update.create_contract_header',
3063 'okc_cps_pvt.insert_row_upg, status = ('
3064 || l_return_status || ')');
3065 END IF;
3066 IF l_return_status <> okc_api.g_ret_sts_success
3067 THEN
3068 RAISE g_exception_halt_validation;
3069 END IF;
3070 END IF;
3071
3072 -- insert contract group
3073 IF l_cgcv_tbl_in.COUNT > 0
3074 THEN
3075 okc_cgc_pvt.insert_row_upg (x_return_status => l_return_status,
3076 p_cgcv_tbl => l_cgcv_tbl_in
3077 );
3078
3079 fnd_file.put_line(fnd_file.log,'(OKS) -> Call to okc_cgc_pvt.insert_row_upg , status = ( '
3080 || l_return_status || ' )');
3081
3082 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3083 THEN
3084 fnd_log.STRING (fnd_log.level_event,
3085 g_module_current || 'oks_mass_update.create_contract_header',
3086 'okc_cgc_pvt.insert_row_upg, status = ('
3087 || l_return_status || ')');
3088 END IF;
3089 IF l_return_status <> okc_api.g_ret_sts_success
3090 THEN
3091
3092 RAISE g_exception_halt_validation;
3093 END IF;
3094 END IF;
3095
3096 -- insert access
3097 OPEN get_hdr_access_csr;
3098
3099 FETCH get_hdr_access_csr
3100 BULK COLLECT INTO hdr_id,
3101 groupid,
3102 resource_id,
3103 access_level;
3104
3105 CLOSE get_hdr_access_csr;
3106
3107 IF hdr_id.COUNT > 0
3108 THEN
3109 FORALL i IN 1 .. hdr_id.COUNT
3110 INSERT INTO okc_k_accesses
3111 (ID,
3112 chr_id,
3113 GROUP_ID,
3114 resource_id,
3115 access_level,
3116 object_version_number,
3117 created_by,
3118 creation_date,
3119 last_updated_by,
3120 last_update_date,
3121 last_update_login
3122 )
3123 VALUES (okc_p_util.raw_to_number (SYS_GUID ()),
3124 hdr_id (i),
3125 groupid (i),
3126 resource_id (i),
3127 access_level (i),
3128 1,
3129 fnd_global.user_id,
3130 SYSDATE,
3131 fnd_global.user_id,
3132 SYSDATE,
3133 fnd_global.user_id
3134 );
3135 fnd_file.put_line(fnd_file.log,'(OKS) -> Created access sucessfully');
3136
3137 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3138 THEN
3139 fnd_log.STRING (fnd_log.level_event,
3140 g_module_current || 'oks_mass_update.create_contract_header',
3141 'AFter creating the access for each contract');
3142 END IF;
3143 END IF;
3144
3145 -- insert header sales credits
3146 OPEN get_hdr_salescredits_csr;
3147
3148 FETCH get_hdr_salescredits_csr
3149 BULK COLLECT INTO hdr_id,
3150 ctc_id,
3151 sales_credit_type_id1,
3152 PERCENT,
3153 sales_group_id;
3154
3155 CLOSE get_hdr_salescredits_csr;
3156
3157 IF hdr_id.COUNT > 0
3158 THEN
3159 FORALL i IN 1 .. hdr_id.COUNT
3160 INSERT INTO oks_k_sales_credits
3161 (ID,
3162 PERCENT,
3163 sales_group_id,
3164 chr_id,
3165 cle_id,
3166 ctc_id,
3167 sales_credit_type_id1,
3168 sales_credit_type_id2,
3169 object_version_number,
3170 created_by,
3171 creation_date,
3172 last_updated_by,
3173 last_update_date
3174 )
3175 VALUES (okc_p_util.raw_to_number (SYS_GUID ()),
3176 PERCENT (i),
3177 sales_group_id (i),
3178 hdr_id (i),
3179 NULL,
3180 ctc_id (i),
3181 sales_credit_type_id1 (i),
3182 '#',
3183 1,
3184 fnd_global.user_id,
3185 SYSDATE,
3186 fnd_global.user_id,
3187 SYSDATE
3188 );
3189 fnd_file.put_line(fnd_file.log,'(OKS) -> Created sales credits sucessfully');
3190
3191 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3192 THEN
3193 fnd_log.STRING (fnd_log.level_event,
3194 g_module_current || 'oks_mass_update.create_contract_header',
3195 'AFter inserting sales credits for header');
3196 END IF;
3197
3198 END IF;
3199 x_return_status := l_return_status;
3200 EXCEPTION
3201 WHEN g_exception_halt_validation
3202 THEN
3203 x_return_status := l_return_status;
3204 fnd_file.put_line(fnd_file.log,' Error while creating the contract header : '
3205 || SQLCODE||':'|| SQLERRM );
3206 NULL;
3207 WHEN OTHERS
3208 THEN
3209 x_return_status := okc_api.g_ret_sts_unexp_error;
3210 fnd_file.put_line(fnd_file.log,' Error while creating the contract header : '
3211 || SQLCODE||':'|| SQLERRM );
3212 okc_api.set_message (g_app_name,
3213 g_unexpected_error,
3214 g_sqlcode_token,
3215 SQLCODE,
3216 g_sqlerrm_token,
3217 SQLERRM
3218 );
3219 END create_contract_header;
3220
3221 -------* Procedure create_contract_line *---------
3222 -- Procedure to create the contract service line
3223 -- which will create records in okc and oks line tables
3224 -- will copy the sales credits
3225 -- instantite/associate the coverage
3226 -- instantiate the counters
3227 -- create the events
3228 ------------------------------------------------------
3229
3230 PROCEDURE create_contract_line (
3231 p_api_version IN NUMBER,
3232 p_batch_rules IN batch_rules_rec_type,
3233 p_transfer_date IN DATE,
3234 x_return_status OUT NOCOPY VARCHAR2,
3235 x_msg_count OUT NOCOPY NUMBER,
3236 x_msg_Data OUT NOCOPY VARCHAR2
3237
3238 )
3239 IS
3240 CURSOR get_srv_details_csr
3241 IS
3242 SELECT Lines.*,
3243 CASE
3244 WHEN (lines.contract_id <>
3245 LAG (lines.contract_id) OVER (ORDER BY lines.contract_id,lines.line_no)
3246 or LAG (lines.contract_id) OVER (ORDER BY lines.contract_id,lines.line_no) Is null
3247 )
3248 THEN get_Topline_number ('NEW')
3249 ELSE get_Topline_number ('OLD')
3250 END line_number
3251
3252 from (Select DISTINCT (temp.new_serviceline_id) srvline_id,
3253 itm.object1_id1 srv_itm,
3254 itm.object1_id2 srv_invorg,
3255 itm.jtot_object1_code srv_jtot_code,
3256 kl.price_list_id srv_pl,
3257 kl.currency_code srv_curr,
3258 temp.new_contract_id contract_id,
3259 itm.number_of_items no_items,
3260 itm.uom_code uom_code,
3261 ks.tax_code tax_code,
3262 kl.lse_id lse_id,
3263 kl.line_renewal_type_code renewal_type,
3264 kl.price_unit unit_price,
3265 (SELECT MIN (new_start_date)
3266 FROM oks_instance_k_dtls_temp temp1
3267 WHERE temp1.topline_id = temp.topline_id) new_sdt,
3268 (SELECT MAX (new_end_date)
3269 FROM oks_instance_k_dtls_temp temp1
3270 WHERE temp1.topline_id = temp.topline_id) new_edt,
3271 Ks.invoice_text,
3272 ks.coverage_id,
3273 ks.standard_cov_yn,
3274 st.ste_code line_sts,
3275 (SELECT okc_p_util.raw_to_number (SYS_GUID ())
3276 FROM okc_k_lines_b WHERE id = topline_id) oks_id,
3277 topline_id,
3278 Ks.price_uom,
3279 kh.authoring_org_id,
3280 Kl.Line_Number Line_no
3281
3282
3283 FROM oks_instance_k_dtls_temp temp,
3284 okc_k_lines_b kl,
3285 okc_k_items itm,
3286 oks_k_lines_v ks,
3287 okc_statuses_b st,
3288 okc_k_headers_all_b kh
3289 WHERE temp.topline_id = kl.ID
3290 AND temp.new_serviceline_id IS NOT NULL
3291 AND itm.cle_id = kl.ID
3292 AND itm.jtot_object1_code IN ('OKX_WARRANTY', 'OKX_SERVICE')
3293 AND ks.cle_id(+) = kl.ID
3294 AND st.code = kl.sts_code
3295 And Kh.id = kl.dnz_chr_id) lines
3296 ;
3297
3298 CURSOR get_line_salescredits_csr
3299 IS
3300 SELECT DISTINCT (temp.new_serviceline_id),
3301 temp.new_contract_id,
3302 sc.ctc_id,
3303 sc.sales_credit_type_id1,
3304 sc.PERCENT,
3305 sc.sales_group_id
3306 FROM oks_k_sales_credits_v sc,
3307 oks_instance_k_dtls_temp temp
3308 WHERE sc.cle_id = temp.topline_id
3309 AND temp.new_serviceline_id IS NOT NULL;
3310
3311
3312
3313 -- plsql collections
3314 srvline_id okc_datatypes.numbertabtyp;
3315 oldline_id okc_datatypes.numbertabtyp;
3316 srv_itm okc_datatypes.var40tabtyp;
3317 srv_invorg okc_datatypes.var200tabtyp;
3318 srv_jtot_code okc_datatypes.var30tabtyp;
3319 price_uom okc_datatypes.var30tabtyp;
3320 srv_pl okc_datatypes.numbertabtyp;
3321 srv_curr okc_datatypes.var15tabtyp;
3322 contract_id okc_datatypes.numbertabtyp;
3323 number_of_items okc_datatypes.numbertabtyp;
3324 uom_code okc_datatypes.var3tabtyp;
3325 lse_id okc_datatypes.numbertabtyp;
3326 new_sdt okc_datatypes.datetabtyp;
3327 new_edt okc_datatypes.datetabtyp;
3328 line_date_renewed okc_datatypes.datetabtyp;
3329 tax_code okc_datatypes.numbertabtyp;
3330 renewal_type okc_datatypes.var30tabtyp;
3331 unit_price okc_datatypes.numbertabtyp;
3332 srv_inv_text var2000tabtyp;
3333 coverage_id okc_datatypes.numbertabtyp;
3334 stand_cov_yn okc_datatypes.var3tabtyp;
3335 line_number okc_datatypes.numbertabtyp;
3336 line_no okc_datatypes.numbertabtyp;
3337
3338 oks_id okc_datatypes.numbertabtyp;
3339 line_sts okc_datatypes.var30tabtyp;
3340 l_cimv_tbl_in okc_cim_pvt.cimv_tbl_type;
3341 -- Sales credits
3342 ctc_id okc_datatypes.numbertabtyp;
3343 sales_credit_type_id1 okc_datatypes.var40tabtyp;
3344 PERCENT okc_datatypes.numbertabtyp;
3345 sales_group_id okc_datatypes.numbertabtyp;
3346 org_id okc_datatypes.numbertabtyp;
3347 -- Local Variables
3348 l_tabsize NUMBER;
3349 l_msg_count NUMBER;
3350 l_msg_data VARCHAR2 (2000);
3351 l_return_status VARCHAR2 (1) := 'S';
3352 --Coverage
3353 l_cov_rec oks_coverages_pub.ac_rec_type;
3354 l_coverage_id NUMBER;
3355 l_ctr_grpid NUMBER;
3356 l_ctr_grp_id_template NUMBER;
3357 l_ctr_grp_id_instance NUMBER;
3358 l_inp_rec okc_inst_cnd_pub.instcnd_inp_rec;
3359
3360 -- Main Begin
3361 BEGIN
3362 l_return_status := okc_api.g_ret_sts_success;
3363
3364 l_Tlineno_new := 0;
3365 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3366 THEN
3367 fnd_log.STRING (fnd_log.level_event,
3368 g_module_current || 'oks_mass_update.create_contract_Line',
3369 'Begin');
3370 END IF;
3371
3372 OPEN get_srv_details_csr;
3373
3374 FETCH get_srv_details_csr
3375 BULK COLLECT INTO srvline_id,
3376 srv_itm,
3377 srv_invorg,
3378 srv_jtot_code,
3379 srv_pl,
3380 srv_curr,
3381 contract_id,
3382 number_of_items,
3383 uom_code,
3384 tax_code,
3385 lse_id,
3386 renewal_type,
3387 unit_price,
3388 new_sdt,
3389 new_edt,
3390 srv_inv_text,
3391 coverage_id,
3392 stand_cov_yn,
3393 line_sts,
3394 oks_id,
3395 Oldline_Id,
3396 price_uom,
3397 org_id,
3398 line_no,
3399 line_number
3400
3401 ;
3402
3403 CLOSE get_srv_details_csr;
3404 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3405 THEN
3406 fnd_log.STRING (fnd_log.level_event,
3407 g_module_current || 'oks_mass_update.create_contract_Line',
3408 'Impacted lines count = ( ' || srvline_id.COUNT ||')');
3409 END IF;
3410
3411
3412 IF srvline_id.count >0
3413 THEN
3414 -- create okc lines
3415 l_tabsize := srvline_id.COUNT;
3416 FORALL i IN 1 .. l_tabsize
3417 INSERT INTO okc_k_lines_b
3418 (ID,
3419 line_number,
3420 chr_id,
3421 cle_id,
3422 dnz_chr_id,
3423 display_sequence,
3424 sts_code,
3425 lse_id,
3426 exception_yn,
3427 object_version_number,
3428 created_by,
3429 creation_date,
3430 last_updated_by,
3431 last_update_date,
3432 price_negotiated,
3433 price_level_ind,
3434 price_unit,
3435 currency_code,
3436 last_update_login,
3437 start_date,
3438 end_date,
3439 price_list_id,
3440 cust_acct_id,
3441 bill_to_site_use_id,
3442 inv_rule_id,
3443 line_renewal_type_code,
3444 ship_to_site_use_id,
3445 annualized_factor
3446 )
3447 VALUES (srvline_id (i),
3448 line_number (i),
3449 contract_id (i),
3450 NULL,
3451 contract_id (i),
3452 1,
3453 get_line_status(lse_id(i),new_sdt(i),new_edt(i),line_sts(i),p_batch_rules.contract_status),
3454 --DECODE(lse_id(i),14,get_status(new_sdt(i), new_edt(i)),
3455 -- DECODE(line_sts(i),'ENTERED',get_status_code('ENTERED'),p_batch_rules.contract_status)),
3456 lse_id (i),
3457 'N',
3458 1,
3459 fnd_global.user_id,
3460 SYSDATE,
3461 fnd_global.user_id,
3462 SYSDATE,
3463 0,
3464 'N',
3465 0,
3466 srv_curr (i),
3467 fnd_global.user_id,
3468 new_sdt (i),
3469 new_edt (i),
3470 srv_pl (i),
3471
3472
3473 validate_account_id(nvl(p_batch_rules.bill_account_id,p_batch_rules.new_customer_id),p_batch_rules.new_party_id,org_id (i)),
3474 get_address(p_batch_rules.bill_address_id,
3475 nvl(p_batch_rules.bill_account_id,p_batch_rules.new_customer_id),
3476 p_batch_rules.new_party_id,
3477 'BILL_TO',
3478 org_id (i))
3479 ,
3480 p_batch_rules.invoicing_rule,
3481 renewal_type (i),
3482 get_address(p_batch_rules.Ship_address_id,
3483 nvl(p_batch_rules.Ship_account_id,p_batch_rules.new_customer_id),
3484 p_batch_rules.new_party_id,
3485 'SHIP_TO',
3486 org_id (i)),
3487 Oks_setup_util_pub.Get_Annualized_Factor(new_sdt(i),
3488 new_edt(i),
3489 lse_id(i))
3490
3491 );
3492 fnd_file.put_line(fnd_file.log,'(OKS) -> Created okc line table records sucessfully');
3493
3494 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3495 THEN
3496 fnd_log.STRING (fnd_log.level_event,
3497 g_module_current || 'oks_mass_update.create_contract_Line',
3498 'After insert into okc_k_lines_b table ');
3499 END IF;
3500
3501
3502 -- insert into okc tl table
3503 FOR lang_i IN
3504 okc_util.g_language_code.FIRST .. okc_util.g_language_code.LAST
3505 LOOP
3506 FORALL i IN 1 .. l_tabsize
3507 INSERT INTO okc_k_lines_tl
3508 (ID,
3509 LANGUAGE,
3510 source_lang,
3511 sfwt_flag,
3512 NAME,
3513 item_description,
3514 created_by,
3515 creation_date,
3516 last_updated_by,
3517 last_update_date,
3518 last_update_login
3519 )
3520 VALUES (srvline_id (i),
3521 okc_util.g_language_code (lang_i),
3522 okc_util.get_userenv_lang,
3523 'N',
3524 null,
3525 null,
3526 fnd_global.user_id,
3527 SYSDATE,
3528 fnd_global.user_id,
3529 SYSDATE,
3530 fnd_global.user_id
3531 );
3532 END LOOP;
3533 fnd_file.put_line(fnd_file.log,'(OKS) -> Created okc tl table records sucessfully');
3534
3535 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3536 THEN
3537 fnd_log.STRING (fnd_log.level_event,
3538 g_module_current || 'oks_mass_update.create_contract_Line',
3539 'After insert into okc_k_lines_tl table ');
3540 END IF;
3541
3542 -- create item record in okc_k_items
3543 FORALL i IN 1 .. l_tabsize
3544 INSERT INTO okc_k_items
3545 (ID,
3546 cle_id,
3547 --chr_id,
3548 cle_id_for,
3549 dnz_chr_id,
3550 object1_id1,
3551 object1_id2,
3552 jtot_object1_code,
3553 uom_code,
3554 exception_yn,
3555 number_of_items,
3556 object_version_number,
3557 created_by,
3558 creation_date,
3559 last_updated_by,
3560 last_update_date,
3561 last_update_login,
3562 upg_orig_system_ref,
3563 upg_orig_system_ref_id,
3564 priced_item_yn,
3565 request_id,
3566 program_application_id,
3567 program_id,
3568 program_update_date
3569 )
3570 VALUES (okc_p_util.raw_to_number (SYS_GUID ()),
3571 srvline_id (i),
3572 --contract_id (i),
3573 NULL,
3574 contract_id (i),
3575 srv_itm (i),
3576 srv_invorg (i),
3577 srv_jtot_code (i),
3578 uom_code (i),
3579 'N',
3580 number_of_items (i),
3581 1,
3582 fnd_global.user_id,
3583 SYSDATE,
3584 fnd_global.user_id,
3585 SYSDATE,
3586 fnd_global.login_id,
3587 NULL,
3588 NULL,
3589 NULL,
3590 NULL,
3591 NULL,
3592 NULL,
3593 NULL
3594 );
3595
3596 fnd_file.put_line(fnd_file.log,'(OKS) -> Created okc item records sucessfully');
3597
3598 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3599 THEN
3600 fnd_log.STRING (fnd_log.level_event,
3601 g_module_current || 'oks_mass_update.create_contract_Line',
3602 'After insert into okc_k_items table ');
3603 END IF;
3604
3605 -- create oks line
3606 FORALL i IN 1 .. l_tabsize
3607 INSERT INTO oks_k_lines_b
3608 (ID,
3609 cle_id,
3610 dnz_chr_id,
3611 acct_rule_id,
3612 tax_code,
3613 object_version_number,
3614 created_by,
3615 creation_date,
3616 last_updated_by,
3617 last_update_date,
3618 last_update_login,
3619 coverage_id,
3620 standard_cov_yn,
3621 price_uom
3622 )
3623 VALUES (oks_id (i),
3624 srvline_id (i),
3625 contract_id (i),
3626 p_batch_rules.accounting_rule,
3627 tax_code (i),
3628 1,
3629 fnd_global.user_id,
3630 SYSDATE,
3631 fnd_global.user_id,
3632 SYSDATE,
3633 fnd_global.login_id,
3634 coverage_id (i),
3635 stand_cov_yn (i),
3636 price_uom(i)
3637 );
3638
3639 fnd_file.put_line(fnd_file.log,'(OKS) -> Created oks line table records sucessfully');
3640
3641 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3642 THEN
3643 fnd_log.STRING (fnd_log.level_event,
3644 g_module_current || 'oks_mass_update.create_contract_Line',
3645 'After insert into oks_lines table ');
3646 END IF;
3647 -- insert invoice text in oks tl table
3648 FOR lang_i IN
3649 okc_util.g_language_code.FIRST .. okc_util.g_language_code.LAST
3650 LOOP
3651 FORALL i IN 1 .. l_tabsize
3652 INSERT INTO oks_k_lines_tl
3653 (ID,
3654 LANGUAGE,
3655 source_lang,
3656 sfwt_flag,
3657 invoice_text,
3658 created_by,
3659 creation_date,
3660 last_updated_by,
3661 last_update_date,
3662 last_update_login
3663 )
3664 VALUES (oks_id (i),
3665 okc_util.g_language_code (lang_i),
3666 okc_util.get_userenv_lang,
3667 'N',
3668 (substr(srv_inv_text(i),1,instr(srv_inv_text(i),':',1,1))|| new_sdt (i)||' - '|| new_edt (i)),
3669 fnd_global.user_id,
3670 SYSDATE,
3671 fnd_global.user_id,
3672 SYSDATE,
3673 fnd_global.user_id
3674 );
3675 END LOOP;
3676
3677 fnd_file.put_line(fnd_file.log,'(OKS) -> Created oks tl table records sucessfully');
3678
3679 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3680 THEN
3681 fnd_log.STRING (fnd_log.level_event,
3682 g_module_current || 'oks_mass_update.create_contract_Line',
3683 'After insert into okc_lines_tl table ');
3684 END IF;
3685
3686 OPEN get_line_salescredits_csr;
3687
3688 FETCH get_line_salescredits_csr
3689 BULK COLLECT INTO srvline_id,
3690 contract_id,
3691 ctc_id,
3692 sales_credit_type_id1,
3693 PERCENT,
3694 sales_group_id;
3695
3696 CLOSE get_line_salescredits_csr;
3697
3698 FORALL i IN 1 .. srvline_id.COUNT
3699 INSERT INTO oks_k_sales_credits
3700 (ID,
3701 PERCENT,
3702 sales_group_id,
3703 chr_id,
3704 cle_id,
3705 ctc_id,
3706 sales_credit_type_id1,
3707 sales_credit_type_id2,
3708 object_version_number,
3709 created_by,
3710 creation_date,
3711 last_updated_by,
3712 last_update_date
3713 )
3714 VALUES (okc_p_util.raw_to_number (SYS_GUID ()),
3715 PERCENT (i),
3716 sales_group_id (i),
3717 contract_id (i),
3718 srvline_id(i),
3719 ctc_id (i),
3720 sales_credit_type_id1 (i),
3721 '#',
3722 1,
3723 fnd_global.user_id,
3724 SYSDATE,
3725 fnd_global.user_id,
3726 SYSDATE
3727 );
3728 fnd_file.put_line(fnd_file.log,'(OKS) -> Created sales credits sucessfully');
3729
3730 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3731 THEN
3732 fnd_log.STRING (fnd_log.level_event,
3733 g_module_current || 'oks_mass_update.create_contract_header',
3734 'AFter inserting sales credits for header');
3735 END IF;
3736
3737 END IF;
3738 x_return_status := l_return_status;
3739 EXCEPTION
3740 WHEN g_exception_halt_validation
3741 THEN
3742 x_return_status := l_return_status;
3743 fnd_file.put_line(fnd_file.log,' Error while creating the service lines : '
3744 || SQLCODE||':'|| SQLERRM );
3745 NULL;
3746 WHEN OTHERS
3747 THEN
3748 x_return_status := okc_api.g_ret_sts_unexp_error;
3749 fnd_file.put_line(fnd_file.log,' Error while creating the service lines : '
3750 || SQLCODE||':'|| SQLERRM );
3751 okc_api.set_message (g_app_name,
3752 g_unexpected_error,
3753 g_sqlcode_token,
3754 SQLCODE,
3755 g_sqlerrm_token,
3756 SQLERRM
3757 );
3758 END create_contract_line;
3759
3760 -------* Procedure create_contract_subline *---------
3761 -- Procedure to create the contract subline
3762 -- which will create records in okc and oks lines tables
3763 -- also will create billing schedule for each associated
3764 -- service line.
3765 ------------------------------------------------------
3766
3767 PROCEDURE create_contract_subline (
3768 p_api_version IN NUMBER,
3769 p_batch_rules IN batch_rules_rec_type,
3770 p_transfer_date IN DATE,
3771 x_return_status OUT NOCOPY VARCHAR2,
3772 x_msg_count OUT NOCOPY NUMBER,
3773 x_msg_Data OUT NOCOPY VARCHAR2
3774 )
3775 IS
3776 CURSOR get_subline_details_csr
3777 IS
3778 SELECT temp.new_subline_id subline_id,
3779 temp.new_start_date subline_sdate,
3780 temp.new_end_date subline_edate,
3781 temp.new_serviceline_id srvline_id,
3782 temp.new_contract_id contract_id,
3783 temp.instance_id instance_id,
3784 itm.number_of_items number_of_items,
3785 itm.uom_code uom_code,
3786 kl.lse_id lse_id,
3787 kl.line_renewal_type_code renewal_type,
3788 kl.currency_code urr_code,
3789 kl.price_unit unit_price,
3790 DECODE(st.ste_code, 'CANCELLED',Negotiated_amount(kl.start_date,kl.end_date,ks.price_uom,kh.period_type,kh.period_start,temp.new_start_date,kl.price_negotiated, kl.currency_code ) ,
3791 (temp.amount - kl.price_negotiated)) price_negotiated,
3792 ks.tax_code tax_code,
3793 Ks.invoice_text,
3794 (CASE
3795 WHEN (temp.new_serviceline_id <>
3796 (LAG (temp.new_serviceline_id) OVER (ORDER BY temp.new_serviceline_id)
3797 )
3798 )
3799 THEN get_line_number ('NEW')
3800 ELSE get_line_number ('OLD')
3801 END
3802 ) line_number,
3803 kl1.start_date srv_sdate,
3804 kl1.end_date srv_edate,
3805 st.ste_code subline_sts,
3806 (SELECT okc_p_util.raw_to_number (SYS_GUID ())
3807 FROM okc_k_lines_b WHERE id = subline_id) oks_id,
3808 ks.price_uom,
3809 ks.toplvl_price_qty,
3810 ks.toplvl_uom_code
3811
3812 FROM oks_instance_k_dtls_temp temp,
3813 okc_k_lines_b kl,
3814 okc_k_lines_b kl1,
3815 okc_k_items itm,
3816 oks_k_lines_v ks,
3817 okc_statuses_b st,
3818 oks_k_headers_b kh
3819 WHERE temp.subline_id = kl.ID
3820 AND temp.new_subline_id IS NOT NULL
3821 AND itm.cle_id = kl.ID
3822 AND itm.jtot_object1_code IN ('OKX_CUSTPROD')
3823 AND ks.cle_id(+) = kl.ID
3824 AND kl1.ID = temp.new_serviceline_id
3825 AND st.code = kl.sts_code
3826 And kl.dnz_chr_id = Kh.chr_Id;
3827
3828 CURSOR get_billfreq_csr (
3829 p_bf_id NUMBER
3830 )
3831 IS
3832 SELECT billing_type,
3833 INTERVAL,
3834 interface_offset,
3835 invoice_offset,
3836 billing_level
3837 FROM oks_billing_profiles_b
3838 WHERE ID = p_bf_id;
3839
3840 subline_id okc_datatypes.numbertabtyp;
3841 subline_sdate okc_datatypes.datetabtyp;
3842 subline_edate okc_datatypes.datetabtyp;
3843 srvline_id okc_datatypes.numbertabtyp;
3844 contract_id okc_datatypes.numbertabtyp;
3845 instance_id okc_datatypes.numbertabtyp;
3846 number_of_items okc_datatypes.numbertabtyp;
3847 uom_code okc_datatypes.var3tabtyp;
3848 lse_id okc_datatypes.numbertabtyp;
3849 renewal_type okc_datatypes.var30tabtyp;
3850 price_uom okc_datatypes.var30tabtyp;
3851 toplvl_uom okc_datatypes.var30tabtyp;
3852
3853 toplvl_price okc_datatypes.numbertabtyp;
3854
3855 line_date_renewed okc_datatypes.datetabtyp;
3856 subline_curr okc_datatypes.var15tabtyp;
3857 unit_price okc_datatypes.numbertabtyp;
3858 tax_code okc_datatypes.numbertabtyp;
3859 prod_name okc_datatypes.var450tabtyp;
3860 prod_desc okc_datatypes.var450tabtyp;
3861 line_number okc_datatypes.numbertabtyp;
3862 price_negotiated okc_datatypes.numbertabtyp;
3863 srv_sdate okc_datatypes.datetabtyp;
3864 srv_edate okc_datatypes.datetabtyp;
3865 oks_id okc_datatypes.numbertabtyp;
3866 subline_sts okc_datatypes.var30tabtyp;
3867 sl_inv_text var2000tabtyp;
3868 l_tabsize NUMBER;
3869 -- Billing variables
3870 l_billing_rec billing_rec_type;
3871 l_msg_count NUMBER;
3872 l_msg_data VARCHAR2 (2000);
3873 l_return_status VARCHAR2 (1) := 'S';
3874 BEGIN
3875 l_return_status := okc_api.g_ret_sts_success;
3876
3877 l_lineno_new := 0;
3878 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3879 THEN
3880 fnd_log.STRING (fnd_log.level_event,
3881 g_module_current || 'oks_mass_update.create_contract_subLine',
3882 'Begin');
3883 END IF;
3884
3885 x_return_status := 'S';
3886
3887 OPEN get_subline_details_csr;
3888
3889 FETCH get_subline_details_csr
3890 BULK COLLECT INTO subline_id,
3891 subline_sdate,
3892 subline_edate,
3893 srvline_id,
3894 contract_id,
3895 instance_id,
3896 number_of_items,
3897 uom_code,
3898 lse_id,
3899 renewal_type,
3900 subline_curr,
3901 unit_price,
3902 price_negotiated,
3903 tax_code,
3904 sl_inv_text,
3905 line_number,
3906 srv_sdate,
3907 srv_edate,
3908 subline_sts,
3909 oks_id,
3910 price_uom,
3911 toplvl_price,
3912 toplvl_uom
3913 ;
3914
3915 CLOSE get_subline_details_csr;
3916
3917 IF subline_id.COUNT > 0
3918 THEN
3919
3920 l_tabsize := subline_id.COUNT;
3921 FORALL i IN 1 .. l_tabsize
3922 INSERT INTO okc_k_lines_b
3923 (ID,
3924 line_number,
3925 --chr_id,
3926 cle_id,
3927 dnz_chr_id,
3928 display_sequence,
3929 sts_code,
3930 lse_id,
3931 exception_yn,
3932 object_version_number,
3933 created_by,
3934 creation_date,
3935 last_updated_by,
3936 last_update_date,
3937 price_negotiated,
3938 price_level_ind,
3939 price_unit,
3940 currency_code,
3941 last_update_login,
3942 start_date,
3943 end_date,
3944 line_renewal_type_code,
3945 annualized_factor
3946 )
3947 VALUES (subline_id (i),
3948 line_number (i),
3949 --contract_id (i),
3950 srvline_id (i),
3951 contract_id (i),
3952 2,
3953 get_line_status(lse_id(i),subline_sdate (i),subline_edate (i),subline_sts(i),p_batch_rules.contract_status),
3954 -- DECODE(lse_id(i),18,get_status(subline_sdate (i),subline_edate (i)),
3955 -- DECODE(subline_sts(i),'ENTERED',get_status_code('ENTERED'),p_batch_rules.contract_status)),
3956 lse_id (i),
3957 'N',
3958 1,
3959 fnd_global.user_id,
3960 SYSDATE,
3961 fnd_global.user_id,
3962 SYSDATE,
3963 NVL(price_negotiated (i),0), -- price_negotiated
3964 'Y',
3965 NVL(unit_price (i),0), -- unit price
3966 subline_curr (i),
3967 fnd_global.user_id,
3968 subline_sdate (i),
3969 subline_edate (i),
3970 renewal_type (i),
3971 Oks_setup_util_pub.Get_Annualized_Factor(subline_sdate (i),
3972 subline_edate (i),
3973 lse_id(i))
3974
3975
3976 );
3977 fnd_file.put_line(fnd_file.log,'(OKS) -> Created okc line table records sucessfully');
3978
3979 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3980 THEN
3981 fnd_log.STRING (fnd_log.level_event,
3982 g_module_current || 'oks_mass_update.create_contract_Line',
3983 'after insert into okc_k_lines table');
3984 END IF;
3985
3986 FOR lang_i IN
3987 okc_util.g_language_code.FIRST .. okc_util.g_language_code.LAST
3988 LOOP
3989 FORALL i IN 1 .. l_tabsize
3990 INSERT INTO okc_k_lines_tl
3991 (ID,
3992 LANGUAGE,
3993 source_lang,
3994 sfwt_flag,
3995 NAME,
3996 item_description,
3997 created_by,
3998 creation_date,
3999 last_updated_by,
4000 last_update_date,
4001 last_update_login
4002 )
4003 VALUES (subline_id (i),
4004 okc_util.g_language_code (lang_i),
4005 okc_util.get_userenv_lang,
4006 'N',
4007 null,
4008 null,
4009 fnd_global.user_id,
4010 SYSDATE,
4011 fnd_global.user_id,
4012 SYSDATE,
4013 fnd_global.user_id
4014 );
4015 END LOOP;
4016 fnd_file.put_line(fnd_file.log,'(OKS) -> Created okc line tl table records sucessfully');
4017
4018 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4019 THEN
4020 fnd_log.STRING (fnd_log.level_event,
4021 g_module_current || 'oks_mass_update.create_contract_Line',
4022 'after insert into okc_k_lines_tl table');
4023 END IF;
4024
4025 -- create item record in okc_k_items
4026 FORALL i IN 1 .. l_tabsize
4027 INSERT INTO okc_k_items
4028 (ID,
4029 cle_id,
4030 --chr_id,
4031 cle_id_for,
4032 dnz_chr_id,
4033 object1_id1,
4034 object1_id2,
4035 jtot_object1_code,
4036 uom_code,
4037 exception_yn,
4038 number_of_items,
4039 object_version_number,
4040 created_by,
4041 creation_date,
4042 last_updated_by,
4043 last_update_date,
4044 last_update_login,
4045 upg_orig_system_ref,
4046 upg_orig_system_ref_id,
4047 priced_item_yn,
4048 request_id,
4049 program_application_id,
4050 program_id,
4051 program_update_date
4052 )
4053 VALUES (okc_p_util.raw_to_number (SYS_GUID ()),
4054 subline_id (i),
4055 --contract_id (i),
4056 NULL,
4057 contract_id (i),
4058 instance_id (i),
4059 '#',
4060 'OKX_CUSTPROD',
4061 uom_code (i),
4062 'N',
4063 number_of_items (i),
4064 1,
4065 fnd_global.user_id,
4066 SYSDATE,
4067 fnd_global.user_id,
4068 SYSDATE,
4069 fnd_global.user_id,
4070 NULL,
4071 NULL,
4072 NULL,
4073 NULL,
4074 NULL,
4075 NULL,
4076 NULL
4077 );
4078 fnd_file.put_line(fnd_file.log,'(OKS) -> Created okc items table records sucessfully');
4079
4080 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4081 THEN
4082 fnd_log.STRING (fnd_log.level_event,
4083 g_module_current || 'oks_mass_update.create_contract_Line',
4084 'after insert into okc_k_items table');
4085 END IF;
4086
4087 -- create oks line
4088 FORALL i IN 1 .. l_tabsize
4089 INSERT INTO oks_k_lines_b
4090 (ID,
4091 cle_id,
4092 dnz_chr_id,
4093 tax_code,
4094 price_uom,
4095 toplvl_price_qty,
4096 toplvl_uom_code,
4097 object_version_number,
4098 created_by,
4099 creation_date,
4100 last_updated_by,
4101 last_update_date,
4102 last_update_login
4103 )
4104 VALUES (oks_id (i),
4105 subline_id (i),
4106 contract_id (i),
4107 tax_code (i),
4108 price_uom(i),
4109 toplvl_price(i),
4110 toplvl_uom(i),
4111 1,
4112 fnd_global.user_id,
4113 SYSDATE,
4114 fnd_global.user_id,
4115 SYSDATE,
4116 fnd_global.user_id
4117 );
4118 fnd_file.put_line(fnd_file.log,'(OKS) -> Created oks line table records sucessfully');
4119
4120 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4121 THEN
4122 fnd_log.STRING (fnd_log.level_event,
4123 g_module_current || 'oks_mass_update.create_contract_Line',
4124 'after insert into oks_k_lines table');
4125 END IF;
4126
4127 FOR lang_i IN
4128 okc_util.g_language_code.FIRST .. okc_util.g_language_code.LAST
4129 LOOP
4130 FORALL i IN 1 .. l_tabsize
4131 INSERT INTO oks_k_lines_tl
4132 (ID,
4133 LANGUAGE,
4134 source_lang,
4135 sfwt_flag,
4136 status_text,
4137 invoice_text,
4138 created_by,
4139 creation_date,
4140 last_updated_by,
4141 last_update_date,
4142 last_update_login
4143 )
4144 VALUES (oks_id (i),
4145 okc_util.g_language_code (lang_i),
4146 okc_util.get_userenv_lang,
4147 'N',
4148 'Subline created from transfers',
4149 (substr(sl_inv_text(i),1,instr(sl_inv_text(i),':',1,3))||subline_sdate(i)||' - '|| subline_edate(i)),
4150 fnd_global.user_id,
4151 SYSDATE,
4152 fnd_global.user_id,
4153 SYSDATE,
4154 fnd_global.user_id
4155 );
4156 END LOOP;
4157
4158 fnd_file.put_line(fnd_file.log,'(OKS) -> Created oks line tl table records sucessfully');
4159
4160 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4161 THEN
4162 fnd_log.STRING (fnd_log.level_event,
4163 g_module_current || 'oks_mass_update.create_contract_Line',
4164 'after insert into oks_k_lines_tl table');
4165 END IF;
4166
4167
4168
4169
4170 END IF;
4171 x_return_status := l_return_status;
4172 EXCEPTION
4173 WHEN g_exception_halt_validation
4174 THEN
4175 x_return_status := l_return_status;
4176 fnd_file.put_line(fnd_file.log,' Error while creating the sublines : '
4177 || SQLCODE||':'|| SQLERRM );
4178 NULL;
4179 WHEN OTHERS
4180 THEN
4181 x_return_status := okc_api.g_ret_sts_unexp_error;
4182 fnd_file.put_line(fnd_file.log,' Error while creating the sublines : '
4183 || SQLCODE||':'|| SQLERRM );
4184 okc_api.set_message (g_app_name,
4185 g_unexpected_error,
4186 g_sqlcode_token,
4187 SQLCODE,
4188 g_sqlerrm_token,
4189 SQLERRM
4190 );
4191 END create_contract_subline;
4192
4193
4194
4195 ---------* Procedure to Terminate Cancel Header *-----------
4196 -------------------------------------------------------------
4197
4198 Procedure Teminate_Cancel_Header
4199 (
4200 p_Contract_status Varchar2,
4201 contract_id Number,
4202 Hdr_start_date Date,
4203 Term_cancel_source Varchar2,
4204 Termination_reason Varchar2,
4205 Cancel_reason Varchar2,
4206 x_return_status Out NOCOPY Varchar2,
4207 x_msg_data Out NOCOPY Varchar2,
4208 x_msg_count Out NOCOPY Number
4209 ) Is
4210 --Contract Header
4211 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
4212 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
4213 l_cancel_date Date;
4214 l_term_date Date;
4215 l_return_status Varchar2(1);
4216
4217 Begin
4218 l_return_status := okc_api.g_ret_sts_success;
4219
4220 l_chrv_tbl_in.DELETE;
4221
4222 IF get_ste_code(p_Contract_Status) = 'ENTERED'
4223 THEN
4224 oks_ib_util_pvt.check_termcancel_lines
4225 (p_line_id => contract_id,
4226 p_line_type => 'TL',
4227 p_txn_type => 'C',
4228 x_date => l_cancel_date
4229 );
4230
4231 IF l_cancel_date IS NOT NULL
4232 THEN
4233
4234 fnd_file.put_line(fnd_file.log,'(OKS) -> Cancel the Header = ( '
4235 || contract_id ||' ) with date = ( ' || l_cancel_date||' )' );
4236
4237 oks_change_status_pvt.Update_header_status(
4238 x_return_status => l_return_status,
4239 x_msg_data => x_msg_data,
4240 x_msg_count => x_msg_count,
4241 p_init_msg_list => 'F',
4242 p_id => contract_id ,
4243 p_new_sts_code => get_status_code('CANCELLED'),--code fix for bug 6350309
4244 p_canc_reason_code => Cancel_reason, --batch_rules_rec.termination_reason_code,
4245 p_old_sts_code => P_Contract_Status,
4246 p_comments => null,
4247 p_term_cancel_source => Term_cancel_source,
4248 p_date_cancelled => l_cancel_date,
4249 p_validate_status => 'N');
4250
4251 fnd_file.put_line(fnd_file.log,'(OKS) -> Update contract Header status = ( '
4252 || l_return_status || ' )');
4253
4254 IF NOT l_return_status = okc_api.g_ret_sts_success
4255 THEN
4256 RAISE g_exception_halt_validation;
4257 END IF;
4258
4259 END IF;
4260 ELSE
4261 oks_ib_util_pvt.check_termcancel_lines
4262 (p_line_id => Contract_id,
4263 p_line_type => 'TL',
4264 p_txn_type => 'T',
4265 x_date => l_term_date
4266 );
4267
4268 IF l_term_date IS NOT NULL
4269 THEN
4270 l_chrv_tbl_in (1).ID := contract_id ;
4271 l_chrv_tbl_in (1).date_terminated := l_term_date;
4272 l_chrv_tbl_in (1).trn_code := termination_reason;
4273 IF trunc(hdr_start_date) <= trunc(sysdate) then
4274
4275 If trunc(l_term_date) <= trunc(sysdate) Then
4276 l_chrv_tbl_in (1).sts_code := get_status_code('TERMINATED');
4277 End If;
4278 End If;
4279
4280 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate the Header ( = '
4281 || contract_id ||' ) with date = ( ' || l_term_date || ' )');
4282
4283 okc_contract_pub.update_contract_header
4284 (p_api_version => l_api_version,
4285 p_init_msg_list => l_init_msg_list,
4286 p_restricted_update => okc_api.g_true,
4287 x_return_status => l_return_status,
4288 x_msg_count => x_msg_count,
4289 x_msg_data => x_msg_data,
4290 p_chrv_tbl => l_chrv_tbl_in,
4291 x_chrv_tbl => l_chrv_tbl_out
4292 );
4293 fnd_file.put_line(fnd_file.log,'(OKS) -> Update contract Header status = ( '
4294 || l_return_status || ' )');
4295
4296 IF NOT l_return_status = okc_api.g_ret_sts_success
4297 THEN
4298 RAISE g_exception_halt_validation;
4299 END IF;
4300
4301 END IF;
4302 END IF;
4303 x_return_status := l_return_status;
4304 EXCEPTION
4305 WHEN g_exception_halt_validation
4306 THEN
4307 x_return_status := l_return_status;
4308 fnd_file.put_line(fnd_file.log,' Error in Teminate_Cancel_Header: '
4309 || SQLCODE||':'|| SQLERRM );
4310 NULL;
4311 WHEN OTHERS
4312 THEN
4313 x_return_status := okc_api.g_ret_sts_unexp_error;
4314 fnd_file.put_line(fnd_file.log,' Error in Teminate_Cancel_Header: '
4315 || SQLCODE||':'|| SQLERRM );
4316 okc_api.set_message (g_app_name,
4317 g_unexpected_error,
4318 g_sqlcode_token,
4319 SQLCODE,
4320 g_sqlerrm_token,
4321 SQLERRM
4322 );
4323
4324 End;
4325
4326
4327
4328
4329 ---------* Procedure to Terminate Cancel Top Line *----------
4330 --------------------------------------------------------------
4331 Procedure Teminate_Cancel_Topline
4332 (
4333 line_status Varchar2,
4334 Service_line_id Number,
4335 contract_id Number,
4336 line_start_date Date,
4337 Term_cancel_source Varchar2,
4338 Termination_reason Varchar2,
4339 Cancel_reason Varchar2,
4340 x_return_status Out NOCOPY Varchar2,
4341 x_msg_data Out NOCOPY Varchar2,
4342 x_msg_count Out NOCOPY Number
4343 ) Is
4344 --Contract Line Table
4345 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
4346 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
4347 l_cancel_date Date;
4348 l_term_date Date;
4349 l_return_status Varchar2(1);
4350
4351
4352 Begin
4353
4354 l_clev_tbl_in.DELETE;
4355
4356 l_return_status := FND_API.G_RET_STS_SUCCESS;
4357
4358 IF get_ste_code(line_status)= 'ENTERED'
4359 THEN
4360 oks_ib_util_pvt.check_termcancel_lines
4361 (p_line_id => Service_line_id,
4362 p_line_type => 'SL',
4363 p_txn_type => 'C',
4364 x_date => l_cancel_date
4365 );
4366
4367 IF l_cancel_date IS NOT NULL
4368 THEN
4369
4370 fnd_file.put_line(fnd_file.log,'(OKS) -> Cancel the Line = ( '|| Service_line_id
4371 ||' ) with date = ( ' || l_cancel_date ||' )' );
4372
4373 oks_change_status_pvt.Update_line_status (
4374 x_return_status => l_return_status,
4375 x_msg_data => x_msg_data,
4376 x_msg_count => x_msg_count,
4377 p_init_msg_list => 'F',
4378 p_id => contract_id ,
4379 p_cle_id => Service_line_id ,
4380 p_new_sts_code => get_status_code('CANCELLED'),--code fix for bug 6350309
4381 p_canc_reason_code => cancel_reason,--batch_rules_rec.termination_reason_code,
4382 p_old_sts_code => line_status ,
4383 p_old_ste_code => 'ENTERED',
4384 p_new_ste_code => 'CANCELLED',
4385 p_term_cancel_source => Term_cancel_source,
4386 p_date_cancelled => l_cancel_date,
4387 p_comments => NULL,
4388 p_validate_status => 'N') ;
4389
4390 IF NOT l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4391 Raise G_EXCEPTION_HALT_VALIDATION;
4392 End if;
4393
4394 END IF;
4395 ELSE
4396 oks_ib_util_pvt.check_termcancel_lines
4397 (p_line_id => Service_line_id,
4398 p_line_type => 'SL',
4399 p_txn_type => 'T',
4400 x_date => l_term_date
4401 );
4402
4403 IF l_term_date IS NOT NULL
4404 THEN
4405 l_clev_tbl_in (1).ID := Service_line_id;
4406 l_clev_tbl_in (1).date_terminated := l_term_date;
4407 l_clev_tbl_in (1).trn_code := Termination_reason;
4408 l_clev_tbl_in (1).term_cancel_source := Term_cancel_source;
4409 If trunc(line_start_date) <= trunc(sysdate) Then
4410
4411 If trunc(l_term_date) <= trunc(sysdate) Then
4412 l_clev_tbl_in (1).sts_code := get_status_code('TERMINATED');
4413 End If;
4414
4415 End If;
4416 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate the Line = ( '
4417 || Service_line_id ||' ) with date = ( ' || l_term_date ||' )' );
4418
4419 okc_contract_pub.update_contract_line
4420 (p_api_version => l_api_version,
4421 p_init_msg_list => l_init_msg_list,
4422 p_restricted_update => okc_api.g_true,
4423 x_return_status => l_return_status,
4424 x_msg_count => x_msg_count,
4425 x_msg_data => x_msg_data,
4426 p_clev_tbl => l_clev_tbl_in,
4427 x_clev_tbl => l_clev_tbl_out
4428 );
4429 fnd_file.put_line(fnd_file.log,'(OKS) -> Update contract Line status = ( '
4430 || l_return_status ||' )' );
4431
4432 IF NOT l_return_status = okc_api.g_ret_sts_success
4433 THEN
4434
4435 RAISE g_exception_halt_validation;
4436 END IF;
4437
4438 END IF;
4439 END IF;
4440
4441 x_return_status := l_return_status;
4442 EXCEPTION
4443 WHEN g_exception_halt_validation
4444 THEN
4445 x_return_status := l_return_status;
4446 fnd_file.put_line(fnd_file.log,' Error in Teminate_Cancel_Topline : '
4447 || SQLCODE||':'|| SQLERRM );
4448 NULL;
4449 WHEN OTHERS
4450 THEN
4451 x_return_status := okc_api.g_ret_sts_unexp_error;
4452 fnd_file.put_line(fnd_file.log,' Error in Teminate_Cancel_Topline: '
4453 || SQLCODE||':'|| SQLERRM );
4454 okc_api.set_message (g_app_name,
4455 g_unexpected_error,
4456 g_sqlcode_token,
4457 SQLCODE,
4458 g_sqlerrm_token,
4459 SQLERRM
4460 );
4461
4462
4463 End;
4464
4465 PROCEDURE CREATE_COV_BILLSCHD
4466 (
4467 P_Contract_status IN Varchar2,
4468 p_billing_profile_id IN NUMBER,
4469 x_msg_count OUT NOCOPY NUMBER,
4470 x_msg_data OUT NOCOPY VARCHAR2,
4471 x_return_status OUT NOCOPY VARCHAR2,
4472 Termination_reason IN VARCHAR2,
4473 P_batch_id IN Number,
4474 P_transfer_attachments IN VARCHAR2,
4475 P_Transfer_Notes IN VARCHAR2
4476 )
4477 IS
4478
4479
4480 CURSOR get_srv_details_csr(p_contract_id Number) IS
4481 Select Distinct temp.new_serviceline_Id
4482 ,temp.topline_id
4483 ,line.start_date
4484 ,line.end_date
4485 ,ks.coverage_id
4486 ,ks.standard_cov_yn
4487 ,ki.object1_id1 srv_itm
4488 ,St.ste_code
4489 ,kl.start_date
4490 From Oks_instance_k_dtls_temp temp
4491 , okc_k_lines_b line
4492 , Okc_k_lines_b Kl
4493 , oks_k_lines_b Ks
4494 , Okc_k_items Ki
4495 , Okc_statuses_b St
4496 Where line.id = temp.new_serviceline_id
4497 And Kl.Id = temp.topline_id
4498 And Ks.cle_id = line.Id
4499 And Ki.cle_id = Line.Id
4500 And temp.new_contract_id = p_contract_id
4501 And St.code = kl.sts_code;
4502
4503 Cursor get_contract_csr Is
4504 Select distinct temp.new_contract_id
4505 , temp.contract_id
4506 , kh.authoring_org_id
4507 , kh.inv_organization_id
4508 , St.ste_code
4509 , Ost.ste_code
4510 ,Decode(kl.lse_id,18,'WARRANTY','OTHERS')
4511 ,Kh.qcl_id
4512 ,oKh.start_date
4513 ,ks.period_start
4514 From OKs_instance_k_dtls_temp temp
4515 , Okc_k_headers_all_b Kh
4516 , Okc_k_headers_all_b OKH
4517 , Okc_statuses_b St
4518 , Okc_statuses_b OSt
4519 , Okc_k_lines_b Kl
4520 , Oks_k_headers_b Ks
4521 Where Kh.Id = temp.new_contract_id
4522 And OKH.Id = temp.contract_id
4523 And Ks.chr_id = Kh.id
4524 And St.code = Kh.sts_code
4525 And OSt.code = OKH.sts_code
4526 And Kl.dnz_chr_id = temp.contract_id
4527 And Kl.Id = temp.subline_id;
4528
4529 CURSOR get_subline_details_csr(p_contract_id Number) IS
4530 Select temp.new_subline_Id
4531 From Oks_instance_k_dtls_temp temp
4532 Where temp.new_contract_id = p_contract_id;
4533 CURSOR get_csi_note_csr (
4534 p_batch_id NUMBER
4535 )
4536 IS
4537 SELECT DESCRIPTION --NAME
4538 FROM csi_mass_edit_entries_tl
4539 WHERE source_lang = USERENV ('LANG')
4540 AND entry_id = p_batch_id
4541 AND ROWNUM < 2;
4542
4543 CURSOR l_ctr_csr (
4544 p_id NUMBER
4545 )
4546 IS
4547 SELECT counter_group_id
4548 FROM cs_ctr_associations
4549 WHERE source_object_id = p_id;
4550
4551 Cursor get_day_uom_code IS
4552 select uom_code
4553 from okc_time_code_units_b
4554 where tce_code='DAY'
4555 and quantity=1;
4556
4557
4558 srvline_id okc_datatypes.numbertabtyp;
4559 subline_id okc_datatypes.numbertabtyp;
4560 coverage_id okc_datatypes.numbertabtyp;
4561 stand_cov_yn okc_datatypes.var30tabtyp;
4562 line_status okc_datatypes.var30tabtyp;
4563 Contract_status okc_datatypes.var30tabtyp;
4564 Old_Contract_status okc_datatypes.var30tabtyp;
4565 Contract_Type okc_datatypes.var30tabtyp;
4566
4567
4568 srvitm_id okc_datatypes.numbertabtyp;
4569 qcl_id okc_datatypes.numbertabtyp;
4570
4571 old_srvline_id okc_datatypes.numbertabtyp;
4572 org_id okc_datatypes.numbertabtyp;
4573 organization_id okc_datatypes.numbertabtyp;
4574 contract_id okc_datatypes.numbertabtyp;
4575 old_contract_id okc_datatypes.numbertabtyp;
4576 new_sdt okc_datatypes.datetabtyp;
4577 new_edt okc_datatypes.datetabtyp;
4578 old_hdr_sdt okc_datatypes.datetabtyp;
4579 old_line_sdt okc_datatypes.datetabtyp;
4580 period_start okc_datatypes.var30tabtyp;
4581 qa_contract_id Number;
4582
4583
4584 l_rec OKS_BILLING_PROFILES_PUB.billing_profile_rec;
4585 l_sll_tbl_out OKS_BILLING_PROFILES_PUB.stream_level_tbl;
4586 l_inp_rec okc_inst_cnd_pub.instcnd_inp_rec;
4587
4588 l_sll_tbl OKS_BILL_SCH.streamlvl_tbl;
4589 l_bil_sch_out_tbl OKS_BILL_SCH.itembillsch_tbl;
4590 l_duration Number;
4591 l_timeunit Varchar2(30);
4592 l_bill_type Varchar2(1);
4593 l_invoice_rule_id Number;
4594 l_term_date Date;
4595 l_cancel_date Date;
4596 l_coverage_id Number;
4597 l_ctr_grpid Number;
4598 l_ctr_grp_id_template Number;
4599 l_ctr_grp_id_instance Number;
4600 l_return_status Varchar2(1);
4601 G_RAIL_REC OKS_TAX_UTIL_PVT.ra_rec_type;
4602 l_tax_inclusive_yn Varchar2(1);
4603 l_tax_amount Number;
4604 l_msg_tbl okc_qa_check_pub.msg_tbl_type;
4605 l Number;
4606 l_count Number :=1;
4607 l_ste_code Varchar2(40);
4608 l_sts_code Varchar2(40);
4609 -- workflow variabled
4610 l_wf_attributes oks_wf_k_process_pvt.wf_attr_details;
4611 m Number;
4612
4613 -- Valiables for notes
4614 l_jtf_note_id NUMBER;
4615 l_jtf_note_contexts_tab jtf_notes_pub.jtf_note_contexts_tbl_type;
4616 l_note_details csi_mass_edit_entries_tl.Description%TYPE;
4617
4618 l_uom_code Varchar2(240);
4619 BEGIN
4620
4621 l_return_status := FND_API.G_RET_STS_SUCCESS;
4622 OPEN get_contract_csr;
4623 FETCH get_contract_csr
4624 BULK COLLECT INTO
4625 Contract_id,
4626 old_contract_id,
4627 org_id,
4628 organization_id,
4629 Contract_status,
4630 Old_Contract_status,
4631 Contract_type,
4632 Qcl_id,
4633 old_hdr_sdt,
4634 Period_start;
4635 Close get_contract_csr;
4636
4637 fnd_file.put_line(fnd_file.log,'in cov_bill ');
4638
4639 For K in Contract_id.first..Contract_id.last
4640 Loop
4641
4642 okc_context.set_okc_org_context(org_id(k),organization_id(k));
4643 OPEN get_srv_details_csr(contract_id(k));
4644 FETCH get_srv_details_csr
4645 BULK COLLECT INTO
4646 srvline_id,
4647 old_srvline_id,
4648 new_sdt,
4649 new_edt,
4650 coverage_id,
4651 stand_cov_yn,
4652 srvitm_id,
4653 line_status,
4654 old_line_sdt ;
4655 CLOSE get_srv_details_csr;
4656
4657 FOR Line_ctr IN srvline_id.first..srvline_id.last LOOP
4658
4659 --Create Coverage
4660
4661 IF coverage_id (Line_ctr) IS NOT NULL
4662 AND NVL (stand_cov_yn (Line_ctr), 'N') = 'N'
4663 THEN
4664 fnd_file.put_line(fnd_file.log,'oldline_id'||old_srvline_id(Line_ctr));
4665 fnd_file.put_line(fnd_file.log,'srvline_id'||srvline_id(Line_ctr));
4666 fnd_file.put_line(fnd_file.log,'contract_id'||contract_id(k));
4667 fnd_file.put_line(fnd_file.log,'org'||okc_context.get_okc_org_id);
4668 fnd_file.put_line(fnd_file.log,'organization'||okc_context.get_okc_organization_id);
4669
4670
4671 Oks_coverages_pub.create_adjusted_coverage(
4672 p_api_version => 1.0,
4673 p_init_msg_list => okc_api.g_false,
4674 x_return_status => l_return_status,
4675 x_msg_count => x_msg_count,
4676 x_msg_data => x_msg_data,
4677 p_source_contract_line_id => old_srvline_id (Line_ctr),
4678 p_target_contract_line_id => srvline_id (Line_ctr),
4679 x_Actual_coverage_id => l_coverage_id
4680 );
4681
4682 fnd_file.put_line(fnd_file.log,'(OKS) -> Create coverage for line = ( '
4683 ||Line_ctr||'-> ' ||srvline_id (Line_ctr)||' ) status = ( '||l_return_status || ' )' );
4684
4685 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4686 THEN
4687 fnd_log.STRING (fnd_log.level_event,
4688 g_module_current || 'oks_mass_update.create_contract_Line',
4689 'create coverage status = ('|| x_return_status || ')');
4690 END IF;
4691 IF NOT l_return_status = okc_api.g_ret_sts_success
4692 THEN
4693
4694 RAISE g_exception_halt_validation;
4695 Else
4696 Update Oks_k_lines_b set coverage_id = l_coverage_id
4697 Where cle_id = srvline_id (Line_ctr);
4698 END IF;
4699
4700
4701 END IF;
4702
4703 oks_coverages_pvt.create_k_coverage_ext
4704 (p_api_version => 1.0,
4705 p_init_msg_list => okc_api.g_false,
4706 p_src_line_id => old_srvline_id (Line_ctr),
4707 p_tgt_line_id => srvline_id (Line_ctr),
4708 x_return_status => l_return_status,
4709 x_msg_count => x_msg_count,
4710 x_msg_data => x_msg_data
4711 );
4712 fnd_file.put_line(fnd_file.log,'(OKS) -> Create standard coverage for line = ( '
4713 ||Line_ctr||'-> ' ||srvline_id (Line_ctr)||' ) status = ( ' ||l_return_status || ' )' );
4714
4715 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4716 THEN
4717 fnd_log.STRING (fnd_log.level_event,
4718 g_module_current || 'oks_mass_update.create_contract_Line',
4719 'create coverage extension status = ('|| x_return_status || ')');
4720 END IF;
4721
4722 IF NOT l_return_status = okc_api.g_ret_sts_success
4723 THEN
4724
4725 RAISE g_exception_halt_validation;
4726 END IF;
4727
4728
4729 l_ctr_grpid := NULL;
4730
4731 OPEN l_ctr_csr (srvitm_id (Line_ctr));
4732
4733 FETCH l_ctr_csr INTO l_ctr_grpid;
4734 CLOSE l_ctr_csr;
4735
4736 -- Instantiate Counters
4737 IF l_ctr_grpid IS NOT NULL
4738 THEN
4739
4740 cs_counters_pub.autoinstantiate_counters
4741 (p_api_version => 1.0,
4742 p_init_msg_list => okc_api.g_false,
4743 p_commit => 'F',
4744 x_return_status => l_return_status,
4745 x_msg_count => x_msg_count,
4746 x_msg_data => x_msg_data,
4747 p_source_object_id_template => srvitm_id (Line_ctr),
4748 p_source_object_id_instance => srvline_id (Line_ctr),
4749 x_ctr_grp_id_template => l_ctr_grp_id_template,
4750 x_ctr_grp_id_instance => l_ctr_grp_id_instance
4751 );
4752
4753 fnd_file.put_line(fnd_file.log,'(OKS) -> Instantiate counters for line = ( '
4754 ||Line_ctr||'-> ' ||srvline_id (Line_ctr)||', '|| srvitm_id (Line_ctr) ||' ) status = ( '||l_return_status || ' )' );
4755
4756 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4757 THEN
4758 fnd_log.STRING (fnd_log.level_event,
4759 g_module_current || 'oks_mass_update.create_contract_Line',
4760 'Instantiate counters status = ('|| l_return_status || ')');
4761 END IF;
4762
4763 END IF;
4764
4765 IF NOT l_return_status = okc_api.g_ret_sts_success
4766 THEN
4767 okc_api.set_message (g_app_name,
4768 g_required_value,
4769 g_col_name_token,
4770 'Counter Instantiate (LINE)'
4771 );
4772 RAISE g_exception_halt_validation;
4773 END IF;
4774
4775 -- Instantiate the events
4776 l_inp_rec.ins_ctr_grp_id := l_ctr_grp_id_instance;
4777 l_inp_rec.tmp_ctr_grp_id := l_ctr_grp_id_template;
4778 l_inp_rec.chr_id := contract_id (k);
4779 l_inp_rec.cle_id := srvline_id (Line_ctr);
4780 l_inp_rec.jtot_object_code := 'OKC_K_LINE';
4781 l_inp_rec.inv_item_id := srvitm_id (Line_ctr);
4782 okc_inst_cnd_pub.inst_condition
4783 (p_api_version => 1.0,
4784 p_init_msg_list => 'T',
4785 x_return_status => l_return_status,
4786 x_msg_count => x_msg_count,
4787 x_msg_data => x_msg_data,
4788 p_instcnd_inp_rec => l_inp_rec
4789 );
4790
4791 fnd_file.put_line(fnd_file.log,'(OKS) -> Instantiate events for line = ( '
4792 ||Line_ctr||'-> ' ||srvline_id (Line_ctr)||' ) status = ( '||l_return_status || ' )' );
4793
4794 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4795 THEN
4796 fnd_log.STRING (fnd_log.level_event,
4797 g_module_current || 'oks_mass_update.create_contract_Line',
4798 'create events status = ('|| l_return_status || ')');
4799 END IF;
4800
4801 IF NOT l_return_status = okc_api.g_ret_sts_success
4802 THEN
4803 okc_api.set_message (g_app_name,
4804 g_required_value,
4805 g_col_name_token,
4806 'Event Instantiate (LINE)'
4807 );
4808 RAISE g_exception_halt_validation;
4809 END IF;
4810
4811
4812
4813
4814
4815
4816
4817 --Create Billing Schedule
4818 fnd_file.put_line(fnd_file.log,'billing Profile'||p_billing_profile_id);
4819 IF p_billing_profile_id is not null Then
4820 l_rec.cle_id := srvline_id(Line_ctr);
4821 l_rec.chr_id := contract_id(k);
4822 l_rec.billing_profile_id := p_billing_profile_id;
4823 l_rec.start_date := new_sdt(Line_ctr);
4824 l_rec.end_date := new_edt(Line_ctr);
4825
4826
4827 OKS_BILLING_PROFILES_PUB.get_billing_schedule(
4828 p_api_version => 1.0,
4829 p_init_msg_list => FND_API.G_FALSE,
4830 p_billing_profile_rec => l_rec,
4831 x_sll_tbl_out => l_sll_tbl_out,
4832 x_return_status => l_return_status,
4833 x_msg_count => x_msg_count,
4834 x_msg_data => x_msg_data);
4835 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4836 THEN
4837 fnd_log.STRING (fnd_log.level_event,
4838 g_module_current || 'oks_mass_update.create_billing_schedule',
4839 'get_billing_schedule'|| x_return_status);
4840 END IF;
4841 IF NOT l_return_status = 'S'
4842 THEN
4843
4844 RAISE g_exception_halt_validation;
4845 END IF;
4846
4847 l_sll_tbl(1).cle_id := l_sll_tbl_out(1).cle_id;
4848 l_sll_tbl(1).dnz_chr_id := contract_id(k);
4849 l_sll_tbl(1).sequence_no := l_sll_tbl_out(1).seq_no;
4850 l_sll_tbl(1).start_date := l_sll_tbl_out(1).start_date;
4851 l_sll_tbl(1).level_periods := l_sll_tbl_out(1).target_quantity;
4852 l_sll_tbl(1).uom_per_period := l_sll_tbl_out(1).duration;
4853 l_sll_tbl(1).level_amount := l_sll_tbl_out(1).amount;
4854 l_sll_tbl(1).invoice_offset_days := l_sll_tbl_out(1).invoice_offset;
4855 l_sll_tbl(1).interface_offset_days := l_sll_tbl_out(1).interface_offset;
4856 l_sll_tbl(1).uom_code := l_sll_tbl_out(1).timeunit;
4857 l_bill_type := nvl(l_sll_tbl_out(1).Billing_type,'T');
4858 l_invoice_rule_id := nvl(l_sll_tbl_out(1).Invoice_rule_id,-2);
4859
4860 End If;
4861 If p_billing_profile_id is Null OR l_sll_tbl_out.count = 0 THEN
4862
4863 If Period_start(k) = 'CALENDAR' Then
4864 Open get_day_uom_code;
4865 Fetch get_day_uom_code into l_uom_code;
4866 Close get_day_uom_code;
4867
4868
4869 l_sll_tbl (1).cle_id := srvline_id(Line_ctr);
4870 l_sll_tbl (1).dnz_chr_id := contract_id(k);
4871 l_sll_tbl (1).sequence_no := 1;
4872 l_sll_tbl (1).level_periods := 1;
4873 l_sll_tbl (1).uom_code := l_uom_code;
4874 l_sll_tbl (1).uom_per_period := new_edt(line_ctr)-new_sdt(line_ctr)+1;
4875 l_sll_tbl (1).invoice_offset_days := 0;
4876 l_sll_tbl (1).interface_offset_days := 0;
4877 l_sll_tbl (1).level_amount := null;
4878 l_bill_type := 'T';
4879 l_invoice_rule_id := -2;
4880
4881
4882 Else
4883 okc_time_util_pub.get_duration
4884 (p_start_date => trunc(new_sdt(Line_ctr)),
4885 p_end_date => trunc(new_edt(Line_ctr)),
4886 x_duration => l_duration,
4887 x_timeunit => l_timeunit,
4888 x_return_status => l_return_status
4889 );
4890 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4891 THEN
4892 fnd_log.STRING (fnd_log.level_event,
4893 g_module_current || 'oks_mass_update.create_billing_schedule',
4894 'get_duration'|| l_return_status);
4895 END IF;
4896 IF NOT l_return_status = 'S'
4897 THEN
4898
4899 RAISE g_exception_halt_validation;
4900 END IF;
4901 fnd_file.put_line(fnd_file.log,'cle_id'||srvline_id(Line_ctr)||'contract_ctr'||contract_id(k));
4902 l_sll_tbl (1).cle_id := srvline_id(Line_ctr);
4903 l_sll_tbl (1).dnz_chr_id := contract_id(k);
4904 l_sll_tbl (1).sequence_no := 1;
4905 l_sll_tbl (1).level_periods := 1;
4906 l_sll_tbl (1).uom_code := l_timeunit;
4907 l_sll_tbl (1).uom_per_period := l_duration;
4908 l_sll_tbl (1).invoice_offset_days := 0;
4909 l_sll_tbl (1).interface_offset_days := 0;
4910 l_sll_tbl (1).level_amount := null;
4911 l_bill_type := 'T';
4912 l_invoice_rule_id := -2;
4913 End If;
4914 END IF;
4915
4916 IF l_sll_tbl.COUNT > 0 THEN
4917
4918
4919 OKS_BILL_SCH.create_bill_sch_rules(
4920 p_billing_type => l_bill_type,
4921 p_sll_tbl => l_sll_tbl,
4922 p_invoice_rule_id => l_Invoice_Rule_Id,
4923 x_bil_sch_out_tbl => l_bil_sch_out_tbl,
4924 x_return_status => l_return_status);
4925
4926 fnd_file.put_line(fnd_file.log,'(OKS) -> OKS_BILL_SCH.create_bill_sch_rules:'||l_return_status );
4927
4928 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4929 THEN
4930 fnd_log.STRING (fnd_log.level_event,
4931 g_module_current || 'oks_mass_update.create_billing_schedule',
4932 'create_bill_sch_rules'|| x_return_status);
4933 END IF;
4934 IF NOT l_return_status = 'S'
4935 THEN
4936
4937 RAISE g_exception_halt_validation;
4938 END IF;
4939
4940 END IF;
4941 l_sll_tbl_out.delete;
4942 l_sll_tbl.delete;
4943
4944
4945 END LOOP; --For Service Lines
4946
4947
4948 If Contract_type(k) <> 'WARRANTY' THEN
4949
4950 -- Tax Calculation
4951
4952 OPEN get_subline_details_csr(contract_id(k));
4953 FETCH get_subline_details_csr
4954 BULK COLLECT INTO
4955 subline_id;
4956 CLOSE get_subline_details_csr;
4957
4958 FOR subline_ctr IN subline_id.first..subline_id.last LOOP
4959
4960 l_tax_amount := 0;
4961 G_Rail_rec.Amount := null;
4962 OKS_TAX_UTIL_PVT.Get_Tax
4963 (
4964 p_api_version => 1.0,
4965 p_init_msg_list => OKC_API.G_TRUE,
4966 p_chr_id => contract_id(k),
4967 p_cle_id => subline_id(subline_ctr),
4968 px_rail_rec => G_RAIL_REC,
4969 x_msg_count => x_msg_count,
4970 x_msg_data => x_msg_data,
4971 x_return_status => l_return_status
4972 );
4973
4974 IF (FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4975 fnd_log.string(FND_LOG.LEVEL_EVENT,G_MODULE_CURRENT||'.after_tax',
4976 'oks_tax_util_pvt.get_tax(Return status = ' ||l_return_status || ')' );
4977 END IF;
4978
4979
4980 fnd_file.put_line(fnd_file.log,'(OKS) -> Tax Calculation Status :'||l_return_status );
4981 fnd_file.put_line(fnd_file.log,'(OKS) -> Tax Calculation G_RAIL_REC.tax_value :'||G_RAIL_REC.tax_value);
4982
4983 l_tax_inclusive_yn := G_RAIL_REC.AMOUNT_INCLUDES_TAX_FLAG ;
4984 If G_RAIL_REC.AMOUNT_INCLUDES_TAX_FLAG = 'Y' THEN
4985 l_tax_amount := 0 ;
4986 Else
4987 l_tax_amount := Nvl(G_RAIL_REC.tax_value,0) ;
4988 End If;
4989
4990 Update oks_k_lines_b
4991 set tax_amount = l_tax_amount, tax_inclusive_yn = l_tax_inclusive_yn
4992 Where cle_id = subline_id(subline_ctr );
4993
4994 End loop;
4995
4996 Forall l in srvline_id.first..srvline_id.last
4997 Update oks_k_lines_b
4998 set tax_amount = (select nvl(sum(ks.tax_amount),0) from oks_k_lines_b ks, okc_k_lines_b kl
4999 where kl.cle_id = srvline_id(l) and ks.cle_id = kl.id)
5000 Where cle_id = srvline_id(l);
5001 End If;
5002
5003
5004 fnd_file.put_line(fnd_file.log,'(OKS) -> Run QA Check, if Batch rules status = ( '
5005 || p_contract_status || ' )'|| 'Active');
5006
5007 -- Run QA Check and launch workflow for entered status contracts
5008 IF UPPER (P_contract_status) = 'ACTIVE'
5009 THEN
5010
5011 If Contract_type(k) <> 'WARRANTY' THEN
5012
5013 IF old_contract_status(k) <> 'ENTERED'
5014 THEN
5015
5016
5017 fnd_file.put_line(fnd_file.log,'(OKS) -> Run QA Check for contract = ( '
5018 || contract_id (k)|| ' ) qcl id = ( '|| qcl_id(k) || ' )');
5019
5020 okc_qa_check_pub.execute_qa_check_list
5021 (p_api_version => 1.0,
5022 p_init_msg_list => okc_api.g_false,
5023 x_return_status => l_return_status,
5024 x_msg_count => x_msg_count,
5025 x_msg_data => x_msg_data,
5026 p_qcl_id => qcl_id(k),
5027 p_chr_id => contract_id (k),
5028 x_msg_tbl => l_msg_tbl
5029 );
5030
5031 fnd_file.put_line(fnd_file.log,'(OKS) -> Qa check status = ( '
5032 || l_return_status || ' ) qa message count = ( ' || l_msg_tbl.COUNT || ' )');
5033
5034 IF l_return_status <> okc_api.g_ret_sts_success
5035 THEN
5036 x_return_status := l_return_status;
5037 RAISE g_exception_halt_validation;
5038 END IF;
5039
5040 IF l_msg_tbl.COUNT > 0
5041 THEN
5042
5043 l := l_msg_tbl.FIRST;
5044 LOOP
5045
5046 IF l_msg_tbl (l).error_status = 'E'
5047 THEN
5048 fnd_file.put_line(fnd_file.log,'(OKS) -> qa check failed, contract = '
5049 || l_msg_tbl (l).name);
5050 fnd_file.put_line(fnd_file.log,'(OKS) -> qa check failed, contract = '
5051 || l_msg_tbl (l).description);
5052
5053 EXIT;
5054 END IF;
5055
5056 EXIT WHEN l = l_msg_tbl.LAST;
5057 l := l_msg_tbl.NEXT (l);
5058 END LOOP;
5059 END IF;
5060
5061 IF l_msg_tbl (l).error_status = 'E'
5062 THEN
5063 qa_contract_id := contract_id (k);
5064
5065
5066 fnd_file.put_line(fnd_file.log,'(OKS) -> qa check failed, contract = ( '
5067 || contract_id (k)|| ' ) will be created in Entered status');
5068 ELSE
5069 qa_contract_id := Null;
5070 END IF;
5071 ELSE
5072 qa_contract_id := contract_id (k);
5073
5074
5075 fnd_file.put_line(fnd_file.log,'(OKS) -> , contract = ( '
5076 || contract_id (k) || ' ) will be created in Entered status');
5077
5078 END IF; -- status entered
5079 ELSE
5080 qa_contract_id := null;
5081 END IF;
5082
5083
5084 IF qa_contract_id Is Not NUll
5085 THEN
5086 oks_extwarprgm_pvt.get_sts_code ('ENTERED',
5087 NULL,
5088 l_ste_code,
5089 l_sts_code
5090 );
5091
5092 UPDATE okc_k_headers_all_b
5093 SET sts_code = l_sts_code,
5094 date_approved = NULL,
5095 date_signed = NULL
5096 WHERE ID = qa_contract_id ;
5097
5098 UPDATE oks_k_headers_b
5099 SET renewal_status= 'DRAFT'
5100 WHERE CHR_ID = qa_contract_id ;
5101
5102
5103 fnd_file.put_line(fnd_file.log,'(OKS) -> Header status updated to ( '
5104 || l_sts_code ||' ) successfully');
5105
5106
5107 UPDATE okc_k_lines_b
5108 SET sts_code = l_sts_code
5109 WHERE dnz_chr_id = qa_contract_id ;
5110
5111 fnd_file.put_line(fnd_file.log,'(OKS) -> Line status updated to ( '
5112 || l_sts_code ||' ) successfully');
5113
5114
5115 -- Launch workflow for entered status contracts
5116
5117 l_wf_attributes.contract_id := qa_contract_id ;
5118 --l_wf_attributes.contract_number := Null;
5119 --l_wf_attributes.contract_modifier := Null;
5120 --l_wf_attributes.process_type := 'Online';
5121 l_wf_attributes.process_type := 'MANUAL';
5122 l_wf_attributes.irr_flag := 'Y';
5123 l_wf_attributes.negotiation_status := 'DRAFT';
5124
5125
5126 oks_wf_k_process_pvt.launch_k_process_wf
5127 (p_api_version => 1.0,
5128 p_init_msg_list => okc_api.g_false,
5129 p_wf_attributes => l_wf_attributes,
5130 x_return_status => l_return_status,
5131 x_msg_count => x_msg_count,
5132 x_msg_data => x_msg_data
5133 );
5134 fnd_file.put_line(fnd_file.log,'(OKS) -> Lauch workflow process status = ( '
5135 || l_return_status|| ' )');
5136
5137 IF l_return_status <> okc_api.g_ret_sts_success
5138 THEN
5139 x_return_status := l_return_status;
5140 RAISE g_exception_halt_validation;
5141 END IF;
5142
5143 END IF;
5144 ELSIF UPPER (P_contract_status) = 'ENTERED'
5145 THEN
5146
5147
5148 IF Contract_type(k) <> 'WARRANTY'
5149 THEN
5150
5151
5152 l_wf_attributes.contract_id := contract_id (k);
5153 --l_wf_attributes.contract_number := Null;
5154 --l_wf_attributes.contract_modifier := Null;
5155 --l_wf_attributes.process_type := 'Online';
5156 l_wf_attributes.process_type := 'MANUAL';
5157 l_wf_attributes.irr_flag := 'Y';
5158 l_wf_attributes.negotiation_status := 'DRAFT';
5159
5160
5161 oks_wf_k_process_pvt.launch_k_process_wf
5162 (p_api_version => 1.0,
5163 p_init_msg_list => okc_api.g_false,
5164 p_wf_attributes => l_wf_attributes,
5165 x_return_status => l_return_status,
5166 x_msg_count => x_msg_count,
5167 x_msg_data => x_msg_data
5168 );
5169
5170 fnd_file.put_line(fnd_file.log,'(OKS) -> Lauch workflow process status = ( '
5171 || k||' )'||l_return_status);
5172
5173 IF l_return_status <> okc_api.g_ret_sts_success
5174 THEN
5175 x_return_status := l_return_status;
5176 RAISE g_exception_halt_validation;
5177 END IF;
5178
5179 END IF;
5180
5181 END IF;
5182
5183 If Contract_type(k) <> 'WARRANTY' THEN
5184
5185 -- Copy Attachements
5186 IF UPPER (P_transfer_attachments) = 'Y'
5187 THEN
5188 fnd_file.put_line(fnd_file.log,'(OKS) -> Copy the Attachments to the new contracts');
5189
5190 set_attach_session_vars (old_contract_id (k));
5191
5192 IF (fnd_attachment_util_pkg.get_atchmt_exists
5193 (l_entity_name => 'OKC_K_HEADERS_V',
5194 l_pkey1 => to_char(old_contract_id (k)),
5195 l_pkey2 => NULL -- l_from_version
5196 ) = 'Y')
5197 THEN
5198
5199 fnd_attached_documents2_pkg.copy_attachments
5200 (x_from_entity_name => 'OKC_K_HEADERS_V',
5201 x_from_pk1_value => old_contract_id (k),
5202 x_from_pk2_value => NULL, -- l_from_version,
5203 x_to_entity_name => 'OKC_K_HEADERS_V',
5204 x_to_pk1_value => contract_id(k),
5205 x_to_pk2_value => '0'
5206 );
5207
5208 fnd_file.put_line(fnd_file.log,'(OKS) -> Attachments copied from contract = ( '||old_contract_id (k)
5209 || ' ) to the new contract = ( '|| contract_id (k)||' ) Successfully');
5210
5211 END IF;
5212 END IF;
5213 End If;
5214
5215 fnd_file.put_line(fnd_file.log,'(OKS) -> Copy the Notes to the new contracts');
5216
5217 OPEN get_csi_note_csr (p_batch_id);
5218 FETCH get_csi_note_csr INTO l_note_details;
5219 CLOSE get_csi_note_csr;
5220 -- Create CSI notes
5221 IF l_note_details IS NOT NULL
5222 THEN
5223 create_csi_note
5224 (p_source_object_id => contract_id (k),
5225 p_note => l_note_details,
5226 x_return_status => l_return_status,
5227 x_msg_count => x_msg_count,
5228 x_msg_data => x_msg_data
5229 );
5230 fnd_file.put_line(fnd_file.log,'(OKS) -> Create IB Note status = ( ' || l_return_status || ' )');
5231 IF NOT l_return_status = okc_api.g_ret_sts_success
5232 THEN
5233 x_return_status := l_return_status;
5234
5235 RAISE g_exception_halt_validation;
5236 END IF;
5237 END IF;
5238
5239 fnd_file.put_line(fnd_file.log,'(OKS) -> Notes copied from batch Successfully');
5240
5241
5242
5243 -- Transfer Notes
5244 IF UPPER (P_transfer_notes) = 'Y' and Contract_type(k) <> 'WARRANTY' THEN
5245
5246
5247 get_notes_details (p_source_object_id => old_contract_id(k),
5248 x_notes_tbl => l_notes_tbl,
5249 x_return_status => l_return_status
5250 );
5251 fnd_file.put_line(fnd_file.log,'(OKS) -> For Contract = ( '||old_contract_id(k)
5252 ||' ) Get Notes details Status = ( ' || l_return_status || ' ) Number of Notes = ( '
5253 ||l_notes_tbl.COUNT || ' )');
5254
5255 IF NOT l_return_status = okc_api.g_ret_sts_success
5256 THEN
5257 x_return_status := l_return_status;
5258 RAISE g_exception_halt_validation;
5259 END IF;
5260
5261 IF l_return_status = 'S'
5262 THEN
5263 IF (l_notes_tbl.COUNT > 0)
5264 THEN
5265 FOR m IN l_notes_tbl.FIRST .. l_notes_tbl.LAST
5266 LOOP
5267 jtf_notes_pub.create_note
5268 (p_jtf_note_id => NULL,
5269 p_api_version => 1.0,
5270 p_init_msg_list => 'F',
5271 p_commit => 'F',
5272 p_validation_level => 0,
5273 x_return_status => l_return_status,
5274 x_msg_count => x_msg_count,
5275 x_msg_data => x_msg_data,
5276 p_source_object_code => l_notes_tbl (m).source_object_code,
5277 p_source_object_id => contract_id(k),
5278 p_notes => l_notes_tbl (m).notes,
5279 p_notes_detail => l_notes_tbl (m).notes_detail,
5280 p_note_status => l_notes_tbl (m).note_status,
5281 p_note_type => l_notes_tbl (m).note_type,
5282 p_entered_by => fnd_global.user_id,
5283 p_entered_date => SYSDATE,
5284 x_jtf_note_id => l_jtf_note_id,
5285 p_creation_date => SYSDATE,
5286 p_created_by => fnd_global.user_id,
5287 p_last_update_date => SYSDATE,
5288 p_last_updated_by => fnd_global.user_id,
5289 p_last_update_login => fnd_global.login_id,
5290 p_attribute1 => NULL,
5291 p_attribute2 => NULL,
5292 p_attribute3 => NULL,
5293 p_attribute4 => NULL,
5294 p_attribute5 => NULL,
5295 p_attribute6 => NULL,
5296 p_attribute7 => NULL,
5297 p_attribute8 => NULL,
5298 p_attribute9 => NULL,
5299 p_attribute10 => NULL,
5300 p_attribute11 => NULL,
5301 p_attribute12 => NULL,
5302 p_attribute13 => NULL,
5303 p_attribute14 => NULL,
5304 p_attribute15 => NULL,
5305 p_context => NULL,
5306 p_jtf_note_contexts_tab => l_jtf_note_contexts_tab
5307 );
5308
5309 fnd_file.put_line(fnd_file.log,'(OKS) -> Create Notes ( '||m ||' )'|| 'Status = ( '
5310 || l_return_status || ' )');
5311
5312 IF NOT l_return_status = okc_api.g_ret_sts_success
5313 THEN
5314 x_return_status := l_return_status;
5315 RAISE g_exception_halt_validation;
5316 END IF;
5317 END LOOP;
5318 END IF;
5319 END IF;
5320
5321 End If;
5322
5323
5324
5325
5326
5327 End Loop; -- Contracts
5328 Forall k in contract_id.first..contract_id.last
5329 Update oks_k_headers_b
5330 Set tax_amount = (select Nvl(sum(ks.tax_amount),0) from oks_k_lines_b ks, okc_k_lines_b kl
5331 where kl.dnz_chr_id = contract_id(k) and ks.cle_id = kl.id and kl.lse_id in (9,25))
5332 Where chr_id = contract_id(k);
5333
5334 x_return_status := l_return_status;
5335 EXCEPTION
5336 WHEN g_exception_halt_validation
5337 THEN
5338 x_return_status := l_return_status;
5339 fnd_file.put_line(fnd_file.log,' Error while creating cov,billing schd, tax : '
5340 || SQLCODE||':'|| SQLERRM );
5341 NULL;
5342 WHEN OTHERS
5343 THEN
5344 x_return_status := okc_api.g_ret_sts_unexp_error;
5345 fnd_file.put_line(fnd_file.log,' Error while creating the cov,billing schd, tax : '
5346 || SQLCODE||':'|| SQLERRM );
5347 okc_api.set_message (g_app_name,
5348 g_unexpected_error,
5349 g_sqlcode_token,
5350 SQLCODE,
5351 g_sqlerrm_token,
5352 SQLERRM
5353 );
5354
5355 END CREATE_COV_BILLSCHD;
5356
5357
5358
5359 -------* Procedure terminate_cancel_subline *---------
5360 -- Procedure to terminate/cancel the subline
5361 ------------------------------------------------------
5362
5363 PROCEDURE terminate_subline (
5364 p_status IN VARCHAR2,
5365 p_hdr_id IN NUMBER DEFAULT null,
5366 p_end_date IN DATE DEFAULT SYSDATE,
5367 p_cle_id IN NUMBER,
5368 p_termination_date IN DATE,
5369 p_cancellation_date IN DATE,
5370 p_term_flag IN VARCHAR2,
5371 p_terminate_reason IN VARCHAR2,
5372 P_termination_source IN VARCHAR2,
5373 p_suppress_credit IN VARCHAR2,
5374 p_full_credit IN VARCHAR2,
5375 x_return_status OUT NOCOPY VARCHAR2
5376 )
5377 IS
5378 l_return_status VARCHAR2 (1) := 'S';
5379 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
5380 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
5381 l_term_date DATE;
5382 l_ste_code VARCHAR2(30);
5383 l_sts_code VARCHAR2(30);
5384 l_term_date_flag VARCHAR2(1);
5385 l_msg_data VARCHAR2(2000);
5386 l_msg_count NUMBER;
5387 l_cancel_reason VARCHAR2(30);
5388
5389 BEGIN
5390 get_sts_code(null ,p_status,l_ste_code,l_sts_code);
5391
5392 IF p_status = 'ENTERED'
5393 THEN
5394 If P_termination_source = 'IBTERMINATE' Then
5395 l_cancel_reason := 'TERMINATED';
5396 Else
5397 l_cancel_reason := 'TRANSFER';
5398 End If;
5399 oks_change_status_pvt.Update_line_status (
5400 x_return_status => l_return_status,
5401 x_msg_data => l_msg_data,
5402 x_msg_count => l_msg_count,
5403 p_init_msg_list => 'F',
5404 p_id => p_hdr_id,
5405 p_cle_id => p_cle_id,
5406 p_new_sts_code => get_status_code('CANCELLED'),--code fix for bug 6350309
5407 p_canc_reason_code => l_cancel_reason,
5408 p_old_sts_code => l_sts_code,
5409 p_old_ste_code => l_ste_code,
5410 p_new_ste_code => 'CANCELLED',
5411 p_term_cancel_source => P_termination_source,
5412 p_date_cancelled => p_cancellation_date,
5413 p_comments => NULL,
5414 p_validate_status => 'N') ;
5415
5416 If not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
5417 x_return_status := l_return_status;
5418 Raise G_EXCEPTION_HALT_VALIDATION;
5419 End if;
5420
5421 ELSE
5422
5423
5424
5425
5426 oks_bill_rec_pub.pre_terminate_cp
5427 (p_calledfrom => NULL,
5428 p_cle_id => p_cle_id,
5429 p_termination_date => p_termination_date,
5430 p_terminate_reason => p_terminate_reason,
5431 p_override_amount => NULL,
5432 p_con_terminate_amount => NULL,
5433 p_termination_amount => NULL,
5434 p_suppress_credit => p_suppress_credit,
5435 p_full_credit => p_full_credit,
5436 P_Term_Date_flag => p_term_flag,
5437 P_Term_Cancel_source => P_termination_source,
5438 x_return_status => l_return_status
5439 );
5440
5441 IF NOT l_return_status = okc_api.g_ret_sts_success
5442 THEN
5443 x_return_status := l_return_status;
5444 RAISE g_exception_halt_validation;
5445 END IF;
5446 END IF;
5447 x_return_status := l_return_status;
5448 EXCEPTION
5449 WHEN g_exception_halt_validation
5450 THEN
5451 x_return_status := okc_api.g_ret_sts_error;
5452 NULL;
5453 WHEN OTHERS
5454 THEN
5455 x_return_status := okc_api.g_ret_sts_unexp_error;
5456 okc_api.set_message (g_app_name,
5457 g_unexpected_error,
5458 g_sqlcode_token,
5459 SQLCODE,
5460 g_sqlerrm_token,
5461 SQLERRM
5462 );
5463 END terminate_subline;
5464
5465 ------------* function get_line_number *-------------
5466 -- Function to generate the line numbers for service
5467 -- line as well as sublines
5468 -- this function is used in the cursor statement
5469 ------------------------------------------------------
5470
5471 FUNCTION get_line_number (
5472 p_type VARCHAR2
5473 )
5474 RETURN NUMBER
5475 IS
5476 BEGIN
5477 IF p_type = 'NEW'
5478 THEN
5479 l_lineno_new := 0;
5480 END IF;
5481
5482 l_lineno_new := l_lineno_new + 1;
5483
5484 RETURN (l_lineno_new);
5485 END get_line_number ;
5486
5487
5488 ------------* function get_line_number *-------------
5489 -- Function to generate the line numbers for service
5490 -- line as well as sublines
5491 -- this function is used in the cursor statement
5492 ------------------------------------------------------
5493
5494 FUNCTION get_Topline_number (
5495 p_type VARCHAR2
5496 )
5497 RETURN NUMBER
5498 IS
5499 BEGIN
5500
5501
5502 IF p_type = 'NEW'
5503 THEN
5504
5505 l_Tlineno_new := 0;
5506 END IF;
5507
5508 l_Tlineno_new := l_Tlineno_new + 1;
5509
5510
5511 RETURN (l_Tlineno_new);
5512 END get_Topline_number ;
5513 ------------* function get_seq_number *-------------
5514 -- Function to generate the header and line sequenec
5515 -- this function is used in the cursor statement
5516 ------------------------------------------------------
5517
5518 FUNCTION get_seq_no (
5519 p_type VARCHAR2,
5520 p_var VARCHAR2,
5521 p_end_date DATE
5522 )
5523 RETURN NUMBER
5524 IS
5525 CURSOR l_seq_csr
5526 IS
5527 SELECT okc_k_headers_b_s.NEXTVAL
5528 FROM DUAL;
5529 BEGIN
5530
5531 IF trunc(p_end_date) < trunc(SYSDATE)
5532 THEN
5533 RETURN (Null);
5534 END IF;
5535
5536 IF p_type = 'H'
5537 THEN
5538
5539 IF p_var = 'NEW'
5540 THEN
5541 OPEN l_seq_csr;
5542 FETCH l_seq_csr INTO l_hdr_id;
5543 CLOSE l_seq_csr;
5544
5545 RETURN (l_hdr_id);
5546 ELSE
5547 RETURN (l_hdr_id);
5548 END IF;
5549 ELSIF p_type = 'L'
5550 THEN
5551
5552 IF p_var = 'NEW'
5553 THEN
5554 l_line_id := okc_p_util.raw_to_number (SYS_GUID ());
5555 RETURN (l_line_id);
5556 ELSE
5557 RETURN (l_line_id);
5558 END IF;
5559 ELSE
5560 RETURN (okc_p_util.raw_to_number (SYS_GUID ()));
5561 END IF;
5562 END get_seq_no;
5563
5564 -----------* function get_object_line_id *-----------
5565 -- Function to get the object line id for renewed
5566 -- contracts
5567 ------------------------------------------------------
5568
5569 PROCEDURE get_object_line_id (
5570 p_line_id IN NUMBER,
5571 x_object_cle_id OUT NOCOPY NUMBER,
5572 x_object_chr_id OUT NOCOPY NUMBER
5573 )
5574
5575 IS
5576 CURSOR get_object_line_csr
5577 IS
5578 SELECT object_cle_id, OBJECT_CHR_ID
5579 FROM okc_operation_instances op,
5580 okc_operation_lines ol,
5581 okc_class_operations cls,
5582 okc_subclasses_b sl
5583 WHERE ol.oie_id = op.ID
5584 AND cls.cls_code = sl.cls_code
5585 And sl.code = 'SERVICE'
5586 And op.cop_id = cls.id
5587 And cls.opn_code in ('RENEWAL','REN_CON')
5588 AND ol.subject_cle_id = p_line_id;
5589
5590 CURSOR get_transfer_link_csr (
5591 p_line_id NUMBER
5592 )
5593 IS
5594 SELECT ol.subject_cle_id, ol.subject_chr_id
5595 FROM okc_operation_instances op,
5596 okc_operation_lines ol,
5597 okc_class_operations cls,
5598 okc_subclasses_b sl
5599 WHERE ol.oie_id = op.ID
5600 AND cls.cls_code = sl.cls_code
5601 And sl.code = 'SERVICE'
5602 And op.cop_id = cls.id
5603 And cls.opn_code in ('TRANSFER')
5604 AND ol.object_cle_id = p_line_id;
5605
5606 l_renew_object_id NUMBER := NULL;
5607 l_renew_chr_id NUMBER := NULL;
5608 l_trf_subject_id NUMBER := NULL;
5609 l_trf_subj_chrid Number := Null;
5610 BEGIN
5611
5612 OPEN get_object_line_csr;
5613 FETCH get_object_line_csr INTO l_renew_object_id, l_renew_chr_id;
5614
5615 IF get_object_line_csr%FOUND
5616 THEN
5617
5618 OPEN get_transfer_link_csr (l_renew_object_id);
5619 FETCH get_transfer_link_csr INTO l_trf_subject_id,l_trf_subj_chrid;
5620 IF get_transfer_link_csr%FOUND THEN
5621 x_object_cle_id := l_trf_subject_id;
5622 x_object_chr_id := l_trf_subj_chrid;
5623 ELSE
5624 x_object_cle_id := l_renew_object_id;
5625 x_object_chr_id := l_renew_chr_id;
5626 END IF;
5627 CLOSE get_transfer_link_csr;
5628 ELSE
5629 x_object_cle_id := NULL;
5630 x_object_chr_id := NULL;
5631 END IF;
5632 CLOSE get_object_line_csr;
5633
5634 EXCEPTION
5635 WHEN OTHERS
5636 THEN
5637 fnd_file.put_line(fnd_file.log,' Error while getting the object line id: '
5638 || SQLCODE||':'|| SQLERRM );
5639 okc_api.set_message (g_app_name,
5640 g_unexpected_error,
5641 g_sqlcode_token,
5642 SQLCODE,
5643 g_sqlerrm_token,
5644 SQLERRM
5645 );
5646 END get_object_line_id;
5647
5648 -------------* function get_end_date *---------------
5649 -- Function to get the end date for installation date
5650 -- change
5651 ------------------------------------------------------
5652
5653 FUNCTION get_end_date (
5654 p_sdate IN DATE,
5655 p_edate IN DATE,
5656 p_ins_date IN DATE
5657 )
5658 RETURN DATE
5659 IS
5660 l_duration NUMBER;
5661 l_timeunits VARCHAR2 (240);
5662 l_new_edt DATE;
5663 l_return_status VARCHAR2 (1) := 'S';
5664 BEGIN
5665 okc_time_util_pub.get_duration (p_start_date => trunc(p_sdate),
5666 p_end_date => trunc(p_edate),
5667 x_duration => l_duration,
5668 x_timeunit => l_timeunits,
5669 x_return_status => l_return_status
5670 );
5671
5672 IF NOT l_return_status = 'S'
5673 THEN
5674 RAISE g_exception_halt_validation;
5675 END IF;
5676
5677 l_new_edt := okc_time_util_pub.get_enddate (p_start_date => trunc(p_ins_date),
5678 p_duration => l_duration,
5679 p_timeunit => l_timeunits
5680 );
5681 RETURN (l_new_edt);
5682 END get_end_date;
5683
5684 FUNCTION get_status (
5685 p_start_date VARCHAR2,
5686 p_end_date VARCHAR2
5687 )
5688 RETURN VARCHAR2
5689 IS
5690 l_ste_code VARCHAR2 (30);
5691 l_sts_code VARCHAR2 (30);
5692 BEGIN
5693 IF (p_start_date) > (SYSDATE)
5694 THEN
5695 get_sts_code ('SIGNED',
5696 NULL,
5697 l_ste_code,
5698 l_sts_code
5699 );
5700 ELSIF (p_start_date) <= (SYSDATE)
5701 AND (p_end_date) >= (SYSDATE)
5702 THEN
5703 get_sts_code ('ACTIVE',
5704 NULL,
5705 l_ste_code,
5706 l_sts_code
5707 );
5708 ELSIF (p_end_date) < (SYSDATE)
5709 THEN
5710 get_sts_code ('EXPIRED',
5711 NULL,
5712 l_ste_code,
5713 l_sts_code
5714 );
5715 END IF;
5716
5717 RETURN (l_sts_code);
5718 END;
5719
5720 ------------* function check_relation *-------------
5721 -- Function to check the relation between transfer
5722 -- parties
5723 ------------------------------------------------------
5724
5725 FUNCTION check_relation (
5726 p_old_customer IN VARCHAR2,
5727 p_new_customer IN VARCHAR2,
5728 p_transfer_date IN DATE
5729 )
5730 RETURN VARCHAR2
5731 IS
5732 CURSOR l_cust_rel_csr (
5733 l_old_customer VARCHAR2,
5734 l_new_customer VARCHAR2,
5735 l_relation VARCHAR2
5736 )
5737 IS
5738 SELECT DISTINCT relationship_type
5739 FROM hz_relationships
5740 WHERE ( ( object_id = l_new_customer
5741 AND subject_id = l_old_customer
5742 )
5743 OR ( object_id = l_old_customer
5744 AND subject_id = l_new_customer
5745 )
5746 )
5747 AND relationship_type = l_relation
5748 AND status = 'A'
5749 AND TRUNC (p_transfer_date) BETWEEN TRUNC (start_date)
5750 AND TRUNC (end_date);
5751
5752 l_old_party_id NUMBER;
5753 l_new_party_id NUMBER;
5754 l_relationship_type VARCHAR2 (40);
5755 l_relationship VARCHAR2 (40);
5756 l_date DATE;
5757 BEGIN
5758 l_relationship_type := fnd_profile.VALUE ('OKS_TRF_PARTY_REL');
5759 get_party_id (p_new_customer, l_new_party_id);
5760 get_party_id (p_old_customer, l_old_party_id);
5761
5762 OPEN l_cust_rel_csr (l_old_party_id,
5763 l_new_party_id,
5764 l_relationship_type
5765 );
5766
5767 FETCH l_cust_rel_csr
5768 INTO l_relationship;
5769
5770 IF l_cust_rel_csr%FOUND
5771 THEN
5772 RETURN ('Y');
5773 ELSE
5774 RETURN ('N');
5775 END IF;
5776
5777 CLOSE l_cust_rel_csr;
5778 END;
5779
5780 ------------* Procedure create_contract *-------------
5781 -- procedure to create contract
5782 -- which creates header, lines and sublines
5783 ------------------------------------------------------
5784
5785 PROCEDURE create_contract (
5786 p_api_version IN NUMBER,
5787 p_batch_rules IN batch_rules_rec_type,
5788 p_transfer_date IN DATE,
5789 x_return_status OUT NOCOPY VARCHAR2,
5790 x_msg_data OUT NOCOPY VARCHAR2,
5791 x_msg_count OUT NOCOPY NUMBER
5792 )
5793 IS
5794 l_return_status VARCHAR2 (1) := 'S';
5795 BEGIN
5796 create_contract_header (p_api_version => 1.0,
5797 p_batch_rules => p_batch_rules,
5798 p_transfer_date => p_transfer_date,
5799 x_return_status => l_return_status,
5800 x_msg_count => x_msg_count,
5801 x_msg_data => x_msg_data
5802
5803 );
5804
5805 fnd_file.put_line(fnd_file.log,'(OKS) -> Create contract header, status = ( '
5806 || l_return_status || ' )');
5807
5808 IF NOT l_return_status = okc_api.g_ret_sts_success
5809 THEN
5810 x_return_status := l_return_status;
5811 RAISE g_exception_halt_validation;
5812 END IF;
5813
5814 create_contract_line (p_api_version => 1.0,
5815 p_batch_rules => p_batch_rules,
5816 p_transfer_date => p_transfer_date,
5817 x_return_status => l_return_status,
5818 x_msg_count => x_msg_count,
5819 x_msg_data => x_msg_data
5820 );
5821
5822 fnd_file.put_line(fnd_file.log,'(OKS) -> Create contract Line, status = ( '
5823 || l_return_status || ' )');
5824
5825 IF NOT l_return_status = okc_api.g_ret_sts_success
5826 THEN
5827 x_return_status := l_return_status;
5828 RAISE g_exception_halt_validation;
5829 END IF;
5830
5831 create_contract_subline (p_api_version => 1.0,
5832 p_batch_rules => p_batch_rules,
5833 p_transfer_date => p_transfer_date,
5834 x_return_status => l_return_status,
5835 x_msg_count => x_msg_count,
5836 x_msg_data => x_msg_data
5837 );
5838
5839 fnd_file.put_line(fnd_file.log,'(OKS) -> Create contract subline, status = ( '
5840 || l_return_status || ' )');
5841
5842 IF NOT l_return_status = okc_api.g_ret_sts_success
5843 THEN
5844 x_return_status := l_return_status;
5845 RAISE g_exception_halt_validation;
5846 END IF;
5847
5848 fnd_file.put_line(fnd_file.log,'(OKS) -> Create billing Schedule for biling profile id = ( '
5849 || p_batch_rules.billing_profile_id ||' )');
5850 --call to create coverages and billing schedule
5851 -- Terminate Cancel top lines and Header
5852 CREATE_COV_BILLSCHD
5853 (
5854 P_contract_status => P_batch_rules.contract_status,
5855 p_billing_profile_id => p_batch_rules.billing_profile_id,
5856 Termination_reason => p_batch_rules.termination_reason_code,
5857 x_msg_count => x_msg_count,
5858 x_msg_data => x_msg_data,
5859 x_return_status => l_return_status,
5860 P_batch_id => p_batch_rules.batch_id,
5861 P_transfer_Attachments => p_batch_rules.transfer_attachments_flag,
5862 P_transfer_notes => p_batch_rules.transfer_notes_flag
5863 );
5864
5865
5866
5867 fnd_file.put_line(fnd_file.log,'(OKS) -> CREATE_COV_BILLSCHD, status = ( '
5868 || l_return_status || ' )');
5869 IF NOT l_return_status = okc_api.g_ret_sts_success
5870 THEN
5871 x_return_status := l_return_status;
5872 RAISE g_exception_halt_validation;
5873 END IF;
5874
5875 x_return_status := l_return_status;
5876 EXCEPTION
5877 WHEN g_exception_halt_validation
5878 THEN
5879
5880 fnd_file.put_line(fnd_file.log,' Error while creating the contract : '
5881 || SQLCODE||':'|| SQLERRM );
5882 NULL;
5883 WHEN OTHERS
5884 THEN
5885 x_return_status := okc_api.g_ret_sts_unexp_error;
5886 fnd_file.put_line(fnd_file.log,' Error while creating the contract : '
5887 || SQLCODE||':'|| SQLERRM );
5888 okc_api.set_message (g_app_name,
5889 g_unexpected_error,
5890 g_sqlcode_token,
5891 SQLCODE,
5892 g_sqlerrm_token,
5893 SQLERRM
5894 );
5895 END;
5896
5897 Procedure Terminate_cancel
5898 (p_termination_reason Varchar2,
5899 P_termcancel_source VARCHAR2,
5900 P_cancel_reason VARCHAR2,
5901 X_return_status OUT NOCOPY Varchar2,
5902 X_msg_count OUT NOCOPY Number,
5903 X_msg_data OUT NOCOPY Varchar2)
5904 Is
5905
5906 CURSOR get_srv_details_csr(p_contract_id Number) IS
5907 Select Distinct temp.topline_id
5908 ,St.ste_code
5909 ,line.start_date
5910 From Oks_instance_k_dtls_temp temp
5911 , okc_k_lines_b line
5912 , Okc_statuses_b St
5913 Where line.id = temp.Topline_id
5914 And temp.contract_id = p_contract_id
5915 And St.code = line.sts_code;
5916
5917 Cursor get_contract_csr Is
5918 Select distinct temp.contract_id
5919 , kh.authoring_org_id
5920 , kh.inv_organization_id
5921 , St.ste_code
5922 , Kh.start_date
5923 From OKs_instance_k_dtls_temp temp
5924 , Okc_k_headers_all_b Kh
5925 , Okc_statuses_b St
5926 Where Kh.Id = temp.contract_id
5927 And St.code = Kh.sts_code;
5928 contract_id okc_datatypes.numbertabtyp;
5929 org_id okc_datatypes.numbertabtyp;
5930 organization_id okc_datatypes.numbertabtyp;
5931 topline_id okc_datatypes.numbertabtyp;
5932 hdr_sts okc_datatypes.var30tabtyp;
5933 topline_sts okc_datatypes.var30tabtyp;
5934 l_return_status Varchar2(1);
5935 line_start_date okc_datatypes.datetabtyp;
5936 hdr_start_date okc_datatypes.datetabtyp;
5937
5938
5939 Begin
5940
5941
5942 -- Update all the toplines and headers for termination/Cancellation
5943
5944
5945 contract_id.delete;
5946 org_id.delete;
5947 organization_id.delete;
5948 hdr_sts.delete;
5949 hdr_start_date.delete;
5950
5951 OPEN get_contract_csr;
5952 FETCH get_contract_csr
5953 BULK COLLECT INTO
5954 contract_id,
5955 org_id,
5956 organization_id,
5957 hdr_sts,
5958 hdr_start_date;
5959 Close get_contract_csr;
5960 If contract_id.count > 0 Then
5961
5962 For i in contract_id.first..contract_id.last
5963 Loop
5964 topline_id.delete;
5965 topline_sts.delete;
5966 line_start_date.delete;
5967
5968
5969 okc_context.set_okc_org_context(org_id(i),organization_id(i));
5970 OPEN get_srv_details_csr(contract_id(i));
5971 FETCH get_srv_details_csr
5972 BULK COLLECT INTO
5973 topline_id,
5974 topline_sts,
5975 line_start_date;
5976
5977 CLOSE get_srv_details_csr;
5978
5979 FOR j IN topline_id.first..topline_id.last LOOP
5980 --Terminate Cancel Top lines if all the sublines are Terminated/Cancelled
5981 Teminate_Cancel_Topline
5982 (
5983 line_status => topline_sts(j),
5984 Service_line_id => topline_id(j),
5985 contract_id => contract_id(i),
5986 line_start_date => line_start_date(j),
5987 Term_cancel_source => P_termcancel_source, --'IBTERMINATE',
5988 Termination_reason => P_termination_reason,
5989 Cancel_reason => p_cancel_reason, --'TERMINATED',
5990 x_msg_count => x_msg_count,
5991 x_msg_data => x_msg_data,
5992 x_return_status => l_return_status
5993 );
5994
5995 IF NOT l_return_status = 'S'
5996 THEN
5997
5998 RAISE g_exception_halt_validation;
5999 END IF;
6000
6001 END LOOP; --For Service Lines
6002
6003 --Terminate Cancel Header if all the Toplines are Terminated/Cancelled
6004
6005 Teminate_Cancel_Header
6006 (
6007 P_Contract_status => hdr_sts(i),
6008 contract_id => contract_id(i),
6009 hdr_start_date => hdr_start_date(i),
6010 Term_cancel_source => P_termcancel_source, --'IBTERMINATE',
6011 Termination_reason => P_termination_reason,
6012 Cancel_reason => p_cancel_reason, --'TERMINATED',
6013 x_msg_count => x_msg_count,
6014 x_msg_data => x_msg_data,
6015 x_return_status => l_return_status
6016 );
6017
6018 IF NOT l_return_status = 'S'
6019 THEN
6020
6021 RAISE g_exception_halt_validation;
6022 END IF;
6023
6024
6025
6026 End Loop; -- Contracts
6027 End If;
6028 x_return_status := l_return_status;
6029 EXCEPTION
6030 WHEN g_exception_halt_validation
6031 THEN
6032
6033 fnd_file.put_line(fnd_file.log,' Error while terminating/Canceling line/hdr: '
6034 || SQLCODE||':'|| SQLERRM );
6035 NULL;
6036 WHEN OTHERS
6037 THEN
6038 x_return_status := okc_api.g_ret_sts_unexp_error;
6039 fnd_file.put_line(fnd_file.log,' Error while terminating/Canceling line/hdr: '
6040 || SQLCODE||':'|| SQLERRM );
6041 okc_api.set_message (g_app_name,
6042 g_unexpected_error,
6043 g_sqlcode_token,
6044 SQLCODE,
6045 g_sqlerrm_token,
6046 SQLERRM
6047 );
6048 END;
6049
6050 ------------* Procedure update_contract *-------------
6051 -- procedure to terminate/cancel the impacted contracts
6052 -- and create new contract for the new party.
6053 -- creates transaction source, copy attachments, copy
6054 -- notes ,copy csi notes, run qa check, Roll up the
6055 -- amounts to header and lines.
6056 ------------------------------------------------------
6057
6058 PROCEDURE update_contracts (
6059 p_api_version IN NUMBER,
6060 p_init_msg_list IN VARCHAR2,
6061 p_batch_type IN VARCHAR2,
6062 p_batch_id IN NUMBER,
6063 p_new_acct_id IN NUMBER,
6064 p_old_acct_id IN NUMBER,
6065 x_return_status OUT NOCOPY VARCHAR2,
6066 x_msg_count OUT NOCOPY NUMBER,
6067 x_msg_data OUT NOCOPY VARCHAR2
6068 )
6069 IS
6070 CURSOR get_k_for_transfer_csr (
6071 p_transfer_rule VARCHAR2,
6072 l_relationship VARCHAR2,
6073 p_party_id NUMBER,
6074 P_credit_option Varchar2
6075 )
6076 IS
6077 SELECT ki.dnz_chr_id contract_id,
6078 kh.start_date k_sdate,
6079 kh.end_date k_edate,
6080 kh.sts_code k_sts_code,
6081 Hst.ste_code Hdr_ste,
6082 kh.contract_number,
6083 kh.contract_number_modifier,
6084 kl.cle_id topline_id,
6085 kl2.start_date l_sdate,
6086 kl2.end_date l_edate,
6087 ki.cle_id subline_id,
6088 kl.start_date sl_sdate,
6089 TRUNC(CASE
6090 WHEN trunc(tmp.transfer_date) < trunc(kl.start_date)
6091 THEN trunc(kl.start_date)
6092 ELSE tmp.transfer_date
6093 END
6094 ) subline_sdate,
6095 kl.end_date subline_edate,
6096 (decode(row_number() over (partition by kl.dnz_chr_id order by kl.cle_id), 1,
6097 oks_mass_update_pvt.get_seq_no ('H', 'NEW',kh.end_date)
6098 , oks_mass_update_pvt.get_seq_no ('H', 'OLD', kh.end_date))
6099
6100 ) newcontractid,
6101 (decode(row_number() over (partition by kl.dnz_chr_id, kl.cle_id order by kl.rowid), 1
6102 , oks_mass_update_pvt.get_seq_no ('L', 'NEW',kl.end_date)
6103 , oks_mass_update_pvt.get_seq_no ('L', 'OLD',kl.end_date))
6104 ) newlineid,
6105 oks_mass_update_pvt.get_seq_no ('SL', 'NEW',kl.end_date) newsublineid,
6106 st.ste_code subline_status,
6107 tmp.transfer_date transfer_date,
6108 tmp.old_customer_product_id custprod_id,
6109 kl.price_negotiated,
6110 kl.price_unit,
6111 ki.number_of_items,
6112 DECODE (kl2.lse_id ,14,'WARRANTY','OTHERS'),
6113 tmp.transaction_date,
6114 Party.object1_id1,
6115 Kh.authoring_org_id,
6116 NVL(P_credit_option
6117 ,OKS_IB_UTIL_PVT.get_credit_option(party.object1_id1,kh.authoring_org_id,tmp.transaction_date)),
6118 Kh.inv_organization_id
6119 FROM okc_k_items ki,
6120 okc_k_headers_all_b kh,
6121 oks_k_headers_b ks,
6122 okc_k_lines_b kl,
6123 okc_statuses_b st,
6124 okc_statuses_b Hst,
6125 oks_k_lines_b ks1,
6126 oks_k_lines_b ks2,
6127 okc_k_lines_b kl2,
6128 oks_instance_temp tmp,
6129 okc_k_party_roles_b party
6130 WHERE ki.object1_id1 = to_char(tmp.old_customer_product_id)
6131 AND tmp.trf = 'Y'
6132 AND ki.jtot_object1_code = 'OKX_CUSTPROD'
6133 AND ki.dnz_chr_id = kh.ID
6134 AND kh.scs_code IN ('WARRANTY', 'SERVICE', 'SUBSCRIPTION')
6135 And Kh.sts_code = Hst.code
6136 AND ki.cle_id = kl.ID
6137 AND kl.sts_code = st.code
6138 AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED')
6139 AND kl.date_terminated IS NULL
6140 AND kh.template_yn = 'N'
6141 --AND kl.cle_id = kl1.cle_id
6142 --AND ks1.cle_id = kl1.ID
6143 --AND kl1.lse_id IN (2, 20, 15)
6144 AND kl2.ID = kl.cle_id
6145 AND kl2.cle_id IS NULL
6146 AND kl2.id = ks1.cle_id -- Added for coverage
6147 and ks1.coverage_id = ks2.cle_id(+) -- Added for coverage
6148 AND party.dnz_chr_id = kh.ID
6149 AND party.chr_id IS NOT NULL
6150 AND party.cle_id IS NULL
6151 AND party.rle_code IN ('CUSTOMER', 'SUBSCRIBER')
6152 AND party.jtot_object1_code = 'OKX_PARTY'
6153 AND party.object1_id1 <> p_party_id
6154 AND kh.ID = ks.chr_id(+)
6155 AND ( ( TRUNC (tmp.transfer_date) <= TRUNC (kl.end_date)
6156 AND TRUNC (tmp.transfer_date) >= TRUNC (kl.start_date)
6157 )
6158 OR (TRUNC (tmp.transfer_date) <= TRUNC (kl.start_date))
6159 OR ( TRUNC (kl.end_date) < TRUNC (tmp.transfer_date)
6160 AND kl.Date_renewed is Null and kl.lse_id <> 18
6161 )
6162 )
6163 AND ( ('TRANSFER' = p_transfer_rule)
6164 OR ( 'COVERAGE' = p_transfer_rule
6165 AND ( ks2.transfer_option = 'TRANS'
6166 OR ( ks2.transfer_option = 'TRANS_NO_REL'
6167 AND NVL (l_relationship, 'Y') = 'Y'
6168 )
6169 )
6170 )
6171 )
6172 ;
6173
6174
6175 CURSOR get_k_for_trfterm_csr (
6176 p_transfer_rule VARCHAR2,
6177 l_relationship VARCHAR2,
6178 p_party_id NUMBER,
6179 P_credit_option Varchar2
6180
6181 )
6182 IS
6183
6184 SELECT ki.dnz_chr_id contract_id,
6185 ki.cle_id subline_id,
6186 sl.start_date subline_sdate,
6187 sl.end_date subline_edate,
6188 st.ste_code subline_sts,
6189 kh.start_date hdr_sdt,
6190 kh.end_date hdr_edt,
6191 kh.sts_code hdr_sts,
6192 Hst.ste_code hdr_ste,
6193 kh.contract_number,
6194 kh.contract_number_modifier,
6195 Tl.id top_line_id,
6196 Tl.start_date top_line_sdt,
6197 Tl.end_date Top_line_edt,
6198 party.object1_id1 party_id,
6199 tmp.transfer_date,
6200 tmp.old_customer_product_id custprod_id,
6201 sl.price_negotiated,
6202 sl.price_unit,
6203 ki.number_of_items,
6204 tmp.transaction_date,
6205 Kh.authoring_org_id,
6206 NVL(P_credit_option
6207 ,OKS_IB_UTIL_PVT.get_credit_option(party.object1_id1,kh.authoring_org_id,tmp.transaction_date)),
6208 Kh.inv_organization_id
6209
6210 FROM okc_k_items ki,
6211 okc_k_headers_all_b kh,
6212 oks_k_headers_b ks,
6213 okc_k_lines_b sl,
6214 okc_k_lines_b Tl,
6215 oks_k_lines_b okl,
6216 oks_k_lines_b okl1,
6217 okc_statuses_b st,
6218 okc_k_party_roles_b party,
6219 oks_instance_temp tmp,
6220 okc_statuses_b Hst
6221 WHERE tmp.trf = 'Y'
6222 AND ki.object1_id1 = to_char(tmp.old_customer_product_id)
6223 AND ki.jtot_object1_code = 'OKX_CUSTPROD'
6224 AND ki.dnz_chr_id = kh.ID
6225 AND ks.chr_id(+) = kh.ID
6226 AND kh.scs_code IN ('WARRANTY', 'SERVICE', 'SUBSCRIPTION')
6227 And kh.sts_code = Hst.code
6228 AND ki.cle_id = sl.ID
6229 AND sl.cle_id = Tl.id -- Added for coverage re-arc
6230 AND Tl.cle_id IS NULL -- Added for coverage re-arc
6231 AND Tl.id = okl.cle_id -- Added for coverage re-arc
6232 AND okl.coverage_id = okl1.cle_id(+) -- Added for coverage re-arc
6233 AND sl.sts_code = st.code
6234 AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED')
6235 AND sl.date_terminated IS NULL
6236 AND kh.template_yn = 'N'
6237 AND party.dnz_chr_id = kh.ID
6238 AND party.chr_id IS NOT NULL
6239 AND party.cle_id IS NULL
6240 AND party.rle_code IN ('CUSTOMER', 'SUBSCRIBER')
6241 AND party.jtot_object1_code = 'OKX_PARTY'
6242 AND party.object1_id1 <> p_party_id
6243 AND ( ( TRUNC (tmp.transfer_date) <= TRUNC (sl.end_date)
6244 AND TRUNC (tmp.transfer_date) >= TRUNC (sl.start_date)
6245 )
6246 OR (TRUNC (tmp.transfer_date) <= TRUNC (sl.start_date))
6247 OR ( TRUNC (sl.end_date) < TRUNC (tmp.transfer_date)
6248 AND sl.date_renewed is null and sl.lse_id <> 18
6249
6250 )
6251 )
6252 AND ( ('TERMINATE' = p_transfer_rule)
6253 OR ( 'COVERAGE' = p_transfer_rule
6254 AND ( okl1.transfer_option = 'TERM'
6255 OR ( okl1.transfer_option = 'TERM_NO_REL'
6256 AND NVL (l_relationship, 'Y') = 'Y'
6257 )
6258 )
6259 )
6260 )
6261 ;
6262
6263 CURSOR get_k_for_trm_csr(P_credit_option Varchar2)
6264 IS
6265 SELECT ki.dnz_chr_id AS contract_id,
6266 kl.cle_id AS topline_id,
6267 ki.cle_id AS subline_id,
6268 kh.start_date AS hdr_sdt,
6269 kh.end_date AS hdr_edt,
6270 Kh.sts_code AS hdr_sts,
6271 HSt.ste_code AS hdr_ste,
6272 kh.contract_number,
6273 kh.contract_number_modifier,
6274 tl.start_date AS srv_sdt,
6275 tl.end_date AS srv_edt,
6276 Lst.ste_code AS srv_sts,
6277 kl.start_date AS prod_sdate,
6278 kl.end_date AS prod_edate,
6279 st.ste_code AS prod_sts,
6280 tmp.termination_date AS term_date,
6281 tmp.old_customer_product_id AS instance_id,
6282 tmp.transaction_date AS transaction_date,
6283 ki.number_of_items AS qty,
6284 kl.price_negotiated AS price_negotiated,
6285 party.object1_id1 party_id,
6286 kh.authoring_org_id,
6287 NVL(P_credit_option
6288 ,OKS_IB_UTIL_PVT.get_credit_option(party.object1_id1,kh.authoring_org_id,tmp.transaction_date)),
6289 Kh.inv_organization_id
6290 FROM okc_k_items ki,
6291 okc_k_headers_all_b kh,
6292 okc_k_lines_b kl,
6293 okc_statuses_b st,
6294 oks_instance_temp tmp,
6295 okc_k_lines_b tl,
6296 okc_k_party_roles_b party,
6297 Okc_statuses_b Hst,
6298 Okc_statuses_b Lst
6299 WHERE tmp.trm = 'Y'
6300 AND ki.object1_id1 = to_char(tmp.old_customer_product_id)
6301 AND ki.jtot_object1_code = 'OKX_CUSTPROD'
6302 AND ki.dnz_chr_id = kh.ID
6303 AND kh.scs_code IN ('WARRANTY', 'SERVICE', 'SUBSCRIPTION')
6304 And Kh.sts_code = Hst.code
6305 AND ki.cle_id = kl.ID
6306 AND tl.ID = kl.cle_id
6307 And tl.sts_code = Lst.code
6308 AND kl.sts_code = st.code
6309 AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED')
6310 AND kl.date_terminated IS NULL
6311 AND kh.template_yn = 'N'
6312 AND party.dnz_chr_id = kh.ID
6313 AND party.chr_id IS NOT NULL
6314 AND party.cle_id IS NULL
6315 AND party.rle_code IN ('CUSTOMER', 'SUBSCRIBER')
6316 AND party.jtot_object1_code = 'OKX_PARTY'
6317 AND ( ( TRUNC (tmp.Termination_date) <= TRUNC (kl.end_date)
6318 AND TRUNC (tmp.Termination_date) >= TRUNC (kl.start_date)
6319 )
6320 OR (TRUNC (tmp.Termination_date) <= TRUNC (kl.start_date))
6321 OR ( TRUNC (kl.end_date) < TRUNC (tmp.Termination_date)
6322 AND Kl.date_renewed is null and kl.lse_id <> 18
6323 )
6324 )
6325 UNION
6326 SELECT ki.dnz_chr_id AS contract_id,
6327 kl.cle_id AS topline_id,
6328 ki.cle_id AS subline_id,
6329 kh.start_date AS hdr_sdt,
6330 kh.end_date AS hdr_edt,
6331 kh.sts_code AS hdr_sts,
6332 HSt.ste_code AS hdr_ste,
6333 kh.contract_number,
6334 kh.contract_number_modifier,
6335 tl.start_date AS srv_sdt,
6336 tl.end_date AS srv_edt,
6337 Lst.ste_code AS srv_sts,
6338 kl.start_date AS prod_sdate,
6339 kl.end_date AS prod_edate,
6340 st.ste_code AS prod_sts,
6341 tmp.termination_date AS term_date,
6342 tmp.old_customer_product_id AS instance_id,
6343 tmp.transaction_date AS transaction_date,
6344 ki.number_of_items AS qty,
6345 kl.price_negotiated AS price_negotiated,
6346 party.object1_id1 party_id,
6347 kh.authoring_org_id,
6348 NVL(P_credit_option
6349 ,OKS_IB_UTIL_PVT.get_credit_option(party.object1_id1,kh.authoring_org_id,tmp.transaction_date)),
6350 Kh.inv_organization_id
6351
6352
6353
6354 FROM okc_k_items ki,
6355 okc_k_headers_all_b kh,
6356 okc_k_lines_b kl,
6357 okc_k_lines_b tl,
6358 okc_statuses_b st,
6359 csi_counter_associations ctrAsc,
6360 oks_instance_temp tmp,
6361 okc_k_party_roles_b party,
6362 okc_statuses_b Hst,
6363 okc_statuses_b Lst
6364 WHERE tmp.trm = 'Y'
6365 AND ki.object1_id1 = to_char(ctrAsc.counter_id)
6366 AND ctrAsc.source_object_id = tmp.old_customer_product_id
6367 And ctrAsc.source_object_code = 'CP'
6368 AND ki.jtot_object1_code = 'OKX_COUNTER'
6369 AND ki.dnz_chr_id = kh.ID
6370 AND kh.scs_code IN ('SERVICE', 'SUBSCRIPTION')
6371 And Kh.sts_code = Hst.code
6372 AND ki.cle_id = kl.ID
6373 AND tl.ID = kl.cle_id
6374 And tl.sts_code = Lst.code
6375 AND kl.sts_code = st.code
6376 AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED')
6377 AND kl.date_terminated IS NULL
6378 AND kh.template_yn = 'N'
6379 AND party.dnz_chr_id = kh.ID
6380 AND party.chr_id IS NOT NULL
6381 AND party.cle_id IS NULL
6382 AND party.rle_code IN ('CUSTOMER', 'SUBSCRIBER')
6383 AND party.jtot_object1_code = 'OKX_PARTY'
6384
6385 AND ( ( TRUNC (tmp.Termination_date) <= TRUNC (kl.end_date)
6386 AND TRUNC (tmp.Termination_date) >= TRUNC (kl.start_date)
6387 )
6388 OR (TRUNC (tmp.Termination_date) <= TRUNC (kl.start_date))
6389 OR ( TRUNC (kl.end_date) < TRUNC (tmp.Termination_date)
6390 AND Kl.date_renewed is null and kl.lse_id <> 18
6391 )
6392 );
6393
6394 CURSOR get_k_for_idc_csr
6395 IS
6396 select a.*, cs.creation_date
6397 from ( SELECT ki.dnz_chr_id AS contract_id,
6398 kl.cle_id AS topline_id,
6399 ki.cle_id AS subline_id,
6400 kh.start_date AS hdr_sdt,
6401 kh.end_date AS hdr_edt,
6402 kh.sts_code AS hdr_sts,
6403 tl.start_date AS srv_sdt,
6404 tl.end_date AS srv_edt,
6405 tl.sts_code AS srv_sts,
6406 kl.start_date AS prod_sdate,
6407 kl.end_date AS prod_edate,
6408 kl.sts_code AS prod_sts,
6409 tmp.installation_date AS idc_date,
6410 TRUNC (oks_mass_update_pvt.get_end_date (kl.start_date,
6411 kl.end_date,
6412 tmp.installation_date
6413 )
6414 ) AS new_edt,
6415 ki.number_of_items,
6416 tmp.transaction_date,
6417 tmp.old_customer_product_id,
6418 (Kh.COntract_number||' '||Kh.Contract_number_Modifier)COntract_number,
6419 kl.line_number
6420
6421
6422
6423 FROM okc_k_items ki,
6424 okc_k_headers_all_b kh,
6425 okc_k_lines_b kl,
6426 okc_statuses_b st,
6427 oks_instance_temp tmp,
6428 okc_k_lines_b tl,
6429 oks_k_lines_v ksl,
6430 oks_k_lines_b ks11
6431 WHERE tmp.idc = 'Y'
6432 AND NVL(tmp.trm, 'N') = 'N'
6433 AND ki.object1_id1 = to_char(tmp.old_customer_product_id)
6434 AND ki.jtot_object1_code = 'OKX_CUSTPROD'
6435 AND ki.dnz_chr_id = kh.ID
6436 AND kh.scs_code IN ('WARRANTY')
6437 AND ki.cle_id = kl.ID
6438 AND tl.ID = kl.cle_id
6439 AND kl.sts_code = st.code
6440 AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED', 'HOLD')
6441 AND kl.date_terminated IS NULL
6442 AND kh.template_yn = 'N'
6443 AND kl.lse_id = 18
6444 And Ksl.cle_id = Tl.id
6445 And ks11.cle_id = Ksl.coverage_id
6446 And Nvl(ks11.sync_date_install,'N') = 'Y'
6447 ) a, cs_incidents_all_b cs
6448 where cs.customer_product_id(+) = a.old_customer_product_id
6449 AND cs.contract_service_id(+) = a.topline_ID;
6450
6451 CURSOR get_batch_rules_trm_csr
6452 IS
6453 SELECT credit_option,
6454 nvl(termination_reason_code,'EXP')
6455 FROM oks_batch_rules
6456 WHERE batch_id = p_batch_id;
6457
6458 CURSOR get_batch_rules_csr
6459 IS
6460 SELECT b.ID biling_profile_id,
6461 NVL (b.invoice_object1_id1, -2) invoicing_rule,
6462 NVL (b.account_object1_id1, 1) accounting_rule,
6463 a.transaction_date transfer_date,
6464 a.credit_option,
6465 nvl(a.termination_reason_code,'TRF') termination_reason_code,
6466 a.retain_contract_number_flag,
6467 a.contract_modifier,
6468 a.contract_status,
6469 a.transfer_notes_flag,
6470 a.transfer_attachments_flag,
6471 a.bill_lines_flag,
6472 a.transfer_option_code transfer_option,
6473 a.bill_account_id,
6474 a.ship_account_id,
6475 a.bill_address_id,
6476 a.ship_address_id,
6477 a.bill_contact_id,
6478 -- a.ship_contact_id,
6479 NVL(a.new_account_id,p_new_acct_id) new_customer_id,
6480 c.party_id new_party_id,
6481 d.party_name party_name,
6482 a.batch_id batch_id
6483 FROM oks_batch_rules a,
6484 oks_billing_profiles_b b,
6485 hz_cust_accounts c,
6486 hz_parties d
6487 WHERE a.batch_id = p_batch_id
6488 AND b.ID(+) = a.billing_profile_id
6489 AND c.cust_account_id = NVL(a.new_account_id, p_new_acct_id)
6490 AND c.party_id = d.party_id;
6491
6492 CURSOR get_topline_dates_csr
6493
6494 IS
6495 SELECT distinct temp.topline_id
6496 ,line.start_date,
6497 line.end_date
6498 FROM okc_k_lines_b line
6499 , oks_instance_k_dtls_temp temp
6500 WHERE line.ID = temp.topline_id;
6501
6502 CURSOR check_renewal_link (
6503 p_line_id NUMBER
6504 )
6505 IS
6506 SELECT subject_cle_id
6507 FROM okc_operation_instances op,
6508 okc_operation_lines ol
6509 WHERE ol.oie_id = op.ID
6510 AND op.cop_id = 41
6511 AND ol.subject_cle_id = p_line_id;
6512
6513 CURSOR get_qclid_csr (
6514 p_id NUMBER
6515 )
6516 IS
6517 SELECT qcl_id
6518 FROM okc_k_headers_all_b
6519 WHERE ID = p_id;
6520
6521 CURSOR check_relation_csr
6522 IS
6523 SELECT DISTINCT a.relationship_type
6524 FROM hz_relationships a,
6525 hz_cust_accounts b1,
6526 hz_cust_accounts b2,
6527 oks_instance_temp c
6528 WHERE ( ( a.object_id = b1.party_id
6529 AND a.subject_id = b2.party_id
6530 )
6531 OR ( a.object_id = b2.party_id
6532 AND a.subject_id = b1.party_id
6533 )
6534 )
6535 AND a.relationship_type =
6536 fnd_profile.VALUE ('OKS_TRF_PARTY_REL')
6537 AND a.status = 'A'
6538 AND TRUNC (c.transfer_date) BETWEEN TRUNC (a.start_date)
6539 AND TRUNC (a.end_date)
6540 AND b1.cust_account_id = c.new_customer_acct_id
6541 AND b2.cust_account_id = c.old_customer_acct_id
6542 AND ROWNUM < 2;
6543
6544
6545
6546 CURSOR Check_batch_csr (
6547 p_batch_id NUMBER
6548 )
6549 IS
6550 SELECT 'x'
6551 FROM oks_batch_rules
6552 WHERE batch_id = p_batch_id;
6553
6554
6555
6556 CURSOR get_inst_hist_csr (
6557 p_batch_id NUMBER
6558 )
6559 IS
6560 SELECT b.ID,
6561 (SELECT start_date
6562 FROM okc_k_headers_all_b
6563 WHERE ID = new_contract_id),
6564 (SELECT end_date
6565 FROM okc_k_headers_all_b
6566 WHERE ID = new_contract_id),
6567 (SELECT sts_code
6568 FROM okc_k_headers_all_b
6569 WHERE ID = new_contract_id),
6570 (SELECT start_date
6571 FROM okc_k_lines_b
6572 WHERE ID = new_serviceline_id),
6573 (SELECT end_date
6574 FROM okc_k_lines_b
6575 WHERE ID = new_serviceline_id),
6576 (SELECT price_negotiated
6577 FROM okc_k_lines_b
6578 WHERE ID = new_subline_id)
6579 FROM oks_instance_k_dtls_temp a,
6580 oks_instance_history b
6581 WHERE b.batch_id = p_batch_id
6582 AND a.instance_id = b.instance_id
6583 AND b.transaction_type = 'TRF';
6584
6585
6586
6587
6588 Cursor l_subline_invtext_csr Is
6589 Select Kl.Id
6590 ,(substr(ksl.invoice_text,1,instr(ksl.invoice_text,':',1,3))||kl.start_date||' - '|| kl.end_date)
6591 From Okc_k_lines_b Kl
6592 ,Oks_k_lines_v Ksl
6593 ,OKs_instance_k_dtls_temp temp
6594 Where kl.id = temp.subline_id
6595 And Ksl.cle_id = Kl.id;
6596
6597 Cursor L_topline_csr Is
6598 Select distinct a.Topline_id, a.start_date, a.end_date
6599 From (select line.cle_id topline_id
6600 , min(line.start_date) start_date
6601 , max(line.end_date) end_date
6602 From OKs_instance_k_dtls_temp temp
6603 , okc_K_lines_b line
6604 Where line.cle_id = temp.topline_id
6605 And line.lse_id = 18
6606 group by line.cle_id) a;
6607
6608 Cursor l_invoice_text_csr Is
6609 Select distinct Kl.Id
6610 ,(substr(ksl.invoice_text,1,instr(ksl.invoice_text,':',1,1))||kl.start_date||' - '|| kl.end_date)
6611 From Okc_k_lines_b Kl
6612 ,Oks_k_lines_v Ksl
6613 ,OKs_instance_k_dtls_temp temp
6614 Where kl.id = temp.topline_id
6615 And Ksl.cle_id = Kl.id;
6616
6617 Cursor L_contract_csr Is
6618 Select distinct a.Contract_id, a.start_date, a.end_date
6619 From (Select line.dnz_chr_id contract_id
6620 ,min(line.start_date) start_date
6621 , max(line.end_date) end_date
6622 From OKs_instance_k_dtls_temp temp
6623 , okc_k_lines_b line
6624 Where line.dnz_chr_id = temp.contract_id
6625 And line.lse_id = 14
6626 group by line.dnz_chr_id) a;
6627
6628
6629 CURSOR get_srv_details_csr(p_contract_id Number) IS
6630 Select Distinct temp.topline_id
6631 ,St.ste_code
6632 From Oks_instance_k_dtls_temp temp
6633 , okc_k_lines_b line
6634 , Okc_statuses_b St
6635 Where line.id = temp.Topline_id
6636 And temp.contract_id = p_contract_id
6637 And St.code = line.sts_code;
6638
6639 Cursor get_contract_csr Is
6640 Select distinct temp.contract_id
6641 , kh.authoring_org_id
6642 , kh.inv_organization_id
6643 , St.ste_code
6644 From OKs_instance_k_dtls_temp temp
6645 , Okc_k_headers_all_b Kh
6646 , Okc_statuses_b St
6647 Where Kh.Id = temp.contract_id
6648 And St.code = Kh.sts_code;
6649
6650
6651 -- Local Variables
6652 l_renewal_id NUMBER;
6653 l_source_line_id NUMBER;
6654 l_object_line_id NUMBER;
6655 l_object_chr_id NUMBER;
6656 l_transfer_id NUMBER;
6657 l_qcl_id NUMBER;
6658
6659 j NUMBER;
6660 l_count NUMBER := 1;
6661 l_sts_code VARCHAR2 (30);
6662 l_ste_code VARCHAR2 (30);
6663 l_relationship VARCHAR2 (40);
6664 l_term_date DATE;
6665 l_cancel_date DATE;
6666 l_ctr NUMBER := 1;
6667 l_found BOOLEAN := FALSE;
6668 l_dummy_var VARCHAR2(1);
6669 -- Variables for attachments
6670 l_entity_name VARCHAR2 (30);
6671 l_from_entity_name VARCHAR2 (30);
6672 l_to_entity_name VARCHAR2 (30);
6673 l_from_version fnd_attached_documents.pk2_value%TYPE;
6674 -- Valiables for notes
6675 l_jtf_note_id NUMBER;
6676 l_jtf_note_contexts_tab jtf_notes_pub.jtf_note_contexts_tbl_type;
6677 l_note_details csi_mass_edit_entries_tl.Description%TYPE;
6678 --Contract Line Table
6679 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
6680 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
6681 --Contract Header
6682 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
6683 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
6684 -- workflow variabled
6685 l_wf_attributes oks_wf_k_process_pvt.wf_attr_details;
6686 -- Instance History
6687 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
6688 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
6689 l_insthist_rec oks_ins_pvt.insv_rec_type;
6690 x_insthist_rec oks_ins_pvt.insv_rec_type;
6691 l_warn_return_status Varchar2(1);
6692 -- plsql collections for old and new contract ids and other
6693 -- attributes
6694 contract_number okc_datatypes.var120tabtyp;
6695 contract_number_modifier okc_datatypes.var120tabtyp;
6696 contractnumber_modifier okc_datatypes.var240tabtyp;
6697 line_number okc_datatypes.var240tabtyp;
6698 qa_contract_id okc_datatypes.numbertabtyp;
6699 customer_product_tbl okc_datatypes.numbertabtyp;
6700 contract_id okc_datatypes.numbertabtyp;
6701 old_contract_id okc_datatypes.numbertabtyp;
6702 subline_id okc_datatypes.numbertabtyp;
6703 topline_id okc_datatypes.numbertabtyp;
6704 subline_old_sdate okc_datatypes.datetabtyp;
6705 subline_sdate okc_datatypes.datetabtyp;
6706 subline_edate okc_datatypes.datetabtyp;
6707 subline_sts okc_datatypes.var30tabtyp;
6708 hdr_sdt okc_datatypes.datetabtyp;
6709 hdr_edt okc_datatypes.datetabtyp;
6710 hdr_sts okc_datatypes.var30tabtyp;
6711 hdr_ste okc_datatypes.var30tabtyp;
6712 topline_sdate okc_datatypes.datetabtyp;
6713 topline_edate okc_datatypes.datetabtyp;
6714 topline_sts okc_datatypes.var30tabtyp;
6715 sr_date okc_datatypes.datetabtyp;
6716 new_edt okc_datatypes.datetabtyp;
6717 party_id okc_datatypes.numbertabtyp;
6718 term_date okc_datatypes.datetabtyp;
6719 trf_date okc_datatypes.datetabtyp;
6720 idc_date okc_datatypes.datetabtyp;
6721 new_contract_id okc_datatypes.numbertabtyp;
6722 new_line_id okc_datatypes.numbertabtyp;
6723 new_subline_id okc_datatypes.numbertabtyp;
6724 custprod_id okc_datatypes.numbertabtyp;
6725 price_unit okc_datatypes.numbertabtyp;
6726 price_negotiated okc_datatypes.numbertabtyp;
6727 number_of_items okc_datatypes.numbertabtyp;
6728 new_k_sdate okc_datatypes.datetabtyp;
6729 new_k_edate okc_datatypes.datetabtyp;
6730 new_l_sdate okc_datatypes.datetabtyp;
6731 new_l_edate okc_datatypes.datetabtyp;
6732 new_k_status okc_datatypes.var30tabtyp;
6733 new_price_negotiated okc_datatypes.numbertabtyp;
6734 ins_id okc_datatypes.numbertabtyp;
6735 header_id okc_datatypes.numbertabtyp;
6736 top_line_id okc_datatypes.numbertabtyp;
6737 sub_line_id okc_datatypes.numbertabtyp;
6738 Hdr_new_Sdate okc_datatypes.datetabtyp;
6739 line_new_sdate okc_datatypes.datetabtyp;
6740 Hdr_new_edate okc_datatypes.datetabtyp;
6741 line_new_edate okc_datatypes.datetabtyp;
6742 transaction_date okc_datatypes.datetabtyp;
6743 hdr_warranty okc_datatypes.var30tabtyp;
6744 org_id okc_datatypes.numbertabtyp;
6745 organization_id okc_datatypes.numbertabtyp;
6746 credit_option okc_datatypes.var30tabtyp;
6747 inv_text var2000tabtyp;
6748 invoice_text var2000tabtyp;
6749 l_return_status VARCHAR2 (1) := 'S';
6750 l_msg_count NUMBER;
6751 l_msg_data VARCHAR2 (2000);
6752 l_suppress_credit VARCHAR2 (2) := 'N';
6753 l_full_credit VARCHAR2 (2) := 'N';
6754 l_trf_dt DATE;
6755 l_trm_dt DATE;
6756 l_idc_dt DATE;
6757 l_top_sdt DATE;
6758 l_top_edt DATE;
6759 l_rnrl_rec_out oks_renew_util_pvt.rnrl_rec_type;
6760 batch_rules_rec batch_rules_rec_type;
6761 batch_rules_trm_rec batch_rules_trm_type;
6762 l_cancel_source Varchar2(30);
6763 l_cancel_reason Varchar2(30);
6764 l_new_acct_id Number;
6765 l_old_acct_id Number;
6766 l_instance_history_created Varchar2(1) := 'N';
6767 l_date_cancel Date;
6768 l_term_flag VARCHAR2(1) := 'N';
6769 l_termination_source Varchar2(30);
6770 l_sr_flag varchar2(1);
6771 l_credit_option Varchar(30);
6772 l_termination_reason Varchar2(240);
6773 L_line_date_renewed Date;
6774 L_hdr_date_renewed Date;
6775
6776
6777
6778 FUNCTION check_contract_duplicate (
6779 p_k_id IN NUMBER
6780 )
6781 RETURN BOOLEAN
6782 IS
6783 BEGIN
6784 IF l_gl_dummy = p_k_id
6785 THEN
6786 l_gl_dummy := p_k_id;
6787 RETURN (TRUE);
6788 ELSE
6789 l_gl_dummy := p_k_id;
6790 RETURN (FALSE);
6791 END IF;
6792 END;
6793
6794 -- Begin Update Contracts
6795 BEGIN
6796 IF (p_init_msg_list = 'Y') then
6797 fnd_msg_pub.initialize();
6798 END IF;
6799
6800 fnd_file.put_line(fnd_file.log,'(OKS) -> ***********OKS**********Begin*********OKS***********');
6801
6802 fnd_file.put_line(fnd_file.log,'(OKS) -> Batch Id = ( '|| p_batch_id||' ) New Account Id = ( '||p_new_acct_id ||' )');
6803 l_return_status := 'S';
6804
6805
6806
6807 If p_batch_id IS NULL
6808 THEN
6809 fnd_file.put_line(fnd_file.log,'(OKS) -> Batch id is not passed to Contracts.');
6810
6811 RAISE G_EXCEPTION_HALT_VALIDATION;
6812 ELSE
6813
6814 OPEN Check_batch_csr (p_batch_id);
6815 FETCH Check_batch_csr into l_dummy_var;
6816 IF Check_batch_csr%NOTFOUND
6817 THEN
6818 fnd_file.put_line(fnd_file.log,'(OKS) -> No batch rules defined');
6819
6820 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6821 THEN
6822 fnd_log.STRING (fnd_log.level_event,
6823 g_module_current || 'oks_mass_update.Update_contracts',
6824 'No Batch rules defined' );
6825 END IF;
6826
6827 oks_ibint_pub.create_batch_rules
6828 (
6829 P_Api_Version => 1.0,
6830 P_init_msg_list => 'F',
6831 P_Batch_ID => p_batch_id,
6832 p_batch_type => p_batch_type,
6833 x_return_status => l_return_status,
6834 x_msg_count => l_msg_count,
6835 x_msg_data => l_msg_data );
6836
6837 fnd_file.put_line(fnd_file.log,'(OKS) -> Forms Batch Rules status = ( '||l_return_status||' )');
6838 IF l_return_status <> 'S'
6839 THEN
6840 Okc_api.set_message
6841 (g_app_name,
6842 'OKS_BATCH_ERROR'
6843 );
6844
6845 RAISE g_exception_halt_validation;
6846 END IF;
6847
6848 END IF;
6849 CLOSE Check_batch_csr;
6850
6851 END IF;
6852
6853 IF p_batch_type = 'XFER'
6854 THEN
6855 OPEN get_batch_rules_csr;
6856 FETCH get_batch_rules_csr INTO batch_rules_rec;
6857
6858 IF get_batch_rules_csr%NOTFOUND
6859 THEN
6860
6861 Okc_api.set_message
6862 (g_app_name,
6863 'OKS_NO_BATCH_RULES_EXIST' ,
6864 'BATCHID',
6865 P_batch_id
6866 );
6867
6868 RAISE G_EXCEPTION_HALT_VALIDATION ;
6869
6870 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6871 THEN
6872 fnd_log.STRING (fnd_log.level_event,
6873 g_module_current || 'oks_mass_update.Update_contracts',
6874 'No Batch rules created' );
6875 END IF;
6876
6877 END IF;
6878
6879 CLOSE get_batch_rules_csr;
6880 ELSIF p_batch_type = 'TRM' Then
6881 OPEN get_batch_rules_trm_csr;
6882 FETCH get_batch_rules_trm_csr INTO batch_rules_trm_rec;
6883
6884 IF get_batch_rules_trm_csr%NOTFOUND
6885 THEN
6886 Okc_api.set_message
6887 (g_app_name,
6888 'OKS_NO_BATCH_RULES_EXIST',
6889 'BATCHID',
6890 P_batch_id
6891 );
6892
6893 RAISE G_EXCEPTION_HALT_VALIDATION ;
6894 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6895 THEN
6896 fnd_log.STRING (fnd_log.level_event,
6897 g_module_current || 'oks_mass_update.Update_contracts',
6898 'No Batch rules created' );
6899 END IF;
6900 END IF;
6901 CLOSE get_batch_rules_trm_csr;
6902 END IF;
6903
6904 fnd_file.put_line(fnd_file.log,'(OKS) -> Batch Type = ( ' || p_batch_type
6905 || ' ) Batch id = ( ' || p_batch_id || ' ) Transfer Option = ( ' || batch_rules_rec.transfer_option|| ' )');
6906
6907 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6908 THEN
6909 fnd_log.STRING (fnd_log.level_event,
6910 g_module_current || 'oks_mass_update.Update_contracts',
6911 'Batch Type = ( '|| p_batch_type || ') Batch id = ( '
6912 || p_batch_id || ')' );
6913 END IF;
6914
6915 IF p_batch_type = 'XFER' -- 'CSI_MU_TRANSFER_OWNER'
6916 THEN
6917
6918 IF P_new_acct_id IS NULL
6919 THEN
6920 fnd_file.put_line(fnd_file.log,'(OKS) -> New Account id is not passed to Contracts.');
6921 okc_api.set_message
6922 (
6923 g_app_name,
6924 'OKS_NULL_ACCOUNT_ID',
6925 'BATCHID',
6926 P_batch_id
6927 );
6928
6929 RAISE G_EXCEPTION_HALT_VALIDATION;
6930 END IF;
6931 IF UPPER (batch_rules_rec.transfer_option) = 'NOCHANGE'
6932 THEN
6933 NULL;
6934 END IF;
6935
6936 IF UPPER (batch_rules_rec.transfer_option) = 'COVERAGE'
6937 THEN
6938 l_relationship := NULL;
6939
6940 OPEN check_relation_csr;
6941 FETCH check_relation_csr INTO l_relationship;
6942 CLOSE check_relation_csr;
6943 fnd_file.put_line(fnd_file.log,'(OKS) -> Relationship = ( '|| l_relationship|| ' )');
6944 END IF;
6945 l_termination_source := 'IBTRANSFER';
6946
6947 IF batch_rules_rec.transfer_option = 'TERMINATE'
6948 OR batch_rules_rec.transfer_option = 'COVERAGE'
6949 THEN
6950 OPEN get_k_for_trfterm_csr (batch_rules_rec.transfer_option,
6951 l_relationship,
6952 batch_rules_rec.new_party_id,
6953 batch_rules_rec.credit_option
6954 );
6955
6956 IF get_k_for_trfterm_csr%ISOPEN
6957 THEN
6958 FETCH get_k_for_trfterm_csr
6959 BULK COLLECT INTO contract_id,
6960 subline_id,
6961 subline_sdate,
6962 subline_edate,
6963 subline_sts,
6964 hdr_sdt,
6965 hdr_edt,
6966 hdr_sts,
6967 hdr_ste,
6968 contract_number,
6969 contract_number_modifier,
6970 topline_id,
6971 topline_sdate,
6972 topline_edate,
6973 party_id,
6974 trf_date,
6975 custprod_id,
6976 price_negotiated,
6977 price_unit,
6978 number_of_items,
6979 transaction_date,
6980 Org_id,
6981 credit_option,
6982 organization_id;
6983 END IF;
6984
6985 CLOSE get_k_for_trfterm_csr;
6986
6987 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate/Coverage: Number of impacted contracts = ( '
6988 || contract_id.COUNT || ' )');
6989
6990 IF contract_id.count>0
6991 THEN
6992 FOR i IN 1..subline_sts.COUNT
6993 LOOP
6994 IF hdr_ste(i) = 'HOLD'
6995 THEN
6996 l_found := TRUE;
6997 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
6998 fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.oks_mass_update.Update_contracts',
6999 ' Contract '||contract_number(i) ||' in QA_HOLD status' );
7000 END IF;
7001
7002 OKC_API.SET_MESSAGE(
7003 g_app_name,
7004 'OKS_CONTRACT_HOLD',
7005 'CONTRACTNUMBER',
7006 CONTRACT_NUMBER(i)||' '||CONTRACT_NUMBER_MODIFIER(i)
7007 );
7008
7009 END IF;
7010 END LOOP;
7011
7012 IF l_found
7013 THEN
7014 l_return_status := OKC_API.G_RET_STS_ERROR;
7015 RAISE G_EXCEPTION_HALT_VALIDATION;
7016 END IF;
7017 FORALL i IN contract_id.FIRST .. contract_id.LAST
7018 INSERT INTO oks_instance_k_dtls_temp
7019 (parent_id,
7020 contract_id,
7021 topline_id,
7022 subline_id,
7023 instance_id
7024 )
7025 VALUES (p_batch_id,
7026 contract_id (i),
7027 topline_id (i),
7028 subline_id (i),
7029 custprod_id (i)
7030 );
7031 fnd_file.put_line(fnd_file.log,'(OKS) -> Insert into global temp table Successful');
7032
7033 fnd_file.put_line(fnd_file.log,'subline_id.count'||subline_id.count);
7034
7035 IF subline_id.COUNT > 0
7036 THEN
7037 FOR i IN subline_id.FIRST .. subline_id.LAST
7038 LOOP
7039
7040
7041 l_trf_dt := trf_date (i);
7042 l_date_cancel := trf_date(i);
7043 l_term_flag:= 'N';
7044
7045 IF (TRUNC (l_date_cancel) <= TRUNC (subline_sdate (i)))
7046 Then
7047 l_date_cancel := subline_sdate(i);
7048 Elsif ( TRUNC (subline_edate (i)) < TRUNC (l_date_cancel) )
7049 Then
7050 l_date_cancel := subline_edate(i) + 1;
7051 End If;
7052
7053 IF (TRUNC (l_trf_dt) <= TRUNC (subline_sdate (i)))
7054 THEN
7055 l_trf_dt := subline_sdate(i);
7056 END IF;
7057 IF ( TRUNC (subline_edate (i)) < TRUNC (l_trf_dt) )
7058 THEN
7059 l_trf_dt := subline_edate(i) + 1;
7060 l_suppress_credit := 'Y';
7061 l_full_credit := 'N';
7062 l_term_flag := 'Y';
7063 Else
7064 IF UPPER (credit_option(i)) = 'FULL'
7065 THEN
7066 l_full_credit := 'Y';
7067 l_suppress_credit := 'N';
7068
7069 ELSIF UPPER (credit_option(i)) = 'NONE'
7070 THEN
7071 l_suppress_credit := 'Y';
7072 ELSIF UPPER (credit_option(i)) = 'CALCULATED'
7073 THEN
7074 l_suppress_credit := 'N';
7075 l_full_credit := 'N';
7076 End If;
7077 End If;
7078
7079
7080
7081
7082
7083 fnd_file.put_line(fnd_file.log,'(OKS) -> For Subline = ( '||subline_id(i)||' ) Status = ( '
7084 ||subline_sts(i) ||' ) Transfer Date is = ( '|| l_trf_dt||' )');
7085
7086 fnd_file.put_line(fnd_file.log,'(OKS) -> Credit Option = ( '|| batch_rules_rec.credit_option
7087 ||' ) Supress Credit = ( ' || l_suppress_credit || ' ) Full Credit = ( '
7088 || l_full_credit || ' )');
7089 okc_context.set_okc_org_context(org_id(i),organization_id(i));
7090
7091 terminate_subline
7092 (p_status => subline_sts (i),
7093 p_hdr_id => contract_id (i),
7094 p_end_date => subline_edate (i),
7095 p_cle_id => subline_id (i),
7096 p_termination_date => TRUNC (l_trf_dt),
7097 p_cancellation_date => TRUNC (l_date_cancel),
7098 P_term_flag => l_term_flag,
7099 p_terminate_reason => batch_rules_rec.termination_reason_code,
7100 p_termination_source => l_termination_source,
7101 p_suppress_credit => l_suppress_credit,
7102 p_full_credit => l_full_credit,
7103 x_return_status => l_return_status
7104 );
7105
7106 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7107 THEN
7108 fnd_log.STRING (fnd_log.level_event,
7109 g_module_current || 'oks_mass_update.Update_contracts',
7110 'Terminate_subline status = ( '|| l_return_status);
7111 END IF;
7112
7113 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate_subline status = ( '|| l_return_status|| ' )');
7114
7115 IF NOT l_return_status = okc_api.g_ret_sts_success
7116 THEN
7117 x_return_status := l_return_status;
7118 OKC_API.SET_MESSAGE
7119 (
7120 g_app_name,
7121 'OKS_TERMINATE_ERROR',
7122 'CONTRACTNUMBER',
7123 CONTRACT_NUMBER(i)||' '||CONTRACT_NUMBER_MODIFIER(i)
7124
7125 );
7126
7127 RAISE g_exception_halt_validation;
7128 END IF;
7129
7130 END LOOP;
7131 END IF;
7132
7133
7134 --Terminate/Cancel the TOpl Line/Header if all the sublines/Lines are terminated/Canceled.
7135 Terminate_cancel
7136 (p_termination_reason => batch_rules_rec.termination_reason_code ,
7137 P_termcancel_source => 'IBTRANSFER',
7138 p_cancel_reason => 'TRANSFER',
7139 X_return_status => l_return_status,
7140 X_msg_count => x_msg_count,
7141 X_msg_data => x_msg_data);
7142
7143
7144 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate/cancel Line/Hdr status = ( '|| l_return_status|| ' )');
7145
7146 IF NOT l_return_status = okc_api.g_ret_sts_success
7147 THEN
7148 x_return_status := l_return_status;
7149 OKC_API.SET_MESSAGE
7150 (
7151 g_app_name,
7152 'OKS_TERMINATE_CANCEL_ERROR'
7153 );
7154 RAISE g_exception_halt_validation;
7155 END IF;
7156 -- Insert into Instance History and Details
7157
7158 -- Create instance History
7159 INSERT INTO oks_instance_history
7160 (ID,
7161 object_version_number,
7162 instance_id,
7163 transaction_type,
7164 transaction_date,
7165 reference_number,
7166 PARAMETERS,
7167 created_by,
7168 creation_date,
7169 last_updated_by,
7170 last_update_date,
7171 last_update_login,
7172 batch_id
7173 )
7174 (SELECT okc_p_util.raw_to_number (SYS_GUID ()),
7175 1,
7176 b.instance_id,
7177 'TRF',
7178 a.transaction_date,
7179 b.instance_number,
7180 NULL, -- parameter
7181 fnd_global.user_id,
7182 SYSDATE,
7183 fnd_global.user_id,
7184 SYSDATE,
7185 fnd_global.login_id,
7186 p_batch_id
7187 FROM oks_instance_temp a,
7188 csi_item_instances b
7189 WHERE a.old_customer_product_id = b.instance_id);
7190
7191 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History Created ');
7192 --Set Variable to identify Instance history record is created to avoid duplicates.
7193 l_instance_history_created := 'Y';
7194 -- create instance history details
7195
7196
7197 FORALL i IN subline_id.FIRST .. subline_id.LAST
7198 INSERT INTO oks_inst_hist_details
7199 (ID,
7200 ins_id,
7201 transaction_date,
7202 transaction_type,
7203 instance_id_new,
7204 instance_qty_old,
7205 instance_qty_new,
7206 instance_amt_old,
7207 instance_amt_new,
7208 old_contract_id,
7209 old_contact_start_date,
7210 old_contract_end_date,
7211 new_contract_id,
7212 new_contact_start_date,
7213 new_contract_end_date,
7214 old_service_line_id,
7215 old_service_start_date,
7216 old_service_end_date,
7217 new_service_line_id,
7218 new_service_start_date,
7219 new_service_end_date,
7220 old_subline_id,
7221 old_subline_start_date,
7222 old_subline_end_date,
7223 new_subline_id,
7224 new_subline_start_date,
7225 new_subline_end_date,
7226 old_customer,
7227 new_customer,
7228 old_k_status,
7229 new_k_status,
7230 subline_date_terminated,
7231 object_version_number,
7232 created_by,
7233 creation_date,
7234 last_updated_by,
7235 last_update_date,
7236 last_update_login,
7237 Date_Cancelled,
7238 transfer_option
7239
7240 )
7241 (SELECT
7242 okc_p_util.raw_to_number (SYS_GUID ()),
7243 ins_hist.id ,
7244 transaction_date(1),
7245 'TRF',
7246 custprod_id (i),
7247 number_of_items (i),
7248 number_of_items (i),
7249 price_negotiated (i),
7250 lines_b.PRICE_NEGOTIATED ,
7251 contract_id (i),
7252 hdr_sdt (i),
7253 hdr_edt (i),
7254 contract_id (i),
7255 hdr_sdt (i),
7256 hdr_edt (i),
7257 topline_id(i),
7258 topline_sdate (i),
7259 topline_edate (i),
7260 topline_id (i),
7261 topline_sdate(i),
7262 topline_edate (i),
7263 subline_id (i),
7264 subline_sdate (i),
7265 subline_edate (i),
7266 subline_id (i),
7267 subline_sdate (i),
7268 subline_edate (i),
7269 p_old_acct_id, -- old_customer,
7270 p_old_acct_id, -- new_customer,
7271 hdr_sts (i),
7272 hdr.sts_code,
7273 lines_b.date_terminated, -- subline_date_terminated,
7274 1,
7275 fnd_global.user_id,
7276 SYSDATE,
7277 fnd_global.user_id,
7278 SYSDATE,
7279 fnd_global.login_id,
7280 lines_b.date_cancelled, --Date cancelled,
7281 'TERM'
7282 from oks_instance_history ins_hist,
7283 Okc_k_lines_b lines_b,
7284 okc_k_headers_all_b hdr
7285 Where ins_hist.batch_id = p_batch_id
7286 and instance_id = custprod_id(i) and lines_b.id = subline_id (i)
7287 And hdr.id =contract_id (i) ) ;
7288
7289 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History Details created successfully');
7290
7291
7292 END IF;
7293 END IF;
7294
7295 IF batch_rules_rec.transfer_option = 'TRANSFER'
7296 OR batch_rules_rec.transfer_option = 'COVERAGE'
7297 THEN
7298
7299 OPEN get_k_for_transfer_csr (batch_rules_rec.transfer_option,
7300 l_relationship,
7301 batch_rules_rec.new_party_id,
7302 batch_rules_rec.credit_option
7303 );
7304
7305 IF get_k_for_transfer_csr%ISOPEN
7306 THEN
7307 FETCH get_k_for_transfer_csr
7308 BULK COLLECT INTO contract_id,
7309 hdr_sdt,
7310 hdr_edt,
7311 hdr_sts,
7312 hdr_ste,
7313 contract_number,
7314 contract_number_modifier,
7315 topline_id,
7316 topline_sdate,
7317 topline_edate,
7318 subline_id,
7319 subline_old_sdate,
7320 subline_sdate,
7321 subline_edate,
7322 new_contract_id,
7323 new_line_id,
7324 new_subline_id,
7325 subline_sts,
7326 trf_date,
7327 custprod_id,
7328 price_negotiated,
7329 price_unit,
7330 number_of_items,
7331 hdr_warranty,
7332 transaction_date,
7333 party_id,
7334 org_id,
7335 credit_option,
7336 organization_id;
7337 END IF;
7338
7339 CLOSE get_k_for_transfer_csr;
7340
7341 fnd_file.put_line(fnd_file.log,'(OKS) -> Transfer/Coverage: Number of impacted contracts = ( '
7342 || contract_id.COUNT || ' )');
7343
7344 IF contract_id.count > 0
7345 THEN
7346 FOR i IN 1..subline_sts.COUNT
7347 LOOP
7348 IF hdr_ste(i) = 'HOLD'
7349 THEN
7350 l_found := TRUE;
7351 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
7352 fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.oks_mass_update.Update_contracts',
7353 ' Contract '||contract_number(i) ||' in QA_HOLD status' );
7354 END IF;
7355
7356
7357 OKC_API.SET_MESSAGE(
7358 g_app_name,
7359 'OKS_CONTRACT_HOLD',
7360 'CONTRACTNUMBER',
7361 CONTRACT_NUMBER(i)||' '||CONTRACT_NUMBER_MODIFIER(i)
7362 );
7363
7364 END IF;
7365 END LOOP;
7366
7367 IF l_found
7368 THEN
7369 l_return_status := OKC_API.G_RET_STS_ERROR;
7370 RAISE G_EXCEPTION_HALT_VALIDATION;
7371 END IF;
7372
7373 Delete Oks_Instance_k_dtls_temp where parent_id = p_batch_id;
7374
7375 FORALL i IN contract_id.FIRST .. contract_id.LAST
7376 INSERT INTO oks_instance_k_dtls_temp
7377 (parent_id,
7378 contract_id,
7379 topline_id,
7380 subline_id,
7381 new_contract_id,
7382 new_serviceline_id,
7383 new_subline_id,
7384 instance_id,
7385 new_start_date,
7386 new_end_date,
7387 amount
7388 )
7389 VALUES (p_batch_id,
7390 contract_id (i),
7391 topline_id (i),
7392 subline_id (i),
7393 new_contract_id (i),
7394 new_line_id (i),
7395 new_subline_id (i),
7396 custprod_id (i),
7397 subline_sdate (i),
7398 subline_edate (i),
7399 price_negotiated (i)
7400 );
7401 fnd_file.put_line(fnd_file.log,'(OKS) -> Insert into global temp table Successful');
7402
7403 -- Terminate/Cancel all the eligible lines
7404
7405
7406 fnd_file.put_line(fnd_file.log,'(OKS) -> **********Terminate All the impacted Sublines ********** ');
7407
7408 FOR i IN 1 .. subline_id.COUNT
7409 LOOP
7410 l_trf_dt := trf_date (i);
7411 l_date_cancel := trf_date(i);
7412 l_term_flag := 'N';
7413 IF (TRUNC (l_date_cancel) <= TRUNC (subline_old_sdate (i)))
7414 Then
7415 l_date_cancel := subline_old_sdate(i);
7416 Elsif ( TRUNC (l_date_cancel) > TRUNC (subline_edate (i)) )
7417 Then
7418 l_date_cancel := subline_edate(i) + 1;
7419 End If;
7420
7421 IF (TRUNC (l_trf_dt) <= TRUNC (subline_old_sdate (i)))
7422 THEN
7423 l_trf_dt := subline_old_sdate(i);
7424 END IF;
7425
7426 IF ( TRUNC (subline_edate (i)) < TRUNC (l_trf_dt) )
7427 THEN
7428 l_trf_dt := subline_edate(i) + 1;
7429 l_suppress_credit := 'Y';
7430 l_full_credit := 'N';
7431 l_term_flag := 'Y';
7432 ELse
7433 IF UPPER (credit_option(i)) = 'FULL'
7434 THEN
7435 l_full_credit := 'Y';
7436 l_suppress_credit := 'N';
7437
7438 ELSIF UPPER (credit_option(i)) = 'NONE'
7439 THEN
7440 l_suppress_credit := 'Y';
7441 ELSIF UPPER (credit_option(i)) = 'CALCULATED'
7442 THEN
7443 l_suppress_credit := 'N';
7444 l_full_credit := 'N';
7445 End If;
7446 End If;
7447
7448
7449
7450
7451 fnd_file.put_line(fnd_file.log,'(OKS) -> For Subline = ( '||subline_id(i)||' ) Status = ( '
7452 ||subline_sts(i) ||' ) Transfer Date is = ( '|| l_trf_dt || ' )');
7453
7454 fnd_file.put_line(fnd_file.log,'(OKS) -> Credit Option = ( '|| batch_rules_rec.credit_option
7455 ||' ) Supress Credit = ( ' || l_suppress_credit || ' ) Full Credit = ( '
7456 || l_full_credit|| ' )');
7457 okc_context.set_okc_org_context(org_id(i),organization_id(i));
7458
7459 terminate_subline
7460 (p_status => subline_sts (i),
7461 p_hdr_id => contract_id (i),
7462 p_end_date => subline_edate (i),
7463 p_cle_id => subline_id (i),
7464 p_termination_date => TRUNC (l_trf_dt),
7465 p_cancellation_date => TRUNC (l_date_cancel),
7466 p_term_flag => l_term_flag,
7467 p_terminate_reason => batch_rules_rec.termination_reason_code,
7468 p_termination_source => l_termination_source,
7469 p_suppress_credit => l_suppress_credit,
7470 p_full_credit => l_full_credit,
7471 x_return_status => l_return_status
7472 );
7473
7474 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate_subline status = ( '|| l_return_status|| ' )');
7475
7476 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7477 THEN
7478 fnd_log.STRING (fnd_log.level_event,
7479 g_module_current || 'oks_mass_update.Update_contracts',
7480 'Terminate_subline status = ( '|| l_return_status);
7481 END IF;
7482
7483 IF NOT l_return_status = okc_api.g_ret_sts_success
7484 THEN
7485 x_return_status := l_return_status;
7486 OKC_API.SET_MESSAGE
7487 (
7488 g_app_name,
7489 'OKS_TERMINATE_ERROR',
7490 'CONTRACTNUMBER',
7491 CONTRACT_NUMBER(i)||' '||CONTRACT_NUMBER_MODIFIER(i),
7492 'SUBLINE',
7493 subline_id (i)
7494 );
7495 RAISE g_exception_halt_validation;
7496 END IF;
7497 END LOOP;
7498
7499
7500
7501
7502
7503 fnd_file.put_line(fnd_file.log,'(OKS) -> *****************Create New Contracts****************');
7504
7505 -- Create new contract
7506 create_contract (p_api_version => 1.0,
7507 p_batch_rules => batch_rules_rec,
7508 P_transfer_date => trf_date(1),
7509 x_return_status => l_return_status,
7510 x_msg_data => x_msg_data,
7511 x_msg_count => x_msg_count
7512 );
7513
7514 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7515 THEN
7516 fnd_log.STRING (fnd_log.level_event,
7517 g_module_current || 'oks_mass_update.Update_contracts',
7518 'create_contract status = ( '|| l_return_status || ')');
7519 END IF;
7520
7521 fnd_file.put_line(fnd_file.log,'(OKS) -> Create contracts Status = ( '|| l_return_status|| ' )');
7522
7523 IF NOT l_return_status = okc_api.g_ret_sts_success
7524 THEN
7525 x_return_status := l_return_status;
7526
7527 RAISE g_exception_halt_validation;
7528 END IF;
7529
7530 -- Update the topline amount
7531 FORALL i IN 1 .. new_line_id.COUNT
7532 UPDATE okc_k_lines_b
7533 SET price_negotiated =
7534 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7535 FROM okc_k_lines_b
7536 WHERE cle_id = new_line_id (i)
7537 AND lse_id IN (9, 25))
7538 WHERE ID = new_line_id (i);
7539
7540 fnd_file.put_line(fnd_file.log,'(OKS) -> Topline amounts updated successfully');
7541
7542 -- Update the contract amount
7543 FORALL i IN 1 .. new_contract_id.COUNT
7544 UPDATE okc_k_headers_all_b
7545 SET estimated_amount =
7546 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7547 FROM okc_k_lines_b
7548 WHERE dnz_chr_id = new_contract_id (i)
7549 AND lse_id IN (1, 19))
7550 WHERE ID = new_contract_id (i);
7551
7552 fnd_file.put_line(fnd_file.log,'(OKS) -> Header amounts updated successfully');
7553
7554 --Terminate/Cancel the TOpl Line/Header if all the sublines/Lines are terminated/Canceled.
7555 Terminate_cancel
7556 (p_termination_reason => batch_rules_rec.termination_reason_code,
7557 P_termcancel_source => 'IBTRANSFER',
7558 p_cancel_reason => 'TRANSFER',
7559 X_return_status => l_return_status,
7560 X_msg_count => x_msg_count,
7561 X_msg_data => x_msg_data);
7562
7563 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate/cancel Line/Hdr status = ( '|| l_return_status|| ' )');
7564
7565 IF NOT l_return_status = okc_api.g_ret_sts_success
7566 THEN
7567 x_return_status := l_return_status;
7568 OKC_API.SET_MESSAGE
7569 (
7570 g_app_name,
7571 'OKS_TERMINATE_CANCEL_ERROR'
7572 );
7573 RAISE g_exception_halt_validation;
7574 END IF;
7575
7576
7577 l_gl_dummy := 0;
7578
7579 fnd_file.put_line(fnd_file.log,'(OKS) -> Create transfer Transaction Source');
7580
7581 -- create 'transfer' transaction source
7582 FOR i IN 1 .. new_subline_id.COUNT
7583 LOOP
7584
7585 IF new_subline_id(i) IS NOT NULL
7586 THEN
7587 create_transaction_source
7588 (p_batch_id => p_batch_id,
7589 p_source_line_id => subline_id (i),
7590 p_target_line_id => new_subline_id (i),
7591 p_source_chr_id => contract_id (i),
7592 p_target_chr_id => new_contract_id(i),
7593 p_transaction => 'TRANSFER',
7594 x_return_status => l_return_status,
7595 x_msg_count => l_msg_count,
7596 x_msg_data => l_msg_data
7597 );
7598 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7599 THEN
7600 fnd_log.STRING (fnd_log.level_event,
7601 g_module_current || 'oks_mass_update.Update_contracts',
7602 'create_transaction_source(transfer) status = ( '|| l_return_status || ')');
7603 END IF;
7604
7605 fnd_file.put_line(fnd_file.log,'(OKS) -> Create transfer transaction source ( '
7606 ||i||' )' || 'status = ( ' || l_return_status ||' )');
7607
7608 IF NOT l_return_status = okc_api.g_ret_sts_success
7609 THEN
7610 x_return_status := l_return_status;
7611 RAISE g_exception_halt_validation;
7612 END IF;
7613 END IF;
7614
7615 END LOOP;
7616
7617 fnd_file.put_line(fnd_file.log,'(OKS) -> Create Renewal Transaction Source');
7618
7619 -- create 'Renewal'transaction source
7620 FOR i IN 1 .. new_subline_id.COUNT
7621 LOOP
7622 IF new_subline_id(i) IS NOT NULL
7623 THEN
7624 -- l_object_line_id := get_object_line_id (subline_id (i));
7625
7626 get_object_line_id(subline_id (i),l_object_line_id,l_object_chr_id);
7627
7628 IF l_object_line_id IS NOT NULL
7629 THEN
7630 --Oks_Ib_Util_Pub.
7631 create_transaction_source
7632 (p_batch_id => p_batch_id,
7633 p_source_line_id => l_object_line_id,
7634 p_target_line_id => new_subline_id (i),
7635 p_source_chr_id => l_object_chr_id,
7636 p_target_chr_id => new_contract_id(i),
7637 p_transaction => 'RENEWAL',
7638 x_return_status => l_return_status,
7639 x_msg_count => l_msg_count,
7640 x_msg_data => l_msg_data
7641 );
7642
7643 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
7644 THEN
7645 fnd_log.STRING (fnd_log.level_statement,
7646 g_module_current || 'oks_mass_update.Update_contracts',
7647 'create_transaction_source (Renewal) status = ( '|| l_return_status || ')');
7648 END IF;
7649
7650 fnd_file.put_line(fnd_file.log,'(OKS) -> Create renewal transaction source ( '
7651 ||i||' )' || 'status = ( '|| l_return_status || ' )');
7652
7653 IF NOT l_return_status = okc_api.g_ret_sts_success
7654 THEN
7655 x_return_status := l_return_status;
7656
7657 RAISE g_exception_halt_validation;
7658 END IF;
7659 Update okc_k_lines_b set date_renewed = trf_date(1)
7660 Where id = l_object_line_id
7661 And date_renewed is null;
7662
7663 L_line_date_renewed := OKS_IB_UTIL_PVT.Check_renewed_Sublines(l_object_line_id);
7664 Update okc_k_lines_b set date_renewed = l_line_date_renewed
7665 Where id = (select cle_id from okc_k_lines_b where id = l_object_line_id)
7666 And date_renewed Is Null;
7667
7668 l_hdr_date_renewed := OKS_IB_UTIL_PVT.Check_renewed_lines(l_object_line_id);
7669 Update okc_k_headers_all_b set date_renewed = l_line_date_renewed
7670 Where id = (select dnz_chr_id from okc_k_lines_b where id = l_object_line_id)
7671 And date_renewed Is Null;
7672
7673
7674
7675
7676 END IF;
7677 END IF;
7678 END LOOP;
7679
7680 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History created successfully');
7681
7682 -- Insert into Instance History and Details
7683 If l_instance_history_created = 'N' Then
7684 -- Create instance History
7685 INSERT INTO oks_instance_history
7686 (ID,
7687 object_version_number,
7688 instance_id,
7689 transaction_type,
7690 transaction_date,
7691 reference_number,
7692 PARAMETERS,
7693 created_by,
7694 creation_date,
7695 last_updated_by,
7696 last_update_date,
7697 last_update_login,
7698 batch_id
7699 )
7700 (SELECT okc_p_util.raw_to_number (SYS_GUID ()),
7701 1,
7702 b.instance_id,
7703 'TRF',
7704 a.transaction_date,
7705 b.instance_number,
7706 NULL, -- parameter
7707 fnd_global.user_id,
7708 SYSDATE,
7709 fnd_global.user_id,
7710 SYSDATE,
7711 fnd_global.login_id,
7712 p_batch_id
7713 FROM oks_instance_temp a,
7714 csi_item_instances b
7715 WHERE a.old_customer_product_id = b.instance_id);
7716
7717 End If;
7718 -- create instance history details
7719 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History created successfully');
7720
7721 FORALL i IN subline_id.FIRST .. subline_id.LAST
7722 INSERT INTO oks_inst_hist_details
7723 (ID,
7724 ins_id,
7725 transaction_date,
7726 transaction_type,
7727 instance_id_new,
7728 instance_qty_old,
7729 instance_qty_new,
7730 instance_amt_old,
7731 instance_amt_new,
7732 old_contract_id,
7733 old_contact_start_date,
7734 old_contract_end_date,
7735 new_contract_id,
7736 new_contact_start_date,
7737 new_contract_end_date,
7738 old_service_line_id,
7739 old_service_start_date,
7740 old_service_end_date,
7741 new_service_line_id,
7742 new_service_start_date,
7743 new_service_end_date,
7744 old_subline_id,
7745 old_subline_start_date,
7746 old_subline_end_date,
7747 new_subline_id,
7748 new_subline_start_date,
7749 new_subline_end_date,
7750 old_customer,
7751 new_customer,
7752 old_k_status,
7753 new_k_status,
7754 subline_date_terminated,
7755 object_version_number,
7756 created_by,
7757 creation_date,
7758 last_updated_by,
7759 last_update_date,
7760 last_update_login,
7761 Date_Cancelled
7762 )
7763 (Select okc_p_util.raw_to_number (SYS_GUID ()),
7764 inshist.id ,
7765 transaction_date(i),
7766 'TRF',
7767 custprod_id (i),
7768 number_of_items (i),
7769 number_of_items (i),
7770 price_negotiated (i),
7771 Line.PRICE_NEGOTIATED ,
7772 contract_id (i),
7773 hdr_sdt (i),
7774 hdr_edt (i),
7775 contract_id (i),
7776 hdr_sdt (i),
7777 hdr_edt (i),
7778 topline_id(i),
7779 topline_sdate (i),
7780 topline_edate (i),
7781 topline_id (i),
7782 topline_sdate(i),
7783 topline_edate (i),
7784 subline_id (i),
7785 subline_old_sdate (i),
7786 subline_edate (i),
7787 subline_id (i),
7788 subline_old_sdate (i),
7789 subline_edate (i),
7790 p_old_acct_id,-- old_customer,
7791 p_old_acct_id, -- new_customer
7792 hdr_sts (i),
7793 hdr.sts_code,
7794 line.date_terminated, -- subline_date_terminated,
7795 1,
7796 fnd_global.user_id,
7797 SYSDATE,
7798 fnd_global.user_id,
7799 SYSDATE,
7800 fnd_global.login_id,
7801 line.date_cancelled --Date cancelled
7802 from Oks_instance_history inshist, Okc_k_lines_b line
7803 ,okc_k_headers_all_b hdr
7804 Where inshist.instance_id = custprod_id(i)
7805 and batch_id = p_batch_id
7806 And line.id = subline_id(i)
7807 And hdr.id = contract_id(i)
7808 );
7809 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History Details created successfully');
7810 -- create instance history details
7811 /*OPEN get_inst_hist_csr (p_batch_id);
7812
7813 FETCH get_inst_hist_csr
7814 BULK COLLECT INTO ins_id,
7815 new_k_sdate,
7816 new_k_edate,
7817 new_k_status,
7818 new_l_sdate,
7819 new_l_edate,
7820 new_price_negotiated;
7821 --ins_id;
7822
7823 CLOSE get_inst_hist_csr;
7824 */
7825 FORALL i IN new_subline_id.FIRST .. new_subline_id.LAST
7826 INSERT INTO oks_inst_hist_details
7827 (ID,
7828 ins_id,
7829 transaction_date,
7830 transaction_type,
7831 instance_id_new,
7832 instance_qty_old,
7833 instance_qty_new,
7834 instance_amt_old,
7835 instance_amt_new,
7836 old_contract_id,
7837 old_contact_start_date,
7838 old_contract_end_date,
7839 new_contract_id,
7840 new_contact_start_date,
7841 new_contract_end_date,
7842 old_service_line_id,
7843 old_service_start_date,
7844 old_service_end_date,
7845 new_service_line_id,
7846 new_service_start_date,
7847 new_service_end_date,
7848 old_subline_id,
7849 old_subline_start_date,
7850 old_subline_end_date,
7851 new_subline_id,
7852 new_subline_start_date,
7853 new_subline_end_date,
7854 old_customer,
7855 new_customer,
7856 old_k_status,
7857 new_k_status,
7858 subline_date_terminated,
7859 object_version_number,
7860 created_by,
7861 creation_date,
7862 last_updated_by,
7863 last_update_date,
7864 last_update_login
7865 )
7866 (Select okc_p_util.raw_to_number (SYS_GUID ()),
7867 inshist.id,
7868 transaction_date(i),
7869 'TRF',
7870 custprod_id (i),
7871 number_of_items (i),
7872 number_of_items (i),
7873 price_negotiated (i),
7874 subline.price_negotiated,--new_price_negotiated (i),
7875 contract_id (i),
7876 hdr_sdt (i),
7877 hdr_edt (i),
7878 new_contract_id (i),
7879 hdr.start_date,--new_k_sdate (i),
7880 hdr.end_date,--new_k_edate (i),
7881 topline_id (i),
7882 topline_sdate (i),
7883 topline_edate (i),
7884 new_line_id (i),
7885 line.start_date,--new_l_sdate (i),
7886 line.end_date,--new_l_edate (i),
7887 subline_id (i),
7888 subline_old_sdate (i),
7889 subline_edate (i),
7890 new_subline_id (i),
7891 subline_sdate (i),
7892 subline_edate (i),
7893 p_old_acct_id, -- old_customer,
7894 p_new_acct_id, -- new_customer,
7895 hdr_sts (i),
7896 hdr.sts_code,--new_k_status (i),
7897 NULL, -- subline_date_terminated,
7898 1,
7899 fnd_global.user_id,
7900 SYSDATE,
7901 fnd_global.user_id,
7902 SYSDATE,
7903 fnd_global.login_id
7904 from Oks_instance_history inshist
7905 , okc_k_headers_all_b hdr
7906 , okc_k_lines_b line
7907 , okc_k_lines_b subline
7908 Where inshist.instance_id = custprod_id(i)
7909 and batch_id = p_batch_id
7910 and hdr.id = new_contract_id(i)
7911 and line.id = new_line_id(i)
7912 and subline.id = new_subline_id(i)
7913
7914 );
7915 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History Details created successfully');
7916
7917 END IF;
7918 END IF; -- End contract_id.count>0
7919 END IF; -- End 'Trf' batch
7920
7921 -- General Batch
7922 IF p_batch_type in ('GEN','MOVE') --'CSI_MU_GENERAL'
7923 THEN
7924 l_return_status := OKC_API.G_RET_STS_SUCCESS;
7925 fnd_file.put_line(fnd_file.log,'(OKS) -> General Batch Processing');
7926
7927 OPEN get_k_for_idc_csr;
7928
7929 IF get_k_for_idc_csr%ISOPEN
7930 THEN
7931 FETCH get_k_for_idc_csr
7932 BULK COLLECT INTO contract_id,
7933 topline_id,
7934 subline_id,
7935 hdr_sdt,
7936 hdr_edt,
7937 hdr_sts,
7938 topline_sdate,
7939 topline_edate,
7940 topline_sts,
7941 subline_sdate,
7942 subline_edate,
7943 subline_sts,
7944 idc_date,
7945 new_edt,
7946 number_of_items,
7947 transaction_date,
7948 custprod_id,
7949 ContractNumber_modifier,
7950 line_number,
7951 sr_date
7952
7953 ;
7954 END IF;
7955
7956 CLOSE get_k_for_idc_csr;
7957
7958 FORALL i IN contract_id.FIRST .. contract_id.LAST
7959 INSERT INTO oks_instance_k_dtls_temp
7960 (parent_id,
7961 contract_id,
7962 topline_id,
7963 subline_id,
7964 new_start_date,
7965 new_end_date,
7966 instance_id
7967 )
7968 (Select p_batch_id,
7969 contract_id (i),
7970 topline_id (i),
7971 subline_id (i),
7972 subline_sdate (i),
7973 subline_edate (i),
7974 custprod_id (i)
7975 from dual
7976 Where TRUNC (nvl(sr_date (i),idc_date (i))) >= TRUNC (idc_date (i))
7977 OR TRUNC (nvl(sr_date (i),new_edt (i))) <= TRUNC (new_edt (i))
7978 );
7979
7980 -- Log Warning messages if any
7981 FOR i IN 1..subline_id.count
7982 LOOP
7983 IF idc_date(i) IS NULL
7984 THEN
7985 l_return_status := OKC_API.G_RET_STS_WARNING;
7986 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
7987 fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.IB_INTERFACE',
7988 'Installation date changed to null ' );
7989 End If;
7990 OKC_API.set_message(G_APP_NAME,'OKS_NULL_INSTALLATION_DATE');
7991 Raise G_EXCEPTION_HALT_VALIDATION;
7992
7993 END IF;
7994 If sr_date(i) Is Not Null Then
7995 IF (trunc(sr_date(i)) <= trunc(idc_date(i))
7996 OR TRUNC(sr_date(i)) >= TRUNC(new_edt(i)))
7997 THEN
7998 l_Warn_return_status := OKC_API.G_RET_STS_WARNING;
7999 OKC_API.set_message(G_APP_NAME,'OKS_SR_EXISTS_FOR_CONTRACT'
8000 ,'CONTRACTNUMBER',COntractnumber_modifier(i)
8001 ,'CONTRACTLINE',line_number(i)
8002 ,'INSTANCE',custprod_id (i)
8003 );
8004
8005 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
8006 fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.UPDATE_CONTRACT_IDC.ERROR',
8007 'SR is logged '||',status = ' || l_return_status);
8008 END IF;
8009
8010
8011 END IF;
8012 End If;
8013
8014 END LOOP;
8015
8016 -- Update Subline dates
8017 FORALL i IN 1 .. subline_id.COUNT
8018 UPDATE okc_k_lines_b
8019 SET start_date = idc_date (i),
8020 end_date = new_edt (i),
8021 sts_code = get_status (idc_date (i), new_edt (i))
8022
8023 WHERE ID = subline_id(i)
8024 And (trunc(nvl(sr_date(i),idc_date(i))) >= trunc(idc_date(i))
8025 And TRUNC(nvl(sr_date(i),new_edt(i))) <= TRUNC(new_edt(i)));
8026
8027 Open l_subline_invtext_csr;
8028 Fetch l_subline_invtext_csr Bulk collect into
8029 sub_line_id,
8030 inv_text;
8031 Close l_subline_invtext_csr;
8032
8033 Forall i in 1..sub_line_id.count
8034 UPDATE oks_k_lines_v
8035 SET invoice_text = inv_text(i)
8036 WHERE id = (select id from oks_k_lines_b
8037 where cle_id = sub_line_id(i));
8038
8039
8040
8041 -- Update topline dates
8042 Open l_topline_csr;
8043 Fetch l_topline_csr Bulk collect into
8044 Top_line_id,
8045 line_new_Sdate,
8046 Line_new_edate;
8047
8048 Close l_topline_csr;
8049
8050 Forall i in 1..top_line_id.count
8051 UPDATE okc_k_lines_b
8052 SET start_date = line_new_Sdate (i),
8053 end_date = line_new_edate (i),
8054 sts_code = get_status (line_new_Sdate(i), line_new_edate(i))
8055 --invoice_text = inv_text(i)
8056 WHERE ID = top_line_id(i);
8057
8058 Top_line_id.delete;
8059
8060 Open l_invoice_text_csr;
8061 Fetch l_invoice_text_csr Bulk collect into
8062 top_line_id,
8063 inv_text;
8064 Close l_invoice_text_csr;
8065
8066 Forall i in 1..top_line_id.count
8067 UPDATE oks_k_lines_tl
8068 SET invoice_text = inv_text(i)
8069 WHERE id = (select id from oks_k_lines_b
8070 where cle_id = top_line_id(i));
8071 -- Update Header dates
8072 header_id.delete;
8073 Open l_Contract_csr;
8074 Fetch l_Contract_csr Bulk collect into
8075 Header_id,
8076 Hdr_new_Sdate,
8077 Hdr_new_edate;
8078 Close l_Contract_csr;
8079
8080 FORALL i IN 1 .. header_id.COUNT
8081 UPDATE okc_k_headers_all_b
8082 SET start_date = Hdr_new_Sdate(i),
8083 end_date = Hdr_new_edate(i),
8084 sts_code = get_status (Hdr_new_Sdate(i), Hdr_new_edate(i))
8085 WHERE ID = header_id(i);
8086
8087 -- Create records in version history table OKC_K_VERS_NUMBERS_H
8088
8089
8090
8091
8092 If header_id.count > 0
8093 Then
8094 FORALL i IN header_id.first .. header_id.last
8095 INSERT INTO OKC_K_VERS_NUMBERS_H (
8096 chr_id,
8097 major_version,
8098 minor_version,
8099 object_version_number,
8100 created_by,
8101 creation_date,
8102 last_updated_by,
8103 last_update_date,
8104 last_update_login
8105 )
8106 (
8107 SELECT max(chr_id ),
8108 max(major_version) major_version,
8109 max(minor_version) minor_version,
8110 max(object_version_number) object_version_number
8111 , fnd_global.user_id
8112 , SYSDATE
8113 , fnd_global.user_id
8114 , SYSDATE
8115 , fnd_global.login_id
8116 FROM OKC_K_VERS_NUMBERS
8117 WHERE chr_id = header_id(i)
8118 );
8119 End If;
8120 -- Update the minor version and object version numbers
8121 FORALL i IN 1 .. header_id.COUNT
8122 UPDATE OKC_K_VERS_NUMBERS
8123 SET minor_version = minor_version+1,
8124 object_version_number = object_version_number+1
8125 WHERE chr_ID = header_id(i);
8126
8127 -- Update coverage effectivity
8128 FOR i in 1..top_line_id.count
8129 LOOP
8130
8131 oks_pm_programs_pvt.ADJUST_PM_PROGRAM_SCHEDULE(
8132 p_api_version => 1.0,
8133 p_init_msg_list => 'F',
8134 p_contract_line_id => top_line_id(i) ,
8135 p_new_start_date => line_new_Sdate(i),
8136 p_new_end_date => line_new_edate(i),
8137 x_return_status => l_return_status,
8138 x_msg_count => x_msg_count,
8139 x_msg_data => x_msg_data );
8140
8141 IF NOT l_return_status = 'S' THEN
8142
8143
8144 x_return_status := l_return_status;
8145
8146 OKC_API.SET_MESSAGE(
8147 g_app_name,
8148 g_required_value,
8149 g_col_name_token,
8150 'Adjust PM Program Schedule(SUB LINE)'
8151 );
8152
8153 RAISE G_EXCEPTION_HALT_VALIDATION;
8154 End If;
8155
8156 END LOOP;
8157
8158
8159 If header_id.COUNT > 0 Then
8160 -- Create instance History
8161 INSERT INTO oks_instance_history
8162 (ID,
8163 object_version_number,
8164 instance_id,
8165 transaction_type,
8166 transaction_date,
8167 reference_number,
8168 PARAMETERS,
8169 created_by,
8170 creation_date,
8171 last_updated_by,
8172 last_update_date,
8173 last_update_login,
8174 batch_id
8175 )
8176 (SELECT okc_p_util.raw_to_number (SYS_GUID ()),
8177 1,
8178 b.instance_id,
8179 'IDC',
8180 transaction_date (1),
8181 b.instance_number,
8182 NULL, -- parameter
8183 fnd_global.user_id,
8184 SYSDATE,
8185 fnd_global.user_id,
8186 SYSDATE,
8187 fnd_global.login_id,
8188 p_batch_id
8189 FROM oks_instance_k_dtls_temp a,
8190 csi_item_instances b
8191 WHERE a.instance_id = b.instance_id);
8192
8193 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History created successfully');
8194
8195 --- create instance history details
8196 FORALL i IN subline_id.FIRST .. subline_id.LAST
8197 INSERT INTO oks_inst_hist_details
8198 (ID,
8199 ins_id,
8200 transaction_date,
8201 transaction_type,
8202 instance_id_new,
8203 instance_qty_old,
8204 instance_qty_new,
8205 instance_amt_old,
8206 instance_amt_new,
8207 old_contract_id,
8208 old_contact_start_date,
8209 old_contract_end_date,
8210 new_contract_id,
8211 new_contact_start_date,
8212 new_contract_end_date,
8213 old_service_line_id,
8214 old_service_start_date,
8215 old_service_end_date,
8216 new_service_line_id,
8217 new_service_start_date,
8218 new_service_end_date,
8219 old_subline_id,
8220 old_subline_start_date,
8221 old_subline_end_date,
8222 new_subline_id,
8223 new_subline_start_date,
8224 new_subline_end_date,
8225 old_customer,
8226 new_customer,
8227 old_k_status,
8228 new_k_status,
8229 subline_date_terminated,
8230 object_version_number,
8231 created_by,
8232 creation_date,
8233 last_updated_by,
8234 last_update_date,
8235 last_update_login,
8236 date_cancelled
8237 )
8238 (SELECT okc_p_util.raw_to_number (SYS_GUID ()),
8239 a.ID,
8240 transaction_date (i),
8241 'IDC',
8242 custprod_id (i),
8243 number_of_items (i),
8244 number_of_items (i),
8245 null,
8246 null,
8247 contract_id (i),
8248 hdr_sdt (i),
8249 hdr_edt (i),
8250 contract_id (i),
8251 hdr.start_date,
8252 hdr.end_date,
8253 topline_id (i),
8254 topline_sdate (i),
8255 topline_edate (i),
8256 topline_id (i),
8257 line.start_date,
8258 line.end_date,
8259 subline_id (i),
8260 subline_sdate (i),
8261 subline_edate (i),
8262 subline_id (i),
8263 subline.start_date,
8264 subline.end_date,
8265 p_old_acct_id, -- old_customer,
8266 p_old_acct_id, -- new_customer,
8267 hdr_sts (i),
8268 hdr.sts_code,
8269 null, -- subline_date_terminated,
8270 1,
8271 fnd_global.user_id,
8272 SYSDATE,
8273 fnd_global.user_id,
8274 SYSDATE,
8275 fnd_global.login_id,
8276 null
8277 FROM oks_instance_history a, Okc_k_headers_all_b hdr
8278 , okc_k_lines_b line
8279 , okc_k_lines_b subline
8280 WHERE a.batch_id = p_batch_id
8281 AND a.transaction_type = 'IDC'
8282 AND a.instance_id = custprod_id(i)
8283 And hdr.id = contract_id(i)
8284 And line.id = topline_id (i)
8285 And subline.id = subline_id (i)
8286 And TRUNC (nvl(sr_date (i),idc_date (i))) >= TRUNC (idc_date (i))
8287 And TRUNC (nvl(sr_date (i),new_edt (i))) <= TRUNC (new_edt (i))
8288 );
8289 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History Details created successfully');
8290 End If;
8291 END IF;
8292
8293 -- Terminate Batch
8294 IF p_batch_type = 'TRM' --'CSI_MU_TERMINATE'
8295 THEN
8296 fnd_file.put_line(fnd_file.log,'in term');
8297 OPEN get_k_for_trm_csr(batch_rules_trm_rec.credit_option);
8298
8299 IF get_k_for_trm_csr%ISOPEN
8300 THEN
8301 FETCH get_k_for_trm_csr
8302 BULK COLLECT INTO contract_id,
8303 topline_id,
8304 subline_id,
8305 hdr_sdt,
8306 hdr_edt,
8307 hdr_sts,
8308 hdr_ste,
8309 contract_number,
8310 contract_number_modifier,
8311 topline_sdate,
8312 topline_edate,
8313 topline_sts,
8314 subline_sdate,
8315 subline_edate,
8316 subline_sts,
8317 term_date,
8318 custprod_id,
8319 transaction_date,
8320 number_of_items,
8321 price_negotiated,
8322 Party_id,
8323 Org_Id,
8324 Credit_option,
8325 organization_id;
8326 END IF;
8327
8328 CLOSE get_k_for_trm_csr;
8329 FORALL i IN contract_id.FIRST .. contract_id.LAST
8330 INSERT INTO oks_instance_k_dtls_temp
8331 (parent_id,
8332 contract_id,
8333 topline_id,
8334 subline_id,
8335 new_start_date,
8336 new_end_date,
8337 instance_id
8338 )
8339 Values
8340 ( p_batch_id,
8341 contract_id (i),
8342 topline_id (i),
8343 subline_id (i),
8344 subline_sdate (i),
8345 subline_edate (i),
8346 custprod_id (i)
8347 );
8348
8349 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate: Number of impacted contracts = ( '
8350 || contract_id.COUNT || ' )');
8351
8352 -- QA HOLD lines can't be terminated
8353 FOR i IN 1..subline_sts.COUNT
8354 LOOP
8355 IF hdr_ste(i) = 'HOLD'
8356 THEN
8357 l_found := TRUE;
8358 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
8359 fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.oks_mass_update.Update_contracts',
8360 ' Contract '||contract_number(i) ||' in QA_HOLD status' );
8361 END IF;
8362
8363 OKC_API.SET_MESSAGE(
8364 g_app_name,
8365 'OKS_CONTRACT_HOLD',
8366 'CONTRACTNUMBER',
8367 CONTRACT_NUMBER(i)||' '||CONTRACT_NUMBER_MODIFIER(i)
8368 );
8369
8370 END IF;
8371 END LOOP;
8372
8373 IF l_found
8374 THEN
8375 l_return_status := OKC_API.G_RET_STS_ERROR;
8376 RAISE G_EXCEPTION_HALT_VALIDATION;
8377 END IF;
8378
8379
8380
8381
8382 IF subline_id.COUNT > 0
8383 THEN
8384 FOR i IN subline_id.FIRST .. subline_id.LAST
8385 LOOP
8386
8387 fnd_file.put_line(fnd_file.log,'(OKS) -> For Subline term_date '||term_date (i)||subline_edate(i)||subline_sdate(i));
8388 l_trm_dt := term_date (i);
8389 l_date_cancel := term_date(i);
8390 l_term_flag:= 'N';
8391 IF (TRUNC (l_date_cancel) <= TRUNC (subline_sdate (i)))
8392 Then
8393 l_date_cancel := subline_sdate(i);
8394 Elsif ( TRUNC (subline_edate (i)) < TRUNC (l_date_cancel) )
8395 Then
8396 l_date_cancel := subline_edate(i) + 1;
8397 End If;
8398
8399
8400
8401 IF (TRUNC (l_trm_dt) <= TRUNC (subline_sdate (i)))
8402
8403 THEN
8404 l_trm_dt := subline_sdate(i);
8405 END IF;
8406
8407 IF ( TRUNC (subline_edate (i))< TRUNC (l_trm_dt) )
8408 THEN
8409 l_trm_dt := subline_edate(i) + 1;
8410 l_suppress_credit := 'Y';
8411 l_full_credit := 'N';
8412 l_term_flag := 'Y';
8413 Else
8414
8415 IF UPPER (credit_option(i)) = 'FULL'
8416 THEN
8417 l_full_credit := 'Y';
8418 l_suppress_credit := 'N';
8419
8420 ELSIF UPPER (credit_option(i)) = 'NONE'
8421 THEN
8422 l_suppress_credit := 'Y';
8423 ELSIF UPPER (credit_option(i)) = 'CALCULATED'
8424 THEN
8425 l_suppress_credit := 'N';
8426 l_full_credit := 'N';
8427 End If;
8428 End If;
8429
8430 fnd_file.put_line(fnd_file.log,'(OKS) -> For Subline = ( '||subline_id (i)||'l_full_credit'||l_full_credit);
8431
8432
8433 fnd_file.put_line(fnd_file.log,'(OKS) -> For Subline = contract_number ( '||contract_number(i)||':'||contract_number_modifier(i)||' ) l_suppress_credit = ( '
8434 ||l_suppress_credit ||' ) Termination Date is = ( '|| l_trm_dt|| ' )');
8435 okc_context.set_okc_org_context(org_id(i),organization_id(i));
8436 terminate_subline
8437 (p_status => subline_sts (i),
8438 p_hdr_id => contract_id (i),
8439 p_end_date => subline_edate (i),
8440 p_cle_id => subline_id (i),
8441 p_termination_date => TRUNC (l_trm_dt),
8442 p_cancellation_date => trunc(l_date_cancel),
8443 p_term_flag => l_term_flag,
8444 p_terminate_reason => batch_rules_trm_rec.termination_reason_code,
8445 p_termination_source => 'IBTERMINATE',
8446 p_suppress_credit => l_suppress_credit,
8447 p_full_credit => l_full_credit,
8448 x_return_status => l_return_status
8449 );
8450
8451 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate_subline status = ( '|| l_return_status|| ' )');
8452
8453 IF NOT l_return_status = okc_api.g_ret_sts_success
8454 THEN
8455 x_return_status := l_return_status;
8456 OKC_API.SET_MESSAGE
8457 (
8458 g_app_name,
8459 'OKS_TERMINATE_ERROR',
8460 'CONTRACTNUMBER',
8461 CONTRACT_NUMBER(i)||' '||CONTRACT_NUMBER_MODIFIER(i),
8462 'SUBLINE',
8463 subline_id (i)
8464 );
8465 RAISE g_exception_halt_validation;
8466 END IF;
8467
8468 END LOOP;
8469
8470 --Terminate/Cancel the TOpl Line/Header if all the sublines/Lines are terminated/Canceled.
8471 Terminate_cancel
8472 (p_termination_reason => batch_rules_trm_rec.termination_reason_code ,
8473 P_termcancel_source => 'IBTERMINATE',
8474 p_cancel_reason => 'TERMINATED',
8475 X_return_status => l_return_status,
8476 X_msg_count => x_msg_count,
8477 X_msg_data => x_msg_data);
8478
8479 fnd_file.put_line(fnd_file.log,'(OKS) -> Terminate/cancel Line/Hdr status = ( '|| l_return_status|| ' )');
8480
8481 IF NOT l_return_status = okc_api.g_ret_sts_success
8482 THEN
8483 x_return_status := l_return_status;
8484 OKC_API.SET_MESSAGE
8485 (
8486 g_app_name,
8487 'OKS_TERMINATE_CANCEL_ERROR'
8488 );
8489 RAISE g_exception_halt_validation;
8490 END IF;
8491
8492 -- Create instance History
8493 INSERT INTO oks_instance_history
8494 (ID,
8495 object_version_number,
8496 instance_id,
8497 transaction_type,
8498 transaction_date,
8499 reference_number,
8500 PARAMETERS,
8501 created_by,
8502 creation_date,
8503 last_updated_by,
8504 last_update_date,
8505 last_update_login,
8506 batch_id
8507 )
8508 (SELECT okc_p_util.raw_to_number (SYS_GUID ()),
8509 1,
8510 b.instance_id,
8511 'TRM',
8512 transaction_date (1),
8513 b.instance_number,
8514 NULL, -- parameter
8515 fnd_global.user_id,
8516 SYSDATE,
8517 fnd_global.user_id,
8518 SYSDATE,
8519 fnd_global.login_id,
8520 p_batch_id
8521 FROM oks_instance_temp a,
8522 csi_item_instances b
8523 WHERE a.old_customer_product_id = b.instance_id);
8524
8525 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History created successfully');
8526
8527 --- create instance history details
8528 FORALL i IN subline_id.FIRST .. subline_id.LAST
8529 INSERT INTO oks_inst_hist_details
8530 (ID,
8531 ins_id,
8532 transaction_date,
8533 transaction_type,
8534 instance_id_new,
8535 instance_qty_old,
8536 instance_qty_new,
8537 instance_amt_old,
8538 instance_amt_new,
8539 old_contract_id,
8540 old_contact_start_date,
8541 old_contract_end_date,
8542 new_contract_id,
8543 new_contact_start_date,
8544 new_contract_end_date,
8545 old_service_line_id,
8546 old_service_start_date,
8547 old_service_end_date,
8548 new_service_line_id,
8549 new_service_start_date,
8550 new_service_end_date,
8551 old_subline_id,
8552 old_subline_start_date,
8553 old_subline_end_date,
8554 new_subline_id,
8555 new_subline_start_date,
8556 new_subline_end_date,
8557 old_customer,
8558 new_customer,
8559 old_k_status,
8560 new_k_status,
8561 subline_date_terminated,
8562 object_version_number,
8563 created_by,
8564 creation_date,
8565 last_updated_by,
8566 last_update_date,
8567 last_update_login,
8568 date_cancelled
8569 )
8570 (SELECT okc_p_util.raw_to_number (SYS_GUID ()),
8571 a.ID,
8572 transaction_date (i),
8573 'TRM',
8574 custprod_id (i),
8575 number_of_items (i),
8576 number_of_items (i),
8577 price_negotiated (i),
8578 price_negotiated (i),
8579 contract_id (i),
8580 hdr_sdt (i),
8581 hdr_edt (i),
8582 contract_id (i),
8583 hdr_sdt (i),
8584 hdr_edt (i),
8585 topline_id (i),
8586 topline_sdate (i),
8587 topline_edate (i),
8588 topline_id (i),
8589 topline_sdate (i),
8590 topline_edate (i),
8591 subline_id (i),
8592 subline_sdate (i),
8593 subline_edate (i),
8594 subline_id (i),
8595 subline_sdate (i),
8596 subline_edate (i),
8597 p_old_acct_id, -- old_customer,
8598 p_old_acct_id, -- new_customer,
8599 hdr_sts (i),
8600 hdr.sts_code,
8601 line.date_terminated, -- subline_date_terminated,
8602 1,
8603 fnd_global.user_id,
8604 SYSDATE,
8605 fnd_global.user_id,
8606 SYSDATE,
8607 fnd_global.login_id,
8608 line.date_cancelled
8609 FROM oks_instance_history a,
8610 Okc_k_lines_b line,
8611 Okc_k_headers_all_b hdr
8612 WHERE a.batch_id = p_batch_id
8613 AND a.transaction_type = 'TRM'
8614 AND a.instance_id = custprod_id(i)
8615 AND line.id = subline_id(i)
8616 And hdr.id = contract_id(i));
8617 fnd_file.put_line(fnd_file.log,'(OKS) -> Instance History Details created successfully');
8618
8619 END IF;
8620
8621
8622
8623
8624
8625 END IF;
8626
8627
8628 If l_warn_return_status = 'W' Then
8629 x_return_status := l_warn_return_status;
8630 Else
8631
8632 x_return_status := l_return_status;
8633 End If;
8634 EXCEPTION
8635 WHEN g_exception_halt_validation
8636 THEN
8637 x_return_status := okc_api.g_ret_sts_error;
8638 fnd_file.put_line(fnd_file.log,' Error while updating the contract ' );
8639 FND_MSG_PUB.Count_And_Get
8640 (
8641 p_count => x_msg_count,
8642 p_data => x_msg_data
8643 );
8644
8645 NULL;
8646 WHEN OTHERS
8647 THEN
8648 x_return_status := okc_api.g_ret_sts_unexp_error;
8649 fnd_file.put_line(fnd_file.log,' Error while updating the contract : '
8650 || SQLCODE||':'|| SQLERRM );
8651 okc_api.set_message (g_app_name,
8652 g_unexpected_error,
8653 g_sqlcode_token,
8654 SQLCODE,
8655 g_sqlerrm_token,
8656 SQLERRM
8657 );
8658 FND_MSG_PUB.Count_And_Get
8659 (
8660 p_count => x_msg_count,
8661 p_data => x_msg_data
8662 );
8663
8664 END;-- End Update Contracts
8665 END;
8666