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