[Home] [Help]
PACKAGE BODY: APPS.OKS_EXTWARPRGM_PVT
Source
1 PACKAGE BODY oks_extwarprgm_pvt AS
2 /* $Header: OKSREWRB.pls 120.87.12010000.2 2008/11/12 07:17:31 harlaksh 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 -- Cursor to compare the source line attributes with
73 -- target line attributes
74 CURSOR target_line_attrbs_csr (
75 l_inv_id NUMBER,
76 l_acct_id NUMBER,
77 l_prl_id VARCHAR2,
78 l_commit_id NUMBER,
79 l_invorg_id NUMBER,
80 l_shiporg_id NUMBER
81 )
82 IS
83 SELECT 'x'
84 FROM okc_k_lines_b kl, oks_k_lines_b sl
85 WHERE kl.ID = p_k_line_id
86 AND kl.ID = sl.cle_id
87 AND NVL (sl.acct_rule_id, -99) = NVL (l_acct_id, -99)
88 AND NVL (kl.inv_rule_id, -99) = NVL (l_inv_id, -99)
89 AND NVL (sl.commitment_id, -99) = NVL (l_commit_id, -99)
90 AND NVL (kl.price_list_id, -99) = NVL (l_prl_id, -99)
91 AND NVL (kl.bill_to_site_use_id, -99) = NVL (l_invorg_id, -99)
92 AND NVL (kl.ship_to_site_use_id, -99) = NVL (l_shiporg_id, -99);
93
94 l_source_rec source_line_attrbs_csr%ROWTYPE;
95 l_merge_yn BOOLEAN := FALSE;
96 l_temp VARCHAR2 (3);
97 BEGIN
98 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
99 THEN
100 fnd_log.STRING (fnd_log.level_statement,
101 g_module_current || '.Check_merge_yn',
102 'Warranty Flag ' || p_warranty_flag
103 );
104 END IF;
105
106 IF p_warranty_flag = 'W'
107 THEN
108 l_merge_yn := TRUE;
109 RETURN (l_merge_yn);
110 ELSE
111 OPEN source_line_attrbs_csr;
112
113 FETCH source_line_attrbs_csr
114 INTO l_source_rec;
115
116 IF source_line_attrbs_csr%NOTFOUND
117 THEN
118 CLOSE source_line_attrbs_csr;
119
120 RAISE g_exception_halt_validation;
121 END IF;
122
123 CLOSE source_line_attrbs_csr;
124
125 OPEN target_line_attrbs_csr (l_source_rec.invoicing_rule_id,
126 l_source_rec.accounting_rule_id,
127 l_source_rec.price_list_id,
128 l_source_rec.commitment_id,
129 l_source_rec.invoice_to_org_id,
130 l_source_rec.ship_to_org_id
131 );
132
133 FETCH target_line_attrbs_csr
134 INTO l_temp;
135
136 IF target_line_attrbs_csr%FOUND
137 THEN
138 l_merge_yn := TRUE;
139 ELSE
140 l_merge_yn := FALSE;
141 END IF;
142
143 CLOSE target_line_attrbs_csr;
144
145 RETURN (l_merge_yn);
146 END IF;
147 END;
148
149 --G_Debug_option := Fnd_profile.value('OKS_DEBUG_LOG');
150 FUNCTION get_top_line_number (p_chr_id IN NUMBER)
151 RETURN NUMBER;
152
153 FUNCTION get_sub_line_number (p_chr_id IN NUMBER, p_cle_id IN NUMBER)
154 RETURN NUMBER;
155
156 PROCEDURE get_sts_code (
157 p_ste_code VARCHAR2,
158 p_sts_code VARCHAR2,
159 x_ste_code OUT NOCOPY VARCHAR2,
160 x_sts_code OUT NOCOPY VARCHAR2
161 )
162 IS
163 CURSOR l_ste_csr
164 IS
165 SELECT code
166 FROM okc_statuses_b
167 WHERE ste_code = p_ste_code AND default_yn = 'Y';
168
169 CURSOR l_sts_csr
170 IS
171 SELECT a.code, a.ste_code
172 FROM okc_statuses_b a, okc_statuses_b b
173 WHERE b.code = p_sts_code
174 AND b.ste_code = a.ste_code
175 AND a.default_yn = 'Y';
176
177 l_sts_code VARCHAR2 (30);
178 BEGIN
179 IF p_sts_code IS NULL
180 THEN
181 OPEN l_ste_csr;
182
183 FETCH l_ste_csr
184 INTO x_sts_code;
185
186 CLOSE l_ste_csr;
187
188 x_ste_code := p_ste_code;
189 ELSE
190 OPEN l_sts_csr;
191
192 FETCH l_sts_csr
193 INTO x_sts_code, x_ste_code;
194
195 CLOSE l_sts_csr;
196 END IF;
197 EXCEPTION
198 WHEN OTHERS
199 THEN
200 okc_api.set_message (g_app_name,
201 g_unexpected_error,
202 g_sqlcode_token,
203 SQLCODE,
204 g_sqlerrm_token,
205 SQLERRM
206 );
207 END;
208
209 -----------------------------------------------------------------------
210 -- Procedure: get_cc_trxn_extn
211 -- Added 03/03/2006 by Vijay Ramalingam
212 -----------------------------------------------------------------------
213 -- The get_cc_trxn_extn procedure is used to get a transaction extension
214 -- id from iPayments, based on an existing transaction extension id from
215 -- a sales order header or an order line from OM.
216 -- This API is called while creating an Extended warranty contract
217 -- from OM. It is called at the header level for a sales order header
218 -- or at line level for a sales order line.
219 -- p_context_level identifies the level at which it is called and the
220 -- applicable values are 'ORDER_HEADER' and 'ORDER_LINE'
221
222 PROCEDURE get_cc_trxn_extn (
223 p_order_header_id IN NUMBER,
224 p_order_line_id IN NUMBER,
225 p_context_level IN VARCHAR2,
226 p_contract_hdr_id IN NUMBER,
227 p_contract_line_id IN NUMBER,
228 x_entity_id OUT NOCOPY NUMBER,
229 x_return_status OUT NOCOPY VARCHAR2
230 ) IS
231
232 l_payercontext_rec iby_fndcpt_common_pub.payercontext_rec_type;
233 l_trxnextension_rec iby_fndcpt_trxn_pub.trxnextension_rec_type;
234 l_response iby_fndcpt_common_pub.result_rec_type;
235 l_order_number NUMBER;
236 l_invoice_to_org_id NUMBER;
237 l_trxn_extension_id NUMBER;
238 l_entity_id NUMBER;
239 l_instr_id NUMBER;
240 l_iby_cust_id NUMBER;
241 l_iby_party NUMBER;
242 l_msg_count NUMBER;
243 l_msg_data VARCHAR2 (2000);
244 l_return_status VARCHAR2 (1) := FND_API.G_RET_STS_SUCCESS;
245
246 -- Cursor to get the transaction extension info for a sales order
247 CURSOR c_header_trxid (c_order_header_id IN NUMBER)
248 IS
249 SELECT ordhdr.order_number
250 ,ordhdr.invoice_to_org_id
251 ,pmt.trxn_extension_id
252 FROM
253 oe_order_headers_all ordhdr
254 ,oe_payments pmt
255 WHERE ordhdr.header_id = c_order_header_id
256 AND ordhdr.header_id = pmt.header_id
257 AND pmt.line_id IS NULL
258 AND pmt.payment_type_code = G_PAYMENT_CREDIT_CARD;
259
260 -- Cursor to get the transaction extension info for a sales order line
261 CURSOR c_line_trxid (c_order_line_id IN NUMBER)
262 IS
263 SELECT ordline.invoice_to_org_id
264 ,pmt.trxn_extension_id
265 FROM
266 oe_order_lines_all ordline
267 ,oe_payments pmt
268 WHERE ordline.line_id = c_order_line_id
269 AND ordline.header_id = pmt.header_id
270 AND ordline.line_id = pmt.line_id
271 AND pmt.payment_type_code = G_PAYMENT_CREDIT_CARD;
272
273 -- Cursor to get the instrument asignment id for a given transaction
274 -- extension id for a sales order header/line
275 CURSOR c_instrid (c_trxn_extension_id IN NUMBER)
276 IS
277 SELECT instr_assignment_id
278 FROM iby_trxn_extensions_v
279 WHERE trxn_extension_id = c_trxn_extension_id;
280
281 -- Cursor to get the the Bill to customer account corresponding
282 -- to a bill to site id
283 CURSOR c_cust_csr (p_bill_to_site_use_id NUMBER)
284 IS
285 SELECT ca.cust_account_id
286 FROM hz_cust_acct_sites_all ca, hz_cust_site_uses_all cs
287 WHERE ca.cust_acct_site_id = cs.cust_acct_site_id
288 AND cs.site_use_id = p_bill_to_site_use_id;
289
290 CURSOR c_party (c_cust_acct_id IN NUMBER)
291 IS
292 SELECT ca.party_id party_id
293 FROM hz_cust_accounts_all ca
294 WHERE ca.cust_account_id = c_cust_acct_id;
295 BEGIN
296
297 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
298 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
299 'p_context_level = '||p_context_level);
300
301 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
302 'p_order_header_id = '||p_order_header_id);
303
304 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
305 'p_order_line_id = '||p_order_line_id);
306
307 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
308 'p_contract_hdr_id = '||p_contract_hdr_id);
309
310 fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
311 'p_contract_line_id = '||p_contract_line_id);
312 END IF;
313
314 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
315
316 OPEN c_header_trxid(p_order_header_id);
317 FETCH c_header_trxid INTO l_order_number,l_invoice_to_org_id,l_trxn_extension_id;
318 CLOSE c_header_trxid;
319
320 ELSIF p_context_level = G_CONTEXT_ORDER_LINE THEN
321 OPEN c_line_trxid(p_order_line_id);
322 FETCH c_line_trxid INTO l_invoice_to_org_id,l_trxn_extension_id;
323 CLOSE c_line_trxid;
324
325 END IF;
326
327 -- Proceed Further only if a Credit Card info is to be processed
328 IF l_trxn_extension_id IS NOT NULL THEN
329 OPEN c_instrid (l_trxn_extension_id);
330 FETCH c_instrid INTO l_instr_id;
331 CLOSE c_instrid;
332
333 -- For a transaction extension id, an instrument assignment id
334 -- should always exist in iPayments.
335 IF l_instr_id IS NULL THEN
336 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
337 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
338 fnd_log.STRING (fnd_log.level_error,
339 g_module_current
340 || '.get_cc_trxn_extn-Header.ERROR',
341 'After CURSOR - c_InstrId'
342 || ' ,Payment Txn ID = '
343 || l_trxn_extension_id
344 || ' ,p_order_header_id = '
345 || p_order_header_id
346 );
347 ELSE
348 fnd_log.STRING (fnd_log.level_error,
349 g_module_current
350 || '.get_cc_trxn_extn-Line.ERROR',
351 'After CURSOR - c_InstrId'
352 || ' ,Payment Txn ID = '
353 || l_trxn_extension_id
354 || ' ,p_line_id = '
355 || p_order_line_id
356 );
357 END IF;
358 END IF;
359 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
360 okc_api.set_message(g_app_name,
361 'OKS_CC_INS_ASSG_NOT_FOUND',
362 'ORDER_NUMBER',
363 l_order_number
364 );
365 ELSE
366 okc_api.set_message(g_app_name,
367 'OKS_LINE_CC_INS_ASSG_NOT_FOUND',
368 'ORDER_LINE_ID',
369 p_order_line_id
370 );
371 END IF;
372 RAISE g_exception_halt_validation;
373 END IF;
374
375 OPEN c_cust_csr(l_invoice_to_org_id);
376 FETCH c_cust_csr INTO l_iby_cust_id;
377 CLOSE c_cust_csr;
378
379 OPEN c_party (l_iby_cust_id);
380 FETCH c_party INTO l_iby_party;
381 CLOSE c_party;
382
383 l_payercontext_rec.payment_function := IBY_FNDCPT_COMMON_PUB.G_PMT_FUNCTION_CUST_PMT;
384 l_payercontext_rec.party_id := l_iby_party;
385 l_payercontext_rec.cust_account_id := l_iby_cust_id;
386
387 -- Based on the header or line level, the corresponding contract header
388 -- or contract line id is passed as the order id
389 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
390 l_trxnextension_rec.order_id := p_contract_hdr_id;
391 ELSE
392 l_trxnextension_rec.order_id := p_contract_line_id;
393 END IF;
394
395 l_trxnextension_rec.originating_application_id := g_app_id;
396 l_trxnextension_rec.trxn_ref_number1 := TO_CHAR (SYSDATE, 'ddmmyyyyhhmmssss');
397
398 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
399 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
400 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
401 fnd_log.STRING(
402 fnd_log.level_statement,
403 g_module_current || '.get_cc_trxn_extn-Header',
404 'Before call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension for order header'
405 || ' ,Party_Id = '
406 || l_payercontext_rec.party_id
407 || ' ,Cust_Account_Id = '
408 || l_payercontext_rec.cust_account_id
409 || ' ,order_id = '
410 || l_trxnextension_rec.order_id
411 || ' ,Trxn_Ref_Number1 = '
412 || l_trxnextension_rec.trxn_ref_number1
413 || ' ,instr_assignment = '
414 || l_instr_id
415 || ' ,application_id= '
416 || l_trxnextension_rec.originating_application_id
417 );
418 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
419 ELSE
420 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
421 fnd_log.STRING
422 (fnd_log.level_statement,
423 g_module_current || '.get_cc_trxn_extn-Line',
424 'Before call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension for order line'
425 || ' ,Party_Id = '
426 || l_payercontext_rec.party_id
427 || ' ,Cust_Account_Id = '
428 || l_payercontext_rec.cust_account_id
429 || ' ,order_id (i.e. order line id) = '
430 || l_trxnextension_rec.order_id
431 || ' ,Trxn_Ref_Number1 = '
432 || l_trxnextension_rec.trxn_ref_number1
433 || ' ,instr_assignment = '
434 || l_instr_id
435 || ' ,application_id= '
436 || l_trxnextension_rec.originating_application_id
437 );
438 fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
439 END IF;
440 END IF;
441
442 -- A payer equivalency level of full is provided for iPayments to be
443 -- able to traverse up and down for a given instrument id
444 -- Note: The new transaction extension that is created at a customer
445 -- account level.
446 iby_fndcpt_trxn_pub.create_transaction_extension
447 (p_api_version => 1.0,
448 p_init_msg_list => 'T',
449 p_commit => 'F',
450 x_return_status => l_return_status,
451 x_msg_count => l_msg_count,
452 x_msg_data => l_msg_data,
453 p_payer => l_payercontext_rec,
454 p_payer_equivalency => IBY_FNDCPT_COMMON_PUB.G_PAYER_EQUIV_FULL,
455 p_pmt_channel => G_PAYMENT_CREDIT_CARD,
456 p_instr_assignment => l_instr_id,
457 p_trxn_attribs => l_trxnextension_rec,
458 x_entity_id => l_entity_id,
459 x_response => l_response
460 );
461
462 IF l_return_status <> 'S' THEN
463 IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
464 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
465 fnd_log.STRING
466 (fnd_log.level_error,
467 g_module_current || '.get_cc_trxn_extn-Header.ERROR',
468 'After call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension'
469 || ' ,x_return_status= '
470 || l_return_status
471 || ' ,Result Code = '
472 || l_response.result_code
473 || ' ,Result Category= '
474 || l_response.result_category
475 || ' ,Result Message= '
476 || l_response.result_message
477 );
478 ELSE
479 fnd_log.STRING
480 (fnd_log.level_error,
481 g_module_current || '.get_cc_trxn_extn-Line.ERROR',
482 'After call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension'
483 || ' ,x_return_status= '
484 || l_return_status
485 || ' ,Result Code = '
486 || l_response.result_code
487 || ' ,Result Category= '
488 || l_response.result_category
489 || ' ,Result Message= '
490 || l_response.result_message
491 );
492 END IF;
493 END IF;
494 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
495 okc_api.set_message(g_app_name,
496 'OKS_CC_EXTN_CREATN_FAILED',
497 'ORDER_NUMBER',
498 l_order_number
499 );
500 ELSE
501 okc_api.set_message(g_app_name,
502 'OKS_LINE_CC_EXTN_CREATN_FAILED',
503 'ORDER_LINE_ID',
504 p_order_line_id
505 );
506 END IF;
507 RAISE g_exception_halt_validation;
508 END IF;
509
510 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
511 fnd_log.STRING (fnd_log.level_statement,
512 g_module_current||'.get_cc_trxn_extn ',
513 'l_entity_id = '||l_entity_id);
514 END IF;
515
516 x_entity_id := l_entity_id;
517 END IF;
518 x_return_status := l_return_status;
519 EXCEPTION
520 WHEN g_exception_halt_validation THEN
521 x_return_status := FND_API.G_RET_STS_ERROR;
522 WHEN OTHERS THEN
523 IF c_header_trxid%ISOPEN THEN
524 CLOSE c_header_trxid;
525 END IF;
526
527 IF c_line_trxid%ISOPEN THEN
528 CLOSE c_line_trxid;
529 END IF;
530
531 IF c_instrid%ISOPEN THEN
532 CLOSE c_instrid;
533 END IF;
534
535 IF c_cust_csr%ISOPEN THEN
536 CLOSE c_cust_csr;
537 END IF;
538
539 IF c_party%ISOPEN THEN
540 CLOSE c_party;
541 END IF;
542
543 x_return_status := okc_api.g_ret_sts_unexp_error;
544 okc_api.set_message (g_app_name,
545 g_unexpected_error,
546 g_sqlcode_token,
547 SQLCODE,
548 g_sqlerrm_token,
549 SQLERRM
550 );
551
552 IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level THEN
553 IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
554 fnd_log.STRING (fnd_log.level_unexpected,
555 g_module_current
556 || '.get_cc_trxn_extn-Header.UNEXPECTED',
557 ' sqlcode = ' || SQLCODE || ', sqlerrm = '
558 || SQLERRM
559 );
560 ELSE
561 fnd_log.STRING (fnd_log.level_unexpected,
562 g_module_current
563 || '.get_cc_trxn_extn-Line.UNEXPECTED',
564 ' sqlcode = ' || SQLCODE || ', sqlerrm = '
565 || SQLERRM
566 );
567 END IF;
568 END IF;
569 END get_cc_trxn_extn;
570
571
572 PROCEDURE party_role (
573 p_chrid IN NUMBER,
574 p_cleid IN NUMBER,
575 p_rle_code IN VARCHAR2,
576 p_partyid IN NUMBER,
577 p_object_code IN VARCHAR2,
578 x_roleid OUT NOCOPY NUMBER,
579 x_msg_count OUT NOCOPY NUMBER,
580 x_msg_data OUT NOCOPY VARCHAR2,
581 x_return_status OUT NOCOPY VARCHAR2
582 )
583 IS
584 l_api_version CONSTANT NUMBER := 1.0;
585 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
586 l_return_status VARCHAR2 (1) := okc_api.g_ret_sts_success;
587 l_index VARCHAR2 (240);
588 --Party Role
589 l_cplv_tbl_in okc_contract_party_pub.cplv_tbl_type;
590 l_cplv_tbl_out okc_contract_party_pub.cplv_tbl_type;
591
592 CURSOR l_party_csr
593 IS
594 SELECT ID
595 FROM okc_k_party_roles_b
596 WHERE dnz_chr_id = p_chrid
597 AND cle_id IS NULL
598 AND chr_id = p_chrid
599 AND rle_code = p_rle_code;
600
601 CURSOR l_lparty_csr
602 IS
603 SELECT ID
604 FROM okc_k_party_roles_b
605 WHERE dnz_chr_id = p_chrid
606 AND chr_id IS NULL
607 AND cle_id = p_cleid
608 AND rle_code = p_rle_code;
609
610 l_roleid NUMBER;
611 BEGIN
612 l_return_status := okc_api.g_ret_sts_success;
613
614 IF p_cleid IS NULL
615 THEN
616 l_roleid := NULL;
617
618 OPEN l_party_csr;
619
620 FETCH l_party_csr
621 INTO l_roleid;
622
623 CLOSE l_party_csr;
624
625 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
626 THEN
627 fnd_log.STRING (fnd_log.level_statement,
628 g_module_current || '.PARTY_ROLE',
629 'Party Role Id = ' || l_roleid
630 );
631 END IF;
632
633 IF l_roleid IS NOT NULL
634 THEN
635 x_roleid := l_roleid;
636 RETURN;
637 END IF;
638
639 l_cplv_tbl_in (1).chr_id := p_chrid;
640 ELSE
641 l_roleid := NULL;
642
643 OPEN l_lparty_csr;
644
645 FETCH l_lparty_csr
646 INTO l_roleid;
647
648 CLOSE l_lparty_csr;
649
650 IF l_roleid IS NOT NULL
651 THEN
652 x_roleid := l_roleid;
653 RETURN;
654 END IF;
655
656 l_cplv_tbl_in (1).cle_id := p_cleid;
657 END IF;
658
659 l_cplv_tbl_in (1).sfwt_flag := 'N';
660 l_cplv_tbl_in (1).rle_code := p_rle_code;
661 l_cplv_tbl_in (1).object1_id1 := p_partyid;
662 l_cplv_tbl_in (1).object1_id2 := '#';
663 l_cplv_tbl_in (1).jtot_object1_code := p_object_code;
664 l_cplv_tbl_in (1).dnz_chr_id := p_chrid;
665 okc_contract_party_pub.create_k_party_role
666 (p_api_version => l_api_version,
667 p_init_msg_list => l_init_msg_list,
668 x_return_status => l_return_status,
669 x_msg_count => x_msg_count,
670 x_msg_data => x_msg_data,
671 p_cplv_tbl => l_cplv_tbl_in,
672 x_cplv_tbl => l_cplv_tbl_out
673 );
674
675 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
676 THEN
677 fnd_log.STRING
678 (fnd_log.level_event,
679 g_module_current || '.PARTY_ROLE.external_call.after',
680 'okc_contract_party_pub.create_k_party_role(Return status ='
681 || l_return_status
682 || ')'
683 || 'Party Role Id = '
684 || l_cplv_tbl_out (1).ID
685 );
686 END IF;
687
688 IF l_return_status = 'S'
689 THEN
690 x_roleid := l_cplv_tbl_out (1).ID;
691 ELSE
692 okc_api.set_message (g_app_name,
693 g_required_value,
694 g_col_name_token,
695 p_rle_code || ' Party Role (HEADER)'
696 );
697 RAISE g_exception_halt_validation;
698 END IF;
699 EXCEPTION
700 WHEN g_exception_halt_validation
701 THEN
702 x_return_status := l_return_status;
703 NULL;
704 WHEN OTHERS
705 THEN
706 x_return_status := okc_api.g_ret_sts_unexp_error;
707 okc_api.set_message (g_app_name,
708 g_unexpected_error,
709 g_sqlcode_token,
710 SQLCODE,
711 g_sqlerrm_token,
712 SQLERRM
713 );
714 END;
715
716 -----------------------------------------------------------------------
717 -- GetFormattedInvoiceText
718 -- added 05/29/2002 --Vigandhi
719 -- For Bug#2396580
720 -----------------------------------------------------------------------
721 FUNCTION getformattedinvoicetext (
722 p_product_item IN NUMBER,
723 p_start_date IN DATE,
724 p_end_date IN DATE,
725 p_item_desc IN VARCHAR2,
726 p_qty IN NUMBER
727 )
728 RETURN VARCHAR2
729 IS
730 /* CURSOR l_item_csr IS
731 SELECT jtot_object1_code,
732 object1_id1,
733 object1_id2,
734 number_of_items
735 FROM okc_k_items
736 WHERE cle_id = p_cle_id;
737 */
738 CURSOR l_inv_csr (p_product_item NUMBER)
739 IS
740 SELECT t.description NAME, b.concatenated_segments description
741 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
742 WHERE b.inventory_item_id = t.inventory_item_id
743 AND b.organization_id = t.organization_id
744 AND t.LANGUAGE = USERENV ('LANG')
745 AND b.inventory_item_id = p_product_item
746 AND ROWNUM < 2;
747
748 l_object_code okc_k_items.jtot_object1_code%TYPE;
749 l_object1_id1 okc_k_items.object1_id1%TYPE;
750 l_object1_id2 okc_k_items.object1_id2%TYPE;
751 l_no_of_items okc_k_items.number_of_items%TYPE;
752 l_name VARCHAR2 (2000);
753 l_desc VARCHAR2 (2000);
754 l_formatted_invoice_text VARCHAR2 (2000);
755 BEGIN
756 OPEN l_inv_csr (p_product_item);
757
758 FETCH l_inv_csr
759 INTO l_name, l_desc;
760
761 CLOSE l_inv_csr;
762
763 IF fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE') = 'DISPLAY_DESC'
764 THEN
765 l_desc := l_name; --l_desc;
766 ELSE
767 l_desc := l_desc; --l_name;
768 END IF;
769
770 l_formatted_invoice_text :=
771 SUBSTR ( p_item_desc
772 || ':'
773 || p_qty
774 || ':'
775 || l_desc
776 || ':'
777 || to_char(p_start_date,'DD-MON-YYYY')
778 || ':'
779 || to_char(p_end_date,'DD-MON-YYYY'),
780 1,
781 450
782 );
783 RETURN (l_formatted_invoice_text);
784 END getformattedinvoicetext;
785
786 -----------------------------------------------------------------------
787 -- Get Contract Hearder Id
788 -----------------------------------------------------------------------
789 FUNCTION get_k_hdr_id (
790 p_type VARCHAR2,
791 p_object_id IN NUMBER,
792 p_enddate IN DATE
793 )
794 RETURN NUMBER
795 IS
796 CURSOR l_kexists_csr (p_jtf_id VARCHAR2)
797 IS
798 SELECT chr_id
799 FROM okc_k_rel_objs
800 WHERE object1_id1 = TO_CHAR (p_object_id)
801 AND jtot_object1_code = p_jtf_id;
802
803 CURSOR l_wexists_csr (p_jtf_id VARCHAR2)
804 IS
805 SELECT chr_id
806 FROM okc_k_rel_objs
807 WHERE object1_id1 = TO_CHAR (p_object_id)
808 AND jtot_object1_code = p_jtf_id
809 AND rty_code = 'CONTRACTWARRANTYORDER';
810
811 l_wchrid NUMBER;
812 l_kchrid NUMBER;
813 l_jtf_id VARCHAR2 (30);
814
815 CURSOR l_hdr_csr
816 IS
817 SELECT ID chr_id
818 FROM okc_k_headers_v
819 WHERE attribute1 = p_object_id AND end_date = p_enddate;
820 BEGIN
821 IF p_type = 'ORDER'
822 THEN
823 l_jtf_id := g_jtf_order_hdr;
824
825 OPEN l_kexists_csr (l_jtf_id);
826
827 FETCH l_kexists_csr
828 INTO l_kchrid;
829
830 IF l_kexists_csr%NOTFOUND
831 THEN
832 CLOSE l_kexists_csr;
833
834 RETURN (NULL);
835 END IF;
836
837 CLOSE l_kexists_csr;
838
839 RETURN (l_kchrid);
840 ELSIF p_type = 'RENEW'
841 THEN
842 OPEN l_hdr_csr;
843
844 FETCH l_hdr_csr
845 INTO l_kchrid;
846
847 IF l_hdr_csr%NOTFOUND
848 THEN
849 CLOSE l_hdr_csr;
850
851 RETURN (NULL);
852 END IF;
853
854 CLOSE l_hdr_csr;
855
856 RETURN (l_kchrid);
857 ELSIF p_type = 'WARR'
858 THEN
859 l_jtf_id := g_jtf_order_hdr;
860
861 OPEN l_wexists_csr (l_jtf_id);
862
863 FETCH l_wexists_csr
864 INTO l_wchrid;
865
866 IF l_wexists_csr%NOTFOUND
867 THEN
868 CLOSE l_wexists_csr;
869
870 RETURN (NULL);
871 END IF;
872
873 CLOSE l_wexists_csr;
874
875 RETURN (l_wchrid);
876 END IF;
877 END get_k_hdr_id;
878
879 FUNCTION priced_yn (p_lse_id IN NUMBER)
880 RETURN VARCHAR2
881 IS
882 CURSOR c_priced_yn
883 IS
884 SELECT priced_yn
885 FROM okc_line_styles_b
886 WHERE ID = p_lse_id;
887
888 v_priced VARCHAR2 (50) := 'N';
889 BEGIN
890 FOR cur_c_priced_yn IN c_priced_yn
891 LOOP
892 v_priced := cur_c_priced_yn.priced_yn;
893 EXIT;
894 END LOOP;
895
896 RETURN (v_priced);
897 END priced_yn;
898
899 FUNCTION check_strmlvl_exists (p_cle_id IN NUMBER)
900 RETURN NUMBER
901 IS
902 CURSOR l_billsch_csr (p_cle_id IN NUMBER)
903 IS
904 SELECT ID
905 FROM oks_stream_levels_v
906 WHERE cle_id = p_cle_id;
907
908 l_strmlvl_id NUMBER;
909 BEGIN
910 OPEN l_billsch_csr (p_cle_id);
911
912 FETCH l_billsch_csr
913 INTO l_strmlvl_id;
914
915 IF (l_billsch_csr%FOUND)
916 THEN
917 RETURN (l_strmlvl_id);
918 ELSE
919 RETURN (NULL);
920 END IF;
921
922 CLOSE l_billsch_csr;
923 EXCEPTION
924 WHEN NO_DATA_FOUND
925 THEN
926 RETURN (NULL);
927 END;
928
929 FUNCTION check_lvlelements_exists (p_cle_id IN NUMBER)
930 RETURN BOOLEAN
931 IS
932 CURSOR l_billsll_csr (p_cle_id IN NUMBER)
933 IS
934 SELECT 'x'
935 FROM oks_stream_levels_v sll, oks_level_elements lvl
936 WHERE lvl.rul_id = sll.ID AND sll.cle_id = p_cle_id;
937
938 v_flag BOOLEAN := FALSE;
939 v_temp VARCHAR2 (5);
940 BEGIN
941 OPEN l_billsll_csr (p_cle_id);
942
943 FETCH l_billsll_csr
944 INTO v_temp;
945
946 IF (l_billsll_csr%FOUND)
947 THEN
948 v_flag := TRUE;
949 ELSE
950 v_flag := FALSE;
951 END IF;
952
953 CLOSE l_billsll_csr;
954
955 RETURN (v_flag);
956 END;
957
958 /*************************************************************
959 Creates a record in operation instances for Transfer, Split, Replace
960 and Update transactions.
961 **************************************************************/
962 PROCEDURE create_operation_instance (
963 p_target_chr_id NUMBER,
964 p_transaction VARCHAR2,
965 x_oper_instance_id OUT NOCOPY NUMBER,
966 x_return_status OUT NOCOPY VARCHAR2,
967 x_msg_count OUT NOCOPY NUMBER,
968 x_msg_data OUT NOCOPY VARCHAR2
969 )
970 IS
971 CURSOR cop_csr (p_opn_code VARCHAR2)
972 IS
973 SELECT ID
974 FROM okc_class_operations
975 WHERE cls_code = (SELECT cls_code
976 FROM okc_subclasses_b
977 WHERE code = 'SERVICE')
978 AND opn_code = p_opn_code;
979
980 l_cop_id NUMBER;
981 l_api_version CONSTANT NUMBER := 1.0;
982 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
983 l_return_status VARCHAR2 (1) := 'S';
984 l_oiev_tbl_in okc_oper_inst_pvt.oiev_tbl_type;
985 l_oiev_tbl_out okc_oper_inst_pvt.oiev_tbl_type;
986 BEGIN
987 x_return_status := l_return_status;
988
989 -- get class operation id
990 OPEN cop_csr (p_transaction);
991
992 FETCH cop_csr
993 INTO l_cop_id;
994
995 CLOSE cop_csr;
996
997 l_oiev_tbl_in (1).status_code := 'PROCESSED';
998 l_oiev_tbl_in (1).cop_id := l_cop_id;
999 l_oiev_tbl_in (1).target_chr_id := p_target_chr_id;
1000 okc_oper_inst_pub.create_operation_instance
1001 (p_api_version => l_api_version,
1002 p_init_msg_list => l_init_msg_list,
1003 x_return_status => l_return_status,
1004 x_msg_count => x_msg_count,
1005 x_msg_data => x_msg_data,
1006 p_oiev_tbl => l_oiev_tbl_in,
1007 x_oiev_tbl => l_oiev_tbl_out
1008 );
1009 x_oper_instance_id := l_oiev_tbl_out (1).ID;
1010 x_return_status := l_return_status;
1011 EXCEPTION
1012 WHEN OTHERS
1013 THEN
1014 x_return_status := okc_api.g_ret_sts_unexp_error;
1015 okc_api.set_message (g_app_name,
1016 g_unexpected_error,
1017 g_sqlcode_token,
1018 SQLCODE,
1019 g_sqlerrm_token,
1020 SQLERRM
1021 );
1022 END;
1023
1024 /***********************************************
1025 Create operation lines , linking the old and new lines
1026 for Split, replace, transfer and update transactions
1027 ***********************************************/
1028 PROCEDURE create_operation_lines (
1029 p_source_line_id NUMBER,
1030 p_target_line_id NUMBER,
1031 p_source_chr_id NUMBER,
1032 p_target_chr_id NUMBER,
1033 p_opr_instance_id NUMBER,
1034 x_return_status OUT NOCOPY VARCHAR2,
1035 x_msg_count OUT NOCOPY NUMBER,
1036 x_msg_data OUT NOCOPY VARCHAR2
1037 )
1038 IS
1039 l_api_version CONSTANT NUMBER := 1.0;
1040 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
1041 l_return_status VARCHAR2 (1) := 'S';
1042 l_olev_tbl_in okc_oper_inst_pvt.olev_tbl_type;
1043 l_olev_tbl_out okc_oper_inst_pvt.olev_tbl_type;
1044 BEGIN
1045 x_return_status := l_return_status;
1046 l_olev_tbl_in (1).oie_id := p_opr_instance_id;
1047 l_olev_tbl_in (1).process_flag := 'P';
1048 l_olev_tbl_in (1).subject_chr_id := p_target_chr_id;
1049 l_olev_tbl_in (1).object_chr_id := p_source_chr_id;
1050 l_olev_tbl_in (1).subject_cle_id := p_target_line_id;
1051 l_olev_tbl_in (1).object_cle_id := p_source_line_id;
1052 l_olev_tbl_in (1).active_yn := 'Y';
1053 okc_oper_inst_pub.create_operation_line
1054 (p_api_version => l_api_version,
1055 p_init_msg_list => l_init_msg_list,
1056 x_return_status => l_return_status,
1057 x_msg_count => x_msg_count,
1058 x_msg_data => x_msg_data,
1059 p_olev_tbl => l_olev_tbl_in,
1060 x_olev_tbl => l_olev_tbl_out
1061 );
1062 x_return_status := l_return_status;
1063 EXCEPTION
1064 WHEN OTHERS
1065 THEN
1066 x_return_status := okc_api.g_ret_sts_unexp_error;
1067 okc_api.set_message (g_app_name,
1068 g_unexpected_error,
1069 g_sqlcode_token,
1070 SQLCODE,
1071 g_sqlerrm_token,
1072 SQLERRM
1073 );
1074 END;
1075
1076 /***********************************************
1077
1078 Check if two contract headers can be merged for
1079 System Transfers
1080 ************************************************/
1081 PROCEDURE header_merge_yn (
1082 p_source_chr_id IN NUMBER,
1083 p_target_chr_id IN NUMBER,
1084 p_sts_code IN VARCHAR2,
1085 x_eligible_yn OUT NOCOPY VARCHAR2,
1086 x_msg_count OUT NOCOPY NUMBER,
1087 x_msg_data OUT NOCOPY VARCHAR2,
1088 x_return_status OUT NOCOPY VARCHAR2
1089 )
1090 IS
1091 -- [Signed] [Active] (Profile) <=> [Signed] [Active](Target)
1092 -- [Entered] (Profile) => [Entered, Active] (Target)
1093 CURSOR source_csr (l_chr_id NUMBER)
1094 IS
1095 SELECT a.payment_term_id, a.price_list_id, c.ste_code, --a.STS_CODE,
1096 a.authoring_org_id, a.currency_code, a.template_yn,
1097 a.conversion_type, a.conversion_rate, a.conversion_rate_date,
1098 a.conversion_euro_rate, b.inv_trx_type, b.ar_interface_yn,
1099 b.summary_trx_yn, b.hold_billing, a.inv_organization_id,
1100 a.scs_code, c.ste_code source_ste_code, b.period_start,
1101 b.period_type, b.price_uom, a.billed_at_source
1102 FROM okc_k_headers_all_b a, oks_k_headers_b b, okc_statuses_b c
1103 WHERE a.ID = l_chr_id AND a.ID = b.chr_id AND p_sts_code = c.code;
1104
1105 -- and c.ste_code in ('ACTIVE','ENTERED','SIGNED');
1106
1107 -- Comparing the profile value 'OKS_TRANSFER_STATUS' with target ste_code
1108 CURSOR target_csr (
1109 l_target_chr_id NUMBER,
1110 l_pay_term NUMBER,
1111 l_price_list NUMBER,
1112 l_profile VARCHAR2,
1113 l_source_ste_code VARCHAR2,
1114 l_org_id NUMBER,
1115 l_curr_code VARCHAR2,
1116 l_temp_yn VARCHAR2,
1117 l_conv_type VARCHAR2,
1118 l_conv_rate VARCHAR2,
1119 l_conv_rate_date DATE,
1120 l_conv_euro NUMBER,
1121 l_trx_type VARCHAR2,
1122 l_ar_int VARCHAR2,
1123 l_sum_trx VARCHAR2,
1124 l_hold_bill VARCHAR2,
1125 l_inv_org_id NUMBER,
1126 l_scs_code VARCHAR2,
1127 l_period_start VARCHAR2,
1128 l_period_type VARCHAR2,
1129 l_price_uom VARCHAR2,
1130 l_billed_at_source VARCHAR2
1131 )
1132 IS
1133 SELECT a.ID
1134 FROM okc_k_headers_all_b a, oks_k_headers_b b, okc_statuses_b c
1135 WHERE a.ID = l_target_chr_id
1136 AND a.ID = b.chr_id
1137 AND a.sts_code= c.code --Bug fix 5614310
1138 AND c.ste_code IN ('ACTIVE', 'ENTERED', 'SIGNED')
1139 AND ( DECODE (DECODE (l_source_ste_code,
1140 'ACTIVE', 1,
1141 'SIGNED', 1,
1142 'HOLD', 1,
1143 0
1144 ),
1145 DECODE (l_profile, 'ACTIVE', 1, 2), 1,
1146 3
1147 ) =
1148 DECODE (c.ste_code,
1149 'ACTIVE', 1,
1150 'SIGNED', 1,
1151 4
1152 )
1153 OR DECODE (DECODE (l_source_ste_code,
1154 'ACTIVE', 1,
1155 'SIGNED', 1,
1156 'HOLD', 1,
1157 0
1158 ),
1159 DECODE (l_profile, 'ENTERED', 1, 2), 1,
1160 3
1161 ) = DECODE (c.ste_code, 'ENTERED', 1, 4)
1162 OR DECODE (l_source_ste_code, 'ENTERED', 1, 2) =
1163 DECODE (c.ste_code,
1164 'ENTERED', 1,
1165 3
1166 )
1167 )
1168 AND NVL (a.payment_term_id, -99) = NVL (l_pay_term, -99)
1169 AND NVL (a.price_list_id, -99) = NVL (l_price_list, -99)
1170 AND a.authoring_org_id = l_org_id
1171 AND a.currency_code = l_curr_code
1172 AND a.template_yn = l_temp_yn
1173 AND NVL (a.conversion_type, -99) = NVL (l_conv_type, -99)
1174 AND NVL (a.conversion_rate, -99) = NVL (l_conv_rate, -99)
1175 AND DECODE (a.conversion_rate_date,
1176 NULL, -99,
1177 SYSDATE - TRUNC (a.conversion_rate_date)
1178 ) =
1179 DECODE (l_conv_rate_date,
1180 NULL, -99,
1181 SYSDATE - TRUNC (l_conv_rate_date)
1182 )
1183 AND NVL (a.conversion_euro_rate, -99) = NVL (l_conv_euro, -99)
1184 AND NVL (b.inv_trx_type, -99) = NVL (l_trx_type, -99)
1185 AND NVL (b.ar_interface_yn, -99) = NVL (l_ar_int, -99)
1186 AND NVL (b.summary_trx_yn, -99) = NVL (l_sum_trx, -99)
1187 AND NVL (b.hold_billing, -99) = NVL (l_hold_bill, -99)
1188 AND NVL (a.inv_organization_id, -99) = NVL (l_inv_org_id, -99)
1189 AND NVL (a.scs_code, -99) = NVL (l_scs_code, -99)
1190 AND NVL (b.period_start, -99) = NVL (l_period_start, -99)
1191 AND NVL (b.period_type, -99) = NVL (l_period_type, -99)
1192 AND NVL (b.price_uom, -99) = NVL (l_price_uom, -99)
1193 AND NVL (a.billed_at_source, '-99') = NVL(l_billed_at_source, '-99');
1194
1195 l_target_rec target_csr%ROWTYPE;
1196 l_source_rec source_csr%ROWTYPE;
1197 BEGIN
1198 x_return_status := okc_api.g_ret_sts_success;
1199
1200 OPEN source_csr (p_source_chr_id);
1201
1202 FETCH source_csr
1203 INTO l_source_rec;
1204
1205 CLOSE source_csr;
1206
1207 OPEN target_csr (p_target_chr_id,
1208 l_source_rec.payment_term_id,
1209 l_source_rec.price_list_id,
1210 fnd_profile.VALUE ('OKS_TRANSFER_STATUS'),
1211 l_source_rec.source_ste_code,
1212 l_source_rec.authoring_org_id,
1213 l_source_rec.currency_code,
1214 l_source_rec.template_yn,
1215 l_source_rec.conversion_type,
1216 l_source_rec.conversion_rate,
1217 l_source_rec.conversion_rate_date,
1218 l_source_rec.conversion_euro_rate,
1219 l_source_rec.inv_trx_type,
1220 l_source_rec.ar_interface_yn,
1221 l_source_rec.summary_trx_yn,
1222 l_source_rec.hold_billing,
1223 l_source_rec.inv_organization_id,
1224 l_source_rec.scs_code,
1225 l_source_rec.period_start,
1226 l_source_rec.period_type,
1227 l_source_rec.price_uom,
1228 l_source_rec.billed_at_source
1229 );
1230
1231 FETCH target_csr
1232 INTO l_target_rec;
1233
1234 IF target_csr%NOTFOUND
1235 THEN
1236 x_eligible_yn := 'N';
1237 ELSE
1238 x_eligible_yn := 'Y';
1239 END IF;
1240
1241 CLOSE target_csr;
1242 EXCEPTION
1243 WHEN OTHERS
1244 THEN
1245 x_return_status := okc_api.g_ret_sts_unexp_error;
1246 okc_api.set_message (g_app_name,
1247 g_unexpected_error,
1248 g_sqlcode_token,
1249 SQLCODE,
1250 g_sqlerrm_token,
1251 SQLERRM
1252 );
1253 END header_merge_yn;
1254
1255 /***********************************************
1256
1257 Check if two contract lines can be merged for
1258 System Transfers
1259 ************************************************/
1260 PROCEDURE line_merge_yn (
1261 p_source_line_id IN NUMBER,
1262 p_target_line_id IN NUMBER,
1263 p_source_flag IN VARCHAR2,
1264 x_eligible_yn OUT NOCOPY VARCHAR2,
1265 x_msg_count OUT NOCOPY NUMBER,
1266 x_msg_data OUT NOCOPY VARCHAR2,
1267 x_return_status OUT NOCOPY VARCHAR2
1268 )
1269 IS
1270 -- [Signed] [Active] (Profile) <=> [Signed] [Active] (Target)
1271 -- [Entered] (Profile) => [Entered, Active] (Target)
1272 CURSOR source_line (l_line_id NUMBER)
1273 IS
1274 SELECT b.acct_rule_id, a.price_list_id, c.ste_code, a.lse_id,
1275 a.bill_to_site_use_id, a.line_renewal_type_code,
1276 b.tax_code --Fix for bug 4121175
1277 ,
1278 b.price_uom
1279 FROM okc_k_lines_b a, oks_k_lines_b b, okc_statuses_b c
1280 WHERE a.ID = l_line_id AND a.ID = b.cle_id AND a.sts_code = c.code;
1281
1282 CURSOR service_item (l_line_id NUMBER)
1283 IS
1284 SELECT object1_id1
1285 FROM okc_k_items
1286 WHERE cle_id = l_line_id AND jtot_object1_code LIKE 'OKX_SYSITEM';
1287
1288 -- if date_completed is not null then it's billed.
1289 CURSOR get_date_complete (l_line_id NUMBER)
1290 IS
1291 SELECT a.date_completed
1292 FROM oks_level_elements a, oks_stream_levels_b b
1293 WHERE b.cle_id = l_line_id AND a.rul_id = b.ID;
1294
1295 CURSOR target_line (
1296 l_line_id NUMBER,
1297 l_acct_rule_id NUMBER,
1298 l_price_list_id NUMBER,
1299 l_ste_code VARCHAR2,
1300 l_lse_id NUMBER,
1301 l_flag VARCHAR2,
1302 l_bill_to_site_use_id NUMBER,
1303 l_line_renewal_type_code VARCHAR2,
1304 l_tax_code VARCHAR2,
1305 l_price_uom VARCHAR2
1306 )
1307 IS
1308 SELECT a.ID
1309 FROM okc_k_lines_b a, oks_k_lines_b b, okc_statuses_b c
1310 WHERE a.ID = l_line_id
1311 AND a.ID = b.cle_id
1312 AND a.sts_code = c.code
1313 AND c.ste_code IN ('ACTIVE', 'ENTERED', 'SIGNED')
1314 AND NVL (b.acct_rule_id, -99) = NVL (l_acct_rule_id, -99)
1315 AND NVL (b.tax_code, -99) = NVL (l_tax_code, -99)
1316 --Fix for bug 4121175
1317 AND NVL (b.price_uom, -99) = NVL (l_price_uom, -99)
1318 AND NVL (a.price_list_id, -99) = NVL (l_price_list_id, -99)
1319 /*
1320 AND ( c.ste_code = l_ste_code
1321 OR decode (l_ste_code, 'SIGNED', 1, 'ACTIVE', 1, 4) =
1322 decode(c.ste_code, 'SIGNED', 1, 'ACTIVE', 1, 3)
1323 )
1324 */
1325 AND a.lse_id = l_lse_id
1326 AND ( DECODE (l_flag, 'N', 0, 1) = 0
1327 OR ( DECODE (l_flag, 'Y', 1, 0) = 1
1328 AND NVL (a.bill_to_site_use_id, -99) =
1329 NVL (l_bill_to_site_use_id,
1330 -99)
1331 AND NVL (a.line_renewal_type_code, -99) =
1332 NVL (l_line_renewal_type_code,
1333 -99)
1334 )
1335 );
1336
1337 CURSOR sales_credit_csr (l_line_id NUMBER)
1338 IS
1339 SELECT PERCENT, sc.sales_credit_type_id1, sct.quota_flag,
1340 sc.ctc_id sales_person_id, sc.sales_group_id
1341 FROM oks_k_sales_credits sc, oe_sales_credit_types sct
1342 WHERE sc.sales_credit_type_id1 = sct.sales_credit_type_id
1343 AND sc.cle_id = l_line_id;
1344
1345 CURSOR target_sales_credit_csr (
1346 l_line_id NUMBER,
1347 l_percent NUMBER,
1348 l_sales_credit_type_id1 NUMBER,
1349 l_quota_flag VARCHAR2,
1350 l_sales_person_id NUMBER,
1351 l_sales_group_id NUMBER
1352 )
1353 IS
1354 SELECT PERCENT, sc.sales_credit_type_id1, sct.quota_flag,
1355 sc.ctc_id sales_person_id, sc.sales_group_id
1356 FROM oks_k_sales_credits sc, oe_sales_credit_types sct
1357 WHERE sc.sales_credit_type_id1 = sct.sales_credit_type_id
1358 AND sc.cle_id = l_line_id
1359 AND PERCENT = l_percent
1360 AND sc.sales_credit_type_id1 = l_sales_credit_type_id1
1361 AND sct.quota_flag = l_quota_flag
1362 AND sc.ctc_id = l_sales_person_id
1363 AND NVL (sc.sales_group_id, -99) = NVL (l_sales_group_id, -99);
1364
1365 CURSOR sales_credit_count_csr (l_line_id NUMBER)
1366 IS
1367 SELECT COUNT (*)
1368 FROM oks_k_sales_credits
1369 WHERE cle_id = l_line_id;
1370
1371 l_source_rec source_line%ROWTYPE;
1372 l_target_rentype target_line%ROWTYPE;
1373 l_target_sales_rec target_sales_credit_csr%ROWTYPE;
1374 l_source_sales_count NUMBER;
1375 l_target_sales_count NUMBER;
1376 l_target_bill_completed DATE;
1377 l_source_bill_completed DATE;
1378 l_source_service_item_id NUMBER;
1379 l_target_service_item_id NUMBER;
1380 l_api_version CONSTANT NUMBER := 1.0;
1381 l_init_msg_list VARCHAR2 (2000) := okc_api.g_false;
1382 l_return_status VARCHAR2 (1);
1383 BEGIN
1384 l_return_status := okc_api.g_ret_sts_success;
1385
1386 OPEN source_line (p_source_line_id);
1387
1388 FETCH source_line
1389 INTO l_source_rec;
1390
1391 CLOSE source_line;
1392
1393 -- Check invoice rule, accounting rule, price list id , currency code,
1394 -- status, line style id, payment type, billing schedule type.
1395 OPEN target_line (p_target_line_id,
1396 l_source_rec.acct_rule_id,
1397 l_source_rec.price_list_id,
1398 fnd_profile.VALUE ('OKS_TRANSFER_STATUS'),
1399 l_source_rec.lse_id,
1400 p_source_flag,
1401 l_source_rec.bill_to_site_use_id,
1402 l_source_rec.line_renewal_type_code,
1403 l_source_rec.tax_code,
1404 l_source_rec.price_uom
1405 );
1406
1407 FETCH target_line
1408 INTO l_target_rentype;
1409
1410 IF target_line%NOTFOUND
1411 THEN
1412 x_eligible_yn := 'N';
1413 ELSE
1414 ------------------------- Check Service Item Id ------------------------
1415 OPEN service_item (p_source_line_id);
1416
1417 FETCH service_item
1418 INTO l_source_service_item_id;
1419
1420 CLOSE service_item;
1421
1422 OPEN service_item (p_target_line_id);
1423
1424 FETCH service_item
1425 INTO l_target_service_item_id;
1426
1427 CLOSE service_item;
1428
1429 IF NVL (l_target_service_item_id, -99) =
1430 NVL (l_source_service_item_id,
1431 -99)
1432 THEN
1433 x_eligible_yn := 'Y';
1434 END IF;
1435
1436 -------------------------- Check Coverage -----------------------------
1437 IF x_eligible_yn = 'Y'
1438 AND fnd_profile.VALUE ('OKS_CHECK_COV_MATCH') = 'Y'
1439 THEN
1440 oks_coverages_pub.check_coverage_match
1441 (p_api_version => l_api_version,
1442 p_init_msg_list => l_init_msg_list,
1443 x_return_status => l_return_status,
1444 x_msg_count => x_msg_count,
1445 x_msg_data => x_msg_data,
1446 p_source_contract_line_id => p_source_line_id,
1447 p_target_contract_line_id => p_target_line_id,
1448 x_coverage_match => x_eligible_yn
1449 );
1450
1451 IF l_return_status <> okc_api.g_ret_sts_success
1452 THEN
1453 CLOSE target_line;
1454
1455 RAISE g_exception_halt_validation;
1456 END IF;
1457 END IF;
1458
1459 -- Vigandhi 06/10/2004
1460 -- Remove the check for date completed for line merging.
1461 /* --------------------- Check Date Completed -----------------------
1462 If x_eligible_yn = 'Y' Then
1463 -- The billing is one time so we'll only have one level element.
1464 Open get_date_complete(p_source_line_id);
1465 Fetch get_date_complete into l_source_bill_completed;
1466 Close get_date_complete;
1467
1468 Open get_date_complete(p_target_line_id);
1469 Fetch get_date_complete into l_target_bill_completed;
1470 Close get_date_complete;
1471
1472 If l_source_bill_completed is null and l_target_bill_completed is null then
1473 x_eligible_yn := 'Y';
1474 Elsif l_source_bill_completed is not null and l_target_bill_completed is not null
1475 and trunc(l_source_bill_completed) = trunc(l_target_bill_completed) then
1476 x_eligible_yn := 'Y';
1477 Else
1478 x_eligible_yn := 'N';
1479 End If;
1480
1481 End If; */
1482 --------------------- Check Sales Credit -----------------------
1483 IF x_eligible_yn = 'Y'
1484 THEN
1485 OPEN sales_credit_count_csr (p_source_line_id);
1486
1487 FETCH sales_credit_count_csr
1488 INTO l_source_sales_count;
1489
1490 CLOSE sales_credit_count_csr;
1491
1492 OPEN sales_credit_count_csr (p_target_line_id);
1493
1494 FETCH sales_credit_count_csr
1495 INTO l_target_sales_count;
1496
1497 CLOSE sales_credit_count_csr;
1498
1499 IF l_source_sales_count <> l_target_sales_count
1500 THEN
1501 x_eligible_yn := 'N';
1502 ELSE
1503 FOR sales_credit_rec IN sales_credit_csr (p_source_line_id)
1504 LOOP
1505 OPEN target_sales_credit_csr
1506 (p_target_line_id,
1507 sales_credit_rec.PERCENT,
1508 sales_credit_rec.sales_credit_type_id1,
1509 sales_credit_rec.quota_flag,
1510 sales_credit_rec.sales_person_id,
1511 sales_credit_rec.sales_group_id
1512 );
1513
1514 FETCH target_sales_credit_csr
1515 INTO l_target_sales_rec;
1516
1517 IF target_sales_credit_csr%NOTFOUND
1518 THEN
1519 x_eligible_yn := 'N';
1520
1521 CLOSE target_sales_credit_csr;
1522
1523 EXIT;
1524 END IF;
1525
1526 CLOSE target_sales_credit_csr;
1527 END LOOP;
1528 END IF; -- l_source_sales_count <> l_target_sales_count
1529 END IF; -- x_eligible_yn = 'Y'
1530 --------------------- Check Sales Credit Finished -----------------------
1531 END IF; -- target_line%NOTFOUND
1532
1533 CLOSE target_line;
1534
1535 x_return_status := l_return_status;
1536 EXCEPTION
1537 WHEN g_exception_halt_validation
1538 THEN
1539 x_return_status := l_return_status;
1540 WHEN OTHERS
1541 THEN
1542 x_return_status := okc_api.g_ret_sts_unexp_error;
1543 okc_api.set_message (g_app_name,
1544 g_unexpected_error,
1545 g_sqlcode_token,
1546 SQLCODE,
1547 g_sqlerrm_token,
1548 SQLERRM
1549 );
1550 END line_merge_yn;
1551
1552 PROCEDURE check_line_effectivity (
1553 p_cle_id IN NUMBER,
1554 p_srv_sdt IN DATE,
1555 p_srv_edt IN DATE,
1556 x_line_sdt OUT NOCOPY DATE,
1557 x_line_edt OUT NOCOPY DATE,
1558 x_status OUT NOCOPY VARCHAR2
1559 )
1560 IS
1561 CURSOR l_line_csr
1562 IS
1563 SELECT start_date, end_date
1564 FROM okc_k_lines_b
1565 WHERE ID = p_cle_id;
1566
1567 l_line_csr_rec l_line_csr%ROWTYPE;
1568 BEGIN
1569 OPEN l_line_csr;
1570
1571 FETCH l_line_csr
1572 INTO l_line_csr_rec;
1573
1574 IF l_line_csr%FOUND
1575 THEN
1576 IF p_srv_sdt >= l_line_csr_rec.start_date
1577 AND p_srv_edt <= l_line_csr_rec.end_date
1578 THEN
1579 x_status := 'N';
1580 ELSE
1581 IF p_srv_sdt >= l_line_csr_rec.start_date
1582 THEN
1583 x_line_sdt := l_line_csr_rec.start_date;
1584 ELSE
1585 x_line_sdt := p_srv_sdt;
1586 END IF;
1587
1588 IF p_srv_edt >= l_line_csr_rec.end_date
1589 THEN
1590 x_line_edt := p_srv_edt;
1591 ELSE
1592 x_line_edt := l_line_csr_rec.end_date;
1593 END IF;
1594
1595 x_status := 'Y';
1596 END IF;
1597 ELSE
1598 x_status := 'E';
1599 END IF;
1600 END;
1601
1602 PROCEDURE update_line_dates (
1603 p_cle_id IN NUMBER,
1604 p_chr_id IN NUMBER,
1605 p_new_sdt IN DATE,
1606 p_new_edt IN DATE,
1607 p_sts_flag IN VARCHAR2,
1608 p_warranty_flag IN VARCHAR2,
1609 x_status OUT NOCOPY VARCHAR2,
1610 x_msg_count OUT NOCOPY NUMBER,
1611 x_msg_data OUT NOCOPY VARCHAR2
1612 )
1613 IS
1614 CURSOR l_rulegroup_csr
1615 IS
1616 SELECT inv_rule_id
1617 FROM okc_k_lines_b
1618 WHERE cle_id = p_cle_id AND dnz_chr_id = p_chr_id;
1619
1620 --General
1621 l_api_version CONSTANT NUMBER := 1.0;
1622 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
1623 l_return_status VARCHAR2 (1) := 'S';
1624 l_index VARCHAR2 (2000);
1625 --Contract Line
1626 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
1627 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
1628 l_cleid NUMBER;
1629 l_rgp_id NUMBER;
1630 l_rule_id NUMBER;
1631 l_invoice_rule_id NUMBER;
1632 l_ste_code VARCHAR2 (30);
1633 l_sts_code VARCHAR2 (30);
1634 BEGIN
1635 x_status := okc_api.g_ret_sts_success;
1636
1637 IF p_sts_flag = 'Y'
1638 THEN
1639 IF p_new_sdt > SYSDATE
1640 THEN
1641 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
1642 l_clev_tbl_in (1).sts_code := l_sts_code;
1643 ELSIF p_new_sdt <= SYSDATE AND p_new_edt >= SYSDATE
1644 THEN
1645 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
1646 l_clev_tbl_in (1).sts_code := l_sts_code;
1647 ELSIF p_new_edt < SYSDATE
1648 THEN
1649 get_sts_code ('EXPIRED', NULL, l_ste_code, l_sts_code);
1650 l_clev_tbl_in (1).sts_code := l_sts_code;
1651 END IF;
1652 END IF;
1653
1654 --Contract Header Date Update
1655 l_clev_tbl_in (1).ID := p_cle_id;
1656 l_clev_tbl_in (1).start_date := p_new_sdt;
1657 l_clev_tbl_in (1).end_date := p_new_edt;
1658 okc_contract_pub.update_contract_line
1659 (p_api_version => l_api_version,
1660 p_init_msg_list => l_init_msg_list,
1661 p_restricted_update => okc_api.g_true,
1662 x_return_status => l_return_status,
1663 x_msg_count => x_msg_count,
1664 x_msg_data => x_msg_data,
1665 p_clev_tbl => l_clev_tbl_in,
1666 x_clev_tbl => l_clev_tbl_out
1667 );
1668
1669 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1670 THEN
1671 fnd_log.STRING
1672 (fnd_log.level_event,
1673 g_module_current || '.Update_Line_Dates.external_call.after',
1674 'okc_contract_pub.update_contract_line(Return status = '
1675 || l_return_status
1676 || ')'
1677 );
1678 END IF;
1679
1680 IF l_return_status = 'S'
1681 THEN
1682 l_cleid := l_clev_tbl_out (1).ID;
1683 ELSE
1684 x_status := 'E';
1685 RAISE g_exception_halt_validation;
1686 END IF;
1687 EXCEPTION
1688 WHEN g_exception_halt_validation
1689 THEN
1690 NULL;
1691 WHEN OTHERS
1692 THEN
1693 x_status := okc_api.g_ret_sts_unexp_error;
1694 okc_api.set_message (g_app_name,
1695 g_unexpected_error,
1696 g_sqlcode_token,
1697 SQLCODE,
1698 g_sqlerrm_token,
1699 SQLERRM
1700 );
1701
1702 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level
1703 THEN
1704 fnd_log.STRING (fnd_log.level_exception,
1705 g_module_current
1706 || '.Update_Line_Dates.UNEXPECTED',
1707 'sqlcode = ' || SQLCODE || ', sqlerrm = '
1708 || SQLERRM
1709 );
1710 END IF;
1711 END;
1712
1713 /*-----------------------------------------------------------------
1714 -- warranty/Extwarranty consolidation
1715 -- P_rty_code new parameter
1716 ------------------------------------------------------------------*/
1717 PROCEDURE create_obj_rel (
1718 p_k_id IN NUMBER,
1719 p_line_id IN NUMBER,
1720 p_orderhdrid IN NUMBER,
1721 p_rty_code IN VARCHAR2,
1722 p_orderlineid IN NUMBER,
1723 x_return_status OUT NOCOPY VARCHAR2,
1724 x_msg_count OUT NOCOPY NUMBER,
1725 x_msg_data OUT NOCOPY VARCHAR2,
1726 x_crjv_tbl_out OUT NOCOPY okc_k_rel_objs_pub.crjv_tbl_type
1727 )
1728 IS
1729 l_api_version CONSTANT NUMBER := 1.0;
1730 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
1731 l_return_status VARCHAR2 (1) := 'S';
1732 l_crjv_tbl_in okc_k_rel_objs_pub.crjv_tbl_type;
1733 l_crjv_tbl_out okc_k_rel_objs_pub.crjv_tbl_type;
1734 BEGIN
1735 x_return_status := l_return_status;
1736
1737 IF p_orderhdrid IS NOT NULL
1738 THEN
1739 l_crjv_tbl_in (1).chr_id := p_k_id;
1740 l_crjv_tbl_in (1).object1_id1 := p_orderhdrid;
1741 l_crjv_tbl_in (1).object1_id2 := '#';
1742 l_crjv_tbl_in (1).jtot_object1_code := 'OKX_ORDERHEAD';
1743 --l_crjv_tbl_in( 1 ).rty_code := 'CONTRACTSERVICESORDER';
1744 l_crjv_tbl_in (1).rty_code := p_rty_code;
1745 okc_k_rel_objs_pub.create_row (p_api_version => l_api_version,
1746 p_init_msg_list => l_init_msg_list,
1747 x_return_status => l_return_status,
1748 x_msg_count => x_msg_count,
1749 x_msg_data => x_msg_data,
1750 p_crjv_tbl => l_crjv_tbl_in,
1751 x_crjv_tbl => l_crjv_tbl_out
1752 );
1753
1754 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1755 THEN
1756 fnd_log.STRING
1757 (fnd_log.level_event,
1758 g_module_current
1759 || '.Create_Obj_Rel.external_call_hdr.after',
1760 'okc_k_rel_objs_pub.create_row(Return status = '
1761 || l_return_status
1762 || ')'
1763 );
1764 END IF;
1765
1766 IF l_return_status = 'S'
1767 THEN
1768 x_crjv_tbl_out := l_crjv_tbl_out;
1769 ELSE
1770 x_return_status := l_return_status;
1771 END IF;
1772 ELSIF p_orderlineid IS NOT NULL
1773 THEN
1774 l_crjv_tbl_in (1).cle_id := p_line_id;
1775 l_crjv_tbl_in (1).chr_id := p_k_id; -- Fix for Bug 2844603
1776 l_crjv_tbl_in (1).object1_id1 := p_orderlineid;
1777 l_crjv_tbl_in (1).object1_id2 := '#';
1778 l_crjv_tbl_in (1).jtot_object1_code := 'OKX_ORDERLINE';
1779 --l_crjv_tbl_in(1).rty_code := 'CONTRACTSERVICESORDER';
1780 l_crjv_tbl_in (1).rty_code := p_rty_code;
1781 okc_k_rel_objs_pub.create_row (p_api_version => l_api_version,
1782 p_init_msg_list => l_init_msg_list,
1783 x_return_status => l_return_status,
1784 x_msg_count => x_msg_count,
1785 x_msg_data => x_msg_data,
1786 p_crjv_tbl => l_crjv_tbl_in,
1787 x_crjv_tbl => l_crjv_tbl_out
1788 );
1789
1790 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1791 THEN
1792 fnd_log.STRING
1793 (fnd_log.level_event,
1794 g_module_current
1795 || '.Create_Obj_Rel.external_call_line.after',
1796 'okc_k_rel_objs_pub.create_row(Return status = '
1797 || l_return_status
1798 || ')'
1799 );
1800 END IF;
1801
1802 IF l_return_status = 'S'
1803 THEN
1804 x_crjv_tbl_out := l_crjv_tbl_out;
1805 ELSE
1806 x_return_status := l_return_status;
1807 END IF;
1808 END IF;
1809 EXCEPTION
1810 WHEN OTHERS
1811 THEN
1812 x_return_status := okc_api.g_ret_sts_unexp_error;
1813 okc_api.set_message (g_app_name,
1814 g_unexpected_error,
1815 g_sqlcode_token,
1816 SQLCODE,
1817 g_sqlerrm_token,
1818 SQLERRM
1819 );
1820 END;
1821
1822 PROCEDURE check_hdr_effectivity (
1823 p_chr_id IN NUMBER,
1824 p_srv_sdt IN DATE,
1825 p_srv_edt IN DATE,
1826 x_hdr_sdt OUT NOCOPY DATE,
1827 x_hdr_edt OUT NOCOPY DATE,
1828 x_status OUT NOCOPY VARCHAR2
1829 )
1830 IS
1831 CURSOR l_hdr_csr
1832 IS
1833 SELECT start_date, end_date
1834 FROM okc_k_headers_v
1835 WHERE ID = p_chr_id;
1836
1837 l_hdr_csr_rec l_hdr_csr%ROWTYPE;
1838 BEGIN
1839 OPEN l_hdr_csr;
1840
1841 FETCH l_hdr_csr
1842 INTO l_hdr_csr_rec;
1843
1844 IF l_hdr_csr%FOUND
1845 THEN
1846 IF p_srv_sdt >= l_hdr_csr_rec.start_date
1847 AND p_srv_edt <= l_hdr_csr_rec.end_date
1848 THEN
1849 x_status := 'N';
1850 ELSE
1851 IF p_srv_sdt >= l_hdr_csr_rec.start_date
1852 THEN
1853 x_hdr_sdt := l_hdr_csr_rec.start_date;
1854 ELSE
1855 x_hdr_sdt := p_srv_sdt;
1856 END IF;
1857
1858 IF p_srv_edt >= l_hdr_csr_rec.end_date
1859 THEN
1860 x_hdr_edt := p_srv_edt;
1861 ELSE
1862 x_hdr_edt := l_hdr_csr_rec.end_date;
1863 END IF;
1864
1865 x_status := 'Y';
1866 END IF;
1867 ELSE
1868 x_status := 'E';
1869 END IF;
1870 END;
1871
1872 PROCEDURE update_hdr_dates (
1873 p_chr_id IN NUMBER,
1874 p_new_sdt IN DATE,
1875 p_new_edt IN DATE,
1876 p_sts_flag IN VARCHAR2,
1877 x_status OUT NOCOPY VARCHAR2,
1878 x_msg_count OUT NOCOPY NUMBER,
1879 x_msg_data OUT NOCOPY VARCHAR2
1880 )
1881 IS
1882 --General
1883 l_api_version CONSTANT NUMBER := 1.0;
1884 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
1885 l_return_status VARCHAR2 (1) := 'S';
1886 l_index VARCHAR2 (2000);
1887 --Contract Header
1888 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
1889 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
1890 --Rule Related
1891 --l_rulv_tbl_in okc_rule_pub.rulv_tbl_type;
1892 --l_rulv_tbl_out okc_rule_pub.rulv_tbl_type;
1893 --Time Value Related
1894 l_isev_ext_tbl_in okc_time_pub.isev_ext_tbl_type;
1895 l_isev_ext_tbl_out okc_time_pub.isev_ext_tbl_type;
1896 l_chrid NUMBER;
1897 l_timevalue_id NUMBER;
1898 l_rgp_id NUMBER;
1899 l_rule_id NUMBER;
1900 l_ste_code VARCHAR2 (30);
1901 l_sts_code VARCHAR2 (30);
1902 BEGIN
1903 x_status := okc_api.g_ret_sts_success;
1904
1905 IF p_sts_flag = 'Y'
1906 THEN
1907 IF p_new_sdt > SYSDATE
1908 THEN
1909 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
1910 l_chrv_tbl_in (1).sts_code := l_sts_code;
1911 ELSIF p_new_sdt <= SYSDATE AND p_new_edt >= SYSDATE
1912 THEN
1913 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
1914 l_chrv_tbl_in (1).sts_code := l_sts_code;
1915 ELSIF p_new_edt < SYSDATE
1916 THEN
1917 get_sts_code ('EXPIRED', NULL, l_ste_code, l_sts_code);
1918 l_chrv_tbl_in (1).sts_code := l_sts_code;
1919 END IF;
1920 END IF;
1921
1922 --Contract Header Date Update
1923 l_chrv_tbl_in (1).ID := p_chr_id;
1924 l_chrv_tbl_in (1).start_date := p_new_sdt;
1925 l_chrv_tbl_in (1).end_date := p_new_edt;
1926 okc_contract_pub.update_contract_header
1927 (p_api_version => l_api_version,
1928 p_init_msg_list => l_init_msg_list,
1929 p_restricted_update => okc_api.g_true,
1930 x_return_status => l_return_status,
1931 x_msg_count => x_msg_count,
1932 x_msg_data => x_msg_data,
1933 p_chrv_tbl => l_chrv_tbl_in,
1934 x_chrv_tbl => l_chrv_tbl_out
1935 );
1936
1937 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1938 THEN
1939 fnd_log.STRING
1940 (fnd_log.level_event,
1941 g_module_current || '.Update_Hdr_Dates.external_call.after',
1942 'okc_contract_pub.update_contract_header(Return status = '
1943 || l_return_status
1944 || ')'
1945 );
1946 END IF;
1947
1948 IF l_return_status = 'S'
1949 THEN
1950 l_chrid := l_chrv_tbl_out (1).ID;
1951 ELSE
1952 x_status := 'E';
1953 RAISE g_exception_halt_validation;
1954 --End If;
1955 END IF;
1956 EXCEPTION
1957 WHEN g_exception_halt_validation
1958 THEN
1959 NULL;
1960 WHEN OTHERS
1961 THEN
1962 x_status := okc_api.g_ret_sts_unexp_error;
1963 okc_api.set_message (g_app_name,
1964 g_unexpected_error,
1965 g_sqlcode_token,
1966 SQLCODE,
1967 g_sqlerrm_token,
1968 SQLERRM
1969 );
1970 END;
1971
1972 FUNCTION get_contract_number (p_hdrid IN NUMBER)
1973 RETURN VARCHAR2
1974 IS
1975 CURSOR l_hdr_csr
1976 IS
1977 SELECT contract_number
1978 FROM okc_k_headers_v
1979 WHERE ID = p_hdrid;
1980
1981 l_contract_number VARCHAR2 (120);
1982 BEGIN
1983 OPEN l_hdr_csr;
1984
1985 FETCH l_hdr_csr
1986 INTO l_contract_number;
1987
1988 CLOSE l_hdr_csr;
1989
1990 RETURN l_contract_number;
1991 END;
1992
1993 PROCEDURE launch_workflow (p_msg IN VARCHAR2)
1994 IS
1995 --Workflow attributes
1996 l_itemtype VARCHAR2 (40) := 'OKSWARWF';
1997 l_itemkey VARCHAR2 (240)
1998 := 'OKS-' || TO_CHAR (SYSDATE, 'MMDDYYYYHH24MISS');
1999 l_process VARCHAR2 (40) := 'OKSWARPROC';
2000 l_notify VARCHAR2 (10) := 'Y';
2001 l_receiver VARCHAR2 (30);
2002 l_itemkey_seq INTEGER;
2003 BEGIN
2004 l_notify := NVL (fnd_profile.VALUE ('OKS_INTEGRATION_NOTIFY_YN'), 'NO');
2005 l_receiver :=
2006 NVL (fnd_profile.VALUE ('OKS_INTEGRATION_NOTIFY_TO'), 'SYSADMIN');
2007
2008 IF UPPER (l_notify) = 'YES'
2009 THEN
2010 SELECT oks_wf_item_key_number_s1.NEXTVAL
2011 INTO l_itemkey_seq
2012 FROM DUAL;
2013
2014 l_itemkey := 'OKS-' || l_itemkey_seq;
2015 wf_engine.createprocess (itemtype => l_itemtype,
2016 itemkey => l_itemkey,
2017 process => l_process
2018 );
2019 wf_engine.setitemattrtext (itemtype => l_itemtype,
2020 itemkey => l_itemkey,
2021 aname => 'MSG_TXT',
2022 avalue => p_msg
2023 );
2024 wf_engine.setitemattrtext (itemtype => l_itemtype,
2025 itemkey => l_itemkey,
2026 aname => 'MSG_RECV',
2027 avalue => l_receiver
2028 );
2029 wf_engine.startprocess (itemtype => l_itemtype,
2030 itemkey => l_itemkey);
2031 END IF;
2032 END;
2033
2034 PROCEDURE update_cov_level (
2035 p_covered_line_id IN NUMBER,
2036 p_new_end_date IN DATE,
2037 p_k_item_id IN NUMBER,
2038 p_new_negotiated_amt IN NUMBER,
2039 p_new_cp_qty IN NUMBER,
2040 p_list_price IN NUMBER,
2041 x_return_status OUT NOCOPY VARCHAR2,
2042 x_msg_count OUT NOCOPY NUMBER,
2043 x_msg_data OUT NOCOPY VARCHAR2
2044 )
2045 IS
2046 CURSOR l_parent_line_csr
2047 IS
2048 SELECT cle_id
2049 FROM okc_k_lines_b
2050 WHERE ID = p_covered_line_id;
2051
2052 l_api_version CONSTANT NUMBER := 1.0;
2053 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
2054 l_return_status VARCHAR2 (1) := 'S';
2055 l_index VARCHAR2 (2000);
2056 --Contract Line Table
2057 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
2058 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
2059 --Contract Item
2060 l_cimv_tbl_in okc_contract_item_pub.cimv_tbl_type;
2061 l_cimv_tbl_out okc_contract_item_pub.cimv_tbl_type;
2062 l_parent_line_id NUMBER;
2063 l_line_id NUMBER;
2064 l_line_item_id NUMBER;
2065 BEGIN
2066 IF p_new_end_date IS NOT NULL
2067 THEN
2068 x_return_status := okc_api.g_ret_sts_success;
2069 l_clev_tbl_in (1).ID := p_covered_line_id;
2070 l_clev_tbl_in (1).end_date := p_new_end_date;
2071 okc_contract_pub.update_contract_line
2072 (p_api_version => l_api_version,
2073 p_init_msg_list => l_init_msg_list,
2074 p_restricted_update => okc_api.g_true,
2075 x_return_status => l_return_status,
2076 x_msg_count => x_msg_count,
2077 x_msg_data => x_msg_data,
2078 p_clev_tbl => l_clev_tbl_in,
2079 x_clev_tbl => l_clev_tbl_out
2080 );
2081
2082 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2083 THEN
2084 fnd_log.STRING
2085 (fnd_log.level_event,
2086 g_module_current
2087 || '.update_contract_line.external_call.after',
2088 'okc_contract_pub.update_contract_line(Return status = '
2089 || l_return_status
2090 || ')'
2091 );
2092 END IF;
2093
2094 IF l_return_status <> 'S'
2095 THEN
2096 okc_api.set_message (g_app_name,
2097 g_required_value,
2098 g_col_name_token,
2099 'Contract Line Update(UPDATE SUB LINE)'
2100 );
2101 RAISE g_exception_halt_validation;
2102 END IF;
2103 END IF;
2104
2105 IF p_new_negotiated_amt IS NOT NULL
2106 THEN
2107 x_return_status := okc_api.g_ret_sts_success;
2108 l_clev_tbl_in (1).ID := p_covered_line_id;
2109 l_clev_tbl_in (1).price_negotiated := p_new_negotiated_amt;
2110 l_clev_tbl_in (1).price_unit := p_list_price;
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 || '.Update_Cov_level.external_call.after',
2127 'okc_contract_pub.update_contract_line(Return status = '
2128 || l_return_status
2129 || ')'
2130 );
2131 END IF;
2132
2133 IF l_return_status = 'S'
2134 THEN
2135 l_line_id := l_clev_tbl_out (1).ID;
2136 ELSE
2137 RAISE g_exception_halt_validation;
2138 END IF;
2139 END IF;
2140
2141 IF p_new_cp_qty IS NOT NULL
2142 THEN
2143 l_cimv_tbl_in (1).ID := p_k_item_id;
2144 l_cimv_tbl_in (1).number_of_items := p_new_cp_qty;
2145 okc_contract_item_pub.update_contract_item
2146 (p_api_version => l_api_version,
2147 p_init_msg_list => l_init_msg_list,
2148 x_return_status => l_return_status,
2149 x_msg_count => x_msg_count,
2150 x_msg_data => x_msg_data,
2151 p_cimv_tbl => l_cimv_tbl_in,
2152 x_cimv_tbl => l_cimv_tbl_out
2153 );
2154
2155 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2156 THEN
2157 fnd_log.STRING
2158 (fnd_log.level_event,
2159 g_module_current || '.Update_Cov_level.external_call.after',
2160 'okc_contract_item_pub.update_contract_item(Return status = '
2161 || l_return_status
2162 || ')'
2163 );
2164 END IF;
2165
2166 IF l_return_status = 'S'
2167 THEN
2168 l_line_item_id := l_cimv_tbl_out (1).ID;
2169 ELSE
2170 RAISE g_exception_halt_validation;
2171 END IF;
2172 END IF;
2173 EXCEPTION
2174 WHEN g_exception_halt_validation
2175 THEN
2176 x_return_status := l_return_status;
2177 NULL;
2178 WHEN OTHERS
2179 THEN
2180 x_return_status := okc_api.g_ret_sts_unexp_error;
2181 okc_api.set_message (g_app_name,
2182 g_unexpected_error,
2183 g_sqlcode_token,
2184 SQLCODE,
2185 g_sqlerrm_token,
2186 SQLERRM
2187 );
2188 END;
2189
2190 /***************************************************************************
2191
2192 PROCEDURE CREATE_K_HDR
2193 Creates the Contract Header
2194
2195 ***************************************************************************/
2196 PROCEDURE create_k_hdr (
2197 p_k_header_rec IN k_header_rec_type,
2198 p_contact_tbl IN contact_tbl,
2199 p_salescredit_tbl_in IN salescredit_tbl,
2200 --mmadhavi for bug 4174921
2201 p_caller IN VARCHAR2,
2202 x_order_error OUT NOCOPY VARCHAR2,
2203 x_chr_id OUT NOCOPY NUMBER,
2204 x_return_status OUT NOCOPY VARCHAR2,
2205 x_msg_count OUT NOCOPY NUMBER,
2206 x_msg_data OUT NOCOPY VARCHAR2
2207 )
2208 IS
2209 --Third party id
2210 CURSOR l_thirdparty_csr (p_id NUMBER)
2211 IS
2212 SELECT ca.party_id
2213 FROM okx_customer_accounts_v ca, okx_cust_site_uses_v cs
2214 WHERE ca.id1 = cs.cust_account_id AND cs.id1 = p_id;
2215
2216 --party id
2217 CURSOR l_cust_csr (p_contactid NUMBER)
2218 IS
2219 SELECT party_id
2220 FROM okx_cust_contacts_v
2221 WHERE id1 = p_contactid AND id2 = '#';
2222
2223 CURSOR l_ra_hcontacts_cur (p_contact_id NUMBER)
2224 IS
2225 SELECT hzr.object_id --, subject_id
2226 ,
2227 hzr.party_id
2228 --NPALEPU
2229 --18-JUN-2005,09-AUG-2005
2230 --TCA Project
2231 --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
2232 --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
2233 /* FROM ra_hcontacts rah, hz_party_relationships hzr
2234 WHERE rah.contact_id = p_contact_id
2235 AND rah.party_relationship_id = hzr.party_relationship_id;*/
2236 FROM oks_ra_hcontacts_v rah, hz_relationships hzr
2237 WHERE rah.contact_id = p_contact_id
2238 AND rah.party_relationship_id = hzr.relationship_id
2239 AND hzr.subject_table_name = 'HZ_PARTIES'
2240 AND hzr.object_table_name = 'HZ_PARTIES'
2241 AND hzr.directional_flag = 'F';
2242
2243 --END NPALEPU
2244
2245 --status code
2246 CURSOR l_sts_csr (p_chr_id NUMBER)
2247 IS
2248 SELECT ste_code
2249 FROM okc_statuses_b, okc_k_headers_v kh
2250 WHERE code = kh.sts_code AND kh.ID = p_chr_id;
2251
2252 --Check for vendor object_code
2253 CURSOR object_code_csr (p_code VARCHAR2)
2254 IS
2255 SELECT 'x'
2256 FROM okc_contact_sources_v
2257 WHERE cro_code = p_code
2258 AND buy_or_sell = 'S'
2259 AND rle_code = 'VENDOR'
2260 AND jtot_object_code = 'OKX_SALEPERS';
2261
2262 -- Contact address
2263 CURSOR address_cur_new (p_contact_id NUMBER)
2264 IS
2265 SELECT a.id1
2266 FROM okx_cust_sites_v a, okx_cust_contacts_v b
2267 WHERE b.id1 = p_contact_id
2268 AND a.id1 = b.cust_acct_site_id
2269 AND a.org_id = okc_context.get_okc_org_id;
2270
2271 -- party contact id
2272 CURSOR party_cont_cur (p_contact_id NUMBER)
2273 IS
2274 SELECT hzr.party_id
2275 --NPALEPU
2276 --18-JUN-2005,09-AUG-2005
2277 --TCA Project
2278 --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
2279 --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
2280 /* FROM ra_hcontacts rah,
2281 hz_party_relationships hzr
2282 WHERE rah.contact_id = p_contact_id
2283 AND rah.party_relationship_id = hzr.party_relationship_id;*/
2284 FROM oks_ra_hcontacts_v rah, hz_relationships hzr
2285 WHERE rah.contact_id = p_contact_id
2286 AND rah.party_relationship_id = hzr.relationship_id
2287 AND hzr.subject_table_name = 'HZ_PARTIES'
2288 AND hzr.object_table_name = 'HZ_PARTIES'
2289 AND hzr.directional_flag = 'F';
2290
2291 --END NPALEPU
2292
2293 -- Primary e-mail address
2294 CURSOR email_cur_new (p_party_id NUMBER)
2295 IS
2296 SELECT contact_point_id
2297 FROM okx_contact_points_v
2298 WHERE contact_point_type = 'EMAIL'
2299 AND primary_flag = 'Y'
2300 AND owner_table_id = p_party_id;
2301
2302 -- Primary telephone number
2303 CURSOR phone_cur_new (p_party_id NUMBER)
2304 IS
2305 SELECT contact_point_id
2306 FROM hz_contact_points
2307 WHERE contact_point_type = 'PHONE'
2308 AND NVL (phone_line_type, 'GEN') = 'GEN'
2309 AND primary_flag = 'Y'
2310 AND owner_table_id = p_party_id;
2311
2312 -- Any one fax number
2313 CURSOR fax_cur_new (p_party_id NUMBER)
2314 IS
2315 SELECT contact_point_id
2316 FROM hz_contact_points
2317 WHERE contact_point_type = 'PHONE'
2318 AND phone_line_type = 'FAX'
2319 AND owner_table_id = p_party_id;
2320
2321 CURSOR l_salesgrp_csr (p_id NUMBER, p_start_date DATE, p_end_date DATE)
2322 IS
2323 SELECT GROUP_ID
2324 FROM jtf_rs_srp_groups
2325 WHERE salesrep_id = p_id
2326 AND org_id = okc_context.get_okc_org_id
2327 AND p_start_date BETWEEN start_date AND end_date
2328 AND p_end_date BETWEEN start_date AND end_date;
2329
2330 CURSOR l_bookdt_csr (p_ord_hdrid NUMBER)
2331 IS
2332 SELECT booked_date, order_firmed_date
2333 FROM oe_order_headers_all
2334 WHERE header_id = p_ord_hdrid;
2335
2336 --Territory changes
2337 CURSOR resource_details (p_resource_id NUMBER)
2338 IS
2339 SELECT fu.user_id
2340 FROM jtf_rs_defresources_vl jrd, fnd_user fu
2341 WHERE jrd.resource_id = p_resource_id AND fu.user_id = jrd.user_id;
2342
2343 CURSOR l_salesrep_csr (p_res_id NUMBER, p_org_id NUMBER)
2344 IS
2345 SELECT salesrep_id
2346 FROM jtf_rs_salesreps
2347 WHERE resource_id = p_res_id AND org_id = p_org_id;
2348
2349 l_salesgroup_id NUMBER;
2350 l_rah_party_id NUMBER;
2351 l_rah_hdr_object1_id1 NUMBER;
2352 l_thirdparty_id NUMBER;
2353 l_thirdparty_role VARCHAR2 (30);
2354 l_api_version CONSTANT NUMBER := 1.0;
2355 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
2356 l_return_status VARCHAR2 (1) := 'S';
2357 l_index VARCHAR2 (2000);
2358 i NUMBER;
2359 --Contract Header
2360 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
2361 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
2362 l_khrv_tbl_in oks_khr_pvt.khrv_tbl_type;
2363 l_khrv_tbl_out oks_khr_pvt.khrv_tbl_type;
2364 --SalesCredit
2365 l_scrv_tbl_in oks_sales_credit_pub.scrv_tbl_type;
2366 l_scrv_tbl_out oks_sales_credit_pub.scrv_tbl_type;
2367 --Contract Groupings
2368 l_cgcv_tbl_in okc_contract_group_pub.cgcv_tbl_type;
2369 l_cgcv_tbl_out okc_contract_group_pub.cgcv_tbl_type;
2370 --Contacts
2371 l_ctcv_tbl_in okc_contract_party_pub.ctcv_tbl_type;
2372 l_ctcv_tbl_out okc_contract_party_pub.ctcv_tbl_type;
2373 --Agreements/Governance
2374 l_gvev_tbl_in okc_contract_pub.gvev_tbl_type;
2375 l_gvev_tbl_out okc_contract_pub.gvev_tbl_type;
2376 --Time Value Related
2377 l_isev_ext_tbl_in okc_time_pub.isev_ext_tbl_type;
2378 l_isev_ext_tbl_out okc_time_pub.isev_ext_tbl_type;
2379 --Approval WorkFlow
2380 l_cpsv_tbl_in okc_contract_pub.cpsv_tbl_type;
2381 l_cpsv_tbl_out okc_contract_pub.cpsv_tbl_type;
2382 --REL OBJS
2383 l_crjv_tbl_out okc_k_rel_objs_pub.crjv_tbl_type;
2384 --Return IDs
2385 l_chrid NUMBER;
2386 l_partyid NUMBER;
2387 l_partyid_v NUMBER;
2388 l_partyid_t NUMBER;
2389 l_add2partyid NUMBER;
2390 l_rule_group_id NUMBER;
2391 l_rule_id NUMBER;
2392 l_govern_id NUMBER;
2393 l_time_value_id NUMBER;
2394 l_contact_id NUMBER;
2395 l_grpid NUMBER;
2396 l_pdfid NUMBER;
2397 l_ctrgrp NUMBER;
2398 l_cust_partyid NUMBER;
2399 l_findparty_id NUMBER;
2400 l_hdr_contactid NUMBER;
2401 l_sts_code VARCHAR2 (30);
2402 l_ste_code VARCHAR2 (30);
2403 --l_object_code VARCHAR2( 200 );
2404 l_temp VARCHAR2 (1);
2405 l_email_id NUMBER;
2406 l_phone_id NUMBER;
2407 l_fax_id NUMBER;
2408 l_site_id NUMBER;
2409 l_msg_data VARCHAR2 (2000);
2410 l_ind NUMBER;
2411 l_book_dt DATE;
2412 l_ord_firmed_date DATE;
2413 l_party_contact NUMBER;
2414 l_salescredit_id NUMBER;
2415 j NUMBER;
2416 -- Territory changes
2417 l_counter NUMBER;
2418 l_user_id NUMBER;
2419 l_count NUMBER;
2420 l_party_name VARCHAR2 (360);
2421 l_country_code VARCHAR2 (60);
2422 l_state_code VARCHAR2 (120);
2423 l_gen_bulk_rec jtf_terr_assign_pub.bulk_trans_rec_type;
2424 l_gen_return_rec jtf_terr_assign_pub.bulk_winners_rec_type;
2425 l_use_type VARCHAR2 (30);
2426 l_msg_count NUMBER;
2427 l_derived_res_id NUMBER;
2428 l_resource_id NUMBER;
2429 l_salesrep_id NUMBER;
2430 l_new_org_id NUMBER;
2431 l_entity_id NUMBER;
2432 BEGIN
2433 x_return_status := okc_api.g_ret_sts_success;
2434
2435 IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2436 THEN
2437 fnd_log.STRING (fnd_log.level_procedure,
2438 g_module_current || '.Create_K_Hdr.begin',
2439 'Merge Type = '
2440 || p_k_header_rec.merge_type
2441 || 'Merge Id'
2442 || p_k_header_rec.merge_object_id
2443 );
2444 END IF;
2445
2446 IF p_k_header_rec.merge_type = 'NEW'
2447 THEN
2448 l_chrid := NULL;
2449 ELSIF p_k_header_rec.merge_type = 'LTC'
2450 THEN
2451 l_chrid := p_k_header_rec.merge_object_id;
2452 ELSIF p_k_header_rec.merge_type IS NOT NULL
2453 THEN
2454 l_chrid :=
2455 get_k_hdr_id (p_type => p_k_header_rec.merge_type,
2456 p_object_id => p_k_header_rec.merge_object_id,
2457 p_enddate => p_k_header_rec.end_date
2458 );
2459 END IF;
2460
2461 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2462 THEN
2463 fnd_log.STRING (fnd_log.level_statement,
2464 g_module_current || '.Create_K_Hdr',
2465 'Chr id = ' || l_chrid
2466 );
2467 END IF;
2468
2469 IF l_chrid IS NOT NULL
2470 THEN
2471 OPEN l_sts_csr (l_chrid);
2472
2473 FETCH l_sts_csr
2474 INTO l_sts_code;
2475
2476 CLOSE l_sts_csr;
2477
2478 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2479 THEN
2480 fnd_log.STRING (fnd_log.level_statement,
2481 g_module_current || '.Create_K_Hdr',
2482 'Status code = ' || l_sts_code
2483 );
2484 END IF;
2485
2486 IF l_sts_code NOT IN ('TERMINATED', 'CANCELLED')
2487 THEN -- Removed EXPIRED
2488 IF l_sts_code = 'EXPIRED'
2489 THEN
2490 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
2491
2492 UPDATE okc_k_headers_b
2493 SET sts_code = l_sts_code
2494 WHERE ID = l_chrid;
2495 END IF;
2496
2497 x_chr_id := l_chrid;
2498 l_return_status := okc_api.g_ret_sts_success;
2499 RAISE g_exception_halt_validation;
2500 END IF;
2501 END IF;
2502
2503 get_sts_code (NULL, p_k_header_rec.sts_code, l_ste_code, l_sts_code);
2504
2505 -------Fix for Bug 2707303
2506 IF NVL (l_ste_code, 'ENTERED') IN ('ACTIVE', 'SIGNED')
2507 THEN
2508 l_book_dt := NULL;
2509
2510 IF p_k_header_rec.order_hdr_id IS NOT NULL
2511 THEN
2512 OPEN l_bookdt_csr (p_k_header_rec.order_hdr_id);
2513
2514 FETCH l_bookdt_csr
2515 INTO l_book_dt, l_ord_firmed_date;
2516
2517 CLOSE l_bookdt_csr;
2518 END IF;
2519
2520 l_chrv_tbl_in (1).date_signed :=
2521 NVL (NVL (l_ord_firmed_date, l_book_dt),
2522 p_k_header_rec.start_date);
2523 l_chrv_tbl_in (1).date_approved :=
2524 NVL (NVL (l_ord_firmed_date, l_book_dt),
2525 p_k_header_rec.start_date);
2526 ELSE
2527 l_chrv_tbl_in (1).date_signed := NULL;
2528 l_chrv_tbl_in (1).date_approved := NULL;
2529 END IF;
2530
2531 IF p_k_header_rec.cust_po_number IS NOT NULL
2532 THEN
2533 l_chrv_tbl_in (1).cust_po_number_req_yn := 'Y';
2534 ELSE
2535 l_chrv_tbl_in (1).cust_po_number_req_yn := 'N';
2536 END IF;
2537
2538 -- rules seeded by okc
2539 l_chrv_tbl_in (1).price_list_id := p_k_header_rec.price_list_id; --PRE
2540 l_chrv_tbl_in (1).payment_term_id := p_k_header_rec.payment_term_id;
2541 --PTR
2542 l_chrv_tbl_in (1).conversion_type := p_k_header_rec.cvn_type; --CVN
2543 l_chrv_tbl_in (1).conversion_rate := p_k_header_rec.cvn_rate; --CVN
2544 l_chrv_tbl_in (1).conversion_rate_date := p_k_header_rec.cvn_date; --CVN
2545 l_chrv_tbl_in (1).conversion_euro_rate := p_k_header_rec.cvn_euro_rate;
2546 --CVN
2547 l_chrv_tbl_in (1).billed_at_source := p_k_header_rec.billed_at_source;
2548 --IMP
2549
2550 l_chrv_tbl_in (1).bill_to_site_use_id := p_k_header_rec.bill_to_id;
2551 --BTO
2552 l_chrv_tbl_in (1).ship_to_site_use_id := p_k_header_rec.ship_to_id;
2553 --STO
2554 l_chrv_tbl_in (1).inv_rule_id := p_k_header_rec.invoice_rule_id; --IRE
2555
2556 IF p_k_header_rec.renewal_type IS NOT NULL
2557 THEN --REN
2558 l_chrv_tbl_in (1).renewal_type_code := p_k_header_rec.renewal_type;
2559 l_chrv_tbl_in (1).APPROVAL_TYPE := p_k_header_rec.RENEWAL_APPROVAL_FLAG; --Bug# 5173373
2560 END IF;
2561
2562 l_chrv_tbl_in (1).sfwt_flag := 'N';
2563 l_chrv_tbl_in (1).contract_number := p_k_header_rec.contract_number;
2564 l_chrv_tbl_in (1).sts_code := p_k_header_rec.sts_code;
2565 l_chrv_tbl_in (1).scs_code := NVL (p_k_header_rec.scs_code, 'WARRANTY');
2566 l_chrv_tbl_in (1).authoring_org_id := p_k_header_rec.authoring_org_id;
2567 l_chrv_tbl_in (1).inv_organization_id :=
2568 NVL (p_k_header_rec.inv_organization_id,
2569 okc_context.get_okc_organization_id
2570 );
2571 l_chrv_tbl_in (1).pre_pay_req_yn := 'N';
2572 l_chrv_tbl_in (1).cust_po_number := p_k_header_rec.cust_po_number;
2573 l_chrv_tbl_in (1).qcl_id := p_k_header_rec.qcl_id;
2574 l_chrv_tbl_in (1).short_description :=
2575 NVL (p_k_header_rec.short_description, 'Warranty/Extended Warranty');
2576 l_chrv_tbl_in (1).template_yn := 'N';
2577 l_chrv_tbl_in (1).start_date := p_k_header_rec.start_date;
2578 l_chrv_tbl_in (1).end_date := p_k_header_rec.end_date;
2579 l_chrv_tbl_in (1).chr_type := okc_api.g_miss_char;
2580 l_chrv_tbl_in (1).archived_yn := 'N';
2581 l_chrv_tbl_in (1).deleted_yn := 'N';
2582 l_chrv_tbl_in (1).created_by := okc_api.g_miss_num;
2583 l_chrv_tbl_in (1).creation_date := okc_api.g_miss_date;
2584 l_chrv_tbl_in (1).currency_code := p_k_header_rec.currency;
2585 l_chrv_tbl_in (1).buy_or_sell := 'S';
2586 l_chrv_tbl_in (1).issue_or_receive := 'I';
2587 l_chrv_tbl_in (1).attribute1 := p_k_header_rec.attribute1;
2588 l_chrv_tbl_in (1).attribute2 := p_k_header_rec.attribute2;
2589 l_chrv_tbl_in (1).attribute3 := p_k_header_rec.attribute3;
2590 l_chrv_tbl_in (1).attribute4 := p_k_header_rec.attribute4;
2591 l_chrv_tbl_in (1).attribute5 := p_k_header_rec.attribute5;
2592 l_chrv_tbl_in (1).attribute6 := p_k_header_rec.attribute6;
2593 l_chrv_tbl_in (1).attribute7 := p_k_header_rec.attribute7;
2594 l_chrv_tbl_in (1).attribute8 := p_k_header_rec.attribute8;
2595 l_chrv_tbl_in (1).attribute9 := p_k_header_rec.attribute9;
2596 l_chrv_tbl_in (1).attribute10 := p_k_header_rec.attribute10;
2597 l_chrv_tbl_in (1).attribute11 := p_k_header_rec.attribute11;
2598 l_chrv_tbl_in (1).attribute12 := p_k_header_rec.attribute12;
2599 l_chrv_tbl_in (1).attribute13 := p_k_header_rec.attribute13;
2600 l_chrv_tbl_in (1).attribute14 := p_k_header_rec.attribute14;
2601 l_chrv_tbl_in (1).attribute15 := p_k_header_rec.attribute15;
2602
2603 IF p_k_header_rec.merge_type = 'RENEW'
2604 THEN
2605 l_chrv_tbl_in (1).attribute1 := p_k_header_rec.merge_object_id;
2606 END IF;
2607
2608 okc_contract_pub.create_contract_header
2609 (p_api_version => l_api_version,
2610 p_init_msg_list => l_init_msg_list,
2611 x_return_status => l_return_status,
2612 x_msg_count => x_msg_count,
2613 x_msg_data => x_msg_data,
2614 p_chrv_tbl => l_chrv_tbl_in,
2615 x_chrv_tbl => l_chrv_tbl_out
2616 );
2617
2618 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2619 THEN
2620 fnd_log.STRING
2621 (fnd_log.level_event,
2622 g_module_current || '.Create_K_Hdr.external_call.after',
2623 'okc_contract_pub.create_contract_header(Return Status = '
2624 || l_return_status
2625 || ')'
2626 );
2627 END IF;
2628
2629 IF l_return_status = 'S'
2630 THEN
2631 l_chrid := l_chrv_tbl_out (1).ID;
2632 ELSE
2633 --mmadhavi
2634 IF (p_caller = 'OC')
2635 THEN
2636 x_order_error := '#';
2637
2638 FOR i IN 1 .. fnd_msg_pub.count_msg
2639 LOOP
2640 fnd_msg_pub.get (p_msg_index => i,
2641 p_encoded => 'T',
2642 p_data => l_msg_data,
2643 p_msg_index_out => l_ind
2644 );
2645 x_order_error := x_order_error || l_msg_data || '#';
2646
2647 IF (g_fnd_log_option = 'Y')
2648 THEN
2649 fnd_message.set_encoded (l_msg_data);
2650 l_msg_data := fnd_message.get;
2651 fnd_file.put_line
2652 (fnd_file.LOG,
2653 '(okc_contract_pub).create_contract_header '
2654 || l_msg_data
2655 );
2656 END IF;
2657 END LOOP;
2658
2659 RAISE g_exception_halt_validation;
2660 ELSE
2661 --mmadhavi
2662 okc_api.set_message (g_app_name,
2663 g_required_value,
2664 g_col_name_token,
2665 'HEADER (HEADER)'
2666 );
2667 END IF;
2668
2669 RAISE g_exception_halt_validation;
2670 END IF;
2671
2672
2673 -- Get the transaction extension id for the contract header
2674 IF p_k_header_rec.order_hdr_id IS NOT NULL THEN
2675 get_cc_trxn_extn (
2676 p_order_header_id => p_k_header_rec.order_hdr_id,
2677 p_order_line_id => NULL,
2678 p_context_level => G_CONTEXT_ORDER_HEADER,
2679 p_contract_hdr_id => l_chrid,
2680 p_contract_line_id => NULL,
2681 x_entity_id => l_entity_id,
2682 x_return_status => l_return_status );
2683
2684 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2685 -- Populate the oks header record with the trxn_extension_id
2686 l_khrv_tbl_in (1).trxn_extension_id := l_entity_id;
2687 IF l_entity_id IS NOT NULL THEN
2688 l_khrv_tbl_in (1).payment_type := 'CCR'; -- Credit Card
2689 END IF;
2690 ELSE
2691 FOR i IN 1 .. fnd_msg_pub.count_msg
2692 LOOP
2693 fnd_msg_pub.get (p_msg_index => i,
2694 p_encoded => 'T',
2695 p_data => l_msg_data,
2696 p_msg_index_out => l_ind
2697 );
2698
2699 IF (g_fnd_log_option = 'Y') THEN
2700 fnd_message.set_encoded (l_msg_data);
2701 l_msg_data := fnd_message.get;
2702 fnd_file.put_line
2703 (fnd_file.LOG,
2704 'get_cc_trxn for header'
2705 || l_msg_data
2706 );
2707 END IF;
2708 END LOOP;
2709 RAISE g_exception_halt_validation;
2710 END IF;
2711 END IF;
2712
2713
2714 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2715 THEN
2716 fnd_log.STRING (fnd_log.level_statement,
2717 g_module_current || '.Create_K_Hdr.oks_header_rules',
2718 'Accounting id = '
2719 || p_k_header_rec.accounting_rule_id
2720 || ',renewal type = '
2721 || p_k_header_rec.renewal_type
2722 || ',billing id = '
2723 || p_k_header_rec.billing_profile_id
2724 || ',renewal po = '
2725 || p_k_header_rec.renewal_po
2726 || ',ren price list = '
2727 || p_k_header_rec.renewal_price_list_id
2728 );
2729 fnd_log.STRING (fnd_log.level_statement,
2730 g_module_current || '.Create_K_Hdr.oks_header_rules',
2731 'ren markup = '
2732 || p_k_header_rec.renewal_markup
2733 || ',qto contact = '
2734 || p_k_header_rec.qto_contact_id
2735 || ',contact id = '
2736 || p_k_header_rec.contact_id
2737 || ',tax status = '
2738 || p_k_header_rec.tax_status_flag
2739 );
2740 END IF;
2741
2742 -- Hdr rules inserted by oks
2743 l_khrv_tbl_in (1).chr_id := l_chrv_tbl_out (1).ID;
2744 l_khrv_tbl_in (1).acct_rule_id := p_k_header_rec.accounting_rule_id;
2745 --ARL
2746 l_khrv_tbl_in (1).billing_profile_id :=
2747 p_k_header_rec.billing_profile_id;
2748 -- Fix for bug 3396484
2749 l_khrv_tbl_in (1).renewal_po_required :=p_k_header_rec.renewal_po; /*Bug:7555733*/
2750 --RPO
2751 l_khrv_tbl_in (1).renewal_pricing_type :=
2752 p_k_header_rec.renewal_pricing_type;
2753 --RPT
2754 l_khrv_tbl_in (1).price_uom := p_k_header_rec.price_uom;
2755
2756 --mmadhavi fix for bug 4004028
2757 IF (l_khrv_tbl_in (1).renewal_pricing_type = 'MAN')
2758 THEN
2759 l_khrv_tbl_in (1).renewal_price_list := NULL;
2760 ELSE
2761 l_khrv_tbl_in (1).renewal_price_list :=
2762 p_k_header_rec.renewal_price_list_id;
2763 END IF;
2764
2765 --mmadhavi
2766 IF p_k_header_rec.renewal_pricing_type = 'PCT'
2767 THEN --RPT
2768 l_khrv_tbl_in (1).renewal_markup_percent :=
2769 p_k_header_rec.renewal_markup;
2770 ELSE
2771 l_khrv_tbl_in (1).renewal_markup_percent := NULL;
2772 END IF;
2773
2774 IF p_k_header_rec.qto_contact_id IS NOT NULL
2775 THEN --QTO
2776 l_khrv_tbl_in (1).quote_to_contact_id :=
2777 p_k_header_rec.qto_contact_id;
2778 l_khrv_tbl_in (1).quote_to_site_id := p_k_header_rec.qto_site_id;
2779 l_khrv_tbl_in (1).quote_to_email_id := p_k_header_rec.qto_email_id;
2780 l_khrv_tbl_in (1).quote_to_phone_id := p_k_header_rec.qto_phone_id;
2781 l_khrv_tbl_in (1).quote_to_fax_id := p_k_header_rec.qto_fax_id;
2782 ELSIF p_k_header_rec.contact_id IS NOT NULL
2783 THEN
2784 OPEN party_cont_cur (p_k_header_rec.contact_id);
2785
2786 FETCH party_cont_cur
2787 INTO l_party_contact;
2788
2789 CLOSE party_cont_cur;
2790
2791 OPEN address_cur_new (p_k_header_rec.contact_id);
2792
2793 FETCH address_cur_new
2794 INTO l_site_id;
2795
2796 CLOSE address_cur_new;
2797
2798 OPEN email_cur_new (l_party_contact);
2799
2800 FETCH email_cur_new
2801 INTO l_email_id;
2802
2803 CLOSE email_cur_new;
2804
2805 OPEN phone_cur_new (l_party_contact);
2806
2807 FETCH phone_cur_new
2808 INTO l_phone_id;
2809
2810 CLOSE phone_cur_new;
2811
2812 OPEN fax_cur_new (l_party_contact);
2813
2814 FETCH fax_cur_new
2815 INTO l_fax_id;
2816
2817 CLOSE fax_cur_new;
2818
2819 l_khrv_tbl_in (1).quote_to_contact_id := p_k_header_rec.contact_id;
2820 l_khrv_tbl_in (1).quote_to_site_id := l_site_id;
2821 l_khrv_tbl_in (1).quote_to_email_id := l_email_id;
2822 l_khrv_tbl_in (1).quote_to_phone_id := l_phone_id;
2823 l_khrv_tbl_in (1).quote_to_fax_id := l_fax_id;
2824 END IF;
2825
2826 l_khrv_tbl_in (1).ar_interface_yn :=
2827 p_k_header_rec.ar_interface_yn;
2828 l_khrv_tbl_in (1).hold_billing := NVL (p_k_header_rec.hold_billing, 'N');
2829 l_khrv_tbl_in (1).summary_trx_yn :=
2830 NVL (p_k_header_rec.summary_trx_yn, 'N');
2831 l_khrv_tbl_in (1).inv_trx_type := p_k_header_rec.inv_trx_type;
2832 l_khrv_tbl_in (1).tax_status := p_k_header_rec.tax_status_flag; --TAX
2833 l_khrv_tbl_in (1).tax_code := NULL; --TAX
2834 l_khrv_tbl_in (1).tax_exemption_id := p_k_header_rec.tax_exemption_id;
2835 --TAX
2836 l_khrv_tbl_in (1).created_by := okc_api.g_miss_num;
2837 l_khrv_tbl_in (1).creation_date := okc_api.g_miss_date;
2838
2839 IF p_k_header_rec.ccr_number IS NOT NULL
2840 THEN
2841 l_khrv_tbl_in (1).payment_type := 'CCR';
2842 l_khrv_tbl_in (1).cc_no := p_k_header_rec.ccr_number;
2843 l_khrv_tbl_in (1).cc_expiry_date := p_k_header_rec.ccr_exp_date;
2844 END IF;
2845
2846 l_khrv_tbl_in (1).period_start := p_k_header_rec.period_start;
2847 l_khrv_tbl_in (1).period_type := p_k_header_rec.period_type;
2848 l_khrv_tbl_in (1).grace_period := p_k_header_rec.grace_period;
2849 l_khrv_tbl_in (1).grace_duration := p_k_header_rec.grace_duration;
2850 l_khrv_tbl_in (1).renewal_status := p_k_header_rec.renewal_status;
2851 -- Added by JVARGHES for 12.0 enhancements.
2852 -- Added for 120 CC EXTN project
2853 -- l_khrv_tbl_in (1).trxn_extension_id := p_k_header_rec.trxn_extension_id;
2854
2855 --
2856
2857 --Added in R12 by rsu
2858 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
2859 THEN
2860 fnd_log.STRING (fnd_log.level_statement,
2861 g_module_current || '.Create_K_Hdr',
2862 'Before calling oks_contract_hdr_pub.create_header'
2863 );
2864 fnd_log.STRING (fnd_log.level_statement,
2865 g_module_current || '.Create_K_Hdr',
2866 'p_k_header_rec.tax_classification_code: '
2867 || p_k_header_rec.tax_classification_code
2868 );
2869 fnd_log.STRING (fnd_log.level_statement,
2870 g_module_current || '.Create_K_Hdr',
2871 'p_k_header_rec.exemption_certificate_number: '
2872 || p_k_header_rec.exemption_certificate_number
2873 );
2874 fnd_log.STRING (fnd_log.level_statement,
2875 g_module_current || '.Create_K_Hdr',
2876 'p_k_header_rec.exemption_reason_code: '
2877 || p_k_header_rec.exemption_reason_code
2878 );
2879 fnd_log.STRING (fnd_log.level_statement,
2880 g_module_current || '.Create_K_Hdr',
2881 'p_k_header_rec.tax_status_flag: '
2882 || p_k_header_rec.tax_status_flag
2883 );
2884 END IF;
2885
2886 l_khrv_tbl_in (1).tax_classification_code :=
2887 p_k_header_rec.tax_classification_code;
2888 l_khrv_tbl_in (1).exempt_certificate_number :=
2889 p_k_header_rec.exemption_certificate_number;
2890 l_khrv_tbl_in (1).exempt_reason_code :=
2891 p_k_header_rec.exemption_reason_code;
2892 --End: added in R12 by rsu
2893 oks_contract_hdr_pub.create_header (p_api_version => l_api_version,
2894 p_init_msg_list => l_init_msg_list,
2895 x_return_status => l_return_status,
2896 x_msg_count => x_msg_count,
2897 x_msg_data => x_msg_data,
2898 p_khrv_tbl => l_khrv_tbl_in,
2899 x_khrv_tbl => l_khrv_tbl_out,
2900 p_validate_yn => 'N'
2901 );
2902
2903 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2904 THEN
2905 fnd_log.STRING
2906 (fnd_log.level_event,
2907 g_module_current || '.Create_K_Hdr.external_call.after',
2908 ' oks_contract_hdr_pub.create_header(Return Status = '
2909 || l_return_status
2910 || ')'
2911 );
2912 END IF;
2913
2914 IF NOT l_return_status = okc_api.g_ret_sts_success
2915 THEN
2916 --mmadhavi
2917 IF (p_caller = 'OC')
2918 THEN
2919 x_order_error := '#';
2920
2921 FOR i IN 1 .. fnd_msg_pub.count_msg
2922 LOOP
2923 fnd_msg_pub.get (p_msg_index => i,
2924 p_encoded => 'T',
2925 p_data => l_msg_data,
2926 p_msg_index_out => l_ind
2927 );
2928 x_order_error := x_order_error || l_msg_data || '#';
2929
2930 IF (g_fnd_log_option = 'Y')
2931 THEN
2932 fnd_message.set_encoded (l_msg_data);
2933 l_msg_data := fnd_message.get;
2934 fnd_file.put_line
2935 (fnd_file.LOG,
2936 '(oks_contract_hdr_pub).create_header '
2937 || l_msg_data
2938 );
2939 END IF;
2940 END LOOP;
2941
2942 RAISE g_exception_halt_validation;
2943 ELSE
2944 --mmadhavi
2945 okc_api.set_message (g_app_name,
2946 g_required_value,
2947 g_col_name_token,
2948 'OKS (HEADER)'
2949 );
2950 RAISE g_exception_halt_validation;
2951 END IF;
2952 END IF;
2953
2954 IF p_k_header_rec.order_line_id IS NOT NULL
2955 THEN
2956 oks_extwar_util_pvt.update_contract_details
2957 (l_chrid,
2958 p_k_header_rec.order_line_id,
2959 l_return_status
2960 );
2961
2962 IF NOT l_return_status = okc_api.g_ret_sts_success
2963 THEN
2964 x_return_status := l_return_status;
2965 RAISE g_exception_halt_validation;
2966 END IF;
2967 END IF;
2968
2969 IF p_k_header_rec.scs_code IN ('WARRANTY', 'SERVICE')
2970 THEN
2971 --Party Role Routine ('VENDOR')
2972 party_role (p_chrid => l_chrid,
2973 p_cleid => NULL,
2974 p_rle_code => 'VENDOR',
2975 p_partyid => p_k_header_rec.authoring_org_id,
2976 p_object_code => g_jtf_party_vendor,
2977 x_roleid => l_partyid_v,
2978 x_msg_count => x_msg_count,
2979 x_msg_data => x_msg_data,
2980 x_return_status => l_return_status
2981 );
2982
2983 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2984 THEN
2985 fnd_log.STRING (fnd_log.level_event,
2986 g_module_current
2987 || '.Create_K_Hdr.Internal_call.after',
2988 ' Party_role for Vendor(Return Status = '
2989 || l_return_status
2990 || ')'
2991 || l_partyid_v
2992 );
2993 END IF;
2994
2995 IF NOT l_return_status = okc_api.g_ret_sts_success
2996 THEN
2997 x_return_status := l_return_status;
2998 RAISE g_exception_halt_validation;
2999 END IF;
3000
3001 --Party Role Routine ('CUSTOMER')
3002 party_role (p_chrid => l_chrid,
3003 p_cleid => NULL,
3004 p_rle_code => 'CUSTOMER',
3005 p_partyid => p_k_header_rec.party_id,
3006 p_object_code => g_jtf_party,
3007 x_roleid => l_partyid,
3008 x_msg_count => x_msg_count,
3009 x_msg_data => x_msg_data,
3010 x_return_status => l_return_status
3011 );
3012
3013 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3014 THEN
3015 fnd_log.STRING (fnd_log.level_event,
3016 g_module_current
3017 || '.Create_K_Hdr.Internal_call.after',
3018 ' Party_role for Customer(Return Status = '
3019 || l_return_status
3020 || ')'
3021 || l_partyid
3022 );
3023 END IF;
3024
3025 IF NOT l_return_status = okc_api.g_ret_sts_success
3026 THEN
3027 x_return_status := l_return_status;
3028 RAISE g_exception_halt_validation;
3029 END IF;
3030 ELSE
3031 --Party Role Routine ('MERCHANT')
3032 party_role (p_chrid => l_chrid,
3033 p_cleid => NULL,
3034 p_rle_code => 'MERCHANT',
3035 p_partyid => p_k_header_rec.authoring_org_id,
3036 p_object_code => g_jtf_party_vendor,
3037 x_roleid => l_partyid_v,
3038 x_msg_count => x_msg_count,
3039 x_msg_data => x_msg_data,
3040 x_return_status => l_return_status
3041 );
3042
3043 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3044 THEN
3045 fnd_log.STRING (fnd_log.level_event,
3046 g_module_current
3047 || '.Create_K_Hdr.Internal_call.after',
3048 ' Party_role for Merchant(Return Status = '
3049 || l_return_status
3050 || ')'
3051 || l_partyid_v
3052 );
3053 END IF;
3054
3055 IF NOT l_return_status = okc_api.g_ret_sts_success
3056 THEN
3057 x_return_status := l_return_status;
3058 RAISE g_exception_halt_validation;
3059 END IF;
3060
3061 --Party Role Routine ('SUBSCRIBER')
3062 party_role (p_chrid => l_chrid,
3063 p_cleid => NULL,
3064 p_rle_code => 'SUBSCRIBER',
3065 p_partyid => p_k_header_rec.party_id,
3066 p_object_code => g_jtf_party,
3067 x_roleid => l_partyid,
3068 x_msg_count => x_msg_count,
3069 x_msg_data => x_msg_data,
3070 x_return_status => l_return_status
3071 );
3072
3073 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3074 THEN
3075 fnd_log.STRING (fnd_log.level_event,
3076 g_module_current
3077 || '.Create_K_Hdr.Internal_call.after',
3078 ' Party_role for Subscriber(Return Status = '
3079 || l_return_status
3080 || ')'
3081 || l_partyid
3082 );
3083 END IF;
3084
3085 IF NOT l_return_status = okc_api.g_ret_sts_success
3086 THEN
3087 x_return_status := l_return_status;
3088 RAISE g_exception_halt_validation;
3089 END IF;
3090 END IF;
3091
3092 /* Check if the bill to belong to the order customer, if not create a third party role*/
3093 l_thirdparty_id := NULL;
3094
3095 OPEN l_thirdparty_csr (p_k_header_rec.bill_to_id);
3096
3097 FETCH l_thirdparty_csr
3098 INTO l_thirdparty_id;
3099
3100 CLOSE l_thirdparty_csr;
3101
3102 IF l_thirdparty_id IS NOT NULL
3103 THEN
3104 IF NOT l_thirdparty_id = p_k_header_rec.party_id
3105 THEN
3106 --Party Role Routine ('THIRD_PARTY')
3107 l_thirdparty_role :=
3108 NVL (p_k_header_rec.third_party_role, 'THIRD_PARTY');
3109
3110 --mmadhavi
3111 IF (p_caller = 'OC')
3112 THEN
3113 IF (l_thirdparty_role IN ('VENDOR', 'CUSTOMER'))
3114 THEN
3115 fnd_message.set_name (g_app_name,
3116 'OKS_INVD_THIRD_PARTY_ROLE'
3117 );
3118 x_order_error := '#' || fnd_message.get_encoded || '#';
3119 l_return_status := okc_api.g_ret_sts_error;
3120 RAISE g_exception_halt_validation;
3121 END IF;
3122 END IF;
3123
3124 --mmadhavi
3125 party_role (p_chrid => l_chrid,
3126 p_cleid => NULL,
3127 p_rle_code => l_thirdparty_role,
3128 p_partyid => l_thirdparty_id,
3129 p_object_code => g_jtf_party,
3130 x_roleid => l_partyid_t,
3131 x_msg_count => x_msg_count,
3132 x_msg_data => x_msg_data,
3133 x_return_status => l_return_status
3134 );
3135
3136 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3137 THEN
3138 fnd_log.STRING
3139 (fnd_log.level_event,
3140 g_module_current
3141 || '.Create_K_Hdr.Internal_call.after',
3142 ' Party_role for Third Party(Return Status = '
3143 || l_return_status
3144 || ')'
3145 || l_partyid_t
3146 );
3147 END IF;
3148
3149 IF NOT l_return_status = okc_api.g_ret_sts_success
3150 THEN
3151 x_return_status := l_return_status;
3152 RAISE g_exception_halt_validation;
3153 END IF;
3154 END IF;
3155 END IF;
3156
3157 ---Creating Vendor Contact
3158
3159 -- Fix for the Bug3557612
3160 -- Create vendor contact role if the profile option is not null
3161 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3162 THEN
3163 fnd_log.STRING (fnd_log.level_statement,
3164 g_module_current
3165 || '.Create_K_Hdr.before_vendor_contact',
3166 ' Vendor contact profile option value = '
3167 || fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE')
3168 || ' Territory profile option value = '
3169 || fnd_profile.VALUE ('OKS_TERR_SALES_REP')
3170 );
3171 END IF;
3172
3173 /************ Territory changes ****************************/
3174 IF ( NVL (fnd_profile.VALUE ('OKS_TERR_SALES_REP'), 'RET') = 'DER'
3175 AND p_k_header_rec.order_hdr_id IS NOT NULL) or (p_caller = 'ST')
3176 THEN
3177 get_jtf_resource (p_authorg_id => p_k_header_rec.authoring_org_id,
3178 p_party_id => p_k_header_rec.party_id,
3179 x_winners_rec => l_gen_return_rec,
3180 x_msg_count => l_msg_count,
3181 x_msg_data => l_msg_data,
3182 x_return_status => l_return_status
3183 );
3184
3185 IF (l_return_status <> okc_api.g_ret_sts_success)
3186 THEN
3187 -- Setup error
3188 If p_caller = 'ST' Then
3189 send_notification (null, l_chrid, 'SER');
3190 Else
3191
3192 send_notification (p_k_header_rec.order_hdr_id, NULL, 'SER');
3193 End If;
3194
3195 ELSE
3196 l_counter := l_gen_return_rec.trans_object_id.FIRST;
3197 l_count := 0;
3198
3199 WHILE (l_counter <= l_gen_return_rec.trans_object_id.LAST)
3200 LOOP
3201 IF (l_count = 0)
3202 THEN
3203 OPEN resource_details
3204 (p_resource_id => l_gen_return_rec.resource_id
3205 (l_counter)
3206 );
3207
3208 FETCH resource_details
3209 INTO l_user_id;
3210
3211 CLOSE resource_details;
3212
3213 l_derived_res_id := l_gen_return_rec.resource_id (l_counter);
3214 END IF;
3215
3216 l_counter := l_counter + 1;
3217 l_count := l_count + 1;
3218 END LOOP;
3219
3220 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3221 THEN
3222 fnd_log.STRING (fnd_log.level_statement,
3223 g_module_current,
3224 'Resource ID is : ' || l_derived_res_id
3225 );
3226 END IF;
3227
3228 IF l_count = 0
3229 THEN
3230 -- No resource setup
3231 If p_caller = 'ST' Then
3232 send_notification (Null, l_chrid, 'NRS');
3233 Else
3234 send_notification (p_k_header_rec.order_hdr_id, NULL, 'NRS');
3235 End If;
3236 ELSIF l_count >= 1
3237 THEN
3238 l_new_org_id := okc_context.get_okc_org_id;
3239
3240 OPEN l_salesrep_csr (l_derived_res_id, l_new_org_id);
3241
3242 FETCH l_salesrep_csr
3243 INTO l_salesrep_id;
3244
3245 CLOSE l_salesrep_csr;
3246
3247 IF l_salesrep_id IS NULL
3248 THEN
3249 If p_caller = 'ST' Then
3250
3251 send_notification (NULL, l_chrid,'ISP');
3252 Else
3253 send_notification (p_k_header_rec.order_hdr_id, NULL,'ISP');
3254 End If;
3255 END IF;
3256 END IF;
3257 END IF;
3258 ELSE
3259 l_salesrep_id := p_k_header_rec.salesrep_id;
3260 END IF;
3261
3262 /************ Territory changes end****************************/
3263 IF l_salesrep_id IS NOT NULL
3264 AND fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE') IS NOT NULL
3265 THEN
3266 l_salesgroup_id :=
3267 jtf_rs_integration_pub.get_default_sales_group
3268 (p_salesrep_id => l_salesrep_id,
3269 p_org_id => okc_context.get_okc_org_id,
3270 p_date => p_k_header_rec.start_date
3271 );
3272 l_ctcv_tbl_in (1).object1_id1 := l_salesrep_id;
3273 l_ctcv_tbl_in (1).cpl_id := l_partyid_v;
3274 l_ctcv_tbl_in (1).dnz_chr_id := l_chrid;
3275 l_ctcv_tbl_in (1).cro_code :=
3276 fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE');
3277 l_ctcv_tbl_in (1).object1_id2 := '#';
3278 l_ctcv_tbl_in (1).sales_group_id := l_salesgroup_id;
3279
3280 OPEN object_code_csr (l_ctcv_tbl_in (1).cro_code);
3281
3282 FETCH object_code_csr
3283 INTO l_temp;
3284
3285 IF object_code_csr%NOTFOUND
3286 THEN
3287 CLOSE object_code_csr;
3288
3289 okc_api.set_message (g_app_name,
3290 g_unexpected_error,
3291 g_sqlcode_token,
3292 SQLCODE,
3293 g_sqlerrm_token,
3294 'Wrong vendor contact role assigned'
3295 );
3296 l_return_status := okc_api.g_ret_sts_error;
3297 RAISE g_exception_halt_validation;
3298 END IF;
3299
3300 CLOSE object_code_csr;
3301
3302 l_ctcv_tbl_in (1).jtot_object1_code := 'OKX_SALEPERS';
3303 --l_object_code;
3304 okc_contract_party_pub.create_contact
3305 (p_api_version => l_api_version,
3306 p_init_msg_list => l_init_msg_list,
3307 x_return_status => l_return_status,
3308 x_msg_count => x_msg_count,
3309 x_msg_data => x_msg_data,
3310 p_ctcv_tbl => l_ctcv_tbl_in,
3311 x_ctcv_tbl => l_ctcv_tbl_out
3312 );
3313
3314 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3315 THEN
3316 fnd_log.STRING
3317 (fnd_log.level_event,
3318 g_module_current || '.Create_K_Hdr.External_call.after',
3319 ' okc_contract_party_pub.create_contact(Return Status = '
3320 || l_return_status
3321 || ')'
3322 );
3323 END IF;
3324
3325 IF l_return_status = 'S'
3326 THEN
3327 l_contact_id := l_ctcv_tbl_out (1).ID;
3328 ELSE
3329 okc_api.set_message (g_app_name,
3330 g_required_value,
3331 g_col_name_token,
3332 l_ctcv_tbl_in (1).cro_code
3333 || 'Vendor Contact (HEADER) '
3334 || ' OKX_SALEPERS'
3335 );
3336 RAISE g_exception_halt_validation;
3337 END IF;
3338 END IF;
3339
3340 --mmadhavi --Create SalesCredits bug 4174921
3341 IF p_salescredit_tbl_in.COUNT > 0
3342 THEN
3343 j := p_salescredit_tbl_in.FIRST;
3344
3345 LOOP
3346 l_scrv_tbl_in (1).PERCENT := p_salescredit_tbl_in (j).PERCENT;
3347 l_scrv_tbl_in (1).chr_id := l_chrid;
3348 l_scrv_tbl_in (1).cle_id := NULL;
3349 l_scrv_tbl_in (1).ctc_id := p_salescredit_tbl_in (j).ctc_id;
3350 l_scrv_tbl_in (1).sales_credit_type_id1 :=
3351 p_salescredit_tbl_in (j).sales_credit_type_id;
3352 l_scrv_tbl_in (1).sales_credit_type_id2 := '#';
3353 l_scrv_tbl_in (1).sales_group_id :=
3354 p_salescredit_tbl_in (j).sales_group_id;
3355 oks_sales_credit_pub.insert_sales_credit
3356 (p_api_version => 1.0,
3357 p_init_msg_list => okc_api.g_false,
3358 x_return_status => l_return_status,
3359 x_msg_count => x_msg_count,
3360 x_msg_data => x_msg_data,
3361 p_scrv_tbl => l_scrv_tbl_in,
3362 x_scrv_tbl => l_scrv_tbl_out
3363 );
3364
3365 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3366 THEN
3367 fnd_log.STRING
3368 (fnd_log.level_event,
3369 g_module_current || '.Create_K_Hdr.external_call.after',
3370 'oks_sales_credit_pub.insert_sales_credit(Return status = '
3371 || l_return_status
3372 || ')'
3373 );
3374 END IF;
3375
3376 IF l_return_status = 'S'
3377 THEN
3378 l_salescredit_id := l_scrv_tbl_out (1).ID;
3379 ELSE
3380 okc_api.set_message (g_app_name,
3381 g_required_value,
3382 g_col_name_token,
3383 'Sales Credit Failure'
3384 );
3385 RAISE g_exception_halt_validation;
3386 END IF;
3387
3388 EXIT WHEN j = p_salescredit_tbl_in.LAST;
3389 j := p_salescredit_tbl_in.NEXT (j);
3390 END LOOP;
3391 END IF;
3392
3393 --mmadhavi bug 4174921
3394 IF p_contact_tbl.COUNT > 0
3395 THEN
3396 i := p_contact_tbl.FIRST;
3397
3398 LOOP
3399 l_ctcv_tbl_in.DELETE;
3400
3401 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3402 THEN
3403 fnd_log.STRING (fnd_log.level_statement,
3404 g_module_current
3405 || '.Create_K_Hdr.contact creation',
3406 ' Party Role = '
3407 || p_contact_tbl (i).party_role
3408 || ',Contact Id = '
3409 || p_contact_tbl (i).contact_id
3410 );
3411 END IF;
3412
3413 IF p_contact_tbl (i).party_role = 'VENDOR'
3414 AND l_partyid_v IS NOT NULL
3415 THEN
3416 l_add2partyid := l_partyid_v;
3417 l_hdr_contactid := p_contact_tbl (i).contact_id;
3418 ELSE
3419 l_rah_party_id := NULL;
3420 l_hdr_contactid := NULL;
3421
3422 OPEN l_ra_hcontacts_cur (p_contact_tbl (i).contact_id);
3423
3424 FETCH l_ra_hcontacts_cur
3425 INTO l_rah_party_id, l_hdr_contactid;
3426
3427 CLOSE l_ra_hcontacts_cur;
3428
3429 --if l_findparty_id = l_thirdparty_id Then
3430 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3431 THEN
3432 fnd_log.STRING (fnd_log.level_statement,
3433 g_module_current
3434 || '.Create_K_Hdr.contact creation',
3435 ' Third Party = '
3436 || l_thirdparty_id
3437 || ',Customer Id = '
3438 || p_k_header_rec.party_id
3439 || ',Org CTC Id = '
3440 || p_contact_tbl (i).contact_id
3441 || ',Rah PArty Id = '
3442 || l_rah_party_id
3443 || ',Rah CTC Id = '
3444 || l_hdr_contactid
3445 );
3446 END IF;
3447
3448 IF l_rah_party_id = l_thirdparty_id AND l_partyid_t IS NOT NULL
3449 THEN
3450 l_add2partyid := l_partyid_t;
3451 ELSE
3452 l_add2partyid := l_partyid;
3453 END IF;
3454 END IF;
3455
3456 IF l_add2partyid IS NULL
3457 THEN
3458 okc_api.set_message (g_app_name,
3459 g_required_value,
3460 g_col_name_token,
3461 p_contact_tbl (i).contact_role
3462 || ' Contact (HEADER) Missing Role Id '
3463 || p_contact_tbl (i).contact_object_code
3464 );
3465 RAISE g_exception_halt_validation;
3466 END IF;
3467
3468 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3469 THEN
3470 fnd_log.STRING (fnd_log.level_statement,
3471 g_module_current
3472 || '.Create_K_Hdr.contact creation',
3473 ' FLAG = '
3474 || p_contact_tbl (i).flag
3475 || ' CONTACT ID = '
3476 || p_contact_tbl (i).contact_id
3477 || ' CPL ID = '
3478 || l_add2partyid
3479 || ',CRO CD = '
3480 || p_contact_tbl (i).contact_role
3481 || ',CTC CD = '
3482 || l_hdr_contactid
3483 || ',JTO CD = '
3484 || p_contact_tbl (i).contact_object_code
3485 );
3486 END IF;
3487
3488 IF p_contact_tbl (i).flag = 'H'
3489 THEN
3490 l_ctcv_tbl_in (1).object1_id1 := l_hdr_contactid;
3491 ELSE
3492 l_ctcv_tbl_in (1).object1_id1 := p_contact_tbl (i).contact_id;
3493 END IF;
3494
3495 l_ctcv_tbl_in (1).cpl_id := l_add2partyid;
3496 l_ctcv_tbl_in (1).dnz_chr_id := l_chrid;
3497 l_ctcv_tbl_in (1).cro_code := p_contact_tbl (i).contact_role;
3498 l_ctcv_tbl_in (1).object1_id2 := '#';
3499 l_ctcv_tbl_in (1).jtot_object1_code :=
3500 p_contact_tbl (i).contact_object_code;
3501 okc_contract_party_pub.create_contact
3502 (p_api_version => l_api_version,
3503 p_init_msg_list => l_init_msg_list,
3504 x_return_status => l_return_status,
3505 x_msg_count => x_msg_count,
3506 x_msg_data => x_msg_data,
3507 p_ctcv_tbl => l_ctcv_tbl_in,
3508 x_ctcv_tbl => l_ctcv_tbl_out
3509 );
3510
3511 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3512 THEN
3513 fnd_log.STRING
3514 (fnd_log.level_event,
3515 g_module_current || '.Create_K_Hdr.external_call.after',
3516 'okc_contract_party_pub.create_contact(Return status = '
3517 || l_return_status
3518 || ')'
3519 );
3520 END IF;
3521
3522 IF l_return_status = 'S'
3523 THEN
3524 l_contact_id := l_ctcv_tbl_out (1).ID;
3525 ELSE
3526 okc_api.set_message (g_app_name,
3527 g_required_value,
3528 g_col_name_token,
3529 p_contact_tbl (i).contact_role
3530 || ' Contact (HEADER) '
3531 || p_contact_tbl (i).contact_object_code
3532 );
3533 RAISE g_exception_halt_validation;
3534 END IF;
3535
3536 EXIT WHEN i = p_contact_tbl.LAST;
3537 i := p_contact_tbl.NEXT (i);
3538 END LOOP;
3539 END IF;
3540
3541 --Grouping Routine
3542 l_ctrgrp :=
3543 NVL (p_k_header_rec.chr_group,
3544 NVL (fnd_profile.VALUE ('OKS_WARR_CONTRACT_GROUP'), 2)
3545 );
3546 l_cgcv_tbl_in (1).cgp_parent_id := l_ctrgrp;
3547 l_cgcv_tbl_in (1).included_chr_id := l_chrid;
3548 l_cgcv_tbl_in (1).object_version_number := okc_api.g_miss_num;
3549 l_cgcv_tbl_in (1).created_by := okc_api.g_miss_num;
3550 l_cgcv_tbl_in (1).creation_date := okc_api.g_miss_date;
3551 l_cgcv_tbl_in (1).last_updated_by := okc_api.g_miss_num;
3552 l_cgcv_tbl_in (1).last_update_date := okc_api.g_miss_date;
3553 l_cgcv_tbl_in (1).last_update_login := okc_api.g_miss_num;
3554 l_cgcv_tbl_in (1).included_cgp_id := NULL;
3555 okc_contract_group_pub.create_contract_grpngs
3556 (p_api_version => l_api_version,
3557 p_init_msg_list => l_init_msg_list,
3558 x_return_status => l_return_status,
3559 x_msg_count => x_msg_count,
3560 x_msg_data => x_msg_data,
3561 p_cgcv_tbl => l_cgcv_tbl_in,
3562 x_cgcv_tbl => l_cgcv_tbl_out
3563 );
3564
3565 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3566 THEN
3567 fnd_log.STRING
3568 (fnd_log.level_event,
3569 g_module_current || '.Create_K_Hdr.external_call.after',
3570 'okc_contract_group_pub.create_contract_grpngs(Return status = '
3571 || l_return_status
3572 || ')'
3573 );
3574 END IF;
3575
3576 IF l_return_status = 'S'
3577 THEN
3578 l_grpid := l_cgcv_tbl_out (1).ID;
3579 ELSE
3580 okc_api.set_message (g_app_name,
3581 g_required_value,
3582 g_col_name_token,
3583 'Contract Group (HEADER)'
3584 );
3585 RAISE g_exception_halt_validation;
3586 END IF;
3587
3588 IF p_k_header_rec.pdf_id IS NOT NULL
3589 THEN
3590 l_cpsv_tbl_in (1).pdf_id := p_k_header_rec.pdf_id;
3591 l_cpsv_tbl_in (1).chr_id := l_chrid;
3592 l_cpsv_tbl_in (1).user_id := fnd_global.user_id;
3593 l_cpsv_tbl_in (1).in_process_yn := okc_api.g_miss_char;
3594 l_cpsv_tbl_in (1).object_version_number := okc_api.g_miss_num;
3595 l_cpsv_tbl_in (1).created_by := okc_api.g_miss_num;
3596 l_cpsv_tbl_in (1).creation_date := okc_api.g_miss_date;
3597 l_cpsv_tbl_in (1).last_updated_by := okc_api.g_miss_num;
3598 l_cpsv_tbl_in (1).last_update_date := okc_api.g_miss_date;
3599 l_cpsv_tbl_in (1).last_update_login := okc_api.g_miss_num;
3600 okc_contract_pub.create_contract_process
3601 (p_api_version => l_api_version,
3602 p_init_msg_list => l_init_msg_list,
3603 x_return_status => l_return_status,
3604 x_msg_count => x_msg_count,
3605 x_msg_data => x_msg_data,
3606 p_cpsv_tbl => l_cpsv_tbl_in,
3607 x_cpsv_tbl => l_cpsv_tbl_out
3608 );
3609
3610 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3611 THEN
3612 fnd_log.STRING
3613 (fnd_log.level_event,
3614 g_module_current || '.Create_K_Hdr.external_call.after',
3615 'okc_contract_pub.create_contract_process(Return status = '
3616 || l_return_status
3617 || ')'
3618 );
3619 END IF;
3620
3621 IF l_return_status = 'S'
3622 THEN
3623 l_pdfid := l_cpsv_tbl_out (1).ID;
3624 ELSE
3625 okc_api.set_message (g_app_name,
3626 g_required_value,
3627 g_col_name_token,
3628 'Contract WorkFlow (HEADER)'
3629 );
3630 RAISE g_exception_halt_validation;
3631 END IF;
3632 END IF;
3633
3634 --Agreement ID Routine
3635 IF p_k_header_rec.agreement_id IS NOT NULL
3636 THEN
3637 l_gvev_tbl_in (1).chr_id := l_chrid;
3638 l_gvev_tbl_in (1).isa_agreement_id := p_k_header_rec.agreement_id;
3639 l_gvev_tbl_in (1).copied_only_yn := 'Y';
3640 l_gvev_tbl_in (1).dnz_chr_id := l_chrid;
3641 okc_contract_pub.create_governance
3642 (p_api_version => l_api_version,
3643 p_init_msg_list => l_init_msg_list,
3644 x_return_status => l_return_status,
3645 x_msg_count => x_msg_count,
3646 x_msg_data => x_msg_data,
3647 p_gvev_tbl => l_gvev_tbl_in,
3648 x_gvev_tbl => l_gvev_tbl_out
3649 );
3650
3651 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3652 THEN
3653 fnd_log.STRING
3654 (fnd_log.level_event,
3655 g_module_current || '.Create_K_Hdr.external_call.after',
3656 'okc_contract_pub.create_governance(Return status = '
3657 || l_return_status
3658 || ')'
3659 );
3660 END IF;
3661
3662 IF l_return_status = 'S'
3663 THEN
3664 l_govern_id := l_gvev_tbl_out (1).ID;
3665 ELSE
3666 okc_api.set_message (g_app_name,
3667 g_required_value,
3668 g_col_name_token,
3669 'Agreement Id (HEADER)'
3670 );
3671 RAISE g_exception_halt_validation;
3672 END IF;
3673 END IF;
3674
3675 create_obj_rel (p_k_id => l_chrid,
3676 p_line_id => NULL,
3677 p_orderhdrid => p_k_header_rec.order_hdr_id,
3678 p_rty_code => p_k_header_rec.rty_code,
3679 p_orderlineid => NULL,
3680 x_return_status => l_return_status,
3681 x_msg_count => x_msg_count,
3682 x_msg_data => x_msg_data,
3683 x_crjv_tbl_out => l_crjv_tbl_out
3684 );
3685
3686 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3687 THEN
3688 fnd_log.STRING (fnd_log.level_event,
3689 g_module_current
3690 || '.Create_K_Hdr.internal_call.after',
3691 'create_obj_rel(Return status = '
3692 || l_return_status
3693 || ')'
3694 );
3695 END IF;
3696
3697 IF NOT l_return_status = okc_api.g_ret_sts_success
3698 THEN
3699 okc_api.set_message (g_app_name,
3700 g_required_value,
3701 g_col_name_token,
3702 'Order Header Id (HEADER)'
3703 );
3704 RAISE g_exception_halt_validation;
3705 END IF;
3706
3707 x_chr_id := l_chrid;
3708 EXCEPTION
3709 WHEN g_exception_halt_validation
3710 THEN
3711 x_return_status := l_return_status;
3712 WHEN OTHERS
3713 THEN
3714 x_return_status := okc_api.g_ret_sts_unexp_error;
3715 okc_api.set_message (g_app_name,
3716 g_unexpected_error,
3717 g_sqlcode_token,
3718 SQLCODE,
3719 g_sqlerrm_token,
3720 SQLERRM
3721 );
3722 END create_k_hdr;
3723
3724 FUNCTION get_top_line_number (p_chr_id IN NUMBER)
3725 RETURN NUMBER
3726 IS
3727 max_line_number NUMBER;
3728
3729 CURSOR get_line_number
3730 IS
3731 SELECT NVL (MAX (TO_NUMBER (line_number)), 0) + 1
3732 FROM okc_k_lines_b
3733 WHERE dnz_chr_id = p_chr_id AND lse_id IN (1, 12, 14, 19);
3734 BEGIN
3735 OPEN get_line_number;
3736
3737 FETCH get_line_number
3738 INTO max_line_number;
3739
3740 CLOSE get_line_number;
3741
3742 RETURN (max_line_number);
3743 END get_top_line_number;
3744
3745 FUNCTION get_sub_line_number (p_chr_id IN NUMBER, p_cle_id IN NUMBER)
3746 RETURN NUMBER
3747 IS
3748 max_line_number NUMBER;
3749
3750 CURSOR get_line_number
3751 IS
3752 SELECT NVL (MAX (TO_NUMBER (line_number)), 0) + 1
3753 FROM okc_k_lines_b
3754 WHERE dnz_chr_id = p_chr_id
3755 AND cle_id = p_cle_id
3756 AND lse_id IN (35, 7, 8, 9, 10, 11, 13, 18, 25);
3757 BEGIN
3758 OPEN get_line_number;
3759
3760 FETCH get_line_number
3761 INTO max_line_number;
3762
3763 CLOSE get_line_number;
3764
3765 RETURN (max_line_number);
3766 END get_sub_line_number;
3767
3768 PROCEDURE create_k_service_lines (
3769 p_k_line_rec IN k_line_service_rec_type,
3770 p_contact_tbl IN contact_tbl,
3771 p_salescredit_tbl_in IN salescredit_tbl,
3772 p_caller IN VARCHAR2,
3773 x_order_error OUT NOCOPY VARCHAR2,
3774 x_service_line_id OUT NOCOPY NUMBER,
3775 x_return_status OUT NOCOPY VARCHAR2,
3776 x_msg_count OUT NOCOPY NUMBER,
3777 x_msg_data OUT NOCOPY VARCHAR2
3778 )
3779 IS
3780 l_api_version CONSTANT NUMBER := 1.0;
3781 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
3782 l_return_status VARCHAR2 (1) := 'S';
3783 l_index VARCHAR2 (2000);
3784 l_ctcv_tbl_in okc_contract_party_pub.ctcv_tbl_type;
3785 l_ctcv_tbl_out okc_contract_party_pub.ctcv_tbl_type;
3786
3787 CURSOR l_ctr_csr (p_id NUMBER)
3788 IS
3789 SELECT counter_group_id
3790 FROM okx_ctr_associations_v
3791 WHERE source_object_id = p_id;
3792
3793 CURSOR l_billto_csr (p_billto NUMBER)
3794 IS
3795 SELECT cust_account_id
3796 FROM okx_cust_site_uses_v
3797 WHERE id1 = p_billto AND id2 = '#';
3798
3799 CURSOR l_ra_hcontacts_cur (p_contact_id NUMBER)
3800 IS
3801 SELECT hzr.object_id, hzr.party_id
3802 --NPALEPU
3803 --18-JUN-2005,09-AUG-2005
3804 --TCA Project
3805 --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
3806 --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
3807 /* FROM ra_hcontacts rah, hz_party_relationships hzr
3808 WHERE rah.contact_id = p_contact_id
3809 AND rah.party_relationship_id = hzr.party_relationship_id; */
3810 FROM oks_ra_hcontacts_v rah, hz_relationships hzr
3811 WHERE rah.contact_id = p_contact_id
3812 AND rah.party_relationship_id = hzr.relationship_id
3813 AND hzr.subject_table_name = 'HZ_PARTIES'
3814 AND hzr.object_table_name = 'HZ_PARTIES'
3815 AND hzr.directional_flag = 'F';
3816
3817 --END NPALEPU
3818
3819 --enhancement to be commented
3820 CURSOR l_ste_csr (l_line_id NUMBER)
3821 IS
3822 SELECT os.ste_code
3823 FROM okc_statuses_b os, okc_k_lines_b ol
3824 WHERE ol.ID = l_line_id AND ol.sts_code = os.code;
3825
3826 CURSOR l_salesgrp_csr (p_id NUMBER, p_start_date DATE, p_end_date DATE)
3827 IS
3828 SELECT GROUP_ID
3829 FROM jtf_rs_srp_groups
3830 WHERE salesrep_id = p_id
3831 AND org_id = okc_context.get_okc_org_id
3832 AND p_start_date BETWEEN start_date AND end_date
3833 AND p_end_date BETWEEN start_date AND end_date;
3834
3835 l_sales_group_id NUMBER;
3836 l_ctr_grpid VARCHAR2 (40);
3837 l_ste_code VARCHAR2 (30);
3838 --Contract Line Table
3839 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
3840 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
3841 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
3842 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
3843 --Contract Item
3844 l_cimv_tbl_in okc_contract_item_pub.cimv_tbl_type;
3845 l_cimv_tbl_out okc_contract_item_pub.cimv_tbl_type;
3846 --Time Value Related
3847 l_isev_ext_tbl_in okc_time_pub.isev_ext_tbl_type;
3848 l_isev_ext_tbl_out okc_time_pub.isev_ext_tbl_type;
3849 --SalesCredit
3850 l_scrv_tbl_in oks_sales_credit_pub.scrv_tbl_type;
3851 l_scrv_tbl_out oks_sales_credit_pub.scrv_tbl_type;
3852 --Coverage
3853 l_cov_rec oks_coverages_pub.ac_rec_type;
3854 --Counters
3855 l_ctr_grp_id_template NUMBER;
3856 l_ctr_grp_id_instance NUMBER;
3857 --Return IDs
3858 l_line_id NUMBER;
3859 l_rule_group_id NUMBER;
3860 l_rule_id NUMBER;
3861 l_line_item_id NUMBER;
3862 l_time_value_id NUMBER;
3863 l_cov_id NUMBER;
3864 l_salescredit_id NUMBER;
3865 --TimeUnits
3866 l_duration NUMBER;
3867 l_timeunits VARCHAR2 (240);
3868 --General
3869 l_hdrsdt DATE;
3870 l_hdredt DATE;
3871 l_hdrstatus CHAR;
3872 l_lsl_id NUMBER;
3873 l_jtot_object VARCHAR2 (30) := NULL;
3874 i NUMBER;
3875 l_can_object NUMBER;
3876 l_line_party_role_id NUMBER;
3877 l_lin_party_id NUMBER;
3878 l_lin_contactid NUMBER;
3879 l_line_contact_id NUMBER;
3880 l_role VARCHAR2 (40);
3881 l_obj VARCHAR2 (40);
3882 l_rle_code VARCHAR2 (240);
3883 l_msg_data VARCHAR2 (2000);
3884 l_ind NUMBER;
3885 l_sts_code VARCHAR2 (30);
3886 l_sts_flag VARCHAR2 (1);
3887 p_cle_tbl p_srvline_tbl;
3888 l_ctr NUMBER;
3889 l_inp_rec okc_inst_cnd_pub.instcnd_inp_rec;
3890 l_entity_id NUMBER;
3891 BEGIN
3892 x_return_status := okc_api.g_ret_sts_success;
3893
3894 IF p_k_line_rec.SOURCE = 'NEW'
3895 THEN
3896 get_k_cle_id (p_chrid => p_k_line_rec.k_id,
3897 p_invserviceid => p_k_line_rec.srv_id,
3898 p_cle_tbl => p_cle_tbl
3899 );
3900
3901 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3902 THEN
3903 fnd_log.STRING (fnd_log.level_statement,
3904 g_module_current || '.Create_K_Service_Lines',
3905 ' Top Lines Count = ' || p_cle_tbl.COUNT
3906 );
3907 END IF;
3908
3909 IF p_cle_tbl.COUNT > 0
3910 THEN
3911 l_ctr := p_cle_tbl.FIRST;
3912
3913 LOOP
3914 IF check_merge_yn (p_cle_tbl (l_ctr).k_line_id,
3915 p_k_line_rec.order_line_id,
3916 p_k_line_rec.warranty_flag
3917 )
3918 THEN
3919 l_line_id := p_cle_tbl (l_ctr).k_line_id;
3920 EXIT;
3921 END IF;
3922
3923 EXIT WHEN l_ctr = p_cle_tbl.LAST;
3924 l_ctr := p_cle_tbl.NEXT (l_ctr);
3925 END LOOP;
3926 ELSE
3927 l_line_id := NULL;
3928 END IF;
3929
3930 -- enhancement to be commented
3931 OPEN l_ste_csr (l_line_id);
3932
3933 FETCH l_ste_csr
3934 INTO l_ste_code;
3935
3936 CLOSE l_ste_csr;
3937
3938 IF l_ste_code = 'EXPIRED'
3939 THEN
3940 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
3941
3942 UPDATE okc_k_lines_b
3943 SET sts_code = l_sts_code
3944 WHERE ID = l_line_id;
3945 END IF;
3946 ELSE
3947 l_line_id := NULL;
3948 END IF;
3949
3950 IF l_line_id IS NOT NULL
3951 THEN
3952 x_service_line_id := l_line_id;
3953 l_return_status := okc_api.g_ret_sts_success;
3954 RAISE g_exception_halt_validation;
3955 END IF;
3956
3957 IF p_k_line_rec.warranty_flag = 'W'
3958 THEN
3959 l_lsl_id := 14;
3960 l_jtot_object := g_jtf_warr;
3961 ELSIF p_k_line_rec.warranty_flag = 'E'
3962 THEN
3963 l_lsl_id := 19;
3964 l_jtot_object := g_jtf_extwarr;
3965 ELSIF p_k_line_rec.warranty_flag IN ('S', 'SU')
3966 THEN
3967 l_lsl_id := 1;
3968 l_jtot_object := g_jtf_extwarr;
3969 END IF;
3970
3971 check_hdr_effectivity (p_chr_id => p_k_line_rec.k_id,
3972 p_srv_sdt => p_k_line_rec.srv_sdt,
3973 p_srv_edt => p_k_line_rec.srv_edt,
3974 x_hdr_sdt => l_hdrsdt,
3975 x_hdr_edt => l_hdredt,
3976 x_status => l_hdrstatus
3977 );
3978
3979 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3980 THEN
3981 fnd_log.STRING (fnd_log.level_event,
3982 g_module_current
3983 || '.Create_K_Service_Lines.internal_call.after',
3984 'check_hdr_effectivity(Return status = '
3985 || l_hdrstatus
3986 );
3987 END IF;
3988
3989 IF l_hdrstatus = 'E'
3990 THEN
3991 okc_api.set_message (g_app_name,
3992 g_unexpected_error,
3993 g_sqlcode_token,
3994 SQLCODE,
3995 g_sqlerrm_token,
3996 'line dates are not within header effectivity'
3997 );
3998
3999 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4000 THEN
4001 fnd_log.STRING (fnd_log.level_error,
4002 g_module_current
4003 || '.Create_K_Service_Lines.ERROR',
4004 'Line dates are not withen header effectivity'
4005 );
4006 END IF;
4007
4008 --mmadhavi
4009 IF (p_caller = 'OC')
4010 THEN
4011 fnd_message.set_name (g_app_name, 'OKS_INVD_CONTRACT_ID');
4012 fnd_message.set_token (token => 'HDR_ID',
4013 VALUE => p_k_line_rec.k_id
4014 );
4015 x_order_error := '#' || fnd_message.get_encoded || '#';
4016 END IF;
4017
4018 --mmadhavi
4019 l_return_status := okc_api.g_ret_sts_error;
4020 RAISE g_exception_halt_validation;
4021 ELSIF l_hdrstatus = 'Y'
4022 THEN
4023 IF p_k_line_rec.line_sts_code = 'ENTERED'
4024 THEN
4025 l_sts_flag := 'N';
4026 ELSE
4027 l_sts_flag := 'Y';
4028 END IF;
4029
4030 update_hdr_dates (p_chr_id => p_k_line_rec.k_id,
4031 p_new_sdt => l_hdrsdt,
4032 p_new_edt => l_hdredt,
4033 p_sts_flag => l_sts_flag,
4034 x_status => l_return_status,
4035 x_msg_count => x_msg_count,
4036 x_msg_data => x_msg_data
4037 );
4038
4039 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4040 THEN
4041 fnd_log.STRING (fnd_log.level_event,
4042 g_module_current
4043 || '.Create_K_Service_Lines.internal_call.after',
4044 'update_hdr_dates(Return status = '
4045 || l_return_status
4046 );
4047 END IF;
4048
4049 IF NOT l_return_status = 'S'
4050 THEN
4051 l_return_status := okc_api.g_ret_sts_error;
4052 okc_api.set_message (g_app_name,
4053 g_required_value,
4054 g_col_name_token,
4055 'Header Effectivity Update (LINE)'
4056 );
4057 RAISE g_exception_halt_validation;
4058 END IF;
4059 END IF;
4060
4061 l_clev_tbl_in (1).chr_id := p_k_line_rec.k_id;
4062 l_clev_tbl_in (1).sfwt_flag := 'N';
4063 l_clev_tbl_in (1).lse_id := l_lsl_id;
4064 --l_clev_tbl_in(1).line_number := p_k_line_rec.k_line_number;
4065 l_clev_tbl_in (1).line_number := get_top_line_number (p_k_line_rec.k_id);
4066 l_clev_tbl_in (1).sts_code := p_k_line_rec.line_sts_code;
4067 l_clev_tbl_in (1).display_sequence := 1;
4068 l_clev_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4069 --l_clev_tbl_in(1).name := Substr(p_k_line_rec.srv_segment1,1,50);
4070 l_clev_tbl_in (1).NAME := NULL;
4071 l_clev_tbl_in (1).item_description := p_k_line_rec.srv_desc;
4072 l_clev_tbl_in (1).start_date := p_k_line_rec.srv_sdt;
4073 l_clev_tbl_in (1).end_date := p_k_line_rec.srv_edt;
4074 l_clev_tbl_in (1).exception_yn := 'N';
4075 l_clev_tbl_in (1).currency_code := p_k_line_rec.currency;
4076 l_clev_tbl_in (1).price_level_ind := priced_yn (l_lsl_id);
4077 l_clev_tbl_in (1).trn_code := p_k_line_rec.reason_code;
4078 l_clev_tbl_in (1).upg_orig_system_ref :=
4079 p_k_line_rec.upg_orig_system_ref;
4080 -- 04-jun-2002 Vigandhi
4081 l_clev_tbl_in (1).upg_orig_system_ref_id :=
4082 p_k_line_rec.upg_orig_system_ref_id;
4083
4084 -- 04-jun-2002 Vigandhi
4085 l_clev_tbl_in (1).comments := p_k_line_rec.reason_comments;
4086 l_clev_tbl_in (1).attribute1 := p_k_line_rec.attribute1;
4087 l_clev_tbl_in (1).attribute2 := p_k_line_rec.attribute2;
4088 l_clev_tbl_in (1).attribute3 := p_k_line_rec.attribute3;
4089 l_clev_tbl_in (1).attribute4 := p_k_line_rec.attribute4;
4090 l_clev_tbl_in (1).attribute5 := p_k_line_rec.attribute5;
4091 l_clev_tbl_in (1).attribute6 := p_k_line_rec.attribute6;
4092 l_clev_tbl_in (1).attribute7 := p_k_line_rec.attribute7;
4093 l_clev_tbl_in (1).attribute8 := p_k_line_rec.attribute8;
4094 l_clev_tbl_in (1).attribute9 := p_k_line_rec.attribute9;
4095 l_clev_tbl_in (1).attribute10 := p_k_line_rec.attribute10;
4096 l_clev_tbl_in (1).attribute11 := p_k_line_rec.attribute11;
4097 l_clev_tbl_in (1).attribute12 := p_k_line_rec.attribute12;
4098 l_clev_tbl_in (1).attribute13 := p_k_line_rec.attribute13;
4099 l_clev_tbl_in (1).attribute14 := p_k_line_rec.attribute14;
4100 l_clev_tbl_in (1).attribute15 := p_k_line_rec.attribute15;
4101 ------------------------------------------
4102 -- Rules inserted by okc
4103 ------------------------------------------
4104 l_can_object := NULL;
4105 IF p_k_line_rec.warranty_flag <> 'W'
4106 THEN
4107
4108 OPEN l_billto_csr (p_k_line_rec.bill_to_id);
4109 FETCH l_billto_csr INTO l_can_object;
4110 CLOSE l_billto_csr;
4111
4112 --ramesh added on jan-26-01 for ib html interface
4113 IF l_can_object IS NULL
4114 THEN
4115 l_can_object := p_k_line_rec.cust_account;
4116 END IF;
4117 END IF;
4118
4119
4120 l_clev_tbl_in (1).cust_acct_id := l_can_object; --CAN
4121 l_clev_tbl_in (1).inv_rule_id := p_k_line_rec.invoicing_rule_id; --IRE
4122 l_clev_tbl_in (1).line_renewal_type_code :=
4123 NVL (p_k_line_rec.line_renewal_type, 'FUL');
4124 --LRT
4125 l_clev_tbl_in (1).bill_to_site_use_id := p_k_line_rec.bill_to_id; --BTO
4126 l_clev_tbl_in (1).ship_to_site_use_id := p_k_line_rec.ship_to_id; --STO
4127 l_clev_tbl_in (1).price_list_id := p_k_line_rec.ln_price_list_id;
4128 -- price list
4129 okc_contract_pub.create_contract_line
4130 (p_api_version => l_api_version,
4131 p_init_msg_list => l_init_msg_list,
4132 p_restricted_update => okc_api.g_true,
4133 x_return_status => l_return_status,
4134 x_msg_count => x_msg_count,
4135 x_msg_data => x_msg_data,
4136 p_clev_tbl => l_clev_tbl_in,
4137 x_clev_tbl => l_clev_tbl_out
4138 );
4139
4140 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4141 THEN
4142 fnd_log.STRING
4143 (fnd_log.level_event,
4144 g_module_current
4145 || '.Create_K_Service_Lines.External_call.after',
4146 'okc_contract_pub.create_contract_line(Return status = '
4147 || l_return_status
4148 );
4149 END IF;
4150
4151 IF l_return_status = 'S'
4152 THEN
4153 l_line_id := l_clev_tbl_out (1).ID;
4154 ELSE
4155 --mmadhavi
4156 IF (p_caller = 'OC')
4157 THEN
4158 x_order_error := '#';
4159
4160 FOR i IN 1 .. fnd_msg_pub.count_msg
4161 LOOP
4162 fnd_msg_pub.get (p_msg_index => i,
4163 p_encoded => 'T',
4164 p_data => l_msg_data,
4165 p_msg_index_out => l_ind
4166 );
4167 x_order_error := x_order_error || l_msg_data || '#';
4168
4169 IF (g_fnd_log_option = 'Y')
4170 THEN
4171 fnd_message.set_encoded (l_msg_data);
4172 l_msg_data := fnd_message.get;
4173 fnd_file.put_line
4174 (fnd_file.LOG,
4175 '(okc_contract_pub).create_contract_line '
4176 || l_msg_data
4177 );
4178 END IF;
4179 END LOOP;
4180
4181 RAISE g_exception_halt_validation;
4182 ELSE
4183 --mmadhavi
4184 okc_api.set_message (g_app_name,
4185 g_required_value,
4186 g_col_name_token,
4187 'Line (LINE)'
4188 );
4189 RAISE g_exception_halt_validation;
4190 END IF;
4191 END IF;
4192
4193 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4194 THEN
4195 fnd_log.STRING (fnd_log.level_statement,
4196 g_module_current || '.Create_K_Service_Lines',
4197 'Line Id= ' || l_line_id
4198 );
4199 END IF;
4200 -------------------------------------
4201 -- Get and populate the CC Trxn extension id
4202 -- and populate the oks line structure
4203 -------------------------------------
4204
4205 -- Get the transaction extension id for the contract line
4206 IF p_k_line_rec.order_line_id IS NOT NULL THEN
4207 get_cc_trxn_extn (
4208 p_order_header_id => NULL,
4209 p_order_line_id => p_k_line_rec.order_line_id,
4210 p_context_level => G_CONTEXT_ORDER_LINE,
4211 p_contract_hdr_id => NULL,
4212 p_contract_line_id => l_line_id,
4213 x_entity_id => l_entity_id,
4214 x_return_status => l_return_status );
4215
4216 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
4217 -- Populate the oks header record with the trxn_extension_id
4218 l_klnv_tbl_in(1).trxn_extension_id := l_entity_id;
4219 IF l_entity_id IS NOT NULL THEN
4220 l_klnv_tbl_in (1).payment_type := 'CCR'; -- Credit Card
4221 END IF;
4222 ELSE
4223 FOR i IN 1 .. fnd_msg_pub.count_msg
4224 LOOP
4225 fnd_msg_pub.get (p_msg_index => i,
4226 p_encoded => 'T',
4227 p_data => l_msg_data,
4228 p_msg_index_out => l_ind
4229 );
4230
4231 IF (g_fnd_log_option = 'Y') THEN
4232 fnd_message.set_encoded (l_msg_data);
4233 l_msg_data := fnd_message.get;
4234 fnd_file.put_line
4235 (fnd_file.LOG,
4236 'get_cc_trxn for line'
4237 || l_msg_data
4238 );
4239 END IF;
4240 END LOOP;
4241 RAISE g_exception_halt_validation;
4242 END IF;
4243 END IF;
4244
4245 -------------------------------------
4246 -- rules inserted by oks --IRT
4247 -------------------------------------
4248 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4249 THEN
4250 fnd_log.STRING (fnd_log.level_statement,
4251 g_module_current || '.Create_K_Service_Lines',
4252 'Accounting id = '
4253 || p_k_line_rec.accounting_rule_id
4254 || ',Commitment id = '
4255 || p_k_line_rec.commitment_id
4256 );
4257 END IF;
4258
4259 l_klnv_tbl_in (1).cle_id := l_line_id;
4260 l_klnv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4261 --mmadhavi removing trucation of invoice_text
4262 l_klnv_tbl_in (1).invoice_text :=
4263 p_k_line_rec.srv_desc
4264 || ':'
4265 || to_char(p_k_line_rec.srv_sdt,'DD-MON-YYYY')
4266 || ':'
4267 || to_char(p_k_line_rec.srv_edt,'DD-MON-YYYY');
4268 l_klnv_tbl_in (1).created_by := okc_api.g_miss_num;
4269 l_klnv_tbl_in (1).creation_date := okc_api.g_miss_date;
4270 l_klnv_tbl_in (1).acct_rule_id := p_k_line_rec.accounting_rule_id; --ARL
4271
4272 IF p_k_line_rec.commitment_id IS NOT NULL
4273 THEN
4274 l_klnv_tbl_in (1).payment_type := 'COM';
4275 l_klnv_tbl_in (1).commitment_id := p_k_line_rec.commitment_id;
4276 --PAYMENT METHOD
4277 END IF;
4278
4279 l_klnv_tbl_in (1).cust_po_number_req_yn := 'N'; -- po number required
4280 l_klnv_tbl_in (1).inv_print_flag := 'Y';
4281 -- print flag'Changed to Y to fix bug 4188061'
4282 --Bug Fix 4121175
4283 l_klnv_tbl_in (1).tax_code := p_k_line_rec.tax_code;
4284 --End Bug Fix 4121175
4285 l_klnv_tbl_in (1).coverage_id := p_k_line_rec.coverage_template_id;
4286 l_klnv_tbl_in (1).standard_cov_yn := p_k_line_rec.standard_cov_yn;
4287 l_klnv_tbl_in (1).price_uom := p_k_line_rec.price_uom;
4288
4289 --Added in R12 by rsu
4290 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
4291 THEN
4292 fnd_log.STRING (fnd_log.level_statement,
4293 g_module_current || '.Create_K_Service_Lines',
4294 'Before calling oks_contract_line_pub.create_line'
4295 );
4296 fnd_log.STRING (fnd_log.level_statement,
4297 g_module_current || '.Create_K_Service_Lines',
4298 'p_k_line_rec.tax_classification_code: '
4299 || p_k_line_rec.tax_classification_code
4300 );
4301 fnd_log.STRING (fnd_log.level_statement,
4302 g_module_current || '.Create_K_Service_Lines',
4303 'p_k_line_rec.exempt_certificate_number: '
4304 || p_k_line_rec.exemption_certificate_number
4305 );
4306 fnd_log.STRING (fnd_log.level_statement,
4307 g_module_current || '.Create_K_Service_Lines',
4308 'p_k_line_rec.exempt_reason_code: '
4309 || p_k_line_rec.exemption_reason_code
4310 );
4311 fnd_log.STRING (fnd_log.level_statement,
4312 g_module_current || '.Create_K_Service_Lines',
4313 'p_k_line_rec.tax_status: '
4314 || p_k_line_rec.tax_status
4315 );
4316 END IF;
4317
4318 l_klnv_tbl_in (1).tax_classification_code :=
4319 p_k_line_rec.tax_classification_code;
4320 l_klnv_tbl_in (1).exempt_certificate_number :=
4321 p_k_line_rec.exemption_certificate_number;
4322 l_klnv_tbl_in (1).exempt_reason_code :=
4323 p_k_line_rec.exemption_reason_code;
4324 l_klnv_tbl_in (1).tax_status := p_k_line_rec.tax_status;
4325 --End: Added in R12 by rsu
4326
4327 -- Added for 120 CC EXTN(LINE) project by vjramali
4328 -- l_klnv_tbl_in (1).trxn_extension_id := p_k_line_rec.trxn_extension_id;
4329 oks_contract_line_pub.create_line (p_api_version => l_api_version,
4330 p_init_msg_list => l_init_msg_list,
4331 x_return_status => l_return_status,
4332 x_msg_count => x_msg_count,
4333 x_msg_data => x_msg_data,
4334 p_klnv_tbl => l_klnv_tbl_in,
4335 x_klnv_tbl => l_klnv_tbl_out,
4336 p_validate_yn => 'N'
4337 );
4338
4339 IF NOT l_return_status = 'S'
4340 THEN
4341 --mmadhavi
4342 IF (p_caller = 'OC')
4343 THEN
4344 x_order_error := '#';
4345
4346 FOR i IN 1 .. fnd_msg_pub.count_msg
4347 LOOP
4348 fnd_msg_pub.get (p_msg_index => i,
4349 p_encoded => 'T',
4350 p_data => l_msg_data,
4351 p_msg_index_out => l_ind
4352 );
4353 x_order_error := x_order_error || l_msg_data || '#';
4354
4355 IF (g_fnd_log_option = 'Y')
4356 THEN
4357 fnd_message.set_encoded (l_msg_data);
4358 l_msg_data := fnd_message.get;
4359 fnd_file.put_line
4360 (fnd_file.LOG,
4361 '(oks_contract_line_pub).create_line '
4362 || l_msg_data
4363 );
4364 END IF;
4365 END LOOP;
4366
4367 RAISE g_exception_halt_validation;
4368 ELSE
4369 --mmadhavi
4370 okc_api.set_message (g_app_name,
4371 g_required_value,
4372 g_col_name_token,
4373 'OKS Contract LINE'
4374 );
4375 RAISE g_exception_halt_validation;
4376 END IF;
4377 END IF;
4378
4379 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4380 THEN
4381 fnd_log.STRING
4382 (fnd_log.level_event,
4383 g_module_current
4384 || '.Create_K_Service_Lines.external_call.after',
4385 'oks_contract_line_pub.create_line (Return status = '
4386 || l_return_status
4387 || ')'
4388 );
4389 END IF;
4390
4391 okc_time_util_pub.get_duration (p_start_date => p_k_line_rec.srv_sdt,
4392 p_end_date => p_k_line_rec.srv_edt,
4393 x_duration => l_duration,
4394 x_timeunit => l_timeunits,
4395 x_return_status => l_return_status
4396 );
4397
4398 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4399 THEN
4400 fnd_log.STRING (fnd_log.level_event,
4401 g_module_current
4402 || '.Create_K_Service_Lines.external_call.after',
4403 'okc_time_util_pub.get_duration(Return status = '
4404 || l_return_status
4405 || ')'
4406 );
4407 END IF;
4408
4409 IF NOT l_return_status = 'S'
4410 THEN
4411 RAISE g_exception_halt_validation;
4412 END IF;
4413
4414 --Create Contract Item
4415 l_cimv_tbl_in (1).cle_id := l_line_id;
4416 l_cimv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4417 l_cimv_tbl_in (1).object1_id1 := p_k_line_rec.srv_id;
4418 l_cimv_tbl_in (1).object1_id2 := okc_context.get_okc_organization_id;
4419 l_cimv_tbl_in (1).jtot_object1_code := l_jtot_object;
4420 l_cimv_tbl_in (1).exception_yn := 'N';
4421 l_cimv_tbl_in (1).number_of_items := l_duration;
4422 l_cimv_tbl_in (1).uom_code := l_timeunits;
4423 okc_contract_item_pub.create_contract_item
4424 (p_api_version => l_api_version,
4425 p_init_msg_list => l_init_msg_list,
4426 x_return_status => l_return_status,
4427 x_msg_count => x_msg_count,
4428 x_msg_data => x_msg_data,
4429 p_cimv_tbl => l_cimv_tbl_in,
4430 x_cimv_tbl => l_cimv_tbl_out
4431 );
4432
4433 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4434 THEN
4435 fnd_log.STRING
4436 (fnd_log.level_event,
4437 g_module_current || '.Create_K_Service_Lines.external_call.after',
4438 'okc_contract_item_pub.create_contract_item(Return status = '
4439 || l_return_status
4440 || ')'
4441 );
4442 END IF;
4443
4444 IF l_return_status = 'S'
4445 THEN
4446 l_line_item_id := l_cimv_tbl_out (1).ID;
4447 ELSE
4448 okc_api.set_message (g_app_name,
4449 g_required_value,
4450 g_col_name_token,
4451 'Service Inventory Item ID '
4452 || p_k_line_rec.srv_id
4453 || ' ORG '
4454 + okc_context.get_okc_organization_id
4455 );
4456 RAISE g_exception_halt_validation;
4457 END IF;
4458
4459 --Create SalesCredits
4460 IF p_salescredit_tbl_in.COUNT > 0
4461 THEN
4462 i := p_salescredit_tbl_in.FIRST;
4463
4464 LOOP
4465 l_scrv_tbl_in (1).PERCENT := p_salescredit_tbl_in (i).PERCENT;
4466 l_scrv_tbl_in (1).chr_id := p_k_line_rec.k_id;
4467 l_scrv_tbl_in (1).cle_id := l_line_id;
4468 l_scrv_tbl_in (1).ctc_id := p_salescredit_tbl_in (i).ctc_id;
4469 l_scrv_tbl_in (1).sales_credit_type_id1 :=
4470 p_salescredit_tbl_in (i).sales_credit_type_id;
4471 l_scrv_tbl_in (1).sales_credit_type_id2 := '#';
4472 l_scrv_tbl_in (1).sales_group_id :=
4473 p_salescredit_tbl_in (i).sales_group_id;
4474 oks_sales_credit_pub.insert_sales_credit
4475 (p_api_version => 1.0,
4476 p_init_msg_list => okc_api.g_false,
4477 x_return_status => x_return_status,
4478 x_msg_count => x_msg_count,
4479 x_msg_data => x_msg_data,
4480 p_scrv_tbl => l_scrv_tbl_in,
4481 x_scrv_tbl => l_scrv_tbl_out
4482 );
4483
4484 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4485 THEN
4486 fnd_log.STRING
4487 (fnd_log.level_event,
4488 g_module_current
4489 || '.Create_K_Service_Lines.external_call.after',
4490 'oks_sales_credit_pub.insert_sales_credit(Return status = '
4491 || l_return_status
4492 || ')'
4493 );
4494 END IF;
4495
4496 IF l_return_status = 'S'
4497 THEN
4498 l_salescredit_id := l_scrv_tbl_out (1).ID;
4499 ELSE
4500 okc_api.set_message (g_app_name,
4501 g_required_value,
4502 g_col_name_token,
4503 'Sales Credit Failure'
4504 );
4505 RAISE g_exception_halt_validation;
4506 END IF;
4507
4508 EXIT WHEN i = p_salescredit_tbl_in.LAST;
4509 i := p_salescredit_tbl_in.NEXT (i);
4510 END LOOP;
4511 END IF;
4512
4513 --CONTACT CREATION ROUT NOCOPY INE STARTS
4514 IF p_contact_tbl.COUNT > 0
4515 THEN
4516 i := p_contact_tbl.FIRST;
4517
4518 LOOP
4519 IF p_contact_tbl (i).flag = 'H'
4520 THEN
4521 l_lin_party_id := NULL;
4522 l_lin_contactid := NULL;
4523
4524 OPEN l_ra_hcontacts_cur (p_contact_tbl (i).contact_id);
4525
4526 FETCH l_ra_hcontacts_cur
4527 INTO l_lin_party_id, l_lin_contactid;
4528
4529 CLOSE l_ra_hcontacts_cur;
4530
4531 IF i = p_contact_tbl.FIRST
4532 THEN
4533 IF p_k_line_rec.warranty_flag = 'SU'
4534 THEN
4535 l_rle_code := 'SUBSCRIBER';
4536 ELSE
4537 l_rle_code := 'CUSTOMER';
4538 END IF;
4539
4540 party_role (p_chrid => p_k_line_rec.k_id,
4541 p_cleid => l_line_id,
4542 p_rle_code => l_rle_code,
4543 p_partyid => l_lin_party_id,
4544 p_object_code => g_jtf_party,
4545 x_roleid => l_line_party_role_id,
4546 x_msg_count => x_msg_count,
4547 x_msg_data => x_msg_data,
4548 x_return_status => l_return_status
4549 );
4550
4551 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
4552 )
4553 THEN
4554 fnd_log.STRING
4555 (fnd_log.level_event,
4556 g_module_current
4557 || '.Create_K_Service_Lines.contact_creation',
4558 'party_role(Return status = '
4559 || l_return_status
4560 || ')'
4561 || 'CPL id = '
4562 || l_line_party_role_id
4563 );
4564 END IF;
4565
4566 IF NOT l_return_status = okc_api.g_ret_sts_success
4567 THEN
4568 x_return_status := l_return_status;
4569 RAISE g_exception_halt_validation;
4570 END IF;
4571 END IF;
4572
4573 IF p_contact_tbl (i).contact_role LIKE '%BILLING%'
4574 THEN
4575 l_role := 'CUST_BILLING';
4576 l_obj := 'OKX_CONTBILL';
4577 ELSIF p_contact_tbl (i).contact_role LIKE '%ADMIN%'
4578 THEN
4579 l_role := 'CUST_ADMIN';
4580 l_obj := 'OKX_CONTADMN';
4581 ELSIF p_contact_tbl (i).contact_role LIKE '%SHIP%'
4582 THEN
4583 l_role := 'CUST_SHIPPING';
4584 l_obj := 'OKX_CONTSHIP';
4585 END IF;
4586
4587 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4588 THEN
4589 fnd_log.STRING (fnd_log.level_statement,
4590 g_module_current
4591 || '.Create_K_Service_Lines.before_contact',
4592 'Line Party Id = '
4593 || l_lin_party_id
4594 || ',ORG CTC Id = '
4595 || p_contact_tbl (i).contact_id
4596 || ',RAH CTC Id = '
4597 || l_lin_contactid
4598 || ',Cont rule = '
4599 || p_contact_tbl (i).contact_role
4600 || ',CON OBJ Rule = '
4601 || p_contact_tbl (i).contact_object_code
4602 );
4603 END IF;
4604
4605 l_ctcv_tbl_in (1).cpl_id := l_line_party_role_id;
4606 l_ctcv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4607 l_ctcv_tbl_in (1).cro_code := l_role;
4608 l_ctcv_tbl_in (1).object1_id1 := p_contact_tbl (i).contact_id;
4609 l_ctcv_tbl_in (1).object1_id2 := '#';
4610 l_ctcv_tbl_in (1).jtot_object1_code := l_obj;
4611 okc_contract_party_pub.create_contact
4612 (p_api_version => l_api_version,
4613 p_init_msg_list => l_init_msg_list,
4614 x_return_status => l_return_status,
4615 x_msg_count => x_msg_count,
4616 x_msg_data => x_msg_data,
4617 p_ctcv_tbl => l_ctcv_tbl_in,
4618 x_ctcv_tbl => l_ctcv_tbl_out
4619 );
4620
4621 IF l_return_status = 'S'
4622 THEN
4623 l_line_contact_id := l_ctcv_tbl_out (1).ID;
4624 ELSE
4625 okc_api.set_message (g_app_name,
4626 g_required_value,
4627 g_col_name_token,
4628 p_contact_tbl (i).contact_role
4629 || ' Contact (LINE) '
4630 || p_contact_tbl (i).contact_object_code
4631 );
4632 RAISE g_exception_halt_validation;
4633 END IF;
4634 END IF;
4635
4636 EXIT WHEN i = p_contact_tbl.LAST;
4637 i := p_contact_tbl.NEXT (i);
4638 END LOOP;
4639 END IF;
4640
4641 IF p_k_line_rec.coverage_template_id IS NOT NULL and p_caller <> 'ST'
4642 THEN
4643 fnd_msg_pub.initialize;
4644 oks_coverages_pvt.create_k_coverage_ext
4645 (p_api_version => 1,
4646 p_init_msg_list => 'T',
4647 p_src_line_id => p_k_line_rec.coverage_template_id,
4648 p_tgt_line_id => l_line_id,
4649 x_return_status => l_return_status,
4650 x_msg_count => x_msg_count,
4651 x_msg_data => x_msg_data
4652 );
4653
4654 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4655 THEN
4656 fnd_log.STRING
4657 (fnd_log.level_event,
4658 g_module_current
4659 || '.Create_K_Service_Lines.after_coverage_ext',
4660 'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
4661 || l_return_status
4662 || ')'
4663 );
4664 END IF;
4665
4666 IF NOT l_return_status = okc_api.g_ret_sts_success
4667 THEN
4668 IF (p_caller = 'OC')
4669 THEN
4670 fnd_message.set_name (g_app_name, 'OKS_INVD_COV_TEMP');
4671 fnd_message.set_token (token => 'SERV_ID',
4672 VALUE => p_k_line_rec.srv_id
4673 );
4674 x_order_error := '#' || fnd_message.get_encoded || '#';
4675 ELSE
4676 okc_api.set_message (g_app_name,
4677 g_required_value,
4678 g_col_name_token,
4679 'Invalid Coverage Associated with '
4680 || p_k_line_rec.srv_id
4681 );
4682 END IF;
4683
4684 RAISE g_exception_halt_validation;
4685 END IF;
4686 ELSIF p_k_line_rec.coverage_template_id IS NULL AND p_caller <> 'ST'
4687 THEN
4688 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4689 THEN
4690 fnd_log.STRING (fnd_log.level_error,
4691 g_module_current
4692 || '.Create_K_Service_Lines.ERROR',
4693 'Coverage is not associated with '
4694 || p_k_line_rec.srv_id
4695 );
4696 END IF;
4697
4698 l_return_status := okc_api.g_ret_sts_error;
4699 okc_api.set_message (g_app_name,
4700 g_required_value,
4701 g_col_name_token,
4702 'Coverage Not Associated with '
4703 || p_k_line_rec.srv_id
4704 );
4705 RAISE g_exception_halt_validation;
4706 END IF;
4707
4708 l_ctr_grpid := NULL;
4709
4710 OPEN l_ctr_csr (p_k_line_rec.srv_id);
4711
4712 FETCH l_ctr_csr
4713 INTO l_ctr_grpid;
4714
4715 CLOSE l_ctr_csr;
4716
4717 IF l_ctr_grpid IS NOT NULL
4718 THEN
4719 cs_counters_pub.autoinstantiate_counters
4720 (p_api_version => 1.0,
4721 p_init_msg_list => okc_api.g_false,
4722 p_commit => 'F',
4723 x_return_status => l_return_status,
4724 x_msg_count => x_msg_count,
4725 x_msg_data => x_msg_data,
4726 p_source_object_id_template => p_k_line_rec.srv_id,
4727 p_source_object_id_instance => l_line_id,
4728 x_ctr_grp_id_template => l_ctr_grp_id_template,
4729 x_ctr_grp_id_instance => l_ctr_grp_id_instance
4730 );
4731
4732 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4733 THEN
4734 fnd_log.STRING
4735 (fnd_log.level_event,
4736 g_module_current
4737 || '.Create_K_Service_Lines.after_instantiate_counters',
4738 'cs_counters_pub.autoinstantiate_counters(Return Status = '
4739 || l_return_status
4740 || ')'
4741 );
4742 END IF;
4743
4744 IF NOT l_return_status = okc_api.g_ret_sts_success
4745 THEN
4746 okc_api.set_message (g_app_name,
4747 g_required_value,
4748 g_col_name_token,
4749 'Counter Instantiate (LINE)'
4750 );
4751 RAISE g_exception_halt_validation;
4752 END IF;
4753
4754 -- To instantiate the events
4755 l_inp_rec.ins_ctr_grp_id := l_ctr_grp_id_instance;
4756 l_inp_rec.tmp_ctr_grp_id := l_ctr_grp_id_template;
4757 l_inp_rec.chr_id := p_k_line_rec.k_id;
4758 l_inp_rec.cle_id := l_line_id;
4759 l_inp_rec.jtot_object_code := 'OKC_K_LINE';
4760 l_inp_rec.inv_item_id := p_k_line_rec.srv_id;
4761 okc_inst_cnd_pub.inst_condition (p_api_version => 1.0,
4762 p_init_msg_list => 'T',
4763 x_return_status => x_return_status,
4764 x_msg_count => x_msg_count,
4765 x_msg_data => x_msg_data,
4766 p_instcnd_inp_rec => l_inp_rec
4767 );
4768 END IF;
4769
4770 x_service_line_id := l_line_id;
4771 EXCEPTION
4772 WHEN g_exception_halt_validation
4773 THEN
4774 x_return_status := l_return_status;
4775 WHEN OTHERS
4776 THEN
4777 x_return_status := okc_api.g_ret_sts_unexp_error;
4778 okc_api.set_message (g_app_name,
4779 g_unexpected_error,
4780 g_sqlcode_token,
4781 SQLCODE,
4782 g_sqlerrm_token,
4783 SQLERRM
4784 );
4785 END create_k_service_lines;
4786
4787 PROCEDURE create_k_covered_levels (
4788 p_k_covd_rec IN k_line_covered_level_rec_type,
4789 p_price_attribs IN pricing_attributes_type,
4790 p_caller IN VARCHAR2,
4791 x_order_error OUT NOCOPY VARCHAR2,
4792 x_covlvl_id OUT NOCOPY NUMBER,
4793 x_update_line OUT NOCOPY VARCHAR2,
4794 x_return_status OUT NOCOPY VARCHAR2,
4795 x_msg_count OUT NOCOPY NUMBER,
4796 x_msg_data OUT NOCOPY VARCHAR2
4797 )
4798 IS
4799 l_api_version CONSTANT NUMBER := 1.0;
4800 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
4801 l_return_status VARCHAR2 (1) := 'S';
4802 l_index VARCHAR2 (2000);
4803 --Contract Line Table
4804 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
4805 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
4806 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
4807 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
4808 --Contract Item
4809 l_cimv_tbl okc_contract_item_pub.cimv_tbl_type;
4810 l_cimv_tbl_out okc_contract_item_pub.cimv_tbl_type;
4811 --Pricing Attributes
4812 l_pavv_tbl_in okc_price_adjustment_pvt.pavv_tbl_type;
4813 l_pavv_tbl_out okc_price_adjustment_pvt.pavv_tbl_type;
4814 --Rule Related
4815 --l_rgpv_tbl_in okc_rule_pub.rgpv_tbl_type;
4816 --l_rgpv_tbl_out okc_rule_pub.rgpv_tbl_type;
4817 --l_rulv_tbl_in okc_rule_pub.rulv_tbl_type;
4818 --l_rulv_tbl_out okc_rule_pub.rulv_tbl_type;
4819 --Return IDs
4820 l_line_id NUMBER;
4821 l_rule_group_id NUMBER;
4822 l_rule_id NUMBER;
4823 l_line_item_id NUMBER;
4824 l_lsl_id NUMBER;
4825 l_hdrsdt DATE;
4826 l_hdredt DATE;
4827 l_line_sdt DATE;
4828 l_line_edt DATE;
4829 l_hdrstatus VARCHAR2 (3);
4830 l_line_status VARCHAR2 (3);
4831 l_priceattrib_id NUMBER;
4832 l_invoice_text VARCHAR2 (2000);
4833 --Obj Rel
4834 l_crjv_tbl_out okc_k_rel_objs_pub.crjv_tbl_type;
4835 l_msg_data VARCHAR2 (2000);
4836 l_ind NUMBER;
4837 l_ste_code VARCHAR2 (240);
4838 l_sts_code VARCHAR2 (240);
4839 g_rail_rec oks_tax_util_pvt.ra_rec_type;
4840
4841 CURSOR l_line_csr (p_line_id NUMBER)
4842 IS
4843 SELECT kl.start_date, kl.end_date, kl.inv_rule_id
4844 FROM okc_k_lines_b kl
4845 WHERE kl.ID = p_line_id;
4846
4847 l_duration NUMBER;
4848 l_timeunits VARCHAR2 (25);
4849 l_sll_tbl oks_bill_sch.streamlvl_tbl;
4850 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
4851 l_strmlvl_id NUMBER := NULL;
4852 l_update_top_line VARCHAR2 (1);
4853 l_start_date DATE;
4854 l_end_date DATE;
4855 l_invoice_rule_id VARCHAR2 (10);
4856 l_sts_flag VARCHAR2 (1);
4857 BEGIN
4858 x_return_status := okc_api.g_ret_sts_success;
4859 x_update_line := 'N';
4860 check_line_effectivity (p_cle_id => p_k_covd_rec.attach_2_line_id,
4861 p_srv_sdt => p_k_covd_rec.product_start_date,
4862 p_srv_edt => p_k_covd_rec.product_end_date,
4863 x_line_sdt => l_line_sdt,
4864 x_line_edt => l_line_edt,
4865 x_status => l_line_status
4866 );
4867
4868 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4869 THEN
4870 fnd_log.STRING (fnd_log.level_statement,
4871 g_module_current || '.Create_K_Covered_Levels',
4872 'Check line effectivity status = ' || l_line_status
4873 );
4874 END IF;
4875
4876 IF l_line_status = 'E'
4877 THEN
4878 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4879 THEN
4880 fnd_log.STRING
4881 (fnd_log.level_error,
4882 g_module_current || '.Create_K_Covered_Levels.ERROR',
4883 'Covered level Dates are not within Line effectivity'
4884 );
4885 END IF;
4886
4887 okc_api.set_message (g_app_name,
4888 g_unexpected_error,
4889 g_sqlcode_token,
4890 SQLCODE,
4891 g_sqlerrm_token,
4892 'Covlvl Dates not within Line effectivity'
4893 );
4894 l_return_status := okc_api.g_ret_sts_error;
4895 RAISE g_exception_halt_validation;
4896 ELSIF l_line_status = 'Y'
4897 THEN
4898 check_hdr_effectivity (p_chr_id => p_k_covd_rec.k_id,
4899 p_srv_sdt => l_line_sdt,
4900 p_srv_edt => l_line_edt,
4901 x_hdr_sdt => l_hdrsdt,
4902 x_hdr_edt => l_hdredt,
4903 x_status => l_hdrstatus
4904 );
4905
4906 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4907 THEN
4908 fnd_log.STRING (fnd_log.level_statement,
4909 g_module_current || '.Create_K_Covered_Levels',
4910 'Check Header effectivity status = '
4911 || l_hdrstatus
4912 );
4913 END IF;
4914
4915 IF l_hdrstatus = 'E'
4916 THEN
4917 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4918 THEN
4919 fnd_log.STRING (fnd_log.level_error,
4920 g_module_current || '.Create_K_Covered_Levels',
4921 'Line Dates are not within Header effectivity'
4922 );
4923 END IF;
4924
4925 okc_api.set_message (g_app_name,
4926 g_unexpected_error,
4927 g_sqlcode_token,
4928 SQLCODE,
4929 g_sqlerrm_token,
4930 'line Dates not within Hdr effectivity'
4931 );
4932 l_return_status := okc_api.g_ret_sts_error;
4933 RAISE g_exception_halt_validation;
4934 ELSIF l_hdrstatus = 'Y'
4935 THEN
4936 get_sts_code (NULL,
4937 p_k_covd_rec.product_sts_code,
4938 l_ste_code,
4939 l_sts_code
4940 );
4941
4942 IF l_ste_code = 'ENTERED'
4943 THEN
4944 l_sts_flag := 'N';
4945 ELSE
4946 l_sts_flag := 'Y';
4947 END IF;
4948
4949 update_hdr_dates (p_chr_id => p_k_covd_rec.k_id,
4950 p_new_sdt => l_hdrsdt,
4951 p_new_edt => l_hdredt,
4952 p_sts_flag => l_sts_flag,
4953 x_status => l_return_status,
4954 x_msg_count => x_msg_count,
4955 x_msg_data => x_msg_data
4956 );
4957
4958 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4959 THEN
4960 fnd_log.STRING
4961 (fnd_log.level_event,
4962 g_module_current
4963 || '.Create_K_Covered_Levels.afterupdatehdrdtaes',
4964 'update_hdr_dates(Return status = '
4965 || l_return_status
4966 || ')'
4967 );
4968 END IF;
4969
4970 IF NOT l_return_status = 'S'
4971 THEN
4972 l_return_status := okc_api.g_ret_sts_error;
4973 okc_api.set_message (g_app_name,
4974 g_required_value,
4975 g_col_name_token,
4976 'Header Effectivity Update (SUB LINE)'
4977 );
4978 RAISE g_exception_halt_validation;
4979 END IF;
4980 END IF;
4981
4982 IF p_k_covd_rec.product_sts_code = 'ENTERED'
4983 THEN
4984 l_sts_flag := 'N';
4985 ELSE
4986 l_sts_flag := 'Y';
4987 END IF;
4988
4989 update_line_dates (p_cle_id => p_k_covd_rec.attach_2_line_id,
4990 p_chr_id => p_k_covd_rec.k_id,
4991 p_new_sdt => l_line_sdt,
4992 p_new_edt => l_line_edt,
4993 p_sts_flag => l_sts_flag,
4994 p_warranty_flag => p_k_covd_rec.warranty_flag,
4995 x_status => l_return_status,
4996 x_msg_count => x_msg_count,
4997 x_msg_data => x_msg_data
4998 );
4999
5000 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5001 THEN
5002 fnd_log.STRING
5003 (fnd_log.level_event,
5004 g_module_current
5005 || '.Create_K_Covered_Levels.after_update.line_dtaes',
5006 'update_hdr_dates(Return status = '
5007 || l_return_status
5008 || ')'
5009 );
5010 END IF;
5011
5012 IF NOT l_return_status = 'S'
5013 THEN
5014 l_return_status := okc_api.g_ret_sts_error;
5015 okc_api.set_message (g_app_name,
5016 g_required_value,
5017 g_col_name_token,
5018 'LINE Effectivity Update (SUB LINE)'
5019 );
5020 RAISE g_exception_halt_validation;
5021 ELSE
5022 x_update_line := 'Y';
5023 END IF;
5024
5025 oks_pm_programs_pvt.adjust_pm_program_schedule
5026 (p_api_version => 1.0,
5027 p_init_msg_list => 'F',
5028 p_contract_line_id => p_k_covd_rec.attach_2_line_id,
5029 p_new_start_date => l_line_sdt,
5030 p_new_end_date => l_line_edt,
5031 x_return_status => l_return_status,
5032 x_msg_count => x_msg_count,
5033 x_msg_data => x_msg_data
5034 );
5035
5036 IF NOT l_return_status = 'S'
5037 THEN
5038 l_return_status := okc_api.g_ret_sts_error;
5039 okc_api.set_message (g_app_name,
5040 g_required_value,
5041 g_col_name_token,
5042 'Adjust PM Program Schedule(SUB LINE)'
5043 );
5044 RAISE g_exception_halt_validation;
5045 END IF;
5046
5047 IF p_k_covd_rec.standard_coverage = 'N'
5048 THEN
5049 oks_coverages_pub.update_cov_eff
5050 (p_api_version => 1.0,
5051 p_init_msg_list => 'F',
5052 x_return_status => l_return_status,
5053 x_msg_count => x_msg_count,
5054 x_msg_data => x_msg_data,
5055 p_service_line_id => p_k_covd_rec.attach_2_line_id,
5056 p_new_start_date => l_line_sdt,
5057 p_new_end_date => l_line_edt
5058 );
5059
5060 IF NOT l_return_status = 'S'
5061 THEN
5062 l_return_status := okc_api.g_ret_sts_error;
5063 okc_api.set_message (g_app_name,
5064 g_required_value,
5065 g_col_name_token,
5066 'Coverage Effectivity Update (SUB LINE)'
5067 );
5068 RAISE g_exception_halt_validation;
5069 END IF;
5070 END IF;
5071 END IF;
5072
5073 IF p_k_covd_rec.warranty_flag = 'W'
5074 THEN
5075 l_lsl_id := 18;
5076 ELSIF p_k_covd_rec.warranty_flag = 'E'
5077 THEN
5078 l_lsl_id := 25;
5079 ELSIF p_k_covd_rec.warranty_flag IN ('S', 'SU')
5080 THEN
5081 l_lsl_id := 9;
5082 END IF;
5083
5084 l_clev_tbl_in (1).chr_id := NULL;
5085 l_clev_tbl_in (1).sfwt_flag := 'N';
5086 l_clev_tbl_in (1).lse_id := l_lsl_id;
5087 --l_clev_tbl_in(1).line_number := p_k_covd_rec.line_number;
5088 l_clev_tbl_in (1).line_number :=
5089 get_sub_line_number (p_k_covd_rec.k_id,
5090 p_k_covd_rec.attach_2_line_id);
5091 l_clev_tbl_in (1).sts_code := p_k_covd_rec.product_sts_code;
5092 l_clev_tbl_in (1).display_sequence := 2;
5093 l_clev_tbl_in (1).dnz_chr_id := p_k_covd_rec.k_id;
5094 --l_clev_tbl_in(1).name := Substr(p_k_covd_rec.Product_segment1,1,50);
5095 l_clev_tbl_in (1).NAME := NULL;
5096 l_clev_tbl_in (1).item_description := p_k_covd_rec.product_desc;
5097 l_clev_tbl_in (1).start_date := p_k_covd_rec.product_start_date;
5098 l_clev_tbl_in (1).end_date := p_k_covd_rec.product_end_date;
5099 l_clev_tbl_in (1).exception_yn := 'N';
5100 l_clev_tbl_in (1).price_negotiated := Nvl(p_k_covd_rec.negotiated_amount,0);
5101 l_clev_tbl_in (1).currency_code := p_k_covd_rec.currency_code;
5102 l_clev_tbl_in (1).price_unit := Nvl(p_k_covd_rec.list_price,0);
5103 l_clev_tbl_in (1).cle_id := p_k_covd_rec.attach_2_line_id;
5104 l_clev_tbl_in (1).price_level_ind := priced_yn (l_lsl_id);
5105 l_clev_tbl_in (1).trn_code := p_k_covd_rec.reason_code;
5106 l_clev_tbl_in (1).comments := p_k_covd_rec.reason_comments;
5107 --l_clev_tbl_in(1).translated_text := p_k_covd_rec.translated_text;
5108 l_clev_tbl_in (1).upg_orig_system_ref :=
5109 p_k_covd_rec.upg_orig_system_ref;
5110 -- 04-jun-2002 Vigandhi
5111 l_clev_tbl_in (1).upg_orig_system_ref_id :=
5112 p_k_covd_rec.upg_orig_system_ref_id;
5113 -- 04-jun-2002 Vigandhi
5114 l_clev_tbl_in (1).attribute1 := p_k_covd_rec.attribute1;
5115 l_clev_tbl_in (1).attribute2 := p_k_covd_rec.attribute2;
5116 l_clev_tbl_in (1).attribute3 := p_k_covd_rec.attribute3;
5117 l_clev_tbl_in (1).attribute4 := p_k_covd_rec.attribute4;
5118 l_clev_tbl_in (1).attribute5 := p_k_covd_rec.attribute5;
5119 l_clev_tbl_in (1).attribute6 := p_k_covd_rec.attribute6;
5120 l_clev_tbl_in (1).attribute7 := p_k_covd_rec.attribute7;
5121 l_clev_tbl_in (1).attribute8 := p_k_covd_rec.attribute8;
5122 l_clev_tbl_in (1).attribute9 := p_k_covd_rec.attribute9;
5123 l_clev_tbl_in (1).attribute10 := p_k_covd_rec.attribute10;
5124 l_clev_tbl_in (1).attribute11 := p_k_covd_rec.attribute11;
5125 l_clev_tbl_in (1).attribute12 := p_k_covd_rec.attribute12;
5126 l_clev_tbl_in (1).attribute13 := p_k_covd_rec.attribute13;
5127 l_clev_tbl_in (1).attribute14 := p_k_covd_rec.attribute14;
5128 l_clev_tbl_in (1).attribute15 := p_k_covd_rec.attribute15;
5129 -- rules inserted by okc
5130 l_clev_tbl_in (1).line_renewal_type_code :=
5131 NVL (p_k_covd_rec.line_renewal_type, 'FUL');
5132 --LRT
5133 okc_contract_pub.create_contract_line
5134 (p_api_version => l_api_version,
5135 p_init_msg_list => l_init_msg_list,
5136 p_restricted_update => okc_api.g_true,
5137 x_return_status => l_return_status,
5138 x_msg_count => x_msg_count,
5139 x_msg_data => x_msg_data,
5140 p_clev_tbl => l_clev_tbl_in,
5141 x_clev_tbl => l_clev_tbl_out
5142 );
5143
5144 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5145 THEN
5146 fnd_log.STRING
5147 (fnd_log.level_event,
5148 g_module_current
5149 || '.Create_K_Covered_Levels.after_create.top_line',
5150 'okc_contract_pub.create_contract_line(Return status = '
5151 || l_return_status
5152 || ')'
5153 );
5154 END IF;
5155
5156 IF l_return_status = 'S'
5157 THEN
5158 l_line_id := l_clev_tbl_out (1).ID;
5159 ELSE
5160 --mmadhavi
5161 IF (p_caller = 'OC')
5162 THEN
5163 x_order_error := '#';
5164
5165 FOR i IN 1 .. fnd_msg_pub.count_msg
5166 LOOP
5167 fnd_msg_pub.get (p_msg_index => i,
5168 p_encoded => 'T',
5169 p_data => l_msg_data,
5170 p_msg_index_out => l_ind
5171 );
5172 x_order_error := x_order_error || l_msg_data || '#';
5173
5174 IF (g_fnd_log_option = 'Y')
5175 THEN
5176 fnd_message.set_encoded (l_msg_data);
5177 l_msg_data := fnd_message.get;
5178 fnd_file.put_line
5179 (fnd_file.LOG,
5180 '(OKC_CONTRACT_PUB).CREATE_CONTRACT_LINE '
5181 || l_msg_data
5182 );
5183 END IF;
5184 END LOOP;
5185
5186 RAISE g_exception_halt_validation;
5187 ELSE
5188 --mmadhavi
5189 okc_api.set_message (g_app_name,
5190 g_required_value,
5191 g_col_name_token,
5192 'K LINE (SUB LINE)'
5193 );
5194 RAISE g_exception_halt_validation;
5195 END IF;
5196 END IF;
5197
5198 x_covlvl_id := l_line_id;
5199 -- cov rules inserted by oks
5200 l_klnv_tbl_in (1).tax_amount := nvl(p_k_covd_rec.tax_amount,0);
5201
5202 -- Added tax calculation for the new contract created after transfer
5203 -- 30-jan-2004 Vigandhi
5204 IF p_caller = 'ST' AND p_k_covd_rec.warranty_flag <> 'W'
5205 THEN
5206 oks_tax_util_pvt.get_tax (p_api_version => 1.0,
5207 p_init_msg_list => okc_api.g_true,
5208 p_chr_id => p_k_covd_rec.k_id,
5209 p_cle_id => l_line_id,
5210 px_rail_rec => g_rail_rec,
5211 x_msg_count => x_msg_count,
5212 x_msg_data => x_msg_data,
5213 x_return_status => l_return_status
5214 );
5215
5216 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5217 THEN
5218 fnd_log.STRING (fnd_log.level_event,
5219 g_module_current
5220 || '.Create_K_Covered_Levels.after_tax',
5221 'oks_tax_util_pvt.get_tax(Return status = '
5222 || l_return_status
5223 || ')'
5224 );
5225 END IF;
5226
5227 -- Fixed Bug 5035571
5228 /*
5229 IF (l_return_status <> okc_api.g_ret_sts_success)
5230 THEN
5231 RAISE g_exception_halt_validation;
5232 END IF;
5233 */
5234
5235 l_klnv_tbl_in (1).tax_inclusive_yn := g_rail_rec.amount_includes_tax_flag;
5236
5237 IF g_rail_rec.amount_includes_tax_flag = 'Y'
5238 THEN
5239 l_klnv_tbl_in (1).tax_amount := 0;
5240 ELSE
5241 l_klnv_tbl_in (1).tax_amount := g_rail_rec.tax_value;
5242 END IF;
5243 END IF;
5244
5245 l_invoice_text :=
5246 getformattedinvoicetext (p_k_covd_rec.prod_item_id,
5247 p_k_covd_rec.product_start_date,
5248 p_k_covd_rec.product_end_date,
5249 p_k_covd_rec.attach_2_line_desc,
5250 p_k_covd_rec.quantity
5251 );
5252 l_klnv_tbl_in (1).cle_id := l_line_id; --p_k_covd_rec.attach_2_line_id;
5253 l_klnv_tbl_in (1).dnz_chr_id := p_k_covd_rec.k_id;
5254 l_klnv_tbl_in (1).invoice_text := l_invoice_text; --IRT
5255 l_klnv_tbl_in (1).created_by := okc_api.g_miss_num;
5256 l_klnv_tbl_in (1).creation_date := okc_api.g_miss_date;
5257 l_klnv_tbl_in (1).status_text := 'Subline created from OM/IB';
5258 l_klnv_tbl_in (1).price_uom := p_k_covd_rec.price_uom;
5259 l_klnv_tbl_in (1).toplvl_uom_code := p_k_covd_rec.toplvl_uom_code;
5260 l_klnv_tbl_in (1).inv_print_flag := 'Y'; --Bug# 5655521
5261
5262 --mchoudha added for bug#5233956
5263 l_klnv_tbl_in (1).toplvl_price_qty := p_k_covd_rec.toplvl_price_qty;
5264 oks_contract_line_pub.create_line (p_api_version => l_api_version,
5265 p_init_msg_list => l_init_msg_list,
5266 x_return_status => l_return_status,
5267 x_msg_count => x_msg_count,
5268 x_msg_data => x_msg_data,
5269 p_klnv_tbl => l_klnv_tbl_in,
5270 x_klnv_tbl => l_klnv_tbl_out,
5271 p_validate_yn => 'N'
5272 );
5273
5274 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5275 THEN
5276 fnd_log.STRING
5277 (fnd_log.level_event,
5278 g_module_current
5279 || '.Create_K_Covered_Levels.after_create.covered_line',
5280 'oks_contract_line_pub.create_line(Return status = '
5281 || l_return_status
5282 || ')'
5283 );
5284 END IF;
5285
5286 IF NOT l_return_status = 'S'
5287 THEN
5288 --mmadhavi
5289 IF (p_caller = 'OC')
5290 THEN
5291 x_order_error := '#';
5292
5293 FOR i IN 1 .. fnd_msg_pub.count_msg
5294 LOOP
5295 fnd_msg_pub.get (p_msg_index => i,
5296 p_encoded => 'T',
5297 p_data => l_msg_data,
5298 p_msg_index_out => l_ind
5299 );
5300 x_order_error := x_order_error || l_msg_data || '#';
5301
5302 IF (g_fnd_log_option = 'Y')
5303 THEN
5304 fnd_message.set_encoded (l_msg_data);
5305 l_msg_data := fnd_message.get;
5306 fnd_file.put_line
5307 (fnd_file.LOG,
5308 '(OKS_CONTRACT_LINE_PUB).CREATE_LINE '
5309 || l_msg_data
5310 );
5311 END IF;
5312 END LOOP;
5313
5314 RAISE g_exception_halt_validation;
5315 ELSE
5316 --mmadhavi
5317 okc_api.set_message (g_app_name,
5318 g_required_value,
5319 g_col_name_token,
5320 'OKS Contract COV LINE'
5321 );
5322 RAISE g_exception_halt_validation;
5323 END IF;
5324 END IF;
5325
5326 --Create Contract Item
5327 l_cimv_tbl (1).ID := okc_p_util.raw_to_number (SYS_GUID ());
5328 l_cimv_tbl (1).cle_id := l_line_id;
5329 l_cimv_tbl (1).chr_id := NULL;
5330 l_cimv_tbl (1).cle_id_for := NULL;
5331 l_cimv_tbl (1).dnz_chr_id := p_k_covd_rec.k_id;
5332 l_cimv_tbl (1).object1_id1 := p_k_covd_rec.customer_product_id;
5333 l_cimv_tbl (1).object1_id2 := '#';
5334 l_cimv_tbl (1).jtot_object1_code := 'OKX_CUSTPROD';
5335 l_cimv_tbl (1).uom_code := p_k_covd_rec.uom_code;
5336 l_cimv_tbl (1).exception_yn := 'N';
5337 l_cimv_tbl (1).number_of_items := p_k_covd_rec.quantity;
5338 l_cimv_tbl (1).priced_item_yn := '';
5339 l_cimv_tbl (1).upg_orig_system_ref := '';
5340 l_cimv_tbl (1).upg_orig_system_ref_id := NULL;
5341 l_cimv_tbl (1).object_version_number := 1;
5342 l_cimv_tbl (1).created_by := fnd_global.user_id;
5343 l_cimv_tbl (1).creation_date := SYSDATE;
5344 l_cimv_tbl (1).last_updated_by := fnd_global.user_id;
5345 l_cimv_tbl (1).last_update_date := SYSDATE;
5346 l_cimv_tbl (1).last_update_login := NULL;
5347 l_cimv_tbl (1).request_id := NULL;
5348 l_cimv_tbl (1).program_id := NULL;
5349 l_cimv_tbl (1).program_application_id := NULL;
5350 l_cimv_tbl (1).program_update_date := NULL;
5351 okc_cim_pvt.insert_row_upg (x_return_status => l_return_status,
5352 p_cimv_tbl => l_cimv_tbl
5353 );
5354
5355 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5356 THEN
5357 fnd_log.STRING
5358 (fnd_log.level_event,
5359 g_module_current
5360 || '.Create_K_Covered_Levels.after_create.contract_item',
5361 'okc_cim_pvt.insert_row_upg(Return status = '
5362 || l_return_status
5363 || ')'
5364 );
5365 END IF;
5366
5367 IF l_return_status = 'S'
5368 THEN
5369 l_line_item_id := l_cimv_tbl (1).ID;
5370 ELSE
5371 okc_api.set_message (g_app_name,
5372 g_required_value,
5373 g_col_name_token,
5374 'KItem (SUB LINE)'
5375 );
5376 RAISE g_exception_halt_validation;
5377 END IF;
5378
5379 --Create Obj Rel
5380 IF p_k_covd_rec.warranty_flag IN ('E', 'S', 'SU')
5381 THEN
5382 create_obj_rel (p_k_id => p_k_covd_rec.k_id,
5383 p_line_id => l_line_id,
5384 p_orderhdrid => NULL,
5385 p_rty_code => p_k_covd_rec.rty_code,
5386 p_orderlineid => p_k_covd_rec.order_line_id,
5387 x_return_status => l_return_status,
5388 x_msg_count => x_msg_count,
5389 x_msg_data => x_msg_data,
5390 x_crjv_tbl_out => l_crjv_tbl_out
5391 );
5392
5393 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5394 THEN
5395 fnd_log.STRING
5396 (fnd_log.level_event,
5397 g_module_current
5398 || '.Create_K_Covered_Levels.create.object_relation',
5399 'create_obj_rel(Return status = '
5400 || l_return_status
5401 || ')'
5402 );
5403 END IF;
5404
5405 IF NOT l_return_status = okc_api.g_ret_sts_success
5406 THEN
5407 okc_api.set_message (g_app_name,
5408 g_required_value,
5409 g_col_name_token,
5410 'Order Line Id (SUB LINE)'
5411 );
5412 RAISE g_exception_halt_validation;
5413 END IF;
5414 END IF;
5415
5416 --Create Pricing Attributes
5417 IF p_price_attribs.pricing_context IS NOT NULL
5418 THEN
5419 l_pavv_tbl_in (1).cle_id := l_line_id;
5420 l_pavv_tbl_in (1).flex_title := 'QP_ATTR_DEFNS_PRICING';
5421 l_pavv_tbl_in (1).pricing_context := p_price_attribs.pricing_context;
5422 l_pavv_tbl_in (1).pricing_attribute1 :=
5423 p_price_attribs.pricing_attribute1;
5424 l_pavv_tbl_in (1).pricing_attribute2 :=
5425 p_price_attribs.pricing_attribute2;
5426 l_pavv_tbl_in (1).pricing_attribute3 :=
5427 p_price_attribs.pricing_attribute3;
5428 l_pavv_tbl_in (1).pricing_attribute4 :=
5429 p_price_attribs.pricing_attribute4;
5430 l_pavv_tbl_in (1).pricing_attribute5 :=
5431 p_price_attribs.pricing_attribute5;
5432 l_pavv_tbl_in (1).pricing_attribute6 :=
5433 p_price_attribs.pricing_attribute6;
5434 l_pavv_tbl_in (1).pricing_attribute7 :=
5435 p_price_attribs.pricing_attribute7;
5436 l_pavv_tbl_in (1).pricing_attribute8 :=
5437 p_price_attribs.pricing_attribute8;
5438 l_pavv_tbl_in (1).pricing_attribute9 :=
5439 p_price_attribs.pricing_attribute9;
5440 l_pavv_tbl_in (1).pricing_attribute10 :=
5441 p_price_attribs.pricing_attribute10;
5442 l_pavv_tbl_in (1).pricing_attribute11 :=
5443 p_price_attribs.pricing_attribute11;
5444 l_pavv_tbl_in (1).pricing_attribute12 :=
5445 p_price_attribs.pricing_attribute12;
5446 l_pavv_tbl_in (1).pricing_attribute13 :=
5447 p_price_attribs.pricing_attribute13;
5448 l_pavv_tbl_in (1).pricing_attribute14 :=
5449 p_price_attribs.pricing_attribute14;
5450 l_pavv_tbl_in (1).pricing_attribute15 :=
5451 p_price_attribs.pricing_attribute15;
5452 l_pavv_tbl_in (1).pricing_attribute16 :=
5453 p_price_attribs.pricing_attribute16;
5454 l_pavv_tbl_in (1).pricing_attribute17 :=
5455 p_price_attribs.pricing_attribute17;
5456 l_pavv_tbl_in (1).pricing_attribute18 :=
5457 p_price_attribs.pricing_attribute18;
5458 l_pavv_tbl_in (1).pricing_attribute19 :=
5459 p_price_attribs.pricing_attribute19;
5460 l_pavv_tbl_in (1).pricing_attribute20 :=
5461 p_price_attribs.pricing_attribute20;
5462 l_pavv_tbl_in (1).pricing_attribute21 :=
5463 p_price_attribs.pricing_attribute21;
5464 l_pavv_tbl_in (1).pricing_attribute22 :=
5465 p_price_attribs.pricing_attribute22;
5466 l_pavv_tbl_in (1).pricing_attribute23 :=
5467 p_price_attribs.pricing_attribute23;
5468 l_pavv_tbl_in (1).pricing_attribute24 :=
5469 p_price_attribs.pricing_attribute24;
5470 l_pavv_tbl_in (1).pricing_attribute25 :=
5471 p_price_attribs.pricing_attribute25;
5472 l_pavv_tbl_in (1).pricing_attribute26 :=
5473 p_price_attribs.pricing_attribute26;
5474 l_pavv_tbl_in (1).pricing_attribute27 :=
5475 p_price_attribs.pricing_attribute27;
5476 l_pavv_tbl_in (1).pricing_attribute28 :=
5477 p_price_attribs.pricing_attribute28;
5478 l_pavv_tbl_in (1).pricing_attribute29 :=
5479 p_price_attribs.pricing_attribute29;
5480 l_pavv_tbl_in (1).pricing_attribute30 :=
5481 p_price_attribs.pricing_attribute30;
5482 l_pavv_tbl_in (1).pricing_attribute31 :=
5483 p_price_attribs.pricing_attribute31;
5484 l_pavv_tbl_in (1).pricing_attribute32 :=
5485 p_price_attribs.pricing_attribute32;
5486 l_pavv_tbl_in (1).pricing_attribute33 :=
5487 p_price_attribs.pricing_attribute33;
5488 l_pavv_tbl_in (1).pricing_attribute34 :=
5489 p_price_attribs.pricing_attribute34;
5490 l_pavv_tbl_in (1).pricing_attribute35 :=
5491 p_price_attribs.pricing_attribute35;
5492 l_pavv_tbl_in (1).pricing_attribute36 :=
5493 p_price_attribs.pricing_attribute36;
5494 l_pavv_tbl_in (1).pricing_attribute37 :=
5495 p_price_attribs.pricing_attribute37;
5496 l_pavv_tbl_in (1).pricing_attribute38 :=
5497 p_price_attribs.pricing_attribute38;
5498 l_pavv_tbl_in (1).pricing_attribute39 :=
5499 p_price_attribs.pricing_attribute39;
5500 l_pavv_tbl_in (1).pricing_attribute40 :=
5501 p_price_attribs.pricing_attribute40;
5502 l_pavv_tbl_in (1).pricing_attribute41 :=
5503 p_price_attribs.pricing_attribute41;
5504 l_pavv_tbl_in (1).pricing_attribute42 :=
5505 p_price_attribs.pricing_attribute42;
5506 l_pavv_tbl_in (1).pricing_attribute43 :=
5507 p_price_attribs.pricing_attribute43;
5508 l_pavv_tbl_in (1).pricing_attribute44 :=
5509 p_price_attribs.pricing_attribute44;
5510 l_pavv_tbl_in (1).pricing_attribute45 :=
5511 p_price_attribs.pricing_attribute45;
5512 l_pavv_tbl_in (1).pricing_attribute46 :=
5513 p_price_attribs.pricing_attribute46;
5514 l_pavv_tbl_in (1).pricing_attribute47 :=
5515 p_price_attribs.pricing_attribute47;
5516 l_pavv_tbl_in (1).pricing_attribute48 :=
5517 p_price_attribs.pricing_attribute48;
5518 l_pavv_tbl_in (1).pricing_attribute49 :=
5519 p_price_attribs.pricing_attribute49;
5520 l_pavv_tbl_in (1).pricing_attribute50 :=
5521 p_price_attribs.pricing_attribute50;
5522 l_pavv_tbl_in (1).pricing_attribute51 :=
5523 p_price_attribs.pricing_attribute51;
5524 l_pavv_tbl_in (1).pricing_attribute52 :=
5525 p_price_attribs.pricing_attribute52;
5526 l_pavv_tbl_in (1).pricing_attribute53 :=
5527 p_price_attribs.pricing_attribute53;
5528 l_pavv_tbl_in (1).pricing_attribute54 :=
5529 p_price_attribs.pricing_attribute54;
5530 l_pavv_tbl_in (1).pricing_attribute55 :=
5531 p_price_attribs.pricing_attribute55;
5532 l_pavv_tbl_in (1).pricing_attribute56 :=
5533 p_price_attribs.pricing_attribute56;
5534 l_pavv_tbl_in (1).pricing_attribute57 :=
5535 p_price_attribs.pricing_attribute57;
5536 l_pavv_tbl_in (1).pricing_attribute58 :=
5537 p_price_attribs.pricing_attribute58;
5538 l_pavv_tbl_in (1).pricing_attribute59 :=
5539 p_price_attribs.pricing_attribute59;
5540 l_pavv_tbl_in (1).pricing_attribute60 :=
5541 p_price_attribs.pricing_attribute60;
5542 l_pavv_tbl_in (1).pricing_attribute61 :=
5543 p_price_attribs.pricing_attribute61;
5544 l_pavv_tbl_in (1).pricing_attribute62 :=
5545 p_price_attribs.pricing_attribute62;
5546 l_pavv_tbl_in (1).pricing_attribute63 :=
5547 p_price_attribs.pricing_attribute63;
5548 l_pavv_tbl_in (1).pricing_attribute64 :=
5549 p_price_attribs.pricing_attribute64;
5550 l_pavv_tbl_in (1).pricing_attribute65 :=
5551 p_price_attribs.pricing_attribute65;
5552 l_pavv_tbl_in (1).pricing_attribute66 :=
5553 p_price_attribs.pricing_attribute66;
5554 l_pavv_tbl_in (1).pricing_attribute67 :=
5555 p_price_attribs.pricing_attribute67;
5556 l_pavv_tbl_in (1).pricing_attribute68 :=
5557 p_price_attribs.pricing_attribute68;
5558 l_pavv_tbl_in (1).pricing_attribute69 :=
5559 p_price_attribs.pricing_attribute69;
5560 l_pavv_tbl_in (1).pricing_attribute70 :=
5561 p_price_attribs.pricing_attribute70;
5562 l_pavv_tbl_in (1).pricing_attribute71 :=
5563 p_price_attribs.pricing_attribute71;
5564 l_pavv_tbl_in (1).pricing_attribute72 :=
5565 p_price_attribs.pricing_attribute72;
5566 l_pavv_tbl_in (1).pricing_attribute73 :=
5567 p_price_attribs.pricing_attribute73;
5568 l_pavv_tbl_in (1).pricing_attribute74 :=
5569 p_price_attribs.pricing_attribute74;
5570 l_pavv_tbl_in (1).pricing_attribute75 :=
5571 p_price_attribs.pricing_attribute75;
5572 l_pavv_tbl_in (1).pricing_attribute76 :=
5573 p_price_attribs.pricing_attribute76;
5574 l_pavv_tbl_in (1).pricing_attribute77 :=
5575 p_price_attribs.pricing_attribute77;
5576 l_pavv_tbl_in (1).pricing_attribute78 :=
5577 p_price_attribs.pricing_attribute78;
5578 l_pavv_tbl_in (1).pricing_attribute79 :=
5579 p_price_attribs.pricing_attribute79;
5580 l_pavv_tbl_in (1).pricing_attribute80 :=
5581 p_price_attribs.pricing_attribute80;
5582 l_pavv_tbl_in (1).pricing_attribute81 :=
5583 p_price_attribs.pricing_attribute81;
5584 l_pavv_tbl_in (1).pricing_attribute82 :=
5585 p_price_attribs.pricing_attribute82;
5586 l_pavv_tbl_in (1).pricing_attribute83 :=
5587 p_price_attribs.pricing_attribute83;
5588 l_pavv_tbl_in (1).pricing_attribute84 :=
5589 p_price_attribs.pricing_attribute84;
5590 l_pavv_tbl_in (1).pricing_attribute85 :=
5591 p_price_attribs.pricing_attribute85;
5592 l_pavv_tbl_in (1).pricing_attribute86 :=
5593 p_price_attribs.pricing_attribute86;
5594 l_pavv_tbl_in (1).pricing_attribute87 :=
5595 p_price_attribs.pricing_attribute87;
5596 l_pavv_tbl_in (1).pricing_attribute88 :=
5597 p_price_attribs.pricing_attribute88;
5598 l_pavv_tbl_in (1).pricing_attribute89 :=
5599 p_price_attribs.pricing_attribute89;
5600 l_pavv_tbl_in (1).pricing_attribute90 :=
5601 p_price_attribs.pricing_attribute90;
5602 l_pavv_tbl_in (1).pricing_attribute91 :=
5603 p_price_attribs.pricing_attribute91;
5604 l_pavv_tbl_in (1).pricing_attribute92 :=
5605 p_price_attribs.pricing_attribute92;
5606 l_pavv_tbl_in (1).pricing_attribute93 :=
5607 p_price_attribs.pricing_attribute93;
5608 l_pavv_tbl_in (1).pricing_attribute94 :=
5609 p_price_attribs.pricing_attribute94;
5610 l_pavv_tbl_in (1).pricing_attribute95 :=
5611 p_price_attribs.pricing_attribute95;
5612 l_pavv_tbl_in (1).pricing_attribute96 :=
5613 p_price_attribs.pricing_attribute96;
5614 l_pavv_tbl_in (1).pricing_attribute97 :=
5615 p_price_attribs.pricing_attribute97;
5616 l_pavv_tbl_in (1).pricing_attribute98 :=
5617 p_price_attribs.pricing_attribute98;
5618 l_pavv_tbl_in (1).pricing_attribute99 :=
5619 p_price_attribs.pricing_attribute99;
5620 l_pavv_tbl_in (1).pricing_attribute100 :=
5621 p_price_attribs.pricing_attribute100;
5622 okc_price_adjustment_pvt.create_price_att_value
5623 (p_api_version => l_api_version,
5624 p_init_msg_list => l_init_msg_list,
5625 x_return_status => l_return_status,
5626 x_msg_count => x_msg_count,
5627 x_msg_data => x_msg_data,
5628 p_pavv_tbl => l_pavv_tbl_in,
5629 x_pavv_tbl => l_pavv_tbl_out
5630 );
5631
5632 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5633 THEN
5634 fnd_log.STRING
5635 (fnd_log.level_event,
5636 g_module_current
5637 || '.Create_K_Covered_Levels.after_create.price_att',
5638 'okc_price_adjustment_pvt.create_price_att_value(Return status = '
5639 || l_return_status
5640 || ')'
5641 );
5642 END IF;
5643
5644 IF l_return_status = 'S'
5645 THEN
5646 l_priceattrib_id := l_pavv_tbl_out (1).ID;
5647 ELSE
5648 okc_api.set_message (g_app_name,
5649 g_required_value,
5650 g_col_name_token,
5651 'PRICE ATTRIBUTES (SUB LINE)'
5652 );
5653 RAISE g_exception_halt_validation;
5654 END IF;
5655 END IF;
5656 EXCEPTION
5657 WHEN g_exception_halt_validation
5658 THEN
5659 x_return_status := l_return_status;
5660 NULL;
5661 WHEN OTHERS
5662 THEN
5663 x_return_status := okc_api.g_ret_sts_unexp_error;
5664 okc_api.set_message (g_app_name,
5665 g_unexpected_error,
5666 g_sqlcode_token,
5667 SQLCODE,
5668 g_sqlerrm_token,
5669 SQLERRM
5670 );
5671 END create_k_covered_levels;
5672
5673 PROCEDURE create_contract_ibnew (
5674 p_extwar_rec IN extwar_rec_type,
5675 p_contact_tbl_in IN oks_extwarprgm_pvt.contact_tbl,
5676 p_salescredit_tbl_hdr_in IN oks_extwarprgm_pvt.salescredit_tbl,
5677 --mmadhavi bug 4174921
5678 p_salescredit_tbl_line_in IN oks_extwarprgm_pvt.salescredit_tbl,
5679 p_price_attribs_in IN oks_extwarprgm_pvt.pricing_attributes_type,
5680 x_inst_dtls_tbl IN OUT NOCOPY oks_ihd_pvt.ihdv_tbl_type,
5681 x_chrid OUT NOCOPY NUMBER,
5682 x_return_status OUT NOCOPY VARCHAR2,
5683 x_msg_count OUT NOCOPY NUMBER,
5684 x_msg_data OUT NOCOPY VARCHAR2
5685 )
5686 IS
5687 CURSOR l_party_csr
5688 IS
5689 SELECT NAME
5690 FROM okx_parties_v
5691 WHERE id1 = p_extwar_rec.hdr_party_id;
5692
5693 CURSOR l_lndates_csr (p_id NUMBER)
5694 IS
5695 SELECT start_date, end_date
5696 FROM okc_k_lines_b
5697 WHERE ID = p_id;
5698
5699 CURSOR l_hdrdates_csr (p_id NUMBER)
5700 IS
5701 SELECT start_date, end_date, sts_code
5702 FROM okc_k_headers_b
5703 WHERE ID = p_id;
5704
5705 l_hdr_rec k_header_rec_type;
5706 l_line_rec k_line_service_rec_type;
5707 l_covd_rec k_line_covered_level_rec_type;
5708 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
5709 l_chrid NUMBER := NULL;
5710 l_lineid NUMBER := NULL;
5711 l_covlvl_id NUMBER := NULL;
5712 l_party_name okx_parties_v.NAME%TYPE;
5713 l_lndates_rec l_lndates_csr%ROWTYPE;
5714 l_hdrdates_rec l_hdrdates_csr%ROWTYPE;
5715 --l_ctr NUMBER := 0;
5716
5717 --Contact
5718 l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
5719 --SalesCredit
5720 l_salescredit_tbl oks_extwarprgm_pvt.salescredit_tbl;
5721 l_api_version CONSTANT NUMBER := 1.0;
5722 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
5723 l_index VARCHAR2 (2000);
5724 l_rule_group_id NUMBER;
5725 l_rule_id NUMBER;
5726 l_sts_code VARCHAR2 (30);
5727 l_ste_code VARCHAR2 (30);
5728 l_duration NUMBER;
5729 l_timeunits VARCHAR2 (25);
5730 l_sll_tbl oks_bill_sch.streamlvl_tbl;
5731 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
5732 l_strmlvl_id NUMBER := NULL;
5733 l_update_line VARCHAR2 (1);
5734 l_temp VARCHAR2 (2000);
5735 BEGIN
5736 x_return_status := okc_api.g_ret_sts_success;
5737
5738 OPEN l_party_csr;
5739
5740 FETCH l_party_csr
5741 INTO l_party_name;
5742
5743 CLOSE l_party_csr;
5744
5745 IF p_extwar_rec.hdr_scs_code IN ('SERVICE', 'SUBSCRIPTION')
5746 THEN
5747 l_hdr_rec.short_description :=
5748 'CUSTOMER : ' || l_party_name || ' Contract';
5749 ELSE
5750 l_hdr_rec.short_description :=
5751 'CUSTOMER : '
5752 || l_party_name
5753 || ' Warranty/Extended Warranty Contract';
5754 END IF;
5755
5756 l_hdr_rec.contract_number := okc_api.g_miss_char;
5757 l_hdr_rec.rty_code := p_extwar_rec.rty_code;
5758 l_hdr_rec.start_date := p_extwar_rec.hdr_sdt;
5759 l_hdr_rec.end_date := p_extwar_rec.hdr_edt;
5760 --l_hdr_rec.sts_code := 'ACTIVE';
5761 l_hdr_rec.class_code := 'SVC';
5762 l_hdr_rec.authoring_org_id := p_extwar_rec.hdr_org_id;
5763 l_hdr_rec.party_id := p_extwar_rec.hdr_party_id;
5764 l_hdr_rec.third_party_role := p_extwar_rec.hdr_third_party_role;
5765 l_hdr_rec.bill_to_id := p_extwar_rec.hdr_bill_2_id;
5766 l_hdr_rec.ship_to_id := p_extwar_rec.hdr_ship_2_id;
5767 l_hdr_rec.chr_group := p_extwar_rec.hdr_chr_group;
5768 --l_hdr_rec.short_description := 'CUSTOMER : ' || l_party_name || ' Warranty/Extended Warranty Contract';
5769 l_hdr_rec.price_list_id := p_extwar_rec.hdr_price_list_id;
5770 l_hdr_rec.cust_po_number := p_extwar_rec.hdr_cust_po_number;
5771 l_hdr_rec.agreement_id := p_extwar_rec.hdr_agreement_id;
5772 l_hdr_rec.currency := p_extwar_rec.hdr_currency;
5773 l_hdr_rec.accounting_rule_id := p_extwar_rec.hdr_acct_rule_id;
5774 l_hdr_rec.invoice_rule_id := p_extwar_rec.hdr_inv_rule_id;
5775 l_hdr_rec.order_hdr_id := p_extwar_rec.hdr_order_hdr_id;
5776 l_hdr_rec.payment_term_id := p_extwar_rec.hdr_payment_term_id;
5777 l_hdr_rec.renewal_type := p_extwar_rec.hdr_renewal_type;
5778 l_hdr_rec.renewal_markup := p_extwar_rec.hdr_renewal_markup;
5779 l_hdr_rec.renewal_pricing_type := p_extwar_rec.hdr_renewal_pricing_type;
5780 l_hdr_rec.renewal_price_list_id :=
5781 p_extwar_rec.hdr_renewal_price_list_id;
5782 l_hdr_rec.renewal_po := p_extwar_rec.hdr_renewal_po;
5783 l_hdr_rec.cvn_type := p_extwar_rec.hdr_cvn_type;
5784 l_hdr_rec.cvn_rate := p_extwar_rec.hdr_cvn_rate;
5785 l_hdr_rec.cvn_date := p_extwar_rec.hdr_cvn_date;
5786 l_hdr_rec.cvn_euro_rate := p_extwar_rec.hdr_cvn_euro_rate;
5787 l_hdr_rec.tax_status_flag := p_extwar_rec.hdr_tax_status_flag;
5788 l_hdr_rec.tax_exemption_id := p_extwar_rec.hdr_tax_exemption_id;
5789 l_hdr_rec.contact_id := p_extwar_rec.hdr_contact_id;
5790 l_hdr_rec.scs_code := p_extwar_rec.hdr_scs_code;
5791 l_hdr_rec.merge_type := p_extwar_rec.merge_type;
5792 l_hdr_rec.merge_object_id := p_extwar_rec.merge_object_id;
5793 l_hdr_rec.qto_contact_id := p_extwar_rec.qto_contact_id;
5794 l_hdr_rec.qto_email_id := p_extwar_rec.qto_email_id;
5795 l_hdr_rec.qto_phone_id := p_extwar_rec.qto_phone_id;
5796 l_hdr_rec.qto_fax_id := p_extwar_rec.qto_fax_id;
5797 l_hdr_rec.qto_site_id := p_extwar_rec.qto_site_id;
5798 l_hdr_rec.order_line_id := p_extwar_rec.srv_order_line_id;
5799 l_hdr_rec.billing_profile_id := p_extwar_rec.billing_profile_id;
5800 l_hdr_rec.qcl_id := p_extwar_rec.hdr_qcl_id;
5801 l_hdr_rec.grace_period := p_extwar_rec.grace_period;
5802 l_hdr_rec.grace_duration := p_extwar_rec.grace_duration;
5803 l_hdr_rec.salesrep_id := p_extwar_rec.salesrep_id;
5804 l_hdr_rec.pdf_id := p_extwar_rec.hdr_pdf_id;
5805 l_hdr_rec.ccr_number := p_extwar_rec.ccr_number;
5806 l_hdr_rec.ccr_exp_date := p_extwar_rec.ccr_exp_date;
5807 l_hdr_rec.renewal_status := p_extwar_rec.renewal_status;
5808
5809 IF p_extwar_rec.hdr_sdt > SYSDATE
5810 THEN
5811 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
5812 ELSE
5813 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
5814 END IF;
5815
5816 l_hdr_rec.sts_code := l_sts_code;
5817 oks_extwarprgm_pvt.create_k_hdr
5818 (p_k_header_rec => l_hdr_rec,
5819 p_contact_tbl => p_contact_tbl_in,
5820 p_salescredit_tbl_in => p_salescredit_tbl_hdr_in,
5821 --mmadhavi bug 4174921
5822 x_chr_id => l_chrid,
5823 p_caller => 'IB',
5824 x_order_error => l_temp,
5825 x_return_status => l_return_status,
5826 x_msg_count => x_msg_count,
5827 x_msg_data => x_msg_data
5828 );
5829
5830 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5831 THEN
5832 fnd_log.STRING
5833 (fnd_log.level_event,
5834 g_module_current
5835 || '.Create_contract_Ibnew.after_create.header',
5836 'oks_extwarprgm_pvt.create_k_hdr(Return status = '
5837 || l_return_status
5838 || ')'
5839 );
5840 END IF;
5841
5842 IF NOT l_return_status = 'S'
5843 THEN
5844 RAISE g_exception_halt_validation;
5845 END IF;
5846
5847 x_chrid := l_chrid;
5848
5849 IF p_extwar_rec.hdr_order_hdr_id IS NOT NULL
5850 AND p_extwar_rec.merge_type = 'NEW'
5851 THEN
5852 okc_oc_int_pub.create_k_relationships
5853 (p_api_version => l_api_version,
5854 p_init_msg_list => l_init_msg_list,
5855 p_commit => okc_api.g_false,
5856 p_sales_contract_id => okc_api.g_miss_num,
5857 p_service_contract_id => x_chrid,
5858 p_quote_id => okc_api.g_miss_num,
5859 p_quote_line_tab => okc_oc_int_pub.g_miss_ql_tab,
5860 p_order_id => p_extwar_rec.hdr_order_hdr_id,
5861 p_order_line_tab => okc_oc_int_pub.g_miss_ol_tab,
5862 p_trace_mode => NULL,
5863 x_return_status => l_return_status,
5864 x_msg_count => x_msg_count,
5865 x_msg_data => x_msg_data
5866 );
5867
5868 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5869 THEN
5870 fnd_log.STRING
5871 (fnd_log.level_event,
5872 g_module_current
5873 || '.Create_contract_Ibnew.after_create.header',
5874 'okc_oc_int_pub.create_k_relationships(Return status = '
5875 || l_return_status
5876 || ')'
5877 );
5878 END IF;
5879
5880 IF NOT l_return_status = 'S'
5881 THEN
5882 RAISE g_exception_halt_validation;
5883 END IF;
5884 END IF;
5885
5886 l_line_rec.k_id := l_chrid;
5887 l_line_rec.k_line_number := okc_api.g_miss_char;
5888 l_line_rec.org_id := p_extwar_rec.hdr_org_id;
5889 l_line_rec.accounting_rule_id := p_extwar_rec.line_accounting_rule_id;
5890 l_line_rec.invoicing_rule_id := p_extwar_rec.line_invoicing_rule_id;
5891 l_line_rec.srv_id := p_extwar_rec.srv_id;
5892 l_line_rec.srv_segment1 := p_extwar_rec.srv_name;
5893 l_line_rec.srv_desc := p_extwar_rec.srv_desc;
5894 l_line_rec.srv_sdt := p_extwar_rec.srv_sdt;
5895 l_line_rec.srv_edt := p_extwar_rec.srv_edt;
5896 l_line_rec.bill_to_id := p_extwar_rec.srv_bill_2_id;
5897 l_line_rec.ship_to_id := p_extwar_rec.srv_ship_2_id;
5898 l_line_rec.order_line_id := p_extwar_rec.srv_order_line_id;
5899 l_line_rec.warranty_flag := p_extwar_rec.warranty_flag;
5900 l_line_rec.currency := p_extwar_rec.srv_currency;
5901 l_line_rec.coverage_template_id := p_extwar_rec.srv_cov_template_id;
5902 l_line_rec.standard_cov_yn := 'Y';
5903 l_line_rec.cust_account := p_extwar_rec.cust_account;
5904 l_line_rec.SOURCE := 'NEW';
5905 l_line_rec.upg_orig_system_ref := 'ORDER'; -- added 04-jun-2002 Vigandhi
5906 l_line_rec.upg_orig_system_ref_id := NULL; -- added 04-jun-2002 Vigandhi
5907 l_line_rec.commitment_id := p_extwar_rec.commitment_id;
5908 -- added 12-aug-2003 Vigandhi
5909 l_line_rec.line_renewal_type := p_extwar_rec.line_renewal_type;
5910 --l_line_rec.tax_amount := p_extwar_rec.tax_amount; -- added 22-oct-2003 Vigandhi
5911 l_line_rec.ln_price_list_id := p_extwar_rec.ln_price_list_id;
5912
5913 -- added 07-nov-2003 Vigandhi
5914 IF p_extwar_rec.srv_sdt > SYSDATE
5915 THEN
5916 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
5917 ELSE
5918 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
5919 END IF;
5920
5921 l_line_rec.line_sts_code := l_sts_code;
5922 oks_extwarprgm_pvt.create_k_service_lines
5923 (p_k_line_rec => l_line_rec,
5924 p_contact_tbl => p_contact_tbl_in,
5925 p_salescredit_tbl_in => p_salescredit_tbl_line_in,
5926 p_caller => 'IB',
5927 x_order_error => l_temp,
5928 x_service_line_id => l_lineid,
5929 x_return_status => l_return_status,
5930 x_msg_count => x_msg_count,
5931 x_msg_data => x_msg_data
5932 );
5933
5934 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5935 THEN
5936 fnd_log.STRING
5937 (fnd_log.level_event,
5938 g_module_current
5939 || '.Create_contract_Ibnew.after_create.service_line',
5940 'oks_extwarprgm_pvt.create_k_service_lines(Return status = '
5941 || l_return_status
5942 || ')'
5943 );
5944 END IF;
5945
5946 IF NOT l_return_status = 'S'
5947 THEN
5948 RAISE g_exception_halt_validation;
5949 END IF;
5950
5951 l_covd_rec.k_id := l_chrid;
5952 l_covd_rec.rty_code := p_extwar_rec.rty_code;
5953 l_covd_rec.attach_2_line_id := l_lineid;
5954 l_covd_rec.line_number := okc_api.g_miss_char;
5955 l_covd_rec.customer_product_id := p_extwar_rec.lvl_cp_id;
5956 -- l_covd_rec.product_segment1 := p_extwar_rec.lvl_inventory_name;
5957 -- l_covd_rec.product_desc := p_extwar_rec.lvl_inventory_desc;
5958 l_covd_rec.product_start_date := p_extwar_rec.srv_sdt;
5959 l_covd_rec.product_end_date := p_extwar_rec.srv_edt;
5960 l_covd_rec.quantity := p_extwar_rec.lvl_quantity;
5961 l_covd_rec.list_price := p_extwar_rec.srv_unit_price;
5962 l_covd_rec.uom_code := p_extwar_rec.lvl_uom_code;
5963 l_covd_rec.negotiated_amount := p_extwar_rec.srv_amount;
5964 l_covd_rec.warranty_flag := p_extwar_rec.warranty_flag;
5965 --l_covd_rec.product_sts_code := p_extwar_rec.lvl_sts_code;
5966 l_covd_rec.line_renewal_type := p_extwar_rec.lvl_line_renewal_type;
5967 l_covd_rec.currency_code := p_extwar_rec.srv_currency;
5968 l_covd_rec.order_line_id := p_extwar_rec.srv_order_line_id;
5969 --l_covd_rec.upg_orig_system_ref := Null;
5970 l_covd_rec.attach_2_line_desc := p_extwar_rec.srv_desc;
5971 -- bug#2396580 Vigandhi
5972 l_covd_rec.upg_orig_system_ref := 'ORDER_LINE';
5973 -- added 04-jun-2002 Vigandhi
5974 l_covd_rec.upg_orig_system_ref_id := p_extwar_rec.srv_order_line_id;
5975 -- added 04-jun-2002 Vigandhi
5976 l_covd_rec.prod_item_id := p_extwar_rec.lvl_inventory_id;
5977 l_covd_rec.tax_amount := p_extwar_rec.tax_amount;
5978 -- added tax calculation from OM. -- Vigandhi
5979 l_covd_rec.standard_coverage := 'Y';
5980
5981 IF p_extwar_rec.srv_sdt > SYSDATE
5982 THEN
5983 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
5984 ELSE
5985 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
5986 END IF;
5987
5988 l_covd_rec.product_sts_code := l_sts_code;
5989 oks_extwarprgm_pvt.create_k_covered_levels
5990 (p_k_covd_rec => l_covd_rec,
5991 p_price_attribs => p_price_attribs_in,
5992 p_caller => 'IB',
5993 x_order_error => l_temp,
5994 x_covlvl_id => l_covlvl_id,
5995 x_update_line => l_update_line,
5996 x_return_status => l_return_status,
5997 x_msg_count => x_msg_count,
5998 x_msg_data => x_msg_data
5999 );
6000
6001 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6002 THEN
6003 fnd_log.STRING
6004 (fnd_log.level_event,
6005 g_module_current
6006 || '.Create_contract_Ibnew.after_create.covered_line',
6007 'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
6008 || l_return_status
6009 || ')'
6010 );
6011 END IF;
6012
6013 IF NOT l_return_status = 'S'
6014 THEN
6015 RAISE g_exception_halt_validation;
6016 END IF;
6017
6018 OPEN l_lndates_csr (l_lineid);
6019
6020 FETCH l_lndates_csr
6021 INTO l_lndates_rec;
6022
6023 CLOSE l_lndates_csr;
6024
6025 OPEN l_hdrdates_csr (l_chrid);
6026
6027 FETCH l_hdrdates_csr
6028 INTO l_hdrdates_rec;
6029
6030 CLOSE l_hdrdates_csr;
6031
6032 g_ptr := x_inst_dtls_tbl.COUNT;
6033 x_inst_dtls_tbl (g_ptr).instance_amt_old := NULL;
6034 x_inst_dtls_tbl (g_ptr).instance_qty_old := NULL;
6035 x_inst_dtls_tbl (g_ptr).old_contract_id := NULL;
6036 x_inst_dtls_tbl (g_ptr).old_contact_start_date := NULL;
6037 x_inst_dtls_tbl (g_ptr).old_contract_end_date := NULL;
6038 x_inst_dtls_tbl (g_ptr).old_service_line_id := NULL;
6039 x_inst_dtls_tbl (g_ptr).old_service_start_date := NULL;
6040 x_inst_dtls_tbl (g_ptr).old_service_end_date := NULL;
6041 x_inst_dtls_tbl (g_ptr).old_subline_id := NULL;
6042 x_inst_dtls_tbl (g_ptr).old_subline_start_date := NULL;
6043 x_inst_dtls_tbl (g_ptr).old_subline_end_date := NULL;
6044 x_inst_dtls_tbl (g_ptr).old_customer := NULL;
6045 x_inst_dtls_tbl (g_ptr).old_k_status := NULL;
6046 get_sts_code (NULL, l_hdrdates_rec.sts_code, l_ste_code, l_sts_code);
6047 x_inst_dtls_tbl (g_ptr).instance_amt_new := p_extwar_rec.srv_amount;
6048 x_inst_dtls_tbl (g_ptr).new_contract_id := l_chrid;
6049 x_inst_dtls_tbl (g_ptr).new_contact_start_date :=
6050 l_hdrdates_rec.start_date;
6051 x_inst_dtls_tbl (g_ptr).new_contract_end_date := l_hdrdates_rec.end_date;
6052 x_inst_dtls_tbl (g_ptr).new_service_line_id := l_lineid;
6053 x_inst_dtls_tbl (g_ptr).new_service_start_date :=
6054 l_lndates_rec.start_date;
6055 x_inst_dtls_tbl (g_ptr).new_service_end_date := l_lndates_rec.end_date;
6056 x_inst_dtls_tbl (g_ptr).new_subline_id := l_covlvl_id;
6057 x_inst_dtls_tbl (g_ptr).new_subline_start_date := p_extwar_rec.srv_sdt;
6058 x_inst_dtls_tbl (g_ptr).new_subline_end_date := p_extwar_rec.srv_edt;
6059 x_inst_dtls_tbl (g_ptr).new_customer := p_extwar_rec.cust_account;
6060 x_inst_dtls_tbl (g_ptr).new_k_status := l_sts_code;
6061 x_inst_dtls_tbl (g_ptr).subline_date_terminated := NULL;
6062
6063 IF p_extwar_rec.warranty_flag <> 'W'
6064 THEN
6065 l_strmlvl_id := check_strmlvl_exists (l_lineid);
6066
6067 IF l_strmlvl_id IS NULL
6068 THEN
6069 okc_time_util_pub.get_duration
6070 (p_start_date => p_extwar_rec.srv_sdt,
6071 p_end_date => p_extwar_rec.srv_edt,
6072 x_duration => l_duration,
6073 x_timeunit => l_timeunits,
6074 x_return_status => l_return_status
6075 );
6076
6077 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
6078 THEN
6079 fnd_log.STRING (fnd_log.level_statement,
6080 g_module_current
6081 || '.Create_contract_Ibnew.after.get_duration',
6082 'Get_Duration Status ='
6083 || l_return_status
6084 || ',Duration = '
6085 || l_duration
6086 || ',Time Unit = '
6087 || l_timeunits
6088 );
6089 END IF;
6090
6091 IF NOT l_return_status = 'S'
6092 THEN
6093 RAISE g_exception_halt_validation;
6094 END IF;
6095
6096 l_sll_tbl (1).cle_id := l_lineid;
6097 --l_sll_tbl(1).billing_type := 'T';
6098 l_sll_tbl (1).uom_code := l_timeunits;
6099 l_sll_tbl (1).sequence_no := '1';
6100 l_sll_tbl (1).level_periods := '1';
6101 l_sll_tbl (1).start_date := p_extwar_rec.srv_sdt;
6102 l_sll_tbl (1).uom_per_period := l_duration;
6103 l_sll_tbl (1).advance_periods := NULL;
6104 l_sll_tbl (1).level_amount := NULL;
6105 l_sll_tbl (1).invoice_offset_days := NULL;
6106 l_sll_tbl (1).interface_offset_days := NULL;
6107 oks_bill_sch.create_bill_sch_rules
6108 (p_billing_type => 'T',
6109 p_sll_tbl => l_sll_tbl,
6110 p_invoice_rule_id => p_extwar_rec.line_invoicing_rule_id,
6111 x_bil_sch_out_tbl => l_bil_sch_out,
6112 x_return_status => l_return_status
6113 );
6114
6115 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6116 THEN
6117 fnd_log.STRING
6118 (fnd_log.level_event,
6119 g_module_current
6120 || '.Create_contract_Ibnew.after.bill_sch',
6121 'oks_bill_sch.create_bill_sch_rules(Return status = '
6122 || l_return_status
6123 || ')'
6124 );
6125 END IF;
6126
6127 IF l_return_status <> okc_api.g_ret_sts_success
6128 THEN
6129 okc_api.set_message (g_app_name,
6130 g_required_value,
6131 g_col_name_token,
6132 'Sched Billing Rule (LINE)'
6133 );
6134 RAISE g_exception_halt_validation;
6135 END IF;
6136
6137 oks_bill_util_pub.create_bcl_for_om
6138 (p_line_id => l_lineid,
6139 x_return_status => l_return_status
6140 );
6141
6142 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6143 THEN
6144 fnd_log.STRING
6145 (fnd_log.level_event,
6146 g_module_current || '.Create_contract_Ibnew.after.bcl_om',
6147 ' oks_bill_util_pub.create_bcl_for_om(Return status = '
6148 || l_return_status
6149 || ')'
6150 );
6151 END IF;
6152
6153 IF NOT l_return_status = 'S'
6154 THEN
6155 RAISE g_exception_halt_validation;
6156 END IF;
6157 ELSE
6158 IF check_lvlelements_exists (l_lineid)
6159 THEN
6160 IF l_update_line = 'Y'
6161 THEN
6162 oks_bill_sch.update_om_sll_date
6163 (p_top_line_id => l_lineid,
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 )
6171 THEN
6172 fnd_log.STRING
6173 (fnd_log.level_event,
6174 g_module_current
6175 || '.Create_contract_Ibnew.after.om_sll',
6176 'oks_bill_sch.update_om_sll_date(Return status = '
6177 || l_return_status
6178 || ')'
6179 );
6180 END IF;
6181
6182 IF NOT l_return_status = 'S'
6183 THEN
6184 RAISE g_exception_halt_validation;
6185 END IF;
6186 ELSE
6187 oks_bill_sch.create_bill_sch_cp
6188 (p_top_line_id => l_lineid,
6189 p_cp_line_id => l_covlvl_id,
6190 p_cp_new => 'Y',
6191 x_return_status => l_return_status,
6192 x_msg_count => x_msg_count,
6193 x_msg_data => x_msg_data
6194 );
6195
6196 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
6197 )
6198 THEN
6199 fnd_log.STRING
6200 (fnd_log.level_event,
6201 g_module_current
6202 || '.Create_contract_Ibnew.after.sch_cp',
6203 'oks_bill_sch.create_bill_sch_cp(Return status = '
6204 || l_return_status
6205 || ')'
6206 );
6207 END IF;
6208
6209 IF NOT l_return_status = 'S'
6210 THEN
6211 RAISE g_exception_halt_validation;
6212 END IF;
6213 END IF;
6214
6215 oks_bill_util_pub.create_bcl_for_om
6216 (p_line_id => l_lineid,
6217 x_return_status => l_return_status
6218 );
6219
6220 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6221 THEN
6222 fnd_log.STRING
6223 (fnd_log.level_event,
6224 g_module_current
6225 || '.Create_contract_Ibnew.after.bcl_om',
6226 'oks_bill_util_pub.create_bcl_for_om(Return status = '
6227 || l_return_status
6228 || ')'
6229 );
6230 END IF;
6231
6232 IF NOT l_return_status = 'S'
6233 THEN
6234 RAISE g_exception_halt_validation;
6235 END IF;
6236 ELSE
6237 okc_api.set_message (g_app_name,
6238 g_required_value,
6239 g_col_name_token,
6240 'level elements NOT EXIST'
6241 );
6242 RAISE g_exception_halt_validation;
6243 END IF;
6244 END IF; -- strmlvl end
6245 END IF; -- warranty flag end
6246
6247 UPDATE okc_k_lines_b
6248 SET price_negotiated =
6249 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
6250 FROM okc_k_lines_b
6251 WHERE cle_id = l_lineid AND dnz_chr_id = l_chrid)
6252 WHERE ID = l_lineid;
6253
6254 UPDATE okc_k_headers_b
6255 SET estimated_amount =
6256 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
6257 FROM okc_k_lines_b
6258 WHERE dnz_chr_id = l_chrid AND lse_id IN (1, 19))
6259 WHERE ID = l_chrid;
6260
6261 launch_workflow ( 'INSTALL BASE ACTIVITY : NEW '
6262 || fnd_global.local_chr (10)
6263 || 'Contract Number : '
6264 || get_contract_number (l_chrid)
6265 || fnd_global.local_chr (10)
6266 || 'Service Added : '
6267 || p_extwar_rec.srv_name
6268 || fnd_global.local_chr (10)
6269 || 'Customer Product : '
6270 || p_extwar_rec.lvl_cp_id
6271 );
6272 EXCEPTION
6273 WHEN g_exception_halt_validation
6274 THEN
6275 x_return_status := l_return_status;
6276 NULL;
6277 WHEN OTHERS
6278 THEN
6279 x_return_status := okc_api.g_ret_sts_unexp_error;
6280 okc_api.set_message (g_app_name,
6281 g_unexpected_error,
6282 g_sqlcode_token,
6283 SQLCODE,
6284 g_sqlerrm_token,
6285 SQLERRM
6286 );
6287 END;
6288
6289 PROCEDURE create_transaction_source (
6290 p_create_opr_inst VARCHAR2,
6291 p_source_code VARCHAR2,
6292 p_target_chr_id VARCHAR2,
6293 p_source_line_id NUMBER,
6294 p_source_chr_id NUMBER,
6295 p_target_line_id NUMBER,
6296 x_oper_instance_id IN OUT NOCOPY NUMBER,
6297 x_return_status OUT NOCOPY VARCHAR2,
6298 x_msg_count OUT NOCOPY NUMBER,
6299 x_msg_data OUT NOCOPY VARCHAR2
6300 )
6301 IS
6302 CURSOR cop_csr (p_opn_code VARCHAR2)
6303 IS
6304 SELECT ID
6305 FROM okc_class_operations
6306 WHERE cls_code = (SELECT cls_code
6307 FROM okc_subclasses_b
6308 WHERE code = 'SERVICE')
6309 AND opn_code = p_opn_code;
6310
6311 l_cop_id NUMBER;
6312 l_api_version CONSTANT NUMBER := 1.0;
6313 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
6314 l_return_status VARCHAR2 (1) := 'S';
6315 l_oiev_tbl_in okc_oper_inst_pvt.oiev_tbl_type;
6316 l_oiev_tbl_out okc_oper_inst_pvt.oiev_tbl_type;
6317 l_olev_tbl_in okc_oper_inst_pvt.olev_tbl_type;
6318 l_olev_tbl_out okc_oper_inst_pvt.olev_tbl_type;
6319 BEGIN
6320 x_return_status := l_return_status;
6321
6322 IF p_create_opr_inst = 'Y'
6323 THEN
6324 -- get class operation id
6325 OPEN cop_csr (p_source_code);
6326
6327 FETCH cop_csr
6328 INTO l_cop_id;
6329
6330 CLOSE cop_csr;
6331
6332 --errorout_n('cop'||l_cop_id);
6333 l_oiev_tbl_in (1).status_code := 'PROCESSED';
6334 l_oiev_tbl_in (1).cop_id := l_cop_id;
6335 l_oiev_tbl_in (1).target_chr_id := p_target_chr_id;
6336 okc_oper_inst_pub.create_operation_instance
6337 (p_api_version => l_api_version,
6338 p_init_msg_list => l_init_msg_list,
6339 x_return_status => l_return_status,
6340 x_msg_count => x_msg_count,
6341 x_msg_data => x_msg_data,
6342 p_oiev_tbl => l_oiev_tbl_in,
6343 x_oiev_tbl => l_oiev_tbl_out
6344 );
6345
6346 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6347 THEN
6348 fnd_log.STRING
6349 (fnd_log.level_event,
6350 g_module_current || '.CReate_transaction_source',
6351 'OKC_OPER_INST_PUB.Create_Operation_Instance (Return status = '
6352 || l_return_status
6353 || ')'
6354 );
6355 END IF;
6356
6357 IF NOT l_return_status = 'S'
6358 THEN
6359 RAISE g_exception_halt_validation;
6360 END IF;
6361
6362 x_oper_instance_id := l_oiev_tbl_out (1).ID;
6363 END IF;
6364
6365 l_olev_tbl_in (1).oie_id := x_oper_instance_id;
6366 l_olev_tbl_in (1).process_flag := 'P';
6367 l_olev_tbl_in (1).subject_chr_id := p_target_chr_id;
6368 l_olev_tbl_in (1).object_chr_id := p_source_chr_id;
6369 l_olev_tbl_in (1).subject_cle_id := p_target_line_id;
6370 l_olev_tbl_in (1).object_cle_id := p_source_line_id;
6371 l_olev_tbl_in (1).active_yn := 'Y';
6372 okc_oper_inst_pub.create_operation_line
6373 (p_api_version => l_api_version,
6374 p_init_msg_list => l_init_msg_list,
6375 x_return_status => l_return_status,
6376 x_msg_count => x_msg_count,
6377 x_msg_data => x_msg_data,
6378 p_olev_tbl => l_olev_tbl_in,
6379 x_olev_tbl => l_olev_tbl_out
6380 );
6381
6382 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6383 THEN
6384 fnd_log.STRING
6385 (fnd_log.level_event,
6386 g_module_current || '.CReate_transaction_source',
6387 'OKC_OPER_INST_PUB.Create_Operation_Line (Return status = '
6388 || l_return_status
6389 || ')'
6390 );
6391 END IF;
6392
6393 IF NOT l_return_status = 'S'
6394 THEN
6395 RAISE g_exception_halt_validation;
6396 END IF;
6397
6398 x_return_status := l_return_status;
6399 EXCEPTION
6400 WHEN g_exception_halt_validation
6401 THEN
6402 x_return_status := l_return_status;
6403 NULL;
6404 WHEN OTHERS
6405 THEN
6406 x_return_status := okc_api.g_ret_sts_unexp_error;
6407 okc_api.set_message (g_app_name,
6408 g_unexpected_error,
6409 g_sqlcode_token,
6410 SQLCODE,
6411 g_sqlerrm_token,
6412 SQLERRM
6413 );
6414 END;
6415
6416 PROCEDURE create_source_links (
6417 p_line_id NUMBER,
6418 p_source_code VARCHAR2,
6419 p_create_opr_inst VARCHAR2,
6420 p_target_chr_id VARCHAR2,
6421 p_target_line_id NUMBER,
6422 p_txn_date DATE,
6423 x_return_status OUT NOCOPY VARCHAR2,
6424 x_msg_count OUT NOCOPY NUMBER,
6425 x_msg_data OUT NOCOPY VARCHAR2,
6426 x_oper_instance_id IN OUT NOCOPY NUMBER
6427 )
6428 IS
6429 CURSOR check_renewal_link
6430 IS
6431 SELECT object_cle_id, object_chr_id
6432 FROM okc_operation_instances op,
6433 okc_operation_lines ol,
6434 okc_class_operations classopr,
6435 okc_subclasses_b subclass
6436 WHERE ol.oie_id = op.ID
6437 AND subclass.code = 'SERVICE'
6438 AND classopr.cls_code = subclass.cls_code
6439 AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
6440 AND op.cop_id = classopr.ID
6441 AND ol.subject_cle_id = p_line_id;
6442
6443 CURSOR check_source_link (p_line_id NUMBER)
6444 IS
6445 SELECT subject_cle_id, subject_chr_id
6446 FROM okc_operation_instances op,
6447 okc_operation_lines ol,
6448 okc_class_operations cl,
6449 okc_subclasses_b sl
6450 WHERE ol.oie_id = op.ID
6451 AND op.cop_id = cl.ID
6452 AND cl.cls_code = sl.cls_code
6453 AND sl.code = 'SERVICE'
6454 AND cl.opn_code = p_source_code
6455 AND ol.object_cle_id = p_line_id;
6456
6457 CURSOR check_split_source_link (p_line_id NUMBER)
6458 IS
6459 SELECT subject_cle_id, subject_chr_id
6460 FROM okc_operation_instances op,
6461 okc_operation_lines ol,
6462 okc_class_operations cl,
6463 okc_subclasses_b sl,
6464 okc_k_items a
6465 WHERE ol.oie_id = op.ID
6466 AND op.cop_id = cl.ID
6467 AND cl.cls_code = sl.cls_code
6468 AND sl.code = 'SERVICE'
6469 AND cl.opn_code = p_source_code
6470 AND ol.object_cle_id = p_line_id
6471 AND a.cle_id = ol.subject_cle_id
6472 AND a.object1_id1 = (Select b.object1_id1
6473 from okc_k_items b
6474 where b.jtot_object1_code = 'OKX_CUSTPROD'
6475 and b.cle_id = p_target_line_id)
6476 AND a.jtot_object1_code = 'OKX_CUSTPROD';
6477
6478 l_api_version CONSTANT NUMBER := 1.0;
6479 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
6480 l_return_status VARCHAR2 (1) := 'S';
6481 l_renewal_id NUMBER;
6482 l_source_id NUMBER;
6483 l_renewal_chr_id NUMBER;
6484 l_source_hdr_id NUMBER;
6485 l_source_line_id NUMBER;
6486 l_source_chr_id NUMBER;
6487 l_line_date_renewed DATE;
6488 l_hdr_date_renewed DATE;
6489
6490 FUNCTION hdr_renewal_link_exists (
6491 p_target_chr_id NUMBER,
6492 p_source_chr_id NUMBER
6493 )
6494 RETURN BOOLEAN
6495 IS
6496 CURSOR check_source_link
6497 IS
6498 SELECT 'Y'
6499 FROM okc_operation_instances op,
6500 okc_operation_lines ol,
6501 okc_class_operations classopr,
6502 okc_subclasses_b subclass
6503 WHERE ol.oie_id = op.ID
6504 AND subclass.code = 'SERVICE'
6505 AND classopr.cls_code = subclass.cls_code
6506 AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
6507 AND op.cop_id = classopr.ID
6508 AND ol.subject_chr_id = p_target_chr_id
6509 AND ol.object_chr_id = p_source_chr_id
6510 AND ol.subject_cle_id IS NULL
6511 AND ol.object_cle_id IS NULL;
6512
6513 l_found VARCHAR2 (1) := '?';
6514 BEGIN
6515 OPEN check_source_link;
6516
6517 FETCH check_source_link
6518 INTO l_found;
6519
6520 CLOSE check_source_link;
6521
6522 IF l_found = 'Y'
6523 THEN
6524 RETURN (TRUE);
6525 ELSE
6526 RETURN (FALSE);
6527 END IF;
6528 END;
6529 BEGIN
6530 x_return_status := l_return_status;
6531
6532 OPEN check_renewal_link;
6533
6534 FETCH check_renewal_link
6535 INTO l_renewal_id, l_renewal_chr_id;
6536
6537 CLOSE check_renewal_link;
6538
6539 IF l_renewal_id IS NOT NULL
6540 THEN
6541 IF p_source_code = 'IBSPLIT'
6542 THEN
6543 OPEN check_split_source_link (l_renewal_id);
6544
6545 FETCH check_split_source_link
6546 INTO l_source_id, l_source_chr_id;
6547
6548 CLOSE check_split_source_link;
6549 ELSE
6550 OPEN check_source_link (l_renewal_id);
6551
6552 FETCH check_source_link
6553 INTO l_source_id, l_source_chr_id;
6554
6555 CLOSE check_source_link;
6556 END IF;
6557
6558 IF l_source_id IS NOT NULL
6559 THEN
6560 l_source_line_id := l_source_id;
6561 l_source_hdr_id := l_source_chr_id;
6562 ELSE
6563 l_source_line_id := l_renewal_id;
6564 l_source_hdr_id := l_renewal_chr_id;
6565 END IF;
6566
6567 create_transaction_source (p_create_opr_inst => p_create_opr_inst,
6568 p_source_code => 'RENEWAL',
6569 p_target_chr_id => p_target_chr_id,
6570 p_source_line_id => l_source_line_id,
6571 p_source_chr_id => l_source_hdr_id,
6572 p_target_line_id => p_target_line_id,
6573 x_oper_instance_id => x_oper_instance_id,
6574 x_return_status => x_return_status,
6575 x_msg_count => x_msg_count,
6576 x_msg_data => x_msg_data
6577 );
6578
6579 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6580 THEN
6581 fnd_log.STRING
6582 (fnd_log.level_event,
6583 g_module_current || '.CReate_transaction_source',
6584 'OKC_OPER_INST_PUB.Create_transaction_source(Return status = '
6585 || l_return_status
6586 || ')'
6587 );
6588 END IF;
6589
6590 IF x_return_status = 'S'
6591 THEN
6592 UPDATE okc_k_lines_b
6593 SET date_renewed = p_txn_date
6594 WHERE ID = l_source_line_id;
6595
6596 l_line_date_renewed :=
6597 oks_ib_util_pvt.check_renewed_sublines (l_source_line_id);
6598
6599 UPDATE okc_k_lines_b
6600 SET date_renewed = l_line_date_renewed
6601 WHERE ID = (SELECT cle_id
6602 FROM okc_k_lines_b
6603 WHERE ID = l_source_line_id)
6604 AND date_renewed IS NULL;
6605
6606 l_hdr_date_renewed :=
6607 oks_ib_util_pvt.check_renewed_lines (l_source_line_id);
6608
6609 UPDATE okc_k_headers_all_b
6610 SET date_renewed = l_hdr_date_renewed
6611 WHERE ID = (SELECT dnz_chr_id
6612 FROM okc_k_lines_b
6613 WHERE ID = l_source_line_id)
6614 AND date_renewed IS NULL;
6615 ELSE
6616 RAISE g_exception_halt_validation;
6617 END IF;
6618
6619 -- Create an operation line for headers.
6620 IF p_source_code = 'TRANSFER'
6621 THEN
6622 IF NOT hdr_renewal_link_exists (p_target_chr_id, l_source_hdr_id)
6623 THEN
6624 create_transaction_source
6625 (p_create_opr_inst => 'N',
6626 p_source_code => 'RENEWAL',
6627 p_target_chr_id => p_target_chr_id,
6628 p_source_line_id => NULL,
6629 p_source_chr_id => l_source_hdr_id,
6630 p_target_line_id => NULL,
6631 x_oper_instance_id => x_oper_instance_id,
6632 x_return_status => x_return_status,
6633 x_msg_count => x_msg_count,
6634 x_msg_data => x_msg_data
6635 );
6636
6637 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6638 THEN
6639 fnd_log.STRING
6640 (fnd_log.level_event,
6641 g_module_current || '.CReate_transaction_source',
6642 'OKC_OPER_INST_PUB.Create_transaction_source(Return status = '
6643 || l_return_status
6644 || ')'
6645 );
6646 END IF;
6647 END IF;
6648 END IF;
6649 END IF;
6650
6651 x_return_status := l_return_status;
6652 EXCEPTION
6653 WHEN g_exception_halt_validation
6654 THEN
6655 x_return_status := l_return_status;
6656 NULL;
6657 WHEN OTHERS
6658 THEN
6659 x_return_status := okc_api.g_ret_sts_unexp_error;
6660 okc_api.set_message (g_app_name,
6661 g_unexpected_error,
6662 g_sqlcode_token,
6663 SQLCODE,
6664 g_sqlerrm_token,
6665 SQLERRM
6666 );
6667 END;
6668
6669 PROCEDURE create_contract_ibsplit (
6670 p_kdtl_tbl IN contract_tbl,
6671 x_return_status OUT NOCOPY VARCHAR2,
6672 x_msg_count OUT NOCOPY NUMBER,
6673 x_msg_data OUT NOCOPY VARCHAR2
6674 )
6675 IS
6676 CURSOR l_bill_csr (p_cle_id NUMBER)
6677 IS
6678 SELECT NVL (SUM (amount), 0)
6679 FROM oks_bill_sub_lines_v
6680 WHERE cle_id = p_cle_id;
6681
6682 CURSOR l_rule_csr (p_cle_id NUMBER)
6683 IS
6684 SELECT elmnts.ID
6685 FROM oks_stream_levels_b strm, oks_level_elements elmnts
6686 WHERE strm.cle_id = p_cle_id AND elmnts.rul_id = strm.ID;
6687
6688 CURSOR l_credit_csr (p_cle_id NUMBER)
6689 IS
6690 SELECT NVL (SUM (amount), 0)
6691 FROM oks_bill_sub_lines bsl
6692 WHERE bsl.cle_id = p_cle_id
6693 AND EXISTS (SELECT 1
6694 FROM oks_bill_cont_lines bcl
6695 WHERE bcl.ID = bsl.bcl_id AND bill_action = 'TR');
6696
6697 --bug start 3736860
6698 CURSOR get_oks_line_dtls (p_id NUMBER)
6699 IS
6700 SELECT ID, object_version_number
6701 FROM oks_k_lines_b
6702 WHERE cle_id = p_id;
6703
6704 CURSOR l_bill_tax_csr (p_cle_id NUMBER)
6705 IS
6706 SELECT NVL (SUM (trx_line_tax_amount), 0)
6707 FROM oks_bill_txn_lines
6708 WHERE bsl_id IN (SELECT ID
6709 FROM oks_bill_sub_lines
6710 WHERE cle_id = p_cle_id);
6711
6712 --bug end 3736860
6713 CURSOR l_serv_csr (p_serv_id NUMBER)
6714 IS
6715 SELECT b.concatenated_segments description
6716 FROM mtl_system_items_b_kfv b
6717 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
6718
6719 CURSOR l_ordline_csr (p_line_id NUMBER)
6720 IS
6721 SELECT object1_id1
6722 FROM okc_k_rel_objs
6723 WHERE cle_id = p_line_id;
6724
6725 CURSOR l_refnum_csr (p_cp_id NUMBER)
6726 IS
6727 SELECT instance_number
6728 FROM csi_item_instances
6729 WHERE instance_id = p_cp_id;
6730
6731 l_ref_num VARCHAR2 (30);
6732 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
6733 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
6734 l_instparent_id NUMBER;
6735 l_old_cp_id NUMBER;
6736 l_insthist_rec oks_ins_pvt.insv_rec_type;
6737 x_insthist_rec oks_ins_pvt.insv_rec_type;
6738 l_parameters VARCHAR2 (2000);
6739 l_renewal_id NUMBER;
6740 l_line_rec k_line_service_rec_type;
6741 l_covd_rec k_line_covered_level_rec_type;
6742 l_available_yn VARCHAR2 (1);
6743 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
6744 l_chrid NUMBER := NULL;
6745 l_lineid NUMBER := NULL;
6746 l_ctr NUMBER := 0;
6747 l_ctr1 NUMBER := 0;
6748 l_api_version CONSTANT NUMBER := 1.0;
6749 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
6750 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
6751 l_srvc_stdt DATE;
6752 --Contract Line Table
6753 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
6754 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
6755 --SalesCredit
6756 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
6757 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
6758 l_qty1price NUMBER := 0;
6759 l_oldamt NUMBER (30, 2) := 0;
6760 l_no_of_days NUMBER := 0;
6761 l_new_value NUMBER := 0;
6762 l_dayprice NUMBER := 0;
6763 l_newactprice NUMBER (30, 2) := 0;
6764 l_diff NUMBER := 0;
6765 l_covlvl_id NUMBER;
6766 l_rule_group_id NUMBER;
6767 l_rule_id NUMBER;
6768 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
6769 l_bill_schd_yn VARCHAR2 (1);
6770 l_list_price NUMBER := 0;
6771 l_spldt DATE;
6772 l_billed_amount NUMBER := 0;
6773 actual_amt NUMBER := 0;
6774 l_total_days NUMBER;
6775 l_credit_amt NUMBER;
6776 l_duration NUMBER;
6777 l_timeunits VARCHAR2 (25);
6778 l_sll_tbl oks_bill_sch.streamlvl_tbl;
6779 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
6780 l_strmlvl_id NUMBER := NULL;
6781 l_update_line VARCHAR2 (1);
6782 l_temp VARCHAR2 (2000);
6783 l_ste_code VARCHAR2 (30);
6784 l_sts_code VARCHAR2 (30);
6785 l_old_qty NUMBER := 0;
6786 actual_tax NUMBER := 0;
6787 l_qtyltax NUMBER := 0;
6788 l_oldtax NUMBER (30, 2) := 0;
6789 l_newacttax NUMBER (30, 2) := 0;
6790 l_daytax NUMBER := 0;
6791 l_obj_version_num NUMBER;
6792 l_id NUMBER;
6793 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
6794 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
6795 l_taxed_amount NUMBER := 0;
6796 l_new_cp_tbl oks_bill_sch.subline_id_tbl;
6797 l_warranty_flag VARCHAR2 (2);
6798 l_renewal_opr_instance_id NUMBER;
6799 l_opr_instance_id NUMBER;
6800 l_target_chr_id NUMBER;
6801 l_source_line_id NUMBER;
6802 l_create_oper_instance VARCHAR2 (1);
6803 l_new_sdate DATE;
6804 l_order_line_id Number;
6805 BEGIN
6806 x_return_status := okc_api.g_ret_sts_success;
6807 l_target_chr_id := 0;
6808 l_old_cp_id := 0;
6809
6810 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6811 THEN
6812 fnd_log.STRING (fnd_log.level_event,
6813 g_module_current || '.CREATE_CONTRACT_IBSPLIT.',
6814 ', count = ' || p_kdtl_tbl.COUNT || ')'
6815 );
6816 END IF;
6817
6818 IF p_kdtl_tbl.COUNT > 0
6819 THEN
6820 l_ctr := p_kdtl_tbl.FIRST;
6821
6822 LOOP
6823 okc_context.set_okc_org_context
6824 (p_kdtl_tbl (l_ctr).hdr_org_id,
6825 p_kdtl_tbl (l_ctr).organization_id
6826 );
6827 l_inst_dtls_tbl.DELETE;
6828 l_ctr1 := 1;
6829 l_spldt := p_kdtl_tbl (l_ctr).transaction_date;
6830
6831 IF (TRUNC (l_spldt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
6832 THEN
6833 l_spldt := p_kdtl_tbl (l_ctr).prod_sdt;
6834 END IF;
6835
6836 l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
6837
6838 IF p_kdtl_tbl (l_ctr).lse_id = 25
6839 THEN
6840 l_warranty_flag := 'E';
6841 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
6842 AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
6843 THEN
6844 l_warranty_flag := 'S';
6845 ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
6846 THEN
6847 l_warranty_flag := 'W';
6848 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
6849 AND p_kdtl_tbl (l_ctr).scs_code = 'SUBSCRIPTION'
6850 THEN
6851 l_warranty_flag := 'SU';
6852 END IF;
6853
6854 IF l_warranty_flag = 'W'
6855 THEN
6856 l_covd_rec.list_price := 0;
6857 l_covd_rec.negotiated_amount := 0;
6858 l_newactprice := 0;
6859 l_oldamt := 0;
6860 l_old_qty :=
6861 p_kdtl_tbl (l_ctr).old_cp_quantity
6862 - p_kdtl_tbl (l_ctr).new_quantity;
6863 --bug start 3736860
6864 l_oldtax := 0;
6865 l_covd_rec.tax_amount := 0;
6866 l_newacttax := 0;
6867
6868 --bug end 3736860
6869 IF l_old_qty < 1
6870 THEN -- changed
6871 l_old_qty := p_kdtl_tbl (l_ctr).old_cp_quantity; -- changed
6872 END IF; -- changed
6873
6874 l_new_sdate := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
6875 ELSIF p_kdtl_tbl (l_ctr).service_amount IS NOT NULL
6876 THEN
6877 IF p_kdtl_tbl (l_ctr).lse_id <> 18
6878 THEN -- added subscription contract category
6879 l_no_of_days :=
6880 ABS ( TRUNC ( p_kdtl_tbl (l_ctr).prod_edt
6881 - TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
6882 )
6883 + 1
6884 );
6885 actual_amt := p_kdtl_tbl (l_ctr).service_amount;
6886 --bug start 3736860
6887 actual_tax := p_kdtl_tbl (l_ctr).service_tax_amount;
6888 --bug end 3736860
6889 l_new_sdate := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
6890 END IF;
6891
6892 l_qty1price := actual_amt / p_kdtl_tbl (l_ctr).old_cp_quantity;
6893 l_old_qty :=
6894 p_kdtl_tbl (l_ctr).old_cp_quantity
6895 - p_kdtl_tbl (l_ctr).new_quantity; -- changed
6896 --bug start 3736860
6897 l_qtyltax := actual_tax / p_kdtl_tbl (l_ctr).old_cp_quantity;
6898
6899 --bug end 3736860
6900 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
6901 THEN
6902 fnd_log.STRING (fnd_log.level_statement,
6903 g_module_current
6904 || '.CREATE_CONTRACT_IBSPLIT',
6905 ' cp quantity = '
6906 || p_kdtl_tbl (l_ctr).old_cp_quantity
6907 );
6908 END IF;
6909
6910 ---- changed
6911 IF l_old_qty < 1
6912 THEN
6913 l_old_qty := p_kdtl_tbl (l_ctr).old_cp_quantity;
6914 l_oldamt := p_kdtl_tbl (l_ctr).service_amount;
6915 l_newactprice := 0;
6916 --bug start 3736860
6917 l_oldtax := p_kdtl_tbl (l_ctr).service_tax_amount;
6918 l_newacttax := 0;
6919 --bug end 3736860
6920 ELSE
6921 l_oldamt := l_old_qty * l_qty1price;
6922 l_newactprice :=
6923 p_kdtl_tbl (l_ctr).service_amount - l_oldamt;
6924 -- bug 4274725
6925 --bug start 3736860
6926 l_oldtax := l_old_qty * l_qtyltax;
6927 l_newacttax :=
6928 p_kdtl_tbl (l_ctr).service_tax_amount - l_oldtax;
6929 -- bug 4274725
6930 --bug end 3736860
6931 END IF;
6932
6933 -- end of change
6934 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
6935 THEN
6936 fnd_log.STRING (fnd_log.level_statement,
6937 g_module_current
6938 || '.CREATE_CONTRACT_IBSPLIT',
6939 ' l_old_qty = '
6940 || l_old_qty
6941 || ',l_oldamt = '
6942 || l_oldamt
6943 || ',l_newactprice = '
6944 || l_newactprice
6945 );
6946 END IF;
6947
6948 l_oldamt :=
6949 oks_extwar_util_pvt.round_currency_amt
6950 (l_oldamt,
6951 p_kdtl_tbl (l_ctr).service_currency
6952 );
6953 l_covd_rec.negotiated_amount :=
6954 oks_extwar_util_pvt.round_currency_amt
6955 (l_newactprice,
6956 p_kdtl_tbl (l_ctr).service_currency
6957 );
6958 --bug start 3736860
6959 l_covd_rec.tax_amount :=
6960 oks_extwar_util_pvt.round_currency_amt
6961 (l_newacttax,
6962 p_kdtl_tbl (l_ctr).service_currency
6963 );
6964 --bug end 3736860
6965 l_list_price := p_kdtl_tbl (l_ctr).service_unit_price;
6966 l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
6967 END IF; ---warranty flag = 'W'
6968
6969 UPDATE okc_k_items
6970 SET number_of_items = l_old_qty
6971 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
6972
6973 UPDATE okc_k_lines_b
6974 SET price_negotiated = NVL (l_oldamt, 0),
6975 price_unit = NVL (p_kdtl_tbl (l_ctr).service_unit_price, 0)
6976 WHERE ID = p_kdtl_tbl (l_ctr).object_line_id;
6977
6978 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6979 THEN
6980 fnd_log.STRING
6981 (fnd_log.level_event,
6982 g_module_current
6983 || '.CREATE_CONTRACT_IBSPLIT.after_update.cov_lvl',
6984 ' update_cov_level(Return status = '
6985 || l_return_status
6986 || ')'
6987 );
6988 END IF;
6989
6990 IF NOT l_return_status = okc_api.g_ret_sts_success
6991 THEN
6992 RAISE g_exception_halt_validation;
6993 END IF;
6994
6995 --bug start 3736860
6996 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
6997
6998 FETCH get_oks_line_dtls
6999 INTO l_id, l_obj_version_num;
7000
7001 CLOSE get_oks_line_dtls;
7002
7003 l_klnv_tbl_in (1).ID := l_id;
7004 l_klnv_tbl_in (1).tax_amount :=
7005 oks_extwar_util_pvt.round_currency_amt
7006 (l_oldtax,
7007 p_kdtl_tbl (l_ctr).service_currency
7008 );
7009 l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
7010 oks_contract_line_pub.update_line
7011 (p_api_version => l_api_version,
7012 p_init_msg_list => l_init_msg_list,
7013 x_return_status => l_return_status,
7014 x_msg_count => x_msg_count,
7015 x_msg_data => x_msg_data,
7016 p_klnv_tbl => l_klnv_tbl_in,
7017 x_klnv_tbl => l_klnv_tbl_out,
7018 p_validate_yn => 'N'
7019 );
7020
7021 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7022 THEN
7023 fnd_log.STRING
7024 (fnd_log.level_event,
7025 g_module_current
7026 || '.CREATE_CONTRACT_IBSPLIT.after_cov_lvl_tax',
7027 'oks_contract_line_pub.update_line(Return status = '
7028 || l_return_status
7029 || ')'
7030 );
7031 END IF;
7032
7033 IF NOT l_return_status = 'S'
7034 THEN
7035 okc_api.set_message (g_app_name,
7036 g_required_value,
7037 g_col_name_token,
7038 'OKS Contract COV LINE'
7039 );
7040 RAISE g_exception_halt_validation;
7041 END IF;
7042
7043 --bug end 3736860
7044 get_sts_code (NULL,
7045 p_kdtl_tbl (l_ctr).hdr_sts,
7046 l_ste_code,
7047 l_sts_code
7048 );
7049 --x_inst_dtls_tbl(l_ctr1).INST_PARENT_ID := p_split_rec.old_cp_id;
7050 l_inst_dtls_tbl (l_ctr1).transaction_date :=
7051 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7052 l_inst_dtls_tbl (l_ctr1).transaction_type := 'SPL';
7053 l_inst_dtls_tbl (l_ctr1).instance_amt_old :=
7054 p_kdtl_tbl (l_ctr).service_amount;
7055 l_inst_dtls_tbl (l_ctr1).instance_qty_old :=
7056 p_kdtl_tbl (l_ctr).old_cp_quantity;
7057 l_inst_dtls_tbl (l_ctr1).old_contract_id :=
7058 p_kdtl_tbl (l_ctr).hdr_id;
7059 l_inst_dtls_tbl (l_ctr1).old_contact_start_date :=
7060 p_kdtl_tbl (l_ctr).hdr_sdt;
7061 l_inst_dtls_tbl (l_ctr1).old_contract_end_date :=
7062 p_kdtl_tbl (l_ctr).hdr_edt;
7063 l_inst_dtls_tbl (l_ctr1).old_service_line_id :=
7064 p_kdtl_tbl (l_ctr).service_line_id;
7065 l_inst_dtls_tbl (l_ctr1).old_service_start_date :=
7066 p_kdtl_tbl (l_ctr).service_sdt;
7067 l_inst_dtls_tbl (l_ctr1).old_service_end_date :=
7068 p_kdtl_tbl (l_ctr).service_edt;
7069 l_inst_dtls_tbl (l_ctr1).old_subline_id :=
7070 p_kdtl_tbl (l_ctr).object_line_id;
7071 l_inst_dtls_tbl (l_ctr1).old_subline_start_date :=
7072 p_kdtl_tbl (l_ctr).prod_sdt;
7073 l_inst_dtls_tbl (l_ctr1).old_subline_end_date :=
7074 p_kdtl_tbl (l_ctr).prod_edt;
7075 l_inst_dtls_tbl (l_ctr1).old_customer :=
7076 p_kdtl_tbl (l_ctr).cust_account;
7077 l_inst_dtls_tbl (l_ctr1).old_k_status := l_sts_code;
7078 l_inst_dtls_tbl (l_ctr1).instance_id_new :=
7079 p_kdtl_tbl (l_ctr).old_cp_id;
7080 l_inst_dtls_tbl (l_ctr1).instance_amt_new := NVL (l_oldamt, 0);
7081 l_inst_dtls_tbl (l_ctr1).instance_qty_new := l_old_qty;
7082 l_inst_dtls_tbl (l_ctr1).new_contract_id :=
7083 p_kdtl_tbl (l_ctr).hdr_id;
7084 l_inst_dtls_tbl (l_ctr1).new_contact_start_date :=
7085 p_kdtl_tbl (l_ctr).hdr_sdt;
7086 l_inst_dtls_tbl (l_ctr1).new_contract_end_date :=
7087 p_kdtl_tbl (l_ctr).hdr_edt;
7088 l_inst_dtls_tbl (l_ctr1).new_service_line_id :=
7089 p_kdtl_tbl (l_ctr).service_line_id;
7090 l_inst_dtls_tbl (l_ctr1).new_service_start_date :=
7091 p_kdtl_tbl (l_ctr).service_sdt;
7092 l_inst_dtls_tbl (l_ctr1).new_service_end_date :=
7093 p_kdtl_tbl (l_ctr).service_edt;
7094 l_inst_dtls_tbl (l_ctr1).new_subline_id :=
7095 p_kdtl_tbl (l_ctr).object_line_id;
7096 l_inst_dtls_tbl (l_ctr1).new_subline_start_date :=
7097 p_kdtl_tbl (l_ctr).prod_sdt;
7098 l_inst_dtls_tbl (l_ctr1).new_subline_end_date :=
7099 p_kdtl_tbl (l_ctr).prod_edt;
7100 l_inst_dtls_tbl (l_ctr1).new_customer :=
7101 p_kdtl_tbl (l_ctr).cust_account;
7102 l_inst_dtls_tbl (l_ctr1).new_k_status := l_sts_code;
7103
7104 --x_inst_dtls_tbl(l_ctr1).SUBLINE_DATE_TERMINATED :=
7105
7106 -- Fixed Bug 2500056 06-Aug-2002
7107 IF p_kdtl_tbl (l_ctr).lse_id = 18
7108 THEN
7109 l_covd_rec.rty_code := 'CONTRACTWARRANTYORDER';
7110 ELSE
7111 l_covd_rec.rty_code := 'CONTRACTSERVICESORDER';
7112 END IF;
7113
7114 l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
7115 l_covd_rec.attach_2_line_id := p_kdtl_tbl (l_ctr).service_line_id;
7116 l_covd_rec.line_number := okc_api.g_miss_char;
7117 l_covd_rec.customer_product_id := p_kdtl_tbl (l_ctr).new_cp_id;
7118 l_covd_rec.product_segment1 := p_kdtl_tbl (l_ctr).prod_name;
7119 l_covd_rec.product_desc := p_kdtl_tbl (l_ctr).prod_description;
7120 l_covd_rec.product_start_date := l_new_sdate;
7121 --TRUNC( p_kdtl_tbl( l_ctr ).prod_sdt ); -- fixed bug2296369
7122 l_covd_rec.product_end_date := TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
7123 l_covd_rec.quantity := p_kdtl_tbl (l_ctr).new_quantity;
7124 l_covd_rec.warranty_flag := l_warranty_flag;
7125 l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
7126 l_order_line_id := Null;
7127 OPEN l_ordline_csr (p_kdtl_tbl (l_ctr).object_line_id);
7128
7129 FETCH l_ordline_csr
7130 INTO l_order_line_id;
7131
7132 CLOSE l_ordline_csr;
7133
7134 l_covd_rec.order_line_id := l_order_line_id;
7135 l_covd_rec.currency_code := p_kdtl_tbl (l_ctr).service_currency;
7136 l_covd_rec.product_sts_code := p_kdtl_tbl (l_ctr).prod_sts_code;
7137 l_covd_rec.upg_orig_system_ref :=
7138 p_kdtl_tbl (l_ctr).upg_orig_system_ref;
7139 l_covd_rec.upg_orig_system_ref_id :=
7140 p_kdtl_tbl (l_ctr).upg_orig_system_ref_id;
7141
7142 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
7143
7144 FETCH l_serv_csr
7145 INTO l_covd_rec.attach_2_line_desc;
7146
7147 CLOSE l_serv_csr;
7148
7149 l_covd_rec.line_renewal_type :=
7150 p_kdtl_tbl (l_ctr).prod_line_renewal_type;
7151 l_covd_rec.prod_item_id := p_kdtl_tbl (l_ctr).new_inventory_item;
7152 l_covd_rec.price_uom := p_kdtl_tbl (l_ctr).price_uom_code;
7153 l_covd_rec.toplvl_uom_code := p_kdtl_tbl (l_ctr).toplvl_uom_code;
7154 --mchoudha added for bug#5233956
7155 l_covd_rec.toplvl_price_qty := p_kdtl_tbl (l_ctr).toplvl_price_qty;
7156 oks_extwar_util_pvt.get_k_pricing_attributes
7157 (p_k_line_id => p_kdtl_tbl (l_ctr).service_line_id,
7158 x_pricing_att => l_price_attribs_in,
7159 x_return_status => l_return_status
7160 );
7161
7162 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7163 THEN
7164 fnd_log.STRING
7165 (fnd_log.level_event,
7166 g_module_current
7167 || '.CREATE_CONTRACT_IBSPLIT.after.price_att',
7168 'oks_extwar_util_pvt.get_k_pricing_attributes(Return status = '
7169 || l_return_status
7170 || ')'
7171 );
7172 END IF;
7173
7174 IF NOT l_return_status = okc_api.g_ret_sts_success
7175 THEN
7176 RAISE g_exception_halt_validation;
7177 END IF;
7178
7179 oks_extwarprgm_pvt.create_k_covered_levels
7180 (p_k_covd_rec => l_covd_rec,
7181 p_price_attribs => l_price_attribs_in,
7182 p_caller => 'IB',
7183 x_order_error => l_temp,
7184 x_covlvl_id => l_covlvl_id,
7185 x_update_line => l_update_line,
7186 x_return_status => l_return_status,
7187 x_msg_count => x_msg_count,
7188 x_msg_data => x_msg_data
7189 );
7190
7191 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7192 THEN
7193 fnd_log.STRING
7194 (fnd_log.level_event,
7195 g_module_current
7196 || '.CREATE_CONTRACT_IBSPLIT.after_create.cov_lvl',
7197 'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
7198 || l_return_status
7199 || ')'
7200 );
7201 END IF;
7202
7203 IF NOT l_return_status = 'S'
7204 THEN
7205 RAISE g_exception_halt_validation;
7206 END IF;
7207
7208 --x_inst_dtls_tbl(l_ctr1+1).INST_PARENT_ID := p_split_rec.old_cp_id;
7209 l_inst_dtls_tbl (l_ctr1 + 1).transaction_date :=
7210 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7211 l_inst_dtls_tbl (l_ctr1 + 1).transaction_type := NULL;
7212 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_old :=
7213 p_kdtl_tbl (l_ctr).service_amount;
7214 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_old :=
7215 p_kdtl_tbl (l_ctr).old_cp_quantity;
7216 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_id :=
7217 p_kdtl_tbl (l_ctr).hdr_id;
7218 l_inst_dtls_tbl (l_ctr1 + 1).old_contact_start_date :=
7219 p_kdtl_tbl (l_ctr).hdr_sdt;
7220 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_end_date :=
7221 p_kdtl_tbl (l_ctr).hdr_edt;
7222 l_inst_dtls_tbl (l_ctr1 + 1).old_service_line_id :=
7223 p_kdtl_tbl (l_ctr).service_line_id;
7224 l_inst_dtls_tbl (l_ctr1 + 1).old_service_start_date :=
7225 p_kdtl_tbl (l_ctr).service_sdt;
7226 l_inst_dtls_tbl (l_ctr1 + 1).old_service_end_date :=
7227 p_kdtl_tbl (l_ctr).service_edt;
7228 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_id :=
7229 p_kdtl_tbl (l_ctr).object_line_id;
7230 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_start_date :=
7231 p_kdtl_tbl (l_ctr).prod_sdt;
7232 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_end_date :=
7233 p_kdtl_tbl (l_ctr).prod_edt;
7234 l_inst_dtls_tbl (l_ctr1 + 1).old_customer :=
7235 p_kdtl_tbl (l_ctr).cust_account;
7236 l_inst_dtls_tbl (l_ctr1 + 1).old_k_status := l_sts_code;
7237 l_inst_dtls_tbl (l_ctr1 + 1).instance_id_new :=
7238 p_kdtl_tbl (l_ctr).new_cp_id;
7239 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_new :=
7240 oks_extwar_util_pvt.round_currency_amt
7241 (l_newactprice,
7242 p_kdtl_tbl (l_ctr).service_currency
7243 );
7244 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_new :=
7245 p_kdtl_tbl (l_ctr).new_quantity;
7246 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_id :=
7247 p_kdtl_tbl (l_ctr).hdr_id;
7248 l_inst_dtls_tbl (l_ctr1 + 1).new_contact_start_date :=
7249 p_kdtl_tbl (l_ctr).hdr_sdt;
7250 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_end_date :=
7251 p_kdtl_tbl (l_ctr).hdr_edt;
7252 l_inst_dtls_tbl (l_ctr1 + 1).new_service_line_id :=
7253 p_kdtl_tbl (l_ctr).service_line_id;
7254 l_inst_dtls_tbl (l_ctr1 + 1).new_service_start_date :=
7255 p_kdtl_tbl (l_ctr).service_sdt;
7256 l_inst_dtls_tbl (l_ctr1 + 1).new_service_end_date :=
7257 p_kdtl_tbl (l_ctr).service_edt;
7258 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_id := l_covlvl_id;
7259 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_start_date := l_new_sdate;
7260 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_end_date :=
7261 TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
7262 l_inst_dtls_tbl (l_ctr1 + 1).new_customer :=
7263 p_kdtl_tbl (l_ctr).cust_account;
7264 l_inst_dtls_tbl (l_ctr1 + 1).new_k_status := l_sts_code;
7265 l_inst_dtls_tbl (l_ctr1 + 1).subline_date_terminated := NULL;
7266 l_new_cp_tbl (1).ID := l_covlvl_id;
7267 oks_bill_sch.adjust_split_bill_sch
7268 (p_old_cp_id => p_kdtl_tbl (l_ctr).object_line_id,
7269 p_new_cp_tbl => l_new_cp_tbl,
7270 x_return_status => l_return_status,
7271 x_msg_count => x_msg_count,
7272 x_msg_data => x_msg_data
7273 );
7274
7275 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7276 THEN
7277 fnd_log.STRING
7278 (fnd_log.level_event,
7279 g_module_current
7280 || '.CREATE_CONTRACT_IBSPLIT.ADJUST_SPLIT_BILL_SCH',
7281 'Return status = ' || l_return_status
7282 );
7283 END IF;
7284
7285 IF NOT l_return_status = 'S'
7286 THEN
7287 RAISE g_exception_halt_validation;
7288 END IF;
7289
7290 -- Fixed Bug 5039806
7291 /*
7292 UPDATE okc_k_lines_b
7293 SET price_negotiated =
7294 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7295 FROM okc_k_lines_b
7296 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
7297 AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id)
7298 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
7299
7300 UPDATE okc_k_headers_b
7301 SET estimated_amount =
7302 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7303 FROM okc_k_lines_b
7304 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
7305 AND lse_id IN (1, 19))
7306 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
7307 */
7308
7309 l_create_oper_instance := 'N';
7310
7311 IF l_opr_instance_id IS NULL
7312 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
7313 THEN
7314 l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
7315 l_create_oper_instance := 'Y';
7316 END IF;
7317
7318 create_transaction_source
7319 (p_create_opr_inst => l_create_oper_instance,
7320 p_source_code => 'IBSPLIT',
7321 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
7322 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
7323 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
7324 p_target_line_id => l_covlvl_id,
7325 x_oper_instance_id => l_opr_instance_id,
7326 x_return_status => l_return_status,
7327 x_msg_count => x_msg_count,
7328 x_msg_data => x_msg_data
7329 );
7330
7331 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7332 THEN
7333 fnd_log.STRING
7334 (fnd_log.level_event,
7335 g_module_current
7336 || '.CREATE_CONTRACT_IBSPLIT.Create_transaction_source',
7337 'Return status = ' || l_return_status
7338 );
7339 END IF;
7340
7341 IF NOT l_return_status = 'S'
7342 THEN
7343 RAISE g_exception_halt_validation;
7344 END IF;
7345
7346 create_source_links
7347 (p_create_opr_inst => l_create_oper_instance,
7348 p_source_code => 'IBSPLIT',
7349 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
7350 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
7351 p_target_line_id => l_covlvl_id,
7352 p_txn_date => p_kdtl_tbl (l_ctr).transaction_date,
7353 x_oper_instance_id => l_renewal_opr_instance_id,
7354 x_return_status => l_return_status,
7355 x_msg_count => x_msg_count,
7356 x_msg_data => x_msg_data
7357 );
7358
7359 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7360 THEN
7361 fnd_log.STRING
7362 (fnd_log.level_event,
7363 g_module_current
7364 || '.CREATE_CONTRACT_IBSPLIT.Create_source_links',
7365 'Return status = ' || l_return_status
7366 );
7367 END IF;
7368
7369 IF NOT l_return_status = 'S'
7370 THEN
7371 RAISE g_exception_halt_validation;
7372 END IF;
7373
7374 IF l_inst_dtls_tbl.COUNT <> 0
7375 THEN
7376 IF l_instparent_id IS NULL
7377 AND l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
7378 THEN
7379 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
7380
7381 FETCH l_refnum_csr
7382 INTO l_ref_num;
7383
7384 CLOSE l_refnum_csr;
7385
7386 l_parameters :=
7387 ' Old CP :'
7388 || p_kdtl_tbl (l_ctr).old_cp_id
7389 || ','
7390 || 'Item Id:'
7391 || p_kdtl_tbl (l_ctr).prod_inventory_item
7392 || ','
7393 || 'Old Quantity:'
7394 || p_kdtl_tbl (l_ctr).old_cp_quantity
7395 || ','
7396 || 'Transaction type :'
7397 || 'SPL'
7398 || ','
7399 || ' Transaction date :'
7400 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
7401 || ','
7402 || 'New quantity:'
7403 || p_kdtl_tbl (l_ctr).new_quantity;
7404 --oks_instance_history
7405 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
7406 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
7407 l_insthist_rec.transaction_type := 'SPL';
7408 l_insthist_rec.transaction_date :=
7409 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7410 l_insthist_rec.reference_number := l_ref_num;
7411 l_insthist_rec.PARAMETERS := l_parameters;
7412 oks_ins_pvt.insert_row (p_api_version => 1.0,
7413 p_init_msg_list => 'T',
7414 x_return_status => l_return_status,
7415 x_msg_count => x_msg_count,
7416 x_msg_data => x_msg_data,
7417 p_insv_rec => l_insthist_rec,
7418 x_insv_rec => x_insthist_rec
7419 );
7420
7421 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
7422 )
7423 THEN
7424 fnd_log.STRING
7425 (fnd_log.level_event,
7426 g_module_current || '.CREATE_K_IBSPLIT',
7427 'oks_ins_pvt.insert_row(Return status = '
7428 || l_return_status
7429 || ')'
7430 );
7431 END IF;
7432
7433 x_return_status := l_return_status;
7434
7435 IF NOT l_return_status = okc_api.g_ret_sts_success
7436 THEN
7437 x_return_status := l_return_status;
7438 RAISE g_exception_halt_validation;
7439 END IF;
7440
7441 l_instparent_id := x_insthist_rec.ID;
7442 END IF;
7443
7444 FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
7445 LOOP
7446 l_inst_dtls_tbl (i).ins_id := l_instparent_id;
7447 END LOOP;
7448
7449 --oks_inst_history_details
7450 oks_ihd_pvt.insert_row (p_api_version => 1.0,
7451 p_init_msg_list => 'T',
7452 x_return_status => l_return_status,
7453 x_msg_count => x_msg_count,
7454 x_msg_data => x_msg_data,
7455 p_ihdv_tbl => l_inst_dtls_tbl,
7456 x_ihdv_tbl => x_inst_dtls_tbl
7457 );
7458
7459 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7460 THEN
7461 fnd_log.STRING
7462 (fnd_log.level_event,
7463 g_module_current || '.CREATE_K_IBSPLIT',
7464 'oks_ihd_pvt.insert_row(Return status = '
7465 || l_return_status
7466 || ')'
7467 );
7468 END IF;
7469
7470 x_return_status := l_return_status;
7471
7472 IF NOT l_return_status = okc_api.g_ret_sts_success
7473 THEN
7474 x_return_status := l_return_status;
7475 RAISE g_exception_halt_validation;
7476 END IF;
7477 END IF;
7478
7479 launch_workflow ( 'INSTALL BASE ACTIVITY : SPLIT '
7480 || fnd_global.local_chr (10)
7481 || 'Contract Number : '
7482 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
7483 || fnd_global.local_chr (10)
7484 || 'Splitted Cust Product : '
7485 || p_kdtl_tbl (l_ctr).old_cp_id
7486 || fnd_global.local_chr (10)
7487 || 'New Customer Product : '
7488 || p_kdtl_tbl (l_ctr).new_cp_id
7489 );
7490 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
7491 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
7492 l_ctr1 := l_ctr1 + 2;
7493 END LOOP;
7494 END IF;
7495 EXCEPTION
7496 WHEN g_exception_halt_validation
7497 THEN
7498 x_return_status := l_return_status;
7499 NULL;
7500 WHEN OTHERS
7501 THEN
7502 x_return_status := okc_api.g_ret_sts_unexp_error;
7503 okc_api.set_message (g_app_name,
7504 g_unexpected_error,
7505 g_sqlcode_token,
7506 SQLCODE,
7507 g_sqlerrm_token,
7508 SQLERRM
7509 );
7510 END;
7511
7512 PROCEDURE update_contract_ibreplace (
7513 p_kdtl_tbl IN contract_tbl,
7514 x_return_status OUT NOCOPY VARCHAR2,
7515 x_msg_count OUT NOCOPY NUMBER,
7516 x_msg_data OUT NOCOPY VARCHAR2
7517 )
7518 IS
7519 --billed upto date
7520 CURSOR l_billend_csr (p_cle_id NUMBER)
7521 IS
7522 SELECT MAX (date_billed_to) date_billed_to
7523 FROM oks_bill_sub_lines
7524 WHERE cle_id = p_cle_id;
7525
7526 CURSOR l_cov_csr (p_cle_id NUMBER)
7527 IS
7528 SELECT ksl1.inheritance_type
7529 FROM oks_k_lines_b ksl, oks_k_lines_b ksl1
7530 WHERE ksl.cle_id = p_cle_id AND ksl1.cle_id = ksl.coverage_id;
7531
7532 --level element id
7533 CURSOR l_rule_csr (p_cle_id NUMBER)
7534 IS
7535 SELECT elmnts.ID
7536 FROM oks_stream_levels_b strm, oks_level_elements elmnts
7537 WHERE strm.cle_id = p_cle_id AND elmnts.rul_id = strm.ID;
7538
7539 --total billed amount
7540 CURSOR l_billed_amount_csr (p_cle_id NUMBER)
7541 IS
7542 SELECT NVL (SUM (amount), 0)
7543 FROM oks_bill_sub_lines_v
7544 WHERE cle_id = p_cle_id;
7545
7546 --credit amount
7547 CURSOR l_credit_csr (p_cle_id NUMBER)
7548 IS
7549 SELECT NVL (SUM (amount), 0)
7550 FROM oks_bill_sub_lines bsl
7551 WHERE bsl.cle_id = p_cle_id
7552 AND EXISTS (SELECT 1
7553 FROM oks_bill_cont_lines bcl
7554 WHERE bcl.ID = bsl.bcl_id AND bill_action = 'TR');
7555
7556 -- bug start 3736860
7557 CURSOR get_oks_line_dtls (p_id NUMBER)
7558 IS
7559 SELECT ID, object_version_number
7560 FROM oks_k_lines_b
7561 WHERE cle_id = p_id;
7562
7563 CURSOR l_bill_tax_csr (p_cle_id NUMBER)
7564 IS
7565 SELECT NVL (SUM (trx_line_tax_amount), 0)
7566 FROM oks_bill_txn_lines
7567 WHERE bsl_id IN (SELECT ID
7568 FROM oks_bill_sub_lines
7569 WHERE cle_id = p_cle_id);
7570
7571 --bug end 3736860
7572 CURSOR l_serv_csr (p_serv_id NUMBER)
7573 IS
7574 SELECT b.concatenated_segments description
7575 FROM mtl_system_items_b_kfv b
7576 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
7577
7578 CURSOR l_ordline_csr (p_line_id NUMBER)
7579 IS
7580 SELECT object1_id1
7581 FROM okc_k_rel_objs
7582 WHERE cle_id = p_line_id;
7583
7584 CURSOR check_renewal_link (p_line_id NUMBER)
7585 IS
7586 SELECT object_cle_id
7587 FROM okc_operation_instances op, okc_operation_lines ol
7588 WHERE ol.oie_id = op.ID
7589 AND op.cop_id IN (41, 40)
7590 AND ol.subject_cle_id = p_line_id;
7591
7592 CURSOR check_replace_link (p_line_id NUMBER)
7593 IS
7594 SELECT object_cle_id
7595 FROM okc_operation_instances op, okc_operation_lines ol
7596 WHERE ol.oie_id = op.ID
7597 AND op.cop_id = 11017
7598 AND ol.subject_cle_id = p_line_id;
7599
7600 CURSOR l_refnum_csr (p_cp_id NUMBER)
7601 IS
7602 SELECT instance_number
7603 FROM csi_item_instances
7604 WHERE instance_id = p_cp_id;
7605
7606 l_ref_num VARCHAR2 (30);
7607 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
7608 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
7609 l_instparent_id NUMBER;
7610 l_old_cp_id NUMBER;
7611 l_insthist_rec oks_ins_pvt.insv_rec_type;
7612 x_insthist_rec oks_ins_pvt.insv_rec_type;
7613 l_parameters VARCHAR2 (2000);
7614 l_renewal_id NUMBER;
7615 -- l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
7616 -- l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
7617 -- l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
7618 l_line_rec k_line_service_rec_type;
7619 l_covd_rec k_line_covered_level_rec_type;
7620 l_available_yn CHAR;
7621 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
7622 l_chrid NUMBER := NULL;
7623 l_lineid NUMBER := NULL;
7624 l_days NUMBER := 0;
7625 l_day1price NUMBER := 0;
7626 l_oldamt NUMBER (30, 2) := 0;
7627 l_newamt NUMBER (30, 2) := 0;
7628 l_ctr NUMBER := 0;
7629 l_ctr1 NUMBER := 0;
7630 l_newsdt DATE;
7631 l_newedt DATE;
7632 l_repldt DATE;
7633 l_repl_rule VARCHAR2 (2);
7634 l_duration NUMBER;
7635 l_timeunits VARCHAR2 (240);
7636 l_covlvl_id NUMBER;
7637 --Contract Line Table
7638 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
7639 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
7640 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
7641 l_cov_rec l_cov_csr%ROWTYPE;
7642 l_api_version CONSTANT NUMBER := 1.0;
7643 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
7644 l_list_price NUMBER;
7645 l_no_of_days NUMBER;
7646 l_billed_amount NUMBER;
7647 l_billed_upto_dt DATE;
7648 l_ptr NUMBER := 0;
7649 actual_amount NUMBER := 0;
7650 l_ste_code VARCHAR2 (30);
7651 l_sts_code VARCHAR2 (30);
7652 l_update_line VARCHAR2 (1);
7653 l_temp VARCHAR2 (2000);
7654 l_obj_version_num NUMBER;
7655 l_id NUMBER;
7656 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
7657 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
7658 actual_tax NUMBER := 0;
7659 l_day1tax NUMBER := 0;
7660 l_oldtax NUMBER (30, 2) := 0;
7661 l_newtax NUMBER (30, 2) := 0;
7662 l_taxed_amount NUMBER := 0;
7663 l_warranty_flag VARCHAR2 (2);
7664 l_opr_instance_id NUMBER;
7665 l_renewal_opr_instance_id NUMBER;
7666 l_target_chr_id NUMBER;
7667 l_replace_id NUMBER;
7668 l_source_line_id NUMBER;
7669 l_create_oper_instance VARCHAR2 (1);
7670 l_termdt DATE;
7671 l_order_line_id Number;
7672 BEGIN
7673 x_return_status := okc_api.g_ret_sts_success;
7674 l_old_cp_id := 0;
7675 l_target_chr_id := 0;
7676
7677 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7678 THEN
7679 fnd_log.STRING (fnd_log.level_event,
7680 g_module_current || '.CREATE_CONTRACT_IBREPLACE.',
7681 'count = ' || p_kdtl_tbl.COUNT || ')'
7682 );
7683 END IF;
7684
7685 IF p_kdtl_tbl.COUNT > 0
7686 THEN
7687 l_ctr := p_kdtl_tbl.FIRST;
7688
7689 LOOP
7690 okc_context.set_okc_org_context
7691 (p_kdtl_tbl (l_ctr).hdr_org_id,
7692 p_kdtl_tbl (l_ctr).organization_id
7693 );
7694 l_inst_dtls_tbl.DELETE;
7695 l_ctr1 := 1;
7696 get_sts_code (NULL,
7697 p_kdtl_tbl (l_ctr).prod_sts_code,
7698 l_ste_code,
7699 l_sts_code
7700 );
7701
7702 --IF l_ste_code <> 'ENTERED' THEN
7703 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7704 THEN
7705 fnd_log.STRING
7706 (fnd_log.level_statement,
7707 g_module_current || '.CREATE_CONTRACT_IBREPLACE',
7708 'Service Start Date = '
7709 || p_kdtl_tbl (l_ctr).service_sdt
7710 || '
7711 ,Service End Date = '
7712 || p_kdtl_tbl (l_ctr).service_edt
7713 || ', lse_id= '
7714 || p_kdtl_tbl (l_ctr).lse_id
7715 );
7716 END IF;
7717
7718 l_days :=
7719 ( TRUNC (p_kdtl_tbl (l_ctr).prod_edt)
7720 - TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7721 )
7722 + 1;
7723 l_repldt := trunc(p_kdtl_tbl (l_ctr).transaction_date);
7724
7725 IF TRUNC (l_repldt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7726 THEN
7727 l_repldt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7728 END IF;
7729
7730 l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7731
7732 IF p_kdtl_tbl (l_ctr).lse_id = 18
7733 THEN
7734 l_covd_rec.list_price := 0;
7735 l_covd_rec.negotiated_amount := 0;
7736 l_list_price := 0;
7737 l_oldamt := 0;
7738 l_repl_rule := NULL;
7739 l_newamt := 0;
7740 --bug start 3736860
7741 l_newtax := 0;
7742 l_oldtax := 0;
7743 l_covd_rec.tax_amount := 0;
7744
7745 --bug end 3736860
7746 OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
7747
7748 FETCH l_cov_csr
7749 INTO l_cov_rec;
7750
7751 l_repl_rule := l_cov_rec.inheritance_type;
7752
7753 CLOSE l_cov_csr;
7754
7755 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7756 THEN
7757 fnd_log.STRING (fnd_log.level_statement,
7758 g_module_current
7759 || '.CREATE_CONTRACT_IBREPLACE',
7760 'Replace Rule = ' || l_repl_rule
7761 );
7762 END IF;
7763
7764 /* If product is terminated it can't be extended beyond Its terminated date
7765 so Replace rule will be set only for the remaining period.
7766 */
7767 l_newsdt := l_repldt;
7768 l_termdt := l_repldt;
7769
7770 IF NVL (l_repl_rule, 'R') = 'R'
7771 THEN
7772 l_newedt := p_kdtl_tbl (l_ctr).prod_edt;
7773 ELSIF NVL (l_repl_rule, 'R') = 'F'
7774 THEN
7775 okc_time_util_pub.get_duration
7776 (p_start_date => p_kdtl_tbl (l_ctr).prod_sdt,
7777 p_end_date => p_kdtl_tbl (l_ctr).prod_edt,
7778 x_duration => l_duration,
7779 x_timeunit => l_timeunits,
7780 x_return_status => l_return_status
7781 );
7782
7783 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
7784 )
7785 THEN
7786 fnd_log.STRING
7787 (fnd_log.level_event,
7788 g_module_current
7789 || '.CREATE_CONTRACT_IBREPLACE.after.get_duration',
7790 'Return Status = ' || l_return_status
7791 );
7792 END IF;
7793
7794 IF NOT l_return_status = 'S'
7795 THEN
7796 RAISE g_exception_halt_validation;
7797 END IF;
7798
7799 l_newedt :=
7800 okc_time_util_pub.get_enddate (p_start_date => l_repldt,
7801 p_duration => l_duration,
7802 p_timeunit => l_timeunits
7803 );
7804 END IF;
7805 END IF;
7806
7807 IF p_kdtl_tbl (l_ctr).service_amount IS NOT NULL
7808 THEN
7809 IF p_kdtl_tbl (l_ctr).lse_id IN (25, 9)
7810 THEN
7811 actual_amount := p_kdtl_tbl (l_ctr).service_amount;
7812 actual_tax := p_kdtl_tbl (l_ctr).service_tax_amount;
7813 l_newedt := TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
7814 l_newamt := p_kdtl_tbl (l_ctr).service_amount;
7815 l_oldamt := 0;
7816 l_newtax := p_kdtl_tbl (l_ctr).service_tax_amount;
7817 l_oldtax := 0;
7818 l_newsdt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7819 -- Fixed for bug 4539750
7820 l_termdt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7821 END IF;
7822 END IF;
7823
7824 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7825 THEN
7826 fnd_log.STRING (fnd_log.level_statement,
7827 g_module_current
7828 || '.CREATE_CONTRACT_IBREPLACE',
7829 'New amount = '
7830 || l_newamt
7831 || ',Old amount = '
7832 || l_oldamt
7833 );
7834 END IF;
7835
7836 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7837 THEN
7838 fnd_log.STRING (fnd_log.level_statement,
7839 g_module_current
7840 || '.CREATE_CONTRACT_IBREPLACE',
7841 'New tax = '
7842 || l_newtax
7843 || ',Old tax = '
7844 || l_oldtax
7845 );
7846 END IF;
7847
7848 l_covd_rec.tax_amount :=
7849 oks_extwar_util_pvt.round_currency_amt
7850 (l_newtax,
7851 p_kdtl_tbl (l_ctr).service_currency
7852 );
7853 l_covd_rec.negotiated_amount :=
7854 oks_extwar_util_pvt.round_currency_amt
7855 (l_newamt,
7856 p_kdtl_tbl (l_ctr).service_currency
7857 );
7858 l_covd_rec.list_price :=
7859 oks_extwar_util_pvt.round_currency_amt
7860 ( l_newamt
7861 / p_kdtl_tbl (l_ctr).old_cp_quantity,
7862 p_kdtl_tbl (l_ctr).service_currency
7863 );
7864
7865 IF l_ste_code <> 'ENTERED'
7866 THEN
7867 l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).object_line_id;
7868 l_clev_tbl_in (1).date_terminated := l_termdt;
7869 l_clev_tbl_in (1).price_negotiated :=
7870 oks_extwar_util_pvt.round_currency_amt
7871 (l_oldamt,
7872 p_kdtl_tbl (l_ctr).service_currency
7873 );
7874 l_clev_tbl_in (1).price_unit :=
7875 oks_extwar_util_pvt.round_currency_amt
7876 ( p_kdtl_tbl (l_ctr).service_amount
7877 / p_kdtl_tbl (l_ctr).old_cp_quantity,
7878 p_kdtl_tbl (l_ctr).service_currency
7879 );
7880 l_clev_tbl_in (1).trn_code := 'REP';
7881 l_clev_tbl_in (1).term_cancel_source := 'IBREPLACE';
7882
7883 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
7884 l_clev_tbl_in (1).sts_code := l_sts_code;
7885
7886 okc_contract_pub.update_contract_line
7887 (p_api_version => l_api_version,
7888 p_init_msg_list => l_init_msg_list,
7889 p_restricted_update => okc_api.g_true,
7890 x_return_status => l_return_status,
7891 x_msg_count => x_msg_count,
7892 x_msg_data => x_msg_data,
7893 p_clev_tbl => l_clev_tbl_in,
7894 x_clev_tbl => l_clev_tbl_out
7895 );
7896
7897 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7898 THEN
7899 fnd_log.STRING
7900 (fnd_log.level_event,
7901 g_module_current
7902 || '.CREATE_CONTRACT_IBREPLACE.update_cov_lvl',
7903 'okc_contract_pub.update_contract_line(Return status = '
7904 || l_return_status
7905 || 'count = '
7906 || p_kdtl_tbl.COUNT
7907 || ')'
7908 );
7909 END IF;
7910
7911 IF NOT l_return_status = okc_api.g_ret_sts_success
7912 THEN
7913 RAISE g_exception_halt_validation;
7914 END IF;
7915
7916 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
7917
7918 FETCH get_oks_line_dtls
7919 INTO l_id, l_obj_version_num;
7920
7921 CLOSE get_oks_line_dtls;
7922
7923 l_klnv_tbl_in (1).ID := l_id;
7924 l_klnv_tbl_in (1).tax_amount :=
7925 oks_extwar_util_pvt.round_currency_amt
7926 (l_oldtax,
7927 p_kdtl_tbl (l_ctr).service_currency
7928 );
7929 l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
7930 oks_contract_line_pub.update_line
7931 (p_api_version => l_api_version,
7932 p_init_msg_list => l_init_msg_list,
7933 x_return_status => l_return_status,
7934 x_msg_count => x_msg_count,
7935 x_msg_data => x_msg_data,
7936 p_klnv_tbl => l_klnv_tbl_in,
7937 x_klnv_tbl => l_klnv_tbl_out,
7938 p_validate_yn => 'N'
7939 );
7940
7941 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7942 THEN
7943 fnd_log.STRING
7944 (fnd_log.level_event,
7945 g_module_current
7946 || '.CREATE_CONTRACT_IBREPLACE.after_update.cov_lvl_tax',
7947 'oks_contract_line_pub.update_line(Return status = '
7948 || l_return_status
7949 || ')'
7950 );
7951 END IF;
7952
7953 IF NOT l_return_status = 'S'
7954 THEN
7955 okc_api.set_message (g_app_name,
7956 g_required_value,
7957 g_col_name_token,
7958 'OKS Contract COV LINE'
7959 );
7960 RAISE g_exception_halt_validation;
7961 END IF;
7962
7963 l_inst_dtls_tbl (l_ctr1).subline_date_terminated :=
7964 TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7965 ELSE
7966 -- Cancel the line
7967
7968 -- added for the bug # 6000133
7969 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
7970
7971 oks_change_status_pvt.update_line_status
7972 (x_return_status => l_return_status,
7973 x_msg_data => x_msg_data,
7974 x_msg_count => x_msg_count,
7975 p_init_msg_list => 'F',
7976 p_id => p_kdtl_tbl (l_ctr).hdr_id,
7977 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
7978 p_new_sts_code => l_sts_code,
7979 p_canc_reason_code => 'REPLACE',
7980 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
7981 p_old_ste_code => 'ENTERED',
7982 p_new_ste_code => 'CANCELLED',
7983 p_term_cancel_source => 'IBREPLACE',
7984 p_date_cancelled => TRUNC (l_termdt),
7985 p_comments => NULL,
7986 p_validate_status => 'N'
7987 );
7988
7989 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7990 THEN
7991 fnd_log.STRING
7992 (fnd_log.level_event,
7993 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
7994 'okc_contract_pub.update_contract_line(Return status ='
7995 || l_return_status
7996 || ')'
7997 );
7998 END IF;
7999
8000 IF NOT l_return_status = okc_api.g_ret_sts_success
8001 THEN
8002 RAISE g_exception_halt_validation;
8003 END IF;
8004
8005 l_inst_dtls_tbl (l_ctr1).date_cancelled := TRUNC (l_termdt);
8006 END IF;
8007
8008 get_sts_code (NULL,
8009 p_kdtl_tbl (l_ctr).hdr_sts,
8010 l_ste_code,
8011 l_sts_code
8012 );
8013 l_inst_dtls_tbl (l_ctr1).transaction_date :=
8014 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8015 l_inst_dtls_tbl (l_ctr1).transaction_type := 'RPL';
8016 l_inst_dtls_tbl (l_ctr1).instance_amt_old :=
8017 p_kdtl_tbl (l_ctr).service_amount;
8018 l_inst_dtls_tbl (l_ctr1).instance_qty_old :=
8019 p_kdtl_tbl (l_ctr).new_quantity;
8020 l_inst_dtls_tbl (l_ctr1).old_contract_id :=
8021 p_kdtl_tbl (l_ctr).hdr_id;
8022 l_inst_dtls_tbl (l_ctr1).old_contact_start_date :=
8023 p_kdtl_tbl (l_ctr).hdr_sdt;
8024 l_inst_dtls_tbl (l_ctr1).old_contract_end_date :=
8025 p_kdtl_tbl (l_ctr).hdr_edt;
8026 l_inst_dtls_tbl (l_ctr1).old_service_line_id :=
8027 p_kdtl_tbl (l_ctr).service_line_id;
8028 l_inst_dtls_tbl (l_ctr1).old_service_start_date :=
8029 p_kdtl_tbl (l_ctr).service_sdt;
8030 l_inst_dtls_tbl (l_ctr1).old_service_end_date :=
8031 p_kdtl_tbl (l_ctr).service_edt;
8032 l_inst_dtls_tbl (l_ctr1).old_subline_id :=
8033 p_kdtl_tbl (l_ctr).object_line_id;
8034 l_inst_dtls_tbl (l_ctr1).old_subline_start_date :=
8035 p_kdtl_tbl (l_ctr).prod_sdt;
8036 l_inst_dtls_tbl (l_ctr1).old_subline_end_date :=
8037 p_kdtl_tbl (l_ctr).prod_edt;
8038 l_inst_dtls_tbl (l_ctr1).old_customer :=
8039 p_kdtl_tbl (l_ctr).cust_account;
8040 l_inst_dtls_tbl (l_ctr1).old_k_status := l_sts_code;
8041 --l_inst_dtls_tbl(l_ctr1).SUBLINE_DATE_TERMINATED := TRUNC(p_kdtl_tbl( l_ctr ).prod_sdt);
8042 l_inst_dtls_tbl (l_ctr1).instance_id_new :=
8043 p_kdtl_tbl (l_ctr).new_cp_id;
8044 l_inst_dtls_tbl (l_ctr1).instance_amt_new :=
8045 oks_extwar_util_pvt.round_currency_amt
8046 (l_oldamt,
8047 p_kdtl_tbl (l_ctr).service_currency
8048 );
8049 l_inst_dtls_tbl (l_ctr1).instance_qty_new :=
8050 p_kdtl_tbl (l_ctr).new_quantity;
8051 l_inst_dtls_tbl (l_ctr1).new_contract_id :=
8052 p_kdtl_tbl (l_ctr).hdr_id;
8053 l_inst_dtls_tbl (l_ctr1).new_contact_start_date :=
8054 p_kdtl_tbl (l_ctr).hdr_sdt;
8055 l_inst_dtls_tbl (l_ctr1).new_contract_end_date :=
8056 p_kdtl_tbl (l_ctr).hdr_edt;
8057 l_inst_dtls_tbl (l_ctr1).new_service_line_id :=
8058 p_kdtl_tbl (l_ctr).service_line_id;
8059 l_inst_dtls_tbl (l_ctr1).new_service_start_date :=
8060 p_kdtl_tbl (l_ctr).service_sdt;
8061 l_inst_dtls_tbl (l_ctr1).new_service_end_date :=
8062 p_kdtl_tbl (l_ctr).service_edt;
8063 l_inst_dtls_tbl (l_ctr1).new_subline_id :=
8064 p_kdtl_tbl (l_ctr).object_line_id;
8065 l_inst_dtls_tbl (l_ctr1).new_subline_start_date :=
8066 p_kdtl_tbl (l_ctr).prod_sdt;
8067 l_inst_dtls_tbl (l_ctr1).new_subline_end_date :=
8068 p_kdtl_tbl (l_ctr).prod_edt;
8069 l_inst_dtls_tbl (l_ctr1).new_customer :=
8070 p_kdtl_tbl (l_ctr).cust_account;
8071 l_inst_dtls_tbl (l_ctr1).new_k_status := l_sts_code;
8072
8073 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8074 THEN
8075 fnd_log.STRING (fnd_log.level_statement,
8076 g_module_current
8077 || '.CREATE_CONTRACT_IBREPLACE',
8078 'New End date = '
8079 || l_newedt
8080 || ',New start Date = '
8081 || TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
8082 || ',Old Amount= '
8083 || l_oldamt
8084 || 'New Amount = '
8085 || l_newamt
8086 );
8087 END IF;
8088
8089 l_lineid := p_kdtl_tbl (l_ctr).service_line_id;
8090 l_inst_dtls_tbl (l_ctr1 + 1).new_service_line_id := l_lineid;
8091 l_inst_dtls_tbl (l_ctr1 + 1).new_service_start_date :=
8092 p_kdtl_tbl (l_ctr).service_sdt;
8093 l_inst_dtls_tbl (l_ctr1 + 1).new_service_end_date :=
8094 p_kdtl_tbl (l_ctr).service_edt;
8095
8096 -- Fixed Bug 2500056 06-Aug-2002
8097 IF p_kdtl_tbl (l_ctr).lse_id = 18
8098 THEN
8099 l_covd_rec.rty_code := 'CONTRACTWARRANTYORDER';
8100 ELSE
8101 l_covd_rec.rty_code := 'CONTRACTSERVICESORDER';
8102 END IF;
8103 l_order_line_id := null;
8104 OPEN l_ordline_csr (p_kdtl_tbl (l_ctr).object_line_id);
8105
8106 FETCH l_ordline_csr
8107 INTO l_order_line_id;
8108
8109 CLOSE l_ordline_csr;
8110
8111 l_covd_rec.order_line_id := l_order_line_id;
8112 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
8113
8114 FETCH l_serv_csr
8115 INTO l_covd_rec.attach_2_line_desc;
8116
8117 CLOSE l_serv_csr;
8118
8119 IF p_kdtl_tbl (l_ctr).lse_id = 25
8120 THEN
8121 l_warranty_flag := 'E';
8122 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
8123 AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
8124 THEN
8125 l_warranty_flag := 'S';
8126 ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
8127 THEN
8128 l_warranty_flag := 'W';
8129 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
8130 AND p_kdtl_tbl (l_ctr).scs_code = 'SUBSCRIPTION'
8131 THEN
8132 l_warranty_flag := 'SU';
8133 END IF;
8134
8135 l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
8136 l_covd_rec.attach_2_line_id := l_lineid;
8137 l_covd_rec.line_number := 1;
8138 l_covd_rec.customer_product_id := p_kdtl_tbl (l_ctr).new_cp_id;
8139 l_covd_rec.product_start_date := l_newsdt;
8140 l_covd_rec.product_end_date := TRUNC (l_newedt);
8141 l_covd_rec.quantity := p_kdtl_tbl (l_ctr).new_quantity;
8142 l_covd_rec.warranty_flag := l_warranty_flag;
8143 l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
8144 l_covd_rec.currency_code := p_kdtl_tbl (l_ctr).service_currency;
8145 l_covd_rec.product_sts_code := p_kdtl_tbl (l_ctr).prod_sts_code;
8146 l_covd_rec.upg_orig_system_ref :=
8147 p_kdtl_tbl (l_ctr).upg_orig_system_ref;
8148 l_covd_rec.upg_orig_system_ref_id :=
8149 p_kdtl_tbl (l_ctr).upg_orig_system_ref_id;
8150 l_covd_rec.line_renewal_type :=
8151 p_kdtl_tbl (l_ctr).prod_line_renewal_type;
8152 l_covd_rec.prod_item_id := p_kdtl_tbl (l_ctr).new_inventory_item;
8153 l_covd_rec.price_uom := p_kdtl_tbl (l_ctr).price_uom_code;
8154 l_covd_rec.toplvl_uom_code := p_kdtl_tbl (l_ctr).toplvl_uom_code;
8155 --mchoudha added for bug#5233956
8156 l_covd_rec.toplvl_price_qty := p_kdtl_tbl (l_ctr).toplvl_price_qty;
8157 oks_extwarprgm_pvt.create_k_covered_levels
8158 (p_k_covd_rec => l_covd_rec,
8159 p_price_attribs => l_price_attribs_in,
8160 p_caller => 'IB',
8161 x_order_error => l_temp,
8162 x_covlvl_id => l_covlvl_id,
8163 x_update_line => l_update_line,
8164 x_return_status => l_return_status,
8165 x_msg_count => x_msg_count,
8166 x_msg_data => x_msg_data
8167 );
8168
8169 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8170 THEN
8171 fnd_log.STRING
8172 (fnd_log.level_event,
8173 g_module_current
8174 || '.CREATE_CONTRACT_IBREPLACE.create_cov_lvl',
8175 'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
8176 || l_return_status
8177 );
8178 END IF;
8179
8180 IF NOT l_return_status = 'S'
8181 THEN
8182 RAISE g_exception_halt_validation;
8183 END IF;
8184
8185 IF l_ste_code = 'ENTERED'
8186 THEN
8187 -- UPdate topline price negotiated.
8188 UPDATE okc_k_lines_b
8189 SET price_negotiated = price_negotiated + l_newamt
8190 WHERE ID = l_lineid;
8191
8192 -- Update header estimated amount
8193 UPDATE okc_k_headers_b
8194 SET estimated_amount = estimated_amount + l_newamt
8195 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
8196
8197 -- Update topline tax amount
8198 UPDATE oks_k_lines_b
8199 SET tax_amount = tax_amount + l_newtax
8200 WHERE cle_id = l_lineid;
8201
8202 -- Update header tax amount
8203 UPDATE oks_k_headers_b
8204 SET tax_amount = tax_amount + l_newtax
8205 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
8206 END IF;
8207
8208 l_inst_dtls_tbl (l_ctr1 + 1).transaction_date :=
8209 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8210 l_inst_dtls_tbl (l_ctr1 + 1).transaction_type := 'RPL';
8211 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_old :=
8212 p_kdtl_tbl (l_ctr).service_amount;
8213 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_old :=
8214 p_kdtl_tbl (l_ctr).new_quantity;
8215 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_id :=
8216 p_kdtl_tbl (l_ctr).hdr_id;
8217 l_inst_dtls_tbl (l_ctr1 + 1).old_contact_start_date :=
8218 p_kdtl_tbl (l_ctr).hdr_sdt;
8219 l_inst_dtls_tbl (l_ctr1 + 1).old_contract_end_date :=
8220 p_kdtl_tbl (l_ctr).hdr_edt;
8221 l_inst_dtls_tbl (l_ctr1 + 1).old_service_line_id :=
8222 p_kdtl_tbl (l_ctr).service_line_id;
8223 l_inst_dtls_tbl (l_ctr1 + 1).old_service_start_date :=
8224 p_kdtl_tbl (l_ctr).service_sdt;
8225 l_inst_dtls_tbl (l_ctr1 + 1).old_service_end_date :=
8226 p_kdtl_tbl (l_ctr).service_edt;
8227 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_id :=
8228 p_kdtl_tbl (l_ctr).object_line_id;
8229 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_start_date :=
8230 p_kdtl_tbl (l_ctr).prod_sdt;
8231 l_inst_dtls_tbl (l_ctr1 + 1).old_subline_end_date :=
8232 p_kdtl_tbl (l_ctr).prod_edt;
8233 l_inst_dtls_tbl (l_ctr1 + 1).old_customer :=
8234 p_kdtl_tbl (l_ctr).cust_account;
8235 l_inst_dtls_tbl (l_ctr1 + 1).old_k_status := l_sts_code;
8236 l_inst_dtls_tbl (l_ctr1 + 1).subline_date_terminated := NULL;
8237 l_inst_dtls_tbl (l_ctr1 + 1).instance_id_new :=
8238 p_kdtl_tbl (l_ctr).new_cp_id;
8239 l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_new :=
8240 oks_extwar_util_pvt.round_currency_amt
8241 (l_newamt,
8242 p_kdtl_tbl (l_ctr).service_currency
8243 );
8244 l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_new :=
8245 p_kdtl_tbl (l_ctr).new_quantity;
8246 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_id :=
8247 p_kdtl_tbl (l_ctr).hdr_id;
8248 l_inst_dtls_tbl (l_ctr1 + 1).new_contact_start_date :=
8249 p_kdtl_tbl (l_ctr).hdr_sdt;
8250 l_inst_dtls_tbl (l_ctr1 + 1).new_contract_end_date :=
8251 p_kdtl_tbl (l_ctr).hdr_edt;
8252 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_id := l_covlvl_id;
8253 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_start_date :=
8254 TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8255 l_inst_dtls_tbl (l_ctr1 + 1).new_subline_end_date :=
8256 TRUNC (l_newedt);
8257 l_inst_dtls_tbl (l_ctr1 + 1).new_customer :=
8258 p_kdtl_tbl (l_ctr).cust_account;
8259 l_inst_dtls_tbl (l_ctr1 + 1).new_k_status := l_sts_code;
8260
8261 -------Billing Schedule
8262 IF p_kdtl_tbl (l_ctr).lse_id IN (9, 25)
8263 THEN -- added subscription contract category
8264 oks_bill_sch.adjust_replace_product_bs
8265 (p_old_cp_id => p_kdtl_tbl (l_ctr).object_line_id,
8266 p_new_cp_id => l_covlvl_id,
8267 x_return_status => l_return_status,
8268 x_msg_count => x_msg_count,
8269 x_msg_data => x_msg_data
8270 );
8271
8272 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8273 THEN
8274 fnd_log.STRING
8275 (fnd_log.level_event,
8276 g_module_current
8277 || '.CREATE_CONTRACT_IBREPLACE.OKS_BILL_SCH.ADJUST_REPLACE_PRODUCT_BS',
8278 'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8279 || l_return_status
8280 );
8281 END IF;
8282
8283 IF NOT l_return_status = 'S'
8284 THEN
8285 RAISE g_exception_halt_validation;
8286 END IF;
8287 END IF;
8288
8289 l_create_oper_instance := 'N';
8290
8291 IF l_opr_instance_id IS NULL
8292 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
8293 THEN
8294 l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
8295 l_create_oper_instance := 'Y';
8296 END IF;
8297
8298 create_transaction_source
8299 (p_create_opr_inst => l_create_oper_instance,
8300 p_source_code => 'REPLACE',
8301 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
8302 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
8303 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
8304 p_target_line_id => l_covlvl_id,
8305 x_oper_instance_id => l_opr_instance_id,
8306 x_return_status => l_return_status,
8307 x_msg_count => x_msg_count,
8308 x_msg_data => x_msg_data
8309 );
8310
8311 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8312 THEN
8313 fnd_log.STRING
8314 (fnd_log.level_event,
8315 g_module_current
8316 || '.CREATE_CONTRACT_IBREPLACE.Create_transaction_source',
8317 'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8318 || l_return_status
8319 );
8320 END IF;
8321
8322 IF NOT l_return_status = 'S'
8323 THEN
8324 RAISE g_exception_halt_validation;
8325 END IF;
8326
8327 create_source_links
8328 (p_create_opr_inst => l_create_oper_instance,
8329 p_source_code => 'REPLACE',
8330 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
8331 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
8332 p_target_line_id => l_covlvl_id,
8333 p_txn_date => p_kdtl_tbl (l_ctr).transaction_date,
8334 x_oper_instance_id => l_renewal_opr_instance_id,
8335 x_return_status => l_return_status,
8336 x_msg_count => x_msg_count,
8337 x_msg_data => x_msg_data
8338 );
8339
8340 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8341 THEN
8342 fnd_log.STRING
8343 (fnd_log.level_event,
8344 g_module_current
8345 || '.CREATE_CONTRACT_IBREPLACE.Create_source_links',
8346 'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8347 || l_return_status
8348 );
8349 END IF;
8350
8351 IF NOT l_return_status = 'S'
8352 THEN
8353 RAISE g_exception_halt_validation;
8354 END IF;
8355
8356 IF l_inst_dtls_tbl.COUNT <> 0
8357 THEN
8358 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
8359 THEN
8360 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
8361
8362 FETCH l_refnum_csr
8363 INTO l_ref_num;
8364
8365 CLOSE l_refnum_csr;
8366
8367 l_parameters :=
8368 ' Old CP :'
8369 || p_kdtl_tbl (l_ctr).old_cp_id
8370 || ','
8371 || 'Item Id:'
8372 || p_kdtl_tbl (l_ctr).prod_inventory_item
8373 || ','
8374 || 'Old Quantity:'
8375 || p_kdtl_tbl (l_ctr).current_cp_quantity
8376 || ','
8377 || 'Transaction type :'
8378 || 'RPL'
8379 || ','
8380 || ' Transaction date :'
8381 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
8382 || ','
8383 || 'New CP:'
8384 || p_kdtl_tbl (l_ctr).new_cp_id;
8385 --oks_instance_history
8386 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
8387 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
8388 l_insthist_rec.transaction_type := 'RPL';
8389 l_insthist_rec.transaction_date :=
8390 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8391 l_insthist_rec.reference_number := l_ref_num;
8392 l_insthist_rec.PARAMETERS := l_parameters;
8393 oks_ins_pvt.insert_row (p_api_version => 1.0,
8394 p_init_msg_list => 'T',
8395 x_return_status => l_return_status,
8396 x_msg_count => x_msg_count,
8397 x_msg_data => x_msg_data,
8398 p_insv_rec => l_insthist_rec,
8399 x_insv_rec => x_insthist_rec
8400 );
8401
8402 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
8403 )
8404 THEN
8405 fnd_log.STRING
8406 (fnd_log.level_event,
8407 g_module_current || '.CREATE_IBREPLACE',
8408 'oks_ins_pvt.insert_row(Return status = '
8409 || l_return_status
8410 || ')'
8411 );
8412 END IF;
8413
8414 x_return_status := l_return_status;
8415
8416 IF NOT l_return_status = okc_api.g_ret_sts_success
8417 THEN
8418 x_return_status := l_return_status;
8419 RAISE g_exception_halt_validation;
8420 END IF;
8421
8422 l_instparent_id := x_insthist_rec.ID;
8423 END IF;
8424
8425 FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
8426 LOOP
8427 l_inst_dtls_tbl (i).ins_id := l_instparent_id;
8428 END LOOP;
8429
8430 --oks_inst_history_details
8431 oks_ihd_pvt.insert_row (p_api_version => 1.0,
8432 p_init_msg_list => 'T',
8433 x_return_status => l_return_status,
8434 x_msg_count => x_msg_count,
8435 x_msg_data => x_msg_data,
8436 p_ihdv_tbl => l_inst_dtls_tbl,
8437 x_ihdv_tbl => x_inst_dtls_tbl
8438 );
8439
8440 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8441 THEN
8442 fnd_log.STRING
8443 (fnd_log.level_event,
8444 g_module_current || '.CREATE_K_IBREPLACE',
8445 'oks_ihd_pvt.insert_row(Return status = '
8446 || l_return_status
8447 || ')'
8448 );
8449 END IF;
8450
8451 x_return_status := l_return_status;
8452
8453 IF NOT l_return_status = okc_api.g_ret_sts_success
8454 THEN
8455 x_return_status := l_return_status;
8456 RAISE g_exception_halt_validation;
8457 END IF;
8458 END IF;
8459
8460 launch_workflow ( 'INSTALL BASE ACTIVITY : REPLACE '
8461 || fnd_global.local_chr (10)
8462 || 'Contract Number : '
8463 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
8464 || fnd_global.local_chr (10)
8465 || 'Old Cust Product : '
8466 || p_kdtl_tbl (l_ctr).old_cp_id
8467 || fnd_global.local_chr (10)
8468 || 'Replaced Cust Product : '
8469 || p_kdtl_tbl (l_ctr).new_cp_id
8470 );
8471 --END IF;
8472 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
8473 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
8474 l_ctr1 := l_ctr1 + 2;
8475 END LOOP;
8476 END IF;
8477 EXCEPTION
8478 WHEN g_exception_halt_validation
8479 THEN
8480 x_return_status := l_return_status;
8481 NULL;
8482 WHEN OTHERS
8483 THEN
8484 x_return_status := okc_api.g_ret_sts_unexp_error;
8485 okc_api.set_message (g_app_name,
8486 g_unexpected_error,
8487 g_sqlcode_token,
8488 SQLCODE,
8489 g_sqlerrm_token,
8490 SQLERRM
8491 );
8492 END;
8493
8494 PROCEDURE create_contract_ibreturn (
8495 p_kdtl_tbl IN contract_tbl,
8496 x_return_status OUT NOCOPY VARCHAR2,
8497 x_msg_count OUT NOCOPY NUMBER,
8498 x_msg_data OUT NOCOPY VARCHAR2
8499 )
8500 IS
8501 CURSOR l_serv_csr (p_serv_id NUMBER)
8502 IS
8503 SELECT t.description NAME
8504 FROM mtl_system_items_tl t
8505 WHERE t.inventory_item_id = p_serv_id
8506 AND t.LANGUAGE = USERENV ('LANG')
8507 AND ROWNUM < 2;
8508
8509 CURSOR l_refnum_csr (p_cp_id NUMBER)
8510 IS
8511 SELECT instance_number
8512 FROM csi_item_instances
8513 WHERE instance_id = p_cp_id;
8514
8515 Cursor l_hdr_sts_csr(p_hdr_id Number)
8516 Is
8517 Select sts_code
8518 From Okc_k_headers_all_b
8519 WHere id = p_hdr_id;
8520
8521 l_hdr_status Varchar2(240);
8522
8523 l_ref_num VARCHAR2 (30);
8524 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
8525 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
8526 l_instparent_id NUMBER;
8527 l_old_cp_id NUMBER;
8528 l_insthist_rec oks_ins_pvt.insv_rec_type;
8529 x_insthist_rec oks_ins_pvt.insv_rec_type;
8530 l_parameters VARCHAR2 (2000);
8531 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
8532 --SalesCredit
8533 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
8534 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
8535 l_line_rec k_line_service_rec_type;
8536 l_covd_rec k_line_covered_level_rec_type;
8537 l_available_yn CHAR;
8538 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
8539 l_chrid NUMBER := NULL;
8540 l_lineid NUMBER := NULL;
8541 l_days NUMBER := 0;
8542 l_day1price NUMBER := 0;
8543 l_oldamt NUMBER := 0;
8544 l_ctr NUMBER := 0;
8545 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
8546 --Contract Line Table
8547 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
8548 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
8549 l_api_version CONSTANT NUMBER := 1.0;
8550 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
8551 l_retdt DATE;
8552 l_ste_code VARCHAR2 (30);
8553 l_sts_code VARCHAR2 (30);
8554 l_suppress_credit VARCHAR2 (2) := 'N';
8555 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
8556 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
8557 l_full_credit VARCHAR2 (2) := 'N';
8558 l_rnrl_rec_out oks_renew_util_pvt.rnrl_rec_type;
8559 l_service_name VARCHAR2 (2000);
8560 date_terminated DATE;
8561 date_cancelled DATE;
8562 l_alllines_terminated VARCHAR2 (1);
8563 l_alllines_cancelled VARCHAR2 (1);
8564 l_term_date_flag VARCHAR2 (1);
8565 l_credit_amount VARCHAR2 (30);
8566 BEGIN
8567 x_return_status := okc_api.g_ret_sts_success;
8568 l_old_cp_id := 0;
8569
8570 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8571 THEN
8572 fnd_log.STRING (fnd_log.level_event,
8573 g_module_current || '.Create_Contract_IBRETURN.',
8574 'count = ' || p_kdtl_tbl.COUNT || ')'
8575 );
8576 END IF;
8577
8578 IF p_kdtl_tbl.COUNT > 0
8579 THEN
8580 l_ctr := p_kdtl_tbl.FIRST;
8581
8582 LOOP
8583
8584 get_sts_code (NULL,
8585 p_kdtl_tbl (l_ctr).hdr_sts,
8586 l_ste_code,
8587 l_sts_code
8588 );
8589
8590 IF l_ste_code = 'HOLD'
8591 THEN
8592 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
8593 THEN
8594 fnd_log.STRING (fnd_log.level_error,
8595 g_module_current
8596 || '.CREATE_CONTRACT_IBRETURN.ERROR',
8597 ' Contract '
8598 || p_kdtl_tbl (l_ctr).contract_number
8599 || ' in QA_HOLD status'
8600 );
8601 END IF;
8602
8603 l_return_status := okc_api.g_ret_sts_error;
8604 okc_api.set_message (g_app_name,
8605 g_invalid_value,
8606 g_col_name_token,
8607 'Return not allowed. Contract '
8608 || p_kdtl_tbl (l_ctr).contract_number
8609 || 'is in QA_HOLD status'
8610 );
8611 RAISE g_exception_halt_validation;
8612 END IF;
8613
8614 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
8615 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
8616 END LOOP;
8617 END IF;
8618
8619 IF p_kdtl_tbl.COUNT > 0
8620 THEN
8621 l_ctr := p_kdtl_tbl.FIRST;
8622
8623 LOOP
8624 --Fix for Bug 5406201
8625 l_clev_tbl_in.delete;
8626 l_chrv_tbl_in.delete;
8627
8628 l_inst_dtls_tbl.DELETE;
8629
8630 okc_context.set_okc_org_context
8631 (p_kdtl_tbl (l_ctr).hdr_org_id,
8632 p_kdtl_tbl (l_ctr).organization_id
8633 );
8634 get_sts_code (NULL,
8635 p_kdtl_tbl (l_ctr).prod_sts_code,
8636 l_ste_code,
8637 l_sts_code
8638 );
8639
8640 IF l_ste_code <> 'ENTERED'
8641 THEN
8642 l_retdt := p_kdtl_tbl (l_ctr).termination_date;
8643
8644 IF (TRUNC (l_retdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
8645 THEN
8646 l_retdt := p_kdtl_tbl (l_ctr).prod_sdt;
8647 END IF;
8648
8649 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8650 THEN
8651 fnd_log.STRING (fnd_log.level_statement,
8652 g_module_current
8653 || '.CREATE_CONTRACT_IBRETURN',
8654 'Credit option = '
8655 || p_kdtl_tbl (l_ctr).raise_credit
8656 );
8657 END IF;
8658
8659 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_retdt)
8660 THEN
8661 l_retdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
8662 l_suppress_credit := 'Y';
8663 l_term_date_flag := 'Y';
8664 ELSE
8665 IF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'FULL'
8666 THEN
8667 l_full_credit := 'Y';
8668 --l_retdt := p_kdtl_tbl( l_ctr ).prod_sdt;
8669 l_suppress_credit := 'N';
8670 ELSIF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'NONE'
8671 THEN
8672 l_suppress_credit := 'Y';
8673 l_full_credit := 'N';
8674 ELSIF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'CALCULATED'
8675 THEN
8676 l_suppress_credit := 'N';
8677 l_full_credit := 'N';
8678 ELSIF p_kdtl_tbl (l_ctr).raise_credit IS NULL
8679 THEN
8680 -- Get the credit option from gcd
8681 l_credit_amount :=
8682 oks_ib_util_pvt.get_credit_option
8683 (p_party_id => p_kdtl_tbl
8684 (l_ctr).party_id,
8685 p_org_id => p_kdtl_tbl
8686 (l_ctr).hdr_org_id,
8687 p_transaction_date => TRUNC (l_retdt)
8688 );
8689
8690 IF fnd_log.level_statement >=
8691 fnd_log.g_current_runtime_level
8692 THEN
8693 fnd_log.STRING (fnd_log.level_statement,
8694 g_module_current
8695 || '.CREATE_CONTRACT_IBRETURN',
8696 'Credit option from GCD = '
8697 || l_credit_amount
8698 );
8699 END IF;
8700
8701 IF UPPER (l_credit_amount) = 'FULL'
8702 THEN
8703 l_full_credit := 'Y';
8704 --l_retdt := p_kdtl_tbl( l_ctr ).prod_sdt;
8705 l_suppress_credit := 'N';
8706 ELSIF UPPER (l_credit_amount) = 'NONE'
8707 THEN
8708 l_suppress_credit := 'Y';
8709 l_full_credit := 'N';
8710 ELSIF l_credit_amount = 'CALCULATED'
8711 THEN
8712 l_suppress_credit := 'N';
8713 l_full_credit := 'N';
8714 END IF;
8715 END IF;
8716 END IF;
8717
8718 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8719 THEN
8720 fnd_log.STRING (fnd_log.level_statement,
8721 g_module_current
8722 || '.CREATE_CONTRACT_IBRETURN',
8723 'Suppress credit = '
8724 || l_suppress_credit
8725 || 'Full credit = '
8726 || l_full_credit
8727 );
8728 END IF;
8729
8730 oks_bill_rec_pub.pre_terminate_cp
8731 (p_calledfrom => -1,
8732 p_cle_id => p_kdtl_tbl
8733 (l_ctr).object_line_id,
8734 p_termination_date => TRUNC (l_retdt),
8735 p_terminate_reason => 'RMA',
8736 p_override_amount => NULL,
8737 p_con_terminate_amount => NULL,
8738 p_termination_amount => NULL,
8739 p_suppress_credit => l_suppress_credit,
8740 --p_existing_credit => 0,
8741 p_full_credit => l_full_credit,
8742 p_term_date_flag => l_term_date_flag,
8743 p_term_cancel_source => 'IBRETURN',
8744 x_return_status => l_return_status
8745 );
8746
8747 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8748 THEN
8749 fnd_log.STRING
8750 (fnd_log.level_event,
8751 g_module_current
8752 || '.CREATE_CONTRACT_IBRETURN.terminate_cp',
8753 'oks_bill_rec_pub.pre_terminate_cp(Return status = '
8754 || l_return_status
8755 || ')'
8756 );
8757 END IF;
8758
8759 IF NOT l_return_status = okc_api.g_ret_sts_success
8760 THEN
8761 RAISE g_exception_halt_validation;
8762 END IF;
8763
8764 l_inst_dtls_tbl (1).subline_date_terminated := TRUNC (l_retdt);
8765 -- If all the sublines are terminated terminate the top line
8766 oks_ib_util_pvt.check_termcancel_lines
8767 (p_kdtl_tbl (l_ctr).service_line_id,
8768 'SL',
8769 'T',
8770 date_terminated
8771 );
8772
8773 IF date_terminated IS NOT NULL
8774 THEN
8775 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
8776
8777 l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).service_line_id;
8778 l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
8779 l_clev_tbl_in (1).trn_code := 'RMA';
8780 l_clev_tbl_in (1).term_cancel_source := 'IBRETURN';
8781
8782 If TRUNC (date_terminated)<= trunc(sysdate) Then
8783 l_clev_tbl_in (1).sts_code := l_sts_code;
8784 End If;
8785
8786 okc_contract_pub.update_contract_line
8787 (p_api_version => l_api_version,
8788 p_init_msg_list => l_init_msg_list,
8789 p_restricted_update => okc_api.g_true,
8790 x_return_status => l_return_status,
8791 x_msg_count => x_msg_count,
8792 x_msg_data => x_msg_data,
8793 p_clev_tbl => l_clev_tbl_in,
8794 x_clev_tbl => l_clev_tbl_out
8795 );
8796
8797 IF NOT l_return_status = okc_api.g_ret_sts_success
8798 THEN
8799 RAISE g_exception_halt_validation;
8800 END IF;
8801 END IF;
8802
8803 date_terminated := NULL;
8804 -- If all the toplines are terminated, terminate the header
8805 oks_ib_util_pvt.check_termcancel_lines
8806 (p_kdtl_tbl (l_ctr).hdr_id,
8807 'TL',
8808 'T',
8809 date_terminated
8810 );
8811
8812 IF date_terminated IS NOT NULL
8813 THEN
8814 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
8815
8816 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
8817 l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
8818 l_chrv_tbl_in (1).trn_code := 'RMA';
8819 l_chrv_tbl_in (1).term_cancel_source := 'IBRETURN';
8820
8821 If TRUNC (date_terminated)<= trunc(sysdate) Then
8822 l_chrv_tbl_in (1).sts_code := l_sts_code;
8823 End If;
8824
8825
8826 okc_contract_pub.update_contract_header
8827 (p_api_version => l_api_version,
8828 p_init_msg_list => l_init_msg_list,
8829 p_restricted_update => okc_api.g_true,
8830 x_return_status => l_return_status,
8831 x_msg_count => x_msg_count,
8832 x_msg_data => x_msg_data,
8833 p_chrv_tbl => l_chrv_tbl_in,
8834 x_chrv_tbl => l_chrv_tbl_out
8835 );
8836
8837 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
8838 )
8839 THEN
8840 fnd_log.STRING
8841 (fnd_log.level_event,
8842 g_module_current
8843 || '.CREATE_CONTRACT_IBRETURN.external_call.after',
8844 'okc_contract_pub.update_contract_header(Return status =
8845 '
8846 || l_return_status
8847 || ')'
8848 );
8849 END IF;
8850
8851 IF NOT l_return_status = okc_api.g_ret_sts_success
8852 THEN
8853 RAISE g_exception_halt_validation;
8854 END IF;
8855 END IF;
8856 ELSIF l_ste_code = 'ENTERED'
8857 THEN
8858 l_retdt := p_kdtl_tbl (l_ctr).termination_date;
8859
8860 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_retdt)
8861 THEN
8862 l_retdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
8863 END IF;
8864
8865 --Cancel the the entered lines.
8866
8867 -- added for the bug # 6000133
8868 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
8869
8870 oks_change_status_pvt.update_line_status
8871 (x_return_status => l_return_status,
8872 x_msg_data => x_msg_data,
8873 x_msg_count => x_msg_count,
8874 p_init_msg_list => 'F',
8875 p_id => p_kdtl_tbl (l_ctr).hdr_id,
8876 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
8877 p_new_sts_code => l_sts_code,
8878 p_canc_reason_code => 'RETURN',
8879 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
8880 p_old_ste_code => 'ENTERED',
8881 p_new_ste_code => 'CANCELLED',
8882 p_term_cancel_source => 'IBRETURN',
8883 p_date_cancelled => TRUNC (l_retdt),
8884 p_comments => NULL,
8885 p_validate_status => 'N'
8886 );
8887
8888 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8889 THEN
8890 fnd_log.STRING
8891 (fnd_log.level_event,
8892 g_module_current || '.CREATE_CONTRACT_IBRETURN',
8893 'oks_change_status_pvt.Update_line_status (Return status ='
8894 || l_return_status
8895 || ')'
8896 );
8897 END IF;
8898
8899 IF NOT l_return_status = okc_api.g_ret_sts_success
8900 THEN
8901 RAISE g_exception_halt_validation;
8902 END IF;
8903
8904 l_inst_dtls_tbl (1).date_cancelled := TRUNC (l_retdt);
8905 date_cancelled := NULL;
8906 oks_ib_util_pvt.check_termcancel_lines
8907 (p_kdtl_tbl (l_ctr).service_line_id,
8908 'SL',
8909 'C',
8910 date_cancelled
8911 );
8912
8913 IF date_cancelled IS NOT NULL
8914 THEN
8915
8916 -- added for the bug # 6000133
8917 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
8918
8919 oks_change_status_pvt.update_line_status
8920 (x_return_status => l_return_status,
8921 x_msg_data => x_msg_data,
8922 x_msg_count => x_msg_count,
8923 p_init_msg_list => 'F',
8924 p_id => p_kdtl_tbl (l_ctr).hdr_id,
8925 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
8926 p_new_sts_code => l_sts_code,
8927 p_canc_reason_code => 'RETURN',
8928 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
8929 p_old_ste_code => 'ENTERED',
8930 p_new_ste_code => 'CANCELLED',
8931 p_term_cancel_source => 'IBRETURN',
8932 p_date_cancelled => TRUNC (date_cancelled),
8933 p_comments => NULL,
8934 p_validate_status => 'N'
8935 );
8936
8937 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
8938 )
8939 THEN
8940 fnd_log.STRING
8941 (fnd_log.level_event,
8942 g_module_current || '.CREATE_CONTRACT_IBRETURN',
8943 'oks_change_status_pvt.Update_line_status (Return status = '
8944 || l_return_status
8945 || ')'
8946 );
8947 END IF;
8948
8949 IF NOT l_return_status = okc_api.g_ret_sts_success
8950 THEN
8951 RAISE g_exception_halt_validation;
8952 END IF;
8953 END IF;
8954
8955 date_cancelled := NULL;
8956 oks_ib_util_pvt.check_termcancel_lines
8957 (p_kdtl_tbl (l_ctr).hdr_id,
8958 'TL',
8959 'C',
8960 date_cancelled
8961 );
8962
8963 IF date_cancelled IS NOT NULL
8964 THEN
8965
8966 -- added for the bug # 6000133
8967 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
8968
8969 oks_change_status_pvt.update_header_status
8970 (x_return_status => l_return_status,
8971 x_msg_data => x_msg_data,
8972 x_msg_count => x_msg_count,
8973 p_init_msg_list => 'F',
8974 p_id => p_kdtl_tbl (l_ctr).hdr_id,
8975 p_new_sts_code => l_sts_code,
8976 p_canc_reason_code => 'RETURN',
8977 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
8978 p_comments => NULL,
8979 p_term_cancel_source => 'IBRETURN',
8980 p_date_cancelled => TRUNC (date_cancelled),
8981 p_validate_status => 'N'
8982 );
8983
8984 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
8985 )
8986 THEN
8987 fnd_log.STRING
8988 (fnd_log.level_event,
8989 g_module_current || '.CREATE_CONTRACT_IBRETURN',
8990 'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status =
8991 '
8992 || l_return_status
8993 || ')'
8994 );
8995 END IF;
8996
8997 IF NOT l_return_status = okc_api.g_ret_sts_success
8998 THEN
8999 RAISE g_exception_halt_validation;
9000 END IF;
9001 END IF;
9002 END IF;
9003
9004 get_sts_code (NULL,
9005 p_kdtl_tbl (l_ctr).hdr_sts,
9006 l_ste_code,
9007 l_sts_code
9008 );
9009 --x_inst_dtls_tbl(l_ctr).INST_PARENT_ID := p_retn_rec.old_cp_id;
9010 l_inst_dtls_tbl (1).transaction_date := TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
9011 l_inst_dtls_tbl (1).transaction_type := 'RET';
9012 l_inst_dtls_tbl (1).system_id := NULL;
9013 l_inst_dtls_tbl (1).instance_id_new := NULL;
9014 l_inst_dtls_tbl (1).instance_qty_old :=
9015 p_kdtl_tbl (l_ctr).old_cp_quantity;
9016 l_inst_dtls_tbl (1).instance_qty_new :=
9017 p_kdtl_tbl (l_ctr).old_cp_quantity;
9018 l_inst_dtls_tbl (1).instance_amt_old :=
9019 p_kdtl_tbl (l_ctr).service_amount;
9020 l_inst_dtls_tbl (1).instance_amt_new :=
9021 p_kdtl_tbl (l_ctr).service_amount;
9022 l_inst_dtls_tbl (1).old_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
9023 l_inst_dtls_tbl (1).old_contact_start_date :=
9024 p_kdtl_tbl (l_ctr).hdr_sdt;
9025 l_inst_dtls_tbl (1).old_contract_end_date :=
9026 p_kdtl_tbl (l_ctr).hdr_edt;
9027 l_inst_dtls_tbl (1).new_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
9028 l_inst_dtls_tbl (1).new_contact_start_date :=
9029 p_kdtl_tbl (l_ctr).hdr_sdt;
9030 l_inst_dtls_tbl (1).new_contract_end_date :=
9031 p_kdtl_tbl (l_ctr).hdr_edt;
9032 l_inst_dtls_tbl (1).old_service_line_id :=
9033 p_kdtl_tbl (l_ctr).service_line_id;
9034 l_inst_dtls_tbl (1).old_service_start_date :=
9035 p_kdtl_tbl (l_ctr).service_sdt;
9036 l_inst_dtls_tbl (1).old_service_end_date :=
9037 p_kdtl_tbl (l_ctr).service_edt;
9038 l_inst_dtls_tbl (1).new_service_line_id :=
9039 p_kdtl_tbl (l_ctr).service_line_id;
9040 l_inst_dtls_tbl (1).new_service_start_date :=
9041 p_kdtl_tbl (l_ctr).service_sdt;
9042 l_inst_dtls_tbl (1).new_service_end_date :=
9043 p_kdtl_tbl (l_ctr).service_edt;
9044 l_inst_dtls_tbl (1).old_subline_id :=
9045 p_kdtl_tbl (l_ctr).object_line_id;
9046 l_inst_dtls_tbl (1).old_subline_start_date :=
9047 p_kdtl_tbl (l_ctr).prod_sdt;
9048 l_inst_dtls_tbl (1).old_subline_end_date :=
9049 p_kdtl_tbl (l_ctr).prod_edt;
9050 l_inst_dtls_tbl (1).new_subline_id :=
9051 p_kdtl_tbl (l_ctr).object_line_id;
9052 l_inst_dtls_tbl (1).new_subline_start_date :=
9053 p_kdtl_tbl (l_ctr).prod_sdt;
9054 l_inst_dtls_tbl (1).new_subline_end_date :=
9055 p_kdtl_tbl (l_ctr).prod_edt;
9056 l_inst_dtls_tbl (1).old_customer :=
9057 p_kdtl_tbl (l_ctr).cust_account;
9058 l_inst_dtls_tbl (1).new_customer :=
9059 p_kdtl_tbl (l_ctr).cust_account;
9060 l_inst_dtls_tbl (1).old_k_status := l_sts_code;
9061 l_inst_dtls_tbl (1).new_k_status := l_sts_code;
9062
9063 IF l_inst_dtls_tbl.COUNT <> 0
9064 THEN
9065 IF l_instparent_id IS NULL
9066 AND l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
9067 THEN
9068 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
9069
9070 FETCH l_refnum_csr
9071 INTO l_ref_num;
9072
9073 CLOSE l_refnum_csr;
9074
9075 l_parameters :=
9076 ' Old CP :'
9077 || p_kdtl_tbl (l_ctr).old_cp_id
9078 || ','
9079 || 'Item Id:'
9080 || p_kdtl_tbl (l_ctr).prod_inventory_item
9081 || ','
9082 || 'Old Quantity:'
9083 || p_kdtl_tbl (l_ctr).current_cp_quantity
9084 || ','
9085 || 'Transaction type :'
9086 || 'RET'
9087 || ','
9088 || ' Transaction date :'
9089 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
9090 || ','
9091 || 'New quantity:'
9092 || p_kdtl_tbl (l_ctr).new_quantity;
9093 --oks_instance_history
9094 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
9095 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
9096 l_insthist_rec.transaction_type := 'RET';
9097 l_insthist_rec.transaction_date := TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
9098 l_insthist_rec.reference_number := l_ref_num;
9099 l_insthist_rec.PARAMETERS := l_parameters;
9100 oks_ins_pvt.insert_row (p_api_version => 1.0,
9101 p_init_msg_list => 'T',
9102 x_return_status => l_return_status,
9103 x_msg_count => x_msg_count,
9104 x_msg_data => x_msg_data,
9105 p_insv_rec => l_insthist_rec,
9106 x_insv_rec => x_insthist_rec
9107 );
9108
9109 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9110 )
9111 THEN
9112 fnd_log.STRING
9113 (fnd_log.level_event,
9114 g_module_current || '.CREATE_K_IBRETURN',
9115 'oks_ins_pvt.insert_row(Return status = '
9116 || l_return_status
9117 || ')'
9118 );
9119 END IF;
9120
9121 x_return_status := l_return_status;
9122
9123 IF NOT l_return_status = okc_api.g_ret_sts_success
9124 THEN
9125 x_return_status := l_return_status;
9126 RAISE g_exception_halt_validation;
9127 END IF;
9128
9129 l_instparent_id := x_insthist_rec.ID;
9130 END IF;
9131
9132 l_inst_dtls_tbl (1).ins_id := l_instparent_id;
9133 --oks_inst_history_details
9134 oks_ihd_pvt.insert_row (p_api_version => 1.0,
9135 p_init_msg_list => 'T',
9136 x_return_status => l_return_status,
9137 x_msg_count => x_msg_count,
9138 x_msg_data => x_msg_data,
9139 p_ihdv_tbl => l_inst_dtls_tbl,
9140 x_ihdv_tbl => x_inst_dtls_tbl
9141 );
9142
9143 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9144 THEN
9145 fnd_log.STRING
9146 (fnd_log.level_event,
9147 g_module_current || '.CREATE_IBRETURN',
9148 'oks_ihd_pvt.insert_row(Return status = '
9149 || l_return_status
9150 || ')'
9151 );
9152 END IF;
9153
9154 x_return_status := l_return_status;
9155
9156 IF NOT l_return_status = okc_api.g_ret_sts_success
9157 THEN
9158 x_return_status := l_return_status;
9159 RAISE g_exception_halt_validation;
9160 END IF;
9161
9162 If date_terminated is not null or date_cancelled is not null Then
9163 Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
9164 Fetch l_hdr_sts_csr into l_hdr_status;
9165 Close l_hdr_sts_csr;
9166
9167 Update oks_inst_hist_details set new_k_status = l_hdr_status
9168 Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
9169
9170 End If;
9171 END IF;
9172
9173 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
9174
9175 FETCH l_serv_csr
9176 INTO l_service_name;
9177
9178 CLOSE l_serv_csr;
9179
9180 launch_workflow ( 'INSTALL BASE ACTIVITY : RETURN '
9181 || fnd_global.local_chr (10)
9182 || 'Contract Number : '
9183 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
9184 || fnd_global.local_chr (10)
9185 || 'Service Terminated : '
9186 || l_service_name
9187 );
9188 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
9189 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
9190 END LOOP;
9191 END IF;
9192 EXCEPTION
9193 WHEN g_exception_halt_validation
9194 THEN
9195 x_return_status := l_return_status;
9196 NULL;
9197 WHEN OTHERS
9198 THEN
9199 x_return_status := okc_api.g_ret_sts_unexp_error;
9200 okc_api.set_message (g_app_name,
9201 g_unexpected_error,
9202 g_sqlcode_token,
9203 SQLCODE,
9204 g_sqlerrm_token,
9205 SQLERRM
9206 );
9207 END;
9208
9209 ---System Transfer
9210 PROCEDURE create_k_system_transfer (
9211 p_kdtl_tbl IN contract_trf_tbl,
9212 x_return_status OUT NOCOPY VARCHAR2,
9213 x_msg_count OUT NOCOPY NUMBER,
9214 x_msg_data OUT NOCOPY VARCHAR2
9215 )
9216 IS
9217 CURSOR l_cov_csr (p_cle_id NUMBER)
9218 IS
9219 SELECT LN.transfer_option
9220 FROM oks_k_lines_b LN, okc_k_lines_b kl, oks_k_lines_b ks
9221 WHERE kl.ID = p_cle_id
9222 AND ks.cle_id = kl.ID
9223 AND LN.cle_id = ks.coverage_id;
9224
9225 CURSOR l_contracts_csr (
9226 p_system_id NUMBER,
9227 p_trxn_date DATE,
9228 p_cust_id NUMBER
9229 )
9230 IS
9231 SELECT DISTINCT new_contract_id
9232 FROM oks_inst_hist_details
9233 WHERE system_id = p_system_id
9234 AND transaction_date = p_trxn_date
9235 AND transaction_type = 'TRF'
9236 AND old_customer = p_cust_id
9237 AND new_contract_id <> old_contract_id;
9238
9239 CURSOR l_qa_csr (p_id NUMBER)
9240 IS
9241 SELECT qcl_id
9242 FROM okc_k_headers_b
9243 WHERE ID = p_id;
9244
9245 CURSOR l_hdrdt_csr (p_hdr_id NUMBER)
9246 IS
9247 SELECT start_date, end_date
9248 FROM okc_k_headers_b
9249 WHERE ID = p_hdr_id;
9250
9251 CURSOR l_srvdt_csr (p_line_id NUMBER)
9252 IS
9253 SELECT start_date, end_date
9254 FROM okc_k_lines_b
9255 WHERE ID = p_line_id;
9256
9257 CURSOR l_cust_rel_csr (
9258 p_old_customer VARCHAR2,
9259 p_new_customer VARCHAR2,
9260 p_relation VARCHAR2,
9261 p_transfer_date DATE
9262 )
9263 IS
9264 SELECT DISTINCT relationship_type
9265 FROM hz_relationships
9266 WHERE ( ( object_id = p_new_customer
9267 AND subject_id = p_old_customer
9268 )
9269 OR ( object_id = p_old_customer
9270 AND subject_id = p_new_customer
9271 )
9272 )
9273 AND relationship_type = p_relation
9274 AND status = 'A'
9275 AND TRUNC (p_transfer_date) BETWEEN TRUNC (start_date)
9276 AND TRUNC (end_date);
9277
9278 CURSOR l_hdr_sts_csr (p_hdr_id NUMBER)
9279 IS
9280 SELECT sts_code
9281 FROM okc_k_headers_b
9282 WHERE ID = p_hdr_id;
9283
9284
9285 CURSOR l_Launch_WF_csr (p_hdr_id NUMBER)
9286 IS
9287 SELECT 'Y'
9288 FROM okc_k_headers_b Kh, oks_k_headers_b Ks
9289 , okc_statuses_b sts
9290 WHERE Kh.ID = p_hdr_id
9291 And Ks.chr_id = Kh.id
9292 And kh.sts_code = sts.code
9293 And sts.ste_code = 'ENTERED'
9294 And ks.wf_item_key is null;
9295 l_launch_wf_yn Varchar2(1);
9296
9297 CURSOR l_subline_csr (p_id NUMBER)
9298 IS
9299 SELECT date_terminated, price_negotiated
9300 FROM okc_k_lines_b
9301 WHERE ID = p_id;
9302
9303 l_date_terminated DATE;
9304 l_subline_price NUMBER;
9305 l_hdr_sts VARCHAR2 (40);
9306
9307 CURSOR l_toplines_csr (p_chr_id NUMBER, p_service_item_id NUMBER)
9308 IS
9309 SELECT kl.ID cle_id
9310 FROM okc_k_lines_b kl, okc_k_items ki, okc_statuses_b st
9311 WHERE kl.dnz_chr_id = p_chr_id
9312 AND kl.lse_id IN (1, 14, 19)
9313 AND kl.ID = ki.cle_id
9314 AND ki.object1_id1 = TO_CHAR (p_service_item_id)
9315 AND st.code = kl.sts_code
9316 AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED');
9317
9318 l_cov_rec l_cov_csr%ROWTYPE;
9319
9320 CURSOR l_refnum_csr (p_cp_id NUMBER)
9321 IS
9322 SELECT instance_number
9323 FROM csi_item_instances
9324 WHERE instance_id = p_cp_id;
9325
9326 CURSOR l_serv_csr (p_serv_id NUMBER)
9327 IS
9328 SELECT t.description NAME
9329 FROM mtl_system_items_tl t
9330 WHERE t.inventory_item_id = p_serv_id
9331 AND t.LANGUAGE = USERENV ('LANG')
9332 AND ROWNUM < 2;
9333
9334 l_start_date DATE;
9335 l_end_date DATE;
9336 l_subline_id NUMBER;
9337 l_renewal_id NUMBER;
9338 l_source_line_id NUMBER;
9339 l_transfer_id NUMBER;
9340 l_srv_sdt DATE;
9341 l_srv_edt DATE;
9342 l_coverage_id NUMBER;
9343 l_service_name VARCHAR2 (240);
9344 l_ref_num VARCHAR2 (30);
9345 l_msg_count NUMBER;
9346 l_msg_data VARCHAR2 (2000);
9347 l_trf_option VARCHAR2 (40);
9348 l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
9349 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
9350 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
9351 l_line_rec oks_extwarprgm_pvt.k_line_service_rec_type;
9352 l_covd_rec oks_extwarprgm_pvt.k_line_covered_level_rec_type;
9353 --l_kdtl_tbl oks_extwar_util_pvt.contract_tbl_type;
9354 l_available_yn CHAR;
9355 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
9356 l_line_found VARCHAR2 (1);
9357 l_ste_code VARCHAR2 (40);
9358 l_sts_code VARCHAR2 (40);
9359 l_ctr NUMBER;
9360 l_suppress_credit VARCHAR2 (10) := 'N';
9361 l_trfdt DATE;
9362 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
9363 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
9364 l_api_version CONSTANT NUMBER := 1.0;
9365 l_init_msg_list CONSTANT VARCHAR2 (1) := 'F';
9366 l_index NUMBER;
9367 l_relationship VARCHAR2 (40);
9368 l_relationship_type VARCHAR2 (40);
9369 l_chr_id NUMBER;
9370 l_contract_exist VARCHAR2 (1);
9371 l_contract_merge VARCHAR2 (1);
9372 l_ptr NUMBER := 0;
9373 l_old_cp_id NUMBER;
9374 l_line_id NUMBER;
9375 l_header_merge VARCHAR2 (1);
9376 l_line_merge VARCHAR2 (1);
9377 l_merge_chr_id NUMBER;
9378 l_merge_line_id NUMBER;
9379 l_max_severity VARCHAR2 (1);
9380 l_msg_tbl okc_qa_check_pub.msg_tbl_type;
9381 l_covlvl_id NUMBER;
9382 i NUMBER;
9383 l_qcl_id NUMBER;
9384 l_update_line VARCHAR2 (1);
9385 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
9386 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
9387 l_insthist_rec oks_ins_pvt.insv_rec_type;
9388 x_insthist_rec oks_ins_pvt.insv_rec_type;
9389 l_instparent_id NUMBER;
9390 l_parameters VARCHAR2 (2000);
9391 l_temp VARCHAR2 (2000);
9392 l_old_party_id NUMBER;
9393 l_new_party_id NUMBER;
9394 l_new_party_name VARCHAR2 (360);
9395 l_old_party_name VARCHAR2 (360);
9396 date_terminated DATE;
9397 date_cancelled DATE;
9398 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
9399 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
9400 l_create_contract VARCHAR2 (1);
9401 l_party_id NUMBER;
9402 l_party_name VARCHAR2 (360);
9403 l_opr_instance_id NUMBER;
9404 l_renewal_opr_instance_id NUMBER;
9405 l_term_date_flag VARCHAR2 (1);
9406 l_wf_attr_details oks_wf_k_process_pvt.wf_attr_details;
9407 l_create_oper_instance VARCHAR2 (1);
9408 l_credit_amount VARCHAR2 (50);
9409 l_full_credit VARCHAR2 (10) := 'N';
9410
9411 FUNCTION get_operation_instance (
9412 p_target_chr_id NUMBER,
9413 p_transaction_type VARCHAR2
9414 )
9415 RETURN NUMBER
9416 IS
9417 CURSOR l_operation_csr
9418 IS
9419 SELECT op.ID
9420 FROM okc_operation_instances op,
9421 okc_class_operations classopr,
9422 okc_subclasses_b subclass
9423 WHERE target_chr_id = p_target_chr_id
9424 AND subclass.code = 'SERVICE'
9425 AND classopr.cls_code = subclass.cls_code
9426 AND classopr.opn_code IN ('TRANSFER')
9427 AND op.cop_id = classopr.ID;
9428
9429 CURSOR l_renewal_csr
9430 IS
9431 SELECT op.ID
9432 FROM okc_operation_instances op,
9433 okc_class_operations classopr,
9434 okc_subclasses_b subclass
9435 WHERE target_chr_id = p_target_chr_id
9436 AND subclass.code = 'SERVICE'
9437 AND classopr.cls_code = subclass.cls_code
9438 AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
9439 AND op.cop_id = classopr.ID;
9440
9441 /*
9442 Select id
9443 From Okc_operation_instances
9444 Where target_chr_id = p_target_chr_id
9445 And cop_id in (40,41);
9446 */
9447 l_oper_inst_id NUMBER;
9448 BEGIN
9449 IF p_transaction_type = 'TRF'
9450 THEN
9451 OPEN l_operation_csr;
9452
9453 FETCH l_operation_csr
9454 INTO l_oper_inst_id;
9455
9456 CLOSE l_operation_csr;
9457 ELSE
9458 OPEN l_renewal_csr;
9459
9460 FETCH l_renewal_csr
9461 INTO l_oper_inst_id;
9462
9463 CLOSE l_renewal_csr;
9464 END IF;
9465
9466 RETURN (l_oper_inst_id);
9467 END;
9468
9469 PROCEDURE get_party_id (
9470 p_cust_id IN NUMBER,
9471 x_party_id OUT NOCOPY NUMBER,
9472 x_party_name OUT NOCOPY VARCHAR2
9473 )
9474 IS
9475 CURSOR l_party_csr
9476 IS
9477 SELECT party_id, NAME
9478 FROM okx_customer_accounts_v
9479 WHERE id1 = p_cust_id;
9480 BEGIN
9481 OPEN l_party_csr;
9482
9483 FETCH l_party_csr
9484 INTO x_party_id, x_party_name;
9485
9486 CLOSE l_party_csr;
9487 EXCEPTION
9488 WHEN OTHERS
9489 THEN
9490 x_return_status := okc_api.g_ret_sts_unexp_error;
9491 okc_api.set_message (g_app_name,
9492 g_unexpected_error,
9493 g_sqlcode_token,
9494 SQLCODE,
9495 g_sqlerrm_token,
9496 SQLERRM
9497 );
9498 END;
9499
9500 FUNCTION site_address (
9501 p_customer_id NUMBER,
9502 p_party_id NUMBER,
9503 p_code VARCHAR2,
9504 p_org_id NUMBER
9505 )
9506 RETURN NUMBER
9507 IS
9508 CURSOR l_address_csr
9509 IS
9510 SELECT id1
9511 FROM okx_cust_site_uses_v
9512 WHERE cust_account_id = p_customer_id
9513 AND party_id = p_party_id
9514 AND site_use_code = p_code
9515 AND identifying_address_flag = 'Y'
9516 AND status = 'A'
9517 AND org_id = p_org_id;
9518
9519 l_site_id NUMBER;
9520 BEGIN
9521 OPEN l_address_csr;
9522
9523 FETCH l_address_csr
9524 INTO l_site_id;
9525
9526 IF l_address_csr%NOTFOUND
9527 THEN
9528 CLOSE l_address_csr;
9529
9530 RETURN (NULL);
9531 END IF;
9532
9533 CLOSE l_address_csr;
9534
9535 RETURN (l_site_id);
9536 END;
9537
9538 PROCEDURE create_contract_header (
9539 p_kdtl_rec IN contract_trf_rec,
9540 x_msg_data OUT NOCOPY VARCHAR2,
9541 x_chr_id OUT NOCOPY NUMBER,
9542 x_msg_count OUT NOCOPY NUMBER,
9543 x_return_status OUT NOCOPY VARCHAR2
9544 )
9545 IS
9546 l_agrment_id NUMBER;
9547 l_ste_code VARCHAR2 (40);
9548 l_sts_code VARCHAR2 (40);
9549
9550 CURSOR l_party_csr (p_id NUMBER)
9551 IS
9552 SELECT party_id, NAME
9553 FROM okx_customer_accounts_v
9554 WHERE id1 = p_id;
9555
9556 CURSOR l_get_agrid_csr (p_chr_id NUMBER)
9557 IS
9558 SELECT isa_agreement_id
9559 FROM okc_governances
9560 WHERE chr_id = p_chr_id AND dnz_chr_id = p_chr_id;
9561
9562 -- Fix for bug 3588355
9563 CURSOR l_get_bill_ship_csr (p_cp_id NUMBER)
9564 IS
9565 SELECT bill_to_address, ship_to_address
9566 FROM csi_instance_party_v
9567 WHERE instance_id = p_cp_id;
9568
9569 -- Fix for bug 3588355
9570 CURSOR validate_bill_ship_ids (
9571 p_id NUMBER,
9572 p_org_id NUMBER,
9573 p_site_use_code VARCHAR2
9574 )
9575 IS
9576 SELECT 'x'
9577 FROM okx_cust_site_uses_v
9578 WHERE id1 = p_id
9579 AND site_use_code = p_site_use_code
9580 AND org_id = p_org_id
9581 AND status = 'A';
9582
9583 CURSOR l_access_csr (p_hdr_id NUMBER)
9584 IS
9585 SELECT resource_id, GROUP_ID, access_level
9586 FROM okc_k_accesses_v
9587 WHERE chr_id = p_hdr_id;
9588
9589 l_hdr_rec k_header_rec_type;
9590 l_party_id NUMBER;
9591 l_party_name VARCHAR2 (360);
9592 l_return_status VARCHAR2 (1);
9593 l_rnrl_rec_out oks_renew_util_pvt.rnrl_rec_type;
9594 p_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
9595 l_chrid NUMBER;
9596 l_cacv_tbl_in okc_contract_pub.cacv_tbl_type;
9597 l_cacv_tbl_out okc_contract_pub.cacv_tbl_type;
9598 l_status VARCHAR2 (40);
9599 l_bill_to_id NUMBER;
9600 l_ship_to_id NUMBER;
9601 l_valid VARCHAR2 (1);
9602 l_resource_id NUMBER;
9603 l_group_id NUMBER;
9604 l_access_level VARCHAR2 (3);
9605 l_sc_hdr_ctr NUMBER;
9606 l_salescredit_tbl oks_extwarprgm_pvt.salescredit_tbl;
9607 l_org_id NUMBER;
9608
9609 CURSOR l_sales_credit_hdr_csr (p_chr_id NUMBER)
9610 IS
9611 SELECT ctc_id, sales_credit_type_id1, PERCENT, sales_group_id
9612 FROM oks_k_sales_credits_v
9613 WHERE chr_id = p_chr_id AND cle_id IS NULL;
9614 BEGIN
9615 x_return_status := okc_api.g_ret_sts_success;
9616
9617 OPEN l_get_agrid_csr (p_kdtl_rec.hdr_id); --07-May-2003
9618
9619 FETCH l_get_agrid_csr
9620 INTO l_agrment_id;
9621
9622 CLOSE l_get_agrid_csr;
9623
9624 l_hdr_rec.billed_at_source := p_kdtl_rec.billed_at_source;
9625
9626 get_party_id (p_kdtl_rec.new_account_id, l_party_id, l_party_name);
9627 l_hdr_rec.party_id := l_party_id;
9628
9629 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9630 THEN
9631 fnd_log.STRING (fnd_log.level_statement,
9632 g_module_current
9633 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9634 'Party id = ' || l_hdr_rec.party_id
9635 );
9636 END IF;
9637
9638 oks_renew_util_pub.get_renew_rules
9639 (p_api_version => 1.0,
9640 p_init_msg_list => 'T',
9641 x_return_status => l_return_status,
9642 x_msg_count => x_msg_count,
9643 x_msg_data => x_msg_data,
9644 p_chr_id => NULL,
9645 p_party_id => l_hdr_rec.party_id,
9646 p_org_id => p_kdtl_rec.hdr_org_id,
9647 p_date => SYSDATE,
9648 p_rnrl_rec => NULL,
9649 x_rnrl_rec => l_rnrl_rec_out
9650 );
9651
9652 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9653 THEN
9654 fnd_log.STRING
9655 (fnd_log.level_event,
9656 g_module_current
9657 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9658 'oks_renew_util_pub.get_renew_rules(Return status = '
9659 || l_return_status
9660 );
9661 END IF;
9662
9663 IF NOT l_return_status = okc_api.g_ret_sts_success
9664 THEN
9665 x_return_status := l_return_status;
9666 RAISE g_exception_halt_validation;
9667 END IF;
9668
9669 l_hdr_rec.scs_code := p_kdtl_rec.scs_code;
9670
9671 IF p_kdtl_rec.scs_code = 'WARRANTY'
9672 THEN
9673 l_hdr_rec.short_description :=
9674 'CUSTOMER : '
9675 || l_party_name
9676 || ' Warranty/Extended Warranty Contract';
9677 ELSE
9678 l_hdr_rec.short_description :=
9679 'CUSTOMER : ' || l_party_name || ' Contract';
9680 END IF;
9681
9682 l_hdr_rec.start_date := TRUNC (l_trfdt);
9683
9684 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9685 THEN
9686 fnd_log.STRING (fnd_log.level_statement,
9687 g_module_current
9688 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9689 'Transfer status Profile = '
9690 || fnd_profile.VALUE ('OKS_TRANSFER_STATUS')
9691 );
9692 END IF;
9693
9694 IF (p_kdtl_rec.scs_code = 'WARRANTY' AND p_kdtl_rec.lse_id = 18)
9695 THEN
9696 IF l_hdr_rec.start_date > SYSDATE
9697 THEN
9698 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
9699 ELSE
9700 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
9701 END IF;
9702
9703 l_hdr_rec.sts_code := l_sts_code;
9704 l_hdr_rec.renewal_status := 'COMPLETE';
9705 l_hdr_rec.accounting_rule_id := null;
9706 l_hdr_rec.invoice_rule_id := Null;
9707 l_hdr_rec.qcl_id := Null;
9708 l_hdr_rec.pdf_id := Null;
9709 l_hdr_rec.ar_interface_yn := 'N';
9710
9711 ELSE
9712 l_hdr_rec.accounting_rule_id := p_kdtl_rec.hdr_acct_rule_id;
9713 l_hdr_rec.invoice_rule_id := -2;
9714 l_hdr_rec.qcl_id := l_rnrl_rec_out.qcl_id;
9715 l_hdr_rec.pdf_id := l_rnrl_rec_out.pdf_id;
9716 l_hdr_rec.ar_interface_yn := p_kdtl_rec.ar_interface_yn;
9717
9718
9719 get_sts_code (p_kdtl_rec.prod_sts_code,
9720 NULL,
9721 l_ste_code,
9722 l_sts_code
9723 );
9724
9725 IF l_ste_code = 'ENTERED'
9726 THEN
9727 l_hdr_rec.sts_code := l_sts_code;
9728 ELSE
9729 l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
9730
9731 IF l_status = 'ACTIVE'
9732 THEN
9733 IF l_hdr_rec.start_date > SYSDATE
9734 THEN
9735 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
9736 ELSE
9737 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
9738 END IF;
9739
9740 l_hdr_rec.renewal_status := 'COMPLETE';
9741 ELSE
9742 get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
9743 END IF;
9744
9745 l_hdr_rec.sts_code := l_sts_code;
9746 END IF;
9747 END IF;
9748
9749 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9750 THEN
9751 fnd_log.STRING (fnd_log.level_statement,
9752 g_module_current
9753 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9754 'Header Status = '
9755 || l_hdr_rec.sts_code
9756 || 'End date = '
9757 || l_hdr_rec.end_date
9758 || 'Start Date = '
9759 || l_hdr_rec.start_date
9760 );
9761 END IF;
9762
9763 -- Fix for bug 3588355 Begin
9764 OPEN l_get_bill_ship_csr (p_kdtl_rec.old_cp_id);
9765
9766 FETCH l_get_bill_ship_csr
9767 INTO l_bill_to_id, l_ship_to_id;
9768
9769 CLOSE l_get_bill_ship_csr;
9770
9771 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9772 THEN
9773 fnd_log.STRING (fnd_log.level_statement,
9774 g_module_current
9775 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9776 ' Bill to Id = '
9777 || l_bill_to_id
9778 || 'Ship to Id = '
9779 || l_ship_to_id
9780 );
9781 END IF;
9782
9783 IF (l_bill_to_id IS NOT NULL)
9784 THEN
9785 OPEN validate_bill_ship_ids (l_bill_to_id,
9786 p_kdtl_tbl (l_ctr).hdr_org_id,
9787 'BILL_TO'
9788 );
9789
9790 FETCH validate_bill_ship_ids
9791 INTO l_valid;
9792
9793 IF validate_bill_ship_ids%NOTFOUND
9794 THEN
9795 CLOSE validate_bill_ship_ids;
9796
9797 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
9798 THEN
9799 fnd_log.STRING (fnd_log.level_error,
9800 g_module_current
9801 || '.CREATE_K_SYSTEM_TRF.ERROR',
9802 ' Bill to Id ('
9803 || l_bill_to_id
9804 || ') is not valid'
9805 );
9806 END IF;
9807
9808 l_return_status := okc_api.g_ret_sts_error;
9809 okc_api.set_message (g_app_name,
9810 g_required_value,
9811 g_col_name_token,
9812 'Bill to id is not Valid'
9813 );
9814 RAISE g_exception_halt_validation;
9815 END IF;
9816
9817 CLOSE validate_bill_ship_ids;
9818 END IF;
9819
9820 IF (l_ship_to_id IS NOT NULL)
9821 THEN
9822 OPEN validate_bill_ship_ids (l_ship_to_id,
9823 p_kdtl_rec.hdr_org_id,
9824 'SHIP_TO'
9825 );
9826
9827 FETCH validate_bill_ship_ids
9828 INTO l_valid;
9829
9830 IF validate_bill_ship_ids%NOTFOUND
9831 THEN
9832 CLOSE validate_bill_ship_ids;
9833
9834 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
9835 THEN
9836 fnd_log.STRING (fnd_log.level_error,
9837 g_module_current
9838 || '.CREATE_K_SYSTEM_TRF.ERROR',
9839 ' Bill to Id ('
9840 || l_ship_to_id
9841 || ') is not valid'
9842 );
9843 END IF;
9844
9845 l_return_status := okc_api.g_ret_sts_error;
9846 okc_api.set_message (g_app_name,
9847 g_required_value,
9848 g_col_name_token,
9849 'Ship to id is not Valid'
9850 );
9851 RAISE g_exception_halt_validation;
9852 END IF;
9853
9854 CLOSE validate_bill_ship_ids;
9855 END IF;
9856
9857 l_hdr_rec.bill_to_id :=
9858 NVL (l_bill_to_id,
9859 site_address (p_kdtl_rec.new_account_id,
9860 l_hdr_rec.party_id,
9861 'BILL_TO',
9862 p_kdtl_rec.hdr_org_id
9863 )
9864 );
9865 l_hdr_rec.ship_to_id :=
9866 NVL (l_ship_to_id,
9867 site_address (p_kdtl_rec.new_account_id,
9868 l_hdr_rec.party_id,
9869 'SHIP_TO',
9870 p_kdtl_rec.hdr_org_id
9871 )
9872 );
9873 -- Fix for bug 3588355 End
9874 l_hdr_rec.order_line_id := NULL;
9875 l_hdr_rec.contract_number := okc_api.g_miss_char;
9876 l_hdr_rec.rty_code := 'CONTRACTTRANSFERORDER';
9877 --l_hdr_rec.start_date := trunc(l_trfdt);
9878 l_hdr_rec.end_date := p_kdtl_rec.service_edt;
9879 l_hdr_rec.class_code := 'SVC';
9880 l_hdr_rec.authoring_org_id := p_kdtl_rec.hdr_org_id;
9881 l_hdr_rec.inv_organization_id := p_kdtl_rec.organization_id;
9882 l_hdr_rec.chr_group := l_rnrl_rec_out.cgp_new_id;
9883 l_hdr_rec.price_list_id := p_kdtl_rec.price_list_id;
9884 l_hdr_rec.agreement_id := l_agrment_id;
9885 l_hdr_rec.currency := p_kdtl_rec.header_currency;
9886 --p_kdtl_rec.hdr_inv_rule_id; --fix for bug 3451440
9887 l_hdr_rec.payment_type := p_kdtl_rec.payment_type;
9888 l_hdr_rec.inv_trx_type := p_kdtl_rec.inv_trx_type;
9889 l_hdr_rec.hold_billing := p_kdtl_rec.hold_billing;
9890 --mmadhavi for bug 3765672
9891 l_hdr_rec.summary_trx_yn := p_kdtl_rec.summary_trx_yn;
9892 --mmadhavi for bug 3765672
9893 l_hdr_rec.order_hdr_id := NULL;
9894 l_hdr_rec.payment_term_id := p_kdtl_rec.payment_term_id;
9895 l_hdr_rec.cvn_type := p_kdtl_rec.cvn_type;
9896 l_hdr_rec.cvn_rate := p_kdtl_rec.cvn_rate;
9897 l_hdr_rec.cvn_date := p_kdtl_rec.cvn_date;
9898 l_hdr_rec.cvn_euro_rate := p_kdtl_rec.cvn_euro_rate;
9899 l_hdr_rec.merge_type := 'NEW';
9900 l_hdr_rec.period_start := p_kdtl_rec.period_start;
9901 l_hdr_rec.period_type := p_kdtl_rec.period_type;
9902 l_hdr_rec.price_uom := p_kdtl_rec.price_uom_hdr;
9903 l_sc_hdr_ctr := 0;
9904
9905 FOR l_sales_credit_hdr_rec IN
9906 l_sales_credit_hdr_csr (p_kdtl_rec.hdr_id)
9907 LOOP
9908 l_sc_hdr_ctr := l_sc_hdr_ctr + 1;
9909 l_salescredit_tbl (l_sc_hdr_ctr).ctc_id :=
9910 l_sales_credit_hdr_rec.ctc_id;
9911 l_salescredit_tbl (l_sc_hdr_ctr).sales_credit_type_id :=
9912 l_sales_credit_hdr_rec.sales_credit_type_id1;
9913 l_salescredit_tbl (l_sc_hdr_ctr).PERCENT :=
9914 l_sales_credit_hdr_rec.PERCENT;
9915 l_salescredit_tbl (l_sc_hdr_ctr).sales_group_id :=
9916 l_sales_credit_hdr_rec.sales_group_id;
9917 END LOOP; -- For l_sales_credit_rec IN l_sales_credit_csr
9918
9919 oks_extwarprgm_pvt.create_k_hdr
9920 (p_k_header_rec => l_hdr_rec,
9921 p_contact_tbl => p_contact_tbl_in,
9922 p_salescredit_tbl_in => l_salescredit_tbl
9923 -- mmadhavi bug 4174921
9924 ,
9925 p_caller => 'ST',
9926 x_order_error => l_temp,
9927 x_chr_id => l_chrid,
9928 x_return_status => l_return_status,
9929 x_msg_count => x_msg_count,
9930 x_msg_data => x_msg_data
9931 );
9932
9933 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9934 THEN
9935 fnd_log.STRING
9936 (fnd_log.level_statement,
9937 g_module_current
9938 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9939 'OKS_EXTWARPRGM_PVT.create_k_hdr(Return status = '
9940 || l_return_status
9941 || ')'
9942 );
9943 END IF;
9944
9945 IF NOT l_return_status = 'S'
9946 THEN
9947 RAISE g_exception_halt_validation;
9948 ELSE
9949 x_chr_id := l_chrid;
9950 END IF;
9951
9952 SELECT authoring_org_id
9953 INTO l_org_id
9954 FROM okc_k_headers_b
9955 WHERE ID = l_chrid;
9956
9957 OPEN l_access_csr (p_kdtl_rec.hdr_id);
9958
9959 FETCH l_access_csr
9960 INTO l_resource_id, l_group_id, l_access_level;
9961
9962 CLOSE l_access_csr;
9963
9964 IF l_resource_id IS NOT NULL OR l_group_id IS NOT NULL
9965 THEN
9966 l_cacv_tbl_in (1).chr_id := l_chrid;
9967 l_cacv_tbl_in (1).resource_id := l_resource_id;
9968 l_cacv_tbl_in (1).GROUP_ID := l_group_id;
9969 l_cacv_tbl_in (1).access_level := l_access_level;
9970 okc_contract_pub.create_contract_access
9971 (p_api_version => l_api_version,
9972 p_init_msg_list => l_init_msg_list,
9973 x_return_status => l_return_status,
9974 x_msg_count => x_msg_count,
9975 x_msg_data => x_msg_data,
9976 p_cacv_tbl => l_cacv_tbl_in,
9977 x_cacv_tbl => l_cacv_tbl_out
9978 );
9979
9980 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9981 THEN
9982 fnd_log.STRING
9983 (fnd_log.level_statement,
9984 g_module_current
9985 || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9986 'okc_contract_pub.create_contract_access(Return status = '
9987 || l_return_status
9988 || ')'
9989 );
9990 END IF;
9991
9992 IF NOT l_return_status = 'S'
9993 THEN
9994 RAISE g_exception_halt_validation;
9995 END IF;
9996 END IF;
9997
9998 x_return_status := l_return_status;
9999 EXCEPTION
10000 WHEN g_exception_halt_validation
10001 THEN
10002 x_return_status := l_return_status;
10003 NULL;
10004 WHEN OTHERS
10005 THEN
10006 x_return_status := okc_api.g_ret_sts_unexp_error;
10007 okc_api.set_message (g_app_name,
10008 g_unexpected_error,
10009 g_sqlcode_token,
10010 SQLCODE,
10011 g_sqlerrm_token,
10012 SQLERRM
10013 );
10014 END create_contract_header;
10015
10016 PROCEDURE create_contract_line (
10017 p_kdtl_rec IN contract_trf_rec,
10018 p_hdr_id IN NUMBER,
10019 x_return_status OUT NOCOPY VARCHAR2,
10020 x_msg_data OUT NOCOPY VARCHAR2,
10021 x_line_id OUT NOCOPY NUMBER,
10022 x_msg_count OUT NOCOPY NUMBER
10023 )
10024 IS
10025 CURSOR l_line_rule_csr (p_line_id NUMBER)
10026 IS
10027 SELECT oks.acct_rule_id, okc.inv_rule_id, okc.price_list_id
10028 FROM okc_k_lines_b okc, oks_k_lines_b oks
10029 WHERE okc.ID = p_line_id AND oks.cle_id = okc.ID;
10030
10031 CURSOR l_party_csr (p_id NUMBER)
10032 IS
10033 SELECT party_id, NAME
10034 FROM okx_customer_accounts_v
10035 WHERE id1 = p_id;
10036
10037 CURSOR l_hdr_sts_csr (p_hdr_id NUMBER)
10038 IS
10039 SELECT st.ste_code, kh.sts_code
10040 FROM okc_k_headers_b kh, okc_statuses_b st
10041 WHERE kh.ID = p_hdr_id AND st.code = kh.sts_code;
10042
10043 -- Fix for bug 3588355
10044 CURSOR l_get_bill_ship_csr (p_cp_id NUMBER)
10045 IS
10046 SELECT bill_to_address, ship_to_address
10047 FROM csi_instance_party_v
10048 WHERE instance_id = p_cp_id;
10049
10050 CURSOR l_serv_csr (p_serv_id NUMBER)
10051 IS
10052 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments )
10053 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
10054 WHERE b.inventory_item_id = t.inventory_item_id
10055 AND b.organization_id = t.organization_id
10056 AND t.LANGUAGE = USERENV ('LANG')
10057 AND b.inventory_item_id = p_serv_id
10058 AND ROWNUM < 2;
10059
10060 l_line_rec k_line_service_rec_type;
10061 l_acct_id NUMBER;
10062 l_inv_id NUMBER;
10063 l_party_id NUMBER;
10064 l_party_name VARCHAR2 (360);
10065 l_ste_code VARCHAR2 (40);
10066 l_sts_code VARCHAR2 (40);
10067 l_hdr_sts_code VARCHAR2 (40);
10068 l_hdr_ste_code VARCHAR2 (40);
10069 l_lineid NUMBER;
10070 l_return_status VARCHAR2 (10);
10071 l_price_list_id NUMBER;
10072 p_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
10073 l_status VARCHAR2 (40);
10074 l_bill_to_id NUMBER;
10075 l_ship_to_id NUMBER;
10076 l_warranty_flag VARCHAR2 (2);
10077
10078 CURSOR l_sales_credit_csr (p_cle_id NUMBER)
10079 IS
10080 SELECT ctc_id, sales_credit_type_id1, PERCENT, sales_group_id
10081 FROM oks_k_sales_credits_v
10082 WHERE cle_id = p_cle_id;
10083
10084 l_sc_ctr NUMBER;
10085 l_salescredit_tbl oks_extwarprgm_pvt.salescredit_tbl;
10086 BEGIN
10087 x_return_status := okc_api.g_ret_sts_success;
10088
10089 OPEN l_line_rule_csr (p_kdtl_rec.service_line_id);
10090
10091 FETCH l_line_rule_csr
10092 INTO l_acct_id, l_inv_id, l_price_list_id;
10093
10094 CLOSE l_line_rule_csr;
10095
10096 get_party_id (p_kdtl_rec.new_account_id, l_party_id, l_party_name);
10097
10098 OPEN l_get_bill_ship_csr (p_kdtl_rec.old_cp_id);
10099
10100 FETCH l_get_bill_ship_csr
10101 INTO l_bill_to_id, l_ship_to_id;
10102
10103 CLOSE l_get_bill_ship_csr;
10104
10105 l_line_rec.k_id := p_hdr_id;
10106 l_line_rec.k_line_number := okc_api.g_miss_char;
10107 l_line_rec.org_id := p_kdtl_rec.hdr_org_id;
10108 l_line_rec.accounting_rule_id := l_acct_id;
10109 l_line_rec.invoicing_rule_id := -2;
10110 --l_inv_id; -- fix for bug 3451440
10111 l_line_rec.srv_id := p_kdtl_rec.service_inventory_id;
10112 -- l_line_rec.srv_segment1 := p_kdtl_rec.service_name;
10113 -- l_line_rec.srv_desc := p_kdtl_rec.service_description;
10114
10115 OPEN l_serv_csr (p_kdtl_rec.service_inventory_id);
10116 FETCH l_serv_csr INTO l_line_rec.srv_desc;
10117 CLOSE l_serv_csr;
10118
10119 l_line_rec.srv_sdt := TRUNC (l_trfdt);
10120 l_line_rec.srv_edt := TRUNC (p_kdtl_rec.service_edt);
10121
10122 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10123 THEN
10124 fnd_log.STRING (fnd_log.level_statement,
10125 g_module_current
10126 || '.CREATE_K_SYSTEM_TRF.create_k_service_line',
10127 'Start date = '
10128 || l_line_rec.srv_sdt
10129 || 'End date = '
10130 || l_line_rec.srv_edt
10131 );
10132 END IF;
10133
10134 --to be derived
10135 l_line_rec.bill_to_id :=
10136 NVL (l_bill_to_id,
10137 site_address (p_kdtl_rec.new_account_id,
10138 l_party_id,
10139 'BILL_TO',
10140 p_kdtl_rec.hdr_org_id
10141 )
10142 );
10143 l_line_rec.ship_to_id :=
10144 NVL (l_ship_to_id,
10145 site_address (p_kdtl_rec.new_account_id,
10146 l_party_id,
10147 'SHIP_TO',
10148 p_kdtl_rec.hdr_org_id
10149 )
10150 );
10151
10152 IF p_kdtl_rec.lse_id = 25
10153 THEN
10154 l_warranty_flag := 'E';
10155 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SERVICE'
10156 THEN
10157 l_warranty_flag := 'S';
10158 ELSIF p_kdtl_rec.lse_id = 18
10159 THEN
10160 l_warranty_flag := 'W';
10161 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SUBSCRIPTION'
10162 THEN
10163 l_warranty_flag := 'SU';
10164 END IF;
10165
10166 l_line_rec.warranty_flag := l_warranty_flag;
10167 l_line_rec.currency := p_kdtl_rec.service_currency;
10168 --Fix for Bug4121175
10169 l_line_rec.tax_code := p_kdtl_rec.tax_code;
10170 --End Fix for Bug4121175
10171 l_line_rec.cust_account := p_kdtl_rec.new_account_id;
10172 l_line_rec.ln_price_list_id := l_price_list_id;
10173 l_line_rec.coverage_id := p_kdtl_rec.coverage_id;
10174 l_line_rec.coverage_template_id := p_kdtl_rec.coverage_id;
10175 l_line_rec.standard_cov_yn := p_kdtl_rec.standard_cov_yn;
10176 l_line_rec.price_uom := p_kdtl_rec.price_uom_tl;
10177
10178 --l_line_rec.line_renewal_type := p_extwar_rec.line_renewal_type;
10179 IF l_line_rec.warranty_flag = 'W'
10180 THEN
10181 IF l_line_rec.srv_sdt > SYSDATE
10182 THEN
10183 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10184 ELSE
10185 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10186 END IF;
10187
10188 l_line_rec.line_sts_code := l_sts_code;
10189 l_line_rec.line_renewal_type := 'DNR' ;
10190
10191 ELSE
10192 get_sts_code (p_kdtl_rec.prod_sts_code,
10193 NULL,
10194 l_ste_code,
10195 l_sts_code
10196 );
10197
10198 IF l_ste_code = 'ENTERED'
10199 THEN
10200 l_line_rec.line_sts_code := l_sts_code;
10201 ELSE
10202 l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
10203
10204 IF l_status = 'ACTIVE'
10205 THEN
10206 IF l_line_rec.srv_sdt > SYSDATE
10207 THEN
10208 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10209 ELSE
10210 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10211 END IF;
10212 ELSE
10213 get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
10214 END IF;
10215
10216 l_line_rec.line_sts_code := l_sts_code;
10217 END IF;
10218 END IF;
10219
10220 l_line_rec.SOURCE := NULL;
10221 --errorout_n ('srv sdt'||p_extwar_rec.srv_sdt||' '||p_extwar_rec.srv_edt);
10222 l_sc_ctr := 0;
10223
10224 FOR l_sales_credit_rec IN
10225 l_sales_credit_csr (p_kdtl_rec.service_line_id)
10226 LOOP
10227 l_sc_ctr := l_sc_ctr + 1;
10228 l_salescredit_tbl (l_sc_ctr).ctc_id := l_sales_credit_rec.ctc_id;
10229 l_salescredit_tbl (l_sc_ctr).sales_credit_type_id :=
10230 l_sales_credit_rec.sales_credit_type_id1;
10231 l_salescredit_tbl (l_sc_ctr).PERCENT :=
10232 l_sales_credit_rec.PERCENT;
10233 l_salescredit_tbl (l_sc_ctr).sales_group_id :=
10234 l_sales_credit_rec.sales_group_id;
10235 END LOOP; -- For l_sales_credit_rec IN l_sales_credit_csr
10236
10237 oks_extwarprgm_pvt.create_k_service_lines
10238 (p_k_line_rec => l_line_rec,
10239 p_contact_tbl => p_contact_tbl_in,
10240 p_salescredit_tbl_in => l_salescredit_tbl,
10241 p_caller => 'ST',
10242 x_order_error => l_temp,
10243 x_service_line_id => l_lineid,
10244 x_return_status => l_return_status,
10245 x_msg_count => x_msg_count,
10246 x_msg_data => x_msg_data
10247 );
10248
10249 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10250 THEN
10251 fnd_log.STRING
10252 (fnd_log.level_statement,
10253 g_module_current
10254 || '.CREATE_K_SYSTEM_TRF.create_k_service_line',
10255 'oks_extwarprgm_pvt.create_k_service_lines(Return status = '
10256 || l_return_status
10257 || ')'
10258 );
10259 END IF;
10260
10261 IF NOT l_return_status = 'S'
10262 THEN
10263 RAISE g_exception_halt_validation;
10264 ELSE
10265 x_line_id := l_lineid;
10266 END IF;
10267 EXCEPTION
10268 WHEN g_exception_halt_validation
10269 THEN
10270 x_return_status := l_return_status;
10271 NULL;
10272 WHEN OTHERS
10273 THEN
10274 x_return_status := okc_api.g_ret_sts_unexp_error;
10275 okc_api.set_message (g_app_name,
10276 g_unexpected_error,
10277 g_sqlcode_token,
10278 SQLCODE,
10279 g_sqlerrm_token,
10280 SQLERRM
10281 );
10282 END create_contract_line;
10283
10284 PROCEDURE create_contract_subline (
10285 p_kdtl_rec IN contract_trf_rec,
10286 p_hdr_id IN NUMBER,
10287 p_line_id IN NUMBER,
10288 x_subline_id OUT NOCOPY NUMBER,
10289 x_update_top_line OUT NOCOPY VARCHAR2,
10290 x_return_status OUT NOCOPY VARCHAR2,
10291 x_msg_data OUT NOCOPY VARCHAR2,
10292 x_msg_count OUT NOCOPY NUMBER
10293 )
10294 IS
10295 /* Cursor l_Cust_csr IS --29-apr-03
10296
10297 Select csi.last_oe_order_line_id Original_order_line_id
10298 ,csi.inventory_item_id
10299 ,csi.quantity
10300 ,csi.unit_of_measure uom_code
10301 From csi_item_instances csi
10302 Where csi.instance_id = p_kdtl_rec.old_cp_id;
10303 */
10304 CURSOR l_line_sts_csr (p_line_id NUMBER)
10305 IS
10306 SELECT st.ste_code, kl.sts_code
10307 FROM okc_k_lines_b kl, okc_statuses_b st
10308 WHERE kl.ID = p_line_id AND st.code = kl.sts_code;
10309
10310 CURSOR l_getprice_csr (p_line_id NUMBER)
10311 IS
10312 SELECT price_negotiated
10313 FROM okc_k_lines_b
10314 WHERE ID = p_line_id;
10315
10316
10317 CURSOR l_serv_csr (p_serv_id NUMBER)
10318 IS
10319 SELECT DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments )
10320 FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
10321 WHERE b.inventory_item_id = t.inventory_item_id
10322 AND b.organization_id = t.organization_id
10323 AND t.LANGUAGE = USERENV ('LANG')
10324 AND b.inventory_item_id = p_serv_id
10325 AND ROWNUM < 2;
10326
10327 /* CURSOR l_serv_csr (p_serv_id NUMBER)
10328 IS
10329 SELECT b.concatenated_segments description
10330 FROM mtl_system_items_b_kfv b
10331 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
10332 */
10333
10334 l_line_ste_code VARCHAR2 (40);
10335 l_line_sts_code VARCHAR2 (40);
10336 l_covd_rec k_line_covered_level_rec_type;
10337 l_ste_code VARCHAR2 (40);
10338 l_sts_code VARCHAR2 (40);
10339 l_return_status VARCHAR2 (10);
10340 l_days NUMBER;
10341 l_newamt NUMBER;
10342 l_day1price NUMBER;
10343 p_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
10344 l_warranty_flag VARCHAR2 (2);
10345 l_covlvl_id NUMBER;
10346 l_update_top_line VARCHAR2 (1);
10347 l_status VARCHAR2 (40);
10348 l_new_price NUMBER;
10349 l_xfer_days NUMBER;
10350 l_duration NUMBER;
10351 l_timeunits VARCHAR2 (25);
10352 --l_xfer_timeunits VARCHAR2(25);
10353 BEGIN
10354 x_return_status := okc_api.g_ret_sts_success;
10355
10356 /* Open l_Cust_csr;
10357 Fetch l_Cust_csr into l_Cust_rec;
10358 If l_Cust_csr%notfound Then
10359 Close l_Cust_Csr;
10360 IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
10361 fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.CREATE_K_SYSTEM_TRF.ERROR',
10362 'l_Cust_csr Not Found ' );
10363 END IF;
10364 l_return_status := OKC_API.G_RET_STS_ERROR;
10365 OKC_API.set_message(G_APP_NAME,'OKS_CUST_PROD_DTLS_NOT_FOUND','CUSTOMER_PRODUCT',p_kdtl_rec.old_cp_id);
10366 Raise G_EXCEPTION_HALT_VALIDATION;
10367 End if;
10368 Close l_Cust_csr;
10369 */ -- Amount to be prorated
10370 -- Fix for the bug 3405907 Vigandhi 10-feb-2004
10371 IF p_kdtl_rec.service_amount IS NOT NULL
10372 THEN
10373 get_sts_code (p_kdtl_rec.prod_sts_code,
10374 NULL,
10375 l_ste_code,
10376 l_sts_code
10377 );
10378
10379 IF l_ste_code = 'ENTERED'
10380 THEN
10381 --l_days := (trunc(p_kdtl_rec.prod_edt) - trunc(p_kdtl_rec.prod_sdt)) + 1;
10382 --l_day1price := p_kdtl_rec.service_amount / l_days;
10383 --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);
10384
10385 -- Calculations based on partial period.
10386 IF p_kdtl_rec.price_uom_sl IS NULL
10387 THEN
10388 okc_time_util_pub.get_duration
10389 (p_start_date => TRUNC
10390 (p_kdtl_rec.prod_sdt
10391 ),
10392 p_end_date => p_kdtl_rec.prod_edt,
10393 x_duration => l_duration,
10394 x_timeunit => l_timeunits,
10395 x_return_status => l_return_status
10396 );
10397 /*
10398 Okc_time_util_pub.get_duration
10399 (
10400 p_start_date => trunc(l_trfdt),
10401 p_end_date => p_kdtl_rec.prod_edt,
10402 x_duration => l_duration,
10403 x_timeunit => l_xfer_timeunits,
10404 x_return_status => l_return_status
10405 );*/
10406 END IF;
10407
10408 l_days :=
10409 oks_time_measures_pub.get_quantity
10410 (p_kdtl_rec.prod_sdt,
10411 p_kdtl_rec.prod_edt,
10412 NVL (p_kdtl_rec.price_uom_sl,
10413 l_timeunits
10414 ),
10415 p_kdtl_rec.period_type,
10416 p_kdtl_rec.period_start
10417 );
10418 l_xfer_days :=
10419 oks_time_measures_pub.get_quantity
10420 (l_trfdt,
10421 p_kdtl_rec.prod_edt,
10422 NVL (p_kdtl_rec.price_uom_sl,
10423 l_timeunits
10424 ),
10425 p_kdtl_rec.period_type,
10426 p_kdtl_rec.period_start
10427 );
10428 l_newamt :=
10429 oks_extwar_util_pvt.round_currency_amt
10430 ( p_kdtl_rec.service_amount
10431 * l_xfer_days
10432 / l_days,
10433 p_kdtl_rec.service_currency
10434 );
10435 ELSE
10436 OPEN l_getprice_csr (p_kdtl_rec.object_line_id);
10437
10438 FETCH l_getprice_csr
10439 INTO l_new_price;
10440
10441 CLOSE l_getprice_csr;
10442
10443 l_newamt := p_kdtl_rec.service_amount - l_new_price;
10444 END IF;
10445 ELSE
10446 l_newamt := 0;
10447 END IF;
10448
10449 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10450 THEN
10451 fnd_log.STRING (fnd_log.level_statement,
10452 g_module_current
10453 || '.CREATE_K_SYSTEM_TRF.Create_Contract_subline',
10454 'New amount = ' || l_newamt
10455 );
10456 END IF;
10457
10458 l_covd_rec.k_id := p_hdr_id;
10459 l_covd_rec.rty_code := 'CONTRACTTRANSFERORDER';
10460 l_covd_rec.attach_2_line_id := p_line_id;
10461 l_covd_rec.line_number := okc_api.g_miss_char;
10462 l_covd_rec.customer_product_id := p_kdtl_rec.old_cp_id;
10463 l_covd_rec.product_segment1 := p_kdtl_rec.prod_name;
10464 l_covd_rec.product_desc := p_kdtl_rec.prod_description;
10465 l_covd_rec.product_start_date := TRUNC (l_trfdt);
10466 l_covd_rec.product_end_date := TRUNC (p_kdtl_rec.prod_edt);
10467 l_covd_rec.quantity := p_kdtl_rec.cp_qty;
10468 l_covd_rec.list_price := p_kdtl_rec.service_unit_price;
10469 l_covd_rec.uom_code := p_kdtl_rec.uom_code;
10470 l_covd_rec.negotiated_amount := l_newamt;
10471 l_covd_rec.standard_coverage := p_kdtl_rec.standard_cov_yn;
10472 l_covd_rec.price_uom := p_kdtl_rec.price_uom_sl;
10473 l_covd_rec.toplvl_uom_code := p_kdtl_rec.toplvl_uom_code;
10474 --mchoudha added for bug#5233956
10475 l_covd_rec.toplvl_price_qty := p_kdtl_rec.toplvl_price_qty;
10476
10477 IF p_kdtl_rec.lse_id = 25
10478 THEN
10479 l_warranty_flag := 'E';
10480 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SERVICE'
10481 THEN
10482 l_warranty_flag := 'S';
10483 ELSIF p_kdtl_rec.lse_id = 18
10484 THEN
10485 l_warranty_flag := 'W';
10486 l_covd_rec.line_renewal_type := 'DNR' ;
10487 ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SUBSCRIPTION'
10488 THEN
10489 l_warranty_flag := 'SU';
10490
10491
10492 END IF;
10493
10494 l_covd_rec.warranty_flag := l_warranty_flag;
10495 -- l_covd_rec.line_renewal_type := p_kdtl_rec.cp_line_renewal_type;
10496 l_covd_rec.currency_code := p_kdtl_rec.service_currency;
10497
10498 OPEN l_serv_csr (p_kdtl_rec.service_inventory_id);
10499
10500 FETCH l_serv_csr
10501 INTO l_covd_rec.attach_2_line_desc;
10502
10503 CLOSE l_serv_csr;
10504
10505 l_covd_rec.prod_item_id := p_kdtl_rec.prod_inventory_item;
10506
10507 IF l_covd_rec.warranty_flag = 'W'
10508 THEN
10509 IF l_covd_rec.product_start_date > SYSDATE
10510 THEN
10511 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10512 ELSE
10513 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10514 END IF;
10515
10516 l_covd_rec.product_sts_code := l_sts_code;
10517 ELSE
10518 get_sts_code (p_kdtl_rec.prod_sts_code,
10519 NULL,
10520 l_ste_code,
10521 l_sts_code
10522 );
10523
10524 IF l_ste_code = 'ENTERED'
10525 THEN
10526 l_covd_rec.product_sts_code := l_sts_code;
10527 ELSE
10528 l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
10529
10530 IF l_status = 'ACTIVE'
10531 THEN
10532 IF l_covd_rec.product_start_date > SYSDATE
10533 THEN
10534 get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10535 ELSE
10536 get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10537 END IF;
10538 ELSE
10539 get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
10540 END IF;
10541
10542 l_covd_rec.product_sts_code := l_sts_code;
10543 END IF;
10544 END IF;
10545
10546 oks_extwarprgm_pvt.create_k_covered_levels
10547 (p_k_covd_rec => l_covd_rec,
10548 p_price_attribs => p_price_attribs_in,
10549 p_caller => 'ST',
10550 x_order_error => l_temp,
10551 x_covlvl_id => l_covlvl_id,
10552 x_update_line => l_update_top_line,
10553 x_return_status => l_return_status,
10554 x_msg_count => x_msg_count,
10555 x_msg_data => x_msg_data
10556 );
10557
10558 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10559 THEN
10560 fnd_log.STRING (fnd_log.level_event,
10561 g_module_current
10562 || '.CREATE_K_SYSTEM_TRF.Create_Contract_subline',
10563 'New amount = ' || l_newamt
10564 );
10565 END IF;
10566
10567 IF NOT l_return_status = 'S'
10568 THEN
10569 RAISE g_exception_halt_validation;
10570 ELSE
10571 x_subline_id := l_covlvl_id;
10572 x_update_top_line := l_update_top_line;
10573 END IF;
10574 EXCEPTION
10575 WHEN g_exception_halt_validation
10576 THEN
10577 x_return_status := l_return_status;
10578 NULL;
10579 WHEN OTHERS
10580 THEN
10581 x_return_status := okc_api.g_ret_sts_unexp_error;
10582 okc_api.set_message (g_app_name,
10583 g_unexpected_error,
10584 g_sqlcode_token,
10585 SQLCODE,
10586 g_sqlerrm_token,
10587 SQLERRM
10588 );
10589 END create_contract_subline;
10590
10591 PROCEDURE create_billing_schedule (
10592 p_line_id IN NUMBER,
10593 p_covlvl_id IN NUMBER,
10594 P_period_start IN Varchar2,
10595 p_start_date IN DATE,
10596 p_end_date IN DATE,
10597 p_update_line IN VARCHAR2,
10598 x_return_status OUT NOCOPY VARCHAR2,
10599 x_msg_data OUT NOCOPY VARCHAR2,
10600 x_msg_count OUT NOCOPY NUMBER
10601 )
10602 IS
10603 l_strmlvl_id NUMBER;
10604 l_sll_tbl oks_bill_sch.streamlvl_tbl;
10605 l_return_status VARCHAR2 (1);
10606 l_duration NUMBER;
10607 l_timeunits VARCHAR2 (25);
10608 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
10609 l_uom_code Varchar2(240);
10610 Cursor get_day_uom_code IS
10611 select uom_code
10612 from okc_time_code_units_v
10613 where tce_code='DAY'
10614 and quantity=1;
10615
10616
10617
10618 BEGIN
10619 l_strmlvl_id := check_strmlvl_exists (p_line_id);
10620
10621 IF l_strmlvl_id IS NULL
10622 THEN
10623
10624 If p_period_start = 'CALENDAR' Then
10625 Open get_day_uom_code;
10626 Fetch get_day_uom_code into l_uom_code;
10627 Close get_day_uom_code;
10628
10629
10630 l_sll_tbl (1).cle_id := p_line_id;
10631 l_sll_tbl (1).sequence_no := 1;
10632 l_sll_tbl (1).level_periods := 1;
10633 l_sll_tbl (1).uom_code := l_uom_code;
10634 l_sll_tbl (1).uom_per_period := p_end_date - p_start_date + 1;
10635 l_sll_tbl (1).invoice_offset_days := 0;
10636 l_sll_tbl (1).interface_offset_days := 0;
10637 l_sll_tbl (1).level_amount := null;
10638
10639
10640
10641
10642
10643 Else
10644 okc_time_util_pub.get_duration
10645 (p_start_date => TRUNC
10646 (p_start_date
10647 ),
10648 p_end_date => p_end_date,
10649 x_duration => l_duration,
10650 x_timeunit => l_timeunits,
10651 x_return_status => l_return_status
10652 );
10653
10654 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10655 THEN
10656 fnd_log.STRING
10657 (fnd_log.level_event,
10658 g_module_current
10659 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10660 'Okc_time_util_pub.get_duration(Return status = '
10661 || l_return_status
10662 || ',Duration = '
10663 || l_duration
10664 || ',Time Units = '
10665 || l_timeunits
10666 || ')'
10667 );
10668 END IF;
10669
10670 IF NOT l_return_status = 'S'
10671 THEN
10672 RAISE g_exception_halt_validation;
10673 END IF;
10674
10675 l_sll_tbl (1).cle_id := p_line_id;
10676 --l_sll_tbl(1).billing_type := 'T';
10677 l_sll_tbl (1).uom_code := l_timeunits;
10678 l_sll_tbl (1).sequence_no := '1';
10679 l_sll_tbl (1).level_periods := '1';
10680 --l_sll_tbl (1).start_date := TRUNC (l_trfdt);
10681 l_sll_tbl (1).uom_per_period := l_duration;
10682 l_sll_tbl (1).advance_periods := NULL;
10683 l_sll_tbl (1).level_amount := NULL;
10684 l_sll_tbl (1).invoice_offset_days := NULL;
10685 l_sll_tbl (1).interface_offset_days := NULL;
10686
10687 End If;
10688 oks_bill_sch.create_bill_sch_rules
10689 (p_billing_type => 'T',
10690 p_sll_tbl => l_sll_tbl,
10691 p_invoice_rule_id => -2,
10692 x_bil_sch_out_tbl => l_bil_sch_out,
10693 x_return_status => l_return_status
10694 );
10695
10696 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10697 THEN
10698 fnd_log.STRING
10699 (fnd_log.level_event,
10700 g_module_current
10701 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10702 'oks_bill_sch.create_bill_sch_rules(Return status = '
10703 || l_return_status
10704 || ')'
10705 );
10706 END IF;
10707
10708 IF l_return_status <> okc_api.g_ret_sts_success
10709 THEN
10710 okc_api.set_message (g_app_name,
10711 g_required_value,
10712 g_col_name_token,
10713 'Sched Billing Rule (LINE)'
10714 );
10715 RAISE g_exception_halt_validation;
10716 END IF;
10717 /* OKS_BILL_UTIL_PUB.CREATE_BCL_FOR_OM
10718 (
10719 P_LINE_ID => p_line_id ,
10720 X_RETURN_STATUS => l_return_status
10721 );
10722 If(G_FND_LOG_OPTION = 'Y') Then
10723 FND_FILE.PUT_LINE (FND_FILE.LOG,'IBNEW :- CREATE_BCL_FOR_OM ' || l_return_status );
10724 OKS_RENEW_PVT.DEBUG_LOG( 'OKS_EXTWARPRGM_PVT.CREATE_K_SYSTEM_TRF :: CREATE_BCL_FOR_OM '|| l_return_status);
10725 End if;
10726
10727 If Not l_return_status = 'S' then
10728 Raise G_EXCEPTION_HALT_VALIDATION;
10729 End if;
10730 */
10731 ELSE
10732 IF check_lvlelements_exists (p_line_id)
10733 THEN
10734 IF p_update_line = 'Y'
10735 THEN
10736 oks_bill_sch.update_om_sll_date
10737 (p_top_line_id => p_line_id,
10738 x_return_status => l_return_status,
10739 x_msg_count => x_msg_count,
10740 x_msg_data => x_msg_data
10741 );
10742
10743 -- FND_FILE.PUT_LINE( fnd_file.LOG, 'IBNEW :- Update_OM_SLL_Date ' || l_return_status );
10744 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
10745 )
10746 THEN
10747 fnd_log.STRING
10748 (fnd_log.level_event,
10749 g_module_current
10750 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10751 'oks_bill_sch.update_om_sll_date(Return status = '
10752 || l_return_status
10753 || ')'
10754 );
10755 END IF;
10756
10757 IF NOT l_return_status = 'S'
10758 THEN
10759 RAISE g_exception_halt_validation;
10760 END IF;
10761 ELSE
10762 oks_bill_sch.create_bill_sch_cp
10763 (p_top_line_id => p_line_id,
10764 p_cp_line_id => p_covlvl_id,
10765 p_cp_new => 'Y',
10766 x_return_status => l_return_status,
10767 x_msg_count => x_msg_count,
10768 x_msg_data => x_msg_data
10769 );
10770
10771 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
10772 )
10773 THEN
10774 fnd_log.STRING
10775 (fnd_log.level_event,
10776 g_module_current
10777 || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10778 'oks_bill_sch.create_bill_sch_cp(Return status = '
10779 || l_return_status
10780 || ')'
10781 );
10782 END IF;
10783
10784 IF NOT l_return_status = 'S'
10785 THEN
10786 RAISE g_exception_halt_validation;
10787 END IF;
10788 END IF;
10789 /* OKS_BILL_UTIL_PUB.CREATE_BCL_FOR_OM
10790 (
10791 P_LINE_ID => p_line_id ,
10792 X_RETURN_STATUS => l_return_status
10793 );
10794 -- FND_FILE.PUT_LINE (FND_FILE.LOG,'IBNEW :- CREATE_BCL_FOR_OM ' || l_return_status );
10795 If(G_FND_LOG_OPTION = 'Y') Then
10796 OKS_RENEW_PVT.DEBUG_LOG( 'OKS_EXTWARPRGM_PVT.CREATE_K_SYSTEM_TRF :: CREATE_BCL_FOR_OM '|| l_return_status);
10797 End if;
10798 If Not l_return_status = 'S' then
10799 Raise G_EXCEPTION_HALT_VALIDATION;
10800 End if;
10801 */
10802 ELSE
10803 okc_api.set_message (g_app_name,
10804 g_required_value,
10805 g_col_name_token,
10806 'level elements NOT EXIST'
10807 );
10808 RAISE g_exception_halt_validation;
10809 END IF;
10810 END IF; -- strmlvl end
10811
10812 x_return_status := l_return_status;
10813 EXCEPTION
10814 WHEN g_exception_halt_validation
10815 THEN
10816 x_return_status := l_return_status;
10817 NULL;
10818 WHEN OTHERS
10819 THEN
10820 x_return_status := okc_api.g_ret_sts_unexp_error;
10821 okc_api.set_message (g_app_name,
10822 g_unexpected_error,
10823 g_sqlcode_token,
10824 SQLCODE,
10825 g_sqlerrm_token,
10826 SQLERRM
10827 );
10828 END;
10829 BEGIN
10830 x_return_status := okc_api.g_ret_sts_success;
10831 l_old_cp_id := 0;
10832
10833 IF p_kdtl_tbl.COUNT > 0
10834 THEN
10835 l_ctr := p_kdtl_tbl.FIRST;
10836
10837 LOOP
10838
10839
10840 get_sts_code (NULL,
10841 p_kdtl_tbl (l_ctr).hdr_sts,
10842 l_ste_code,
10843 l_sts_code
10844 );
10845
10846 IF l_ste_code = 'HOLD'
10847 THEN
10848 l_return_status := okc_api.g_ret_sts_error;
10849
10850 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
10851 THEN
10852 fnd_log.STRING (fnd_log.level_error,
10853 g_module_current
10854 || '.CREATE_CONTRACT_IBTERMINATE.ERROR',
10855 'Contract in QA_HOLD status'
10856 );
10857 END IF;
10858
10859 okc_api.set_message (g_app_name,
10860 g_invalid_value,
10861 g_col_name_token,
10862 'Termination not allowed .Contract '
10863 || p_kdtl_tbl (l_ctr).contract_number
10864 || 'is in QA_HOLD status'
10865 );
10866 RAISE g_exception_halt_validation;
10867 END IF;
10868
10869 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
10870 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
10871 END LOOP;
10872 END IF;
10873
10874
10875 IF p_kdtl_tbl.COUNT > 0
10876 THEN
10877 l_ctr := p_kdtl_tbl.FIRST;
10878
10879 LOOP
10880 --Fix for Bug 5406201
10881 l_clev_tbl_in.delete;
10882 l_chrv_tbl_in.delete;
10883 okc_context.set_okc_org_context
10884 (p_kdtl_tbl (l_ctr).hdr_org_id,
10885 p_kdtl_tbl (l_ctr).organization_id
10886 );
10887 get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
10888 l_party_id,
10889 l_party_name
10890 );
10891
10892 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
10893
10894 FETCH l_serv_csr
10895 INTO l_service_name;
10896
10897 CLOSE l_serv_csr;
10898
10899 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10900 THEN
10901 fnd_log.STRING (fnd_log.level_statement,
10902 g_module_current || '.CREATE_K_SYSTEM_TRF',
10903 'new cust acct id = '
10904 || p_kdtl_tbl (l_ctr).new_account_id
10905 || ',party id = '
10906 || l_party_id
10907 );
10908 END IF;
10909
10910 IF p_kdtl_tbl (l_ctr).party_id <> l_party_id
10911 THEN
10912 l_inst_dtls_tbl.DELETE;
10913 l_ptr := l_ptr + 1;
10914 l_trf_option := NULL;
10915
10916 OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
10917
10918 FETCH l_cov_csr
10919 INTO l_cov_rec;
10920
10921 IF l_cov_csr%FOUND
10922 THEN
10923 l_trf_option := l_cov_rec.transfer_option;
10924 END IF;
10925
10926 --errorout_n('l_trf_option'||l_trf_option);
10927 CLOSE l_cov_csr;
10928
10929 l_trfdt := p_kdtl_tbl (l_ctr).transfer_date;
10930
10931 IF (TRUNC (l_trfdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
10932 THEN
10933 l_trfdt := p_kdtl_tbl (l_ctr).prod_sdt;
10934 END IF;
10935
10936 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10937 THEN
10938 fnd_log.STRING (fnd_log.level_statement,
10939 g_module_current || '.CREATE_K_SYSTEM_TRF',
10940 'Transfer Option = '
10941 || l_trf_option
10942 || ',For service line = '
10943 || p_kdtl_tbl (l_ctr).service_line_id
10944 );
10945 END IF;
10946
10947 /*-------------------------------------------------*/
10948 -- If Transfer Option Is "No Change to Contract"
10949 /*-------------------------------------------------*/
10950 IF l_trf_option = 'NO_CHANGE'
10951 THEN
10952 NULL;
10953 END IF;
10954
10955 /*-------------------------------------------------*/
10956 --If Transfer Option Is "Terminate upon Transfer"
10957 /*-------------------------------------------------*/
10958 /*----------------------------------------------------------------------------------------*/
10959 --If Transfer option Is "No Change if Transfer within group otherwise Terminate Contract".
10960 /*----------------------------------------------------------------------------------------*/
10961 IF l_trf_option IN ('TERM', 'TERM_NO_REL')
10962 THEN
10963 l_ptr := 1;
10964 --Check if the CUstomers are related by the value defined in profile
10965 l_relationship := NULL;
10966
10967 IF l_trf_option = 'TERM_NO_REL'
10968 THEN
10969 l_relationship_type :=
10970 fnd_profile.VALUE ('OKS_TRF_PARTY_REL');
10971 get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
10972 l_new_party_id,
10973 l_new_party_name
10974 );
10975 get_party_id (p_kdtl_tbl (l_ctr).old_account_id,
10976 l_old_party_id,
10977 l_old_party_name
10978 );
10979
10980 OPEN l_cust_rel_csr (l_old_party_id,
10981 l_new_party_id,
10982 l_relationship_type,
10983 p_kdtl_tbl (l_ctr).transfer_date
10984 );
10985
10986 FETCH l_cust_rel_csr
10987 INTO l_relationship;
10988
10989 CLOSE l_cust_rel_csr;
10990
10991 IF fnd_log.level_statement >=
10992 fnd_log.g_current_runtime_level
10993 THEN
10994 fnd_log.STRING
10995 (fnd_log.level_statement,
10996 g_module_current
10997 || '.CREATE_K_SYSTEM_TRF',
10998 'TERM_NO_REL profile relationship = '
10999 || l_relationship_type
11000 || ', Actual Relationship = '
11001 || l_relationship
11002 );
11003 END IF;
11004 END IF;
11005
11006 IF l_relationship IS NULL
11007 THEN
11008
11009
11010 -- Check Product status
11011 get_sts_code (NULL,
11012 p_kdtl_tbl (l_ctr).prod_sts_code,
11013 l_ste_code,
11014 l_sts_code
11015 );
11016
11017 IF fnd_log.level_statement >=
11018 fnd_log.g_current_runtime_level
11019 THEN
11020 fnd_log.STRING (fnd_log.level_statement,
11021 g_module_current
11022 || '.CREATE_K_SYSTEM_TRF',
11023 'Product status Code = '
11024 || p_kdtl_tbl (l_ctr).prod_sts_code
11025 || ', Ste code = '
11026 || l_ste_code
11027 );
11028 END IF;
11029
11030 IF l_ste_code <> 'ENTERED'
11031 THEN
11032 --Terminate the CUrrent Owners Contract subline with date terminated as Transfer date
11033 IF fnd_log.level_statement >=
11034 fnd_log.g_current_runtime_level
11035 THEN
11036 fnd_log.STRING
11037 (fnd_log.level_statement,
11038 g_module_current || '.CREATE_K_SYSTEM_TRF',
11039 'OKS Raise credit memo profile option value ='
11040 || fnd_profile.VALUE
11041 ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
11042 );
11043 END IF;
11044
11045 /*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
11046 l_suppress_credit := 'N';
11047 ELSE
11048 l_suppress_credit := 'Y';
11049 END IF;*/
11050 l_credit_amount :=
11051 oks_ib_util_pvt.get_credit_option
11052 (p_kdtl_tbl (l_ctr).party_id,
11053 p_kdtl_tbl (l_ctr).hdr_org_id,
11054 p_kdtl_tbl (l_ctr).transfer_date
11055 );
11056
11057 IF UPPER (l_credit_amount) = 'FULL'
11058 THEN
11059 l_full_credit := 'Y';
11060 l_suppress_credit := 'N';
11061 --l_trfdt := p_kdtl_tbl( l_ctr ).prod_sdt;
11062 l_term_date_flag := 'N';
11063 ELSIF UPPER (l_credit_amount) = 'NONE'
11064 THEN
11065 l_suppress_credit := 'Y';
11066 l_full_credit := 'N';
11067 l_term_date_flag := 'N';
11068 ELSIF UPPER (l_credit_amount) = 'CALCULATED'
11069 THEN
11070 l_suppress_credit := 'N';
11071 l_full_credit := 'N';
11072 l_term_date_flag := 'N';
11073 END IF;
11074
11075 IF (TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11076 TRUNC (l_trfdt)
11077 )
11078 THEN
11079 l_suppress_credit := 'Y';
11080 l_full_credit := 'N';
11081 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11082 l_term_date_flag := 'Y';
11083 END IF;
11084
11085
11086
11087 oks_bill_rec_pub.pre_terminate_cp
11088 (p_calledfrom => -1,
11089 p_cle_id => p_kdtl_tbl
11090 (l_ctr).object_line_id,
11091 p_termination_date => TRUNC (l_trfdt),
11092 p_terminate_reason => 'TRF',
11093 p_override_amount => NULL,
11094 p_con_terminate_amount => NULL,
11095 p_termination_amount => NULL,
11096 p_suppress_credit => l_suppress_credit,
11097 --p_existing_credit => 0,
11098 p_full_credit => l_full_credit,
11099 --'N',
11100 p_term_date_flag => l_term_date_flag,
11101 p_term_cancel_source => 'IBTRANSFER',
11102 x_return_status => l_return_status
11103 );
11104
11105 IF (fnd_log.level_event >=
11106 fnd_log.g_current_runtime_level
11107 )
11108 THEN
11109 fnd_log.STRING
11110 (fnd_log.level_event,
11111 g_module_current || '.CREATE_K_SYSTEM_TRF',
11112 'oks_bill_rec_pub.Pre_terminate_cp(Return status ='
11113 || l_return_status
11114 || ')'
11115 );
11116 END IF;
11117
11118 IF NOT l_return_status = okc_api.g_ret_sts_success
11119 THEN
11120 RAISE g_exception_halt_validation;
11121 END IF;
11122
11123 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
11124 TRUNC (l_trfdt);
11125 date_terminated := NULL;
11126 oks_ib_util_pvt.check_termcancel_lines
11127 (p_kdtl_tbl (l_ctr).service_line_id,
11128 'SL',
11129 'T',
11130 date_terminated
11131 );
11132
11133 IF date_terminated IS NOT NULL
11134 THEN
11135 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11136
11137 l_clev_tbl_in (1).ID :=
11138 p_kdtl_tbl (l_ctr).service_line_id;
11139 l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
11140 l_clev_tbl_in (1).trn_code := 'TRF';
11141 l_clev_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11142 If TRUNC (date_terminated)<= trunc(sysdate) Then
11143 l_clev_tbl_in (1).sts_code := l_sts_code;
11144 End If;
11145
11146 okc_contract_pub.update_contract_line
11147 (p_api_version => l_api_version,
11148 p_init_msg_list => l_init_msg_list,
11149 p_restricted_update => okc_api.g_true,
11150 x_return_status => l_return_status,
11151 x_msg_count => x_msg_count,
11152 x_msg_data => x_msg_data,
11153 p_clev_tbl => l_clev_tbl_in,
11154 x_clev_tbl => l_clev_tbl_out
11155 );
11156
11157 IF (fnd_log.level_event >=
11158 fnd_log.g_current_runtime_level
11159 )
11160 THEN
11161 fnd_log.STRING
11162 (fnd_log.level_event,
11163 g_module_current || '.CREATE_K_SYSTEM_TRF',
11164 'okc_contract_pub.update_contract_line(Return status = '
11165 || l_return_status
11166 || ')'
11167 );
11168 END IF;
11169
11170 IF NOT l_return_status = okc_api.g_ret_sts_success
11171 THEN
11172 RAISE g_exception_halt_validation;
11173 END IF;
11174 END IF;
11175
11176 date_terminated := NULL;
11177 oks_ib_util_pvt.check_termcancel_lines
11178 (p_kdtl_tbl (l_ctr).hdr_id,
11179 'TL',
11180 'T',
11181 date_terminated
11182 );
11183
11184 IF date_terminated IS NOT NULL
11185 THEN
11186 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11187
11188 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
11189 l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
11190 l_chrv_tbl_in (1).trn_code := 'TRF';
11191 l_chrv_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11192 If TRUNC (date_terminated)<= trunc(sysdate) Then
11193 l_chrv_tbl_in (1).sts_code := l_sts_code;
11194 End If;
11195
11196 okc_contract_pub.update_contract_header
11197 (p_api_version => l_api_version,
11198 p_init_msg_list => l_init_msg_list,
11199 p_restricted_update => okc_api.g_true,
11200 x_return_status => l_return_status,
11201 x_msg_count => x_msg_count,
11202 x_msg_data => x_msg_data,
11203 p_chrv_tbl => l_chrv_tbl_in,
11204 x_chrv_tbl => l_chrv_tbl_out
11205 );
11206
11207 IF (fnd_log.level_event >=
11208 fnd_log.g_current_runtime_level
11209 )
11210 THEN
11211 fnd_log.STRING
11212 (fnd_log.level_event,
11213 g_module_current
11214 || '.Update_Hdr_Dates.external_call.after',
11215 'okc_contract_pub.update_contract_header(Return status = '
11216 || l_return_status
11217 || ')'
11218 );
11219 END IF;
11220
11221 IF NOT l_return_status = okc_api.g_ret_sts_success
11222 THEN
11223 RAISE g_exception_halt_validation;
11224 END IF;
11225 END IF;
11226
11227 launch_workflow
11228 ( 'INSTALL BASE ACTIVITY : TRANSFER TERMINATE SUBLINE '
11229 || fnd_global.local_chr (10)
11230 || 'Contract Number : '
11231 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
11232 || fnd_global.local_chr (10)
11233 || 'Service Terminated : '
11234 || l_service_name
11235 );
11236 ELSIF l_ste_code = 'ENTERED'
11237 THEN
11238 IF (TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11239 TRUNC (l_trfdt)
11240 )
11241 THEN
11242 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11243 END IF;
11244
11245 -- added for the bug # 6000133
11246 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11247
11248 oks_change_status_pvt.update_line_status
11249 (x_return_status => l_return_status,
11250 x_msg_data => x_msg_data,
11251 x_msg_count => x_msg_count,
11252 p_init_msg_list => 'F',
11253 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11254 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
11255 p_new_sts_code => l_sts_code,
11256 p_canc_reason_code => 'TRANSFER',
11257 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11258 p_old_ste_code => 'ENTERED',
11259 p_new_ste_code => 'CANCELLED',
11260 p_term_cancel_source => 'IBTRANSFER',
11261 p_date_cancelled => TRUNC (l_trfdt),
11262 p_comments => NULL,
11263 p_validate_status => 'N'
11264 );
11265
11266 IF (fnd_log.level_event >=
11267 fnd_log.g_current_runtime_level
11268 )
11269 THEN
11270 fnd_log.STRING
11271 (fnd_log.level_event,
11272 g_module_current || '.CREATE_K_SYSTEM_TRF',
11273 'okc_contract_pub.update_contract_line(Return status ='
11274 || l_return_status
11275 || ')'
11276 );
11277 END IF;
11278
11279 IF NOT l_return_status = okc_api.g_ret_sts_success
11280 THEN
11281 RAISE g_exception_halt_validation;
11282 END IF;
11283
11284 l_inst_dtls_tbl (l_ptr).date_cancelled :=
11285 TRUNC (l_trfdt);
11286 date_cancelled := NULL;
11287 oks_ib_util_pvt.check_termcancel_lines
11288 (p_kdtl_tbl (l_ctr).service_line_id,
11289 'SL',
11290 'C',
11291 date_cancelled
11292 );
11293
11294 IF date_cancelled IS NOT NULL
11295 THEN
11296
11297 -- added for the bug # 6000133
11298 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11299
11300 oks_change_status_pvt.update_line_status
11301 (x_return_status => l_return_status,
11302 x_msg_data => x_msg_data,
11303 x_msg_count => x_msg_count,
11304 p_init_msg_list => 'F',
11305 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11306 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
11307 p_new_sts_code => l_sts_code,
11308 p_canc_reason_code => 'TRANSFER',
11309 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11310 p_old_ste_code => 'ENTERED',
11311 p_new_ste_code => 'CANCELLED',
11312 p_term_cancel_source => 'IBTRANSFER',
11313 p_date_cancelled => TRUNC
11314 (date_cancelled),
11315 p_comments => NULL,
11316 p_validate_status => 'N'
11317 );
11318
11319 IF (fnd_log.level_event >=
11320 fnd_log.g_current_runtime_level
11321 )
11322 THEN
11323 fnd_log.STRING
11324 (fnd_log.level_event,
11325 g_module_current || '.CREATE_K_SYSTEM_TRF',
11326 'okc_contract_pub.update_contract_line(Return status = '
11327 || l_return_status
11328 || ')'
11329 );
11330 END IF;
11331
11332 IF NOT l_return_status = okc_api.g_ret_sts_success
11333 THEN
11334 RAISE g_exception_halt_validation;
11335 END IF;
11336 END IF;
11337
11338 date_cancelled := NULL;
11339 oks_ib_util_pvt.check_termcancel_lines
11340 (p_kdtl_tbl (l_ctr).hdr_id,
11341 'TL',
11342 'C',
11343 date_cancelled
11344 );
11345
11346 IF date_cancelled IS NOT NULL
11347 THEN
11348
11349 -- added for the bug # 6000133
11350 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11351
11352 oks_change_status_pvt.update_header_status
11353 (x_return_status => l_return_status,
11354 x_msg_data => x_msg_data,
11355 x_msg_count => x_msg_count,
11356 p_init_msg_list => 'F',
11357 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11358 p_new_sts_code => l_sts_code,
11359 p_canc_reason_code => 'TRANSFER',
11360 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11361 p_comments => NULL,
11362 p_term_cancel_source => 'IBTRANSFER',
11363 p_date_cancelled => TRUNC
11364 (date_cancelled),
11365 p_validate_status => 'N'
11366 );
11367
11368 IF (fnd_log.level_event >=
11369 fnd_log.g_current_runtime_level
11370 )
11371 THEN
11372 fnd_log.STRING
11373 (fnd_log.level_event,
11374 g_module_current || '.CREATE_K_SYSTEM_TRF',
11375 'oks_change_status_pvt.Update_header_status(Return status = '
11376 || l_return_status
11377 || ')'
11378 );
11379 END IF;
11380
11381 IF NOT l_return_status = okc_api.g_ret_sts_success
11382 THEN
11383 RAISE g_exception_halt_validation;
11384 END IF;
11385 END IF; --Date_Cancelled Is Not Null
11386 END IF; -- ste_code <> 'ENTERED'
11387
11388 l_date_terminated := NULL;
11389 l_subline_price := NULL;
11390
11391 OPEN l_subline_csr (p_kdtl_tbl (l_ctr).object_line_id);
11392
11393 FETCH l_subline_csr
11394 INTO l_date_terminated, l_subline_price;
11395
11396 CLOSE l_subline_csr;
11397
11398 l_inst_dtls_tbl (l_ptr).transaction_date :=
11399 (p_kdtl_tbl (l_ctr).transaction_date);
11400 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
11401 l_inst_dtls_tbl (l_ptr).system_id :=
11402 p_kdtl_tbl (l_ctr).system_id;
11403 l_inst_dtls_tbl (l_ptr).transfer_option := l_trf_option;
11404 l_inst_dtls_tbl (l_ptr).instance_id_new :=
11405 p_kdtl_tbl (l_ctr).instance_id;
11406 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
11407 l_subline_price;
11408 --l_kdtl_tbl( l_ctr ).service_amount;
11409 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
11410 p_kdtl_tbl (l_ctr).cp_qty;
11411 l_inst_dtls_tbl (l_ptr).new_contract_id :=
11412 p_kdtl_tbl (l_ctr).hdr_id;
11413 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
11414 p_kdtl_tbl (l_ctr).hdr_sdt;
11415 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
11416 p_kdtl_tbl (l_ctr).hdr_edt;
11417 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
11418 p_kdtl_tbl (l_ctr).service_line_id;
11419 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
11420 p_kdtl_tbl (l_ctr).service_sdt;
11421 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
11422 p_kdtl_tbl (l_ctr).service_edt;
11423 l_inst_dtls_tbl (l_ptr).new_subline_id :=
11424 p_kdtl_tbl (l_ctr).object_line_id;
11425 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
11426 p_kdtl_tbl (l_ctr).prod_sdt;
11427 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
11428 p_kdtl_tbl (l_ctr).prod_edt;
11429 l_inst_dtls_tbl (l_ptr).new_customer :=
11430 p_kdtl_tbl (l_ctr).old_account_id;
11431 l_inst_dtls_tbl (l_ptr).new_k_status :=
11432 p_kdtl_tbl (l_ctr).hdr_sts;
11433 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
11434 p_kdtl_tbl (l_ctr).service_amount;
11435 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
11436 p_kdtl_tbl (l_ctr).cp_qty;
11437 l_inst_dtls_tbl (l_ptr).old_contract_id :=
11438 p_kdtl_tbl (l_ctr).hdr_id;
11439 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
11440 p_kdtl_tbl (l_ctr).hdr_sdt;
11441 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
11442 p_kdtl_tbl (l_ctr).hdr_edt;
11443 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
11444 p_kdtl_tbl (l_ctr).service_line_id;
11445 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
11446 p_kdtl_tbl (l_ctr).service_sdt;
11447 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
11448 p_kdtl_tbl (l_ctr).service_edt;
11449 l_inst_dtls_tbl (l_ptr).old_subline_id :=
11450 p_kdtl_tbl (l_ctr).object_line_id;
11451 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
11452 p_kdtl_tbl (l_ctr).prod_sdt;
11453 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
11454 p_kdtl_tbl (l_ctr).prod_edt;
11455 l_inst_dtls_tbl (l_ptr).old_customer :=
11456 p_kdtl_tbl (l_ctr).old_account_id;
11457 l_inst_dtls_tbl (l_ptr).old_k_status :=
11458 p_kdtl_tbl (l_ctr).hdr_sts;
11459 END IF; -- l_relation_ship = null
11460 END IF; --l_trf_option in ( 'TERM','TERM_NO_REL')
11461
11462 /*------------------------------------------------------------------------------*/
11463 -- If Transfer option is "Transfer service to new owner, terminate old service".
11464 /*-------------------------------------------------------------------------------*/
11465 IF l_trf_option IN ('TRANS', 'TRANS_NO_REL')
11466 THEN
11467 l_ptr := 1;
11468
11469 -- Check Subline status
11470 get_sts_code (NULL,
11471 p_kdtl_tbl (l_ctr).prod_sts_code,
11472 l_ste_code,
11473 l_sts_code
11474 );
11475 --Check if the Customers are related by the value defined in profile for Transfer option 'TRANS_NO_REL'
11476
11477 /*1*/
11478 IF l_trf_option = 'TRANS_NO_REL'
11479 THEN
11480 l_relationship := NULL;
11481 l_relationship_type :=
11482 fnd_profile.VALUE ('OKS_TRF_PARTY_REL');
11483 get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
11484 l_new_party_id,
11485 l_new_party_name
11486 );
11487 get_party_id (p_kdtl_tbl (l_ctr).old_account_id,
11488 l_old_party_id,
11489 l_old_party_name
11490 );
11491
11492 OPEN l_cust_rel_csr (l_old_party_id,
11493 l_new_party_id,
11494 l_relationship_type,
11495 p_kdtl_tbl (l_ctr).transfer_date
11496 );
11497
11498 FETCH l_cust_rel_csr
11499 INTO l_relationship;
11500
11501 CLOSE l_cust_rel_csr;
11502 /*E1*/
11503 END IF;
11504
11505 IF fnd_log.level_statement >=
11506 fnd_log.g_current_runtime_level
11507 THEN
11508 fnd_log.STRING
11509 (fnd_log.level_statement,
11510 g_module_current || '.CREATE_K_SYSTEM_TRF',
11511 'TRANS_NO_REL profile relationship = '
11512 || l_relationship_type
11513 || ', Actual Relationship = '
11514 || l_relationship
11515 );
11516 END IF;
11517
11518 /*2*/
11519 IF l_relationship IS NULL OR l_trf_option = 'TRANS'
11520 THEN
11521 -- If Contract is in Entered Status then no updates on the original Contract
11522 -- but Create a Contract for New Owner in Entered Status.
11523 IF fnd_log.level_statement >=
11524 fnd_log.g_current_runtime_level
11525 THEN
11526 fnd_log.STRING (fnd_log.level_statement,
11527 g_module_current
11528 || '.CREATE_K_SYSTEM_TRF',
11529 'Product Status code = '
11530 || p_kdtl_tbl (l_ctr).prod_sts_code
11531 || ',Ste code = '
11532 || l_ste_code
11533 );
11534 END IF;
11535
11536 l_create_contract := 'Y';
11537
11538 /*4*/
11539 IF l_ste_code <> 'ENTERED'
11540 THEN
11541 IF fnd_log.level_statement >=
11542 fnd_log.g_current_runtime_level
11543 THEN
11544 fnd_log.STRING
11545 (fnd_log.level_statement,
11546 g_module_current || '.CREATE_K_SYSTEM_TRF',
11547 'OKS Raise credit memo profile option value ='
11548 || fnd_profile.VALUE
11549 ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
11550 );
11551 END IF;
11552
11553 /*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
11554 l_suppress_credit := 'N';
11555 ELSE
11556 l_suppress_credit := 'Y';
11557 END IF;*/
11558 l_credit_amount :=
11559 oks_ib_util_pvt.get_credit_option
11560 (p_kdtl_tbl (l_ctr).party_id,
11561 p_kdtl_tbl (l_ctr).hdr_org_id,
11562 p_kdtl_tbl (l_ctr).transfer_date
11563 );
11564
11565 IF UPPER (l_credit_amount) = 'FULL'
11566 THEN
11567 l_full_credit := 'Y';
11568 l_suppress_credit := 'N';
11569 --l_trfdt := p_kdtl_tbl( l_ctr ).prod_sdt;
11570 l_term_date_flag := 'N';
11571 ELSIF UPPER (l_credit_amount) = 'NONE'
11572 THEN
11573 l_suppress_credit := 'Y';
11574 l_full_credit := 'N';
11575 l_term_date_flag := 'N';
11576 ELSIF UPPER (l_credit_amount) = 'CALCULATED'
11577 THEN
11578 l_suppress_credit := 'N';
11579 l_full_credit := 'N';
11580 l_term_date_flag := 'N';
11581 END IF;
11582
11583 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11584 TRUNC (l_trfdt)
11585 THEN
11586 l_suppress_credit := 'Y';
11587 l_full_credit := 'N';
11588 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11589 l_term_date_flag := 'Y';
11590 l_create_contract := 'N';
11591 END IF;
11592
11593
11594
11595 oks_bill_rec_pub.pre_terminate_cp
11596 (p_calledfrom => -1,
11597 p_cle_id => p_kdtl_tbl
11598 (l_ctr).object_line_id,
11599 p_termination_date => TRUNC (l_trfdt),
11600 p_terminate_reason => 'TRF',
11601 p_override_amount => NULL,
11602 p_con_terminate_amount => NULL,
11603 p_termination_amount => NULL,
11604 --p_existing_credit => 0,
11605 p_suppress_credit => l_suppress_credit,
11606 p_full_credit => l_full_credit,
11607 --'N',
11608 p_term_date_flag => l_term_date_flag,
11609 p_term_cancel_source => 'IBTRANSFER',
11610 x_return_status => l_return_status
11611 );
11612
11613 IF (fnd_log.level_event >=
11614 fnd_log.g_current_runtime_level
11615 )
11616 THEN
11617 fnd_log.STRING
11618 (fnd_log.level_event,
11619 g_module_current || '.CREATE_K_SYSTEM_TRF',
11620 'oks_bill_rec_pub.Pre_terminate_cp(Return status ='
11621 || l_return_status
11622 || ')'
11623 );
11624 END IF;
11625
11626 IF NOT l_return_status = okc_api.g_ret_sts_success
11627 THEN
11628 RAISE g_exception_halt_validation;
11629 END IF;
11630
11631 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
11632 TRUNC (l_trfdt);
11633 date_terminated := NULL;
11634 oks_ib_util_pvt.check_termcancel_lines
11635 (p_kdtl_tbl (l_ctr).service_line_id,
11636 'SL',
11637 'T',
11638 date_terminated
11639 );
11640
11641 IF date_terminated IS NOT NULL
11642 THEN
11643 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11644
11645 l_clev_tbl_in (1).ID :=
11646 p_kdtl_tbl (l_ctr).service_line_id;
11647 l_clev_tbl_in (1).date_terminated :=
11648 TRUNC (date_terminated);
11649 l_clev_tbl_in (1).trn_code := 'TRF';
11650 ---check the actual code
11651 l_clev_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11652 If TRUNC (date_terminated)<= trunc(sysdate) Then
11653 l_clev_tbl_in (1).sts_code := l_sts_code;
11654 End If;
11655
11656 okc_contract_pub.update_contract_line
11657 (p_api_version => l_api_version,
11658 p_init_msg_list => l_init_msg_list,
11659 p_restricted_update => okc_api.g_true,
11660 x_return_status => l_return_status,
11661 x_msg_count => x_msg_count,
11662 x_msg_data => x_msg_data,
11663 p_clev_tbl => l_clev_tbl_in,
11664 x_clev_tbl => l_clev_tbl_out
11665 );
11666
11667 IF (fnd_log.level_event >=
11668 fnd_log.g_current_runtime_level
11669 )
11670 THEN
11671 fnd_log.STRING
11672 (fnd_log.level_event,
11673 g_module_current || '.CREATE_K_SYSTEM_TRF',
11674 'okc_contract_pub.update_contract_line(Return status = '
11675 || l_return_status
11676 || ')'
11677 );
11678 END IF;
11679
11680 IF NOT l_return_status = okc_api.g_ret_sts_success
11681 THEN
11682 RAISE g_exception_halt_validation;
11683 END IF;
11684 END IF;
11685
11686 date_terminated := NULL;
11687 oks_ib_util_pvt.check_termcancel_lines
11688 (p_kdtl_tbl (l_ctr).hdr_id,
11689 'TL',
11690 'T',
11691 date_terminated
11692 );
11693
11694 IF date_terminated IS NOT NULL
11695 THEN
11696 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11697
11698 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
11699 l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
11700 l_chrv_tbl_in (1).trn_code := 'TRF';
11701 l_chrv_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11702 If TRUNC (date_terminated)<= trunc(sysdate) Then
11703 l_chrv_tbl_in (1).sts_code := l_sts_code;
11704 End If;
11705
11706 okc_contract_pub.update_contract_header
11707 (p_api_version => l_api_version,
11708 p_init_msg_list => l_init_msg_list,
11709 p_restricted_update => okc_api.g_true,
11710 x_return_status => l_return_status,
11711 x_msg_count => x_msg_count,
11712 x_msg_data => x_msg_data,
11713 p_chrv_tbl => l_chrv_tbl_in,
11714 x_chrv_tbl => l_chrv_tbl_out
11715 );
11716
11717 IF (fnd_log.level_event >=
11718 fnd_log.g_current_runtime_level
11719 )
11720 THEN
11721 fnd_log.STRING
11722 (fnd_log.level_event,
11723 g_module_current
11724 || '.Update_Hdr_Dates.external_call.after',
11725 'okc_contract_pub.update_contract_header(Return status = '
11726 || l_return_status
11727 || ')'
11728 );
11729 END IF;
11730
11731 IF NOT l_return_status = okc_api.g_ret_sts_success
11732 THEN
11733 RAISE g_exception_halt_validation;
11734 END IF;
11735 END IF;
11736 ELSIF l_ste_code = 'ENTERED'
11737 THEN
11738 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11739 TRUNC (l_trfdt)
11740 THEN
11741 l_create_contract := 'N';
11742 l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11743 ELSE
11744 l_create_contract := 'Y';
11745 END IF;
11746
11747 -- added for the bug # 6000133
11748 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11749
11750 oks_change_status_pvt.update_line_status
11751 (x_return_status => l_return_status,
11752 x_msg_data => x_msg_data,
11753 x_msg_count => x_msg_count,
11754 p_init_msg_list => 'F',
11755 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11756 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
11757 p_new_sts_code => l_sts_code,
11758 p_canc_reason_code => 'TRANSFER',
11759 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11760 p_old_ste_code => 'ENTERED',
11761 p_new_ste_code => 'CANCELLED',
11762 p_term_cancel_source => 'IBTRANSFER',
11763 p_date_cancelled => TRUNC (l_trfdt),
11764 p_comments => NULL,
11765 p_validate_status => 'N'
11766 );
11767
11768 IF (fnd_log.level_event >=
11769 fnd_log.g_current_runtime_level
11770 )
11771 THEN
11772 fnd_log.STRING
11773 (fnd_log.level_event,
11774 g_module_current || '.CREATE_K_SYSTEM_TRF',
11775 'oks_change_status_pvt.Update_line_status(Return status ='
11776 || l_return_status
11777 || ')'
11778 );
11779 END IF;
11780
11781 IF NOT l_return_status = okc_api.g_ret_sts_success
11782 THEN
11783 RAISE g_exception_halt_validation;
11784 END IF;
11785
11786 l_inst_dtls_tbl (l_ptr).date_cancelled :=
11787 TRUNC (l_trfdt);
11788 date_cancelled := NULL;
11789 oks_ib_util_pvt.check_termcancel_lines
11790 (p_kdtl_tbl (l_ctr).service_line_id,
11791 'SL',
11792 'C',
11793 date_cancelled
11794 );
11795
11796 IF date_cancelled IS NOT NULL
11797 THEN
11798
11799 -- added for the bug # 6000133
11800 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11801
11802 oks_change_status_pvt.update_line_status
11803 (x_return_status => l_return_status,
11804 x_msg_data => x_msg_data,
11805 x_msg_count => x_msg_count,
11806 p_init_msg_list => 'F',
11807 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11808 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
11809 p_new_sts_code => l_sts_code,
11810 p_canc_reason_code => 'TRANSFER',
11811 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11812 p_old_ste_code => 'ENTERED',
11813 p_new_ste_code => 'CANCELLED',
11814 p_term_cancel_source => 'IBTRANSFER',
11815 p_date_cancelled => TRUNC
11816 (date_cancelled),
11817 p_comments => NULL,
11818 p_validate_status => 'N'
11819 );
11820
11821 IF (fnd_log.level_event >=
11822 fnd_log.g_current_runtime_level
11823 )
11824 THEN
11825 fnd_log.STRING
11826 (fnd_log.level_event,
11827 g_module_current || '.CREATE_K_SYSTEM_TRF',
11828 'okc_contract_pub.update_contract_line(Return status = '
11829 || l_return_status
11830 || ')'
11831 );
11832 END IF;
11833
11834 IF NOT l_return_status = okc_api.g_ret_sts_success
11835 THEN
11836 RAISE g_exception_halt_validation;
11837 END IF;
11838 END IF;
11839
11840 date_cancelled := NULL;
11841 oks_ib_util_pvt.check_termcancel_lines
11842 (p_kdtl_tbl (l_ctr).hdr_id,
11843 'TL',
11844 'C',
11845 date_cancelled
11846 );
11847
11848 IF date_cancelled IS NOT NULL
11849 THEN
11850
11851 -- added for the bug # 6000133
11852 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11853
11854 oks_change_status_pvt.update_header_status
11855 (x_return_status => l_return_status,
11856 x_msg_data => x_msg_data,
11857 x_msg_count => x_msg_count,
11858 p_init_msg_list => 'F',
11859 p_id => p_kdtl_tbl (l_ctr).hdr_id,
11860 p_new_sts_code => l_sts_code,
11861 p_canc_reason_code => 'TRANSFER',
11862 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
11863 p_comments => NULL,
11864 p_term_cancel_source => 'IBTRANSFER',
11865 p_date_cancelled => TRUNC
11866 (date_cancelled),
11867 p_validate_status => 'N'
11868 );
11869
11870 IF (fnd_log.level_event >=
11871 fnd_log.g_current_runtime_level
11872 )
11873 THEN
11874 fnd_log.STRING
11875 (fnd_log.level_event,
11876 g_module_current || '.CREATE_K_SYSTEM_TRF',
11877 'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status = '
11878 || l_return_status
11879 || ')'
11880 );
11881 END IF;
11882
11883 IF NOT l_return_status = okc_api.g_ret_sts_success
11884 THEN
11885 RAISE g_exception_halt_validation;
11886 END IF;
11887 END IF;
11888 /*E4*/
11889 END IF; -- ste_code <> 'ENTERED'
11890
11891 l_date_terminated := NULL;
11892 l_subline_price := NULL;
11893
11894 OPEN l_subline_csr (p_kdtl_tbl (l_ctr).object_line_id);
11895
11896 FETCH l_subline_csr
11897 INTO l_date_terminated, l_subline_price;
11898
11899 CLOSE l_subline_csr;
11900
11901 l_inst_dtls_tbl (l_ptr).transaction_date :=
11902 (p_kdtl_tbl (l_ctr).transaction_date);
11903 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
11904 l_inst_dtls_tbl (l_ptr).system_id :=
11905 p_kdtl_tbl (l_ctr).system_id;
11906 l_inst_dtls_tbl (l_ptr).transfer_option := l_trf_option;
11907 l_inst_dtls_tbl (l_ptr).instance_id_new :=
11908 p_kdtl_tbl (l_ctr).old_cp_id;
11909 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
11910 l_subline_price;
11911 --l_kdtl_tbl( l_ctr ).service_amount;
11912 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
11913 p_kdtl_tbl (l_ctr).cp_qty;
11914 l_inst_dtls_tbl (l_ptr).new_contract_id :=
11915 p_kdtl_tbl (l_ctr).hdr_id;
11916 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
11917 p_kdtl_tbl (l_ctr).hdr_sdt;
11918 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
11919 p_kdtl_tbl (l_ctr).hdr_edt;
11920 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
11921 p_kdtl_tbl (l_ctr).service_line_id;
11922 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
11923 p_kdtl_tbl (l_ctr).service_sdt;
11924 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
11925 p_kdtl_tbl (l_ctr).service_edt;
11926 l_inst_dtls_tbl (l_ptr).new_subline_id :=
11927 p_kdtl_tbl (l_ctr).object_line_id;
11928 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
11929 p_kdtl_tbl (l_ctr).prod_sdt;
11930 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
11931 p_kdtl_tbl (l_ctr).prod_edt;
11932 l_inst_dtls_tbl (l_ptr).new_customer :=
11933 p_kdtl_tbl (l_ctr).old_account_id;
11934 l_inst_dtls_tbl (l_ptr).new_k_status :=
11935 p_kdtl_tbl (l_ctr).hdr_sts;
11936 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
11937 p_kdtl_tbl (l_ctr).service_amount;
11938 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
11939 p_kdtl_tbl (l_ctr).cp_qty;
11940 l_inst_dtls_tbl (l_ptr).old_contract_id :=
11941 p_kdtl_tbl (l_ctr).hdr_id;
11942 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
11943 p_kdtl_tbl (l_ctr).hdr_sdt;
11944 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
11945 p_kdtl_tbl (l_ctr).hdr_edt;
11946 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
11947 p_kdtl_tbl (l_ctr).service_line_id;
11948 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
11949 p_kdtl_tbl (l_ctr).service_sdt;
11950 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
11951 p_kdtl_tbl (l_ctr).service_edt;
11952 l_inst_dtls_tbl (l_ptr).old_subline_id :=
11953 p_kdtl_tbl (l_ctr).object_line_id;
11954 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
11955 p_kdtl_tbl (l_ctr).prod_sdt;
11956 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
11957 p_kdtl_tbl (l_ctr).prod_edt;
11958 l_inst_dtls_tbl (l_ptr).old_customer :=
11959 p_kdtl_tbl (l_ctr).old_account_id;
11960 l_inst_dtls_tbl (l_ptr).old_k_status :=
11961 p_kdtl_tbl (l_ctr).hdr_sts;
11962 l_ptr := l_ptr + 1;
11963 launch_workflow
11964 ( 'INSTALL BASE ACTIVITY : TRANSFER TERMINATE SUBLINE '
11965 || fnd_global.local_chr (10)
11966 || 'Contract Number : '
11967 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
11968 || fnd_global.local_chr (10)
11969 || 'Service Terminated : '
11970 || l_service_name
11971 );
11972
11973 /*---------------------------------------------------------
11974 Check if the Customer product transferred
11975 is a part of System Transfer.
11976 If SYstem id is Not null then SYsytem transfer
11977 else Customer product Transfer.
11978 -----------------------------------------------------------*/
11979 IF fnd_log.level_statement >=
11980 fnd_log.g_current_runtime_level
11981 THEN
11982 fnd_log.STRING (fnd_log.level_statement,
11983 g_module_current
11984 || '.CREATE_K_SYSTEM_TRF.system_trf',
11985 'System Id = '
11986 || p_kdtl_tbl (l_ctr).system_id
11987 || ',lse_id = '
11988 || p_kdtl_tbl (l_ctr).lse_id
11989 || ',Merge Profile = '
11990 || fnd_profile.VALUE
11991 ('OKS_MERGE_SYSTRF')
11992 );
11993 END IF;
11994
11995 --If Contract is expired as of the transfer date, do not create a new contract.
11996 IF l_create_contract = 'Y'
11997 THEN
11998 /*Sys trf*/
11999 IF p_kdtl_tbl (l_ctr).system_id IS NULL
12000 OR p_kdtl_tbl (l_ctr).lse_id = 18
12001 OR fnd_profile.VALUE ('OKS_MERGE_SYSTRF') = 'N'
12002 THEN
12003 l_contract_exist := 'F';
12004 l_contract_merge := 'F';
12005 /*Sys trf*/
12006 ELSE
12007 --Check if there exists a Contract for the System
12008 l_contract_exist := 'F';
12009 l_contract_merge := 'F';
12010
12011 FOR l_contracts_rec IN
12012 l_contracts_csr
12013 (p_kdtl_tbl (l_ctr).system_id,
12014 p_kdtl_tbl (l_ctr).transaction_date,
12015 p_kdtl_tbl (l_ctr).old_account_id
12016 )
12017 /*5*/
12018 LOOP
12019 IF fnd_log.level_statement >=
12020 fnd_log.g_current_runtime_level
12021 THEN
12022 fnd_log.STRING
12023 (fnd_log.level_statement,
12024 g_module_current
12025 || '.CREATE_K_SYSTEM_TRF.system_trf',
12026 'In Contracts_rec Loop'
12027 );
12028 END IF;
12029
12030 IF fnd_log.level_statement >=
12031 fnd_log.g_current_runtime_level
12032 THEN
12033 fnd_log.STRING
12034 (fnd_log.level_statement,
12035 g_module_current
12036 || '.CREATE_K_SYSTEM_TRF.system_trf',
12037 'Source chr_id = '
12038 || p_kdtl_tbl (l_ctr).hdr_id
12039 );
12040 END IF;
12041
12042 IF fnd_log.level_statement >=
12043 fnd_log.g_current_runtime_level
12044 THEN
12045 fnd_log.STRING
12046 (fnd_log.level_statement,
12047 g_module_current
12048 || '.CREATE_K_SYSTEM_TRF.system_trf',
12049 'Target chr Id = '
12050 || l_contracts_rec.new_contract_id
12051 );
12052 END IF;
12053
12054 l_contract_exist := 'T';
12055
12056 IF l_contract_merge = 'T'
12057 THEN
12058 EXIT;
12059 END IF;
12060
12061 -- Check Header merging rules
12062 header_merge_yn
12063 (p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
12064 p_target_chr_id => l_contracts_rec.new_contract_id,
12065 p_sts_code => p_kdtl_tbl (l_ctr).hdr_sts,
12066 x_eligible_yn => l_header_merge,
12067 x_msg_count => x_msg_count,
12068 x_msg_data => x_msg_data,
12069 x_return_status => l_return_status
12070 );
12071
12072 IF (fnd_log.level_event >=
12073 fnd_log.g_current_runtime_level
12074 )
12075 THEN
12076 fnd_log.STRING
12077 (fnd_log.level_event,
12078 g_module_current
12079 || '.CREATE_K_SYSTEM_TRF',
12080 'header_merge_yn(Return status ='
12081 || l_return_status
12082 || ',Merging Rule = '
12083 || l_header_merge
12084 || ')'
12085 );
12086 END IF;
12087
12088 l_merge_chr_id :=
12089 l_contracts_rec.new_contract_id;
12090 l_line_found := 'F';
12091
12092 /*6*/
12093 IF l_header_merge = 'Y'
12094 THEN
12095 -- Check line_merge rules
12096 FOR l_topline_rec IN
12097 l_toplines_csr
12098 (l_merge_chr_id,
12099 p_kdtl_tbl (l_ctr).service_inventory_id
12100 )
12101 LOOP
12102 l_line_found := 'T';
12103
12104 IF fnd_log.level_statement >=
12105 fnd_log.g_current_runtime_level
12106 THEN
12107 fnd_log.STRING
12108 (fnd_log.level_statement,
12109 g_module_current
12110 || '.CREATE_K_SYSTEM_TRF.system_trf',
12111 'Source line_id = '
12112 || p_kdtl_tbl (l_ctr).service_line_id
12113 );
12114 END IF;
12115
12116 IF fnd_log.level_statement >=
12117 fnd_log.g_current_runtime_level
12118 THEN
12119 fnd_log.STRING
12120 (fnd_log.level_statement,
12121 g_module_current
12122 || '.CREATE_K_SYSTEM_TRF.system_trf',
12123 'Target line_id = '
12124 || l_topline_rec.cle_id
12125 );
12126 END IF;
12127
12128 line_merge_yn
12129 (p_source_line_id => p_kdtl_tbl
12130 (l_ctr).service_line_id,
12131 p_target_line_id => l_topline_rec.cle_id,
12132 p_source_flag => 'N',
12133 x_eligible_yn => l_line_merge,
12134 x_msg_count => x_msg_count,
12135 x_msg_data => x_msg_data,
12136 x_return_status => l_return_status
12137 );
12138
12139 IF (fnd_log.level_event >=
12140 fnd_log.g_current_runtime_level
12141 )
12142 THEN
12143 fnd_log.STRING
12144 (fnd_log.level_event,
12145 g_module_current
12146 || '.CREATE_K_SYSTEM_TRF',
12147 'line_merge_yn(Return status ='
12148 || l_return_status
12149 || ',Merging Rule = '
12150 || l_line_merge
12151 || ')'
12152 );
12153 END IF;
12154
12155 l_merge_line_id := l_topline_rec.cle_id;
12156
12157 /*7*/
12158 IF l_line_merge = 'Y'
12159 THEN
12160 --Create Contract Subline
12161 create_contract_subline
12162 (p_kdtl_rec => p_kdtl_tbl
12163 (l_ctr),
12164 p_hdr_id => l_merge_chr_id,
12165 p_line_id => l_merge_line_id,
12166 x_subline_id => l_subline_id,
12167 x_update_top_line => l_update_line,
12168 x_return_status => l_return_status,
12169 x_msg_data => x_msg_data,
12170 x_msg_count => x_msg_count
12171 );
12172
12173 IF (fnd_log.level_event >=
12174 fnd_log.g_current_runtime_level
12175 )
12176 THEN
12177 fnd_log.STRING
12178 (fnd_log.level_event,
12179 g_module_current
12180 || '.CREATE_K_SYSTEM_TRF',
12181 'Create_contract_subline(Return status ='
12182 || l_return_status
12183 || ')'
12184 );
12185 END IF;
12186
12187 IF NOT l_return_status =
12188 okc_api.g_ret_sts_success
12189 THEN
12190 RAISE g_exception_halt_validation;
12191 END IF;
12192
12193 l_opr_instance_id :=
12194 get_operation_instance
12195 (l_merge_chr_id,
12196 'TRF'
12197 );
12198 create_transaction_source
12199 (p_create_opr_inst => 'N',
12200 p_source_code => 'TRANSFER',
12201 p_target_chr_id => l_merge_chr_id,
12202 p_source_line_id => p_kdtl_tbl
12203 (l_ctr
12204 ).object_line_id,
12205 p_source_chr_id => p_kdtl_tbl
12206 (l_ctr
12207 ).hdr_id,
12208 p_target_line_id => l_subline_id,
12209 x_oper_instance_id => l_opr_instance_id,
12210 x_return_status => l_return_status,
12211 x_msg_count => x_msg_count,
12212 x_msg_data => x_msg_data
12213 );
12214
12215 IF (fnd_log.level_event >=
12216 fnd_log.g_current_runtime_level
12217 )
12218 THEN
12219 fnd_log.STRING
12220 (fnd_log.level_event,
12221 g_module_current
12222 || '.CREATE_K_SYSTEM_TRF',
12223 'Create_transaction_source(Return status ='
12224 || l_return_status
12225 || ')'
12226 );
12227 END IF;
12228
12229 IF NOT l_return_status = 'S'
12230 THEN
12231 RAISE g_exception_halt_validation;
12232 END IF;
12233
12234 l_renewal_opr_instance_id :=
12235 get_operation_instance
12236 (l_merge_chr_id,
12237 'REN'
12238 );
12239
12240 IF l_renewal_opr_instance_id IS NULL
12241 THEN
12242 l_create_oper_instance := 'Y';
12243 ELSE
12244 l_create_oper_instance := 'N';
12245 END IF;
12246
12247 create_source_links
12248 (p_create_opr_inst => l_create_oper_instance,
12249 p_source_code => 'TRANSFER',
12250 p_target_chr_id => l_merge_chr_id,
12251 p_line_id => p_kdtl_tbl
12252 (l_ctr
12253 ).object_line_id,
12254 p_target_line_id => l_subline_id,
12255 p_txn_date => p_kdtl_tbl
12256 (l_ctr
12257 ).transfer_date,
12258 x_oper_instance_id => l_renewal_opr_instance_id,
12259 x_return_status => l_return_status,
12260 x_msg_count => x_msg_count,
12261 x_msg_data => x_msg_data
12262 );
12263
12264 IF (fnd_log.level_event >=
12265 fnd_log.g_current_runtime_level
12266 )
12267 THEN
12268 fnd_log.STRING
12269 (fnd_log.level_event,
12270 g_module_current
12271 || '.CREATE_K_SYSTEM_TRF',
12272 'Create_source_links(Return status ='
12273 || l_return_status
12274 || ')'
12275 );
12276 END IF;
12277
12278 IF NOT l_return_status = 'S'
12279 THEN
12280 RAISE g_exception_halt_validation;
12281 END IF;
12282
12283 OPEN l_hdrdt_csr (l_merge_chr_id);
12284
12285 FETCH l_hdrdt_csr
12286 INTO l_start_date, l_end_date;
12287
12288 CLOSE l_hdrdt_csr;
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',
12297 'Header start date = '
12298 || l_start_date
12299 || ',Header End date = '
12300 || l_end_date
12301 );
12302 END IF;
12303
12304 OPEN l_srvdt_csr (l_merge_line_id);
12305
12306 FETCH l_srvdt_csr
12307 INTO l_srv_sdt, l_srv_edt;
12308
12309 CLOSE l_srvdt_csr;
12310
12311 IF fnd_log.level_statement >=
12312 fnd_log.g_current_runtime_level
12313 THEN
12314 fnd_log.STRING
12315 (fnd_log.level_statement,
12316 g_module_current
12317 || '.CREATE_K_SYSTEM_TRF',
12318 'Line start date = '
12319 || l_srv_sdt
12320 || ',Line End date = '
12321 || l_srv_edt
12322 );
12323 END IF;
12324
12325 l_date_terminated := NULL;
12326 l_subline_price := NULL;
12327
12328 OPEN l_subline_csr (l_subline_id);
12329
12330 FETCH l_subline_csr
12331 INTO l_date_terminated,
12332 l_subline_price;
12333
12334 CLOSE l_subline_csr;
12335
12336 l_inst_dtls_tbl (l_ptr).new_contract_id :=
12337 l_merge_chr_id;
12338 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
12339 l_start_date;
12340 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
12341 l_end_date;
12342 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
12343 l_merge_line_id;
12344 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
12345 l_srv_sdt;
12346 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
12347 l_srv_edt;
12348 l_inst_dtls_tbl (l_ptr).new_subline_id :=
12349 l_subline_id;
12350 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
12351 TRUNC (l_trfdt);
12352 --p_transfer_rec.transfer_date;
12353 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
12354 p_kdtl_tbl (l_ctr).prod_edt;
12355 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
12356 l_subline_price;
12357 ---Update Billing Schedule
12358 create_billing_schedule
12359 (p_line_id => l_merge_line_id,
12360 p_covlvl_id => l_subline_id,
12361 p_period_start => p_kdtl_tbl(l_ctr).period_start,
12362 p_start_date => l_srv_sdt,
12363 p_end_date => l_srv_edt,
12364 p_update_line => l_update_line,
12365 x_return_status => l_return_status,
12366 x_msg_data => x_msg_data,
12367 x_msg_count => x_msg_count
12368 );
12369
12370 IF (fnd_log.level_event >=
12371 fnd_log.g_current_runtime_level
12372 )
12373 THEN
12374 fnd_log.STRING
12375 (fnd_log.level_event,
12376 g_module_current
12377 || '.CREATE_K_SYSTEM_TRF',
12378 'Create_billing_schedule(Return status ='
12379 || l_return_status
12380 || ')'
12381 );
12382 END IF;
12383
12384 IF NOT l_return_status =
12385 okc_api.g_ret_sts_success
12386 THEN
12387 RAISE g_exception_halt_validation;
12388 END IF;
12389
12390 UPDATE okc_k_lines_b
12391 SET price_negotiated =
12392 (SELECT NVL
12393 (SUM
12394 (NVL
12395 (price_negotiated,
12396 0
12397 )
12398 ),
12399 0
12400 )
12401 FROM okc_k_lines_b
12402 WHERE cle_id =
12403 l_merge_line_id
12404 AND dnz_chr_id =
12405 l_merge_chr_id)
12406 WHERE ID = l_merge_line_id;
12407
12408 UPDATE oks_k_lines_b
12409 SET tax_amount =
12410 NVL (tax_amount, 0)
12411 + NVL ((SELECT tax_amount
12412 FROM oks_k_lines_b
12413 WHERE cle_id =
12414 l_subline_id),
12415 0
12416 )
12417 WHERE cle_id = l_merge_line_id;
12418
12419 UPDATE okc_k_headers_b
12420 SET estimated_amount =
12421 (SELECT NVL
12422 (SUM
12423 (NVL
12424 (price_negotiated,
12425 0
12426 )
12427 ),
12428 0
12429 )
12430 FROM okc_k_lines_b
12431 WHERE dnz_chr_id =
12432 l_merge_chr_id
12433 AND lse_id IN (1, 19))
12434 WHERE ID = l_merge_chr_id;
12435
12436 UPDATE oks_k_headers_b
12437 SET tax_amount =
12438 NVL (tax_amount, 0)
12439 + NVL ((SELECT tax_amount
12440 FROM oks_k_lines_b
12441 WHERE cle_id =
12442 l_subline_id),
12443 0
12444 )
12445 WHERE chr_id = l_merge_chr_id;
12446
12447 -- Check Qa
12448 -- Get the qa check list id
12449 OPEN l_qa_csr (l_merge_chr_id);
12450
12451 FETCH l_qa_csr
12452 INTO l_qcl_id;
12453
12454 CLOSE l_qa_csr;
12455
12456 okc_qa_check_pub.execute_qa_check_list
12457 (p_api_version => l_api_version,
12458 p_init_msg_list => okc_api.g_false,
12459 x_return_status => x_return_status,
12460 x_msg_count => x_msg_count,
12461 x_msg_data => x_msg_data,
12462 p_qcl_id => l_qcl_id,
12463 p_chr_id => l_merge_chr_id,
12464 x_msg_tbl => l_msg_tbl
12465 );
12466
12467 IF (fnd_log.level_event >=
12468 fnd_log.g_current_runtime_level
12469 )
12470 THEN
12471 fnd_log.STRING
12472 (fnd_log.level_event,
12473 g_module_current
12474 || '.CREATE_K_SYSTEM_TRF',
12475 'okc_qa_check_pub.execute_qa_check_list(Return status ='
12476 || x_return_status
12477 || ')'
12478 );
12479 END IF;
12480
12481 IF x_return_status <>
12482 okc_api.g_ret_sts_success
12483 THEN
12484 RAISE g_exception_halt_validation;
12485 END IF;
12486
12487 l_max_severity := 'I';
12488
12489 IF l_msg_tbl.COUNT > 0
12490 THEN
12491 i := l_msg_tbl.FIRST;
12492
12493 LOOP
12494 IF l_msg_tbl (i).error_status =
12495 'E'
12496 THEN
12497 --'QA returned with errors. Post renewal stopped';
12498 EXIT;
12499 END IF;
12500
12501 EXIT WHEN i = l_msg_tbl.LAST;
12502 i := l_msg_tbl.NEXT (i);
12503 END LOOP;
12504 END IF; --table count
12505
12506 IF fnd_log.level_error >=
12507 fnd_log.g_current_runtime_level
12508 THEN
12509 fnd_log.STRING
12510 (fnd_log.level_error,
12511 g_module_current
12512 || '.CREATE_K_SYSTEM_TRF',
12513 'qa Check list error'
12514 || l_msg_tbl (i).error_status
12515 || ','
12516 || l_msg_tbl (i).DATA
12517 );
12518 END IF;
12519
12520 IF l_msg_tbl (i).error_status = 'E'
12521 THEN
12522 -- Change the Contract status to QA_HOLD
12523 -- if the COntract is in either Signed or Active status
12524 OPEN l_hdr_sts_csr (l_merge_chr_id);
12525
12526 FETCH l_hdr_sts_csr
12527 INTO l_hdr_sts;
12528
12529 CLOSE l_hdr_sts_csr;
12530
12531 get_sts_code (NULL,
12532 l_hdr_sts,
12533 l_ste_code,
12534 l_sts_code
12535 );
12536
12537 IF l_ste_code IN
12538 ('ACTIVE', 'SIGNED')
12539 THEN
12540 get_sts_code ('ENTERED',
12541 NULL,
12542 l_ste_code,
12543 l_sts_code
12544 );
12545
12546 UPDATE okc_k_headers_b
12547 SET sts_code = l_sts_code,
12548 date_approved = NULL,
12549 date_signed = NULL
12550 WHERE ID = l_merge_chr_id;
12551
12552 UPDATE okc_k_lines_b
12553 SET sts_code = l_sts_code
12554 WHERE dnz_chr_id =
12555 l_merge_chr_id;
12556
12557 l_wf_attr_details.contract_id :=
12558 l_merge_chr_id;
12559 l_wf_attr_details.irr_flag := 'Y';
12560 l_wf_attr_details.process_type :=
12561 'MANUAL';
12562 l_wf_attr_details.negotiation_status :=
12563 'DRAFT';
12564 oks_wf_k_process_pvt.launch_k_process_wf
12565 (p_api_version => 1,
12566 p_init_msg_list => 'T',
12567 p_wf_attributes => l_wf_attr_details,
12568 x_return_status => x_return_status,
12569 x_msg_count => x_msg_count,
12570 x_msg_data => x_msg_data
12571 );
12572 END IF;
12573 END IF;
12574
12575 launch_workflow
12576 ( 'INSTALL BASE ACTIVITY : Transfer '
12577 || fnd_global.local_chr (10)
12578 || 'Contract Number : '
12579 || get_contract_number
12580 (l_merge_chr_id)
12581 || fnd_global.local_chr (10)
12582 || 'Covered Product line merged into Contract : '
12583 || p_kdtl_tbl (l_ctr).old_cp_id
12584 );
12585 l_contract_merge := 'T';
12586 EXIT;
12587 /*End If7*/
12588 END IF;
12589 END LOOP;
12590
12591 --If line merge fails Or l_line_found = 'F'
12592
12593 /*8*/
12594 IF l_line_merge = 'N' OR l_line_found = 'F'
12595 THEN
12596 -- Create Top line
12597 create_contract_line
12598 (p_kdtl_rec => p_kdtl_tbl
12599 (l_ctr),
12600 p_hdr_id => l_merge_chr_id,
12601 x_return_status => l_return_status,
12602 x_msg_data => x_msg_data,
12603 x_line_id => l_line_id,
12604 x_msg_count => x_msg_count
12605 );
12606
12607 IF (fnd_log.level_event >=
12608 fnd_log.g_current_runtime_level
12609 )
12610 THEN
12611 fnd_log.STRING
12612 (fnd_log.level_event,
12613 g_module_current
12614 || '.CREATE_K_SYSTEM_TRF',
12615 'Create_Contract_line(Return status = '
12616 || l_return_status
12617 );
12618 END IF;
12619
12620 IF NOT l_return_status =
12621 okc_api.g_ret_sts_success
12622 THEN
12623 RAISE g_exception_halt_validation;
12624 END IF;
12625
12626 IF p_kdtl_tbl (l_ctr).coverage_id IS NOT NULL
12627 AND p_kdtl_tbl (l_ctr).standard_cov_yn =
12628 'N'
12629 THEN
12630 oks_coverages_pub.create_adjusted_coverage
12631 (p_api_version => l_api_version,
12632 p_init_msg_list => l_init_msg_list,
12633 x_return_status => l_return_status,
12634 x_msg_count => x_msg_count,
12635 x_msg_data => x_msg_data,
12636 p_source_contract_line_id => p_kdtl_tbl
12637 (l_ctr
12638 ).service_line_id,
12639 p_target_contract_line_id => l_line_id,
12640 x_actual_coverage_id => l_coverage_id
12641 );
12642
12643 IF (fnd_log.level_event >=
12644 fnd_log.g_current_runtime_level
12645 )
12646 THEN
12647 fnd_log.STRING
12648 (fnd_log.level_event,
12649 g_module_current
12650 || '.CREATE_K_SYSTEM_TRF',
12651 'Oks_coverages_pub.create_adjusted_coverage(Return status = '
12652 || l_return_status
12653 || ')'
12654 );
12655 END IF;
12656
12657 IF NOT l_return_status =
12658 okc_api.g_ret_sts_success
12659 THEN
12660 RAISE g_exception_halt_validation;
12661 END IF;
12662
12663 UPDATE oks_k_lines_b
12664 SET coverage_id = l_coverage_id,
12665 standard_cov_yn = 'N'
12666 WHERE cle_id = l_line_id;
12667 END IF;
12668
12669
12670 oks_coverages_pvt.create_k_coverage_ext
12671 (p_api_version => 1,
12672 p_init_msg_list => 'T',
12673 p_src_line_id => p_kdtl_tbl
12674 (l_ctr).service_line_id,
12675 p_tgt_line_id => l_line_id,
12676 x_return_status => l_return_status,
12677 x_msg_count => x_msg_count,
12678 x_msg_data => x_msg_data
12679 );
12680
12681 IF (fnd_log.level_event >=
12682 fnd_log.g_current_runtime_level
12683 )
12684 THEN
12685 fnd_log.STRING
12686 (fnd_log.level_event,
12687 g_module_current
12688 || '..after_coverage_ext',
12689 'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
12690 || l_return_status
12691 || ')'
12692 );
12693 END IF;
12694
12695 IF NOT l_return_status =
12696 okc_api.g_ret_sts_success
12697 THEN
12698 okc_api.set_message
12699 (g_app_name,
12700 g_required_value,
12701 g_col_name_token,
12702 'Coverage Extn creation error '
12703 );
12704 RAISE g_exception_halt_validation;
12705 END IF;
12706
12707 create_contract_subline
12708 (p_kdtl_rec => p_kdtl_tbl
12709 (l_ctr),
12710 p_hdr_id => l_merge_chr_id,
12711 x_subline_id => l_subline_id,
12712 x_update_top_line => l_update_line,
12713 p_line_id => l_line_id,
12714 x_return_status => l_return_status,
12715 x_msg_data => x_msg_data,
12716 x_msg_count => x_msg_count
12717 );
12718
12719 IF (fnd_log.level_event >=
12720 fnd_log.g_current_runtime_level
12721 )
12722 THEN
12723 fnd_log.STRING
12724 (fnd_log.level_event,
12725 g_module_current
12726 || '.CREATE_K_SYSTEM_TRF',
12727 'Create_contract_subline(Return status = '
12728 || l_return_status
12729 || ')'
12730 );
12731 END IF;
12732
12733 IF NOT l_return_status =
12734 okc_api.g_ret_sts_success
12735 THEN
12736 RAISE g_exception_halt_validation;
12737 END IF;
12738
12739 l_opr_instance_id :=
12740 get_operation_instance (l_merge_chr_id,
12741 'TRF'
12742 );
12743 create_transaction_source
12744 (p_create_opr_inst => 'N',
12745 p_source_code => 'TRANSFER',
12746 p_target_chr_id => l_merge_chr_id,
12747 p_source_line_id => p_kdtl_tbl
12748 (l_ctr).object_line_id,
12749 p_source_chr_id => p_kdtl_tbl
12750 (l_ctr).hdr_id,
12751 p_target_line_id => l_subline_id,
12752 x_oper_instance_id => l_opr_instance_id,
12753 x_return_status => l_return_status,
12754 x_msg_count => x_msg_count,
12755 x_msg_data => x_msg_data
12756 );
12757
12758 IF (fnd_log.level_event >=
12759 fnd_log.g_current_runtime_level
12760 )
12761 THEN
12762 fnd_log.STRING
12763 (fnd_log.level_event,
12764 g_module_current
12765 || '.CREATE_K_SYSTEM_TRF',
12766 'Create_transaction_source(Return status ='
12767 || l_return_status
12768 || ')'
12769 );
12770 END IF;
12771
12772 IF NOT l_return_status = 'S'
12773 THEN
12774 RAISE g_exception_halt_validation;
12775 END IF;
12776
12777 l_renewal_opr_instance_id :=
12778 get_operation_instance (l_merge_chr_id,
12779 'REN'
12780 );
12781
12782 IF l_renewal_opr_instance_id IS NULL
12783 THEN
12784 l_create_oper_instance := 'Y';
12785 ELSE
12786 l_create_oper_instance := 'N';
12787 END IF;
12788
12789 create_source_links
12790 (p_create_opr_inst => l_create_oper_instance,
12791 p_source_code => 'TRANSFER',
12792 p_target_chr_id => l_merge_chr_id,
12793 p_line_id => p_kdtl_tbl
12794 (l_ctr).object_line_id,
12795 p_target_line_id => l_subline_id,
12796 p_txn_date => p_kdtl_tbl
12797 (l_ctr).transfer_date,
12798 x_oper_instance_id => l_renewal_opr_instance_id,
12799 x_return_status => l_return_status,
12800 x_msg_count => x_msg_count,
12801 x_msg_data => x_msg_data
12802 );
12803
12804 IF (fnd_log.level_event >=
12805 fnd_log.g_current_runtime_level
12806 )
12807 THEN
12808 fnd_log.STRING
12809 (fnd_log.level_event,
12810 g_module_current
12811 || '.CREATE_K_SYSTEM_TRF',
12812 'Create_source_links(Return status ='
12813 || l_return_status
12814 || ')'
12815 );
12816 END IF;
12817
12818 IF NOT l_return_status = 'S'
12819 THEN
12820 RAISE g_exception_halt_validation;
12821 END IF;
12822
12823 OPEN l_hdrdt_csr (l_merge_chr_id);
12824
12825 FETCH l_hdrdt_csr
12826 INTO l_start_date, l_end_date;
12827
12828 CLOSE l_hdrdt_csr;
12829
12830 IF fnd_log.level_statement >=
12831 fnd_log.g_current_runtime_level
12832 THEN
12833 fnd_log.STRING
12834 (fnd_log.level_statement,
12835 g_module_current
12836 || '.CREATE_K_SYSTEM_TRF',
12837 'Header start date = '
12838 || l_start_date
12839 || ',End date ='
12840 || l_end_date
12841 );
12842 END IF;
12843
12844 OPEN l_srvdt_csr (l_line_id);
12845
12846 FETCH l_srvdt_csr
12847 INTO l_srv_sdt, l_srv_edt;
12848
12849 CLOSE l_srvdt_csr;
12850
12851 IF fnd_log.level_statement >=
12852 fnd_log.g_current_runtime_level
12853 THEN
12854 fnd_log.STRING
12855 (fnd_log.level_statement,
12856 g_module_current
12857 || '.CREATE_K_SYSTEM_TRF',
12858 'Line start date = '
12859 || l_srv_sdt
12860 || ',End date ='
12861 || l_srv_edt
12862 );
12863 END IF;
12864
12865 l_date_terminated := NULL;
12866 l_subline_price := NULL;
12867
12868 OPEN l_subline_csr (l_subline_id);
12869
12870 FETCH l_subline_csr
12871 INTO l_date_terminated, l_subline_price;
12872
12873 CLOSE l_subline_csr;
12874
12875 l_inst_dtls_tbl (l_ptr).new_contract_id :=
12876 l_merge_chr_id;
12877 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
12878 l_start_date;
12879 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
12880 l_end_date;
12881 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
12882 l_line_id;
12883 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
12884 l_srv_sdt;
12885 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
12886 l_srv_edt;
12887 --END IF;
12888 l_inst_dtls_tbl (l_ptr).new_subline_id :=
12889 l_subline_id;
12890 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
12891 TRUNC (l_trfdt);
12892 --p_transfer_rec.transfer_date;
12893 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
12894 p_kdtl_tbl (l_ctr).prod_edt;
12895 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
12896 l_subline_price;
12897 --- Create Billing Schedule
12898 create_billing_schedule
12899 (p_line_id => l_line_id,
12900 p_covlvl_id => l_subline_id,
12901 p_period_start => p_kdtl_tbl(l_ctr).period_start,
12902 p_start_date => l_srv_sdt,
12903 p_end_date => l_srv_edt,
12904 p_update_line => l_update_line,
12905 x_return_status => l_return_status,
12906 x_msg_data => x_msg_data,
12907 x_msg_count => x_msg_count
12908 );
12909
12910 IF (fnd_log.level_event >=
12911 fnd_log.g_current_runtime_level
12912 )
12913 THEN
12914 fnd_log.STRING
12915 (fnd_log.level_event,
12916 g_module_current
12917 || '.CREATE_K_SYSTEM_TRF',
12918 'Create_billing_schedule(Return status = '
12919 || l_return_status
12920 || ')'
12921 );
12922 END IF;
12923
12924 IF NOT l_return_status =
12925 okc_api.g_ret_sts_success
12926 THEN
12927 RAISE g_exception_halt_validation;
12928 END IF;
12929
12930 UPDATE okc_k_lines_b
12931 SET price_negotiated =
12932 (SELECT NVL
12933 (SUM
12934 (NVL
12935 (price_negotiated,
12936 0
12937 )
12938 ),
12939 0
12940 )
12941 FROM okc_k_lines_b
12942 WHERE cle_id = l_line_id
12943 AND dnz_chr_id =
12944 l_merge_chr_id)
12945 WHERE ID = l_line_id;
12946
12947 UPDATE oks_k_lines_b
12948 SET tax_amount =
12949 NVL (tax_amount, 0)
12950 + NVL ((SELECT tax_amount
12951 FROM oks_k_lines_b
12952 WHERE cle_id =
12953 l_subline_id),
12954 0
12955 )
12956 WHERE cle_id = l_line_id;
12957
12958 UPDATE okc_k_headers_b
12959 SET estimated_amount =
12960 (SELECT NVL
12961 (SUM
12962 (NVL
12963 (price_negotiated,
12964 0
12965 )
12966 ),
12967 0
12968 )
12969 FROM okc_k_lines_b
12970 WHERE dnz_chr_id =
12971 l_merge_chr_id
12972 AND lse_id IN (1, 19))
12973 WHERE ID = l_merge_chr_id;
12974
12975 UPDATE oks_k_headers_b
12976 SET tax_amount =
12977 NVL (tax_amount, 0)
12978 + NVL ((SELECT tax_amount
12979 FROM oks_k_lines_b
12980 WHERE cle_id =
12981 l_subline_id),
12982 0
12983 )
12984 WHERE chr_id = l_merge_chr_id;
12985
12986 -- Check QA
12987 OPEN l_qa_csr (l_merge_chr_id);
12988
12989 FETCH l_qa_csr
12990 INTO l_qcl_id;
12991
12992 CLOSE l_qa_csr;
12993
12994 okc_qa_check_pub.execute_qa_check_list
12995 (p_api_version => l_api_version,
12996 p_init_msg_list => okc_api.g_false,
12997 x_return_status => x_return_status,
12998 x_msg_count => x_msg_count,
12999 x_msg_data => x_msg_data,
13000 p_qcl_id => l_qcl_id,
13001 p_chr_id => l_merge_chr_id,
13002 x_msg_tbl => l_msg_tbl
13003 );
13004
13005 IF (fnd_log.level_event >=
13006 fnd_log.g_current_runtime_level
13007 )
13008 THEN
13009 fnd_log.STRING
13010 (fnd_log.level_event,
13011 g_module_current
13012 || '.CREATE_K_SYSTEM_TRF',
13013 'okc_qa_check_pub.execute_qa_check_list(Return status = '
13014 || x_return_status
13015 || ')'
13016 );
13017 END IF;
13018
13019 IF x_return_status <>
13020 okc_api.g_ret_sts_success
13021 THEN
13022 RAISE g_exception_halt_validation;
13023 END IF;
13024
13025 l_max_severity := 'I';
13026
13027 IF l_msg_tbl.COUNT > 0
13028 THEN
13029 i := l_msg_tbl.FIRST;
13030
13031 LOOP
13032 IF l_msg_tbl (i).error_status = 'E'
13033 THEN
13034 --'QA returned with errors. ';
13035 EXIT;
13036 END IF;
13037
13038 EXIT WHEN i = l_msg_tbl.LAST;
13039 i := l_msg_tbl.NEXT (i);
13040 END LOOP;
13041 END IF; --table count
13042
13043 IF fnd_log.level_error >=
13044 fnd_log.g_current_runtime_level
13045 THEN
13046 fnd_log.STRING
13047 (fnd_log.level_error,
13048 g_module_current
13049 || '.CREATE_K_SYSTEM_TRF',
13050 'qa Check list error'
13051 || l_msg_tbl (i).error_status
13052 || ','
13053 || l_msg_tbl (i).DATA
13054 );
13055 END IF;
13056
13057 IF l_msg_tbl (i).error_status = 'E'
13058 THEN
13059 -- Change the Contract status to Entered
13060 -- if the COntract is in either Signed or Active status
13061 OPEN l_hdr_sts_csr (l_merge_chr_id);
13062
13063 FETCH l_hdr_sts_csr
13064 INTO l_hdr_sts;
13065
13066 CLOSE l_hdr_sts_csr;
13067
13068 get_sts_code (NULL,
13069 l_hdr_sts,
13070 l_ste_code,
13071 l_sts_code
13072 );
13073
13074 IF l_ste_code IN ('ACTIVE', 'SIGNED')
13075 THEN
13076 get_sts_code ('ENTERED',
13077 NULL,
13078 l_ste_code,
13079 l_sts_code
13080 );
13081
13082 UPDATE okc_k_headers_b
13083 SET sts_code = l_sts_code,
13084 date_approved = NULL,
13085 date_signed = NULL
13086 WHERE ID = l_merge_chr_id;
13087
13088 UPDATE okc_k_lines_b
13089 SET sts_code = l_sts_code
13090 WHERE dnz_chr_id = l_merge_chr_id;
13091
13092 l_wf_attr_details.contract_id :=
13093 l_merge_chr_id;
13094 l_wf_attr_details.irr_flag := 'Y';
13095 l_wf_attr_details.process_type :=
13096 'MANUAL';
13097 l_wf_attr_details.negotiation_status :=
13098 'DRAFT';
13099 oks_wf_k_process_pvt.launch_k_process_wf
13100 (p_api_version => 1,
13101 p_init_msg_list => 'T',
13102 p_wf_attributes => l_wf_attr_details,
13103 x_return_status => x_return_status,
13104 x_msg_count => x_msg_count,
13105 x_msg_data => x_msg_data
13106 );
13107 END IF;
13108 END IF;
13109
13110 launch_workflow
13111 ( 'INSTALL BASE ACTIVITY : TRANSFER '
13112 || fnd_global.local_chr (10)
13113 || 'Contract Number : '
13114 || get_contract_number (l_merge_chr_id)
13115 || fnd_global.local_chr (10)
13116 || 'Service line merged in to COntract : '
13117 || l_service_name
13118 );
13119 l_contract_merge := 'T';
13120 /*E7*/
13121 END IF;
13122 /*E6*/
13123 END IF; --If Header Merge fails
13124 /*E5*/
13125 END LOOP;
13126 /*Sys trf*/
13127 END IF;
13128
13129 ---If none of the existing SYstem COntracts Header merge satisfies then
13130
13131 -- Create New Contract
13132 /*8*/
13133 IF l_contract_exist = 'F' OR l_contract_merge = 'F'
13134 THEN
13135 IF fnd_log.level_statement >=
13136 fnd_log.g_current_runtime_level
13137 THEN
13138 fnd_log.STRING
13139 (fnd_log.level_statement,
13140 g_module_current || '.CREATE_K_SYSTEM_TRF',
13141 'Header merge failed, Create a new contract.'
13142 );
13143 END IF;
13144
13145 -- Create New Contract.
13146 create_contract_header
13147 (p_kdtl_rec => p_kdtl_tbl
13148 (l_ctr),
13149 x_msg_data => x_msg_data,
13150 x_chr_id => l_chr_id,
13151 x_msg_count => x_msg_count,
13152 x_return_status => l_return_status
13153 );
13154
13155 IF (fnd_log.level_event >=
13156 fnd_log.g_current_runtime_level
13157 )
13158 THEN
13159 fnd_log.STRING
13160 (fnd_log.level_event,
13161 g_module_current || '.CREATE_K_SYSTEM_TRF',
13162 'Create_Contract_header(Return status = '
13163 || l_return_status
13164 || ')'
13165 );
13166 END IF;
13167
13168 IF NOT l_return_status = okc_api.g_ret_sts_success
13169 THEN
13170 RAISE g_exception_halt_validation;
13171 END IF;
13172
13173 ---If new Contract is created in 'Entered' status launch workflow
13174 l_launch_wf_yn := 'N';
13175 OPEN l_Launch_WF_csr (l_chr_id);
13176 FETCH l_Launch_WF_csr INTO l_launch_wf_yn;
13177 CLOSE l_Launch_WF_csr ;
13178
13179
13180
13181 IF nvl(l_launch_wf_yn,'N') = 'Y'
13182 THEN
13183 l_wf_attr_details.contract_id := l_chr_id;
13184 l_wf_attr_details.irr_flag := 'Y';
13185 l_wf_attr_details.process_type := 'MANUAL';
13186 l_wf_attr_details.negotiation_status := 'DRAFT';
13187 oks_wf_k_process_pvt.launch_k_process_wf
13188 (p_api_version => 1,
13189 p_init_msg_list => 'T',
13190 p_wf_attributes => l_wf_attr_details,
13191 x_return_status => x_return_status,
13192 x_msg_count => x_msg_count,
13193 x_msg_data => x_msg_data
13194 );
13195 END IF;
13196
13197 create_contract_line
13198 (p_kdtl_rec => p_kdtl_tbl
13199 (l_ctr),
13200 p_hdr_id => l_chr_id,
13201 x_return_status => l_return_status,
13202 x_msg_data => x_msg_data,
13203 x_line_id => l_line_id,
13204 x_msg_count => x_msg_count
13205 );
13206
13207 IF (fnd_log.level_event >=
13208 fnd_log.g_current_runtime_level
13209 )
13210 THEN
13211 fnd_log.STRING
13212 (fnd_log.level_event,
13213 g_module_current || '.CREATE_K_SYSTEM_TRF',
13214 'Create_Contract_line(Return status = '
13215 || l_return_status
13216 || ')'
13217 );
13218 END IF;
13219
13220 IF NOT l_return_status = okc_api.g_ret_sts_success
13221 THEN
13222 RAISE g_exception_halt_validation;
13223 END IF;
13224
13225 IF p_kdtl_tbl (l_ctr).coverage_id IS NOT NULL
13226 AND p_kdtl_tbl (l_ctr).standard_cov_yn = 'N'
13227 THEN
13228 oks_coverages_pub.create_adjusted_coverage
13229 (p_api_version => l_api_version,
13230 p_init_msg_list => l_init_msg_list,
13231 x_return_status => l_return_status,
13232 x_msg_count => x_msg_count,
13233 x_msg_data => x_msg_data,
13234 p_source_contract_line_id => p_kdtl_tbl
13235 (l_ctr).service_line_id,
13236 p_target_contract_line_id => l_line_id,
13237 x_actual_coverage_id => l_coverage_id
13238 );
13239
13240 IF (fnd_log.level_event >=
13241 fnd_log.g_current_runtime_level
13242 )
13243 THEN
13244 fnd_log.STRING
13245 (fnd_log.level_event,
13246 g_module_current
13247 || '.CREATE_K_SYSTEM_TRF',
13248 'oks_coverages_pub.create_adjusted_coverage(Return status = '
13249 || l_return_status
13250 || ')'
13251 );
13252 END IF;
13253
13254 IF NOT l_return_status =
13255 okc_api.g_ret_sts_success
13256 THEN
13257 RAISE g_exception_halt_validation;
13258 END IF;
13259
13260 UPDATE oks_k_lines_b
13261 SET coverage_id = l_coverage_id,
13262 standard_cov_yn = 'N'
13263 WHERE cle_id = l_line_id;
13264 END IF;
13265
13266 oks_coverages_pvt.create_k_coverage_ext
13267 (p_api_version => 1,
13268 p_init_msg_list => 'T',
13269 p_src_line_id => p_kdtl_tbl
13270 (l_ctr).service_line_id,
13271 p_tgt_line_id => l_line_id,
13272 x_return_status => l_return_status,
13273 x_msg_count => x_msg_count,
13274 x_msg_data => x_msg_data
13275 );
13276
13277 IF (fnd_log.level_event >=
13278 fnd_log.g_current_runtime_level
13279 )
13280 THEN
13281 fnd_log.STRING
13282 (fnd_log.level_event,
13283 g_module_current
13284 || '..after_coverage_ext',
13285 'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
13286 || l_return_status
13287 || ')'
13288 );
13289 END IF;
13290
13291 IF NOT l_return_status =
13292 okc_api.g_ret_sts_success
13293 THEN
13294 okc_api.set_message
13295 (g_app_name,
13296 g_required_value,
13297 g_col_name_token,
13298 'Coverage Extn creation error '
13299 );
13300 RAISE g_exception_halt_validation;
13301 END IF;
13302
13303 create_contract_subline
13304 (p_kdtl_rec => p_kdtl_tbl
13305 (l_ctr),
13306 p_hdr_id => l_chr_id,
13307 x_subline_id => l_subline_id,
13308 x_update_top_line => l_update_line,
13309 p_line_id => l_line_id,
13310 x_return_status => l_return_status,
13311 x_msg_data => x_msg_data,
13312 x_msg_count => x_msg_count
13313 );
13314
13315 IF (fnd_log.level_event >=
13316 fnd_log.g_current_runtime_level
13317 )
13318 THEN
13319 fnd_log.STRING
13320 (fnd_log.level_event,
13321 g_module_current || '.CREATE_K_SYSTEM_TRF',
13322 'create_contract_subline(Return status = '
13323 || l_return_status
13324 || ')'
13325 );
13326 END IF;
13327
13328 IF NOT l_return_status = okc_api.g_ret_sts_success
13329 THEN
13330 RAISE g_exception_halt_validation;
13331 END IF;
13332
13333 create_transaction_source
13334 (p_create_opr_inst => 'Y',
13335 p_source_code => 'TRANSFER',
13336 p_target_chr_id => l_chr_id,
13337 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
13338 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
13339 p_target_line_id => l_subline_id,
13340 x_oper_instance_id => l_opr_instance_id,
13341 x_return_status => l_return_status,
13342 x_msg_count => x_msg_count,
13343 x_msg_data => x_msg_data
13344 );
13345
13346 IF (fnd_log.level_event >=
13347 fnd_log.g_current_runtime_level
13348 )
13349 THEN
13350 fnd_log.STRING
13351 (fnd_log.level_event,
13352 g_module_current || '.CREATE_K_SYSTEM_TRF',
13353 'Create_transaction_source(Return status ='
13354 || l_return_status
13355 || ')'
13356 );
13357 END IF;
13358
13359 IF NOT l_return_status = 'S'
13360 THEN
13361 RAISE g_exception_halt_validation;
13362 END IF;
13363
13364 create_source_links
13365 (p_create_opr_inst => 'Y',
13366 p_source_code => 'TRANSFER',
13367 p_target_chr_id => l_chr_id,
13368 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
13369 p_target_line_id => l_subline_id,
13370 p_txn_date => p_kdtl_tbl (l_ctr).transfer_date,
13371 x_oper_instance_id => l_renewal_opr_instance_id,
13372 x_return_status => l_return_status,
13373 x_msg_count => x_msg_count,
13374 x_msg_data => x_msg_data
13375 );
13376
13377 IF (fnd_log.level_event >=
13378 fnd_log.g_current_runtime_level
13379 )
13380 THEN
13381 fnd_log.STRING
13382 (fnd_log.level_event,
13383 g_module_current || '.CREATE_K_SYSTEM_TRF',
13384 'Create_transaction_source(Return status ='
13385 || l_return_status
13386 || ')'
13387 );
13388 END IF;
13389
13390 IF NOT l_return_status = 'S'
13391 THEN
13392 RAISE g_exception_halt_validation;
13393 END IF;
13394
13395 l_date_terminated := NULL;
13396 l_subline_price := NULL;
13397
13398 OPEN l_subline_csr (l_subline_id);
13399
13400 FETCH l_subline_csr
13401 INTO l_date_terminated, l_subline_price;
13402
13403 CLOSE l_subline_csr;
13404
13405 l_inst_dtls_tbl (l_ptr).new_contract_id := l_chr_id;
13406 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
13407 TRUNC (l_trfdt);
13408 --p_transfer_rec.transfer_date;
13409 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
13410 p_kdtl_tbl (l_ctr).prod_edt;
13411 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
13412 l_line_id;
13413 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
13414 TRUNC (l_trfdt);
13415 --p_transfer_rec.transfer_date;
13416 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
13417 p_kdtl_tbl (l_ctr).prod_edt;
13418 -- END IF;
13419 l_inst_dtls_tbl (l_ptr).new_subline_id :=
13420 l_subline_id;
13421 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
13422 TRUNC (l_trfdt);
13423 --p_transfer_rec.transfer_date;
13424 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
13425 p_kdtl_tbl (l_ctr).prod_edt;
13426 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
13427 l_subline_price;
13428
13429 -- Fixed for bug 3751050
13430 UPDATE okc_k_lines_b
13431 SET price_negotiated =
13432 (SELECT NVL (SUM (NVL (price_negotiated,
13433 0
13434 )
13435 ),
13436 0
13437 )
13438 FROM okc_k_lines_b
13439 WHERE cle_id = l_line_id
13440 AND dnz_chr_id = l_chr_id)
13441 WHERE ID = l_line_id;
13442
13443 UPDATE oks_k_lines_b
13444 SET tax_amount =
13445 NVL (tax_amount, 0)
13446 + NVL ((SELECT tax_amount
13447 FROM oks_k_lines_b
13448 WHERE cle_id = l_subline_id), 0)
13449 WHERE cle_id = l_line_id;
13450
13451 UPDATE okc_k_headers_b
13452 SET estimated_amount =
13453 (SELECT NVL (SUM (NVL (price_negotiated,
13454 0
13455 )
13456 ),
13457 0
13458 )
13459 FROM okc_k_lines_b
13460 WHERE dnz_chr_id = l_chr_id
13461 AND lse_id IN (1, 19))
13462 WHERE ID = l_chr_id;
13463
13464 UPDATE oks_k_headers_b
13465 SET tax_amount =
13466 NVL (tax_amount, 0)
13467 + NVL ((SELECT tax_amount
13468 FROM oks_k_lines_b
13469 WHERE cle_id = l_subline_id), 0)
13470 WHERE chr_id = l_chr_id;
13471
13472 IF p_kdtl_tbl (l_ctr).lse_id <> 18
13473 THEN
13474 -- Create Billing Schedule
13475 OPEN l_srvdt_csr (l_line_id);
13476
13477 FETCH l_srvdt_csr
13478 INTO l_srv_sdt, l_srv_edt;
13479
13480 CLOSE l_srvdt_csr;
13481
13482 create_billing_schedule
13483 (p_line_id => l_line_id,
13484 p_covlvl_id => l_subline_id,
13485 p_period_start => p_kdtl_tbl(l_ctr).period_start,
13486 p_start_date => l_srv_sdt,
13487 p_end_date => l_srv_edt,
13488 p_update_line => l_update_line,
13489 x_msg_data => x_msg_data,
13490 x_msg_count => x_msg_count,
13491 x_return_status => l_return_status
13492 );
13493
13494 IF (fnd_log.level_event >=
13495 fnd_log.g_current_runtime_level
13496 )
13497 THEN
13498 fnd_log.STRING
13499 (fnd_log.level_event,
13500 g_module_current
13501 || '.CREATE_K_SYSTEM_TRF',
13502 'Create_billing_schedule(Return status = '
13503 || l_return_status
13504 || ')'
13505 );
13506 END IF;
13507
13508 IF NOT l_return_status =
13509 okc_api.g_ret_sts_success
13510 THEN
13511 RAISE g_exception_halt_validation;
13512 END IF;
13513
13514 /*UPDATE okc_k_lines_b
13515 SET price_negotiated = ( SELECT NVL( SUM(NVL( price_negotiated, 0)),0 )
13516 FROM okc_k_lines_b
13517 WHERE cle_id = l_line_id
13518 AND dnz_chr_id = l_chr_id)
13519 WHERE id = l_line_id;
13520
13521 UPDATE okc_k_headers_b
13522 SET estimated_amount = ( SELECT NVL( SUM( NVL(price_negotiated,0) ), 0 )
13523 FROM okc_k_lines_b
13524 WHERE dnz_chr_id = l_chr_id
13525 AND lse_id in (1,19) )
13526 WHERE id = l_chr_id;*/
13527
13528 -- Check Qa
13529 OPEN l_qa_csr (l_chr_id);
13530
13531 FETCH l_qa_csr
13532 INTO l_qcl_id;
13533
13534 CLOSE l_qa_csr;
13535
13536 okc_qa_check_pub.execute_qa_check_list
13537 (p_api_version => l_api_version,
13538 p_init_msg_list => okc_api.g_false,
13539 x_return_status => x_return_status,
13540 x_msg_count => x_msg_count,
13541 x_msg_data => x_msg_data,
13542 p_qcl_id => l_qcl_id,
13543 p_chr_id => l_chr_id,
13544 x_msg_tbl => l_msg_tbl
13545 );
13546
13547 IF (fnd_log.level_event >=
13548 fnd_log.g_current_runtime_level
13549 )
13550 THEN
13551 fnd_log.STRING
13552 (fnd_log.level_event,
13553 g_module_current
13554 || '.CREATE_K_SYSTEM_TRF',
13555 'okc_qa_check_pub.execute_qa_check_list(Return status = '
13556 || x_return_status
13557 || ')'
13558 );
13559 END IF;
13560
13561 IF x_return_status <> okc_api.g_ret_sts_success
13562 THEN
13563 RAISE g_exception_halt_validation;
13564 END IF;
13565
13566 l_max_severity := 'I';
13567
13568 IF l_msg_tbl.COUNT > 0
13569 THEN
13570 i := l_msg_tbl.FIRST;
13571
13572 LOOP
13573 IF l_msg_tbl (i).error_status = 'E'
13574 THEN
13575 --'QA returned with errors. ';
13576 EXIT;
13577 END IF;
13578
13579 EXIT WHEN i = l_msg_tbl.LAST;
13580 i := l_msg_tbl.NEXT (i);
13581 END LOOP;
13582 END IF; --table count
13583
13584 IF fnd_log.level_error >=
13585 fnd_log.g_current_runtime_level
13586 THEN
13587 fnd_log.STRING (fnd_log.level_error,
13588 g_module_current
13589 || '.CREATE_K_SYSTEM_TRF',
13590 'qa Check list error'
13591 || l_msg_tbl (i).error_status
13592 || ','
13593 || l_msg_tbl (i).DATA
13594 );
13595 END IF;
13596
13597 IF l_msg_tbl (i).error_status = 'E'
13598 THEN
13599 -- Change the Contract status to QA_HOLD
13600 -- if the COntract is in either Signed or Active status
13601 OPEN l_hdr_sts_csr (l_chr_id);
13602
13603 FETCH l_hdr_sts_csr
13604 INTO l_hdr_sts;
13605
13606 CLOSE l_hdr_sts_csr;
13607
13608 get_sts_code (NULL,
13609 l_hdr_sts,
13610 l_ste_code,
13611 l_sts_code
13612 );
13613
13614 IF l_ste_code IN ('ACTIVE', 'SIGNED')
13615 THEN
13616 get_sts_code ('ENTERED',
13617 NULL,
13618 l_ste_code,
13619 l_sts_code
13620 );
13621
13622 UPDATE okc_k_headers_b
13623 SET sts_code = l_sts_code,
13624 date_approved = NULL,
13625 date_signed = NULL
13626 WHERE ID = l_chr_id;
13627
13628 UPDATE okc_k_lines_b
13629 SET sts_code = l_sts_code
13630 WHERE dnz_chr_id = l_chr_id;
13631
13632 l_wf_attr_details.contract_id := l_chr_id;
13633 l_wf_attr_details.irr_flag := 'Y';
13634 l_wf_attr_details.process_type := 'MANUAL';
13635 l_wf_attr_details.negotiation_status :=
13636 'DRAFT';
13637 oks_wf_k_process_pvt.launch_k_process_wf
13638 (p_api_version => 1,
13639 p_init_msg_list => 'T',
13640 p_wf_attributes => l_wf_attr_details,
13641 x_return_status => x_return_status,
13642 x_msg_count => x_msg_count,
13643 x_msg_data => x_msg_data
13644 );
13645 END IF;
13646 END IF;
13647
13648 launch_workflow
13649 ( 'INSTALL BASE ACTIVITY : TRANSFER '
13650 || fnd_global.local_chr (10)
13651 || 'Contract Number : '
13652 || get_contract_number (l_chr_id)
13653 || fnd_global.local_chr (10)
13654 || 'New Contract Created : '
13655 || l_service_name
13656 );
13657 END IF;
13658 /*E8*/
13659 END IF;
13660
13661 --Open l_hdr_sts_csr(l_chr_id);
13662 --Fetch l_hdr_Sts_csr into l_hdr_sts;
13663 --Close l_hdr_sts_csr;
13664 --Removed trunc for transatcion date as the cursor to retrieve contracts
13665 --to merge for system transfers fails to return K. The cursor looks at the time value compnent.
13666 l_inst_dtls_tbl (l_ptr).transaction_date :=
13667 (p_kdtl_tbl (l_ctr).transaction_date);
13668 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
13669 l_inst_dtls_tbl (l_ptr).system_id :=
13670 p_kdtl_tbl (l_ctr).system_id;
13671 l_inst_dtls_tbl (l_ptr).transfer_option :=
13672 l_trf_option;
13673 l_inst_dtls_tbl (l_ptr).instance_id_new :=
13674 p_kdtl_tbl (l_ctr).old_cp_id;
13675 --l_inst_dtls_tbl(l_ptr).INSTANCE_AMT_NEW := p_kdtl_tbl( l_ctr ).service_amount;
13676 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
13677 p_kdtl_tbl (l_ctr).cp_qty;
13678 l_inst_dtls_tbl (l_ptr).new_customer :=
13679 p_kdtl_tbl (l_ctr).new_account_id;
13680 --l_inst_dtls_tbl(l_ptr).NEW_K_STATUS := l_hdr_sts;
13681 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
13682 p_kdtl_tbl (l_ctr).service_amount;
13683 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
13684 p_kdtl_tbl (l_ctr).cp_qty;
13685 l_inst_dtls_tbl (l_ptr).old_contract_id :=
13686 p_kdtl_tbl (l_ctr).hdr_id;
13687 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
13688 p_kdtl_tbl (l_ctr).hdr_sdt;
13689 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
13690 p_kdtl_tbl (l_ctr).hdr_edt;
13691 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
13692 p_kdtl_tbl (l_ctr).service_line_id;
13693 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
13694 p_kdtl_tbl (l_ctr).service_sdt;
13695 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
13696 p_kdtl_tbl (l_ctr).service_edt;
13697 l_inst_dtls_tbl (l_ptr).old_subline_id :=
13698 p_kdtl_tbl (l_ctr).object_line_id;
13699 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
13700 p_kdtl_tbl (l_ctr).prod_sdt;
13701 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
13702 p_kdtl_tbl (l_ctr).prod_edt;
13703 l_inst_dtls_tbl (l_ptr).old_customer :=
13704 p_kdtl_tbl (l_ctr).old_account_id;
13705 l_inst_dtls_tbl (l_ptr).old_k_status :=
13706 p_kdtl_tbl (l_ctr).hdr_sts;
13707 END IF;
13708 /*E2*/
13709 END IF;
13710 END IF;
13711
13712 --errorout_n('l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
13713 IF l_inst_dtls_tbl.COUNT <> 0
13714 THEN
13715 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
13716 THEN
13717 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
13718
13719 FETCH l_refnum_csr
13720 INTO l_ref_num;
13721
13722 CLOSE l_refnum_csr;
13723
13724 l_parameters :=
13725 ' Old CP :'
13726 || p_kdtl_tbl (l_ctr).old_cp_id
13727 || ','
13728 || 'Item Id:'
13729 || p_kdtl_tbl (l_ctr).prod_inventory_item
13730 || ','
13731 || 'Old Customer :'
13732 || p_kdtl_tbl (l_ctr).old_account_id
13733 || ','
13734 || 'System Id:'
13735 || p_kdtl_tbl (l_ctr).system_id
13736 || ','
13737 || 'Transaction type :'
13738 || 'TRF'
13739 || ','
13740 || ' Transaction date :'
13741 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
13742 || ','
13743 || 'New Customer:'
13744 || p_kdtl_tbl (l_ctr).new_account_id;
13745 --oks_instance_history
13746 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
13747 l_insthist_rec.instance_id :=
13748 p_kdtl_tbl (l_ctr).old_cp_id;
13749 l_insthist_rec.transaction_type := 'TRF';
13750 l_insthist_rec.transaction_date :=
13751 (p_kdtl_tbl (l_ctr).transaction_date);
13752 l_insthist_rec.reference_number := l_ref_num;
13753 l_insthist_rec.PARAMETERS := l_parameters;
13754 oks_ins_pvt.insert_row
13755 (p_api_version => 1.0,
13756 p_init_msg_list => 'T',
13757 x_return_status => l_return_status,
13758 x_msg_count => l_msg_count,
13759 x_msg_data => l_msg_data,
13760 p_insv_rec => l_insthist_rec,
13761 x_insv_rec => x_insthist_rec
13762 );
13763
13764 IF (fnd_log.level_event >=
13765 fnd_log.g_current_runtime_level
13766 )
13767 THEN
13768 fnd_log.STRING
13769 (fnd_log.level_event,
13770 g_module_current || '.CREATE_K_SYSTEM_TRF',
13771 'oks_ins_pvt.insert_row(Return status = '
13772 || l_return_status
13773 || ')'
13774 );
13775 END IF;
13776
13777 x_return_status := l_return_status;
13778
13779 IF NOT l_return_status = okc_api.g_ret_sts_success
13780 THEN
13781 x_return_status := l_return_status;
13782 RAISE g_exception_halt_validation;
13783 END IF;
13784
13785 l_instparent_id := x_insthist_rec.ID;
13786 END IF;
13787
13788 --errorout_n('in inst l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
13789 FOR l_ctr IN 1 .. l_inst_dtls_tbl.COUNT
13790 LOOP
13791 l_inst_dtls_tbl (l_ctr).ins_id := l_instparent_id;
13792
13793 OPEN l_hdr_sts_csr
13794 (l_inst_dtls_tbl (l_ctr).new_contract_id
13795 );
13796
13797 FETCH l_hdr_sts_csr
13798 INTO l_hdr_sts;
13799
13800 CLOSE l_hdr_sts_csr; -- Vigandhi 03-Feb-2004
13801
13802 l_inst_dtls_tbl (l_ctr).new_k_status := l_hdr_sts;
13803 -- FIx for bug 2408704
13804 END LOOP;
13805
13806 --oks_inst_history_details
13807 oks_ihd_pvt.insert_row (p_api_version => 1.0,
13808 p_init_msg_list => 'T',
13809 x_return_status => l_return_status,
13810 x_msg_count => l_msg_count,
13811 x_msg_data => l_msg_data,
13812 p_ihdv_tbl => l_inst_dtls_tbl,
13813 x_ihdv_tbl => x_inst_dtls_tbl
13814 );
13815
13816 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
13817 )
13818 THEN
13819 fnd_log.STRING
13820 (fnd_log.level_event,
13821 g_module_current || '.CREATE_K_SYSTEM_TRF',
13822 'oks_ihd_pvt.insert_row(Return status = '
13823 || l_return_status
13824 || ')'
13825 );
13826 END IF;
13827
13828 x_return_status := l_return_status;
13829
13830 IF NOT l_return_status = okc_api.g_ret_sts_success
13831 THEN
13832 x_return_status := l_return_status;
13833 RAISE g_exception_halt_validation;
13834 END IF;
13835 If date_terminated is not null or date_cancelled is not null Then
13836 Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
13837 Fetch l_hdr_sts_csr into l_hdr_sts;
13838 Close l_hdr_sts_csr;
13839
13840 If p_kdtl_tbl (l_ctr).system_id Is Null Then
13841 Update oks_inst_hist_details set new_k_status = l_hdr_sts
13842 Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
13843 Else
13844 Update oks_inst_hist_details set new_k_status = l_hdr_sts
13845 Where system_id = p_kdtl_tbl (l_ctr).system_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id
13846 and transaction_date = p_kdtl_tbl (l_ctr).transaction_date;
13847 End If;
13848
13849 End If;
13850
13851
13852
13853
13854 END IF;
13855 END IF;
13856
13857 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
13858 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
13859 END LOOP;
13860 END IF;
13861
13862 x_return_status := l_return_status;
13863 EXCEPTION
13864 WHEN g_exception_halt_validation
13865 THEN
13866 x_return_status := l_return_status;
13867 NULL;
13868 WHEN OTHERS
13869 THEN
13870 x_return_status := okc_api.g_ret_sts_unexp_error;
13871 okc_api.set_message (g_app_name,
13872 g_unexpected_error,
13873 g_sqlcode_token,
13874 SQLCODE,
13875 g_sqlerrm_token,
13876 SQLERRM
13877 );
13878 END create_k_system_transfer;
13879
13880 -----Terminate of Customer product
13881 PROCEDURE create_contract_terminate (
13882 p_kdtl_tbl IN contract_tbl,
13883 x_return_status OUT NOCOPY VARCHAR2,
13884 x_msg_count OUT NOCOPY NUMBER,
13885 x_msg_data OUT NOCOPY VARCHAR2
13886 )
13887 IS
13888 CURSOR l_serv_csr (p_serv_id NUMBER)
13889 IS
13890 SELECT t.description NAME
13891 FROM mtl_system_items_tl t
13892 WHERE t.inventory_item_id = p_serv_id
13893 AND t.LANGUAGE = USERENV ('LANG')
13894 AND ROWNUM < 2;
13895
13896 CURSOR l_refnum_csr (p_cp_id NUMBER)
13897 IS
13898 SELECT instance_number
13899 FROM csi_item_instances
13900 WHERE instance_id = p_cp_id;
13901
13902
13903 Cursor l_hdr_sts_csr(p_hdr_id Number)
13904 Is
13905 Select sts_code
13906 From Okc_k_headers_all_b
13907 WHere id = p_hdr_id;
13908
13909 l_hdr_status Varchar2(240);
13910
13911 l_ref_num VARCHAR2 (30);
13912 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
13913 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
13914 l_instparent_id NUMBER;
13915 l_old_cp_id NUMBER;
13916 l_insthist_rec oks_ins_pvt.insv_rec_type;
13917 x_insthist_rec oks_ins_pvt.insv_rec_type;
13918 l_parameters VARCHAR2 (2000);
13919 l_service_name VARCHAR2 (2000);
13920 --Contract Line Table
13921 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
13922 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
13923 --SalesCredit
13924 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
13925 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
13926 l_line_rec k_line_service_rec_type;
13927 l_covd_rec k_line_covered_level_rec_type;
13928 l_available_yn CHAR;
13929 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
13930 l_chrid NUMBER := NULL;
13931 l_lineid NUMBER := NULL;
13932 l_days NUMBER := 0;
13933 l_day1price NUMBER := 0;
13934 l_oldamt NUMBER := 0;
13935 l_ctr NUMBER := 0;
13936 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
13937 l_api_version CONSTANT NUMBER := 1.0;
13938 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
13939 l_index VARCHAR2 (2000);
13940 l_trmdt DATE;
13941 l_suppress_credit VARCHAR2 (2) := 'N';
13942 l_full_credit VARCHAR2 (2) := 'N';
13943 l_ste_code VARCHAR2 (30);
13944 l_sts_code VARCHAR2 (30);
13945 date_terminated DATE;
13946 date_cancelled DATE;
13947 l_alllines_terminated VARCHAR2 (1);
13948 l_alllines_cancelled VARCHAR2 (1);
13949 l_chrv_tbl_in okc_contract_pub.chrv_tbl_type;
13950 l_chrv_tbl_out okc_contract_pub.chrv_tbl_type;
13951 l_ptr NUMBER;
13952 l_term_date_flag VARCHAR2 (1);
13953 l_credit_amount VARCHAR2 (50);
13954 BEGIN
13955 x_return_status := okc_api.g_ret_sts_success;
13956
13957 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
13958 THEN
13959 fnd_log.STRING (fnd_log.level_event,
13960 g_module_current || '.CREATE_CONTRACT_IBTERMINATE.',
13961 'count = ' || p_kdtl_tbl.COUNT || ')'
13962 );
13963 END IF;
13964
13965 l_old_cp_id := 0;
13966
13967 IF p_kdtl_tbl.COUNT > 0
13968 THEN
13969 l_ctr := p_kdtl_tbl.FIRST;
13970
13971 LOOP
13972
13973 get_sts_code (NULL,
13974 p_kdtl_tbl (l_ctr).hdr_sts,
13975 l_ste_code,
13976 l_sts_code
13977 );
13978
13979 IF l_ste_code = 'HOLD'
13980 THEN
13981 l_return_status := okc_api.g_ret_sts_error;
13982
13983 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
13984 THEN
13985 fnd_log.STRING (fnd_log.level_error,
13986 g_module_current
13987 || '.CREATE_CONTRACT_IBTERMINATE.ERROR',
13988 'Contract in QA_HOLD status'
13989 );
13990 END IF;
13991
13992 okc_api.set_message (g_app_name,
13993 g_invalid_value,
13994 g_col_name_token,
13995 'Termination not allowed .Contract '
13996 || p_kdtl_tbl (l_ctr).contract_number
13997 || 'is in QA_HOLD status'
13998 );
13999 RAISE g_exception_halt_validation;
14000 END IF;
14001
14002 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14003 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14004 END LOOP;
14005 END IF;
14006
14007 IF p_kdtl_tbl.COUNT > 0
14008 THEN
14009 l_ctr := p_kdtl_tbl.FIRST;
14010
14011 LOOP
14012 l_ptr := 1;
14013 --Fix for Bug 5406201
14014
14015 l_clev_tbl_in.delete;
14016 l_chrv_tbl_in.delete;
14017 l_inst_dtls_tbl.DELETE;
14018
14019
14020 okc_context.set_okc_org_context
14021 (p_kdtl_tbl (l_ctr).hdr_org_id,
14022 p_kdtl_tbl (l_ctr).organization_id
14023 );
14024 get_sts_code (NULL,
14025 p_kdtl_tbl (l_ctr).prod_sts_code,
14026 l_ste_code,
14027 l_sts_code
14028 );
14029
14030 IF l_ste_code NOT IN ('ENTERED','EXPIRED') /*Bug:7555733*/
14031 THEN
14032 l_trmdt := p_kdtl_tbl (l_ctr).termination_date;
14033
14034 IF (TRUNC (l_trmdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
14035 THEN
14036 l_trmdt := p_kdtl_tbl (l_ctr).prod_sdt;
14037 END IF;
14038
14039 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
14040 THEN
14041 fnd_log.STRING
14042 (fnd_log.level_statement,
14043 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14044 'OKS Raise credit memo profile option value ='
14045 || fnd_profile.VALUE
14046 ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
14047 );
14048 END IF;
14049
14050 /*IF fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') = 'YES'
14051 OR fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') IS NULL THEN
14052 l_suppress_credit := 'N';
14053 ELSE
14054 l_suppress_credit := 'Y';
14055 END IF;*/
14056 l_credit_amount :=
14057 oks_ib_util_pvt.get_credit_option
14058 (p_kdtl_tbl (l_ctr).party_id,
14059 p_kdtl_tbl (l_ctr).hdr_org_id,
14060 p_kdtl_tbl (l_ctr).termination_date
14061 );
14062
14063 IF UPPER (l_credit_amount) = 'FULL'
14064 THEN
14065 l_full_credit := 'Y';
14066 l_suppress_credit := 'N';
14067 --l_trmdt := p_kdtl_tbl( l_ctr ).prod_sdt;
14068 l_term_date_flag := 'N';
14069 ELSIF UPPER (l_credit_amount) = 'NONE'
14070 THEN
14071 l_suppress_credit := 'Y';
14072 l_full_credit := 'N';
14073 l_term_date_flag := 'N';
14074 ELSIF UPPER (l_credit_amount) = 'CALCULATED'
14075 THEN
14076 l_suppress_credit := 'N';
14077 l_full_credit := 'N';
14078 l_term_date_flag := 'N';
14079 END IF;
14080
14081 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_trmdt)
14082 THEN
14083 l_trmdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
14084 l_suppress_credit := 'Y';
14085 l_full_credit := 'N';
14086 l_term_date_flag := 'Y';
14087 END IF;
14088
14089 oks_bill_rec_pub.pre_terminate_cp
14090 (p_calledfrom => -1,
14091 p_cle_id => p_kdtl_tbl
14092 (l_ctr).object_line_id,
14093 p_termination_date => TRUNC (l_trmdt),
14094 p_terminate_reason => 'EXP',
14095 p_override_amount => NULL,
14096 p_con_terminate_amount => NULL,
14097 p_termination_amount => NULL,
14098 p_suppress_credit => l_suppress_credit,
14099 p_full_credit => l_full_credit,
14100 --'N',
14101 p_term_date_flag => l_term_date_flag,
14102 p_term_cancel_source => 'IBTERMINATE',
14103 x_return_status => l_return_status
14104 );
14105
14106 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14107 THEN
14108 fnd_log.STRING
14109 (fnd_log.level_event,
14110 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14111 'oks_bill_rec_pub.Pre_terminate_cp(Return status = '
14112 || l_return_status
14113 || ')'
14114 );
14115 END IF;
14116
14117 IF NOT l_return_status = okc_api.g_ret_sts_success
14118 THEN
14119 RAISE g_exception_halt_validation;
14120 END IF;
14121
14122 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
14123 TRUNC (l_trmdt);
14124 ---Terminate top line if all the sublines are terminated due to Instance termination
14125 date_terminated := NULL;
14126 oks_ib_util_pvt.check_termcancel_lines
14127 (p_kdtl_tbl (l_ctr).service_line_id,
14128 'SL',
14129 'T',
14130 date_terminated
14131 );
14132
14133 IF date_terminated IS NOT NULL
14134 THEN
14135 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
14136
14137 l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).service_line_id;
14138 l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
14139 l_clev_tbl_in (1).trn_code := 'EXP';
14140 ---check the actual code
14141 l_clev_tbl_in (1).term_cancel_source := 'IBTERMINATE';
14142 If TRUNC (date_terminated)<= trunc(sysdate) Then
14143 l_clev_tbl_in (1).sts_code := l_sts_code;
14144 End If;
14145
14146 okc_contract_pub.update_contract_line
14147 (p_api_version => l_api_version,
14148 p_init_msg_list => l_init_msg_list,
14149 p_restricted_update => okc_api.g_true,
14150 x_return_status => l_return_status,
14151 x_msg_count => x_msg_count,
14152 x_msg_data => x_msg_data,
14153 p_clev_tbl => l_clev_tbl_in,
14154 x_clev_tbl => l_clev_tbl_out
14155 );
14156
14157 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14158 )
14159 THEN
14160 fnd_log.STRING
14161 (fnd_log.level_event,
14162 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14163 'oks_bill_rec_pub.update_contract_line(Return status = '
14164 || l_return_status
14165 || ')'
14166 );
14167 END IF;
14168
14169 IF NOT l_return_status = okc_api.g_ret_sts_success
14170 THEN
14171 RAISE g_exception_halt_validation;
14172 END IF;
14173 END IF;
14174
14175 date_terminated := NULL;
14176 oks_ib_util_pvt.check_termcancel_lines
14177 (p_kdtl_tbl (l_ctr).hdr_id,
14178 'TL',
14179 'T',
14180 date_terminated
14181 );
14182
14183 IF date_terminated IS NOT NULL
14184 THEN
14185 get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
14186
14187 l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
14188 l_chrv_tbl_in (1).date_terminated :=
14189 TRUNC (date_terminated);
14190 l_chrv_tbl_in (1).trn_code := 'EXP';
14191 l_chrv_tbl_in (1).term_cancel_source := 'IBTERMINATE';
14192 If TRUNC (date_terminated)<= trunc(sysdate) Then
14193 l_chrv_tbl_in (1).sts_code := l_sts_code;
14194 End If;
14195
14196 okc_contract_pub.update_contract_header
14197 (p_api_version => l_api_version,
14198 p_init_msg_list => l_init_msg_list,
14199 p_restricted_update => okc_api.g_true,
14200 x_return_status => l_return_status,
14201 x_msg_count => x_msg_count,
14202 x_msg_data => x_msg_data,
14203 p_chrv_tbl => l_chrv_tbl_in,
14204 x_chrv_tbl => l_chrv_tbl_out
14205 );
14206
14207 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14208 )
14209 THEN
14210 fnd_log.STRING
14211 (fnd_log.level_event,
14212 g_module_current
14213 || '.Update_Hdr_Dates.external_call.after',
14214 'okc_contract_pub.update_contract_header(Return status = '
14215 || l_return_status
14216 || ')'
14217 );
14218 END IF;
14219
14220 IF NOT l_return_status = okc_api.g_ret_sts_success
14221 THEN
14222 RAISE g_exception_halt_validation;
14223 END IF;
14224 END IF;
14225 ELSIF l_ste_code = 'ENTERED'
14226 THEN
14227 l_trmdt := p_kdtl_tbl (l_ctr).termination_date;
14228
14229 IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_trmdt)
14230 THEN
14231 l_trmdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
14232 END IF;
14233
14234 -- added for the bug # 6000133
14235 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14236
14237 oks_change_status_pvt.update_line_status
14238 (x_return_status => l_return_status,
14239 x_msg_data => x_msg_data,
14240 x_msg_count => x_msg_count,
14241 p_init_msg_list => 'F',
14242 p_id => p_kdtl_tbl (l_ctr).hdr_id,
14243 p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
14244 p_new_sts_code => l_sts_code,
14245 p_canc_reason_code => 'TERMINATED',
14246 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
14247 p_old_ste_code => 'ENTERED',
14248 p_new_ste_code => 'CANCELLED',
14249 p_term_cancel_source => 'IBTERMINATE',
14250 p_date_cancelled => TRUNC (l_trmdt),
14251 p_comments => NULL,
14252 p_validate_status => 'N'
14253 );
14254
14255 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14256 THEN
14257 fnd_log.STRING
14258 (fnd_log.level_event,
14259 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14260 'okc_contract_pub.update_contract_line(Return status ='
14261 || l_return_status
14262 || ')'
14263 );
14264 END IF;
14265
14266 IF NOT l_return_status = okc_api.g_ret_sts_success
14267 THEN
14268 RAISE g_exception_halt_validation;
14269 END IF;
14270
14271 l_inst_dtls_tbl (l_ptr).date_cancelled := TRUNC (l_trmdt);
14272 date_cancelled := NULL;
14273 oks_ib_util_pvt.check_termcancel_lines
14274 (p_kdtl_tbl (l_ctr).service_line_id,
14275 'SL',
14276 'C',
14277 date_cancelled
14278 );
14279
14280 IF date_cancelled IS NOT NULL
14281 THEN
14282
14283 -- added for the bug # 6000133
14284 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14285
14286 oks_change_status_pvt.update_line_status
14287 (x_return_status => l_return_status,
14288 x_msg_data => x_msg_data,
14289 x_msg_count => x_msg_count,
14290 p_init_msg_list => 'F',
14291 p_id => p_kdtl_tbl (l_ctr).hdr_id,
14292 p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
14293 p_new_sts_code => l_sts_code,
14294 p_canc_reason_code => 'TERMINATED',
14295 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
14296 p_old_ste_code => 'ENTERED',
14297 p_new_ste_code => 'CANCELLED',
14298 p_term_cancel_source => 'IBTERMINATE',
14299 p_date_cancelled => TRUNC (date_cancelled),
14300 p_comments => NULL,
14301 p_validate_status => 'N'
14302 );
14303
14304 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14305 )
14306 THEN
14307 fnd_log.STRING
14308 (fnd_log.level_event,
14309 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14310 'okc_contract_pub.update_contract_line(Return status = '
14311 || l_return_status
14312 || ')'
14313 );
14314 END IF;
14315
14316 IF NOT l_return_status = okc_api.g_ret_sts_success
14317 THEN
14318 RAISE g_exception_halt_validation;
14319 END IF;
14320 END IF;
14321
14322 date_cancelled := NULL;
14323 oks_ib_util_pvt.check_termcancel_lines
14324 (p_kdtl_tbl (l_ctr).hdr_id,
14325 'TL',
14326 'C',
14327 date_cancelled
14328 );
14329
14330 IF date_cancelled IS NOT NULL
14331 THEN
14332 l_return_status := 'S';
14333
14334 -- added for the bug # 6000133
14335 get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14336
14337 oks_change_status_pvt.update_header_status
14338 (x_return_status => l_return_status,
14339 x_msg_data => x_msg_data,
14340 x_msg_count => x_msg_count,
14341 p_init_msg_list => 'F',
14342 p_id => p_kdtl_tbl (l_ctr).hdr_id,
14343 p_new_sts_code => l_sts_code,
14344 p_canc_reason_code => 'TERMINATED',
14345 p_old_sts_code => p_kdtl_tbl (l_ctr).prod_sts_code,
14346 p_comments => NULL,
14347 p_term_cancel_source => 'IBTERMINATE',
14348 p_date_cancelled => TRUNC (date_cancelled),
14349 p_validate_status => 'N'
14350 );
14351
14352 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14353 )
14354 THEN
14355 fnd_log.STRING
14356 (fnd_log.level_event,
14357 g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14358 'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status = '
14359 || l_return_status
14360 || ')'
14361 );
14362 END IF;
14363
14364 IF NOT l_return_status = okc_api.g_ret_sts_success
14365 THEN
14366 RAISE g_exception_halt_validation;
14367 END IF;
14368 END IF;
14369 END IF;
14370
14371 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
14372
14373 FETCH l_serv_csr
14374 INTO l_service_name;
14375
14376 CLOSE l_serv_csr;
14377
14378 launch_workflow ( 'INSTALL BASE ACTIVITY : TERMINATE '
14379 || fnd_global.local_chr (10)
14380 || 'Contract Number : '
14381 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
14382 || fnd_global.local_chr (10)
14383 || 'Customer product end dated : '
14384 || l_service_name
14385 );
14386 /* get_sts_code (NULL,
14387 p_kdtl_tbl (l_ctr).hdr_sts,
14388 l_ste_code,
14389 l_sts_code
14390 );
14391
14392 */
14393
14394
14395 l_inst_dtls_tbl (l_ptr).transaction_date :=
14396 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
14397 l_inst_dtls_tbl (l_ptr).transaction_type := 'TRM';
14398 l_inst_dtls_tbl (l_ptr).instance_id_new :=
14399 p_kdtl_tbl (l_ctr).old_cp_id;
14400 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
14401 p_kdtl_tbl (l_ctr).old_cp_quantity;
14402 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
14403 p_kdtl_tbl (l_ctr).old_cp_quantity;
14404 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
14405 p_kdtl_tbl (l_ctr).service_amount;
14406 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
14407 p_kdtl_tbl (l_ctr).service_amount;
14408 l_inst_dtls_tbl (l_ptr).old_contract_id :=
14409 p_kdtl_tbl (l_ctr).hdr_id;
14410 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
14411 p_kdtl_tbl (l_ctr).hdr_sdt;
14412 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
14413 p_kdtl_tbl (l_ctr).hdr_edt;
14414 l_inst_dtls_tbl (l_ptr).new_contract_id :=
14415 p_kdtl_tbl (l_ctr).hdr_id;
14416 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
14417 p_kdtl_tbl (l_ctr).hdr_sdt;
14418 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
14419 p_kdtl_tbl (l_ctr).hdr_edt;
14420 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
14421 p_kdtl_tbl (l_ctr).service_line_id;
14422 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
14423 p_kdtl_tbl (l_ctr).service_sdt;
14424 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
14425 p_kdtl_tbl (l_ctr).service_edt;
14426 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
14427 p_kdtl_tbl (l_ctr).service_line_id;
14428 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
14429 p_kdtl_tbl (l_ctr).service_sdt;
14430 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
14431 p_kdtl_tbl (l_ctr).service_edt;
14432 l_inst_dtls_tbl (l_ptr).old_subline_id :=
14433 p_kdtl_tbl (l_ctr).object_line_id;
14434 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
14435 p_kdtl_tbl (l_ctr).prod_sdt;
14436 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
14437 p_kdtl_tbl (l_ctr).prod_edt;
14438 l_inst_dtls_tbl (l_ptr).new_subline_id :=
14439 p_kdtl_tbl (l_ctr).object_line_id;
14440 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
14441 p_kdtl_tbl (l_ctr).prod_sdt;
14442 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
14443 p_kdtl_tbl (l_ctr).prod_edt;
14444 l_inst_dtls_tbl (l_ptr).old_customer :=
14445 p_kdtl_tbl (l_ctr).cust_account;
14446 l_inst_dtls_tbl (l_ptr).new_customer :=
14447 p_kdtl_tbl (l_ctr).cust_account;
14448 l_inst_dtls_tbl (l_ptr).old_k_status := p_kdtl_tbl (l_ctr).hdr_sts;
14449
14450 l_inst_dtls_tbl (l_ptr).new_k_status := p_kdtl_tbl (l_ctr).hdr_sts;
14451
14452
14453 IF l_inst_dtls_tbl.COUNT <> 0
14454 THEN
14455 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
14456 THEN
14457 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
14458
14459 FETCH l_refnum_csr
14460 INTO l_ref_num;
14461
14462 CLOSE l_refnum_csr;
14463
14464 l_parameters :=
14465 ' Old CP :'
14466 || p_kdtl_tbl (l_ctr).old_cp_id
14467 || ','
14468 || 'Item Id:'
14469 || p_kdtl_tbl (l_ctr).prod_inventory_item
14470 || ','
14471 || 'Old Quantity:'
14472 || p_kdtl_tbl (l_ctr).current_cp_quantity
14473 || ','
14474 || 'Transaction type :'
14475 || 'TRM'
14476 || ','
14477 || ' Transaction date :'
14478 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
14479 || ','
14480 || 'New quantity:'
14481 || p_kdtl_tbl (l_ctr).new_quantity;
14482 --oks_instance_history
14483 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
14484 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
14485 l_insthist_rec.transaction_type := 'TRM';
14486 l_insthist_rec.transaction_date :=
14487 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
14488 l_insthist_rec.reference_number := l_ref_num;
14489 l_insthist_rec.PARAMETERS := l_parameters;
14490 oks_ins_pvt.insert_row (p_api_version => 1.0,
14491 p_init_msg_list => 'T',
14492 x_return_status => l_return_status,
14493 x_msg_count => x_msg_count,
14494 x_msg_data => x_msg_data,
14495 p_insv_rec => l_insthist_rec,
14496 x_insv_rec => x_insthist_rec
14497 );
14498
14499 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14500 )
14501 THEN
14502 fnd_log.STRING
14503 (fnd_log.level_event,
14504 g_module_current || '.CREATE_K_SYSTEM_TRF',
14505 'oks_ins_pvt.insert_row(Return status = '
14506 || l_return_status
14507 || ')'
14508 );
14509 END IF;
14510
14511 x_return_status := l_return_status;
14512
14513 IF NOT l_return_status = okc_api.g_ret_sts_success
14514 THEN
14515 x_return_status := l_return_status;
14516 RAISE g_exception_halt_validation;
14517 END IF;
14518
14519 l_instparent_id := x_insthist_rec.ID;
14520 END IF;
14521
14522 l_inst_dtls_tbl (l_ptr).ins_id := l_instparent_id;
14523 --oks_inst_history_details
14524 oks_ihd_pvt.insert_row (p_api_version => 1.0,
14525 p_init_msg_list => 'T',
14526 x_return_status => l_return_status,
14527 x_msg_count => x_msg_count,
14528 x_msg_data => x_msg_data,
14529 p_ihdv_tbl => l_inst_dtls_tbl,
14530 x_ihdv_tbl => x_inst_dtls_tbl
14531 );
14532
14533 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14534 THEN
14535 fnd_log.STRING
14536 (fnd_log.level_event,
14537 g_module_current || '.CREATE_IBTERMINATE',
14538 'oks_ihd_pvt.insert_row(Return status = '
14539 || l_return_status
14540 || ')'
14541 );
14542 END IF;
14543
14544 x_return_status := l_return_status;
14545
14546 IF NOT l_return_status = okc_api.g_ret_sts_success
14547 THEN
14548 x_return_status := l_return_status;
14549 RAISE g_exception_halt_validation;
14550 END IF;
14551
14552 If date_terminated is not null or date_cancelled is not null Then
14553 Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
14554 Fetch l_hdr_sts_csr into l_hdr_status;
14555 Close l_hdr_sts_csr;
14556
14557 Update oks_inst_hist_details set new_k_status = l_hdr_status
14558 Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
14559
14560 End If;
14561 END IF;
14562
14563 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14564 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14565 END LOOP;
14566 END IF;
14567 EXCEPTION
14568 WHEN g_exception_halt_validation
14569 THEN
14570 x_return_status := l_return_status;
14571 NULL;
14572 WHEN OTHERS
14573 THEN
14574 x_return_status := okc_api.g_ret_sts_unexp_error;
14575 okc_api.set_message (g_app_name,
14576 g_unexpected_error,
14577 g_sqlcode_token,
14578 SQLCODE,
14579 g_sqlerrm_token,
14580 SQLERRM
14581 );
14582 END;
14583
14584 PROCEDURE update_contract_idc (
14585 p_kdtl_tbl IN contract_tbl,
14586 x_return_status OUT NOCOPY VARCHAR2,
14587 x_msg_count OUT NOCOPY NUMBER,
14588 x_msg_data OUT NOCOPY VARCHAR2
14589 )
14590 IS
14591 -- Cursor to check cov attribute set
14592 CURSOR l_cov_csr (p_cle_id NUMBER)
14593 IS
14594 SELECT KL.sync_date_install
14595 FROM oks_k_lines_b LN, oks_k_lines_b kl
14596 WHERE LN.cle_id = p_cle_id AND kl.cle_id = LN.coverage_id;
14597
14598 -- Cursor to check SR logged
14599 CURSOR l_checksr_csr (
14600 p_line_id NUMBER,
14601 p_sdt DATE,
14602 p_edt DATE,
14603 p_cp_id NUMBER
14604 )
14605 IS
14606 SELECT 'X'
14607 FROM cs_incidents_all_b
14608 WHERE customer_product_id = p_cp_id
14609 AND contract_service_id = p_line_id
14610 AND ( TRUNC (creation_date) <= TRUNC (p_sdt)
14611 OR TRUNC (creation_date) >= TRUNC (p_edt)
14612 );
14613
14614 -- Cursor to get start and end date of sub lines
14615 CURSOR l_subline_dates (
14616 p_topline_id NUMBER,
14617 p_hdr_id NUMBER,
14618 p_subline_id NUMBER
14619 )
14620 IS
14621 SELECT MIN (start_date) sdt, MAX (end_date) edt
14622 FROM okc_k_lines_b
14623 WHERE cle_id = p_topline_id
14624 AND dnz_chr_id = p_hdr_id
14625 AND lse_id = 18
14626 AND ID <> p_subline_id;
14627
14628 -- Cursor to get start and end date of top lines
14629 CURSOR l_topline_dates (p_hdr_id NUMBER, p_topline_id NUMBER)
14630 IS
14631 SELECT MIN (start_date) sdt, MAX (end_date) edt
14632 FROM okc_k_lines_b
14633 WHERE dnz_chr_id = p_hdr_id AND cle_id IS NULL
14634 AND ID <> p_topline_id;
14635
14636 -- Cursor to get the header dates and status
14637 CURSOR l_lndates_csr (p_id NUMBER)
14638 IS
14639 SELECT start_date, end_date
14640 FROM okc_k_lines_b
14641 WHERE ID = p_id;
14642
14643 -- Cursor to get the line dates and status
14644 CURSOR l_hdrdates_csr (p_id NUMBER)
14645 IS
14646 SELECT start_date, end_date, sts_code
14647 FROM okc_k_headers_b
14648 WHERE ID = p_id;
14649
14650 --mmadhavi bug 3761489
14651 CURSOR get_oks_line_dtls (p_id NUMBER)
14652 IS
14653 SELECT ID, object_version_number
14654 FROM oks_k_lines_b
14655 WHERE cle_id = p_id;
14656
14657 --mmadhavi bug 3761489
14658 CURSOR l_serv_csr (p_serv_line_id NUMBER)
14659 IS
14660 SELECT t.description NAME, b.concatenated_segments description
14661 FROM mtl_system_items_b_kfv b,
14662 mtl_system_items_tl t,
14663 okc_k_items ki
14664 WHERE ki.cle_id = p_serv_line_id
14665 AND b.inventory_item_id = TO_CHAR (ki.object1_id1)
14666 AND t.inventory_item_id = b.inventory_item_id
14667 AND t.organization_id = b.organization_id
14668 AND t.LANGUAGE = USERENV ('LANG')
14669 AND ROWNUM < 2;
14670
14671 CURSOR l_refnum_csr (p_cp_id NUMBER)
14672 IS
14673 SELECT instance_number
14674 FROM csi_item_instances
14675 WHERE instance_id = p_cp_id;
14676
14677 l_ref_num VARCHAR2 (30);
14678 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
14679 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
14680 l_instparent_id NUMBER;
14681 l_old_cp_id NUMBER;
14682 l_insthist_rec oks_ins_pvt.insv_rec_type;
14683 x_insthist_rec oks_ins_pvt.insv_rec_type;
14684 l_parameters VARCHAR2 (2000);
14685 l_lndates_rec l_lndates_csr%ROWTYPE;
14686 l_hdrdates_rec l_hdrdates_csr%ROWTYPE;
14687 l_subline_rec l_subline_dates%ROWTYPE;
14688 l_topline_rec l_topline_dates%ROWTYPE;
14689 l_duration NUMBER;
14690 l_timeunits VARCHAR2 (25);
14691 l_api_version CONSTANT NUMBER := 1.0;
14692 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
14693 l_available_yn VARCHAR2 (2);
14694 l_index VARCHAR2 (2000);
14695 l_return_status VARCHAR2 (1) := 'S';
14696 --l_kdtl_tbl oks_extwar_util_pvt.contract_tbl_type;
14697 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
14698 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
14699 l_ctr NUMBER := 0;
14700 l_cov_att VARCHAR2 (1);
14701 v_temp VARCHAR2 (1);
14702 l_sub_sdt DATE := NULL;
14703 l_sub_edt DATE := NULL;
14704 l_top_sdt DATE := NULL;
14705 l_top_edt DATE := NULL;
14706 l_hdr_sdt DATE := NULL;
14707 l_hdr_edt DATE := NULL;
14708 l_status VARCHAR2 (30);
14709 l_top_flag VARCHAR2 (1);
14710 l_hdr_flag VARCHAR2 (1);
14711 l_update_line VARCHAR2 (1);
14712 l_sts_flag VARCHAR2 (1);
14713 l_ste_code VARCHAR2 (240);
14714 l_sts_code VARCHAR2 (240);
14715 l_obj_version_num NUMBER;
14716 l_id NUMBER;
14717 l_prod_item_id NUMBER;
14718 line_desc VARCHAR2 (240);
14719 line_name VARCHAR2 (240);
14720 l_desc VARCHAR2 (240);
14721 l_quantity NUMBER;
14722 l_invoice_text VARCHAR2 (2000);
14723 l_klnv_tbl_in oks_kln_pvt.klnv_tbl_type;
14724 l_klnv_tbl_out oks_kln_pvt.klnv_tbl_type;
14725 BEGIN
14726 x_return_status := okc_api.g_ret_sts_success;
14727
14728 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14729 THEN
14730 fnd_log.STRING (fnd_log.level_event,
14731 g_module_current || '.UPDATE_CONTRACT_IDC.after.',
14732 'count = ' || p_kdtl_tbl.COUNT || ')'
14733 );
14734 END IF;
14735
14736 l_old_cp_id := 0;
14737
14738 IF p_kdtl_tbl.COUNT > 0
14739 THEN
14740 l_ctr := p_kdtl_tbl.FIRST;
14741
14742 LOOP
14743 okc_context.set_okc_org_context
14744 (p_kdtl_tbl (l_ctr).hdr_org_id,
14745 p_kdtl_tbl (l_ctr).organization_id
14746 );
14747
14748 IF p_kdtl_tbl (l_ctr).installation_date IS NULL
14749 THEN
14750 l_return_status := okc_api.g_ret_sts_warning;
14751
14752 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
14753 THEN
14754 fnd_log.STRING (fnd_log.level_error,
14755 g_module_current || '.IB_INTERFACE',
14756 'Installation date changed to null '
14757 );
14758 END IF;
14759
14760 okc_api.set_message (g_app_name, 'OKS_NULL_INSTALLATION_DATE');
14761 RAISE g_exception_halt_validation;
14762 END IF;
14763
14764 l_inst_dtls_tbl.DELETE;
14765 get_sts_code (p_kdtl_tbl (l_ctr).hdr_sts,
14766 NULL,
14767 l_ste_code,
14768 l_sts_code
14769 );
14770 -- Instance history details
14771 --x_inst_dtls_tbl(l_ctr).INST_PARENT_ID := p_idc_rec.old_cp_id;
14772 l_inst_dtls_tbl (1).transaction_date :=
14773 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
14774 l_inst_dtls_tbl (1).transaction_type := 'IDC';
14775 l_inst_dtls_tbl (1).instance_id_new :=
14776 p_kdtl_tbl (l_ctr).old_cp_id;
14777 l_inst_dtls_tbl (1).instance_qty_old :=
14778 p_kdtl_tbl (l_ctr).old_cp_quantity;
14779 l_inst_dtls_tbl (1).instance_qty_new :=
14780 p_kdtl_tbl (l_ctr).old_cp_quantity;
14781 l_inst_dtls_tbl (1).instance_amt_old :=
14782 p_kdtl_tbl (l_ctr).service_amount;
14783 l_inst_dtls_tbl (1).instance_amt_new :=
14784 p_kdtl_tbl (l_ctr).service_amount;
14785 l_inst_dtls_tbl (1).old_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
14786 l_inst_dtls_tbl (1).old_contact_start_date :=
14787 p_kdtl_tbl (l_ctr).hdr_sdt;
14788 l_inst_dtls_tbl (1).old_contract_end_date :=
14789 p_kdtl_tbl (l_ctr).hdr_edt;
14790 l_inst_dtls_tbl (1).old_service_line_id :=
14791 p_kdtl_tbl (l_ctr).service_line_id;
14792 l_inst_dtls_tbl (1).old_service_start_date :=
14793 p_kdtl_tbl (l_ctr).service_sdt;
14794 l_inst_dtls_tbl (1).old_service_end_date :=
14795 p_kdtl_tbl (l_ctr).service_edt;
14796 l_inst_dtls_tbl (1).old_subline_id :=
14797 p_kdtl_tbl (l_ctr).object_line_id;
14798 l_inst_dtls_tbl (1).old_subline_start_date :=
14799 p_kdtl_tbl (l_ctr).prod_sdt;
14800 l_inst_dtls_tbl (1).old_subline_end_date :=
14801 p_kdtl_tbl (l_ctr).prod_edt;
14802 l_inst_dtls_tbl (1).old_customer :=
14803 p_kdtl_tbl (l_ctr).cust_account;
14804 l_inst_dtls_tbl (1).old_k_status := l_sts_code;
14805 -- If installation date is null Contract starts with OM shipment date
14806 -- New start date for the covered line
14807 l_sub_sdt := trunc(p_kdtl_tbl (l_ctr).installation_date); --bug 5757116 added trunc.
14808 okc_time_util_pub.get_duration
14809 (p_start_date => p_kdtl_tbl (l_ctr).prod_sdt,
14810 p_end_date => p_kdtl_tbl (l_ctr).prod_edt,
14811 x_duration => l_duration,
14812 x_timeunit => l_timeunits,
14813 x_return_status => l_return_status
14814 );
14815
14816 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14817 THEN
14818 fnd_log.STRING
14819 (fnd_log.level_event,
14820 g_module_current
14821 || '.UPDATE_CONTRACT_IDC.after.get_k_dtls',
14822 'Okc_time_util_pub.get_duration(Return status = '
14823 || l_return_status
14824 || ',Duration = '
14825 || l_duration
14826 || ',Time units = '
14827 || l_timeunits
14828 || ')'
14829 );
14830 END IF;
14831
14832 IF NOT l_return_status = 'S'
14833 THEN
14834 RAISE g_exception_halt_validation;
14835 END IF;
14836
14837 -- New end date for the covered line
14838 l_sub_edt :=
14839 okc_time_util_pub.get_enddate
14840 (p_start_date => trunc(p_kdtl_tbl (l_ctr).installation_date),
14841 p_duration => l_duration,
14842 p_timeunit => l_timeunits
14843 );
14844
14845 -- Check for the coverage flag Synchronization install date
14846 -- Contract date can be updated if the flag is checked
14847 OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
14848
14849 FETCH l_cov_csr
14850 INTO l_cov_att;
14851
14852 CLOSE l_cov_csr;
14853
14854 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
14855 THEN
14856 fnd_log.STRING (fnd_log.level_statement,
14857 g_module_current || '.UPDATE_CONTRACT_IDC',
14858 'Coverage attribute = ' || l_cov_att
14859 );
14860 END IF;
14861
14862
14863 IF NVL (l_cov_att, 'N') = 'Y'
14864 THEN
14865 -- Check for any open service request
14866 -- Contract date wouldn't be updated only if there is a service request outside new effectivity
14867 OPEN l_checksr_csr (p_kdtl_tbl (l_ctr).service_line_id,
14868 l_sub_sdt,
14869 l_sub_edt,
14870 p_kdtl_tbl (l_ctr).old_cp_id
14871 );
14872
14873 FETCH l_checksr_csr
14874 INTO v_temp;
14875
14876 IF l_checksr_csr%FOUND
14877 THEN
14878 CLOSE l_checksr_csr;
14879
14880 l_return_status := okc_api.g_ret_sts_warning;
14881
14882 IF fnd_log.level_error >= fnd_log.g_current_runtime_level
14883 THEN
14884 fnd_log.STRING (fnd_log.level_error,
14885 g_module_current
14886 || '.UPDATE_CONTRACT_IDC.ERROR',
14887 'SR is logged '
14888 || ',status = '
14889 || l_return_status
14890 );
14891 END IF;
14892
14893 okc_api.set_message (g_app_name, 'OKS_SR_EXISTS');
14894 RAISE g_exception_halt_validation;
14895 ELSE
14896 CLOSE l_checksr_csr;
14897
14898 OPEN l_subline_dates (p_kdtl_tbl (l_ctr).service_line_id,
14899 p_kdtl_tbl (l_ctr).hdr_id,
14900 p_kdtl_tbl (l_ctr).object_line_id
14901 );
14902
14903 FETCH l_subline_dates
14904 INTO l_subline_rec;
14905
14906 IF l_subline_dates%FOUND
14907 AND l_subline_rec.sdt IS NOT NULL
14908 AND l_subline_rec.edt IS NOT NULL
14909 THEN
14910 IF l_subline_rec.sdt < l_sub_sdt
14911 AND l_subline_rec.edt > l_sub_edt
14912 THEN
14913 l_top_flag := 'F';
14914 ELSE
14915 IF l_subline_rec.sdt >= l_sub_sdt
14916 THEN
14917 l_top_sdt := l_sub_sdt;
14918 ELSE
14919 l_top_sdt := l_subline_rec.sdt;
14920 END IF;
14921
14922 IF l_subline_rec.edt >= l_sub_edt
14923 THEN
14924 l_top_edt := l_subline_rec.edt;
14925 ELSE
14926 l_top_edt := l_sub_edt;
14927 END IF;
14928
14929 l_top_flag := 'T';
14930 END IF;
14931 ELSE
14932 l_top_flag := 'T';
14933 l_top_sdt := l_sub_sdt;
14934 l_top_edt := l_sub_edt;
14935 --errorout( l_top_sdt || ': '|| l_top_edt );
14936 END IF;
14937
14938 CLOSE l_subline_dates;
14939
14940 IF l_top_flag = 'T'
14941 THEN
14942 OPEN l_topline_dates (p_kdtl_tbl (l_ctr).hdr_id,
14943 p_kdtl_tbl (l_ctr).service_line_id
14944 );
14945
14946 FETCH l_topline_dates
14947 INTO l_topline_rec;
14948
14949 IF l_topline_dates%FOUND
14950 AND l_topline_rec.sdt IS NOT NULL
14951 AND l_topline_rec.edt IS NOT NULL
14952 THEN
14953 IF l_topline_rec.sdt < l_top_sdt
14954 AND l_topline_rec.edt > l_top_edt
14955 THEN
14956 l_hdr_flag := 'F';
14957 ELSE
14958 IF l_topline_rec.sdt >= l_top_sdt
14959 THEN
14960 l_hdr_sdt := l_top_sdt;
14961 ELSE
14962 l_hdr_sdt := l_topline_rec.sdt;
14963 END IF;
14964
14965 IF l_topline_rec.edt >= l_top_edt
14966 THEN
14967 l_hdr_edt := l_topline_rec.edt;
14968 ELSE
14969 l_hdr_edt := l_top_edt;
14970 END IF;
14971
14972 l_hdr_flag := 'T';
14973 END IF;
14974 ELSE
14975 l_hdr_flag := 'T';
14976 l_hdr_sdt := l_top_sdt;
14977 l_hdr_edt := l_top_edt;
14978 END IF;
14979
14980 CLOSE l_topline_dates;
14981
14982 IF l_hdr_flag = 'T'
14983 THEN
14984 l_sts_flag := 'Y';
14985
14986 IF fnd_log.level_statement >=
14987 fnd_log.g_current_runtime_level
14988 THEN
14989 fnd_log.STRING (fnd_log.level_statement,
14990 g_module_current
14991 || '.UPDATE_CONTRACT_IDC',
14992 'Header start date = '
14993 || l_hdr_sdt
14994 || ',End date = '
14995 || l_hdr_edt
14996 || ',status = '
14997 || l_sts_flag
14998 );
14999 END IF;
15000
15001 update_hdr_dates
15002 (p_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
15003 p_new_sdt => l_hdr_sdt,
15004 p_new_edt => l_hdr_edt,
15005 p_sts_flag => l_sts_flag,
15006 x_status => l_return_status,
15007 x_msg_count => x_msg_count,
15008 x_msg_data => x_msg_data
15009 );
15010
15011 IF (fnd_log.level_event >=
15012 fnd_log.g_current_runtime_level
15013 )
15014 THEN
15015 fnd_log.STRING
15016 (fnd_log.level_event,
15017 g_module_current
15018 || '.UPDATE_CONTRACT_IDC',
15019 'Update_hdr_dates(Return status = '
15020 || l_return_status
15021 || ')'
15022 );
15023 END IF;
15024
15025 IF NOT l_return_status = okc_api.g_ret_sts_success
15026 THEN
15027 RAISE g_exception_halt_validation;
15028 END IF;
15029 END IF; --hdrflag
15030
15031 l_sts_flag := 'Y';
15032
15033 IF fnd_log.level_statement >=
15034 fnd_log.g_current_runtime_level
15035 THEN
15036 fnd_log.STRING (fnd_log.level_statement,
15037 g_module_current
15038 || '.UPDATE_CONTRACT_IDC',
15039 'Top line start date = '
15040 || l_top_sdt
15041 || ',End date = '
15042 || l_top_edt
15043 || ',status = '
15044 || l_sts_flag
15045 );
15046 END IF;
15047
15048 update_line_dates
15049 (p_cle_id => p_kdtl_tbl (l_ctr).service_line_id,
15050 p_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
15051 p_new_sdt => l_top_sdt,
15052 p_new_edt => l_top_edt,
15053 p_sts_flag => l_sts_flag,
15054 p_warranty_flag => 'W',
15055 x_status => l_return_status,
15056 x_msg_count => x_msg_count,
15057 x_msg_data => x_msg_data
15058 );
15059
15060 IF (fnd_log.level_event >=
15061 fnd_log.g_current_runtime_level
15062 )
15063 THEN
15064 fnd_log.STRING
15065 (fnd_log.level_event,
15066 g_module_current
15067 || '.UPDATE_CONTRACT_IDC',
15068 'Update_Line_dates(Return status = '
15069 || l_return_status
15070 || ')'
15071 );
15072 END IF;
15073
15074 IF NOT l_return_status = okc_api.g_ret_sts_success
15075 THEN
15076 RAISE g_exception_halt_validation;
15077 END IF;
15078
15079 OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_line_id);
15080
15081 FETCH l_serv_csr
15082 INTO line_name, line_desc;
15083
15084 CLOSE l_serv_csr;
15085
15086 IF fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE') =
15087 'DISPLAY_NAME'
15088 THEN
15089 l_desc := line_name;
15090 ELSE
15091 l_desc := line_desc;
15092 END IF;
15093
15094 l_invoice_text :=
15095 l_desc || ':' || to_char(l_top_sdt,'DD-MON-YYYY')
15096 || ':' || to_char(l_top_edt,'DD-MON-YYYY');
15097
15098 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).service_line_id
15099 );
15100
15101 FETCH get_oks_line_dtls
15102 INTO l_id, l_obj_version_num;
15103
15104 CLOSE get_oks_line_dtls;
15105
15106 l_klnv_tbl_in (1).ID := l_id;
15107 l_klnv_tbl_in (1).invoice_text := l_invoice_text;
15108 l_klnv_tbl_in (1).object_version_number :=
15109 l_obj_version_num;
15110 oks_contract_line_pub.update_line
15111 (p_api_version => l_api_version,
15112 p_init_msg_list => l_init_msg_list,
15113 x_return_status => l_return_status,
15114 x_msg_count => x_msg_count,
15115 x_msg_data => x_msg_data,
15116 p_klnv_tbl => l_klnv_tbl_in,
15117 x_klnv_tbl => l_klnv_tbl_out,
15118 p_validate_yn => 'N'
15119 );
15120
15121 IF (fnd_log.level_event >=
15122 fnd_log.g_current_runtime_level
15123 )
15124 THEN
15125 fnd_log.STRING
15126 (fnd_log.level_event,
15127 g_module_current || '.UPDATE_CONTRACT_IDC',
15128 'oks_contract_line_pub.update_line(Return status = '
15129 || l_return_status
15130 || ')'
15131 );
15132 END IF;
15133
15134 IF NOT l_return_status = 'S'
15135 THEN
15136 okc_api.set_message (g_app_name,
15137 g_required_value,
15138 g_col_name_token,
15139 'OKS Contract COV LINE'
15140 );
15141 RAISE g_exception_halt_validation;
15142 END IF;
15143
15144 --mmadhavi end bug 3761489
15145 oks_coverages_pub.update_cov_eff
15146 (p_api_version => 1.0,
15147 p_init_msg_list => 'T',
15148 x_return_status => l_return_status,
15149 x_msg_count => x_msg_count,
15150 x_msg_data => x_msg_data,
15151 p_service_line_id => p_kdtl_tbl (l_ctr).service_line_id,
15152 p_new_start_date => l_top_sdt,
15153 p_new_end_date => l_top_edt
15154 );
15155
15156 IF (fnd_log.level_event >=
15157 fnd_log.g_current_runtime_level
15158 )
15159 THEN
15160 fnd_log.STRING
15161 (fnd_log.level_event,
15162 g_module_current || '.UPDATE_CONTRACT_IDC',
15163 'oks_coverages_pub.update_cov_eff(Return status = '
15164 || l_return_status
15165 || ')'
15166 );
15167 END IF;
15168
15169 IF NOT l_return_status = okc_api.g_ret_sts_success
15170 THEN
15171 RAISE g_exception_halt_validation;
15172 END IF;
15173
15174 oks_pm_programs_pvt.adjust_pm_program_schedule
15175 (p_api_version => 1.0,
15176 p_init_msg_list => 'F',
15177 p_contract_line_id => p_kdtl_tbl (l_ctr).service_line_id,
15178 p_new_start_date => l_top_sdt,
15179 p_new_end_date => l_top_edt,
15180 x_return_status => l_return_status,
15181 x_msg_count => x_msg_count,
15182 x_msg_data => x_msg_data
15183 );
15184
15185 IF (fnd_log.level_event >=
15186 fnd_log.g_current_runtime_level
15187 )
15188 THEN
15189 fnd_log.STRING
15190 (fnd_log.level_event,
15191 g_module_current || '.UPDATE_CONTRACT_IDC',
15192 'oks_pm_programs_pvt.ADJUST_PM_PROGRAM_SCHEDULE(Return status = '
15193 || l_return_status
15194 || ')'
15195 );
15196 END IF;
15197
15198 IF NOT l_return_status = okc_api.g_ret_sts_success
15199 THEN
15200 RAISE g_exception_halt_validation;
15201 END IF;
15202 END IF; --topflag
15203
15204 IF fnd_log.level_statement >=
15205 fnd_log.g_current_runtime_level
15206 THEN
15207 fnd_log.STRING (fnd_log.level_statement,
15208 g_module_current
15209 || '.UPDATE_CONTRACT_IDC',
15210 'sub line start date = '
15211 || l_sub_sdt
15212 || ',End date'
15213 || l_sub_edt
15214 );
15215 END IF;
15216
15217 update_line_dates
15218 (p_cle_id => p_kdtl_tbl (l_ctr).object_line_id,
15219 p_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
15220 p_new_sdt => l_sub_sdt,
15221 p_new_edt => l_sub_edt,
15222 p_sts_flag => 'Y',
15223 p_warranty_flag => 'W',
15224 x_status => l_return_status,
15225 x_msg_count => x_msg_count,
15226 x_msg_data => x_msg_data
15227 );
15228
15229 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15230 )
15231 THEN
15232 fnd_log.STRING (fnd_log.level_event,
15233 g_module_current
15234 || '.UPDATE_CONTRACT_IDC',
15235 'Update_line_dates(Return status = '
15236 || l_return_status
15237 || ')'
15238 );
15239 END IF;
15240
15241 IF NOT l_return_status = okc_api.g_ret_sts_success
15242 THEN
15243 RAISE g_exception_halt_validation;
15244 END IF;
15245
15246 --mmadhavi start bug 3761489
15247 l_prod_item_id := p_kdtl_tbl (l_ctr).prod_inventory_item;
15248
15249 OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
15250
15251 FETCH get_oks_line_dtls
15252 INTO l_id, l_obj_version_num;
15253
15254 CLOSE get_oks_line_dtls;
15255
15256 l_quantity := p_kdtl_tbl (l_ctr).old_cp_quantity;
15257 l_invoice_text :=
15258 getformattedinvoicetext (l_prod_item_id,
15259 l_sub_sdt,
15260 l_sub_edt,
15261 line_desc,
15262 l_quantity
15263 );
15264 l_klnv_tbl_in (1).ID := l_id;
15265 l_klnv_tbl_in (1).invoice_text := l_invoice_text;
15266 l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
15267 oks_contract_line_pub.update_line
15268 (p_api_version => l_api_version,
15269 p_init_msg_list => l_init_msg_list,
15270 x_return_status => l_return_status,
15271 x_msg_count => x_msg_count,
15272 x_msg_data => x_msg_data,
15273 p_klnv_tbl => l_klnv_tbl_in,
15274 x_klnv_tbl => l_klnv_tbl_out,
15275 p_validate_yn => 'N'
15276 );
15277
15278 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15279 )
15280 THEN
15281 fnd_log.STRING
15282 (fnd_log.level_event,
15283 g_module_current || '.UPDATE_CONTRACT_IDC',
15284 'oks_contract_line_pub.update_line(Return status = '
15285 || l_return_status
15286 || ')'
15287 );
15288 END IF;
15289
15290 IF NOT l_return_status = 'S'
15291 THEN
15292 okc_api.set_message (g_app_name,
15293 g_required_value,
15294 g_col_name_token,
15295 'OKS Contract COV LINE'
15296 );
15297 RAISE g_exception_halt_validation;
15298 END IF;
15299
15300 -- mmadhavi end bug 3761489
15301 OPEN l_lndates_csr (p_kdtl_tbl (l_ctr).service_line_id);
15302
15303 FETCH l_lndates_csr
15304 INTO l_lndates_rec;
15305
15306 CLOSE l_lndates_csr;
15307
15308 OPEN l_hdrdates_csr (p_kdtl_tbl (l_ctr).hdr_id);
15309
15310 FETCH l_hdrdates_csr
15311 INTO l_hdrdates_rec;
15312
15313 CLOSE l_hdrdates_csr;
15314
15315 l_sts_code := NULL;
15316 get_sts_code (l_hdrdates_rec.sts_code,
15317 NULL,
15318 l_ste_code,
15319 l_sts_code
15320 );
15321 l_inst_dtls_tbl (1).new_contract_id :=
15322 p_kdtl_tbl (l_ctr).hdr_id;
15323 l_inst_dtls_tbl (1).new_contact_start_date :=
15324 l_hdrdates_rec.start_date;
15325 l_inst_dtls_tbl (1).new_contract_end_date :=
15326 l_hdrdates_rec.end_date;
15327 l_inst_dtls_tbl (1).new_service_line_id :=
15328 p_kdtl_tbl (l_ctr).service_line_id;
15329 l_inst_dtls_tbl (1).new_service_start_date :=
15330 l_lndates_rec.start_date;
15331 l_inst_dtls_tbl (1).new_service_end_date :=
15332 l_lndates_rec.end_date;
15333 l_inst_dtls_tbl (1).new_subline_id :=
15334 p_kdtl_tbl (l_ctr).object_line_id;
15335 l_inst_dtls_tbl (1).new_subline_start_date :=
15336 NVL (l_sub_sdt, p_kdtl_tbl (l_ctr).prod_sdt);
15337 l_inst_dtls_tbl (1).new_subline_end_date :=
15338 NVL (l_sub_edt, p_kdtl_tbl (l_ctr).prod_edt);
15339 l_inst_dtls_tbl (1).subline_date_terminated := NULL;
15340 l_inst_dtls_tbl (1).new_k_status := l_sts_code;
15341 l_inst_dtls_tbl (1).new_customer :=
15342 p_kdtl_tbl (l_ctr).cust_account;
15343 END IF; --SR logged
15344 ELSE
15345 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
15346 THEN
15347 fnd_log.STRING (fnd_log.level_statement,
15348 g_module_current || '.UPDATE_CONTRACT_IDC',
15349 'coverage attribute not set'
15350 );
15351 END IF;
15352 END IF; --coverage attribute
15353
15354 IF l_inst_dtls_tbl.COUNT <> 0
15355 THEN
15356 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
15357 THEN
15358 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
15359
15360 FETCH l_refnum_csr
15361 INTO l_ref_num;
15362
15363 CLOSE l_refnum_csr;
15364
15365 l_parameters :=
15366 ' Old CP :'
15367 || p_kdtl_tbl (l_ctr).old_cp_id
15368 || ','
15369 || 'Item Id:'
15370 || p_kdtl_tbl (l_ctr).prod_inventory_item
15371 || ','
15372 || 'Old Quantity:'
15373 || p_kdtl_tbl (l_ctr).current_cp_quantity
15374 || ','
15375 || 'Transaction type :'
15376 || 'IDC'
15377 || ','
15378 || ' Transaction date :'
15379 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
15380 || ','
15381 || 'Installation Date:'
15382 || trunc(p_kdtl_tbl (l_ctr).installation_date);
15383 --oks_instance_history
15384 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
15385 l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
15386 l_insthist_rec.transaction_type := 'IDC';
15387 l_insthist_rec.transaction_date :=
15388 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15389 l_insthist_rec.reference_number := l_ref_num;
15390 l_insthist_rec.PARAMETERS := l_parameters;
15391 oks_ins_pvt.insert_row (p_api_version => 1.0,
15392 p_init_msg_list => 'T',
15393 x_return_status => l_return_status,
15394 x_msg_count => x_msg_count,
15395 x_msg_data => x_msg_data,
15396 p_insv_rec => l_insthist_rec,
15397 x_insv_rec => x_insthist_rec
15398 );
15399
15400 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15401 )
15402 THEN
15403 fnd_log.STRING
15404 (fnd_log.level_event,
15405 g_module_current || '.UPDATE_CONTRACT_IDC',
15406 'oks_ins_pvt.insert_row(Return status = '
15407 || l_return_status
15408 || ')'
15409 );
15410 END IF;
15411
15412 x_return_status := l_return_status;
15413
15414 IF NOT l_return_status = okc_api.g_ret_sts_success
15415 THEN
15416 x_return_status := l_return_status;
15417 RAISE g_exception_halt_validation;
15418 END IF;
15419
15420 l_instparent_id := x_insthist_rec.ID;
15421 END IF;
15422
15423 l_inst_dtls_tbl (1).ins_id := l_instparent_id;
15424 --oks_inst_history_details
15425 oks_ihd_pvt.insert_row (p_api_version => 1.0,
15426 p_init_msg_list => 'T',
15427 x_return_status => l_return_status,
15428 x_msg_count => x_msg_count,
15429 x_msg_data => x_msg_data,
15430 p_ihdv_tbl => l_inst_dtls_tbl,
15431 x_ihdv_tbl => x_inst_dtls_tbl
15432 );
15433
15434 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15435 THEN
15436 fnd_log.STRING
15437 (fnd_log.level_event,
15438 g_module_current || '.UPDATE_CONTRACT_IDC',
15439 'oks_ihd_pvt.insert_row(Return status = '
15440 || l_return_status
15441 || ')'
15442 );
15443 END IF;
15444
15445 x_return_status := l_return_status;
15446
15447 IF NOT l_return_status = okc_api.g_ret_sts_success
15448 THEN
15449 x_return_status := l_return_status;
15450 RAISE g_exception_halt_validation;
15451 END IF;
15452 END IF;
15453
15454 launch_workflow
15455 ( 'INSTALL BASE ACTIVITY : INSTALLTION DATE CHANGE '
15456 || fnd_global.local_chr (10)
15457 || 'Contract Number : '
15458 || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
15459 || fnd_global.local_chr (10)
15460 || 'Inatallation date changed to : '
15461 || trunc(p_kdtl_tbl (l_ctr).installation_date)
15462 );
15463 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
15464 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
15465 l_hdr_sdt := NULL;
15466 l_hdr_edt := NULL;
15467 l_top_sdt := NULL;
15468 l_top_edt := NULL;
15469 l_sub_sdt := NULL;
15470 l_sub_edt := NULL;
15471 END LOOP;
15472 END IF;
15473 EXCEPTION
15474 WHEN g_exception_halt_validation
15475 THEN
15476 x_return_status := l_return_status;
15477 NULL;
15478 WHEN OTHERS
15479 THEN
15480 x_return_status := okc_api.g_ret_sts_unexp_error;
15481 okc_api.set_message (g_app_name,
15482 g_unexpected_error,
15483 g_sqlcode_token,
15484 SQLCODE,
15485 g_sqlerrm_token,
15486 SQLERRM
15487 );
15488 END;
15489
15490 PROCEDURE create_contract_ibupdate (
15491 p_kdtl_tbl IN contract_tbl,
15492 x_return_status OUT NOCOPY VARCHAR2,
15493 x_msg_count OUT NOCOPY NUMBER,
15494 x_msg_data OUT NOCOPY VARCHAR2
15495 )
15496 IS
15497 CURSOR l_cust_csr (p_inventory_item_id NUMBER)
15498 IS
15499 SELECT mtl.NAME, mtl.description
15500 FROM okx_system_items_v mtl
15501 WHERE mtl.inventory_item_id = p_inventory_item_id
15502 AND mtl.organization_id = okc_context.get_okc_organization_id;
15503
15504 CURSOR l_bill_csr (p_cle_id NUMBER)
15505 IS
15506 SELECT SUM (amount)
15507 FROM oks_bill_sub_lines_v
15508 WHERE cle_id = p_cle_id;
15509
15510 CURSOR l_serv_csr (p_serv_id NUMBER)
15511 IS
15512 SELECT b.concatenated_segments description
15513 FROM mtl_system_items_b_kfv b
15514 WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
15515
15516 CURSOR l_refnum_csr (p_cp_id NUMBER)
15517 IS
15518 SELECT instance_number
15519 FROM csi_item_instances
15520 WHERE instance_id = p_cp_id;
15521
15522 l_ref_num VARCHAR2 (30);
15523 l_parameters VARCHAR2 (2000);
15524 l_renewal_id NUMBER;
15525 --Contract Line Table
15526 l_clev_tbl_in okc_contract_pub.clev_tbl_type;
15527 l_clev_tbl_out okc_contract_pub.clev_tbl_type;
15528 --SalesCredit
15529 l_salescredit_tbl_line oks_extwarprgm_pvt.salescredit_tbl;
15530 l_salescredit_tbl_hdr oks_extwarprgm_pvt.salescredit_tbl;
15531 l_line_rec k_line_service_rec_type;
15532 l_covd_rec k_line_covered_level_rec_type;
15533 -- l_kdtl_tbl OKS_EXTWAR_UTIL_PVT.Contract_tbl_type;
15534 l_available_yn VARCHAR2 (1);
15535 l_return_status VARCHAR2 (5) := okc_api.g_ret_sts_success;
15536 l_chrid NUMBER := NULL;
15537 l_lineid NUMBER := NULL;
15538 l_cust_rec l_cust_csr%ROWTYPE;
15539 l_terminate_rec okc_terminate_pvt.terminate_in_cle_rec;
15540 l_api_version CONSTANT NUMBER := 1.0;
15541 l_init_msg_list CONSTANT VARCHAR2 (1) := okc_api.g_false;
15542 l_ste_code VARCHAR2 (40);
15543 l_sts_code VARCHAR2 (40);
15544 l_billed_amount NUMBER;
15545 l_update_top_line VARCHAR2 (1);
15546 l_msg_count NUMBER;
15547 l_msg_data VARCHAR2 (2000);
15548 l_covlvl_id NUMBER;
15549 l_amount NUMBER;
15550 l_subline_amount NUMBER;
15551 l_srvc_stdt DATE;
15552 l_bill_schd_yn VARCHAR2 (1);
15553 l_dur NUMBER;
15554 l_time VARCHAR2 (25);
15555 l_sll_tbl oks_bill_sch.streamlvl_tbl;
15556 l_bil_sch_out oks_bill_sch.itembillsch_tbl;
15557 l_strmlvl_id NUMBER := NULL;
15558 l_contact_tbl_in oks_extwarprgm_pvt.contact_tbl;
15559 l_price_attribs_in oks_extwarprgm_pvt.pricing_attributes_type;
15560 l_ctr NUMBER;
15561 l_temp VARCHAR2 (2000);
15562 l_suppress_credit VARCHAR2 (10);
15563
15564 CURSOR l_amount_csr (p_cle_id NUMBER)
15565 IS
15566 SELECT price_negotiated
15567 FROM okc_k_lines_b
15568 WHERE ID = p_cle_id;
15569
15570 l_cov_tbl oks_bill_rec_pub.covered_tbl;
15571 l_ptr NUMBER := 0;
15572 l_input_details oks_qp_pkg.input_details;
15573 l_output_details oks_qp_pkg.price_details;
15574 l_modif_details qp_preq_grp.line_detail_tbl_type;
15575 l_pb_details oks_qp_pkg.g_price_break_tbl_type;
15576 l_warranty_flag VARCHAR2 (2);
15577 l_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
15578 x_inst_dtls_tbl oks_ihd_pvt.ihdv_tbl_type;
15579 l_instparent_id NUMBER;
15580 l_old_cp_id NUMBER;
15581 l_insthist_rec oks_ins_pvt.insv_rec_type;
15582 x_insthist_rec oks_ins_pvt.insv_rec_type;
15583 l_target_chr_id NUMBER;
15584 l_opr_instance_id NUMBER;
15585 l_renewal_opr_instance_id NUMBER;
15586 l_update_id NUMBER;
15587 l_source_line_id NUMBER;
15588 l_create_oper_instance VARCHAR2 (1);
15589 BEGIN
15590 x_return_status := okc_api.g_ret_sts_success;
15591 l_old_cp_id := 0;
15592 l_target_chr_id := 0;
15593
15594 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15595 THEN
15596 fnd_log.STRING (fnd_log.level_event,
15597 g_module_current || '.CREATE_CONTRACT_IBUPDATE.',
15598 'count = ' || p_kdtl_tbl.COUNT || ')'
15599 );
15600 END IF;
15601
15602 IF p_kdtl_tbl.COUNT > 0
15603 THEN
15604 l_ctr := p_kdtl_tbl.FIRST;
15605
15606 LOOP
15607 l_ptr := 1;
15608 l_inst_dtls_tbl.DELETE;
15609 okc_context.set_okc_org_context
15610 (p_kdtl_tbl (l_ctr).hdr_org_id,
15611 p_kdtl_tbl (l_ctr).organization_id
15612 );
15613
15614 -- If status = 'ENTERED' then just update the qty and reprice and update billing schedule.
15615 -- else check if line is already billed.
15616 -- If partially billed or unbilled update the qty and reprice and update billing schedule.
15617 -- If line fully billed Then
15618 -- update qty of subline.
15619 -- create new top line and subline with updated qty and create one time billing schedule.
15620 -- the amount will be the diff.
15621
15622 --If the qty decrement is due to return for repair ignore, only manual increments to the qty from IB is honored.
15623 IF p_kdtl_tbl (l_ctr).return_reason_code = 'REGULAR'
15624 THEN
15625 IF p_kdtl_tbl (l_ctr).new_quantity >
15626 p_kdtl_tbl (l_ctr).old_cp_quantity
15627 THEN
15628 get_sts_code (NULL,
15629 p_kdtl_tbl (l_ctr).prod_sts_code,
15630 l_ste_code,
15631 l_sts_code
15632 );
15633
15634 IF fnd_log.level_statement >=
15635 fnd_log.g_current_runtime_level
15636 THEN
15637 fnd_log.STRING (fnd_log.level_statement,
15638 g_module_current
15639 || '.CREATE_CONTRACT_IBUPDATE',
15640 'lse_id= ' || p_kdtl_tbl (l_ctr).lse_id
15641 );
15642 END IF;
15643
15644 --errorout_n('in update lse_id'||p_kdtl_tbl(l_ctr).lse_id);
15645 -- For Warranty lines instance qty is updated, no repricing done.
15646 IF p_kdtl_tbl (l_ctr).lse_id = 18
15647 THEN --Warranty
15648 UPDATE okc_k_items
15649 SET number_of_items = p_kdtl_tbl (l_ctr).new_quantity
15650 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
15651
15652 l_inst_dtls_tbl (l_ptr).transaction_date :=
15653 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15654 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
15655 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
15656 p_kdtl_tbl (l_ctr).service_amount;
15657 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
15658 p_kdtl_tbl (l_ctr).old_cp_quantity;
15659 l_inst_dtls_tbl (l_ptr).old_contract_id :=
15660 p_kdtl_tbl (l_ctr).hdr_id;
15661 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
15662 p_kdtl_tbl (l_ctr).hdr_sdt;
15663 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
15664 p_kdtl_tbl (l_ctr).hdr_edt;
15665 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
15666 p_kdtl_tbl (l_ctr).service_line_id;
15667 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
15668 p_kdtl_tbl (l_ctr).service_sdt;
15669 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
15670 p_kdtl_tbl (l_ctr).service_edt;
15671 l_inst_dtls_tbl (l_ptr).old_subline_id :=
15672 p_kdtl_tbl (l_ctr).object_line_id;
15673 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
15674 p_kdtl_tbl (l_ctr).prod_sdt;
15675 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
15676 p_kdtl_tbl (l_ctr).prod_edt;
15677 l_inst_dtls_tbl (l_ptr).old_customer :=
15678 p_kdtl_tbl (l_ctr).cust_account;
15679 l_inst_dtls_tbl (l_ptr).old_k_status :=
15680 p_kdtl_tbl (l_ctr).hdr_sts;
15681 l_inst_dtls_tbl (l_ptr).instance_id_new :=
15682 p_kdtl_tbl (l_ctr).new_cp_id;
15683 l_inst_dtls_tbl (l_ptr).instance_amt_new := NULL;
15684 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
15685 p_kdtl_tbl (l_ctr).new_quantity;
15686 l_inst_dtls_tbl (l_ptr).new_contract_id :=
15687 p_kdtl_tbl (l_ctr).hdr_id;
15688 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
15689 p_kdtl_tbl (l_ctr).hdr_sdt;
15690 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
15691 p_kdtl_tbl (l_ctr).hdr_edt;
15692 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
15693 p_kdtl_tbl (l_ctr).service_line_id;
15694 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
15695 p_kdtl_tbl (l_ctr).service_sdt;
15696 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
15697 p_kdtl_tbl (l_ctr).service_edt;
15698 l_inst_dtls_tbl (l_ptr).new_subline_id :=
15699 p_kdtl_tbl (l_ctr).object_line_id;
15700 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
15701 p_kdtl_tbl (l_ctr).prod_sdt;
15702 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
15703 p_kdtl_tbl (l_ctr).prod_edt;
15704 l_inst_dtls_tbl (l_ptr).new_customer :=
15705 p_kdtl_tbl (l_ctr).cust_account;
15706 l_inst_dtls_tbl (l_ptr).new_k_status :=
15707 p_kdtl_tbl (l_ctr).hdr_sts;
15708 ELSE --lse_id = 18
15709 -- For service/ Ext.Warranty line types
15710 l_billed_amount := NULL;
15711
15712 OPEN l_bill_csr (p_kdtl_tbl (l_ctr).object_line_id);
15713
15714 FETCH l_bill_csr
15715 INTO l_billed_amount;
15716
15717 CLOSE l_bill_csr;
15718
15719 IF fnd_log.level_statement >=
15720 fnd_log.g_current_runtime_level
15721 THEN
15722 fnd_log.STRING (fnd_log.level_statement,
15723 g_module_current
15724 || '.CREATE_CONTRACT_IBUPDATE',
15725 'Billed amount = '
15726 || l_billed_amount
15727 || ',Service amount = '
15728 || p_kdtl_tbl (l_ctr).service_amount
15729 );
15730 END IF;
15731
15732 --If amount billed is null, update instance qty and reprice.
15733 IF l_billed_amount IS NULL
15734 THEN
15735 UPDATE okc_k_items
15736 SET number_of_items =
15737 p_kdtl_tbl (l_ctr).new_quantity
15738 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
15739
15740 --calling reprice
15741 l_input_details.line_id :=
15742 p_kdtl_tbl (l_ctr).service_line_id;
15743 l_input_details.subline_id :=
15744 p_kdtl_tbl (l_ctr).object_line_id;
15745 l_input_details.intent := 'SP';
15746 oks_qp_int_pvt.compute_price
15747 (p_api_version => 1.0,
15748 p_init_msg_list => 'T',
15749 p_detail_rec => l_input_details,
15750 x_price_details => l_output_details,
15751 x_modifier_details => l_modif_details,
15752 x_price_break_details => l_pb_details,
15753 x_return_status => l_return_status,
15754 x_msg_count => x_msg_count,
15755 x_msg_data => x_msg_data
15756 );
15757
15758 IF (fnd_log.level_event >=
15759 fnd_log.g_current_runtime_level
15760 )
15761 THEN
15762 fnd_log.STRING
15763 (fnd_log.level_event,
15764 g_module_current || '.CREATE_CONTRACT_IBUPDATE',
15765 'oks_qp_int_pvt.compute_price(Return status = '
15766 || l_return_status
15767 || ',Repriced amount = '
15768 || l_amount
15769 || ')'
15770 );
15771 END IF;
15772
15773 IF l_return_status <> okc_api.g_ret_sts_success
15774 THEN
15775 RAISE g_exception_halt_validation;
15776 END IF;
15777
15778 ---update billing schedule
15779 oks_bill_sch.create_bill_sch_cp
15780 (p_top_line_id => p_kdtl_tbl (l_ctr).service_line_id,
15781 p_cp_line_id => p_kdtl_tbl (l_ctr).object_line_id,
15782 p_cp_new => 'N',
15783 x_return_status => l_return_status,
15784 x_msg_count => x_msg_count,
15785 x_msg_data => x_msg_data
15786 );
15787
15788 IF (fnd_log.level_event >=
15789 fnd_log.g_current_runtime_level
15790 )
15791 THEN
15792 fnd_log.STRING
15793 (fnd_log.level_event,
15794 g_module_current || '.CREATE_CONTRACT_IBUPDATE',
15795 'Oks_bill_sch.Create_Bill_Sch_CP(Return status = '
15796 || l_return_status
15797 || ')'
15798 );
15799 END IF;
15800
15801 IF l_return_status <> okc_api.g_ret_sts_success
15802 THEN
15803 okc_api.set_message (g_app_name,
15804 g_required_value,
15805 g_col_name_token,
15806 'Sched Billing Rule (LINE)'
15807 );
15808 RAISE g_exception_halt_validation;
15809 END IF;
15810
15811 l_subline_amount := NULL;
15812
15813 OPEN l_amount_csr (p_kdtl_tbl (l_ctr).object_line_id);
15814
15815 FETCH l_amount_csr
15816 INTO l_subline_amount;
15817
15818 CLOSE l_amount_csr;
15819
15820 UPDATE okc_k_lines_b
15821 SET price_negotiated =
15822 (SELECT NVL (SUM (NVL (price_negotiated, 0)),0)
15823 FROM okc_k_lines_b
15824 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
15825 AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
15826 and date_cancelled is null)
15827 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
15828
15829 UPDATE oks_k_lines_b
15830 SET tax_amount =
15831 (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
15832 FROM oks_k_lines_b
15833 WHERE cle_id IN ( SELECT id
15834 FROM okc_k_lines_b
15835 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
15836 AND lse_id IN (9,25)
15837 AND date_cancelled IS NULL ))
15838 WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
15839
15840 UPDATE okc_k_headers_b
15841 SET estimated_amount =
15842 (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0 )
15843 FROM okc_k_lines_b
15844 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
15845 AND lse_id IN (1, 19)
15846 AND date_cancelled IS NULL )
15847 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
15848
15849
15850 UPDATE oks_k_headers_b
15851 SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
15852 FROM oks_k_lines_b
15853 WHERE cle_id IN (SELECT id
15854 FROM okc_k_lineS_b
15855 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
15856 AND date_cancelled IS NULL
15857 AND lse_id IN (1,19)))
15858 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
15859
15860 l_inst_dtls_tbl (l_ptr).transaction_date :=
15861 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15862 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
15863 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
15864 p_kdtl_tbl (l_ctr).service_amount;
15865 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
15866 p_kdtl_tbl (l_ctr).old_cp_quantity;
15867 l_inst_dtls_tbl (l_ptr).old_contract_id :=
15868 p_kdtl_tbl (l_ctr).hdr_id;
15869 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
15870 p_kdtl_tbl (l_ctr).hdr_sdt;
15871 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
15872 p_kdtl_tbl (l_ctr).hdr_edt;
15873 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
15874 p_kdtl_tbl (l_ctr).service_line_id;
15875 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
15876 p_kdtl_tbl (l_ctr).service_sdt;
15877 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
15878 p_kdtl_tbl (l_ctr).service_edt;
15879 l_inst_dtls_tbl (l_ptr).old_subline_id :=
15880 p_kdtl_tbl (l_ctr).object_line_id;
15881 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
15882 p_kdtl_tbl (l_ctr).prod_sdt;
15883 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
15884 p_kdtl_tbl (l_ctr).prod_edt;
15885 l_inst_dtls_tbl (l_ptr).old_customer :=
15886 p_kdtl_tbl (l_ctr).cust_account;
15887 l_inst_dtls_tbl (l_ptr).old_k_status :=
15888 p_kdtl_tbl (l_ctr).hdr_sts;
15889 l_inst_dtls_tbl (l_ptr).instance_id_new :=
15890 p_kdtl_tbl (l_ctr).old_cp_id;
15891 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
15892 l_subline_amount;
15893 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
15894 p_kdtl_tbl (l_ctr).new_quantity;
15895 l_inst_dtls_tbl (l_ptr).new_contract_id :=
15896 p_kdtl_tbl (l_ctr).hdr_id;
15897 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
15898 p_kdtl_tbl (l_ctr).hdr_sdt;
15899 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
15900 p_kdtl_tbl (l_ctr).hdr_edt;
15901 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
15902 p_kdtl_tbl (l_ctr).service_line_id;
15903 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
15904 p_kdtl_tbl (l_ctr).service_sdt;
15905 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
15906 p_kdtl_tbl (l_ctr).service_edt;
15907 l_inst_dtls_tbl (l_ptr).new_subline_id :=
15908 p_kdtl_tbl (l_ctr).object_line_id;
15909 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
15910 p_kdtl_tbl (l_ctr).prod_sdt;
15911 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
15912 p_kdtl_tbl (l_ctr).prod_edt;
15913 l_inst_dtls_tbl (l_ptr).new_customer :=
15914 p_kdtl_tbl (l_ctr).cust_account;
15915 l_inst_dtls_tbl (l_ptr).new_k_status :=
15916 p_kdtl_tbl (l_ctr).hdr_sts;
15917 ELSE --billed_amount is not null
15918 --errorout_n('in update l_billed_amount2'||l_billed_amount);
15919 -- If line is fully billed , terminate the subline, issue credit and create a new subline with the updated qty
15920 IF l_billed_amount =
15921 p_kdtl_tbl (l_ctr).service_amount
15922 THEN
15923 -- Terminate the subline and create a New Subline with the update qty
15924 IF fnd_log.level_statement >=
15925 fnd_log.g_current_runtime_level
15926 THEN
15927 fnd_log.STRING (fnd_log.level_statement,
15928 g_module_current
15929 || '.CREATE_CONTRACT_IBUPDATE',
15930 'The Line is fully billed'
15931 );
15932 END IF;
15933
15934 get_sts_code (NULL,
15935 p_kdtl_tbl (l_ctr).hdr_sts,
15936 l_ste_code,
15937 l_sts_code
15938 );
15939
15940 IF l_ste_code = 'HOLD'
15941 THEN
15942 l_return_status := okc_api.g_ret_sts_error;
15943
15944 IF fnd_log.level_error >=
15945 fnd_log.g_current_runtime_level
15946 THEN
15947 fnd_log.STRING
15948 (fnd_log.level_error,
15949 g_module_current
15950 || '.CREATE_CONTRACT_IBUPDATE.ERROR',
15951 ' Contract in QA_HOLD status'
15952 );
15953 END IF;
15954
15955 okc_api.set_message
15956 (g_app_name,
15957 g_invalid_value,
15958 g_col_name_token,
15959 'Quantity Update not allowed. Contract '
15960 || p_kdtl_tbl (l_ctr).contract_number
15961 || ' is in QA_HOLD status'
15962 );
15963 RAISE g_exception_halt_validation;
15964 END IF;
15965
15966 ---to pass the term_cancel source.....
15967 oks_bill_rec_pub.pre_terminate_cp
15968 (p_calledfrom => -1,
15969 p_cle_id => p_kdtl_tbl
15970 (l_ctr).object_line_id,
15971 p_termination_date => TRUNC
15972 (p_kdtl_tbl
15973 (l_ctr).prod_sdt
15974 ),
15975 p_terminate_reason => 'UPD',
15976 p_override_amount => NULL,
15977 p_con_terminate_amount => NULL,
15978 p_termination_amount => NULL,
15979 p_suppress_credit => 'N',
15980 p_full_credit => 'Y',
15981 p_term_date_flag => 'N',
15982 p_term_cancel_source => 'IBUPDATE',
15983 x_return_status => l_return_status
15984 );
15985
15986 IF (fnd_log.level_event >=
15987 fnd_log.g_current_runtime_level
15988 )
15989 THEN
15990 fnd_log.STRING
15991 (fnd_log.level_event,
15992 g_module_current
15993 || '.CREATE_CONTRACT_IBUPDATE',
15994 ' oks_bill_rec_pub.Pre_terminate_cp(Retun status = '
15995 || l_return_status
15996 || ')'
15997 );
15998 END IF;
15999
16000 IF NOT l_return_status = okc_api.g_ret_sts_success
16001 THEN
16002 RAISE g_exception_halt_validation;
16003 END IF;
16004
16005 l_inst_dtls_tbl (l_ptr).transaction_date :=
16006 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16007 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16008 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16009 p_kdtl_tbl (l_ctr).service_amount;
16010 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16011 p_kdtl_tbl (l_ctr).old_cp_quantity;
16012 l_inst_dtls_tbl (l_ptr).old_contract_id :=
16013 p_kdtl_tbl (l_ctr).hdr_id;
16014 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16015 p_kdtl_tbl (l_ctr).hdr_sdt;
16016 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16017 p_kdtl_tbl (l_ctr).hdr_edt;
16018 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16019 p_kdtl_tbl (l_ctr).service_line_id;
16020 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16021 p_kdtl_tbl (l_ctr).service_sdt;
16022 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16023 p_kdtl_tbl (l_ctr).service_edt;
16024 l_inst_dtls_tbl (l_ptr).old_subline_id :=
16025 p_kdtl_tbl (l_ctr).object_line_id;
16026 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16027 p_kdtl_tbl (l_ctr).prod_sdt;
16028 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16029 p_kdtl_tbl (l_ctr).prod_edt;
16030 l_inst_dtls_tbl (l_ptr).old_customer :=
16031 p_kdtl_tbl (l_ctr).cust_account;
16032 l_inst_dtls_tbl (l_ptr).old_k_status :=
16033 p_kdtl_tbl (l_ctr).hdr_sts;
16034 l_inst_dtls_tbl (l_ptr).instance_id_new :=
16035 p_kdtl_tbl (l_ctr).old_cp_id;
16036 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16037 p_kdtl_tbl (l_ctr).service_amount;
16038 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16039 p_kdtl_tbl (l_ctr).old_cp_quantity;
16040 l_inst_dtls_tbl (l_ptr).new_contract_id :=
16041 p_kdtl_tbl (l_ctr).hdr_id;
16042 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16043 p_kdtl_tbl (l_ctr).hdr_sdt;
16044 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16045 p_kdtl_tbl (l_ctr).hdr_edt;
16046 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16047 p_kdtl_tbl (l_ctr).service_line_id;
16048 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16049 p_kdtl_tbl (l_ctr).service_sdt;
16050 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16051 p_kdtl_tbl (l_ctr).service_edt;
16052 l_inst_dtls_tbl (l_ptr).new_subline_id :=
16053 p_kdtl_tbl (l_ctr).object_line_id;
16054 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16055 p_kdtl_tbl (l_ctr).prod_sdt;
16056 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16057 p_kdtl_tbl (l_ctr).prod_edt;
16058 l_inst_dtls_tbl (l_ptr).new_customer :=
16059 p_kdtl_tbl (l_ctr).cust_account;
16060 l_inst_dtls_tbl (l_ptr).new_k_status :=
16061 p_kdtl_tbl (l_ctr).hdr_sts;
16062 l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
16063 p_kdtl_tbl (l_ctr).prod_sdt;
16064 l_ptr := l_ptr + 1;
16065 l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
16066 l_covd_rec.attach_2_line_id :=
16067 p_kdtl_tbl (l_ctr).service_line_id;
16068 l_covd_rec.line_number := 1;
16069 l_covd_rec.customer_product_id :=
16070 p_kdtl_tbl (l_ctr).old_cp_id;
16071 l_covd_rec.product_start_date :=
16072 p_kdtl_tbl (l_ctr).prod_sdt;
16073 l_covd_rec.product_end_date :=
16074 p_kdtl_tbl (l_ctr).prod_edt;
16075 l_covd_rec.quantity :=
16076 p_kdtl_tbl (l_ctr).new_quantity;
16077
16078 IF p_kdtl_tbl (l_ctr).lse_id = 25
16079 THEN
16080 l_warranty_flag := 'E';
16081 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
16082 AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
16083 THEN
16084 l_warranty_flag := 'S';
16085 ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
16086 THEN
16087 l_warranty_flag := 'W';
16088 ELSIF p_kdtl_tbl (l_ctr).lse_id = 9
16089 AND p_kdtl_tbl (l_ctr).scs_code =
16090 'SUBSCRIPTION'
16091 THEN
16092 l_warranty_flag := 'SU';
16093 END IF;
16094
16095 l_covd_rec.warranty_flag := l_warranty_flag;
16096 l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
16097 l_covd_rec.currency_code :=
16098 p_kdtl_tbl (l_ctr).service_currency;
16099 l_covd_rec.product_sts_code :=
16100 p_kdtl_tbl (l_ctr).prod_sts_code;
16101
16102 OPEN l_serv_csr
16103 (p_kdtl_tbl (l_ctr).service_inventory_id
16104 );
16105
16106 FETCH l_serv_csr
16107 INTO l_covd_rec.attach_2_line_desc;
16108
16109 CLOSE l_serv_csr;
16110
16111 l_covd_rec.line_renewal_type :=
16112 p_kdtl_tbl (l_ctr).prod_line_renewal_type;
16113 l_covd_rec.list_price := 0;
16114 l_covd_rec.negotiated_amount := 0;
16115 l_covd_rec.prod_item_id :=
16116 p_kdtl_tbl (l_ctr).prod_inventory_item;
16117 l_covd_rec.price_uom :=
16118 p_kdtl_tbl (l_ctr).price_uom_code;
16119 l_covd_rec.toplvl_uom_code :=
16120 p_kdtl_tbl (l_ctr).toplvl_uom_code;
16121 --mchoudha added for bug#5233956
16122 l_covd_rec.toplvl_price_qty :=
16123 p_kdtl_tbl (l_ctr).toplvl_price_qty;
16124 oks_extwarprgm_pvt.create_k_covered_levels
16125 (p_k_covd_rec => l_covd_rec,
16126 p_price_attribs => l_price_attribs_in,
16127 p_caller => 'IB',
16128 x_order_error => l_temp,
16129 x_covlvl_id => l_covlvl_id,
16130 x_update_line => l_update_top_line,
16131 x_return_status => l_return_status,
16132 x_msg_count => x_msg_count,
16133 x_msg_data => x_msg_data
16134 );
16135
16136 --errorout_n('in update Create_K_Covered_Levels l_return_status'||l_return_status);
16137 IF (fnd_log.level_event >=
16138 fnd_log.g_current_runtime_level
16139 )
16140 THEN
16141 fnd_log.STRING
16142 (fnd_log.level_event,
16143 g_module_current
16144 || '.CREATE_CONTRACT_IBUPDATE',
16145 'oks_extwarprgm_pvt.create_k_covered_levels(Retun status = '
16146 || l_return_status
16147 || ')'
16148 );
16149 END IF;
16150
16151 IF NOT l_return_status = 'S'
16152 THEN
16153 RAISE g_exception_halt_validation;
16154 END IF;
16155
16156 l_create_oper_instance := 'N';
16157
16158 IF l_opr_instance_id IS NULL
16159 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
16160 THEN
16161 l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
16162 l_create_oper_instance := 'Y';
16163 END IF;
16164
16165 create_transaction_source
16166 (p_create_opr_inst => 'Y',
16167 p_source_code => 'IBUPDATE',
16168 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
16169 p_source_line_id => p_kdtl_tbl (l_ctr).object_line_id,
16170 p_source_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
16171 p_target_line_id => l_covlvl_id,
16172 x_oper_instance_id => l_opr_instance_id,
16173 x_return_status => l_return_status,
16174 x_msg_count => x_msg_count,
16175 x_msg_data => x_msg_data
16176 );
16177
16178 IF (fnd_log.level_event >=
16179 fnd_log.g_current_runtime_level
16180 )
16181 THEN
16182 fnd_log.STRING
16183 (fnd_log.level_event,
16184 g_module_current
16185 || '.CREATE_CONTRACT_IBUPDATE',
16186 'Create_transaction_source(Retun status = '
16187 || l_return_status
16188 || ')'
16189 );
16190 END IF;
16191
16192 IF NOT l_return_status = 'S'
16193 THEN
16194 RAISE g_exception_halt_validation;
16195 END IF;
16196
16197 IF l_renewal_opr_instance_id IS NULL
16198 OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
16199 THEN
16200 l_create_oper_instance := 'Y';
16201 ELSE
16202 l_create_oper_instance := 'N';
16203 END IF;
16204
16205 create_source_links
16206 (p_create_opr_inst => l_create_oper_instance,
16207 p_source_code => 'IBUPDATE',
16208 p_target_chr_id => p_kdtl_tbl (l_ctr).hdr_id,
16209 p_line_id => p_kdtl_tbl (l_ctr).object_line_id,
16210 p_target_line_id => l_covlvl_id,
16211 p_txn_date => p_kdtl_tbl (l_ctr).transaction_date,
16212 x_oper_instance_id => l_renewal_opr_instance_id,
16213 x_return_status => l_return_status,
16214 x_msg_count => x_msg_count,
16215 x_msg_data => x_msg_data
16216 );
16217
16218 IF NOT l_return_status = 'S'
16219 THEN
16220 RAISE g_exception_halt_validation;
16221 END IF;
16222
16223 IF (fnd_log.level_event >=
16224 fnd_log.g_current_runtime_level
16225 )
16226 THEN
16227 fnd_log.STRING
16228 (fnd_log.level_event,
16229 g_module_current
16230 || '.CREATE_CONTRACT_IBUPDATE',
16231 'Create_source_links(Retun status = '
16232 || l_return_status
16233 || ')'
16234 );
16235 END IF;
16236
16237 l_input_details.line_id :=
16238 p_kdtl_tbl (l_ctr).service_line_id;
16239 l_input_details.subline_id := l_covlvl_id;
16240 l_input_details.intent := 'SP';
16241 oks_qp_int_pvt.compute_price
16242 (p_api_version => 1.0,
16243 p_init_msg_list => 'T',
16244 p_detail_rec => l_input_details,
16245 x_price_details => l_output_details,
16246 x_modifier_details => l_modif_details,
16247 x_price_break_details => l_pb_details,
16248 x_return_status => l_return_status,
16249 x_msg_count => l_msg_count,
16250 x_msg_data => l_msg_data
16251 );
16252
16253 IF (fnd_log.level_event >=
16254 fnd_log.g_current_runtime_level
16255 )
16256 THEN
16257 fnd_log.STRING
16258 (fnd_log.level_event,
16259 g_module_current
16260 || '.CREATE_CONTRACT_IBUPDATE',
16261 'oks_qp_int_pvt.compute_price(Retun status = '
16262 || l_return_status
16263 || ',Repriced amount = '
16264 || l_output_details.serv_ext_amount
16265 || ')'
16266 );
16267 END IF;
16268
16269 IF l_return_status <> okc_api.g_ret_sts_success
16270 THEN
16271 RAISE g_exception_halt_validation;
16272 END IF;
16273
16274 l_subline_amount := NULL;
16275
16276 OPEN l_amount_csr (l_covlvl_id);
16277
16278 FETCH l_amount_csr
16279 INTO l_subline_amount;
16280
16281 CLOSE l_amount_csr;
16282
16283 IF fnd_log.level_statement >=
16284 fnd_log.g_current_runtime_level
16285 THEN
16286 fnd_log.STRING (fnd_log.level_statement,
16287 g_module_current
16288 || '.CREATE_CONTRACT_IBUPDATE',
16289 'Subline Amount = '
16290 || l_subline_amount
16291 );
16292 END IF;
16293
16294 UPDATE okc_k_lines_b
16295 SET price_negotiated =
16296 (SELECT NVL (SUM (NVL (price_negotiated,0 ) ), 0 )
16297 FROM okc_k_lines_b
16298 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16299 AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16300 AND date_cancelled is NULL)
16301 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16302
16303 UPDATE oks_k_lines_b
16304 SET tax_amount =
16305 (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16306 FROM oks_k_lines_b
16307 WHERE cle_id IN ( SELECT id
16308 FROM okc_k_lines_b
16309 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16310 AND lse_id IN (9,25)
16311 AND date_cancelled IS NULL ))
16312 WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16313
16314 UPDATE okc_k_headers_b
16315 SET estimated_amount =
16316 (SELECT NVL (SUM (NVL (price_negotiated,
16317 0
16318 )
16319 ),
16320 0
16321 )
16322 FROM okc_k_lines_b
16323 WHERE dnz_chr_id =
16324 p_kdtl_tbl (l_ctr).hdr_id
16325 AND lse_id IN (1, 19)
16326 AND date_cancelled IS NULL)
16327 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16328
16329 UPDATE oks_k_headers_b
16330 SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16331 FROM oks_k_lines_b
16332 WHERE cle_id IN (SELECT id
16333 FROM okc_k_lineS_b
16334 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16335 AND date_cancelled IS NULL
16336 AND lse_id IN (1,19)))
16337 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16338
16339 l_inst_dtls_tbl (l_ptr).transaction_date :=
16340 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16341 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16342 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16343 p_kdtl_tbl (l_ctr).service_amount;
16344 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16345 p_kdtl_tbl (l_ctr).old_cp_quantity;
16346 l_inst_dtls_tbl (l_ptr).old_contract_id :=
16347 p_kdtl_tbl (l_ctr).hdr_id;
16348 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16349 p_kdtl_tbl (l_ctr).hdr_sdt;
16350 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16351 p_kdtl_tbl (l_ctr).hdr_edt;
16352 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16353 p_kdtl_tbl (l_ctr).service_line_id;
16354 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16355 p_kdtl_tbl (l_ctr).service_sdt;
16356 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16357 p_kdtl_tbl (l_ctr).service_edt;
16358 l_inst_dtls_tbl (l_ptr).old_subline_id :=
16359 p_kdtl_tbl (l_ctr).object_line_id;
16360 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16361 p_kdtl_tbl (l_ctr).prod_sdt;
16362 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16363 p_kdtl_tbl (l_ctr).prod_edt;
16364 l_inst_dtls_tbl (l_ptr).old_customer :=
16365 p_kdtl_tbl (l_ctr).cust_account;
16366 l_inst_dtls_tbl (l_ptr).old_k_status :=
16367 p_kdtl_tbl (l_ctr).hdr_sts;
16368 l_inst_dtls_tbl (l_ptr).instance_id_new :=
16369 p_kdtl_tbl (l_ctr).old_cp_id;
16370 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16371 l_subline_amount;
16372 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16373 p_kdtl_tbl (l_ctr).new_quantity;
16374 l_inst_dtls_tbl (l_ptr).new_contract_id :=
16375 p_kdtl_tbl (l_ctr).hdr_id;
16376 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16377 p_kdtl_tbl (l_ctr).hdr_sdt;
16378 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16379 p_kdtl_tbl (l_ctr).hdr_edt;
16380 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16381 p_kdtl_tbl (l_ctr).service_line_id;
16382 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16383 p_kdtl_tbl (l_ctr).service_sdt;
16384 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16385 p_kdtl_tbl (l_ctr).service_edt;
16386 l_inst_dtls_tbl (l_ptr).new_subline_id :=
16387 l_covlvl_id;
16388 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16389 p_kdtl_tbl (l_ctr).prod_sdt;
16390 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16391 p_kdtl_tbl (l_ctr).prod_edt;
16392 l_inst_dtls_tbl (l_ptr).new_customer :=
16393 p_kdtl_tbl (l_ctr).cust_account;
16394 l_inst_dtls_tbl (l_ptr).new_k_status :=
16395 p_kdtl_tbl (l_ctr).hdr_sts;
16396
16397 --x_inst_dtls_tbl(l_ptr).subline_date_terminated := p_kdtl_tbl( l_ctr ).prod_sdt;
16398 ---update billing schedule
16399 IF check_lvlelements_exists
16400 (p_kdtl_tbl (l_ctr).service_line_id
16401 )
16402 THEN
16403 oks_bill_sch.create_bill_sch_cp
16404 (p_top_line_id => p_kdtl_tbl (l_ctr).service_line_id,
16405 p_cp_line_id => l_covlvl_id,
16406 p_cp_new => 'Y',
16407 x_return_status => l_return_status,
16408 x_msg_count => l_msg_count,
16409 x_msg_data => l_msg_data
16410 );
16411
16412 IF (fnd_log.level_event >=
16413 fnd_log.g_current_runtime_level
16414 )
16415 THEN
16416 fnd_log.STRING
16417 (fnd_log.level_event,
16418 g_module_current
16419 || '.CREATE_CONTRACT_IBUPDATE',
16420 'oks_bill_sch.create_bill_sch_cp(Retun status = '
16421 || l_return_status
16422 || ')'
16423 );
16424 END IF;
16425
16426 IF l_return_status <> okc_api.g_ret_sts_success
16427 THEN
16428 okc_api.set_message
16429 (g_app_name,
16430 g_required_value,
16431 g_col_name_token,
16432 'Sched Billing Rule (LINE)'
16433 );
16434 RAISE g_exception_halt_validation;
16435 END IF;
16436 END IF;
16437 ELSE --Billed amount is less than service amount
16438 UPDATE okc_k_items
16439 SET number_of_items =
16440 p_kdtl_tbl (l_ctr).new_quantity
16441 WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
16442
16443 l_input_details.line_id :=
16444 p_kdtl_tbl (l_ctr).service_line_id;
16445 l_input_details.subline_id :=
16446 p_kdtl_tbl (l_ctr).object_line_id;
16447 l_input_details.intent := 'SP';
16448 oks_qp_int_pvt.compute_price
16449 (p_api_version => 1.0,
16450 p_init_msg_list => 'T',
16451 p_detail_rec => l_input_details,
16452 x_price_details => l_output_details,
16453 x_modifier_details => l_modif_details,
16454 x_price_break_details => l_pb_details,
16455 x_return_status => l_return_status,
16456 x_msg_count => l_msg_count,
16457 x_msg_data => l_msg_data
16458 );
16459
16460 IF (fnd_log.level_event >=
16461 fnd_log.g_current_runtime_level
16462 )
16463 THEN
16464 fnd_log.STRING
16465 (fnd_log.level_event,
16466 g_module_current
16467 || '.CREATE_CONTRACT_IBUPDATE',
16468 'oks_qp_int_pvt.compute_price(Retun status = '
16469 || l_return_status
16470 || ',Repriced amount = '
16471 || l_output_details.serv_ext_amount
16472 || ')'
16473 );
16474 END IF;
16475
16476 IF l_return_status <> okc_api.g_ret_sts_success
16477 THEN
16478 RAISE g_exception_halt_validation;
16479 END IF;
16480
16481 l_amount := l_output_details.serv_ext_amount;
16482
16483 IF l_amount <= l_billed_amount
16484 THEN
16485 UPDATE okc_k_lines_b
16486 SET price_negotiated = l_billed_amount
16487 WHERE ID = p_kdtl_tbl (l_ctr).object_line_id;
16488 END IF;
16489
16490 l_subline_amount := NULL;
16491
16492 OPEN l_amount_csr (p_kdtl_tbl (l_ctr).object_line_id
16493 );
16494
16495 FETCH l_amount_csr
16496 INTO l_subline_amount;
16497
16498 CLOSE l_amount_csr;
16499
16500 UPDATE okc_k_lines_b
16501 SET price_negotiated =
16502 (SELECT NVL (SUM (NVL (price_negotiated,
16503 0
16504 )
16505 ),
16506 0
16507 )
16508 FROM okc_k_lines_b
16509 WHERE cle_id =
16510 p_kdtl_tbl (l_ctr).service_line_id
16511 AND dnz_chr_id =
16512 p_kdtl_tbl (l_ctr).hdr_id
16513 AND date_cancelled IS NULL)
16514 WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16515
16516 UPDATE oks_k_lines_b
16517 SET tax_amount =
16518 (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16519 FROM oks_k_lines_b
16520 WHERE cle_id IN ( SELECT id
16521 FROM okc_k_lines_b
16522 WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16523 AND lse_id IN (9,25)
16524 AND date_cancelled IS NULL ))
16525 WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16526
16527 UPDATE okc_k_headers_b
16528 SET estimated_amount =
16529 (SELECT NVL (SUM (NVL (price_negotiated,
16530 0
16531 )
16532 ),
16533 0
16534 )
16535 FROM okc_k_lines_b
16536 WHERE dnz_chr_id =
16537 p_kdtl_tbl (l_ctr).hdr_id
16538 AND lse_id IN (1, 19)
16539 AND date_cancelled IS NULL)
16540 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16541
16542
16543 UPDATE oks_k_headers_b
16544 SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16545 FROM oks_k_lines_b
16546 WHERE cle_id IN (SELECT id
16547 FROM okc_k_lineS_b
16548 WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16549 AND date_cancelled IS NULL
16550 AND lse_id IN (1,19)))
16551 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16552
16553 ---update billing schedule
16554 IF check_lvlelements_exists
16555 (p_kdtl_tbl (l_ctr).service_line_id
16556 )
16557 THEN
16558 oks_bill_sch.create_bill_sch_cp
16559 (p_top_line_id => p_kdtl_tbl (l_ctr).service_line_id,
16560 p_cp_line_id => p_kdtl_tbl (l_ctr).object_line_id,
16561 p_cp_new => 'N',
16562 x_return_status => l_return_status,
16563 x_msg_count => l_msg_count,
16564 x_msg_data => l_msg_data
16565 );
16566
16567 IF (fnd_log.level_event >=
16568 fnd_log.g_current_runtime_level
16569 )
16570 THEN
16571 fnd_log.STRING
16572 (fnd_log.level_event,
16573 g_module_current
16574 || '.CREATE_CONTRACT_IBUPDATE',
16575 'oks_bill_sch.create_bill_sch_cp(Retun status = '
16576 || l_return_status
16577 || ')'
16578 );
16579 END IF;
16580
16581 IF l_return_status <> okc_api.g_ret_sts_success
16582 THEN
16583 okc_api.set_message
16584 (g_app_name,
16585 g_required_value,
16586 g_col_name_token,
16587 'Sched Billing Rule (LINE)'
16588 );
16589 RAISE g_exception_halt_validation;
16590 END IF;
16591 END IF;
16592
16593 l_inst_dtls_tbl (l_ptr).transaction_date :=
16594 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16595 l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16596 l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16597 p_kdtl_tbl (l_ctr).service_amount;
16598 l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16599 p_kdtl_tbl (l_ctr).old_cp_quantity;
16600 l_inst_dtls_tbl (l_ptr).old_contract_id :=
16601 p_kdtl_tbl (l_ctr).hdr_id;
16602 l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16603 p_kdtl_tbl (l_ctr).hdr_sdt;
16604 l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16605 p_kdtl_tbl (l_ctr).hdr_edt;
16606 l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16607 p_kdtl_tbl (l_ctr).service_line_id;
16608 l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16609 p_kdtl_tbl (l_ctr).service_sdt;
16610 l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16611 p_kdtl_tbl (l_ctr).service_edt;
16612 l_inst_dtls_tbl (l_ptr).old_subline_id :=
16613 p_kdtl_tbl (l_ctr).object_line_id;
16614 l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16615 p_kdtl_tbl (l_ctr).prod_sdt;
16616 l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16617 p_kdtl_tbl (l_ctr).prod_edt;
16618 l_inst_dtls_tbl (l_ptr).old_customer :=
16619 p_kdtl_tbl (l_ctr).cust_account;
16620 l_inst_dtls_tbl (l_ptr).old_k_status :=
16621 p_kdtl_tbl (l_ctr).hdr_sts;
16622 l_inst_dtls_tbl (l_ptr).instance_id_new :=
16623 p_kdtl_tbl (l_ctr).old_cp_id;
16624 l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16625 l_subline_amount;
16626 l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16627 p_kdtl_tbl (l_ctr).new_quantity;
16628 l_inst_dtls_tbl (l_ptr).new_contract_id :=
16629 p_kdtl_tbl (l_ctr).hdr_id;
16630 l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16631 p_kdtl_tbl (l_ctr).hdr_sdt;
16632 l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16633 p_kdtl_tbl (l_ctr).hdr_edt;
16634 l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16635 p_kdtl_tbl (l_ctr).service_line_id;
16636 l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16637 p_kdtl_tbl (l_ctr).service_sdt;
16638 l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16639 p_kdtl_tbl (l_ctr).service_edt;
16640 l_inst_dtls_tbl (l_ptr).new_subline_id :=
16641 p_kdtl_tbl (l_ctr).object_line_id;
16642 l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16643 p_kdtl_tbl (l_ctr).prod_sdt;
16644 l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16645 p_kdtl_tbl (l_ctr).prod_edt;
16646 l_inst_dtls_tbl (l_ptr).new_customer :=
16647 p_kdtl_tbl (l_ctr).cust_account;
16648 l_inst_dtls_tbl (l_ptr).new_k_status :=
16649 p_kdtl_tbl (l_ctr).hdr_sts;
16650 END IF;
16651 END IF; -- Billed amt is not null
16652 END IF; -- if Warranty
16653 END IF;
16654
16655 --errorout_n('l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
16656 IF l_inst_dtls_tbl.COUNT <> 0
16657 THEN
16658 IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
16659 THEN
16660 OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
16661
16662 FETCH l_refnum_csr
16663 INTO l_ref_num;
16664
16665 CLOSE l_refnum_csr;
16666
16667 l_parameters :=
16668 ' Old CP :'
16669 || p_kdtl_tbl (l_ctr).old_cp_id
16670 || ','
16671 || 'Item Id:'
16672 || p_kdtl_tbl (l_ctr).prod_inventory_item
16673 || ','
16674 || 'Old Quantity:'
16675 || p_kdtl_tbl (l_ctr).old_cp_quantity
16676 || ','
16677 || 'Transaction type :'
16678 || 'UPD'
16679 || ','
16680 || ' Transaction date :'
16681 || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
16682 || ','
16683 || 'New quantity:'
16684 || p_kdtl_tbl (l_ctr).new_quantity;
16685 --oks_instance_history
16686 l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
16687 l_insthist_rec.instance_id :=
16688 p_kdtl_tbl (l_ctr).old_cp_id;
16689 l_insthist_rec.transaction_type := 'UPD';
16690 l_insthist_rec.transaction_date :=
16691 TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16692 l_insthist_rec.reference_number := l_ref_num;
16693 l_insthist_rec.PARAMETERS := l_parameters;
16694 oks_ins_pvt.insert_row
16695 (p_api_version => 1.0,
16696 p_init_msg_list => 'T',
16697 x_return_status => l_return_status,
16698 x_msg_count => l_msg_count,
16699 x_msg_data => l_msg_data,
16700 p_insv_rec => l_insthist_rec,
16701 x_insv_rec => x_insthist_rec
16702 );
16703
16704 IF (fnd_log.level_event >=
16705 fnd_log.g_current_runtime_level
16706 )
16707 THEN
16708 fnd_log.STRING
16709 (fnd_log.level_event,
16710 g_module_current
16711 || '.CREATE_CONTRACT_IBUPDATE',
16712 'oks_ins_pvt.insert_row(Return status = '
16713 || l_return_status
16714 || ')'
16715 );
16716 END IF;
16717
16718 x_return_status := l_return_status;
16719
16720 IF NOT l_return_status = okc_api.g_ret_sts_success
16721 THEN
16722 x_return_status := l_return_status;
16723 RAISE g_exception_halt_validation;
16724 END IF;
16725
16726 l_instparent_id := x_insthist_rec.ID;
16727 END IF;
16728
16729 FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
16730 LOOP
16731 l_inst_dtls_tbl (i).ins_id := l_instparent_id;
16732 END LOOP;
16733
16734 --oks_inst_history_details
16735 oks_ihd_pvt.insert_row (p_api_version => 1.0,
16736 p_init_msg_list => 'T',
16737 x_return_status => l_return_status,
16738 x_msg_count => l_msg_count,
16739 x_msg_data => l_msg_data,
16740 p_ihdv_tbl => l_inst_dtls_tbl,
16741 x_ihdv_tbl => x_inst_dtls_tbl
16742 );
16743
16744 IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
16745 )
16746 THEN
16747 fnd_log.STRING
16748 (fnd_log.level_event,
16749 g_module_current
16750 || '.CREATE_CONTRACT_IBUPDATE',
16751 'oks_ihd_pvt.insert_row(Return status = '
16752 || l_return_status
16753 || ')'
16754 );
16755 END IF;
16756
16757 x_return_status := l_return_status;
16758
16759 IF NOT l_return_status = okc_api.g_ret_sts_success
16760 THEN
16761 x_return_status := l_return_status;
16762 RAISE g_exception_halt_validation;
16763 END IF;
16764 END IF;
16765 END IF;
16766
16767 EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
16768 l_ctr := p_kdtl_tbl.NEXT (l_ctr);
16769 END LOOP;
16770 END IF;
16771
16772 x_return_status := l_return_status;
16773 EXCEPTION
16774 WHEN g_exception_halt_validation
16775 THEN
16776 x_return_status := l_return_status;
16777 NULL;
16778 WHEN OTHERS
16779 THEN
16780 x_return_status := okc_api.g_ret_sts_unexp_error;
16781 okc_api.set_message (g_app_name,
16782 g_unexpected_error,
16783 g_sqlcode_token,
16784 SQLCODE,
16785 g_sqlerrm_token,
16786 SQLERRM
16787 );
16788 END;
16789
16790 PROCEDURE get_jtf_resource (
16791 p_authorg_id NUMBER,
16792 p_party_id NUMBER,
16793 x_winners_rec OUT NOCOPY jtf_terr_assign_pub.bulk_winners_rec_type,
16794 x_msg_count OUT NOCOPY NUMBER,
16795 x_msg_data OUT NOCOPY VARCHAR2,
16796 x_return_status OUT NOCOPY VARCHAR2
16797 )
16798 IS
16799 -- Fix for bug 4142999
16800 CURSOR get_vendor_details
16801 IS
16802 SELECT a.party_name, b.country, b.region_2
16803 FROM hr_locations b, hr_all_organization_units c, hz_parties a
16804 WHERE b.location_id = c.location_id
16805 AND c.organization_id = p_authorg_id
16806 AND a.party_id = p_party_id;
16807
16808 CURSOR get_party_details
16809 IS
16810 SELECT hz.party_name, hzl.country, hzl.state
16811 FROM hz_parties hz, hz_party_sites hzs, hz_locations hzl
16812 WHERE hz.party_id = p_party_id
16813 AND hzs.party_id = hz.party_id
16814 AND hzs.identifying_address_flag = 'Y'
16815 AND hzl.location_id = hzs.location_id;
16816
16817 l_gen_bulk_rec jtf_terr_assign_pub.bulk_trans_rec_type;
16818 l_gen_return_rec jtf_terr_assign_pub.bulk_winners_rec_type;
16819 l_party_name VARCHAR2 (360);
16820 l_country_code VARCHAR2 (60);
16821 l_state_code VARCHAR2 (120);
16822 l_use_type VARCHAR2 (30);
16823 l_msg_count NUMBER;
16824 l_msg_data VARCHAR2 (200);
16825 l_return_status VARCHAR2 (3);
16826 BEGIN
16827 -- Fix for bug 4142999
16828 IF NVL (fnd_profile.VALUE ('OKS_SRC_TERR_QUALFIERS'), 'V') = 'V'
16829 THEN
16830 OPEN get_vendor_details;
16831
16832 FETCH get_vendor_details
16833 INTO l_party_name, l_country_code, l_state_code;
16834
16835 CLOSE get_vendor_details;
16836 ELSE
16837 OPEN get_party_details;
16838
16839 FETCH get_party_details
16840 INTO l_party_name, l_country_code, l_state_code;
16841
16842 CLOSE get_party_details;
16843 END IF;
16844
16845 l_gen_bulk_rec.trans_object_id.EXTEND;
16846 l_gen_bulk_rec.trans_detail_object_id.EXTEND;
16847 l_gen_bulk_rec.squal_char01.EXTEND;
16848 l_gen_bulk_rec.squal_char04.EXTEND;
16849 l_gen_bulk_rec.squal_char07.EXTEND;
16850 l_gen_bulk_rec.squal_num01.EXTEND;
16851
16852 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
16853 THEN
16854 fnd_log.STRING (fnd_log.level_statement,
16855 g_module_current,
16856 'Values passed to JTF API : '
16857 || ' Party ID '
16858 || p_party_id
16859 || ' Party Name'
16860 || l_party_name
16861 || ' State Code'
16862 || l_state_code
16863 || ' Country Code'
16864 || l_country_code
16865 || ' Territory Qualifier profile '
16866 || fnd_profile.VALUE ('OKS_SRC_TERR_QUALFIERS')
16867 );
16868 END IF;
16869
16870 l_gen_bulk_rec.trans_object_id (1) := 100;
16871 l_gen_bulk_rec.trans_detail_object_id (1) := 1000;
16872 l_gen_bulk_rec.squal_char01 (1) := l_party_name;
16873 l_gen_bulk_rec.squal_char04 (1) := l_state_code;
16874 l_gen_bulk_rec.squal_char07 (1) := l_country_code;
16875 l_gen_bulk_rec.squal_num01 (1) := p_party_id;
16876 l_use_type := 'RESOURCE';
16877
16878 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
16879 THEN
16880 fnd_log.STRING (fnd_log.level_statement,
16881 g_module_current
16882 || '.JTF_TERR_ASSIGN_PUB.get_winners',
16883 'Before JTF API call '
16884 );
16885 END IF;
16886
16887 jtf_terr_assign_pub.get_winners
16888 (p_api_version_number => 1.0,
16889 p_init_msg_list => okc_api.g_false,
16890 p_use_type => l_use_type,
16891 p_source_id => -1500,
16892 p_trans_id => -1501,
16893 p_trans_rec => l_gen_bulk_rec,
16894 p_resource_type => fnd_api.g_miss_char,
16895 p_role => fnd_api.g_miss_char,
16896 p_top_level_terr_id => fnd_api.g_miss_num,
16897 p_num_winners => fnd_api.g_miss_num,
16898 x_return_status => l_return_status,
16899 x_msg_count => l_msg_count,
16900 x_msg_data => l_msg_data,
16901 x_winners_rec => l_gen_return_rec
16902 );
16903 x_winners_rec := l_gen_return_rec;
16904
16905 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
16906 THEN
16907 fnd_log.STRING (fnd_log.level_statement,
16908 g_module_current
16909 || '.JTF_TERR_ASSIGN_PUB.get_winners',
16910 'After JTF call '
16911 );
16912 END IF;
16913 END get_jtf_resource;
16914
16915 PROCEDURE send_notification (
16916 p_order_id IN NUMBER,
16917 p_contract_id NUMBER,
16918 p_type IN VARCHAR2
16919 )
16920 IS
16921 CURSOR l_fnd_csr (p_user_id NUMBER)
16922 IS
16923 SELECT user_name
16924 FROM fnd_user
16925 WHERE user_id = p_user_id;
16926
16927 CURSOR get_order_number
16928 IS
16929 SELECT order_number
16930 FROM oe_order_headers_all
16931 WHERE header_id = p_order_id;
16932
16933 CURSOR get_contract_number
16934 IS
16935 SELECT contract_number || ' ' || contract_number_modifier
16936 FROM okc_k_headers_all_b
16937 WHERE ID = p_contract_id;
16938
16939 l_return_status VARCHAR2 (10);
16940 l_msg_data VARCHAR2 (2000);
16941 l_msg_count NUMBER;
16942 l_terr_admin_id NUMBER;
16943 l_order_number NUMBER := 0;
16944 l_contract_number VARCHAR2 (2000);
16945 l_contract_admin_id NUMBER;
16946 l_contract_approver_id NUMBER;
16947 l_subj VARCHAR2 (1000);
16948 l_msg VARCHAR2 (1000);
16949 l_user_name VARCHAR2 (100);
16950 l_order_num_prompt VARCHAR2 (100);
16951 BEGIN
16952 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
16953 THEN
16954 fnd_log.STRING (fnd_log.level_statement,
16955 g_module_current,
16956 'Inside SEND_NOTIFICATION : '
16957 );
16958 END IF;
16959
16960 l_subj := fnd_message.get_string ('OKS', 'OKS_TERR_SETUP_ERR_SUB');
16961 l_terr_admin_id := fnd_profile.VALUE ('OKS_TERR_ADMIN_ID');
16962
16963 IF (l_terr_admin_id IS NULL)
16964 THEN
16965 l_contract_admin_id := fnd_profile.VALUE ('OKS_CONTRACT_ADMIN_ID');
16966 END IF;
16967
16968 IF l_terr_admin_id IS NOT NULL
16969 THEN
16970 OPEN l_fnd_csr (l_terr_admin_id);
16971
16972 FETCH l_fnd_csr
16973 INTO l_user_name;
16974
16975 CLOSE l_fnd_csr;
16976
16977 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
16978 THEN
16979 fnd_log.STRING (fnd_log.level_statement,
16980 g_module_current,
16981 'Territory Admin is not null - ' || l_user_name
16982 );
16983 END IF;
16984 ELSIF l_contract_admin_id IS NOT NULL
16985 THEN
16986 OPEN l_fnd_csr (l_contract_admin_id);
16987
16988 FETCH l_fnd_csr
16989 INTO l_user_name;
16990
16991 CLOSE l_fnd_csr;
16992
16993 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
16994 THEN
16995 fnd_log.STRING (fnd_log.level_statement,
16996 g_module_current,
16997 'Contract Admin is not null - ' || l_user_name
16998 );
16999 END IF;
17000 ELSE
17001 l_user_name := fnd_profile.VALUE ('OKC_K_APPROVER');
17002
17003 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17004 THEN
17005 fnd_log.STRING (fnd_log.level_statement,
17006 g_module_current,
17007 'Contract Approver is not null - ' || l_user_name
17008 );
17009 END IF;
17010 END IF;
17011
17012 IF p_order_id IS NOT NULL
17013 THEN
17014 OPEN get_order_number;
17015
17016 FETCH get_order_number
17017 INTO l_order_number;
17018
17019 CLOSE get_order_number;
17020
17021 l_order_num_prompt :=
17022 fnd_message.get_string ('OKS', 'OKS_ORDER_NUMBER');
17023 l_subj :=
17024 l_subj || ' ' || l_order_num_prompt || ' - ' || l_order_number;
17025 ELSE
17026 OPEN get_contract_number;
17027
17028 FETCH get_contract_number
17029 INTO l_contract_number;
17030
17031 CLOSE get_contract_number;
17032
17033 l_subj :=
17034 l_subj
17035 || ' '
17036 || fnd_message.get_string ('OKS', 'OKS_CONTRACT_NUMBER')
17037 || ' - '
17038 || l_contract_number;
17039 END IF;
17040
17041 IF (p_type = 'NRS')
17042 THEN
17043 l_msg := fnd_message.get_string ('OKS', 'OKS_NO_TERR_RESOURCES');
17044 ELSIF (p_type = 'ISP')
17045 THEN
17046 l_msg := fnd_message.get_string ('OKS', 'OKS_INVALID_SALES_PERSON');
17047 ELSE
17048 l_msg := fnd_message.get_string ('OKS', 'OKS_TERR_SETUP_ERR_SUB');
17049 END IF;
17050
17051 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17052 THEN
17053 fnd_log.STRING (fnd_log.level_statement,
17054 g_module_current,
17055 'p_recipient is '
17056 || l_user_name
17057 || ' Order no is '
17058 || l_order_number
17059 || 'Contract Number Is '
17060 || l_contract_number
17061 );
17062 END IF;
17063
17064 okc_async_pub.msg_call (p_api_version => 1,
17065 x_return_status => l_return_status,
17066 x_msg_count => l_msg_count,
17067 x_msg_data => l_msg_data,
17068 p_recipient => l_user_name,
17069 p_msg_body => l_msg,
17070 p_msg_subj => l_subj,
17071 p_contract_id => NVL (l_order_number,
17072 p_contract_id
17073 )
17074 );
17075
17076 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17077 THEN
17078 fnd_log.STRING (fnd_log.level_statement,
17079 g_module_current,
17080 'Exiting Send_notification ' || l_return_status
17081 );
17082 END IF;
17083 END send_notification;
17084 END oks_extwarprgm_pvt;