[Home] [Help]
PACKAGE BODY: APPS.OKS_EXTWARPRGM_PVT
Source
1 PACKAGE BODY oks_extwarprgm_pvt AS
2 /* $Header: OKSREWRB.pls 120.90.12020000.7 2013/02/22 10:40:20 mchandak ship $ */
3
4 TYPE p_srvline_rec IS RECORD (
5 k_line_id NUMBER
6 );
7
8 TYPE p_srvline_tbl IS TABLE OF p_srvline_rec
9 INDEX BY BINARY_INTEGER;
10
11 /**************************************************************************
12 Procedure Get_k_cle_id
13 Returns Service lines originated from Order having the same service item
14 ***************************************************************************/
15 PROCEDURE get_k_cle_id (
16 p_chrid IN NUMBER,
17 p_invserviceid IN NUMBER,
18 p_cle_tbl OUT NOCOPY p_srvline_tbl
19 )
20 IS
21 -- extwarr cascading
22 -- merging servcice lines
23 -- Modified the cusror for the fix of bug# 5088409
24
25 CURSOR l_service_csr
26 IS
27 SELECT /*+ leading (kl) use_nl (kl ki) */ kl.ID cle_id
28 FROM okc_k_lines_b kl, okc_k_items ki, okc_statuses_b ks
29 WHERE kl.dnz_chr_id = p_chrid
30 AND kl.lse_id IN (1, 14, 19)
31 AND kl.ID = ki.cle_id
32 AND ki.object1_id1 = TO_CHAR (p_invserviceid)
33 AND kl.upg_orig_system_ref = 'ORDER'
34 AND ks.code = kl.sts_code -- 04-jun-2002 merging service lines from OM
35 AND ks.ste_code NOT IN ('TERMINATED', 'CANCELLED') -- Removed EXPIRED
36 AND kl.date_terminated is NULL; -- Modified for fix of bug 4690982
37
38 -- Modified the cusror for the fix of bug# 5088409
39
40 l_ctr NUMBER;
41 l_service_rec l_service_csr%ROWTYPE;
42
43 BEGIN
44 l_ctr := 1;
45
46 FOR l_service_rec IN l_service_csr
47 LOOP
48 p_cle_tbl (l_ctr).k_line_id := l_service_rec.cle_id;
49 l_ctr := l_ctr + 1;
50 END LOOP;
51 END get_k_cle_id;
52
53 /***************************************************************************
54 Function check_merge_yn
55 Checks if the service line can be merged into an existing contract line
56 *****************************************************************************/
57 FUNCTION check_merge_yn (
58 p_k_line_id IN NUMBER,
59 p_source_line_id IN NUMBER,
60 p_warranty_flag IN VARCHAR2
61 )
62 RETURN BOOLEAN
63 IS
64 -- cursor to get the Order line attributes
65 CURSOR source_line_attrbs_csr
66 IS
67 SELECT invoicing_rule_id, accounting_rule_id, price_list_id,
68 commitment_id, invoice_to_org_id, ship_to_org_id
69 FROM oe_order_lines_all
70 WHERE line_id = p_source_line_id;
71
72 /*Added for ER 16036980*/
73 CURSOR get_billing_dtls(p_order_line_id NUMBER ) IS
74 SELECT Nvl(SERVICE_BILL_OPTION_CODE,1),Nvl(SERVICE_BILL_PROFILE_ID,1)
75 FROM oe_order_lines_all
76 WHERE line_id=p_order_line_id;
77
78 CURSOR get_order_details(p_contract_line_id NUMBER)
79 IS
80 SELECT object1_id1
81 FROM okc_k_rel_objs
82 WHERE cle_id=p_contract_line_id;
83 /*Added for ER 16036980 */
84
85 -- Cursor to compare the source line attributes with
86 -- target line attributes
87 CURSOR target_line_attrbs_csr (
88 l_inv_id NUMBER,
89 l_acct_id NUMBER,
90 l_prl_id VARCHAR2,
91 l_commit_id NUMBER,
92 l_invorg_id NUMBER,
93 l_shiporg_id NUMBER
94 )
95 IS
96 SELECT 'x'
97 FROM okc_k_lines_b kl, oks_k_lines_b sl
98 WHERE kl.ID = p_k_line_id
99 AND kl.ID = sl.cle_id
100 AND NVL (sl.acct_rule_id, -99) = NVL (l_acct_id, -99)
101 AND NVL (kl.inv_rule_id, -99) = NVL (l_inv_id, -99)
102 AND NVL (sl.commitment_id, -99) = NVL (l_commit_id, -99)
103 AND NVL (kl.price_list_id, -99) = NVL (l_prl_id, -99)
104 AND NVL (kl.bill_to_site_use_id, -99) = NVL (l_invorg_id, -99)
105 AND NVL (kl.ship_to_site_use_id, -99) = NVL (l_shiporg_id, -99);
106
107 l_source_rec source_line_attrbs_csr%ROWTYPE;
108 l_merge_yn BOOLEAN := FALSE;
109 l_temp VARCHAR2 (3);
110 /*Added for ER 16036980*/
111 l_target_billing_option VARCHAR2(100);
112 l_source_billing_option VARCHAR2(100);
113 l_target_billing_profile NUMBER;
114 l_source_billing_profile NUMBER;
115 l_con_order_line_id NUMBER;
116 /*Added for ER 16036980*/
117 BEGIN
118 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
119 THEN
120 fnd_log.STRING (fnd_log.level_statement,
121 g_module_current || '.Check_merge_yn',
122 'Warranty Flag ' || p_warranty_flag
123 );
124 END IF;
125
126 IF p_warranty_flag = 'W'
127 THEN
128 l_merge_yn := TRUE;
129 RETURN (l_merge_yn);
130 ELSE
131 OPEN source_line_attrbs_csr;
132
133 FETCH source_line_attrbs_csr
134 INTO l_source_rec;
135
136 IF source_line_attrbs_csr%NOTFOUND
137 THEN
138 CLOSE source_line_attrbs_csr;
139
140 RAISE g_exception_halt_validation;
141 END IF;
142
143 CLOSE source_line_attrbs_csr;
144
145 /*Added for ER 16036980*/
146 OPEN get_order_details(p_k_line_id);
147 FETCH get_order_details INTO l_con_order_line_id;
148 CLOSE get_order_details;
149
150 OPEN get_billing_dtls(l_con_order_line_id);
151 FETCH get_billing_dtls INTO l_target_billing_option,l_target_billing_profile;
152 CLOSE get_billing_dtls;
153
154 OPEN get_billing_dtls(p_source_line_id);
155 FETCH get_billing_dtls INTO l_source_billing_option,l_source_billing_profile;
156 CLOSE get_billing_dtls;
157
158 IF l_target_billing_option = l_source_billing_option AND l_target_billing_profile = l_source_billing_profile
159 AND (l_source_billing_option <> 'FPOM')
160 THEN
161 /*Added for ER16036980*/
162
163 OPEN target_line_attrbs_csr (l_source_rec.invoicing_rule_id,
164 l_source_rec.accounting_rule_id,
165 l_source_rec.price_list_id,
166 l_source_rec.commitment_id,
167 l_source_rec.invoice_to_org_id,
168 l_source_rec.ship_to_org_id
169 );
170
171 FETCH target_line_attrbs_csr
172 INTO l_temp;
173
174 IF target_line_attrbs_csr%FOUND
175 THEN
176 l_merge_yn := TRUE;
177 ELSE
178 l_merge_yn := FALSE;
179 END IF;
180
181 CLOSE target_line_attrbs_csr;
182
183 END IF; /*Added for ER16036980*/
184
185 RETURN (l_merge_yn);
186 END IF;
187 END;
188
189 --G_Debug_option := Fnd_profile.value('OKS_DEBUG_LOG');
190 FUNCTION get_top_line_number (p_chr_id IN NUMBER)
191 RETURN NUMBER;
192
193 FUNCTION get_sub_line_number (p_chr_id IN NUMBER, p_cle_id IN NUMBER)
194 RETURN NUMBER;
195
196 PROCEDURE get_sts_code (
197 p_ste_code VARCHAR2,
198 p_sts_code VARCHAR2,
199 x_ste_code OUT NOCOPY VARCHAR2,
200 x_sts_code OUT NOCOPY VARCHAR2
201 )
202 IS
203 CURSOR l_ste_csr
204 IS
205 SELECT code
206 FROM okc_statuses_b
207 WHERE ste_code = p_ste_code AND default_yn = 'Y';
208
209 CURSOR l_sts_csr
210 IS
211 SELECT a.code, a.ste_code
212 FROM okc_statuses_b a, okc_statuses_b b
213 WHERE b.code = p_sts_code
214 AND b.ste_code = a.ste_code
215 AND a.default_yn = 'Y';
216
217 l_sts_code VARCHAR2 (30);
218 BEGIN
219 IF p_sts_code IS NULL
220 THEN
221 OPEN l_ste_csr;
222
223 FETCH l_ste_csr
224 INTO x_sts_code;
225
226 CLOSE l_ste_csr;
227
228 x_ste_code := p_ste_code;
229 ELSE
230 OPEN l_sts_csr;
231
232 FETCH l_sts_csr
233 INTO x_sts_code, x_ste_code;
234
235 CLOSE l_sts_csr;
236 END IF;
237 EXCEPTION
238 WHEN OTHERS
239 THEN
240 okc_api.set_message (g_app_name,
241 g_unexpected_error,
242 g_sqlcode_token,
243 SQLCODE,
244 g_sqlerrm_token,
245 SQLERRM
246 );
247 END;
248
249 -----------------------------------------------------------------------
250 -- Procedure: get_cc_trxn_extn
251 -- Added 03/03/2006 by Vijay Ramalingam
252 -----------------------------------------------------------------------
253 -- The get_cc_trxn_extn procedure is used to get a transaction extension
254 -- id from iPayments, based on an existing transaction extension id from
255 -- a sales order header or an order line from OM.
256 -- This API is called while creating an Extended warranty contract
257 -- from OM. It is called at the header level for a sales order header
258 -- or at line level for a sales order line.
259 -- p_context_level identifies the level at which it is called and the
260 -- applicable values are 'ORDER_HEADER' and 'ORDER_LINE'
261
262 PROCEDURE get_cc_trxn_extn (
263 p_order_header_id IN NUMBER,
264 p_order_line_id IN NUMBER,
265 p_context_level IN VARCHAR2,
266 p_contract_hdr_id IN NUMBER,
267 p_contract_line_id IN NUMBER,
268 x_entity_id OUT NOCOPY NUMBER,
269 x_return_status OUT NOCOPY VARCHAR2
270 ) IS
271
272 l_payercontext_rec iby_fndcpt_common_pub.payercontext_rec_type;
273 l_trxnextension_rec iby_fndcpt_trxn_pub.trxnextension_rec_type;
274 l_response iby_fndcpt_common_pub.result_rec_type;
275 l_order_number NUMBER;
276 l_invoice_to_org_id NUMBER;
277 l_trxn_extension_id NUMBER;
278 l_entity_id NUMBER;
279 l_instr_id NUMBER;
280 l_iby_cust_id NUMBER;
281 l_iby_party NUMBER;
282 l_msg_count NUMBER;
283 l_msg_data VARCHAR2 (2000);
284 l_return_status VARCHAR2 (1) := FND_API.G_RET_STS_SUCCESS;
285
286 -- Cursor to get the transaction extension info for a sales order
287 CURSOR c_header_trxid (c_order_header_id IN NUMBER)
288 IS
289 SELECT ordhdr.order_number
290 ,ordhdr.invoice_to_org_id
291 ,pmt.trxn_extension_id
292 FROM
293 oe_order_headers_all ordhdr
294 ,oe_payments pmt
295 WHERE ordhdr.header_id = c_order_header_id
296 AND ordhdr.header_id = pmt.header_id
297 AND pmt.line_id IS NULL
298 AND pmt.payment_type_code = G_PAYMENT_CREDIT_CARD;
299
300 -- Cursor to get the transaction extension info for a sales order line
301 CURSOR c_line_trxid (c_order_line_id IN NUMBER)
302 IS
303 SELECT ordline.invoice_to_org_id
304 ,pmt.trxn_extension_id
305 FROM
306 oe_order_lines_all ordline
307 ,oe_payments pmt
308 WHERE ordline.line_id = c_order_line_id
309 AND ordline.header_id = pmt.header_id
310 AND ordline.line_id = pmt.line_id
311 AND pmt.payment_type_code = G_PAYMENT_CREDIT_CARD;
312
313 -- Cursor to get the instrument asignment id for a given transaction
314 -- extension id for a sales order header/line
315 CURSOR c_instrid (c_trxn_extension_id IN NUMBER)
316 IS
317 SELECT instr_assignment_id
318 FROM iby_trxn_extensions_v
319 WHERE trxn_extension_id = c_trxn_extension_id;
320
321 -- Cursor to get the the Bill to customer account corresponding
322 -- to a bill to site id
323 CURSOR c_cust_csr (p_bill_to_site_use_id NUMBER)
324 IS
325 SELECT ca.cust_account_id
326 FROM hz_cust_acct_sites_all ca, hz_cust_site_uses_all cs
327 WHERE ca.cust_acct_site_id = cs.cust_acct_site_id
328 AND cs.site_use_id = p_bill_to_site_use_id;
329
330 CURSOR c_party (c_cust_acct_id IN NUMBER)
331 IS
332 SELECT ca.party_id party_id
333 FROM hz_cust_accounts_all ca
334 WHERE ca.cust_account_id = c_cust_acct_id;
335 BEGIN
336
337 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
338 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
339 'p_context_level = '||p_context_level);
340
341 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
342 'p_order_header_id = '||p_order_header_id);
343
344 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
345 'p_order_line_id = '||p_order_line_id);
346
347 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
348 'p_contract_hdr_id = '||p_contract_hdr_id);
349
350 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
351 'p_contract_line_id = '||p_contract_line_id);
352 END IF;
353
354 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
355
356 OPEN c_header_trxid(p_order_header_id);
357 FETCH c_header_trxid INTO l_order_number,l_invoice_to_org_id,l_trxn_extension_id;
358 CLOSE c_header_trxid;
359
360 ELSIF p_context_level = G_CONTEXT_ORDER_LINE THEN
361 OPEN c_line_trxid(p_order_line_id);
362 FETCH c_line_trxid INTO l_invoice_to_org_id,l_trxn_extension_id;
363 CLOSE c_line_trxid;
364
365 END IF;
366
367 -- Proceed Further only if a Credit Card info is to be processed
368 IF l_trxn_extension_id IS NOT NULL THEN
369 OPEN c_instrid (l_trxn_extension_id);
370 FETCH c_instrid INTO l_instr_id;
371 CLOSE c_instrid;
372
373 -- For a transaction extension id, an instrument assignment id
374 -- should always exist in iPayments.
375 IF l_instr_id IS NULL THEN
376 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
377 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
378 fnd_log.STRING (fnd_log.level_error,
379 g_module_current
380 || '.get_cc_trxn_extn-Header.ERROR',
381 'After CURSOR - c_InstrId'
382 || ' ,Payment Txn ID = '
383 || l_trxn_extension_id
384 || ' ,p_order_header_id = '
385 || p_order_header_id
386 );
387 ELSE
388 fnd_log.STRING (fnd_log.level_error,
389 g_module_current
390 || '.get_cc_trxn_extn-Line.ERROR',
391 'After CURSOR - c_InstrId'
392 || ' ,Payment Txn ID = '
393 || l_trxn_extension_id
394 || ' ,p_line_id = '
395 || p_order_line_id
396 );
397 END IF;
398 END IF;
399 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
400 okc_api.set_message(g_app_name,
401 'OKS_CC_INS_ASSG_NOT_FOUND',
402 'ORDER_NUMBER',
403 l_order_number
404 );
405 ELSE
406 okc_api.set_message(g_app_name,
407 'OKS_LINE_CC_INS_ASSG_NOT_FOUND',
408 'ORDER_LINE_ID',
409 p_order_line_id
410 );
411 END IF;
412 RAISE g_exception_halt_validation;
413 END IF;
414
415 OPEN c_cust_csr(l_invoice_to_org_id);
416 FETCH c_cust_csr INTO l_iby_cust_id;
417 CLOSE c_cust_csr;
418
419 OPEN c_party (l_iby_cust_id);
420 FETCH c_party INTO l_iby_party;
421 CLOSE c_party;
422
423 l_payercontext_rec.payment_function := IBY_FNDCPT_COMMON_PUB.G_PMT_FUNCTION_CUST_PMT;
424 l_payercontext_rec.party_id := l_iby_party;
425 l_payercontext_rec.cust_account_id := l_iby_cust_id;
426
427 -- Based on the header or line level, the corresponding contract header
428 -- or contract line id is passed as the order id
429 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
430 l_trxnextension_rec.order_id := p_contract_hdr_id;
431 ELSE
432 l_trxnextension_rec.order_id := p_contract_line_id;
433 END IF;
434
435 l_trxnextension_rec.originating_application_id := g_app_id;
436 l_trxnextension_rec.trxn_ref_number1 := TO_CHAR (SYSDATE, 'ddmmyyyyhhmmssss');
437
438 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
439 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
440 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
441 fnd_log.STRING(
442 fnd_log.level_statement,
443 g_module_current || '.get_cc_trxn_extn-Header',
444 'Before call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension for order header'
445 || ' ,Party_Id = '
446 || l_payercontext_rec.party_id
447 || ' ,Cust_Account_Id = '
448 || l_payercontext_rec.cust_account_id
449 || ' ,order_id = '
450 || l_trxnextension_rec.order_id
451 || ' ,Trxn_Ref_Number1 = '
452 || l_trxnextension_rec.trxn_ref_number1
453 || ' ,instr_assignment = '
454 || l_instr_id
455 || ' ,application_id= '
456 || l_trxnextension_rec.originating_application_id
457 );
458 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
459 ELSE
460 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
461 fnd_log.STRING
462 (fnd_log.level_statement,
463 g_module_current || '.get_cc_trxn_extn-Line',
464 'Before call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension for order line'
465 || ' ,Party_Id = '
466 || l_payercontext_rec.party_id
467 || ' ,Cust_Account_Id = '
468 || l_payercontext_rec.cust_account_id
469 || ' ,order_id (i.e. order line id) = '
470 || l_trxnextension_rec.order_id
471 || ' ,Trxn_Ref_Number1 = '
472 || l_trxnextension_rec.trxn_ref_number1
473 || ' ,instr_assignment = '
474 || l_instr_id
475 || ' ,application_id= '
476 || l_trxnextension_rec.originating_application_id
477 );
478 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
479 END IF;
480 END IF;
481
482 -- A payer equivalency level of full is provided for iPayments to be
483 -- able to traverse up and down for a given instrument id
484 -- Note: The new transaction extension that is created at a customer
485 -- account level.
486 iby_fndcpt_trxn_pub.create_transaction_extension
487 (p_api_version => 1.0,
488 p_init_msg_list => 'T',
489 p_commit => 'F',
490 x_return_status => l_return_status,
491 x_msg_count => l_msg_count,
492 x_msg_data => l_msg_data,
493 p_payer => l_payercontext_rec,
494 p_payer_equivalency => IBY_FNDCPT_COMMON_PUB.G_PAYER_EQUIV_FULL,
495 p_pmt_channel => G_PAYMENT_CREDIT_CARD,
496 p_instr_assignment => l_instr_id,
497 p_trxn_attribs => l_trxnextension_rec,
498 x_entity_id => l_entity_id,
499 x_response => l_response
500 );
501
502 IF l_return_status <> 'S' THEN
503 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
504 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
505 fnd_log.STRING
506 (fnd_log.level_error,
507 g_module_current || '.get_cc_trxn_extn-Header.ERROR',
508 'After call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension'
509 || ' ,x_return_status= '
510 || l_return_status
511 || ' ,Result Code = '
512 || l_response.result_code
513 || ' ,Result Category= '
514 || l_response.result_category
515 || ' ,Result Message= '
516 || l_response.result_message
517 );
518 ELSE
519 fnd_log.STRING
520 (fnd_log.level_error,
521 g_module_current || '.get_cc_trxn_extn-Line.ERROR',
522 'After call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension'
523 || ' ,x_return_status= '
524 || l_return_status
525 || ' ,Result Code = '
526 || l_response.result_code
527 || ' ,Result Category= '
528 || l_response.result_category
529 || ' ,Result Message= '
530 || l_response.result_message
531 );
532 END IF;
533 END IF;
534 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
535 okc_api.set_message(g_app_name,
536 'OKS_CC_EXTN_CREATN_FAILED',
537 'ORDER_NUMBER',
538 l_order_number
539 );
540 ELSE
541 okc_api.set_message(g_app_name,
542 'OKS_LINE_CC_EXTN_CREATN_FAILED',
543 'ORDER_LINE_ID',
544 p_order_line_id
545 );
546 END IF;
547 RAISE g_exception_halt_validation;
548 END IF;
549
550 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
551 fnd_log.STRING (fnd_log.level_statement,
552 g_module_current||'.get_cc_trxn_extn ',
553 'l_entity_id = '||l_entity_id);
554 END IF;
555
556 x_entity_id := l_entity_id;
557 END IF;
558 x_return_status := l_return_status;
559 EXCEPTION
560 WHEN g_exception_halt_validation THEN
561 x_return_status := FND_API.G_RET_STS_ERROR;
562 WHEN OTHERS THEN
563 IF c_header_trxid%ISOPEN THEN
564 CLOSE c_header_trxid;
565 END IF;
566
567 IF c_line_trxid%ISOPEN THEN
568 CLOSE c_line_trxid;
569 END IF;
570
571 IF c_instrid%ISOPEN THEN
572 CLOSE c_instrid;
573 END IF;
574
575 IF c_cust_csr%ISOPEN THEN
576 CLOSE c_cust_csr;
577 END IF;
578
579 IF c_party%ISOPEN THEN
580 CLOSE c_party;
581 END IF;
582
583 x_return_status := okc_api.g_ret_sts_unexp_error;
584 okc_api.set_message (g_app_name,
585 g_unexpected_error,
586 g_sqlcode_token,
587 SQLCODE,
588 g_sqlerrm_token,
589 SQLERRM
590 );
591
592 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level THEN
593 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
594 fnd_log.STRING (fnd_log.level_unexpected,
595 g_module_current
596 || '.get_cc_trxn_extn-Header.UNEXPECTED',
597 ' sqlcode = ' || SQLCODE || ', sqlerrm = '
598 || SQLERRM
599 );
600 ELSE
601 fnd_log.STRING (fnd_log.level_unexpected,
602 g_module_current
603 || '.get_cc_trxn_extn-Line.UNEXPECTED',
604 ' sqlcode = ' || SQLCODE || ', sqlerrm = '
605 || SQLERRM
606 );
607 END IF;
608 END IF;
609 END get_cc_trxn_extn;
610
611
612 PROCEDURE party_role (
613 p_chrid IN NUMBER,
614 p_cleid IN NUMBER,
615 p_rle_code IN VARCHAR2,
616 p_partyid IN NUMBER,
617 p_object_code IN VARCHAR2,
618 x_roleid OUT NOCOPY NUMBER,
619 x_msg_count OUT NOCOPY NUMBER,
620 x_msg_data OUT NOCOPY VARCHAR2,
621 x_return_status OUT NOCOPY VARCHAR2
622 )
623 IS
624 l_api_version CONSTANT NUMBER := 1.0;
625 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
626 l_return_status VARCHAR2 (1) := okc_api.g_ret_sts_success;
627 l_index VARCHAR2 (240);
628 --Party Role
629 l_cplv_tbl_in okc_contract_party_pub.cplv_tbl_type;
630 l_cplv_tbl_out okc_contract_party_pub.cplv_tbl_type;
631
632 CURSOR l_party_csr
633 IS
634 SELECT ID
635 FROM okc_k_party_roles_b
636 WHERE dnz_chr_id = p_chrid
637 AND cle_id IS NULL
638 AND chr_id = p_chrid
639 AND rle_code = p_rle_code;
640
641 CURSOR l_lparty_csr
642 IS
643 SELECT ID
644 FROM okc_k_party_roles_b
645 WHERE dnz_chr_id = p_chrid
646 AND chr_id IS NULL
647 AND cle_id = p_cleid
648 AND rle_code = p_rle_code;
649
650 l_roleid NUMBER;
651 BEGIN
652 l_return_status := okc_api.g_ret_sts_success;
653
654 IF p_cleid IS NULL
655 THEN
656 l_roleid := NULL;
657
658 OPEN l_party_csr;
659
660 FETCH l_party_csr
661 INTO l_roleid;
662
663 CLOSE l_party_csr;
664
665 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
666 THEN
667 fnd_log.STRING (fnd_log.level_statement,
668 g_module_current || '.PARTY_ROLE',
669 'Party Role Id = ' || l_roleid
670 );
671 END IF;
672
673 IF l_roleid IS NOT NULL
674 THEN
675 x_roleid := l_roleid;
676 RETURN;
677 END IF;
678
679 l_cplv_tbl_in (1).chr_id := p_chrid;
680 ELSE
681 l_roleid := NULL;
682
683 OPEN l_lparty_csr;
684
685 FETCH l_lparty_csr
686 INTO l_roleid;
687
688 CLOSE l_lparty_csr;
689
690 IF l_roleid IS NOT NULL
691 THEN
692 x_roleid := l_roleid;
693 RETURN;
694 END IF;
695
696 l_cplv_tbl_in (1).cle_id := p_cleid;
697 END IF;
698
699 l_cplv_tbl_in (1).sfwt_flag := 'N';
700 l_cplv_tbl_in (1).rle_code := p_rle_code;
701 l_cplv_tbl_in (1).object1_id1 := p_partyid;
702 l_cplv_tbl_in (1).object1_id2 := '#';
703 l_cplv_tbl_in (1).jtot_object1_code := p_object_code;
704 l_cplv_tbl_in (1).dnz_chr_id := p_chrid;
705 okc_contract_party_pub.create_k_party_role
706 (p_api_version => l_api_version,
707 p_init_msg_list => l_init_msg_list,
708 x_return_status => l_return_status,
709 x_msg_count => x_msg_count,
710 x_msg_data => x_msg_data,
711 p_cplv_tbl => l_cplv_tbl_in,
712 x_cplv_tbl => l_cplv_tbl_out
713 );
714
715 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
716 THEN
717 fnd_log.STRING
718 (fnd_log.level_event,
719 g_module_current || '.PARTY_ROLE.external_call.after',
720 'okc_contract_party_pub.create_k_party_role(Return status ='
721 || l_return_status
722 || ')'
723 || 'Party Role Id = '
724 || l_cplv_tbl_out (1).ID
725 );
726 END IF;
727
728 IF l_return_status = 'S'
729 THEN
730 x_roleid := l_cplv_tbl_out (1).ID;
731 ELSE
732 okc_api.set_message (g_app_name,
733 g_required_value,
734 g_col_name_token,
735 p_rle_code || ' Party Role (HEADER)'
736 );
737 RAISE g_exception_halt_validation;
738 END IF;
739 EXCEPTION
740 WHEN g_exception_halt_validation
741 THEN
742 x_return_status := l_return_status;
743 NULL;
744 WHEN OTHERS
745 THEN
746 x_return_status := okc_api.g_ret_sts_unexp_error;
747 okc_api.set_message (g_app_name,
748 g_unexpected_error,
749 g_sqlcode_token,
750 SQLCODE,
751 g_sqlerrm_token,
752 SQLERRM
753 );
754 END;
755
756 -----------------------------------------------------------------------
757 -- GetFormattedInvoiceText
758 -- added 05/29/2002 --Vigandhi
759 -- For Bug#2396580
760 -----------------------------------------------------------------------
761 FUNCTION getformattedinvoicetext (
762 p_product_item IN NUMBER,
763 p_start_date IN DATE,
764 p_end_date IN DATE,
765 p_item_desc IN VARCHAR2,
766 p_qty IN NUMBER
767 )
768 RETURN VARCHAR2
769 IS
770 /* CURSOR l_item_csr IS
771 SELECT jtot_object1_code,
772 object1_id1,
773 object1_id2,
774 number_of_items
775 FROM okc_k_items
776 WHERE cle_id = p_cle_id;
777 */
778 CURSOR l_inv_csr (p_product_item NUMBER)
779 IS
780 SELECT t.description NAME, b.concatenated_segments description
781 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
782 WHERE b.inventory_item_id = t.inventory_item_id
783 AND b.organization_id = t.organization_id
784 AND t.LANGUAGE = USERENV ('LANG')
785 AND b.inventory_item_id = p_product_item
786 AND ROWNUM < 2;
787
788 l_object_code okc_k_items.jtot_object1_code%TYPE;
789 l_object1_id1 okc_k_items.object1_id1%TYPE;
790 l_object1_id2 okc_k_items.object1_id2%TYPE;
791 l_no_of_items okc_k_items.number_of_items%TYPE;
792 l_name VARCHAR2 (2000);
793 l_desc VARCHAR2 (2000);
794 l_formatted_invoice_text VARCHAR2 (2000);
795 BEGIN
796 OPEN l_inv_csr (p_product_item);
797
798 FETCH l_inv_csr
799 INTO l_name, l_desc;
800
801 CLOSE l_inv_csr;
802
803 IF fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE') = 'DISPLAY_DESC'
804 THEN
805 l_desc := l_name; --l_desc;
806 ELSE
807 l_desc := l_desc; --l_name;
808 END IF;
809
810 l_formatted_invoice_text :=
811 SUBSTR ( p_item_desc
812 || ':'
813 || p_qty
814 || ':'
815 || l_desc
816 || ':'
817 || to_char(p_start_date,'DD-MON-YYYY')
818 || ':'
819 || to_char(p_end_date,'DD-MON-YYYY'),
820 1,
821 450
822 );
823 RETURN (l_formatted_invoice_text);
824 END getformattedinvoicetext;
825
826 -----------------------------------------------------------------------
827 -- Get Contract Hearder Id
828 -----------------------------------------------------------------------
829 FUNCTION get_k_hdr_id (
830 p_type VARCHAR2,
831 p_object_id IN NUMBER,
832 p_enddate IN DATE
833 )
834 RETURN NUMBER
835 IS
836 CURSOR l_kexists_csr (p_jtf_id VARCHAR2)
837 IS
838 SELECT chr_id
839 FROM okc_k_rel_objs
840 WHERE object1_id1 = TO_CHAR (p_object_id)
841 AND jtot_object1_code = p_jtf_id;
842
843 CURSOR l_wexists_csr (p_jtf_id VARCHAR2)
844 IS
845 SELECT chr_id
846 FROM okc_k_rel_objs
847 WHERE object1_id1 = TO_CHAR (p_object_id)
848 AND jtot_object1_code = p_jtf_id
849 AND rty_code = 'CONTRACTWARRANTYORDER';
850
851 l_wchrid NUMBER;
852 l_kchrid NUMBER;
853 l_jtf_id VARCHAR2 (30);
854
855 CURSOR l_hdr_csr
856 IS
857 SELECT ID chr_id
858 FROM okc_k_headers_v
859 WHERE attribute1 = p_object_id AND end_date = p_enddate;
860 BEGIN
861 IF p_type = 'ORDER'
862 THEN
863 l_jtf_id := g_jtf_order_hdr;
864
865 OPEN l_kexists_csr (l_jtf_id);
866
867 FETCH l_kexists_csr
868 INTO l_kchrid;
869
870 IF l_kexists_csr%NOTFOUND
871 THEN
872 CLOSE l_kexists_csr;
873
874 RETURN (NULL);
875 END IF;
876
877 CLOSE l_kexists_csr;
878
879 RETURN (l_kchrid);
880 ELSIF p_type = 'RENEW'
881 THEN
882 OPEN l_hdr_csr;
883
884 FETCH l_hdr_csr
885 INTO l_kchrid;
886
887 IF l_hdr_csr%NOTFOUND
888 THEN
889 CLOSE l_hdr_csr;
890
891 RETURN (NULL);
892 END IF;
893
894 CLOSE l_hdr_csr;
895
896 RETURN (l_kchrid);
897 ELSIF p_type = 'WARR'
898 THEN
899 l_jtf_id := g_jtf_order_hdr;
900
901 OPEN l_wexists_csr (l_jtf_id);
902
903 FETCH l_wexists_csr
904 INTO l_wchrid;
905
906 IF l_wexists_csr%NOTFOUND
907 THEN
908 CLOSE l_wexists_csr;
909
910 RETURN (NULL);
911 END IF;
912
913 CLOSE l_wexists_csr;
914
915 RETURN (l_wchrid);
916 END IF;
917 END get_k_hdr_id;
918
919 FUNCTION priced_yn (p_lse_id IN NUMBER)
920 RETURN VARCHAR2
921 IS
922 CURSOR c_priced_yn
923 IS
924 SELECT priced_yn
925 FROM okc_line_styles_b
926 WHERE ID = p_lse_id;
927
928 v_priced VARCHAR2 (50) := 'N';
929 BEGIN
930 FOR cur_c_priced_yn IN c_priced_yn
931 LOOP
932 v_priced := cur_c_priced_yn.priced_yn;
933 EXIT;
934 END LOOP;
935
936 RETURN (v_priced);
937 END priced_yn;
938
939 FUNCTION check_strmlvl_exists (p_cle_id IN NUMBER)
940 RETURN NUMBER
941 IS
942 CURSOR l_billsch_csr (p_cle_id IN NUMBER)
943 IS
944 SELECT ID
945 FROM oks_stream_levels_v
946 WHERE cle_id = p_cle_id;
947
948 l_strmlvl_id NUMBER;
949 BEGIN
950 OPEN l_billsch_csr (p_cle_id);
951
952 FETCH l_billsch_csr
953 INTO l_strmlvl_id;
954
955 IF (l_billsch_csr%FOUND)
956 THEN
957 RETURN (l_strmlvl_id);
958 ELSE
959 RETURN (NULL);
960 END IF;
961
962 CLOSE l_billsch_csr;
963 EXCEPTION
964 WHEN NO_DATA_FOUND
965 THEN
966 RETURN (NULL);
967 END;
968
969 FUNCTION check_lvlelements_exists (p_cle_id IN NUMBER)
970 RETURN BOOLEAN
971 IS
972 CURSOR l_billsll_csr (p_cle_id IN NUMBER)
973 IS
974 SELECT 'x'
975 FROM oks_stream_levels_v sll, oks_level_elements lvl
976 WHERE lvl.rul_id = sll.ID AND sll.cle_id = p_cle_id;
977
978 v_flag BOOLEAN := FALSE;
979 v_temp VARCHAR2 (5);
980 BEGIN
981 OPEN l_billsll_csr (p_cle_id);
982
983 FETCH l_billsll_csr
984 INTO v_temp;
985
986 IF (l_billsll_csr%FOUND)
987 THEN
988 v_flag := TRUE;
989 ELSE
990 v_flag := FALSE;
991 END IF;
992
993 CLOSE l_billsll_csr;
994
995 RETURN (v_flag);
996 END;
997
998 /*************************************************************
999 Creates a record in operation instances for Transfer, Split, Replace
1000 and Update transactions.
1001 **************************************************************/
1002 PROCEDURE create_operation_instance (
1003 p_target_chr_id NUMBER,
1004 p_transaction VARCHAR2,
1005 x_oper_instance_id OUT NOCOPY NUMBER,
1006 x_return_status OUT NOCOPY VARCHAR2,
1007 x_msg_count OUT NOCOPY NUMBER,
1008 x_msg_data OUT NOCOPY VARCHAR2
1009 )
1010 IS
1011 CURSOR cop_csr (p_opn_code VARCHAR2)
1012 IS
1013 SELECT ID
1014 FROM okc_class_operations
1015 WHERE cls_code = (SELECT cls_code
1016 FROM okc_subclasses_b
1017 WHERE code = 'SERVICE')
1018 AND opn_code = p_opn_code;
1019
1020 l_cop_id NUMBER;
1021 l_api_version CONSTANT NUMBER := 1.0;
1022 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
1023 l_return_status VARCHAR2 (1) := 'S';
1024 l_oiev_tbl_in okc_oper_inst_pvt.oiev_tbl_type;
1025 l_oiev_tbl_out okc_oper_inst_pvt.oiev_tbl_type;
1026 BEGIN
1027 x_return_status := l_return_status;
1028
1029 -- get class operation id
1030 OPEN cop_csr (p_transaction);
1031
1032 FETCH cop_csr
1033 INTO l_cop_id;
1034
1035 CLOSE cop_csr;
1036
1037 l_oiev_tbl_in (1).status_code := 'PROCESSED';
1038 l_oiev_tbl_in (1).cop_id := l_cop_id;
1039 l_oiev_tbl_in (1).target_chr_id := p_target_chr_id;
1040 okc_oper_inst_pub.create_operation_instance
1041 (p_api_version => l_api_version,
1042 p_init_msg_list => l_init_msg_list,
1043 x_return_status => l_return_status,
1044 x_msg_count => x_msg_count,
1045 x_msg_data => x_msg_data,
1046 p_oiev_tbl => l_oiev_tbl_in,
1047 x_oiev_tbl => l_oiev_tbl_out
1048 );
1049 x_oper_instance_id := l_oiev_tbl_out (1).ID;
1050 x_return_status := l_return_status;
1051 EXCEPTION
1052 WHEN OTHERS
1053 THEN
1054 x_return_status := okc_api.g_ret_sts_unexp_error;
1055 okc_api.set_message (g_app_name,
1056 g_unexpected_error,
1057 g_sqlcode_token,
1058 SQLCODE,
1059 g_sqlerrm_token,
1060 SQLERRM
1061 );
1062 END;
1063
1064 /***********************************************
1065 Create operation lines , linking the old and new lines
1066 for Split, replace, transfer and update transactions
1067 ***********************************************/
1068 PROCEDURE create_operation_lines (
1069 p_source_line_id NUMBER,
1070 p_target_line_id NUMBER,
1071 p_source_chr_id NUMBER,
1072 p_target_chr_id NUMBER,
1073 p_opr_instance_id NUMBER,
1074 x_return_status OUT NOCOPY VARCHAR2,
1075 x_msg_count OUT NOCOPY NUMBER,
1076 x_msg_data OUT NOCOPY VARCHAR2
1077 )
1078 IS
1079 l_api_version CONSTANT NUMBER := 1.0;
1080 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
1081 l_return_status VARCHAR2 (1) := 'S';
1082 l_olev_tbl_in okc_oper_inst_pvt.olev_tbl_type;
1083 l_olev_tbl_out okc_oper_inst_pvt.olev_tbl_type;
1084 BEGIN
1085 x_return_status := l_return_status;
1086 l_olev_tbl_in (1).oie_id := p_opr_instance_id;
1087 l_olev_tbl_in (1).process_flag := 'P';
1088 l_olev_tbl_in (1).subject_chr_id := p_target_chr_id;
1089 l_olev_tbl_in (1).object_chr_id := p_source_chr_id;
1090 l_olev_tbl_in (1).subject_cle_id := p_target_line_id;
1091 l_olev_tbl_in (1).object_cle_id := p_source_line_id;
1092 l_olev_tbl_in (1).active_yn := 'Y';
1093 okc_oper_inst_pub.create_operation_line
1094 (p_api_version => l_api_version,
1095 p_init_msg_list => l_init_msg_list,
1096 x_return_status => l_return_status,
1097 x_msg_count => x_msg_count,
1098 x_msg_data => x_msg_data,
1099 p_olev_tbl => l_olev_tbl_in,
1100 x_olev_tbl => l_olev_tbl_out
1101 );
1102 x_return_status := l_return_status;
1103 EXCEPTION
1104 WHEN OTHERS
1105 THEN
1106 x_return_status := okc_api.g_ret_sts_unexp_error;
1107 okc_api.set_message (g_app_name,
1108 g_unexpected_error,
1109 g_sqlcode_token,
1110 SQLCODE,
1111 g_sqlerrm_token,
1112 SQLERRM
1113 );
1114 END;
1115
1116 /***********************************************
1117
1118 Check if two contract headers can be merged for
1119 System Transfers
1120 ************************************************/
1121 PROCEDURE header_merge_yn (
1122 p_source_chr_id IN NUMBER,
1123 p_target_chr_id IN NUMBER,
1124 p_sts_code IN VARCHAR2,
1125 x_eligible_yn OUT NOCOPY VARCHAR2,
1126 x_msg_count OUT NOCOPY NUMBER,
1127 x_msg_data OUT NOCOPY VARCHAR2,
1128 x_return_status OUT NOCOPY VARCHAR2
1129 )
1130 IS
1131 -- [Signed] [Active] (Profile) <=> [Signed] [Active](Target)
1132 -- [Entered] (Profile) => [Entered, Active] (Target)
1133 CURSOR source_csr (l_chr_id NUMBER)
1134 IS
1135 SELECT a.payment_term_id, a.price_list_id, c.ste_code, --a.STS_CODE,
1136 a.authoring_org_id, a.currency_code, a.template_yn,
1137 a.conversion_type, a.conversion_rate, a.conversion_rate_date,
1138 a.conversion_euro_rate, b.inv_trx_type, b.ar_interface_yn,
1139 b.summary_trx_yn, b.hold_billing, a.inv_organization_id,
1140 a.scs_code, c.ste_code source_ste_code, b.period_start,
1141 b.period_type, b.price_uom, a.billed_at_source
1142 FROM okc_k_headers_all_b a, oks_k_headers_b b, okc_statuses_b c
1143 WHERE a.ID = l_chr_id AND a.ID = b.chr_id AND p_sts_code = c.code;
1144
1145 -- and c.ste_code in ('ACTIVE','ENTERED','SIGNED');
1146
1147 -- Comparing the profile value 'OKS_TRANSFER_STATUS' with target ste_code
1148 CURSOR target_csr (
1149 l_target_chr_id NUMBER,
1150 l_pay_term NUMBER,
1151 l_price_list NUMBER,
1152 l_profile VARCHAR2,
1153 l_source_ste_code VARCHAR2,
1154 l_org_id NUMBER,
1155 l_curr_code VARCHAR2,
1156 l_temp_yn VARCHAR2,
1157 l_conv_type VARCHAR2,
1158 l_conv_rate VARCHAR2,
1159 l_conv_rate_date DATE,
1160 l_conv_euro NUMBER,
1161 l_trx_type VARCHAR2,
1162 l_ar_int VARCHAR2,
1163 l_sum_trx VARCHAR2,
1164 l_hold_bill VARCHAR2,
1165 l_inv_org_id NUMBER,
1166 l_scs_code VARCHAR2,
1167 l_period_start VARCHAR2,
1168 l_period_type VARCHAR2,
1169 l_price_uom VARCHAR2,
1170 l_billed_at_source VARCHAR2
1171 )
1172 IS
1173 SELECT a.ID
1174 FROM okc_k_headers_all_b a, oks_k_headers_b b, okc_statuses_b c
1175 WHERE a.ID = l_target_chr_id
1176 AND a.ID = b.chr_id
1177 AND a.sts_code= c.code --Bug fix 5614310
1178 AND c.ste_code IN ('ACTIVE', 'ENTERED', 'SIGNED')
1179 AND ( DECODE (DECODE (l_source_ste_code,
1180 'ACTIVE', 1,
1181 'SIGNED', 1,
1182 'HOLD', 1,
1183 0
1184 ),
1185 DECODE (l_profile, 'ACTIVE', 1, 2), 1,
1186 3
1187 ) =
1188 DECODE (c.ste_code,
1189 'ACTIVE', 1,
1190 'SIGNED', 1,
1191 4
1192 )
1193 OR DECODE (DECODE (l_source_ste_code,
1194 'ACTIVE', 1,
1195 'SIGNED', 1,
1196 'HOLD', 1,
1197 0
1198 ),
1199 DECODE (l_profile, 'ENTERED', 1, 2), 1,
1200 3
1201 ) = DECODE (c.ste_code, 'ENTERED', 1, 4)
1202 OR DECODE (l_source_ste_code, 'ENTERED', 1, 2) =
1203 DECODE (c.ste_code,
1204 'ENTERED', 1,
1205 3
1206 )
1207 )
1208 AND NVL (a.payment_term_id, -99) = NVL (l_pay_term, -99)
1209 AND NVL (a.price_list_id, -99) = NVL (l_price_list, -99)
1210 AND a.authoring_org_id = l_org_id
1211 AND a.currency_code = l_curr_code
1212 AND a.template_yn = l_temp_yn
1213 AND NVL (a.conversion_type, -99) = NVL (l_conv_type, -99)
1214 AND NVL (a.conversion_rate, -99) = NVL (l_conv_rate, -99)
1215 AND DECODE (a.conversion_rate_date,
1216 NULL, -99,
1217 SYSDATE - TRUNC (a.conversion_rate_date)
1218 ) =
1219 DECODE (l_conv_rate_date,
1220 NULL, -99,
1221 SYSDATE - TRUNC (l_conv_rate_date)
1222 )
1223 AND NVL (a.conversion_euro_rate, -99) = NVL (l_conv_euro, -99)
1224 AND NVL (b.inv_trx_type, -99) = NVL (l_trx_type, -99)
1225 AND NVL (b.ar_interface_yn, -99) = NVL (l_ar_int, -99)
1226 AND NVL (b.summary_trx_yn, -99) = NVL (l_sum_trx, -99)
1227 AND NVL (b.hold_billing, -99) = NVL (l_hold_bill, -99)
1228 AND NVL (a.inv_organization_id, -99) = NVL (l_inv_org_id, -99)
1229 AND NVL (a.scs_code, -99) = NVL (l_scs_code, -99)
1230 AND NVL (b.period_start, -99) = NVL (l_period_start, -99)
1231 AND NVL (b.period_type, -99) = NVL (l_period_type, -99)
1232 AND NVL (b.price_uom, -99) = NVL (l_price_uom, -99)
1233 AND NVL (a.billed_at_source, '-99') = NVL(l_billed_at_source, '-99');
1234
1235 l_target_rec target_csr%ROWTYPE;
1236 l_source_rec source_csr%ROWTYPE;
1237 BEGIN
1238 x_return_status := okc_api.g_ret_sts_success;
1239
1240 OPEN source_csr (p_source_chr_id);
1241
1242 FETCH source_csr
1243 INTO l_source_rec;
1244
1245 CLOSE source_csr;
1246
1247 OPEN target_csr (p_target_chr_id,
1248 l_source_rec.payment_term_id,
1249 l_source_rec.price_list_id,
1250 fnd_profile.VALUE ('OKS_TRANSFER_STATUS'),
1251 l_source_rec.source_ste_code,
1252 l_source_rec.authoring_org_id,
1253 l_source_rec.currency_code,
1254 l_source_rec.template_yn,
1255 l_source_rec.conversion_type,
1256 l_source_rec.conversion_rate,
1257 l_source_rec.conversion_rate_date,
1258 l_source_rec.conversion_euro_rate,
1259 l_source_rec.inv_trx_type,
1260 l_source_rec.ar_interface_yn,
1261 l_source_rec.summary_trx_yn,
1262 l_source_rec.hold_billing,
1263 l_source_rec.inv_organization_id,
1264 l_source_rec.scs_code,
1265 l_source_rec.period_start,
1266 l_source_rec.period_type,
1267 l_source_rec.price_uom,
1268 l_source_rec.billed_at_source
1269 );
1270
1271 FETCH target_csr
1272 INTO l_target_rec;
1273
1274 IF target_csr%NOTFOUND
1275 THEN
1276 x_eligible_yn := 'N';
1277 ELSE
1278 x_eligible_yn := 'Y';
1279 END IF;
1280
1281 CLOSE target_csr;
1282 EXCEPTION
1283 WHEN OTHERS
1284 THEN
1285 x_return_status := okc_api.g_ret_sts_unexp_error;
1286 okc_api.set_message (g_app_name,
1287 g_unexpected_error,
1288 g_sqlcode_token,
1289 SQLCODE,
1290 g_sqlerrm_token,
1291 SQLERRM
1292 );
1293 END header_merge_yn;
1294
1295 /***********************************************
1296
1297 Check if two contract lines can be merged for
1298 System Transfers
1299 ************************************************/
1300 PROCEDURE line_merge_yn (
1301 p_source_line_id IN NUMBER,
1302 p_target_line_id IN NUMBER,
1303 p_source_flag IN VARCHAR2,
1304 x_eligible_yn OUT NOCOPY VARCHAR2,
1305 x_msg_count OUT NOCOPY NUMBER,
1306 x_msg_data OUT NOCOPY VARCHAR2,
1307 x_return_status OUT NOCOPY VARCHAR2
1308 )
1309 IS
1310 -- [Signed] [Active] (Profile) <=> [Signed] [Active] (Target)
1311 -- [Entered] (Profile) => [Entered, Active] (Target)
1312 CURSOR source_line (l_line_id NUMBER)
1313 IS
1314 SELECT b.acct_rule_id, a.price_list_id, c.ste_code, a.lse_id,
1315 a.bill_to_site_use_id, a.line_renewal_type_code,
1316 b.tax_code --Fix for bug 4121175
1317 ,
1318 b.price_uom
1319 FROM okc_k_lines_b a, oks_k_lines_b b, okc_statuses_b c
1320 WHERE a.ID = l_line_id AND a.ID = b.cle_id AND a.sts_code = c.code;
1321
1322 CURSOR service_item (l_line_id NUMBER)
1323 IS
1324 SELECT object1_id1
1325 FROM okc_k_items
1326 WHERE cle_id = l_line_id AND jtot_object1_code LIKE 'OKX_SYSITEM';
1327
1328 -- if date_completed is not null then it's billed.
1329 CURSOR get_date_complete (l_line_id NUMBER)
1330 IS
1331 SELECT a.date_completed
1332 FROM oks_level_elements a, oks_stream_levels_b b
1333 WHERE b.cle_id = l_line_id AND a.rul_id = b.ID;
1334
1335 CURSOR target_line (
1336 l_line_id NUMBER,
1337 l_acct_rule_id NUMBER,
1338 l_price_list_id NUMBER,
1339 l_ste_code VARCHAR2,
1340 l_lse_id NUMBER,
1341 l_flag VARCHAR2,
1342 l_bill_to_site_use_id NUMBER,
1343 l_line_renewal_type_code VARCHAR2,
1344 l_tax_code VARCHAR2,
1345 l_price_uom VARCHAR2
1346 )
1347 IS
1348 SELECT a.ID
1349 FROM okc_k_lines_b a, oks_k_lines_b b, okc_statuses_b c
1350 WHERE a.ID = l_line_id
1351 AND a.ID = b.cle_id
1352 AND a.sts_code = c.code
1353 AND c.ste_code IN ('ACTIVE', 'ENTERED', 'SIGNED')
1354 AND NVL (b.acct_rule_id, -99) = NVL (l_acct_rule_id, -99)
1355 AND NVL (b.tax_code, -99) = NVL (l_tax_code, -99)
1356 --Fix for bug 4121175
1357 AND NVL (b.price_uom, -99) = NVL (l_price_uom, -99)
1358 AND NVL (a.price_list_id, -99) = NVL (l_price_list_id, -99)
1359 /*
1360 AND ( c.ste_code = l_ste_code
1361 OR decode (l_ste_code, 'SIGNED', 1, 'ACTIVE', 1, 4) =
1362 decode(c.ste_code, 'SIGNED', 1, 'ACTIVE', 1, 3)
1363 )
1364 */
1365 AND a.lse_id = l_lse_id
1366 AND ( DECODE (l_flag, 'N', 0, 1) = 0
1367 OR ( DECODE (l_flag, 'Y', 1, 0) = 1
1368 AND NVL (a.bill_to_site_use_id, -99) =
1369 NVL (l_bill_to_site_use_id,
1370 -99)
1371 AND NVL (a.line_renewal_type_code, -99) =
1372 NVL (l_line_renewal_type_code,
1373 -99)
1374 )
1375 );
1376
1377 CURSOR sales_credit_csr (l_line_id NUMBER)
1378 IS
1379 SELECT PERCENT, sc.sales_credit_type_id1, sct.quota_flag,
1380 sc.ctc_id sales_person_id, sc.sales_group_id
1381 FROM oks_k_sales_credits sc, oe_sales_credit_types sct
1382 WHERE sc.sales_credit_type_id1 = sct.sales_credit_type_id
1383 AND sc.cle_id = l_line_id;
1384
1385 CURSOR target_sales_credit_csr (
1386 l_line_id NUMBER,
1387 l_percent NUMBER,
1388 l_sales_credit_type_id1 NUMBER,
1389 l_quota_flag VARCHAR2,
1390 l_sales_person_id NUMBER,
1391 l_sales_group_id NUMBER
1392 )
1393 IS
1394 SELECT PERCENT, sc.sales_credit_type_id1, sct.quota_flag,
1395 sc.ctc_id sales_person_id, sc.sales_group_id
1396 FROM oks_k_sales_credits sc, oe_sales_credit_types sct
1397 WHERE sc.sales_credit_type_id1 = sct.sales_credit_type_id
1398 AND sc.cle_id = l_line_id
1399 AND PERCENT = l_percent
1400 AND sc.sales_credit_type_id1 = l_sales_credit_type_id1
1401 AND sct.quota_flag = l_quota_flag
1402 AND sc.ctc_id = l_sales_person_id
1403 AND NVL (sc.sales_group_id, -99) = NVL (l_sales_group_id, -99);
1404
1405 CURSOR sales_credit_count_csr (l_line_id NUMBER)
1406 IS
1407 SELECT COUNT (*)
1408 FROM oks_k_sales_credits
1409 WHERE cle_id = l_line_id;
1410
1411 l_source_rec source_line%ROWTYPE;
1412 l_target_rentype target_line%ROWTYPE;
1413 l_target_sales_rec target_sales_credit_csr%ROWTYPE;
1414 l_source_sales_count NUMBER;
1415 l_target_sales_count NUMBER;
1416 l_target_bill_completed DATE;
1417 l_source_bill_completed DATE;
1418 l_source_service_item_id NUMBER;
1419 l_target_service_item_id NUMBER;
1420 l_api_version CONSTANT NUMBER := 1.0;
1421 l_init_msg_list VARCHAR2 (2000) := okc_api.g_false;
1422 l_return_status VARCHAR2 (1);
1423 BEGIN
1424 l_return_status := okc_api.g_ret_sts_success;
1425
1426 OPEN source_line (p_source_line_id);
1427
1428 FETCH source_line
1429 INTO l_source_rec;
1430
1431 CLOSE source_line;
1432
1433 -- Check invoice rule, accounting rule, price list id , currency code,
1434 -- status, line style id, payment type, billing schedule type.
1435 OPEN target_line (p_target_line_id,
1436 l_source_rec.acct_rule_id,
1437 l_source_rec.price_list_id,
1438 fnd_profile.VALUE ('OKS_TRANSFER_STATUS'),
1439 l_source_rec.lse_id,
1440 p_source_flag,
1441 l_source_rec.bill_to_site_use_id,
1442 l_source_rec.line_renewal_type_code,
1443 l_source_rec.tax_code,
1444 l_source_rec.price_uom
1445 );
1446
1447 FETCH target_line
1448 INTO l_target_rentype;
1449
1450 IF target_line%NOTFOUND
1451 THEN
1452 x_eligible_yn := 'N';
1453 ELSE
1454 ------------------------- Check Service Item Id ------------------------
1455 OPEN service_item (p_source_line_id);
1456
1457 FETCH service_item
1458 INTO l_source_service_item_id;
1459
1460 CLOSE service_item;
1461
1462 OPEN service_item (p_target_line_id);
1463
1464 FETCH service_item
1465 INTO l_target_service_item_id;
1466
1467 CLOSE service_item;
1468
1469 IF NVL (l_target_service_item_id, -99) =
1470 NVL (l_source_service_item_id,
1471 -99)
1472 THEN
1473 x_eligible_yn := 'Y';
1474 END IF;
1475
1476 -------------------------- Check Coverage -----------------------------
1477 IF x_eligible_yn = 'Y'
1478 AND fnd_profile.VALUE ('OKS_CHECK_COV_MATCH') = 'Y'
1479 THEN
1480 oks_coverages_pub.check_coverage_match
1481 (p_api_version => l_api_version,
1482 p_init_msg_list => l_init_msg_list,
1483 x_return_status => l_return_status,
1484 x_msg_count => x_msg_count,
1485 x_msg_data => x_msg_data,
1486 p_source_contract_line_id => p_source_line_id,
1487 p_target_contract_line_id => p_target_line_id,
1488 x_coverage_match => x_eligible_yn
1489 );
1490
1491 IF l_return_status <> okc_api.g_ret_sts_success
1492 THEN
1493 CLOSE target_line;
1494
1495 RAISE g_exception_halt_validation;
1496 END IF;
1497 END IF;
1498
1499 -- Vigandhi 06/10/2004
1500 -- Remove the check for date completed for line merging.
1501 /* --------------------- Check Date Completed -----------------------
1502 If x_eligible_yn = 'Y' Then
1503 -- The billing is one time so we'll only have one level element.
1504 Open get_date_complete(p_source_line_id);
1505 Fetch get_date_complete into l_source_bill_completed;
1506 Close get_date_complete;
1507
1508 Open get_date_complete(p_target_line_id);
1509 Fetch get_date_complete into l_target_bill_completed;
1510 Close get_date_complete;
1511
1512 If l_source_bill_completed is null and l_target_bill_completed is null then
1513 x_eligible_yn := 'Y';
1514 Elsif l_source_bill_completed is not null and l_target_bill_completed is not null
1515 and trunc(l_source_bill_completed) = trunc(l_target_bill_completed) then
1516 x_eligible_yn := 'Y';
1517 Else
1518 x_eligible_yn := 'N';
1519 End If;
1520
1521 End If; */
1522 --------------------- Check Sales Credit -----------------------
1523 IF x_eligible_yn = 'Y'
1524 THEN
1525 OPEN sales_credit_count_csr (p_source_line_id);
1526
1527 FETCH sales_credit_count_csr
1528 INTO l_source_sales_count;
1529
1530 CLOSE sales_credit_count_csr;
1531
1532 OPEN sales_credit_count_csr (p_target_line_id);
1533
1534 FETCH sales_credit_count_csr
1535 INTO l_target_sales_count;
1536
1537 CLOSE sales_credit_count_csr;
1538
1539 IF l_source_sales_count <> l_target_sales_count
1540 THEN
1541 x_eligible_yn := 'N';
1542 ELSE
1543 FOR sales_credit_rec IN sales_credit_csr (p_source_line_id)
1544 LOOP
1545 OPEN target_sales_credit_csr
1546 (p_target_line_id,
1547 sales_credit_rec.PERCENT,
1548 sales_credit_rec.sales_credit_type_id1,
1549 sales_credit_rec.quota_flag,
1550 sales_credit_rec.sales_person_id,
1551 sales_credit_rec.sales_group_id
1552 );
1553
1554 FETCH target_sales_credit_csr
1555 INTO l_target_sales_rec;
1556
1557 IF target_sales_credit_csr%NOTFOUND
1558 THEN
1559 x_eligible_yn := 'N';
1560
1561 CLOSE target_sales_credit_csr;
1562
1563 EXIT;
1564 END IF;
1565
1566 CLOSE target_sales_credit_csr;
1567 END LOOP;
1568 END IF; -- l_source_sales_count <> l_target_sales_count
1569 END IF; -- x_eligible_yn = 'Y'
1570 --------------------- Check Sales Credit Finished -----------------------
1571 END IF; -- target_line%NOTFOUND
1572
1573 CLOSE target_line;
1574
1575 x_return_status := l_return_status;
1576 EXCEPTION
1577 WHEN g_exception_halt_validation
1578 THEN
1579 x_return_status := l_return_status;
1580 WHEN OTHERS
1581 THEN
1582 x_return_status := okc_api.g_ret_sts_unexp_error;
1583 okc_api.set_message (g_app_name,
1584 g_unexpected_error,
1585 g_sqlcode_token,
1586 SQLCODE,
1587 g_sqlerrm_token,
1588 SQLERRM
1589 );
1590 END line_merge_yn;
1591
1592 PROCEDURE check_line_effectivity (
1593 p_cle_id IN NUMBER,
1594 p_srv_sdt IN DATE,
1595 p_srv_edt IN DATE,
1596 x_line_sdt OUT NOCOPY DATE,
1597 x_line_edt OUT NOCOPY DATE,
1598 x_status OUT NOCOPY VARCHAR2
1599 )
1600 IS
1601 CURSOR l_line_csr
1602 IS
1603 SELECT start_date, end_date
1604 FROM okc_k_lines_b
1605 WHERE ID = p_cle_id;
1606
1607 l_line_csr_rec l_line_csr%ROWTYPE;
1608 BEGIN
1609 OPEN l_line_csr;
1610
1611 FETCH l_line_csr
1612 INTO l_line_csr_rec;
1613
1614 IF l_line_csr%FOUND
1615 THEN
1616 IF p_srv_sdt >= l_line_csr_rec.start_date
1617 AND p_srv_edt <= l_line_csr_rec.end_date
1618 THEN
1619 x_status := 'N';
1620 ELSE
1621 IF p_srv_sdt >= l_line_csr_rec.start_date
1622 THEN
1623 x_line_sdt := l_line_csr_rec.start_date;
1624 ELSE
1625 x_line_sdt := p_srv_sdt;
1626 END IF;
1627
1628 IF p_srv_edt >= l_line_csr_rec.end_date
1629 THEN
1630 x_line_edt := p_srv_edt;
1631 ELSE
1632 x_line_edt := l_line_csr_rec.end_date;
1633 END IF;
1634
1635 x_status := 'Y';
1636 END IF;
1637 ELSE
1638 x_status := 'E';
1639 END IF;
1640 END;
1641
1642 PROCEDURE update_line_dates (
1643 p_cle_id IN NUMBER,
1644 p_chr_id IN NUMBER,
1645 p_new_sdt IN DATE,
1646 p_new_edt IN DATE,
1647 p_sts_flag IN VARCHAR2,
1648 p_warranty_flag IN VARCHAR2,
1649 x_status OUT NOCOPY VARCHAR2,
1650 x_msg_count OUT NOCOPY NUMBER,
1651 x_msg_data OUT NOCOPY VARCHAR2
1652 )
1653 IS
1654 CURSOR l_rulegroup_csr
1655 IS
1656 SELECT inv_rule_id
1657 FROM okc_k_lines_b
1658 WHERE cle_id = p_cle_id AND dnz_chr_id = p_chr_id;
1659
1660 --General
1661 l_api_version CONSTANT NUMBER := 1.0;
1662 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
1663 l_return_status VARCHAR2 (1) := 'S';
1664 l_index VARCHAR2 (2000);
1665 --Contract Line
1666 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
1667 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
1668 l_cleid NUMBER;
1669 l_rgp_id NUMBER;
1670 l_rule_id NUMBER;
1671 l_invoice_rule_id NUMBER;
1672 l_ste_code VARCHAR2 (30);
1673 l_sts_code VARCHAR2 (30);
1674 BEGIN
1675 x_status := okc_api.g_ret_sts_success;
1676
1677 IF p_sts_flag = 'Y'
1678 THEN
1679 IF p_new_sdt > SYSDATE
1680 THEN
1681 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
1682 l_clev_tbl_in (1).sts_code := l_sts_code;
1683 ELSIF p_new_sdt <= SYSDATE AND p_new_edt >= SYSDATE
1684 THEN
1685 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
1686 l_clev_tbl_in (1).sts_code := l_sts_code;
1687 ELSIF p_new_edt < SYSDATE
1688 THEN
1689 get_sts_code ('EXPIRED', NULL, l_ste_code, l_sts_code);
1690 l_clev_tbl_in (1).sts_code := l_sts_code;
1691 END IF;
1692 END IF;
1693
1694 --Contract Header Date Update
1695 l_clev_tbl_in (1).ID := p_cle_id;
1696 l_clev_tbl_in (1).start_date := p_new_sdt;
1697 l_clev_tbl_in (1).end_date := p_new_edt;
1698 okc_contract_pub.update_contract_line
1699 (p_api_version => l_api_version,
1700 p_init_msg_list => l_init_msg_list,
1701 p_restricted_update => okc_api.g_true,
1702 x_return_status => l_return_status,
1703 x_msg_count => x_msg_count,
1704 x_msg_data => x_msg_data,
1705 p_clev_tbl => l_clev_tbl_in,
1706 x_clev_tbl => l_clev_tbl_out
1707 );
1708
1709 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1710 THEN
1711 fnd_log.STRING
1712 (fnd_log.level_event,
1713 g_module_current || '.Update_Line_Dates.external_call.after',
1714 'okc_contract_pub.update_contract_line(Return status = '
1715 || l_return_status
1716 || ')'
1717 );
1718 END IF;
1719
1720 IF l_return_status = 'S'
1721 THEN
1722 l_cleid := l_clev_tbl_out (1).ID;
1723 ELSE
1724 x_status := 'E';
1725 RAISE g_exception_halt_validation;
1726 END IF;
1727 EXCEPTION
1728 WHEN g_exception_halt_validation
1729 THEN
1730 NULL;
1731 WHEN OTHERS
1732 THEN
1733 x_status := okc_api.g_ret_sts_unexp_error;
1734 okc_api.set_message (g_app_name,
1735 g_unexpected_error,
1736 g_sqlcode_token,
1737 SQLCODE,
1738 g_sqlerrm_token,
1739 SQLERRM
1740 );
1741
1742 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level
1743 THEN
1744 fnd_log.STRING (fnd_log.level_exception,
1745 g_module_current
1746 || '.Update_Line_Dates.UNEXPECTED',
1747 'sqlcode = ' || SQLCODE || ', sqlerrm = '
1748 || SQLERRM
1749 );
1750 END IF;
1751 END;
1752
1753 /*-----------------------------------------------------------------
1754 -- warranty/Extwarranty consolidation
1755 -- P_rty_code new parameter
1756 ------------------------------------------------------------------*/
1757 PROCEDURE create_obj_rel (
1758 p_k_id IN NUMBER,
1759 p_line_id IN NUMBER,
1760 p_orderhdrid IN NUMBER,
1761 p_rty_code IN VARCHAR2,
1762 p_orderlineid IN NUMBER,
1763 x_return_status OUT NOCOPY VARCHAR2,
1764 x_msg_count OUT NOCOPY NUMBER,
1765 x_msg_data OUT NOCOPY VARCHAR2,
1766 x_crjv_tbl_out OUT NOCOPY okc_k_rel_objs_pub.crjv_tbl_type
1767 )
1768 IS
1769 l_api_version CONSTANT NUMBER := 1.0;
1770 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
1771 l_return_status VARCHAR2 (1) := 'S';
1772 l_crjv_tbl_in okc_k_rel_objs_pub.crjv_tbl_type;
1773 l_crjv_tbl_out okc_k_rel_objs_pub.crjv_tbl_type;
1774 BEGIN
1775 x_return_status := l_return_status;
1776
1777 IF p_orderhdrid IS NOT NULL
1778 THEN
1779 l_crjv_tbl_in (1).chr_id := p_k_id;
1780 l_crjv_tbl_in (1).object1_id1 := p_orderhdrid;
1781 l_crjv_tbl_in (1).object1_id2 := '#';
1782 l_crjv_tbl_in (1).jtot_object1_code := 'OKX_ORDERHEAD';
1783 --l_crjv_tbl_in( 1 ).rty_code := 'CONTRACTSERVICESORDER';
1784 l_crjv_tbl_in (1).rty_code := p_rty_code;
1785 okc_k_rel_objs_pub.create_row (p_api_version => l_api_version,
1786 p_init_msg_list => l_init_msg_list,
1787 x_return_status => l_return_status,
1788 x_msg_count => x_msg_count,
1789 x_msg_data => x_msg_data,
1790 p_crjv_tbl => l_crjv_tbl_in,
1791 x_crjv_tbl => l_crjv_tbl_out
1792 );
1793
1794 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1795 THEN
1796 fnd_log.STRING
1797 (fnd_log.level_event,
1798 g_module_current
1799 || '.Create_Obj_Rel.external_call_hdr.after',
1800 'okc_k_rel_objs_pub.create_row(Return status = '
1801 || l_return_status
1802 || ')'
1803 );
1804 END IF;
1805
1806 IF l_return_status = 'S'
1807 THEN
1808 x_crjv_tbl_out := l_crjv_tbl_out;
1809 ELSE
1810 x_return_status := l_return_status;
1811 END IF;
1812 ELSIF p_orderlineid IS NOT NULL
1813 THEN
1814 l_crjv_tbl_in (1).cle_id := p_line_id;
1815 l_crjv_tbl_in (1).chr_id := p_k_id; -- Fix for Bug 2844603
1816 l_crjv_tbl_in (1).object1_id1 := p_orderlineid;
1817 l_crjv_tbl_in (1).object1_id2 := '#';
1818 l_crjv_tbl_in (1).jtot_object1_code := 'OKX_ORDERLINE';
1819 --l_crjv_tbl_in(1).rty_code := 'CONTRACTSERVICESORDER';
1820 l_crjv_tbl_in (1).rty_code := p_rty_code;
1821 okc_k_rel_objs_pub.create_row (p_api_version => l_api_version,
1822 p_init_msg_list => l_init_msg_list,
1823 x_return_status => l_return_status,
1824 x_msg_count => x_msg_count,
1825 x_msg_data => x_msg_data,
1826 p_crjv_tbl => l_crjv_tbl_in,
1827 x_crjv_tbl => l_crjv_tbl_out
1828 );
1829
1830 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1831 THEN
1832 fnd_log.STRING
1833 (fnd_log.level_event,
1834 g_module_current
1835 || '.Create_Obj_Rel.external_call_line.after',
1836 'okc_k_rel_objs_pub.create_row(Return status = '
1837 || l_return_status
1838 || ')'
1839 );
1840 END IF;
1841
1842 IF l_return_status = 'S'
1843 THEN
1844 x_crjv_tbl_out := l_crjv_tbl_out;
1845 ELSE
1846 x_return_status := l_return_status;
1847 END IF;
1848 END IF;
1849 EXCEPTION
1850 WHEN OTHERS
1851 THEN
1852 x_return_status := okc_api.g_ret_sts_unexp_error;
1853 okc_api.set_message (g_app_name,
1854 g_unexpected_error,
1855 g_sqlcode_token,
1856 SQLCODE,
1857 g_sqlerrm_token,
1858 SQLERRM
1859 );
1860 END;
1861
1862 PROCEDURE check_hdr_effectivity (
1863 p_chr_id IN NUMBER,
1864 p_srv_sdt IN DATE,
1865 p_srv_edt IN DATE,
1866 x_hdr_sdt OUT NOCOPY DATE,
1867 x_hdr_edt OUT NOCOPY DATE,
1868 x_status OUT NOCOPY VARCHAR2
1869 )
1870 IS
1871 CURSOR l_hdr_csr
1872 IS
1873 SELECT start_date, end_date
1874 FROM okc_k_headers_v
1875 WHERE ID = p_chr_id;
1876
1877 l_hdr_csr_rec l_hdr_csr%ROWTYPE;
1878 BEGIN
1879 OPEN l_hdr_csr;
1880
1881 FETCH l_hdr_csr
1882 INTO l_hdr_csr_rec;
1883
1884 IF l_hdr_csr%FOUND
1885 THEN
1886 IF p_srv_sdt >= l_hdr_csr_rec.start_date
1887 AND p_srv_edt <= l_hdr_csr_rec.end_date
1888 THEN
1889 x_status := 'N';
1890 ELSE
1891 IF p_srv_sdt >= l_hdr_csr_rec.start_date
1892 THEN
1893 x_hdr_sdt := l_hdr_csr_rec.start_date;
1894 ELSE
1895 x_hdr_sdt := p_srv_sdt;
1896 END IF;
1897
1898 IF p_srv_edt >= l_hdr_csr_rec.end_date
1899 THEN
1900 x_hdr_edt := p_srv_edt;
1901 ELSE
1902 x_hdr_edt := l_hdr_csr_rec.end_date;
1903 END IF;
1904
1905 x_status := 'Y';
1906 END IF;
1907 ELSE
1908 x_status := 'E';
1909 END IF;
1910 END;
1911
1912 PROCEDURE update_hdr_dates (
1913 p_chr_id IN NUMBER,
1914 p_new_sdt IN DATE,
1915 p_new_edt IN DATE,
1916 p_sts_flag IN VARCHAR2,
1917 x_status OUT NOCOPY VARCHAR2,
1918 x_msg_count OUT NOCOPY NUMBER,
1919 x_msg_data OUT NOCOPY VARCHAR2
1920 )
1921 IS
1922 --General
1923 l_api_version CONSTANT NUMBER := 1.0;
1924 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
1925 l_return_status VARCHAR2 (1) := 'S';
1926 l_index VARCHAR2 (2000);
1927 --Contract Header
1928 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
1929 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
1930 --Rule Related
1931 --l_rulv_tbl_in okc_rule_pub.rulv_tbl_type;
1932 --l_rulv_tbl_out okc_rule_pub.rulv_tbl_type;
1933 --Time Value Related
1934 l_isev_ext_tbl_in okc_time_pub.isev_ext_tbl_type;
1935 l_isev_ext_tbl_out okc_time_pub.isev_ext_tbl_type;
1936 l_chrid NUMBER;
1937 l_timevalue_id NUMBER;
1938 l_rgp_id NUMBER;
1939 l_rule_id NUMBER;
1940 l_ste_code VARCHAR2 (30);
1941 l_sts_code VARCHAR2 (30);
1942 BEGIN
1943 x_status := okc_api.g_ret_sts_success;
1944
1945 IF p_sts_flag = 'Y'
1946 THEN
1947 IF p_new_sdt > SYSDATE
1948 THEN
1949 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
1950 l_chrv_tbl_in (1).sts_code := l_sts_code;
1951 ELSIF p_new_sdt <= SYSDATE AND p_new_edt >= SYSDATE
1952 THEN
1953 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
1954 l_chrv_tbl_in (1).sts_code := l_sts_code;
1955 ELSIF p_new_edt < SYSDATE
1956 THEN
1957 get_sts_code ('EXPIRED', NULL, l_ste_code, l_sts_code);
1958 l_chrv_tbl_in (1).sts_code := l_sts_code;
1959 END IF;
1960 END IF;
1961
1962 --Contract Header Date Update
1963 l_chrv_tbl_in (1).ID := p_chr_id;
1964 l_chrv_tbl_in (1).start_date := p_new_sdt;
1965 l_chrv_tbl_in (1).end_date := p_new_edt;
1966 okc_contract_pub.update_contract_header
1967 (p_api_version => l_api_version,
1968 p_init_msg_list => l_init_msg_list,
1969 p_restricted_update => okc_api.g_true,
1970 x_return_status => l_return_status,
1971 x_msg_count => x_msg_count,
1972 x_msg_data => x_msg_data,
1973 p_chrv_tbl => l_chrv_tbl_in,
1974 x_chrv_tbl => l_chrv_tbl_out
1975 );
1976
1977 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1978 THEN
1979 fnd_log.STRING
1980 (fnd_log.level_event,
1981 g_module_current || '.Update_Hdr_Dates.external_call.after',
1982 'okc_contract_pub.update_contract_header(Return status = '
1983 || l_return_status
1984 || ')'
1985 );
1986 END IF;
1987
1988 IF l_return_status = 'S'
1989 THEN
1990 l_chrid := l_chrv_tbl_out (1).ID;
1991 ELSE
1992 x_status := 'E';
1993 RAISE g_exception_halt_validation;
1994 --End If;
1995 END IF;
1996 EXCEPTION
1997 WHEN g_exception_halt_validation
1998 THEN
1999 NULL;
2000 WHEN OTHERS
2001 THEN
2002 x_status := okc_api.g_ret_sts_unexp_error;
2003 okc_api.set_message (g_app_name,
2004 g_unexpected_error,
2005 g_sqlcode_token,
2006 SQLCODE,
2007 g_sqlerrm_token,
2008 SQLERRM
2009 );
2010 END;
2011
2012 FUNCTION get_contract_number (p_hdrid IN NUMBER)
2013 RETURN VARCHAR2
2014 IS
2015 CURSOR l_hdr_csr
2016 IS
2017 SELECT contract_number
2018 FROM okc_k_headers_v
2019 WHERE ID = p_hdrid;
2020
2021 l_contract_number VARCHAR2 (120);
2022 BEGIN
2023 OPEN l_hdr_csr;
2024
2025 FETCH l_hdr_csr
2026 INTO l_contract_number;
2027
2028 CLOSE l_hdr_csr;
2029
2030 RETURN l_contract_number;
2031 END;
2032
2033 PROCEDURE launch_workflow (p_msg IN VARCHAR2)
2034 IS
2035 --Workflow attributes
2036 l_itemtype VARCHAR2 (40) := 'OKSWARWF';
2037 l_itemkey VARCHAR2 (240)
2038 := 'OKS-' || TO_CHAR (SYSDATE, 'MMDDYYYYHH24MISS');
2039 l_process VARCHAR2 (40) := 'OKSWARPROC';
2040 l_notify VARCHAR2 (10) := 'Y';
2041 l_receiver VARCHAR2 (30);
2042 l_itemkey_seq INTEGER;
2043 BEGIN
2044 l_notify := NVL (fnd_profile.VALUE ('OKS_INTEGRATION_NOTIFY_YN'), 'NO');
2045 l_receiver :=
2046 NVL (fnd_profile.VALUE ('OKS_INTEGRATION_NOTIFY_TO'), 'SYSADMIN');
2047
2048 IF UPPER (l_notify) = 'YES'
2049 THEN
2050 SELECT oks_wf_item_key_number_s1.NEXTVAL
2051 INTO l_itemkey_seq
2052 FROM DUAL;
2053
2054 l_itemkey := 'OKS-' || l_itemkey_seq;
2055 wf_engine.createprocess (itemtype => l_itemtype,
2056 itemkey => l_itemkey,
2057 process => l_process
2058 );
2059 wf_engine.setitemattrtext (itemtype => l_itemtype,
2060 itemkey => l_itemkey,
2061 aname => 'MSG_TXT',
2062 avalue => p_msg
2063 );
2064 wf_engine.setitemattrtext (itemtype => l_itemtype,
2065 itemkey => l_itemkey,
2066 aname => 'MSG_RECV',
2067 avalue => l_receiver
2068 );
2069 wf_engine.startprocess (itemtype => l_itemtype,
2070 itemkey => l_itemkey);
2071 END IF;
2072 END;
2073
2074 PROCEDURE update_cov_level (
2075 p_covered_line_id IN NUMBER,
2076 p_new_end_date IN DATE,
2077 p_k_item_id IN NUMBER,
2078 p_new_negotiated_amt IN NUMBER,
2079 p_new_cp_qty IN NUMBER,
2080 p_list_price IN NUMBER,
2081 x_return_status OUT NOCOPY VARCHAR2,
2082 x_msg_count OUT NOCOPY NUMBER,
2083 x_msg_data OUT NOCOPY VARCHAR2
2084 )
2085 IS
2086 CURSOR l_parent_line_csr
2087 IS
2088 SELECT cle_id
2089 FROM okc_k_lines_b
2090 WHERE ID = p_covered_line_id;
2091
2092 l_api_version CONSTANT NUMBER := 1.0;
2093 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
2094 l_return_status VARCHAR2 (1) := 'S';
2095 l_index VARCHAR2 (2000);
2096 --Contract Line Table
2097 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
2098 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
2099 --Contract Item
2100 l_cimv_tbl_in okc_contract_item_pub.cimv_tbl_type;
2101 l_cimv_tbl_out okc_contract_item_pub.cimv_tbl_type;
2102 l_parent_line_id NUMBER;
2103 l_line_id NUMBER;
2104 l_line_item_id NUMBER;
2105 BEGIN
2106 IF p_new_end_date IS NOT NULL
2107 THEN
2108 x_return_status := okc_api.g_ret_sts_success;
2109 l_clev_tbl_in (1).ID := p_covered_line_id;
2110 l_clev_tbl_in (1).end_date := p_new_end_date;
2111 okc_contract_pub.update_contract_line
2112 (p_api_version => l_api_version,
2113 p_init_msg_list => l_init_msg_list,
2114 p_restricted_update => okc_api.g_true,
2115 x_return_status => l_return_status,
2116 x_msg_count => x_msg_count,
2117 x_msg_data => x_msg_data,
2118 p_clev_tbl => l_clev_tbl_in,
2119 x_clev_tbl => l_clev_tbl_out
2120 );
2121
2122 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2123 THEN
2124 fnd_log.STRING
2125 (fnd_log.level_event,
2126 g_module_current
2127 || '.update_contract_line.external_call.after',
2128 'okc_contract_pub.update_contract_line(Return status = '
2129 || l_return_status
2130 || ')'
2131 );
2132 END IF;
2133
2134 IF l_return_status <> 'S'
2135 THEN
2136 okc_api.set_message (g_app_name,
2137 g_required_value,
2138 g_col_name_token,
2139 'Contract Line Update(UPDATE SUB LINE)'
2140 );
2141 RAISE g_exception_halt_validation;
2142 END IF;
2143 END IF;
2144
2145 IF p_new_negotiated_amt IS NOT NULL
2146 THEN
2147 x_return_status := okc_api.g_ret_sts_success;
2148 l_clev_tbl_in (1).ID := p_covered_line_id;
2149 l_clev_tbl_in (1).price_negotiated := p_new_negotiated_amt;
2150 l_clev_tbl_in (1).price_unit := p_list_price;
2151 okc_contract_pub.update_contract_line
2152 (p_api_version => l_api_version,
2153 p_init_msg_list => l_init_msg_list,
2154 p_restricted_update => okc_api.g_true,
2155 x_return_status => l_return_status,
2156 x_msg_count => x_msg_count,
2157 x_msg_data => x_msg_data,
2158 p_clev_tbl => l_clev_tbl_in,
2159 x_clev_tbl => l_clev_tbl_out
2160 );
2161
2162 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2163 THEN
2164 fnd_log.STRING
2165 (fnd_log.level_event,
2166 g_module_current || '.Update_Cov_level.external_call.after',
2167 'okc_contract_pub.update_contract_line(Return status = '
2168 || l_return_status
2169 || ')'
2170 );
2171 END IF;
2172
2173 IF l_return_status = 'S'
2174 THEN
2175 l_line_id := l_clev_tbl_out (1).ID;
2176 ELSE
2177 RAISE g_exception_halt_validation;
2178 END IF;
2179 END IF;
2180
2181 IF p_new_cp_qty IS NOT NULL
2182 THEN
2183 l_cimv_tbl_in (1).ID := p_k_item_id;
2184 l_cimv_tbl_in (1).number_of_items := p_new_cp_qty;
2185 okc_contract_item_pub.update_contract_item
2186 (p_api_version => l_api_version,
2187 p_init_msg_list => l_init_msg_list,
2188 x_return_status => l_return_status,
2189 x_msg_count => x_msg_count,
2190 x_msg_data => x_msg_data,
2191 p_cimv_tbl => l_cimv_tbl_in,
2192 x_cimv_tbl => l_cimv_tbl_out
2193 );
2194
2195 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2196 THEN
2197 fnd_log.STRING
2198 (fnd_log.level_event,
2199 g_module_current || '.Update_Cov_level.external_call.after',
2200 'okc_contract_item_pub.update_contract_item(Return status = '
2201 || l_return_status
2202 || ')'
2203 );
2204 END IF;
2205
2206 IF l_return_status = 'S'
2207 THEN
2208 l_line_item_id := l_cimv_tbl_out (1).ID;
2209 ELSE
2210 RAISE g_exception_halt_validation;
2211 END IF;
2212 END IF;
2213 EXCEPTION
2214 WHEN g_exception_halt_validation
2215 THEN
2216 x_return_status := l_return_status;
2217 NULL;
2218 WHEN OTHERS
2219 THEN
2220 x_return_status := okc_api.g_ret_sts_unexp_error;
2221 okc_api.set_message (g_app_name,
2222 g_unexpected_error,
2223 g_sqlcode_token,
2224 SQLCODE,
2225 g_sqlerrm_token,
2226 SQLERRM
2227 );
2228 END;
2229
2230 /***************************************************************************
2231
2232 PROCEDURE CREATE_K_HDR
2233 Creates the Contract Header
2234
2235 ***************************************************************************/
2236 PROCEDURE create_k_hdr (
2237 p_k_header_rec IN k_header_rec_type,
2238 p_contact_tbl IN contact_tbl,
2239 p_salescredit_tbl_in IN salescredit_tbl,
2240 --mmadhavi for bug 4174921
2241 p_caller IN VARCHAR2,
2242 x_order_error OUT NOCOPY VARCHAR2,
2243 x_chr_id OUT NOCOPY NUMBER,
2244 x_return_status OUT NOCOPY VARCHAR2,
2245 x_msg_count OUT NOCOPY NUMBER,
2246 x_msg_data OUT NOCOPY VARCHAR2
2247 )
2248 IS
2249 --Third party id
2250 CURSOR l_thirdparty_csr (p_id NUMBER)
2251 IS
2252 SELECT ca.party_id
2253 FROM okx_customer_accounts_v ca, okx_cust_site_uses_v cs
2254 WHERE ca.id1 = cs.cust_account_id AND cs.id1 = p_id;
2255
2256 --party id
2257 CURSOR l_cust_csr (p_contactid NUMBER)
2258 IS
2259 SELECT party_id
2260 FROM okx_cust_contacts_v
2261 WHERE id1 = p_contactid AND id2 = '#';
2262
2263 CURSOR l_ra_hcontacts_cur (p_contact_id NUMBER)
2264 IS
2265 SELECT hzr.object_id --, subject_id
2266 ,
2267 hzr.party_id
2268 --NPALEPU
2269 --18-JUN-2005,09-AUG-2005
2270 --TCA Project
2271 --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
2272 --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
2273 /* FROM ra_hcontacts rah, hz_party_relationships hzr
2274 WHERE rah.contact_id = p_contact_id
2275 AND rah.party_relationship_id = hzr.party_relationship_id;*/
2276 FROM oks_ra_hcontacts_v rah, hz_relationships hzr
2277 WHERE rah.contact_id = p_contact_id
2278 AND rah.party_relationship_id = hzr.relationship_id
2279 AND hzr.subject_table_name = 'HZ_PARTIES'
2280 AND hzr.object_table_name = 'HZ_PARTIES'
2281 AND hzr.directional_flag = 'F';
2282
2283 --END NPALEPU
2284
2285 --status code
2286 CURSOR l_sts_csr (p_chr_id NUMBER)
2287 IS
2288 SELECT ste_code
2289 FROM okc_statuses_b, okc_k_headers_v kh
2290 WHERE code = kh.sts_code AND kh.ID = p_chr_id;
2291
2292 --Check for vendor object_code
2293 CURSOR object_code_csr (p_code VARCHAR2)
2294 IS
2295 SELECT 'x'
2296 FROM okc_contact_sources_v
2297 WHERE cro_code = p_code
2298 AND buy_or_sell = 'S'
2299 AND rle_code = 'VENDOR'
2300 AND jtot_object_code = 'OKX_SALEPERS';
2301
2302 /*spingali - bugfix for bug12747411*/
2303 CURSOR get_k_auth_org(p_k_id NUMBER)IS
2304 SELECT authoring_org_id
2305 FROM okc_k_headers_all_b
2306 WHERE id=p_k_id;
2307 l_auth_org_id NUMBER;
2308 l_okc_org_id NUMBER;
2309 /*spingali end of bugfix for bug12747411*/
2310
2311 -- Contact address
2312 CURSOR address_cur_new (p_contact_id NUMBER)
2313 IS
2314 SELECT a.id1
2315 FROM okx_cust_sites_v a, okx_cust_contacts_v b
2316 WHERE b.id1 = p_contact_id
2317 AND a.id1 = b.cust_acct_site_id
2318 AND a.org_id = okc_context.get_okc_org_id;
2319
2320 -- party contact id
2321 CURSOR party_cont_cur (p_contact_id NUMBER)
2322 IS
2323 SELECT hzr.party_id
2324 --NPALEPU
2325 --18-JUN-2005,09-AUG-2005
2326 --TCA Project
2327 --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
2328 --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
2329 /* FROM ra_hcontacts rah,
2330 hz_party_relationships hzr
2331 WHERE rah.contact_id = p_contact_id
2332 AND rah.party_relationship_id = hzr.party_relationship_id;*/
2333 FROM oks_ra_hcontacts_v rah, hz_relationships hzr
2334 WHERE rah.contact_id = p_contact_id
2335 AND rah.party_relationship_id = hzr.relationship_id
2336 AND hzr.subject_table_name = 'HZ_PARTIES'
2337 AND hzr.object_table_name = 'HZ_PARTIES'
2338 AND hzr.directional_flag = 'F';
2339
2340 --END NPALEPU
2341
2342 -- Primary e-mail address
2343 CURSOR email_cur_new (p_party_id NUMBER)
2344 IS
2345 SELECT contact_point_id
2346 FROM okx_contact_points_v
2347 WHERE contact_point_type = 'EMAIL'
2348 AND primary_flag = 'Y'
2349 AND owner_table_id = p_party_id;
2350
2351 -- Primary telephone number
2352 CURSOR phone_cur_new (p_party_id NUMBER)
2353 IS
2354 SELECT contact_point_id
2355 FROM hz_contact_points
2356 WHERE contact_point_type = 'PHONE'
2357 AND NVL (phone_line_type, 'GEN') = 'GEN'
2358 AND primary_flag = 'Y'
2359 AND owner_table_id = p_party_id;
2360
2361 -- Any one fax number
2362 CURSOR fax_cur_new (p_party_id NUMBER)
2363 IS
2364 SELECT contact_point_id
2365 FROM hz_contact_points
2366 WHERE contact_point_type = 'PHONE'
2367 AND phone_line_type = 'FAX'
2368 AND owner_table_id = p_party_id;
2369
2370 CURSOR l_salesgrp_csr (p_id NUMBER, p_start_date DATE, p_end_date DATE)
2371 IS
2372 SELECT GROUP_ID
2373 FROM jtf_rs_srp_groups
2374 WHERE salesrep_id = p_id
2375 AND org_id = okc_context.get_okc_org_id
2376 AND p_start_date BETWEEN start_date AND end_date
2377 AND p_end_date BETWEEN start_date AND end_date;
2378
2379 CURSOR l_bookdt_csr (p_ord_hdrid NUMBER)
2380 IS
2381 SELECT booked_date, order_firmed_date
2382 FROM oe_order_headers_all
2383 WHERE header_id = p_ord_hdrid;
2384
2385 --Territory changes
2386 CURSOR resource_details (p_resource_id NUMBER)
2387 IS
2388 SELECT fu.user_id
2389 FROM jtf_rs_defresources_vl jrd, fnd_user fu
2390 WHERE jrd.resource_id = p_resource_id AND fu.user_id = jrd.user_id;
2391
2392 CURSOR l_salesrep_csr (p_res_id NUMBER, p_org_id NUMBER)
2393 IS
2394 SELECT salesrep_id
2395 FROM jtf_rs_salesreps
2396 WHERE resource_id = p_res_id AND org_id = p_org_id;
2397
2398 l_salesgroup_id NUMBER;
2399 l_rah_party_id NUMBER;
2400 l_rah_hdr_object1_id1 NUMBER;
2401 l_thirdparty_id NUMBER;
2402 l_thirdparty_role VARCHAR2 (30);
2403 l_api_version CONSTANT NUMBER := 1.0;
2404 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
2405 l_return_status VARCHAR2 (1) := 'S';
2406 l_index VARCHAR2 (2000);
2407 i NUMBER;
2408 --Contract Header
2409 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
2410 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
2411 l_khrv_tbl_in oks_khr_pvt.khrv_tbl_type;
2412 l_khrv_tbl_out oks_khr_pvt.khrv_tbl_type;
2413 --SalesCredit
2414 l_scrv_tbl_in oks_sales_credit_pub.scrv_tbl_type;
2415 l_scrv_tbl_out oks_sales_credit_pub.scrv_tbl_type;
2416 --Contract Groupings
2417 l_cgcv_tbl_in okc_contract_group_pub.cgcv_tbl_type;
2418 l_cgcv_tbl_out okc_contract_group_pub.cgcv_tbl_type;
2419 --Contacts
2420 l_ctcv_tbl_in okc_contract_party_pub.ctcv_tbl_type;
2421 l_ctcv_tbl_out okc_contract_party_pub.ctcv_tbl_type;
2422 --Agreements/Governance
2423 l_gvev_tbl_in okc_contract_pub.gvev_tbl_type;
2424 l_gvev_tbl_out okc_contract_pub.gvev_tbl_type;
2425 --Time Value Related
2426 l_isev_ext_tbl_in okc_time_pub.isev_ext_tbl_type;
2427 l_isev_ext_tbl_out okc_time_pub.isev_ext_tbl_type;
2428 --Approval WorkFlow
2429 l_cpsv_tbl_in okc_contract_pub.cpsv_tbl_type;
2430 l_cpsv_tbl_out okc_contract_pub.cpsv_tbl_type;
2431 --REL OBJS
2432 l_crjv_tbl_out okc_k_rel_objs_pub.crjv_tbl_type;
2433 --Return IDs
2434 l_chrid NUMBER;
2435 l_partyid NUMBER;
2436 l_partyid_v NUMBER;
2437 l_partyid_t NUMBER;
2438 l_add2partyid NUMBER;
2439 l_rule_group_id NUMBER;
2440 l_rule_id NUMBER;
2441 l_govern_id NUMBER;
2442 l_time_value_id NUMBER;
2443 l_contact_id NUMBER;
2444 l_grpid NUMBER;
2445 l_pdfid NUMBER;
2446 l_ctrgrp NUMBER;
2447 l_cust_partyid NUMBER;
2448 l_findparty_id NUMBER;
2449 l_hdr_contactid NUMBER;
2450 l_sts_code VARCHAR2 (30);
2451 l_ste_code VARCHAR2 (30);
2452 --l_object_code VARCHAR2( 200 );
2453 l_temp VARCHAR2 (1);
2454 l_email_id NUMBER;
2455 l_phone_id NUMBER;
2456 l_fax_id NUMBER;
2457 l_site_id NUMBER;
2458 l_msg_data VARCHAR2 (2000);
2459 l_ind NUMBER;
2460 l_book_dt DATE;
2461 l_ord_firmed_date DATE;
2462 l_party_contact NUMBER;
2463 l_salescredit_id NUMBER;
2464 j NUMBER;
2465 -- Territory changes
2466 l_counter NUMBER;
2467 l_user_id NUMBER;
2468 l_count NUMBER;
2469 l_party_name VARCHAR2 (360);
2470 l_country_code VARCHAR2 (60);
2471 l_state_code VARCHAR2 (120);
2472 l_gen_bulk_rec jtf_terr_assign_pub.bulk_trans_rec_type;
2473 l_gen_return_rec jtf_terr_assign_pub.bulk_winners_rec_type;
2474 l_use_type VARCHAR2 (30);
2475 l_msg_count NUMBER;
2476 l_derived_res_id NUMBER;
2477 l_resource_id NUMBER;
2478 l_salesrep_id NUMBER;
2479 l_new_org_id NUMBER;
2480 l_entity_id NUMBER;
2481 BEGIN
2482 x_return_status := okc_api.g_ret_sts_success;
2483
2484 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2485 THEN
2486 fnd_log.STRING (fnd_log.level_procedure,
2487 g_module_current || '.Create_K_Hdr.begin',
2488 'Merge Type = '
2489 || p_k_header_rec.merge_type
2490 || 'Merge Id'
2491 || p_k_header_rec.merge_object_id
2492 );
2493 END IF;
2494
2495 IF p_k_header_rec.merge_type = 'NEW'
2496 THEN
2497 l_chrid := NULL;
2498 ELSIF p_k_header_rec.merge_type = 'LTC'
2499 THEN
2500 l_chrid := p_k_header_rec.merge_object_id;
2501 ELSIF p_k_header_rec.merge_type IS NOT NULL
2502 THEN
2503 l_chrid :=
2504 get_k_hdr_id (p_type => p_k_header_rec.merge_type,
2505 p_object_id => p_k_header_rec.merge_object_id,
2506 p_enddate => p_k_header_rec.end_date
2507 );
2508 END IF;
2509
2510 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2511 THEN
2512 fnd_log.STRING (fnd_log.level_statement,
2513 g_module_current || '.Create_K_Hdr',
2514 'Chr id = ' || l_chrid
2515 );
2516 END IF;
2517
2518 IF l_chrid IS NOT NULL
2519 THEN
2520 OPEN l_sts_csr (l_chrid);
2521
2522 FETCH l_sts_csr
2523 INTO l_sts_code;
2524
2525 CLOSE l_sts_csr;
2526
2527 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2528 THEN
2529 fnd_log.STRING (fnd_log.level_statement,
2530 g_module_current || '.Create_K_Hdr',
2531 'Status code = ' || l_sts_code
2532 );
2533 END IF;
2534
2535 IF l_sts_code NOT IN ('TERMINATED', 'CANCELLED')
2536 THEN -- Removed EXPIRED
2537 IF l_sts_code = 'EXPIRED'
2538 THEN
2539 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
2540
2541 UPDATE okc_k_headers_b
2542 SET sts_code = l_sts_code
2543 WHERE ID = l_chrid;
2544 /*bugfix for 6882512*/
2545 /* Updating the status in okc_contacts table.*/
2546 OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_chrid,
2547 x_return_status=>l_return_status);
2548
2549 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
2550 RAISE g_exception_halt_validation;
2551 END IF;
2552 END IF;
2553 /*bugfix for 6882512*/
2554 x_chr_id := l_chrid;
2555 l_return_status := okc_api.g_ret_sts_success;
2556 RAISE g_exception_halt_validation;
2557 END IF;
2558 END IF;
2559
2560 get_sts_code (NULL, p_k_header_rec.sts_code, l_ste_code, l_sts_code);
2561
2562 -------Fix for Bug 2707303
2563 IF NVL (l_ste_code, 'ENTERED') IN ('ACTIVE', 'SIGNED')
2564 THEN
2565 l_book_dt := NULL;
2566
2567 IF p_k_header_rec.order_hdr_id IS NOT NULL
2568 THEN
2569 OPEN l_bookdt_csr (p_k_header_rec.order_hdr_id);
2570
2571 FETCH l_bookdt_csr
2572 INTO l_book_dt, l_ord_firmed_date;
2573
2574 CLOSE l_bookdt_csr;
2575 END IF;
2576
2577 l_chrv_tbl_in (1).date_signed :=
2578 NVL (NVL (l_ord_firmed_date, l_book_dt),
2579 p_k_header_rec.start_date);
2580 l_chrv_tbl_in (1).date_approved :=
2581 NVL (NVL (l_ord_firmed_date, l_book_dt),
2582 p_k_header_rec.start_date);
2583 ELSE
2584 l_chrv_tbl_in (1).date_signed := NULL;
2585 l_chrv_tbl_in (1).date_approved := NULL;
2586 END IF;
2587
2588 IF p_k_header_rec.cust_po_number IS NOT NULL
2589 THEN
2590 l_chrv_tbl_in (1).cust_po_number_req_yn := 'Y';
2591 ELSE
2592 l_chrv_tbl_in (1).cust_po_number_req_yn := 'N';
2593 END IF;
2594
2595 -- rules seeded by okc
2596 l_chrv_tbl_in (1).price_list_id := p_k_header_rec.price_list_id; --PRE
2597 l_chrv_tbl_in (1).payment_term_id := p_k_header_rec.payment_term_id;
2598 --PTR
2599 l_chrv_tbl_in (1).conversion_type := p_k_header_rec.cvn_type; --CVN
2600 l_chrv_tbl_in (1).conversion_rate := p_k_header_rec.cvn_rate; --CVN
2601 l_chrv_tbl_in (1).conversion_rate_date := p_k_header_rec.cvn_date; --CVN
2602 l_chrv_tbl_in (1).conversion_euro_rate := p_k_header_rec.cvn_euro_rate;
2603 --CVN
2604 l_chrv_tbl_in (1).billed_at_source := p_k_header_rec.billed_at_source;
2605 --IMP
2606
2607 l_chrv_tbl_in (1).bill_to_site_use_id := p_k_header_rec.bill_to_id;
2608 --BTO
2609 l_chrv_tbl_in (1).ship_to_site_use_id := p_k_header_rec.ship_to_id;
2610 --STO
2611 l_chrv_tbl_in (1).inv_rule_id := p_k_header_rec.invoice_rule_id; --IRE
2612
2613 IF p_k_header_rec.renewal_type IS NOT NULL
2614 THEN --REN
2615 l_chrv_tbl_in (1).renewal_type_code := p_k_header_rec.renewal_type;
2616 l_chrv_tbl_in (1).APPROVAL_TYPE := p_k_header_rec.RENEWAL_APPROVAL_FLAG; --Bug# 5173373
2617 END IF;
2618
2619 l_chrv_tbl_in (1).sfwt_flag := 'N';
2620 l_chrv_tbl_in (1).contract_number := p_k_header_rec.contract_number;
2621 l_chrv_tbl_in (1).sts_code := p_k_header_rec.sts_code;
2622 l_chrv_tbl_in (1).scs_code := NVL (p_k_header_rec.scs_code, 'WARRANTY');
2623 l_chrv_tbl_in (1).authoring_org_id := p_k_header_rec.authoring_org_id;
2624 l_chrv_tbl_in (1).inv_organization_id :=
2625 NVL (p_k_header_rec.inv_organization_id,
2626 okc_context.get_okc_organization_id
2627 );
2628 l_chrv_tbl_in (1).pre_pay_req_yn := 'N';
2629 l_chrv_tbl_in (1).cust_po_number := p_k_header_rec.cust_po_number;
2630 l_chrv_tbl_in (1).qcl_id := p_k_header_rec.qcl_id;
2631 l_chrv_tbl_in (1).short_description :=
2632 NVL (p_k_header_rec.short_description, 'Warranty/Extended Warranty');
2633 l_chrv_tbl_in (1).template_yn := 'N';
2634 l_chrv_tbl_in (1).start_date := p_k_header_rec.start_date;
2635 l_chrv_tbl_in (1).end_date := p_k_header_rec.end_date;
2636 l_chrv_tbl_in (1).chr_type := okc_api.g_miss_char;
2637 l_chrv_tbl_in (1).archived_yn := 'N';
2638 l_chrv_tbl_in (1).deleted_yn := 'N';
2639 l_chrv_tbl_in (1).created_by := okc_api.g_miss_num;
2640 l_chrv_tbl_in (1).creation_date := okc_api.g_miss_date;
2641 l_chrv_tbl_in (1).currency_code := p_k_header_rec.currency;
2642 l_chrv_tbl_in (1).buy_or_sell := 'S';
2643 l_chrv_tbl_in (1).issue_or_receive := 'I';
2644 l_chrv_tbl_in (1).attribute1 := p_k_header_rec.attribute1;
2645 l_chrv_tbl_in (1).attribute2 := p_k_header_rec.attribute2;
2646 l_chrv_tbl_in (1).attribute3 := p_k_header_rec.attribute3;
2647 l_chrv_tbl_in (1).attribute4 := p_k_header_rec.attribute4;
2648 l_chrv_tbl_in (1).attribute5 := p_k_header_rec.attribute5;
2649 l_chrv_tbl_in (1).attribute6 := p_k_header_rec.attribute6;
2650 l_chrv_tbl_in (1).attribute7 := p_k_header_rec.attribute7;
2651 l_chrv_tbl_in (1).attribute8 := p_k_header_rec.attribute8;
2652 l_chrv_tbl_in (1).attribute9 := p_k_header_rec.attribute9;
2653 l_chrv_tbl_in (1).attribute10 := p_k_header_rec.attribute10;
2654 l_chrv_tbl_in (1).attribute11 := p_k_header_rec.attribute11;
2655 l_chrv_tbl_in (1).attribute12 := p_k_header_rec.attribute12;
2656 l_chrv_tbl_in (1).attribute13 := p_k_header_rec.attribute13;
2657 l_chrv_tbl_in (1).attribute14 := p_k_header_rec.attribute14;
2658 l_chrv_tbl_in (1).attribute15 := p_k_header_rec.attribute15;
2659
2660 IF p_k_header_rec.merge_type = 'RENEW'
2661 THEN
2662 l_chrv_tbl_in (1).attribute1 := p_k_header_rec.merge_object_id;
2663 END IF;
2664
2665 okc_contract_pub.create_contract_header
2666 (p_api_version => l_api_version,
2667 p_init_msg_list => l_init_msg_list,
2668 x_return_status => l_return_status,
2669 x_msg_count => x_msg_count,
2670 x_msg_data => x_msg_data,
2671 p_chrv_tbl => l_chrv_tbl_in,
2672 x_chrv_tbl => l_chrv_tbl_out
2673 );
2674
2675 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2676 THEN
2677 fnd_log.STRING
2678 (fnd_log.level_event,
2679 g_module_current || '.Create_K_Hdr.external_call.after',
2680 'okc_contract_pub.create_contract_header(Return Status = '
2681 || l_return_status
2682 || ')'
2683 );
2684 END IF;
2685
2686 IF l_return_status = 'S'
2687 THEN
2688 l_chrid := l_chrv_tbl_out (1).ID;
2689 ELSE
2690 --mmadhavi
2691 IF (p_caller = 'OC')
2692 THEN
2693 x_order_error := '#';
2694
2695 FOR i IN 1 .. fnd_msg_pub.count_msg
2696 LOOP
2697 fnd_msg_pub.get (p_msg_index => i,
2698 p_encoded => 'T',
2699 p_data => l_msg_data,
2700 p_msg_index_out => l_ind
2701 );
2702 x_order_error := x_order_error || l_msg_data || '#';
2703
2704 IF (g_fnd_log_option = 'Y')
2705 THEN
2706 fnd_message.set_encoded (l_msg_data);
2707 l_msg_data := fnd_message.get;
2708 fnd_file.put_line
2709 (fnd_file.LOG,
2710 '(okc_contract_pub).create_contract_header '
2711 || l_msg_data
2712 );
2713 END IF;
2714 END LOOP;
2715
2716 RAISE g_exception_halt_validation;
2717 ELSE
2718 --mmadhavi
2719 okc_api.set_message (g_app_name,
2720 g_required_value,
2721 g_col_name_token,
2722 'HEADER (HEADER)'
2723 );
2724 END IF;
2725
2726 RAISE g_exception_halt_validation;
2727 END IF;
2728
2729
2730 -- Get the transaction extension id for the contract header
2731 IF p_k_header_rec.order_hdr_id IS NOT NULL THEN
2732 get_cc_trxn_extn (
2733 p_order_header_id => p_k_header_rec.order_hdr_id,
2734 p_order_line_id => NULL,
2735 p_context_level => G_CONTEXT_ORDER_HEADER,
2736 p_contract_hdr_id => l_chrid,
2737 p_contract_line_id => NULL,
2738 x_entity_id => l_entity_id,
2739 x_return_status => l_return_status );
2740
2741 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2742 -- Populate the oks header record with the trxn_extension_id
2743 l_khrv_tbl_in (1).trxn_extension_id := l_entity_id;
2744 IF l_entity_id IS NOT NULL THEN
2745 l_khrv_tbl_in (1).payment_type := 'CCR'; -- Credit Card
2746 END IF;
2747 ELSE
2748 FOR i IN 1 .. fnd_msg_pub.count_msg
2749 LOOP
2750 fnd_msg_pub.get (p_msg_index => i,
2751 p_encoded => 'T',
2752 p_data => l_msg_data,
2753 p_msg_index_out => l_ind
2754 );
2755
2756 IF (g_fnd_log_option = 'Y') THEN
2757 fnd_message.set_encoded (l_msg_data);
2758 l_msg_data := fnd_message.get;
2759 fnd_file.put_line
2760 (fnd_file.LOG,
2761 'get_cc_trxn for header'
2762 || l_msg_data
2763 );
2764 END IF;
2765 END LOOP;
2766 RAISE g_exception_halt_validation;
2767 END IF;
2768 END IF;
2769
2770
2771 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2772 THEN
2773 fnd_log.STRING (fnd_log.level_statement,
2774 g_module_current || '.Create_K_Hdr.oks_header_rules',
2775 'Accounting id = '
2776 || p_k_header_rec.accounting_rule_id
2777 || ',renewal type = '
2778 || p_k_header_rec.renewal_type
2779 || ',billing id = '
2780 || p_k_header_rec.billing_profile_id
2781 || ',renewal po = '
2782 || p_k_header_rec.renewal_po
2783 || ',ren price list = '
2784 || p_k_header_rec.renewal_price_list_id
2785 );
2786 fnd_log.STRING (fnd_log.level_statement,
2787 g_module_current || '.Create_K_Hdr.oks_header_rules',
2788 'ren markup = '
2789 || p_k_header_rec.renewal_markup
2790 || ',qto contact = '
2791 || p_k_header_rec.qto_contact_id
2792 || ',contact id = '
2793 || p_k_header_rec.contact_id
2794 || ',tax status = '
2795 || p_k_header_rec.tax_status_flag
2796 );
2797 END IF;
2798
2799 -- Hdr rules inserted by oks
2800 l_khrv_tbl_in (1).chr_id := l_chrv_tbl_out (1).ID;
2801 l_khrv_tbl_in (1).acct_rule_id := p_k_header_rec.accounting_rule_id;
2802 --ARL
2803 l_khrv_tbl_in (1).billing_profile_id :=
2804 p_k_header_rec.billing_profile_id;
2805 -- Fix for bug 3396484
2806 l_khrv_tbl_in (1).renewal_po_required :=p_k_header_rec.renewal_po; /*Bug:7555733*/
2807 --RPO
2808 l_khrv_tbl_in (1).renewal_pricing_type :=
2809 p_k_header_rec.renewal_pricing_type;
2810 --RPT
2811 l_khrv_tbl_in (1).price_uom := p_k_header_rec.price_uom;
2812
2813 --mmadhavi fix for bug 4004028
2814 IF (l_khrv_tbl_in (1).renewal_pricing_type = 'MAN')
2815 THEN
2816 l_khrv_tbl_in (1).renewal_price_list := NULL;
2817 ELSE
2818 l_khrv_tbl_in (1).renewal_price_list :=
2819 p_k_header_rec.renewal_price_list_id;
2820 END IF;
2821
2822 --mmadhavi
2823 IF p_k_header_rec.renewal_pricing_type = 'PCT'
2824 THEN --RPT
2825 l_khrv_tbl_in (1).renewal_markup_percent :=
2826 p_k_header_rec.renewal_markup;
2827 ELSE
2828 l_khrv_tbl_in (1).renewal_markup_percent := NULL;
2829 END IF;
2830
2831 IF p_k_header_rec.qto_contact_id IS NOT NULL
2832 THEN --QTO
2833 l_khrv_tbl_in (1).quote_to_contact_id :=
2834 p_k_header_rec.qto_contact_id;
2835 l_khrv_tbl_in (1).quote_to_site_id := p_k_header_rec.qto_site_id;
2836 l_khrv_tbl_in (1).quote_to_email_id := p_k_header_rec.qto_email_id;
2837 l_khrv_tbl_in (1).quote_to_phone_id := p_k_header_rec.qto_phone_id;
2838 l_khrv_tbl_in (1).quote_to_fax_id := p_k_header_rec.qto_fax_id;
2839 ELSIF p_k_header_rec.contact_id IS NOT NULL
2840 THEN
2841 OPEN party_cont_cur (p_k_header_rec.contact_id);
2842
2843 FETCH party_cont_cur
2844 INTO l_party_contact;
2845
2846 CLOSE party_cont_cur;
2847
2848 OPEN address_cur_new (p_k_header_rec.contact_id);
2849
2850 FETCH address_cur_new
2851 INTO l_site_id;
2852
2853 CLOSE address_cur_new;
2854
2855 OPEN email_cur_new (l_party_contact);
2856
2857 FETCH email_cur_new
2858 INTO l_email_id;
2859
2860 CLOSE email_cur_new;
2861
2862 OPEN phone_cur_new (l_party_contact);
2863
2864 FETCH phone_cur_new
2865 INTO l_phone_id;
2866
2867 CLOSE phone_cur_new;
2868
2869 OPEN fax_cur_new (l_party_contact);
2870
2871 FETCH fax_cur_new
2872 INTO l_fax_id;
2873
2874 CLOSE fax_cur_new;
2875
2876 l_khrv_tbl_in (1).quote_to_contact_id := p_k_header_rec.contact_id;
2877 l_khrv_tbl_in (1).quote_to_site_id := l_site_id;
2878 l_khrv_tbl_in (1).quote_to_email_id := l_email_id;
2879 l_khrv_tbl_in (1).quote_to_phone_id := l_phone_id;
2880 l_khrv_tbl_in (1).quote_to_fax_id := l_fax_id;
2881 END IF;
2882
2883 l_khrv_tbl_in (1).ar_interface_yn :=
2884 p_k_header_rec.ar_interface_yn;
2885 l_khrv_tbl_in (1).hold_billing := NVL (p_k_header_rec.hold_billing, 'N');
2886 l_khrv_tbl_in (1).summary_trx_yn :=
2887 NVL (p_k_header_rec.summary_trx_yn, 'N');
2888 l_khrv_tbl_in (1).inv_trx_type := p_k_header_rec.inv_trx_type;
2889 l_khrv_tbl_in (1).tax_status := p_k_header_rec.tax_status_flag; --TAX
2890 l_khrv_tbl_in (1).tax_code := NULL; --TAX
2891 l_khrv_tbl_in (1).tax_exemption_id := p_k_header_rec.tax_exemption_id;
2892 --TAX
2893 l_khrv_tbl_in (1).created_by := okc_api.g_miss_num;
2894 l_khrv_tbl_in (1).creation_date := okc_api.g_miss_date;
2895
2896 IF p_k_header_rec.ccr_number IS NOT NULL
2897 THEN
2898 l_khrv_tbl_in (1).payment_type := 'CCR';
2899 l_khrv_tbl_in (1).cc_no := p_k_header_rec.ccr_number;
2900 l_khrv_tbl_in (1).cc_expiry_date := p_k_header_rec.ccr_exp_date;
2901 END IF;
2902
2903 l_khrv_tbl_in (1).period_start := p_k_header_rec.period_start;
2904 l_khrv_tbl_in (1).period_type := p_k_header_rec.period_type;
2905 l_khrv_tbl_in (1).grace_period := p_k_header_rec.grace_period;
2906 l_khrv_tbl_in (1).grace_duration := p_k_header_rec.grace_duration;
2907 l_khrv_tbl_in (1).renewal_status := p_k_header_rec.renewal_status;
2908 -- Added by JVARGHES for 12.0 enhancements.
2909 -- Added for 120 CC EXTN project
2910 -- l_khrv_tbl_in (1).trxn_extension_id := p_k_header_rec.trxn_extension_id;
2911
2912 --
2913
2914 --Added in R12 by rsu
2915 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
2916 THEN
2917 fnd_log.STRING (fnd_log.level_statement,
2918 g_module_current || '.Create_K_Hdr',
2919 'Before calling oks_contract_hdr_pub.create_header'
2920 );
2921 fnd_log.STRING (fnd_log.level_statement,
2922 g_module_current || '.Create_K_Hdr',
2923 'p_k_header_rec.tax_classification_code: '
2924 || p_k_header_rec.tax_classification_code
2925 );
2926 fnd_log.STRING (fnd_log.level_statement,
2927 g_module_current || '.Create_K_Hdr',
2928 'p_k_header_rec.exemption_certificate_number: '
2929 || p_k_header_rec.exemption_certificate_number
2930 );
2931 fnd_log.STRING (fnd_log.level_statement,
2932 g_module_current || '.Create_K_Hdr',
2933 'p_k_header_rec.exemption_reason_code: '
2934 || p_k_header_rec.exemption_reason_code
2935 );
2936 fnd_log.STRING (fnd_log.level_statement,
2937 g_module_current || '.Create_K_Hdr',
2938 'p_k_header_rec.tax_status_flag: '
2939 || p_k_header_rec.tax_status_flag
2940 );
2941 END IF;
2942
2943 l_khrv_tbl_in (1).tax_classification_code :=
2944 p_k_header_rec.tax_classification_code;
2945 l_khrv_tbl_in (1).exempt_certificate_number :=
2946 p_k_header_rec.exemption_certificate_number;
2947 l_khrv_tbl_in (1).exempt_reason_code :=
2948 p_k_header_rec.exemption_reason_code;
2949 --End: added in R12 by rsu
2950 oks_contract_hdr_pub.create_header (p_api_version => l_api_version,
2951 p_init_msg_list => l_init_msg_list,
2952 x_return_status => l_return_status,
2953 x_msg_count => x_msg_count,
2954 x_msg_data => x_msg_data,
2955 p_khrv_tbl => l_khrv_tbl_in,
2956 x_khrv_tbl => l_khrv_tbl_out,
2957 p_validate_yn => 'N'
2958 );
2959
2960 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2961 THEN
2962 fnd_log.STRING
2963 (fnd_log.level_event,
2964 g_module_current || '.Create_K_Hdr.external_call.after',
2965 ' oks_contract_hdr_pub.create_header(Return Status = '
2966 || l_return_status
2967 || ')'
2968 );
2969 END IF;
2970
2971 IF NOT l_return_status = okc_api.g_ret_sts_success
2972 THEN
2973 --mmadhavi
2974 IF (p_caller = 'OC')
2975 THEN
2976 x_order_error := '#';
2977
2978 FOR i IN 1 .. fnd_msg_pub.count_msg
2979 LOOP
2980 fnd_msg_pub.get (p_msg_index => i,
2981 p_encoded => 'T',
2982 p_data => l_msg_data,
2983 p_msg_index_out => l_ind
2984 );
2985 x_order_error := x_order_error || l_msg_data || '#';
2986
2987 IF (g_fnd_log_option = 'Y')
2988 THEN
2989 fnd_message.set_encoded (l_msg_data);
2990 l_msg_data := fnd_message.get;
2991 fnd_file.put_line
2992 (fnd_file.LOG,
2993 '(oks_contract_hdr_pub).create_header '
2994 || l_msg_data
2995 );
2996 END IF;
2997 END LOOP;
2998
2999 RAISE g_exception_halt_validation;
3000 ELSE
3001 --mmadhavi
3002 okc_api.set_message (g_app_name,
3003 g_required_value,
3004 g_col_name_token,
3005 'OKS (HEADER)'
3006 );
3007 RAISE g_exception_halt_validation;
3008 END IF;
3009 END IF;
3010
3011 IF p_k_header_rec.order_line_id IS NOT NULL
3012 THEN
3013 oks_extwar_util_pvt.update_contract_details
3014 (l_chrid,
3015 p_k_header_rec.order_line_id,
3016 l_return_status
3017 );
3018
3019 IF NOT l_return_status = okc_api.g_ret_sts_success
3020 THEN
3021 x_return_status := l_return_status;
3022 RAISE g_exception_halt_validation;
3023 END IF;
3024 END IF;
3025
3026 IF p_k_header_rec.scs_code IN ('WARRANTY', 'SERVICE')
3027 THEN
3028 --Party Role Routine ('VENDOR')
3029 party_role (p_chrid => l_chrid,
3030 p_cleid => NULL,
3031 p_rle_code => 'VENDOR',
3032 p_partyid => p_k_header_rec.authoring_org_id,
3033 p_object_code => g_jtf_party_vendor,
3034 x_roleid => l_partyid_v,
3035 x_msg_count => x_msg_count,
3036 x_msg_data => x_msg_data,
3037 x_return_status => l_return_status
3038 );
3039
3040 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3041 THEN
3042 fnd_log.STRING (fnd_log.level_event,
3043 g_module_current
3044 || '.Create_K_Hdr.Internal_call.after',
3045 ' Party_role for Vendor(Return Status = '
3046 || l_return_status
3047 || ')'
3048 || l_partyid_v
3049 );
3050 END IF;
3051
3052 IF NOT l_return_status = okc_api.g_ret_sts_success
3053 THEN
3054 x_return_status := l_return_status;
3055 RAISE g_exception_halt_validation;
3056 END IF;
3057
3058 --Party Role Routine ('CUSTOMER')
3059 party_role (p_chrid => l_chrid,
3060 p_cleid => NULL,
3061 p_rle_code => 'CUSTOMER',
3062 p_partyid => p_k_header_rec.party_id,
3063 p_object_code => g_jtf_party,
3064 x_roleid => l_partyid,
3065 x_msg_count => x_msg_count,
3066 x_msg_data => x_msg_data,
3067 x_return_status => l_return_status
3068 );
3069
3070 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3071 THEN
3072 fnd_log.STRING (fnd_log.level_event,
3073 g_module_current
3074 || '.Create_K_Hdr.Internal_call.after',
3075 ' Party_role for Customer(Return Status = '
3076 || l_return_status
3077 || ')'
3078 || l_partyid
3079 );
3080 END IF;
3081
3082 IF NOT l_return_status = okc_api.g_ret_sts_success
3083 THEN
3084 x_return_status := l_return_status;
3085 RAISE g_exception_halt_validation;
3086 END IF;
3087 ELSE
3088 --Party Role Routine ('MERCHANT')
3089 party_role (p_chrid => l_chrid,
3090 p_cleid => NULL,
3091 p_rle_code => 'MERCHANT',
3092 p_partyid => p_k_header_rec.authoring_org_id,
3093 p_object_code => g_jtf_party_vendor,
3094 x_roleid => l_partyid_v,
3095 x_msg_count => x_msg_count,
3096 x_msg_data => x_msg_data,
3097 x_return_status => l_return_status
3098 );
3099
3100 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3101 THEN
3102 fnd_log.STRING (fnd_log.level_event,
3103 g_module_current
3104 || '.Create_K_Hdr.Internal_call.after',
3105 ' Party_role for Merchant(Return Status = '
3106 || l_return_status
3107 || ')'
3108 || l_partyid_v
3109 );
3110 END IF;
3111
3112 IF NOT l_return_status = okc_api.g_ret_sts_success
3113 THEN
3114 x_return_status := l_return_status;
3115 RAISE g_exception_halt_validation;
3116 END IF;
3117
3118 --Party Role Routine ('SUBSCRIBER')
3119 party_role (p_chrid => l_chrid,
3120 p_cleid => NULL,
3121 p_rle_code => 'SUBSCRIBER',
3122 p_partyid => p_k_header_rec.party_id,
3123 p_object_code => g_jtf_party,
3124 x_roleid => l_partyid,
3125 x_msg_count => x_msg_count,
3126 x_msg_data => x_msg_data,
3127 x_return_status => l_return_status
3128 );
3129
3130 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3131 THEN
3132 fnd_log.STRING (fnd_log.level_event,
3133 g_module_current
3134 || '.Create_K_Hdr.Internal_call.after',
3135 ' Party_role for Subscriber(Return Status = '
3136 || l_return_status
3137 || ')'
3138 || l_partyid
3139 );
3140 END IF;
3141
3142 IF NOT l_return_status = okc_api.g_ret_sts_success
3143 THEN
3144 x_return_status := l_return_status;
3145 RAISE g_exception_halt_validation;
3146 END IF;
3147 END IF;
3148
3149 /* Check if the bill to belong to the order customer, if not create a third party role*/
3150 l_thirdparty_id := NULL;
3151
3152 OPEN l_thirdparty_csr (p_k_header_rec.bill_to_id);
3153
3154 FETCH l_thirdparty_csr
3155 INTO l_thirdparty_id;
3156
3157 CLOSE l_thirdparty_csr;
3158
3159 IF l_thirdparty_id IS NOT NULL
3160 THEN
3161 IF NOT l_thirdparty_id = p_k_header_rec.party_id
3162 THEN
3163 --Party Role Routine ('THIRD_PARTY')
3164 l_thirdparty_role :=
3165 NVL (p_k_header_rec.third_party_role, 'THIRD_PARTY');
3166
3167 --mmadhavi
3168 IF (p_caller = 'OC')
3169 THEN
3170 IF (l_thirdparty_role IN ('VENDOR', 'CUSTOMER'))
3171 THEN
3172 fnd_message.set_name (g_app_name,
3173 'OKS_INVD_THIRD_PARTY_ROLE'
3174 );
3175 x_order_error := '#' || fnd_message.get_encoded || '#';
3176 l_return_status := okc_api.g_ret_sts_error;
3177 RAISE g_exception_halt_validation;
3178 END IF;
3179 END IF;
3180
3181 --mmadhavi
3182 party_role (p_chrid => l_chrid,
3183 p_cleid => NULL,
3184 p_rle_code => l_thirdparty_role,
3185 p_partyid => l_thirdparty_id,
3186 p_object_code => g_jtf_party,
3187 x_roleid => l_partyid_t,
3188 x_msg_count => x_msg_count,
3189 x_msg_data => x_msg_data,
3190 x_return_status => l_return_status
3191 );
3192
3193 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3194 THEN
3195 fnd_log.STRING
3196 (fnd_log.level_event,
3197 g_module_current
3198 || '.Create_K_Hdr.Internal_call.after',
3199 ' Party_role for Third Party(Return Status = '
3200 || l_return_status
3201 || ')'
3202 || l_partyid_t
3203 );
3204 END IF;
3205
3206 IF NOT l_return_status = okc_api.g_ret_sts_success
3207 THEN
3208 x_return_status := l_return_status;
3209 RAISE g_exception_halt_validation;
3210 END IF;
3211 END IF;
3212 END IF;
3213
3214 ---Creating Vendor Contact
3215
3216 -- Fix for the Bug3557612
3217 -- Create vendor contact role if the profile option is not null
3218 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3219 THEN
3220 fnd_log.STRING (fnd_log.level_statement,
3221 g_module_current
3222 || '.Create_K_Hdr.before_vendor_contact',
3223 ' Vendor contact profile option value = '
3224 || fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE')
3225 || ' Territory profile option value = '
3226 || fnd_profile.VALUE ('OKS_TERR_SALES_REP')
3227 );
3228 END IF;
3229
3230 /************ Territory changes ****************************/
3231 IF ( NVL (fnd_profile.VALUE ('OKS_TERR_SALES_REP'), 'RET') = 'DER'
3232 AND p_k_header_rec.order_hdr_id IS NOT NULL) or (p_caller = 'ST')
3233 THEN
3234 get_jtf_resource (p_authorg_id => p_k_header_rec.authoring_org_id,
3235 p_party_id => p_k_header_rec.party_id,
3236 x_winners_rec => l_gen_return_rec,
3237 x_msg_count => l_msg_count,
3238 x_msg_data => l_msg_data,
3239 x_return_status => l_return_status
3240 );
3241
3242 IF (l_return_status <> okc_api.g_ret_sts_success)
3243 THEN
3244 -- Setup error
3245 If p_caller = 'ST' Then
3246 send_notification (null, l_chrid, 'SER');
3247 Else
3248
3249 send_notification (p_k_header_rec.order_hdr_id, NULL, 'SER');
3250 End If;
3251
3252 ELSE
3253 l_counter := l_gen_return_rec.trans_object_id.FIRST;
3254 l_count := 0;
3255
3256 WHILE (l_counter <= l_gen_return_rec.trans_object_id.LAST)
3257 LOOP
3258 IF (l_count = 0)
3259 THEN
3260 OPEN resource_details
3261 (p_resource_id => l_gen_return_rec.resource_id
3262 (l_counter)
3263 );
3264
3265 FETCH resource_details
3266 INTO l_user_id;
3267
3268 CLOSE resource_details;
3269
3270 l_derived_res_id := l_gen_return_rec.resource_id (l_counter);
3271 END IF;
3272
3273 l_counter := l_counter + 1;
3274 l_count := l_count + 1;
3275 END LOOP;
3276
3277 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3278 THEN
3279 fnd_log.STRING (fnd_log.level_statement,
3280 g_module_current,
3281 'Resource ID is : ' || l_derived_res_id
3282 );
3283 END IF;
3284
3285 IF l_count = 0
3286 THEN
3287 -- No resource setup
3288 If p_caller = 'ST' Then
3289 send_notification (Null, l_chrid, 'NRS');
3290 Else
3291 send_notification (p_k_header_rec.order_hdr_id, NULL, 'NRS');
3292 End If;
3293 ELSIF l_count >= 1
3294 THEN
3295 l_new_org_id := okc_context.get_okc_org_id;
3296
3297 OPEN l_salesrep_csr (l_derived_res_id, l_new_org_id);
3298
3299 FETCH l_salesrep_csr
3300 INTO l_salesrep_id;
3301
3302 CLOSE l_salesrep_csr;
3303
3304 IF l_salesrep_id IS NULL
3305 THEN
3306 If p_caller = 'ST' Then
3307
3308 send_notification (NULL, l_chrid,'ISP');
3309 Else
3310 send_notification (p_k_header_rec.order_hdr_id, NULL,'ISP');
3311 End If;
3312 END IF;
3313 END IF;
3314 END IF;
3315 ELSE
3316 l_salesrep_id := p_k_header_rec.salesrep_id;
3317 END IF;
3318
3319 /************ Territory changes end****************************/
3320 IF l_salesrep_id IS NOT NULL
3321 AND fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE') IS NOT NULL
3322 THEN
3323
3324 /*spingali BUGFIX FOR BUG12747411-START salesperson*/
3325 OPEN get_k_auth_org(l_chrid);
3326 FETCH get_k_auth_org INTO l_auth_org_id;
3327 CLOSE get_k_auth_org;
3328
3329 IF (Nvl(OKS_EXTWARPRGM_PVT.G_TRF_K_CREATE,'N') ='Y') AND (l_auth_org_id<>(nvl(OKC_CONTEXT.GET_OKC_ORG_ID,-99)))THEN
3330 l_okc_org_id := l_auth_org_id;
3331 ELSE
3332 l_okc_org_id := Okc_context.get_okc_org_id;
3333 END IF;
3334
3335 /*spingali BUGFIX FOR BUG12747411-END salesperson*/
3336
3337 l_salesgroup_id :=
3338 jtf_rs_integration_pub.get_default_sales_group
3339 (p_salesrep_id => l_salesrep_id,
3340 p_org_id => okc_context.get_okc_org_id,
3341 p_date => p_k_header_rec.start_date
3342 );
3343 l_ctcv_tbl_in (1).object1_id1 := l_salesrep_id;
3344 l_ctcv_tbl_in (1).cpl_id := l_partyid_v;
3345 l_ctcv_tbl_in (1).dnz_chr_id := l_chrid;
3346 l_ctcv_tbl_in (1).cro_code :=
3347 fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE');
3348 l_ctcv_tbl_in (1).object1_id2 := '#';
3349 l_ctcv_tbl_in (1).sales_group_id := l_salesgroup_id;
3350
3351 OPEN object_code_csr (l_ctcv_tbl_in (1).cro_code);
3352
3353 FETCH object_code_csr
3354 INTO l_temp;
3355
3356 IF object_code_csr%NOTFOUND
3357 THEN
3358 CLOSE object_code_csr;
3359
3360 okc_api.set_message (g_app_name,
3361 g_unexpected_error,
3362 g_sqlcode_token,
3363 SQLCODE,
3364 g_sqlerrm_token,
3365 'Wrong vendor contact role assigned'
3366 );
3367 l_return_status := okc_api.g_ret_sts_error;
3368 RAISE g_exception_halt_validation;
3369 END IF;
3370
3371 CLOSE object_code_csr;
3372
3373 l_ctcv_tbl_in (1).jtot_object1_code := 'OKX_SALEPERS';
3374 --l_object_code;
3375 okc_contract_party_pub.create_contact
3376 (p_api_version => l_api_version,
3377 p_init_msg_list => l_init_msg_list,
3378 x_return_status => l_return_status,
3379 x_msg_count => x_msg_count,
3380 x_msg_data => x_msg_data,
3381 p_ctcv_tbl => l_ctcv_tbl_in,
3382 x_ctcv_tbl => l_ctcv_tbl_out
3383 );
3384
3385 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3386 THEN
3387 fnd_log.STRING
3388 (fnd_log.level_event,
3389 g_module_current || '.Create_K_Hdr.External_call.after',
3390 ' okc_contract_party_pub.create_contact(Return Status = '
3391 || l_return_status
3392 || ')'
3393 );
3394 END IF;
3395
3396 IF l_return_status = 'S'
3397 THEN
3398 l_contact_id := l_ctcv_tbl_out (1).ID;
3399 ELSE
3400 okc_api.set_message (g_app_name,
3401 g_required_value,
3402 g_col_name_token,
3403 l_ctcv_tbl_in (1).cro_code
3404 || 'Vendor Contact (HEADER) '
3405 || ' OKX_SALEPERS'
3406 );
3407 RAISE g_exception_halt_validation;
3408 END IF;
3409 END IF;
3410
3411 --mmadhavi --Create SalesCredits bug 4174921
3412 IF p_salescredit_tbl_in.COUNT > 0
3413 THEN
3414 j := p_salescredit_tbl_in.FIRST;
3415
3416 LOOP
3417 l_scrv_tbl_in (1).PERCENT := p_salescredit_tbl_in (j).PERCENT;
3418 l_scrv_tbl_in (1).chr_id := l_chrid;
3419 l_scrv_tbl_in (1).cle_id := NULL;
3420 l_scrv_tbl_in (1).ctc_id := p_salescredit_tbl_in (j).ctc_id;
3421 l_scrv_tbl_in (1).sales_credit_type_id1 :=
3422 p_salescredit_tbl_in (j).sales_credit_type_id;
3423 l_scrv_tbl_in (1).sales_credit_type_id2 := '#';
3424 l_scrv_tbl_in (1).sales_group_id :=
3425 p_salescredit_tbl_in (j).sales_group_id;
3426 oks_sales_credit_pub.insert_sales_credit
3427 (p_api_version => 1.0,
3428 p_init_msg_list => okc_api.g_false,
3429 x_return_status => l_return_status,
3430 x_msg_count => x_msg_count,
3431 x_msg_data => x_msg_data,
3432 p_scrv_tbl => l_scrv_tbl_in,
3433 x_scrv_tbl => l_scrv_tbl_out
3434 );
3435
3436 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3437 THEN
3438 fnd_log.STRING
3439 (fnd_log.level_event,
3440 g_module_current || '.Create_K_Hdr.external_call.after',
3441 'oks_sales_credit_pub.insert_sales_credit(Return status = '
3442 || l_return_status
3443 || ')'
3444 );
3445 END IF;
3446
3447 IF l_return_status = 'S'
3448 THEN
3449 l_salescredit_id := l_scrv_tbl_out (1).ID;
3450 ELSE
3451 okc_api.set_message (g_app_name,
3452 g_required_value,
3453 g_col_name_token,
3454 'Sales Credit Failure'
3455 );
3456 RAISE g_exception_halt_validation;
3457 END IF;
3458
3459 EXIT WHEN j = p_salescredit_tbl_in.LAST;
3460 j := p_salescredit_tbl_in.NEXT (j);
3461 END LOOP;
3462 END IF;
3463
3464 --mmadhavi bug 4174921
3465 IF p_contact_tbl.COUNT > 0
3466 THEN
3467 i := p_contact_tbl.FIRST;
3468
3469 LOOP
3470 l_ctcv_tbl_in.DELETE;
3471
3472 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3473 THEN
3474 fnd_log.STRING (fnd_log.level_statement,
3475 g_module_current
3476 || '.Create_K_Hdr.contact creation',
3477 ' Party Role = '
3478 || p_contact_tbl (i).party_role
3479 || ',Contact Id = '
3480 || p_contact_tbl (i).contact_id
3481 );
3482 END IF;
3483
3484 IF p_contact_tbl (i).party_role = 'VENDOR'
3485 AND l_partyid_v IS NOT NULL
3486 THEN
3487 l_add2partyid := l_partyid_v;
3488 l_hdr_contactid := p_contact_tbl (i).contact_id;
3489 ELSE
3490 l_rah_party_id := NULL;
3491 l_hdr_contactid := NULL;
3492
3493 OPEN l_ra_hcontacts_cur (p_contact_tbl (i).contact_id);
3494
3495 FETCH l_ra_hcontacts_cur
3496 INTO l_rah_party_id, l_hdr_contactid;
3497
3498 CLOSE l_ra_hcontacts_cur;
3499
3500 --if l_findparty_id = l_thirdparty_id Then
3501 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3502 THEN
3503 fnd_log.STRING (fnd_log.level_statement,
3504 g_module_current
3505 || '.Create_K_Hdr.contact creation',
3506 ' Third Party = '
3507 || l_thirdparty_id
3508 || ',Customer Id = '
3509 || p_k_header_rec.party_id
3510 || ',Org CTC Id = '
3511 || p_contact_tbl (i).contact_id
3512 || ',Rah PArty Id = '
3513 || l_rah_party_id
3514 || ',Rah CTC Id = '
3515 || l_hdr_contactid
3516 );
3517 END IF;
3518
3519 IF l_rah_party_id = l_thirdparty_id AND l_partyid_t IS NOT NULL
3520 THEN
3521 l_add2partyid := l_partyid_t;
3522 ELSE
3523 l_add2partyid := l_partyid;
3524 END IF;
3525 END IF;
3526
3527 IF l_add2partyid IS NULL
3528 THEN
3529 okc_api.set_message (g_app_name,
3530 g_required_value,
3531 g_col_name_token,
3532 p_contact_tbl (i).contact_role
3533 || ' Contact (HEADER) Missing Role Id '
3534 || p_contact_tbl (i).contact_object_code
3535 );
3536 RAISE g_exception_halt_validation;
3537 END IF;
3538
3539 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3540 THEN
3541 fnd_log.STRING (fnd_log.level_statement,
3542 g_module_current
3543 || '.Create_K_Hdr.contact creation',
3544 ' FLAG = '
3545 || p_contact_tbl (i).flag
3546 || ' CONTACT ID = '
3547 || p_contact_tbl (i).contact_id
3548 || ' CPL ID = '
3549 || l_add2partyid
3550 || ',CRO CD = '
3551 || p_contact_tbl (i).contact_role
3552 || ',CTC CD = '
3553 || l_hdr_contactid
3554 || ',JTO CD = '
3555 || p_contact_tbl (i).contact_object_code
3556 );
3557 END IF;
3558
3559 IF p_contact_tbl (i).flag = 'H'
3560 THEN
3561 l_ctcv_tbl_in (1).object1_id1 := l_hdr_contactid;
3562 ELSE
3563 l_ctcv_tbl_in (1).object1_id1 := p_contact_tbl (i).contact_id;
3564 END IF;
3565
3566 l_ctcv_tbl_in (1).cpl_id := l_add2partyid;
3567 l_ctcv_tbl_in (1).dnz_chr_id := l_chrid;
3568 l_ctcv_tbl_in (1).cro_code := p_contact_tbl (i).contact_role;
3569 l_ctcv_tbl_in (1).object1_id2 := '#';
3570 l_ctcv_tbl_in (1).jtot_object1_code :=
3571 p_contact_tbl (i).contact_object_code;
3572 okc_contract_party_pub.create_contact
3573 (p_api_version => l_api_version,
3574 p_init_msg_list => l_init_msg_list,
3575 x_return_status => l_return_status,
3576 x_msg_count => x_msg_count,
3577 x_msg_data => x_msg_data,
3578 p_ctcv_tbl => l_ctcv_tbl_in,
3579 x_ctcv_tbl => l_ctcv_tbl_out
3580 );
3581
3582 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3583 THEN
3584 fnd_log.STRING
3585 (fnd_log.level_event,
3586 g_module_current || '.Create_K_Hdr.external_call.after',
3587 'okc_contract_party_pub.create_contact(Return status = '
3588 || l_return_status
3589 || ')'
3590 );
3591 END IF;
3592
3593 IF l_return_status = 'S'
3594 THEN
3595 l_contact_id := l_ctcv_tbl_out (1).ID;
3596 ELSE
3597 okc_api.set_message (g_app_name,
3598 g_required_value,
3599 g_col_name_token,
3600 p_contact_tbl (i).contact_role
3601 || ' Contact (HEADER) '
3602 || p_contact_tbl (i).contact_object_code
3603 );
3604 RAISE g_exception_halt_validation;
3605 END IF;
3606
3607 EXIT WHEN i = p_contact_tbl.LAST;
3608 i := p_contact_tbl.NEXT (i);
3609 END LOOP;
3610 END IF;
3611
3612 --Grouping Routine
3613 l_ctrgrp :=
3614 NVL (p_k_header_rec.chr_group,
3615 NVL (fnd_profile.VALUE ('OKS_WARR_CONTRACT_GROUP'), 2)
3616 );
3617 l_cgcv_tbl_in (1).cgp_parent_id := l_ctrgrp;
3618 l_cgcv_tbl_in (1).included_chr_id := l_chrid;
3619 l_cgcv_tbl_in (1).object_version_number := okc_api.g_miss_num;
3620 l_cgcv_tbl_in (1).created_by := okc_api.g_miss_num;
3621 l_cgcv_tbl_in (1).creation_date := okc_api.g_miss_date;
3622 l_cgcv_tbl_in (1).last_updated_by := okc_api.g_miss_num;
3623 l_cgcv_tbl_in (1).last_update_date := okc_api.g_miss_date;
3624 l_cgcv_tbl_in (1).last_update_login := okc_api.g_miss_num;
3625 l_cgcv_tbl_in (1).included_cgp_id := NULL;
3626 okc_contract_group_pub.create_contract_grpngs
3627 (p_api_version => l_api_version,
3628 p_init_msg_list => l_init_msg_list,
3629 x_return_status => l_return_status,
3630 x_msg_count => x_msg_count,
3631 x_msg_data => x_msg_data,
3632 p_cgcv_tbl => l_cgcv_tbl_in,
3633 x_cgcv_tbl => l_cgcv_tbl_out
3634 );
3635
3636 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3637 THEN
3638 fnd_log.STRING
3639 (fnd_log.level_event,
3640 g_module_current || '.Create_K_Hdr.external_call.after',
3641 'okc_contract_group_pub.create_contract_grpngs(Return status = '
3642 || l_return_status
3643 || ')'
3644 );
3645 END IF;
3646
3647 IF l_return_status = 'S'
3648 THEN
3649 l_grpid := l_cgcv_tbl_out (1).ID;
3650 ELSE
3651 okc_api.set_message (g_app_name,
3652 g_required_value,
3653 g_col_name_token,
3654 'Contract Group (HEADER)'
3655 );
3656 RAISE g_exception_halt_validation;
3657 END IF;
3658
3659 IF p_k_header_rec.pdf_id IS NOT NULL
3660 THEN
3661 l_cpsv_tbl_in (1).pdf_id := p_k_header_rec.pdf_id;
3662 l_cpsv_tbl_in (1).chr_id := l_chrid;
3663 l_cpsv_tbl_in (1).user_id := fnd_global.user_id;
3664 l_cpsv_tbl_in (1).in_process_yn := okc_api.g_miss_char;
3665 l_cpsv_tbl_in (1).object_version_number := okc_api.g_miss_num;
3666 l_cpsv_tbl_in (1).created_by := okc_api.g_miss_num;
3667 l_cpsv_tbl_in (1).creation_date := okc_api.g_miss_date;
3668 l_cpsv_tbl_in (1).last_updated_by := okc_api.g_miss_num;
3669 l_cpsv_tbl_in (1).last_update_date := okc_api.g_miss_date;
3670 l_cpsv_tbl_in (1).last_update_login := okc_api.g_miss_num;
3671 okc_contract_pub.create_contract_process
3672 (p_api_version => l_api_version,
3673 p_init_msg_list => l_init_msg_list,
3674 x_return_status => l_return_status,
3675 x_msg_count => x_msg_count,
3676 x_msg_data => x_msg_data,
3677 p_cpsv_tbl => l_cpsv_tbl_in,
3678 x_cpsv_tbl => l_cpsv_tbl_out
3679 );
3680
3681 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3682 THEN
3683 fnd_log.STRING
3684 (fnd_log.level_event,
3685 g_module_current || '.Create_K_Hdr.external_call.after',
3686 'okc_contract_pub.create_contract_process(Return status = '
3687 || l_return_status
3688 || ')'
3689 );
3690 END IF;
3691
3692 IF l_return_status = 'S'
3693 THEN
3694 l_pdfid := l_cpsv_tbl_out (1).ID;
3695 ELSE
3696 okc_api.set_message (g_app_name,
3697 g_required_value,
3698 g_col_name_token,
3699 'Contract WorkFlow (HEADER)'
3700 );
3701 RAISE g_exception_halt_validation;
3702 END IF;
3703 END IF;
3704
3705 --Agreement ID Routine
3706 IF p_k_header_rec.agreement_id IS NOT NULL
3707 THEN
3708 l_gvev_tbl_in (1).chr_id := l_chrid;
3709 l_gvev_tbl_in (1).isa_agreement_id := p_k_header_rec.agreement_id;
3710 l_gvev_tbl_in (1).copied_only_yn := 'Y';
3711 l_gvev_tbl_in (1).dnz_chr_id := l_chrid;
3712 okc_contract_pub.create_governance
3713 (p_api_version => l_api_version,
3714 p_init_msg_list => l_init_msg_list,
3715 x_return_status => l_return_status,
3716 x_msg_count => x_msg_count,
3717 x_msg_data => x_msg_data,
3718 p_gvev_tbl => l_gvev_tbl_in,
3719 x_gvev_tbl => l_gvev_tbl_out
3720 );
3721
3722 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3723 THEN
3724 fnd_log.STRING
3725 (fnd_log.level_event,
3726 g_module_current || '.Create_K_Hdr.external_call.after',
3727 'okc_contract_pub.create_governance(Return status = '
3728 || l_return_status
3729 || ')'
3730 );
3731 END IF;
3732
3733 IF l_return_status = 'S'
3734 THEN
3735 l_govern_id := l_gvev_tbl_out (1).ID;
3736 ELSE
3737 okc_api.set_message (g_app_name,
3738 g_required_value,
3739 g_col_name_token,
3740 'Agreement Id (HEADER)'
3741 );
3742 RAISE g_exception_halt_validation;
3743 END IF;
3744 END IF;
3745
3746 create_obj_rel (p_k_id => l_chrid,
3747 p_line_id => NULL,
3748 p_orderhdrid => p_k_header_rec.order_hdr_id,
3749 p_rty_code => p_k_header_rec.rty_code,
3750 p_orderlineid => NULL,
3751 x_return_status => l_return_status,
3752 x_msg_count => x_msg_count,
3753 x_msg_data => x_msg_data,
3754 x_crjv_tbl_out => l_crjv_tbl_out
3755 );
3756
3757 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3758 THEN
3759 fnd_log.STRING (fnd_log.level_event,
3760 g_module_current
3761 || '.Create_K_Hdr.internal_call.after',
3762 'create_obj_rel(Return status = '
3763 || l_return_status
3764 || ')'
3765 );
3766 END IF;
3767
3768 IF NOT l_return_status = okc_api.g_ret_sts_success
3769 THEN
3770 okc_api.set_message (g_app_name,
3771 g_required_value,
3772 g_col_name_token,
3773 'Order Header Id (HEADER)'
3774 );
3775 RAISE g_exception_halt_validation;
3776 END IF;
3777
3778 x_chr_id := l_chrid;
3779 EXCEPTION
3780 WHEN g_exception_halt_validation
3781 THEN
3782 x_return_status := l_return_status;
3783 WHEN OTHERS
3784 THEN
3785 x_return_status := okc_api.g_ret_sts_unexp_error;
3786 okc_api.set_message (g_app_name,
3787 g_unexpected_error,
3788 g_sqlcode_token,
3789 SQLCODE,
3790 g_sqlerrm_token,
3791 SQLERRM
3792 );
3793 END create_k_hdr;
3794
3795 FUNCTION get_top_line_number (p_chr_id IN NUMBER)
3796 RETURN NUMBER
3797 IS
3798 max_line_number NUMBER;
3799
3800 CURSOR get_line_number
3801 IS
3802 SELECT NVL (MAX (TO_NUMBER (line_number)), 0) + 1
3803 FROM okc_k_lines_b
3804 WHERE dnz_chr_id = p_chr_id AND lse_id IN (1, 12, 14, 19, 46);
3805 BEGIN
3806 OPEN get_line_number;
3807
3808 FETCH get_line_number
3809 INTO max_line_number;
3810
3811 CLOSE get_line_number;
3812
3813 RETURN (max_line_number);
3814 END get_top_line_number;
3815
3816 FUNCTION get_sub_line_number (p_chr_id IN NUMBER, p_cle_id IN NUMBER)
3817 RETURN NUMBER
3818 IS
3819 max_line_number NUMBER;
3820
3821 CURSOR get_line_number
3822 IS
3823 SELECT NVL (MAX (TO_NUMBER (line_number)), 0) + 1
3824 FROM okc_k_lines_b
3825 WHERE dnz_chr_id = p_chr_id
3826 AND cle_id = p_cle_id
3827 AND lse_id IN (35, 7, 8, 9, 10, 11, 13, 18, 25);
3828 BEGIN
3829 OPEN get_line_number;
3830
3831 FETCH get_line_number
3832 INTO max_line_number;
3833
3834 CLOSE get_line_number;
3835
3836 RETURN (max_line_number);
3837 END get_sub_line_number;
3838
3839 PROCEDURE create_k_service_lines (
3840 p_k_line_rec IN k_line_service_rec_type,
3841 p_contact_tbl IN contact_tbl,
3842 p_salescredit_tbl_in IN salescredit_tbl,
3843 p_caller IN VARCHAR2,
3844 x_order_error OUT NOCOPY VARCHAR2,
3845 x_service_line_id OUT NOCOPY NUMBER,
3846 x_return_status OUT NOCOPY VARCHAR2,
3847 x_msg_count OUT NOCOPY NUMBER,
3848 x_msg_data OUT NOCOPY VARCHAR2
3849 )
3850 IS
3851 l_api_version CONSTANT NUMBER := 1.0;
3852 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
3853 l_return_status VARCHAR2 (1) := 'S';
3854 l_index VARCHAR2 (2000);
3855 l_ctcv_tbl_in okc_contract_party_pub.ctcv_tbl_type;
3856 l_ctcv_tbl_out okc_contract_party_pub.ctcv_tbl_type;
3857
3858 CURSOR l_ctr_csr (p_id NUMBER)
3859 IS
3860 SELECT counter_group_id
3861 FROM okx_ctr_associations_v
3862 WHERE source_object_id = p_id;
3863
3864 CURSOR l_billto_csr (p_billto NUMBER)
3865 IS
3866 SELECT cust_account_id
3867 FROM okx_cust_site_uses_v
3868 WHERE id1 = p_billto AND id2 = '#';
3869
3870 CURSOR l_ra_hcontacts_cur (p_contact_id NUMBER)
3871 IS
3872 SELECT hzr.object_id, hzr.party_id
3873 --NPALEPU
3874 --18-JUN-2005,09-AUG-2005
3875 --TCA Project
3876 --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
3877 --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
3878 /* FROM ra_hcontacts rah, hz_party_relationships hzr
3879 WHERE rah.contact_id = p_contact_id
3880 AND rah.party_relationship_id = hzr.party_relationship_id; */
3881 FROM oks_ra_hcontacts_v rah, hz_relationships hzr
3882 WHERE rah.contact_id = p_contact_id
3883 AND rah.party_relationship_id = hzr.relationship_id
3884 AND hzr.subject_table_name = 'HZ_PARTIES'
3885 AND hzr.object_table_name = 'HZ_PARTIES'
3886 AND hzr.directional_flag = 'F';
3887
3888 --END NPALEPU
3889
3890 --enhancement to be commented
3891 CURSOR l_ste_csr (l_line_id NUMBER)
3892 IS
3893 SELECT os.ste_code
3894 FROM okc_statuses_b os, okc_k_lines_b ol
3895 WHERE ol.ID = l_line_id AND ol.sts_code = os.code;
3896
3897 CURSOR l_salesgrp_csr (p_id NUMBER, p_start_date DATE, p_end_date DATE)
3898 IS
3899 SELECT GROUP_ID
3900 FROM jtf_rs_srp_groups
3901 WHERE salesrep_id = p_id
3902 AND org_id = okc_context.get_okc_org_id
3903 AND p_start_date BETWEEN start_date AND end_date
3904 AND p_end_date BETWEEN start_date AND end_date;
3905
3906 /*spingali - bugfix for bug12747411*/
3907 CURSOR get_k_inv_org(p_k_id NUMBER)IS
3908 SELECT inv_organization_id
3909 FROM okc_k_headers_all_b
3910 WHERE id=p_k_id;
3911 l_inv_org_id NUMBER;
3912 /*spingali end of bugfix for bug12747411*/
3913
3914 /*Added for ER 16036980*/
3915 CURSOR l_pricing_qty(p_order_line_id NUMBER )
3916 IS
3917 SELECT pricing_quantity,pricing_quantity_uom
3918 FROM oe_order_lines_all
3919 WHERE line_id = p_order_line_id;
3920
3921 CURSOR get_subs_dtls(p_order_line_id NUMBER)
3922 IS
3923 SELECT Nvl(SERVICE_SUBS_TEMPLATE_ID,1)
3924 FROM oe_order_lines_all
3925 WHERE line_id = p_order_line_id;
3926
3927 l_prc_qty NUMBER;
3928 l_prc_uom VARCHAR2(100);
3929 l_msg_count NUMBER;
3930 l_subsc_template_id NUMBER;
3931
3932
3933 /*Added for ER 16036980*/
3934
3935 l_sales_group_id NUMBER;
3936 l_ctr_grpid VARCHAR2 (40);
3937 l_ste_code VARCHAR2 (30);
3938 --Contract Line Table
3939 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
3940 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
3941 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
3942 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
3943 --Contract Item
3944 l_cimv_tbl_in okc_contract_item_pub.cimv_tbl_type;
3945 l_cimv_tbl_out okc_contract_item_pub.cimv_tbl_type;
3946 --Time Value Related
3947 l_isev_ext_tbl_in okc_time_pub.isev_ext_tbl_type;
3948 l_isev_ext_tbl_out okc_time_pub.isev_ext_tbl_type;
3949 --SalesCredit
3950 l_scrv_tbl_in oks_sales_credit_pub.scrv_tbl_type;
3951 l_scrv_tbl_out oks_sales_credit_pub.scrv_tbl_type;
3952 --Coverage
3953 l_cov_rec oks_coverages_pub.ac_rec_type;
3954 --Counters
3955 l_ctr_grp_id_template NUMBER;
3956 l_ctr_grp_id_instance NUMBER;
3957 --Return IDs
3958 l_line_id NUMBER;
3959 l_rule_group_id NUMBER;
3960 l_rule_id NUMBER;
3961 l_line_item_id NUMBER;
3962 l_time_value_id NUMBER;
3963 l_cov_id NUMBER;
3964 l_salescredit_id NUMBER;
3965 --TimeUnits
3966 l_duration NUMBER;
3967 l_timeunits VARCHAR2 (240);
3968 --General
3969 l_hdrsdt DATE;
3970 l_hdredt DATE;
3971 l_hdrstatus CHAR;
3972 l_lsl_id NUMBER;
3973 l_jtot_object VARCHAR2 (30) := NULL;
3974 i NUMBER;
3975 l_can_object NUMBER;
3976 l_line_party_role_id NUMBER;
3977 l_lin_party_id NUMBER;
3978 l_lin_contactid NUMBER;
3979 l_line_contact_id NUMBER;
3980 l_role VARCHAR2 (40);
3981 l_obj VARCHAR2 (40);
3982 l_rle_code VARCHAR2 (240);
3983 l_msg_data VARCHAR2 (2000);
3984 l_ind NUMBER;
3985 l_sts_code VARCHAR2 (30);
3986 l_sts_flag VARCHAR2 (1);
3987 p_cle_tbl p_srvline_tbl;
3988 l_ctr NUMBER;
3989 l_inp_rec okc_inst_cnd_pub.instcnd_inp_rec;
3990 l_entity_id NUMBER;
3991 BEGIN
3992 x_return_status := okc_api.g_ret_sts_success;
3993
3994 IF p_k_line_rec.SOURCE = 'NEW'
3995 THEN
3996 get_k_cle_id (p_chrid => p_k_line_rec.k_id,
3997 p_invserviceid => p_k_line_rec.srv_id,
3998 p_cle_tbl => p_cle_tbl
3999 );
4000
4001 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4002 THEN
4003 fnd_log.STRING (fnd_log.level_statement,
4004 g_module_current || '.Create_K_Service_Lines',
4005 ' Top Lines Count = ' || p_cle_tbl.COUNT
4006 );
4007 END IF;
4008
4009 IF p_cle_tbl.COUNT > 0
4010 THEN
4011 l_ctr := p_cle_tbl.FIRST;
4012
4013 LOOP
4014 IF check_merge_yn (p_cle_tbl (l_ctr).k_line_id,
4015 p_k_line_rec.order_line_id,
4016 p_k_line_rec.warranty_flag
4017 )
4018 THEN
4019 l_line_id := p_cle_tbl (l_ctr).k_line_id;
4020 EXIT;
4021 END IF;
4022
4023 EXIT WHEN l_ctr = p_cle_tbl.LAST;
4024 l_ctr := p_cle_tbl.NEXT (l_ctr);
4025 END LOOP;
4026 ELSE
4027 l_line_id := NULL;
4028 END IF;
4029
4030 -- enhancement to be commented
4031 OPEN l_ste_csr (l_line_id);
4032
4033 FETCH l_ste_csr
4034 INTO l_ste_code;
4035
4036 CLOSE l_ste_csr;
4037
4038 IF l_ste_code = 'EXPIRED'
4039 THEN
4040 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
4041
4042 UPDATE okc_k_lines_b
4043 SET sts_code = l_sts_code
4044 WHERE ID = l_line_id;
4045 END IF;
4046 ELSE
4047 l_line_id := NULL;
4048 END IF;
4049
4050 IF l_line_id IS NOT NULL
4051 THEN
4052 x_service_line_id := l_line_id;
4053 l_return_status := okc_api.g_ret_sts_success;
4054 RAISE g_exception_halt_validation;
4055 END IF;
4056
4057 IF p_k_line_rec.warranty_flag = 'W'
4058 THEN
4059 l_lsl_id := 14;
4060 l_jtot_object := g_jtf_warr;
4061 ELSIF p_k_line_rec.warranty_flag = 'E'
4062 THEN
4063 l_lsl_id := 19;
4064 l_jtot_object := g_jtf_extwarr;
4065 ELSIF p_k_line_rec.warranty_flag IN ('S', 'SU')
4066 THEN
4067 /*Modified for ER 16036980 */
4068 IF p_k_line_rec.coverage_template_id is null then
4069 l_lsl_id :=46;
4070 l_jtot_object :=g_jtf_subscription;
4071 ELSE
4072 l_lsl_id := 1;
4073 l_jtot_object := g_jtf_extwarr;
4074 END IF;
4075 END IF;
4076
4077 check_hdr_effectivity (p_chr_id => p_k_line_rec.k_id,
4078 p_srv_sdt => p_k_line_rec.srv_sdt,
4079 p_srv_edt => p_k_line_rec.srv_edt,
4080 x_hdr_sdt => l_hdrsdt,
4081 x_hdr_edt => l_hdredt,
4082 x_status => l_hdrstatus
4083 );
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
4089 || '.Create_K_Service_Lines.internal_call.after',
4090 'check_hdr_effectivity(Return status = '
4091 || l_hdrstatus
4092 );
4093 END IF;
4094
4095 IF l_hdrstatus = 'E'
4096 THEN
4097 okc_api.set_message (g_app_name,
4098 g_unexpected_error,
4099 g_sqlcode_token,
4100 SQLCODE,
4101 g_sqlerrm_token,
4102 'line dates are not within header effectivity'
4103 );
4104
4105 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4106 THEN
4107 fnd_log.STRING (fnd_log.level_error,
4108 g_module_current
4109 || '.Create_K_Service_Lines.ERROR',
4110 'Line dates are not withen header effectivity'
4111 );
4112 END IF;
4113
4114 --mmadhavi
4115 IF (p_caller = 'OC')
4116 THEN
4117 fnd_message.set_name (g_app_name, 'OKS_INVD_CONTRACT_ID');
4118 fnd_message.set_token (token => 'HDR_ID',
4119 VALUE => p_k_line_rec.k_id
4120 );
4121 x_order_error := '#' || fnd_message.get_encoded || '#';
4122 END IF;
4123
4124 --mmadhavi
4125 l_return_status := okc_api.g_ret_sts_error;
4126 RAISE g_exception_halt_validation;
4127 ELSIF l_hdrstatus = 'Y'
4128 THEN
4129 IF p_k_line_rec.line_sts_code = 'ENTERED'
4130 THEN
4131 l_sts_flag := 'N';
4132 ELSE
4133 l_sts_flag := 'Y';
4134 END IF;
4135
4136 update_hdr_dates (p_chr_id => p_k_line_rec.k_id,
4137 p_new_sdt => l_hdrsdt,
4138 p_new_edt => l_hdredt,
4139 p_sts_flag => l_sts_flag,
4140 x_status => l_return_status,
4141 x_msg_count => x_msg_count,
4142 x_msg_data => x_msg_data
4143 );
4144
4145 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4146 THEN
4147 fnd_log.STRING (fnd_log.level_event,
4148 g_module_current
4149 || '.Create_K_Service_Lines.internal_call.after',
4150 'update_hdr_dates(Return status = '
4151 || l_return_status
4152 );
4153 END IF;
4154
4155 IF NOT l_return_status = 'S'
4156 THEN
4157 l_return_status := okc_api.g_ret_sts_error;
4158 okc_api.set_message (g_app_name,
4159 g_required_value,
4160 g_col_name_token,
4161 'Header Effectivity Update (LINE)'
4162 );
4163 RAISE g_exception_halt_validation;
4164 END IF;
4165 END IF;
4166
4167 l_clev_tbl_in (1).chr_id := p_k_line_rec.k_id;
4168 l_clev_tbl_in (1).sfwt_flag := 'N';
4169 l_clev_tbl_in (1).lse_id := l_lsl_id;
4170 --l_clev_tbl_in(1).line_number := p_k_line_rec.k_line_number;
4171 l_clev_tbl_in (1).line_number := get_top_line_number (p_k_line_rec.k_id);
4172 l_clev_tbl_in (1).sts_code := p_k_line_rec.line_sts_code;
4173 l_clev_tbl_in (1).display_sequence := 1;
4174 l_clev_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4175 --l_clev_tbl_in(1).name := Substr(p_k_line_rec.srv_segment1,1,50);
4176 l_clev_tbl_in (1).NAME := NULL;
4177 l_clev_tbl_in (1).item_description := p_k_line_rec.srv_desc;
4178 l_clev_tbl_in (1).start_date := p_k_line_rec.srv_sdt;
4179 l_clev_tbl_in (1).end_date := p_k_line_rec.srv_edt;
4180 l_clev_tbl_in (1).exception_yn := 'N';
4181 l_clev_tbl_in (1).currency_code := p_k_line_rec.currency;
4182 l_clev_tbl_in (1).price_level_ind := priced_yn (l_lsl_id);
4183 l_clev_tbl_in (1).trn_code := p_k_line_rec.reason_code;
4184 l_clev_tbl_in (1).upg_orig_system_ref :=
4185 p_k_line_rec.upg_orig_system_ref;
4186 -- 04-jun-2002 Vigandhi
4187 l_clev_tbl_in (1).upg_orig_system_ref_id :=
4188 p_k_line_rec.upg_orig_system_ref_id;
4189
4190 -- 04-jun-2002 Vigandhi
4191 l_clev_tbl_in (1).comments := p_k_line_rec.reason_comments;
4192 l_clev_tbl_in (1).attribute1 := p_k_line_rec.attribute1;
4193 l_clev_tbl_in (1).attribute2 := p_k_line_rec.attribute2;
4194 l_clev_tbl_in (1).attribute3 := p_k_line_rec.attribute3;
4195 l_clev_tbl_in (1).attribute4 := p_k_line_rec.attribute4;
4196 l_clev_tbl_in (1).attribute5 := p_k_line_rec.attribute5;
4197 l_clev_tbl_in (1).attribute6 := p_k_line_rec.attribute6;
4198 l_clev_tbl_in (1).attribute7 := p_k_line_rec.attribute7;
4199 l_clev_tbl_in (1).attribute8 := p_k_line_rec.attribute8;
4200 l_clev_tbl_in (1).attribute9 := p_k_line_rec.attribute9;
4201 l_clev_tbl_in (1).attribute10 := p_k_line_rec.attribute10;
4202 l_clev_tbl_in (1).attribute11 := p_k_line_rec.attribute11;
4203 l_clev_tbl_in (1).attribute12 := p_k_line_rec.attribute12;
4204 l_clev_tbl_in (1).attribute13 := p_k_line_rec.attribute13;
4205 l_clev_tbl_in (1).attribute14 := p_k_line_rec.attribute14;
4206 l_clev_tbl_in (1).attribute15 := p_k_line_rec.attribute15;
4207 ------------------------------------------
4208 -- Rules inserted by okc
4209 ------------------------------------------
4210 l_can_object := NULL;
4211 IF p_k_line_rec.warranty_flag <> 'W'
4212 THEN
4213
4214 OPEN l_billto_csr (p_k_line_rec.bill_to_id);
4215 FETCH l_billto_csr INTO l_can_object;
4216 CLOSE l_billto_csr;
4217
4218 --ramesh added on jan-26-01 for ib html interface
4219 IF l_can_object IS NULL
4220 THEN
4221 l_can_object := p_k_line_rec.cust_account;
4222 END IF;
4223 END IF;
4224
4225
4226 l_clev_tbl_in (1).cust_acct_id := l_can_object; --CAN
4227 l_clev_tbl_in (1).inv_rule_id := p_k_line_rec.invoicing_rule_id; --IRE
4228 l_clev_tbl_in (1).line_renewal_type_code :=
4229 NVL (p_k_line_rec.line_renewal_type, 'FUL');
4230 --LRT
4231 l_clev_tbl_in (1).bill_to_site_use_id := p_k_line_rec.bill_to_id; --BTO
4232 l_clev_tbl_in (1).ship_to_site_use_id := p_k_line_rec.ship_to_id; --STO
4233 l_clev_tbl_in (1).price_list_id := p_k_line_rec.ln_price_list_id;
4234 -- price list
4235 okc_contract_pub.create_contract_line
4236 (p_api_version => l_api_version,
4237 p_init_msg_list => l_init_msg_list,
4238 p_restricted_update => okc_api.g_true,
4239 x_return_status => l_return_status,
4240 x_msg_count => x_msg_count,
4241 x_msg_data => x_msg_data,
4242 p_clev_tbl => l_clev_tbl_in,
4243 x_clev_tbl => l_clev_tbl_out
4244 );
4245
4246 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4247 THEN
4248 fnd_log.STRING
4249 (fnd_log.level_event,
4250 g_module_current
4251 || '.Create_K_Service_Lines.External_call.after',
4252 'okc_contract_pub.create_contract_line(Return status = '
4253 || l_return_status
4254 );
4255 END IF;
4256
4257 IF l_return_status = 'S'
4258 THEN
4259 l_line_id := l_clev_tbl_out (1).ID;
4260 ELSE
4261 --mmadhavi
4262 IF (p_caller = 'OC')
4263 THEN
4264 x_order_error := '#';
4265
4266 FOR i IN 1 .. fnd_msg_pub.count_msg
4267 LOOP
4268 fnd_msg_pub.get (p_msg_index => i,
4269 p_encoded => 'T',
4270 p_data => l_msg_data,
4271 p_msg_index_out => l_ind
4272 );
4273 x_order_error := x_order_error || l_msg_data || '#';
4274
4275 IF (g_fnd_log_option = 'Y')
4276 THEN
4277 fnd_message.set_encoded (l_msg_data);
4278 l_msg_data := fnd_message.get;
4279 fnd_file.put_line
4280 (fnd_file.LOG,
4281 '(okc_contract_pub).create_contract_line '
4282 || l_msg_data
4283 );
4284 END IF;
4285 END LOOP;
4286
4287 RAISE g_exception_halt_validation;
4288 ELSE
4289 --mmadhavi
4290 okc_api.set_message (g_app_name,
4291 g_required_value,
4292 g_col_name_token,
4293 'Line (LINE)'
4294 );
4295 RAISE g_exception_halt_validation;
4296 END IF;
4297 END IF;
4298
4299 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4300 THEN
4301 fnd_log.STRING (fnd_log.level_statement,
4302 g_module_current || '.Create_K_Service_Lines',
4303 'Line Id= ' || l_line_id
4304 );
4305 END IF;
4306 -------------------------------------
4307 -- Get and populate the CC Trxn extension id
4308 -- and populate the oks line structure
4309 -------------------------------------
4310
4311 -- Get the transaction extension id for the contract line
4312 IF p_k_line_rec.order_line_id IS NOT NULL THEN
4313 get_cc_trxn_extn (
4314 p_order_header_id => NULL,
4315 p_order_line_id => p_k_line_rec.order_line_id,
4316 p_context_level => G_CONTEXT_ORDER_LINE,
4317 p_contract_hdr_id => NULL,
4318 p_contract_line_id => l_line_id,
4319 x_entity_id => l_entity_id,
4320 x_return_status => l_return_status );
4321
4322 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
4323 -- Populate the oks header record with the trxn_extension_id
4324 l_klnv_tbl_in(1).trxn_extension_id := l_entity_id;
4325 IF l_entity_id IS NOT NULL THEN
4326 l_klnv_tbl_in (1).payment_type := 'CCR'; -- Credit Card
4327 END IF;
4328 ELSE
4329 FOR i IN 1 .. fnd_msg_pub.count_msg
4330 LOOP
4331 fnd_msg_pub.get (p_msg_index => i,
4332 p_encoded => 'T',
4333 p_data => l_msg_data,
4334 p_msg_index_out => l_ind
4335 );
4336
4337 IF (g_fnd_log_option = 'Y') THEN
4338 fnd_message.set_encoded (l_msg_data);
4339 l_msg_data := fnd_message.get;
4340 fnd_file.put_line
4341 (fnd_file.LOG,
4342 'get_cc_trxn for line'
4343 || l_msg_data
4344 );
4345 END IF;
4346 END LOOP;
4347 RAISE g_exception_halt_validation;
4348 END IF;
4349 END IF;
4350
4351 -------------------------------------
4352 -- rules inserted by oks --IRT
4353 -------------------------------------
4354 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4355 THEN
4356 fnd_log.STRING (fnd_log.level_statement,
4357 g_module_current || '.Create_K_Service_Lines',
4358 'Accounting id = '
4359 || p_k_line_rec.accounting_rule_id
4360 || ',Commitment id = '
4361 || p_k_line_rec.commitment_id
4362 );
4363 END IF;
4364
4365 l_klnv_tbl_in (1).cle_id := l_line_id;
4366 l_klnv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4367 --mmadhavi removing trucation of invoice_text
4368 l_klnv_tbl_in (1).invoice_text :=
4369 p_k_line_rec.srv_desc
4370 || ':'
4371 || to_char(p_k_line_rec.srv_sdt,'DD-MON-YYYY')
4372 || ':'
4373 || to_char(p_k_line_rec.srv_edt,'DD-MON-YYYY');
4374 l_klnv_tbl_in (1).created_by := okc_api.g_miss_num;
4375 l_klnv_tbl_in (1).creation_date := okc_api.g_miss_date;
4376 l_klnv_tbl_in (1).acct_rule_id := p_k_line_rec.accounting_rule_id; --ARL
4377
4378 IF p_k_line_rec.commitment_id IS NOT NULL
4379 THEN
4380 l_klnv_tbl_in (1).payment_type := 'COM';
4381 l_klnv_tbl_in (1).commitment_id := p_k_line_rec.commitment_id;
4382 --PAYMENT METHOD
4383 END IF;
4384
4385 l_klnv_tbl_in (1).cust_po_number_req_yn := 'N'; -- po number required
4386 l_klnv_tbl_in (1).inv_print_flag := 'Y';
4387 -- print flag'Changed to Y to fix bug 4188061'
4388 --Bug Fix 4121175
4389 l_klnv_tbl_in (1).tax_code := p_k_line_rec.tax_code;
4390 --End Bug Fix 4121175
4391 l_klnv_tbl_in (1).coverage_id := p_k_line_rec.coverage_template_id;
4392 l_klnv_tbl_in (1).standard_cov_yn := p_k_line_rec.standard_cov_yn;
4393 l_klnv_tbl_in (1).price_uom := p_k_line_rec.price_uom;
4394
4395 --Added in R12 by rsu
4396 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
4397 THEN
4398 fnd_log.STRING (fnd_log.level_statement,
4399 g_module_current || '.Create_K_Service_Lines',
4400 'Before calling oks_contract_line_pub.create_line'
4401 );
4402 fnd_log.STRING (fnd_log.level_statement,
4403 g_module_current || '.Create_K_Service_Lines',
4404 'p_k_line_rec.tax_classification_code: '
4405 || p_k_line_rec.tax_classification_code
4406 );
4407 fnd_log.STRING (fnd_log.level_statement,
4408 g_module_current || '.Create_K_Service_Lines',
4409 'p_k_line_rec.exempt_certificate_number: '
4410 || p_k_line_rec.exemption_certificate_number
4411 );
4412 fnd_log.STRING (fnd_log.level_statement,
4413 g_module_current || '.Create_K_Service_Lines',
4414 'p_k_line_rec.exempt_reason_code: '
4415 || p_k_line_rec.exemption_reason_code
4416 );
4417 fnd_log.STRING (fnd_log.level_statement,
4418 g_module_current || '.Create_K_Service_Lines',
4419 'p_k_line_rec.tax_status: '
4420 || p_k_line_rec.tax_status
4421 );
4422 END IF;
4423
4424 l_klnv_tbl_in (1).tax_classification_code :=
4425 p_k_line_rec.tax_classification_code;
4426 l_klnv_tbl_in (1).exempt_certificate_number :=
4427 p_k_line_rec.exemption_certificate_number;
4428 l_klnv_tbl_in (1).exempt_reason_code :=
4429 p_k_line_rec.exemption_reason_code;
4430 l_klnv_tbl_in (1).tax_status := p_k_line_rec.tax_status;
4431 --End: Added in R12 by rsu
4432
4433 -- Added for 120 CC EXTN(LINE) project by vjramali
4434 -- l_klnv_tbl_in (1).trxn_extension_id := p_k_line_rec.trxn_extension_id;
4435 oks_contract_line_pub.create_line (p_api_version => l_api_version,
4436 p_init_msg_list => l_init_msg_list,
4437 x_return_status => l_return_status,
4438 x_msg_count => x_msg_count,
4439 x_msg_data => x_msg_data,
4440 p_klnv_tbl => l_klnv_tbl_in,
4441 x_klnv_tbl => l_klnv_tbl_out,
4442 p_validate_yn => 'N'
4443 );
4444
4445 IF NOT l_return_status = 'S'
4446 THEN
4447 --mmadhavi
4448 IF (p_caller = 'OC')
4449 THEN
4450 x_order_error := '#';
4451
4452 FOR i IN 1 .. fnd_msg_pub.count_msg
4453 LOOP
4454 fnd_msg_pub.get (p_msg_index => i,
4455 p_encoded => 'T',
4456 p_data => l_msg_data,
4457 p_msg_index_out => l_ind
4458 );
4459 x_order_error := x_order_error || l_msg_data || '#';
4460
4461 IF (g_fnd_log_option = 'Y')
4462 THEN
4463 fnd_message.set_encoded (l_msg_data);
4464 l_msg_data := fnd_message.get;
4465 fnd_file.put_line
4466 (fnd_file.LOG,
4467 '(oks_contract_line_pub).create_line '
4468 || l_msg_data
4469 );
4470 END IF;
4471 END LOOP;
4472
4473 RAISE g_exception_halt_validation;
4474 ELSE
4475 --mmadhavi
4476 okc_api.set_message (g_app_name,
4477 g_required_value,
4478 g_col_name_token,
4479 'OKS Contract LINE'
4480 );
4481 RAISE g_exception_halt_validation;
4482 END IF;
4483 END IF;
4484
4485 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4486 THEN
4487 fnd_log.STRING
4488 (fnd_log.level_event,
4489 g_module_current
4490 || '.Create_K_Service_Lines.external_call.after',
4491 'oks_contract_line_pub.create_line (Return status = '
4492 || l_return_status
4493 || ')'
4494 );
4495 END IF;
4496
4497 okc_time_util_pub.get_duration (p_start_date => p_k_line_rec.srv_sdt,
4498 p_end_date => p_k_line_rec.srv_edt,
4499 x_duration => l_duration,
4500 x_timeunit => l_timeunits,
4501 x_return_status => l_return_status
4502 );
4503
4504 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4505 THEN
4506 fnd_log.STRING (fnd_log.level_event,
4507 g_module_current
4508 || '.Create_K_Service_Lines.external_call.after',
4509 'okc_time_util_pub.get_duration(Return status = '
4510 || l_return_status
4511 || ')'
4512 );
4513 END IF;
4514
4515 IF NOT l_return_status = 'S'
4516 THEN
4517 RAISE g_exception_halt_validation;
4518 END IF;
4519
4520 --Create Contract Item
4521 l_cimv_tbl_in (1).cle_id := l_line_id;
4522 l_cimv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4523 l_cimv_tbl_in (1).object1_id1 := p_k_line_rec.srv_id;
4524
4525 /*spingali- bugfix for bug12747411 - start*/
4526 OPEN get_k_inv_org(p_k_line_rec.k_id);
4527 FETCH get_k_inv_org INTO l_inv_org_id;
4528 CLOSE get_k_inv_org;
4529
4530 IF (Nvl(OKS_EXTWARPRGM_PVT.G_TRF_K_CREATE,'N') ='Y') AND (l_inv_org_id<>(nvl(OKC_CONTEXT.GET_OKC_ORG_ID,-99)))THEN
4531 l_cimv_tbl_in( 1 ).object1_id2 := l_inv_org_id;
4532 ELSE
4533 l_cimv_tbl_in( 1 ).object1_id2 := okc_context.get_okc_organization_id;
4534 END IF;
4535 /*spingali bugfix for bug12747411 - end */
4536 ---l_cimv_tbl_in (1).object1_id2 := okc_context.get_okc_organization_id;
4537 l_cimv_tbl_in (1).jtot_object1_code := l_jtot_object;
4538 l_cimv_tbl_in (1).exception_yn := 'N';
4539 /*Modified for ER 16036980*/
4540 IF l_lsl_id <> 46 THEN
4541 l_cimv_tbl_in (1).number_of_items := l_duration;
4542 l_cimv_tbl_in (1).uom_code := l_timeunits;
4543 ELSE
4544 OPEN l_pricing_qty(p_k_line_rec.order_line_id);
4545 FETCH l_pricing_qty INTO l_prc_qty,l_prc_uom;
4546 CLOSE l_pricing_qty;
4547 l_cimv_tbl_in (1).number_of_items := l_prc_qty;
4548 l_cimv_tbl_in (1).uom_code := l_prc_uom;
4549 END IF;
4550 /*Modified for ER 16036980*/
4551 okc_contract_item_pub.create_contract_item
4552 (p_api_version => l_api_version,
4553 p_init_msg_list => l_init_msg_list,
4554 x_return_status => l_return_status,
4555 x_msg_count => x_msg_count,
4556 x_msg_data => x_msg_data,
4557 p_cimv_tbl => l_cimv_tbl_in,
4558 x_cimv_tbl => l_cimv_tbl_out
4559 );
4560
4561 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4562 THEN
4563 fnd_log.STRING
4564 (fnd_log.level_event,
4565 g_module_current || '.Create_K_Service_Lines.external_call.after',
4566 'okc_contract_item_pub.create_contract_item(Return status = '
4567 || l_return_status
4568 || ')'
4569 );
4570 END IF;
4571
4572 IF l_return_status = 'S'
4573 THEN
4574 l_line_item_id := l_cimv_tbl_out (1).ID;
4575 ELSE
4576 okc_api.set_message (g_app_name,
4577 g_required_value,
4578 g_col_name_token,
4579 'Service Inventory Item ID '
4580 || p_k_line_rec.srv_id
4581 || ' ORG '
4582 + okc_context.get_okc_organization_id
4583 );
4584 RAISE g_exception_halt_validation;
4585 END IF;
4586
4587 --Create SalesCredits
4588 IF p_salescredit_tbl_in.COUNT > 0
4589 THEN
4590 i := p_salescredit_tbl_in.FIRST;
4591
4592 LOOP
4593 l_scrv_tbl_in (1).PERCENT := p_salescredit_tbl_in (i).PERCENT;
4594 l_scrv_tbl_in (1).chr_id := p_k_line_rec.k_id;
4595 l_scrv_tbl_in (1).cle_id := l_line_id;
4596 l_scrv_tbl_in (1).ctc_id := p_salescredit_tbl_in (i).ctc_id;
4597 l_scrv_tbl_in (1).sales_credit_type_id1 :=
4598 p_salescredit_tbl_in (i).sales_credit_type_id;
4599 l_scrv_tbl_in (1).sales_credit_type_id2 := '#';
4600 l_scrv_tbl_in (1).sales_group_id :=
4601 p_salescredit_tbl_in (i).sales_group_id;
4602 oks_sales_credit_pub.insert_sales_credit
4603 (p_api_version => 1.0,
4604 p_init_msg_list => okc_api.g_false,
4605 x_return_status => x_return_status,
4606 x_msg_count => x_msg_count,
4607 x_msg_data => x_msg_data,
4608 p_scrv_tbl => l_scrv_tbl_in,
4609 x_scrv_tbl => l_scrv_tbl_out
4610 );
4611
4612 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4613 THEN
4614 fnd_log.STRING
4615 (fnd_log.level_event,
4616 g_module_current
4617 || '.Create_K_Service_Lines.external_call.after',
4618 'oks_sales_credit_pub.insert_sales_credit(Return status = '
4619 || l_return_status
4620 || ')'
4621 );
4622 END IF;
4623
4624 IF l_return_status = 'S'
4625 THEN
4626 l_salescredit_id := l_scrv_tbl_out (1).ID;
4627 ELSE
4628 okc_api.set_message (g_app_name,
4629 g_required_value,
4630 g_col_name_token,
4631 'Sales Credit Failure'
4632 );
4633 RAISE g_exception_halt_validation;
4634 END IF;
4635
4636 EXIT WHEN i = p_salescredit_tbl_in.LAST;
4637 i := p_salescredit_tbl_in.NEXT (i);
4638 END LOOP;
4639 END IF;
4640
4641 --CONTACT CREATION ROUT NOCOPY INE STARTS
4642 IF p_contact_tbl.COUNT > 0
4643 THEN
4644 i := p_contact_tbl.FIRST;
4645
4646 LOOP
4647 IF p_contact_tbl (i).flag = 'H'
4648 THEN
4649 l_lin_party_id := NULL;
4650 l_lin_contactid := NULL;
4651
4652 OPEN l_ra_hcontacts_cur (p_contact_tbl (i).contact_id);
4653
4654 FETCH l_ra_hcontacts_cur
4655 INTO l_lin_party_id, l_lin_contactid;
4656
4657 CLOSE l_ra_hcontacts_cur;
4658
4659 IF i = p_contact_tbl.FIRST
4660 THEN
4661 IF p_k_line_rec.warranty_flag = 'SU'
4662 THEN
4663 l_rle_code := 'SUBSCRIBER';
4664 ELSE
4665 l_rle_code := 'CUSTOMER';
4666 END IF;
4667
4668 party_role (p_chrid => p_k_line_rec.k_id,
4669 p_cleid => l_line_id,
4670 p_rle_code => l_rle_code,
4671 p_partyid => l_lin_party_id,
4672 p_object_code => g_jtf_party,
4673 x_roleid => l_line_party_role_id,
4674 x_msg_count => x_msg_count,
4675 x_msg_data => x_msg_data,
4676 x_return_status => l_return_status
4677 );
4678
4679 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
4680 )
4681 THEN
4682 fnd_log.STRING
4683 (fnd_log.level_event,
4684 g_module_current
4685 || '.Create_K_Service_Lines.contact_creation',
4686 'party_role(Return status = '
4687 || l_return_status
4688 || ')'
4689 || 'CPL id = '
4690 || l_line_party_role_id
4691 );
4692 END IF;
4693
4694 IF NOT l_return_status = okc_api.g_ret_sts_success
4695 THEN
4696 x_return_status := l_return_status;
4697 RAISE g_exception_halt_validation;
4698 END IF;
4699 END IF;
4700
4701 IF p_contact_tbl (i).contact_role LIKE '%BILLING%'
4702 THEN
4703 l_role := 'CUST_BILLING';
4704 l_obj := 'OKX_CONTBILL';
4705 ELSIF p_contact_tbl (i).contact_role LIKE '%ADMIN%'
4706 THEN
4707 l_role := 'CUST_ADMIN';
4708 l_obj := 'OKX_CONTADMN';
4709 ELSIF p_contact_tbl (i).contact_role LIKE '%SHIP%'
4710 THEN
4711 l_role := 'CUST_SHIPPING';
4712 l_obj := 'OKX_CONTSHIP';
4713 END IF;
4714
4715 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4716 THEN
4717 fnd_log.STRING (fnd_log.level_statement,
4718 g_module_current
4719 || '.Create_K_Service_Lines.before_contact',
4720 'Line Party Id = '
4721 || l_lin_party_id
4722 || ',ORG CTC Id = '
4723 || p_contact_tbl (i).contact_id
4724 || ',RAH CTC Id = '
4725 || l_lin_contactid
4726 || ',Cont rule = '
4727 || p_contact_tbl (i).contact_role
4728 || ',CON OBJ Rule = '
4729 || p_contact_tbl (i).contact_object_code
4730 );
4731 END IF;
4732
4733 l_ctcv_tbl_in (1).cpl_id := l_line_party_role_id;
4734 l_ctcv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4735 l_ctcv_tbl_in (1).cro_code := l_role;
4736 l_ctcv_tbl_in (1).object1_id1 := p_contact_tbl (i).contact_id;
4737 l_ctcv_tbl_in (1).object1_id2 := '#';
4738 l_ctcv_tbl_in (1).jtot_object1_code := l_obj;
4739 okc_contract_party_pub.create_contact
4740 (p_api_version => l_api_version,
4741 p_init_msg_list => l_init_msg_list,
4742 x_return_status => l_return_status,
4743 x_msg_count => x_msg_count,
4744 x_msg_data => x_msg_data,
4745 p_ctcv_tbl => l_ctcv_tbl_in,
4746 x_ctcv_tbl => l_ctcv_tbl_out
4747 );
4748
4749 IF l_return_status = 'S'
4750 THEN
4751 l_line_contact_id := l_ctcv_tbl_out (1).ID;
4752 ELSE
4753 okc_api.set_message (g_app_name,
4754 g_required_value,
4755 g_col_name_token,
4756 p_contact_tbl (i).contact_role
4757 || ' Contact (LINE) '
4758 || p_contact_tbl (i).contact_object_code
4759 );
4760 RAISE g_exception_halt_validation;
4761 END IF;
4762 END IF;
4763
4764 EXIT WHEN i = p_contact_tbl.LAST;
4765 i := p_contact_tbl.NEXT (i);
4766 END LOOP;
4767 END IF;
4768
4769 IF p_k_line_rec.coverage_template_id IS NOT NULL and p_caller <> 'ST'
4770 THEN
4771 fnd_msg_pub.initialize;
4772 oks_coverages_pvt.create_k_coverage_ext
4773 (p_api_version => 1,
4774 p_init_msg_list => 'T',
4775 p_src_line_id => p_k_line_rec.coverage_template_id,
4776 p_tgt_line_id => l_line_id,
4777 x_return_status => l_return_status,
4778 x_msg_count => x_msg_count,
4779 x_msg_data => x_msg_data
4780 );
4781
4782 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4783 THEN
4784 fnd_log.STRING
4785 (fnd_log.level_event,
4786 g_module_current
4787 || '.Create_K_Service_Lines.after_coverage_ext',
4788 'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
4789 || l_return_status
4790 || ')'
4791 );
4792 END IF;
4793
4794 IF NOT l_return_status = okc_api.g_ret_sts_success
4795 THEN
4796 IF (p_caller = 'OC')
4797 THEN
4798 fnd_message.set_name (g_app_name, 'OKS_INVD_COV_TEMP');
4799 fnd_message.set_token (token => 'SERV_ID',
4800 VALUE => p_k_line_rec.srv_id
4801 );
4802 x_order_error := '#' || fnd_message.get_encoded || '#';
4803 ELSE
4804 okc_api.set_message (g_app_name,
4805 g_required_value,
4806 g_col_name_token,
4807 'Invalid Coverage Associated with '
4808 || p_k_line_rec.srv_id
4809 );
4810 END IF;
4811
4812 RAISE g_exception_halt_validation;
4813 END IF;
4814 ELSIF p_k_line_rec.coverage_template_id IS NULL AND p_caller <> 'ST' AND l_lsl_id <> 46 ---Modified for ER 16036980
4815 THEN
4816 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4817 THEN
4818 fnd_log.STRING (fnd_log.level_error,
4819 g_module_current
4820 || '.Create_K_Service_Lines.ERROR',
4821 'Coverage is not associated with '
4822 || p_k_line_rec.srv_id
4823 );
4824 END IF;
4825
4826 l_return_status := okc_api.g_ret_sts_error;
4827 okc_api.set_message (g_app_name,
4828 g_required_value,
4829 g_col_name_token,
4830 'Coverage Not Associated with '
4831 || p_k_line_rec.srv_id
4832 );
4833 RAISE g_exception_halt_validation;
4834
4835 /*Added for ER 16036980 */
4836 ELSE
4837 IF p_k_line_rec.coverage_template_id IS NULL AND l_lsl_id = 46 THEN
4838 OPEN get_subs_dtls(p_k_line_rec.order_line_id);
4839 FETCH get_subs_dtls INTO l_subsc_template_id;
4840 CLOSE get_subs_dtls;
4841
4842 OKS_OCINT_PUB.OM_subscription_schedule (p_api_version => 1.0,
4843 p_init_msg_list => 'F',
4844 x_return_status => l_return_status,
4845 x_msg_count => l_msg_count,
4846 x_msg_data => l_msg_data,
4847 p_cle_id => l_line_id,
4848 p_template_id => l_subsc_template_id);
4849
4850 IF NOT l_return_status = okc_api.g_ret_sts_success
4851 THEN
4852 IF (p_caller = 'OC')
4853 THEN
4854 fnd_message.set_name (g_app_name, 'OKS_INVD_COV_TEMP');
4855 fnd_message.set_token (token => 'SERV_ID',
4856 VALUE => p_k_line_rec.srv_id
4857 );
4858 x_order_error := '#' || fnd_message.get_encoded || '#';
4859 ELSE
4860 okc_api.set_message (g_app_name,
4861 g_required_value,
4862 g_col_name_token,
4863 'Invalid subscription template Associated with '
4864 || p_k_line_rec.srv_id
4865 );
4866 END IF;
4867
4868 RAISE g_exception_halt_validation;
4869
4870 END IF;
4871
4872 END IF;
4873 /*Added for ER 16036980 */
4874 END IF;
4875
4876 l_ctr_grpid := NULL;
4877
4878 OPEN l_ctr_csr (p_k_line_rec.srv_id);
4879
4880 FETCH l_ctr_csr
4881 INTO l_ctr_grpid;
4882
4883 CLOSE l_ctr_csr;
4884
4885 IF l_ctr_grpid IS NOT NULL AND l_lsl_id <> 46 ---Modified for ER 16036980
4886 THEN
4887 cs_counters_pub.autoinstantiate_counters
4888 (p_api_version => 1.0,
4889 p_init_msg_list => okc_api.g_false,
4890 p_commit => 'F',
4891 x_return_status => l_return_status,
4892 x_msg_count => x_msg_count,
4893 x_msg_data => x_msg_data,
4894 p_source_object_id_template => p_k_line_rec.srv_id,
4895 p_source_object_id_instance => l_line_id,
4896 x_ctr_grp_id_template => l_ctr_grp_id_template,
4897 x_ctr_grp_id_instance => l_ctr_grp_id_instance
4898 );
4899
4900 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4901 THEN
4902 fnd_log.STRING
4903 (fnd_log.level_event,
4904 g_module_current
4905 || '.Create_K_Service_Lines.after_instantiate_counters',
4906 'cs_counters_pub.autoinstantiate_counters(Return Status = '
4907 || l_return_status
4908 || ')'
4909 );
4910 END IF;
4911
4912 IF NOT l_return_status = okc_api.g_ret_sts_success
4913 THEN
4914 okc_api.set_message (g_app_name,
4915 g_required_value,
4916 g_col_name_token,
4917 'Counter Instantiate (LINE)'
4918 );
4919 RAISE g_exception_halt_validation;
4920 END IF;
4921
4922 -- To instantiate the events
4923 l_inp_rec.ins_ctr_grp_id := l_ctr_grp_id_instance;
4924 l_inp_rec.tmp_ctr_grp_id := l_ctr_grp_id_template;
4925 l_inp_rec.chr_id := p_k_line_rec.k_id;
4926 l_inp_rec.cle_id := l_line_id;
4927 l_inp_rec.jtot_object_code := 'OKC_K_LINE';
4928 l_inp_rec.inv_item_id := p_k_line_rec.srv_id;
4929 okc_inst_cnd_pub.inst_condition (p_api_version => 1.0,
4930 p_init_msg_list => 'T',
4931 x_return_status => x_return_status,
4932 x_msg_count => x_msg_count,
4933 x_msg_data => x_msg_data,
4934 p_instcnd_inp_rec => l_inp_rec
4935 );
4936 END IF;
4937
4938 x_service_line_id := l_line_id;
4939 EXCEPTION
4940 WHEN g_exception_halt_validation
4941 THEN
4942 x_return_status := l_return_status;
4943 WHEN OTHERS
4944 THEN
4945 x_return_status := okc_api.g_ret_sts_unexp_error;
4946 okc_api.set_message (g_app_name,
4947 g_unexpected_error,
4948 g_sqlcode_token,
4949 SQLCODE,
4950 g_sqlerrm_token,
4951 SQLERRM
4952 );
4953 END create_k_service_lines;
4954
4955 PROCEDURE create_k_covered_levels (
4956 p_k_covd_rec IN k_line_covered_level_rec_type,
4957 p_price_attribs IN pricing_attributes_type,
4958 p_caller IN VARCHAR2,
4959 x_order_error OUT NOCOPY VARCHAR2,
4960 x_covlvl_id OUT NOCOPY NUMBER,
4961 x_update_line OUT NOCOPY VARCHAR2,
4962 x_return_status OUT NOCOPY VARCHAR2,
4963 x_msg_count OUT NOCOPY NUMBER,
4964 x_msg_data OUT NOCOPY VARCHAR2
4965 )
4966 IS
4967 l_api_version CONSTANT NUMBER := 1.0;
4968 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
4969 l_return_status VARCHAR2 (1) := 'S';
4970 l_index VARCHAR2 (2000);
4971 --Contract Line Table
4972 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
4973 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
4974 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
4975 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
4976 --Contract Item
4977 l_cimv_tbl okc_contract_item_pub.cimv_tbl_type;
4978 l_cimv_tbl_out okc_contract_item_pub.cimv_tbl_type;
4979 --Pricing Attributes
4980 l_pavv_tbl_in okc_price_adjustment_pvt.pavv_tbl_type;
4981 l_pavv_tbl_out okc_price_adjustment_pvt.pavv_tbl_type;
4982 --Rule Related
4983 --l_rgpv_tbl_in okc_rule_pub.rgpv_tbl_type;
4984 --l_rgpv_tbl_out okc_rule_pub.rgpv_tbl_type;
4985 --l_rulv_tbl_in okc_rule_pub.rulv_tbl_type;
4986 --l_rulv_tbl_out okc_rule_pub.rulv_tbl_type;
4987 --Return IDs
4988 l_line_id NUMBER;
4989 l_rule_group_id NUMBER;
4990 l_rule_id NUMBER;
4991 l_line_item_id NUMBER;
4992 l_lsl_id NUMBER;
4993 l_hdrsdt DATE;
4994 l_hdredt DATE;
4995 l_line_sdt DATE;
4996 l_line_edt DATE;
4997 l_hdrstatus VARCHAR2 (3);
4998 l_line_status VARCHAR2 (3);
4999 l_priceattrib_id NUMBER;
5000 l_invoice_text VARCHAR2 (2000);
5001 --Obj Rel
5002 l_crjv_tbl_out okc_k_rel_objs_pub.crjv_tbl_type;
5003 l_msg_data VARCHAR2 (2000);
5004 l_ind NUMBER;
5005 l_ste_code VARCHAR2 (240);
5006 l_sts_code VARCHAR2 (240);
5007 g_rail_rec oks_tax_util_pvt.ra_rec_type;
5008
5009 CURSOR l_line_csr (p_line_id NUMBER)
5010 IS
5011 SELECT kl.start_date, kl.end_date, kl.inv_rule_id
5012 FROM okc_k_lines_b kl
5013 WHERE kl.ID = p_line_id;
5014
5015 l_duration NUMBER;
5016 l_timeunits VARCHAR2 (25);
5017 l_sll_tbl oks_bill_sch.streamlvl_tbl;
5018 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
5019 l_strmlvl_id NUMBER := NULL;
5020 l_update_top_line VARCHAR2 (1);
5021 l_start_date DATE;
5022 l_end_date DATE;
5023 l_invoice_rule_id VARCHAR2 (10);
5024 l_sts_flag VARCHAR2 (1);
5025 BEGIN
5026 x_return_status := okc_api.g_ret_sts_success;
5027 x_update_line := 'N';
5028 check_line_effectivity (p_cle_id => p_k_covd_rec.attach_2_line_id,
5029 p_srv_sdt => p_k_covd_rec.product_start_date,
5030 p_srv_edt => p_k_covd_rec.product_end_date,
5031 x_line_sdt => l_line_sdt,
5032 x_line_edt => l_line_edt,
5033 x_status => l_line_status
5034 );
5035
5036 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
5037 THEN
5038 fnd_log.STRING (fnd_log.level_statement,
5039 g_module_current || '.Create_K_Covered_Levels',
5040 'Check line effectivity status = ' || l_line_status
5041 );
5042 END IF;
5043
5044 IF l_line_status = 'E'
5045 THEN
5046 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
5047 THEN
5048 fnd_log.STRING
5049 (fnd_log.level_error,
5050 g_module_current || '.Create_K_Covered_Levels.ERROR',
5051 'Covered level Dates are not within Line effectivity'
5052 );
5053 END IF;
5054
5055 okc_api.set_message (g_app_name,
5056 g_unexpected_error,
5057 g_sqlcode_token,
5058 SQLCODE,
5059 g_sqlerrm_token,
5060 'Covlvl Dates not within Line effectivity'
5061 );
5062 l_return_status := okc_api.g_ret_sts_error;
5063 RAISE g_exception_halt_validation;
5064 ELSIF l_line_status = 'Y'
5065 THEN
5066 check_hdr_effectivity (p_chr_id => p_k_covd_rec.k_id,
5067 p_srv_sdt => l_line_sdt,
5068 p_srv_edt => l_line_edt,
5069 x_hdr_sdt => l_hdrsdt,
5070 x_hdr_edt => l_hdredt,
5071 x_status => l_hdrstatus
5072 );
5073
5074 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
5075 THEN
5076 fnd_log.STRING (fnd_log.level_statement,
5077 g_module_current || '.Create_K_Covered_Levels',
5078 'Check Header effectivity status = '
5079 || l_hdrstatus
5080 );
5081 END IF;
5082
5083 IF l_hdrstatus = 'E'
5084 THEN
5085 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
5086 THEN
5087 fnd_log.STRING (fnd_log.level_error,
5088 g_module_current || '.Create_K_Covered_Levels',
5089 'Line Dates are not within Header effectivity'
5090 );
5091 END IF;
5092
5093 okc_api.set_message (g_app_name,
5094 g_unexpected_error,
5095 g_sqlcode_token,
5096 SQLCODE,
5097 g_sqlerrm_token,
5098 'line Dates not within Hdr effectivity'
5099 );
5100 l_return_status := okc_api.g_ret_sts_error;
5101 RAISE g_exception_halt_validation;
5102 ELSIF l_hdrstatus = 'Y'
5103 THEN
5104 get_sts_code (NULL,
5105 p_k_covd_rec.product_sts_code,
5106 l_ste_code,
5107 l_sts_code
5108 );
5109
5110 IF l_ste_code = 'ENTERED'
5111 THEN
5112 l_sts_flag := 'N';
5113 ELSE
5114 l_sts_flag := 'Y';
5115 END IF;
5116
5117 update_hdr_dates (p_chr_id => p_k_covd_rec.k_id,
5118 p_new_sdt => l_hdrsdt,
5119 p_new_edt => l_hdredt,
5120 p_sts_flag => l_sts_flag,
5121 x_status => l_return_status,
5122 x_msg_count => x_msg_count,
5123 x_msg_data => x_msg_data
5124 );
5125
5126 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5127 THEN
5128 fnd_log.STRING
5129 (fnd_log.level_event,
5130 g_module_current
5131 || '.Create_K_Covered_Levels.afterupdatehdrdtaes',
5132 'update_hdr_dates(Return status = '
5133 || l_return_status
5134 || ')'
5135 );
5136 END IF;
5137
5138 IF NOT l_return_status = 'S'
5139 THEN
5140 l_return_status := okc_api.g_ret_sts_error;
5141 okc_api.set_message (g_app_name,
5142 g_required_value,
5143 g_col_name_token,
5144 'Header Effectivity Update (SUB LINE)'
5145 );
5146 RAISE g_exception_halt_validation;
5147 END IF;
5148 END IF;
5149
5150 IF p_k_covd_rec.product_sts_code = 'ENTERED'
5151 THEN
5152 l_sts_flag := 'N';
5153 ELSE
5154 l_sts_flag := 'Y';
5155 END IF;
5156
5157 update_line_dates (p_cle_id => p_k_covd_rec.attach_2_line_id,
5158 p_chr_id => p_k_covd_rec.k_id,
5159 p_new_sdt => l_line_sdt,
5160 p_new_edt => l_line_edt,
5161 p_sts_flag => l_sts_flag,
5162 p_warranty_flag => p_k_covd_rec.warranty_flag,
5163 x_status => l_return_status,
5164 x_msg_count => x_msg_count,
5165 x_msg_data => x_msg_data
5166 );
5167
5168 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5169 THEN
5170 fnd_log.STRING
5171 (fnd_log.level_event,
5172 g_module_current
5173 || '.Create_K_Covered_Levels.after_update.line_dtaes',
5174 'update_hdr_dates(Return status = '
5175 || l_return_status
5176 || ')'
5177 );
5178 END IF;
5179
5180 IF NOT l_return_status = 'S'
5181 THEN
5182 l_return_status := okc_api.g_ret_sts_error;
5183 okc_api.set_message (g_app_name,
5184 g_required_value,
5185 g_col_name_token,
5186 'LINE Effectivity Update (SUB LINE)'
5187 );
5188 RAISE g_exception_halt_validation;
5189 ELSE
5190 x_update_line := 'Y';
5191 END IF;
5192
5193 oks_pm_programs_pvt.adjust_pm_program_schedule
5194 (p_api_version => 1.0,
5195 p_init_msg_list => 'F',
5196 p_contract_line_id => p_k_covd_rec.attach_2_line_id,
5197 p_new_start_date => l_line_sdt,
5198 p_new_end_date => l_line_edt,
5199 x_return_status => l_return_status,
5200 x_msg_count => x_msg_count,
5201 x_msg_data => x_msg_data
5202 );
5203
5204 IF NOT l_return_status = 'S'
5205 THEN
5206 l_return_status := okc_api.g_ret_sts_error;
5207 okc_api.set_message (g_app_name,
5208 g_required_value,
5209 g_col_name_token,
5210 'Adjust PM Program Schedule(SUB LINE)'
5211 );
5212 RAISE g_exception_halt_validation;
5213 END IF;
5214
5215 IF p_k_covd_rec.standard_coverage = 'N'
5216 THEN
5217 oks_coverages_pub.update_cov_eff
5218 (p_api_version => 1.0,
5219 p_init_msg_list => 'F',
5220 x_return_status => l_return_status,
5221 x_msg_count => x_msg_count,
5222 x_msg_data => x_msg_data,
5223 p_service_line_id => p_k_covd_rec.attach_2_line_id,
5224 p_new_start_date => l_line_sdt,
5225 p_new_end_date => l_line_edt
5226 );
5227
5228 IF NOT l_return_status = 'S'
5229 THEN
5230 l_return_status := okc_api.g_ret_sts_error;
5231 okc_api.set_message (g_app_name,
5232 g_required_value,
5233 g_col_name_token,
5234 'Coverage Effectivity Update (SUB LINE)'
5235 );
5236 RAISE g_exception_halt_validation;
5237 END IF;
5238 END IF;
5239 END IF;
5240
5241 IF p_k_covd_rec.warranty_flag = 'W'
5242 THEN
5243 l_lsl_id := 18;
5244 ELSIF p_k_covd_rec.warranty_flag = 'E'
5245 THEN
5246 l_lsl_id := 25;
5247 ELSIF p_k_covd_rec.warranty_flag IN ('S', 'SU')
5248 THEN
5249 l_lsl_id := 9;
5250 END IF;
5251
5252 l_clev_tbl_in (1).chr_id := NULL;
5253 l_clev_tbl_in (1).sfwt_flag := 'N';
5254 l_clev_tbl_in (1).lse_id := l_lsl_id;
5255 --l_clev_tbl_in(1).line_number := p_k_covd_rec.line_number;
5256 l_clev_tbl_in (1).line_number :=
5257 get_sub_line_number (p_k_covd_rec.k_id,
5258 p_k_covd_rec.attach_2_line_id);
5259 l_clev_tbl_in (1).sts_code := p_k_covd_rec.product_sts_code;
5260 l_clev_tbl_in (1).display_sequence := 2;
5261 l_clev_tbl_in (1).dnz_chr_id := p_k_covd_rec.k_id;
5262 --l_clev_tbl_in(1).name := Substr(p_k_covd_rec.Product_segment1,1,50);
5263 l_clev_tbl_in (1).NAME := NULL;
5264 l_clev_tbl_in (1).item_description := p_k_covd_rec.product_desc;
5265 l_clev_tbl_in (1).start_date := p_k_covd_rec.product_start_date;
5266 l_clev_tbl_in (1).end_date := p_k_covd_rec.product_end_date;
5267 l_clev_tbl_in (1).exception_yn := 'N';
5268 l_clev_tbl_in (1).price_negotiated := Nvl(p_k_covd_rec.negotiated_amount,0);
5269 l_clev_tbl_in (1).currency_code := p_k_covd_rec.currency_code;
5270 l_clev_tbl_in (1).price_unit := Nvl(p_k_covd_rec.list_price,0);
5271 l_clev_tbl_in (1).cle_id := p_k_covd_rec.attach_2_line_id;
5272 l_clev_tbl_in (1).price_level_ind := priced_yn (l_lsl_id);
5273 l_clev_tbl_in (1).trn_code := p_k_covd_rec.reason_code;
5274 l_clev_tbl_in (1).comments := p_k_covd_rec.reason_comments;
5275 --l_clev_tbl_in(1).translated_text := p_k_covd_rec.translated_text;
5276 l_clev_tbl_in (1).upg_orig_system_ref :=
5277 p_k_covd_rec.upg_orig_system_ref;
5278 -- 04-jun-2002 Vigandhi
5279 l_clev_tbl_in (1).upg_orig_system_ref_id :=
5280 p_k_covd_rec.upg_orig_system_ref_id;
5281 -- 04-jun-2002 Vigandhi
5282 l_clev_tbl_in (1).attribute1 := p_k_covd_rec.attribute1;
5283 l_clev_tbl_in (1).attribute2 := p_k_covd_rec.attribute2;
5284 l_clev_tbl_in (1).attribute3 := p_k_covd_rec.attribute3;
5285 l_clev_tbl_in (1).attribute4 := p_k_covd_rec.attribute4;
5286 l_clev_tbl_in (1).attribute5 := p_k_covd_rec.attribute5;
5287 l_clev_tbl_in (1).attribute6 := p_k_covd_rec.attribute6;
5288 l_clev_tbl_in (1).attribute7 := p_k_covd_rec.attribute7;
5289 l_clev_tbl_in (1).attribute8 := p_k_covd_rec.attribute8;
5290 l_clev_tbl_in (1).attribute9 := p_k_covd_rec.attribute9;
5291 l_clev_tbl_in (1).attribute10 := p_k_covd_rec.attribute10;
5292 l_clev_tbl_in (1).attribute11 := p_k_covd_rec.attribute11;
5293 l_clev_tbl_in (1).attribute12 := p_k_covd_rec.attribute12;
5294 l_clev_tbl_in (1).attribute13 := p_k_covd_rec.attribute13;
5295 l_clev_tbl_in (1).attribute14 := p_k_covd_rec.attribute14;
5296 l_clev_tbl_in (1).attribute15 := p_k_covd_rec.attribute15;
5297 -- rules inserted by okc
5298 l_clev_tbl_in (1).line_renewal_type_code :=
5299 NVL (p_k_covd_rec.line_renewal_type, 'FUL');
5300 --LRT
5301 okc_contract_pub.create_contract_line
5302 (p_api_version => l_api_version,
5303 p_init_msg_list => l_init_msg_list,
5304 p_restricted_update => okc_api.g_true,
5305 x_return_status => l_return_status,
5306 x_msg_count => x_msg_count,
5307 x_msg_data => x_msg_data,
5308 p_clev_tbl => l_clev_tbl_in,
5309 x_clev_tbl => l_clev_tbl_out
5310 );
5311
5312 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5313 THEN
5314 fnd_log.STRING
5315 (fnd_log.level_event,
5316 g_module_current
5317 || '.Create_K_Covered_Levels.after_create.top_line',
5318 'okc_contract_pub.create_contract_line(Return status = '
5319 || l_return_status
5320 || ')'
5321 );
5322 END IF;
5323
5324 IF l_return_status = 'S'
5325 THEN
5326 l_line_id := l_clev_tbl_out (1).ID;
5327 ELSE
5328 --mmadhavi
5329 IF (p_caller = 'OC')
5330 THEN
5331 x_order_error := '#';
5332
5333 FOR i IN 1 .. fnd_msg_pub.count_msg
5334 LOOP
5335 fnd_msg_pub.get (p_msg_index => i,
5336 p_encoded => 'T',
5337 p_data => l_msg_data,
5338 p_msg_index_out => l_ind
5339 );
5340 x_order_error := x_order_error || l_msg_data || '#';
5341
5342 IF (g_fnd_log_option = 'Y')
5343 THEN
5344 fnd_message.set_encoded (l_msg_data);
5345 l_msg_data := fnd_message.get;
5346 fnd_file.put_line
5347 (fnd_file.LOG,
5348 '(OKC_CONTRACT_PUB).CREATE_CONTRACT_LINE '
5349 || l_msg_data
5350 );
5351 END IF;
5352 END LOOP;
5353
5354 RAISE g_exception_halt_validation;
5355 ELSE
5356 --mmadhavi
5357 okc_api.set_message (g_app_name,
5358 g_required_value,
5359 g_col_name_token,
5360 'K LINE (SUB LINE)'
5361 );
5362 RAISE g_exception_halt_validation;
5363 END IF;
5364 END IF;
5365
5366 x_covlvl_id := l_line_id;
5367 -- cov rules inserted by oks
5368 l_klnv_tbl_in (1).tax_amount := nvl(p_k_covd_rec.tax_amount,0);
5369
5370 -- Added tax calculation for the new contract created after transfer
5371 -- 30-jan-2004 Vigandhi
5372 IF p_caller = 'ST' AND p_k_covd_rec.warranty_flag <> 'W'
5373 THEN
5374 oks_tax_util_pvt.get_tax (p_api_version => 1.0,
5375 p_init_msg_list => okc_api.g_true,
5376 p_chr_id => p_k_covd_rec.k_id,
5377 p_cle_id => l_line_id,
5378 px_rail_rec => g_rail_rec,
5379 x_msg_count => x_msg_count,
5380 x_msg_data => x_msg_data,
5381 x_return_status => l_return_status
5382 );
5383
5384 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5385 THEN
5386 fnd_log.STRING (fnd_log.level_event,
5387 g_module_current
5388 || '.Create_K_Covered_Levels.after_tax',
5389 'oks_tax_util_pvt.get_tax(Return status = '
5390 || l_return_status
5391 || ')'
5392 );
5393 END IF;
5394
5395 -- Fixed Bug 5035571
5396 /*
5397 IF (l_return_status <> okc_api.g_ret_sts_success)
5398 THEN
5399 RAISE g_exception_halt_validation;
5400 END IF;
5401 */
5402
5403 l_klnv_tbl_in (1).tax_inclusive_yn := g_rail_rec.amount_includes_tax_flag;
5404
5405 IF g_rail_rec.amount_includes_tax_flag = 'Y'
5406 THEN
5407 l_klnv_tbl_in (1).tax_amount := 0;
5408 ELSE
5409 l_klnv_tbl_in (1).tax_amount := g_rail_rec.tax_value;
5410 END IF;
5411 END IF;
5412
5413 l_invoice_text :=
5414 getformattedinvoicetext (p_k_covd_rec.prod_item_id,
5415 p_k_covd_rec.product_start_date,
5416 p_k_covd_rec.product_end_date,
5417 p_k_covd_rec.attach_2_line_desc,
5418 p_k_covd_rec.quantity
5419 );
5420 l_klnv_tbl_in (1).cle_id := l_line_id; --p_k_covd_rec.attach_2_line_id;
5421 l_klnv_tbl_in (1).dnz_chr_id := p_k_covd_rec.k_id;
5422 l_klnv_tbl_in (1).invoice_text := l_invoice_text; --IRT
5423 l_klnv_tbl_in (1).created_by := okc_api.g_miss_num;
5424 l_klnv_tbl_in (1).creation_date := okc_api.g_miss_date;
5425 l_klnv_tbl_in (1).status_text := 'Subline created from OM/IB';
5426 l_klnv_tbl_in (1).price_uom := p_k_covd_rec.price_uom;
5427 l_klnv_tbl_in (1).toplvl_uom_code := p_k_covd_rec.toplvl_uom_code;
5428 l_klnv_tbl_in (1).inv_print_flag := 'Y'; --Bug# 5655521
5429
5430 --mchoudha added for bug#5233956
5431 l_klnv_tbl_in (1).toplvl_price_qty := p_k_covd_rec.toplvl_price_qty;
5432 oks_contract_line_pub.create_line (p_api_version => l_api_version,
5433 p_init_msg_list => l_init_msg_list,
5434 x_return_status => l_return_status,
5435 x_msg_count => x_msg_count,
5436 x_msg_data => x_msg_data,
5437 p_klnv_tbl => l_klnv_tbl_in,
5438 x_klnv_tbl => l_klnv_tbl_out,
5439 p_validate_yn => 'N'
5440 );
5441
5442 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5443 THEN
5444 fnd_log.STRING
5445 (fnd_log.level_event,
5446 g_module_current
5447 || '.Create_K_Covered_Levels.after_create.covered_line',
5448 'oks_contract_line_pub.create_line(Return status = '
5449 || l_return_status
5450 || ')'
5451 );
5452 END IF;
5453
5454 IF NOT l_return_status = 'S'
5455 THEN
5456 --mmadhavi
5457 IF (p_caller = 'OC')
5458 THEN
5459 x_order_error := '#';
5460
5461 FOR i IN 1 .. fnd_msg_pub.count_msg
5462 LOOP
5463 fnd_msg_pub.get (p_msg_index => i,
5464 p_encoded => 'T',
5465 p_data => l_msg_data,
5466 p_msg_index_out => l_ind
5467 );
5468 x_order_error := x_order_error || l_msg_data || '#';
5469
5470 IF (g_fnd_log_option = 'Y')
5471 THEN
5472 fnd_message.set_encoded (l_msg_data);
5473 l_msg_data := fnd_message.get;
5474 fnd_file.put_line
5475 (fnd_file.LOG,
5476 '(OKS_CONTRACT_LINE_PUB).CREATE_LINE '
5477 || l_msg_data
5478 );
5479 END IF;
5480 END LOOP;
5481
5482 RAISE g_exception_halt_validation;
5483 ELSE
5484 --mmadhavi
5485 okc_api.set_message (g_app_name,
5486 g_required_value,
5487 g_col_name_token,
5488 'OKS Contract COV LINE'
5489 );
5490 RAISE g_exception_halt_validation;
5491 END IF;
5492 END IF;
5493
5494 --Create Contract Item
5495 l_cimv_tbl (1).ID := okc_p_util.raw_to_number (SYS_GUID ());
5496 l_cimv_tbl (1).cle_id := l_line_id;
5497 l_cimv_tbl (1).chr_id := NULL;
5498 l_cimv_tbl (1).cle_id_for := NULL;
5499 l_cimv_tbl (1).dnz_chr_id := p_k_covd_rec.k_id;
5500 l_cimv_tbl (1).object1_id1 := p_k_covd_rec.customer_product_id;
5501 l_cimv_tbl (1).object1_id2 := '#';
5502 l_cimv_tbl (1).jtot_object1_code := 'OKX_CUSTPROD';
5503 l_cimv_tbl (1).uom_code := p_k_covd_rec.uom_code;
5504 l_cimv_tbl (1).exception_yn := 'N';
5505 l_cimv_tbl (1).number_of_items := p_k_covd_rec.quantity;
5506 l_cimv_tbl (1).priced_item_yn := '';
5507 l_cimv_tbl (1).upg_orig_system_ref := '';
5508 l_cimv_tbl (1).upg_orig_system_ref_id := NULL;
5509 l_cimv_tbl (1).object_version_number := 1;
5510 l_cimv_tbl (1).created_by := fnd_global.user_id;
5511 l_cimv_tbl (1).creation_date := SYSDATE;
5512 l_cimv_tbl (1).last_updated_by := fnd_global.user_id;
5513 l_cimv_tbl (1).last_update_date := SYSDATE;
5514 l_cimv_tbl (1).last_update_login := NULL;
5515 l_cimv_tbl (1).request_id := NULL;
5516 l_cimv_tbl (1).program_id := NULL;
5517 l_cimv_tbl (1).program_application_id := NULL;
5518 l_cimv_tbl (1).program_update_date := NULL;
5519 okc_cim_pvt.insert_row_upg (x_return_status => l_return_status,
5520 p_cimv_tbl => l_cimv_tbl
5521 );
5522
5523 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5524 THEN
5525 fnd_log.STRING
5526 (fnd_log.level_event,
5527 g_module_current
5528 || '.Create_K_Covered_Levels.after_create.contract_item',
5529 'okc_cim_pvt.insert_row_upg(Return status = '
5530 || l_return_status
5531 || ')'
5532 );
5533 END IF;
5534
5535 IF l_return_status = 'S'
5536 THEN
5537 l_line_item_id := l_cimv_tbl (1).ID;
5538 ELSE
5539 okc_api.set_message (g_app_name,
5540 g_required_value,
5541 g_col_name_token,
5542 'KItem (SUB LINE)'
5543 );
5544 RAISE g_exception_halt_validation;
5545 END IF;
5546
5547 --Create Obj Rel
5548 IF p_k_covd_rec.warranty_flag IN ('E', 'S', 'SU')
5549 THEN
5550 create_obj_rel (p_k_id => p_k_covd_rec.k_id,
5551 p_line_id => l_line_id,
5552 p_orderhdrid => NULL,
5553 p_rty_code => p_k_covd_rec.rty_code,
5554 p_orderlineid => p_k_covd_rec.order_line_id,
5555 x_return_status => l_return_status,
5556 x_msg_count => x_msg_count,
5557 x_msg_data => x_msg_data,
5558 x_crjv_tbl_out => l_crjv_tbl_out
5559 );
5560
5561 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5562 THEN
5563 fnd_log.STRING
5564 (fnd_log.level_event,
5565 g_module_current
5566 || '.Create_K_Covered_Levels.create.object_relation',
5567 'create_obj_rel(Return status = '
5568 || l_return_status
5569 || ')'
5570 );
5571 END IF;
5572
5573 IF NOT l_return_status = okc_api.g_ret_sts_success
5574 THEN
5575 okc_api.set_message (g_app_name,
5576 g_required_value,
5577 g_col_name_token,
5578 'Order Line Id (SUB LINE)'
5579 );
5580 RAISE g_exception_halt_validation;
5581 END IF;
5582 END IF;
5583
5584 --Create Pricing Attributes
5585 IF p_price_attribs.pricing_context IS NOT NULL
5586 THEN
5587 l_pavv_tbl_in (1).cle_id := l_line_id;
5588 l_pavv_tbl_in (1).flex_title := 'QP_ATTR_DEFNS_PRICING';
5589 l_pavv_tbl_in (1).pricing_context := p_price_attribs.pricing_context;
5590 l_pavv_tbl_in (1).pricing_attribute1 :=
5591 p_price_attribs.pricing_attribute1;
5592 l_pavv_tbl_in (1).pricing_attribute2 :=
5593 p_price_attribs.pricing_attribute2;
5594 l_pavv_tbl_in (1).pricing_attribute3 :=
5595 p_price_attribs.pricing_attribute3;
5596 l_pavv_tbl_in (1).pricing_attribute4 :=
5597 p_price_attribs.pricing_attribute4;
5598 l_pavv_tbl_in (1).pricing_attribute5 :=
5599 p_price_attribs.pricing_attribute5;
5600 l_pavv_tbl_in (1).pricing_attribute6 :=
5601 p_price_attribs.pricing_attribute6;
5602 l_pavv_tbl_in (1).pricing_attribute7 :=
5603 p_price_attribs.pricing_attribute7;
5604 l_pavv_tbl_in (1).pricing_attribute8 :=
5605 p_price_attribs.pricing_attribute8;
5606 l_pavv_tbl_in (1).pricing_attribute9 :=
5607 p_price_attribs.pricing_attribute9;
5608 l_pavv_tbl_in (1).pricing_attribute10 :=
5609 p_price_attribs.pricing_attribute10;
5610 l_pavv_tbl_in (1).pricing_attribute11 :=
5611 p_price_attribs.pricing_attribute11;
5612 l_pavv_tbl_in (1).pricing_attribute12 :=
5613 p_price_attribs.pricing_attribute12;
5614 l_pavv_tbl_in (1).pricing_attribute13 :=
5615 p_price_attribs.pricing_attribute13;
5616 l_pavv_tbl_in (1).pricing_attribute14 :=
5617 p_price_attribs.pricing_attribute14;
5618 l_pavv_tbl_in (1).pricing_attribute15 :=
5619 p_price_attribs.pricing_attribute15;
5620 l_pavv_tbl_in (1).pricing_attribute16 :=
5621 p_price_attribs.pricing_attribute16;
5622 l_pavv_tbl_in (1).pricing_attribute17 :=
5623 p_price_attribs.pricing_attribute17;
5624 l_pavv_tbl_in (1).pricing_attribute18 :=
5625 p_price_attribs.pricing_attribute18;
5626 l_pavv_tbl_in (1).pricing_attribute19 :=
5627 p_price_attribs.pricing_attribute19;
5628 l_pavv_tbl_in (1).pricing_attribute20 :=
5629 p_price_attribs.pricing_attribute20;
5630 l_pavv_tbl_in (1).pricing_attribute21 :=
5631 p_price_attribs.pricing_attribute21;
5632 l_pavv_tbl_in (1).pricing_attribute22 :=
5633 p_price_attribs.pricing_attribute22;
5634 l_pavv_tbl_in (1).pricing_attribute23 :=
5635 p_price_attribs.pricing_attribute23;
5636 l_pavv_tbl_in (1).pricing_attribute24 :=
5637 p_price_attribs.pricing_attribute24;
5638 l_pavv_tbl_in (1).pricing_attribute25 :=
5639 p_price_attribs.pricing_attribute25;
5640 l_pavv_tbl_in (1).pricing_attribute26 :=
5641 p_price_attribs.pricing_attribute26;
5642 l_pavv_tbl_in (1).pricing_attribute27 :=
5643 p_price_attribs.pricing_attribute27;
5644 l_pavv_tbl_in (1).pricing_attribute28 :=
5645 p_price_attribs.pricing_attribute28;
5646 l_pavv_tbl_in (1).pricing_attribute29 :=
5647 p_price_attribs.pricing_attribute29;
5648 l_pavv_tbl_in (1).pricing_attribute30 :=
5649 p_price_attribs.pricing_attribute30;
5650 l_pavv_tbl_in (1).pricing_attribute31 :=
5651 p_price_attribs.pricing_attribute31;
5652 l_pavv_tbl_in (1).pricing_attribute32 :=
5653 p_price_attribs.pricing_attribute32;
5654 l_pavv_tbl_in (1).pricing_attribute33 :=
5655 p_price_attribs.pricing_attribute33;
5656 l_pavv_tbl_in (1).pricing_attribute34 :=
5657 p_price_attribs.pricing_attribute34;
5658 l_pavv_tbl_in (1).pricing_attribute35 :=
5659 p_price_attribs.pricing_attribute35;
5660 l_pavv_tbl_in (1).pricing_attribute36 :=
5661 p_price_attribs.pricing_attribute36;
5662 l_pavv_tbl_in (1).pricing_attribute37 :=
5663 p_price_attribs.pricing_attribute37;
5664 l_pavv_tbl_in (1).pricing_attribute38 :=
5665 p_price_attribs.pricing_attribute38;
5666 l_pavv_tbl_in (1).pricing_attribute39 :=
5667 p_price_attribs.pricing_attribute39;
5668 l_pavv_tbl_in (1).pricing_attribute40 :=
5669 p_price_attribs.pricing_attribute40;
5670 l_pavv_tbl_in (1).pricing_attribute41 :=
5671 p_price_attribs.pricing_attribute41;
5672 l_pavv_tbl_in (1).pricing_attribute42 :=
5673 p_price_attribs.pricing_attribute42;
5674 l_pavv_tbl_in (1).pricing_attribute43 :=
5675 p_price_attribs.pricing_attribute43;
5676 l_pavv_tbl_in (1).pricing_attribute44 :=
5677 p_price_attribs.pricing_attribute44;
5678 l_pavv_tbl_in (1).pricing_attribute45 :=
5679 p_price_attribs.pricing_attribute45;
5680 l_pavv_tbl_in (1).pricing_attribute46 :=
5681 p_price_attribs.pricing_attribute46;
5682 l_pavv_tbl_in (1).pricing_attribute47 :=
5683 p_price_attribs.pricing_attribute47;
5684 l_pavv_tbl_in (1).pricing_attribute48 :=
5685 p_price_attribs.pricing_attribute48;
5686 l_pavv_tbl_in (1).pricing_attribute49 :=
5687 p_price_attribs.pricing_attribute49;
5688 l_pavv_tbl_in (1).pricing_attribute50 :=
5689 p_price_attribs.pricing_attribute50;
5690 l_pavv_tbl_in (1).pricing_attribute51 :=
5691 p_price_attribs.pricing_attribute51;
5692 l_pavv_tbl_in (1).pricing_attribute52 :=
5693 p_price_attribs.pricing_attribute52;
5694 l_pavv_tbl_in (1).pricing_attribute53 :=
5695 p_price_attribs.pricing_attribute53;
5696 l_pavv_tbl_in (1).pricing_attribute54 :=
5697 p_price_attribs.pricing_attribute54;
5698 l_pavv_tbl_in (1).pricing_attribute55 :=
5699 p_price_attribs.pricing_attribute55;
5700 l_pavv_tbl_in (1).pricing_attribute56 :=
5701 p_price_attribs.pricing_attribute56;
5702 l_pavv_tbl_in (1).pricing_attribute57 :=
5703 p_price_attribs.pricing_attribute57;
5704 l_pavv_tbl_in (1).pricing_attribute58 :=
5705 p_price_attribs.pricing_attribute58;
5706 l_pavv_tbl_in (1).pricing_attribute59 :=
5707 p_price_attribs.pricing_attribute59;
5708 l_pavv_tbl_in (1).pricing_attribute60 :=
5709 p_price_attribs.pricing_attribute60;
5710 l_pavv_tbl_in (1).pricing_attribute61 :=
5711 p_price_attribs.pricing_attribute61;
5712 l_pavv_tbl_in (1).pricing_attribute62 :=
5713 p_price_attribs.pricing_attribute62;
5714 l_pavv_tbl_in (1).pricing_attribute63 :=
5715 p_price_attribs.pricing_attribute63;
5716 l_pavv_tbl_in (1).pricing_attribute64 :=
5717 p_price_attribs.pricing_attribute64;
5718 l_pavv_tbl_in (1).pricing_attribute65 :=
5719 p_price_attribs.pricing_attribute65;
5720 l_pavv_tbl_in (1).pricing_attribute66 :=
5721 p_price_attribs.pricing_attribute66;
5722 l_pavv_tbl_in (1).pricing_attribute67 :=
5723 p_price_attribs.pricing_attribute67;
5724 l_pavv_tbl_in (1).pricing_attribute68 :=
5725 p_price_attribs.pricing_attribute68;
5726 l_pavv_tbl_in (1).pricing_attribute69 :=
5727 p_price_attribs.pricing_attribute69;
5728 l_pavv_tbl_in (1).pricing_attribute70 :=
5729 p_price_attribs.pricing_attribute70;
5730 l_pavv_tbl_in (1).pricing_attribute71 :=
5731 p_price_attribs.pricing_attribute71;
5732 l_pavv_tbl_in (1).pricing_attribute72 :=
5733 p_price_attribs.pricing_attribute72;
5734 l_pavv_tbl_in (1).pricing_attribute73 :=
5735 p_price_attribs.pricing_attribute73;
5736 l_pavv_tbl_in (1).pricing_attribute74 :=
5737 p_price_attribs.pricing_attribute74;
5738 l_pavv_tbl_in (1).pricing_attribute75 :=
5739 p_price_attribs.pricing_attribute75;
5740 l_pavv_tbl_in (1).pricing_attribute76 :=
5741 p_price_attribs.pricing_attribute76;
5742 l_pavv_tbl_in (1).pricing_attribute77 :=
5743 p_price_attribs.pricing_attribute77;
5744 l_pavv_tbl_in (1).pricing_attribute78 :=
5745 p_price_attribs.pricing_attribute78;
5746 l_pavv_tbl_in (1).pricing_attribute79 :=
5747 p_price_attribs.pricing_attribute79;
5748 l_pavv_tbl_in (1).pricing_attribute80 :=
5749 p_price_attribs.pricing_attribute80;
5750 l_pavv_tbl_in (1).pricing_attribute81 :=
5751 p_price_attribs.pricing_attribute81;
5752 l_pavv_tbl_in (1).pricing_attribute82 :=
5753 p_price_attribs.pricing_attribute82;
5754 l_pavv_tbl_in (1).pricing_attribute83 :=
5755 p_price_attribs.pricing_attribute83;
5756 l_pavv_tbl_in (1).pricing_attribute84 :=
5757 p_price_attribs.pricing_attribute84;
5758 l_pavv_tbl_in (1).pricing_attribute85 :=
5759 p_price_attribs.pricing_attribute85;
5760 l_pavv_tbl_in (1).pricing_attribute86 :=
5761 p_price_attribs.pricing_attribute86;
5762 l_pavv_tbl_in (1).pricing_attribute87 :=
5763 p_price_attribs.pricing_attribute87;
5764 l_pavv_tbl_in (1).pricing_attribute88 :=
5765 p_price_attribs.pricing_attribute88;
5766 l_pavv_tbl_in (1).pricing_attribute89 :=
5767 p_price_attribs.pricing_attribute89;
5768 l_pavv_tbl_in (1).pricing_attribute90 :=
5769 p_price_attribs.pricing_attribute90;
5770 l_pavv_tbl_in (1).pricing_attribute91 :=
5771 p_price_attribs.pricing_attribute91;
5772 l_pavv_tbl_in (1).pricing_attribute92 :=
5773 p_price_attribs.pricing_attribute92;
5774 l_pavv_tbl_in (1).pricing_attribute93 :=
5775 p_price_attribs.pricing_attribute93;
5776 l_pavv_tbl_in (1).pricing_attribute94 :=
5777 p_price_attribs.pricing_attribute94;
5778 l_pavv_tbl_in (1).pricing_attribute95 :=
5779 p_price_attribs.pricing_attribute95;
5780 l_pavv_tbl_in (1).pricing_attribute96 :=
5781 p_price_attribs.pricing_attribute96;
5782 l_pavv_tbl_in (1).pricing_attribute97 :=
5783 p_price_attribs.pricing_attribute97;
5784 l_pavv_tbl_in (1).pricing_attribute98 :=
5785 p_price_attribs.pricing_attribute98;
5786 l_pavv_tbl_in (1).pricing_attribute99 :=
5787 p_price_attribs.pricing_attribute99;
5788 l_pavv_tbl_in (1).pricing_attribute100 :=
5789 p_price_attribs.pricing_attribute100;
5790 okc_price_adjustment_pvt.create_price_att_value
5791 (p_api_version => l_api_version,
5792 p_init_msg_list => l_init_msg_list,
5793 x_return_status => l_return_status,
5794 x_msg_count => x_msg_count,
5795 x_msg_data => x_msg_data,
5796 p_pavv_tbl => l_pavv_tbl_in,
5797 x_pavv_tbl => l_pavv_tbl_out
5798 );
5799
5800 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5801 THEN
5802 fnd_log.STRING
5803 (fnd_log.level_event,
5804 g_module_current
5805 || '.Create_K_Covered_Levels.after_create.price_att',
5806 'okc_price_adjustment_pvt.create_price_att_value(Return status = '
5807 || l_return_status
5808 || ')'
5809 );
5810 END IF;
5811
5812 IF l_return_status = 'S'
5813 THEN
5814 l_priceattrib_id := l_pavv_tbl_out (1).ID;
5815 ELSE
5816 okc_api.set_message (g_app_name,
5817 g_required_value,
5818 g_col_name_token,
5819 'PRICE ATTRIBUTES (SUB LINE)'
5820 );
5821 RAISE g_exception_halt_validation;
5822 END IF;
5823 END IF;
5824 EXCEPTION
5825 WHEN g_exception_halt_validation
5826 THEN
5827 x_return_status := l_return_status;
5828 NULL;
5829 WHEN OTHERS
5830 THEN
5831 x_return_status := okc_api.g_ret_sts_unexp_error;
5832 okc_api.set_message (g_app_name,
5833 g_unexpected_error,
5834 g_sqlcode_token,
5835 SQLCODE,
5836 g_sqlerrm_token,
5837 SQLERRM
5838 );
5839 END create_k_covered_levels;
5840
5841 PROCEDURE create_contract_ibnew (
5842 p_extwar_rec IN extwar_rec_type,
5843 p_contact_tbl_in IN oks_extwarprgm_pvt.contact_tbl,
5844 p_salescredit_tbl_hdr_in IN oks_extwarprgm_pvt.salescredit_tbl,
5845 --mmadhavi bug 4174921
5846 p_salescredit_tbl_line_in IN oks_extwarprgm_pvt.salescredit_tbl,
5847 p_price_attribs_in IN oks_extwarprgm_pvt.pricing_attributes_type,
5848 x_inst_dtls_tbl IN OUT NOCOPY oks_ihd_pvt.ihdv_tbl_type,
5849 x_chrid OUT NOCOPY NUMBER,
5850 x_return_status OUT NOCOPY VARCHAR2,
5851 x_msg_count OUT NOCOPY NUMBER,
5852 x_msg_data OUT NOCOPY VARCHAR2
5853 )
5854 IS
5855 CURSOR l_party_csr
5856 IS
5857 SELECT NAME
5858 FROM okx_parties_v
5859 WHERE id1 = p_extwar_rec.hdr_party_id;
5860
5861 CURSOR l_lndates_csr (p_id NUMBER)
5862 IS
5863 SELECT start_date, end_date
5864 FROM okc_k_lines_b
5865 WHERE ID = p_id;
5866
5867 CURSOR l_hdrdates_csr (p_id NUMBER)
5868 IS
5869 SELECT start_date, end_date, sts_code
5870 FROM okc_k_headers_b
5871 WHERE ID = p_id;
5872
5873 l_hdr_rec k_header_rec_type;
5874 l_line_rec k_line_service_rec_type;
5875 l_covd_rec k_line_covered_level_rec_type;
5876 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
5877 l_chrid NUMBER := NULL;
5878 l_lineid NUMBER := NULL;
5879 l_covlvl_id NUMBER := NULL;
5880 l_party_name okx_parties_v.NAME%TYPE;
5881 l_lndates_rec l_lndates_csr%ROWTYPE;
5882 l_hdrdates_rec l_hdrdates_csr%ROWTYPE;
5883 --l_ctr NUMBER := 0;
5884
5885 --Contact
5886 l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
5887 --SalesCredit
5888 l_salescredit_tbl oks_extwarprgm_pvt.salescredit_tbl;
5889 l_api_version CONSTANT NUMBER := 1.0;
5890 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
5891 l_index VARCHAR2 (2000);
5892 l_rule_group_id NUMBER;
5893 l_rule_id NUMBER;
5894 l_sts_code VARCHAR2 (30);
5895 l_ste_code VARCHAR2 (30);
5896 l_duration NUMBER;
5897 l_timeunits VARCHAR2 (25);
5898 l_sll_tbl oks_bill_sch.streamlvl_tbl;
5899 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
5900 l_strmlvl_id NUMBER := NULL;
5901 l_update_line VARCHAR2 (1);
5902 l_temp VARCHAR2 (2000);
5903 BEGIN
5904 x_return_status := okc_api.g_ret_sts_success;
5905
5906 OPEN l_party_csr;
5907
5908 FETCH l_party_csr
5909 INTO l_party_name;
5910
5911 CLOSE l_party_csr;
5912
5913 IF p_extwar_rec.hdr_scs_code IN ('SERVICE', 'SUBSCRIPTION')
5914 THEN
5915 l_hdr_rec.short_description :=
5916 'CUSTOMER : ' || l_party_name || ' Contract';
5917 ELSE
5918 l_hdr_rec.short_description :=
5919 'CUSTOMER : '
5920 || l_party_name
5921 || ' Warranty/Extended Warranty Contract';
5922 END IF;
5923
5924 l_hdr_rec.contract_number := okc_api.g_miss_char;
5925 l_hdr_rec.rty_code := p_extwar_rec.rty_code;
5926 l_hdr_rec.start_date := p_extwar_rec.hdr_sdt;
5927 l_hdr_rec.end_date := p_extwar_rec.hdr_edt;
5928 --l_hdr_rec.sts_code := 'ACTIVE';
5929 l_hdr_rec.class_code := 'SVC';
5930 l_hdr_rec.authoring_org_id := p_extwar_rec.hdr_org_id;
5931 l_hdr_rec.party_id := p_extwar_rec.hdr_party_id;
5932 l_hdr_rec.third_party_role := p_extwar_rec.hdr_third_party_role;
5933 l_hdr_rec.bill_to_id := p_extwar_rec.hdr_bill_2_id;
5934 l_hdr_rec.ship_to_id := p_extwar_rec.hdr_ship_2_id;
5935 l_hdr_rec.chr_group := p_extwar_rec.hdr_chr_group;
5936 --l_hdr_rec.short_description := 'CUSTOMER : ' || l_party_name || ' Warranty/Extended Warranty Contract';
5937 l_hdr_rec.price_list_id := p_extwar_rec.hdr_price_list_id;
5938 l_hdr_rec.cust_po_number := p_extwar_rec.hdr_cust_po_number;
5939 l_hdr_rec.agreement_id := p_extwar_rec.hdr_agreement_id;
5940 l_hdr_rec.currency := p_extwar_rec.hdr_currency;
5941 l_hdr_rec.accounting_rule_id := p_extwar_rec.hdr_acct_rule_id;
5942 l_hdr_rec.invoice_rule_id := p_extwar_rec.hdr_inv_rule_id;
5943 l_hdr_rec.order_hdr_id := p_extwar_rec.hdr_order_hdr_id;
5944 l_hdr_rec.payment_term_id := p_extwar_rec.hdr_payment_term_id;
5945 l_hdr_rec.renewal_type := p_extwar_rec.hdr_renewal_type;
5946 l_hdr_rec.renewal_markup := p_extwar_rec.hdr_renewal_markup;
5947 l_hdr_rec.renewal_pricing_type := p_extwar_rec.hdr_renewal_pricing_type;
5948 l_hdr_rec.renewal_price_list_id :=
5949 p_extwar_rec.hdr_renewal_price_list_id;
5950 l_hdr_rec.renewal_po := p_extwar_rec.hdr_renewal_po;
5951 l_hdr_rec.cvn_type := p_extwar_rec.hdr_cvn_type;
5952 l_hdr_rec.cvn_rate := p_extwar_rec.hdr_cvn_rate;
5953 l_hdr_rec.cvn_date := p_extwar_rec.hdr_cvn_date;
5954 l_hdr_rec.cvn_euro_rate := p_extwar_rec.hdr_cvn_euro_rate;
5955 l_hdr_rec.tax_status_flag := p_extwar_rec.hdr_tax_status_flag;
5956 l_hdr_rec.tax_exemption_id := p_extwar_rec.hdr_tax_exemption_id;
5957 l_hdr_rec.contact_id := p_extwar_rec.hdr_contact_id;
5958 l_hdr_rec.scs_code := p_extwar_rec.hdr_scs_code;
5959 l_hdr_rec.merge_type := p_extwar_rec.merge_type;
5960 l_hdr_rec.merge_object_id := p_extwar_rec.merge_object_id;
5961 l_hdr_rec.qto_contact_id := p_extwar_rec.qto_contact_id;
5962 l_hdr_rec.qto_email_id := p_extwar_rec.qto_email_id;
5963 l_hdr_rec.qto_phone_id := p_extwar_rec.qto_phone_id;
5964 l_hdr_rec.qto_fax_id := p_extwar_rec.qto_fax_id;
5965 l_hdr_rec.qto_site_id := p_extwar_rec.qto_site_id;
5966 l_hdr_rec.order_line_id := p_extwar_rec.srv_order_line_id;
5967 l_hdr_rec.billing_profile_id := p_extwar_rec.billing_profile_id;
5968 l_hdr_rec.qcl_id := p_extwar_rec.hdr_qcl_id;
5969 l_hdr_rec.grace_period := p_extwar_rec.grace_period;
5970 l_hdr_rec.grace_duration := p_extwar_rec.grace_duration;
5971 l_hdr_rec.salesrep_id := p_extwar_rec.salesrep_id;
5972 l_hdr_rec.pdf_id := p_extwar_rec.hdr_pdf_id;
5973 l_hdr_rec.ccr_number := p_extwar_rec.ccr_number;
5974 l_hdr_rec.ccr_exp_date := p_extwar_rec.ccr_exp_date;
5975 l_hdr_rec.renewal_status := p_extwar_rec.renewal_status;
5976
5977 IF p_extwar_rec.hdr_sdt > SYSDATE
5978 THEN
5979 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
5980 ELSE
5981 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
5982 END IF;
5983
5984 l_hdr_rec.sts_code := l_sts_code;
5985 oks_extwarprgm_pvt.create_k_hdr
5986 (p_k_header_rec => l_hdr_rec,
5987 p_contact_tbl => p_contact_tbl_in,
5988 p_salescredit_tbl_in => p_salescredit_tbl_hdr_in,
5989 --mmadhavi bug 4174921
5990 x_chr_id => l_chrid,
5991 p_caller => 'IB',
5992 x_order_error => l_temp,
5993 x_return_status => l_return_status,
5994 x_msg_count => x_msg_count,
5995 x_msg_data => x_msg_data
5996 );
5997
5998 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5999 THEN
6000 fnd_log.STRING
6001 (fnd_log.level_event,
6002 g_module_current
6003 || '.Create_contract_Ibnew.after_create.header',
6004 'oks_extwarprgm_pvt.create_k_hdr(Return status = '
6005 || l_return_status
6006 || ')'
6007 );
6008 END IF;
6009
6010 IF NOT l_return_status = 'S'
6011 THEN
6012 RAISE g_exception_halt_validation;
6013 END IF;
6014
6015 x_chrid := l_chrid;
6016
6017 IF p_extwar_rec.hdr_order_hdr_id IS NOT NULL
6018 AND p_extwar_rec.merge_type = 'NEW'
6019 THEN
6020 okc_oc_int_pub.create_k_relationships
6021 (p_api_version => l_api_version,
6022 p_init_msg_list => l_init_msg_list,
6023 p_commit => okc_api.g_false,
6024 p_sales_contract_id => okc_api.g_miss_num,
6025 p_service_contract_id => x_chrid,
6026 p_quote_id => okc_api.g_miss_num,
6027 p_quote_line_tab => okc_oc_int_pub.g_miss_ql_tab,
6028 p_order_id => p_extwar_rec.hdr_order_hdr_id,
6029 p_order_line_tab => okc_oc_int_pub.g_miss_ol_tab,
6030 p_trace_mode => NULL,
6031 x_return_status => l_return_status,
6032 x_msg_count => x_msg_count,
6033 x_msg_data => x_msg_data
6034 );
6035
6036 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6037 THEN
6038 fnd_log.STRING
6039 (fnd_log.level_event,
6040 g_module_current
6041 || '.Create_contract_Ibnew.after_create.header',
6042 'okc_oc_int_pub.create_k_relationships(Return status = '
6043 || l_return_status
6044 || ')'
6045 );
6046 END IF;
6047
6048 IF NOT l_return_status = 'S'
6049 THEN
6050 RAISE g_exception_halt_validation;
6051 END IF;
6052 END IF;
6053
6054 l_line_rec.k_id := l_chrid;
6055 l_line_rec.k_line_number := okc_api.g_miss_char;
6056 l_line_rec.org_id := p_extwar_rec.hdr_org_id;
6057 l_line_rec.accounting_rule_id := p_extwar_rec.line_accounting_rule_id;
6058 l_line_rec.invoicing_rule_id := p_extwar_rec.line_invoicing_rule_id;
6059 l_line_rec.srv_id := p_extwar_rec.srv_id;
6060 l_line_rec.srv_segment1 := p_extwar_rec.srv_name;
6061 l_line_rec.srv_desc := p_extwar_rec.srv_desc;
6062 l_line_rec.srv_sdt := p_extwar_rec.srv_sdt;
6063 l_line_rec.srv_edt := p_extwar_rec.srv_edt;
6064 l_line_rec.bill_to_id := p_extwar_rec.srv_bill_2_id;
6065 l_line_rec.ship_to_id := p_extwar_rec.srv_ship_2_id;
6066 l_line_rec.order_line_id := p_extwar_rec.srv_order_line_id;
6067 l_line_rec.warranty_flag := p_extwar_rec.warranty_flag;
6068 l_line_rec.currency := p_extwar_rec.srv_currency;
6069 l_line_rec.coverage_template_id := p_extwar_rec.srv_cov_template_id;
6070 l_line_rec.standard_cov_yn := 'Y';
6071 l_line_rec.cust_account := p_extwar_rec.cust_account;
6072 l_line_rec.SOURCE := 'NEW';
6073 l_line_rec.upg_orig_system_ref := 'ORDER'; -- added 04-jun-2002 Vigandhi
6074 l_line_rec.upg_orig_system_ref_id := NULL; -- added 04-jun-2002 Vigandhi
6075 l_line_rec.commitment_id := p_extwar_rec.commitment_id;
6076 -- added 12-aug-2003 Vigandhi
6077 l_line_rec.line_renewal_type := p_extwar_rec.line_renewal_type;
6078 --l_line_rec.tax_amount := p_extwar_rec.tax_amount; -- added 22-oct-2003 Vigandhi
6079 l_line_rec.ln_price_list_id := p_extwar_rec.ln_price_list_id;
6080
6081 -- added 07-nov-2003 Vigandhi
6082 IF p_extwar_rec.srv_sdt > SYSDATE
6083 THEN
6084 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
6085 ELSE
6086 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
6087 END IF;
6088
6089 l_line_rec.line_sts_code := l_sts_code;
6090 oks_extwarprgm_pvt.create_k_service_lines
6091 (p_k_line_rec => l_line_rec,
6092 p_contact_tbl => p_contact_tbl_in,
6093 p_salescredit_tbl_in => p_salescredit_tbl_line_in,
6094 p_caller => 'IB',
6095 x_order_error => l_temp,
6096 x_service_line_id => l_lineid,
6097 x_return_status => l_return_status,
6098 x_msg_count => x_msg_count,
6099 x_msg_data => x_msg_data
6100 );
6101
6102 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6103 THEN
6104 fnd_log.STRING
6105 (fnd_log.level_event,
6106 g_module_current
6107 || '.Create_contract_Ibnew.after_create.service_line',
6108 'oks_extwarprgm_pvt.create_k_service_lines(Return status = '
6109 || l_return_status
6110 || ')'
6111 );
6112 END IF;
6113
6114 IF NOT l_return_status = 'S'
6115 THEN
6116 RAISE g_exception_halt_validation;
6117 END IF;
6118
6119 l_covd_rec.k_id := l_chrid;
6120 l_covd_rec.rty_code := p_extwar_rec.rty_code;
6121 l_covd_rec.attach_2_line_id := l_lineid;
6122 l_covd_rec.line_number := okc_api.g_miss_char;
6123 l_covd_rec.customer_product_id := p_extwar_rec.lvl_cp_id;
6124 -- l_covd_rec.product_segment1 := p_extwar_rec.lvl_inventory_name;
6125 -- l_covd_rec.product_desc := p_extwar_rec.lvl_inventory_desc;
6126 l_covd_rec.product_start_date := p_extwar_rec.srv_sdt;
6127 l_covd_rec.product_end_date := p_extwar_rec.srv_edt;
6128 l_covd_rec.quantity := p_extwar_rec.lvl_quantity;
6129 l_covd_rec.list_price := p_extwar_rec.srv_unit_price;
6130 l_covd_rec.uom_code := p_extwar_rec.lvl_uom_code;
6131 l_covd_rec.negotiated_amount := p_extwar_rec.srv_amount;
6132 l_covd_rec.warranty_flag := p_extwar_rec.warranty_flag;
6133 --l_covd_rec.product_sts_code := p_extwar_rec.lvl_sts_code;
6134 l_covd_rec.line_renewal_type := p_extwar_rec.lvl_line_renewal_type;
6135 l_covd_rec.currency_code := p_extwar_rec.srv_currency;
6136 l_covd_rec.order_line_id := p_extwar_rec.srv_order_line_id;
6137 --l_covd_rec.upg_orig_system_ref := Null;
6138 l_covd_rec.attach_2_line_desc := p_extwar_rec.srv_desc;
6139 -- bug#2396580 Vigandhi
6140 l_covd_rec.upg_orig_system_ref := 'ORDER_LINE';
6141 -- added 04-jun-2002 Vigandhi
6142 l_covd_rec.upg_orig_system_ref_id := p_extwar_rec.srv_order_line_id;
6143 -- added 04-jun-2002 Vigandhi
6144 l_covd_rec.prod_item_id := p_extwar_rec.lvl_inventory_id;
6145 l_covd_rec.tax_amount := p_extwar_rec.tax_amount;
6146 -- added tax calculation from OM. -- Vigandhi
6147 l_covd_rec.standard_coverage := 'Y';
6148
6149 IF p_extwar_rec.srv_sdt > SYSDATE
6150 THEN
6151 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
6152 ELSE
6153 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
6154 END IF;
6155
6156 l_covd_rec.product_sts_code := l_sts_code;
6157 oks_extwarprgm_pvt.create_k_covered_levels
6158 (p_k_covd_rec => l_covd_rec,
6159 p_price_attribs => p_price_attribs_in,
6160 p_caller => 'IB',
6161 x_order_error => l_temp,
6162 x_covlvl_id => l_covlvl_id,
6163 x_update_line => l_update_line,
6164 x_return_status => l_return_status,
6165 x_msg_count => x_msg_count,
6166 x_msg_data => x_msg_data
6167 );
6168
6169 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6170 THEN
6171 fnd_log.STRING
6172 (fnd_log.level_event,
6173 g_module_current
6174 || '.Create_contract_Ibnew.after_create.covered_line',
6175 'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
6176 || l_return_status
6177 || ')'
6178 );
6179 END IF;
6180
6181 IF NOT l_return_status = 'S'
6182 THEN
6183 RAISE g_exception_halt_validation;
6184 END IF;
6185
6186 OPEN l_lndates_csr (l_lineid);
6187
6188 FETCH l_lndates_csr
6189 INTO l_lndates_rec;
6190
6191 CLOSE l_lndates_csr;
6192
6193 OPEN l_hdrdates_csr (l_chrid);
6194
6195 FETCH l_hdrdates_csr
6196 INTO l_hdrdates_rec;
6197
6198 CLOSE l_hdrdates_csr;
6199
6200 g_ptr := x_inst_dtls_tbl.COUNT;
6201 x_inst_dtls_tbl (g_ptr).instance_amt_old := NULL;
6202 x_inst_dtls_tbl (g_ptr).instance_qty_old := NULL;
6203 x_inst_dtls_tbl (g_ptr).old_contract_id := NULL;
6204 x_inst_dtls_tbl (g_ptr).old_contact_start_date := NULL;
6205 x_inst_dtls_tbl (g_ptr).old_contract_end_date := NULL;
6206 x_inst_dtls_tbl (g_ptr).old_service_line_id := NULL;
6207 x_inst_dtls_tbl (g_ptr).old_service_start_date := NULL;
6208 x_inst_dtls_tbl (g_ptr).old_service_end_date := NULL;
6209 x_inst_dtls_tbl (g_ptr).old_subline_id := NULL;
6210 x_inst_dtls_tbl (g_ptr).old_subline_start_date := NULL;
6211 x_inst_dtls_tbl (g_ptr).old_subline_end_date := NULL;
6212 x_inst_dtls_tbl (g_ptr).old_customer := NULL;
6213 x_inst_dtls_tbl (g_ptr).old_k_status := NULL;
6214 get_sts_code (NULL, l_hdrdates_rec.sts_code, l_ste_code, l_sts_code);
6215 x_inst_dtls_tbl (g_ptr).instance_amt_new := p_extwar_rec.srv_amount;
6216 x_inst_dtls_tbl (g_ptr).new_contract_id := l_chrid;
6217 x_inst_dtls_tbl (g_ptr).new_contact_start_date :=
6218 l_hdrdates_rec.start_date;
6219 x_inst_dtls_tbl (g_ptr).new_contract_end_date := l_hdrdates_rec.end_date;
6220 x_inst_dtls_tbl (g_ptr).new_service_line_id := l_lineid;
6221 x_inst_dtls_tbl (g_ptr).new_service_start_date :=
6222 l_lndates_rec.start_date;
6223 x_inst_dtls_tbl (g_ptr).new_service_end_date := l_lndates_rec.end_date;
6224 x_inst_dtls_tbl (g_ptr).new_subline_id := l_covlvl_id;
6225 x_inst_dtls_tbl (g_ptr).new_subline_start_date := p_extwar_rec.srv_sdt;
6226 x_inst_dtls_tbl (g_ptr).new_subline_end_date := p_extwar_rec.srv_edt;
6227 x_inst_dtls_tbl (g_ptr).new_customer := p_extwar_rec.cust_account;
6228 x_inst_dtls_tbl (g_ptr).new_k_status := l_sts_code;
6229 x_inst_dtls_tbl (g_ptr).subline_date_terminated := NULL;
6230
6231 IF p_extwar_rec.warranty_flag <> 'W'
6232 THEN
6233 l_strmlvl_id := check_strmlvl_exists (l_lineid);
6234
6235 IF l_strmlvl_id IS NULL
6236 THEN
6237 okc_time_util_pub.get_duration
6238 (p_start_date => p_extwar_rec.srv_sdt,
6239 p_end_date => p_extwar_rec.srv_edt,
6240 x_duration => l_duration,
6241 x_timeunit => l_timeunits,
6242 x_return_status => l_return_status
6243 );
6244
6245 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
6246 THEN
6247 fnd_log.STRING (fnd_log.level_statement,
6248 g_module_current
6249 || '.Create_contract_Ibnew.after.get_duration',
6250 'Get_Duration Status ='
6251 || l_return_status
6252 || ',Duration = '
6253 || l_duration
6254 || ',Time Unit = '
6255 || l_timeunits
6256 );
6257 END IF;
6258
6259 IF NOT l_return_status = 'S'
6260 THEN
6261 RAISE g_exception_halt_validation;
6262 END IF;
6263
6264 l_sll_tbl (1).cle_id := l_lineid;
6265 --l_sll_tbl(1).billing_type := 'T';
6266 l_sll_tbl (1).uom_code := l_timeunits;
6267 l_sll_tbl (1).sequence_no := '1';
6268 l_sll_tbl (1).level_periods := '1';
6269 l_sll_tbl (1).start_date := p_extwar_rec.srv_sdt;
6270 l_sll_tbl (1).uom_per_period := l_duration;
6271 l_sll_tbl (1).advance_periods := NULL;
6272 l_sll_tbl (1).level_amount := NULL;
6273 l_sll_tbl (1).invoice_offset_days := NULL;
6274 l_sll_tbl (1).interface_offset_days := NULL;
6275 oks_bill_sch.create_bill_sch_rules
6276 (p_billing_type => 'T',
6277 p_sll_tbl => l_sll_tbl,
6278 p_invoice_rule_id => p_extwar_rec.line_invoicing_rule_id,
6279 x_bil_sch_out_tbl => l_bil_sch_out,
6280 x_return_status => l_return_status
6281 );
6282
6283 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6284 THEN
6285 fnd_log.STRING
6286 (fnd_log.level_event,
6287 g_module_current
6288 || '.Create_contract_Ibnew.after.bill_sch',
6289 'oks_bill_sch.create_bill_sch_rules(Return status = '
6290 || l_return_status
6291 || ')'
6292 );
6293 END IF;
6294
6295 IF l_return_status <> okc_api.g_ret_sts_success
6296 THEN
6297 okc_api.set_message (g_app_name,
6298 g_required_value,
6299 g_col_name_token,
6300 'Sched Billing Rule (LINE)'
6301 );
6302 RAISE g_exception_halt_validation;
6303 END IF;
6304
6305 oks_bill_util_pub.create_bcl_for_om
6306 (p_line_id => l_lineid,
6307 x_return_status => l_return_status
6308 );
6309
6310 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6311 THEN
6312 fnd_log.STRING
6313 (fnd_log.level_event,
6314 g_module_current || '.Create_contract_Ibnew.after.bcl_om',
6315 ' oks_bill_util_pub.create_bcl_for_om(Return status = '
6316 || l_return_status
6317 || ')'
6318 );
6319 END IF;
6320
6321 IF NOT l_return_status = 'S'
6322 THEN
6323 RAISE g_exception_halt_validation;
6324 END IF;
6325 ELSE
6326 IF check_lvlelements_exists (l_lineid)
6327 THEN
6328 IF l_update_line = 'Y'
6329 THEN
6330 oks_bill_sch.update_om_sll_date
6331 (p_top_line_id => l_lineid,
6332 x_return_status => l_return_status,
6333 x_msg_count => x_msg_count,
6334 x_msg_data => x_msg_data
6335 );
6336
6337 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
6338 )
6339 THEN
6340 fnd_log.STRING
6341 (fnd_log.level_event,
6342 g_module_current
6343 || '.Create_contract_Ibnew.after.om_sll',
6344 'oks_bill_sch.update_om_sll_date(Return status = '
6345 || l_return_status
6346 || ')'
6347 );
6348 END IF;
6349
6350 IF NOT l_return_status = 'S'
6351 THEN
6352 RAISE g_exception_halt_validation;
6353 END IF;
6354 ELSE
6355 oks_bill_sch.create_bill_sch_cp
6356 (p_top_line_id => l_lineid,
6357 p_cp_line_id => l_covlvl_id,
6358 p_cp_new => 'Y',
6359 x_return_status => l_return_status,
6360 x_msg_count => x_msg_count,
6361 x_msg_data => x_msg_data
6362 );
6363
6364 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
6365 )
6366 THEN
6367 fnd_log.STRING
6368 (fnd_log.level_event,
6369 g_module_current
6370 || '.Create_contract_Ibnew.after.sch_cp',
6371 'oks_bill_sch.create_bill_sch_cp(Return status = '
6372 || l_return_status
6373 || ')'
6374 );
6375 END IF;
6376
6377 IF NOT l_return_status = 'S'
6378 THEN
6379 RAISE g_exception_halt_validation;
6380 END IF;
6381 END IF;
6382
6383 oks_bill_util_pub.create_bcl_for_om
6384 (p_line_id => l_lineid,
6385 x_return_status => l_return_status
6386 );
6387
6388 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6389 THEN
6390 fnd_log.STRING
6391 (fnd_log.level_event,
6392 g_module_current
6393 || '.Create_contract_Ibnew.after.bcl_om',
6394 'oks_bill_util_pub.create_bcl_for_om(Return status = '
6395 || l_return_status
6396 || ')'
6397 );
6398 END IF;
6399
6400 IF NOT l_return_status = 'S'
6401 THEN
6402 RAISE g_exception_halt_validation;
6403 END IF;
6404 ELSE
6405 okc_api.set_message (g_app_name,
6406 g_required_value,
6407 g_col_name_token,
6408 'level elements NOT EXIST'
6409 );
6410 RAISE g_exception_halt_validation;
6411 END IF;
6412 END IF; -- strmlvl end
6413 END IF; -- warranty flag end
6414
6415 UPDATE okc_k_lines_b
6416 SET price_negotiated =
6417 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
6418 FROM okc_k_lines_b
6419 WHERE cle_id = l_lineid AND dnz_chr_id = l_chrid)
6420 WHERE ID = l_lineid;
6421
6422 UPDATE okc_k_headers_b
6423 SET estimated_amount =
6424 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
6425 FROM okc_k_lines_b
6426 WHERE dnz_chr_id = l_chrid AND lse_id IN (1, 19))
6427 WHERE ID = l_chrid;
6428
6429 launch_workflow ( 'INSTALL BASE ACTIVITY : NEW '
6430 || fnd_global.local_chr (10)
6431 || 'Contract Number : '
6432 || get_contract_number (l_chrid)
6433 || fnd_global.local_chr (10)
6434 || 'Service Added : '
6435 || p_extwar_rec.srv_name
6436 || fnd_global.local_chr (10)
6437 || 'Customer Product : '
6438 || p_extwar_rec.lvl_cp_id
6439 );
6440 EXCEPTION
6441 WHEN g_exception_halt_validation
6442 THEN
6443 x_return_status := l_return_status;
6444 NULL;
6445 WHEN OTHERS
6446 THEN
6447 x_return_status := okc_api.g_ret_sts_unexp_error;
6448 okc_api.set_message (g_app_name,
6449 g_unexpected_error,
6450 g_sqlcode_token,
6451 SQLCODE,
6452 g_sqlerrm_token,
6453 SQLERRM
6454 );
6455 END;
6456
6457 PROCEDURE create_transaction_source (
6458 p_create_opr_inst VARCHAR2,
6459 p_source_code VARCHAR2,
6460 p_target_chr_id VARCHAR2,
6461 p_source_line_id NUMBER,
6462 p_source_chr_id NUMBER,
6463 p_target_line_id NUMBER,
6464 x_oper_instance_id IN OUT NOCOPY NUMBER,
6465 x_return_status OUT NOCOPY VARCHAR2,
6466 x_msg_count OUT NOCOPY NUMBER,
6467 x_msg_data OUT NOCOPY VARCHAR2
6468 )
6469 IS
6470 CURSOR cop_csr (p_opn_code VARCHAR2)
6471 IS
6472 SELECT ID
6473 FROM okc_class_operations
6474 WHERE cls_code = (SELECT cls_code
6475 FROM okc_subclasses_b
6476 WHERE code = 'SERVICE')
6477 AND opn_code = p_opn_code;
6478
6479 l_cop_id NUMBER;
6480 l_api_version CONSTANT NUMBER := 1.0;
6481 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
6482 l_return_status VARCHAR2 (1) := 'S';
6483 l_oiev_tbl_in okc_oper_inst_pvt.oiev_tbl_type;
6484 l_oiev_tbl_out okc_oper_inst_pvt.oiev_tbl_type;
6485 l_olev_tbl_in okc_oper_inst_pvt.olev_tbl_type;
6486 l_olev_tbl_out okc_oper_inst_pvt.olev_tbl_type;
6487 BEGIN
6488 x_return_status := l_return_status;
6489
6490 IF p_create_opr_inst = 'Y'
6491 THEN
6492 -- get class operation id
6493 OPEN cop_csr (p_source_code);
6494
6495 FETCH cop_csr
6496 INTO l_cop_id;
6497
6498 CLOSE cop_csr;
6499
6500 --errorout_n('cop'||l_cop_id);
6501 l_oiev_tbl_in (1).status_code := 'PROCESSED';
6502 l_oiev_tbl_in (1).cop_id := l_cop_id;
6503 l_oiev_tbl_in (1).target_chr_id := p_target_chr_id;
6504 okc_oper_inst_pub.create_operation_instance
6505 (p_api_version => l_api_version,
6506 p_init_msg_list => l_init_msg_list,
6507 x_return_status => l_return_status,
6508 x_msg_count => x_msg_count,
6509 x_msg_data => x_msg_data,
6510 p_oiev_tbl => l_oiev_tbl_in,
6511 x_oiev_tbl => l_oiev_tbl_out
6512 );
6513
6514 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6515 THEN
6516 fnd_log.STRING
6517 (fnd_log.level_event,
6518 g_module_current || '.CReate_transaction_source',
6519 'OKC_OPER_INST_PUB.Create_Operation_Instance (Return status = '
6520 || l_return_status
6521 || ')'
6522 );
6523 END IF;
6524
6525 IF NOT l_return_status = 'S'
6526 THEN
6527 RAISE g_exception_halt_validation;
6528 END IF;
6529
6530 x_oper_instance_id := l_oiev_tbl_out (1).ID;
6531 END IF;
6532
6533 l_olev_tbl_in (1).oie_id := x_oper_instance_id;
6534 l_olev_tbl_in (1).process_flag := 'P';
6535 l_olev_tbl_in (1).subject_chr_id := p_target_chr_id;
6536 l_olev_tbl_in (1).object_chr_id := p_source_chr_id;
6537 l_olev_tbl_in (1).subject_cle_id := p_target_line_id;
6538 l_olev_tbl_in (1).object_cle_id := p_source_line_id;
6539 l_olev_tbl_in (1).active_yn := 'Y';
6540 okc_oper_inst_pub.create_operation_line
6541 (p_api_version => l_api_version,
6542 p_init_msg_list => l_init_msg_list,
6543 x_return_status => l_return_status,
6544 x_msg_count => x_msg_count,
6545 x_msg_data => x_msg_data,
6546 p_olev_tbl => l_olev_tbl_in,
6547 x_olev_tbl => l_olev_tbl_out
6548 );
6549
6550 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6551 THEN
6552 fnd_log.STRING
6553 (fnd_log.level_event,
6554 g_module_current || '.CReate_transaction_source',
6555 'OKC_OPER_INST_PUB.Create_Operation_Line (Return status = '
6556 || l_return_status
6557 || ')'
6558 );
6559 END IF;
6560
6561 IF NOT l_return_status = 'S'
6562 THEN
6563 RAISE g_exception_halt_validation;
6564 END IF;
6565
6566 x_return_status := l_return_status;
6567 EXCEPTION
6568 WHEN g_exception_halt_validation
6569 THEN
6570 x_return_status := l_return_status;
6571 NULL;
6572 WHEN OTHERS
6573 THEN
6574 x_return_status := okc_api.g_ret_sts_unexp_error;
6575 okc_api.set_message (g_app_name,
6576 g_unexpected_error,
6577 g_sqlcode_token,
6578 SQLCODE,
6579 g_sqlerrm_token,
6580 SQLERRM
6581 );
6582 END;
6583
6584 PROCEDURE create_source_links (
6585 p_line_id NUMBER,
6586 p_source_code VARCHAR2,
6587 p_create_opr_inst VARCHAR2,
6588 p_target_chr_id VARCHAR2,
6589 p_target_line_id NUMBER,
6590 p_txn_date DATE,
6591 x_return_status OUT NOCOPY VARCHAR2,
6592 x_msg_count OUT NOCOPY NUMBER,
6593 x_msg_data OUT NOCOPY VARCHAR2,
6594 x_oper_instance_id IN OUT NOCOPY NUMBER
6595 )
6596 IS
6597 CURSOR check_renewal_link
6598 IS
6599 SELECT object_cle_id, object_chr_id
6600 FROM okc_operation_instances op,
6601 okc_operation_lines ol,
6602 okc_class_operations classopr,
6603 okc_subclasses_b subclass
6604 WHERE ol.oie_id = op.ID
6605 AND subclass.code = 'SERVICE'
6606 AND classopr.cls_code = subclass.cls_code
6607 AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
6608 AND op.cop_id = classopr.ID
6609 AND ol.subject_cle_id = p_line_id;
6610
6611 CURSOR check_source_link (p_line_id NUMBER)
6612 IS
6613 SELECT subject_cle_id, subject_chr_id
6614 FROM okc_operation_instances op,
6615 okc_operation_lines ol,
6616 okc_class_operations cl,
6617 okc_subclasses_b sl
6618 WHERE ol.oie_id = op.ID
6619 AND op.cop_id = cl.ID
6620 AND cl.cls_code = sl.cls_code
6621 AND sl.code = 'SERVICE'
6622 AND cl.opn_code = p_source_code
6623 AND ol.object_cle_id = p_line_id;
6624
6625 CURSOR check_split_source_link (p_line_id NUMBER)
6626 IS
6627 SELECT subject_cle_id, subject_chr_id
6628 FROM okc_operation_instances op,
6629 okc_operation_lines ol,
6630 okc_class_operations cl,
6631 okc_subclasses_b sl,
6632 okc_k_items a
6633 WHERE ol.oie_id = op.ID
6634 AND op.cop_id = cl.ID
6635 AND cl.cls_code = sl.cls_code
6636 AND sl.code = 'SERVICE'
6637 AND cl.opn_code = p_source_code
6638 AND ol.object_cle_id = p_line_id
6639 AND a.cle_id = ol.subject_cle_id
6640 AND a.object1_id1 = (Select b.object1_id1
6641 from okc_k_items b
6642 where b.jtot_object1_code = 'OKX_CUSTPROD'
6643 and b.cle_id = p_target_line_id)
6644 AND a.jtot_object1_code = 'OKX_CUSTPROD';
6645
6646 l_api_version CONSTANT NUMBER := 1.0;
6647 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
6648 l_return_status VARCHAR2 (1) := 'S';
6649 l_renewal_id NUMBER;
6650 l_source_id NUMBER;
6651 l_renewal_chr_id NUMBER;
6652 l_source_hdr_id NUMBER;
6653 l_source_line_id NUMBER;
6654 l_source_chr_id NUMBER;
6655 l_line_date_renewed DATE;
6656 l_hdr_date_renewed DATE;
6657
6658 FUNCTION hdr_renewal_link_exists (
6659 p_target_chr_id NUMBER,
6660 p_source_chr_id NUMBER
6661 )
6662 RETURN BOOLEAN
6663 IS
6664 CURSOR check_source_link
6665 IS
6666 SELECT 'Y'
6667 FROM okc_operation_instances op,
6668 okc_operation_lines ol,
6669 okc_class_operations classopr,
6670 okc_subclasses_b subclass
6671 WHERE ol.oie_id = op.ID
6672 AND subclass.code = 'SERVICE'
6673 AND classopr.cls_code = subclass.cls_code
6674 AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
6675 AND op.cop_id = classopr.ID
6676 AND ol.subject_chr_id = p_target_chr_id
6677 AND ol.object_chr_id = p_source_chr_id
6678 AND ol.subject_cle_id IS NULL
6679 AND ol.object_cle_id IS NULL;
6680
6681 l_found VARCHAR2 (1) := '?';
6682 BEGIN
6683 OPEN check_source_link;
6684
6685 FETCH check_source_link
6686 INTO l_found;
6687
6688 CLOSE check_source_link;
6689
6690 IF l_found = 'Y'
6691 THEN
6692 RETURN (TRUE);
6693 ELSE
6694 RETURN (FALSE);
6695 END IF;
6696 END;
6697 BEGIN
6698 x_return_status := l_return_status;
6699
6700 OPEN check_renewal_link;
6701
6702 FETCH check_renewal_link
6703 INTO l_renewal_id, l_renewal_chr_id;
6704
6705 CLOSE check_renewal_link;
6706
6707 IF l_renewal_id IS NOT NULL
6708 THEN
6709 IF p_source_code = 'IBSPLIT'
6710 THEN
6711 OPEN check_split_source_link (l_renewal_id);
6712
6713 FETCH check_split_source_link
6714 INTO l_source_id, l_source_chr_id;
6715
6716 CLOSE check_split_source_link;
6717 ELSE
6718 OPEN check_source_link (l_renewal_id);
6719
6720 FETCH check_source_link
6721 INTO l_source_id, l_source_chr_id;
6722
6723 CLOSE check_source_link;
6724 END IF;
6725
6726 IF l_source_id IS NOT NULL
6727 THEN
6728 l_source_line_id := l_source_id;
6729 l_source_hdr_id := l_source_chr_id;
6730 ELSE
6731 l_source_line_id := l_renewal_id;
6732 l_source_hdr_id := l_renewal_chr_id;
6733 END IF;
6734
6735 create_transaction_source (p_create_opr_inst => p_create_opr_inst,
6736 p_source_code => 'RENEWAL',
6737 p_target_chr_id => p_target_chr_id,
6738 p_source_line_id => l_source_line_id,
6739 p_source_chr_id => l_source_hdr_id,
6740 p_target_line_id => p_target_line_id,
6741 x_oper_instance_id => x_oper_instance_id,
6742 x_return_status => x_return_status,
6743 x_msg_count => x_msg_count,
6744 x_msg_data => x_msg_data
6745 );
6746
6747 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6748 THEN
6749 fnd_log.STRING
6750 (fnd_log.level_event,
6751 g_module_current || '.CReate_transaction_source',
6752 'OKC_OPER_INST_PUB.Create_transaction_source(Return status = '
6753 || l_return_status
6754 || ')'
6755 );
6756 END IF;
6757
6758 IF x_return_status = 'S'
6759 THEN
6760 UPDATE okc_k_lines_b
6761 SET date_renewed = p_txn_date
6762 WHERE ID = l_source_line_id;
6763
6764 l_line_date_renewed :=
6765 oks_ib_util_pvt.check_renewed_sublines (l_source_line_id);
6766
6767 UPDATE okc_k_lines_b
6768 SET date_renewed = l_line_date_renewed
6769 WHERE ID = (SELECT cle_id
6770 FROM okc_k_lines_b
6771 WHERE ID = l_source_line_id)
6772 AND date_renewed IS NULL;
6773
6774 l_hdr_date_renewed :=
6775 oks_ib_util_pvt.check_renewed_lines (l_source_line_id);
6776
6777 UPDATE okc_k_headers_all_b
6778 SET date_renewed = l_hdr_date_renewed
6779 WHERE ID = (SELECT dnz_chr_id
6780 FROM okc_k_lines_b
6781 WHERE ID = l_source_line_id)
6782 AND date_renewed IS NULL;
6783 ELSE
6784 RAISE g_exception_halt_validation;
6785 END IF;
6786
6787 -- Create an operation line for headers.
6788 IF p_source_code = 'TRANSFER'
6789 THEN
6790 IF NOT hdr_renewal_link_exists (p_target_chr_id, l_source_hdr_id)
6791 THEN
6792 create_transaction_source
6793 (p_create_opr_inst => 'N',
6794 p_source_code => 'RENEWAL',
6795 p_target_chr_id => p_target_chr_id,
6796 p_source_line_id => NULL,
6797 p_source_chr_id => l_source_hdr_id,
6798 p_target_line_id => NULL,
6799 x_oper_instance_id => x_oper_instance_id,
6800 x_return_status => x_return_status,
6801 x_msg_count => x_msg_count,
6802 x_msg_data => x_msg_data
6803 );
6804
6805 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6806 THEN
6807 fnd_log.STRING
6808 (fnd_log.level_event,
6809 g_module_current || '.CReate_transaction_source',
6810 'OKC_OPER_INST_PUB.Create_transaction_source(Return status = '
6811 || l_return_status
6812 || ')'
6813 );
6814 END IF;
6815 END IF;
6816 END IF;
6817 END IF;
6818
6819 x_return_status := l_return_status;
6820 EXCEPTION
6821 WHEN g_exception_halt_validation
6822 THEN
6823 x_return_status := l_return_status;
6824 NULL;
6825 WHEN OTHERS
6826 THEN
6827 x_return_status := okc_api.g_ret_sts_unexp_error;
6828 okc_api.set_message (g_app_name,
6829 g_unexpected_error,
6830 g_sqlcode_token,
6831 SQLCODE,
6832 g_sqlerrm_token,
6833 SQLERRM
6834 );
6835 END;
6836
6837 PROCEDURE create_contract_ibsplit (
6838 p_kdtl_tbl IN contract_tbl,
6839 x_return_status OUT NOCOPY VARCHAR2,
6840 x_msg_count OUT NOCOPY NUMBER,
6841 x_msg_data OUT NOCOPY VARCHAR2
6842 )
6843 IS
6844 CURSOR l_bill_csr (p_cle_id NUMBER)
6845 IS
6846 SELECT NVL (SUM (amount), 0)
6847 FROM oks_bill_sub_lines_v
6848 WHERE cle_id = p_cle_id;
6849
6850 CURSOR l_rule_csr (p_cle_id NUMBER)
6851 IS
6852 SELECT elmnts.ID
6853 FROM oks_stream_levels_b strm, oks_level_elements elmnts
6854 WHERE strm.cle_id = p_cle_id AND elmnts.rul_id = strm.ID;
6855
6856 CURSOR l_credit_csr (p_cle_id NUMBER)
6857 IS
6858 SELECT NVL (SUM (amount), 0)
6859 FROM oks_bill_sub_lines bsl
6860 WHERE bsl.cle_id = p_cle_id
6861 AND EXISTS (SELECT 1
6862 FROM oks_bill_cont_lines bcl
6863 WHERE bcl.ID = bsl.bcl_id AND bill_action = 'TR');
6864
6865 --bug start 3736860
6866 CURSOR get_oks_line_dtls (p_id NUMBER)
6867 IS
6868 SELECT ID, object_version_number
6869 FROM oks_k_lines_b
6870 WHERE cle_id = p_id;
6871
6872 CURSOR l_bill_tax_csr (p_cle_id NUMBER)
6873 IS
6874 SELECT NVL (SUM (trx_line_tax_amount), 0)
6875 FROM oks_bill_txn_lines
6876 WHERE bsl_id IN (SELECT ID
6877 FROM oks_bill_sub_lines
6878 WHERE cle_id = p_cle_id);
6879
6880 --bug end 3736860
6881 /* Added for Bug#14325727 */
6882 CURSOR l_serv_csr (p_serv_id NUMBER)
6883 IS
6884 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
6885 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
6886 WHERE b.inventory_item_id = t.inventory_item_id
6887 AND b.organization_id = t.organization_id
6888 AND t.LANGUAGE = USERENV ('LANG')
6889 AND b.inventory_item_id = p_serv_id
6890 AND ROWNUM < 2;
6891
6892 /*Commented for Bug#14325727 */
6893 /*CURSOR l_serv_csr (p_serv_id NUMBER)
6894 IS
6895 SELECT b.concatenated_segments description
6896 FROM mtl_system_items_b_kfv b
6897 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
6898 */
6899
6900 CURSOR l_ordline_csr (p_line_id NUMBER)
6901 IS
6902 SELECT object1_id1
6903 FROM okc_k_rel_objs
6904 WHERE cle_id = p_line_id;
6905
6906 CURSOR l_refnum_csr (p_cp_id NUMBER)
6907 IS
6908 SELECT instance_number
6909 FROM csi_item_instances
6910 WHERE instance_id = p_cp_id;
6911
6912 l_ref_num VARCHAR2 (30);
6913 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
6914 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
6915 l_instparent_id NUMBER;
6916 l_old_cp_id NUMBER;
6917 l_insthist_rec oks_ins_pvt.insv_rec_type;
6918 x_insthist_rec oks_ins_pvt.insv_rec_type;
6919 l_parameters VARCHAR2 (2000);
6920 l_renewal_id NUMBER;
6921 l_line_rec k_line_service_rec_type;
6922 l_covd_rec k_line_covered_level_rec_type;
6923 l_available_yn VARCHAR2 (1);
6924 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
6925 l_chrid NUMBER := NULL;
6926 l_lineid NUMBER := NULL;
6927 l_ctr NUMBER := 0;
6928 l_ctr1 NUMBER := 0;
6929 l_api_version CONSTANT NUMBER := 1.0;
6930 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
6931 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
6932 l_srvc_stdt DATE;
6933 --Contract Line Table
6934 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
6935 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
6936 --SalesCredit
6937 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
6938 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
6939 l_qty1price NUMBER := 0;
6940 l_oldamt NUMBER (30, 2) := 0;
6941 l_no_of_days NUMBER := 0;
6942 l_new_value NUMBER := 0;
6943 l_dayprice NUMBER := 0;
6944 l_newactprice NUMBER (30, 2) := 0;
6945 l_diff NUMBER := 0;
6946 l_covlvl_id NUMBER;
6947 l_rule_group_id NUMBER;
6948 l_rule_id NUMBER;
6949 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
6950 l_bill_schd_yn VARCHAR2 (1);
6951 l_list_price NUMBER := 0;
6952 l_spldt DATE;
6953 l_billed_amount NUMBER := 0;
6954 actual_amt NUMBER := 0;
6955 l_total_days NUMBER;
6956 l_credit_amt NUMBER;
6957 l_duration NUMBER;
6958 l_timeunits VARCHAR2 (25);
6959 l_sll_tbl oks_bill_sch.streamlvl_tbl;
6960 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
6961 l_strmlvl_id NUMBER := NULL;
6962 l_update_line VARCHAR2 (1);
6963 l_temp VARCHAR2 (2000);
6964 l_ste_code VARCHAR2 (30);
6965 l_sts_code VARCHAR2 (30);
6966 l_old_qty NUMBER := 0;
6967 actual_tax NUMBER := 0;
6968 l_qtyltax NUMBER := 0;
6969 l_oldtax NUMBER (30, 2) := 0;
6970 l_newacttax NUMBER (30, 2) := 0;
6971 l_daytax NUMBER := 0;
6972 l_obj_version_num NUMBER;
6973 l_id NUMBER;
6974 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
6975 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
6976 l_taxed_amount NUMBER := 0;
6977 l_new_cp_tbl oks_bill_sch.subline_id_tbl;
6978 l_warranty_flag VARCHAR2 (2);
6979 l_renewal_opr_instance_id NUMBER;
6980 l_opr_instance_id NUMBER;
6981 l_target_chr_id NUMBER;
6982 l_source_line_id NUMBER;
6983 l_create_oper_instance VARCHAR2 (1);
6984 l_new_sdate DATE;
6985 l_order_line_id Number;
6986 BEGIN
6987 x_return_status := okc_api.g_ret_sts_success;
6988 l_target_chr_id := 0;
6989 l_old_cp_id := 0;
6990
6991 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6992 THEN
6993 fnd_log.STRING (fnd_log.level_event,
6994 g_module_current || '.CREATE_CONTRACT_IBSPLIT.',
6995 ', count = ' || p_kdtl_tbl.COUNT || ')'
6996 );
6997 END IF;
6998
6999 IF p_kdtl_tbl.COUNT > 0
7000 THEN
7001 l_ctr := p_kdtl_tbl.FIRST;
7002
7003 LOOP
7004 okc_context.set_okc_org_context
7005 (p_kdtl_tbl (l_ctr).hdr_org_id,
7006 p_kdtl_tbl (l_ctr).organization_id
7007 );
7008 l_inst_dtls_tbl.DELETE;
7009 l_ctr1 := 1;
7010 l_spldt := p_kdtl_tbl (l_ctr).transaction_date;
7011
7012 IF (TRUNC (l_spldt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
7013 THEN
7014 l_spldt := p_kdtl_tbl (l_ctr).prod_sdt;
7015 END IF;
7016
7017 l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7018
7019 IF p_kdtl_tbl (l_ctr).lse_id = 25
7020 THEN
7021 l_warranty_flag := 'E';
7022 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
7023 AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
7024 THEN
7025 l_warranty_flag := 'S';
7026 ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
7027 THEN
7028 l_warranty_flag := 'W';
7029 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
7030 AND p_kdtl_tbl (l_ctr).scs_code = 'SUBSCRIPTION'
7031 THEN
7032 l_warranty_flag := 'SU';
7033 END IF;
7034
7035 IF l_warranty_flag = 'W'
7036 THEN
7037 l_covd_rec.list_price := 0;
7038 l_covd_rec.negotiated_amount := 0;
7039 l_newactprice := 0;
7040 l_oldamt := 0;
7041 l_old_qty :=
7042 p_kdtl_tbl (l_ctr).old_cp_quantity
7043 - p_kdtl_tbl (l_ctr).new_quantity;
7044 --bug start 3736860
7045 l_oldtax := 0;
7046 l_covd_rec.tax_amount := 0;
7047 l_newacttax := 0;
7048
7049 --bug end 3736860
7050 IF l_old_qty < 1
7051 THEN -- changed
7052 l_old_qty := p_kdtl_tbl (l_ctr).old_cp_quantity; -- changed
7053 END IF; -- changed
7054
7055 l_new_sdate := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7056 ELSIF p_kdtl_tbl (l_ctr).service_amount IS NOT NULL
7057 THEN
7058 IF p_kdtl_tbl (l_ctr).lse_id <> 18
7059 THEN -- added subscription contract category
7060 l_no_of_days :=
7061 ABS ( TRUNC ( p_kdtl_tbl (l_ctr).prod_edt
7062 - TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7063 )
7064 + 1
7065 );
7066 actual_amt := p_kdtl_tbl (l_ctr).service_amount;
7067 --bug start 3736860
7068 actual_tax := p_kdtl_tbl (l_ctr).service_tax_amount;
7069 --bug end 3736860
7070 l_new_sdate := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7071 END IF;
7072
7073 l_qty1price := actual_amt / p_kdtl_tbl (l_ctr).old_cp_quantity;
7074 l_old_qty :=
7075 p_kdtl_tbl (l_ctr).old_cp_quantity
7076 - p_kdtl_tbl (l_ctr).new_quantity; -- changed
7077 --bug start 3736860
7078 l_qtyltax := actual_tax / p_kdtl_tbl (l_ctr).old_cp_quantity;
7079
7080 --bug end 3736860
7081 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7082 THEN
7083 fnd_log.STRING (fnd_log.level_statement,
7084 g_module_current
7085 || '.CREATE_CONTRACT_IBSPLIT',
7086 ' cp quantity = '
7087 || p_kdtl_tbl (l_ctr).old_cp_quantity
7088 );
7089 END IF;
7090
7091 ---- changed
7092 IF l_old_qty < 1
7093 THEN
7094 l_old_qty := p_kdtl_tbl (l_ctr).old_cp_quantity;
7095 l_oldamt := p_kdtl_tbl (l_ctr).service_amount;
7096 l_newactprice := 0;
7097 --bug start 3736860
7098 l_oldtax := p_kdtl_tbl (l_ctr).service_tax_amount;
7099 l_newacttax := 0;
7100 --bug end 3736860
7101 ELSE
7102 l_oldamt := l_old_qty * l_qty1price;
7103 l_newactprice :=
7104 p_kdtl_tbl (l_ctr).service_amount - l_oldamt;
7105 -- bug 4274725
7106 --bug start 3736860
7107 l_oldtax := l_old_qty * l_qtyltax;
7108 l_newacttax :=
7109 p_kdtl_tbl (l_ctr).service_tax_amount - l_oldtax;
7110 -- bug 4274725
7111 --bug end 3736860
7112 END IF;
7113
7114 -- end of change
7115 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7116 THEN
7117 fnd_log.STRING (fnd_log.level_statement,
7118 g_module_current
7119 || '.CREATE_CONTRACT_IBSPLIT',
7120 ' l_old_qty = '
7121 || l_old_qty
7122 || ',l_oldamt = '
7123 || l_oldamt
7124 || ',l_newactprice = '
7125 || l_newactprice
7126 );
7127 END IF;
7128
7129 l_oldamt :=
7130 oks_extwar_util_pvt.round_currency_amt
7131 (l_oldamt,
7132 p_kdtl_tbl (l_ctr).service_currency
7133 );
7134 l_covd_rec.negotiated_amount :=
7135 oks_extwar_util_pvt.round_currency_amt
7136 (l_newactprice,
7137 p_kdtl_tbl (l_ctr).service_currency
7138 );
7139 --bug start 3736860
7140 l_covd_rec.tax_amount :=
7141 oks_extwar_util_pvt.round_currency_amt
7142 (l_newacttax,
7143 p_kdtl_tbl (l_ctr).service_currency
7144 );
7145 --bug end 3736860
7146 l_list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7147 l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7148 END IF; ---warranty flag = 'W'
7149
7150 UPDATE okc_k_items
7151 SET number_of_items = l_old_qty
7152 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
7153
7154 UPDATE okc_k_lines_b
7155 SET price_negotiated = NVL (l_oldamt, 0),
7156 price_unit = NVL (p_kdtl_tbl (l_ctr).service_unit_price, 0)
7157 WHERE ID = p_kdtl_tbl (l_ctr).object_line_id;
7158
7159 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7160 THEN
7161 fnd_log.STRING
7162 (fnd_log.level_event,
7163 g_module_current
7164 || '.CREATE_CONTRACT_IBSPLIT.after_update.cov_lvl',
7165 ' update_cov_level(Return status = '
7166 || l_return_status
7167 || ')'
7168 );
7169 END IF;
7170
7171 IF NOT l_return_status = okc_api.g_ret_sts_success
7172 THEN
7173 RAISE g_exception_halt_validation;
7174 END IF;
7175
7176 --bug start 3736860
7177 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
7178
7179 FETCH get_oks_line_dtls
7180 INTO l_id, l_obj_version_num;
7181
7182 CLOSE get_oks_line_dtls;
7183
7184 l_klnv_tbl_in (1).ID := l_id;
7185 l_klnv_tbl_in (1).tax_amount :=
7186 oks_extwar_util_pvt.round_currency_amt
7187 (l_oldtax,
7188 p_kdtl_tbl (l_ctr).service_currency
7189 );
7190 l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
7191 oks_contract_line_pub.update_line
7192 (p_api_version => l_api_version,
7193 p_init_msg_list => l_init_msg_list,
7194 x_return_status => l_return_status,
7195 x_msg_count => x_msg_count,
7196 x_msg_data => x_msg_data,
7197 p_klnv_tbl => l_klnv_tbl_in,
7198 x_klnv_tbl => l_klnv_tbl_out,
7199 p_validate_yn => 'N'
7200 );
7201
7202 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7203 THEN
7204 fnd_log.STRING
7205 (fnd_log.level_event,
7206 g_module_current
7207 || '.CREATE_CONTRACT_IBSPLIT.after_cov_lvl_tax',
7208 'oks_contract_line_pub.update_line(Return status = '
7209 || l_return_status
7210 || ')'
7211 );
7212 END IF;
7213
7214 IF NOT l_return_status = 'S'
7215 THEN
7216 okc_api.set_message (g_app_name,
7217 g_required_value,
7218 g_col_name_token,
7219 'OKS Contract COV LINE'
7220 );
7221 RAISE g_exception_halt_validation;
7222 END IF;
7223
7224 --bug end 3736860
7225 get_sts_code (NULL,
7226 p_kdtl_tbl (l_ctr).hdr_sts,
7227 l_ste_code,
7228 l_sts_code
7229 );
7230 --x_inst_dtls_tbl(l_ctr1).INST_PARENT_ID := p_split_rec.old_cp_id;
7231 l_inst_dtls_tbl (l_ctr1).transaction_date :=
7232 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7233 l_inst_dtls_tbl (l_ctr1).transaction_type := 'SPL';
7234 l_inst_dtls_tbl (l_ctr1).instance_amt_old :=
7235 p_kdtl_tbl (l_ctr).service_amount;
7236 l_inst_dtls_tbl (l_ctr1).instance_qty_old :=
7237 p_kdtl_tbl (l_ctr).old_cp_quantity;
7238 l_inst_dtls_tbl (l_ctr1).old_contract_id :=
7239 p_kdtl_tbl (l_ctr).hdr_id;
7240 l_inst_dtls_tbl (l_ctr1).old_contact_start_date :=
7241 p_kdtl_tbl (l_ctr).hdr_sdt;
7242 l_inst_dtls_tbl (l_ctr1).old_contract_end_date :=
7243 p_kdtl_tbl (l_ctr).hdr_edt;
7244 l_inst_dtls_tbl (l_ctr1).old_service_line_id :=
7245 p_kdtl_tbl (l_ctr).service_line_id;
7246 l_inst_dtls_tbl (l_ctr1).old_service_start_date :=
7247 p_kdtl_tbl (l_ctr).service_sdt;
7248 l_inst_dtls_tbl (l_ctr1).old_service_end_date :=
7249 p_kdtl_tbl (l_ctr).service_edt;
7250 l_inst_dtls_tbl (l_ctr1).old_subline_id :=
7251 p_kdtl_tbl (l_ctr).object_line_id;
7252 l_inst_dtls_tbl (l_ctr1).old_subline_start_date :=
7253 p_kdtl_tbl (l_ctr).prod_sdt;
7254 l_inst_dtls_tbl (l_ctr1).old_subline_end_date :=
7255 p_kdtl_tbl (l_ctr).prod_edt;
7256 l_inst_dtls_tbl (l_ctr1).old_customer :=
7257 p_kdtl_tbl (l_ctr).cust_account;
7258 l_inst_dtls_tbl (l_ctr1).old_k_status := l_sts_code;
7259 l_inst_dtls_tbl (l_ctr1).instance_id_new :=
7260 p_kdtl_tbl (l_ctr).old_cp_id;
7261 l_inst_dtls_tbl (l_ctr1).instance_amt_new := NVL (l_oldamt, 0);
7262 l_inst_dtls_tbl (l_ctr1).instance_qty_new := l_old_qty;
7263 l_inst_dtls_tbl (l_ctr1).new_contract_id :=
7264 p_kdtl_tbl (l_ctr).hdr_id;
7265 l_inst_dtls_tbl (l_ctr1).new_contact_start_date :=
7266 p_kdtl_tbl (l_ctr).hdr_sdt;
7267 l_inst_dtls_tbl (l_ctr1).new_contract_end_date :=
7268 p_kdtl_tbl (l_ctr).hdr_edt;
7269 l_inst_dtls_tbl (l_ctr1).new_service_line_id :=
7270 p_kdtl_tbl (l_ctr).service_line_id;
7271 l_inst_dtls_tbl (l_ctr1).new_service_start_date :=
7272 p_kdtl_tbl (l_ctr).service_sdt;
7273 l_inst_dtls_tbl (l_ctr1).new_service_end_date :=
7274 p_kdtl_tbl (l_ctr).service_edt;
7275 l_inst_dtls_tbl (l_ctr1).new_subline_id :=
7276 p_kdtl_tbl (l_ctr).object_line_id;
7277 l_inst_dtls_tbl (l_ctr1).new_subline_start_date :=
7278 p_kdtl_tbl (l_ctr).prod_sdt;
7279 l_inst_dtls_tbl (l_ctr1).new_subline_end_date :=
7280 p_kdtl_tbl (l_ctr).prod_edt;
7281 l_inst_dtls_tbl (l_ctr1).new_customer :=
7282 p_kdtl_tbl (l_ctr).cust_account;
7283 l_inst_dtls_tbl (l_ctr1).new_k_status := l_sts_code;
7284
7285 --x_inst_dtls_tbl(l_ctr1).SUBLINE_DATE_TERMINATED :=
7286
7287 -- Fixed Bug 2500056 06-Aug-2002
7288 IF p_kdtl_tbl (l_ctr).lse_id = 18
7289 THEN
7290 l_covd_rec.rty_code := 'CONTRACTWARRANTYORDER';
7291 ELSE
7292 l_covd_rec.rty_code := 'CONTRACTSERVICESORDER';
7293 END IF;
7294
7295 l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
7296 l_covd_rec.attach_2_line_id := p_kdtl_tbl (l_ctr).service_line_id;
7297 l_covd_rec.line_number := okc_api.g_miss_char;
7298 l_covd_rec.customer_product_id := p_kdtl_tbl (l_ctr).new_cp_id;
7299 l_covd_rec.product_segment1 := p_kdtl_tbl (l_ctr).prod_name;
7300 l_covd_rec.product_desc := p_kdtl_tbl (l_ctr).prod_description;
7301 l_covd_rec.product_start_date := l_new_sdate;
7302 --TRUNC( p_kdtl_tbl( l_ctr ).prod_sdt ); -- fixed bug2296369
7303 l_covd_rec.product_end_date := TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
7304 l_covd_rec.quantity := p_kdtl_tbl (l_ctr).new_quantity;
7305 l_covd_rec.warranty_flag := l_warranty_flag;
7306 l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
7307 l_order_line_id := Null;
7308 OPEN l_ordline_csr (p_kdtl_tbl (l_ctr).object_line_id);
7309
7310 FETCH l_ordline_csr
7311 INTO l_order_line_id;
7312
7313 CLOSE l_ordline_csr;
7314
7315 l_covd_rec.order_line_id := l_order_line_id;
7316 l_covd_rec.currency_code := p_kdtl_tbl (l_ctr).service_currency;
7317 l_covd_rec.product_sts_code := p_kdtl_tbl (l_ctr).prod_sts_code;
7318 l_covd_rec.upg_orig_system_ref :=
7319 p_kdtl_tbl (l_ctr).upg_orig_system_ref;
7320 l_covd_rec.upg_orig_system_ref_id :=
7321 p_kdtl_tbl (l_ctr).upg_orig_system_ref_id;
7322
7323 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
7324
7325 FETCH l_serv_csr
7326 INTO l_covd_rec.attach_2_line_desc;
7327
7328 CLOSE l_serv_csr;
7329
7330 l_covd_rec.line_renewal_type :=
7331 p_kdtl_tbl (l_ctr).prod_line_renewal_type;
7332 l_covd_rec.prod_item_id := p_kdtl_tbl (l_ctr).new_inventory_item;
7333 l_covd_rec.price_uom := p_kdtl_tbl (l_ctr).price_uom_code;
7334 l_covd_rec.toplvl_uom_code := p_kdtl_tbl (l_ctr).toplvl_uom_code;
7335 --mchoudha added for bug#5233956
7336 l_covd_rec.toplvl_price_qty := p_kdtl_tbl (l_ctr).toplvl_price_qty;
7337 oks_extwar_util_pvt.get_k_pricing_attributes
7338 (p_k_line_id => p_kdtl_tbl (l_ctr).service_line_id,
7339 x_pricing_att => l_price_attribs_in,
7340 x_return_status => l_return_status
7341 );
7342
7343 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7344 THEN
7345 fnd_log.STRING
7346 (fnd_log.level_event,
7347 g_module_current
7348 || '.CREATE_CONTRACT_IBSPLIT.after.price_att',
7349 'oks_extwar_util_pvt.get_k_pricing_attributes(Return status = '
7350 || l_return_status
7351 || ')'
7352 );
7353 END IF;
7354
7355 IF NOT l_return_status = okc_api.g_ret_sts_success
7356 THEN
7357 RAISE g_exception_halt_validation;
7358 END IF;
7359
7360 oks_extwarprgm_pvt.create_k_covered_levels
7361 (p_k_covd_rec => l_covd_rec,
7362 p_price_attribs => l_price_attribs_in,
7363 p_caller => 'IB',
7364 x_order_error => l_temp,
7365 x_covlvl_id => l_covlvl_id,
7366 x_update_line => l_update_line,
7367 x_return_status => l_return_status,
7368 x_msg_count => x_msg_count,
7369 x_msg_data => x_msg_data
7370 );
7371
7372 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7373 THEN
7374 fnd_log.STRING
7375 (fnd_log.level_event,
7376 g_module_current
7377 || '.CREATE_CONTRACT_IBSPLIT.after_create.cov_lvl',
7378 'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
7379 || l_return_status
7380 || ')'
7381 );
7382 END IF;
7383
7384 IF NOT l_return_status = 'S'
7385 THEN
7386 RAISE g_exception_halt_validation;
7387 END IF;
7388
7389 --x_inst_dtls_tbl(l_ctr1+1).INST_PARENT_ID := p_split_rec.old_cp_id;
7390 l_inst_dtls_tbl (l_ctr1 + 1).transaction_date :=
7391 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7392 l_inst_dtls_tbl (l_ctr1 + 1).transaction_type := NULL;
7393 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_old :=
7394 p_kdtl_tbl (l_ctr).service_amount;
7395 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_old :=
7396 p_kdtl_tbl (l_ctr).old_cp_quantity;
7397 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_id :=
7398 p_kdtl_tbl (l_ctr).hdr_id;
7399 l_inst_dtls_tbl (l_ctr1 + 1).old_contact_start_date :=
7400 p_kdtl_tbl (l_ctr).hdr_sdt;
7401 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_end_date :=
7402 p_kdtl_tbl (l_ctr).hdr_edt;
7403 l_inst_dtls_tbl (l_ctr1 + 1).old_service_line_id :=
7404 p_kdtl_tbl (l_ctr).service_line_id;
7405 l_inst_dtls_tbl (l_ctr1 + 1).old_service_start_date :=
7406 p_kdtl_tbl (l_ctr).service_sdt;
7407 l_inst_dtls_tbl (l_ctr1 + 1).old_service_end_date :=
7408 p_kdtl_tbl (l_ctr).service_edt;
7409 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_id :=
7410 p_kdtl_tbl (l_ctr).object_line_id;
7411 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_start_date :=
7412 p_kdtl_tbl (l_ctr).prod_sdt;
7413 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_end_date :=
7414 p_kdtl_tbl (l_ctr).prod_edt;
7415 l_inst_dtls_tbl (l_ctr1 + 1).old_customer :=
7416 p_kdtl_tbl (l_ctr).cust_account;
7417 l_inst_dtls_tbl (l_ctr1 + 1).old_k_status := l_sts_code;
7418 l_inst_dtls_tbl (l_ctr1 + 1).instance_id_new :=
7419 p_kdtl_tbl (l_ctr).new_cp_id;
7420 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_new :=
7421 oks_extwar_util_pvt.round_currency_amt
7422 (l_newactprice,
7423 p_kdtl_tbl (l_ctr).service_currency
7424 );
7425 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_new :=
7426 p_kdtl_tbl (l_ctr).new_quantity;
7427 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_id :=
7428 p_kdtl_tbl (l_ctr).hdr_id;
7429 l_inst_dtls_tbl (l_ctr1 + 1).new_contact_start_date :=
7430 p_kdtl_tbl (l_ctr).hdr_sdt;
7431 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_end_date :=
7432 p_kdtl_tbl (l_ctr).hdr_edt;
7433 l_inst_dtls_tbl (l_ctr1 + 1).new_service_line_id :=
7434 p_kdtl_tbl (l_ctr).service_line_id;
7435 l_inst_dtls_tbl (l_ctr1 + 1).new_service_start_date :=
7436 p_kdtl_tbl (l_ctr).service_sdt;
7437 l_inst_dtls_tbl (l_ctr1 + 1).new_service_end_date :=
7438 p_kdtl_tbl (l_ctr).service_edt;
7439 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_id := l_covlvl_id;
7440 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_start_date := l_new_sdate;
7441 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_end_date :=
7442 TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
7443 l_inst_dtls_tbl (l_ctr1 + 1).new_customer :=
7444 p_kdtl_tbl (l_ctr).cust_account;
7445 l_inst_dtls_tbl (l_ctr1 + 1).new_k_status := l_sts_code;
7446 l_inst_dtls_tbl (l_ctr1 + 1).subline_date_terminated := NULL;
7447 l_new_cp_tbl (1).ID := l_covlvl_id;
7448 oks_bill_sch.adjust_split_bill_sch
7449 (p_old_cp_id => p_kdtl_tbl (l_ctr).object_line_id,
7450 p_new_cp_tbl => l_new_cp_tbl,
7451 x_return_status => l_return_status,
7452 x_msg_count => x_msg_count,
7453 x_msg_data => x_msg_data
7454 );
7455
7456 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7457 THEN
7458 fnd_log.STRING
7459 (fnd_log.level_event,
7460 g_module_current
7461 || '.CREATE_CONTRACT_IBSPLIT.ADJUST_SPLIT_BILL_SCH',
7462 'Return status = ' || l_return_status
7463 );
7464 END IF;
7465
7466 IF NOT l_return_status = 'S'
7467 THEN
7468 RAISE g_exception_halt_validation;
7469 END IF;
7470
7471 -- Fixed Bug 5039806
7472 /*
7473 UPDATE okc_k_lines_b
7474 SET price_negotiated =
7475 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7476 FROM okc_k_lines_b
7477 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
7478 AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id)
7479 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
7480
7481 UPDATE okc_k_headers_b
7482 SET estimated_amount =
7483 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7484 FROM okc_k_lines_b
7485 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
7486 AND lse_id IN (1, 19))
7487 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
7488 */
7489
7490 l_create_oper_instance := 'N';
7491
7492 IF l_opr_instance_id IS NULL
7493 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
7494 THEN
7495 l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
7496 l_create_oper_instance := 'Y';
7497 END IF;
7498
7499 create_transaction_source
7500 (p_create_opr_inst => l_create_oper_instance,
7501 p_source_code => 'IBSPLIT',
7502 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
7503 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
7504 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
7505 p_target_line_id => l_covlvl_id,
7506 x_oper_instance_id => l_opr_instance_id,
7507 x_return_status => l_return_status,
7508 x_msg_count => x_msg_count,
7509 x_msg_data => x_msg_data
7510 );
7511
7512 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7513 THEN
7514 fnd_log.STRING
7515 (fnd_log.level_event,
7516 g_module_current
7517 || '.CREATE_CONTRACT_IBSPLIT.Create_transaction_source',
7518 'Return status = ' || l_return_status
7519 );
7520 END IF;
7521
7522 IF NOT l_return_status = 'S'
7523 THEN
7524 RAISE g_exception_halt_validation;
7525 END IF;
7526
7527 create_source_links
7528 (p_create_opr_inst => l_create_oper_instance,
7529 p_source_code => 'IBSPLIT',
7530 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
7531 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
7532 p_target_line_id => l_covlvl_id,
7533 p_txn_date => p_kdtl_tbl (l_ctr).transaction_date,
7534 x_oper_instance_id => l_renewal_opr_instance_id,
7535 x_return_status => l_return_status,
7536 x_msg_count => x_msg_count,
7537 x_msg_data => x_msg_data
7538 );
7539
7540 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7541 THEN
7542 fnd_log.STRING
7543 (fnd_log.level_event,
7544 g_module_current
7545 || '.CREATE_CONTRACT_IBSPLIT.Create_source_links',
7546 'Return status = ' || l_return_status
7547 );
7548 END IF;
7549
7550 IF NOT l_return_status = 'S'
7551 THEN
7552 RAISE g_exception_halt_validation;
7553 END IF;
7554
7555 IF l_inst_dtls_tbl.COUNT <> 0
7556 THEN
7557 IF l_instparent_id IS NULL
7558 AND l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
7559 THEN
7560 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
7561
7562 FETCH l_refnum_csr
7563 INTO l_ref_num;
7564
7565 CLOSE l_refnum_csr;
7566
7567 l_parameters :=
7568 ' Old CP :'
7569 || p_kdtl_tbl (l_ctr).old_cp_id
7570 || ','
7571 || 'Item Id:'
7572 || p_kdtl_tbl (l_ctr).prod_inventory_item
7573 || ','
7574 || 'Old Quantity:'
7575 || p_kdtl_tbl (l_ctr).old_cp_quantity
7576 || ','
7577 || 'Transaction type :'
7578 || 'SPL'
7579 || ','
7580 || ' Transaction date :'
7581 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
7582 || ','
7583 || 'New quantity:'
7584 || p_kdtl_tbl (l_ctr).new_quantity;
7585 --oks_instance_history
7586 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
7587 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
7588 l_insthist_rec.transaction_type := 'SPL';
7589 l_insthist_rec.transaction_date :=
7590 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7591 l_insthist_rec.reference_number := l_ref_num;
7592 l_insthist_rec.PARAMETERS := l_parameters;
7593 oks_ins_pvt.insert_row (p_api_version => 1.0,
7594 p_init_msg_list => 'T',
7595 x_return_status => l_return_status,
7596 x_msg_count => x_msg_count,
7597 x_msg_data => x_msg_data,
7598 p_insv_rec => l_insthist_rec,
7599 x_insv_rec => x_insthist_rec
7600 );
7601
7602 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
7603 )
7604 THEN
7605 fnd_log.STRING
7606 (fnd_log.level_event,
7607 g_module_current || '.CREATE_K_IBSPLIT',
7608 'oks_ins_pvt.insert_row(Return status = '
7609 || l_return_status
7610 || ')'
7611 );
7612 END IF;
7613
7614 x_return_status := l_return_status;
7615
7616 IF NOT l_return_status = okc_api.g_ret_sts_success
7617 THEN
7618 x_return_status := l_return_status;
7619 RAISE g_exception_halt_validation;
7620 END IF;
7621
7622 l_instparent_id := x_insthist_rec.ID;
7623 END IF;
7624
7625 FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
7626 LOOP
7627 l_inst_dtls_tbl (i).ins_id := l_instparent_id;
7628 END LOOP;
7629
7630 --oks_inst_history_details
7631 oks_ihd_pvt.insert_row (p_api_version => 1.0,
7632 p_init_msg_list => 'T',
7633 x_return_status => l_return_status,
7634 x_msg_count => x_msg_count,
7635 x_msg_data => x_msg_data,
7636 p_ihdv_tbl => l_inst_dtls_tbl,
7637 x_ihdv_tbl => x_inst_dtls_tbl
7638 );
7639
7640 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7641 THEN
7642 fnd_log.STRING
7643 (fnd_log.level_event,
7644 g_module_current || '.CREATE_K_IBSPLIT',
7645 'oks_ihd_pvt.insert_row(Return status = '
7646 || l_return_status
7647 || ')'
7648 );
7649 END IF;
7650
7651 x_return_status := l_return_status;
7652
7653 IF NOT l_return_status = okc_api.g_ret_sts_success
7654 THEN
7655 x_return_status := l_return_status;
7656 RAISE g_exception_halt_validation;
7657 END IF;
7658 END IF;
7659
7660 launch_workflow ( 'INSTALL BASE ACTIVITY : SPLIT '
7661 || fnd_global.local_chr (10)
7662 || 'Contract Number : '
7663 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
7664 || fnd_global.local_chr (10)
7665 || 'Splitted Cust Product : '
7666 || p_kdtl_tbl (l_ctr).old_cp_id
7667 || fnd_global.local_chr (10)
7668 || 'New Customer Product : '
7669 || p_kdtl_tbl (l_ctr).new_cp_id
7670 );
7671 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
7672 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
7673 l_ctr1 := l_ctr1 + 2;
7674 END LOOP;
7675 END IF;
7676 EXCEPTION
7677 WHEN g_exception_halt_validation
7678 THEN
7679 x_return_status := l_return_status;
7680 NULL;
7681 WHEN OTHERS
7682 THEN
7683 x_return_status := okc_api.g_ret_sts_unexp_error;
7684 okc_api.set_message (g_app_name,
7685 g_unexpected_error,
7686 g_sqlcode_token,
7687 SQLCODE,
7688 g_sqlerrm_token,
7689 SQLERRM
7690 );
7691 END;
7692
7693 PROCEDURE update_contract_ibreplace (
7694 p_kdtl_tbl IN contract_tbl,
7695 x_return_status OUT NOCOPY VARCHAR2,
7696 x_msg_count OUT NOCOPY NUMBER,
7697 x_msg_data OUT NOCOPY VARCHAR2
7698 )
7699 IS
7700 --billed upto date
7701 CURSOR l_billend_csr (p_cle_id NUMBER)
7702 IS
7703 SELECT MAX (date_billed_to) date_billed_to
7704 FROM oks_bill_sub_lines
7705 WHERE cle_id = p_cle_id;
7706
7707 CURSOR l_cov_csr (p_cle_id NUMBER)
7708 IS
7709 SELECT ksl1.inheritance_type
7710 FROM oks_k_lines_b ksl, oks_k_lines_b ksl1
7711 WHERE ksl.cle_id = p_cle_id AND ksl1.cle_id = ksl.coverage_id;
7712
7713 --level element id
7714 CURSOR l_rule_csr (p_cle_id NUMBER)
7715 IS
7716 SELECT elmnts.ID
7717 FROM oks_stream_levels_b strm, oks_level_elements elmnts
7718 WHERE strm.cle_id = p_cle_id AND elmnts.rul_id = strm.ID;
7719
7720 --total billed amount
7721 CURSOR l_billed_amount_csr (p_cle_id NUMBER)
7722 IS
7723 SELECT NVL (SUM (amount), 0)
7724 FROM oks_bill_sub_lines_v
7725 WHERE cle_id = p_cle_id;
7726
7727 --credit amount
7728 CURSOR l_credit_csr (p_cle_id NUMBER)
7729 IS
7730 SELECT NVL (SUM (amount), 0)
7731 FROM oks_bill_sub_lines bsl
7732 WHERE bsl.cle_id = p_cle_id
7733 AND EXISTS (SELECT 1
7734 FROM oks_bill_cont_lines bcl
7735 WHERE bcl.ID = bsl.bcl_id AND bill_action = 'TR');
7736
7737 -- bug start 3736860
7738 CURSOR get_oks_line_dtls (p_id NUMBER)
7739 IS
7740 SELECT ID, object_version_number
7741 FROM oks_k_lines_b
7742 WHERE cle_id = p_id;
7743
7744 CURSOR l_bill_tax_csr (p_cle_id NUMBER)
7745 IS
7746 SELECT NVL (SUM (trx_line_tax_amount), 0)
7747 FROM oks_bill_txn_lines
7748 WHERE bsl_id IN (SELECT ID
7749 FROM oks_bill_sub_lines
7750 WHERE cle_id = p_cle_id);
7751
7752 --bug end 3736860
7753 /* Added for Bug#14325727 */
7754 CURSOR l_serv_csr (p_serv_id NUMBER)
7755 IS
7756 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
7757 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
7758 WHERE b.inventory_item_id = t.inventory_item_id
7759 AND b.organization_id = t.organization_id
7760 AND t.LANGUAGE = USERENV ('LANG')
7761 AND b.inventory_item_id = p_serv_id
7762 AND ROWNUM < 2;
7763
7764 /*Commented for Bug#14325727 */
7765 /*
7766 CURSOR l_serv_csr (p_serv_id NUMBER)
7767 IS
7768 SELECT b.concatenated_segments description
7769 FROM mtl_system_items_b_kfv b
7770 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
7771 */
7772 CURSOR l_ordline_csr (p_line_id NUMBER)
7773 IS
7774 SELECT object1_id1
7775 FROM okc_k_rel_objs
7776 WHERE cle_id = p_line_id;
7777
7778 CURSOR check_renewal_link (p_line_id NUMBER)
7779 IS
7780 SELECT object_cle_id
7781 FROM okc_operation_instances op, okc_operation_lines ol
7782 WHERE ol.oie_id = op.ID
7783 AND op.cop_id IN (41, 40)
7784 AND ol.subject_cle_id = p_line_id;
7785
7786 CURSOR check_replace_link (p_line_id NUMBER)
7787 IS
7788 SELECT object_cle_id
7789 FROM okc_operation_instances op, okc_operation_lines ol
7790 WHERE ol.oie_id = op.ID
7791 AND op.cop_id = 11017
7792 AND ol.subject_cle_id = p_line_id;
7793
7794 CURSOR l_refnum_csr (p_cp_id NUMBER)
7795 IS
7796 SELECT instance_number
7797 FROM csi_item_instances
7798 WHERE instance_id = p_cp_id;
7799
7800 l_ref_num VARCHAR2 (30);
7801 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
7802 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
7803 l_instparent_id NUMBER;
7804 l_old_cp_id NUMBER;
7805 l_insthist_rec oks_ins_pvt.insv_rec_type;
7806 x_insthist_rec oks_ins_pvt.insv_rec_type;
7807 l_parameters VARCHAR2 (2000);
7808 l_renewal_id NUMBER;
7809 -- l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
7810 -- l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
7811 -- l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
7812 l_line_rec k_line_service_rec_type;
7813 l_covd_rec k_line_covered_level_rec_type;
7814 l_available_yn CHAR;
7815 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
7816 l_chrid NUMBER := NULL;
7817 l_lineid NUMBER := NULL;
7818 l_days NUMBER := 0;
7819 l_day1price NUMBER := 0;
7820 l_oldamt NUMBER (30, 2) := 0;
7821 l_newamt NUMBER (30, 2) := 0;
7822 l_ctr NUMBER := 0;
7823 l_ctr1 NUMBER := 0;
7824 l_newsdt DATE;
7825 l_newedt DATE;
7826 l_repldt DATE;
7827 l_repl_rule VARCHAR2 (2);
7828 l_duration NUMBER;
7829 l_timeunits VARCHAR2 (240);
7830 l_covlvl_id NUMBER;
7831 --Contract Line Table
7832 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
7833 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
7834 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
7835 l_cov_rec l_cov_csr%ROWTYPE;
7836 l_api_version CONSTANT NUMBER := 1.0;
7837 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
7838 l_list_price NUMBER;
7839 l_no_of_days NUMBER;
7840 l_billed_amount NUMBER;
7841 l_billed_upto_dt DATE;
7842 l_ptr NUMBER := 0;
7843 actual_amount NUMBER := 0;
7844 l_ste_code VARCHAR2 (30);
7845 l_sts_code VARCHAR2 (30);
7846 l_update_line VARCHAR2 (1);
7847 l_temp VARCHAR2 (2000);
7848 l_obj_version_num NUMBER;
7849 l_id NUMBER;
7850 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
7851 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
7852 actual_tax NUMBER := 0;
7853 l_day1tax NUMBER := 0;
7854 l_oldtax NUMBER (30, 2) := 0;
7855 l_newtax NUMBER (30, 2) := 0;
7856 l_taxed_amount NUMBER := 0;
7857 l_warranty_flag VARCHAR2 (2);
7858 l_opr_instance_id NUMBER;
7859 l_renewal_opr_instance_id NUMBER;
7860 l_target_chr_id NUMBER;
7861 l_replace_id NUMBER;
7862 l_source_line_id NUMBER;
7863 l_create_oper_instance VARCHAR2 (1);
7864 l_termdt DATE;
7865 l_order_line_id Number;
7866 BEGIN
7867 x_return_status := okc_api.g_ret_sts_success;
7868 l_old_cp_id := 0;
7869 l_target_chr_id := 0;
7870
7871 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7872 THEN
7873 fnd_log.STRING (fnd_log.level_event,
7874 g_module_current || '.CREATE_CONTRACT_IBREPLACE.',
7875 'count = ' || p_kdtl_tbl.COUNT || ')'
7876 );
7877 END IF;
7878
7879 IF p_kdtl_tbl.COUNT > 0
7880 THEN
7881 l_ctr := p_kdtl_tbl.FIRST;
7882
7883 LOOP
7884 okc_context.set_okc_org_context
7885 (p_kdtl_tbl (l_ctr).hdr_org_id,
7886 p_kdtl_tbl (l_ctr).organization_id
7887 );
7888 l_inst_dtls_tbl.DELETE;
7889 l_ctr1 := 1;
7890 get_sts_code (NULL,
7891 p_kdtl_tbl (l_ctr).prod_sts_code,
7892 l_ste_code,
7893 l_sts_code
7894 );
7895
7896 --IF l_ste_code <> 'ENTERED' THEN
7897 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7898 THEN
7899 fnd_log.STRING
7900 (fnd_log.level_statement,
7901 g_module_current || '.CREATE_CONTRACT_IBREPLACE',
7902 'Service Start Date = '
7903 || p_kdtl_tbl (l_ctr).service_sdt
7904 || '
7905 ,Service End Date = '
7906 || p_kdtl_tbl (l_ctr).service_edt
7907 || ', lse_id= '
7908 || p_kdtl_tbl (l_ctr).lse_id
7909 );
7910 END IF;
7911
7912 l_days :=
7913 ( TRUNC (p_kdtl_tbl (l_ctr).prod_edt)
7914 - TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7915 )
7916 + 1;
7917 l_repldt := trunc(p_kdtl_tbl (l_ctr).transaction_date);
7918
7919 IF TRUNC (l_repldt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7920 THEN
7921 l_repldt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7922 END IF;
7923
7924 l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7925
7926 IF p_kdtl_tbl (l_ctr).lse_id = 18
7927 THEN
7928 l_covd_rec.list_price := 0;
7929 l_covd_rec.negotiated_amount := 0;
7930 l_list_price := 0;
7931 l_oldamt := 0;
7932 l_repl_rule := NULL;
7933 l_newamt := 0;
7934 --bug start 3736860
7935 l_newtax := 0;
7936 l_oldtax := 0;
7937 l_covd_rec.tax_amount := 0;
7938
7939 --bug end 3736860
7940 OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
7941
7942 FETCH l_cov_csr
7943 INTO l_cov_rec;
7944
7945 l_repl_rule := l_cov_rec.inheritance_type;
7946
7947 CLOSE l_cov_csr;
7948
7949 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7950 THEN
7951 fnd_log.STRING (fnd_log.level_statement,
7952 g_module_current
7953 || '.CREATE_CONTRACT_IBREPLACE',
7954 'Replace Rule = ' || l_repl_rule
7955 );
7956 END IF;
7957
7958 /* If product is terminated it can't be extended beyond Its terminated date
7959 so Replace rule will be set only for the remaining period.
7960 */
7961 l_newsdt := l_repldt;
7962 l_termdt := l_repldt;
7963
7964 IF NVL (l_repl_rule, 'R') = 'R'
7965 THEN
7966 l_newedt := p_kdtl_tbl (l_ctr).prod_edt;
7967 ELSIF NVL (l_repl_rule, 'R') = 'F'
7968 THEN
7969 okc_time_util_pub.get_duration
7970 (p_start_date => p_kdtl_tbl (l_ctr).prod_sdt,
7971 p_end_date => p_kdtl_tbl (l_ctr).prod_edt,
7972 x_duration => l_duration,
7973 x_timeunit => l_timeunits,
7974 x_return_status => l_return_status
7975 );
7976
7977 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
7978 )
7979 THEN
7980 fnd_log.STRING
7981 (fnd_log.level_event,
7982 g_module_current
7983 || '.CREATE_CONTRACT_IBREPLACE.after.get_duration',
7984 'Return Status = ' || l_return_status
7985 );
7986 END IF;
7987
7988 IF NOT l_return_status = 'S'
7989 THEN
7990 RAISE g_exception_halt_validation;
7991 END IF;
7992
7993 l_newedt :=
7994 okc_time_util_pub.get_enddate (p_start_date => l_repldt,
7995 p_duration => l_duration,
7996 p_timeunit => l_timeunits
7997 );
7998 END IF;
7999 END IF;
8000
8001 IF p_kdtl_tbl (l_ctr).service_amount IS NOT NULL
8002 THEN
8003 IF p_kdtl_tbl (l_ctr).lse_id IN (25, 9)
8004 THEN
8005 actual_amount := p_kdtl_tbl (l_ctr).service_amount;
8006 actual_tax := p_kdtl_tbl (l_ctr).service_tax_amount;
8007 l_newedt := TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
8008 l_newamt := p_kdtl_tbl (l_ctr).service_amount;
8009 l_oldamt := 0;
8010 l_newtax := p_kdtl_tbl (l_ctr).service_tax_amount;
8011 l_oldtax := 0;
8012 l_newsdt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8013 -- Fixed for bug 4539750
8014 l_termdt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8015 END IF;
8016 END IF;
8017
8018 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8019 THEN
8020 fnd_log.STRING (fnd_log.level_statement,
8021 g_module_current
8022 || '.CREATE_CONTRACT_IBREPLACE',
8023 'New amount = '
8024 || l_newamt
8025 || ',Old amount = '
8026 || l_oldamt
8027 );
8028 END IF;
8029
8030 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8031 THEN
8032 fnd_log.STRING (fnd_log.level_statement,
8033 g_module_current
8034 || '.CREATE_CONTRACT_IBREPLACE',
8035 'New tax = '
8036 || l_newtax
8037 || ',Old tax = '
8038 || l_oldtax
8039 );
8040 END IF;
8041
8042 l_covd_rec.tax_amount :=
8043 oks_extwar_util_pvt.round_currency_amt
8044 (l_newtax,
8045 p_kdtl_tbl (l_ctr).service_currency
8046 );
8047 l_covd_rec.negotiated_amount :=
8048 oks_extwar_util_pvt.round_currency_amt
8049 (l_newamt,
8050 p_kdtl_tbl (l_ctr).service_currency
8051 );
8052 /* Commented for Bug#14829043 */
8053 /*l_covd_rec.list_price :=
8054 oks_extwar_util_pvt.round_currency_amt
8055 ( l_newamt
8056 / p_kdtl_tbl (l_ctr).old_cp_quantity,
8057 p_kdtl_tbl (l_ctr).service_currency
8058 );*/
8059
8060 /* Code added for Bug#14829043 */
8061 BEGIN
8062 SELECT okcl.price_unit,oksl.price_uom
8063 INTO l_covd_rec.list_price, l_covd_rec.price_uom
8064 FROM okc_k_lines_b okcl, oks_k_lines_b oksl
8065 WHERE okcl.id = p_kdtl_tbl (l_ctr).object_line_id
8066 AND okcl.id = oksl.cle_id;
8067 EXCEPTION WHEN OTHERS THEN
8068 IF FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
8069 fnd_log.string(FND_LOG.LEVEL_EVENT,G_MODULE_CURRENT||'.CREATE_CONTRACT_IBREPLACE.price_uom_error', 'Error is: ' || SQLERRM);
8070 END IF;
8071 NULL;
8072 END;
8073 IF FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
8074 fnd_log.string(FND_LOG.LEVEL_EVENT,G_MODULE_CURRENT||'.CREATE_CONTRACT_IBREPLACE',
8075 'Unit Price = '|| l_covd_rec.list_price ||
8076 ', Price UOM = '|| l_covd_rec.price_uom);
8077 END IF;
8078 /* End of code Added for Bug#14829043 */
8079
8080 IF l_ste_code <> 'ENTERED'
8081 THEN
8082 l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).object_line_id;
8083 l_clev_tbl_in (1).date_terminated := l_termdt;
8084 l_clev_tbl_in (1).price_negotiated :=
8085 oks_extwar_util_pvt.round_currency_amt
8086 (l_oldamt,
8087 p_kdtl_tbl (l_ctr).service_currency
8088 );
8089
8090 /* Commented for Bug#14829043*/
8091 /*l_clev_tbl_in (1).price_unit :=
8092 oks_extwar_util_pvt.round_currency_amt
8093 ( p_kdtl_tbl (l_ctr).service_amount
8094 / p_kdtl_tbl (l_ctr).old_cp_quantity,
8095 p_kdtl_tbl (l_ctr).service_currency
8096 ); */
8097 l_clev_tbl_in( 1 ).price_unit := l_covd_rec.list_price; /* Added for Bug#14829043 */
8098 l_clev_tbl_in (1).trn_code := 'REP';
8099 l_clev_tbl_in (1).term_cancel_source := 'IBREPLACE';
8100
8101 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
8102 l_clev_tbl_in (1).sts_code := l_sts_code;
8103
8104 okc_contract_pub.update_contract_line
8105 (p_api_version => l_api_version,
8106 p_init_msg_list => l_init_msg_list,
8107 p_restricted_update => okc_api.g_true,
8108 x_return_status => l_return_status,
8109 x_msg_count => x_msg_count,
8110 x_msg_data => x_msg_data,
8111 p_clev_tbl => l_clev_tbl_in,
8112 x_clev_tbl => l_clev_tbl_out
8113 );
8114
8115 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8116 THEN
8117 fnd_log.STRING
8118 (fnd_log.level_event,
8119 g_module_current
8120 || '.CREATE_CONTRACT_IBREPLACE.update_cov_lvl',
8121 'okc_contract_pub.update_contract_line(Return status = '
8122 || l_return_status
8123 || 'count = '
8124 || p_kdtl_tbl.COUNT
8125 || ')'
8126 );
8127 END IF;
8128
8129 IF NOT l_return_status = okc_api.g_ret_sts_success
8130 THEN
8131 RAISE g_exception_halt_validation;
8132 END IF;
8133
8134 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
8135
8136 FETCH get_oks_line_dtls
8137 INTO l_id, l_obj_version_num;
8138
8139 CLOSE get_oks_line_dtls;
8140
8141 l_klnv_tbl_in (1).ID := l_id;
8142 l_klnv_tbl_in (1).tax_amount :=
8143 oks_extwar_util_pvt.round_currency_amt
8144 (l_oldtax,
8145 p_kdtl_tbl (l_ctr).service_currency
8146 );
8147 l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
8148 oks_contract_line_pub.update_line
8149 (p_api_version => l_api_version,
8150 p_init_msg_list => l_init_msg_list,
8151 x_return_status => l_return_status,
8152 x_msg_count => x_msg_count,
8153 x_msg_data => x_msg_data,
8154 p_klnv_tbl => l_klnv_tbl_in,
8155 x_klnv_tbl => l_klnv_tbl_out,
8156 p_validate_yn => 'N'
8157 );
8158
8159 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8160 THEN
8161 fnd_log.STRING
8162 (fnd_log.level_event,
8163 g_module_current
8164 || '.CREATE_CONTRACT_IBREPLACE.after_update.cov_lvl_tax',
8165 'oks_contract_line_pub.update_line(Return status = '
8166 || l_return_status
8167 || ')'
8168 );
8169 END IF;
8170
8171 IF NOT l_return_status = 'S'
8172 THEN
8173 okc_api.set_message (g_app_name,
8174 g_required_value,
8175 g_col_name_token,
8176 'OKS Contract COV LINE'
8177 );
8178 RAISE g_exception_halt_validation;
8179 END IF;
8180
8181 l_inst_dtls_tbl (l_ctr1).subline_date_terminated :=
8182 TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8183 ELSE
8184 -- Cancel the line
8185
8186 -- added for the bug # 6000133
8187 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
8188
8189 oks_change_status_pvt.update_line_status
8190 (x_return_status => l_return_status,
8191 x_msg_data => x_msg_data,
8192 x_msg_count => x_msg_count,
8193 p_init_msg_list => 'F',
8194 p_id => p_kdtl_tbl (l_ctr).hdr_id,
8195 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
8196 p_new_sts_code => l_sts_code,
8197 p_canc_reason_code => 'REPLACE',
8198 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
8199 p_old_ste_code => 'ENTERED',
8200 p_new_ste_code => 'CANCELLED',
8201 p_term_cancel_source => 'IBREPLACE',
8202 p_date_cancelled => TRUNC (l_termdt),
8203 p_comments => NULL,
8204 p_validate_status => 'N'
8205 );
8206
8207 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8208 THEN
8209 fnd_log.STRING
8210 (fnd_log.level_event,
8211 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
8212 'okc_contract_pub.update_contract_line(Return status ='
8213 || l_return_status
8214 || ')'
8215 );
8216 END IF;
8217
8218 IF NOT l_return_status = okc_api.g_ret_sts_success
8219 THEN
8220 RAISE g_exception_halt_validation;
8221 END IF;
8222
8223 l_inst_dtls_tbl (l_ctr1).date_cancelled := TRUNC (l_termdt);
8224 END IF;
8225
8226 get_sts_code (NULL,
8227 p_kdtl_tbl (l_ctr).hdr_sts,
8228 l_ste_code,
8229 l_sts_code
8230 );
8231 l_inst_dtls_tbl (l_ctr1).transaction_date :=
8232 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8233 l_inst_dtls_tbl (l_ctr1).transaction_type := 'RPL';
8234 l_inst_dtls_tbl (l_ctr1).instance_amt_old :=
8235 p_kdtl_tbl (l_ctr).service_amount;
8236 l_inst_dtls_tbl (l_ctr1).instance_qty_old :=
8237 p_kdtl_tbl (l_ctr).new_quantity;
8238 l_inst_dtls_tbl (l_ctr1).old_contract_id :=
8239 p_kdtl_tbl (l_ctr).hdr_id;
8240 l_inst_dtls_tbl (l_ctr1).old_contact_start_date :=
8241 p_kdtl_tbl (l_ctr).hdr_sdt;
8242 l_inst_dtls_tbl (l_ctr1).old_contract_end_date :=
8243 p_kdtl_tbl (l_ctr).hdr_edt;
8244 l_inst_dtls_tbl (l_ctr1).old_service_line_id :=
8245 p_kdtl_tbl (l_ctr).service_line_id;
8246 l_inst_dtls_tbl (l_ctr1).old_service_start_date :=
8247 p_kdtl_tbl (l_ctr).service_sdt;
8248 l_inst_dtls_tbl (l_ctr1).old_service_end_date :=
8249 p_kdtl_tbl (l_ctr).service_edt;
8250 l_inst_dtls_tbl (l_ctr1).old_subline_id :=
8251 p_kdtl_tbl (l_ctr).object_line_id;
8252 l_inst_dtls_tbl (l_ctr1).old_subline_start_date :=
8253 p_kdtl_tbl (l_ctr).prod_sdt;
8254 l_inst_dtls_tbl (l_ctr1).old_subline_end_date :=
8255 p_kdtl_tbl (l_ctr).prod_edt;
8256 l_inst_dtls_tbl (l_ctr1).old_customer :=
8257 p_kdtl_tbl (l_ctr).cust_account;
8258 l_inst_dtls_tbl (l_ctr1).old_k_status := l_sts_code;
8259 --l_inst_dtls_tbl(l_ctr1).SUBLINE_DATE_TERMINATED := TRUNC(p_kdtl_tbl( l_ctr ).prod_sdt);
8260 l_inst_dtls_tbl (l_ctr1).instance_id_new :=
8261 p_kdtl_tbl (l_ctr).new_cp_id;
8262 l_inst_dtls_tbl (l_ctr1).instance_amt_new :=
8263 oks_extwar_util_pvt.round_currency_amt
8264 (l_oldamt,
8265 p_kdtl_tbl (l_ctr).service_currency
8266 );
8267 l_inst_dtls_tbl (l_ctr1).instance_qty_new :=
8268 p_kdtl_tbl (l_ctr).new_quantity;
8269 l_inst_dtls_tbl (l_ctr1).new_contract_id :=
8270 p_kdtl_tbl (l_ctr).hdr_id;
8271 l_inst_dtls_tbl (l_ctr1).new_contact_start_date :=
8272 p_kdtl_tbl (l_ctr).hdr_sdt;
8273 l_inst_dtls_tbl (l_ctr1).new_contract_end_date :=
8274 p_kdtl_tbl (l_ctr).hdr_edt;
8275 l_inst_dtls_tbl (l_ctr1).new_service_line_id :=
8276 p_kdtl_tbl (l_ctr).service_line_id;
8277 l_inst_dtls_tbl (l_ctr1).new_service_start_date :=
8278 p_kdtl_tbl (l_ctr).service_sdt;
8279 l_inst_dtls_tbl (l_ctr1).new_service_end_date :=
8280 p_kdtl_tbl (l_ctr).service_edt;
8281 l_inst_dtls_tbl (l_ctr1).new_subline_id :=
8282 p_kdtl_tbl (l_ctr).object_line_id;
8283 l_inst_dtls_tbl (l_ctr1).new_subline_start_date :=
8284 p_kdtl_tbl (l_ctr).prod_sdt;
8285 l_inst_dtls_tbl (l_ctr1).new_subline_end_date :=
8286 p_kdtl_tbl (l_ctr).prod_edt;
8287 l_inst_dtls_tbl (l_ctr1).new_customer :=
8288 p_kdtl_tbl (l_ctr).cust_account;
8289 l_inst_dtls_tbl (l_ctr1).new_k_status := l_sts_code;
8290
8291 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8292 THEN
8293 fnd_log.STRING (fnd_log.level_statement,
8294 g_module_current
8295 || '.CREATE_CONTRACT_IBREPLACE',
8296 'New End date = '
8297 || l_newedt
8298 || ',New start Date = '
8299 || TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
8300 || ',Old Amount= '
8301 || l_oldamt
8302 || 'New Amount = '
8303 || l_newamt
8304 );
8305 END IF;
8306
8307 l_lineid := p_kdtl_tbl (l_ctr).service_line_id;
8308 l_inst_dtls_tbl (l_ctr1 + 1).new_service_line_id := l_lineid;
8309 l_inst_dtls_tbl (l_ctr1 + 1).new_service_start_date :=
8310 p_kdtl_tbl (l_ctr).service_sdt;
8311 l_inst_dtls_tbl (l_ctr1 + 1).new_service_end_date :=
8312 p_kdtl_tbl (l_ctr).service_edt;
8313
8314 -- Fixed Bug 2500056 06-Aug-2002
8315 IF p_kdtl_tbl (l_ctr).lse_id = 18
8316 THEN
8317 l_covd_rec.rty_code := 'CONTRACTWARRANTYORDER';
8318 ELSE
8319 l_covd_rec.rty_code := 'CONTRACTSERVICESORDER';
8320 END IF;
8321 l_order_line_id := null;
8322 OPEN l_ordline_csr (p_kdtl_tbl (l_ctr).object_line_id);
8323
8324 FETCH l_ordline_csr
8325 INTO l_order_line_id;
8326
8327 CLOSE l_ordline_csr;
8328
8329 l_covd_rec.order_line_id := l_order_line_id;
8330 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
8331
8332 FETCH l_serv_csr
8333 INTO l_covd_rec.attach_2_line_desc;
8334
8335 CLOSE l_serv_csr;
8336
8337 IF p_kdtl_tbl (l_ctr).lse_id = 25
8338 THEN
8339 l_warranty_flag := 'E';
8340 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
8341 AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
8342 THEN
8343 l_warranty_flag := 'S';
8344 ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
8345 THEN
8346 l_warranty_flag := 'W';
8347 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
8348 AND p_kdtl_tbl (l_ctr).scs_code = 'SUBSCRIPTION'
8349 THEN
8350 l_warranty_flag := 'SU';
8351 END IF;
8352
8353 l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
8354 l_covd_rec.attach_2_line_id := l_lineid;
8355 l_covd_rec.line_number := 1;
8356 l_covd_rec.customer_product_id := p_kdtl_tbl (l_ctr).new_cp_id;
8357 l_covd_rec.product_start_date := l_newsdt;
8358 l_covd_rec.product_end_date := TRUNC (l_newedt);
8359 l_covd_rec.quantity := p_kdtl_tbl (l_ctr).new_quantity;
8360 l_covd_rec.warranty_flag := l_warranty_flag;
8361 l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
8362 l_covd_rec.currency_code := p_kdtl_tbl (l_ctr).service_currency;
8363 l_covd_rec.product_sts_code := p_kdtl_tbl (l_ctr).prod_sts_code;
8364 l_covd_rec.upg_orig_system_ref :=
8365 p_kdtl_tbl (l_ctr).upg_orig_system_ref;
8366 l_covd_rec.upg_orig_system_ref_id :=
8367 p_kdtl_tbl (l_ctr).upg_orig_system_ref_id;
8368 l_covd_rec.line_renewal_type :=
8369 p_kdtl_tbl (l_ctr).prod_line_renewal_type;
8370 l_covd_rec.prod_item_id := p_kdtl_tbl (l_ctr).new_inventory_item;
8371 l_covd_rec.price_uom := p_kdtl_tbl (l_ctr).price_uom_code;
8372 l_covd_rec.toplvl_uom_code := p_kdtl_tbl (l_ctr).toplvl_uom_code;
8373 --mchoudha added for bug#5233956
8374 l_covd_rec.toplvl_price_qty := p_kdtl_tbl (l_ctr).toplvl_price_qty;
8375 oks_extwarprgm_pvt.create_k_covered_levels
8376 (p_k_covd_rec => l_covd_rec,
8377 p_price_attribs => l_price_attribs_in,
8378 p_caller => 'IB',
8379 x_order_error => l_temp,
8380 x_covlvl_id => l_covlvl_id,
8381 x_update_line => l_update_line,
8382 x_return_status => l_return_status,
8383 x_msg_count => x_msg_count,
8384 x_msg_data => x_msg_data
8385 );
8386
8387 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8388 THEN
8389 fnd_log.STRING
8390 (fnd_log.level_event,
8391 g_module_current
8392 || '.CREATE_CONTRACT_IBREPLACE.create_cov_lvl',
8393 'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
8394 || l_return_status
8395 );
8396 END IF;
8397
8398 IF NOT l_return_status = 'S'
8399 THEN
8400 RAISE g_exception_halt_validation;
8401 END IF;
8402
8403 IF l_ste_code = 'ENTERED'
8404 THEN
8405 -- UPdate topline price negotiated.
8406 UPDATE okc_k_lines_b
8407 SET price_negotiated = price_negotiated + l_newamt
8408 WHERE ID = l_lineid;
8409
8410 -- Update header estimated amount
8411 UPDATE okc_k_headers_b
8412 SET estimated_amount = estimated_amount + l_newamt
8413 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
8414
8415 -- Update topline tax amount
8416 UPDATE oks_k_lines_b
8417 SET tax_amount = tax_amount + l_newtax
8418 WHERE cle_id = l_lineid;
8419
8420 -- Update header tax amount
8421 UPDATE oks_k_headers_b
8422 SET tax_amount = tax_amount + l_newtax
8423 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
8424 END IF;
8425
8426 l_inst_dtls_tbl (l_ctr1 + 1).transaction_date :=
8427 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8428 l_inst_dtls_tbl (l_ctr1 + 1).transaction_type := 'RPL';
8429 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_old :=
8430 p_kdtl_tbl (l_ctr).service_amount;
8431 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_old :=
8432 p_kdtl_tbl (l_ctr).new_quantity;
8433 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_id :=
8434 p_kdtl_tbl (l_ctr).hdr_id;
8435 l_inst_dtls_tbl (l_ctr1 + 1).old_contact_start_date :=
8436 p_kdtl_tbl (l_ctr).hdr_sdt;
8437 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_end_date :=
8438 p_kdtl_tbl (l_ctr).hdr_edt;
8439 l_inst_dtls_tbl (l_ctr1 + 1).old_service_line_id :=
8440 p_kdtl_tbl (l_ctr).service_line_id;
8441 l_inst_dtls_tbl (l_ctr1 + 1).old_service_start_date :=
8442 p_kdtl_tbl (l_ctr).service_sdt;
8443 l_inst_dtls_tbl (l_ctr1 + 1).old_service_end_date :=
8444 p_kdtl_tbl (l_ctr).service_edt;
8445 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_id :=
8446 p_kdtl_tbl (l_ctr).object_line_id;
8447 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_start_date :=
8448 p_kdtl_tbl (l_ctr).prod_sdt;
8449 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_end_date :=
8450 p_kdtl_tbl (l_ctr).prod_edt;
8451 l_inst_dtls_tbl (l_ctr1 + 1).old_customer :=
8452 p_kdtl_tbl (l_ctr).cust_account;
8453 l_inst_dtls_tbl (l_ctr1 + 1).old_k_status := l_sts_code;
8454 l_inst_dtls_tbl (l_ctr1 + 1).subline_date_terminated := NULL;
8455 l_inst_dtls_tbl (l_ctr1 + 1).instance_id_new :=
8456 p_kdtl_tbl (l_ctr).new_cp_id;
8457 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_new :=
8458 oks_extwar_util_pvt.round_currency_amt
8459 (l_newamt,
8460 p_kdtl_tbl (l_ctr).service_currency
8461 );
8462 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_new :=
8463 p_kdtl_tbl (l_ctr).new_quantity;
8464 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_id :=
8465 p_kdtl_tbl (l_ctr).hdr_id;
8466 l_inst_dtls_tbl (l_ctr1 + 1).new_contact_start_date :=
8467 p_kdtl_tbl (l_ctr).hdr_sdt;
8468 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_end_date :=
8469 p_kdtl_tbl (l_ctr).hdr_edt;
8470 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_id := l_covlvl_id;
8471 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_start_date :=
8472 TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8473 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_end_date :=
8474 TRUNC (l_newedt);
8475 l_inst_dtls_tbl (l_ctr1 + 1).new_customer :=
8476 p_kdtl_tbl (l_ctr).cust_account;
8477 l_inst_dtls_tbl (l_ctr1 + 1).new_k_status := l_sts_code;
8478
8479 -------Billing Schedule
8480 IF p_kdtl_tbl (l_ctr).lse_id IN (9, 25)
8481 THEN -- added subscription contract category
8482 oks_bill_sch.adjust_replace_product_bs
8483 (p_old_cp_id => p_kdtl_tbl (l_ctr).object_line_id,
8484 p_new_cp_id => l_covlvl_id,
8485 x_return_status => l_return_status,
8486 x_msg_count => x_msg_count,
8487 x_msg_data => x_msg_data
8488 );
8489
8490 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8491 THEN
8492 fnd_log.STRING
8493 (fnd_log.level_event,
8494 g_module_current
8495 || '.CREATE_CONTRACT_IBREPLACE.OKS_BILL_SCH.ADJUST_REPLACE_PRODUCT_BS',
8496 'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8497 || l_return_status
8498 );
8499 END IF;
8500
8501 IF NOT l_return_status = 'S'
8502 THEN
8503 RAISE g_exception_halt_validation;
8504 END IF;
8505 END IF;
8506
8507 l_create_oper_instance := 'N';
8508
8509 IF l_opr_instance_id IS NULL
8510 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
8511 THEN
8512 l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
8513 l_create_oper_instance := 'Y';
8514 END IF;
8515
8516 create_transaction_source
8517 (p_create_opr_inst => l_create_oper_instance,
8518 p_source_code => 'REPLACE',
8519 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
8520 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
8521 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
8522 p_target_line_id => l_covlvl_id,
8523 x_oper_instance_id => l_opr_instance_id,
8524 x_return_status => l_return_status,
8525 x_msg_count => x_msg_count,
8526 x_msg_data => x_msg_data
8527 );
8528
8529 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8530 THEN
8531 fnd_log.STRING
8532 (fnd_log.level_event,
8533 g_module_current
8534 || '.CREATE_CONTRACT_IBREPLACE.Create_transaction_source',
8535 'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8536 || l_return_status
8537 );
8538 END IF;
8539
8540 IF NOT l_return_status = 'S'
8541 THEN
8542 RAISE g_exception_halt_validation;
8543 END IF;
8544
8545 create_source_links
8546 (p_create_opr_inst => l_create_oper_instance,
8547 p_source_code => 'REPLACE',
8548 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
8549 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
8550 p_target_line_id => l_covlvl_id,
8551 p_txn_date => p_kdtl_tbl (l_ctr).transaction_date,
8552 x_oper_instance_id => l_renewal_opr_instance_id,
8553 x_return_status => l_return_status,
8554 x_msg_count => x_msg_count,
8555 x_msg_data => x_msg_data
8556 );
8557
8558 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8559 THEN
8560 fnd_log.STRING
8561 (fnd_log.level_event,
8562 g_module_current
8563 || '.CREATE_CONTRACT_IBREPLACE.Create_source_links',
8564 'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8565 || l_return_status
8566 );
8567 END IF;
8568
8569 IF NOT l_return_status = 'S'
8570 THEN
8571 RAISE g_exception_halt_validation;
8572 END IF;
8573
8574 IF l_inst_dtls_tbl.COUNT <> 0
8575 THEN
8576 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
8577 THEN
8578 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
8579
8580 FETCH l_refnum_csr
8581 INTO l_ref_num;
8582
8583 CLOSE l_refnum_csr;
8584
8585 l_parameters :=
8586 ' Old CP :'
8587 || p_kdtl_tbl (l_ctr).old_cp_id
8588 || ','
8589 || 'Item Id:'
8590 || p_kdtl_tbl (l_ctr).prod_inventory_item
8591 || ','
8592 || 'Old Quantity:'
8593 || p_kdtl_tbl (l_ctr).current_cp_quantity
8594 || ','
8595 || 'Transaction type :'
8596 || 'RPL'
8597 || ','
8598 || ' Transaction date :'
8599 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
8600 || ','
8601 || 'New CP:'
8602 || p_kdtl_tbl (l_ctr).new_cp_id;
8603 --oks_instance_history
8604 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
8605 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
8606 l_insthist_rec.transaction_type := 'RPL';
8607 l_insthist_rec.transaction_date :=
8608 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8609 l_insthist_rec.reference_number := l_ref_num;
8610 l_insthist_rec.PARAMETERS := l_parameters;
8611 oks_ins_pvt.insert_row (p_api_version => 1.0,
8612 p_init_msg_list => 'T',
8613 x_return_status => l_return_status,
8614 x_msg_count => x_msg_count,
8615 x_msg_data => x_msg_data,
8616 p_insv_rec => l_insthist_rec,
8617 x_insv_rec => x_insthist_rec
8618 );
8619
8620 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
8621 )
8622 THEN
8623 fnd_log.STRING
8624 (fnd_log.level_event,
8625 g_module_current || '.CREATE_IBREPLACE',
8626 'oks_ins_pvt.insert_row(Return status = '
8627 || l_return_status
8628 || ')'
8629 );
8630 END IF;
8631
8632 x_return_status := l_return_status;
8633
8634 IF NOT l_return_status = okc_api.g_ret_sts_success
8635 THEN
8636 x_return_status := l_return_status;
8637 RAISE g_exception_halt_validation;
8638 END IF;
8639
8640 l_instparent_id := x_insthist_rec.ID;
8641 END IF;
8642
8643 FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
8644 LOOP
8645 l_inst_dtls_tbl (i).ins_id := l_instparent_id;
8646 END LOOP;
8647
8648 --oks_inst_history_details
8649 oks_ihd_pvt.insert_row (p_api_version => 1.0,
8650 p_init_msg_list => 'T',
8651 x_return_status => l_return_status,
8652 x_msg_count => x_msg_count,
8653 x_msg_data => x_msg_data,
8654 p_ihdv_tbl => l_inst_dtls_tbl,
8655 x_ihdv_tbl => x_inst_dtls_tbl
8656 );
8657
8658 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8659 THEN
8660 fnd_log.STRING
8661 (fnd_log.level_event,
8662 g_module_current || '.CREATE_K_IBREPLACE',
8663 'oks_ihd_pvt.insert_row(Return status = '
8664 || l_return_status
8665 || ')'
8666 );
8667 END IF;
8668
8669 x_return_status := l_return_status;
8670
8671 IF NOT l_return_status = okc_api.g_ret_sts_success
8672 THEN
8673 x_return_status := l_return_status;
8674 RAISE g_exception_halt_validation;
8675 END IF;
8676 END IF;
8677
8678 launch_workflow ( 'INSTALL BASE ACTIVITY : REPLACE '
8679 || fnd_global.local_chr (10)
8680 || 'Contract Number : '
8681 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
8682 || fnd_global.local_chr (10)
8683 || 'Old Cust Product : '
8684 || p_kdtl_tbl (l_ctr).old_cp_id
8685 || fnd_global.local_chr (10)
8686 || 'Replaced Cust Product : '
8687 || p_kdtl_tbl (l_ctr).new_cp_id
8688 );
8689 --END IF;
8690 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
8691 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
8692 l_ctr1 := l_ctr1 + 2;
8693 END LOOP;
8694 END IF;
8695 EXCEPTION
8696 WHEN g_exception_halt_validation
8697 THEN
8698 x_return_status := l_return_status;
8699 NULL;
8700 WHEN OTHERS
8701 THEN
8702 x_return_status := okc_api.g_ret_sts_unexp_error;
8703 okc_api.set_message (g_app_name,
8704 g_unexpected_error,
8705 g_sqlcode_token,
8706 SQLCODE,
8707 g_sqlerrm_token,
8708 SQLERRM
8709 );
8710 END;
8711
8712 PROCEDURE create_contract_ibreturn (
8713 p_kdtl_tbl IN contract_tbl,
8714 x_return_status OUT NOCOPY VARCHAR2,
8715 x_msg_count OUT NOCOPY NUMBER,
8716 x_msg_data OUT NOCOPY VARCHAR2
8717 )
8718 IS
8719 /* Added for Bug#14325727 */
8720 CURSOR l_serv_csr (p_serv_id NUMBER)
8721 IS
8722 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
8723 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
8724 WHERE b.inventory_item_id = t.inventory_item_id
8725 AND b.organization_id = t.organization_id
8726 AND t.LANGUAGE = USERENV ('LANG')
8727 AND b.inventory_item_id = p_serv_id
8728 AND ROWNUM < 2;
8729
8730 /*Commented for Bug#14325727 */
8731 /*CURSOR l_serv_csr (p_serv_id NUMBER)
8732 IS
8733 SELECT t.description NAME
8734 FROM mtl_system_items_tl t
8735 WHERE t.inventory_item_id = p_serv_id
8736 AND t.LANGUAGE = USERENV ('LANG')
8737 AND ROWNUM < 2;
8738 */
8739
8740 CURSOR l_refnum_csr (p_cp_id NUMBER)
8741 IS
8742 SELECT instance_number
8743 FROM csi_item_instances
8744 WHERE instance_id = p_cp_id;
8745
8746 Cursor l_hdr_sts_csr(p_hdr_id Number)
8747 Is
8748 Select sts_code
8749 From Okc_k_headers_all_b
8750 WHere id = p_hdr_id;
8751
8752 l_hdr_status Varchar2(240);
8753
8754 l_ref_num VARCHAR2 (30);
8755 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
8756 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
8757 l_instparent_id NUMBER;
8758 l_old_cp_id NUMBER;
8759 l_insthist_rec oks_ins_pvt.insv_rec_type;
8760 x_insthist_rec oks_ins_pvt.insv_rec_type;
8761 l_parameters VARCHAR2 (2000);
8762 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
8763 --SalesCredit
8764 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
8765 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
8766 l_line_rec k_line_service_rec_type;
8767 l_covd_rec k_line_covered_level_rec_type;
8768 l_available_yn CHAR;
8769 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
8770 l_chrid NUMBER := NULL;
8771 l_lineid NUMBER := NULL;
8772 l_days NUMBER := 0;
8773 l_day1price NUMBER := 0;
8774 l_oldamt NUMBER := 0;
8775 l_ctr NUMBER := 0;
8776 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
8777 --Contract Line Table
8778 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
8779 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
8780 l_api_version CONSTANT NUMBER := 1.0;
8781 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
8782 l_retdt DATE;
8783 l_ste_code VARCHAR2 (30);
8784 l_sts_code VARCHAR2 (30);
8785 l_suppress_credit VARCHAR2 (2) := 'N';
8786 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
8787 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
8788 l_full_credit VARCHAR2 (2) := 'N';
8789 l_rnrl_rec_out oks_renew_util_pvt.rnrl_rec_type;
8790 l_service_name VARCHAR2 (2000);
8791 date_terminated DATE;
8792 date_cancelled DATE;
8793 l_alllines_terminated VARCHAR2 (1);
8794 l_alllines_cancelled VARCHAR2 (1);
8795 l_term_date_flag VARCHAR2 (1);
8796 l_credit_amount VARCHAR2 (30);
8797 BEGIN
8798 x_return_status := okc_api.g_ret_sts_success;
8799 l_old_cp_id := 0;
8800
8801 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8802 THEN
8803 fnd_log.STRING (fnd_log.level_event,
8804 g_module_current || '.Create_Contract_IBRETURN.',
8805 'count = ' || p_kdtl_tbl.COUNT || ')'
8806 );
8807 END IF;
8808
8809 IF p_kdtl_tbl.COUNT > 0
8810 THEN
8811 l_ctr := p_kdtl_tbl.FIRST;
8812
8813 LOOP
8814
8815 get_sts_code (NULL,
8816 p_kdtl_tbl (l_ctr).hdr_sts,
8817 l_ste_code,
8818 l_sts_code
8819 );
8820
8821 IF l_ste_code = 'HOLD'
8822 THEN
8823 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
8824 THEN
8825 fnd_log.STRING (fnd_log.level_error,
8826 g_module_current
8827 || '.CREATE_CONTRACT_IBRETURN.ERROR',
8828 ' Contract '
8829 || p_kdtl_tbl (l_ctr).contract_number
8830 || ' in QA_HOLD status'
8831 );
8832 END IF;
8833
8834 l_return_status := okc_api.g_ret_sts_error;
8835 okc_api.set_message (g_app_name,
8836 g_invalid_value,
8837 g_col_name_token,
8838 'Return not allowed. Contract '
8839 || p_kdtl_tbl (l_ctr).contract_number
8840 || 'is in QA_HOLD status'
8841 );
8842 RAISE g_exception_halt_validation;
8843 END IF;
8844
8845 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
8846 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
8847 END LOOP;
8848 END IF;
8849
8850 IF p_kdtl_tbl.COUNT > 0
8851 THEN
8852 l_ctr := p_kdtl_tbl.FIRST;
8853
8854 LOOP
8855 --Fix for Bug 5406201
8856 l_clev_tbl_in.delete;
8857 l_chrv_tbl_in.delete;
8858
8859 l_inst_dtls_tbl.DELETE;
8860
8861 okc_context.set_okc_org_context
8862 (p_kdtl_tbl (l_ctr).hdr_org_id,
8863 p_kdtl_tbl (l_ctr).organization_id
8864 );
8865 get_sts_code (NULL,
8866 p_kdtl_tbl (l_ctr).prod_sts_code,
8867 l_ste_code,
8868 l_sts_code
8869 );
8870
8871 IF l_ste_code <> 'ENTERED'
8872 THEN
8873 l_retdt := p_kdtl_tbl (l_ctr).termination_date;
8874
8875 IF (TRUNC (l_retdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
8876 THEN
8877 l_retdt := p_kdtl_tbl (l_ctr).prod_sdt;
8878 END IF;
8879
8880 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8881 THEN
8882 fnd_log.STRING (fnd_log.level_statement,
8883 g_module_current
8884 || '.CREATE_CONTRACT_IBRETURN',
8885 'Credit option = '
8886 || p_kdtl_tbl (l_ctr).raise_credit
8887 );
8888 END IF;
8889
8890 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_retdt)
8891 THEN
8892 l_retdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
8893 l_suppress_credit := 'Y';
8894 l_term_date_flag := 'Y';
8895 ELSE
8896 IF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'FULL'
8897 THEN
8898 l_full_credit := 'Y';
8899 --l_retdt := p_kdtl_tbl( l_ctr ).prod_sdt;
8900 l_suppress_credit := 'N';
8901 ELSIF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'NONE'
8902 THEN
8903 l_suppress_credit := 'Y';
8904 l_full_credit := 'N';
8905 ELSIF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'CALCULATED'
8906 THEN
8907 l_suppress_credit := 'N';
8908 l_full_credit := 'N';
8909 ELSIF p_kdtl_tbl (l_ctr).raise_credit IS NULL
8910 THEN
8911 -- Get the credit option from gcd
8912 l_credit_amount :=
8913 oks_ib_util_pvt.get_credit_option
8914 (p_party_id => p_kdtl_tbl
8915 (l_ctr).party_id,
8916 p_org_id => p_kdtl_tbl
8917 (l_ctr).hdr_org_id,
8918 p_transaction_date => TRUNC (l_retdt)
8919 );
8920
8921 IF fnd_log.level_statement >=
8922 fnd_log.g_current_runtime_level
8923 THEN
8924 fnd_log.STRING (fnd_log.level_statement,
8925 g_module_current
8926 || '.CREATE_CONTRACT_IBRETURN',
8927 'Credit option from GCD = '
8928 || l_credit_amount
8929 );
8930 END IF;
8931
8932 IF UPPER (l_credit_amount) = 'FULL'
8933 THEN
8934 l_full_credit := 'Y';
8935 --l_retdt := p_kdtl_tbl( l_ctr ).prod_sdt;
8936 l_suppress_credit := 'N';
8937 ELSIF UPPER (l_credit_amount) = 'NONE'
8938 THEN
8939 l_suppress_credit := 'Y';
8940 l_full_credit := 'N';
8941 ELSIF l_credit_amount = 'CALCULATED'
8942 THEN
8943 l_suppress_credit := 'N';
8944 l_full_credit := 'N';
8945 END IF;
8946 END IF;
8947 END IF;
8948
8949 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8950 THEN
8951 fnd_log.STRING (fnd_log.level_statement,
8952 g_module_current
8953 || '.CREATE_CONTRACT_IBRETURN',
8954 'Suppress credit = '
8955 || l_suppress_credit
8956 || 'Full credit = '
8957 || l_full_credit
8958 );
8959 END IF;
8960
8961 oks_bill_rec_pub.pre_terminate_cp
8962 (p_calledfrom => -1,
8963 p_cle_id => p_kdtl_tbl
8964 (l_ctr).object_line_id,
8965 p_termination_date => TRUNC (l_retdt),
8966 p_terminate_reason => 'RMA',
8967 p_override_amount => NULL,
8968 p_con_terminate_amount => NULL,
8969 p_termination_amount => NULL,
8970 p_suppress_credit => l_suppress_credit,
8971 --p_existing_credit => 0,
8972 p_full_credit => l_full_credit,
8973 p_term_date_flag => l_term_date_flag,
8974 p_term_cancel_source => 'IBRETURN',
8975 x_return_status => l_return_status
8976 );
8977
8978 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8979 THEN
8980 fnd_log.STRING
8981 (fnd_log.level_event,
8982 g_module_current
8983 || '.CREATE_CONTRACT_IBRETURN.terminate_cp',
8984 'oks_bill_rec_pub.pre_terminate_cp(Return status = '
8985 || l_return_status
8986 || ')'
8987 );
8988 END IF;
8989
8990 IF NOT l_return_status = okc_api.g_ret_sts_success
8991 THEN
8992 RAISE g_exception_halt_validation;
8993 END IF;
8994
8995 l_inst_dtls_tbl (1).subline_date_terminated := TRUNC (l_retdt);
8996 -- If all the sublines are terminated terminate the top line
8997 oks_ib_util_pvt.check_termcancel_lines
8998 (p_kdtl_tbl (l_ctr).service_line_id,
8999 'SL',
9000 'T',
9001 date_terminated
9002 );
9003
9004 IF date_terminated IS NOT NULL
9005 THEN
9006 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
9007
9008 l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).service_line_id;
9009 l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
9010 l_clev_tbl_in (1).trn_code := 'RMA';
9011 l_clev_tbl_in (1).term_cancel_source := 'IBRETURN';
9012
9013 If TRUNC (date_terminated)<= trunc(sysdate) Then
9014 l_clev_tbl_in (1).sts_code := l_sts_code;
9015 End If;
9016
9017 okc_contract_pub.update_contract_line
9018 (p_api_version => l_api_version,
9019 p_init_msg_list => l_init_msg_list,
9020 p_restricted_update => okc_api.g_true,
9021 x_return_status => l_return_status,
9022 x_msg_count => x_msg_count,
9023 x_msg_data => x_msg_data,
9024 p_clev_tbl => l_clev_tbl_in,
9025 x_clev_tbl => l_clev_tbl_out
9026 );
9027
9028 IF NOT l_return_status = okc_api.g_ret_sts_success
9029 THEN
9030 RAISE g_exception_halt_validation;
9031 END IF;
9032 END IF;
9033
9034 date_terminated := NULL;
9035 -- If all the toplines are terminated, terminate the header
9036 oks_ib_util_pvt.check_termcancel_lines
9037 (p_kdtl_tbl (l_ctr).hdr_id,
9038 'TL',
9039 'T',
9040 date_terminated
9041 );
9042
9043 IF date_terminated IS NOT NULL
9044 THEN
9045 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
9046
9047 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
9048 l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
9049 l_chrv_tbl_in (1).trn_code := 'RMA';
9050 l_chrv_tbl_in (1).term_cancel_source := 'IBRETURN';
9051
9052 If TRUNC (date_terminated)<= trunc(sysdate) Then
9053 l_chrv_tbl_in (1).sts_code := l_sts_code;
9054 End If;
9055
9056
9057 okc_contract_pub.update_contract_header
9058 (p_api_version => l_api_version,
9059 p_init_msg_list => l_init_msg_list,
9060 p_restricted_update => okc_api.g_true,
9061 x_return_status => l_return_status,
9062 x_msg_count => x_msg_count,
9063 x_msg_data => x_msg_data,
9064 p_chrv_tbl => l_chrv_tbl_in,
9065 x_chrv_tbl => l_chrv_tbl_out
9066 );
9067
9068 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9069 )
9070 THEN
9071 fnd_log.STRING
9072 (fnd_log.level_event,
9073 g_module_current
9074 || '.CREATE_CONTRACT_IBRETURN.external_call.after',
9075 'okc_contract_pub.update_contract_header(Return status =
9076 '
9077 || l_return_status
9078 || ')'
9079 );
9080 END IF;
9081
9082 IF NOT l_return_status = okc_api.g_ret_sts_success
9083 THEN
9084 RAISE g_exception_halt_validation;
9085 END IF;
9086 END IF;
9087 ELSIF l_ste_code = 'ENTERED'
9088 THEN
9089 l_retdt := p_kdtl_tbl (l_ctr).termination_date;
9090
9091 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_retdt)
9092 THEN
9093 l_retdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
9094 END IF;
9095
9096 --Cancel the the entered lines.
9097
9098 -- added for the bug # 6000133
9099 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
9100
9101 oks_change_status_pvt.update_line_status
9102 (x_return_status => l_return_status,
9103 x_msg_data => x_msg_data,
9104 x_msg_count => x_msg_count,
9105 p_init_msg_list => 'F',
9106 p_id => p_kdtl_tbl (l_ctr).hdr_id,
9107 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
9108 p_new_sts_code => l_sts_code,
9109 p_canc_reason_code => 'RETURN',
9110 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
9111 p_old_ste_code => 'ENTERED',
9112 p_new_ste_code => 'CANCELLED',
9113 p_term_cancel_source => 'IBRETURN',
9114 p_date_cancelled => TRUNC (l_retdt),
9115 p_comments => NULL,
9116 p_validate_status => 'N'
9117 );
9118
9119 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9120 THEN
9121 fnd_log.STRING
9122 (fnd_log.level_event,
9123 g_module_current || '.CREATE_CONTRACT_IBRETURN',
9124 'oks_change_status_pvt.Update_line_status (Return status ='
9125 || l_return_status
9126 || ')'
9127 );
9128 END IF;
9129
9130 IF NOT l_return_status = okc_api.g_ret_sts_success
9131 THEN
9132 RAISE g_exception_halt_validation;
9133 END IF;
9134
9135 l_inst_dtls_tbl (1).date_cancelled := TRUNC (l_retdt);
9136 date_cancelled := NULL;
9137 oks_ib_util_pvt.check_termcancel_lines
9138 (p_kdtl_tbl (l_ctr).service_line_id,
9139 'SL',
9140 'C',
9141 date_cancelled
9142 );
9143
9144 IF date_cancelled IS NOT NULL
9145 THEN
9146
9147 -- added for the bug # 6000133
9148 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
9149
9150 oks_change_status_pvt.update_line_status
9151 (x_return_status => l_return_status,
9152 x_msg_data => x_msg_data,
9153 x_msg_count => x_msg_count,
9154 p_init_msg_list => 'F',
9155 p_id => p_kdtl_tbl (l_ctr).hdr_id,
9156 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
9157 p_new_sts_code => l_sts_code,
9158 p_canc_reason_code => 'RETURN',
9159 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
9160 p_old_ste_code => 'ENTERED',
9161 p_new_ste_code => 'CANCELLED',
9162 p_term_cancel_source => 'IBRETURN',
9163 p_date_cancelled => TRUNC (date_cancelled),
9164 p_comments => NULL,
9165 p_validate_status => 'N'
9166 );
9167
9168 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9169 )
9170 THEN
9171 fnd_log.STRING
9172 (fnd_log.level_event,
9173 g_module_current || '.CREATE_CONTRACT_IBRETURN',
9174 'oks_change_status_pvt.Update_line_status (Return status = '
9175 || l_return_status
9176 || ')'
9177 );
9178 END IF;
9179
9180 IF NOT l_return_status = okc_api.g_ret_sts_success
9181 THEN
9182 RAISE g_exception_halt_validation;
9183 END IF;
9184 END IF;
9185
9186 date_cancelled := NULL;
9187 oks_ib_util_pvt.check_termcancel_lines
9188 (p_kdtl_tbl (l_ctr).hdr_id,
9189 'TL',
9190 'C',
9191 date_cancelled
9192 );
9193
9194 IF date_cancelled IS NOT NULL
9195 THEN
9196
9197 -- added for the bug # 6000133
9198 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
9199
9200 oks_change_status_pvt.update_header_status
9201 (x_return_status => l_return_status,
9202 x_msg_data => x_msg_data,
9203 x_msg_count => x_msg_count,
9204 p_init_msg_list => 'F',
9205 p_id => p_kdtl_tbl (l_ctr).hdr_id,
9206 p_new_sts_code => l_sts_code,
9207 p_canc_reason_code => 'RETURN',
9208 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
9209 p_comments => NULL,
9210 p_term_cancel_source => 'IBRETURN',
9211 p_date_cancelled => TRUNC (date_cancelled),
9212 p_validate_status => 'N'
9213 );
9214
9215 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9216 )
9217 THEN
9218 fnd_log.STRING
9219 (fnd_log.level_event,
9220 g_module_current || '.CREATE_CONTRACT_IBRETURN',
9221 'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status =
9222 '
9223 || l_return_status
9224 || ')'
9225 );
9226 END IF;
9227
9228 IF NOT l_return_status = okc_api.g_ret_sts_success
9229 THEN
9230 RAISE g_exception_halt_validation;
9231 END IF;
9232 END IF;
9233 END IF;
9234
9235 get_sts_code (NULL,
9236 p_kdtl_tbl (l_ctr).hdr_sts,
9237 l_ste_code,
9238 l_sts_code
9239 );
9240 --x_inst_dtls_tbl(l_ctr).INST_PARENT_ID := p_retn_rec.old_cp_id;
9241 l_inst_dtls_tbl (1).transaction_date := TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
9242 l_inst_dtls_tbl (1).transaction_type := 'RET';
9243 l_inst_dtls_tbl (1).system_id := NULL;
9244 l_inst_dtls_tbl (1).instance_id_new := NULL;
9245 l_inst_dtls_tbl (1).instance_qty_old :=
9246 p_kdtl_tbl (l_ctr).old_cp_quantity;
9247 l_inst_dtls_tbl (1).instance_qty_new :=
9248 p_kdtl_tbl (l_ctr).old_cp_quantity;
9249 l_inst_dtls_tbl (1).instance_amt_old :=
9250 p_kdtl_tbl (l_ctr).service_amount;
9251 l_inst_dtls_tbl (1).instance_amt_new :=
9252 p_kdtl_tbl (l_ctr).service_amount;
9253 l_inst_dtls_tbl (1).old_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
9254 l_inst_dtls_tbl (1).old_contact_start_date :=
9255 p_kdtl_tbl (l_ctr).hdr_sdt;
9256 l_inst_dtls_tbl (1).old_contract_end_date :=
9257 p_kdtl_tbl (l_ctr).hdr_edt;
9258 l_inst_dtls_tbl (1).new_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
9259 l_inst_dtls_tbl (1).new_contact_start_date :=
9260 p_kdtl_tbl (l_ctr).hdr_sdt;
9261 l_inst_dtls_tbl (1).new_contract_end_date :=
9262 p_kdtl_tbl (l_ctr).hdr_edt;
9263 l_inst_dtls_tbl (1).old_service_line_id :=
9264 p_kdtl_tbl (l_ctr).service_line_id;
9265 l_inst_dtls_tbl (1).old_service_start_date :=
9266 p_kdtl_tbl (l_ctr).service_sdt;
9267 l_inst_dtls_tbl (1).old_service_end_date :=
9268 p_kdtl_tbl (l_ctr).service_edt;
9269 l_inst_dtls_tbl (1).new_service_line_id :=
9270 p_kdtl_tbl (l_ctr).service_line_id;
9271 l_inst_dtls_tbl (1).new_service_start_date :=
9272 p_kdtl_tbl (l_ctr).service_sdt;
9273 l_inst_dtls_tbl (1).new_service_end_date :=
9274 p_kdtl_tbl (l_ctr).service_edt;
9275 l_inst_dtls_tbl (1).old_subline_id :=
9276 p_kdtl_tbl (l_ctr).object_line_id;
9277 l_inst_dtls_tbl (1).old_subline_start_date :=
9278 p_kdtl_tbl (l_ctr).prod_sdt;
9279 l_inst_dtls_tbl (1).old_subline_end_date :=
9280 p_kdtl_tbl (l_ctr).prod_edt;
9281 l_inst_dtls_tbl (1).new_subline_id :=
9282 p_kdtl_tbl (l_ctr).object_line_id;
9283 l_inst_dtls_tbl (1).new_subline_start_date :=
9284 p_kdtl_tbl (l_ctr).prod_sdt;
9285 l_inst_dtls_tbl (1).new_subline_end_date :=
9286 p_kdtl_tbl (l_ctr).prod_edt;
9287 l_inst_dtls_tbl (1).old_customer :=
9288 p_kdtl_tbl (l_ctr).cust_account;
9289 l_inst_dtls_tbl (1).new_customer :=
9290 p_kdtl_tbl (l_ctr).cust_account;
9291 l_inst_dtls_tbl (1).old_k_status := l_sts_code;
9292 l_inst_dtls_tbl (1).new_k_status := l_sts_code;
9293
9294 IF l_inst_dtls_tbl.COUNT <> 0
9295 THEN
9296 IF l_instparent_id IS NULL
9297 AND l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
9298 THEN
9299 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
9300
9301 FETCH l_refnum_csr
9302 INTO l_ref_num;
9303
9304 CLOSE l_refnum_csr;
9305
9306 l_parameters :=
9307 ' Old CP :'
9308 || p_kdtl_tbl (l_ctr).old_cp_id
9309 || ','
9310 || 'Item Id:'
9311 || p_kdtl_tbl (l_ctr).prod_inventory_item
9312 || ','
9313 || 'Old Quantity:'
9314 || p_kdtl_tbl (l_ctr).current_cp_quantity
9315 || ','
9316 || 'Transaction type :'
9317 || 'RET'
9318 || ','
9319 || ' Transaction date :'
9320 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
9321 || ','
9322 || 'New quantity:'
9323 || p_kdtl_tbl (l_ctr).new_quantity;
9324 --oks_instance_history
9325 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
9326 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
9327 l_insthist_rec.transaction_type := 'RET';
9328 l_insthist_rec.transaction_date := TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
9329 l_insthist_rec.reference_number := l_ref_num;
9330 l_insthist_rec.PARAMETERS := l_parameters;
9331 oks_ins_pvt.insert_row (p_api_version => 1.0,
9332 p_init_msg_list => 'T',
9333 x_return_status => l_return_status,
9334 x_msg_count => x_msg_count,
9335 x_msg_data => x_msg_data,
9336 p_insv_rec => l_insthist_rec,
9337 x_insv_rec => x_insthist_rec
9338 );
9339
9340 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9341 )
9342 THEN
9343 fnd_log.STRING
9344 (fnd_log.level_event,
9345 g_module_current || '.CREATE_K_IBRETURN',
9346 'oks_ins_pvt.insert_row(Return status = '
9347 || l_return_status
9348 || ')'
9349 );
9350 END IF;
9351
9352 x_return_status := l_return_status;
9353
9354 IF NOT l_return_status = okc_api.g_ret_sts_success
9355 THEN
9356 x_return_status := l_return_status;
9357 RAISE g_exception_halt_validation;
9358 END IF;
9359
9360 l_instparent_id := x_insthist_rec.ID;
9361 END IF;
9362
9363 l_inst_dtls_tbl (1).ins_id := l_instparent_id;
9364 --oks_inst_history_details
9365 oks_ihd_pvt.insert_row (p_api_version => 1.0,
9366 p_init_msg_list => 'T',
9367 x_return_status => l_return_status,
9368 x_msg_count => x_msg_count,
9369 x_msg_data => x_msg_data,
9370 p_ihdv_tbl => l_inst_dtls_tbl,
9371 x_ihdv_tbl => x_inst_dtls_tbl
9372 );
9373
9374 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9375 THEN
9376 fnd_log.STRING
9377 (fnd_log.level_event,
9378 g_module_current || '.CREATE_IBRETURN',
9379 'oks_ihd_pvt.insert_row(Return status = '
9380 || l_return_status
9381 || ')'
9382 );
9383 END IF;
9384
9385 x_return_status := l_return_status;
9386
9387 IF NOT l_return_status = okc_api.g_ret_sts_success
9388 THEN
9389 x_return_status := l_return_status;
9390 RAISE g_exception_halt_validation;
9391 END IF;
9392
9393 If date_terminated is not null or date_cancelled is not null Then
9394 Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
9395 Fetch l_hdr_sts_csr into l_hdr_status;
9396 Close l_hdr_sts_csr;
9397
9398 Update oks_inst_hist_details set new_k_status = l_hdr_status
9399 Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
9400
9401 End If;
9402 END IF;
9403
9404 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
9405
9406 FETCH l_serv_csr
9407 INTO l_service_name;
9408
9409 CLOSE l_serv_csr;
9410
9411 launch_workflow ( 'INSTALL BASE ACTIVITY : RETURN '
9412 || fnd_global.local_chr (10)
9413 || 'Contract Number : '
9414 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
9415 || fnd_global.local_chr (10)
9416 || 'Service Terminated : '
9417 || l_service_name
9418 );
9419 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
9420 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
9421 END LOOP;
9422 END IF;
9423 EXCEPTION
9424 WHEN g_exception_halt_validation
9425 THEN
9426 x_return_status := l_return_status;
9427 NULL;
9428 WHEN OTHERS
9429 THEN
9430 x_return_status := okc_api.g_ret_sts_unexp_error;
9431 okc_api.set_message (g_app_name,
9432 g_unexpected_error,
9433 g_sqlcode_token,
9434 SQLCODE,
9435 g_sqlerrm_token,
9436 SQLERRM
9437 );
9438 END;
9439
9440 ---System Transfer
9441 PROCEDURE create_k_system_transfer (
9442 p_kdtl_tbl IN contract_trf_tbl,
9443 x_return_status OUT NOCOPY VARCHAR2,
9444 x_msg_count OUT NOCOPY NUMBER,
9445 x_msg_data OUT NOCOPY VARCHAR2
9446 )
9447 IS
9448 CURSOR l_cov_csr (p_cle_id NUMBER)
9449 IS
9450 SELECT LN.transfer_option
9451 FROM oks_k_lines_b LN, okc_k_lines_b kl, oks_k_lines_b ks
9452 WHERE kl.ID = p_cle_id
9453 AND ks.cle_id = kl.ID
9454 AND LN.cle_id = ks.coverage_id;
9455
9456 CURSOR l_contracts_csr (
9457 p_system_id NUMBER,
9458 p_trxn_date DATE,
9459 p_cust_id NUMBER
9460 )
9461 IS
9462 SELECT DISTINCT new_contract_id
9463 FROM oks_inst_hist_details
9464 WHERE system_id = p_system_id
9465 AND transaction_date = p_trxn_date
9466 AND transaction_type = 'TRF'
9467 AND old_customer = p_cust_id
9468 AND new_contract_id <> old_contract_id;
9469
9470 CURSOR l_qa_csr (p_id NUMBER)
9471 IS
9472 SELECT qcl_id
9473 FROM okc_k_headers_b
9474 WHERE ID = p_id;
9475
9476 CURSOR l_hdrdt_csr (p_hdr_id NUMBER)
9477 IS
9478 SELECT start_date, end_date
9479 FROM okc_k_headers_b
9480 WHERE ID = p_hdr_id;
9481
9482 CURSOR l_srvdt_csr (p_line_id NUMBER)
9483 IS
9484 SELECT start_date, end_date
9485 FROM okc_k_lines_b
9486 WHERE ID = p_line_id;
9487
9488 CURSOR l_cust_rel_csr (
9489 p_old_customer VARCHAR2,
9490 p_new_customer VARCHAR2,
9491 p_relation VARCHAR2,
9492 p_transfer_date DATE
9493 )
9494 IS
9495 SELECT DISTINCT relationship_type
9496 FROM hz_relationships
9497 WHERE ( ( object_id = p_new_customer
9498 AND subject_id = p_old_customer
9499 )
9500 OR ( object_id = p_old_customer
9501 AND subject_id = p_new_customer
9502 )
9503 )
9504 AND relationship_type = p_relation
9505 AND status = 'A'
9506 AND TRUNC (p_transfer_date) BETWEEN TRUNC (start_date)
9507 AND TRUNC (end_date);
9508
9509 CURSOR l_hdr_sts_csr (p_hdr_id NUMBER)
9510 IS
9511 SELECT sts_code
9512 FROM okc_k_headers_b
9513 WHERE ID = p_hdr_id;
9514
9515
9516 CURSOR l_Launch_WF_csr (p_hdr_id NUMBER)
9517 IS
9518 SELECT 'Y'
9519 FROM okc_k_headers_b Kh, oks_k_headers_b Ks
9520 , okc_statuses_b sts
9521 WHERE Kh.ID = p_hdr_id
9522 And Ks.chr_id = Kh.id
9523 And kh.sts_code = sts.code
9524 And sts.ste_code = 'ENTERED'
9525 And ks.wf_item_key is null;
9526 l_launch_wf_yn Varchar2(1);
9527
9528 CURSOR l_subline_csr (p_id NUMBER)
9529 IS
9530 SELECT date_terminated, price_negotiated
9531 FROM okc_k_lines_b
9532 WHERE ID = p_id;
9533
9534 l_date_terminated DATE;
9535 l_subline_price NUMBER;
9536 l_hdr_sts VARCHAR2 (40);
9537
9538 CURSOR l_toplines_csr (p_chr_id NUMBER, p_service_item_id NUMBER)
9539 IS
9540 SELECT kl.ID cle_id
9541 FROM okc_k_lines_b kl, okc_k_items ki, okc_statuses_b st
9542 WHERE kl.dnz_chr_id = p_chr_id
9543 AND kl.lse_id IN (1, 14, 19)
9544 AND kl.ID = ki.cle_id
9545 AND ki.object1_id1 = TO_CHAR (p_service_item_id)
9546 AND st.code = kl.sts_code
9547 AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED');
9548
9549 l_cov_rec l_cov_csr%ROWTYPE;
9550
9551 CURSOR l_refnum_csr (p_cp_id NUMBER)
9552 IS
9553 SELECT instance_number
9554 FROM csi_item_instances
9555 WHERE instance_id = p_cp_id;
9556 /* Added for Bug#14325727 */
9557 CURSOR l_serv_csr (p_serv_id NUMBER)
9558 IS
9559 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
9560 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
9561 WHERE b.inventory_item_id = t.inventory_item_id
9562 AND b.organization_id = t.organization_id
9563 AND t.LANGUAGE = USERENV ('LANG')
9564 AND b.inventory_item_id = p_serv_id
9565 AND ROWNUM < 2;
9566
9567 /*Commented for Bug#14325727 */
9568 /*
9569 CURSOR l_serv_csr (p_serv_id NUMBER)
9570 IS
9571 SELECT t.description NAME
9572 FROM mtl_system_items_tl t
9573 WHERE t.inventory_item_id = p_serv_id
9574 AND t.LANGUAGE = USERENV ('LANG')
9575 AND ROWNUM < 2;
9576 */
9577
9578 l_start_date DATE;
9579 l_end_date DATE;
9580 l_subline_id NUMBER;
9581 l_renewal_id NUMBER;
9582 l_source_line_id NUMBER;
9583 l_transfer_id NUMBER;
9584 l_srv_sdt DATE;
9585 l_srv_edt DATE;
9586 l_coverage_id NUMBER;
9587 l_service_name VARCHAR2 (240);
9588 l_ref_num VARCHAR2 (30);
9589 l_msg_count NUMBER;
9590 l_msg_data VARCHAR2 (2000);
9591 l_trf_option VARCHAR2 (40);
9592 l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
9593 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
9594 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
9595 l_line_rec oks_extwarprgm_pvt.k_line_service_rec_type;
9596 l_covd_rec oks_extwarprgm_pvt.k_line_covered_level_rec_type;
9597 --l_kdtl_tbl oks_extwar_util_pvt.contract_tbl_type;
9598 l_available_yn CHAR;
9599 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
9600 l_line_found VARCHAR2 (1);
9601 l_ste_code VARCHAR2 (40);
9602 l_sts_code VARCHAR2 (40);
9603 l_ctr NUMBER;
9604 l_suppress_credit VARCHAR2 (10) := 'N';
9605 l_trfdt DATE;
9606 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
9607 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
9608 l_api_version CONSTANT NUMBER := 1.0;
9609 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
9610 l_index NUMBER;
9611 l_relationship VARCHAR2 (40);
9612 l_relationship_type VARCHAR2 (40);
9613 l_chr_id NUMBER;
9614 l_contract_exist VARCHAR2 (1);
9615 l_contract_merge VARCHAR2 (1);
9616 l_ptr NUMBER := 0;
9617 l_old_cp_id NUMBER;
9618 l_line_id NUMBER;
9619 l_header_merge VARCHAR2 (1);
9620 l_line_merge VARCHAR2 (1);
9621 l_merge_chr_id NUMBER;
9622 l_merge_line_id NUMBER;
9623 l_max_severity VARCHAR2 (1);
9624 l_msg_tbl okc_qa_check_pub.msg_tbl_type;
9625 l_covlvl_id NUMBER;
9626 i NUMBER;
9627 l_qcl_id NUMBER;
9628 l_update_line VARCHAR2 (1);
9629 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
9630 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
9631 l_insthist_rec oks_ins_pvt.insv_rec_type;
9632 x_insthist_rec oks_ins_pvt.insv_rec_type;
9633 l_instparent_id NUMBER;
9634 l_parameters VARCHAR2 (2000);
9635 l_temp VARCHAR2 (2000);
9636 l_old_party_id NUMBER;
9637 l_new_party_id NUMBER;
9638 l_new_party_name VARCHAR2 (360);
9639 l_old_party_name VARCHAR2 (360);
9640 date_terminated DATE;
9641 date_cancelled DATE;
9642 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
9643 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
9644 l_create_contract VARCHAR2 (1);
9645 l_party_id NUMBER;
9646 l_party_name VARCHAR2 (360);
9647 l_opr_instance_id NUMBER;
9648 l_renewal_opr_instance_id NUMBER;
9649 l_term_date_flag VARCHAR2 (1);
9650 l_wf_attr_details oks_wf_k_process_pvt.wf_attr_details;
9651 l_create_oper_instance VARCHAR2 (1);
9652 l_credit_amount VARCHAR2 (50);
9653 l_full_credit VARCHAR2 (10) := 'N';
9654
9655 FUNCTION get_operation_instance (
9656 p_target_chr_id NUMBER,
9657 p_transaction_type VARCHAR2
9658 )
9659 RETURN NUMBER
9660 IS
9661 CURSOR l_operation_csr
9662 IS
9663 SELECT op.ID
9664 FROM okc_operation_instances op,
9665 okc_class_operations classopr,
9666 okc_subclasses_b subclass
9667 WHERE target_chr_id = p_target_chr_id
9668 AND subclass.code = 'SERVICE'
9669 AND classopr.cls_code = subclass.cls_code
9670 AND classopr.opn_code IN ('TRANSFER')
9671 AND op.cop_id = classopr.ID;
9672
9673 CURSOR l_renewal_csr
9674 IS
9675 SELECT op.ID
9676 FROM okc_operation_instances op,
9677 okc_class_operations classopr,
9678 okc_subclasses_b subclass
9679 WHERE target_chr_id = p_target_chr_id
9680 AND subclass.code = 'SERVICE'
9681 AND classopr.cls_code = subclass.cls_code
9682 AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
9683 AND op.cop_id = classopr.ID;
9684
9685 /*
9686 Select id
9687 From Okc_operation_instances
9688 Where target_chr_id = p_target_chr_id
9689 And cop_id in (40,41);
9690 */
9691 l_oper_inst_id NUMBER;
9692 BEGIN
9693 IF p_transaction_type = 'TRF'
9694 THEN
9695 OPEN l_operation_csr;
9696
9697 FETCH l_operation_csr
9698 INTO l_oper_inst_id;
9699
9700 CLOSE l_operation_csr;
9701 ELSE
9702 OPEN l_renewal_csr;
9703
9704 FETCH l_renewal_csr
9705 INTO l_oper_inst_id;
9706
9707 CLOSE l_renewal_csr;
9708 END IF;
9709
9710 RETURN (l_oper_inst_id);
9711 END;
9712
9713 PROCEDURE get_party_id (
9714 p_cust_id IN NUMBER,
9715 x_party_id OUT NOCOPY NUMBER,
9716 x_party_name OUT NOCOPY VARCHAR2
9717 )
9718 IS
9719 CURSOR l_party_csr
9720 IS
9721 SELECT party_id, NAME
9722 FROM okx_customer_accounts_v
9723 WHERE id1 = p_cust_id;
9724 BEGIN
9725 OPEN l_party_csr;
9726
9727 FETCH l_party_csr
9728 INTO x_party_id, x_party_name;
9729
9730 CLOSE l_party_csr;
9731 EXCEPTION
9732 WHEN OTHERS
9733 THEN
9734 x_return_status := okc_api.g_ret_sts_unexp_error;
9735 okc_api.set_message (g_app_name,
9736 g_unexpected_error,
9737 g_sqlcode_token,
9738 SQLCODE,
9739 g_sqlerrm_token,
9740 SQLERRM
9741 );
9742 END;
9743
9744 FUNCTION site_address (
9745 p_customer_id NUMBER,
9746 p_party_id NUMBER,
9747 p_code VARCHAR2,
9748 p_org_id NUMBER
9749 )
9750 RETURN NUMBER
9751 IS
9752 CURSOR l_address_csr
9753 IS
9754 SELECT id1
9755 FROM okx_cust_site_uses_v
9756 WHERE cust_account_id = p_customer_id
9757 AND party_id = p_party_id
9758 AND site_use_code = p_code
9759 AND identifying_address_flag = 'Y'
9760 AND status = 'A'
9761 AND org_id = p_org_id;
9762
9763 l_site_id NUMBER;
9764 BEGIN
9765 OPEN l_address_csr;
9766
9767 FETCH l_address_csr
9768 INTO l_site_id;
9769
9770 IF l_address_csr%NOTFOUND
9771 THEN
9772 CLOSE l_address_csr;
9773
9774 RETURN (NULL);
9775 END IF;
9776
9777 CLOSE l_address_csr;
9778
9779 RETURN (l_site_id);
9780 END;
9781
9782 PROCEDURE create_contract_header (
9783 p_kdtl_rec IN contract_trf_rec,
9784 x_msg_data OUT NOCOPY VARCHAR2,
9785 x_chr_id OUT NOCOPY NUMBER,
9786 x_msg_count OUT NOCOPY NUMBER,
9787 x_return_status OUT NOCOPY VARCHAR2
9788 )
9789 IS
9790 l_agrment_id NUMBER;
9791 l_ste_code VARCHAR2 (40);
9792 l_sts_code VARCHAR2 (40);
9793
9794 CURSOR l_party_csr (p_id NUMBER)
9795 IS
9796 SELECT party_id, NAME
9797 FROM okx_customer_accounts_v
9798 WHERE id1 = p_id;
9799
9800 CURSOR l_get_agrid_csr (p_chr_id NUMBER)
9801 IS
9802 SELECT isa_agreement_id
9803 FROM okc_governances
9804 WHERE chr_id = p_chr_id AND dnz_chr_id = p_chr_id;
9805
9806 -- Fix for bug 3588355
9807 CURSOR l_get_bill_ship_csr (p_cp_id NUMBER)
9808 IS
9809 SELECT bill_to_address, ship_to_address
9810 FROM csi_instance_party_v
9811 WHERE instance_id = p_cp_id;
9812
9813 -- Fix for bug 3588355
9814 CURSOR validate_bill_ship_ids (
9815 p_id NUMBER,
9816 p_org_id NUMBER,
9817 p_site_use_code VARCHAR2
9818 )
9819 IS
9820 SELECT 'x'
9821 FROM okx_cust_site_uses_v
9822 WHERE id1 = p_id
9823 AND site_use_code = p_site_use_code
9824 AND org_id = p_org_id
9825 AND status = 'A';
9826
9827 CURSOR l_access_csr (p_hdr_id NUMBER)
9828 IS
9829 SELECT resource_id, GROUP_ID, access_level
9830 FROM okc_k_accesses_v
9831 WHERE chr_id = p_hdr_id;
9832
9833 l_hdr_rec k_header_rec_type;
9834 l_party_id NUMBER;
9835 l_party_name VARCHAR2 (360);
9836 l_return_status VARCHAR2 (1);
9837 l_rnrl_rec_out oks_renew_util_pvt.rnrl_rec_type;
9838 p_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
9839 l_chrid NUMBER;
9840 l_cacv_tbl_in okc_contract_pub.cacv_tbl_type;
9841 l_cacv_tbl_out okc_contract_pub.cacv_tbl_type;
9842 l_status VARCHAR2 (40);
9843 l_bill_to_id NUMBER;
9844 l_ship_to_id NUMBER;
9845 l_valid VARCHAR2 (1);
9846 l_resource_id NUMBER;
9847 l_group_id NUMBER;
9848 l_access_level VARCHAR2 (3);
9849 l_sc_hdr_ctr NUMBER;
9850 l_salescredit_tbl oks_extwarprgm_pvt.salescredit_tbl;
9851 l_org_id NUMBER;
9852
9853 CURSOR l_sales_credit_hdr_csr (p_chr_id NUMBER)
9854 IS
9855 SELECT ctc_id, sales_credit_type_id1, PERCENT, sales_group_id
9856 FROM oks_k_sales_credits_v
9857 WHERE chr_id = p_chr_id AND cle_id IS NULL;
9858 BEGIN
9859 x_return_status := okc_api.g_ret_sts_success;
9860
9861 OPEN l_get_agrid_csr (p_kdtl_rec.hdr_id); --07-May-2003
9862
9863 FETCH l_get_agrid_csr
9864 INTO l_agrment_id;
9865
9866 CLOSE l_get_agrid_csr;
9867
9868 l_hdr_rec.billed_at_source := p_kdtl_rec.billed_at_source;
9869
9870 get_party_id (p_kdtl_rec.new_account_id, l_party_id, l_party_name);
9871 l_hdr_rec.party_id := l_party_id;
9872
9873 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9874 THEN
9875 fnd_log.STRING (fnd_log.level_statement,
9876 g_module_current
9877 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9878 'Party id = ' || l_hdr_rec.party_id
9879 );
9880 END IF;
9881
9882 oks_renew_util_pub.get_renew_rules
9883 (p_api_version => 1.0,
9884 p_init_msg_list => 'T',
9885 x_return_status => l_return_status,
9886 x_msg_count => x_msg_count,
9887 x_msg_data => x_msg_data,
9888 p_chr_id => NULL,
9889 p_party_id => l_hdr_rec.party_id,
9890 p_org_id => p_kdtl_rec.hdr_org_id,
9891 p_date => SYSDATE,
9892 p_rnrl_rec => NULL,
9893 x_rnrl_rec => l_rnrl_rec_out
9894 );
9895
9896 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9897 THEN
9898 fnd_log.STRING
9899 (fnd_log.level_event,
9900 g_module_current
9901 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9902 'oks_renew_util_pub.get_renew_rules(Return status = '
9903 || l_return_status
9904 );
9905 END IF;
9906
9907 IF NOT l_return_status = okc_api.g_ret_sts_success
9908 THEN
9909 x_return_status := l_return_status;
9910 RAISE g_exception_halt_validation;
9911 END IF;
9912
9913 l_hdr_rec.scs_code := p_kdtl_rec.scs_code;
9914
9915 IF p_kdtl_rec.scs_code = 'WARRANTY'
9916 THEN
9917 l_hdr_rec.short_description :=
9918 'CUSTOMER : '
9919 || l_party_name
9920 || ' Warranty/Extended Warranty Contract';
9921 ELSE
9922 l_hdr_rec.short_description :=
9923 'CUSTOMER : ' || l_party_name || ' Contract';
9924 END IF;
9925
9926 l_hdr_rec.start_date := TRUNC (l_trfdt);
9927
9928 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9929 THEN
9930 fnd_log.STRING (fnd_log.level_statement,
9931 g_module_current
9932 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9933 'Transfer status Profile = '
9934 || fnd_profile.VALUE ('OKS_TRANSFER_STATUS')
9935 );
9936 END IF;
9937
9938 IF (p_kdtl_rec.scs_code = 'WARRANTY' AND p_kdtl_rec.lse_id = 18)
9939 THEN
9940 IF l_hdr_rec.start_date > SYSDATE
9941 THEN
9942 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
9943 ELSE
9944 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
9945 END IF;
9946
9947 l_hdr_rec.sts_code := l_sts_code;
9948 l_hdr_rec.renewal_status := 'COMPLETE';
9949 l_hdr_rec.accounting_rule_id := null;
9950 l_hdr_rec.invoice_rule_id := Null;
9951 l_hdr_rec.qcl_id := Null;
9952 l_hdr_rec.pdf_id := Null;
9953 l_hdr_rec.ar_interface_yn := 'N';
9954
9955 ELSE
9956 l_hdr_rec.accounting_rule_id := p_kdtl_rec.hdr_acct_rule_id;
9957 l_hdr_rec.invoice_rule_id := -2;
9958 l_hdr_rec.qcl_id := l_rnrl_rec_out.qcl_id;
9959 l_hdr_rec.pdf_id := l_rnrl_rec_out.pdf_id;
9960 l_hdr_rec.ar_interface_yn := p_kdtl_rec.ar_interface_yn;
9961
9962
9963 get_sts_code (p_kdtl_rec.prod_sts_code,
9964 NULL,
9965 l_ste_code,
9966 l_sts_code
9967 );
9968
9969 IF l_ste_code = 'ENTERED'
9970 THEN
9971 l_hdr_rec.sts_code := l_sts_code;
9972 ELSE
9973 l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
9974
9975 IF l_status = 'ACTIVE'
9976 THEN
9977 IF l_hdr_rec.start_date > SYSDATE
9978 THEN
9979 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
9980 ELSE
9981 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
9982 END IF;
9983
9984 l_hdr_rec.renewal_status := 'COMPLETE';
9985 ELSE
9986 get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
9987 END IF;
9988
9989 l_hdr_rec.sts_code := l_sts_code;
9990 END IF;
9991 END IF;
9992
9993 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9994 THEN
9995 fnd_log.STRING (fnd_log.level_statement,
9996 g_module_current
9997 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9998 'Header Status = '
9999 || l_hdr_rec.sts_code
10000 || 'End date = '
10001 || l_hdr_rec.end_date
10002 || 'Start Date = '
10003 || l_hdr_rec.start_date
10004 );
10005 END IF;
10006
10007 -- Fix for bug 3588355 Begin
10008 OPEN l_get_bill_ship_csr (p_kdtl_rec.old_cp_id);
10009
10010 FETCH l_get_bill_ship_csr
10011 INTO l_bill_to_id, l_ship_to_id;
10012
10013 CLOSE l_get_bill_ship_csr;
10014
10015 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10016 THEN
10017 fnd_log.STRING (fnd_log.level_statement,
10018 g_module_current
10019 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
10020 ' Bill to Id = '
10021 || l_bill_to_id
10022 || 'Ship to Id = '
10023 || l_ship_to_id
10024 );
10025 END IF;
10026
10027 IF (l_bill_to_id IS NOT NULL)
10028 THEN
10029 OPEN validate_bill_ship_ids (l_bill_to_id,
10030 p_kdtl_tbl (l_ctr).hdr_org_id,
10031 'BILL_TO'
10032 );
10033
10034 FETCH validate_bill_ship_ids
10035 INTO l_valid;
10036
10037 IF validate_bill_ship_ids%NOTFOUND
10038 THEN
10039 CLOSE validate_bill_ship_ids;
10040
10041 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
10042 THEN
10043 fnd_log.STRING (fnd_log.level_error,
10044 g_module_current
10045 || '.CREATE_K_SYSTEM_TRF.ERROR',
10046 ' Bill to Id ('
10047 || l_bill_to_id
10048 || ') is not valid'
10049 );
10050 END IF;
10051
10052 l_return_status := okc_api.g_ret_sts_error;
10053 okc_api.set_message (g_app_name,
10054 g_required_value,
10055 g_col_name_token,
10056 'Bill to id is not Valid'
10057 );
10058 RAISE g_exception_halt_validation;
10059 END IF;
10060
10061 CLOSE validate_bill_ship_ids;
10062 END IF;
10063
10064 IF (l_ship_to_id IS NOT NULL)
10065 THEN
10066 OPEN validate_bill_ship_ids (l_ship_to_id,
10067 p_kdtl_rec.hdr_org_id,
10068 'SHIP_TO'
10069 );
10070
10071 FETCH validate_bill_ship_ids
10072 INTO l_valid;
10073
10074 IF validate_bill_ship_ids%NOTFOUND
10075 THEN
10076 CLOSE validate_bill_ship_ids;
10077
10078 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
10079 THEN
10080 fnd_log.STRING (fnd_log.level_error,
10081 g_module_current
10082 || '.CREATE_K_SYSTEM_TRF.ERROR',
10083 ' Bill to Id ('
10084 || l_ship_to_id
10085 || ') is not valid'
10086 );
10087 END IF;
10088
10089 l_return_status := okc_api.g_ret_sts_error;
10090 okc_api.set_message (g_app_name,
10091 g_required_value,
10092 g_col_name_token,
10093 'Ship to id is not Valid'
10094 );
10095 RAISE g_exception_halt_validation;
10096 END IF;
10097
10098 CLOSE validate_bill_ship_ids;
10099 END IF;
10100
10101 l_hdr_rec.bill_to_id :=
10102 NVL (l_bill_to_id,
10103 site_address (p_kdtl_rec.new_account_id,
10104 l_hdr_rec.party_id,
10105 'BILL_TO',
10106 p_kdtl_rec.hdr_org_id
10107 )
10108 );
10109 l_hdr_rec.ship_to_id :=
10110 NVL (l_ship_to_id,
10111 site_address (p_kdtl_rec.new_account_id,
10112 l_hdr_rec.party_id,
10113 'SHIP_TO',
10114 p_kdtl_rec.hdr_org_id
10115 )
10116 );
10117 -- Fix for bug 3588355 End
10118 l_hdr_rec.order_line_id := NULL;
10119 l_hdr_rec.contract_number := okc_api.g_miss_char;
10120 l_hdr_rec.rty_code := 'CONTRACTTRANSFERORDER';
10121 --l_hdr_rec.start_date := trunc(l_trfdt);
10122 l_hdr_rec.end_date := p_kdtl_rec.service_edt;
10123 l_hdr_rec.class_code := 'SVC';
10124 l_hdr_rec.authoring_org_id := p_kdtl_rec.hdr_org_id;
10125 l_hdr_rec.inv_organization_id := p_kdtl_rec.organization_id;
10126 l_hdr_rec.chr_group := l_rnrl_rec_out.cgp_new_id;
10127 l_hdr_rec.price_list_id := p_kdtl_rec.price_list_id;
10128 l_hdr_rec.agreement_id := l_agrment_id;
10129 l_hdr_rec.currency := p_kdtl_rec.header_currency;
10130 --p_kdtl_rec.hdr_inv_rule_id; --fix for bug 3451440
10131 l_hdr_rec.payment_type := p_kdtl_rec.payment_type;
10132 l_hdr_rec.inv_trx_type := p_kdtl_rec.inv_trx_type;
10133 l_hdr_rec.hold_billing := p_kdtl_rec.hold_billing;
10134 --mmadhavi for bug 3765672
10135 l_hdr_rec.summary_trx_yn := p_kdtl_rec.summary_trx_yn;
10136 --mmadhavi for bug 3765672
10137 l_hdr_rec.order_hdr_id := NULL;
10138 l_hdr_rec.payment_term_id := p_kdtl_rec.payment_term_id;
10139 l_hdr_rec.cvn_type := p_kdtl_rec.cvn_type;
10140 l_hdr_rec.cvn_rate := p_kdtl_rec.cvn_rate;
10141 l_hdr_rec.cvn_date := p_kdtl_rec.cvn_date;
10142 l_hdr_rec.cvn_euro_rate := p_kdtl_rec.cvn_euro_rate;
10143 l_hdr_rec.merge_type := 'NEW';
10144 l_hdr_rec.period_start := p_kdtl_rec.period_start;
10145 l_hdr_rec.period_type := p_kdtl_rec.period_type;
10146 l_hdr_rec.price_uom := p_kdtl_rec.price_uom_hdr;
10147 l_sc_hdr_ctr := 0;
10148
10149 /*spingali bugfix for bug12747411 -start*/
10150 OKS_EXTWARPRGM_PVT.G_TRF_K_CREATE := 'Y';
10151 /*spingali bugfix for bug12747411 -end */
10152
10153 FOR l_sales_credit_hdr_rec IN
10154 l_sales_credit_hdr_csr (p_kdtl_rec.hdr_id)
10155 LOOP
10156 l_sc_hdr_ctr := l_sc_hdr_ctr + 1;
10157 l_salescredit_tbl (l_sc_hdr_ctr).ctc_id :=
10158 l_sales_credit_hdr_rec.ctc_id;
10159 l_salescredit_tbl (l_sc_hdr_ctr).sales_credit_type_id :=
10160 l_sales_credit_hdr_rec.sales_credit_type_id1;
10161 l_salescredit_tbl (l_sc_hdr_ctr).PERCENT :=
10162 l_sales_credit_hdr_rec.PERCENT;
10163 l_salescredit_tbl (l_sc_hdr_ctr).sales_group_id :=
10164 l_sales_credit_hdr_rec.sales_group_id;
10165 END LOOP; -- For l_sales_credit_rec IN l_sales_credit_csr
10166
10167 oks_extwarprgm_pvt.create_k_hdr
10168 (p_k_header_rec => l_hdr_rec,
10169 p_contact_tbl => p_contact_tbl_in,
10170 p_salescredit_tbl_in => l_salescredit_tbl
10171 -- mmadhavi bug 4174921
10172 ,
10173 p_caller => 'ST',
10174 x_order_error => l_temp,
10175 x_chr_id => l_chrid,
10176 x_return_status => l_return_status,
10177 x_msg_count => x_msg_count,
10178 x_msg_data => x_msg_data
10179 );
10180
10181 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10182 THEN
10183 fnd_log.STRING
10184 (fnd_log.level_statement,
10185 g_module_current
10186 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
10187 'OKS_EXTWARPRGM_PVT.create_k_hdr(Return status = '
10188 || l_return_status
10189 || ')'
10190 );
10191 END IF;
10192
10193 IF NOT l_return_status = 'S'
10194 THEN
10195 RAISE g_exception_halt_validation;
10196 ELSE
10197 x_chr_id := l_chrid;
10198 END IF;
10199
10200 SELECT authoring_org_id
10201 INTO l_org_id
10202 FROM okc_k_headers_b
10203 WHERE ID = l_chrid;
10204
10205 OPEN l_access_csr (p_kdtl_rec.hdr_id);
10206
10207 FETCH l_access_csr
10208 INTO l_resource_id, l_group_id, l_access_level;
10209
10210 CLOSE l_access_csr;
10211
10212 IF l_resource_id IS NOT NULL OR l_group_id IS NOT NULL
10213 THEN
10214 l_cacv_tbl_in (1).chr_id := l_chrid;
10215 l_cacv_tbl_in (1).resource_id := l_resource_id;
10216 l_cacv_tbl_in (1).GROUP_ID := l_group_id;
10217 l_cacv_tbl_in (1).access_level := l_access_level;
10218 okc_contract_pub.create_contract_access
10219 (p_api_version => l_api_version,
10220 p_init_msg_list => l_init_msg_list,
10221 x_return_status => l_return_status,
10222 x_msg_count => x_msg_count,
10223 x_msg_data => x_msg_data,
10224 p_cacv_tbl => l_cacv_tbl_in,
10225 x_cacv_tbl => l_cacv_tbl_out
10226 );
10227
10228 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10229 THEN
10230 fnd_log.STRING
10231 (fnd_log.level_statement,
10232 g_module_current
10233 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
10234 'okc_contract_pub.create_contract_access(Return status = '
10235 || l_return_status
10236 || ')'
10237 );
10238 END IF;
10239
10240 IF NOT l_return_status = 'S'
10241 THEN
10242 RAISE g_exception_halt_validation;
10243 END IF;
10244 END IF;
10245
10246 x_return_status := l_return_status;
10247 EXCEPTION
10248 WHEN g_exception_halt_validation
10249 THEN
10250 x_return_status := l_return_status;
10251 NULL;
10252 WHEN OTHERS
10253 THEN
10254 x_return_status := okc_api.g_ret_sts_unexp_error;
10255 okc_api.set_message (g_app_name,
10256 g_unexpected_error,
10257 g_sqlcode_token,
10258 SQLCODE,
10259 g_sqlerrm_token,
10260 SQLERRM
10261 );
10262 END create_contract_header;
10263
10264 PROCEDURE create_contract_line (
10265 p_kdtl_rec IN contract_trf_rec,
10266 p_hdr_id IN NUMBER,
10267 x_return_status OUT NOCOPY VARCHAR2,
10268 x_msg_data OUT NOCOPY VARCHAR2,
10269 x_line_id OUT NOCOPY NUMBER,
10270 x_msg_count OUT NOCOPY NUMBER
10271 )
10272 IS
10273 CURSOR l_line_rule_csr (p_line_id NUMBER)
10274 IS
10275 SELECT oks.acct_rule_id, okc.inv_rule_id, okc.price_list_id
10276 FROM okc_k_lines_b okc, oks_k_lines_b oks
10277 WHERE okc.ID = p_line_id AND oks.cle_id = okc.ID;
10278
10279 CURSOR l_party_csr (p_id NUMBER)
10280 IS
10281 SELECT party_id, NAME
10282 FROM okx_customer_accounts_v
10283 WHERE id1 = p_id;
10284
10285 CURSOR l_hdr_sts_csr (p_hdr_id NUMBER)
10286 IS
10287 SELECT st.ste_code, kh.sts_code
10288 FROM okc_k_headers_b kh, okc_statuses_b st
10289 WHERE kh.ID = p_hdr_id AND st.code = kh.sts_code;
10290
10291 -- Fix for bug 3588355
10292 CURSOR l_get_bill_ship_csr (p_cp_id NUMBER)
10293 IS
10294 SELECT bill_to_address, ship_to_address
10295 FROM csi_instance_party_v
10296 WHERE instance_id = p_cp_id;
10297
10298 CURSOR l_serv_csr (p_serv_id NUMBER)
10299 IS
10300 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments )
10301 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
10302 WHERE b.inventory_item_id = t.inventory_item_id
10303 AND b.organization_id = t.organization_id
10304 AND t.LANGUAGE = USERENV ('LANG')
10305 AND b.inventory_item_id = p_serv_id
10306 AND ROWNUM < 2;
10307
10308 l_line_rec k_line_service_rec_type;
10309 l_acct_id NUMBER;
10310 l_inv_id NUMBER;
10311 l_party_id NUMBER;
10312 l_party_name VARCHAR2 (360);
10313 l_ste_code VARCHAR2 (40);
10314 l_sts_code VARCHAR2 (40);
10315 l_hdr_sts_code VARCHAR2 (40);
10316 l_hdr_ste_code VARCHAR2 (40);
10317 l_lineid NUMBER;
10318 l_return_status VARCHAR2 (10);
10319 l_price_list_id NUMBER;
10320 p_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
10321 l_status VARCHAR2 (40);
10322 l_bill_to_id NUMBER;
10323 l_ship_to_id NUMBER;
10324 l_warranty_flag VARCHAR2 (2);
10325
10326 CURSOR l_sales_credit_csr (p_cle_id NUMBER)
10327 IS
10328 SELECT ctc_id, sales_credit_type_id1, PERCENT, sales_group_id
10329 FROM oks_k_sales_credits_v
10330 WHERE cle_id = p_cle_id;
10331
10332 l_sc_ctr NUMBER;
10333 l_salescredit_tbl oks_extwarprgm_pvt.salescredit_tbl;
10334 BEGIN
10335 x_return_status := okc_api.g_ret_sts_success;
10336
10337 OPEN l_line_rule_csr (p_kdtl_rec.service_line_id);
10338
10339 FETCH l_line_rule_csr
10340 INTO l_acct_id, l_inv_id, l_price_list_id;
10341
10342 CLOSE l_line_rule_csr;
10343
10344 get_party_id (p_kdtl_rec.new_account_id, l_party_id, l_party_name);
10345
10346 OPEN l_get_bill_ship_csr (p_kdtl_rec.old_cp_id);
10347
10348 FETCH l_get_bill_ship_csr
10349 INTO l_bill_to_id, l_ship_to_id;
10350
10351 CLOSE l_get_bill_ship_csr;
10352
10353 l_line_rec.k_id := p_hdr_id;
10354 l_line_rec.k_line_number := okc_api.g_miss_char;
10355 l_line_rec.org_id := p_kdtl_rec.hdr_org_id;
10356 l_line_rec.accounting_rule_id := l_acct_id;
10357 l_line_rec.invoicing_rule_id := -2;
10358 --l_inv_id; -- fix for bug 3451440
10359 l_line_rec.srv_id := p_kdtl_rec.service_inventory_id;
10360 -- l_line_rec.srv_segment1 := p_kdtl_rec.service_name;
10361 -- l_line_rec.srv_desc := p_kdtl_rec.service_description;
10362
10363 OPEN l_serv_csr (p_kdtl_rec.service_inventory_id);
10364 FETCH l_serv_csr INTO l_line_rec.srv_desc;
10365 CLOSE l_serv_csr;
10366
10367 l_line_rec.srv_sdt := TRUNC (l_trfdt);
10368 l_line_rec.srv_edt := TRUNC (p_kdtl_rec.service_edt);
10369
10370 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10371 THEN
10372 fnd_log.STRING (fnd_log.level_statement,
10373 g_module_current
10374 || '.CREATE_K_SYSTEM_TRF.create_k_service_line',
10375 'Start date = '
10376 || l_line_rec.srv_sdt
10377 || 'End date = '
10378 || l_line_rec.srv_edt
10379 );
10380 END IF;
10381
10382 --to be derived
10383 l_line_rec.bill_to_id :=
10384 NVL (l_bill_to_id,
10385 site_address (p_kdtl_rec.new_account_id,
10386 l_party_id,
10387 'BILL_TO',
10388 p_kdtl_rec.hdr_org_id
10389 )
10390 );
10391 l_line_rec.ship_to_id :=
10392 NVL (l_ship_to_id,
10393 site_address (p_kdtl_rec.new_account_id,
10394 l_party_id,
10395 'SHIP_TO',
10396 p_kdtl_rec.hdr_org_id
10397 )
10398 );
10399
10400 IF p_kdtl_rec.lse_id = 25
10401 THEN
10402 l_warranty_flag := 'E';
10403 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SERVICE'
10404 THEN
10405 l_warranty_flag := 'S';
10406 ELSIF p_kdtl_rec.lse_id = 18
10407 THEN
10408 l_warranty_flag := 'W';
10409 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SUBSCRIPTION'
10410 THEN
10411 l_warranty_flag := 'SU';
10412 END IF;
10413
10414 l_line_rec.warranty_flag := l_warranty_flag;
10415 l_line_rec.currency := p_kdtl_rec.service_currency;
10416 --Fix for Bug4121175
10417 l_line_rec.tax_code := p_kdtl_rec.tax_code;
10418 --End Fix for Bug4121175
10419 l_line_rec.cust_account := p_kdtl_rec.new_account_id;
10420 l_line_rec.ln_price_list_id := l_price_list_id;
10421 l_line_rec.coverage_id := p_kdtl_rec.coverage_id;
10422 l_line_rec.coverage_template_id := p_kdtl_rec.coverage_id;
10423 l_line_rec.standard_cov_yn := p_kdtl_rec.standard_cov_yn;
10424 l_line_rec.price_uom := p_kdtl_rec.price_uom_tl;
10425
10426 --l_line_rec.line_renewal_type := p_extwar_rec.line_renewal_type;
10427 IF l_line_rec.warranty_flag = 'W'
10428 THEN
10429 IF l_line_rec.srv_sdt > SYSDATE
10430 THEN
10431 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10432 ELSE
10433 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10434 END IF;
10435
10436 l_line_rec.line_sts_code := l_sts_code;
10437 l_line_rec.line_renewal_type := 'DNR' ;
10438
10439 ELSE
10440 get_sts_code (p_kdtl_rec.prod_sts_code,
10441 NULL,
10442 l_ste_code,
10443 l_sts_code
10444 );
10445
10446 IF l_ste_code = 'ENTERED'
10447 THEN
10448 l_line_rec.line_sts_code := l_sts_code;
10449 ELSE
10450 l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
10451
10452 IF l_status = 'ACTIVE'
10453 THEN
10454 IF l_line_rec.srv_sdt > SYSDATE
10455 THEN
10456 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10457 ELSE
10458 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10459 END IF;
10460 ELSE
10461 get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
10462 END IF;
10463
10464 l_line_rec.line_sts_code := l_sts_code;
10465 END IF;
10466 END IF;
10467
10468 l_line_rec.SOURCE := NULL;
10469 --errorout_n ('srv sdt'||p_extwar_rec.srv_sdt||' '||p_extwar_rec.srv_edt);
10470 l_sc_ctr := 0;
10471
10472 FOR l_sales_credit_rec IN
10473 l_sales_credit_csr (p_kdtl_rec.service_line_id)
10474 LOOP
10475 l_sc_ctr := l_sc_ctr + 1;
10476 l_salescredit_tbl (l_sc_ctr).ctc_id := l_sales_credit_rec.ctc_id;
10477 l_salescredit_tbl (l_sc_ctr).sales_credit_type_id :=
10478 l_sales_credit_rec.sales_credit_type_id1;
10479 l_salescredit_tbl (l_sc_ctr).PERCENT :=
10480 l_sales_credit_rec.PERCENT;
10481 l_salescredit_tbl (l_sc_ctr).sales_group_id :=
10482 l_sales_credit_rec.sales_group_id;
10483 END LOOP; -- For l_sales_credit_rec IN l_sales_credit_csr
10484
10485 oks_extwarprgm_pvt.create_k_service_lines
10486 (p_k_line_rec => l_line_rec,
10487 p_contact_tbl => p_contact_tbl_in,
10488 p_salescredit_tbl_in => l_salescredit_tbl,
10489 p_caller => 'ST',
10490 x_order_error => l_temp,
10491 x_service_line_id => l_lineid,
10492 x_return_status => l_return_status,
10493 x_msg_count => x_msg_count,
10494 x_msg_data => x_msg_data
10495 );
10496
10497 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10498 THEN
10499 fnd_log.STRING
10500 (fnd_log.level_statement,
10501 g_module_current
10502 || '.CREATE_K_SYSTEM_TRF.create_k_service_line',
10503 'oks_extwarprgm_pvt.create_k_service_lines(Return status = '
10504 || l_return_status
10505 || ')'
10506 );
10507 END IF;
10508
10509 IF NOT l_return_status = 'S'
10510 THEN
10511 RAISE g_exception_halt_validation;
10512 ELSE
10513 x_line_id := l_lineid;
10514 END IF;
10515 EXCEPTION
10516 WHEN g_exception_halt_validation
10517 THEN
10518 x_return_status := l_return_status;
10519 NULL;
10520 WHEN OTHERS
10521 THEN
10522 x_return_status := okc_api.g_ret_sts_unexp_error;
10523 okc_api.set_message (g_app_name,
10524 g_unexpected_error,
10525 g_sqlcode_token,
10526 SQLCODE,
10527 g_sqlerrm_token,
10528 SQLERRM
10529 );
10530 END create_contract_line;
10531
10532 PROCEDURE create_contract_subline (
10533 p_kdtl_rec IN contract_trf_rec,
10534 p_hdr_id IN NUMBER,
10535 p_line_id IN NUMBER,
10536 x_subline_id OUT NOCOPY NUMBER,
10537 x_update_top_line OUT NOCOPY VARCHAR2,
10538 x_return_status OUT NOCOPY VARCHAR2,
10539 x_msg_data OUT NOCOPY VARCHAR2,
10540 x_msg_count OUT NOCOPY NUMBER
10541 )
10542 IS
10543 /* Cursor l_Cust_csr IS --29-apr-03
10544
10545 Select csi.last_oe_order_line_id Original_order_line_id
10546 ,csi.inventory_item_id
10547 ,csi.quantity
10548 ,csi.unit_of_measure uom_code
10549 From csi_item_instances csi
10550 Where csi.instance_id = p_kdtl_rec.old_cp_id;
10551 */
10552 CURSOR l_line_sts_csr (p_line_id NUMBER)
10553 IS
10554 SELECT st.ste_code, kl.sts_code
10555 FROM okc_k_lines_b kl, okc_statuses_b st
10556 WHERE kl.ID = p_line_id AND st.code = kl.sts_code;
10557
10558 CURSOR l_getprice_csr (p_line_id NUMBER)
10559 IS
10560 SELECT price_negotiated
10561 FROM okc_k_lines_b
10562 WHERE ID = p_line_id;
10563
10564
10565 CURSOR l_serv_csr (p_serv_id NUMBER)
10566 IS
10567 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments )
10568 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
10569 WHERE b.inventory_item_id = t.inventory_item_id
10570 AND b.organization_id = t.organization_id
10571 AND t.LANGUAGE = USERENV ('LANG')
10572 AND b.inventory_item_id = p_serv_id
10573 AND ROWNUM < 2;
10574
10575 /* CURSOR l_serv_csr (p_serv_id NUMBER)
10576 IS
10577 SELECT b.concatenated_segments description
10578 FROM mtl_system_items_b_kfv b
10579 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
10580 */
10581
10582 l_line_ste_code VARCHAR2 (40);
10583 l_line_sts_code VARCHAR2 (40);
10584 l_covd_rec k_line_covered_level_rec_type;
10585 l_ste_code VARCHAR2 (40);
10586 l_sts_code VARCHAR2 (40);
10587 l_return_status VARCHAR2 (10);
10588 l_days NUMBER;
10589 l_newamt NUMBER;
10590 l_day1price NUMBER;
10591 p_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
10592 l_warranty_flag VARCHAR2 (2);
10593 l_covlvl_id NUMBER;
10594 l_update_top_line VARCHAR2 (1);
10595 l_status VARCHAR2 (40);
10596 l_new_price NUMBER;
10597 l_xfer_days NUMBER;
10598 l_duration NUMBER;
10599 l_timeunits VARCHAR2 (25);
10600 --l_xfer_timeunits VARCHAR2(25);
10601 BEGIN
10602 x_return_status := okc_api.g_ret_sts_success;
10603
10604 /* Open l_Cust_csr;
10605 Fetch l_Cust_csr into l_Cust_rec;
10606 If l_Cust_csr%notfound Then
10607 Close l_Cust_Csr;
10608 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
10609 fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.CREATE_K_SYSTEM_TRF.ERROR',
10610 'l_Cust_csr Not Found ' );
10611 END IF;
10612 l_return_status := OKC_API.G_RET_STS_ERROR;
10613 OKC_API.set_message(G_APP_NAME,'OKS_CUST_PROD_DTLS_NOT_FOUND','CUSTOMER_PRODUCT',p_kdtl_rec.old_cp_id);
10614 Raise G_EXCEPTION_HALT_VALIDATION;
10615 End if;
10616 Close l_Cust_csr;
10617 */ -- Amount to be prorated
10618 -- Fix for the bug 3405907 Vigandhi 10-feb-2004
10619 IF p_kdtl_rec.service_amount IS NOT NULL
10620 THEN
10621 get_sts_code (p_kdtl_rec.prod_sts_code,
10622 NULL,
10623 l_ste_code,
10624 l_sts_code
10625 );
10626
10627 IF l_ste_code = 'ENTERED'
10628 THEN
10629 --l_days := (trunc(p_kdtl_rec.prod_edt) - trunc(p_kdtl_rec.prod_sdt)) + 1;
10630 --l_day1price := p_kdtl_rec.service_amount / l_days;
10631 --l_newamt := oks_extwar_util_pvt.round_currency_amt(l_day1price * (trunc(p_kdtl_rec.prod_edt) - trunc(l_trfdt) + 1),p_kdtl_rec.service_currency);
10632
10633 -- Calculations based on partial period.
10634 IF p_kdtl_rec.price_uom_sl IS NULL
10635 THEN
10636 okc_time_util_pub.get_duration
10637 (p_start_date => TRUNC
10638 (p_kdtl_rec.prod_sdt
10639 ),
10640 p_end_date => p_kdtl_rec.prod_edt,
10641 x_duration => l_duration,
10642 x_timeunit => l_timeunits,
10643 x_return_status => l_return_status
10644 );
10645 /*
10646 Okc_time_util_pub.get_duration
10647 (
10648 p_start_date => trunc(l_trfdt),
10649 p_end_date => p_kdtl_rec.prod_edt,
10650 x_duration => l_duration,
10651 x_timeunit => l_xfer_timeunits,
10652 x_return_status => l_return_status
10653 );*/
10654 END IF;
10655
10656 l_days :=
10657 oks_time_measures_pub.get_quantity
10658 (p_kdtl_rec.prod_sdt,
10659 p_kdtl_rec.prod_edt,
10660 NVL (p_kdtl_rec.price_uom_sl,
10661 l_timeunits
10662 ),
10663 p_kdtl_rec.period_type,
10664 p_kdtl_rec.period_start
10665 );
10666 l_xfer_days :=
10667 oks_time_measures_pub.get_quantity
10668 (l_trfdt,
10669 p_kdtl_rec.prod_edt,
10670 NVL (p_kdtl_rec.price_uom_sl,
10671 l_timeunits
10672 ),
10673 p_kdtl_rec.period_type,
10674 p_kdtl_rec.period_start
10675 );
10676 l_newamt :=
10677 oks_extwar_util_pvt.round_currency_amt
10678 ( p_kdtl_rec.service_amount
10679 * l_xfer_days
10680 / l_days,
10681 p_kdtl_rec.service_currency
10682 );
10683 ELSE
10684 OPEN l_getprice_csr (p_kdtl_rec.object_line_id);
10685
10686 FETCH l_getprice_csr
10687 INTO l_new_price;
10688
10689 CLOSE l_getprice_csr;
10690
10691 l_newamt := p_kdtl_rec.service_amount - l_new_price;
10692 END IF;
10693 ELSE
10694 l_newamt := 0;
10695 END IF;
10696
10697 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10698 THEN
10699 fnd_log.STRING (fnd_log.level_statement,
10700 g_module_current
10701 || '.CREATE_K_SYSTEM_TRF.Create_Contract_subline',
10702 'New amount = ' || l_newamt
10703 );
10704 END IF;
10705
10706 l_covd_rec.k_id := p_hdr_id;
10707 l_covd_rec.rty_code := 'CONTRACTTRANSFERORDER';
10708 l_covd_rec.attach_2_line_id := p_line_id;
10709 l_covd_rec.line_number := okc_api.g_miss_char;
10710 l_covd_rec.customer_product_id := p_kdtl_rec.old_cp_id;
10711 l_covd_rec.product_segment1 := p_kdtl_rec.prod_name;
10712 l_covd_rec.product_desc := p_kdtl_rec.prod_description;
10713 l_covd_rec.product_start_date := TRUNC (l_trfdt);
10714 l_covd_rec.product_end_date := TRUNC (p_kdtl_rec.prod_edt);
10715 l_covd_rec.quantity := p_kdtl_rec.cp_qty;
10716 l_covd_rec.list_price := p_kdtl_rec.service_unit_price;
10717 l_covd_rec.uom_code := p_kdtl_rec.uom_code;
10718 l_covd_rec.negotiated_amount := l_newamt;
10719 l_covd_rec.standard_coverage := p_kdtl_rec.standard_cov_yn;
10720 l_covd_rec.price_uom := p_kdtl_rec.price_uom_sl;
10721 l_covd_rec.toplvl_uom_code := p_kdtl_rec.toplvl_uom_code;
10722 --mchoudha added for bug#5233956
10723 l_covd_rec.toplvl_price_qty := p_kdtl_rec.toplvl_price_qty;
10724
10725 IF p_kdtl_rec.lse_id = 25
10726 THEN
10727 l_warranty_flag := 'E';
10728 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SERVICE'
10729 THEN
10730 l_warranty_flag := 'S';
10731 ELSIF p_kdtl_rec.lse_id = 18
10732 THEN
10733 l_warranty_flag := 'W';
10734 l_covd_rec.line_renewal_type := 'DNR' ;
10735 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SUBSCRIPTION'
10736 THEN
10737 l_warranty_flag := 'SU';
10738
10739
10740 END IF;
10741
10742 l_covd_rec.warranty_flag := l_warranty_flag;
10743 -- l_covd_rec.line_renewal_type := p_kdtl_rec.cp_line_renewal_type;
10744 l_covd_rec.currency_code := p_kdtl_rec.service_currency;
10745
10746 OPEN l_serv_csr (p_kdtl_rec.service_inventory_id);
10747
10748 FETCH l_serv_csr
10749 INTO l_covd_rec.attach_2_line_desc;
10750
10751 CLOSE l_serv_csr;
10752
10753 l_covd_rec.prod_item_id := p_kdtl_rec.prod_inventory_item;
10754
10755 IF l_covd_rec.warranty_flag = 'W'
10756 THEN
10757 IF l_covd_rec.product_start_date > SYSDATE
10758 THEN
10759 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10760 ELSE
10761 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10762 END IF;
10763
10764 l_covd_rec.product_sts_code := l_sts_code;
10765 ELSE
10766 get_sts_code (p_kdtl_rec.prod_sts_code,
10767 NULL,
10768 l_ste_code,
10769 l_sts_code
10770 );
10771
10772 IF l_ste_code = 'ENTERED'
10773 THEN
10774 l_covd_rec.product_sts_code := l_sts_code;
10775 ELSE
10776 l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
10777
10778 IF l_status = 'ACTIVE'
10779 THEN
10780 IF l_covd_rec.product_start_date > SYSDATE
10781 THEN
10782 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10783 ELSE
10784 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10785 END IF;
10786 ELSE
10787 get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
10788 END IF;
10789
10790 l_covd_rec.product_sts_code := l_sts_code;
10791 END IF;
10792 END IF;
10793
10794 oks_extwarprgm_pvt.create_k_covered_levels
10795 (p_k_covd_rec => l_covd_rec,
10796 p_price_attribs => p_price_attribs_in,
10797 p_caller => 'ST',
10798 x_order_error => l_temp,
10799 x_covlvl_id => l_covlvl_id,
10800 x_update_line => l_update_top_line,
10801 x_return_status => l_return_status,
10802 x_msg_count => x_msg_count,
10803 x_msg_data => x_msg_data
10804 );
10805
10806 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10807 THEN
10808 fnd_log.STRING (fnd_log.level_event,
10809 g_module_current
10810 || '.CREATE_K_SYSTEM_TRF.Create_Contract_subline',
10811 'New amount = ' || l_newamt
10812 );
10813 END IF;
10814
10815 IF NOT l_return_status = 'S'
10816 THEN
10817 RAISE g_exception_halt_validation;
10818 ELSE
10819 x_subline_id := l_covlvl_id;
10820 x_update_top_line := l_update_top_line;
10821 END IF;
10822 EXCEPTION
10823 WHEN g_exception_halt_validation
10824 THEN
10825 x_return_status := l_return_status;
10826 NULL;
10827 WHEN OTHERS
10828 THEN
10829 x_return_status := okc_api.g_ret_sts_unexp_error;
10830 okc_api.set_message (g_app_name,
10831 g_unexpected_error,
10832 g_sqlcode_token,
10833 SQLCODE,
10834 g_sqlerrm_token,
10835 SQLERRM
10836 );
10837 END create_contract_subline;
10838
10839 PROCEDURE create_billing_schedule (
10840 p_line_id IN NUMBER,
10841 p_covlvl_id IN NUMBER,
10842 P_period_start IN Varchar2,
10843 p_start_date IN DATE,
10844 p_end_date IN DATE,
10845 p_update_line IN VARCHAR2,
10846 x_return_status OUT NOCOPY VARCHAR2,
10847 x_msg_data OUT NOCOPY VARCHAR2,
10848 x_msg_count OUT NOCOPY NUMBER
10849 )
10850 IS
10851 l_strmlvl_id NUMBER;
10852 l_sll_tbl oks_bill_sch.streamlvl_tbl;
10853 l_return_status VARCHAR2 (1);
10854 l_duration NUMBER;
10855 l_timeunits VARCHAR2 (25);
10856 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
10857 l_uom_code Varchar2(240);
10858 Cursor get_day_uom_code IS
10859 select uom_code
10860 from okc_time_code_units_v
10861 where tce_code='DAY'
10862 and quantity=1;
10863
10864
10865
10866 BEGIN
10867 l_strmlvl_id := check_strmlvl_exists (p_line_id);
10868
10869 IF l_strmlvl_id IS NULL
10870 THEN
10871
10872 If p_period_start = 'CALENDAR' Then
10873 Open get_day_uom_code;
10874 Fetch get_day_uom_code into l_uom_code;
10875 Close get_day_uom_code;
10876
10877
10878 l_sll_tbl (1).cle_id := p_line_id;
10879 l_sll_tbl (1).sequence_no := 1;
10880 l_sll_tbl (1).level_periods := 1;
10881 l_sll_tbl (1).uom_code := l_uom_code;
10882 l_sll_tbl (1).uom_per_period := p_end_date - p_start_date + 1;
10883 l_sll_tbl (1).invoice_offset_days := 0;
10884 l_sll_tbl (1).interface_offset_days := 0;
10885 l_sll_tbl (1).level_amount := null;
10886
10887
10888
10889
10890
10891 Else
10892 okc_time_util_pub.get_duration
10893 (p_start_date => TRUNC
10894 (p_start_date
10895 ),
10896 p_end_date => p_end_date,
10897 x_duration => l_duration,
10898 x_timeunit => l_timeunits,
10899 x_return_status => l_return_status
10900 );
10901
10902 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10903 THEN
10904 fnd_log.STRING
10905 (fnd_log.level_event,
10906 g_module_current
10907 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10908 'Okc_time_util_pub.get_duration(Return status = '
10909 || l_return_status
10910 || ',Duration = '
10911 || l_duration
10912 || ',Time Units = '
10913 || l_timeunits
10914 || ')'
10915 );
10916 END IF;
10917
10918 IF NOT l_return_status = 'S'
10919 THEN
10920 RAISE g_exception_halt_validation;
10921 END IF;
10922
10923 l_sll_tbl (1).cle_id := p_line_id;
10924 --l_sll_tbl(1).billing_type := 'T';
10925 l_sll_tbl (1).uom_code := l_timeunits;
10926 l_sll_tbl (1).sequence_no := '1';
10927 l_sll_tbl (1).level_periods := '1';
10928 --l_sll_tbl (1).start_date := TRUNC (l_trfdt);
10929 l_sll_tbl (1).uom_per_period := l_duration;
10930 l_sll_tbl (1).advance_periods := NULL;
10931 l_sll_tbl (1).level_amount := NULL;
10932 l_sll_tbl (1).invoice_offset_days := NULL;
10933 l_sll_tbl (1).interface_offset_days := NULL;
10934
10935 End If;
10936 oks_bill_sch.create_bill_sch_rules
10937 (p_billing_type => 'T',
10938 p_sll_tbl => l_sll_tbl,
10939 p_invoice_rule_id => -2,
10940 x_bil_sch_out_tbl => l_bil_sch_out,
10941 x_return_status => l_return_status
10942 );
10943
10944 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10945 THEN
10946 fnd_log.STRING
10947 (fnd_log.level_event,
10948 g_module_current
10949 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10950 'oks_bill_sch.create_bill_sch_rules(Return status = '
10951 || l_return_status
10952 || ')'
10953 );
10954 END IF;
10955
10956 IF l_return_status <> okc_api.g_ret_sts_success
10957 THEN
10958 okc_api.set_message (g_app_name,
10959 g_required_value,
10960 g_col_name_token,
10961 'Sched Billing Rule (LINE)'
10962 );
10963 RAISE g_exception_halt_validation;
10964 END IF;
10965 /* OKS_BILL_UTIL_PUB.CREATE_BCL_FOR_OM
10966 (
10967 P_LINE_ID => p_line_id ,
10968 X_RETURN_STATUS => l_return_status
10969 );
10970 If(G_FND_LOG_OPTION = 'Y') Then
10971 FND_FILE.PUT_LINE (FND_FILE.LOG,'IBNEW :- CREATE_BCL_FOR_OM ' || l_return_status );
10972 OKS_RENEW_PVT.DEBUG_LOG( 'OKS_EXTWARPRGM_PVT.CREATE_K_SYSTEM_TRF :: CREATE_BCL_FOR_OM '|| l_return_status);
10973 End if;
10974
10975 If Not l_return_status = 'S' then
10976 Raise G_EXCEPTION_HALT_VALIDATION;
10977 End if;
10978 */
10979 ELSE
10980 IF check_lvlelements_exists (p_line_id)
10981 THEN
10982 IF p_update_line = 'Y'
10983 THEN
10984 oks_bill_sch.update_om_sll_date
10985 (p_top_line_id => p_line_id,
10986 x_return_status => l_return_status,
10987 x_msg_count => x_msg_count,
10988 x_msg_data => x_msg_data
10989 );
10990
10991 -- FND_FILE.PUT_LINE( fnd_file.LOG, 'IBNEW :- Update_OM_SLL_Date ' || l_return_status );
10992 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
10993 )
10994 THEN
10995 fnd_log.STRING
10996 (fnd_log.level_event,
10997 g_module_current
10998 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10999 'oks_bill_sch.update_om_sll_date(Return status = '
11000 || l_return_status
11001 || ')'
11002 );
11003 END IF;
11004
11005 IF NOT l_return_status = 'S'
11006 THEN
11007 RAISE g_exception_halt_validation;
11008 END IF;
11009 ELSE
11010 oks_bill_sch.create_bill_sch_cp
11011 (p_top_line_id => p_line_id,
11012 p_cp_line_id => p_covlvl_id,
11013 p_cp_new => 'Y',
11014 x_return_status => l_return_status,
11015 x_msg_count => x_msg_count,
11016 x_msg_data => x_msg_data
11017 );
11018
11019 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
11020 )
11021 THEN
11022 fnd_log.STRING
11023 (fnd_log.level_event,
11024 g_module_current
11025 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
11026 'oks_bill_sch.create_bill_sch_cp(Return status = '
11027 || l_return_status
11028 || ')'
11029 );
11030 END IF;
11031
11032 IF NOT l_return_status = 'S'
11033 THEN
11034 RAISE g_exception_halt_validation;
11035 END IF;
11036 END IF;
11037 /* OKS_BILL_UTIL_PUB.CREATE_BCL_FOR_OM
11038 (
11039 P_LINE_ID => p_line_id ,
11040 X_RETURN_STATUS => l_return_status
11041 );
11042 -- FND_FILE.PUT_LINE (FND_FILE.LOG,'IBNEW :- CREATE_BCL_FOR_OM ' || l_return_status );
11043 If(G_FND_LOG_OPTION = 'Y') Then
11044 OKS_RENEW_PVT.DEBUG_LOG( 'OKS_EXTWARPRGM_PVT.CREATE_K_SYSTEM_TRF :: CREATE_BCL_FOR_OM '|| l_return_status);
11045 End if;
11046 If Not l_return_status = 'S' then
11047 Raise G_EXCEPTION_HALT_VALIDATION;
11048 End if;
11049 */
11050 ELSE
11051 okc_api.set_message (g_app_name,
11052 g_required_value,
11053 g_col_name_token,
11054 'level elements NOT EXIST'
11055 );
11056 RAISE g_exception_halt_validation;
11057 END IF;
11058 END IF; -- strmlvl end
11059
11060 x_return_status := l_return_status;
11061 EXCEPTION
11062 WHEN g_exception_halt_validation
11063 THEN
11064 x_return_status := l_return_status;
11065 NULL;
11066 WHEN OTHERS
11067 THEN
11068 x_return_status := okc_api.g_ret_sts_unexp_error;
11069 okc_api.set_message (g_app_name,
11070 g_unexpected_error,
11071 g_sqlcode_token,
11072 SQLCODE,
11073 g_sqlerrm_token,
11074 SQLERRM
11075 );
11076 END;
11077 BEGIN
11078 x_return_status := okc_api.g_ret_sts_success;
11079 l_old_cp_id := 0;
11080
11081 IF p_kdtl_tbl.COUNT > 0
11082 THEN
11083 l_ctr := p_kdtl_tbl.FIRST;
11084
11085 LOOP
11086
11087
11088 get_sts_code (NULL,
11089 p_kdtl_tbl (l_ctr).hdr_sts,
11090 l_ste_code,
11091 l_sts_code
11092 );
11093
11094 IF l_ste_code = 'HOLD'
11095 THEN
11096 l_return_status := okc_api.g_ret_sts_error;
11097
11098 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
11099 THEN
11100 fnd_log.STRING (fnd_log.level_error,
11101 g_module_current
11102 || '.CREATE_CONTRACT_IBTERMINATE.ERROR',
11103 'Contract in QA_HOLD status'
11104 );
11105 END IF;
11106
11107 okc_api.set_message (g_app_name,
11108 g_invalid_value,
11109 g_col_name_token,
11110 'Termination not allowed .Contract '
11111 || p_kdtl_tbl (l_ctr).contract_number
11112 || 'is in QA_HOLD status'
11113 );
11114 RAISE g_exception_halt_validation;
11115 END IF;
11116
11117 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
11118 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
11119 END LOOP;
11120 END IF;
11121
11122
11123 IF p_kdtl_tbl.COUNT > 0
11124 THEN
11125 l_ctr := p_kdtl_tbl.FIRST;
11126
11127 LOOP
11128 --Fix for Bug 5406201
11129 l_clev_tbl_in.delete;
11130 l_chrv_tbl_in.delete;
11131 okc_context.set_okc_org_context
11132 (p_kdtl_tbl (l_ctr).hdr_org_id,
11133 p_kdtl_tbl (l_ctr).organization_id
11134 );
11135 get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
11136 l_party_id,
11137 l_party_name
11138 );
11139
11140 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
11141
11142 FETCH l_serv_csr
11143 INTO l_service_name;
11144
11145 CLOSE l_serv_csr;
11146
11147 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
11148 THEN
11149 fnd_log.STRING (fnd_log.level_statement,
11150 g_module_current || '.CREATE_K_SYSTEM_TRF',
11151 'new cust acct id = '
11152 || p_kdtl_tbl (l_ctr).new_account_id
11153 || ',party id = '
11154 || l_party_id
11155 );
11156 END IF;
11157
11158 IF p_kdtl_tbl (l_ctr).party_id <> l_party_id
11159 THEN
11160 l_inst_dtls_tbl.DELETE;
11161 l_ptr := l_ptr + 1;
11162 l_trf_option := NULL;
11163
11164 OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
11165
11166 FETCH l_cov_csr
11167 INTO l_cov_rec;
11168
11169 IF l_cov_csr%FOUND
11170 THEN
11171 l_trf_option := l_cov_rec.transfer_option;
11172 END IF;
11173
11174 --errorout_n('l_trf_option'||l_trf_option);
11175 CLOSE l_cov_csr;
11176
11177 l_trfdt := p_kdtl_tbl (l_ctr).transfer_date;
11178
11179 IF (TRUNC (l_trfdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
11180 THEN
11181 l_trfdt := p_kdtl_tbl (l_ctr).prod_sdt;
11182 END IF;
11183
11184 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
11185 THEN
11186 fnd_log.STRING (fnd_log.level_statement,
11187 g_module_current || '.CREATE_K_SYSTEM_TRF',
11188 'Transfer Option = '
11189 || l_trf_option
11190 || ',For service line = '
11191 || p_kdtl_tbl (l_ctr).service_line_id
11192 );
11193 END IF;
11194
11195 /*-------------------------------------------------*/
11196 -- If Transfer Option Is "No Change to Contract"
11197 /*-------------------------------------------------*/
11198 IF l_trf_option = 'NO_CHANGE'
11199 THEN
11200 NULL;
11201 END IF;
11202
11203 /*-------------------------------------------------*/
11204 --If Transfer Option Is "Terminate upon Transfer"
11205 /*-------------------------------------------------*/
11206 /*----------------------------------------------------------------------------------------*/
11207 --If Transfer option Is "No Change if Transfer within group otherwise Terminate Contract".
11208 /*----------------------------------------------------------------------------------------*/
11209 IF l_trf_option IN ('TERM', 'TERM_NO_REL')
11210 THEN
11211 l_ptr := 1;
11212 --Check if the CUstomers are related by the value defined in profile
11213 l_relationship := NULL;
11214
11215 IF l_trf_option = 'TERM_NO_REL'
11216 THEN
11217 l_relationship_type :=
11218 fnd_profile.VALUE ('OKS_TRF_PARTY_REL');
11219 get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
11220 l_new_party_id,
11221 l_new_party_name
11222 );
11223 get_party_id (p_kdtl_tbl (l_ctr).old_account_id,
11224 l_old_party_id,
11225 l_old_party_name
11226 );
11227
11228 OPEN l_cust_rel_csr (l_old_party_id,
11229 l_new_party_id,
11230 l_relationship_type,
11231 p_kdtl_tbl (l_ctr).transfer_date
11232 );
11233
11234 FETCH l_cust_rel_csr
11235 INTO l_relationship;
11236
11237 CLOSE l_cust_rel_csr;
11238
11239 IF fnd_log.level_statement >=
11240 fnd_log.g_current_runtime_level
11241 THEN
11242 fnd_log.STRING
11243 (fnd_log.level_statement,
11244 g_module_current
11245 || '.CREATE_K_SYSTEM_TRF',
11246 'TERM_NO_REL profile relationship = '
11247 || l_relationship_type
11248 || ', Actual Relationship = '
11249 || l_relationship
11250 );
11251 END IF;
11252 END IF;
11253
11254 IF l_relationship IS NULL
11255 THEN
11256
11257
11258 -- Check Product status
11259 get_sts_code (NULL,
11260 p_kdtl_tbl (l_ctr).prod_sts_code,
11261 l_ste_code,
11262 l_sts_code
11263 );
11264
11265 IF fnd_log.level_statement >=
11266 fnd_log.g_current_runtime_level
11267 THEN
11268 fnd_log.STRING (fnd_log.level_statement,
11269 g_module_current
11270 || '.CREATE_K_SYSTEM_TRF',
11271 'Product status Code = '
11272 || p_kdtl_tbl (l_ctr).prod_sts_code
11273 || ', Ste code = '
11274 || l_ste_code
11275 );
11276 END IF;
11277
11278 IF l_ste_code <> 'ENTERED'
11279 THEN
11280 --Terminate the CUrrent Owners Contract subline with date terminated as Transfer date
11281 IF fnd_log.level_statement >=
11282 fnd_log.g_current_runtime_level
11283 THEN
11284 fnd_log.STRING
11285 (fnd_log.level_statement,
11286 g_module_current || '.CREATE_K_SYSTEM_TRF',
11287 'OKS Raise credit memo profile option value ='
11288 || fnd_profile.VALUE
11289 ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
11290 );
11291 END IF;
11292
11293 /*IF fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') = 'YES' OR fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') IS NULL THEN
11294 l_suppress_credit := 'N';
11295 ELSE
11296 l_suppress_credit := 'Y';
11297 END IF;*/
11298 l_credit_amount :=
11299 oks_ib_util_pvt.get_credit_option
11300 (p_kdtl_tbl (l_ctr).party_id,
11301 p_kdtl_tbl (l_ctr).hdr_org_id,
11302 p_kdtl_tbl (l_ctr).transfer_date
11303 );
11304
11305 IF UPPER (l_credit_amount) = 'FULL'
11306 THEN
11307 l_full_credit := 'Y';
11308 l_suppress_credit := 'N';
11309 --l_trfdt := p_kdtl_tbl( l_ctr ).prod_sdt;
11310 l_term_date_flag := 'N';
11311 ELSIF UPPER (l_credit_amount) = 'NONE'
11312 THEN
11313 l_suppress_credit := 'Y';
11314 l_full_credit := 'N';
11315 l_term_date_flag := 'N';
11316 ELSIF UPPER (l_credit_amount) = 'CALCULATED'
11317 THEN
11318 l_suppress_credit := 'N';
11319 l_full_credit := 'N';
11320 l_term_date_flag := 'N';
11321 END IF;
11322
11323 IF (TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11324 TRUNC (l_trfdt)
11325 )
11326 THEN
11327 l_suppress_credit := 'Y';
11328 l_full_credit := 'N';
11329 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11330 l_term_date_flag := 'Y';
11331 END IF;
11332
11333
11334
11335 oks_bill_rec_pub.pre_terminate_cp
11336 (p_calledfrom => -1,
11337 p_cle_id => p_kdtl_tbl
11338 (l_ctr).object_line_id,
11339 p_termination_date => TRUNC (l_trfdt),
11340 p_terminate_reason => 'TRF',
11341 p_override_amount => NULL,
11342 p_con_terminate_amount => NULL,
11343 p_termination_amount => NULL,
11344 p_suppress_credit => l_suppress_credit,
11345 --p_existing_credit => 0,
11346 p_full_credit => l_full_credit,
11347 --'N',
11348 p_term_date_flag => l_term_date_flag,
11349 p_term_cancel_source => 'IBTRANSFER',
11350 x_return_status => l_return_status
11351 );
11352
11353 IF (fnd_log.level_event >=
11354 fnd_log.g_current_runtime_level
11355 )
11356 THEN
11357 fnd_log.STRING
11358 (fnd_log.level_event,
11359 g_module_current || '.CREATE_K_SYSTEM_TRF',
11360 'oks_bill_rec_pub.Pre_terminate_cp(Return status ='
11361 || l_return_status
11362 || ')'
11363 );
11364 END IF;
11365
11366 IF NOT l_return_status = okc_api.g_ret_sts_success
11367 THEN
11368 RAISE g_exception_halt_validation;
11369 END IF;
11370
11371 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
11372 TRUNC (l_trfdt);
11373 date_terminated := NULL;
11374 oks_ib_util_pvt.check_termcancel_lines
11375 (p_kdtl_tbl (l_ctr).service_line_id,
11376 'SL',
11377 'T',
11378 date_terminated
11379 );
11380
11381 IF date_terminated IS NOT NULL
11382 THEN
11383 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11384
11385 l_clev_tbl_in (1).ID :=
11386 p_kdtl_tbl (l_ctr).service_line_id;
11387 l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
11388 l_clev_tbl_in (1).trn_code := 'TRF';
11389 l_clev_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11390 If TRUNC (date_terminated)<= trunc(sysdate) Then
11391 l_clev_tbl_in (1).sts_code := l_sts_code;
11392 End If;
11393
11394 okc_contract_pub.update_contract_line
11395 (p_api_version => l_api_version,
11396 p_init_msg_list => l_init_msg_list,
11397 p_restricted_update => okc_api.g_true,
11398 x_return_status => l_return_status,
11399 x_msg_count => x_msg_count,
11400 x_msg_data => x_msg_data,
11401 p_clev_tbl => l_clev_tbl_in,
11402 x_clev_tbl => l_clev_tbl_out
11403 );
11404
11405 IF (fnd_log.level_event >=
11406 fnd_log.g_current_runtime_level
11407 )
11408 THEN
11409 fnd_log.STRING
11410 (fnd_log.level_event,
11411 g_module_current || '.CREATE_K_SYSTEM_TRF',
11412 'okc_contract_pub.update_contract_line(Return status = '
11413 || l_return_status
11414 || ')'
11415 );
11416 END IF;
11417
11418 IF NOT l_return_status = okc_api.g_ret_sts_success
11419 THEN
11420 RAISE g_exception_halt_validation;
11421 END IF;
11422 END IF;
11423
11424 date_terminated := NULL;
11425 oks_ib_util_pvt.check_termcancel_lines
11426 (p_kdtl_tbl (l_ctr).hdr_id,
11427 'TL',
11428 'T',
11429 date_terminated
11430 );
11431
11432 IF date_terminated IS NOT NULL
11433 THEN
11434 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11435
11436 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
11437 l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
11438 l_chrv_tbl_in (1).trn_code := 'TRF';
11439 l_chrv_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11440 If TRUNC (date_terminated)<= trunc(sysdate) Then
11441 l_chrv_tbl_in (1).sts_code := l_sts_code;
11442 End If;
11443
11444 okc_contract_pub.update_contract_header
11445 (p_api_version => l_api_version,
11446 p_init_msg_list => l_init_msg_list,
11447 p_restricted_update => okc_api.g_true,
11448 x_return_status => l_return_status,
11449 x_msg_count => x_msg_count,
11450 x_msg_data => x_msg_data,
11451 p_chrv_tbl => l_chrv_tbl_in,
11452 x_chrv_tbl => l_chrv_tbl_out
11453 );
11454
11455 IF (fnd_log.level_event >=
11456 fnd_log.g_current_runtime_level
11457 )
11458 THEN
11459 fnd_log.STRING
11460 (fnd_log.level_event,
11461 g_module_current
11462 || '.Update_Hdr_Dates.external_call.after',
11463 'okc_contract_pub.update_contract_header(Return status = '
11464 || l_return_status
11465 || ')'
11466 );
11467 END IF;
11468
11469 IF NOT l_return_status = okc_api.g_ret_sts_success
11470 THEN
11471 RAISE g_exception_halt_validation;
11472 END IF;
11473 END IF;
11474
11475 launch_workflow
11476 ( 'INSTALL BASE ACTIVITY : TRANSFER TERMINATE SUBLINE '
11477 || fnd_global.local_chr (10)
11478 || 'Contract Number : '
11479 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
11480 || fnd_global.local_chr (10)
11481 || 'Service Terminated : '
11482 || l_service_name
11483 );
11484 ELSIF l_ste_code = 'ENTERED'
11485 THEN
11486 IF (TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11487 TRUNC (l_trfdt)
11488 )
11489 THEN
11490 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11491 END IF;
11492
11493 -- added for the bug # 6000133
11494 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11495
11496 oks_change_status_pvt.update_line_status
11497 (x_return_status => l_return_status,
11498 x_msg_data => x_msg_data,
11499 x_msg_count => x_msg_count,
11500 p_init_msg_list => 'F',
11501 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11502 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
11503 p_new_sts_code => l_sts_code,
11504 p_canc_reason_code => 'TRANSFER',
11505 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11506 p_old_ste_code => 'ENTERED',
11507 p_new_ste_code => 'CANCELLED',
11508 p_term_cancel_source => 'IBTRANSFER',
11509 p_date_cancelled => TRUNC (l_trfdt),
11510 p_comments => NULL,
11511 p_validate_status => 'N'
11512 );
11513
11514 IF (fnd_log.level_event >=
11515 fnd_log.g_current_runtime_level
11516 )
11517 THEN
11518 fnd_log.STRING
11519 (fnd_log.level_event,
11520 g_module_current || '.CREATE_K_SYSTEM_TRF',
11521 'okc_contract_pub.update_contract_line(Return status ='
11522 || l_return_status
11523 || ')'
11524 );
11525 END IF;
11526
11527 IF NOT l_return_status = okc_api.g_ret_sts_success
11528 THEN
11529 RAISE g_exception_halt_validation;
11530 END IF;
11531
11532 l_inst_dtls_tbl (l_ptr).date_cancelled :=
11533 TRUNC (l_trfdt);
11534 date_cancelled := NULL;
11535 oks_ib_util_pvt.check_termcancel_lines
11536 (p_kdtl_tbl (l_ctr).service_line_id,
11537 'SL',
11538 'C',
11539 date_cancelled
11540 );
11541
11542 IF date_cancelled IS NOT NULL
11543 THEN
11544
11545 -- added for the bug # 6000133
11546 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11547
11548 oks_change_status_pvt.update_line_status
11549 (x_return_status => l_return_status,
11550 x_msg_data => x_msg_data,
11551 x_msg_count => x_msg_count,
11552 p_init_msg_list => 'F',
11553 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11554 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
11555 p_new_sts_code => l_sts_code,
11556 p_canc_reason_code => 'TRANSFER',
11557 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11558 p_old_ste_code => 'ENTERED',
11559 p_new_ste_code => 'CANCELLED',
11560 p_term_cancel_source => 'IBTRANSFER',
11561 p_date_cancelled => TRUNC
11562 (date_cancelled),
11563 p_comments => NULL,
11564 p_validate_status => 'N'
11565 );
11566
11567 IF (fnd_log.level_event >=
11568 fnd_log.g_current_runtime_level
11569 )
11570 THEN
11571 fnd_log.STRING
11572 (fnd_log.level_event,
11573 g_module_current || '.CREATE_K_SYSTEM_TRF',
11574 'okc_contract_pub.update_contract_line(Return status = '
11575 || l_return_status
11576 || ')'
11577 );
11578 END IF;
11579
11580 IF NOT l_return_status = okc_api.g_ret_sts_success
11581 THEN
11582 RAISE g_exception_halt_validation;
11583 END IF;
11584 END IF;
11585
11586 date_cancelled := NULL;
11587 oks_ib_util_pvt.check_termcancel_lines
11588 (p_kdtl_tbl (l_ctr).hdr_id,
11589 'TL',
11590 'C',
11591 date_cancelled
11592 );
11593
11594 IF date_cancelled IS NOT NULL
11595 THEN
11596
11597 -- added for the bug # 6000133
11598 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11599
11600 oks_change_status_pvt.update_header_status
11601 (x_return_status => l_return_status,
11602 x_msg_data => x_msg_data,
11603 x_msg_count => x_msg_count,
11604 p_init_msg_list => 'F',
11605 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11606 p_new_sts_code => l_sts_code,
11607 p_canc_reason_code => 'TRANSFER',
11608 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11609 p_comments => NULL,
11610 p_term_cancel_source => 'IBTRANSFER',
11611 p_date_cancelled => TRUNC
11612 (date_cancelled),
11613 p_validate_status => 'N'
11614 );
11615
11616 IF (fnd_log.level_event >=
11617 fnd_log.g_current_runtime_level
11618 )
11619 THEN
11620 fnd_log.STRING
11621 (fnd_log.level_event,
11622 g_module_current || '.CREATE_K_SYSTEM_TRF',
11623 'oks_change_status_pvt.Update_header_status(Return status = '
11624 || l_return_status
11625 || ')'
11626 );
11627 END IF;
11628
11629 IF NOT l_return_status = okc_api.g_ret_sts_success
11630 THEN
11631 RAISE g_exception_halt_validation;
11632 END IF;
11633 END IF; --Date_Cancelled Is Not Null
11634 END IF; -- ste_code <> 'ENTERED'
11635
11636 l_date_terminated := NULL;
11637 l_subline_price := NULL;
11638
11639 OPEN l_subline_csr (p_kdtl_tbl (l_ctr).object_line_id);
11640
11641 FETCH l_subline_csr
11642 INTO l_date_terminated, l_subline_price;
11643
11644 CLOSE l_subline_csr;
11645
11646 l_inst_dtls_tbl (l_ptr).transaction_date :=
11647 (p_kdtl_tbl (l_ctr).transaction_date);
11648 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
11649 l_inst_dtls_tbl (l_ptr).system_id :=
11650 p_kdtl_tbl (l_ctr).system_id;
11651 l_inst_dtls_tbl (l_ptr).transfer_option := l_trf_option;
11652 l_inst_dtls_tbl (l_ptr).instance_id_new :=
11653 p_kdtl_tbl (l_ctr).instance_id;
11654 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
11655 l_subline_price;
11656 --l_kdtl_tbl( l_ctr ).service_amount;
11657 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
11658 p_kdtl_tbl (l_ctr).cp_qty;
11659 l_inst_dtls_tbl (l_ptr).new_contract_id :=
11660 p_kdtl_tbl (l_ctr).hdr_id;
11661 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
11662 p_kdtl_tbl (l_ctr).hdr_sdt;
11663 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
11664 p_kdtl_tbl (l_ctr).hdr_edt;
11665 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
11666 p_kdtl_tbl (l_ctr).service_line_id;
11667 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
11668 p_kdtl_tbl (l_ctr).service_sdt;
11669 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
11670 p_kdtl_tbl (l_ctr).service_edt;
11671 l_inst_dtls_tbl (l_ptr).new_subline_id :=
11672 p_kdtl_tbl (l_ctr).object_line_id;
11673 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
11674 p_kdtl_tbl (l_ctr).prod_sdt;
11675 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
11676 p_kdtl_tbl (l_ctr).prod_edt;
11677 l_inst_dtls_tbl (l_ptr).new_customer :=
11678 p_kdtl_tbl (l_ctr).old_account_id;
11679 l_inst_dtls_tbl (l_ptr).new_k_status :=
11680 p_kdtl_tbl (l_ctr).hdr_sts;
11681 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
11682 p_kdtl_tbl (l_ctr).service_amount;
11683 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
11684 p_kdtl_tbl (l_ctr).cp_qty;
11685 l_inst_dtls_tbl (l_ptr).old_contract_id :=
11686 p_kdtl_tbl (l_ctr).hdr_id;
11687 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
11688 p_kdtl_tbl (l_ctr).hdr_sdt;
11689 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
11690 p_kdtl_tbl (l_ctr).hdr_edt;
11691 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
11692 p_kdtl_tbl (l_ctr).service_line_id;
11693 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
11694 p_kdtl_tbl (l_ctr).service_sdt;
11695 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
11696 p_kdtl_tbl (l_ctr).service_edt;
11697 l_inst_dtls_tbl (l_ptr).old_subline_id :=
11698 p_kdtl_tbl (l_ctr).object_line_id;
11699 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
11700 p_kdtl_tbl (l_ctr).prod_sdt;
11701 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
11702 p_kdtl_tbl (l_ctr).prod_edt;
11703 l_inst_dtls_tbl (l_ptr).old_customer :=
11704 p_kdtl_tbl (l_ctr).old_account_id;
11705 l_inst_dtls_tbl (l_ptr).old_k_status :=
11706 p_kdtl_tbl (l_ctr).hdr_sts;
11707 END IF; -- l_relation_ship = null
11708 END IF; --l_trf_option in ( 'TERM','TERM_NO_REL')
11709
11710 /*------------------------------------------------------------------------------*/
11711 -- If Transfer option is "Transfer service to new owner, terminate old service".
11712 /*-------------------------------------------------------------------------------*/
11713 IF l_trf_option IN ('TRANS', 'TRANS_NO_REL')
11714 THEN
11715 l_ptr := 1;
11716
11717 -- Check Subline status
11718 get_sts_code (NULL,
11719 p_kdtl_tbl (l_ctr).prod_sts_code,
11720 l_ste_code,
11721 l_sts_code
11722 );
11723 --Check if the Customers are related by the value defined in profile for Transfer option 'TRANS_NO_REL'
11724
11725 /*1*/
11726 IF l_trf_option = 'TRANS_NO_REL'
11727 THEN
11728 l_relationship := NULL;
11729 l_relationship_type :=
11730 fnd_profile.VALUE ('OKS_TRF_PARTY_REL');
11731 get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
11732 l_new_party_id,
11733 l_new_party_name
11734 );
11735 get_party_id (p_kdtl_tbl (l_ctr).old_account_id,
11736 l_old_party_id,
11737 l_old_party_name
11738 );
11739
11740 OPEN l_cust_rel_csr (l_old_party_id,
11741 l_new_party_id,
11742 l_relationship_type,
11743 p_kdtl_tbl (l_ctr).transfer_date
11744 );
11745
11746 FETCH l_cust_rel_csr
11747 INTO l_relationship;
11748
11749 CLOSE l_cust_rel_csr;
11750 /*E1*/
11751 END IF;
11752
11753 IF fnd_log.level_statement >=
11754 fnd_log.g_current_runtime_level
11755 THEN
11756 fnd_log.STRING
11757 (fnd_log.level_statement,
11758 g_module_current || '.CREATE_K_SYSTEM_TRF',
11759 'TRANS_NO_REL profile relationship = '
11760 || l_relationship_type
11761 || ', Actual Relationship = '
11762 || l_relationship
11763 );
11764 END IF;
11765
11766 /*2*/
11767 IF l_relationship IS NULL OR l_trf_option = 'TRANS'
11768 THEN
11769 -- If Contract is in Entered Status then no updates on the original Contract
11770 -- but Create a Contract for New Owner in Entered Status.
11771 IF fnd_log.level_statement >=
11772 fnd_log.g_current_runtime_level
11773 THEN
11774 fnd_log.STRING (fnd_log.level_statement,
11775 g_module_current
11776 || '.CREATE_K_SYSTEM_TRF',
11777 'Product Status code = '
11778 || p_kdtl_tbl (l_ctr).prod_sts_code
11779 || ',Ste code = '
11780 || l_ste_code
11781 );
11782 END IF;
11783
11784 l_create_contract := 'Y';
11785
11786 /*4*/
11787 IF l_ste_code <> 'ENTERED'
11788 THEN
11789 IF fnd_log.level_statement >=
11790 fnd_log.g_current_runtime_level
11791 THEN
11792 fnd_log.STRING
11793 (fnd_log.level_statement,
11794 g_module_current || '.CREATE_K_SYSTEM_TRF',
11795 'OKS Raise credit memo profile option value ='
11796 || fnd_profile.VALUE
11797 ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
11798 );
11799 END IF;
11800
11801 /*IF fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') = 'YES' OR fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') IS NULL THEN
11802 l_suppress_credit := 'N';
11803 ELSE
11804 l_suppress_credit := 'Y';
11805 END IF;*/
11806 l_credit_amount :=
11807 oks_ib_util_pvt.get_credit_option
11808 (p_kdtl_tbl (l_ctr).party_id,
11809 p_kdtl_tbl (l_ctr).hdr_org_id,
11810 p_kdtl_tbl (l_ctr).transfer_date
11811 );
11812
11813 IF UPPER (l_credit_amount) = 'FULL'
11814 THEN
11815 l_full_credit := 'Y';
11816 l_suppress_credit := 'N';
11817 --l_trfdt := p_kdtl_tbl( l_ctr ).prod_sdt;
11818 l_term_date_flag := 'N';
11819 ELSIF UPPER (l_credit_amount) = 'NONE'
11820 THEN
11821 l_suppress_credit := 'Y';
11822 l_full_credit := 'N';
11823 l_term_date_flag := 'N';
11824 ELSIF UPPER (l_credit_amount) = 'CALCULATED'
11825 THEN
11826 l_suppress_credit := 'N';
11827 l_full_credit := 'N';
11828 l_term_date_flag := 'N';
11829 END IF;
11830
11831 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11832 TRUNC (l_trfdt)
11833 THEN
11834 l_suppress_credit := 'Y';
11835 l_full_credit := 'N';
11836 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11837 l_term_date_flag := 'Y';
11838 l_create_contract := 'N';
11839 END IF;
11840
11841
11842
11843 oks_bill_rec_pub.pre_terminate_cp
11844 (p_calledfrom => -1,
11845 p_cle_id => p_kdtl_tbl
11846 (l_ctr).object_line_id,
11847 p_termination_date => TRUNC (l_trfdt),
11848 p_terminate_reason => 'TRF',
11849 p_override_amount => NULL,
11850 p_con_terminate_amount => NULL,
11851 p_termination_amount => NULL,
11852 --p_existing_credit => 0,
11853 p_suppress_credit => l_suppress_credit,
11854 p_full_credit => l_full_credit,
11855 --'N',
11856 p_term_date_flag => l_term_date_flag,
11857 p_term_cancel_source => 'IBTRANSFER',
11858 x_return_status => l_return_status
11859 );
11860
11861 IF (fnd_log.level_event >=
11862 fnd_log.g_current_runtime_level
11863 )
11864 THEN
11865 fnd_log.STRING
11866 (fnd_log.level_event,
11867 g_module_current || '.CREATE_K_SYSTEM_TRF',
11868 'oks_bill_rec_pub.Pre_terminate_cp(Return status ='
11869 || l_return_status
11870 || ')'
11871 );
11872 END IF;
11873
11874 IF NOT l_return_status = okc_api.g_ret_sts_success
11875 THEN
11876 RAISE g_exception_halt_validation;
11877 END IF;
11878
11879 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
11880 TRUNC (l_trfdt);
11881 date_terminated := NULL;
11882 oks_ib_util_pvt.check_termcancel_lines
11883 (p_kdtl_tbl (l_ctr).service_line_id,
11884 'SL',
11885 'T',
11886 date_terminated
11887 );
11888
11889 IF date_terminated IS NOT NULL
11890 THEN
11891 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11892
11893 l_clev_tbl_in (1).ID :=
11894 p_kdtl_tbl (l_ctr).service_line_id;
11895 l_clev_tbl_in (1).date_terminated :=
11896 TRUNC (date_terminated);
11897 l_clev_tbl_in (1).trn_code := 'TRF';
11898 ---check the actual code
11899 l_clev_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11900 If TRUNC (date_terminated)<= trunc(sysdate) Then
11901 l_clev_tbl_in (1).sts_code := l_sts_code;
11902 End If;
11903
11904 okc_contract_pub.update_contract_line
11905 (p_api_version => l_api_version,
11906 p_init_msg_list => l_init_msg_list,
11907 p_restricted_update => okc_api.g_true,
11908 x_return_status => l_return_status,
11909 x_msg_count => x_msg_count,
11910 x_msg_data => x_msg_data,
11911 p_clev_tbl => l_clev_tbl_in,
11912 x_clev_tbl => l_clev_tbl_out
11913 );
11914
11915 IF (fnd_log.level_event >=
11916 fnd_log.g_current_runtime_level
11917 )
11918 THEN
11919 fnd_log.STRING
11920 (fnd_log.level_event,
11921 g_module_current || '.CREATE_K_SYSTEM_TRF',
11922 'okc_contract_pub.update_contract_line(Return status = '
11923 || l_return_status
11924 || ')'
11925 );
11926 END IF;
11927
11928 IF NOT l_return_status = okc_api.g_ret_sts_success
11929 THEN
11930 RAISE g_exception_halt_validation;
11931 END IF;
11932 END IF;
11933
11934 date_terminated := NULL;
11935 oks_ib_util_pvt.check_termcancel_lines
11936 (p_kdtl_tbl (l_ctr).hdr_id,
11937 'TL',
11938 'T',
11939 date_terminated
11940 );
11941
11942 IF date_terminated IS NOT NULL
11943 THEN
11944 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11945
11946 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
11947 l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
11948 l_chrv_tbl_in (1).trn_code := 'TRF';
11949 l_chrv_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11950 If TRUNC (date_terminated)<= trunc(sysdate) Then
11951 l_chrv_tbl_in (1).sts_code := l_sts_code;
11952 End If;
11953
11954 okc_contract_pub.update_contract_header
11955 (p_api_version => l_api_version,
11956 p_init_msg_list => l_init_msg_list,
11957 p_restricted_update => okc_api.g_true,
11958 x_return_status => l_return_status,
11959 x_msg_count => x_msg_count,
11960 x_msg_data => x_msg_data,
11961 p_chrv_tbl => l_chrv_tbl_in,
11962 x_chrv_tbl => l_chrv_tbl_out
11963 );
11964
11965 IF (fnd_log.level_event >=
11966 fnd_log.g_current_runtime_level
11967 )
11968 THEN
11969 fnd_log.STRING
11970 (fnd_log.level_event,
11971 g_module_current
11972 || '.Update_Hdr_Dates.external_call.after',
11973 'okc_contract_pub.update_contract_header(Return status = '
11974 || l_return_status
11975 || ')'
11976 );
11977 END IF;
11978
11979 IF NOT l_return_status = okc_api.g_ret_sts_success
11980 THEN
11981 RAISE g_exception_halt_validation;
11982 END IF;
11983 END IF;
11984 ELSIF l_ste_code = 'ENTERED'
11985 THEN
11986 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11987 TRUNC (l_trfdt)
11988 THEN
11989 l_create_contract := 'N';
11990 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11991 ELSE
11992 l_create_contract := 'Y';
11993 END IF;
11994
11995 -- added for the bug # 6000133
11996 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11997
11998 oks_change_status_pvt.update_line_status
11999 (x_return_status => l_return_status,
12000 x_msg_data => x_msg_data,
12001 x_msg_count => x_msg_count,
12002 p_init_msg_list => 'F',
12003 p_id => p_kdtl_tbl (l_ctr).hdr_id,
12004 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
12005 p_new_sts_code => l_sts_code,
12006 p_canc_reason_code => 'TRANSFER',
12007 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
12008 p_old_ste_code => 'ENTERED',
12009 p_new_ste_code => 'CANCELLED',
12010 p_term_cancel_source => 'IBTRANSFER',
12011 p_date_cancelled => TRUNC (l_trfdt),
12012 p_comments => NULL,
12013 p_validate_status => 'N'
12014 );
12015
12016 IF (fnd_log.level_event >=
12017 fnd_log.g_current_runtime_level
12018 )
12019 THEN
12020 fnd_log.STRING
12021 (fnd_log.level_event,
12022 g_module_current || '.CREATE_K_SYSTEM_TRF',
12023 'oks_change_status_pvt.Update_line_status(Return status ='
12024 || l_return_status
12025 || ')'
12026 );
12027 END IF;
12028
12029 IF NOT l_return_status = okc_api.g_ret_sts_success
12030 THEN
12031 RAISE g_exception_halt_validation;
12032 END IF;
12033
12034 l_inst_dtls_tbl (l_ptr).date_cancelled :=
12035 TRUNC (l_trfdt);
12036 date_cancelled := NULL;
12037 oks_ib_util_pvt.check_termcancel_lines
12038 (p_kdtl_tbl (l_ctr).service_line_id,
12039 'SL',
12040 'C',
12041 date_cancelled
12042 );
12043
12044 IF date_cancelled IS NOT NULL
12045 THEN
12046
12047 -- added for the bug # 6000133
12048 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
12049
12050 oks_change_status_pvt.update_line_status
12051 (x_return_status => l_return_status,
12052 x_msg_data => x_msg_data,
12053 x_msg_count => x_msg_count,
12054 p_init_msg_list => 'F',
12055 p_id => p_kdtl_tbl (l_ctr).hdr_id,
12056 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
12057 p_new_sts_code => l_sts_code,
12058 p_canc_reason_code => 'TRANSFER',
12059 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
12060 p_old_ste_code => 'ENTERED',
12061 p_new_ste_code => 'CANCELLED',
12062 p_term_cancel_source => 'IBTRANSFER',
12063 p_date_cancelled => TRUNC
12064 (date_cancelled),
12065 p_comments => NULL,
12066 p_validate_status => 'N'
12067 );
12068
12069 IF (fnd_log.level_event >=
12070 fnd_log.g_current_runtime_level
12071 )
12072 THEN
12073 fnd_log.STRING
12074 (fnd_log.level_event,
12075 g_module_current || '.CREATE_K_SYSTEM_TRF',
12076 'okc_contract_pub.update_contract_line(Return status = '
12077 || l_return_status
12078 || ')'
12079 );
12080 END IF;
12081
12082 IF NOT l_return_status = okc_api.g_ret_sts_success
12083 THEN
12084 RAISE g_exception_halt_validation;
12085 END IF;
12086 END IF;
12087
12088 date_cancelled := NULL;
12089 oks_ib_util_pvt.check_termcancel_lines
12090 (p_kdtl_tbl (l_ctr).hdr_id,
12091 'TL',
12092 'C',
12093 date_cancelled
12094 );
12095
12096 IF date_cancelled IS NOT NULL
12097 THEN
12098
12099 -- added for the bug # 6000133
12100 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
12101
12102 oks_change_status_pvt.update_header_status
12103 (x_return_status => l_return_status,
12104 x_msg_data => x_msg_data,
12105 x_msg_count => x_msg_count,
12106 p_init_msg_list => 'F',
12107 p_id => p_kdtl_tbl (l_ctr).hdr_id,
12108 p_new_sts_code => l_sts_code,
12109 p_canc_reason_code => 'TRANSFER',
12110 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
12111 p_comments => NULL,
12112 p_term_cancel_source => 'IBTRANSFER',
12113 p_date_cancelled => TRUNC
12114 (date_cancelled),
12115 p_validate_status => 'N'
12116 );
12117
12118 IF (fnd_log.level_event >=
12119 fnd_log.g_current_runtime_level
12120 )
12121 THEN
12122 fnd_log.STRING
12123 (fnd_log.level_event,
12124 g_module_current || '.CREATE_K_SYSTEM_TRF',
12125 'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status = '
12126 || l_return_status
12127 || ')'
12128 );
12129 END IF;
12130
12131 IF NOT l_return_status = okc_api.g_ret_sts_success
12132 THEN
12133 RAISE g_exception_halt_validation;
12134 END IF;
12135 END IF;
12136 /*E4*/
12137 END IF; -- ste_code <> 'ENTERED'
12138
12139 l_date_terminated := NULL;
12140 l_subline_price := NULL;
12141
12142 OPEN l_subline_csr (p_kdtl_tbl (l_ctr).object_line_id);
12143
12144 FETCH l_subline_csr
12145 INTO l_date_terminated, l_subline_price;
12146
12147 CLOSE l_subline_csr;
12148
12149 l_inst_dtls_tbl (l_ptr).transaction_date :=
12150 (p_kdtl_tbl (l_ctr).transaction_date);
12151 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
12152 l_inst_dtls_tbl (l_ptr).system_id :=
12153 p_kdtl_tbl (l_ctr).system_id;
12154 l_inst_dtls_tbl (l_ptr).transfer_option := l_trf_option;
12155 l_inst_dtls_tbl (l_ptr).instance_id_new :=
12156 p_kdtl_tbl (l_ctr).old_cp_id;
12157 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
12158 l_subline_price;
12159 --l_kdtl_tbl( l_ctr ).service_amount;
12160 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
12161 p_kdtl_tbl (l_ctr).cp_qty;
12162 l_inst_dtls_tbl (l_ptr).new_contract_id :=
12163 p_kdtl_tbl (l_ctr).hdr_id;
12164 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
12165 p_kdtl_tbl (l_ctr).hdr_sdt;
12166 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
12167 p_kdtl_tbl (l_ctr).hdr_edt;
12168 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
12169 p_kdtl_tbl (l_ctr).service_line_id;
12170 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
12171 p_kdtl_tbl (l_ctr).service_sdt;
12172 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
12173 p_kdtl_tbl (l_ctr).service_edt;
12174 l_inst_dtls_tbl (l_ptr).new_subline_id :=
12175 p_kdtl_tbl (l_ctr).object_line_id;
12176 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
12177 p_kdtl_tbl (l_ctr).prod_sdt;
12178 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
12179 p_kdtl_tbl (l_ctr).prod_edt;
12180 l_inst_dtls_tbl (l_ptr).new_customer :=
12181 p_kdtl_tbl (l_ctr).old_account_id;
12182 l_inst_dtls_tbl (l_ptr).new_k_status :=
12183 p_kdtl_tbl (l_ctr).hdr_sts;
12184 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
12185 p_kdtl_tbl (l_ctr).service_amount;
12186 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
12187 p_kdtl_tbl (l_ctr).cp_qty;
12188 l_inst_dtls_tbl (l_ptr).old_contract_id :=
12189 p_kdtl_tbl (l_ctr).hdr_id;
12190 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
12191 p_kdtl_tbl (l_ctr).hdr_sdt;
12192 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
12193 p_kdtl_tbl (l_ctr).hdr_edt;
12194 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
12195 p_kdtl_tbl (l_ctr).service_line_id;
12196 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
12197 p_kdtl_tbl (l_ctr).service_sdt;
12198 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
12199 p_kdtl_tbl (l_ctr).service_edt;
12200 l_inst_dtls_tbl (l_ptr).old_subline_id :=
12201 p_kdtl_tbl (l_ctr).object_line_id;
12202 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
12203 p_kdtl_tbl (l_ctr).prod_sdt;
12204 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
12205 p_kdtl_tbl (l_ctr).prod_edt;
12206 l_inst_dtls_tbl (l_ptr).old_customer :=
12207 p_kdtl_tbl (l_ctr).old_account_id;
12208 l_inst_dtls_tbl (l_ptr).old_k_status :=
12209 p_kdtl_tbl (l_ctr).hdr_sts;
12210 l_ptr := l_ptr + 1;
12211 launch_workflow
12212 ( 'INSTALL BASE ACTIVITY : TRANSFER TERMINATE SUBLINE '
12213 || fnd_global.local_chr (10)
12214 || 'Contract Number : '
12215 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
12216 || fnd_global.local_chr (10)
12217 || 'Service Terminated : '
12218 || l_service_name
12219 );
12220
12221 /*---------------------------------------------------------
12222 Check if the Customer product transferred
12223 is a part of System Transfer.
12224 If SYstem id is Not null then SYsytem transfer
12225 else Customer product Transfer.
12226 -----------------------------------------------------------*/
12227 IF fnd_log.level_statement >=
12228 fnd_log.g_current_runtime_level
12229 THEN
12230 fnd_log.STRING (fnd_log.level_statement,
12231 g_module_current
12232 || '.CREATE_K_SYSTEM_TRF.system_trf',
12233 'System Id = '
12234 || p_kdtl_tbl (l_ctr).system_id
12235 || ',lse_id = '
12236 || p_kdtl_tbl (l_ctr).lse_id
12237 || ',Merge Profile = '
12238 || fnd_profile.VALUE
12239 ('OKS_MERGE_SYSTRF')
12240 );
12241 END IF;
12242
12243 --If Contract is expired as of the transfer date, do not create a new contract.
12244 IF l_create_contract = 'Y'
12245 THEN
12246 /*Sys trf*/
12247 IF p_kdtl_tbl (l_ctr).system_id IS NULL
12248 OR p_kdtl_tbl (l_ctr).lse_id = 18
12249 OR fnd_profile.VALUE ('OKS_MERGE_SYSTRF') = 'N'
12250 THEN
12251 l_contract_exist := 'F';
12252 l_contract_merge := 'F';
12253 /*Sys trf*/
12254 ELSE
12255 --Check if there exists a Contract for the System
12256 l_contract_exist := 'F';
12257 l_contract_merge := 'F';
12258
12259 FOR l_contracts_rec IN
12260 l_contracts_csr
12261 (p_kdtl_tbl (l_ctr).system_id,
12262 p_kdtl_tbl (l_ctr).transaction_date,
12263 p_kdtl_tbl (l_ctr).old_account_id
12264 )
12265 /*5*/
12266 LOOP
12267 IF fnd_log.level_statement >=
12268 fnd_log.g_current_runtime_level
12269 THEN
12270 fnd_log.STRING
12271 (fnd_log.level_statement,
12272 g_module_current
12273 || '.CREATE_K_SYSTEM_TRF.system_trf',
12274 'In Contracts_rec Loop'
12275 );
12276 END IF;
12277
12278 IF fnd_log.level_statement >=
12279 fnd_log.g_current_runtime_level
12280 THEN
12281 fnd_log.STRING
12282 (fnd_log.level_statement,
12283 g_module_current
12284 || '.CREATE_K_SYSTEM_TRF.system_trf',
12285 'Source chr_id = '
12286 || p_kdtl_tbl (l_ctr).hdr_id
12287 );
12288 END IF;
12289
12290 IF fnd_log.level_statement >=
12291 fnd_log.g_current_runtime_level
12292 THEN
12293 fnd_log.STRING
12294 (fnd_log.level_statement,
12295 g_module_current
12296 || '.CREATE_K_SYSTEM_TRF.system_trf',
12297 'Target chr Id = '
12298 || l_contracts_rec.new_contract_id
12299 );
12300 END IF;
12301
12302 l_contract_exist := 'T';
12303
12304 IF l_contract_merge = 'T'
12305 THEN
12306 EXIT;
12307 END IF;
12308
12309 -- Check Header merging rules
12310 header_merge_yn
12311 (p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
12312 p_target_chr_id => l_contracts_rec.new_contract_id,
12313 p_sts_code => p_kdtl_tbl (l_ctr).hdr_sts,
12314 x_eligible_yn => l_header_merge,
12315 x_msg_count => x_msg_count,
12316 x_msg_data => x_msg_data,
12317 x_return_status => l_return_status
12318 );
12319
12320 IF (fnd_log.level_event >=
12321 fnd_log.g_current_runtime_level
12322 )
12323 THEN
12324 fnd_log.STRING
12325 (fnd_log.level_event,
12326 g_module_current
12327 || '.CREATE_K_SYSTEM_TRF',
12328 'header_merge_yn(Return status ='
12329 || l_return_status
12330 || ',Merging Rule = '
12331 || l_header_merge
12332 || ')'
12333 );
12334 END IF;
12335
12336 l_merge_chr_id :=
12337 l_contracts_rec.new_contract_id;
12338 l_line_found := 'F';
12339
12340 /*6*/
12341 IF l_header_merge = 'Y'
12342 THEN
12343 -- Check line_merge rules
12344 FOR l_topline_rec IN
12345 l_toplines_csr
12346 (l_merge_chr_id,
12347 p_kdtl_tbl (l_ctr).service_inventory_id
12348 )
12349 LOOP
12350 l_line_found := 'T';
12351
12352 IF fnd_log.level_statement >=
12353 fnd_log.g_current_runtime_level
12354 THEN
12355 fnd_log.STRING
12356 (fnd_log.level_statement,
12357 g_module_current
12358 || '.CREATE_K_SYSTEM_TRF.system_trf',
12359 'Source line_id = '
12360 || p_kdtl_tbl (l_ctr).service_line_id
12361 );
12362 END IF;
12363
12364 IF fnd_log.level_statement >=
12365 fnd_log.g_current_runtime_level
12366 THEN
12367 fnd_log.STRING
12368 (fnd_log.level_statement,
12369 g_module_current
12370 || '.CREATE_K_SYSTEM_TRF.system_trf',
12371 'Target line_id = '
12372 || l_topline_rec.cle_id
12373 );
12374 END IF;
12375
12376 line_merge_yn
12377 (p_source_line_id => p_kdtl_tbl
12378 (l_ctr).service_line_id,
12379 p_target_line_id => l_topline_rec.cle_id,
12380 p_source_flag => 'N',
12381 x_eligible_yn => l_line_merge,
12382 x_msg_count => x_msg_count,
12383 x_msg_data => x_msg_data,
12384 x_return_status => l_return_status
12385 );
12386
12387 IF (fnd_log.level_event >=
12388 fnd_log.g_current_runtime_level
12389 )
12390 THEN
12391 fnd_log.STRING
12392 (fnd_log.level_event,
12393 g_module_current
12394 || '.CREATE_K_SYSTEM_TRF',
12395 'line_merge_yn(Return status ='
12396 || l_return_status
12397 || ',Merging Rule = '
12398 || l_line_merge
12399 || ')'
12400 );
12401 END IF;
12402
12403 l_merge_line_id := l_topline_rec.cle_id;
12404
12405 /*7*/
12406 IF l_line_merge = 'Y'
12407 THEN
12408 --Create Contract Subline
12409 create_contract_subline
12410 (p_kdtl_rec => p_kdtl_tbl
12411 (l_ctr),
12412 p_hdr_id => l_merge_chr_id,
12413 p_line_id => l_merge_line_id,
12414 x_subline_id => l_subline_id,
12415 x_update_top_line => l_update_line,
12416 x_return_status => l_return_status,
12417 x_msg_data => x_msg_data,
12418 x_msg_count => x_msg_count
12419 );
12420
12421 IF (fnd_log.level_event >=
12422 fnd_log.g_current_runtime_level
12423 )
12424 THEN
12425 fnd_log.STRING
12426 (fnd_log.level_event,
12427 g_module_current
12428 || '.CREATE_K_SYSTEM_TRF',
12429 'Create_contract_subline(Return status ='
12430 || l_return_status
12431 || ')'
12432 );
12433 END IF;
12434
12435 IF NOT l_return_status =
12436 okc_api.g_ret_sts_success
12437 THEN
12438 RAISE g_exception_halt_validation;
12439 END IF;
12440
12441 l_opr_instance_id :=
12442 get_operation_instance
12443 (l_merge_chr_id,
12444 'TRF'
12445 );
12446 create_transaction_source
12447 (p_create_opr_inst => 'N',
12448 p_source_code => 'TRANSFER',
12449 p_target_chr_id => l_merge_chr_id,
12450 p_source_line_id => p_kdtl_tbl
12451 (l_ctr
12452 ).object_line_id,
12453 p_source_chr_id => p_kdtl_tbl
12454 (l_ctr
12455 ).hdr_id,
12456 p_target_line_id => l_subline_id,
12457 x_oper_instance_id => l_opr_instance_id,
12458 x_return_status => l_return_status,
12459 x_msg_count => x_msg_count,
12460 x_msg_data => x_msg_data
12461 );
12462
12463 IF (fnd_log.level_event >=
12464 fnd_log.g_current_runtime_level
12465 )
12466 THEN
12467 fnd_log.STRING
12468 (fnd_log.level_event,
12469 g_module_current
12470 || '.CREATE_K_SYSTEM_TRF',
12471 'Create_transaction_source(Return status ='
12472 || l_return_status
12473 || ')'
12474 );
12475 END IF;
12476
12477 IF NOT l_return_status = 'S'
12478 THEN
12479 RAISE g_exception_halt_validation;
12480 END IF;
12481
12482 l_renewal_opr_instance_id :=
12483 get_operation_instance
12484 (l_merge_chr_id,
12485 'REN'
12486 );
12487
12488 IF l_renewal_opr_instance_id IS NULL
12489 THEN
12490 l_create_oper_instance := 'Y';
12491 ELSE
12492 l_create_oper_instance := 'N';
12493 END IF;
12494
12495 create_source_links
12496 (p_create_opr_inst => l_create_oper_instance,
12497 p_source_code => 'TRANSFER',
12498 p_target_chr_id => l_merge_chr_id,
12499 p_line_id => p_kdtl_tbl
12500 (l_ctr
12501 ).object_line_id,
12502 p_target_line_id => l_subline_id,
12503 p_txn_date => p_kdtl_tbl
12504 (l_ctr
12505 ).transfer_date,
12506 x_oper_instance_id => l_renewal_opr_instance_id,
12507 x_return_status => l_return_status,
12508 x_msg_count => x_msg_count,
12509 x_msg_data => x_msg_data
12510 );
12511
12512 IF (fnd_log.level_event >=
12513 fnd_log.g_current_runtime_level
12514 )
12515 THEN
12516 fnd_log.STRING
12517 (fnd_log.level_event,
12518 g_module_current
12519 || '.CREATE_K_SYSTEM_TRF',
12520 'Create_source_links(Return status ='
12521 || l_return_status
12522 || ')'
12523 );
12524 END IF;
12525
12526 IF NOT l_return_status = 'S'
12527 THEN
12528 RAISE g_exception_halt_validation;
12529 END IF;
12530
12531 OPEN l_hdrdt_csr (l_merge_chr_id);
12532
12533 FETCH l_hdrdt_csr
12534 INTO l_start_date, l_end_date;
12535
12536 CLOSE l_hdrdt_csr;
12537
12538 IF fnd_log.level_statement >=
12539 fnd_log.g_current_runtime_level
12540 THEN
12541 fnd_log.STRING
12542 (fnd_log.level_statement,
12543 g_module_current
12544 || '.CREATE_K_SYSTEM_TRF',
12545 'Header start date = '
12546 || l_start_date
12547 || ',Header End date = '
12548 || l_end_date
12549 );
12550 END IF;
12551
12552 OPEN l_srvdt_csr (l_merge_line_id);
12553
12554 FETCH l_srvdt_csr
12555 INTO l_srv_sdt, l_srv_edt;
12556
12557 CLOSE l_srvdt_csr;
12558
12559 IF fnd_log.level_statement >=
12560 fnd_log.g_current_runtime_level
12561 THEN
12562 fnd_log.STRING
12563 (fnd_log.level_statement,
12564 g_module_current
12565 || '.CREATE_K_SYSTEM_TRF',
12566 'Line start date = '
12567 || l_srv_sdt
12568 || ',Line End date = '
12569 || l_srv_edt
12570 );
12571 END IF;
12572
12573 l_date_terminated := NULL;
12574 l_subline_price := NULL;
12575
12576 OPEN l_subline_csr (l_subline_id);
12577
12578 FETCH l_subline_csr
12579 INTO l_date_terminated,
12580 l_subline_price;
12581
12582 CLOSE l_subline_csr;
12583
12584 l_inst_dtls_tbl (l_ptr).new_contract_id :=
12585 l_merge_chr_id;
12586 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
12587 l_start_date;
12588 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
12589 l_end_date;
12590 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
12591 l_merge_line_id;
12592 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
12593 l_srv_sdt;
12594 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
12595 l_srv_edt;
12596 l_inst_dtls_tbl (l_ptr).new_subline_id :=
12597 l_subline_id;
12598 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
12599 TRUNC (l_trfdt);
12600 --p_transfer_rec.transfer_date;
12601 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
12602 p_kdtl_tbl (l_ctr).prod_edt;
12603 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
12604 l_subline_price;
12605 ---Update Billing Schedule
12606 create_billing_schedule
12607 (p_line_id => l_merge_line_id,
12608 p_covlvl_id => l_subline_id,
12609 p_period_start => p_kdtl_tbl(l_ctr).period_start,
12610 p_start_date => l_srv_sdt,
12611 p_end_date => l_srv_edt,
12612 p_update_line => l_update_line,
12613 x_return_status => l_return_status,
12614 x_msg_data => x_msg_data,
12615 x_msg_count => x_msg_count
12616 );
12617
12618 IF (fnd_log.level_event >=
12619 fnd_log.g_current_runtime_level
12620 )
12621 THEN
12622 fnd_log.STRING
12623 (fnd_log.level_event,
12624 g_module_current
12625 || '.CREATE_K_SYSTEM_TRF',
12626 'Create_billing_schedule(Return status ='
12627 || l_return_status
12628 || ')'
12629 );
12630 END IF;
12631
12632 IF NOT l_return_status =
12633 okc_api.g_ret_sts_success
12634 THEN
12635 RAISE g_exception_halt_validation;
12636 END IF;
12637
12638 UPDATE okc_k_lines_b
12639 SET price_negotiated =
12640 (SELECT NVL
12641 (SUM
12642 (NVL
12643 (price_negotiated,
12644 0
12645 )
12646 ),
12647 0
12648 )
12649 FROM okc_k_lines_b
12650 WHERE cle_id =
12651 l_merge_line_id
12652 AND dnz_chr_id =
12653 l_merge_chr_id)
12654 WHERE ID = l_merge_line_id;
12655
12656 UPDATE oks_k_lines_b
12657 SET tax_amount =
12658 NVL (tax_amount, 0)
12659 + NVL ((SELECT tax_amount
12660 FROM oks_k_lines_b
12661 WHERE cle_id =
12662 l_subline_id),
12663 0
12664 )
12665 WHERE cle_id = l_merge_line_id;
12666
12667 UPDATE okc_k_headers_b
12668 SET estimated_amount =
12669 (SELECT NVL
12670 (SUM
12671 (NVL
12672 (price_negotiated,
12673 0
12674 )
12675 ),
12676 0
12677 )
12678 FROM okc_k_lines_b
12679 WHERE dnz_chr_id =
12680 l_merge_chr_id
12681 AND lse_id IN (1, 19))
12682 WHERE ID = l_merge_chr_id;
12683
12684 UPDATE oks_k_headers_b
12685 SET tax_amount =
12686 NVL (tax_amount, 0)
12687 + NVL ((SELECT tax_amount
12688 FROM oks_k_lines_b
12689 WHERE cle_id =
12690 l_subline_id),
12691 0
12692 )
12693 WHERE chr_id = l_merge_chr_id;
12694
12695 -- Check Qa
12696 -- Get the qa check list id
12697 OPEN l_qa_csr (l_merge_chr_id);
12698
12699 FETCH l_qa_csr
12700 INTO l_qcl_id;
12701
12702 CLOSE l_qa_csr;
12703
12704 okc_qa_check_pub.execute_qa_check_list
12705 (p_api_version => l_api_version,
12706 p_init_msg_list => okc_api.g_false,
12707 x_return_status => x_return_status,
12708 x_msg_count => x_msg_count,
12709 x_msg_data => x_msg_data,
12710 p_qcl_id => l_qcl_id,
12711 p_chr_id => l_merge_chr_id,
12712 x_msg_tbl => l_msg_tbl
12713 );
12714
12715 IF (fnd_log.level_event >=
12716 fnd_log.g_current_runtime_level
12717 )
12718 THEN
12719 fnd_log.STRING
12720 (fnd_log.level_event,
12721 g_module_current
12722 || '.CREATE_K_SYSTEM_TRF',
12723 'okc_qa_check_pub.execute_qa_check_list(Return status ='
12724 || x_return_status
12725 || ')'
12726 );
12727 END IF;
12728
12729 IF x_return_status <>
12730 okc_api.g_ret_sts_success
12731 THEN
12732 RAISE g_exception_halt_validation;
12733 END IF;
12734
12735 l_max_severity := 'I';
12736
12737 IF l_msg_tbl.COUNT > 0
12738 THEN
12739 i := l_msg_tbl.FIRST;
12740
12741 LOOP
12742 IF l_msg_tbl (i).error_status =
12743 'E'
12744 THEN
12745 --'QA returned with errors. Post renewal stopped';
12746 EXIT;
12747 END IF;
12748
12749 EXIT WHEN i = l_msg_tbl.LAST;
12750 i := l_msg_tbl.NEXT (i);
12751 END LOOP;
12752 END IF; --table count
12753
12754 IF fnd_log.level_error >=
12755 fnd_log.g_current_runtime_level
12756 THEN
12757 fnd_log.STRING
12758 (fnd_log.level_error,
12759 g_module_current
12760 || '.CREATE_K_SYSTEM_TRF',
12761 'qa Check list error'
12762 || l_msg_tbl (i).error_status
12763 || ','
12764 || l_msg_tbl (i).DATA
12765 );
12766 END IF;
12767
12768 IF l_msg_tbl (i).error_status = 'E'
12769 THEN
12770 -- Change the Contract status to QA_HOLD
12771 -- if the COntract is in either Signed or Active status
12772 OPEN l_hdr_sts_csr (l_merge_chr_id);
12773
12774 FETCH l_hdr_sts_csr
12775 INTO l_hdr_sts;
12776
12777 CLOSE l_hdr_sts_csr;
12778
12779 get_sts_code (NULL,
12780 l_hdr_sts,
12781 l_ste_code,
12782 l_sts_code
12783 );
12784
12785 IF l_ste_code IN
12786 ('ACTIVE', 'SIGNED')
12787 THEN
12788 get_sts_code ('ENTERED',
12789 NULL,
12790 l_ste_code,
12791 l_sts_code
12792 );
12793
12794 UPDATE okc_k_headers_b
12795 SET sts_code = l_sts_code,
12796 date_approved = NULL,
12797 date_signed = NULL
12798 WHERE ID = l_merge_chr_id;
12799 /*bugfix for 6882512*/
12800 /*update status in okc_contacts table*/
12801 OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_merge_chr_id,
12802 x_return_status=>l_return_status);
12803
12804 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
12805 RAISE g_exception_halt_validation;
12806 END IF;
12807 /*bugfix for 6882512*/
12808 UPDATE okc_k_lines_b
12809 SET sts_code = l_sts_code
12810 WHERE dnz_chr_id =
12811 l_merge_chr_id;
12812
12813 l_wf_attr_details.contract_id :=
12814 l_merge_chr_id;
12815 l_wf_attr_details.irr_flag := 'Y';
12816 l_wf_attr_details.process_type :=
12817 'MANUAL';
12818 l_wf_attr_details.negotiation_status :=
12819 'DRAFT';
12820 oks_wf_k_process_pvt.launch_k_process_wf
12821 (p_api_version => 1,
12822 p_init_msg_list => 'T',
12823 p_wf_attributes => l_wf_attr_details,
12824 x_return_status => x_return_status,
12825 x_msg_count => x_msg_count,
12826 x_msg_data => x_msg_data
12827 );
12828 END IF;
12829 END IF;
12830
12831 launch_workflow
12832 ( 'INSTALL BASE ACTIVITY : Transfer '
12833 || fnd_global.local_chr (10)
12834 || 'Contract Number : '
12835 || get_contract_number
12836 (l_merge_chr_id)
12837 || fnd_global.local_chr (10)
12838 || 'Covered Product line merged into Contract : '
12839 || p_kdtl_tbl (l_ctr).old_cp_id
12840 );
12841 l_contract_merge := 'T';
12842 EXIT;
12843 /*End If7*/
12844 END IF;
12845 END LOOP;
12846
12847 --If line merge fails Or l_line_found = 'F'
12848
12849 /*8*/
12850 IF l_line_merge = 'N' OR l_line_found = 'F'
12851 THEN
12852 -- Create Top line
12853 create_contract_line
12854 (p_kdtl_rec => p_kdtl_tbl
12855 (l_ctr),
12856 p_hdr_id => l_merge_chr_id,
12857 x_return_status => l_return_status,
12858 x_msg_data => x_msg_data,
12859 x_line_id => l_line_id,
12860 x_msg_count => x_msg_count
12861 );
12862
12863 IF (fnd_log.level_event >=
12864 fnd_log.g_current_runtime_level
12865 )
12866 THEN
12867 fnd_log.STRING
12868 (fnd_log.level_event,
12869 g_module_current
12870 || '.CREATE_K_SYSTEM_TRF',
12871 'Create_Contract_line(Return status = '
12872 || l_return_status
12873 );
12874 END IF;
12875
12876 IF NOT l_return_status =
12877 okc_api.g_ret_sts_success
12878 THEN
12879 RAISE g_exception_halt_validation;
12880 END IF;
12881
12882 IF p_kdtl_tbl (l_ctr).coverage_id IS NOT NULL
12883 AND p_kdtl_tbl (l_ctr).standard_cov_yn =
12884 'N'
12885 THEN
12886 oks_coverages_pub.create_adjusted_coverage
12887 (p_api_version => l_api_version,
12888 p_init_msg_list => l_init_msg_list,
12889 x_return_status => l_return_status,
12890 x_msg_count => x_msg_count,
12891 x_msg_data => x_msg_data,
12892 p_source_contract_line_id => p_kdtl_tbl
12893 (l_ctr
12894 ).service_line_id,
12895 p_target_contract_line_id => l_line_id,
12896 x_actual_coverage_id => l_coverage_id
12897 );
12898
12899 IF (fnd_log.level_event >=
12900 fnd_log.g_current_runtime_level
12901 )
12902 THEN
12903 fnd_log.STRING
12904 (fnd_log.level_event,
12905 g_module_current
12906 || '.CREATE_K_SYSTEM_TRF',
12907 'Oks_coverages_pub.create_adjusted_coverage(Return status = '
12908 || l_return_status
12909 || ')'
12910 );
12911 END IF;
12912
12913 IF NOT l_return_status =
12914 okc_api.g_ret_sts_success
12915 THEN
12916 RAISE g_exception_halt_validation;
12917 END IF;
12918
12919 UPDATE oks_k_lines_b
12920 SET coverage_id = l_coverage_id,
12921 standard_cov_yn = 'N'
12922 WHERE cle_id = l_line_id;
12923 END IF;
12924
12925
12926 oks_coverages_pvt.create_k_coverage_ext
12927 (p_api_version => 1,
12928 p_init_msg_list => 'T',
12929 p_src_line_id => p_kdtl_tbl
12930 (l_ctr).service_line_id,
12931 p_tgt_line_id => l_line_id,
12932 x_return_status => l_return_status,
12933 x_msg_count => x_msg_count,
12934 x_msg_data => x_msg_data
12935 );
12936
12937 IF (fnd_log.level_event >=
12938 fnd_log.g_current_runtime_level
12939 )
12940 THEN
12941 fnd_log.STRING
12942 (fnd_log.level_event,
12943 g_module_current
12944 || '..after_coverage_ext',
12945 'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
12946 || l_return_status
12947 || ')'
12948 );
12949 END IF;
12950
12951 IF NOT l_return_status =
12952 okc_api.g_ret_sts_success
12953 THEN
12954 okc_api.set_message
12955 (g_app_name,
12956 g_required_value,
12957 g_col_name_token,
12958 'Coverage Extn creation error '
12959 );
12960 RAISE g_exception_halt_validation;
12961 END IF;
12962
12963 create_contract_subline
12964 (p_kdtl_rec => p_kdtl_tbl
12965 (l_ctr),
12966 p_hdr_id => l_merge_chr_id,
12967 x_subline_id => l_subline_id,
12968 x_update_top_line => l_update_line,
12969 p_line_id => l_line_id,
12970 x_return_status => l_return_status,
12971 x_msg_data => x_msg_data,
12972 x_msg_count => x_msg_count
12973 );
12974
12975 IF (fnd_log.level_event >=
12976 fnd_log.g_current_runtime_level
12977 )
12978 THEN
12979 fnd_log.STRING
12980 (fnd_log.level_event,
12981 g_module_current
12982 || '.CREATE_K_SYSTEM_TRF',
12983 'Create_contract_subline(Return status = '
12984 || l_return_status
12985 || ')'
12986 );
12987 END IF;
12988
12989 IF NOT l_return_status =
12990 okc_api.g_ret_sts_success
12991 THEN
12992 RAISE g_exception_halt_validation;
12993 END IF;
12994
12995 l_opr_instance_id :=
12996 get_operation_instance (l_merge_chr_id,
12997 'TRF'
12998 );
12999 create_transaction_source
13000 (p_create_opr_inst => 'N',
13001 p_source_code => 'TRANSFER',
13002 p_target_chr_id => l_merge_chr_id,
13003 p_source_line_id => p_kdtl_tbl
13004 (l_ctr).object_line_id,
13005 p_source_chr_id => p_kdtl_tbl
13006 (l_ctr).hdr_id,
13007 p_target_line_id => l_subline_id,
13008 x_oper_instance_id => l_opr_instance_id,
13009 x_return_status => l_return_status,
13010 x_msg_count => x_msg_count,
13011 x_msg_data => x_msg_data
13012 );
13013
13014 IF (fnd_log.level_event >=
13015 fnd_log.g_current_runtime_level
13016 )
13017 THEN
13018 fnd_log.STRING
13019 (fnd_log.level_event,
13020 g_module_current
13021 || '.CREATE_K_SYSTEM_TRF',
13022 'Create_transaction_source(Return status ='
13023 || l_return_status
13024 || ')'
13025 );
13026 END IF;
13027
13028 IF NOT l_return_status = 'S'
13029 THEN
13030 RAISE g_exception_halt_validation;
13031 END IF;
13032
13033 l_renewal_opr_instance_id :=
13034 get_operation_instance (l_merge_chr_id,
13035 'REN'
13036 );
13037
13038 IF l_renewal_opr_instance_id IS NULL
13039 THEN
13040 l_create_oper_instance := 'Y';
13041 ELSE
13042 l_create_oper_instance := 'N';
13043 END IF;
13044
13045 create_source_links
13046 (p_create_opr_inst => l_create_oper_instance,
13047 p_source_code => 'TRANSFER',
13048 p_target_chr_id => l_merge_chr_id,
13049 p_line_id => p_kdtl_tbl
13050 (l_ctr).object_line_id,
13051 p_target_line_id => l_subline_id,
13052 p_txn_date => p_kdtl_tbl
13053 (l_ctr).transfer_date,
13054 x_oper_instance_id => l_renewal_opr_instance_id,
13055 x_return_status => l_return_status,
13056 x_msg_count => x_msg_count,
13057 x_msg_data => x_msg_data
13058 );
13059
13060 IF (fnd_log.level_event >=
13061 fnd_log.g_current_runtime_level
13062 )
13063 THEN
13064 fnd_log.STRING
13065 (fnd_log.level_event,
13066 g_module_current
13067 || '.CREATE_K_SYSTEM_TRF',
13068 'Create_source_links(Return status ='
13069 || l_return_status
13070 || ')'
13071 );
13072 END IF;
13073
13074 IF NOT l_return_status = 'S'
13075 THEN
13076 RAISE g_exception_halt_validation;
13077 END IF;
13078
13079 OPEN l_hdrdt_csr (l_merge_chr_id);
13080
13081 FETCH l_hdrdt_csr
13082 INTO l_start_date, l_end_date;
13083
13084 CLOSE l_hdrdt_csr;
13085
13086 IF fnd_log.level_statement >=
13087 fnd_log.g_current_runtime_level
13088 THEN
13089 fnd_log.STRING
13090 (fnd_log.level_statement,
13091 g_module_current
13092 || '.CREATE_K_SYSTEM_TRF',
13093 'Header start date = '
13094 || l_start_date
13095 || ',End date ='
13096 || l_end_date
13097 );
13098 END IF;
13099
13100 OPEN l_srvdt_csr (l_line_id);
13101
13102 FETCH l_srvdt_csr
13103 INTO l_srv_sdt, l_srv_edt;
13104
13105 CLOSE l_srvdt_csr;
13106
13107 IF fnd_log.level_statement >=
13108 fnd_log.g_current_runtime_level
13109 THEN
13110 fnd_log.STRING
13111 (fnd_log.level_statement,
13112 g_module_current
13113 || '.CREATE_K_SYSTEM_TRF',
13114 'Line start date = '
13115 || l_srv_sdt
13116 || ',End date ='
13117 || l_srv_edt
13118 );
13119 END IF;
13120
13121 l_date_terminated := NULL;
13122 l_subline_price := NULL;
13123
13124 OPEN l_subline_csr (l_subline_id);
13125
13126 FETCH l_subline_csr
13127 INTO l_date_terminated, l_subline_price;
13128
13129 CLOSE l_subline_csr;
13130
13131 l_inst_dtls_tbl (l_ptr).new_contract_id :=
13132 l_merge_chr_id;
13133 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
13134 l_start_date;
13135 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
13136 l_end_date;
13137 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
13138 l_line_id;
13139 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
13140 l_srv_sdt;
13141 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
13142 l_srv_edt;
13143 --END IF;
13144 l_inst_dtls_tbl (l_ptr).new_subline_id :=
13145 l_subline_id;
13146 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
13147 TRUNC (l_trfdt);
13148 --p_transfer_rec.transfer_date;
13149 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
13150 p_kdtl_tbl (l_ctr).prod_edt;
13151 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
13152 l_subline_price;
13153 --- Create Billing Schedule
13154 create_billing_schedule
13155 (p_line_id => l_line_id,
13156 p_covlvl_id => l_subline_id,
13157 p_period_start => p_kdtl_tbl(l_ctr).period_start,
13158 p_start_date => l_srv_sdt,
13159 p_end_date => l_srv_edt,
13160 p_update_line => l_update_line,
13161 x_return_status => l_return_status,
13162 x_msg_data => x_msg_data,
13163 x_msg_count => x_msg_count
13164 );
13165
13166 IF (fnd_log.level_event >=
13167 fnd_log.g_current_runtime_level
13168 )
13169 THEN
13170 fnd_log.STRING
13171 (fnd_log.level_event,
13172 g_module_current
13173 || '.CREATE_K_SYSTEM_TRF',
13174 'Create_billing_schedule(Return status = '
13175 || l_return_status
13176 || ')'
13177 );
13178 END IF;
13179
13180 IF NOT l_return_status =
13181 okc_api.g_ret_sts_success
13182 THEN
13183 RAISE g_exception_halt_validation;
13184 END IF;
13185
13186 UPDATE okc_k_lines_b
13187 SET price_negotiated =
13188 (SELECT NVL
13189 (SUM
13190 (NVL
13191 (price_negotiated,
13192 0
13193 )
13194 ),
13195 0
13196 )
13197 FROM okc_k_lines_b
13198 WHERE cle_id = l_line_id
13199 AND dnz_chr_id =
13200 l_merge_chr_id)
13201 WHERE ID = l_line_id;
13202
13203 UPDATE oks_k_lines_b
13204 SET tax_amount =
13205 NVL (tax_amount, 0)
13206 + NVL ((SELECT tax_amount
13207 FROM oks_k_lines_b
13208 WHERE cle_id =
13209 l_subline_id),
13210 0
13211 )
13212 WHERE cle_id = l_line_id;
13213
13214 UPDATE okc_k_headers_b
13215 SET estimated_amount =
13216 (SELECT NVL
13217 (SUM
13218 (NVL
13219 (price_negotiated,
13220 0
13221 )
13222 ),
13223 0
13224 )
13225 FROM okc_k_lines_b
13226 WHERE dnz_chr_id =
13227 l_merge_chr_id
13228 AND lse_id IN (1, 19))
13229 WHERE ID = l_merge_chr_id;
13230
13231 UPDATE oks_k_headers_b
13232 SET tax_amount =
13233 NVL (tax_amount, 0)
13234 + NVL ((SELECT tax_amount
13235 FROM oks_k_lines_b
13236 WHERE cle_id =
13237 l_subline_id),
13238 0
13239 )
13240 WHERE chr_id = l_merge_chr_id;
13241
13242 -- Check QA
13243 OPEN l_qa_csr (l_merge_chr_id);
13244
13245 FETCH l_qa_csr
13246 INTO l_qcl_id;
13247
13248 CLOSE l_qa_csr;
13249
13250 okc_qa_check_pub.execute_qa_check_list
13251 (p_api_version => l_api_version,
13252 p_init_msg_list => okc_api.g_false,
13253 x_return_status => x_return_status,
13254 x_msg_count => x_msg_count,
13255 x_msg_data => x_msg_data,
13256 p_qcl_id => l_qcl_id,
13257 p_chr_id => l_merge_chr_id,
13258 x_msg_tbl => l_msg_tbl
13259 );
13260
13261 IF (fnd_log.level_event >=
13262 fnd_log.g_current_runtime_level
13263 )
13264 THEN
13265 fnd_log.STRING
13266 (fnd_log.level_event,
13267 g_module_current
13268 || '.CREATE_K_SYSTEM_TRF',
13269 'okc_qa_check_pub.execute_qa_check_list(Return status = '
13270 || x_return_status
13271 || ')'
13272 );
13273 END IF;
13274
13275 IF x_return_status <>
13276 okc_api.g_ret_sts_success
13277 THEN
13278 RAISE g_exception_halt_validation;
13279 END IF;
13280
13281 l_max_severity := 'I';
13282
13283 IF l_msg_tbl.COUNT > 0
13284 THEN
13285 i := l_msg_tbl.FIRST;
13286
13287 LOOP
13288 IF l_msg_tbl (i).error_status = 'E'
13289 THEN
13290 --'QA returned with errors. ';
13291 EXIT;
13292 END IF;
13293
13294 EXIT WHEN i = l_msg_tbl.LAST;
13295 i := l_msg_tbl.NEXT (i);
13296 END LOOP;
13297 END IF; --table count
13298
13299 IF fnd_log.level_error >=
13300 fnd_log.g_current_runtime_level
13301 THEN
13302 fnd_log.STRING
13303 (fnd_log.level_error,
13304 g_module_current
13305 || '.CREATE_K_SYSTEM_TRF',
13306 'qa Check list error'
13307 || l_msg_tbl (i).error_status
13308 || ','
13309 || l_msg_tbl (i).DATA
13310 );
13311 END IF;
13312
13313 IF l_msg_tbl (i).error_status = 'E'
13314 THEN
13315 -- Change the Contract status to Entered
13316 -- if the COntract is in either Signed or Active status
13317 OPEN l_hdr_sts_csr (l_merge_chr_id);
13318
13319 FETCH l_hdr_sts_csr
13320 INTO l_hdr_sts;
13321
13322 CLOSE l_hdr_sts_csr;
13323
13324 get_sts_code (NULL,
13325 l_hdr_sts,
13326 l_ste_code,
13327 l_sts_code
13328 );
13329
13330 IF l_ste_code IN ('ACTIVE', 'SIGNED')
13331 THEN
13332 get_sts_code ('ENTERED',
13333 NULL,
13334 l_ste_code,
13335 l_sts_code
13336 );
13337
13338 UPDATE okc_k_headers_b
13339 SET sts_code = l_sts_code,
13340 date_approved = NULL,
13341 date_signed = NULL
13342 WHERE ID = l_merge_chr_id;
13343 /*bugfix for 6882512*/
13344 /*update status in okc_contacts table*/
13345 OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_merge_chr_id,
13346 x_return_status=>l_return_status);
13347 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
13348 RAISE g_exception_halt_validation;
13349 END IF;
13350 /*bugfix for 6882512*/
13351 UPDATE okc_k_lines_b
13352 SET sts_code = l_sts_code
13353 WHERE dnz_chr_id = l_merge_chr_id;
13354
13355 l_wf_attr_details.contract_id :=
13356 l_merge_chr_id;
13357 l_wf_attr_details.irr_flag := 'Y';
13358 l_wf_attr_details.process_type :=
13359 'MANUAL';
13360 l_wf_attr_details.negotiation_status :=
13361 'DRAFT';
13362 oks_wf_k_process_pvt.launch_k_process_wf
13363 (p_api_version => 1,
13364 p_init_msg_list => 'T',
13365 p_wf_attributes => l_wf_attr_details,
13366 x_return_status => x_return_status,
13367 x_msg_count => x_msg_count,
13368 x_msg_data => x_msg_data
13369 );
13370 END IF;
13371 END IF;
13372
13373 launch_workflow
13374 ( 'INSTALL BASE ACTIVITY : TRANSFER '
13375 || fnd_global.local_chr (10)
13376 || 'Contract Number : '
13377 || get_contract_number (l_merge_chr_id)
13378 || fnd_global.local_chr (10)
13379 || 'Service line merged in to COntract : '
13380 || l_service_name
13381 );
13382 l_contract_merge := 'T';
13383 /*E7*/
13384 END IF;
13385 /*E6*/
13386 END IF; --If Header Merge fails
13387 /*E5*/
13388 END LOOP;
13389 /*Sys trf*/
13390 END IF;
13391
13392 ---If none of the existing SYstem COntracts Header merge satisfies then
13393
13394 -- Create New Contract
13395 /*8*/
13396 IF l_contract_exist = 'F' OR l_contract_merge = 'F'
13397 THEN
13398 IF fnd_log.level_statement >=
13399 fnd_log.g_current_runtime_level
13400 THEN
13401 fnd_log.STRING
13402 (fnd_log.level_statement,
13403 g_module_current || '.CREATE_K_SYSTEM_TRF',
13404 'Header merge failed, Create a new contract.'
13405 );
13406 END IF;
13407
13408 -- Create New Contract.
13409 create_contract_header
13410 (p_kdtl_rec => p_kdtl_tbl
13411 (l_ctr),
13412 x_msg_data => x_msg_data,
13413 x_chr_id => l_chr_id,
13414 x_msg_count => x_msg_count,
13415 x_return_status => l_return_status
13416 );
13417
13418 IF (fnd_log.level_event >=
13419 fnd_log.g_current_runtime_level
13420 )
13421 THEN
13422 fnd_log.STRING
13423 (fnd_log.level_event,
13424 g_module_current || '.CREATE_K_SYSTEM_TRF',
13425 'Create_Contract_header(Return status = '
13426 || l_return_status
13427 || ')'
13428 );
13429 END IF;
13430
13431 IF NOT l_return_status = okc_api.g_ret_sts_success
13432 THEN
13433 RAISE g_exception_halt_validation;
13434 END IF;
13435
13436 ---If new Contract is created in 'Entered' status launch workflow
13437 l_launch_wf_yn := 'N';
13438 OPEN l_Launch_WF_csr (l_chr_id);
13439 FETCH l_Launch_WF_csr INTO l_launch_wf_yn;
13440 CLOSE l_Launch_WF_csr ;
13441
13442
13443
13444 IF nvl(l_launch_wf_yn,'N') = 'Y'
13445 THEN
13446 l_wf_attr_details.contract_id := l_chr_id;
13447 l_wf_attr_details.irr_flag := 'Y';
13448 l_wf_attr_details.process_type := 'MANUAL';
13449 l_wf_attr_details.negotiation_status := 'DRAFT';
13450 oks_wf_k_process_pvt.launch_k_process_wf
13451 (p_api_version => 1,
13452 p_init_msg_list => 'T',
13453 p_wf_attributes => l_wf_attr_details,
13454 x_return_status => x_return_status,
13455 x_msg_count => x_msg_count,
13456 x_msg_data => x_msg_data
13457 );
13458 END IF;
13459
13460 create_contract_line
13461 (p_kdtl_rec => p_kdtl_tbl
13462 (l_ctr),
13463 p_hdr_id => l_chr_id,
13464 x_return_status => l_return_status,
13465 x_msg_data => x_msg_data,
13466 x_line_id => l_line_id,
13467 x_msg_count => x_msg_count
13468 );
13469
13470 IF (fnd_log.level_event >=
13471 fnd_log.g_current_runtime_level
13472 )
13473 THEN
13474 fnd_log.STRING
13475 (fnd_log.level_event,
13476 g_module_current || '.CREATE_K_SYSTEM_TRF',
13477 'Create_Contract_line(Return status = '
13478 || l_return_status
13479 || ')'
13480 );
13481 END IF;
13482
13483 IF NOT l_return_status = okc_api.g_ret_sts_success
13484 THEN
13485 RAISE g_exception_halt_validation;
13486 END IF;
13487
13488 IF p_kdtl_tbl (l_ctr).coverage_id IS NOT NULL
13489 AND p_kdtl_tbl (l_ctr).standard_cov_yn = 'N'
13490 THEN
13491 oks_coverages_pub.create_adjusted_coverage
13492 (p_api_version => l_api_version,
13493 p_init_msg_list => l_init_msg_list,
13494 x_return_status => l_return_status,
13495 x_msg_count => x_msg_count,
13496 x_msg_data => x_msg_data,
13497 p_source_contract_line_id => p_kdtl_tbl
13498 (l_ctr).service_line_id,
13499 p_target_contract_line_id => l_line_id,
13500 x_actual_coverage_id => l_coverage_id
13501 );
13502
13503 IF (fnd_log.level_event >=
13504 fnd_log.g_current_runtime_level
13505 )
13506 THEN
13507 fnd_log.STRING
13508 (fnd_log.level_event,
13509 g_module_current
13510 || '.CREATE_K_SYSTEM_TRF',
13511 'oks_coverages_pub.create_adjusted_coverage(Return status = '
13512 || l_return_status
13513 || ')'
13514 );
13515 END IF;
13516
13517 IF NOT l_return_status =
13518 okc_api.g_ret_sts_success
13519 THEN
13520 RAISE g_exception_halt_validation;
13521 END IF;
13522
13523 UPDATE oks_k_lines_b
13524 SET coverage_id = l_coverage_id,
13525 standard_cov_yn = 'N'
13526 WHERE cle_id = l_line_id;
13527 END IF;
13528
13529 oks_coverages_pvt.create_k_coverage_ext
13530 (p_api_version => 1,
13531 p_init_msg_list => 'T',
13532 p_src_line_id => p_kdtl_tbl
13533 (l_ctr).service_line_id,
13534 p_tgt_line_id => l_line_id,
13535 x_return_status => l_return_status,
13536 x_msg_count => x_msg_count,
13537 x_msg_data => x_msg_data
13538 );
13539
13540 IF (fnd_log.level_event >=
13541 fnd_log.g_current_runtime_level
13542 )
13543 THEN
13544 fnd_log.STRING
13545 (fnd_log.level_event,
13546 g_module_current
13547 || '..after_coverage_ext',
13548 'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
13549 || l_return_status
13550 || ')'
13551 );
13552 END IF;
13553
13554 IF NOT l_return_status =
13555 okc_api.g_ret_sts_success
13556 THEN
13557 okc_api.set_message
13558 (g_app_name,
13559 g_required_value,
13560 g_col_name_token,
13561 'Coverage Extn creation error '
13562 );
13563 RAISE g_exception_halt_validation;
13564 END IF;
13565
13566 create_contract_subline
13567 (p_kdtl_rec => p_kdtl_tbl
13568 (l_ctr),
13569 p_hdr_id => l_chr_id,
13570 x_subline_id => l_subline_id,
13571 x_update_top_line => l_update_line,
13572 p_line_id => l_line_id,
13573 x_return_status => l_return_status,
13574 x_msg_data => x_msg_data,
13575 x_msg_count => x_msg_count
13576 );
13577
13578 IF (fnd_log.level_event >=
13579 fnd_log.g_current_runtime_level
13580 )
13581 THEN
13582 fnd_log.STRING
13583 (fnd_log.level_event,
13584 g_module_current || '.CREATE_K_SYSTEM_TRF',
13585 'create_contract_subline(Return status = '
13586 || l_return_status
13587 || ')'
13588 );
13589 END IF;
13590
13591 IF NOT l_return_status = okc_api.g_ret_sts_success
13592 THEN
13593 RAISE g_exception_halt_validation;
13594 END IF;
13595
13596 create_transaction_source
13597 (p_create_opr_inst => 'Y',
13598 p_source_code => 'TRANSFER',
13599 p_target_chr_id => l_chr_id,
13600 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
13601 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
13602 p_target_line_id => l_subline_id,
13603 x_oper_instance_id => l_opr_instance_id,
13604 x_return_status => l_return_status,
13605 x_msg_count => x_msg_count,
13606 x_msg_data => x_msg_data
13607 );
13608
13609 IF (fnd_log.level_event >=
13610 fnd_log.g_current_runtime_level
13611 )
13612 THEN
13613 fnd_log.STRING
13614 (fnd_log.level_event,
13615 g_module_current || '.CREATE_K_SYSTEM_TRF',
13616 'Create_transaction_source(Return status ='
13617 || l_return_status
13618 || ')'
13619 );
13620 END IF;
13621
13622 IF NOT l_return_status = 'S'
13623 THEN
13624 RAISE g_exception_halt_validation;
13625 END IF;
13626
13627 create_source_links
13628 (p_create_opr_inst => 'Y',
13629 p_source_code => 'TRANSFER',
13630 p_target_chr_id => l_chr_id,
13631 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
13632 p_target_line_id => l_subline_id,
13633 p_txn_date => p_kdtl_tbl (l_ctr).transfer_date,
13634 x_oper_instance_id => l_renewal_opr_instance_id,
13635 x_return_status => l_return_status,
13636 x_msg_count => x_msg_count,
13637 x_msg_data => x_msg_data
13638 );
13639
13640 IF (fnd_log.level_event >=
13641 fnd_log.g_current_runtime_level
13642 )
13643 THEN
13644 fnd_log.STRING
13645 (fnd_log.level_event,
13646 g_module_current || '.CREATE_K_SYSTEM_TRF',
13647 'Create_transaction_source(Return status ='
13648 || l_return_status
13649 || ')'
13650 );
13651 END IF;
13652
13653 IF NOT l_return_status = 'S'
13654 THEN
13655 RAISE g_exception_halt_validation;
13656 END IF;
13657
13658 l_date_terminated := NULL;
13659 l_subline_price := NULL;
13660
13661 OPEN l_subline_csr (l_subline_id);
13662
13663 FETCH l_subline_csr
13664 INTO l_date_terminated, l_subline_price;
13665
13666 CLOSE l_subline_csr;
13667
13668 l_inst_dtls_tbl (l_ptr).new_contract_id := l_chr_id;
13669 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
13670 TRUNC (l_trfdt);
13671 --p_transfer_rec.transfer_date;
13672 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
13673 p_kdtl_tbl (l_ctr).prod_edt;
13674 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
13675 l_line_id;
13676 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
13677 TRUNC (l_trfdt);
13678 --p_transfer_rec.transfer_date;
13679 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
13680 p_kdtl_tbl (l_ctr).prod_edt;
13681 -- END IF;
13682 l_inst_dtls_tbl (l_ptr).new_subline_id :=
13683 l_subline_id;
13684 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
13685 TRUNC (l_trfdt);
13686 --p_transfer_rec.transfer_date;
13687 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
13688 p_kdtl_tbl (l_ctr).prod_edt;
13689 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
13690 l_subline_price;
13691
13692 -- Fixed for bug 3751050
13693 UPDATE okc_k_lines_b
13694 SET price_negotiated =
13695 (SELECT NVL (SUM (NVL (price_negotiated,
13696 0
13697 )
13698 ),
13699 0
13700 )
13701 FROM okc_k_lines_b
13702 WHERE cle_id = l_line_id
13703 AND dnz_chr_id = l_chr_id)
13704 WHERE ID = l_line_id;
13705
13706 UPDATE oks_k_lines_b
13707 SET tax_amount =
13708 NVL (tax_amount, 0)
13709 + NVL ((SELECT tax_amount
13710 FROM oks_k_lines_b
13711 WHERE cle_id = l_subline_id), 0)
13712 WHERE cle_id = l_line_id;
13713
13714 UPDATE okc_k_headers_b
13715 SET estimated_amount =
13716 (SELECT NVL (SUM (NVL (price_negotiated,
13717 0
13718 )
13719 ),
13720 0
13721 )
13722 FROM okc_k_lines_b
13723 WHERE dnz_chr_id = l_chr_id
13724 AND lse_id IN (1, 19))
13725 WHERE ID = l_chr_id;
13726
13727 UPDATE oks_k_headers_b
13728 SET tax_amount =
13729 NVL (tax_amount, 0)
13730 + NVL ((SELECT tax_amount
13731 FROM oks_k_lines_b
13732 WHERE cle_id = l_subline_id), 0)
13733 WHERE chr_id = l_chr_id;
13734
13735 IF p_kdtl_tbl (l_ctr).lse_id <> 18
13736 THEN
13737 -- Create Billing Schedule
13738 OPEN l_srvdt_csr (l_line_id);
13739
13740 FETCH l_srvdt_csr
13741 INTO l_srv_sdt, l_srv_edt;
13742
13743 CLOSE l_srvdt_csr;
13744
13745 create_billing_schedule
13746 (p_line_id => l_line_id,
13747 p_covlvl_id => l_subline_id,
13748 p_period_start => p_kdtl_tbl(l_ctr).period_start,
13749 p_start_date => l_srv_sdt,
13750 p_end_date => l_srv_edt,
13751 p_update_line => l_update_line,
13752 x_msg_data => x_msg_data,
13753 x_msg_count => x_msg_count,
13754 x_return_status => l_return_status
13755 );
13756
13757 IF (fnd_log.level_event >=
13758 fnd_log.g_current_runtime_level
13759 )
13760 THEN
13761 fnd_log.STRING
13762 (fnd_log.level_event,
13763 g_module_current
13764 || '.CREATE_K_SYSTEM_TRF',
13765 'Create_billing_schedule(Return status = '
13766 || l_return_status
13767 || ')'
13768 );
13769 END IF;
13770
13771 IF NOT l_return_status =
13772 okc_api.g_ret_sts_success
13773 THEN
13774 RAISE g_exception_halt_validation;
13775 END IF;
13776
13777 /*UPDATE okc_k_lines_b
13778 SET price_negotiated = ( SELECT NVL( SUM(NVL( price_negotiated, 0)),0 )
13779 FROM okc_k_lines_b
13780 WHERE cle_id = l_line_id
13781 AND dnz_chr_id = l_chr_id)
13782 WHERE id = l_line_id;
13783
13784 UPDATE okc_k_headers_b
13785 SET estimated_amount = ( SELECT NVL( SUM( NVL(price_negotiated,0) ), 0 )
13786 FROM okc_k_lines_b
13787 WHERE dnz_chr_id = l_chr_id
13788 AND lse_id in (1,19) )
13789 WHERE id = l_chr_id;*/
13790
13791 -- Check Qa
13792 OPEN l_qa_csr (l_chr_id);
13793
13794 FETCH l_qa_csr
13795 INTO l_qcl_id;
13796
13797 CLOSE l_qa_csr;
13798
13799 okc_qa_check_pub.execute_qa_check_list
13800 (p_api_version => l_api_version,
13801 p_init_msg_list => okc_api.g_false,
13802 x_return_status => x_return_status,
13803 x_msg_count => x_msg_count,
13804 x_msg_data => x_msg_data,
13805 p_qcl_id => l_qcl_id,
13806 p_chr_id => l_chr_id,
13807 x_msg_tbl => l_msg_tbl
13808 );
13809
13810 IF (fnd_log.level_event >=
13811 fnd_log.g_current_runtime_level
13812 )
13813 THEN
13814 fnd_log.STRING
13815 (fnd_log.level_event,
13816 g_module_current
13817 || '.CREATE_K_SYSTEM_TRF',
13818 'okc_qa_check_pub.execute_qa_check_list(Return status = '
13819 || x_return_status
13820 || ')'
13821 );
13822 END IF;
13823
13824 IF x_return_status <> okc_api.g_ret_sts_success
13825 THEN
13826 RAISE g_exception_halt_validation;
13827 END IF;
13828
13829 l_max_severity := 'I';
13830
13831 IF l_msg_tbl.COUNT > 0
13832 THEN
13833 i := l_msg_tbl.FIRST;
13834
13835 LOOP
13836 IF l_msg_tbl (i).error_status = 'E'
13837 THEN
13838 --'QA returned with errors. ';
13839 EXIT;
13840 END IF;
13841
13842 EXIT WHEN i = l_msg_tbl.LAST;
13843 i := l_msg_tbl.NEXT (i);
13844 END LOOP;
13845 END IF; --table count
13846
13847 IF fnd_log.level_error >=
13848 fnd_log.g_current_runtime_level
13849 THEN
13850 fnd_log.STRING (fnd_log.level_error,
13851 g_module_current
13852 || '.CREATE_K_SYSTEM_TRF',
13853 'qa Check list error'
13854 || l_msg_tbl (i).error_status
13855 || ','
13856 || l_msg_tbl (i).DATA
13857 );
13858 END IF;
13859
13860 IF l_msg_tbl (i).error_status = 'E'
13861 THEN
13862 -- Change the Contract status to QA_HOLD
13863 -- if the COntract is in either Signed or Active status
13864 OPEN l_hdr_sts_csr (l_chr_id);
13865
13866 FETCH l_hdr_sts_csr
13867 INTO l_hdr_sts;
13868
13869 CLOSE l_hdr_sts_csr;
13870
13871 get_sts_code (NULL,
13872 l_hdr_sts,
13873 l_ste_code,
13874 l_sts_code
13875 );
13876
13877 IF l_ste_code IN ('ACTIVE', 'SIGNED')
13878 THEN
13879 get_sts_code ('ENTERED',
13880 NULL,
13881 l_ste_code,
13882 l_sts_code
13883 );
13884
13885 UPDATE okc_k_headers_b
13886 SET sts_code = l_sts_code,
13887 date_approved = NULL,
13888 date_signed = NULL
13889 WHERE ID = l_chr_id;
13890 /* bugfix for 6882512*/
13891 /*update status in okc_contacts table*/
13892 OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_chr_id,
13893 x_return_status=>l_return_status);
13894
13895 IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
13896 RAISE g_exception_halt_validation;
13897 /*bugfix for 6882512*/ END IF;
13898
13899 UPDATE okc_k_lines_b
13900 SET sts_code = l_sts_code
13901 WHERE dnz_chr_id = l_chr_id;
13902
13903 l_wf_attr_details.contract_id := l_chr_id;
13904 l_wf_attr_details.irr_flag := 'Y';
13905 l_wf_attr_details.process_type := 'MANUAL';
13906 l_wf_attr_details.negotiation_status :=
13907 'DRAFT';
13908 oks_wf_k_process_pvt.launch_k_process_wf
13909 (p_api_version => 1,
13910 p_init_msg_list => 'T',
13911 p_wf_attributes => l_wf_attr_details,
13912 x_return_status => x_return_status,
13913 x_msg_count => x_msg_count,
13914 x_msg_data => x_msg_data
13915 );
13916 END IF;
13917 END IF;
13918
13919 launch_workflow
13920 ( 'INSTALL BASE ACTIVITY : TRANSFER '
13921 || fnd_global.local_chr (10)
13922 || 'Contract Number : '
13923 || get_contract_number (l_chr_id)
13924 || fnd_global.local_chr (10)
13925 || 'New Contract Created : '
13926 || l_service_name
13927 );
13928 END IF;
13929 /*E8*/
13930 END IF;
13931
13932 --Open l_hdr_sts_csr(l_chr_id);
13933 --Fetch l_hdr_Sts_csr into l_hdr_sts;
13934 --Close l_hdr_sts_csr;
13935 --Removed trunc for transatcion date as the cursor to retrieve contracts
13936 --to merge for system transfers fails to return K. The cursor looks at the time value compnent.
13937 l_inst_dtls_tbl (l_ptr).transaction_date :=
13938 (p_kdtl_tbl (l_ctr).transaction_date);
13939 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
13940 l_inst_dtls_tbl (l_ptr).system_id :=
13941 p_kdtl_tbl (l_ctr).system_id;
13942 l_inst_dtls_tbl (l_ptr).transfer_option :=
13943 l_trf_option;
13944 l_inst_dtls_tbl (l_ptr).instance_id_new :=
13945 p_kdtl_tbl (l_ctr).old_cp_id;
13946 --l_inst_dtls_tbl(l_ptr).INSTANCE_AMT_NEW := p_kdtl_tbl( l_ctr ).service_amount;
13947 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
13948 p_kdtl_tbl (l_ctr).cp_qty;
13949 l_inst_dtls_tbl (l_ptr).new_customer :=
13950 p_kdtl_tbl (l_ctr).new_account_id;
13951 --l_inst_dtls_tbl(l_ptr).NEW_K_STATUS := l_hdr_sts;
13952 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
13953 p_kdtl_tbl (l_ctr).service_amount;
13954 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
13955 p_kdtl_tbl (l_ctr).cp_qty;
13956 l_inst_dtls_tbl (l_ptr).old_contract_id :=
13957 p_kdtl_tbl (l_ctr).hdr_id;
13958 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
13959 p_kdtl_tbl (l_ctr).hdr_sdt;
13960 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
13961 p_kdtl_tbl (l_ctr).hdr_edt;
13962 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
13963 p_kdtl_tbl (l_ctr).service_line_id;
13964 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
13965 p_kdtl_tbl (l_ctr).service_sdt;
13966 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
13967 p_kdtl_tbl (l_ctr).service_edt;
13968 l_inst_dtls_tbl (l_ptr).old_subline_id :=
13969 p_kdtl_tbl (l_ctr).object_line_id;
13970 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
13971 p_kdtl_tbl (l_ctr).prod_sdt;
13972 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
13973 p_kdtl_tbl (l_ctr).prod_edt;
13974 l_inst_dtls_tbl (l_ptr).old_customer :=
13975 p_kdtl_tbl (l_ctr).old_account_id;
13976 l_inst_dtls_tbl (l_ptr).old_k_status :=
13977 p_kdtl_tbl (l_ctr).hdr_sts;
13978 END IF;
13979 /*E2*/
13980 END IF;
13981 END IF;
13982
13983 --errorout_n('l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
13984 IF l_inst_dtls_tbl.COUNT <> 0
13985 THEN
13986 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
13987 THEN
13988 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
13989
13990 FETCH l_refnum_csr
13991 INTO l_ref_num;
13992
13993 CLOSE l_refnum_csr;
13994
13995 l_parameters :=
13996 ' Old CP :'
13997 || p_kdtl_tbl (l_ctr).old_cp_id
13998 || ','
13999 || 'Item Id:'
14000 || p_kdtl_tbl (l_ctr).prod_inventory_item
14001 || ','
14002 || 'Old Customer :'
14003 || p_kdtl_tbl (l_ctr).old_account_id
14004 || ','
14005 || 'System Id:'
14006 || p_kdtl_tbl (l_ctr).system_id
14007 || ','
14008 || 'Transaction type :'
14009 || 'TRF'
14010 || ','
14011 || ' Transaction date :'
14012 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
14013 || ','
14014 || 'New Customer:'
14015 || p_kdtl_tbl (l_ctr).new_account_id;
14016 --oks_instance_history
14017 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
14018 l_insthist_rec.instance_id :=
14019 p_kdtl_tbl (l_ctr).old_cp_id;
14020 l_insthist_rec.transaction_type := 'TRF';
14021 l_insthist_rec.transaction_date :=
14022 (p_kdtl_tbl (l_ctr).transaction_date);
14023 l_insthist_rec.reference_number := l_ref_num;
14024 l_insthist_rec.PARAMETERS := l_parameters;
14025 oks_ins_pvt.insert_row
14026 (p_api_version => 1.0,
14027 p_init_msg_list => 'T',
14028 x_return_status => l_return_status,
14029 x_msg_count => l_msg_count,
14030 x_msg_data => l_msg_data,
14031 p_insv_rec => l_insthist_rec,
14032 x_insv_rec => x_insthist_rec
14033 );
14034
14035 IF (fnd_log.level_event >=
14036 fnd_log.g_current_runtime_level
14037 )
14038 THEN
14039 fnd_log.STRING
14040 (fnd_log.level_event,
14041 g_module_current || '.CREATE_K_SYSTEM_TRF',
14042 'oks_ins_pvt.insert_row(Return status = '
14043 || l_return_status
14044 || ')'
14045 );
14046 END IF;
14047
14048 x_return_status := l_return_status;
14049
14050 IF NOT l_return_status = okc_api.g_ret_sts_success
14051 THEN
14052 x_return_status := l_return_status;
14053 RAISE g_exception_halt_validation;
14054 END IF;
14055
14056 l_instparent_id := x_insthist_rec.ID;
14057 END IF;
14058
14059 --errorout_n('in inst l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
14060 FOR l_ctr IN 1 .. l_inst_dtls_tbl.COUNT
14061 LOOP
14062 l_inst_dtls_tbl (l_ctr).ins_id := l_instparent_id;
14063
14064 OPEN l_hdr_sts_csr
14065 (l_inst_dtls_tbl (l_ctr).new_contract_id
14066 );
14067
14068 FETCH l_hdr_sts_csr
14069 INTO l_hdr_sts;
14070
14071 CLOSE l_hdr_sts_csr; -- Vigandhi 03-Feb-2004
14072
14073 l_inst_dtls_tbl (l_ctr).new_k_status := l_hdr_sts;
14074 -- FIx for bug 2408704
14075 END LOOP;
14076
14077 --oks_inst_history_details
14078 oks_ihd_pvt.insert_row (p_api_version => 1.0,
14079 p_init_msg_list => 'T',
14080 x_return_status => l_return_status,
14081 x_msg_count => l_msg_count,
14082 x_msg_data => l_msg_data,
14083 p_ihdv_tbl => l_inst_dtls_tbl,
14084 x_ihdv_tbl => x_inst_dtls_tbl
14085 );
14086
14087 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14088 )
14089 THEN
14090 fnd_log.STRING
14091 (fnd_log.level_event,
14092 g_module_current || '.CREATE_K_SYSTEM_TRF',
14093 'oks_ihd_pvt.insert_row(Return status = '
14094 || l_return_status
14095 || ')'
14096 );
14097 END IF;
14098
14099 x_return_status := l_return_status;
14100
14101 IF NOT l_return_status = okc_api.g_ret_sts_success
14102 THEN
14103 x_return_status := l_return_status;
14104 RAISE g_exception_halt_validation;
14105 END IF;
14106 If date_terminated is not null or date_cancelled is not null Then
14107 Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
14108 Fetch l_hdr_sts_csr into l_hdr_sts;
14109 Close l_hdr_sts_csr;
14110
14111 If p_kdtl_tbl (l_ctr).system_id Is Null Then
14112 Update oks_inst_hist_details set new_k_status = l_hdr_sts
14113 Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
14114 Else
14115 Update oks_inst_hist_details set new_k_status = l_hdr_sts
14116 Where system_id = p_kdtl_tbl (l_ctr).system_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id
14117 and transaction_date = p_kdtl_tbl (l_ctr).transaction_date;
14118 End If;
14119
14120 End If;
14121
14122
14123
14124
14125 END IF;
14126 END IF;
14127
14128 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14129 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14130 END LOOP;
14131 END IF;
14132
14133 x_return_status := l_return_status;
14134 EXCEPTION
14135 WHEN g_exception_halt_validation
14136 THEN
14137 x_return_status := l_return_status;
14138 NULL;
14139 WHEN OTHERS
14140 THEN
14141 x_return_status := okc_api.g_ret_sts_unexp_error;
14142 okc_api.set_message (g_app_name,
14143 g_unexpected_error,
14144 g_sqlcode_token,
14145 SQLCODE,
14146 g_sqlerrm_token,
14147 SQLERRM
14148 );
14149 END create_k_system_transfer;
14150
14151 -----Terminate of Customer product
14152 PROCEDURE create_contract_terminate (
14153 p_kdtl_tbl IN contract_tbl,
14154 x_return_status OUT NOCOPY VARCHAR2,
14155 x_msg_count OUT NOCOPY NUMBER,
14156 x_msg_data OUT NOCOPY VARCHAR2
14157 )
14158 IS
14159 /* Added for Bug#14325727 */
14160 CURSOR l_serv_csr (p_serv_id NUMBER)
14161 IS
14162 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
14163 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
14164 WHERE b.inventory_item_id = t.inventory_item_id
14165 AND b.organization_id = t.organization_id
14166 AND t.LANGUAGE = USERENV ('LANG')
14167 AND b.inventory_item_id = p_serv_id
14168 AND ROWNUM < 2;
14169
14170 /*Commented for Bug#14325727 */
14171 /*
14172 CURSOR l_serv_csr (p_serv_id NUMBER)
14173 IS
14174 SELECT t.description NAME
14175 FROM mtl_system_items_tl t
14176 WHERE t.inventory_item_id = p_serv_id
14177 AND t.LANGUAGE = USERENV ('LANG')
14178 AND ROWNUM < 2;
14179 */
14180
14181 CURSOR l_refnum_csr (p_cp_id NUMBER)
14182 IS
14183 SELECT instance_number
14184 FROM csi_item_instances
14185 WHERE instance_id = p_cp_id;
14186
14187
14188 Cursor l_hdr_sts_csr(p_hdr_id Number)
14189 Is
14190 Select sts_code
14191 From Okc_k_headers_all_b
14192 WHere id = p_hdr_id;
14193
14194 l_hdr_status Varchar2(240);
14195
14196 l_ref_num VARCHAR2 (30);
14197 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
14198 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
14199 l_instparent_id NUMBER;
14200 l_old_cp_id NUMBER;
14201 l_insthist_rec oks_ins_pvt.insv_rec_type;
14202 x_insthist_rec oks_ins_pvt.insv_rec_type;
14203 l_parameters VARCHAR2 (2000);
14204 l_service_name VARCHAR2 (2000);
14205 --Contract Line Table
14206 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
14207 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
14208 --SalesCredit
14209 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
14210 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
14211 l_line_rec k_line_service_rec_type;
14212 l_covd_rec k_line_covered_level_rec_type;
14213 l_available_yn CHAR;
14214 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
14215 l_chrid NUMBER := NULL;
14216 l_lineid NUMBER := NULL;
14217 l_days NUMBER := 0;
14218 l_day1price NUMBER := 0;
14219 l_oldamt NUMBER := 0;
14220 l_ctr NUMBER := 0;
14221 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
14222 l_api_version CONSTANT NUMBER := 1.0;
14223 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
14224 l_index VARCHAR2 (2000);
14225 l_trmdt DATE;
14226 l_suppress_credit VARCHAR2 (2) := 'N';
14227 l_full_credit VARCHAR2 (2) := 'N';
14228 l_ste_code VARCHAR2 (30);
14229 l_sts_code VARCHAR2 (30);
14230 date_terminated DATE;
14231 date_cancelled DATE;
14232 l_alllines_terminated VARCHAR2 (1);
14233 l_alllines_cancelled VARCHAR2 (1);
14234 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
14235 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
14236 l_ptr NUMBER;
14237 l_term_date_flag VARCHAR2 (1);
14238 l_credit_amount VARCHAR2 (50);
14239 BEGIN
14240 x_return_status := okc_api.g_ret_sts_success;
14241
14242 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14243 THEN
14244 fnd_log.STRING (fnd_log.level_event,
14245 g_module_current || '.CREATE_CONTRACT_IBTERMINATE.',
14246 'count = ' || p_kdtl_tbl.COUNT || ')'
14247 );
14248 END IF;
14249
14250 l_old_cp_id := 0;
14251
14252 IF p_kdtl_tbl.COUNT > 0
14253 THEN
14254 l_ctr := p_kdtl_tbl.FIRST;
14255
14256 LOOP
14257
14258 get_sts_code (NULL,
14259 p_kdtl_tbl (l_ctr).hdr_sts,
14260 l_ste_code,
14261 l_sts_code
14262 );
14263
14264 IF l_ste_code = 'HOLD'
14265 THEN
14266 l_return_status := okc_api.g_ret_sts_error;
14267
14268 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
14269 THEN
14270 fnd_log.STRING (fnd_log.level_error,
14271 g_module_current
14272 || '.CREATE_CONTRACT_IBTERMINATE.ERROR',
14273 'Contract in QA_HOLD status'
14274 );
14275 END IF;
14276
14277 okc_api.set_message (g_app_name,
14278 g_invalid_value,
14279 g_col_name_token,
14280 'Termination not allowed .Contract '
14281 || p_kdtl_tbl (l_ctr).contract_number
14282 || 'is in QA_HOLD status'
14283 );
14284 RAISE g_exception_halt_validation;
14285 END IF;
14286
14287 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14288 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14289 END LOOP;
14290 END IF;
14291
14292 IF p_kdtl_tbl.COUNT > 0
14293 THEN
14294 l_ctr := p_kdtl_tbl.FIRST;
14295
14296 LOOP
14297 l_ptr := 1;
14298 --Fix for Bug 5406201
14299
14300 l_clev_tbl_in.delete;
14301 l_chrv_tbl_in.delete;
14302 l_inst_dtls_tbl.DELETE;
14303
14304
14305 okc_context.set_okc_org_context
14306 (p_kdtl_tbl (l_ctr).hdr_org_id,
14307 p_kdtl_tbl (l_ctr).organization_id
14308 );
14309 get_sts_code (NULL,
14310 p_kdtl_tbl (l_ctr).prod_sts_code,
14311 l_ste_code,
14312 l_sts_code
14313 );
14314
14315 IF l_ste_code NOT IN ('ENTERED','EXPIRED') /*Bug:7555733*/
14316 THEN
14317 l_trmdt := p_kdtl_tbl (l_ctr).termination_date;
14318
14319 IF (TRUNC (l_trmdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
14320 THEN
14321 l_trmdt := p_kdtl_tbl (l_ctr).prod_sdt;
14322 END IF;
14323
14324 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
14325 THEN
14326 fnd_log.STRING
14327 (fnd_log.level_statement,
14328 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14329 'OKS Raise credit memo profile option value ='
14330 || fnd_profile.VALUE
14331 ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
14332 );
14333 END IF;
14334
14335 /*IF fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') = 'YES'
14336 OR fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') IS NULL THEN
14337 l_suppress_credit := 'N';
14338 ELSE
14339 l_suppress_credit := 'Y';
14340 END IF;*/
14341 l_credit_amount :=
14342 oks_ib_util_pvt.get_credit_option
14343 (p_kdtl_tbl (l_ctr).party_id,
14344 p_kdtl_tbl (l_ctr).hdr_org_id,
14345 p_kdtl_tbl (l_ctr).termination_date
14346 );
14347
14348 IF UPPER (l_credit_amount) = 'FULL'
14349 THEN
14350 l_full_credit := 'Y';
14351 l_suppress_credit := 'N';
14352 --l_trmdt := p_kdtl_tbl( l_ctr ).prod_sdt;
14353 l_term_date_flag := 'N';
14354 ELSIF UPPER (l_credit_amount) = 'NONE'
14355 THEN
14356 l_suppress_credit := 'Y';
14357 l_full_credit := 'N';
14358 l_term_date_flag := 'N';
14359 ELSIF UPPER (l_credit_amount) = 'CALCULATED'
14360 THEN
14361 l_suppress_credit := 'N';
14362 l_full_credit := 'N';
14363 l_term_date_flag := 'N';
14364 END IF;
14365
14366 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_trmdt)
14367 THEN
14368 l_trmdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
14369 l_suppress_credit := 'Y';
14370 l_full_credit := 'N';
14371 l_term_date_flag := 'Y';
14372 END IF;
14373
14374 oks_bill_rec_pub.pre_terminate_cp
14375 (p_calledfrom => -1,
14376 p_cle_id => p_kdtl_tbl
14377 (l_ctr).object_line_id,
14378 p_termination_date => TRUNC (l_trmdt),
14379 p_terminate_reason => 'EXP',
14380 p_override_amount => NULL,
14381 p_con_terminate_amount => NULL,
14382 p_termination_amount => NULL,
14383 p_suppress_credit => l_suppress_credit,
14384 p_full_credit => l_full_credit,
14385 --'N',
14386 p_term_date_flag => l_term_date_flag,
14387 p_term_cancel_source => 'IBTERMINATE',
14388 x_return_status => l_return_status
14389 );
14390
14391 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14392 THEN
14393 fnd_log.STRING
14394 (fnd_log.level_event,
14395 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14396 'oks_bill_rec_pub.Pre_terminate_cp(Return status = '
14397 || l_return_status
14398 || ')'
14399 );
14400 END IF;
14401
14402 IF NOT l_return_status = okc_api.g_ret_sts_success
14403 THEN
14404 RAISE g_exception_halt_validation;
14405 END IF;
14406
14407 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
14408 TRUNC (l_trmdt);
14409 ---Terminate top line if all the sublines are terminated due to Instance termination
14410 date_terminated := NULL;
14411 oks_ib_util_pvt.check_termcancel_lines
14412 (p_kdtl_tbl (l_ctr).service_line_id,
14413 'SL',
14414 'T',
14415 date_terminated
14416 );
14417
14418 IF date_terminated IS NOT NULL
14419 THEN
14420 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
14421
14422 l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).service_line_id;
14423 l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
14424 l_clev_tbl_in (1).trn_code := 'EXP';
14425 ---check the actual code
14426 l_clev_tbl_in (1).term_cancel_source := 'IBTERMINATE';
14427 If TRUNC (date_terminated)<= trunc(sysdate) Then
14428 l_clev_tbl_in (1).sts_code := l_sts_code;
14429 End If;
14430
14431 okc_contract_pub.update_contract_line
14432 (p_api_version => l_api_version,
14433 p_init_msg_list => l_init_msg_list,
14434 p_restricted_update => okc_api.g_true,
14435 x_return_status => l_return_status,
14436 x_msg_count => x_msg_count,
14437 x_msg_data => x_msg_data,
14438 p_clev_tbl => l_clev_tbl_in,
14439 x_clev_tbl => l_clev_tbl_out
14440 );
14441
14442 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14443 )
14444 THEN
14445 fnd_log.STRING
14446 (fnd_log.level_event,
14447 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14448 'oks_bill_rec_pub.update_contract_line(Return status = '
14449 || l_return_status
14450 || ')'
14451 );
14452 END IF;
14453
14454 IF NOT l_return_status = okc_api.g_ret_sts_success
14455 THEN
14456 RAISE g_exception_halt_validation;
14457 END IF;
14458 END IF;
14459
14460 date_terminated := NULL;
14461 oks_ib_util_pvt.check_termcancel_lines
14462 (p_kdtl_tbl (l_ctr).hdr_id,
14463 'TL',
14464 'T',
14465 date_terminated
14466 );
14467
14468 IF date_terminated IS NOT NULL
14469 THEN
14470 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
14471
14472 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
14473 l_chrv_tbl_in (1).date_terminated :=
14474 TRUNC (date_terminated);
14475 l_chrv_tbl_in (1).trn_code := 'EXP';
14476 l_chrv_tbl_in (1).term_cancel_source := 'IBTERMINATE';
14477 If TRUNC (date_terminated)<= trunc(sysdate) Then
14478 l_chrv_tbl_in (1).sts_code := l_sts_code;
14479 End If;
14480
14481 okc_contract_pub.update_contract_header
14482 (p_api_version => l_api_version,
14483 p_init_msg_list => l_init_msg_list,
14484 p_restricted_update => okc_api.g_true,
14485 x_return_status => l_return_status,
14486 x_msg_count => x_msg_count,
14487 x_msg_data => x_msg_data,
14488 p_chrv_tbl => l_chrv_tbl_in,
14489 x_chrv_tbl => l_chrv_tbl_out
14490 );
14491
14492 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14493 )
14494 THEN
14495 fnd_log.STRING
14496 (fnd_log.level_event,
14497 g_module_current
14498 || '.Update_Hdr_Dates.external_call.after',
14499 'okc_contract_pub.update_contract_header(Return status = '
14500 || l_return_status
14501 || ')'
14502 );
14503 END IF;
14504
14505 IF NOT l_return_status = okc_api.g_ret_sts_success
14506 THEN
14507 RAISE g_exception_halt_validation;
14508 END IF;
14509 END IF;
14510 ELSIF l_ste_code = 'ENTERED'
14511 THEN
14512 l_trmdt := p_kdtl_tbl (l_ctr).termination_date;
14513
14514 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_trmdt)
14515 THEN
14516 l_trmdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
14517 END IF;
14518
14519 -- added for the bug # 6000133
14520 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14521
14522 oks_change_status_pvt.update_line_status
14523 (x_return_status => l_return_status,
14524 x_msg_data => x_msg_data,
14525 x_msg_count => x_msg_count,
14526 p_init_msg_list => 'F',
14527 p_id => p_kdtl_tbl (l_ctr).hdr_id,
14528 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
14529 p_new_sts_code => l_sts_code,
14530 p_canc_reason_code => 'TERMINATED',
14531 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
14532 p_old_ste_code => 'ENTERED',
14533 p_new_ste_code => 'CANCELLED',
14534 p_term_cancel_source => 'IBTERMINATE',
14535 p_date_cancelled => TRUNC (l_trmdt),
14536 p_comments => NULL,
14537 p_validate_status => 'N'
14538 );
14539
14540 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14541 THEN
14542 fnd_log.STRING
14543 (fnd_log.level_event,
14544 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14545 'okc_contract_pub.update_contract_line(Return status ='
14546 || l_return_status
14547 || ')'
14548 );
14549 END IF;
14550
14551 IF NOT l_return_status = okc_api.g_ret_sts_success
14552 THEN
14553 RAISE g_exception_halt_validation;
14554 END IF;
14555
14556 l_inst_dtls_tbl (l_ptr).date_cancelled := TRUNC (l_trmdt);
14557 date_cancelled := NULL;
14558 oks_ib_util_pvt.check_termcancel_lines
14559 (p_kdtl_tbl (l_ctr).service_line_id,
14560 'SL',
14561 'C',
14562 date_cancelled
14563 );
14564
14565 IF date_cancelled IS NOT NULL
14566 THEN
14567
14568 -- added for the bug # 6000133
14569 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14570
14571 oks_change_status_pvt.update_line_status
14572 (x_return_status => l_return_status,
14573 x_msg_data => x_msg_data,
14574 x_msg_count => x_msg_count,
14575 p_init_msg_list => 'F',
14576 p_id => p_kdtl_tbl (l_ctr).hdr_id,
14577 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
14578 p_new_sts_code => l_sts_code,
14579 p_canc_reason_code => 'TERMINATED',
14580 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
14581 p_old_ste_code => 'ENTERED',
14582 p_new_ste_code => 'CANCELLED',
14583 p_term_cancel_source => 'IBTERMINATE',
14584 p_date_cancelled => TRUNC (date_cancelled),
14585 p_comments => NULL,
14586 p_validate_status => 'N'
14587 );
14588
14589 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14590 )
14591 THEN
14592 fnd_log.STRING
14593 (fnd_log.level_event,
14594 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14595 'okc_contract_pub.update_contract_line(Return status = '
14596 || l_return_status
14597 || ')'
14598 );
14599 END IF;
14600
14601 IF NOT l_return_status = okc_api.g_ret_sts_success
14602 THEN
14603 RAISE g_exception_halt_validation;
14604 END IF;
14605 END IF;
14606
14607 date_cancelled := NULL;
14608 oks_ib_util_pvt.check_termcancel_lines
14609 (p_kdtl_tbl (l_ctr).hdr_id,
14610 'TL',
14611 'C',
14612 date_cancelled
14613 );
14614
14615 IF date_cancelled IS NOT NULL
14616 THEN
14617 l_return_status := 'S';
14618
14619 -- added for the bug # 6000133
14620 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14621
14622 oks_change_status_pvt.update_header_status
14623 (x_return_status => l_return_status,
14624 x_msg_data => x_msg_data,
14625 x_msg_count => x_msg_count,
14626 p_init_msg_list => 'F',
14627 p_id => p_kdtl_tbl (l_ctr).hdr_id,
14628 p_new_sts_code => l_sts_code,
14629 p_canc_reason_code => 'TERMINATED',
14630 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
14631 p_comments => NULL,
14632 p_term_cancel_source => 'IBTERMINATE',
14633 p_date_cancelled => TRUNC (date_cancelled),
14634 p_validate_status => 'N'
14635 );
14636
14637 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14638 )
14639 THEN
14640 fnd_log.STRING
14641 (fnd_log.level_event,
14642 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14643 'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status = '
14644 || l_return_status
14645 || ')'
14646 );
14647 END IF;
14648
14649 IF NOT l_return_status = okc_api.g_ret_sts_success
14650 THEN
14651 RAISE g_exception_halt_validation;
14652 END IF;
14653 END IF;
14654 END IF;
14655
14656 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
14657
14658 FETCH l_serv_csr
14659 INTO l_service_name;
14660
14661 CLOSE l_serv_csr;
14662
14663 launch_workflow ( 'INSTALL BASE ACTIVITY : TERMINATE '
14664 || fnd_global.local_chr (10)
14665 || 'Contract Number : '
14666 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
14667 || fnd_global.local_chr (10)
14668 || 'Customer product end dated : '
14669 || l_service_name
14670 );
14671 /* get_sts_code (NULL,
14672 p_kdtl_tbl (l_ctr).hdr_sts,
14673 l_ste_code,
14674 l_sts_code
14675 );
14676
14677 */
14678
14679
14680 l_inst_dtls_tbl (l_ptr).transaction_date :=
14681 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
14682 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRM';
14683 l_inst_dtls_tbl (l_ptr).instance_id_new :=
14684 p_kdtl_tbl (l_ctr).old_cp_id;
14685 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
14686 p_kdtl_tbl (l_ctr).old_cp_quantity;
14687 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
14688 p_kdtl_tbl (l_ctr).old_cp_quantity;
14689 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
14690 p_kdtl_tbl (l_ctr).service_amount;
14691 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
14692 p_kdtl_tbl (l_ctr).service_amount;
14693 l_inst_dtls_tbl (l_ptr).old_contract_id :=
14694 p_kdtl_tbl (l_ctr).hdr_id;
14695 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
14696 p_kdtl_tbl (l_ctr).hdr_sdt;
14697 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
14698 p_kdtl_tbl (l_ctr).hdr_edt;
14699 l_inst_dtls_tbl (l_ptr).new_contract_id :=
14700 p_kdtl_tbl (l_ctr).hdr_id;
14701 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
14702 p_kdtl_tbl (l_ctr).hdr_sdt;
14703 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
14704 p_kdtl_tbl (l_ctr).hdr_edt;
14705 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
14706 p_kdtl_tbl (l_ctr).service_line_id;
14707 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
14708 p_kdtl_tbl (l_ctr).service_sdt;
14709 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
14710 p_kdtl_tbl (l_ctr).service_edt;
14711 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
14712 p_kdtl_tbl (l_ctr).service_line_id;
14713 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
14714 p_kdtl_tbl (l_ctr).service_sdt;
14715 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
14716 p_kdtl_tbl (l_ctr).service_edt;
14717 l_inst_dtls_tbl (l_ptr).old_subline_id :=
14718 p_kdtl_tbl (l_ctr).object_line_id;
14719 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
14720 p_kdtl_tbl (l_ctr).prod_sdt;
14721 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
14722 p_kdtl_tbl (l_ctr).prod_edt;
14723 l_inst_dtls_tbl (l_ptr).new_subline_id :=
14724 p_kdtl_tbl (l_ctr).object_line_id;
14725 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
14726 p_kdtl_tbl (l_ctr).prod_sdt;
14727 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
14728 p_kdtl_tbl (l_ctr).prod_edt;
14729 l_inst_dtls_tbl (l_ptr).old_customer :=
14730 p_kdtl_tbl (l_ctr).cust_account;
14731 l_inst_dtls_tbl (l_ptr).new_customer :=
14732 p_kdtl_tbl (l_ctr).cust_account;
14733 l_inst_dtls_tbl (l_ptr).old_k_status := p_kdtl_tbl (l_ctr).hdr_sts;
14734
14735 l_inst_dtls_tbl (l_ptr).new_k_status := p_kdtl_tbl (l_ctr).hdr_sts;
14736
14737
14738 IF l_inst_dtls_tbl.COUNT <> 0
14739 THEN
14740 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
14741 THEN
14742 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
14743
14744 FETCH l_refnum_csr
14745 INTO l_ref_num;
14746
14747 CLOSE l_refnum_csr;
14748
14749 l_parameters :=
14750 ' Old CP :'
14751 || p_kdtl_tbl (l_ctr).old_cp_id
14752 || ','
14753 || 'Item Id:'
14754 || p_kdtl_tbl (l_ctr).prod_inventory_item
14755 || ','
14756 || 'Old Quantity:'
14757 || p_kdtl_tbl (l_ctr).current_cp_quantity
14758 || ','
14759 || 'Transaction type :'
14760 || 'TRM'
14761 || ','
14762 || ' Transaction date :'
14763 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
14764 || ','
14765 || 'New quantity:'
14766 || p_kdtl_tbl (l_ctr).new_quantity;
14767 --oks_instance_history
14768 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
14769 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
14770 l_insthist_rec.transaction_type := 'TRM';
14771 l_insthist_rec.transaction_date :=
14772 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
14773 l_insthist_rec.reference_number := l_ref_num;
14774 l_insthist_rec.PARAMETERS := l_parameters;
14775 oks_ins_pvt.insert_row (p_api_version => 1.0,
14776 p_init_msg_list => 'T',
14777 x_return_status => l_return_status,
14778 x_msg_count => x_msg_count,
14779 x_msg_data => x_msg_data,
14780 p_insv_rec => l_insthist_rec,
14781 x_insv_rec => x_insthist_rec
14782 );
14783
14784 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14785 )
14786 THEN
14787 fnd_log.STRING
14788 (fnd_log.level_event,
14789 g_module_current || '.CREATE_K_SYSTEM_TRF',
14790 'oks_ins_pvt.insert_row(Return status = '
14791 || l_return_status
14792 || ')'
14793 );
14794 END IF;
14795
14796 x_return_status := l_return_status;
14797
14798 IF NOT l_return_status = okc_api.g_ret_sts_success
14799 THEN
14800 x_return_status := l_return_status;
14801 RAISE g_exception_halt_validation;
14802 END IF;
14803
14804 l_instparent_id := x_insthist_rec.ID;
14805 END IF;
14806
14807 l_inst_dtls_tbl (l_ptr).ins_id := l_instparent_id;
14808 --oks_inst_history_details
14809 oks_ihd_pvt.insert_row (p_api_version => 1.0,
14810 p_init_msg_list => 'T',
14811 x_return_status => l_return_status,
14812 x_msg_count => x_msg_count,
14813 x_msg_data => x_msg_data,
14814 p_ihdv_tbl => l_inst_dtls_tbl,
14815 x_ihdv_tbl => x_inst_dtls_tbl
14816 );
14817
14818 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14819 THEN
14820 fnd_log.STRING
14821 (fnd_log.level_event,
14822 g_module_current || '.CREATE_IBTERMINATE',
14823 'oks_ihd_pvt.insert_row(Return status = '
14824 || l_return_status
14825 || ')'
14826 );
14827 END IF;
14828
14829 x_return_status := l_return_status;
14830
14831 IF NOT l_return_status = okc_api.g_ret_sts_success
14832 THEN
14833 x_return_status := l_return_status;
14834 RAISE g_exception_halt_validation;
14835 END IF;
14836
14837 If date_terminated is not null or date_cancelled is not null Then
14838 Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
14839 Fetch l_hdr_sts_csr into l_hdr_status;
14840 Close l_hdr_sts_csr;
14841
14842 Update oks_inst_hist_details set new_k_status = l_hdr_status
14843 Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
14844
14845 End If;
14846 END IF;
14847
14848 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14849 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14850 END LOOP;
14851 END IF;
14852 EXCEPTION
14853 WHEN g_exception_halt_validation
14854 THEN
14855 x_return_status := l_return_status;
14856 NULL;
14857 WHEN OTHERS
14858 THEN
14859 x_return_status := okc_api.g_ret_sts_unexp_error;
14860 okc_api.set_message (g_app_name,
14861 g_unexpected_error,
14862 g_sqlcode_token,
14863 SQLCODE,
14864 g_sqlerrm_token,
14865 SQLERRM
14866 );
14867 END;
14868
14869 PROCEDURE update_contract_idc (
14870 p_kdtl_tbl IN contract_tbl,
14871 x_return_status OUT NOCOPY VARCHAR2,
14872 x_msg_count OUT NOCOPY NUMBER,
14873 x_msg_data OUT NOCOPY VARCHAR2
14874 )
14875 IS
14876 -- Cursor to check cov attribute set
14877 CURSOR l_cov_csr (p_cle_id NUMBER)
14878 IS
14879 SELECT KL.sync_date_install
14880 FROM oks_k_lines_b LN, oks_k_lines_b kl
14881 WHERE LN.cle_id = p_cle_id AND kl.cle_id = LN.coverage_id;
14882
14883 -- Cursor to check SR logged
14884 CURSOR l_checksr_csr (
14885 p_line_id NUMBER,
14886 p_sdt DATE,
14887 p_edt DATE,
14888 p_cp_id NUMBER
14889 )
14890 IS
14891 SELECT 'X'
14892 FROM cs_incidents_all_b
14893 WHERE customer_product_id = p_cp_id
14894 AND contract_service_id = p_line_id
14895 AND ( TRUNC (creation_date) <= TRUNC (p_sdt)
14896 OR TRUNC (creation_date) >= TRUNC (p_edt)
14897 );
14898
14899 -- Cursor to get start and end date of sub lines
14900 CURSOR l_subline_dates (
14901 p_topline_id NUMBER,
14902 p_hdr_id NUMBER,
14903 p_subline_id NUMBER
14904 )
14905 IS
14906 SELECT MIN (start_date) sdt, MAX (end_date) edt
14907 FROM okc_k_lines_b
14908 WHERE cle_id = p_topline_id
14909 AND dnz_chr_id = p_hdr_id
14910 AND lse_id = 18
14911 AND ID <> p_subline_id;
14912
14913 -- Cursor to get start and end date of top lines
14914 CURSOR l_topline_dates (p_hdr_id NUMBER, p_topline_id NUMBER)
14915 IS
14916 SELECT MIN (start_date) sdt, MAX (end_date) edt
14917 FROM okc_k_lines_b
14918 WHERE dnz_chr_id = p_hdr_id AND cle_id IS NULL
14919 AND ID <> p_topline_id;
14920
14921 -- Cursor to get the header dates and status
14922 CURSOR l_lndates_csr (p_id NUMBER)
14923 IS
14924 SELECT start_date, end_date
14925 FROM okc_k_lines_b
14926 WHERE ID = p_id;
14927
14928 -- Cursor to get the line dates and status
14929 CURSOR l_hdrdates_csr (p_id NUMBER)
14930 IS
14931 SELECT start_date, end_date, sts_code
14932 FROM okc_k_headers_b
14933 WHERE ID = p_id;
14934
14935 --mmadhavi bug 3761489
14936 CURSOR get_oks_line_dtls (p_id NUMBER)
14937 IS
14938 SELECT ID, object_version_number
14939 FROM oks_k_lines_b
14940 WHERE cle_id = p_id;
14941
14942 --mmadhavi bug 3761489
14943 CURSOR l_serv_csr (p_serv_line_id NUMBER)
14944 IS
14945 SELECT t.description NAME, b.concatenated_segments description
14946 FROM mtl_system_items_b_kfv b,
14947 mtl_system_items_tl t,
14948 okc_k_items ki
14949 WHERE ki.cle_id = p_serv_line_id
14950 AND b.inventory_item_id = TO_CHAR (ki.object1_id1)
14951 AND t.inventory_item_id = b.inventory_item_id
14952 AND t.organization_id = b.organization_id
14953 AND t.LANGUAGE = USERENV ('LANG')
14954 AND ROWNUM < 2;
14955
14956 CURSOR l_refnum_csr (p_cp_id NUMBER)
14957 IS
14958 SELECT instance_number
14959 FROM csi_item_instances
14960 WHERE instance_id = p_cp_id;
14961
14962 l_ref_num VARCHAR2 (30);
14963 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
14964 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
14965 l_instparent_id NUMBER;
14966 l_old_cp_id NUMBER;
14967 l_insthist_rec oks_ins_pvt.insv_rec_type;
14968 x_insthist_rec oks_ins_pvt.insv_rec_type;
14969 l_parameters VARCHAR2 (2000);
14970 l_lndates_rec l_lndates_csr%ROWTYPE;
14971 l_hdrdates_rec l_hdrdates_csr%ROWTYPE;
14972 l_subline_rec l_subline_dates%ROWTYPE;
14973 l_topline_rec l_topline_dates%ROWTYPE;
14974 l_duration NUMBER;
14975 l_timeunits VARCHAR2 (25);
14976 l_api_version CONSTANT NUMBER := 1.0;
14977 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
14978 l_available_yn VARCHAR2 (2);
14979 l_index VARCHAR2 (2000);
14980 l_return_status VARCHAR2 (1) := 'S';
14981 --l_kdtl_tbl oks_extwar_util_pvt.contract_tbl_type;
14982 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
14983 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
14984 l_ctr NUMBER := 0;
14985 l_cov_att VARCHAR2 (1);
14986 v_temp VARCHAR2 (1);
14987 l_sub_sdt DATE := NULL;
14988 l_sub_edt DATE := NULL;
14989 l_top_sdt DATE := NULL;
14990 l_top_edt DATE := NULL;
14991 l_hdr_sdt DATE := NULL;
14992 l_hdr_edt DATE := NULL;
14993 l_status VARCHAR2 (30);
14994 l_top_flag VARCHAR2 (1);
14995 l_hdr_flag VARCHAR2 (1);
14996 l_update_line VARCHAR2 (1);
14997 l_sts_flag VARCHAR2 (1);
14998 l_ste_code VARCHAR2 (240);
14999 l_sts_code VARCHAR2 (240);
15000 l_obj_version_num NUMBER;
15001 l_id NUMBER;
15002 l_prod_item_id NUMBER;
15003 line_desc VARCHAR2 (240);
15004 line_name VARCHAR2 (240);
15005 l_desc VARCHAR2 (240);
15006 l_quantity NUMBER;
15007 l_invoice_text VARCHAR2 (2000);
15008 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
15009 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
15010 BEGIN
15011 x_return_status := okc_api.g_ret_sts_success;
15012
15013 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15014 THEN
15015 fnd_log.STRING (fnd_log.level_event,
15016 g_module_current || '.UPDATE_CONTRACT_IDC.after.',
15017 'count = ' || p_kdtl_tbl.COUNT || ')'
15018 );
15019 END IF;
15020
15021 l_old_cp_id := 0;
15022
15023 IF p_kdtl_tbl.COUNT > 0
15024 THEN
15025 l_ctr := p_kdtl_tbl.FIRST;
15026
15027 LOOP
15028 okc_context.set_okc_org_context
15029 (p_kdtl_tbl (l_ctr).hdr_org_id,
15030 p_kdtl_tbl (l_ctr).organization_id
15031 );
15032
15033 IF p_kdtl_tbl (l_ctr).installation_date IS NULL
15034 THEN
15035 l_return_status := okc_api.g_ret_sts_warning;
15036
15037 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
15038 THEN
15039 fnd_log.STRING (fnd_log.level_error,
15040 g_module_current || '.IB_INTERFACE',
15041 'Installation date changed to null '
15042 );
15043 END IF;
15044
15045 okc_api.set_message (g_app_name, 'OKS_NULL_INSTALLATION_DATE');
15046 RAISE g_exception_halt_validation;
15047 END IF;
15048
15049 l_inst_dtls_tbl.DELETE;
15050 get_sts_code (p_kdtl_tbl (l_ctr).hdr_sts,
15051 NULL,
15052 l_ste_code,
15053 l_sts_code
15054 );
15055 -- Instance history details
15056 --x_inst_dtls_tbl(l_ctr).INST_PARENT_ID := p_idc_rec.old_cp_id;
15057 l_inst_dtls_tbl (1).transaction_date :=
15058 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15059 l_inst_dtls_tbl (1).transaction_type := 'IDC';
15060 l_inst_dtls_tbl (1).instance_id_new :=
15061 p_kdtl_tbl (l_ctr).old_cp_id;
15062 l_inst_dtls_tbl (1).instance_qty_old :=
15063 p_kdtl_tbl (l_ctr).old_cp_quantity;
15064 l_inst_dtls_tbl (1).instance_qty_new :=
15065 p_kdtl_tbl (l_ctr).old_cp_quantity;
15066 l_inst_dtls_tbl (1).instance_amt_old :=
15067 p_kdtl_tbl (l_ctr).service_amount;
15068 l_inst_dtls_tbl (1).instance_amt_new :=
15069 p_kdtl_tbl (l_ctr).service_amount;
15070 l_inst_dtls_tbl (1).old_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
15071 l_inst_dtls_tbl (1).old_contact_start_date :=
15072 p_kdtl_tbl (l_ctr).hdr_sdt;
15073 l_inst_dtls_tbl (1).old_contract_end_date :=
15074 p_kdtl_tbl (l_ctr).hdr_edt;
15075 l_inst_dtls_tbl (1).old_service_line_id :=
15076 p_kdtl_tbl (l_ctr).service_line_id;
15077 l_inst_dtls_tbl (1).old_service_start_date :=
15078 p_kdtl_tbl (l_ctr).service_sdt;
15079 l_inst_dtls_tbl (1).old_service_end_date :=
15080 p_kdtl_tbl (l_ctr).service_edt;
15081 l_inst_dtls_tbl (1).old_subline_id :=
15082 p_kdtl_tbl (l_ctr).object_line_id;
15083 l_inst_dtls_tbl (1).old_subline_start_date :=
15084 p_kdtl_tbl (l_ctr).prod_sdt;
15085 l_inst_dtls_tbl (1).old_subline_end_date :=
15086 p_kdtl_tbl (l_ctr).prod_edt;
15087 l_inst_dtls_tbl (1).old_customer :=
15088 p_kdtl_tbl (l_ctr).cust_account;
15089 l_inst_dtls_tbl (1).old_k_status := l_sts_code;
15090 -- If installation date is null Contract starts with OM shipment date
15091 -- New start date for the covered line
15092 l_sub_sdt := trunc(p_kdtl_tbl (l_ctr).installation_date); --bug 5757116 added trunc.
15093 okc_time_util_pub.get_duration
15094 (p_start_date => p_kdtl_tbl (l_ctr).prod_sdt,
15095 p_end_date => p_kdtl_tbl (l_ctr).prod_edt,
15096 x_duration => l_duration,
15097 x_timeunit => l_timeunits,
15098 x_return_status => l_return_status
15099 );
15100
15101 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15102 THEN
15103 fnd_log.STRING
15104 (fnd_log.level_event,
15105 g_module_current
15106 || '.UPDATE_CONTRACT_IDC.after.get_k_dtls',
15107 'Okc_time_util_pub.get_duration(Return status = '
15108 || l_return_status
15109 || ',Duration = '
15110 || l_duration
15111 || ',Time units = '
15112 || l_timeunits
15113 || ')'
15114 );
15115 END IF;
15116
15117 IF NOT l_return_status = 'S'
15118 THEN
15119 RAISE g_exception_halt_validation;
15120 END IF;
15121
15122 -- New end date for the covered line
15123 l_sub_edt :=
15124 okc_time_util_pub.get_enddate
15125 (p_start_date => trunc(p_kdtl_tbl (l_ctr).installation_date),
15126 p_duration => l_duration,
15127 p_timeunit => l_timeunits
15128 );
15129
15130 -- Check for the coverage flag Synchronization install date
15131 -- Contract date can be updated if the flag is checked
15132 OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
15133
15134 FETCH l_cov_csr
15135 INTO l_cov_att;
15136
15137 CLOSE l_cov_csr;
15138
15139 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
15140 THEN
15141 fnd_log.STRING (fnd_log.level_statement,
15142 g_module_current || '.UPDATE_CONTRACT_IDC',
15143 'Coverage attribute = ' || l_cov_att
15144 );
15145 END IF;
15146
15147
15148 IF NVL (l_cov_att, 'N') = 'Y'
15149 THEN
15150 -- Check for any open service request
15151 -- Contract date wouldn't be updated only if there is a service request outside new effectivity
15152 OPEN l_checksr_csr (p_kdtl_tbl (l_ctr).service_line_id,
15153 l_sub_sdt,
15154 l_sub_edt,
15155 p_kdtl_tbl (l_ctr).old_cp_id
15156 );
15157
15158 FETCH l_checksr_csr
15159 INTO v_temp;
15160
15161 IF l_checksr_csr%FOUND
15162 THEN
15163 CLOSE l_checksr_csr;
15164
15165 l_return_status := okc_api.g_ret_sts_warning;
15166
15167 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
15168 THEN
15169 fnd_log.STRING (fnd_log.level_error,
15170 g_module_current
15171 || '.UPDATE_CONTRACT_IDC.ERROR',
15172 'SR is logged '
15173 || ',status = '
15174 || l_return_status
15175 );
15176 END IF;
15177
15178 okc_api.set_message (g_app_name, 'OKS_SR_EXISTS');
15179 RAISE g_exception_halt_validation;
15180 ELSE
15181 CLOSE l_checksr_csr;
15182
15183 OPEN l_subline_dates (p_kdtl_tbl (l_ctr).service_line_id,
15184 p_kdtl_tbl (l_ctr).hdr_id,
15185 p_kdtl_tbl (l_ctr).object_line_id
15186 );
15187
15188 FETCH l_subline_dates
15189 INTO l_subline_rec;
15190
15191 IF l_subline_dates%FOUND
15192 AND l_subline_rec.sdt IS NOT NULL
15193 AND l_subline_rec.edt IS NOT NULL
15194 THEN
15195 IF l_subline_rec.sdt < l_sub_sdt
15196 AND l_subline_rec.edt > l_sub_edt
15197 THEN
15198 l_top_flag := 'F';
15199 ELSE
15200 IF l_subline_rec.sdt >= l_sub_sdt
15201 THEN
15202 l_top_sdt := l_sub_sdt;
15203 ELSE
15204 l_top_sdt := l_subline_rec.sdt;
15205 END IF;
15206
15207 IF l_subline_rec.edt >= l_sub_edt
15208 THEN
15209 l_top_edt := l_subline_rec.edt;
15210 ELSE
15211 l_top_edt := l_sub_edt;
15212 END IF;
15213
15214 l_top_flag := 'T';
15215 END IF;
15216 ELSE
15217 l_top_flag := 'T';
15218 l_top_sdt := l_sub_sdt;
15219 l_top_edt := l_sub_edt;
15220 --errorout( l_top_sdt || ': '|| l_top_edt );
15221 END IF;
15222
15223 CLOSE l_subline_dates;
15224
15225 IF l_top_flag = 'T'
15226 THEN
15227 OPEN l_topline_dates (p_kdtl_tbl (l_ctr).hdr_id,
15228 p_kdtl_tbl (l_ctr).service_line_id
15229 );
15230
15231 FETCH l_topline_dates
15232 INTO l_topline_rec;
15233
15234 IF l_topline_dates%FOUND
15235 AND l_topline_rec.sdt IS NOT NULL
15236 AND l_topline_rec.edt IS NOT NULL
15237 THEN
15238 IF l_topline_rec.sdt < l_top_sdt
15239 AND l_topline_rec.edt > l_top_edt
15240 THEN
15241 l_hdr_flag := 'F';
15242 ELSE
15243 IF l_topline_rec.sdt >= l_top_sdt
15244 THEN
15245 l_hdr_sdt := l_top_sdt;
15246 ELSE
15247 l_hdr_sdt := l_topline_rec.sdt;
15248 END IF;
15249
15250 IF l_topline_rec.edt >= l_top_edt
15251 THEN
15252 l_hdr_edt := l_topline_rec.edt;
15253 ELSE
15254 l_hdr_edt := l_top_edt;
15255 END IF;
15256
15257 l_hdr_flag := 'T';
15258 END IF;
15259 ELSE
15260 l_hdr_flag := 'T';
15261 l_hdr_sdt := l_top_sdt;
15262 l_hdr_edt := l_top_edt;
15263 END IF;
15264
15265 CLOSE l_topline_dates;
15266
15267 IF l_hdr_flag = 'T'
15268 THEN
15269 l_sts_flag := 'Y';
15270
15271 IF fnd_log.level_statement >=
15272 fnd_log.g_current_runtime_level
15273 THEN
15274 fnd_log.STRING (fnd_log.level_statement,
15275 g_module_current
15276 || '.UPDATE_CONTRACT_IDC',
15277 'Header start date = '
15278 || l_hdr_sdt
15279 || ',End date = '
15280 || l_hdr_edt
15281 || ',status = '
15282 || l_sts_flag
15283 );
15284 END IF;
15285
15286 update_hdr_dates
15287 (p_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
15288 p_new_sdt => l_hdr_sdt,
15289 p_new_edt => l_hdr_edt,
15290 p_sts_flag => l_sts_flag,
15291 x_status => l_return_status,
15292 x_msg_count => x_msg_count,
15293 x_msg_data => x_msg_data
15294 );
15295
15296 IF (fnd_log.level_event >=
15297 fnd_log.g_current_runtime_level
15298 )
15299 THEN
15300 fnd_log.STRING
15301 (fnd_log.level_event,
15302 g_module_current
15303 || '.UPDATE_CONTRACT_IDC',
15304 'Update_hdr_dates(Return status = '
15305 || l_return_status
15306 || ')'
15307 );
15308 END IF;
15309
15310 IF NOT l_return_status = okc_api.g_ret_sts_success
15311 THEN
15312 RAISE g_exception_halt_validation;
15313 END IF;
15314 END IF; --hdrflag
15315
15316 l_sts_flag := 'Y';
15317
15318 IF fnd_log.level_statement >=
15319 fnd_log.g_current_runtime_level
15320 THEN
15321 fnd_log.STRING (fnd_log.level_statement,
15322 g_module_current
15323 || '.UPDATE_CONTRACT_IDC',
15324 'Top line start date = '
15325 || l_top_sdt
15326 || ',End date = '
15327 || l_top_edt
15328 || ',status = '
15329 || l_sts_flag
15330 );
15331 END IF;
15332
15333 update_line_dates
15334 (p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
15335 p_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
15336 p_new_sdt => l_top_sdt,
15337 p_new_edt => l_top_edt,
15338 p_sts_flag => l_sts_flag,
15339 p_warranty_flag => 'W',
15340 x_status => l_return_status,
15341 x_msg_count => x_msg_count,
15342 x_msg_data => x_msg_data
15343 );
15344
15345 IF (fnd_log.level_event >=
15346 fnd_log.g_current_runtime_level
15347 )
15348 THEN
15349 fnd_log.STRING
15350 (fnd_log.level_event,
15351 g_module_current
15352 || '.UPDATE_CONTRACT_IDC',
15353 'Update_Line_dates(Return status = '
15354 || l_return_status
15355 || ')'
15356 );
15357 END IF;
15358
15359 IF NOT l_return_status = okc_api.g_ret_sts_success
15360 THEN
15361 RAISE g_exception_halt_validation;
15362 END IF;
15363
15364 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_line_id);
15365
15366 FETCH l_serv_csr
15367 INTO line_name, line_desc;
15368
15369 CLOSE l_serv_csr;
15370
15371 IF fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE') =
15372 'DISPLAY_NAME'
15373 THEN
15374 l_desc := line_name;
15375 ELSE
15376 l_desc := line_desc;
15377 END IF;
15378
15379 l_invoice_text :=
15380 l_desc || ':' || to_char(l_top_sdt,'DD-MON-YYYY')
15381 || ':' || to_char(l_top_edt,'DD-MON-YYYY');
15382
15383 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).service_line_id
15384 );
15385
15386 FETCH get_oks_line_dtls
15387 INTO l_id, l_obj_version_num;
15388
15389 CLOSE get_oks_line_dtls;
15390
15391 l_klnv_tbl_in (1).ID := l_id;
15392 l_klnv_tbl_in (1).invoice_text := l_invoice_text;
15393 l_klnv_tbl_in (1).object_version_number :=
15394 l_obj_version_num;
15395 oks_contract_line_pub.update_line
15396 (p_api_version => l_api_version,
15397 p_init_msg_list => l_init_msg_list,
15398 x_return_status => l_return_status,
15399 x_msg_count => x_msg_count,
15400 x_msg_data => x_msg_data,
15401 p_klnv_tbl => l_klnv_tbl_in,
15402 x_klnv_tbl => l_klnv_tbl_out,
15403 p_validate_yn => 'N'
15404 );
15405
15406 IF (fnd_log.level_event >=
15407 fnd_log.g_current_runtime_level
15408 )
15409 THEN
15410 fnd_log.STRING
15411 (fnd_log.level_event,
15412 g_module_current || '.UPDATE_CONTRACT_IDC',
15413 'oks_contract_line_pub.update_line(Return status = '
15414 || l_return_status
15415 || ')'
15416 );
15417 END IF;
15418
15419 IF NOT l_return_status = 'S'
15420 THEN
15421 okc_api.set_message (g_app_name,
15422 g_required_value,
15423 g_col_name_token,
15424 'OKS Contract COV LINE'
15425 );
15426 RAISE g_exception_halt_validation;
15427 END IF;
15428
15429 --mmadhavi end bug 3761489
15430 oks_coverages_pub.update_cov_eff
15431 (p_api_version => 1.0,
15432 p_init_msg_list => 'T',
15433 x_return_status => l_return_status,
15434 x_msg_count => x_msg_count,
15435 x_msg_data => x_msg_data,
15436 p_service_line_id => p_kdtl_tbl (l_ctr).service_line_id,
15437 p_new_start_date => l_top_sdt,
15438 p_new_end_date => l_top_edt
15439 );
15440
15441 IF (fnd_log.level_event >=
15442 fnd_log.g_current_runtime_level
15443 )
15444 THEN
15445 fnd_log.STRING
15446 (fnd_log.level_event,
15447 g_module_current || '.UPDATE_CONTRACT_IDC',
15448 'oks_coverages_pub.update_cov_eff(Return status = '
15449 || l_return_status
15450 || ')'
15451 );
15452 END IF;
15453
15454 IF NOT l_return_status = okc_api.g_ret_sts_success
15455 THEN
15456 RAISE g_exception_halt_validation;
15457 END IF;
15458
15459 oks_pm_programs_pvt.adjust_pm_program_schedule
15460 (p_api_version => 1.0,
15461 p_init_msg_list => 'F',
15462 p_contract_line_id => p_kdtl_tbl (l_ctr).service_line_id,
15463 p_new_start_date => l_top_sdt,
15464 p_new_end_date => l_top_edt,
15465 x_return_status => l_return_status,
15466 x_msg_count => x_msg_count,
15467 x_msg_data => x_msg_data
15468 );
15469
15470 IF (fnd_log.level_event >=
15471 fnd_log.g_current_runtime_level
15472 )
15473 THEN
15474 fnd_log.STRING
15475 (fnd_log.level_event,
15476 g_module_current || '.UPDATE_CONTRACT_IDC',
15477 'oks_pm_programs_pvt.ADJUST_PM_PROGRAM_SCHEDULE(Return status = '
15478 || l_return_status
15479 || ')'
15480 );
15481 END IF;
15482
15483 IF NOT l_return_status = okc_api.g_ret_sts_success
15484 THEN
15485 RAISE g_exception_halt_validation;
15486 END IF;
15487 END IF; --topflag
15488
15489 IF fnd_log.level_statement >=
15490 fnd_log.g_current_runtime_level
15491 THEN
15492 fnd_log.STRING (fnd_log.level_statement,
15493 g_module_current
15494 || '.UPDATE_CONTRACT_IDC',
15495 'sub line start date = '
15496 || l_sub_sdt
15497 || ',End date'
15498 || l_sub_edt
15499 );
15500 END IF;
15501
15502 update_line_dates
15503 (p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
15504 p_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
15505 p_new_sdt => l_sub_sdt,
15506 p_new_edt => l_sub_edt,
15507 p_sts_flag => 'Y',
15508 p_warranty_flag => 'W',
15509 x_status => l_return_status,
15510 x_msg_count => x_msg_count,
15511 x_msg_data => x_msg_data
15512 );
15513
15514 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15515 )
15516 THEN
15517 fnd_log.STRING (fnd_log.level_event,
15518 g_module_current
15519 || '.UPDATE_CONTRACT_IDC',
15520 'Update_line_dates(Return status = '
15521 || l_return_status
15522 || ')'
15523 );
15524 END IF;
15525
15526 IF NOT l_return_status = okc_api.g_ret_sts_success
15527 THEN
15528 RAISE g_exception_halt_validation;
15529 END IF;
15530
15531 --mmadhavi start bug 3761489
15532 l_prod_item_id := p_kdtl_tbl (l_ctr).prod_inventory_item;
15533
15534 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
15535
15536 FETCH get_oks_line_dtls
15537 INTO l_id, l_obj_version_num;
15538
15539 CLOSE get_oks_line_dtls;
15540
15541 l_quantity := p_kdtl_tbl (l_ctr).old_cp_quantity;
15542 l_invoice_text :=
15543 getformattedinvoicetext (l_prod_item_id,
15544 l_sub_sdt,
15545 l_sub_edt,
15546 line_desc,
15547 l_quantity
15548 );
15549 l_klnv_tbl_in (1).ID := l_id;
15550 l_klnv_tbl_in (1).invoice_text := l_invoice_text;
15551 l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
15552 oks_contract_line_pub.update_line
15553 (p_api_version => l_api_version,
15554 p_init_msg_list => l_init_msg_list,
15555 x_return_status => l_return_status,
15556 x_msg_count => x_msg_count,
15557 x_msg_data => x_msg_data,
15558 p_klnv_tbl => l_klnv_tbl_in,
15559 x_klnv_tbl => l_klnv_tbl_out,
15560 p_validate_yn => 'N'
15561 );
15562
15563 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15564 )
15565 THEN
15566 fnd_log.STRING
15567 (fnd_log.level_event,
15568 g_module_current || '.UPDATE_CONTRACT_IDC',
15569 'oks_contract_line_pub.update_line(Return status = '
15570 || l_return_status
15571 || ')'
15572 );
15573 END IF;
15574
15575 IF NOT l_return_status = 'S'
15576 THEN
15577 okc_api.set_message (g_app_name,
15578 g_required_value,
15579 g_col_name_token,
15580 'OKS Contract COV LINE'
15581 );
15582 RAISE g_exception_halt_validation;
15583 END IF;
15584
15585 -- mmadhavi end bug 3761489
15586 OPEN l_lndates_csr (p_kdtl_tbl (l_ctr).service_line_id);
15587
15588 FETCH l_lndates_csr
15589 INTO l_lndates_rec;
15590
15591 CLOSE l_lndates_csr;
15592
15593 OPEN l_hdrdates_csr (p_kdtl_tbl (l_ctr).hdr_id);
15594
15595 FETCH l_hdrdates_csr
15596 INTO l_hdrdates_rec;
15597
15598 CLOSE l_hdrdates_csr;
15599
15600 l_sts_code := NULL;
15601 get_sts_code (l_hdrdates_rec.sts_code,
15602 NULL,
15603 l_ste_code,
15604 l_sts_code
15605 );
15606 l_inst_dtls_tbl (1).new_contract_id :=
15607 p_kdtl_tbl (l_ctr).hdr_id;
15608 l_inst_dtls_tbl (1).new_contact_start_date :=
15609 l_hdrdates_rec.start_date;
15610 l_inst_dtls_tbl (1).new_contract_end_date :=
15611 l_hdrdates_rec.end_date;
15612 l_inst_dtls_tbl (1).new_service_line_id :=
15613 p_kdtl_tbl (l_ctr).service_line_id;
15614 l_inst_dtls_tbl (1).new_service_start_date :=
15615 l_lndates_rec.start_date;
15616 l_inst_dtls_tbl (1).new_service_end_date :=
15617 l_lndates_rec.end_date;
15618 l_inst_dtls_tbl (1).new_subline_id :=
15619 p_kdtl_tbl (l_ctr).object_line_id;
15620 l_inst_dtls_tbl (1).new_subline_start_date :=
15621 NVL (l_sub_sdt, p_kdtl_tbl (l_ctr).prod_sdt);
15622 l_inst_dtls_tbl (1).new_subline_end_date :=
15623 NVL (l_sub_edt, p_kdtl_tbl (l_ctr).prod_edt);
15624 l_inst_dtls_tbl (1).subline_date_terminated := NULL;
15625 l_inst_dtls_tbl (1).new_k_status := l_sts_code;
15626 l_inst_dtls_tbl (1).new_customer :=
15627 p_kdtl_tbl (l_ctr).cust_account;
15628 END IF; --SR logged
15629 ELSE
15630 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
15631 THEN
15632 fnd_log.STRING (fnd_log.level_statement,
15633 g_module_current || '.UPDATE_CONTRACT_IDC',
15634 'coverage attribute not set'
15635 );
15636 END IF;
15637 END IF; --coverage attribute
15638
15639 IF l_inst_dtls_tbl.COUNT <> 0
15640 THEN
15641 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
15642 THEN
15643 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
15644
15645 FETCH l_refnum_csr
15646 INTO l_ref_num;
15647
15648 CLOSE l_refnum_csr;
15649
15650 l_parameters :=
15651 ' Old CP :'
15652 || p_kdtl_tbl (l_ctr).old_cp_id
15653 || ','
15654 || 'Item Id:'
15655 || p_kdtl_tbl (l_ctr).prod_inventory_item
15656 || ','
15657 || 'Old Quantity:'
15658 || p_kdtl_tbl (l_ctr).current_cp_quantity
15659 || ','
15660 || 'Transaction type :'
15661 || 'IDC'
15662 || ','
15663 || ' Transaction date :'
15664 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
15665 || ','
15666 || 'Installation Date:'
15667 || trunc(p_kdtl_tbl (l_ctr).installation_date);
15668 --oks_instance_history
15669 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
15670 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
15671 l_insthist_rec.transaction_type := 'IDC';
15672 l_insthist_rec.transaction_date :=
15673 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15674 l_insthist_rec.reference_number := l_ref_num;
15675 l_insthist_rec.PARAMETERS := l_parameters;
15676 oks_ins_pvt.insert_row (p_api_version => 1.0,
15677 p_init_msg_list => 'T',
15678 x_return_status => l_return_status,
15679 x_msg_count => x_msg_count,
15680 x_msg_data => x_msg_data,
15681 p_insv_rec => l_insthist_rec,
15682 x_insv_rec => x_insthist_rec
15683 );
15684
15685 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15686 )
15687 THEN
15688 fnd_log.STRING
15689 (fnd_log.level_event,
15690 g_module_current || '.UPDATE_CONTRACT_IDC',
15691 'oks_ins_pvt.insert_row(Return status = '
15692 || l_return_status
15693 || ')'
15694 );
15695 END IF;
15696
15697 x_return_status := l_return_status;
15698
15699 IF NOT l_return_status = okc_api.g_ret_sts_success
15700 THEN
15701 x_return_status := l_return_status;
15702 RAISE g_exception_halt_validation;
15703 END IF;
15704
15705 l_instparent_id := x_insthist_rec.ID;
15706 END IF;
15707
15708 l_inst_dtls_tbl (1).ins_id := l_instparent_id;
15709 --oks_inst_history_details
15710 oks_ihd_pvt.insert_row (p_api_version => 1.0,
15711 p_init_msg_list => 'T',
15712 x_return_status => l_return_status,
15713 x_msg_count => x_msg_count,
15714 x_msg_data => x_msg_data,
15715 p_ihdv_tbl => l_inst_dtls_tbl,
15716 x_ihdv_tbl => x_inst_dtls_tbl
15717 );
15718
15719 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15720 THEN
15721 fnd_log.STRING
15722 (fnd_log.level_event,
15723 g_module_current || '.UPDATE_CONTRACT_IDC',
15724 'oks_ihd_pvt.insert_row(Return status = '
15725 || l_return_status
15726 || ')'
15727 );
15728 END IF;
15729
15730 x_return_status := l_return_status;
15731
15732 IF NOT l_return_status = okc_api.g_ret_sts_success
15733 THEN
15734 x_return_status := l_return_status;
15735 RAISE g_exception_halt_validation;
15736 END IF;
15737 END IF;
15738
15739 launch_workflow
15740 ( 'INSTALL BASE ACTIVITY : INSTALLTION DATE CHANGE '
15741 || fnd_global.local_chr (10)
15742 || 'Contract Number : '
15743 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
15744 || fnd_global.local_chr (10)
15745 || 'Inatallation date changed to : '
15746 || trunc(p_kdtl_tbl (l_ctr).installation_date)
15747 );
15748 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
15749 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
15750 l_hdr_sdt := NULL;
15751 l_hdr_edt := NULL;
15752 l_top_sdt := NULL;
15753 l_top_edt := NULL;
15754 l_sub_sdt := NULL;
15755 l_sub_edt := NULL;
15756 END LOOP;
15757 END IF;
15758 EXCEPTION
15759 WHEN g_exception_halt_validation
15760 THEN
15761 x_return_status := l_return_status;
15762 NULL;
15763 WHEN OTHERS
15764 THEN
15765 x_return_status := okc_api.g_ret_sts_unexp_error;
15766 okc_api.set_message (g_app_name,
15767 g_unexpected_error,
15768 g_sqlcode_token,
15769 SQLCODE,
15770 g_sqlerrm_token,
15771 SQLERRM
15772 );
15773 END;
15774
15775 PROCEDURE create_contract_ibupdate (
15776 p_kdtl_tbl IN contract_tbl,
15777 x_return_status OUT NOCOPY VARCHAR2,
15778 x_msg_count OUT NOCOPY NUMBER,
15779 x_msg_data OUT NOCOPY VARCHAR2
15780 )
15781 IS
15782 CURSOR l_cust_csr (p_inventory_item_id NUMBER)
15783 IS
15784 SELECT mtl.NAME, mtl.description
15785 FROM okx_system_items_v mtl
15786 WHERE mtl.inventory_item_id = p_inventory_item_id
15787 AND mtl.organization_id = okc_context.get_okc_organization_id;
15788
15789 CURSOR l_bill_csr (p_cle_id NUMBER)
15790 IS
15791 SELECT SUM (amount)
15792 FROM oks_bill_sub_lines_v
15793 WHERE cle_id = p_cle_id;
15794
15795 /* Added for Bug#14325727 */
15796 CURSOR l_serv_csr (p_serv_id NUMBER)
15797 IS
15798 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
15799 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
15800 WHERE b.inventory_item_id = t.inventory_item_id
15801 AND b.organization_id = t.organization_id
15802 AND t.LANGUAGE = USERENV ('LANG')
15803 AND b.inventory_item_id = p_serv_id
15804 AND ROWNUM < 2;
15805
15806 /*Commented for Bug#14325727 */
15807 /*
15808 CURSOR l_serv_csr (p_serv_id NUMBER)
15809 IS
15810 SELECT b.concatenated_segments description
15811 FROM mtl_system_items_b_kfv b
15812 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
15813 */
15814 CURSOR l_refnum_csr (p_cp_id NUMBER)
15815 IS
15816 SELECT instance_number
15817 FROM csi_item_instances
15818 WHERE instance_id = p_cp_id;
15819
15820 l_ref_num VARCHAR2 (30);
15821 l_parameters VARCHAR2 (2000);
15822 l_renewal_id NUMBER;
15823 --Contract Line Table
15824 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
15825 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
15826 --SalesCredit
15827 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
15828 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
15829 l_line_rec k_line_service_rec_type;
15830 l_covd_rec k_line_covered_level_rec_type;
15831 -- l_kdtl_tbl OKS_EXTWAR_UTIL_PVT.Contract_tbl_type;
15832 l_available_yn VARCHAR2 (1);
15833 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
15834 l_chrid NUMBER := NULL;
15835 l_lineid NUMBER := NULL;
15836 l_cust_rec l_cust_csr%ROWTYPE;
15837 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
15838 l_api_version CONSTANT NUMBER := 1.0;
15839 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
15840 l_ste_code VARCHAR2 (40);
15841 l_sts_code VARCHAR2 (40);
15842 l_billed_amount NUMBER;
15843 l_update_top_line VARCHAR2 (1);
15844 l_msg_count NUMBER;
15845 l_msg_data VARCHAR2 (2000);
15846 l_covlvl_id NUMBER;
15847 l_amount NUMBER;
15848 l_subline_amount NUMBER;
15849 l_srvc_stdt DATE;
15850 l_bill_schd_yn VARCHAR2 (1);
15851 l_dur NUMBER;
15852 l_time VARCHAR2 (25);
15853 l_sll_tbl oks_bill_sch.streamlvl_tbl;
15854 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
15855 l_strmlvl_id NUMBER := NULL;
15856 l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
15857 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
15858 l_ctr NUMBER;
15859 l_temp VARCHAR2 (2000);
15860 l_suppress_credit VARCHAR2 (10);
15861
15862 CURSOR l_amount_csr (p_cle_id NUMBER)
15863 IS
15864 SELECT price_negotiated
15865 FROM okc_k_lines_b
15866 WHERE ID = p_cle_id;
15867
15868 l_cov_tbl oks_bill_rec_pub.covered_tbl;
15869 l_ptr NUMBER := 0;
15870 l_input_details oks_qp_pkg.input_details;
15871 l_output_details oks_qp_pkg.price_details;
15872 l_modif_details qp_preq_grp.line_detail_tbl_type;
15873 l_pb_details oks_qp_pkg.g_price_break_tbl_type;
15874 l_warranty_flag VARCHAR2 (2);
15875 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
15876 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
15877 l_instparent_id NUMBER;
15878 l_old_cp_id NUMBER;
15879 l_insthist_rec oks_ins_pvt.insv_rec_type;
15880 x_insthist_rec oks_ins_pvt.insv_rec_type;
15881 l_target_chr_id NUMBER;
15882 l_opr_instance_id NUMBER;
15883 l_renewal_opr_instance_id NUMBER;
15884 l_update_id NUMBER;
15885 l_source_line_id NUMBER;
15886 l_create_oper_instance VARCHAR2 (1);
15887 BEGIN
15888 x_return_status := okc_api.g_ret_sts_success;
15889 l_old_cp_id := 0;
15890 l_target_chr_id := 0;
15891
15892 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15893 THEN
15894 fnd_log.STRING (fnd_log.level_event,
15895 g_module_current || '.CREATE_CONTRACT_IBUPDATE.',
15896 'count = ' || p_kdtl_tbl.COUNT || ')'
15897 );
15898 END IF;
15899
15900 IF p_kdtl_tbl.COUNT > 0
15901 THEN
15902 l_ctr := p_kdtl_tbl.FIRST;
15903
15904 LOOP
15905 l_ptr := 1;
15906 l_inst_dtls_tbl.DELETE;
15907 okc_context.set_okc_org_context
15908 (p_kdtl_tbl (l_ctr).hdr_org_id,
15909 p_kdtl_tbl (l_ctr).organization_id
15910 );
15911
15912 -- If status = 'ENTERED' then just update the qty and reprice and update billing schedule.
15913 -- else check if line is already billed.
15914 -- If partially billed or unbilled update the qty and reprice and update billing schedule.
15915 -- If line fully billed Then
15916 -- update qty of subline.
15917 -- create new top line and subline with updated qty and create one time billing schedule.
15918 -- the amount will be the diff.
15919
15920 --If the qty decrement is due to return for repair ignore, only manual increments to the qty from IB is honored.
15921 IF p_kdtl_tbl (l_ctr).return_reason_code = 'REGULAR'
15922 THEN
15923 IF p_kdtl_tbl (l_ctr).new_quantity >
15924 p_kdtl_tbl (l_ctr).old_cp_quantity
15925 THEN
15926 get_sts_code (NULL,
15927 p_kdtl_tbl (l_ctr).prod_sts_code,
15928 l_ste_code,
15929 l_sts_code
15930 );
15931
15932 IF fnd_log.level_statement >=
15933 fnd_log.g_current_runtime_level
15934 THEN
15935 fnd_log.STRING (fnd_log.level_statement,
15936 g_module_current
15937 || '.CREATE_CONTRACT_IBUPDATE',
15938 'lse_id= ' || p_kdtl_tbl (l_ctr).lse_id
15939 );
15940 END IF;
15941
15942 --errorout_n('in update lse_id'||p_kdtl_tbl(l_ctr).lse_id);
15943 -- For Warranty lines instance qty is updated, no repricing done.
15944 IF p_kdtl_tbl (l_ctr).lse_id = 18
15945 THEN --Warranty
15946 UPDATE okc_k_items
15947 SET number_of_items = p_kdtl_tbl (l_ctr).new_quantity
15948 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
15949
15950 l_inst_dtls_tbl (l_ptr).transaction_date :=
15951 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15952 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
15953 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
15954 p_kdtl_tbl (l_ctr).service_amount;
15955 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
15956 p_kdtl_tbl (l_ctr).old_cp_quantity;
15957 l_inst_dtls_tbl (l_ptr).old_contract_id :=
15958 p_kdtl_tbl (l_ctr).hdr_id;
15959 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
15960 p_kdtl_tbl (l_ctr).hdr_sdt;
15961 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
15962 p_kdtl_tbl (l_ctr).hdr_edt;
15963 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
15964 p_kdtl_tbl (l_ctr).service_line_id;
15965 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
15966 p_kdtl_tbl (l_ctr).service_sdt;
15967 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
15968 p_kdtl_tbl (l_ctr).service_edt;
15969 l_inst_dtls_tbl (l_ptr).old_subline_id :=
15970 p_kdtl_tbl (l_ctr).object_line_id;
15971 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
15972 p_kdtl_tbl (l_ctr).prod_sdt;
15973 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
15974 p_kdtl_tbl (l_ctr).prod_edt;
15975 l_inst_dtls_tbl (l_ptr).old_customer :=
15976 p_kdtl_tbl (l_ctr).cust_account;
15977 l_inst_dtls_tbl (l_ptr).old_k_status :=
15978 p_kdtl_tbl (l_ctr).hdr_sts;
15979 l_inst_dtls_tbl (l_ptr).instance_id_new :=
15980 p_kdtl_tbl (l_ctr).new_cp_id;
15981 l_inst_dtls_tbl (l_ptr).instance_amt_new := NULL;
15982 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
15983 p_kdtl_tbl (l_ctr).new_quantity;
15984 l_inst_dtls_tbl (l_ptr).new_contract_id :=
15985 p_kdtl_tbl (l_ctr).hdr_id;
15986 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
15987 p_kdtl_tbl (l_ctr).hdr_sdt;
15988 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
15989 p_kdtl_tbl (l_ctr).hdr_edt;
15990 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
15991 p_kdtl_tbl (l_ctr).service_line_id;
15992 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
15993 p_kdtl_tbl (l_ctr).service_sdt;
15994 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
15995 p_kdtl_tbl (l_ctr).service_edt;
15996 l_inst_dtls_tbl (l_ptr).new_subline_id :=
15997 p_kdtl_tbl (l_ctr).object_line_id;
15998 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
15999 p_kdtl_tbl (l_ctr).prod_sdt;
16000 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16001 p_kdtl_tbl (l_ctr).prod_edt;
16002 l_inst_dtls_tbl (l_ptr).new_customer :=
16003 p_kdtl_tbl (l_ctr).cust_account;
16004 l_inst_dtls_tbl (l_ptr).new_k_status :=
16005 p_kdtl_tbl (l_ctr).hdr_sts;
16006 ELSE --lse_id = 18
16007 -- For service/ Ext.Warranty line types
16008 l_billed_amount := NULL;
16009
16010 OPEN l_bill_csr (p_kdtl_tbl (l_ctr).object_line_id);
16011
16012 FETCH l_bill_csr
16013 INTO l_billed_amount;
16014
16015 CLOSE l_bill_csr;
16016
16017 IF fnd_log.level_statement >=
16018 fnd_log.g_current_runtime_level
16019 THEN
16020 fnd_log.STRING (fnd_log.level_statement,
16021 g_module_current
16022 || '.CREATE_CONTRACT_IBUPDATE',
16023 'Billed amount = '
16024 || l_billed_amount
16025 || ',Service amount = '
16026 || p_kdtl_tbl (l_ctr).service_amount
16027 );
16028 END IF;
16029
16030 --If amount billed is null, update instance qty and reprice.
16031 IF l_billed_amount IS NULL
16032 THEN
16033 UPDATE okc_k_items
16034 SET number_of_items =
16035 p_kdtl_tbl (l_ctr).new_quantity
16036 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
16037
16038 --calling reprice
16039 l_input_details.line_id :=
16040 p_kdtl_tbl (l_ctr).service_line_id;
16041 l_input_details.subline_id :=
16042 p_kdtl_tbl (l_ctr).object_line_id;
16043 l_input_details.intent := 'SP';
16044 oks_qp_int_pvt.compute_price
16045 (p_api_version => 1.0,
16046 p_init_msg_list => 'T',
16047 p_detail_rec => l_input_details,
16048 x_price_details => l_output_details,
16049 x_modifier_details => l_modif_details,
16050 x_price_break_details => l_pb_details,
16051 x_return_status => l_return_status,
16052 x_msg_count => x_msg_count,
16053 x_msg_data => x_msg_data
16054 );
16055
16056 IF (fnd_log.level_event >=
16057 fnd_log.g_current_runtime_level
16058 )
16059 THEN
16060 fnd_log.STRING
16061 (fnd_log.level_event,
16062 g_module_current || '.CREATE_CONTRACT_IBUPDATE',
16063 'oks_qp_int_pvt.compute_price(Return status = '
16064 || l_return_status
16065 || ',Repriced amount = '
16066 || l_amount
16067 || ')'
16068 );
16069 END IF;
16070
16071 IF l_return_status <> okc_api.g_ret_sts_success
16072 THEN
16073 RAISE g_exception_halt_validation;
16074 END IF;
16075
16076 ---update billing schedule
16077 oks_bill_sch.create_bill_sch_cp
16078 (p_top_line_id => p_kdtl_tbl (l_ctr).service_line_id,
16079 p_cp_line_id => p_kdtl_tbl (l_ctr).object_line_id,
16080 p_cp_new => 'N',
16081 x_return_status => l_return_status,
16082 x_msg_count => x_msg_count,
16083 x_msg_data => x_msg_data
16084 );
16085
16086 IF (fnd_log.level_event >=
16087 fnd_log.g_current_runtime_level
16088 )
16089 THEN
16090 fnd_log.STRING
16091 (fnd_log.level_event,
16092 g_module_current || '.CREATE_CONTRACT_IBUPDATE',
16093 'Oks_bill_sch.Create_Bill_Sch_CP(Return status = '
16094 || l_return_status
16095 || ')'
16096 );
16097 END IF;
16098
16099 IF l_return_status <> okc_api.g_ret_sts_success
16100 THEN
16101 okc_api.set_message (g_app_name,
16102 g_required_value,
16103 g_col_name_token,
16104 'Sched Billing Rule (LINE)'
16105 );
16106 RAISE g_exception_halt_validation;
16107 END IF;
16108
16109 l_subline_amount := NULL;
16110
16111 OPEN l_amount_csr (p_kdtl_tbl (l_ctr).object_line_id);
16112
16113 FETCH l_amount_csr
16114 INTO l_subline_amount;
16115
16116 CLOSE l_amount_csr;
16117
16118 UPDATE okc_k_lines_b
16119 SET price_negotiated =
16120 (SELECT NVL (SUM (NVL (price_negotiated, 0)),0)
16121 FROM okc_k_lines_b
16122 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16123 AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16124 and date_cancelled is null)
16125 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16126
16127 UPDATE oks_k_lines_b
16128 SET tax_amount =
16129 (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16130 FROM oks_k_lines_b
16131 WHERE cle_id IN ( SELECT id
16132 FROM okc_k_lines_b
16133 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16134 AND lse_id IN (9,25)
16135 AND date_cancelled IS NULL ))
16136 WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16137
16138 UPDATE okc_k_headers_b
16139 SET estimated_amount =
16140 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0 )
16141 FROM okc_k_lines_b
16142 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16143 AND lse_id IN (1, 19)
16144 AND date_cancelled IS NULL )
16145 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16146
16147
16148 UPDATE oks_k_headers_b
16149 SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16150 FROM oks_k_lines_b
16151 WHERE cle_id IN (SELECT id
16152 FROM okc_k_lineS_b
16153 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16154 AND date_cancelled IS NULL
16155 AND lse_id IN (1,19)))
16156 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16157
16158 l_inst_dtls_tbl (l_ptr).transaction_date :=
16159 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16160 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16161 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16162 p_kdtl_tbl (l_ctr).service_amount;
16163 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16164 p_kdtl_tbl (l_ctr).old_cp_quantity;
16165 l_inst_dtls_tbl (l_ptr).old_contract_id :=
16166 p_kdtl_tbl (l_ctr).hdr_id;
16167 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16168 p_kdtl_tbl (l_ctr).hdr_sdt;
16169 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16170 p_kdtl_tbl (l_ctr).hdr_edt;
16171 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16172 p_kdtl_tbl (l_ctr).service_line_id;
16173 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16174 p_kdtl_tbl (l_ctr).service_sdt;
16175 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16176 p_kdtl_tbl (l_ctr).service_edt;
16177 l_inst_dtls_tbl (l_ptr).old_subline_id :=
16178 p_kdtl_tbl (l_ctr).object_line_id;
16179 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16180 p_kdtl_tbl (l_ctr).prod_sdt;
16181 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16182 p_kdtl_tbl (l_ctr).prod_edt;
16183 l_inst_dtls_tbl (l_ptr).old_customer :=
16184 p_kdtl_tbl (l_ctr).cust_account;
16185 l_inst_dtls_tbl (l_ptr).old_k_status :=
16186 p_kdtl_tbl (l_ctr).hdr_sts;
16187 l_inst_dtls_tbl (l_ptr).instance_id_new :=
16188 p_kdtl_tbl (l_ctr).old_cp_id;
16189 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16190 l_subline_amount;
16191 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16192 p_kdtl_tbl (l_ctr).new_quantity;
16193 l_inst_dtls_tbl (l_ptr).new_contract_id :=
16194 p_kdtl_tbl (l_ctr).hdr_id;
16195 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16196 p_kdtl_tbl (l_ctr).hdr_sdt;
16197 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16198 p_kdtl_tbl (l_ctr).hdr_edt;
16199 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16200 p_kdtl_tbl (l_ctr).service_line_id;
16201 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16202 p_kdtl_tbl (l_ctr).service_sdt;
16203 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16204 p_kdtl_tbl (l_ctr).service_edt;
16205 l_inst_dtls_tbl (l_ptr).new_subline_id :=
16206 p_kdtl_tbl (l_ctr).object_line_id;
16207 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16208 p_kdtl_tbl (l_ctr).prod_sdt;
16209 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16210 p_kdtl_tbl (l_ctr).prod_edt;
16211 l_inst_dtls_tbl (l_ptr).new_customer :=
16212 p_kdtl_tbl (l_ctr).cust_account;
16213 l_inst_dtls_tbl (l_ptr).new_k_status :=
16214 p_kdtl_tbl (l_ctr).hdr_sts;
16215 ELSE --billed_amount is not null
16216 --errorout_n('in update l_billed_amount2'||l_billed_amount);
16217 -- If line is fully billed , terminate the subline, issue credit and create a new subline with the updated qty
16218 IF l_billed_amount =
16219 p_kdtl_tbl (l_ctr).service_amount
16220 THEN
16221 -- Terminate the subline and create a New Subline with the update qty
16222 IF fnd_log.level_statement >=
16223 fnd_log.g_current_runtime_level
16224 THEN
16225 fnd_log.STRING (fnd_log.level_statement,
16226 g_module_current
16227 || '.CREATE_CONTRACT_IBUPDATE',
16228 'The Line is fully billed'
16229 );
16230 END IF;
16231
16232 get_sts_code (NULL,
16233 p_kdtl_tbl (l_ctr).hdr_sts,
16234 l_ste_code,
16235 l_sts_code
16236 );
16237
16238 IF l_ste_code = 'HOLD'
16239 THEN
16240 l_return_status := okc_api.g_ret_sts_error;
16241
16242 IF fnd_log.level_error >=
16243 fnd_log.g_current_runtime_level
16244 THEN
16245 fnd_log.STRING
16246 (fnd_log.level_error,
16247 g_module_current
16248 || '.CREATE_CONTRACT_IBUPDATE.ERROR',
16249 ' Contract in QA_HOLD status'
16250 );
16251 END IF;
16252
16253 okc_api.set_message
16254 (g_app_name,
16255 g_invalid_value,
16256 g_col_name_token,
16257 'Quantity Update not allowed. Contract '
16258 || p_kdtl_tbl (l_ctr).contract_number
16259 || ' is in QA_HOLD status'
16260 );
16261 RAISE g_exception_halt_validation;
16262 END IF;
16263
16264 ---to pass the term_cancel source.....
16265 oks_bill_rec_pub.pre_terminate_cp
16266 (p_calledfrom => -1,
16267 p_cle_id => p_kdtl_tbl
16268 (l_ctr).object_line_id,
16269 p_termination_date => TRUNC
16270 (p_kdtl_tbl
16271 (l_ctr).prod_sdt
16272 ),
16273 p_terminate_reason => 'UPD',
16274 p_override_amount => NULL,
16275 p_con_terminate_amount => NULL,
16276 p_termination_amount => NULL,
16277 p_suppress_credit => 'N',
16278 p_full_credit => 'Y',
16279 p_term_date_flag => 'N',
16280 p_term_cancel_source => 'IBUPDATE',
16281 x_return_status => l_return_status
16282 );
16283
16284 IF (fnd_log.level_event >=
16285 fnd_log.g_current_runtime_level
16286 )
16287 THEN
16288 fnd_log.STRING
16289 (fnd_log.level_event,
16290 g_module_current
16291 || '.CREATE_CONTRACT_IBUPDATE',
16292 ' oks_bill_rec_pub.Pre_terminate_cp(Retun status = '
16293 || l_return_status
16294 || ')'
16295 );
16296 END IF;
16297
16298 IF NOT l_return_status = okc_api.g_ret_sts_success
16299 THEN
16300 RAISE g_exception_halt_validation;
16301 END IF;
16302
16303 l_inst_dtls_tbl (l_ptr).transaction_date :=
16304 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16305 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16306 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16307 p_kdtl_tbl (l_ctr).service_amount;
16308 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16309 p_kdtl_tbl (l_ctr).old_cp_quantity;
16310 l_inst_dtls_tbl (l_ptr).old_contract_id :=
16311 p_kdtl_tbl (l_ctr).hdr_id;
16312 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16313 p_kdtl_tbl (l_ctr).hdr_sdt;
16314 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16315 p_kdtl_tbl (l_ctr).hdr_edt;
16316 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16317 p_kdtl_tbl (l_ctr).service_line_id;
16318 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16319 p_kdtl_tbl (l_ctr).service_sdt;
16320 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16321 p_kdtl_tbl (l_ctr).service_edt;
16322 l_inst_dtls_tbl (l_ptr).old_subline_id :=
16323 p_kdtl_tbl (l_ctr).object_line_id;
16324 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16325 p_kdtl_tbl (l_ctr).prod_sdt;
16326 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16327 p_kdtl_tbl (l_ctr).prod_edt;
16328 l_inst_dtls_tbl (l_ptr).old_customer :=
16329 p_kdtl_tbl (l_ctr).cust_account;
16330 l_inst_dtls_tbl (l_ptr).old_k_status :=
16331 p_kdtl_tbl (l_ctr).hdr_sts;
16332 l_inst_dtls_tbl (l_ptr).instance_id_new :=
16333 p_kdtl_tbl (l_ctr).old_cp_id;
16334 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16335 p_kdtl_tbl (l_ctr).service_amount;
16336 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16337 p_kdtl_tbl (l_ctr).old_cp_quantity;
16338 l_inst_dtls_tbl (l_ptr).new_contract_id :=
16339 p_kdtl_tbl (l_ctr).hdr_id;
16340 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16341 p_kdtl_tbl (l_ctr).hdr_sdt;
16342 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16343 p_kdtl_tbl (l_ctr).hdr_edt;
16344 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16345 p_kdtl_tbl (l_ctr).service_line_id;
16346 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16347 p_kdtl_tbl (l_ctr).service_sdt;
16348 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16349 p_kdtl_tbl (l_ctr).service_edt;
16350 l_inst_dtls_tbl (l_ptr).new_subline_id :=
16351 p_kdtl_tbl (l_ctr).object_line_id;
16352 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16353 p_kdtl_tbl (l_ctr).prod_sdt;
16354 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16355 p_kdtl_tbl (l_ctr).prod_edt;
16356 l_inst_dtls_tbl (l_ptr).new_customer :=
16357 p_kdtl_tbl (l_ctr).cust_account;
16358 l_inst_dtls_tbl (l_ptr).new_k_status :=
16359 p_kdtl_tbl (l_ctr).hdr_sts;
16360 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
16361 p_kdtl_tbl (l_ctr).prod_sdt;
16362 l_ptr := l_ptr + 1;
16363 l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
16364 l_covd_rec.attach_2_line_id :=
16365 p_kdtl_tbl (l_ctr).service_line_id;
16366 l_covd_rec.line_number := 1;
16367 l_covd_rec.customer_product_id :=
16368 p_kdtl_tbl (l_ctr).old_cp_id;
16369 l_covd_rec.product_start_date :=
16370 p_kdtl_tbl (l_ctr).prod_sdt;
16371 l_covd_rec.product_end_date :=
16372 p_kdtl_tbl (l_ctr).prod_edt;
16373 l_covd_rec.quantity :=
16374 p_kdtl_tbl (l_ctr).new_quantity;
16375
16376 IF p_kdtl_tbl (l_ctr).lse_id = 25
16377 THEN
16378 l_warranty_flag := 'E';
16379 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
16380 AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
16381 THEN
16382 l_warranty_flag := 'S';
16383 ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
16384 THEN
16385 l_warranty_flag := 'W';
16386 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
16387 AND p_kdtl_tbl (l_ctr).scs_code =
16388 'SUBSCRIPTION'
16389 THEN
16390 l_warranty_flag := 'SU';
16391 END IF;
16392
16393 l_covd_rec.warranty_flag := l_warranty_flag;
16394 l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
16395 l_covd_rec.currency_code :=
16396 p_kdtl_tbl (l_ctr).service_currency;
16397 l_covd_rec.product_sts_code :=
16398 p_kdtl_tbl (l_ctr).prod_sts_code;
16399
16400 OPEN l_serv_csr
16401 (p_kdtl_tbl (l_ctr).service_inventory_id
16402 );
16403
16404 FETCH l_serv_csr
16405 INTO l_covd_rec.attach_2_line_desc;
16406
16407 CLOSE l_serv_csr;
16408
16409 l_covd_rec.line_renewal_type :=
16410 p_kdtl_tbl (l_ctr).prod_line_renewal_type;
16411 l_covd_rec.list_price := 0;
16412 l_covd_rec.negotiated_amount := 0;
16413 l_covd_rec.prod_item_id :=
16414 p_kdtl_tbl (l_ctr).prod_inventory_item;
16415 l_covd_rec.price_uom :=
16416 p_kdtl_tbl (l_ctr).price_uom_code;
16417 l_covd_rec.toplvl_uom_code :=
16418 p_kdtl_tbl (l_ctr).toplvl_uom_code;
16419 --mchoudha added for bug#5233956
16420 l_covd_rec.toplvl_price_qty :=
16421 p_kdtl_tbl (l_ctr).toplvl_price_qty;
16422 oks_extwarprgm_pvt.create_k_covered_levels
16423 (p_k_covd_rec => l_covd_rec,
16424 p_price_attribs => l_price_attribs_in,
16425 p_caller => 'IB',
16426 x_order_error => l_temp,
16427 x_covlvl_id => l_covlvl_id,
16428 x_update_line => l_update_top_line,
16429 x_return_status => l_return_status,
16430 x_msg_count => x_msg_count,
16431 x_msg_data => x_msg_data
16432 );
16433
16434 --errorout_n('in update Create_K_Covered_Levels l_return_status'||l_return_status);
16435 IF (fnd_log.level_event >=
16436 fnd_log.g_current_runtime_level
16437 )
16438 THEN
16439 fnd_log.STRING
16440 (fnd_log.level_event,
16441 g_module_current
16442 || '.CREATE_CONTRACT_IBUPDATE',
16443 'oks_extwarprgm_pvt.create_k_covered_levels(Retun status = '
16444 || l_return_status
16445 || ')'
16446 );
16447 END IF;
16448
16449 IF NOT l_return_status = 'S'
16450 THEN
16451 RAISE g_exception_halt_validation;
16452 END IF;
16453
16454 l_create_oper_instance := 'N';
16455
16456 IF l_opr_instance_id IS NULL
16457 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
16458 THEN
16459 l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
16460 l_create_oper_instance := 'Y';
16461 END IF;
16462
16463 create_transaction_source
16464 (p_create_opr_inst => 'Y',
16465 p_source_code => 'IBUPDATE',
16466 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
16467 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
16468 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
16469 p_target_line_id => l_covlvl_id,
16470 x_oper_instance_id => l_opr_instance_id,
16471 x_return_status => l_return_status,
16472 x_msg_count => x_msg_count,
16473 x_msg_data => x_msg_data
16474 );
16475
16476 IF (fnd_log.level_event >=
16477 fnd_log.g_current_runtime_level
16478 )
16479 THEN
16480 fnd_log.STRING
16481 (fnd_log.level_event,
16482 g_module_current
16483 || '.CREATE_CONTRACT_IBUPDATE',
16484 'Create_transaction_source(Retun status = '
16485 || l_return_status
16486 || ')'
16487 );
16488 END IF;
16489
16490 IF NOT l_return_status = 'S'
16491 THEN
16492 RAISE g_exception_halt_validation;
16493 END IF;
16494
16495 IF l_renewal_opr_instance_id IS NULL
16496 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
16497 THEN
16498 l_create_oper_instance := 'Y';
16499 ELSE
16500 l_create_oper_instance := 'N';
16501 END IF;
16502
16503 create_source_links
16504 (p_create_opr_inst => l_create_oper_instance,
16505 p_source_code => 'IBUPDATE',
16506 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
16507 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
16508 p_target_line_id => l_covlvl_id,
16509 p_txn_date => p_kdtl_tbl (l_ctr).transaction_date,
16510 x_oper_instance_id => l_renewal_opr_instance_id,
16511 x_return_status => l_return_status,
16512 x_msg_count => x_msg_count,
16513 x_msg_data => x_msg_data
16514 );
16515
16516 IF NOT l_return_status = 'S'
16517 THEN
16518 RAISE g_exception_halt_validation;
16519 END IF;
16520
16521 IF (fnd_log.level_event >=
16522 fnd_log.g_current_runtime_level
16523 )
16524 THEN
16525 fnd_log.STRING
16526 (fnd_log.level_event,
16527 g_module_current
16528 || '.CREATE_CONTRACT_IBUPDATE',
16529 'Create_source_links(Retun status = '
16530 || l_return_status
16531 || ')'
16532 );
16533 END IF;
16534
16535 l_input_details.line_id :=
16536 p_kdtl_tbl (l_ctr).service_line_id;
16537 l_input_details.subline_id := l_covlvl_id;
16538 l_input_details.intent := 'SP';
16539 oks_qp_int_pvt.compute_price
16540 (p_api_version => 1.0,
16541 p_init_msg_list => 'T',
16542 p_detail_rec => l_input_details,
16543 x_price_details => l_output_details,
16544 x_modifier_details => l_modif_details,
16545 x_price_break_details => l_pb_details,
16546 x_return_status => l_return_status,
16547 x_msg_count => l_msg_count,
16548 x_msg_data => l_msg_data
16549 );
16550
16551 IF (fnd_log.level_event >=
16552 fnd_log.g_current_runtime_level
16553 )
16554 THEN
16555 fnd_log.STRING
16556 (fnd_log.level_event,
16557 g_module_current
16558 || '.CREATE_CONTRACT_IBUPDATE',
16559 'oks_qp_int_pvt.compute_price(Retun status = '
16560 || l_return_status
16561 || ',Repriced amount = '
16562 || l_output_details.serv_ext_amount
16563 || ')'
16564 );
16565 END IF;
16566
16567 IF l_return_status <> okc_api.g_ret_sts_success
16568 THEN
16569 RAISE g_exception_halt_validation;
16570 END IF;
16571
16572 l_subline_amount := NULL;
16573
16574 OPEN l_amount_csr (l_covlvl_id);
16575
16576 FETCH l_amount_csr
16577 INTO l_subline_amount;
16578
16579 CLOSE l_amount_csr;
16580
16581 IF fnd_log.level_statement >=
16582 fnd_log.g_current_runtime_level
16583 THEN
16584 fnd_log.STRING (fnd_log.level_statement,
16585 g_module_current
16586 || '.CREATE_CONTRACT_IBUPDATE',
16587 'Subline Amount = '
16588 || l_subline_amount
16589 );
16590 END IF;
16591
16592 UPDATE okc_k_lines_b
16593 SET price_negotiated =
16594 (SELECT NVL (SUM (NVL (price_negotiated,0 ) ), 0 )
16595 FROM okc_k_lines_b
16596 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16597 AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16598 AND date_cancelled is NULL)
16599 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16600
16601 UPDATE oks_k_lines_b
16602 SET tax_amount =
16603 (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16604 FROM oks_k_lines_b
16605 WHERE cle_id IN ( SELECT id
16606 FROM okc_k_lines_b
16607 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16608 AND lse_id IN (9,25)
16609 AND date_cancelled IS NULL ))
16610 WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16611
16612 UPDATE okc_k_headers_b
16613 SET estimated_amount =
16614 (SELECT NVL (SUM (NVL (price_negotiated,
16615 0
16616 )
16617 ),
16618 0
16619 )
16620 FROM okc_k_lines_b
16621 WHERE dnz_chr_id =
16622 p_kdtl_tbl (l_ctr).hdr_id
16623 AND lse_id IN (1, 19)
16624 AND date_cancelled IS NULL)
16625 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16626
16627 UPDATE oks_k_headers_b
16628 SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16629 FROM oks_k_lines_b
16630 WHERE cle_id IN (SELECT id
16631 FROM okc_k_lineS_b
16632 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16633 AND date_cancelled IS NULL
16634 AND lse_id IN (1,19)))
16635 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16636
16637 l_inst_dtls_tbl (l_ptr).transaction_date :=
16638 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16639 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16640 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16641 p_kdtl_tbl (l_ctr).service_amount;
16642 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16643 p_kdtl_tbl (l_ctr).old_cp_quantity;
16644 l_inst_dtls_tbl (l_ptr).old_contract_id :=
16645 p_kdtl_tbl (l_ctr).hdr_id;
16646 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16647 p_kdtl_tbl (l_ctr).hdr_sdt;
16648 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16649 p_kdtl_tbl (l_ctr).hdr_edt;
16650 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16651 p_kdtl_tbl (l_ctr).service_line_id;
16652 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16653 p_kdtl_tbl (l_ctr).service_sdt;
16654 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16655 p_kdtl_tbl (l_ctr).service_edt;
16656 l_inst_dtls_tbl (l_ptr).old_subline_id :=
16657 p_kdtl_tbl (l_ctr).object_line_id;
16658 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16659 p_kdtl_tbl (l_ctr).prod_sdt;
16660 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16661 p_kdtl_tbl (l_ctr).prod_edt;
16662 l_inst_dtls_tbl (l_ptr).old_customer :=
16663 p_kdtl_tbl (l_ctr).cust_account;
16664 l_inst_dtls_tbl (l_ptr).old_k_status :=
16665 p_kdtl_tbl (l_ctr).hdr_sts;
16666 l_inst_dtls_tbl (l_ptr).instance_id_new :=
16667 p_kdtl_tbl (l_ctr).old_cp_id;
16668 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16669 l_subline_amount;
16670 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16671 p_kdtl_tbl (l_ctr).new_quantity;
16672 l_inst_dtls_tbl (l_ptr).new_contract_id :=
16673 p_kdtl_tbl (l_ctr).hdr_id;
16674 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16675 p_kdtl_tbl (l_ctr).hdr_sdt;
16676 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16677 p_kdtl_tbl (l_ctr).hdr_edt;
16678 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16679 p_kdtl_tbl (l_ctr).service_line_id;
16680 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16681 p_kdtl_tbl (l_ctr).service_sdt;
16682 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16683 p_kdtl_tbl (l_ctr).service_edt;
16684 l_inst_dtls_tbl (l_ptr).new_subline_id :=
16685 l_covlvl_id;
16686 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16687 p_kdtl_tbl (l_ctr).prod_sdt;
16688 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16689 p_kdtl_tbl (l_ctr).prod_edt;
16690 l_inst_dtls_tbl (l_ptr).new_customer :=
16691 p_kdtl_tbl (l_ctr).cust_account;
16692 l_inst_dtls_tbl (l_ptr).new_k_status :=
16693 p_kdtl_tbl (l_ctr).hdr_sts;
16694
16695 --x_inst_dtls_tbl(l_ptr).subline_date_terminated := p_kdtl_tbl( l_ctr ).prod_sdt;
16696 ---update billing schedule
16697 IF check_lvlelements_exists
16698 (p_kdtl_tbl (l_ctr).service_line_id
16699 )
16700 THEN
16701 oks_bill_sch.create_bill_sch_cp
16702 (p_top_line_id => p_kdtl_tbl (l_ctr).service_line_id,
16703 p_cp_line_id => l_covlvl_id,
16704 p_cp_new => 'Y',
16705 x_return_status => l_return_status,
16706 x_msg_count => l_msg_count,
16707 x_msg_data => l_msg_data
16708 );
16709
16710 IF (fnd_log.level_event >=
16711 fnd_log.g_current_runtime_level
16712 )
16713 THEN
16714 fnd_log.STRING
16715 (fnd_log.level_event,
16716 g_module_current
16717 || '.CREATE_CONTRACT_IBUPDATE',
16718 'oks_bill_sch.create_bill_sch_cp(Retun status = '
16719 || l_return_status
16720 || ')'
16721 );
16722 END IF;
16723
16724 IF l_return_status <> okc_api.g_ret_sts_success
16725 THEN
16726 okc_api.set_message
16727 (g_app_name,
16728 g_required_value,
16729 g_col_name_token,
16730 'Sched Billing Rule (LINE)'
16731 );
16732 RAISE g_exception_halt_validation;
16733 END IF;
16734 END IF;
16735 ELSE --Billed amount is less than service amount
16736 UPDATE okc_k_items
16737 SET number_of_items =
16738 p_kdtl_tbl (l_ctr).new_quantity
16739 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
16740
16741 l_input_details.line_id :=
16742 p_kdtl_tbl (l_ctr).service_line_id;
16743 l_input_details.subline_id :=
16744 p_kdtl_tbl (l_ctr).object_line_id;
16745 l_input_details.intent := 'SP';
16746 oks_qp_int_pvt.compute_price
16747 (p_api_version => 1.0,
16748 p_init_msg_list => 'T',
16749 p_detail_rec => l_input_details,
16750 x_price_details => l_output_details,
16751 x_modifier_details => l_modif_details,
16752 x_price_break_details => l_pb_details,
16753 x_return_status => l_return_status,
16754 x_msg_count => l_msg_count,
16755 x_msg_data => l_msg_data
16756 );
16757
16758 IF (fnd_log.level_event >=
16759 fnd_log.g_current_runtime_level
16760 )
16761 THEN
16762 fnd_log.STRING
16763 (fnd_log.level_event,
16764 g_module_current
16765 || '.CREATE_CONTRACT_IBUPDATE',
16766 'oks_qp_int_pvt.compute_price(Retun status = '
16767 || l_return_status
16768 || ',Repriced amount = '
16769 || l_output_details.serv_ext_amount
16770 || ')'
16771 );
16772 END IF;
16773
16774 IF l_return_status <> okc_api.g_ret_sts_success
16775 THEN
16776 RAISE g_exception_halt_validation;
16777 END IF;
16778
16779 l_amount := l_output_details.serv_ext_amount;
16780
16781 IF l_amount <= l_billed_amount
16782 THEN
16783 UPDATE okc_k_lines_b
16784 SET price_negotiated = l_billed_amount
16785 WHERE ID = p_kdtl_tbl (l_ctr).object_line_id;
16786 END IF;
16787
16788 l_subline_amount := NULL;
16789
16790 OPEN l_amount_csr (p_kdtl_tbl (l_ctr).object_line_id
16791 );
16792
16793 FETCH l_amount_csr
16794 INTO l_subline_amount;
16795
16796 CLOSE l_amount_csr;
16797
16798 UPDATE okc_k_lines_b
16799 SET price_negotiated =
16800 (SELECT NVL (SUM (NVL (price_negotiated,
16801 0
16802 )
16803 ),
16804 0
16805 )
16806 FROM okc_k_lines_b
16807 WHERE cle_id =
16808 p_kdtl_tbl (l_ctr).service_line_id
16809 AND dnz_chr_id =
16810 p_kdtl_tbl (l_ctr).hdr_id
16811 AND date_cancelled IS NULL)
16812 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16813
16814 UPDATE oks_k_lines_b
16815 SET tax_amount =
16816 (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16817 FROM oks_k_lines_b
16818 WHERE cle_id IN ( SELECT id
16819 FROM okc_k_lines_b
16820 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16821 AND lse_id IN (9,25)
16822 AND date_cancelled IS NULL ))
16823 WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16824
16825 UPDATE okc_k_headers_b
16826 SET estimated_amount =
16827 (SELECT NVL (SUM (NVL (price_negotiated,
16828 0
16829 )
16830 ),
16831 0
16832 )
16833 FROM okc_k_lines_b
16834 WHERE dnz_chr_id =
16835 p_kdtl_tbl (l_ctr).hdr_id
16836 AND lse_id IN (1, 19)
16837 AND date_cancelled IS NULL)
16838 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16839
16840
16841 UPDATE oks_k_headers_b
16842 SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16843 FROM oks_k_lines_b
16844 WHERE cle_id IN (SELECT id
16845 FROM okc_k_lineS_b
16846 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16847 AND date_cancelled IS NULL
16848 AND lse_id IN (1,19)))
16849 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16850
16851 ---update billing schedule
16852 IF check_lvlelements_exists
16853 (p_kdtl_tbl (l_ctr).service_line_id
16854 )
16855 THEN
16856 oks_bill_sch.create_bill_sch_cp
16857 (p_top_line_id => p_kdtl_tbl (l_ctr).service_line_id,
16858 p_cp_line_id => p_kdtl_tbl (l_ctr).object_line_id,
16859 p_cp_new => 'N',
16860 x_return_status => l_return_status,
16861 x_msg_count => l_msg_count,
16862 x_msg_data => l_msg_data
16863 );
16864
16865 IF (fnd_log.level_event >=
16866 fnd_log.g_current_runtime_level
16867 )
16868 THEN
16869 fnd_log.STRING
16870 (fnd_log.level_event,
16871 g_module_current
16872 || '.CREATE_CONTRACT_IBUPDATE',
16873 'oks_bill_sch.create_bill_sch_cp(Retun status = '
16874 || l_return_status
16875 || ')'
16876 );
16877 END IF;
16878
16879 IF l_return_status <> okc_api.g_ret_sts_success
16880 THEN
16881 okc_api.set_message
16882 (g_app_name,
16883 g_required_value,
16884 g_col_name_token,
16885 'Sched Billing Rule (LINE)'
16886 );
16887 RAISE g_exception_halt_validation;
16888 END IF;
16889 END IF;
16890
16891 l_inst_dtls_tbl (l_ptr).transaction_date :=
16892 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16893 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16894 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16895 p_kdtl_tbl (l_ctr).service_amount;
16896 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16897 p_kdtl_tbl (l_ctr).old_cp_quantity;
16898 l_inst_dtls_tbl (l_ptr).old_contract_id :=
16899 p_kdtl_tbl (l_ctr).hdr_id;
16900 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16901 p_kdtl_tbl (l_ctr).hdr_sdt;
16902 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16903 p_kdtl_tbl (l_ctr).hdr_edt;
16904 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16905 p_kdtl_tbl (l_ctr).service_line_id;
16906 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16907 p_kdtl_tbl (l_ctr).service_sdt;
16908 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16909 p_kdtl_tbl (l_ctr).service_edt;
16910 l_inst_dtls_tbl (l_ptr).old_subline_id :=
16911 p_kdtl_tbl (l_ctr).object_line_id;
16912 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16913 p_kdtl_tbl (l_ctr).prod_sdt;
16914 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16915 p_kdtl_tbl (l_ctr).prod_edt;
16916 l_inst_dtls_tbl (l_ptr).old_customer :=
16917 p_kdtl_tbl (l_ctr).cust_account;
16918 l_inst_dtls_tbl (l_ptr).old_k_status :=
16919 p_kdtl_tbl (l_ctr).hdr_sts;
16920 l_inst_dtls_tbl (l_ptr).instance_id_new :=
16921 p_kdtl_tbl (l_ctr).old_cp_id;
16922 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16923 l_subline_amount;
16924 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16925 p_kdtl_tbl (l_ctr).new_quantity;
16926 l_inst_dtls_tbl (l_ptr).new_contract_id :=
16927 p_kdtl_tbl (l_ctr).hdr_id;
16928 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16929 p_kdtl_tbl (l_ctr).hdr_sdt;
16930 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16931 p_kdtl_tbl (l_ctr).hdr_edt;
16932 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16933 p_kdtl_tbl (l_ctr).service_line_id;
16934 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16935 p_kdtl_tbl (l_ctr).service_sdt;
16936 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16937 p_kdtl_tbl (l_ctr).service_edt;
16938 l_inst_dtls_tbl (l_ptr).new_subline_id :=
16939 p_kdtl_tbl (l_ctr).object_line_id;
16940 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16941 p_kdtl_tbl (l_ctr).prod_sdt;
16942 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16943 p_kdtl_tbl (l_ctr).prod_edt;
16944 l_inst_dtls_tbl (l_ptr).new_customer :=
16945 p_kdtl_tbl (l_ctr).cust_account;
16946 l_inst_dtls_tbl (l_ptr).new_k_status :=
16947 p_kdtl_tbl (l_ctr).hdr_sts;
16948 END IF;
16949 END IF; -- Billed amt is not null
16950 END IF; -- if Warranty
16951 END IF;
16952
16953 --errorout_n('l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
16954 IF l_inst_dtls_tbl.COUNT <> 0
16955 THEN
16956 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
16957 THEN
16958 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
16959
16960 FETCH l_refnum_csr
16961 INTO l_ref_num;
16962
16963 CLOSE l_refnum_csr;
16964
16965 l_parameters :=
16966 ' Old CP :'
16967 || p_kdtl_tbl (l_ctr).old_cp_id
16968 || ','
16969 || 'Item Id:'
16970 || p_kdtl_tbl (l_ctr).prod_inventory_item
16971 || ','
16972 || 'Old Quantity:'
16973 || p_kdtl_tbl (l_ctr).old_cp_quantity
16974 || ','
16975 || 'Transaction type :'
16976 || 'UPD'
16977 || ','
16978 || ' Transaction date :'
16979 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
16980 || ','
16981 || 'New quantity:'
16982 || p_kdtl_tbl (l_ctr).new_quantity;
16983 --oks_instance_history
16984 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
16985 l_insthist_rec.instance_id :=
16986 p_kdtl_tbl (l_ctr).old_cp_id;
16987 l_insthist_rec.transaction_type := 'UPD';
16988 l_insthist_rec.transaction_date :=
16989 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16990 l_insthist_rec.reference_number := l_ref_num;
16991 l_insthist_rec.PARAMETERS := l_parameters;
16992 oks_ins_pvt.insert_row
16993 (p_api_version => 1.0,
16994 p_init_msg_list => 'T',
16995 x_return_status => l_return_status,
16996 x_msg_count => l_msg_count,
16997 x_msg_data => l_msg_data,
16998 p_insv_rec => l_insthist_rec,
16999 x_insv_rec => x_insthist_rec
17000 );
17001
17002 IF (fnd_log.level_event >=
17003 fnd_log.g_current_runtime_level
17004 )
17005 THEN
17006 fnd_log.STRING
17007 (fnd_log.level_event,
17008 g_module_current
17009 || '.CREATE_CONTRACT_IBUPDATE',
17010 'oks_ins_pvt.insert_row(Return status = '
17011 || l_return_status
17012 || ')'
17013 );
17014 END IF;
17015
17016 x_return_status := l_return_status;
17017
17018 IF NOT l_return_status = okc_api.g_ret_sts_success
17019 THEN
17020 x_return_status := l_return_status;
17021 RAISE g_exception_halt_validation;
17022 END IF;
17023
17024 l_instparent_id := x_insthist_rec.ID;
17025 END IF;
17026
17027 FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
17028 LOOP
17029 l_inst_dtls_tbl (i).ins_id := l_instparent_id;
17030 END LOOP;
17031
17032 --oks_inst_history_details
17033 oks_ihd_pvt.insert_row (p_api_version => 1.0,
17034 p_init_msg_list => 'T',
17035 x_return_status => l_return_status,
17036 x_msg_count => l_msg_count,
17037 x_msg_data => l_msg_data,
17038 p_ihdv_tbl => l_inst_dtls_tbl,
17039 x_ihdv_tbl => x_inst_dtls_tbl
17040 );
17041
17042 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
17043 )
17044 THEN
17045 fnd_log.STRING
17046 (fnd_log.level_event,
17047 g_module_current
17048 || '.CREATE_CONTRACT_IBUPDATE',
17049 'oks_ihd_pvt.insert_row(Return status = '
17050 || l_return_status
17051 || ')'
17052 );
17053 END IF;
17054
17055 x_return_status := l_return_status;
17056
17057 IF NOT l_return_status = okc_api.g_ret_sts_success
17058 THEN
17059 x_return_status := l_return_status;
17060 RAISE g_exception_halt_validation;
17061 END IF;
17062 END IF;
17063 END IF;
17064
17065 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
17066 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
17067 END LOOP;
17068 END IF;
17069
17070 x_return_status := l_return_status;
17071 EXCEPTION
17072 WHEN g_exception_halt_validation
17073 THEN
17074 x_return_status := l_return_status;
17075 NULL;
17076 WHEN OTHERS
17077 THEN
17078 x_return_status := okc_api.g_ret_sts_unexp_error;
17079 okc_api.set_message (g_app_name,
17080 g_unexpected_error,
17081 g_sqlcode_token,
17082 SQLCODE,
17083 g_sqlerrm_token,
17084 SQLERRM
17085 );
17086 END;
17087
17088 PROCEDURE get_jtf_resource (
17089 p_authorg_id NUMBER,
17090 p_party_id NUMBER,
17091 x_winners_rec OUT NOCOPY jtf_terr_assign_pub.bulk_winners_rec_type,
17092 x_msg_count OUT NOCOPY NUMBER,
17093 x_msg_data OUT NOCOPY VARCHAR2,
17094 x_return_status OUT NOCOPY VARCHAR2
17095 )
17096 IS
17097 -- Fix for bug 4142999
17098 CURSOR get_vendor_details
17099 IS
17100 SELECT a.party_name, b.country, b.region_2
17101 FROM hr_locations b, hr_all_organization_units c, hz_parties a
17102 WHERE b.location_id = c.location_id
17103 AND c.organization_id = p_authorg_id
17104 AND a.party_id = p_party_id;
17105
17106 CURSOR get_party_details
17107 IS
17108 SELECT hz.party_name, hzl.country, hzl.state
17109 FROM hz_parties hz, hz_party_sites hzs, hz_locations hzl
17110 WHERE hz.party_id = p_party_id
17111 AND hzs.party_id = hz.party_id
17112 AND hzs.identifying_address_flag = 'Y'
17113 AND hzl.location_id = hzs.location_id;
17114
17115 l_gen_bulk_rec jtf_terr_assign_pub.bulk_trans_rec_type;
17116 l_gen_return_rec jtf_terr_assign_pub.bulk_winners_rec_type;
17117 l_party_name VARCHAR2 (360);
17118 l_country_code VARCHAR2 (60);
17119 l_state_code VARCHAR2 (120);
17120 l_use_type VARCHAR2 (30);
17121 l_msg_count NUMBER;
17122 l_msg_data VARCHAR2 (200);
17123 l_return_status VARCHAR2 (3);
17124 BEGIN
17125 -- Fix for bug 4142999
17126 IF NVL (fnd_profile.VALUE ('OKS_SRC_TERR_QUALFIERS'), 'V') = 'V'
17127 THEN
17128 OPEN get_vendor_details;
17129
17130 FETCH get_vendor_details
17131 INTO l_party_name, l_country_code, l_state_code;
17132
17133 CLOSE get_vendor_details;
17134 ELSE
17135 OPEN get_party_details;
17136
17137 FETCH get_party_details
17138 INTO l_party_name, l_country_code, l_state_code;
17139
17140 CLOSE get_party_details;
17141 END IF;
17142
17143 l_gen_bulk_rec.trans_object_id.EXTEND;
17144 l_gen_bulk_rec.trans_detail_object_id.EXTEND;
17145 l_gen_bulk_rec.squal_char01.EXTEND;
17146 l_gen_bulk_rec.squal_char04.EXTEND;
17147 l_gen_bulk_rec.squal_char07.EXTEND;
17148 l_gen_bulk_rec.squal_num01.EXTEND;
17149
17150 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17151 THEN
17152 fnd_log.STRING (fnd_log.level_statement,
17153 g_module_current,
17154 'Values passed to JTF API : '
17155 || ' Party ID '
17156 || p_party_id
17157 || ' Party Name'
17158 || l_party_name
17159 || ' State Code'
17160 || l_state_code
17161 || ' Country Code'
17162 || l_country_code
17163 || ' Territory Qualifier profile '
17164 || fnd_profile.VALUE ('OKS_SRC_TERR_QUALFIERS')
17165 );
17166 END IF;
17167
17168 l_gen_bulk_rec.trans_object_id (1) := 100;
17169 l_gen_bulk_rec.trans_detail_object_id (1) := 1000;
17170 l_gen_bulk_rec.squal_char01 (1) := l_party_name;
17171 l_gen_bulk_rec.squal_char04 (1) := l_state_code;
17172 l_gen_bulk_rec.squal_char07 (1) := l_country_code;
17173 l_gen_bulk_rec.squal_num01 (1) := p_party_id;
17174 l_use_type := 'RESOURCE';
17175
17176 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17177 THEN
17178 fnd_log.STRING (fnd_log.level_statement,
17179 g_module_current
17180 || '.JTF_TERR_ASSIGN_PUB.get_winners',
17181 'Before JTF API call '
17182 );
17183 END IF;
17184
17185 jtf_terr_assign_pub.get_winners
17186 (p_api_version_number => 1.0,
17187 p_init_msg_list => okc_api.g_false,
17188 p_use_type => l_use_type,
17189 p_source_id => -1500,
17190 p_trans_id => -1501,
17191 p_trans_rec => l_gen_bulk_rec,
17192 p_resource_type => fnd_api.g_miss_char,
17193 p_role => fnd_api.g_miss_char,
17194 p_top_level_terr_id => fnd_api.g_miss_num,
17195 p_num_winners => fnd_api.g_miss_num,
17196 x_return_status => l_return_status,
17197 x_msg_count => l_msg_count,
17198 x_msg_data => l_msg_data,
17199 x_winners_rec => l_gen_return_rec
17200 );
17201 x_winners_rec := l_gen_return_rec;
17202
17203 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17204 THEN
17205 fnd_log.STRING (fnd_log.level_statement,
17206 g_module_current
17207 || '.JTF_TERR_ASSIGN_PUB.get_winners',
17208 'After JTF call '
17209 );
17210 END IF;
17211 END get_jtf_resource;
17212
17213 PROCEDURE send_notification (
17214 p_order_id IN NUMBER,
17215 p_contract_id NUMBER,
17216 p_type IN VARCHAR2
17217 )
17218 IS
17219 CURSOR l_fnd_csr (p_user_id NUMBER)
17220 IS
17221 SELECT user_name
17222 FROM fnd_user
17223 WHERE user_id = p_user_id;
17224
17225 CURSOR get_order_number
17226 IS
17227 SELECT order_number
17228 FROM oe_order_headers_all
17229 WHERE header_id = p_order_id;
17230
17231 CURSOR get_contract_number
17232 IS
17233 SELECT contract_number || ' ' || contract_number_modifier
17234 FROM okc_k_headers_all_b
17235 WHERE ID = p_contract_id;
17236
17237 l_return_status VARCHAR2 (10);
17238 l_msg_data VARCHAR2 (2000);
17239 l_msg_count NUMBER;
17240 l_terr_admin_id NUMBER;
17241 l_order_number NUMBER := 0;
17242 l_contract_number VARCHAR2 (2000);
17243 l_contract_admin_id NUMBER;
17244 l_contract_approver_id NUMBER;
17245 l_subj VARCHAR2 (1000);
17246 l_msg VARCHAR2 (1000);
17247 l_user_name VARCHAR2 (100);
17248 l_order_num_prompt VARCHAR2 (100);
17249 BEGIN
17250 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17251 THEN
17252 fnd_log.STRING (fnd_log.level_statement,
17253 g_module_current,
17254 'Inside SEND_NOTIFICATION : '
17255 );
17256 END IF;
17257
17258 l_subj := fnd_message.get_string ('OKS', 'OKS_TERR_SETUP_ERR_SUB');
17259 l_terr_admin_id := fnd_profile.VALUE ('OKS_TERR_ADMIN_ID');
17260
17261 IF (l_terr_admin_id IS NULL)
17262 THEN
17263 l_contract_admin_id := fnd_profile.VALUE ('OKS_CONTRACT_ADMIN_ID');
17264 END IF;
17265
17266 IF l_terr_admin_id IS NOT NULL
17267 THEN
17268 OPEN l_fnd_csr (l_terr_admin_id);
17269
17270 FETCH l_fnd_csr
17271 INTO l_user_name;
17272
17273 CLOSE l_fnd_csr;
17274
17275 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17276 THEN
17277 fnd_log.STRING (fnd_log.level_statement,
17278 g_module_current,
17279 'Territory Admin is not null - ' || l_user_name
17280 );
17281 END IF;
17282 ELSIF l_contract_admin_id IS NOT NULL
17283 THEN
17284 OPEN l_fnd_csr (l_contract_admin_id);
17285
17286 FETCH l_fnd_csr
17287 INTO l_user_name;
17288
17289 CLOSE l_fnd_csr;
17290
17291 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17292 THEN
17293 fnd_log.STRING (fnd_log.level_statement,
17294 g_module_current,
17295 'Contract Admin is not null - ' || l_user_name
17296 );
17297 END IF;
17298 ELSE
17299 l_user_name := fnd_profile.VALUE ('OKC_K_APPROVER');
17300
17301 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17302 THEN
17303 fnd_log.STRING (fnd_log.level_statement,
17304 g_module_current,
17305 'Contract Approver is not null - ' || l_user_name
17306 );
17307 END IF;
17308 END IF;
17309
17310 IF p_order_id IS NOT NULL
17311 THEN
17312 OPEN get_order_number;
17313
17314 FETCH get_order_number
17315 INTO l_order_number;
17316
17317 CLOSE get_order_number;
17318
17319 l_order_num_prompt :=
17320 fnd_message.get_string ('OKS', 'OKS_ORDER_NUMBER');
17321 l_subj :=
17322 l_subj || ' ' || l_order_num_prompt || ' - ' || l_order_number;
17323 ELSE
17324 OPEN get_contract_number;
17325
17326 FETCH get_contract_number
17327 INTO l_contract_number;
17328
17329 CLOSE get_contract_number;
17330
17331 l_subj :=
17332 l_subj
17333 || ' '
17334 || fnd_message.get_string ('OKS', 'OKS_CONTRACT_NUMBER')
17335 || ' - '
17336 || l_contract_number;
17337 END IF;
17338
17339 IF (p_type = 'NRS')
17340 THEN
17341 l_msg := fnd_message.get_string ('OKS', 'OKS_NO_TERR_RESOURCES');
17342 ELSIF (p_type = 'ISP')
17343 THEN
17344 l_msg := fnd_message.get_string ('OKS', 'OKS_INVALID_SALES_PERSON');
17345 ELSE
17346 l_msg := fnd_message.get_string ('OKS', 'OKS_TERR_SETUP_ERR_SUB');
17347 END IF;
17348
17349 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17350 THEN
17351 fnd_log.STRING (fnd_log.level_statement,
17352 g_module_current,
17353 'p_recipient is '
17354 || l_user_name
17355 || ' Order no is '
17356 || l_order_number
17357 || 'Contract Number Is '
17358 || l_contract_number
17359 );
17360 END IF;
17361
17362 okc_async_pub.msg_call (p_api_version => 1,
17363 x_return_status => l_return_status,
17364 x_msg_count => l_msg_count,
17365 x_msg_data => l_msg_data,
17366 p_recipient => l_user_name,
17367 p_msg_body => l_msg,
17368 p_msg_subj => l_subj,
17369 p_contract_id => NVL (l_order_number,
17370 p_contract_id
17371 )
17372 );
17373
17374 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17375 THEN
17376 fnd_log.STRING (fnd_log.level_statement,
17377 g_module_current,
17378 'Exiting Send_notification ' || l_return_status
17379 );
17380 END IF;
17381 END send_notification;
17382 END oks_extwarprgm_pvt;