DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_EXTWARPRGM_PVT

Source


1 PACKAGE BODY oks_extwarprgm_pvt AS
2 /* $Header: OKSREWRB.pls 120.90.12020000.7 2013/02/22 10:40:20 mchandak ship $ */
3 
4    TYPE p_srvline_rec IS RECORD (
5       k_line_id   NUMBER
6    );
7 
8    TYPE p_srvline_tbl IS TABLE OF p_srvline_rec
9       INDEX BY BINARY_INTEGER;
10 
11 /**************************************************************************
12    Procedure Get_k_cle_id
13    Returns Service lines originated from Order having the same service item
14 ***************************************************************************/
15    PROCEDURE get_k_cle_id (
16       p_chrid          IN              NUMBER,
17       p_invserviceid   IN              NUMBER,
18       p_cle_tbl        OUT NOCOPY      p_srvline_tbl
19    )
20    IS
21       -- extwarr cascading
22       -- merging servcice lines
23       -- Modified the cusror for the fix of bug# 5088409
24 
25       CURSOR l_service_csr
26       IS
27          SELECT /*+ leading (kl)  use_nl (kl ki) */ kl.ID cle_id
28            FROM okc_k_lines_b kl, okc_k_items ki, okc_statuses_b ks
29           WHERE kl.dnz_chr_id = p_chrid
30             AND kl.lse_id IN (1, 14, 19)
31             AND kl.ID = ki.cle_id
32             AND ki.object1_id1 = TO_CHAR (p_invserviceid)
33             AND kl.upg_orig_system_ref = 'ORDER'
34             AND ks.code = kl.sts_code                              -- 04-jun-2002 merging service lines from OM
35             AND ks.ste_code NOT IN ('TERMINATED', 'CANCELLED')     -- Removed EXPIRED
36 	      AND kl.date_terminated is NULL;                        -- Modified for fix of bug 4690982
37 
38       -- Modified the cusror for the fix of bug# 5088409
39 
40       l_ctr           NUMBER;
41       l_service_rec   l_service_csr%ROWTYPE;
42 
43    BEGIN
44       l_ctr := 1;
45 
46       FOR l_service_rec IN l_service_csr
47       LOOP
48          p_cle_tbl (l_ctr).k_line_id := l_service_rec.cle_id;
49          l_ctr := l_ctr + 1;
50       END LOOP;
51    END get_k_cle_id;
52 
53 /***************************************************************************
54     Function check_merge_yn
55     Checks if the service line can be merged into an existing contract line
56 *****************************************************************************/
57    FUNCTION check_merge_yn (
58       p_k_line_id        IN   NUMBER,
59       p_source_line_id   IN   NUMBER,
60       p_warranty_flag    IN   VARCHAR2
61    )
62       RETURN BOOLEAN
63    IS
64       -- cursor to get the Order line attributes
65       CURSOR source_line_attrbs_csr
66       IS
67          SELECT invoicing_rule_id, accounting_rule_id, price_list_id,
68                 commitment_id, invoice_to_org_id, ship_to_org_id
69            FROM oe_order_lines_all
70           WHERE line_id = p_source_line_id;
71 
72 /*Added for ER 16036980*/
73 CURSOR get_billing_dtls(p_order_line_id NUMBER ) IS
74       SELECT Nvl(SERVICE_BILL_OPTION_CODE,1),Nvl(SERVICE_BILL_PROFILE_ID,1)
75       FROM oe_order_lines_all
76       WHERE line_id=p_order_line_id;
77 
78       CURSOR get_order_details(p_contract_line_id NUMBER)
79       IS
80       SELECT object1_id1
81       FROM okc_k_rel_objs
82       WHERE cle_id=p_contract_line_id;
83 /*Added for ER 16036980 */
84 
85       -- Cursor to compare the source line attributes with
86       -- target line attributes
87       CURSOR target_line_attrbs_csr (
88          l_inv_id       NUMBER,
89          l_acct_id      NUMBER,
90          l_prl_id       VARCHAR2,
91          l_commit_id    NUMBER,
92          l_invorg_id    NUMBER,
93          l_shiporg_id   NUMBER
94       )
95       IS
96          SELECT 'x'
97            FROM okc_k_lines_b kl, oks_k_lines_b sl
98           WHERE kl.ID = p_k_line_id
99             AND kl.ID = sl.cle_id
100             AND NVL (sl.acct_rule_id, -99) = NVL (l_acct_id, -99)
101             AND NVL (kl.inv_rule_id, -99) = NVL (l_inv_id, -99)
102             AND NVL (sl.commitment_id, -99) = NVL (l_commit_id, -99)
103             AND NVL (kl.price_list_id, -99) = NVL (l_prl_id, -99)
104             AND NVL (kl.bill_to_site_use_id, -99) = NVL (l_invorg_id, -99)
105             AND NVL (kl.ship_to_site_use_id, -99) = NVL (l_shiporg_id, -99);
106 
107       l_source_rec   source_line_attrbs_csr%ROWTYPE;
108       l_merge_yn     BOOLEAN                          := FALSE;
109       l_temp         VARCHAR2 (3);
110 /*Added for ER 16036980*/
111 l_target_billing_option  VARCHAR2(100);
112       l_source_billing_option  VARCHAR2(100);
113       l_target_billing_profile NUMBER;
114       l_source_billing_profile NUMBER;
115       l_con_order_line_id      NUMBER;
116 /*Added for ER 16036980*/
117    BEGIN
118       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
119       THEN
120          fnd_log.STRING (fnd_log.level_statement,
121                          g_module_current || '.Check_merge_yn',
122                          'Warranty Flag ' || p_warranty_flag
123                         );
124       END IF;
125 
126       IF p_warranty_flag = 'W'
127       THEN
128          l_merge_yn := TRUE;
129          RETURN (l_merge_yn);
130       ELSE
131          OPEN source_line_attrbs_csr;
132 
133          FETCH source_line_attrbs_csr
134           INTO l_source_rec;
135 
136          IF source_line_attrbs_csr%NOTFOUND
137          THEN
138             CLOSE source_line_attrbs_csr;
139 
140             RAISE g_exception_halt_validation;
141          END IF;
142 
143          CLOSE source_line_attrbs_csr;
144 
145 /*Added for ER 16036980*/
146 OPEN get_order_details(p_k_line_id);
147          FETCH get_order_details INTO l_con_order_line_id;
148          CLOSE get_order_details;
149 
150          OPEN get_billing_dtls(l_con_order_line_id);
151          FETCH get_billing_dtls INTO l_target_billing_option,l_target_billing_profile;
152          CLOSE get_billing_dtls;
153 
154          OPEN get_billing_dtls(p_source_line_id);
155          FETCH get_billing_dtls INTO l_source_billing_option,l_source_billing_profile;
156          CLOSE get_billing_dtls;
157 
158          IF l_target_billing_option = l_source_billing_option AND l_target_billing_profile = l_source_billing_profile
159          AND (l_source_billing_option <> 'FPOM')
160          THEN
161 /*Added for ER16036980*/
162 
163          OPEN target_line_attrbs_csr (l_source_rec.invoicing_rule_id,
164                                       l_source_rec.accounting_rule_id,
165                                       l_source_rec.price_list_id,
166                                       l_source_rec.commitment_id,
167                                       l_source_rec.invoice_to_org_id,
168                                       l_source_rec.ship_to_org_id
169                                      );
170 
171          FETCH target_line_attrbs_csr
172           INTO l_temp;
173 
174          IF target_line_attrbs_csr%FOUND
175          THEN
176             l_merge_yn := TRUE;
177          ELSE
178             l_merge_yn := FALSE;
179          END IF;
180 
181          CLOSE target_line_attrbs_csr;
182 
183 END IF;  /*Added for ER16036980*/
184 
185          RETURN (l_merge_yn);
186       END IF;
187    END;
188 
189 --G_Debug_option := Fnd_profile.value('OKS_DEBUG_LOG');
190    FUNCTION get_top_line_number (p_chr_id IN NUMBER)
191       RETURN NUMBER;
192 
193    FUNCTION get_sub_line_number (p_chr_id IN NUMBER, p_cle_id IN NUMBER)
194       RETURN NUMBER;
195 
196    PROCEDURE get_sts_code (
197       p_ste_code                VARCHAR2,
198       p_sts_code                VARCHAR2,
199       x_ste_code   OUT NOCOPY   VARCHAR2,
200       x_sts_code   OUT NOCOPY   VARCHAR2
201    )
202    IS
203       CURSOR l_ste_csr
204       IS
205          SELECT code
206            FROM okc_statuses_b
207           WHERE ste_code = p_ste_code AND default_yn = 'Y';
208 
209       CURSOR l_sts_csr
210       IS
211          SELECT a.code, a.ste_code
212            FROM okc_statuses_b a, okc_statuses_b b
213           WHERE b.code = p_sts_code
214             AND b.ste_code = a.ste_code
215             AND a.default_yn = 'Y';
216 
217       l_sts_code   VARCHAR2 (30);
218    BEGIN
219       IF p_sts_code IS NULL
220       THEN
221          OPEN l_ste_csr;
222 
223          FETCH l_ste_csr
224           INTO x_sts_code;
225 
226          CLOSE l_ste_csr;
227 
228          x_ste_code := p_ste_code;
229       ELSE
230          OPEN l_sts_csr;
231 
232          FETCH l_sts_csr
233           INTO x_sts_code, x_ste_code;
234 
235          CLOSE l_sts_csr;
236       END IF;
237    EXCEPTION
238       WHEN OTHERS
239       THEN
240          okc_api.set_message (g_app_name,
241                               g_unexpected_error,
242                               g_sqlcode_token,
243                               SQLCODE,
244                               g_sqlerrm_token,
245                               SQLERRM
246                              );
247    END;
248 
249   -----------------------------------------------------------------------
250   --  Procedure: get_cc_trxn_extn
251   --  Added 03/03/2006 by Vijay Ramalingam
252   -----------------------------------------------------------------------
253   -- The get_cc_trxn_extn procedure is used to get a transaction extension
254   -- id from iPayments, based on an existing transaction extension id from
255   -- a sales order header or an order line from OM.
256   -- This API is called while creating an Extended warranty contract
257   -- from OM. It is called at the header level for a sales order header
258   -- or at line level for a sales order line.
259   -- p_context_level identifies the level at which it is called and the
260   -- applicable values are 'ORDER_HEADER' and 'ORDER_LINE'
261 
262    PROCEDURE get_cc_trxn_extn (
263       p_order_header_id  IN              NUMBER,
264       p_order_line_id    IN              NUMBER,
265       p_context_level    IN              VARCHAR2,
266       p_contract_hdr_id  IN              NUMBER,
267       p_contract_line_id IN              NUMBER,
268       x_entity_id        OUT NOCOPY      NUMBER,
269       x_return_status    OUT NOCOPY      VARCHAR2
270    ) IS
271 
272       l_payercontext_rec    iby_fndcpt_common_pub.payercontext_rec_type;
273       l_trxnextension_rec   iby_fndcpt_trxn_pub.trxnextension_rec_type;
274       l_response            iby_fndcpt_common_pub.result_rec_type;
275       l_order_number        NUMBER;
276       l_invoice_to_org_id   NUMBER;
277       l_trxn_extension_id   NUMBER;
278       l_entity_id           NUMBER;
279       l_instr_id            NUMBER;
280       l_iby_cust_id         NUMBER;
281       l_iby_party           NUMBER;
282       l_msg_count           NUMBER;
283       l_msg_data            VARCHAR2 (2000);
284       l_return_status       VARCHAR2 (1) := FND_API.G_RET_STS_SUCCESS;
285 
286       -- Cursor to get the transaction extension info for a sales order
287       CURSOR c_header_trxid (c_order_header_id IN NUMBER)
288       IS
289          SELECT ordhdr.order_number
290                ,ordhdr.invoice_to_org_id
291                ,pmt.trxn_extension_id
292            FROM
293                 oe_order_headers_all ordhdr
294                 ,oe_payments pmt
295           WHERE ordhdr.header_id = c_order_header_id
296             AND ordhdr.header_id = pmt.header_id
297             AND pmt.line_id IS NULL
298             AND pmt.payment_type_code = G_PAYMENT_CREDIT_CARD;
299 
300       -- Cursor to get the transaction extension info for a sales order line
301       CURSOR c_line_trxid (c_order_line_id IN NUMBER)
302       IS
303          SELECT ordline.invoice_to_org_id
304                ,pmt.trxn_extension_id
305            FROM
306                 oe_order_lines_all ordline
307                 ,oe_payments pmt
308           WHERE ordline.line_id = c_order_line_id
309             AND ordline.header_id = pmt.header_id
310             AND ordline.line_id = pmt.line_id
311             AND pmt.payment_type_code = G_PAYMENT_CREDIT_CARD;
312 
313       -- Cursor to get the instrument asignment id for a given transaction
314       -- extension id for a sales order header/line
315       CURSOR c_instrid (c_trxn_extension_id IN NUMBER)
316       IS
317          SELECT instr_assignment_id
318            FROM iby_trxn_extensions_v
319           WHERE trxn_extension_id = c_trxn_extension_id;
320 
321       -- Cursor to get the the Bill to customer account corresponding
322       -- to a bill to site id
323       CURSOR c_cust_csr (p_bill_to_site_use_id NUMBER)
324       IS
325          SELECT ca.cust_account_id
326            FROM hz_cust_acct_sites_all ca, hz_cust_site_uses_all cs
327           WHERE ca.cust_acct_site_id = cs.cust_acct_site_id
328             AND cs.site_use_id = p_bill_to_site_use_id;
329 
330       CURSOR c_party (c_cust_acct_id IN NUMBER)
331       IS
332          SELECT ca.party_id party_id
333            FROM hz_cust_accounts_all ca
334           WHERE ca.cust_account_id = c_cust_acct_id;
335 BEGIN
336 
337    IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
338       fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
339                      'p_context_level = '||p_context_level);
340 
341       fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
342                      'p_order_header_id = '||p_order_header_id);
343 
344       fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
345                      'p_order_line_id = '||p_order_line_id);
346 
347       fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
348                      'p_contract_hdr_id = '||p_contract_hdr_id);
349 
350       fnd_log.STRING (fnd_log.level_statement,g_module_current||'.get_cc_trxn_extn parameters',
351                      'p_contract_line_id  = '||p_contract_line_id);
352    END IF;
353 
354    IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
355 
356       OPEN c_header_trxid(p_order_header_id);
357       FETCH c_header_trxid INTO l_order_number,l_invoice_to_org_id,l_trxn_extension_id;
358       CLOSE c_header_trxid;
359 
360    ELSIF p_context_level = G_CONTEXT_ORDER_LINE THEN
361       OPEN c_line_trxid(p_order_line_id);
362       FETCH c_line_trxid INTO l_invoice_to_org_id,l_trxn_extension_id;
363       CLOSE c_line_trxid;
364 
365    END IF;
366 
367       -- Proceed Further only if a Credit Card info is to be processed
368       IF l_trxn_extension_id IS NOT NULL THEN
369          OPEN c_instrid (l_trxn_extension_id);
370          FETCH c_instrid INTO l_instr_id;
371          CLOSE c_instrid;
372 
373          -- For a transaction extension id, an instrument assignment id
374          -- should always exist in iPayments.
375          IF l_instr_id IS NULL THEN
376             IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
377                IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
378                   fnd_log.STRING (fnd_log.level_error,
379                                   g_module_current
380                                || '.get_cc_trxn_extn-Header.ERROR',
381                                   'After CURSOR - c_InstrId'
382                                || '   ,Payment Txn ID = '
383                                || l_trxn_extension_id
384                                || '   ,p_order_header_id = '
385                                || p_order_header_id
386                               );
387                ELSE
388                   fnd_log.STRING (fnd_log.level_error,
389                                   g_module_current
390                                || '.get_cc_trxn_extn-Line.ERROR',
391                                   'After CURSOR - c_InstrId'
392                                || '  ,Payment Txn ID = '
393                                || l_trxn_extension_id
394                                || '  ,p_line_id = '
395                                || p_order_line_id
396                               );
397                END IF;
398             END IF;
399             IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
400                okc_api.set_message(g_app_name,
401                                    'OKS_CC_INS_ASSG_NOT_FOUND',
402                                    'ORDER_NUMBER',
403                                    l_order_number
404                                    );
405             ELSE
406                okc_api.set_message(g_app_name,
407                                    'OKS_LINE_CC_INS_ASSG_NOT_FOUND',
408                                    'ORDER_LINE_ID',
409                                    p_order_line_id
410                                    );
411             END IF;
412             RAISE g_exception_halt_validation;
413          END IF;
414 
415          OPEN c_cust_csr(l_invoice_to_org_id);
416          FETCH c_cust_csr INTO l_iby_cust_id;
417          CLOSE c_cust_csr;
418 
419          OPEN c_party (l_iby_cust_id);
420          FETCH c_party INTO l_iby_party;
421          CLOSE c_party;
422 
423          l_payercontext_rec.payment_function := IBY_FNDCPT_COMMON_PUB.G_PMT_FUNCTION_CUST_PMT;
424          l_payercontext_rec.party_id := l_iby_party;
425          l_payercontext_rec.cust_account_id := l_iby_cust_id;
426 
427          -- Based on the header or line level, the corresponding contract header
428          -- or contract line id is passed as the order id
429          IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
430             l_trxnextension_rec.order_id := p_contract_hdr_id;
431          ELSE
432             l_trxnextension_rec.order_id := p_contract_line_id;
433          END IF;
434 
435          l_trxnextension_rec.originating_application_id := g_app_id;
436          l_trxnextension_rec.trxn_ref_number1 := TO_CHAR (SYSDATE, 'ddmmyyyyhhmmssss');
437 
438          IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
439             IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
440                fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
441                fnd_log.STRING(
442                fnd_log.level_statement,
443                 g_module_current || '.get_cc_trxn_extn-Header',
444                    'Before call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension for order header'
445                 || '  ,Party_Id = '
446                 || l_payercontext_rec.party_id
447                 || '  ,Cust_Account_Id = '
448                 || l_payercontext_rec.cust_account_id
449                 || '  ,order_id = '
450                 || l_trxnextension_rec.order_id
451                 || '  ,Trxn_Ref_Number1 = '
452                 || l_trxnextension_rec.trxn_ref_number1
453                 || '  ,instr_assignment = '
454                 || l_instr_id
455                 || '  ,application_id= '
456                 || l_trxnextension_rec.originating_application_id
457                );
458                  fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
459             ELSE
460                fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
461                fnd_log.STRING
462                (fnd_log.level_statement,
463                 g_module_current || '.get_cc_trxn_extn-Line',
464                    'Before call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension for order line'
465                 || '  ,Party_Id = '
466                 || l_payercontext_rec.party_id
467                 || '  ,Cust_Account_Id = '
468                 || l_payercontext_rec.cust_account_id
469                 || '  ,order_id (i.e. order line id) = '
470                 || l_trxnextension_rec.order_id
471                 || '  ,Trxn_Ref_Number1 = '
472                 || l_trxnextension_rec.trxn_ref_number1
473                 || '  ,instr_assignment = '
474                 || l_instr_id
475                 || '  ,application_id= '
476                 || l_trxnextension_rec.originating_application_id
477                );
478                  fnd_log.STRING(fnd_log.level_statement,g_module_current,' ');
479             END IF;
480          END IF;
481 
482          -- A payer equivalency level of full is provided for iPayments to be
483          -- able to traverse up and down for a given instrument id
484          -- Note: The new transaction extension that is created at a customer
485          -- account level.
486          iby_fndcpt_trxn_pub.create_transaction_extension
487                                   (p_api_version            => 1.0,
488                                    p_init_msg_list          => 'T',
489                                    p_commit                 => 'F',
490                                    x_return_status          => l_return_status,
491                                    x_msg_count              => l_msg_count,
492                                    x_msg_data               => l_msg_data,
493                                    p_payer                  => l_payercontext_rec,
494                                    p_payer_equivalency      => IBY_FNDCPT_COMMON_PUB.G_PAYER_EQUIV_FULL,
495                                    p_pmt_channel            => G_PAYMENT_CREDIT_CARD,
496                                    p_instr_assignment       => l_instr_id,
497                                    p_trxn_attribs           => l_trxnextension_rec,
498                                    x_entity_id              => l_entity_id,
499                                    x_response               => l_response
500                                   );
501 
502          IF l_return_status <> 'S' THEN
503             IF (fnd_log.level_error >= fnd_log.g_current_runtime_level) THEN
504                IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
505                   fnd_log.STRING
506                   (fnd_log.level_error,
507                    g_module_current || '.get_cc_trxn_extn-Header.ERROR',
508                       'After call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension'
509                    || '  ,x_return_status= '
510                    || l_return_status
511                    || '  ,Result Code = '
512                    || l_response.result_code
513                    || '  ,Result Category= '
514                    || l_response.result_category
515                    || '  ,Result Message= '
516                    || l_response.result_message
517                   );
518                ELSE
519                   fnd_log.STRING
520                   (fnd_log.level_error,
521                    g_module_current || '.get_cc_trxn_extn-Line.ERROR',
522                       'After call to IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension'
523                    || '  ,x_return_status= '
524                    || l_return_status
525                    || '  ,Result Code = '
526                    || l_response.result_code
527                    || '  ,Result Category= '
528                    || l_response.result_category
529                    || '  ,Result Message= '
530                    || l_response.result_message
531                   );
532 			   END IF;
533             END IF;
534             IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
535                okc_api.set_message(g_app_name,
536                                    'OKS_CC_EXTN_CREATN_FAILED',
537                                    'ORDER_NUMBER',
538                                    l_order_number
539                                    );
540             ELSE
541                okc_api.set_message(g_app_name,
542                                    'OKS_LINE_CC_EXTN_CREATN_FAILED',
543                                    'ORDER_LINE_ID',
544                                    p_order_line_id
545                                    );
546             END IF;
547             RAISE g_exception_halt_validation;
548          END IF;
549 
550          IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
551             fnd_log.STRING (fnd_log.level_statement,
552                      g_module_current||'.get_cc_trxn_extn ',
553                      'l_entity_id = '||l_entity_id);
554          END IF;
555 
556          x_entity_id := l_entity_id;
557       END IF;
558       x_return_status := l_return_status;
559    EXCEPTION
560       WHEN g_exception_halt_validation THEN
561          x_return_status := FND_API.G_RET_STS_ERROR;
562       WHEN OTHERS THEN
563          IF c_header_trxid%ISOPEN THEN
564             CLOSE c_header_trxid;
565          END IF;
566 
567          IF c_line_trxid%ISOPEN THEN
568             CLOSE c_line_trxid;
569          END IF;
570 
571          IF c_instrid%ISOPEN THEN
572             CLOSE c_instrid;
573          END IF;
574 
575          IF c_cust_csr%ISOPEN THEN
576             CLOSE c_cust_csr;
577          END IF;
578 
579          IF c_party%ISOPEN THEN
580             CLOSE c_party;
581          END IF;
582 
583          x_return_status := okc_api.g_ret_sts_unexp_error;
584          okc_api.set_message (g_app_name,
585                               g_unexpected_error,
586                               g_sqlcode_token,
587                               SQLCODE,
588                               g_sqlerrm_token,
589                               SQLERRM
590                              );
591 
592          IF fnd_log.level_unexpected >= fnd_log.g_current_runtime_level THEN
593             IF p_context_level = G_CONTEXT_ORDER_HEADER THEN
594             fnd_log.STRING (fnd_log.level_unexpected,
595                                g_module_current
596                             || '.get_cc_trxn_extn-Header.UNEXPECTED',
597                             ' sqlcode = ' || SQLCODE || ', sqlerrm = '
598                             || SQLERRM
599                            );
600             ELSE
601             fnd_log.STRING (fnd_log.level_unexpected,
602                                g_module_current
603                             || '.get_cc_trxn_extn-Line.UNEXPECTED',
604                             ' sqlcode = ' || SQLCODE || ', sqlerrm = '
605                             || SQLERRM
606                            );
607             END IF;
608          END IF;
609 END get_cc_trxn_extn;
610 
611 
612    PROCEDURE party_role (
613       p_chrid           IN              NUMBER,
614       p_cleid           IN              NUMBER,
615       p_rle_code        IN              VARCHAR2,
616       p_partyid         IN              NUMBER,
617       p_object_code     IN              VARCHAR2,
618       x_roleid          OUT NOCOPY      NUMBER,
619       x_msg_count       OUT NOCOPY      NUMBER,
620       x_msg_data        OUT NOCOPY      VARCHAR2,
621       x_return_status   OUT NOCOPY      VARCHAR2
622    )
623    IS
624       l_api_version     CONSTANT NUMBER                               := 1.0;
625       l_init_msg_list   CONSTANT VARCHAR2 (1)                         := 'F';
626       l_return_status            VARCHAR2 (1)    := okc_api.g_ret_sts_success;
627       l_index                    VARCHAR2 (240);
628       --Party Role
629       l_cplv_tbl_in              okc_contract_party_pub.cplv_tbl_type;
630       l_cplv_tbl_out             okc_contract_party_pub.cplv_tbl_type;
631 
632       CURSOR l_party_csr
633       IS
634          SELECT ID
635            FROM okc_k_party_roles_b
636           WHERE dnz_chr_id = p_chrid
637             AND cle_id IS NULL
638             AND chr_id = p_chrid
639             AND rle_code = p_rle_code;
640 
641       CURSOR l_lparty_csr
642       IS
643          SELECT ID
644            FROM okc_k_party_roles_b
645           WHERE dnz_chr_id = p_chrid
646             AND chr_id IS NULL
647             AND cle_id = p_cleid
648             AND rle_code = p_rle_code;
649 
650       l_roleid                   NUMBER;
651    BEGIN
652       l_return_status := okc_api.g_ret_sts_success;
653 
654       IF p_cleid IS NULL
655       THEN
656          l_roleid := NULL;
657 
658          OPEN l_party_csr;
659 
660          FETCH l_party_csr
661           INTO l_roleid;
662 
663          CLOSE l_party_csr;
664 
665          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
666          THEN
667             fnd_log.STRING (fnd_log.level_statement,
668                             g_module_current || '.PARTY_ROLE',
669                             'Party Role Id = ' || l_roleid
670                            );
671          END IF;
672 
673          IF l_roleid IS NOT NULL
674          THEN
675             x_roleid := l_roleid;
676             RETURN;
677          END IF;
678 
679          l_cplv_tbl_in (1).chr_id := p_chrid;
680       ELSE
681          l_roleid := NULL;
682 
683          OPEN l_lparty_csr;
684 
685          FETCH l_lparty_csr
686           INTO l_roleid;
687 
688          CLOSE l_lparty_csr;
689 
690          IF l_roleid IS NOT NULL
691          THEN
692             x_roleid := l_roleid;
693             RETURN;
694          END IF;
695 
696          l_cplv_tbl_in (1).cle_id := p_cleid;
697       END IF;
698 
699       l_cplv_tbl_in (1).sfwt_flag := 'N';
700       l_cplv_tbl_in (1).rle_code := p_rle_code;
701       l_cplv_tbl_in (1).object1_id1 := p_partyid;
702       l_cplv_tbl_in (1).object1_id2 := '#';
703       l_cplv_tbl_in (1).jtot_object1_code := p_object_code;
704       l_cplv_tbl_in (1).dnz_chr_id := p_chrid;
705       okc_contract_party_pub.create_k_party_role
706                                           (p_api_version        => l_api_version,
707                                            p_init_msg_list      => l_init_msg_list,
708                                            x_return_status      => l_return_status,
709                                            x_msg_count          => x_msg_count,
710                                            x_msg_data           => x_msg_data,
711                                            p_cplv_tbl           => l_cplv_tbl_in,
712                                            x_cplv_tbl           => l_cplv_tbl_out
713                                           );
714 
715       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
716       THEN
717          fnd_log.STRING
718              (fnd_log.level_event,
719               g_module_current || '.PARTY_ROLE.external_call.after',
720                  'okc_contract_party_pub.create_k_party_role(Return status ='
721               || l_return_status
722               || ')'
723               || 'Party Role Id = '
724               || l_cplv_tbl_out (1).ID
725              );
726       END IF;
727 
728       IF l_return_status = 'S'
729       THEN
730          x_roleid := l_cplv_tbl_out (1).ID;
731       ELSE
732          okc_api.set_message (g_app_name,
733                               g_required_value,
734                               g_col_name_token,
735                               p_rle_code || ' Party Role (HEADER)'
736                              );
737          RAISE g_exception_halt_validation;
738       END IF;
739    EXCEPTION
740       WHEN g_exception_halt_validation
741       THEN
742          x_return_status := l_return_status;
743          NULL;
744       WHEN OTHERS
745       THEN
746          x_return_status := okc_api.g_ret_sts_unexp_error;
747          okc_api.set_message (g_app_name,
748                               g_unexpected_error,
749                               g_sqlcode_token,
750                               SQLCODE,
751                               g_sqlerrm_token,
752                               SQLERRM
753                              );
754    END;
755 
756 -----------------------------------------------------------------------
757 --  GetFormattedInvoiceText
758 --  added 05/29/2002  --Vigandhi
759 --  For Bug#2396580
760 -----------------------------------------------------------------------
761    FUNCTION getformattedinvoicetext (
762       p_product_item   IN   NUMBER,
763       p_start_date     IN   DATE,
764       p_end_date       IN   DATE,
765       p_item_desc      IN   VARCHAR2,
766       p_qty            IN   NUMBER
767    )
768       RETURN VARCHAR2
769    IS
770       /* CURSOR l_item_csr IS
771             SELECT jtot_object1_code,
772                    object1_id1,
773                    object1_id2,
774                    number_of_items
775               FROM okc_k_items
776              WHERE cle_id = p_cle_id;
777              */
778       CURSOR l_inv_csr (p_product_item NUMBER)
779       IS
780          SELECT t.description NAME, b.concatenated_segments description
781            FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
782           WHERE b.inventory_item_id = t.inventory_item_id
783             AND b.organization_id = t.organization_id
784             AND t.LANGUAGE = USERENV ('LANG')
785             AND b.inventory_item_id = p_product_item
786             AND ROWNUM < 2;
787 
788       l_object_code              okc_k_items.jtot_object1_code%TYPE;
789       l_object1_id1              okc_k_items.object1_id1%TYPE;
790       l_object1_id2              okc_k_items.object1_id2%TYPE;
791       l_no_of_items              okc_k_items.number_of_items%TYPE;
792       l_name                     VARCHAR2 (2000);
793       l_desc                     VARCHAR2 (2000);
794       l_formatted_invoice_text   VARCHAR2 (2000);
795    BEGIN
796       OPEN l_inv_csr (p_product_item);
797 
798       FETCH l_inv_csr
799        INTO l_name, l_desc;
800 
801       CLOSE l_inv_csr;
802 
803       IF fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE') = 'DISPLAY_DESC'
804       THEN
805          l_desc := l_name;                                          --l_desc;
806       ELSE
807          l_desc := l_desc;                                          --l_name;
808       END IF;
809 
810       l_formatted_invoice_text :=
811          SUBSTR (   p_item_desc
812                  || ':'
813                  || p_qty
814                  || ':'
815                  || l_desc
816                  || ':'
817                  || to_char(p_start_date,'DD-MON-YYYY')
818                  || ':'
819                  || to_char(p_end_date,'DD-MON-YYYY'),
820                  1,
821                  450
822                 );
823       RETURN (l_formatted_invoice_text);
824    END getformattedinvoicetext;
825 
826 -----------------------------------------------------------------------
827 -- Get Contract Hearder Id
828 -----------------------------------------------------------------------
829    FUNCTION get_k_hdr_id (
830       p_type             VARCHAR2,
831       p_object_id   IN   NUMBER,
832       p_enddate     IN   DATE
833    )
834       RETURN NUMBER
835    IS
836       CURSOR l_kexists_csr (p_jtf_id VARCHAR2)
837       IS
838          SELECT chr_id
839            FROM okc_k_rel_objs
840           WHERE object1_id1 = TO_CHAR (p_object_id)
841             AND jtot_object1_code = p_jtf_id;
842 
843       CURSOR l_wexists_csr (p_jtf_id VARCHAR2)
844       IS
845          SELECT chr_id
846            FROM okc_k_rel_objs
847           WHERE object1_id1 = TO_CHAR (p_object_id)
848             AND jtot_object1_code = p_jtf_id
849             AND rty_code = 'CONTRACTWARRANTYORDER';
850 
851       l_wchrid   NUMBER;
852       l_kchrid   NUMBER;
853       l_jtf_id   VARCHAR2 (30);
854 
855       CURSOR l_hdr_csr
856       IS
857          SELECT ID chr_id
858            FROM okc_k_headers_v
859           WHERE attribute1 = p_object_id AND end_date = p_enddate;
860    BEGIN
861       IF p_type = 'ORDER'
862       THEN
863          l_jtf_id := g_jtf_order_hdr;
864 
865          OPEN l_kexists_csr (l_jtf_id);
866 
867          FETCH l_kexists_csr
868           INTO l_kchrid;
869 
870          IF l_kexists_csr%NOTFOUND
871          THEN
872             CLOSE l_kexists_csr;
873 
874             RETURN (NULL);
875          END IF;
876 
877          CLOSE l_kexists_csr;
878 
879          RETURN (l_kchrid);
880       ELSIF p_type = 'RENEW'
881       THEN
882          OPEN l_hdr_csr;
883 
884          FETCH l_hdr_csr
885           INTO l_kchrid;
886 
887          IF l_hdr_csr%NOTFOUND
888          THEN
889             CLOSE l_hdr_csr;
890 
891             RETURN (NULL);
892          END IF;
893 
894          CLOSE l_hdr_csr;
895 
896          RETURN (l_kchrid);
897       ELSIF p_type = 'WARR'
898       THEN
899          l_jtf_id := g_jtf_order_hdr;
900 
901          OPEN l_wexists_csr (l_jtf_id);
902 
903          FETCH l_wexists_csr
904           INTO l_wchrid;
905 
906          IF l_wexists_csr%NOTFOUND
907          THEN
908             CLOSE l_wexists_csr;
909 
910             RETURN (NULL);
911          END IF;
912 
913          CLOSE l_wexists_csr;
914 
915          RETURN (l_wchrid);
916       END IF;
917    END get_k_hdr_id;
918 
919    FUNCTION priced_yn (p_lse_id IN NUMBER)
920       RETURN VARCHAR2
921    IS
922       CURSOR c_priced_yn
923       IS
924          SELECT priced_yn
925            FROM okc_line_styles_b
926           WHERE ID = p_lse_id;
927 
928       v_priced   VARCHAR2 (50) := 'N';
929    BEGIN
930       FOR cur_c_priced_yn IN c_priced_yn
931       LOOP
932          v_priced := cur_c_priced_yn.priced_yn;
933          EXIT;
934       END LOOP;
935 
936       RETURN (v_priced);
937    END priced_yn;
938 
939    FUNCTION check_strmlvl_exists (p_cle_id IN NUMBER)
940       RETURN NUMBER
941    IS
942       CURSOR l_billsch_csr (p_cle_id IN NUMBER)
943       IS
944          SELECT ID
945            FROM oks_stream_levels_v
946           WHERE cle_id = p_cle_id;
947 
948       l_strmlvl_id   NUMBER;
949    BEGIN
950       OPEN l_billsch_csr (p_cle_id);
951 
952       FETCH l_billsch_csr
953        INTO l_strmlvl_id;
954 
955       IF (l_billsch_csr%FOUND)
956       THEN
957          RETURN (l_strmlvl_id);
958       ELSE
959          RETURN (NULL);
960       END IF;
961 
962       CLOSE l_billsch_csr;
963    EXCEPTION
964       WHEN NO_DATA_FOUND
965       THEN
966          RETURN (NULL);
967    END;
968 
969    FUNCTION check_lvlelements_exists (p_cle_id IN NUMBER)
970       RETURN BOOLEAN
971    IS
972       CURSOR l_billsll_csr (p_cle_id IN NUMBER)
973       IS
974          SELECT 'x'
975            FROM oks_stream_levels_v sll, oks_level_elements lvl
976           WHERE lvl.rul_id = sll.ID AND sll.cle_id = p_cle_id;
977 
978       v_flag   BOOLEAN      := FALSE;
979       v_temp   VARCHAR2 (5);
980    BEGIN
981       OPEN l_billsll_csr (p_cle_id);
982 
983       FETCH l_billsll_csr
984        INTO v_temp;
985 
986       IF (l_billsll_csr%FOUND)
987       THEN
988          v_flag := TRUE;
989       ELSE
990          v_flag := FALSE;
991       END IF;
992 
993       CLOSE l_billsll_csr;
994 
995       RETURN (v_flag);
996    END;
997 
998 /*************************************************************
999 Creates a record in operation instances for Transfer, Split, Replace
1000  and Update transactions.
1001 **************************************************************/
1002    PROCEDURE create_operation_instance (
1003       p_target_chr_id                   NUMBER,
1004       p_transaction                     VARCHAR2,
1005       x_oper_instance_id   OUT NOCOPY   NUMBER,
1006       x_return_status      OUT NOCOPY   VARCHAR2,
1007       x_msg_count          OUT NOCOPY   NUMBER,
1008       x_msg_data           OUT NOCOPY   VARCHAR2
1009    )
1010    IS
1011       CURSOR cop_csr (p_opn_code VARCHAR2)
1012       IS
1013          SELECT ID
1014            FROM okc_class_operations
1015           WHERE cls_code = (SELECT cls_code
1016                               FROM okc_subclasses_b
1017                              WHERE code = 'SERVICE')
1018                 AND opn_code = p_opn_code;
1019 
1020       l_cop_id                   NUMBER;
1021       l_api_version     CONSTANT NUMBER                          := 1.0;
1022       l_init_msg_list   CONSTANT VARCHAR2 (1)                    := 'F';
1023       l_return_status            VARCHAR2 (1)                    := 'S';
1024       l_oiev_tbl_in              okc_oper_inst_pvt.oiev_tbl_type;
1025       l_oiev_tbl_out             okc_oper_inst_pvt.oiev_tbl_type;
1026    BEGIN
1027       x_return_status := l_return_status;
1028 
1029       -- get class operation id
1030       OPEN cop_csr (p_transaction);
1031 
1032       FETCH cop_csr
1033        INTO l_cop_id;
1034 
1035       CLOSE cop_csr;
1036 
1037       l_oiev_tbl_in (1).status_code := 'PROCESSED';
1038       l_oiev_tbl_in (1).cop_id := l_cop_id;
1039       l_oiev_tbl_in (1).target_chr_id := p_target_chr_id;
1040       okc_oper_inst_pub.create_operation_instance
1041                                          (p_api_version        => l_api_version,
1042                                           p_init_msg_list      => l_init_msg_list,
1043                                           x_return_status      => l_return_status,
1044                                           x_msg_count          => x_msg_count,
1045                                           x_msg_data           => x_msg_data,
1046                                           p_oiev_tbl           => l_oiev_tbl_in,
1047                                           x_oiev_tbl           => l_oiev_tbl_out
1048                                          );
1049       x_oper_instance_id := l_oiev_tbl_out (1).ID;
1050       x_return_status := l_return_status;
1051    EXCEPTION
1052       WHEN OTHERS
1053       THEN
1054          x_return_status := okc_api.g_ret_sts_unexp_error;
1055          okc_api.set_message (g_app_name,
1056                               g_unexpected_error,
1057                               g_sqlcode_token,
1058                               SQLCODE,
1059                               g_sqlerrm_token,
1060                               SQLERRM
1061                              );
1062    END;
1063 
1064 /***********************************************
1065 Create operation lines , linking the old and new lines
1066 for Split, replace, transfer and update transactions
1067 ***********************************************/
1068    PROCEDURE create_operation_lines (
1069       p_source_line_id                 NUMBER,
1070       p_target_line_id                 NUMBER,
1071       p_source_chr_id                  NUMBER,
1072       p_target_chr_id                  NUMBER,
1073       p_opr_instance_id                NUMBER,
1074       x_return_status     OUT NOCOPY   VARCHAR2,
1075       x_msg_count         OUT NOCOPY   NUMBER,
1076       x_msg_data          OUT NOCOPY   VARCHAR2
1077    )
1078    IS
1079       l_api_version     CONSTANT NUMBER                          := 1.0;
1080       l_init_msg_list   CONSTANT VARCHAR2 (1)                    := 'F';
1081       l_return_status            VARCHAR2 (1)                    := 'S';
1082       l_olev_tbl_in              okc_oper_inst_pvt.olev_tbl_type;
1083       l_olev_tbl_out             okc_oper_inst_pvt.olev_tbl_type;
1084    BEGIN
1085       x_return_status := l_return_status;
1086       l_olev_tbl_in (1).oie_id := p_opr_instance_id;
1087       l_olev_tbl_in (1).process_flag := 'P';
1088       l_olev_tbl_in (1).subject_chr_id := p_target_chr_id;
1089       l_olev_tbl_in (1).object_chr_id := p_source_chr_id;
1090       l_olev_tbl_in (1).subject_cle_id := p_target_line_id;
1091       l_olev_tbl_in (1).object_cle_id := p_source_line_id;
1092       l_olev_tbl_in (1).active_yn := 'Y';
1093       okc_oper_inst_pub.create_operation_line
1094                                          (p_api_version        => l_api_version,
1095                                           p_init_msg_list      => l_init_msg_list,
1096                                           x_return_status      => l_return_status,
1097                                           x_msg_count          => x_msg_count,
1098                                           x_msg_data           => x_msg_data,
1099                                           p_olev_tbl           => l_olev_tbl_in,
1100                                           x_olev_tbl           => l_olev_tbl_out
1101                                          );
1102       x_return_status := l_return_status;
1103    EXCEPTION
1104       WHEN OTHERS
1105       THEN
1106          x_return_status := okc_api.g_ret_sts_unexp_error;
1107          okc_api.set_message (g_app_name,
1108                               g_unexpected_error,
1109                               g_sqlcode_token,
1110                               SQLCODE,
1111                               g_sqlerrm_token,
1112                               SQLERRM
1113                              );
1114    END;
1115 
1116 /***********************************************
1117 
1118 Check if two contract headers can be merged for
1119 System Transfers
1120 ************************************************/
1121    PROCEDURE header_merge_yn (
1122       p_source_chr_id   IN              NUMBER,
1123       p_target_chr_id   IN              NUMBER,
1124       p_sts_code        IN              VARCHAR2,
1125       x_eligible_yn     OUT NOCOPY      VARCHAR2,
1126       x_msg_count       OUT NOCOPY      NUMBER,
1127       x_msg_data        OUT NOCOPY      VARCHAR2,
1128       x_return_status   OUT NOCOPY      VARCHAR2
1129    )
1130    IS
1131       -- [Signed] [Active] (Profile)         <=> [Signed] [Active](Target)
1132       -- [Entered] (Profile)                  => [Entered, Active] (Target)
1133       CURSOR source_csr (l_chr_id NUMBER)
1134       IS
1135          SELECT a.payment_term_id, a.price_list_id, c.ste_code, --a.STS_CODE,
1136                 a.authoring_org_id, a.currency_code, a.template_yn,
1137                 a.conversion_type, a.conversion_rate, a.conversion_rate_date,
1138                 a.conversion_euro_rate, b.inv_trx_type, b.ar_interface_yn,
1139                 b.summary_trx_yn, b.hold_billing, a.inv_organization_id,
1140                 a.scs_code, c.ste_code source_ste_code, b.period_start,
1141                 b.period_type, b.price_uom, a.billed_at_source
1142            FROM okc_k_headers_all_b a, oks_k_headers_b b, okc_statuses_b c
1143           WHERE a.ID = l_chr_id AND a.ID = b.chr_id AND p_sts_code = c.code;
1144 
1145       -- and c.ste_code in ('ACTIVE','ENTERED','SIGNED');
1146 
1147       -- Comparing the profile value 'OKS_TRANSFER_STATUS' with target ste_code
1148       CURSOR target_csr (
1149          l_target_chr_id     NUMBER,
1150          l_pay_term          NUMBER,
1151          l_price_list        NUMBER,
1152          l_profile           VARCHAR2,
1153          l_source_ste_code   VARCHAR2,
1154          l_org_id            NUMBER,
1155          l_curr_code         VARCHAR2,
1156          l_temp_yn           VARCHAR2,
1157          l_conv_type         VARCHAR2,
1158          l_conv_rate         VARCHAR2,
1159          l_conv_rate_date    DATE,
1160          l_conv_euro         NUMBER,
1161          l_trx_type          VARCHAR2,
1162          l_ar_int            VARCHAR2,
1163          l_sum_trx           VARCHAR2,
1164          l_hold_bill         VARCHAR2,
1165          l_inv_org_id        NUMBER,
1166          l_scs_code          VARCHAR2,
1167          l_period_start      VARCHAR2,
1168          l_period_type       VARCHAR2,
1169          l_price_uom         VARCHAR2,
1170 	 l_billed_at_source  VARCHAR2
1171       )
1172       IS
1173          SELECT a.ID
1174            FROM okc_k_headers_all_b a, oks_k_headers_b b, okc_statuses_b c
1175           WHERE a.ID = l_target_chr_id
1176             AND a.ID = b.chr_id
1177             AND a.sts_code= c.code --Bug fix 5614310
1178             AND c.ste_code IN ('ACTIVE', 'ENTERED', 'SIGNED')
1179             AND (   DECODE (DECODE (l_source_ste_code,
1180                                     'ACTIVE', 1,
1181                                     'SIGNED', 1,
1182                                     'HOLD', 1,
1183                                     0
1184                                    ),
1185                             DECODE (l_profile, 'ACTIVE', 1, 2), 1,
1186                             3
1187                            ) =
1188                               DECODE (c.ste_code,
1189                                       'ACTIVE', 1,
1190                                       'SIGNED', 1,
1191                                       4
1192                                      )
1193                  OR DECODE (DECODE (l_source_ste_code,
1194                                     'ACTIVE', 1,
1195                                     'SIGNED', 1,
1196                                     'HOLD', 1,
1197                                     0
1198                                    ),
1199                             DECODE (l_profile, 'ENTERED', 1, 2), 1,
1200                             3
1201                            ) = DECODE (c.ste_code, 'ENTERED', 1, 4)
1202                  OR DECODE (l_source_ste_code, 'ENTERED', 1, 2) =
1203                                           DECODE (c.ste_code,
1204                                                   'ENTERED', 1,
1205                                                   3
1206                                                  )
1207                 )
1208             AND NVL (a.payment_term_id, -99) = NVL (l_pay_term, -99)
1209             AND NVL (a.price_list_id, -99) = NVL (l_price_list, -99)
1210             AND a.authoring_org_id = l_org_id
1211             AND a.currency_code = l_curr_code
1212             AND a.template_yn = l_temp_yn
1213             AND NVL (a.conversion_type, -99) = NVL (l_conv_type, -99)
1214             AND NVL (a.conversion_rate, -99) = NVL (l_conv_rate, -99)
1215             AND DECODE (a.conversion_rate_date,
1216                         NULL, -99,
1217                         SYSDATE - TRUNC (a.conversion_rate_date)
1218                        ) =
1219                    DECODE (l_conv_rate_date,
1220                            NULL, -99,
1221                            SYSDATE - TRUNC (l_conv_rate_date)
1222                           )
1223             AND NVL (a.conversion_euro_rate, -99) = NVL (l_conv_euro, -99)
1224             AND NVL (b.inv_trx_type, -99) = NVL (l_trx_type, -99)
1225             AND NVL (b.ar_interface_yn, -99) = NVL (l_ar_int, -99)
1226             AND NVL (b.summary_trx_yn, -99) = NVL (l_sum_trx, -99)
1227             AND NVL (b.hold_billing, -99) = NVL (l_hold_bill, -99)
1228             AND NVL (a.inv_organization_id, -99) = NVL (l_inv_org_id, -99)
1229             AND NVL (a.scs_code, -99) = NVL (l_scs_code, -99)
1230             AND NVL (b.period_start, -99) = NVL (l_period_start, -99)
1231             AND NVL (b.period_type, -99) = NVL (l_period_type, -99)
1232             AND NVL (b.price_uom, -99) = NVL (l_price_uom, -99)
1233 	    AND NVL (a.billed_at_source, '-99') = NVL(l_billed_at_source, '-99');
1234 
1235       l_target_rec   target_csr%ROWTYPE;
1236       l_source_rec   source_csr%ROWTYPE;
1237    BEGIN
1238       x_return_status := okc_api.g_ret_sts_success;
1239 
1240       OPEN source_csr (p_source_chr_id);
1241 
1242       FETCH source_csr
1243        INTO l_source_rec;
1244 
1245       CLOSE source_csr;
1246 
1247       OPEN target_csr (p_target_chr_id,
1248                        l_source_rec.payment_term_id,
1249                        l_source_rec.price_list_id,
1250                        fnd_profile.VALUE ('OKS_TRANSFER_STATUS'),
1251                        l_source_rec.source_ste_code,
1252                        l_source_rec.authoring_org_id,
1253                        l_source_rec.currency_code,
1254                        l_source_rec.template_yn,
1255                        l_source_rec.conversion_type,
1256                        l_source_rec.conversion_rate,
1257                        l_source_rec.conversion_rate_date,
1258                        l_source_rec.conversion_euro_rate,
1259                        l_source_rec.inv_trx_type,
1260                        l_source_rec.ar_interface_yn,
1261                        l_source_rec.summary_trx_yn,
1262                        l_source_rec.hold_billing,
1263                        l_source_rec.inv_organization_id,
1264                        l_source_rec.scs_code,
1265                        l_source_rec.period_start,
1266                        l_source_rec.period_type,
1267                        l_source_rec.price_uom,
1268                        l_source_rec.billed_at_source
1269                       );
1270 
1271       FETCH target_csr
1272        INTO l_target_rec;
1273 
1274       IF target_csr%NOTFOUND
1275       THEN
1276          x_eligible_yn := 'N';
1277       ELSE
1278          x_eligible_yn := 'Y';
1279       END IF;
1280 
1281       CLOSE target_csr;
1282    EXCEPTION
1283       WHEN OTHERS
1284       THEN
1285          x_return_status := okc_api.g_ret_sts_unexp_error;
1286          okc_api.set_message (g_app_name,
1287                               g_unexpected_error,
1288                               g_sqlcode_token,
1289                               SQLCODE,
1290                               g_sqlerrm_token,
1291                               SQLERRM
1292                              );
1293    END header_merge_yn;
1294 
1295 /***********************************************
1296 
1297 Check if two contract lines can be merged for
1298 System Transfers
1299 ************************************************/
1300    PROCEDURE line_merge_yn (
1301       p_source_line_id   IN              NUMBER,
1302       p_target_line_id   IN              NUMBER,
1303       p_source_flag      IN              VARCHAR2,
1304       x_eligible_yn      OUT NOCOPY      VARCHAR2,
1305       x_msg_count        OUT NOCOPY      NUMBER,
1306       x_msg_data         OUT NOCOPY      VARCHAR2,
1307       x_return_status    OUT NOCOPY      VARCHAR2
1308    )
1309    IS
1310       -- [Signed]  [Active] (Profile)         <=> [Signed]  [Active] (Target)
1311       -- [Entered] (Profile)                  => [Entered, Active] (Target)
1312       CURSOR source_line (l_line_id NUMBER)
1313       IS
1314          SELECT b.acct_rule_id, a.price_list_id, c.ste_code, a.lse_id,
1315                 a.bill_to_site_use_id, a.line_renewal_type_code,
1316                 b.tax_code                              --Fix for bug 4121175
1317                           ,
1318                 b.price_uom
1319            FROM okc_k_lines_b a, oks_k_lines_b b, okc_statuses_b c
1320           WHERE a.ID = l_line_id AND a.ID = b.cle_id AND a.sts_code = c.code;
1321 
1322       CURSOR service_item (l_line_id NUMBER)
1323       IS
1324          SELECT object1_id1
1325            FROM okc_k_items
1326           WHERE cle_id = l_line_id AND jtot_object1_code LIKE 'OKX_SYSITEM';
1327 
1328       -- if date_completed is not null then it's billed.
1329       CURSOR get_date_complete (l_line_id NUMBER)
1330       IS
1331          SELECT a.date_completed
1332            FROM oks_level_elements a, oks_stream_levels_b b
1333           WHERE b.cle_id = l_line_id AND a.rul_id = b.ID;
1334 
1335       CURSOR target_line (
1336          l_line_id                  NUMBER,
1337          l_acct_rule_id             NUMBER,
1338          l_price_list_id            NUMBER,
1339          l_ste_code                 VARCHAR2,
1340          l_lse_id                   NUMBER,
1341          l_flag                     VARCHAR2,
1342          l_bill_to_site_use_id      NUMBER,
1343          l_line_renewal_type_code   VARCHAR2,
1344          l_tax_code                 VARCHAR2,
1345          l_price_uom                VARCHAR2
1346       )
1347       IS
1348          SELECT a.ID
1349            FROM okc_k_lines_b a, oks_k_lines_b b, okc_statuses_b c
1350           WHERE a.ID = l_line_id
1351             AND a.ID = b.cle_id
1352             AND a.sts_code = c.code
1353             AND c.ste_code IN ('ACTIVE', 'ENTERED', 'SIGNED')
1354             AND NVL (b.acct_rule_id, -99) = NVL (l_acct_rule_id, -99)
1355             AND NVL (b.tax_code, -99) = NVL (l_tax_code, -99)
1356             --Fix for bug 4121175
1357             AND NVL (b.price_uom, -99) = NVL (l_price_uom, -99)
1358             AND NVL (a.price_list_id, -99) = NVL (l_price_list_id, -99)
1359             /*
1360             AND (  c.ste_code = l_ste_code
1361                 OR decode (l_ste_code, 'SIGNED', 1, 'ACTIVE', 1,  4) =
1362                    decode(c.ste_code, 'SIGNED', 1, 'ACTIVE', 1, 3)
1363                  )
1364             */
1365             AND a.lse_id = l_lse_id
1366             AND (   DECODE (l_flag, 'N', 0, 1) = 0
1367                  OR (    DECODE (l_flag, 'Y', 1, 0) = 1
1368                      AND NVL (a.bill_to_site_use_id, -99) =
1369                                                NVL (l_bill_to_site_use_id,
1370                                                     -99)
1371                      AND NVL (a.line_renewal_type_code, -99) =
1372                                             NVL (l_line_renewal_type_code,
1373                                                  -99)
1374                     )
1375                 );
1376 
1377       CURSOR sales_credit_csr (l_line_id NUMBER)
1378       IS
1379          SELECT PERCENT, sc.sales_credit_type_id1, sct.quota_flag,
1380                 sc.ctc_id sales_person_id, sc.sales_group_id
1381            FROM oks_k_sales_credits sc, oe_sales_credit_types sct
1382           WHERE sc.sales_credit_type_id1 = sct.sales_credit_type_id
1383             AND sc.cle_id = l_line_id;
1384 
1385       CURSOR target_sales_credit_csr (
1386          l_line_id                 NUMBER,
1387          l_percent                 NUMBER,
1388          l_sales_credit_type_id1   NUMBER,
1389          l_quota_flag              VARCHAR2,
1390          l_sales_person_id         NUMBER,
1391          l_sales_group_id          NUMBER
1392       )
1393       IS
1394          SELECT PERCENT, sc.sales_credit_type_id1, sct.quota_flag,
1395                 sc.ctc_id sales_person_id, sc.sales_group_id
1396            FROM oks_k_sales_credits sc, oe_sales_credit_types sct
1397           WHERE sc.sales_credit_type_id1 = sct.sales_credit_type_id
1398             AND sc.cle_id = l_line_id
1399             AND PERCENT = l_percent
1400             AND sc.sales_credit_type_id1 = l_sales_credit_type_id1
1401             AND sct.quota_flag = l_quota_flag
1402             AND sc.ctc_id = l_sales_person_id
1403             AND NVL (sc.sales_group_id, -99) = NVL (l_sales_group_id, -99);
1404 
1405       CURSOR sales_credit_count_csr (l_line_id NUMBER)
1406       IS
1407          SELECT COUNT (*)
1408            FROM oks_k_sales_credits
1409           WHERE cle_id = l_line_id;
1410 
1411       l_source_rec               source_line%ROWTYPE;
1412       l_target_rentype           target_line%ROWTYPE;
1413       l_target_sales_rec         target_sales_credit_csr%ROWTYPE;
1414       l_source_sales_count       NUMBER;
1415       l_target_sales_count       NUMBER;
1416       l_target_bill_completed    DATE;
1417       l_source_bill_completed    DATE;
1418       l_source_service_item_id   NUMBER;
1419       l_target_service_item_id   NUMBER;
1420       l_api_version     CONSTANT NUMBER                            := 1.0;
1421       l_init_msg_list            VARCHAR2 (2000)            := okc_api.g_false;
1422       l_return_status            VARCHAR2 (1);
1423    BEGIN
1424       l_return_status := okc_api.g_ret_sts_success;
1425 
1426       OPEN source_line (p_source_line_id);
1427 
1428       FETCH source_line
1429        INTO l_source_rec;
1430 
1431       CLOSE source_line;
1432 
1433       -- Check invoice rule, accounting rule, price list id , currency code,
1434       -- status, line style id, payment type, billing schedule type.
1435       OPEN target_line (p_target_line_id,
1436                         l_source_rec.acct_rule_id,
1437                         l_source_rec.price_list_id,
1438                         fnd_profile.VALUE ('OKS_TRANSFER_STATUS'),
1439                         l_source_rec.lse_id,
1440                         p_source_flag,
1441                         l_source_rec.bill_to_site_use_id,
1442                         l_source_rec.line_renewal_type_code,
1443                         l_source_rec.tax_code,
1444                         l_source_rec.price_uom
1445                        );
1446 
1447       FETCH target_line
1448        INTO l_target_rentype;
1449 
1450       IF target_line%NOTFOUND
1451       THEN
1452          x_eligible_yn := 'N';
1453       ELSE
1454          ------------------------- Check Service Item Id ------------------------
1455          OPEN service_item (p_source_line_id);
1456 
1457          FETCH service_item
1458           INTO l_source_service_item_id;
1459 
1460          CLOSE service_item;
1461 
1462          OPEN service_item (p_target_line_id);
1463 
1464          FETCH service_item
1465           INTO l_target_service_item_id;
1466 
1467          CLOSE service_item;
1468 
1469          IF NVL (l_target_service_item_id, -99) =
1470                                            NVL (l_source_service_item_id,
1471                                                 -99)
1472          THEN
1473             x_eligible_yn := 'Y';
1474          END IF;
1475 
1476          -------------------------- Check  Coverage -----------------------------
1477          IF     x_eligible_yn = 'Y'
1478             AND fnd_profile.VALUE ('OKS_CHECK_COV_MATCH') = 'Y'
1479          THEN
1480             oks_coverages_pub.check_coverage_match
1481                               (p_api_version                  => l_api_version,
1482                                p_init_msg_list                => l_init_msg_list,
1483                                x_return_status                => l_return_status,
1484                                x_msg_count                    => x_msg_count,
1485                                x_msg_data                     => x_msg_data,
1486                                p_source_contract_line_id      => p_source_line_id,
1487                                p_target_contract_line_id      => p_target_line_id,
1488                                x_coverage_match               => x_eligible_yn
1489                               );
1490 
1491             IF l_return_status <> okc_api.g_ret_sts_success
1492             THEN
1493                CLOSE target_line;
1494 
1495                RAISE g_exception_halt_validation;
1496             END IF;
1497          END IF;
1498 
1499          -- Vigandhi 06/10/2004
1500          -- Remove the check for date completed for line merging.
1501          /*   --------------------- Check Date Completed -----------------------
1502             If x_eligible_yn = 'Y' Then
1503                 -- The billing is one time so we'll only have one level element.
1504                 Open get_date_complete(p_source_line_id);
1505                 Fetch get_date_complete into l_source_bill_completed;
1506                 Close get_date_complete;
1507 
1508                 Open get_date_complete(p_target_line_id);
1509                 Fetch get_date_complete into l_target_bill_completed;
1510                 Close get_date_complete;
1511 
1512                 If l_source_bill_completed is null and l_target_bill_completed is null then
1513                     x_eligible_yn := 'Y';
1514                 Elsif l_source_bill_completed is not null and l_target_bill_completed is not null
1515                     and  trunc(l_source_bill_completed) = trunc(l_target_bill_completed) then
1516                     x_eligible_yn := 'Y';
1517                 Else
1518                     x_eligible_yn := 'N';
1519                 End If;
1520 
1521             End If;        */
1522             --------------------- Check Sales Credit -----------------------
1523          IF x_eligible_yn = 'Y'
1524          THEN
1525             OPEN sales_credit_count_csr (p_source_line_id);
1526 
1527             FETCH sales_credit_count_csr
1528              INTO l_source_sales_count;
1529 
1530             CLOSE sales_credit_count_csr;
1531 
1532             OPEN sales_credit_count_csr (p_target_line_id);
1533 
1534             FETCH sales_credit_count_csr
1535              INTO l_target_sales_count;
1536 
1537             CLOSE sales_credit_count_csr;
1538 
1539             IF l_source_sales_count <> l_target_sales_count
1540             THEN
1541                x_eligible_yn := 'N';
1542             ELSE
1543                FOR sales_credit_rec IN sales_credit_csr (p_source_line_id)
1544                LOOP
1545                   OPEN target_sales_credit_csr
1546                                      (p_target_line_id,
1547                                       sales_credit_rec.PERCENT,
1548                                       sales_credit_rec.sales_credit_type_id1,
1549                                       sales_credit_rec.quota_flag,
1550                                       sales_credit_rec.sales_person_id,
1551                                       sales_credit_rec.sales_group_id
1552                                      );
1553 
1554                   FETCH target_sales_credit_csr
1555                    INTO l_target_sales_rec;
1556 
1557                   IF target_sales_credit_csr%NOTFOUND
1558                   THEN
1559                      x_eligible_yn := 'N';
1560 
1561                      CLOSE target_sales_credit_csr;
1562 
1563                      EXIT;
1564                   END IF;
1565 
1566                   CLOSE target_sales_credit_csr;
1567                END LOOP;
1568             END IF;            -- l_source_sales_count <> l_target_sales_count
1569          END IF;                                       --  x_eligible_yn = 'Y'
1570       --------------------- Check Sales Credit Finished -----------------------
1571       END IF;                                          -- target_line%NOTFOUND
1572 
1573       CLOSE target_line;
1574 
1575       x_return_status := l_return_status;
1576    EXCEPTION
1577       WHEN g_exception_halt_validation
1578       THEN
1579          x_return_status := l_return_status;
1580       WHEN OTHERS
1581       THEN
1582          x_return_status := okc_api.g_ret_sts_unexp_error;
1583          okc_api.set_message (g_app_name,
1584                               g_unexpected_error,
1585                               g_sqlcode_token,
1586                               SQLCODE,
1587                               g_sqlerrm_token,
1588                               SQLERRM
1589                              );
1590    END line_merge_yn;
1591 
1592    PROCEDURE check_line_effectivity (
1593       p_cle_id     IN              NUMBER,
1594       p_srv_sdt    IN              DATE,
1595       p_srv_edt    IN              DATE,
1596       x_line_sdt   OUT NOCOPY      DATE,
1597       x_line_edt   OUT NOCOPY      DATE,
1598       x_status     OUT NOCOPY      VARCHAR2
1599    )
1600    IS
1601       CURSOR l_line_csr
1602       IS
1603          SELECT start_date, end_date
1604            FROM okc_k_lines_b
1605           WHERE ID = p_cle_id;
1606 
1607       l_line_csr_rec   l_line_csr%ROWTYPE;
1608    BEGIN
1609       OPEN l_line_csr;
1610 
1611       FETCH l_line_csr
1612        INTO l_line_csr_rec;
1613 
1614       IF l_line_csr%FOUND
1615       THEN
1616          IF     p_srv_sdt >= l_line_csr_rec.start_date
1617             AND p_srv_edt <= l_line_csr_rec.end_date
1618          THEN
1619             x_status := 'N';
1620          ELSE
1621             IF p_srv_sdt >= l_line_csr_rec.start_date
1622             THEN
1623                x_line_sdt := l_line_csr_rec.start_date;
1624             ELSE
1625                x_line_sdt := p_srv_sdt;
1626             END IF;
1627 
1628             IF p_srv_edt >= l_line_csr_rec.end_date
1629             THEN
1630                x_line_edt := p_srv_edt;
1631             ELSE
1632                x_line_edt := l_line_csr_rec.end_date;
1633             END IF;
1634 
1635             x_status := 'Y';
1636          END IF;
1637       ELSE
1638          x_status := 'E';
1639       END IF;
1640    END;
1641 
1642    PROCEDURE update_line_dates (
1643       p_cle_id          IN              NUMBER,
1644       p_chr_id          IN              NUMBER,
1645       p_new_sdt         IN              DATE,
1646       p_new_edt         IN              DATE,
1647       p_sts_flag        IN              VARCHAR2,
1648       p_warranty_flag   IN              VARCHAR2,
1649       x_status          OUT NOCOPY      VARCHAR2,
1650       x_msg_count       OUT NOCOPY      NUMBER,
1651       x_msg_data        OUT NOCOPY      VARCHAR2
1652    )
1653    IS
1654       CURSOR l_rulegroup_csr
1655       IS
1656          SELECT inv_rule_id
1657            FROM okc_k_lines_b
1658           WHERE cle_id = p_cle_id AND dnz_chr_id = p_chr_id;
1659 
1660 --General
1661       l_api_version     CONSTANT NUMBER                         := 1.0;
1662       l_init_msg_list   CONSTANT VARCHAR2 (1)              := okc_api.g_false;
1663       l_return_status            VARCHAR2 (1)                   := 'S';
1664       l_index                    VARCHAR2 (2000);
1665 --Contract Line
1666       l_clev_tbl_in              okc_contract_pub.clev_tbl_type;
1667       l_clev_tbl_out             okc_contract_pub.clev_tbl_type;
1668       l_cleid                    NUMBER;
1669       l_rgp_id                   NUMBER;
1670       l_rule_id                  NUMBER;
1671       l_invoice_rule_id          NUMBER;
1672       l_ste_code                 VARCHAR2 (30);
1673       l_sts_code                 VARCHAR2 (30);
1674    BEGIN
1675       x_status := okc_api.g_ret_sts_success;
1676 
1677       IF p_sts_flag = 'Y'
1678       THEN
1679          IF p_new_sdt > SYSDATE
1680          THEN
1681             get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
1682             l_clev_tbl_in (1).sts_code := l_sts_code;
1683          ELSIF p_new_sdt <= SYSDATE AND p_new_edt >= SYSDATE
1684          THEN
1685             get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
1686             l_clev_tbl_in (1).sts_code := l_sts_code;
1687          ELSIF p_new_edt < SYSDATE
1688          THEN
1689             get_sts_code ('EXPIRED', NULL, l_ste_code, l_sts_code);
1690             l_clev_tbl_in (1).sts_code := l_sts_code;
1691          END IF;
1692       END IF;
1693 
1694       --Contract Header Date Update
1695       l_clev_tbl_in (1).ID := p_cle_id;
1696       l_clev_tbl_in (1).start_date := p_new_sdt;
1697       l_clev_tbl_in (1).end_date := p_new_edt;
1698       okc_contract_pub.update_contract_line
1699                                        (p_api_version            => l_api_version,
1700                                         p_init_msg_list          => l_init_msg_list,
1701                                         p_restricted_update      => okc_api.g_true,
1702                                         x_return_status          => l_return_status,
1703                                         x_msg_count              => x_msg_count,
1704                                         x_msg_data               => x_msg_data,
1705                                         p_clev_tbl               => l_clev_tbl_in,
1706                                         x_clev_tbl               => l_clev_tbl_out
1707                                        );
1708 
1709       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1710       THEN
1711          fnd_log.STRING
1712                  (fnd_log.level_event,
1713                   g_module_current || '.Update_Line_Dates.external_call.after',
1714                      'okc_contract_pub.update_contract_line(Return status = '
1715                   || l_return_status
1716                   || ')'
1717                  );
1718       END IF;
1719 
1720       IF l_return_status = 'S'
1721       THEN
1722          l_cleid := l_clev_tbl_out (1).ID;
1723       ELSE
1724          x_status := 'E';
1725          RAISE g_exception_halt_validation;
1726       END IF;
1727    EXCEPTION
1728       WHEN g_exception_halt_validation
1729       THEN
1730          NULL;
1731       WHEN OTHERS
1732       THEN
1733          x_status := okc_api.g_ret_sts_unexp_error;
1734          okc_api.set_message (g_app_name,
1735                               g_unexpected_error,
1736                               g_sqlcode_token,
1737                               SQLCODE,
1738                               g_sqlerrm_token,
1739                               SQLERRM
1740                              );
1741 
1742          IF fnd_log.level_exception >= fnd_log.g_current_runtime_level
1743          THEN
1744             fnd_log.STRING (fnd_log.level_exception,
1745                             g_module_current
1746                             || '.Update_Line_Dates.UNEXPECTED',
1747                             'sqlcode = ' || SQLCODE || ', sqlerrm = '
1748                             || SQLERRM
1749                            );
1750          END IF;
1751    END;
1752 
1753 /*-----------------------------------------------------------------
1754 -- warranty/Extwarranty consolidation
1755 -- P_rty_code new parameter
1756 ------------------------------------------------------------------*/
1757    PROCEDURE create_obj_rel (
1758       p_k_id            IN              NUMBER,
1759       p_line_id         IN              NUMBER,
1760       p_orderhdrid      IN              NUMBER,
1761       p_rty_code        IN              VARCHAR2,
1762       p_orderlineid     IN              NUMBER,
1763       x_return_status   OUT NOCOPY      VARCHAR2,
1764       x_msg_count       OUT NOCOPY      NUMBER,
1765       x_msg_data        OUT NOCOPY      VARCHAR2,
1766       x_crjv_tbl_out    OUT NOCOPY      okc_k_rel_objs_pub.crjv_tbl_type
1767    )
1768    IS
1769       l_api_version     CONSTANT NUMBER                           := 1.0;
1770       l_init_msg_list   CONSTANT VARCHAR2 (1)                     := 'F';
1771       l_return_status            VARCHAR2 (1)                     := 'S';
1772       l_crjv_tbl_in              okc_k_rel_objs_pub.crjv_tbl_type;
1773       l_crjv_tbl_out             okc_k_rel_objs_pub.crjv_tbl_type;
1774    BEGIN
1775       x_return_status := l_return_status;
1776 
1777       IF p_orderhdrid IS NOT NULL
1778       THEN
1779          l_crjv_tbl_in (1).chr_id := p_k_id;
1780          l_crjv_tbl_in (1).object1_id1 := p_orderhdrid;
1781          l_crjv_tbl_in (1).object1_id2 := '#';
1782          l_crjv_tbl_in (1).jtot_object1_code := 'OKX_ORDERHEAD';
1783          --l_crjv_tbl_in( 1 ).rty_code        := 'CONTRACTSERVICESORDER';
1784          l_crjv_tbl_in (1).rty_code := p_rty_code;
1785          okc_k_rel_objs_pub.create_row (p_api_version        => l_api_version,
1786                                         p_init_msg_list      => l_init_msg_list,
1787                                         x_return_status      => l_return_status,
1788                                         x_msg_count          => x_msg_count,
1789                                         x_msg_data           => x_msg_data,
1790                                         p_crjv_tbl           => l_crjv_tbl_in,
1791                                         x_crjv_tbl           => l_crjv_tbl_out
1792                                        );
1793 
1794          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1795          THEN
1796             fnd_log.STRING
1797                          (fnd_log.level_event,
1798                              g_module_current
1799                           || '.Create_Obj_Rel.external_call_hdr.after',
1800                              'okc_k_rel_objs_pub.create_row(Return status = '
1801                           || l_return_status
1802                           || ')'
1803                          );
1804          END IF;
1805 
1806          IF l_return_status = 'S'
1807          THEN
1808             x_crjv_tbl_out := l_crjv_tbl_out;
1809          ELSE
1810             x_return_status := l_return_status;
1811          END IF;
1812       ELSIF p_orderlineid IS NOT NULL
1813       THEN
1814          l_crjv_tbl_in (1).cle_id := p_line_id;
1815          l_crjv_tbl_in (1).chr_id := p_k_id;           -- Fix for Bug 2844603
1816          l_crjv_tbl_in (1).object1_id1 := p_orderlineid;
1817          l_crjv_tbl_in (1).object1_id2 := '#';
1818          l_crjv_tbl_in (1).jtot_object1_code := 'OKX_ORDERLINE';
1819          --l_crjv_tbl_in(1).rty_code          := 'CONTRACTSERVICESORDER';
1820          l_crjv_tbl_in (1).rty_code := p_rty_code;
1821          okc_k_rel_objs_pub.create_row (p_api_version        => l_api_version,
1822                                         p_init_msg_list      => l_init_msg_list,
1823                                         x_return_status      => l_return_status,
1824                                         x_msg_count          => x_msg_count,
1825                                         x_msg_data           => x_msg_data,
1826                                         p_crjv_tbl           => l_crjv_tbl_in,
1827                                         x_crjv_tbl           => l_crjv_tbl_out
1828                                        );
1829 
1830          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1831          THEN
1832             fnd_log.STRING
1833                          (fnd_log.level_event,
1834                              g_module_current
1835                           || '.Create_Obj_Rel.external_call_line.after',
1836                              'okc_k_rel_objs_pub.create_row(Return status = '
1837                           || l_return_status
1838                           || ')'
1839                          );
1840          END IF;
1841 
1842          IF l_return_status = 'S'
1843          THEN
1844             x_crjv_tbl_out := l_crjv_tbl_out;
1845          ELSE
1846             x_return_status := l_return_status;
1847          END IF;
1848       END IF;
1849    EXCEPTION
1850       WHEN OTHERS
1851       THEN
1852          x_return_status := okc_api.g_ret_sts_unexp_error;
1853          okc_api.set_message (g_app_name,
1854                               g_unexpected_error,
1855                               g_sqlcode_token,
1856                               SQLCODE,
1857                               g_sqlerrm_token,
1858                               SQLERRM
1859                              );
1860    END;
1861 
1862    PROCEDURE check_hdr_effectivity (
1863       p_chr_id    IN              NUMBER,
1864       p_srv_sdt   IN              DATE,
1865       p_srv_edt   IN              DATE,
1866       x_hdr_sdt   OUT NOCOPY      DATE,
1867       x_hdr_edt   OUT NOCOPY      DATE,
1868       x_status    OUT NOCOPY      VARCHAR2
1869    )
1870    IS
1871       CURSOR l_hdr_csr
1872       IS
1873          SELECT start_date, end_date
1874            FROM okc_k_headers_v
1875           WHERE ID = p_chr_id;
1876 
1877       l_hdr_csr_rec   l_hdr_csr%ROWTYPE;
1878    BEGIN
1879       OPEN l_hdr_csr;
1880 
1881       FETCH l_hdr_csr
1882        INTO l_hdr_csr_rec;
1883 
1884       IF l_hdr_csr%FOUND
1885       THEN
1886          IF     p_srv_sdt >= l_hdr_csr_rec.start_date
1887             AND p_srv_edt <= l_hdr_csr_rec.end_date
1888          THEN
1889             x_status := 'N';
1890          ELSE
1891             IF p_srv_sdt >= l_hdr_csr_rec.start_date
1892             THEN
1893                x_hdr_sdt := l_hdr_csr_rec.start_date;
1894             ELSE
1895                x_hdr_sdt := p_srv_sdt;
1896             END IF;
1897 
1898             IF p_srv_edt >= l_hdr_csr_rec.end_date
1899             THEN
1900                x_hdr_edt := p_srv_edt;
1901             ELSE
1902                x_hdr_edt := l_hdr_csr_rec.end_date;
1903             END IF;
1904 
1905             x_status := 'Y';
1906          END IF;
1907       ELSE
1908          x_status := 'E';
1909       END IF;
1910    END;
1911 
1912    PROCEDURE update_hdr_dates (
1913       p_chr_id      IN              NUMBER,
1914       p_new_sdt     IN              DATE,
1915       p_new_edt     IN              DATE,
1916       p_sts_flag    IN              VARCHAR2,
1917       x_status      OUT NOCOPY      VARCHAR2,
1918       x_msg_count   OUT NOCOPY      NUMBER,
1919       x_msg_data    OUT NOCOPY      VARCHAR2
1920    )
1921    IS
1922       --General
1923       l_api_version     CONSTANT NUMBER                         := 1.0;
1924       l_init_msg_list   CONSTANT VARCHAR2 (1)              := okc_api.g_false;
1925       l_return_status            VARCHAR2 (1)                   := 'S';
1926       l_index                    VARCHAR2 (2000);
1927       --Contract Header
1928       l_chrv_tbl_in              okc_contract_pub.chrv_tbl_type;
1929       l_chrv_tbl_out             okc_contract_pub.chrv_tbl_type;
1930       --Rule Related
1931       --l_rulv_tbl_in                 okc_rule_pub.rulv_tbl_type;
1932       --l_rulv_tbl_out                okc_rule_pub.rulv_tbl_type;
1933       --Time Value Related
1934       l_isev_ext_tbl_in          okc_time_pub.isev_ext_tbl_type;
1935       l_isev_ext_tbl_out         okc_time_pub.isev_ext_tbl_type;
1936       l_chrid                    NUMBER;
1937       l_timevalue_id             NUMBER;
1938       l_rgp_id                   NUMBER;
1939       l_rule_id                  NUMBER;
1940       l_ste_code                 VARCHAR2 (30);
1941       l_sts_code                 VARCHAR2 (30);
1942    BEGIN
1943       x_status := okc_api.g_ret_sts_success;
1944 
1945       IF p_sts_flag = 'Y'
1946       THEN
1947          IF p_new_sdt > SYSDATE
1948          THEN
1949             get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
1950             l_chrv_tbl_in (1).sts_code := l_sts_code;
1951          ELSIF p_new_sdt <= SYSDATE AND p_new_edt >= SYSDATE
1952          THEN
1953             get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
1954             l_chrv_tbl_in (1).sts_code := l_sts_code;
1955          ELSIF p_new_edt < SYSDATE
1956          THEN
1957             get_sts_code ('EXPIRED', NULL, l_ste_code, l_sts_code);
1958             l_chrv_tbl_in (1).sts_code := l_sts_code;
1959          END IF;
1960       END IF;
1961 
1962       --Contract Header Date Update
1963       l_chrv_tbl_in (1).ID := p_chr_id;
1964       l_chrv_tbl_in (1).start_date := p_new_sdt;
1965       l_chrv_tbl_in (1).end_date := p_new_edt;
1966       okc_contract_pub.update_contract_header
1967                                        (p_api_version            => l_api_version,
1968                                         p_init_msg_list          => l_init_msg_list,
1969                                         p_restricted_update      => okc_api.g_true,
1970                                         x_return_status          => l_return_status,
1971                                         x_msg_count              => x_msg_count,
1972                                         x_msg_data               => x_msg_data,
1973                                         p_chrv_tbl               => l_chrv_tbl_in,
1974                                         x_chrv_tbl               => l_chrv_tbl_out
1975                                        );
1976 
1977       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
1978       THEN
1979          fnd_log.STRING
1980                (fnd_log.level_event,
1981                 g_module_current || '.Update_Hdr_Dates.external_call.after',
1982                    'okc_contract_pub.update_contract_header(Return status = '
1983                 || l_return_status
1984                 || ')'
1985                );
1986       END IF;
1987 
1988       IF l_return_status = 'S'
1989       THEN
1990          l_chrid := l_chrv_tbl_out (1).ID;
1991       ELSE
1992          x_status := 'E';
1993          RAISE g_exception_halt_validation;
1994       --End If;
1995       END IF;
1996    EXCEPTION
1997       WHEN g_exception_halt_validation
1998       THEN
1999          NULL;
2000       WHEN OTHERS
2001       THEN
2002          x_status := okc_api.g_ret_sts_unexp_error;
2003          okc_api.set_message (g_app_name,
2004                               g_unexpected_error,
2005                               g_sqlcode_token,
2006                               SQLCODE,
2007                               g_sqlerrm_token,
2008                               SQLERRM
2009                              );
2010    END;
2011 
2012    FUNCTION get_contract_number (p_hdrid IN NUMBER)
2013       RETURN VARCHAR2
2014    IS
2015       CURSOR l_hdr_csr
2016       IS
2017          SELECT contract_number
2018            FROM okc_k_headers_v
2019           WHERE ID = p_hdrid;
2020 
2021       l_contract_number   VARCHAR2 (120);
2022    BEGIN
2023       OPEN l_hdr_csr;
2024 
2025       FETCH l_hdr_csr
2026        INTO l_contract_number;
2027 
2028       CLOSE l_hdr_csr;
2029 
2030       RETURN l_contract_number;
2031    END;
2032 
2033    PROCEDURE launch_workflow (p_msg IN VARCHAR2)
2034    IS
2035 --Workflow attributes
2036       l_itemtype      VARCHAR2 (40)  := 'OKSWARWF';
2037       l_itemkey       VARCHAR2 (240)
2038                            := 'OKS-' || TO_CHAR (SYSDATE, 'MMDDYYYYHH24MISS');
2039       l_process       VARCHAR2 (40)  := 'OKSWARPROC';
2040       l_notify        VARCHAR2 (10)  := 'Y';
2041       l_receiver      VARCHAR2 (30);
2042       l_itemkey_seq   INTEGER;
2043    BEGIN
2044       l_notify := NVL (fnd_profile.VALUE ('OKS_INTEGRATION_NOTIFY_YN'), 'NO');
2045       l_receiver :=
2046             NVL (fnd_profile.VALUE ('OKS_INTEGRATION_NOTIFY_TO'), 'SYSADMIN');
2047 
2048       IF UPPER (l_notify) = 'YES'
2049       THEN
2050          SELECT oks_wf_item_key_number_s1.NEXTVAL
2051            INTO l_itemkey_seq
2052            FROM DUAL;
2053 
2054          l_itemkey := 'OKS-' || l_itemkey_seq;
2055          wf_engine.createprocess (itemtype      => l_itemtype,
2056                                   itemkey       => l_itemkey,
2057                                   process       => l_process
2058                                  );
2059          wf_engine.setitemattrtext (itemtype      => l_itemtype,
2060                                     itemkey       => l_itemkey,
2061                                     aname         => 'MSG_TXT',
2062                                     avalue        => p_msg
2063                                    );
2064          wf_engine.setitemattrtext (itemtype      => l_itemtype,
2065                                     itemkey       => l_itemkey,
2066                                     aname         => 'MSG_RECV',
2067                                     avalue        => l_receiver
2068                                    );
2069          wf_engine.startprocess (itemtype      => l_itemtype,
2070                                  itemkey       => l_itemkey);
2071       END IF;
2072    END;
2073 
2074    PROCEDURE update_cov_level (
2075       p_covered_line_id      IN              NUMBER,
2076       p_new_end_date         IN              DATE,
2077       p_k_item_id            IN              NUMBER,
2078       p_new_negotiated_amt   IN              NUMBER,
2079       p_new_cp_qty           IN              NUMBER,
2080       p_list_price           IN              NUMBER,
2081       x_return_status        OUT NOCOPY      VARCHAR2,
2082       x_msg_count            OUT NOCOPY      NUMBER,
2083       x_msg_data             OUT NOCOPY      VARCHAR2
2084    )
2085    IS
2086       CURSOR l_parent_line_csr
2087       IS
2088          SELECT cle_id
2089            FROM okc_k_lines_b
2090           WHERE ID = p_covered_line_id;
2091 
2092       l_api_version     CONSTANT NUMBER                              := 1.0;
2093       l_init_msg_list   CONSTANT VARCHAR2 (1)              := okc_api.g_false;
2094       l_return_status            VARCHAR2 (1)                        := 'S';
2095       l_index                    VARCHAR2 (2000);
2096       --Contract Line Table
2097       l_clev_tbl_in              okc_contract_pub.clev_tbl_type;
2098       l_clev_tbl_out             okc_contract_pub.clev_tbl_type;
2099       --Contract Item
2100       l_cimv_tbl_in              okc_contract_item_pub.cimv_tbl_type;
2101       l_cimv_tbl_out             okc_contract_item_pub.cimv_tbl_type;
2102       l_parent_line_id           NUMBER;
2103       l_line_id                  NUMBER;
2104       l_line_item_id             NUMBER;
2105    BEGIN
2106       IF p_new_end_date IS NOT NULL
2107       THEN
2108          x_return_status := okc_api.g_ret_sts_success;
2109          l_clev_tbl_in (1).ID := p_covered_line_id;
2110          l_clev_tbl_in (1).end_date := p_new_end_date;
2111          okc_contract_pub.update_contract_line
2112                                       (p_api_version            => l_api_version,
2113                                        p_init_msg_list          => l_init_msg_list,
2114                                        p_restricted_update      => okc_api.g_true,
2115                                        x_return_status          => l_return_status,
2116                                        x_msg_count              => x_msg_count,
2117                                        x_msg_data               => x_msg_data,
2118                                        p_clev_tbl               => l_clev_tbl_in,
2119                                        x_clev_tbl               => l_clev_tbl_out
2120                                       );
2121 
2122          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2123          THEN
2124             fnd_log.STRING
2125                  (fnd_log.level_event,
2126                      g_module_current
2127                   || '.update_contract_line.external_call.after',
2128                      'okc_contract_pub.update_contract_line(Return status = '
2129                   || l_return_status
2130                   || ')'
2131                  );
2132          END IF;
2133 
2134          IF l_return_status <> 'S'
2135          THEN
2136             okc_api.set_message (g_app_name,
2137                                  g_required_value,
2138                                  g_col_name_token,
2139                                  'Contract Line Update(UPDATE SUB LINE)'
2140                                 );
2141             RAISE g_exception_halt_validation;
2142          END IF;
2143       END IF;
2144 
2145       IF p_new_negotiated_amt IS NOT NULL
2146       THEN
2147          x_return_status := okc_api.g_ret_sts_success;
2148          l_clev_tbl_in (1).ID := p_covered_line_id;
2149          l_clev_tbl_in (1).price_negotiated := p_new_negotiated_amt;
2150          l_clev_tbl_in (1).price_unit := p_list_price;
2151          okc_contract_pub.update_contract_line
2152                                       (p_api_version            => l_api_version,
2153                                        p_init_msg_list          => l_init_msg_list,
2154                                        p_restricted_update      => okc_api.g_true,
2155                                        x_return_status          => l_return_status,
2156                                        x_msg_count              => x_msg_count,
2157                                        x_msg_data               => x_msg_data,
2158                                        p_clev_tbl               => l_clev_tbl_in,
2159                                        x_clev_tbl               => l_clev_tbl_out
2160                                       );
2161 
2162          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2163          THEN
2164             fnd_log.STRING
2165                  (fnd_log.level_event,
2166                   g_module_current || '.Update_Cov_level.external_call.after',
2167                      'okc_contract_pub.update_contract_line(Return status = '
2168                   || l_return_status
2169                   || ')'
2170                  );
2171          END IF;
2172 
2173          IF l_return_status = 'S'
2174          THEN
2175             l_line_id := l_clev_tbl_out (1).ID;
2176          ELSE
2177             RAISE g_exception_halt_validation;
2178          END IF;
2179       END IF;
2180 
2181       IF p_new_cp_qty IS NOT NULL
2182       THEN
2183          l_cimv_tbl_in (1).ID := p_k_item_id;
2184          l_cimv_tbl_in (1).number_of_items := p_new_cp_qty;
2185          okc_contract_item_pub.update_contract_item
2186                                          (p_api_version        => l_api_version,
2187                                           p_init_msg_list      => l_init_msg_list,
2188                                           x_return_status      => l_return_status,
2189                                           x_msg_count          => x_msg_count,
2190                                           x_msg_data           => x_msg_data,
2191                                           p_cimv_tbl           => l_cimv_tbl_in,
2192                                           x_cimv_tbl           => l_cimv_tbl_out
2193                                          );
2194 
2195          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2196          THEN
2197             fnd_log.STRING
2198                (fnd_log.level_event,
2199                 g_module_current || '.Update_Cov_level.external_call.after',
2200                    'okc_contract_item_pub.update_contract_item(Return status = '
2201                 || l_return_status
2202                 || ')'
2203                );
2204          END IF;
2205 
2206          IF l_return_status = 'S'
2207          THEN
2208             l_line_item_id := l_cimv_tbl_out (1).ID;
2209          ELSE
2210             RAISE g_exception_halt_validation;
2211          END IF;
2212       END IF;
2213    EXCEPTION
2214       WHEN g_exception_halt_validation
2215       THEN
2216          x_return_status := l_return_status;
2217          NULL;
2218       WHEN OTHERS
2219       THEN
2220          x_return_status := okc_api.g_ret_sts_unexp_error;
2221          okc_api.set_message (g_app_name,
2222                               g_unexpected_error,
2223                               g_sqlcode_token,
2224                               SQLCODE,
2225                               g_sqlerrm_token,
2226                               SQLERRM
2227                              );
2228    END;
2229 
2230 /***************************************************************************
2231 
2232             PROCEDURE CREATE_K_HDR
2233            Creates the Contract Header
2234 
2235 ***************************************************************************/
2236    PROCEDURE create_k_hdr (
2237       p_k_header_rec         IN              k_header_rec_type,
2238       p_contact_tbl          IN              contact_tbl,
2239       p_salescredit_tbl_in   IN              salescredit_tbl,
2240       --mmadhavi for bug 4174921
2241       p_caller               IN              VARCHAR2,
2242       x_order_error          OUT NOCOPY      VARCHAR2,
2243       x_chr_id               OUT NOCOPY      NUMBER,
2244       x_return_status        OUT NOCOPY      VARCHAR2,
2245       x_msg_count            OUT NOCOPY      NUMBER,
2246       x_msg_data             OUT NOCOPY      VARCHAR2
2247    )
2248    IS
2249       --Third party id
2250       CURSOR l_thirdparty_csr (p_id NUMBER)
2251       IS
2252          SELECT ca.party_id
2253            FROM okx_customer_accounts_v ca, okx_cust_site_uses_v cs
2254           WHERE ca.id1 = cs.cust_account_id AND cs.id1 = p_id;
2255 
2256       --party id
2257       CURSOR l_cust_csr (p_contactid NUMBER)
2258       IS
2259          SELECT party_id
2260            FROM okx_cust_contacts_v
2261           WHERE id1 = p_contactid AND id2 = '#';
2262 
2263       CURSOR l_ra_hcontacts_cur (p_contact_id NUMBER)
2264       IS
2265          SELECT hzr.object_id                                  --, subject_id
2266                              ,
2267                 hzr.party_id
2268            --NPALEPU
2269                      --18-JUN-2005,09-AUG-2005
2270                      --TCA Project
2271                      --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
2272                      --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
2273                     /* FROM ra_hcontacts rah, hz_party_relationships hzr
2274                        WHERE rah.contact_id = p_contact_id
2275                        AND rah.party_relationship_id = hzr.party_relationship_id;*/
2276          FROM   oks_ra_hcontacts_v rah, hz_relationships hzr
2277           WHERE rah.contact_id = p_contact_id
2278             AND rah.party_relationship_id = hzr.relationship_id
2279             AND hzr.subject_table_name = 'HZ_PARTIES'
2280             AND hzr.object_table_name = 'HZ_PARTIES'
2281             AND hzr.directional_flag = 'F';
2282 
2283       --END NPALEPU
2284 
2285       --status code
2286       CURSOR l_sts_csr (p_chr_id NUMBER)
2287       IS
2288          SELECT ste_code
2289            FROM okc_statuses_b, okc_k_headers_v kh
2290           WHERE code = kh.sts_code AND kh.ID = p_chr_id;
2291 
2292       --Check for vendor object_code
2293       CURSOR object_code_csr (p_code VARCHAR2)
2294       IS
2295          SELECT 'x'
2296            FROM okc_contact_sources_v
2297           WHERE cro_code = p_code
2298             AND buy_or_sell = 'S'
2299             AND rle_code = 'VENDOR'
2300             AND jtot_object_code = 'OKX_SALEPERS';
2301 
2302         /*spingali - bugfix for bug12747411*/
2303            CURSOR get_k_auth_org(p_k_id NUMBER)IS
2304            SELECT authoring_org_id
2305            FROM okc_k_headers_all_b
2306            WHERE id=p_k_id;
2307            l_auth_org_id                  NUMBER;
2308            l_okc_org_id                   NUMBER;
2309         /*spingali end of bugfix for bug12747411*/
2310 
2311       -- Contact address
2312       CURSOR address_cur_new (p_contact_id NUMBER)
2313       IS
2314          SELECT a.id1
2315            FROM okx_cust_sites_v a, okx_cust_contacts_v b
2316           WHERE b.id1 = p_contact_id
2317             AND a.id1 = b.cust_acct_site_id
2318             AND a.org_id = okc_context.get_okc_org_id;
2319 
2320       -- party contact id
2321       CURSOR party_cont_cur (p_contact_id NUMBER)
2322       IS
2323          SELECT hzr.party_id
2324            --NPALEPU
2325                      --18-JUN-2005,09-AUG-2005
2326                      --TCA Project
2327                      --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
2328                      --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
2329                       /* FROM ra_hcontacts rah,
2330                             hz_party_relationships hzr
2331                          WHERE rah.contact_id  = p_contact_id
2332                          AND rah.party_relationship_id = hzr.party_relationship_id;*/
2333          FROM   oks_ra_hcontacts_v rah, hz_relationships hzr
2334           WHERE rah.contact_id = p_contact_id
2335             AND rah.party_relationship_id = hzr.relationship_id
2336             AND hzr.subject_table_name = 'HZ_PARTIES'
2337             AND hzr.object_table_name = 'HZ_PARTIES'
2338             AND hzr.directional_flag = 'F';
2339 
2340       --END NPALEPU
2341 
2342       -- Primary e-mail address
2343       CURSOR email_cur_new (p_party_id NUMBER)
2344       IS
2345          SELECT contact_point_id
2346            FROM okx_contact_points_v
2347           WHERE contact_point_type = 'EMAIL'
2348             AND primary_flag = 'Y'
2349             AND owner_table_id = p_party_id;
2350 
2351       -- Primary telephone number
2352       CURSOR phone_cur_new (p_party_id NUMBER)
2353       IS
2354          SELECT contact_point_id
2355            FROM hz_contact_points
2356           WHERE contact_point_type = 'PHONE'
2357             AND NVL (phone_line_type, 'GEN') = 'GEN'
2358             AND primary_flag = 'Y'
2359             AND owner_table_id = p_party_id;
2360 
2361       -- Any one fax number
2362       CURSOR fax_cur_new (p_party_id NUMBER)
2363       IS
2364          SELECT contact_point_id
2365            FROM hz_contact_points
2366           WHERE contact_point_type = 'PHONE'
2367             AND phone_line_type = 'FAX'
2368             AND owner_table_id = p_party_id;
2369 
2370       CURSOR l_salesgrp_csr (p_id NUMBER, p_start_date DATE, p_end_date DATE)
2371       IS
2372          SELECT GROUP_ID
2373            FROM jtf_rs_srp_groups
2374           WHERE salesrep_id = p_id
2375             AND org_id = okc_context.get_okc_org_id
2376             AND p_start_date BETWEEN start_date AND end_date
2377             AND p_end_date BETWEEN start_date AND end_date;
2378 
2379       CURSOR l_bookdt_csr (p_ord_hdrid NUMBER)
2380       IS
2381          SELECT booked_date, order_firmed_date
2382            FROM oe_order_headers_all
2383           WHERE header_id = p_ord_hdrid;
2384 
2385       --Territory changes
2386       CURSOR resource_details (p_resource_id NUMBER)
2387       IS
2388          SELECT fu.user_id
2389            FROM jtf_rs_defresources_vl jrd, fnd_user fu
2390           WHERE jrd.resource_id = p_resource_id AND fu.user_id = jrd.user_id;
2391 
2392       CURSOR l_salesrep_csr (p_res_id NUMBER, p_org_id NUMBER)
2393       IS
2394          SELECT salesrep_id
2395            FROM jtf_rs_salesreps
2396           WHERE resource_id = p_res_id AND org_id = p_org_id;
2397 
2398       l_salesgroup_id            NUMBER;
2399       l_rah_party_id             NUMBER;
2400       l_rah_hdr_object1_id1      NUMBER;
2401       l_thirdparty_id            NUMBER;
2402       l_thirdparty_role          VARCHAR2 (30);
2403       l_api_version     CONSTANT NUMBER                                 := 1.0;
2404       l_init_msg_list   CONSTANT VARCHAR2 (1)               := okc_api.g_false;
2405       l_return_status            VARCHAR2 (1)                           := 'S';
2406       l_index                    VARCHAR2 (2000);
2407       i                          NUMBER;
2408       --Contract Header
2409       l_chrv_tbl_in              okc_contract_pub.chrv_tbl_type;
2410       l_chrv_tbl_out             okc_contract_pub.chrv_tbl_type;
2411       l_khrv_tbl_in              oks_khr_pvt.khrv_tbl_type;
2412       l_khrv_tbl_out             oks_khr_pvt.khrv_tbl_type;
2413       --SalesCredit
2414       l_scrv_tbl_in              oks_sales_credit_pub.scrv_tbl_type;
2415       l_scrv_tbl_out             oks_sales_credit_pub.scrv_tbl_type;
2416       --Contract Groupings
2417       l_cgcv_tbl_in              okc_contract_group_pub.cgcv_tbl_type;
2418       l_cgcv_tbl_out             okc_contract_group_pub.cgcv_tbl_type;
2419       --Contacts
2420       l_ctcv_tbl_in              okc_contract_party_pub.ctcv_tbl_type;
2421       l_ctcv_tbl_out             okc_contract_party_pub.ctcv_tbl_type;
2422       --Agreements/Governance
2423       l_gvev_tbl_in              okc_contract_pub.gvev_tbl_type;
2424       l_gvev_tbl_out             okc_contract_pub.gvev_tbl_type;
2425       --Time Value Related
2426       l_isev_ext_tbl_in          okc_time_pub.isev_ext_tbl_type;
2427       l_isev_ext_tbl_out         okc_time_pub.isev_ext_tbl_type;
2428       --Approval WorkFlow
2429       l_cpsv_tbl_in              okc_contract_pub.cpsv_tbl_type;
2430       l_cpsv_tbl_out             okc_contract_pub.cpsv_tbl_type;
2431       --REL OBJS
2432       l_crjv_tbl_out             okc_k_rel_objs_pub.crjv_tbl_type;
2433       --Return IDs
2434       l_chrid                    NUMBER;
2435       l_partyid                  NUMBER;
2436       l_partyid_v                NUMBER;
2437       l_partyid_t                NUMBER;
2438       l_add2partyid              NUMBER;
2439       l_rule_group_id            NUMBER;
2440       l_rule_id                  NUMBER;
2441       l_govern_id                NUMBER;
2442       l_time_value_id            NUMBER;
2443       l_contact_id               NUMBER;
2444       l_grpid                    NUMBER;
2445       l_pdfid                    NUMBER;
2446       l_ctrgrp                   NUMBER;
2447       l_cust_partyid             NUMBER;
2448       l_findparty_id             NUMBER;
2449       l_hdr_contactid            NUMBER;
2450       l_sts_code                 VARCHAR2 (30);
2451       l_ste_code                 VARCHAR2 (30);
2452       --l_object_code               VARCHAR2( 200 );
2453       l_temp                     VARCHAR2 (1);
2454       l_email_id                 NUMBER;
2455       l_phone_id                 NUMBER;
2456       l_fax_id                   NUMBER;
2457       l_site_id                  NUMBER;
2458       l_msg_data                 VARCHAR2 (2000);
2459       l_ind                      NUMBER;
2460       l_book_dt                  DATE;
2461       l_ord_firmed_date          DATE;
2462       l_party_contact            NUMBER;
2463       l_salescredit_id           NUMBER;
2464       j                          NUMBER;
2465       -- Territory changes
2466       l_counter                  NUMBER;
2467       l_user_id                  NUMBER;
2468       l_count                    NUMBER;
2469       l_party_name               VARCHAR2 (360);
2470       l_country_code             VARCHAR2 (60);
2471       l_state_code               VARCHAR2 (120);
2472       l_gen_bulk_rec             jtf_terr_assign_pub.bulk_trans_rec_type;
2473       l_gen_return_rec           jtf_terr_assign_pub.bulk_winners_rec_type;
2474       l_use_type                 VARCHAR2 (30);
2475       l_msg_count                NUMBER;
2476       l_derived_res_id           NUMBER;
2477       l_resource_id              NUMBER;
2478       l_salesrep_id              NUMBER;
2479       l_new_org_id               NUMBER;
2480       l_entity_id		 NUMBER;
2481    BEGIN
2482       x_return_status := okc_api.g_ret_sts_success;
2483 
2484       IF fnd_log.level_procedure >= fnd_log.g_current_runtime_level
2485       THEN
2486          fnd_log.STRING (fnd_log.level_procedure,
2487                          g_module_current || '.Create_K_Hdr.begin',
2488                             'Merge Type = '
2489                          || p_k_header_rec.merge_type
2490                          || 'Merge Id'
2491                          || p_k_header_rec.merge_object_id
2492                         );
2493       END IF;
2494 
2495       IF p_k_header_rec.merge_type = 'NEW'
2496       THEN
2497          l_chrid := NULL;
2498       ELSIF p_k_header_rec.merge_type = 'LTC'
2499       THEN
2500          l_chrid := p_k_header_rec.merge_object_id;
2501       ELSIF p_k_header_rec.merge_type IS NOT NULL
2502       THEN
2503          l_chrid :=
2504             get_k_hdr_id (p_type           => p_k_header_rec.merge_type,
2505                           p_object_id      => p_k_header_rec.merge_object_id,
2506                           p_enddate        => p_k_header_rec.end_date
2507                          );
2508       END IF;
2509 
2510       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2511       THEN
2512          fnd_log.STRING (fnd_log.level_statement,
2513                          g_module_current || '.Create_K_Hdr',
2514                          'Chr id = ' || l_chrid
2515                         );
2516       END IF;
2517 
2518       IF l_chrid IS NOT NULL
2519       THEN
2520          OPEN l_sts_csr (l_chrid);
2521 
2522          FETCH l_sts_csr
2523           INTO l_sts_code;
2524 
2525          CLOSE l_sts_csr;
2526 
2527          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2528          THEN
2529             fnd_log.STRING (fnd_log.level_statement,
2530                             g_module_current || '.Create_K_Hdr',
2531                             'Status code = ' || l_sts_code
2532                            );
2533          END IF;
2534 
2535          IF l_sts_code NOT IN ('TERMINATED', 'CANCELLED')
2536          THEN                                               -- Removed EXPIRED
2537             IF l_sts_code = 'EXPIRED'
2538             THEN
2539                get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
2540 
2541                UPDATE okc_k_headers_b
2542                   SET sts_code = l_sts_code
2543                 WHERE ID = l_chrid;
2544                      /*bugfix for 6882512*/
2545  	                 /* Updating the status in okc_contacts table.*/
2546  	                  OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_chrid,
2547  	                                               x_return_status=>l_return_status);
2548 
2549  	                  IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
2550  	                       RAISE g_exception_halt_validation;
2551  	                  END IF;
2552             END IF;
2553                    /*bugfix for 6882512*/
2554             x_chr_id := l_chrid;
2555             l_return_status := okc_api.g_ret_sts_success;
2556             RAISE g_exception_halt_validation;
2557          END IF;
2558       END IF;
2559 
2560       get_sts_code (NULL, p_k_header_rec.sts_code, l_ste_code, l_sts_code);
2561 
2562       -------Fix for Bug 2707303
2563       IF NVL (l_ste_code, 'ENTERED') IN ('ACTIVE', 'SIGNED')
2564       THEN
2565          l_book_dt := NULL;
2566 
2567          IF p_k_header_rec.order_hdr_id IS NOT NULL
2568          THEN
2569             OPEN l_bookdt_csr (p_k_header_rec.order_hdr_id);
2570 
2571             FETCH l_bookdt_csr
2572              INTO l_book_dt, l_ord_firmed_date;
2573 
2574             CLOSE l_bookdt_csr;
2575          END IF;
2576 
2577          l_chrv_tbl_in (1).date_signed :=
2578             NVL (NVL (l_ord_firmed_date, l_book_dt),
2579                  p_k_header_rec.start_date);
2580          l_chrv_tbl_in (1).date_approved :=
2581             NVL (NVL (l_ord_firmed_date, l_book_dt),
2582                  p_k_header_rec.start_date);
2583       ELSE
2584          l_chrv_tbl_in (1).date_signed := NULL;
2585          l_chrv_tbl_in (1).date_approved := NULL;
2586       END IF;
2587 
2588       IF p_k_header_rec.cust_po_number IS NOT NULL
2589       THEN
2590          l_chrv_tbl_in (1).cust_po_number_req_yn := 'Y';
2591       ELSE
2592          l_chrv_tbl_in (1).cust_po_number_req_yn := 'N';
2593       END IF;
2594 
2595       -- rules seeded by okc
2596       l_chrv_tbl_in (1).price_list_id := p_k_header_rec.price_list_id;   --PRE
2597       l_chrv_tbl_in (1).payment_term_id := p_k_header_rec.payment_term_id;
2598       --PTR
2599       l_chrv_tbl_in (1).conversion_type := p_k_header_rec.cvn_type;      --CVN
2600       l_chrv_tbl_in (1).conversion_rate := p_k_header_rec.cvn_rate;      --CVN
2601       l_chrv_tbl_in (1).conversion_rate_date := p_k_header_rec.cvn_date; --CVN
2602       l_chrv_tbl_in (1).conversion_euro_rate := p_k_header_rec.cvn_euro_rate;
2603       --CVN
2604       l_chrv_tbl_in (1).billed_at_source := p_k_header_rec.billed_at_source;
2605       --IMP
2606 
2607       l_chrv_tbl_in (1).bill_to_site_use_id := p_k_header_rec.bill_to_id;
2608       --BTO
2609       l_chrv_tbl_in (1).ship_to_site_use_id := p_k_header_rec.ship_to_id;
2610       --STO
2611       l_chrv_tbl_in (1).inv_rule_id := p_k_header_rec.invoice_rule_id;   --IRE
2612 
2613       IF p_k_header_rec.renewal_type IS NOT NULL
2614       THEN                                                               --REN
2615          l_chrv_tbl_in (1).renewal_type_code := p_k_header_rec.renewal_type;
2616          l_chrv_tbl_in (1).APPROVAL_TYPE := p_k_header_rec.RENEWAL_APPROVAL_FLAG;  --Bug# 5173373
2617       END IF;
2618 
2619       l_chrv_tbl_in (1).sfwt_flag := 'N';
2620       l_chrv_tbl_in (1).contract_number := p_k_header_rec.contract_number;
2621       l_chrv_tbl_in (1).sts_code := p_k_header_rec.sts_code;
2622       l_chrv_tbl_in (1).scs_code := NVL (p_k_header_rec.scs_code, 'WARRANTY');
2623       l_chrv_tbl_in (1).authoring_org_id := p_k_header_rec.authoring_org_id;
2624       l_chrv_tbl_in (1).inv_organization_id :=
2625          NVL (p_k_header_rec.inv_organization_id,
2626               okc_context.get_okc_organization_id
2627              );
2628       l_chrv_tbl_in (1).pre_pay_req_yn := 'N';
2629       l_chrv_tbl_in (1).cust_po_number := p_k_header_rec.cust_po_number;
2630       l_chrv_tbl_in (1).qcl_id := p_k_header_rec.qcl_id;
2631       l_chrv_tbl_in (1).short_description :=
2632           NVL (p_k_header_rec.short_description, 'Warranty/Extended Warranty');
2633       l_chrv_tbl_in (1).template_yn := 'N';
2634       l_chrv_tbl_in (1).start_date := p_k_header_rec.start_date;
2635       l_chrv_tbl_in (1).end_date := p_k_header_rec.end_date;
2636       l_chrv_tbl_in (1).chr_type := okc_api.g_miss_char;
2637       l_chrv_tbl_in (1).archived_yn := 'N';
2638       l_chrv_tbl_in (1).deleted_yn := 'N';
2639       l_chrv_tbl_in (1).created_by := okc_api.g_miss_num;
2640       l_chrv_tbl_in (1).creation_date := okc_api.g_miss_date;
2641       l_chrv_tbl_in (1).currency_code := p_k_header_rec.currency;
2642       l_chrv_tbl_in (1).buy_or_sell := 'S';
2643       l_chrv_tbl_in (1).issue_or_receive := 'I';
2644       l_chrv_tbl_in (1).attribute1 := p_k_header_rec.attribute1;
2645       l_chrv_tbl_in (1).attribute2 := p_k_header_rec.attribute2;
2646       l_chrv_tbl_in (1).attribute3 := p_k_header_rec.attribute3;
2647       l_chrv_tbl_in (1).attribute4 := p_k_header_rec.attribute4;
2648       l_chrv_tbl_in (1).attribute5 := p_k_header_rec.attribute5;
2649       l_chrv_tbl_in (1).attribute6 := p_k_header_rec.attribute6;
2650       l_chrv_tbl_in (1).attribute7 := p_k_header_rec.attribute7;
2651       l_chrv_tbl_in (1).attribute8 := p_k_header_rec.attribute8;
2652       l_chrv_tbl_in (1).attribute9 := p_k_header_rec.attribute9;
2653       l_chrv_tbl_in (1).attribute10 := p_k_header_rec.attribute10;
2654       l_chrv_tbl_in (1).attribute11 := p_k_header_rec.attribute11;
2655       l_chrv_tbl_in (1).attribute12 := p_k_header_rec.attribute12;
2656       l_chrv_tbl_in (1).attribute13 := p_k_header_rec.attribute13;
2657       l_chrv_tbl_in (1).attribute14 := p_k_header_rec.attribute14;
2658       l_chrv_tbl_in (1).attribute15 := p_k_header_rec.attribute15;
2659 
2660       IF p_k_header_rec.merge_type = 'RENEW'
2661       THEN
2662          l_chrv_tbl_in (1).attribute1 := p_k_header_rec.merge_object_id;
2663       END IF;
2664 
2665       okc_contract_pub.create_contract_header
2666                                           (p_api_version        => l_api_version,
2667                                            p_init_msg_list      => l_init_msg_list,
2668                                            x_return_status      => l_return_status,
2669                                            x_msg_count          => x_msg_count,
2670                                            x_msg_data           => x_msg_data,
2671                                            p_chrv_tbl           => l_chrv_tbl_in,
2672                                            x_chrv_tbl           => l_chrv_tbl_out
2673                                           );
2674 
2675       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2676       THEN
2677          fnd_log.STRING
2678                (fnd_log.level_event,
2679                 g_module_current || '.Create_K_Hdr.external_call.after',
2680                    'okc_contract_pub.create_contract_header(Return Status = '
2681                 || l_return_status
2682                 || ')'
2683                );
2684       END IF;
2685 
2686       IF l_return_status = 'S'
2687       THEN
2688          l_chrid := l_chrv_tbl_out (1).ID;
2689       ELSE
2690          --mmadhavi
2691          IF (p_caller = 'OC')
2692          THEN
2693             x_order_error := '#';
2694 
2695             FOR i IN 1 .. fnd_msg_pub.count_msg
2696             LOOP
2697                fnd_msg_pub.get (p_msg_index          => i,
2698                                 p_encoded            => 'T',
2699                                 p_data               => l_msg_data,
2700                                 p_msg_index_out      => l_ind
2701                                );
2702                x_order_error := x_order_error || l_msg_data || '#';
2703 
2704                IF (g_fnd_log_option = 'Y')
2705                THEN
2706                   fnd_message.set_encoded (l_msg_data);
2707                   l_msg_data := fnd_message.get;
2708                   fnd_file.put_line
2709                              (fnd_file.LOG,
2710                                  '(okc_contract_pub).create_contract_header '
2711                               || l_msg_data
2712                              );
2713                END IF;
2714             END LOOP;
2715 
2716             RAISE g_exception_halt_validation;
2717          ELSE
2718             --mmadhavi
2719             okc_api.set_message (g_app_name,
2720                                  g_required_value,
2721                                  g_col_name_token,
2722                                  'HEADER (HEADER)'
2723                                 );
2724          END IF;
2725 
2726          RAISE g_exception_halt_validation;
2727       END IF;
2728 
2729 
2730       -- Get the transaction extension id for the contract header
2731       IF p_k_header_rec.order_hdr_id IS NOT NULL THEN
2732          get_cc_trxn_extn (
2733             p_order_header_id  => p_k_header_rec.order_hdr_id,
2734             p_order_line_id    => NULL,
2735             p_context_level    => G_CONTEXT_ORDER_HEADER,
2736             p_contract_hdr_id  => l_chrid,
2737             p_contract_line_id => NULL,
2738             x_entity_id        => l_entity_id,
2739             x_return_status    => l_return_status );
2740 
2741          IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
2742             -- Populate the oks header record with the trxn_extension_id
2743             l_khrv_tbl_in (1).trxn_extension_id := l_entity_id;
2744             IF l_entity_id IS NOT NULL THEN
2745                l_khrv_tbl_in (1).payment_type := 'CCR';  -- Credit Card
2746             END IF;
2747          ELSE
2748             FOR i IN 1 .. fnd_msg_pub.count_msg
2749             LOOP
2750                fnd_msg_pub.get (p_msg_index          => i,
2751                                 p_encoded            => 'T',
2752                                 p_data               => l_msg_data,
2753                                 p_msg_index_out      => l_ind
2754                                );
2755 
2756                IF (g_fnd_log_option = 'Y') THEN
2757                   fnd_message.set_encoded (l_msg_data);
2758                   l_msg_data := fnd_message.get;
2759                   fnd_file.put_line
2760                              (fnd_file.LOG,
2761                                  'get_cc_trxn for header'
2762                               || l_msg_data
2763                              );
2764                END IF;
2765             END LOOP;
2766             RAISE g_exception_halt_validation;
2767          END IF;
2768       END IF;
2769 
2770 
2771       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
2772       THEN
2773          fnd_log.STRING (fnd_log.level_statement,
2774                          g_module_current || '.Create_K_Hdr.oks_header_rules',
2775                             'Accounting id = '
2776                          || p_k_header_rec.accounting_rule_id
2777                          || ',renewal type = '
2778                          || p_k_header_rec.renewal_type
2779                          || ',billing id = '
2780                          || p_k_header_rec.billing_profile_id
2781                          || ',renewal po = '
2782                          || p_k_header_rec.renewal_po
2783                          || ',ren price list = '
2784                          || p_k_header_rec.renewal_price_list_id
2785                         );
2786          fnd_log.STRING (fnd_log.level_statement,
2787                          g_module_current || '.Create_K_Hdr.oks_header_rules',
2788                             'ren markup = '
2789                          || p_k_header_rec.renewal_markup
2790                          || ',qto contact = '
2791                          || p_k_header_rec.qto_contact_id
2792                          || ',contact id = '
2793                          || p_k_header_rec.contact_id
2794                          || ',tax status = '
2795                          || p_k_header_rec.tax_status_flag
2796                         );
2797       END IF;
2798 
2799       -- Hdr rules inserted by oks
2800       l_khrv_tbl_in (1).chr_id := l_chrv_tbl_out (1).ID;
2801       l_khrv_tbl_in (1).acct_rule_id := p_k_header_rec.accounting_rule_id;
2802       --ARL
2803       l_khrv_tbl_in (1).billing_profile_id :=
2804                                              p_k_header_rec.billing_profile_id;
2805       -- Fix for bug 3396484
2806       l_khrv_tbl_in (1).renewal_po_required :=p_k_header_rec.renewal_po; /*Bug:7555733*/
2807       --RPO
2808       l_khrv_tbl_in (1).renewal_pricing_type :=
2809                                            p_k_header_rec.renewal_pricing_type;
2810       --RPT
2811       l_khrv_tbl_in (1).price_uom := p_k_header_rec.price_uom;
2812 
2813       --mmadhavi fix for bug 4004028
2814       IF (l_khrv_tbl_in (1).renewal_pricing_type = 'MAN')
2815       THEN
2816          l_khrv_tbl_in (1).renewal_price_list := NULL;
2817       ELSE
2818          l_khrv_tbl_in (1).renewal_price_list :=
2819                                          p_k_header_rec.renewal_price_list_id;
2820       END IF;
2821 
2822       --mmadhavi
2823       IF p_k_header_rec.renewal_pricing_type = 'PCT'
2824       THEN                                                               --RPT
2825          l_khrv_tbl_in (1).renewal_markup_percent :=
2826                                                 p_k_header_rec.renewal_markup;
2827       ELSE
2828          l_khrv_tbl_in (1).renewal_markup_percent := NULL;
2829       END IF;
2830 
2831       IF p_k_header_rec.qto_contact_id IS NOT NULL
2832       THEN                                                               --QTO
2833          l_khrv_tbl_in (1).quote_to_contact_id :=
2834                                                 p_k_header_rec.qto_contact_id;
2835          l_khrv_tbl_in (1).quote_to_site_id := p_k_header_rec.qto_site_id;
2836          l_khrv_tbl_in (1).quote_to_email_id := p_k_header_rec.qto_email_id;
2837          l_khrv_tbl_in (1).quote_to_phone_id := p_k_header_rec.qto_phone_id;
2838          l_khrv_tbl_in (1).quote_to_fax_id := p_k_header_rec.qto_fax_id;
2839       ELSIF p_k_header_rec.contact_id IS NOT NULL
2840       THEN
2841          OPEN party_cont_cur (p_k_header_rec.contact_id);
2842 
2843          FETCH party_cont_cur
2844           INTO l_party_contact;
2845 
2846          CLOSE party_cont_cur;
2847 
2848          OPEN address_cur_new (p_k_header_rec.contact_id);
2849 
2850          FETCH address_cur_new
2851           INTO l_site_id;
2852 
2853          CLOSE address_cur_new;
2854 
2855          OPEN email_cur_new (l_party_contact);
2856 
2857          FETCH email_cur_new
2858           INTO l_email_id;
2859 
2860          CLOSE email_cur_new;
2861 
2862          OPEN phone_cur_new (l_party_contact);
2863 
2864          FETCH phone_cur_new
2865           INTO l_phone_id;
2866 
2867          CLOSE phone_cur_new;
2868 
2869          OPEN fax_cur_new (l_party_contact);
2870 
2871          FETCH fax_cur_new
2872           INTO l_fax_id;
2873 
2874          CLOSE fax_cur_new;
2875 
2876          l_khrv_tbl_in (1).quote_to_contact_id := p_k_header_rec.contact_id;
2877          l_khrv_tbl_in (1).quote_to_site_id := l_site_id;
2878          l_khrv_tbl_in (1).quote_to_email_id := l_email_id;
2879          l_khrv_tbl_in (1).quote_to_phone_id := l_phone_id;
2880          l_khrv_tbl_in (1).quote_to_fax_id := l_fax_id;
2881       END IF;
2882 
2883       l_khrv_tbl_in (1).ar_interface_yn :=
2884                                       p_k_header_rec.ar_interface_yn;
2885       l_khrv_tbl_in (1).hold_billing := NVL (p_k_header_rec.hold_billing, 'N');
2886       l_khrv_tbl_in (1).summary_trx_yn :=
2887                                       NVL (p_k_header_rec.summary_trx_yn, 'N');
2888       l_khrv_tbl_in (1).inv_trx_type := p_k_header_rec.inv_trx_type;
2889       l_khrv_tbl_in (1).tax_status := p_k_header_rec.tax_status_flag;    --TAX
2890       l_khrv_tbl_in (1).tax_code := NULL;                                --TAX
2891       l_khrv_tbl_in (1).tax_exemption_id := p_k_header_rec.tax_exemption_id;
2892       --TAX
2893       l_khrv_tbl_in (1).created_by := okc_api.g_miss_num;
2894       l_khrv_tbl_in (1).creation_date := okc_api.g_miss_date;
2895 
2896       IF p_k_header_rec.ccr_number IS NOT NULL
2897       THEN
2898          l_khrv_tbl_in (1).payment_type := 'CCR';
2899          l_khrv_tbl_in (1).cc_no := p_k_header_rec.ccr_number;
2900          l_khrv_tbl_in (1).cc_expiry_date := p_k_header_rec.ccr_exp_date;
2901       END IF;
2902 
2903       l_khrv_tbl_in (1).period_start := p_k_header_rec.period_start;
2904       l_khrv_tbl_in (1).period_type := p_k_header_rec.period_type;
2905       l_khrv_tbl_in (1).grace_period := p_k_header_rec.grace_period;
2906       l_khrv_tbl_in (1).grace_duration := p_k_header_rec.grace_duration;
2907       l_khrv_tbl_in (1).renewal_status := p_k_header_rec.renewal_status;
2908                                    -- Added by JVARGHES for 12.0 enhancements.
2909       -- Added for 120 CC EXTN project
2910    --   l_khrv_tbl_in (1).trxn_extension_id := p_k_header_rec.trxn_extension_id;
2911 
2912       --
2913 
2914       --Added in R12 by rsu
2915       IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
2916       THEN
2917          fnd_log.STRING (fnd_log.level_statement,
2918                          g_module_current || '.Create_K_Hdr',
2919                          'Before calling oks_contract_hdr_pub.create_header'
2920                         );
2921          fnd_log.STRING (fnd_log.level_statement,
2922                          g_module_current || '.Create_K_Hdr',
2923                             'p_k_header_rec.tax_classification_code: '
2924                          || p_k_header_rec.tax_classification_code
2925                         );
2926          fnd_log.STRING (fnd_log.level_statement,
2927                          g_module_current || '.Create_K_Hdr',
2928                             'p_k_header_rec.exemption_certificate_number: '
2929                          || p_k_header_rec.exemption_certificate_number
2930                         );
2931          fnd_log.STRING (fnd_log.level_statement,
2932                          g_module_current || '.Create_K_Hdr',
2933                             'p_k_header_rec.exemption_reason_code: '
2934                          || p_k_header_rec.exemption_reason_code
2935                         );
2936          fnd_log.STRING (fnd_log.level_statement,
2937                          g_module_current || '.Create_K_Hdr',
2938                             'p_k_header_rec.tax_status_flag: '
2939                          || p_k_header_rec.tax_status_flag
2940                         );
2941       END IF;
2942 
2943       l_khrv_tbl_in (1).tax_classification_code :=
2944                                         p_k_header_rec.tax_classification_code;
2945       l_khrv_tbl_in (1).exempt_certificate_number :=
2946                                    p_k_header_rec.exemption_certificate_number;
2947       l_khrv_tbl_in (1).exempt_reason_code :=
2948                                           p_k_header_rec.exemption_reason_code;
2949       --End: added in R12 by rsu
2950       oks_contract_hdr_pub.create_header (p_api_version        => l_api_version,
2951                                           p_init_msg_list      => l_init_msg_list,
2952                                           x_return_status      => l_return_status,
2953                                           x_msg_count          => x_msg_count,
2954                                           x_msg_data           => x_msg_data,
2955                                           p_khrv_tbl           => l_khrv_tbl_in,
2956                                           x_khrv_tbl           => l_khrv_tbl_out,
2957                                           p_validate_yn        => 'N'
2958                                          );
2959 
2960       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
2961       THEN
2962          fnd_log.STRING
2963                    (fnd_log.level_event,
2964                     g_module_current || '.Create_K_Hdr.external_call.after',
2965                        ' oks_contract_hdr_pub.create_header(Return Status = '
2966                     || l_return_status
2967                     || ')'
2968                    );
2969       END IF;
2970 
2971       IF NOT l_return_status = okc_api.g_ret_sts_success
2972       THEN
2973          --mmadhavi
2974          IF (p_caller = 'OC')
2975          THEN
2976             x_order_error := '#';
2977 
2978             FOR i IN 1 .. fnd_msg_pub.count_msg
2979             LOOP
2980                fnd_msg_pub.get (p_msg_index          => i,
2981                                 p_encoded            => 'T',
2982                                 p_data               => l_msg_data,
2983                                 p_msg_index_out      => l_ind
2984                                );
2985                x_order_error := x_order_error || l_msg_data || '#';
2986 
2987                IF (g_fnd_log_option = 'Y')
2988                THEN
2989                   fnd_message.set_encoded (l_msg_data);
2990                   l_msg_data := fnd_message.get;
2991                   fnd_file.put_line
2992                                   (fnd_file.LOG,
2993                                       '(oks_contract_hdr_pub).create_header '
2994                                    || l_msg_data
2995                                   );
2996                END IF;
2997             END LOOP;
2998 
2999             RAISE g_exception_halt_validation;
3000          ELSE
3001             --mmadhavi
3002             okc_api.set_message (g_app_name,
3003                                  g_required_value,
3004                                  g_col_name_token,
3005                                  'OKS (HEADER)'
3006                                 );
3007             RAISE g_exception_halt_validation;
3008          END IF;
3009       END IF;
3010 
3011       IF p_k_header_rec.order_line_id IS NOT NULL
3012       THEN
3013          oks_extwar_util_pvt.update_contract_details
3014                                                (l_chrid,
3015                                                 p_k_header_rec.order_line_id,
3016                                                 l_return_status
3017                                                );
3018 
3019          IF NOT l_return_status = okc_api.g_ret_sts_success
3020          THEN
3021             x_return_status := l_return_status;
3022             RAISE g_exception_halt_validation;
3023          END IF;
3024       END IF;
3025 
3026       IF p_k_header_rec.scs_code IN ('WARRANTY', 'SERVICE')
3027       THEN
3028          --Party Role Routine ('VENDOR')
3029          party_role (p_chrid              => l_chrid,
3030                      p_cleid              => NULL,
3031                      p_rle_code           => 'VENDOR',
3032                      p_partyid            => p_k_header_rec.authoring_org_id,
3033                      p_object_code        => g_jtf_party_vendor,
3034                      x_roleid             => l_partyid_v,
3035                      x_msg_count          => x_msg_count,
3036                      x_msg_data           => x_msg_data,
3037                      x_return_status      => l_return_status
3038                     );
3039 
3040          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3041          THEN
3042             fnd_log.STRING (fnd_log.level_event,
3043                                g_module_current
3044                             || '.Create_K_Hdr.Internal_call.after',
3045                                ' Party_role for Vendor(Return Status = '
3046                             || l_return_status
3047                             || ')'
3048                             || l_partyid_v
3049                            );
3050          END IF;
3051 
3052          IF NOT l_return_status = okc_api.g_ret_sts_success
3053          THEN
3054             x_return_status := l_return_status;
3055             RAISE g_exception_halt_validation;
3056          END IF;
3057 
3058          --Party Role Routine ('CUSTOMER')
3059          party_role (p_chrid              => l_chrid,
3060                      p_cleid              => NULL,
3061                      p_rle_code           => 'CUSTOMER',
3062                      p_partyid            => p_k_header_rec.party_id,
3063                      p_object_code        => g_jtf_party,
3064                      x_roleid             => l_partyid,
3065                      x_msg_count          => x_msg_count,
3066                      x_msg_data           => x_msg_data,
3067                      x_return_status      => l_return_status
3068                     );
3069 
3070          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3071          THEN
3072             fnd_log.STRING (fnd_log.level_event,
3073                                g_module_current
3074                             || '.Create_K_Hdr.Internal_call.after',
3075                                ' Party_role for Customer(Return Status = '
3076                             || l_return_status
3077                             || ')'
3078                             || l_partyid
3079                            );
3080          END IF;
3081 
3082          IF NOT l_return_status = okc_api.g_ret_sts_success
3083          THEN
3084             x_return_status := l_return_status;
3085             RAISE g_exception_halt_validation;
3086          END IF;
3087       ELSE
3088          --Party Role Routine ('MERCHANT')
3089          party_role (p_chrid              => l_chrid,
3090                      p_cleid              => NULL,
3091                      p_rle_code           => 'MERCHANT',
3092                      p_partyid            => p_k_header_rec.authoring_org_id,
3093                      p_object_code        => g_jtf_party_vendor,
3094                      x_roleid             => l_partyid_v,
3095                      x_msg_count          => x_msg_count,
3096                      x_msg_data           => x_msg_data,
3097                      x_return_status      => l_return_status
3098                     );
3099 
3100          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3101          THEN
3102             fnd_log.STRING (fnd_log.level_event,
3103                                g_module_current
3104                             || '.Create_K_Hdr.Internal_call.after',
3105                                ' Party_role for Merchant(Return Status = '
3106                             || l_return_status
3107                             || ')'
3108                             || l_partyid_v
3109                            );
3110          END IF;
3111 
3112          IF NOT l_return_status = okc_api.g_ret_sts_success
3113          THEN
3114             x_return_status := l_return_status;
3115             RAISE g_exception_halt_validation;
3116          END IF;
3117 
3118          --Party Role Routine ('SUBSCRIBER')
3119          party_role (p_chrid              => l_chrid,
3120                      p_cleid              => NULL,
3121                      p_rle_code           => 'SUBSCRIBER',
3122                      p_partyid            => p_k_header_rec.party_id,
3123                      p_object_code        => g_jtf_party,
3124                      x_roleid             => l_partyid,
3125                      x_msg_count          => x_msg_count,
3126                      x_msg_data           => x_msg_data,
3127                      x_return_status      => l_return_status
3128                     );
3129 
3130          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3131          THEN
3132             fnd_log.STRING (fnd_log.level_event,
3133                                g_module_current
3134                             || '.Create_K_Hdr.Internal_call.after',
3135                                ' Party_role for Subscriber(Return Status = '
3136                             || l_return_status
3137                             || ')'
3138                             || l_partyid
3139                            );
3140          END IF;
3141 
3142          IF NOT l_return_status = okc_api.g_ret_sts_success
3143          THEN
3144             x_return_status := l_return_status;
3145             RAISE g_exception_halt_validation;
3146          END IF;
3147       END IF;
3148 
3149       /* Check if the bill to belong to the order customer, if not create a third party role*/
3150       l_thirdparty_id := NULL;
3151 
3152       OPEN l_thirdparty_csr (p_k_header_rec.bill_to_id);
3153 
3154       FETCH l_thirdparty_csr
3155        INTO l_thirdparty_id;
3156 
3157       CLOSE l_thirdparty_csr;
3158 
3159       IF l_thirdparty_id IS NOT NULL
3160       THEN
3161          IF NOT l_thirdparty_id = p_k_header_rec.party_id
3162          THEN
3163             --Party Role Routine ('THIRD_PARTY')
3164             l_thirdparty_role :=
3165                          NVL (p_k_header_rec.third_party_role, 'THIRD_PARTY');
3166 
3167             --mmadhavi
3168             IF (p_caller = 'OC')
3169             THEN
3170                IF (l_thirdparty_role IN ('VENDOR', 'CUSTOMER'))
3171                THEN
3172                   fnd_message.set_name (g_app_name,
3173                                         'OKS_INVD_THIRD_PARTY_ROLE'
3174                                        );
3175                   x_order_error := '#' || fnd_message.get_encoded || '#';
3176                   l_return_status := okc_api.g_ret_sts_error;
3177                   RAISE g_exception_halt_validation;
3178                END IF;
3179             END IF;
3180 
3181             --mmadhavi
3182             party_role (p_chrid              => l_chrid,
3183                         p_cleid              => NULL,
3184                         p_rle_code           => l_thirdparty_role,
3185                         p_partyid            => l_thirdparty_id,
3186                         p_object_code        => g_jtf_party,
3187                         x_roleid             => l_partyid_t,
3188                         x_msg_count          => x_msg_count,
3189                         x_msg_data           => x_msg_data,
3190                         x_return_status      => l_return_status
3191                        );
3192 
3193             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3194             THEN
3195                fnd_log.STRING
3196                            (fnd_log.level_event,
3197                                g_module_current
3198                             || '.Create_K_Hdr.Internal_call.after',
3199                                ' Party_role for Third Party(Return Status = '
3200                             || l_return_status
3201                             || ')'
3202                             || l_partyid_t
3203                            );
3204             END IF;
3205 
3206             IF NOT l_return_status = okc_api.g_ret_sts_success
3207             THEN
3208                x_return_status := l_return_status;
3209                RAISE g_exception_halt_validation;
3210             END IF;
3211          END IF;
3212       END IF;
3213 
3214       ---Creating Vendor Contact
3215 
3216       -- Fix for the Bug3557612
3217       -- Create vendor contact role if the profile option is not null
3218       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3219       THEN
3220          fnd_log.STRING (fnd_log.level_statement,
3221                             g_module_current
3222                          || '.Create_K_Hdr.before_vendor_contact',
3223                             ' Vendor contact profile option value = '
3224                          || fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE')
3225                          || ' Territory profile option value = '
3226                          || fnd_profile.VALUE ('OKS_TERR_SALES_REP')
3227                         );
3228       END IF;
3229 
3230       /************ Territory changes ****************************/
3231       IF    ( NVL (fnd_profile.VALUE ('OKS_TERR_SALES_REP'), 'RET') = 'DER'
3232          AND p_k_header_rec.order_hdr_id IS NOT NULL) or (p_caller = 'ST')
3233       THEN
3234          get_jtf_resource (p_authorg_id         => p_k_header_rec.authoring_org_id,
3235                            p_party_id           => p_k_header_rec.party_id,
3236                            x_winners_rec        => l_gen_return_rec,
3237                            x_msg_count          => l_msg_count,
3238                            x_msg_data           => l_msg_data,
3239                            x_return_status      => l_return_status
3240                           );
3241 
3242          IF (l_return_status <> okc_api.g_ret_sts_success)
3243          THEN
3244             -- Setup error
3245             If p_caller = 'ST' Then
3246                   send_notification (null, l_chrid, 'SER');
3247             Else
3248 
3249                   send_notification (p_k_header_rec.order_hdr_id, NULL, 'SER');
3250             End If;
3251 
3252          ELSE
3253             l_counter := l_gen_return_rec.trans_object_id.FIRST;
3254             l_count := 0;
3255 
3256             WHILE (l_counter <= l_gen_return_rec.trans_object_id.LAST)
3257             LOOP
3258                IF (l_count = 0)
3259                THEN
3260                   OPEN resource_details
3261                          (p_resource_id      => l_gen_return_rec.resource_id
3262                                                                     (l_counter)
3263                          );
3264 
3265                   FETCH resource_details
3266                    INTO l_user_id;
3267 
3268                   CLOSE resource_details;
3269 
3270                   l_derived_res_id := l_gen_return_rec.resource_id (l_counter);
3271                END IF;
3272 
3273                l_counter := l_counter + 1;
3274                l_count := l_count + 1;
3275             END LOOP;
3276 
3277             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3278             THEN
3279                fnd_log.STRING (fnd_log.level_statement,
3280                                g_module_current,
3281                                'Resource ID is : ' || l_derived_res_id
3282                               );
3283             END IF;
3284 
3285             IF l_count = 0
3286             THEN
3287                -- No resource setup
3288                If p_caller = 'ST' Then
3289                    send_notification (Null, l_chrid, 'NRS');
3290                Else
3291                   send_notification (p_k_header_rec.order_hdr_id, NULL, 'NRS');
3292                End If;
3293             ELSIF l_count >= 1
3294             THEN
3295                l_new_org_id := okc_context.get_okc_org_id;
3296 
3297                OPEN l_salesrep_csr (l_derived_res_id, l_new_org_id);
3298 
3299                FETCH l_salesrep_csr
3300                 INTO l_salesrep_id;
3301 
3302                CLOSE l_salesrep_csr;
3303 
3304                IF l_salesrep_id IS NULL
3305                THEN
3306                    If p_caller = 'ST' Then
3307 
3308                            send_notification (NULL, l_chrid,'ISP');
3309                    Else
3310                            send_notification (p_k_header_rec.order_hdr_id, NULL,'ISP');
3311                     End If;
3312                END IF;
3313             END IF;
3314          END IF;
3315       ELSE
3316          l_salesrep_id := p_k_header_rec.salesrep_id;
3317       END IF;
3318 
3319       /************ Territory changes end****************************/
3320       IF     l_salesrep_id IS NOT NULL
3321          AND fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE') IS NOT NULL
3322       THEN
3323 
3324                /*spingali BUGFIX FOR BUG12747411-START salesperson*/
3325                OPEN get_k_auth_org(l_chrid);
3326                FETCH get_k_auth_org INTO l_auth_org_id;
3327                CLOSE get_k_auth_org;
3328 
3329                IF (Nvl(OKS_EXTWARPRGM_PVT.G_TRF_K_CREATE,'N') ='Y') AND (l_auth_org_id<>(nvl(OKC_CONTEXT.GET_OKC_ORG_ID,-99)))THEN
3330                   l_okc_org_id := l_auth_org_id;
3331                ELSE
3332                   l_okc_org_id := Okc_context.get_okc_org_id;
3333                END IF;
3334 
3335                /*spingali BUGFIX FOR BUG12747411-END salesperson*/
3336 
3337          l_salesgroup_id :=
3338             jtf_rs_integration_pub.get_default_sales_group
3339                                      (p_salesrep_id      => l_salesrep_id,
3340                                       p_org_id           => okc_context.get_okc_org_id,
3341                                       p_date             => p_k_header_rec.start_date
3342                                      );
3343          l_ctcv_tbl_in (1).object1_id1 := l_salesrep_id;
3344          l_ctcv_tbl_in (1).cpl_id := l_partyid_v;
3345          l_ctcv_tbl_in (1).dnz_chr_id := l_chrid;
3346          l_ctcv_tbl_in (1).cro_code :=
3347                                  fnd_profile.VALUE ('OKS_VENDOR_CONTACT_ROLE');
3348          l_ctcv_tbl_in (1).object1_id2 := '#';
3349          l_ctcv_tbl_in (1).sales_group_id := l_salesgroup_id;
3350 
3351          OPEN object_code_csr (l_ctcv_tbl_in (1).cro_code);
3352 
3353          FETCH object_code_csr
3354           INTO l_temp;
3355 
3356          IF object_code_csr%NOTFOUND
3357          THEN
3358             CLOSE object_code_csr;
3359 
3360             okc_api.set_message (g_app_name,
3361                                  g_unexpected_error,
3362                                  g_sqlcode_token,
3363                                  SQLCODE,
3364                                  g_sqlerrm_token,
3365                                  'Wrong vendor contact role assigned'
3366                                 );
3367             l_return_status := okc_api.g_ret_sts_error;
3368             RAISE g_exception_halt_validation;
3369          END IF;
3370 
3371          CLOSE object_code_csr;
3372 
3373          l_ctcv_tbl_in (1).jtot_object1_code := 'OKX_SALEPERS';
3374          --l_object_code;
3375          okc_contract_party_pub.create_contact
3376                                           (p_api_version        => l_api_version,
3377                                            p_init_msg_list      => l_init_msg_list,
3378                                            x_return_status      => l_return_status,
3379                                            x_msg_count          => x_msg_count,
3380                                            x_msg_data           => x_msg_data,
3381                                            p_ctcv_tbl           => l_ctcv_tbl_in,
3382                                            x_ctcv_tbl           => l_ctcv_tbl_out
3383                                           );
3384 
3385          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3386          THEN
3387             fnd_log.STRING
3388                 (fnd_log.level_event,
3389                  g_module_current || '.Create_K_Hdr.External_call.after',
3390                     ' okc_contract_party_pub.create_contact(Return Status = '
3391                  || l_return_status
3392                  || ')'
3393                 );
3394          END IF;
3395 
3396          IF l_return_status = 'S'
3397          THEN
3398             l_contact_id := l_ctcv_tbl_out (1).ID;
3399          ELSE
3400             okc_api.set_message (g_app_name,
3401                                  g_required_value,
3402                                  g_col_name_token,
3403                                     l_ctcv_tbl_in (1).cro_code
3404                                  || 'Vendor  Contact (HEADER) '
3405                                  || ' OKX_SALEPERS'
3406                                 );
3407             RAISE g_exception_halt_validation;
3408          END IF;
3409       END IF;
3410 
3411       --mmadhavi --Create SalesCredits bug 4174921
3412       IF p_salescredit_tbl_in.COUNT > 0
3413       THEN
3414          j := p_salescredit_tbl_in.FIRST;
3415 
3416          LOOP
3417             l_scrv_tbl_in (1).PERCENT := p_salescredit_tbl_in (j).PERCENT;
3418             l_scrv_tbl_in (1).chr_id := l_chrid;
3419             l_scrv_tbl_in (1).cle_id := NULL;
3420             l_scrv_tbl_in (1).ctc_id := p_salescredit_tbl_in (j).ctc_id;
3421             l_scrv_tbl_in (1).sales_credit_type_id1 :=
3422                                 p_salescredit_tbl_in (j).sales_credit_type_id;
3423             l_scrv_tbl_in (1).sales_credit_type_id2 := '#';
3424             l_scrv_tbl_in (1).sales_group_id :=
3425                                       p_salescredit_tbl_in (j).sales_group_id;
3426             oks_sales_credit_pub.insert_sales_credit
3427                                          (p_api_version        => 1.0,
3428                                           p_init_msg_list      => okc_api.g_false,
3429                                           x_return_status      => l_return_status,
3430                                           x_msg_count          => x_msg_count,
3431                                           x_msg_data           => x_msg_data,
3432                                           p_scrv_tbl           => l_scrv_tbl_in,
3433                                           x_scrv_tbl           => l_scrv_tbl_out
3434                                          );
3435 
3436             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3437             THEN
3438                fnd_log.STRING
3439                   (fnd_log.level_event,
3440                    g_module_current || '.Create_K_Hdr.external_call.after',
3441                       'oks_sales_credit_pub.insert_sales_credit(Return status = '
3442                    || l_return_status
3443                    || ')'
3444                   );
3445             END IF;
3446 
3447             IF l_return_status = 'S'
3448             THEN
3449                l_salescredit_id := l_scrv_tbl_out (1).ID;
3450             ELSE
3451                okc_api.set_message (g_app_name,
3452                                     g_required_value,
3453                                     g_col_name_token,
3454                                     'Sales Credit Failure'
3455                                    );
3456                RAISE g_exception_halt_validation;
3457             END IF;
3458 
3459             EXIT WHEN j = p_salescredit_tbl_in.LAST;
3460             j := p_salescredit_tbl_in.NEXT (j);
3461          END LOOP;
3462       END IF;
3463 
3464       --mmadhavi bug 4174921
3465       IF p_contact_tbl.COUNT > 0
3466       THEN
3467          i := p_contact_tbl.FIRST;
3468 
3469          LOOP
3470             l_ctcv_tbl_in.DELETE;
3471 
3472             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3473             THEN
3474                fnd_log.STRING (fnd_log.level_statement,
3475                                   g_module_current
3476                                || '.Create_K_Hdr.contact creation',
3477                                   ' Party Role = '
3478                                || p_contact_tbl (i).party_role
3479                                || ',Contact Id = '
3480                                || p_contact_tbl (i).contact_id
3481                               );
3482             END IF;
3483 
3484             IF     p_contact_tbl (i).party_role = 'VENDOR'
3485                AND l_partyid_v IS NOT NULL
3486             THEN
3487                l_add2partyid := l_partyid_v;
3488                l_hdr_contactid := p_contact_tbl (i).contact_id;
3489             ELSE
3490                l_rah_party_id := NULL;
3491                l_hdr_contactid := NULL;
3492 
3493                OPEN l_ra_hcontacts_cur (p_contact_tbl (i).contact_id);
3494 
3495                FETCH l_ra_hcontacts_cur
3496                 INTO l_rah_party_id, l_hdr_contactid;
3497 
3498                CLOSE l_ra_hcontacts_cur;
3499 
3500                --if l_findparty_id = l_thirdparty_id Then
3501                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3502                THEN
3503                   fnd_log.STRING (fnd_log.level_statement,
3504                                      g_module_current
3505                                   || '.Create_K_Hdr.contact creation',
3506                                      ' Third Party = '
3507                                   || l_thirdparty_id
3508                                   || ',Customer Id = '
3509                                   || p_k_header_rec.party_id
3510                                   || ',Org CTC Id = '
3511                                   || p_contact_tbl (i).contact_id
3512                                   || ',Rah PArty Id = '
3513                                   || l_rah_party_id
3514                                   || ',Rah CTC Id = '
3515                                   || l_hdr_contactid
3516                                  );
3517                END IF;
3518 
3519                IF l_rah_party_id = l_thirdparty_id AND l_partyid_t IS NOT NULL
3520                THEN
3521                   l_add2partyid := l_partyid_t;
3522                ELSE
3523                   l_add2partyid := l_partyid;
3524                END IF;
3525             END IF;
3526 
3527             IF l_add2partyid IS NULL
3528             THEN
3529                okc_api.set_message (g_app_name,
3530                                     g_required_value,
3531                                     g_col_name_token,
3532                                        p_contact_tbl (i).contact_role
3533                                     || ' Contact (HEADER) Missing Role Id '
3534                                     || p_contact_tbl (i).contact_object_code
3535                                    );
3536                RAISE g_exception_halt_validation;
3537             END IF;
3538 
3539             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
3540             THEN
3541                fnd_log.STRING (fnd_log.level_statement,
3542                                   g_module_current
3543                                || '.Create_K_Hdr.contact creation',
3544                                   ' FLAG   = '
3545                                || p_contact_tbl (i).flag
3546                                || ' CONTACT ID = '
3547                                || p_contact_tbl (i).contact_id
3548                                || ' CPL ID = '
3549                                || l_add2partyid
3550                                || ',CRO CD = '
3551                                || p_contact_tbl (i).contact_role
3552                                || ',CTC CD = '
3553                                || l_hdr_contactid
3554                                || ',JTO CD = '
3555                                || p_contact_tbl (i).contact_object_code
3556                               );
3557             END IF;
3558 
3559             IF p_contact_tbl (i).flag = 'H'
3560             THEN
3561                l_ctcv_tbl_in (1).object1_id1 := l_hdr_contactid;
3562             ELSE
3563                l_ctcv_tbl_in (1).object1_id1 := p_contact_tbl (i).contact_id;
3564             END IF;
3565 
3566             l_ctcv_tbl_in (1).cpl_id := l_add2partyid;
3567             l_ctcv_tbl_in (1).dnz_chr_id := l_chrid;
3568             l_ctcv_tbl_in (1).cro_code := p_contact_tbl (i).contact_role;
3569             l_ctcv_tbl_in (1).object1_id2 := '#';
3570             l_ctcv_tbl_in (1).jtot_object1_code :=
3571                                          p_contact_tbl (i).contact_object_code;
3572             okc_contract_party_pub.create_contact
3573                                           (p_api_version        => l_api_version,
3574                                            p_init_msg_list      => l_init_msg_list,
3575                                            x_return_status      => l_return_status,
3576                                            x_msg_count          => x_msg_count,
3577                                            x_msg_data           => x_msg_data,
3578                                            p_ctcv_tbl           => l_ctcv_tbl_in,
3579                                            x_ctcv_tbl           => l_ctcv_tbl_out
3580                                           );
3581 
3582             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3583             THEN
3584                fnd_log.STRING
3585                   (fnd_log.level_event,
3586                    g_module_current || '.Create_K_Hdr.external_call.after',
3587                       'okc_contract_party_pub.create_contact(Return status = '
3588                    || l_return_status
3589                    || ')'
3590                   );
3591             END IF;
3592 
3593             IF l_return_status = 'S'
3594             THEN
3595                l_contact_id := l_ctcv_tbl_out (1).ID;
3596             ELSE
3597                okc_api.set_message (g_app_name,
3598                                     g_required_value,
3599                                     g_col_name_token,
3600                                        p_contact_tbl (i).contact_role
3601                                     || ' Contact (HEADER) '
3602                                     || p_contact_tbl (i).contact_object_code
3603                                    );
3604                RAISE g_exception_halt_validation;
3605             END IF;
3606 
3607             EXIT WHEN i = p_contact_tbl.LAST;
3608             i := p_contact_tbl.NEXT (i);
3609          END LOOP;
3610       END IF;
3611 
3612       --Grouping Routine
3613       l_ctrgrp :=
3614          NVL (p_k_header_rec.chr_group,
3615               NVL (fnd_profile.VALUE ('OKS_WARR_CONTRACT_GROUP'), 2)
3616              );
3617       l_cgcv_tbl_in (1).cgp_parent_id := l_ctrgrp;
3618       l_cgcv_tbl_in (1).included_chr_id := l_chrid;
3619       l_cgcv_tbl_in (1).object_version_number := okc_api.g_miss_num;
3620       l_cgcv_tbl_in (1).created_by := okc_api.g_miss_num;
3621       l_cgcv_tbl_in (1).creation_date := okc_api.g_miss_date;
3622       l_cgcv_tbl_in (1).last_updated_by := okc_api.g_miss_num;
3623       l_cgcv_tbl_in (1).last_update_date := okc_api.g_miss_date;
3624       l_cgcv_tbl_in (1).last_update_login := okc_api.g_miss_num;
3625       l_cgcv_tbl_in (1).included_cgp_id := NULL;
3626       okc_contract_group_pub.create_contract_grpngs
3627                                           (p_api_version        => l_api_version,
3628                                            p_init_msg_list      => l_init_msg_list,
3629                                            x_return_status      => l_return_status,
3630                                            x_msg_count          => x_msg_count,
3631                                            x_msg_data           => x_msg_data,
3632                                            p_cgcv_tbl           => l_cgcv_tbl_in,
3633                                            x_cgcv_tbl           => l_cgcv_tbl_out
3634                                           );
3635 
3636       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3637       THEN
3638          fnd_log.STRING
3639             (fnd_log.level_event,
3640              g_module_current || '.Create_K_Hdr.external_call.after',
3641                 'okc_contract_group_pub.create_contract_grpngs(Return status = '
3642              || l_return_status
3643              || ')'
3644             );
3645       END IF;
3646 
3647       IF l_return_status = 'S'
3648       THEN
3649          l_grpid := l_cgcv_tbl_out (1).ID;
3650       ELSE
3651          okc_api.set_message (g_app_name,
3652                               g_required_value,
3653                               g_col_name_token,
3654                               'Contract Group (HEADER)'
3655                              );
3656          RAISE g_exception_halt_validation;
3657       END IF;
3658 
3659       IF p_k_header_rec.pdf_id IS NOT NULL
3660       THEN
3661          l_cpsv_tbl_in (1).pdf_id := p_k_header_rec.pdf_id;
3662          l_cpsv_tbl_in (1).chr_id := l_chrid;
3663          l_cpsv_tbl_in (1).user_id := fnd_global.user_id;
3664          l_cpsv_tbl_in (1).in_process_yn := okc_api.g_miss_char;
3665          l_cpsv_tbl_in (1).object_version_number := okc_api.g_miss_num;
3666          l_cpsv_tbl_in (1).created_by := okc_api.g_miss_num;
3667          l_cpsv_tbl_in (1).creation_date := okc_api.g_miss_date;
3668          l_cpsv_tbl_in (1).last_updated_by := okc_api.g_miss_num;
3669          l_cpsv_tbl_in (1).last_update_date := okc_api.g_miss_date;
3670          l_cpsv_tbl_in (1).last_update_login := okc_api.g_miss_num;
3671          okc_contract_pub.create_contract_process
3672                                          (p_api_version        => l_api_version,
3673                                           p_init_msg_list      => l_init_msg_list,
3674                                           x_return_status      => l_return_status,
3675                                           x_msg_count          => x_msg_count,
3676                                           x_msg_data           => x_msg_data,
3677                                           p_cpsv_tbl           => l_cpsv_tbl_in,
3678                                           x_cpsv_tbl           => l_cpsv_tbl_out
3679                                          );
3680 
3681          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3682          THEN
3683             fnd_log.STRING
3684                (fnd_log.level_event,
3685                 g_module_current || '.Create_K_Hdr.external_call.after',
3686                    'okc_contract_pub.create_contract_process(Return status = '
3687                 || l_return_status
3688                 || ')'
3689                );
3690          END IF;
3691 
3692          IF l_return_status = 'S'
3693          THEN
3694             l_pdfid := l_cpsv_tbl_out (1).ID;
3695          ELSE
3696             okc_api.set_message (g_app_name,
3697                                  g_required_value,
3698                                  g_col_name_token,
3699                                  'Contract WorkFlow (HEADER)'
3700                                 );
3701             RAISE g_exception_halt_validation;
3702          END IF;
3703       END IF;
3704 
3705       --Agreement ID Routine
3706       IF p_k_header_rec.agreement_id IS NOT NULL
3707       THEN
3708          l_gvev_tbl_in (1).chr_id := l_chrid;
3709          l_gvev_tbl_in (1).isa_agreement_id := p_k_header_rec.agreement_id;
3710          l_gvev_tbl_in (1).copied_only_yn := 'Y';
3711          l_gvev_tbl_in (1).dnz_chr_id := l_chrid;
3712          okc_contract_pub.create_governance
3713                                          (p_api_version        => l_api_version,
3714                                           p_init_msg_list      => l_init_msg_list,
3715                                           x_return_status      => l_return_status,
3716                                           x_msg_count          => x_msg_count,
3717                                           x_msg_data           => x_msg_data,
3718                                           p_gvev_tbl           => l_gvev_tbl_in,
3719                                           x_gvev_tbl           => l_gvev_tbl_out
3720                                          );
3721 
3722          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3723          THEN
3724             fnd_log.STRING
3725                     (fnd_log.level_event,
3726                      g_module_current || '.Create_K_Hdr.external_call.after',
3727                         'okc_contract_pub.create_governance(Return status = '
3728                      || l_return_status
3729                      || ')'
3730                     );
3731          END IF;
3732 
3733          IF l_return_status = 'S'
3734          THEN
3735             l_govern_id := l_gvev_tbl_out (1).ID;
3736          ELSE
3737             okc_api.set_message (g_app_name,
3738                                  g_required_value,
3739                                  g_col_name_token,
3740                                  'Agreement Id (HEADER)'
3741                                 );
3742             RAISE g_exception_halt_validation;
3743          END IF;
3744       END IF;
3745 
3746       create_obj_rel (p_k_id               => l_chrid,
3747                       p_line_id            => NULL,
3748                       p_orderhdrid         => p_k_header_rec.order_hdr_id,
3749                       p_rty_code           => p_k_header_rec.rty_code,
3750                       p_orderlineid        => NULL,
3751                       x_return_status      => l_return_status,
3752                       x_msg_count          => x_msg_count,
3753                       x_msg_data           => x_msg_data,
3754                       x_crjv_tbl_out       => l_crjv_tbl_out
3755                      );
3756 
3757       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
3758       THEN
3759          fnd_log.STRING (fnd_log.level_event,
3760                             g_module_current
3761                          || '.Create_K_Hdr.internal_call.after',
3762                             'create_obj_rel(Return status = '
3763                          || l_return_status
3764                          || ')'
3765                         );
3766       END IF;
3767 
3768       IF NOT l_return_status = okc_api.g_ret_sts_success
3769       THEN
3770          okc_api.set_message (g_app_name,
3771                               g_required_value,
3772                               g_col_name_token,
3773                               'Order Header Id (HEADER)'
3774                              );
3775          RAISE g_exception_halt_validation;
3776       END IF;
3777 
3778       x_chr_id := l_chrid;
3779    EXCEPTION
3780       WHEN g_exception_halt_validation
3781       THEN
3782          x_return_status := l_return_status;
3783       WHEN OTHERS
3784       THEN
3785          x_return_status := okc_api.g_ret_sts_unexp_error;
3786          okc_api.set_message (g_app_name,
3787                               g_unexpected_error,
3788                               g_sqlcode_token,
3789                               SQLCODE,
3790                               g_sqlerrm_token,
3791                               SQLERRM
3792                              );
3793    END create_k_hdr;
3794 
3795    FUNCTION get_top_line_number (p_chr_id IN NUMBER)
3796       RETURN NUMBER
3797    IS
3798       max_line_number   NUMBER;
3799 
3800       CURSOR get_line_number
3801       IS
3802          SELECT NVL (MAX (TO_NUMBER (line_number)), 0) + 1
3803            FROM okc_k_lines_b
3804           WHERE dnz_chr_id = p_chr_id AND lse_id IN (1, 12, 14, 19, 46);
3805    BEGIN
3806       OPEN get_line_number;
3807 
3808       FETCH get_line_number
3809        INTO max_line_number;
3810 
3811       CLOSE get_line_number;
3812 
3813       RETURN (max_line_number);
3814    END get_top_line_number;
3815 
3816    FUNCTION get_sub_line_number (p_chr_id IN NUMBER, p_cle_id IN NUMBER)
3817       RETURN NUMBER
3818    IS
3819       max_line_number   NUMBER;
3820 
3821       CURSOR get_line_number
3822       IS
3823          SELECT NVL (MAX (TO_NUMBER (line_number)), 0) + 1
3824            FROM okc_k_lines_b
3825           WHERE dnz_chr_id = p_chr_id
3826             AND cle_id = p_cle_id
3827             AND lse_id IN (35, 7, 8, 9, 10, 11, 13, 18, 25);
3828    BEGIN
3829       OPEN get_line_number;
3830 
3831       FETCH get_line_number
3832        INTO max_line_number;
3833 
3834       CLOSE get_line_number;
3835 
3836       RETURN (max_line_number);
3837    END get_sub_line_number;
3838 
3839    PROCEDURE create_k_service_lines (
3840       p_k_line_rec           IN              k_line_service_rec_type,
3841       p_contact_tbl          IN              contact_tbl,
3842       p_salescredit_tbl_in   IN              salescredit_tbl,
3843       p_caller               IN              VARCHAR2,
3844       x_order_error          OUT NOCOPY      VARCHAR2,
3845       x_service_line_id      OUT NOCOPY      NUMBER,
3846       x_return_status        OUT NOCOPY      VARCHAR2,
3847       x_msg_count            OUT NOCOPY      NUMBER,
3848       x_msg_data             OUT NOCOPY      VARCHAR2
3849    )
3850    IS
3851       l_api_version     CONSTANT NUMBER                               := 1.0;
3852       l_init_msg_list   CONSTANT VARCHAR2 (1)              := okc_api.g_false;
3853       l_return_status            VARCHAR2 (1)                         := 'S';
3854       l_index                    VARCHAR2 (2000);
3855       l_ctcv_tbl_in              okc_contract_party_pub.ctcv_tbl_type;
3856       l_ctcv_tbl_out             okc_contract_party_pub.ctcv_tbl_type;
3857 
3858       CURSOR l_ctr_csr (p_id NUMBER)
3859       IS
3860          SELECT counter_group_id
3861            FROM okx_ctr_associations_v
3862           WHERE source_object_id = p_id;
3863 
3864       CURSOR l_billto_csr (p_billto NUMBER)
3865       IS
3866          SELECT cust_account_id
3867            FROM okx_cust_site_uses_v
3868           WHERE id1 = p_billto AND id2 = '#';
3869 
3870       CURSOR l_ra_hcontacts_cur (p_contact_id NUMBER)
3871       IS
3872          SELECT hzr.object_id, hzr.party_id
3873            --NPALEPU
3874                 --18-JUN-2005,09-AUG-2005
3875                 --TCA Project
3876                 --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
3877                 --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
3878                 /* FROM ra_hcontacts rah, hz_party_relationships hzr
3879                 WHERE rah.contact_id = p_contact_id
3880                 AND rah.party_relationship_id = hzr.party_relationship_id; */
3881          FROM   oks_ra_hcontacts_v rah, hz_relationships hzr
3882           WHERE rah.contact_id = p_contact_id
3883             AND rah.party_relationship_id = hzr.relationship_id
3884             AND hzr.subject_table_name = 'HZ_PARTIES'
3885             AND hzr.object_table_name = 'HZ_PARTIES'
3886             AND hzr.directional_flag = 'F';
3887 
3888       --END NPALEPU
3889 
3890       --enhancement to be commented
3891       CURSOR l_ste_csr (l_line_id NUMBER)
3892       IS
3893          SELECT os.ste_code
3894            FROM okc_statuses_b os, okc_k_lines_b ol
3895           WHERE ol.ID = l_line_id AND ol.sts_code = os.code;
3896 
3897       CURSOR l_salesgrp_csr (p_id NUMBER, p_start_date DATE, p_end_date DATE)
3898       IS
3899          SELECT GROUP_ID
3900            FROM jtf_rs_srp_groups
3901           WHERE salesrep_id = p_id
3902             AND org_id = okc_context.get_okc_org_id
3903             AND p_start_date BETWEEN start_date AND end_date
3904             AND p_end_date BETWEEN start_date AND end_date;
3905 
3906           /*spingali - bugfix for bug12747411*/
3907           CURSOR get_k_inv_org(p_k_id NUMBER)IS
3908           SELECT inv_organization_id
3909             FROM okc_k_headers_all_b
3910            WHERE id=p_k_id;
3911           l_inv_org_id                   NUMBER;
3912           /*spingali end of bugfix for bug12747411*/
3913 
3914 /*Added for ER 16036980*/
3915      CURSOR l_pricing_qty(p_order_line_id NUMBER )
3916      IS
3917          SELECT pricing_quantity,pricing_quantity_uom
3918           FROM oe_order_lines_all
3919          WHERE line_id = p_order_line_id;
3920 
3921     CURSOR get_subs_dtls(p_order_line_id NUMBER)
3922     IS
3923     SELECT Nvl(SERVICE_SUBS_TEMPLATE_ID,1)
3924     FROM oe_order_lines_all
3925     WHERE line_id = p_order_line_id;
3926 
3927      l_prc_qty   NUMBER;
3928      l_prc_uom   VARCHAR2(100);
3929      l_msg_count   NUMBER;
3930      l_subsc_template_id NUMBER;
3931 
3932 
3933      /*Added for ER 16036980*/
3934 
3935       l_sales_group_id           NUMBER;
3936       l_ctr_grpid                VARCHAR2 (40);
3937       l_ste_code                 VARCHAR2 (30);
3938       --Contract Line Table
3939       l_clev_tbl_in              okc_contract_pub.clev_tbl_type;
3940       l_clev_tbl_out             okc_contract_pub.clev_tbl_type;
3941       l_klnv_tbl_in              oks_kln_pvt.klnv_tbl_type;
3942       l_klnv_tbl_out             oks_kln_pvt.klnv_tbl_type;
3943       --Contract Item
3944       l_cimv_tbl_in              okc_contract_item_pub.cimv_tbl_type;
3945       l_cimv_tbl_out             okc_contract_item_pub.cimv_tbl_type;
3946       --Time Value Related
3947       l_isev_ext_tbl_in          okc_time_pub.isev_ext_tbl_type;
3948       l_isev_ext_tbl_out         okc_time_pub.isev_ext_tbl_type;
3949       --SalesCredit
3950       l_scrv_tbl_in              oks_sales_credit_pub.scrv_tbl_type;
3951       l_scrv_tbl_out             oks_sales_credit_pub.scrv_tbl_type;
3952       --Coverage
3953       l_cov_rec                  oks_coverages_pub.ac_rec_type;
3954       --Counters
3955       l_ctr_grp_id_template      NUMBER;
3956       l_ctr_grp_id_instance      NUMBER;
3957       --Return IDs
3958       l_line_id                  NUMBER;
3959       l_rule_group_id            NUMBER;
3960       l_rule_id                  NUMBER;
3961       l_line_item_id             NUMBER;
3962       l_time_value_id            NUMBER;
3963       l_cov_id                   NUMBER;
3964       l_salescredit_id           NUMBER;
3965       --TimeUnits
3966       l_duration                 NUMBER;
3967       l_timeunits                VARCHAR2 (240);
3968       --General
3969       l_hdrsdt                   DATE;
3970       l_hdredt                   DATE;
3971       l_hdrstatus                CHAR;
3972       l_lsl_id                   NUMBER;
3973       l_jtot_object              VARCHAR2 (30)                        := NULL;
3974       i                          NUMBER;
3975       l_can_object               NUMBER;
3976       l_line_party_role_id       NUMBER;
3977       l_lin_party_id             NUMBER;
3978       l_lin_contactid            NUMBER;
3979       l_line_contact_id          NUMBER;
3980       l_role                     VARCHAR2 (40);
3981       l_obj                      VARCHAR2 (40);
3982       l_rle_code                 VARCHAR2 (240);
3983       l_msg_data                 VARCHAR2 (2000);
3984       l_ind                      NUMBER;
3985       l_sts_code                 VARCHAR2 (30);
3986       l_sts_flag                 VARCHAR2 (1);
3987       p_cle_tbl                  p_srvline_tbl;
3988       l_ctr                      NUMBER;
3989       l_inp_rec                  okc_inst_cnd_pub.instcnd_inp_rec;
3990       l_entity_id                NUMBER;
3991    BEGIN
3992       x_return_status := okc_api.g_ret_sts_success;
3993 
3994       IF p_k_line_rec.SOURCE = 'NEW'
3995       THEN
3996          get_k_cle_id (p_chrid             => p_k_line_rec.k_id,
3997                        p_invserviceid      => p_k_line_rec.srv_id,
3998                        p_cle_tbl           => p_cle_tbl
3999                       );
4000 
4001          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4002          THEN
4003             fnd_log.STRING (fnd_log.level_statement,
4004                             g_module_current || '.Create_K_Service_Lines',
4005                             ' Top Lines Count = ' || p_cle_tbl.COUNT
4006                            );
4007          END IF;
4008 
4009          IF p_cle_tbl.COUNT > 0
4010          THEN
4011             l_ctr := p_cle_tbl.FIRST;
4012 
4013             LOOP
4014                IF check_merge_yn (p_cle_tbl (l_ctr).k_line_id,
4015                                   p_k_line_rec.order_line_id,
4016                                   p_k_line_rec.warranty_flag
4017                                  )
4018                THEN
4019                   l_line_id := p_cle_tbl (l_ctr).k_line_id;
4020                   EXIT;
4021                END IF;
4022 
4023                EXIT WHEN l_ctr = p_cle_tbl.LAST;
4024                l_ctr := p_cle_tbl.NEXT (l_ctr);
4025             END LOOP;
4026          ELSE
4027             l_line_id := NULL;
4028          END IF;
4029 
4030          -- enhancement to be commented
4031          OPEN l_ste_csr (l_line_id);
4032 
4033          FETCH l_ste_csr
4034           INTO l_ste_code;
4035 
4036          CLOSE l_ste_csr;
4037 
4038          IF l_ste_code = 'EXPIRED'
4039          THEN
4040             get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
4041 
4042             UPDATE okc_k_lines_b
4043                SET sts_code = l_sts_code
4044              WHERE ID = l_line_id;
4045          END IF;
4046       ELSE
4047          l_line_id := NULL;
4048       END IF;
4049 
4050       IF l_line_id IS NOT NULL
4051       THEN
4052          x_service_line_id := l_line_id;
4053          l_return_status := okc_api.g_ret_sts_success;
4054          RAISE g_exception_halt_validation;
4055       END IF;
4056 
4057       IF p_k_line_rec.warranty_flag = 'W'
4058       THEN
4059          l_lsl_id := 14;
4060          l_jtot_object := g_jtf_warr;
4061       ELSIF p_k_line_rec.warranty_flag = 'E'
4062       THEN
4063          l_lsl_id := 19;
4064          l_jtot_object := g_jtf_extwarr;
4065       ELSIF p_k_line_rec.warranty_flag IN ('S', 'SU')
4066       THEN
4067 /*Modified for ER 16036980 */
4068          IF p_k_line_rec.coverage_template_id is null then
4069          l_lsl_id :=46;
4070          l_jtot_object :=g_jtf_subscription;
4071          ELSE
4072          l_lsl_id := 1;
4073          l_jtot_object := g_jtf_extwarr;
4074 END IF;
4075       END IF;
4076 
4077       check_hdr_effectivity (p_chr_id       => p_k_line_rec.k_id,
4078                              p_srv_sdt      => p_k_line_rec.srv_sdt,
4079                              p_srv_edt      => p_k_line_rec.srv_edt,
4080                              x_hdr_sdt      => l_hdrsdt,
4081                              x_hdr_edt      => l_hdredt,
4082                              x_status       => l_hdrstatus
4083                             );
4084 
4085       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4086       THEN
4087          fnd_log.STRING (fnd_log.level_event,
4088                             g_module_current
4089                          || '.Create_K_Service_Lines.internal_call.after',
4090                             'check_hdr_effectivity(Return status = '
4091                          || l_hdrstatus
4092                         );
4093       END IF;
4094 
4095       IF l_hdrstatus = 'E'
4096       THEN
4097          okc_api.set_message (g_app_name,
4098                               g_unexpected_error,
4099                               g_sqlcode_token,
4100                               SQLCODE,
4101                               g_sqlerrm_token,
4102                               'line dates are not within header effectivity'
4103                              );
4104 
4105          IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4106          THEN
4107             fnd_log.STRING (fnd_log.level_error,
4108                             g_module_current
4109                             || '.Create_K_Service_Lines.ERROR',
4110                             'Line dates are not withen header effectivity'
4111                            );
4112          END IF;
4113 
4114          --mmadhavi
4115          IF (p_caller = 'OC')
4116          THEN
4117             fnd_message.set_name (g_app_name, 'OKS_INVD_CONTRACT_ID');
4118             fnd_message.set_token (token      => 'HDR_ID',
4119                                    VALUE      => p_k_line_rec.k_id
4120                                   );
4121             x_order_error := '#' || fnd_message.get_encoded || '#';
4122          END IF;
4123 
4124          --mmadhavi
4125          l_return_status := okc_api.g_ret_sts_error;
4126          RAISE g_exception_halt_validation;
4127       ELSIF l_hdrstatus = 'Y'
4128       THEN
4129          IF p_k_line_rec.line_sts_code = 'ENTERED'
4130          THEN
4131             l_sts_flag := 'N';
4132          ELSE
4133             l_sts_flag := 'Y';
4134          END IF;
4135 
4136          update_hdr_dates (p_chr_id         => p_k_line_rec.k_id,
4137                            p_new_sdt        => l_hdrsdt,
4138                            p_new_edt        => l_hdredt,
4139                            p_sts_flag       => l_sts_flag,
4140                            x_status         => l_return_status,
4141                            x_msg_count      => x_msg_count,
4142                            x_msg_data       => x_msg_data
4143                           );
4144 
4145          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4146          THEN
4147             fnd_log.STRING (fnd_log.level_event,
4148                                g_module_current
4149                             || '.Create_K_Service_Lines.internal_call.after',
4150                                'update_hdr_dates(Return status = '
4151                             || l_return_status
4152                            );
4153          END IF;
4154 
4155          IF NOT l_return_status = 'S'
4156          THEN
4157             l_return_status := okc_api.g_ret_sts_error;
4158             okc_api.set_message (g_app_name,
4159                                  g_required_value,
4160                                  g_col_name_token,
4161                                  'Header Effectivity Update (LINE)'
4162                                 );
4163             RAISE g_exception_halt_validation;
4164          END IF;
4165       END IF;
4166 
4167       l_clev_tbl_in (1).chr_id := p_k_line_rec.k_id;
4168       l_clev_tbl_in (1).sfwt_flag := 'N';
4169       l_clev_tbl_in (1).lse_id := l_lsl_id;
4170       --l_clev_tbl_in(1).line_number            := p_k_line_rec.k_line_number;
4171       l_clev_tbl_in (1).line_number := get_top_line_number (p_k_line_rec.k_id);
4172       l_clev_tbl_in (1).sts_code := p_k_line_rec.line_sts_code;
4173       l_clev_tbl_in (1).display_sequence := 1;
4174       l_clev_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4175       --l_clev_tbl_in(1).name                   := Substr(p_k_line_rec.srv_segment1,1,50);
4176       l_clev_tbl_in (1).NAME := NULL;
4177       l_clev_tbl_in (1).item_description := p_k_line_rec.srv_desc;
4178       l_clev_tbl_in (1).start_date := p_k_line_rec.srv_sdt;
4179       l_clev_tbl_in (1).end_date := p_k_line_rec.srv_edt;
4180       l_clev_tbl_in (1).exception_yn := 'N';
4181       l_clev_tbl_in (1).currency_code := p_k_line_rec.currency;
4182       l_clev_tbl_in (1).price_level_ind := priced_yn (l_lsl_id);
4183       l_clev_tbl_in (1).trn_code := p_k_line_rec.reason_code;
4184       l_clev_tbl_in (1).upg_orig_system_ref :=
4185                                               p_k_line_rec.upg_orig_system_ref;
4186       -- 04-jun-2002 Vigandhi
4187       l_clev_tbl_in (1).upg_orig_system_ref_id :=
4188                                            p_k_line_rec.upg_orig_system_ref_id;
4189 
4190       -- 04-jun-2002 Vigandhi
4191       l_clev_tbl_in (1).comments := p_k_line_rec.reason_comments;
4192       l_clev_tbl_in (1).attribute1 := p_k_line_rec.attribute1;
4193       l_clev_tbl_in (1).attribute2 := p_k_line_rec.attribute2;
4194       l_clev_tbl_in (1).attribute3 := p_k_line_rec.attribute3;
4195       l_clev_tbl_in (1).attribute4 := p_k_line_rec.attribute4;
4196       l_clev_tbl_in (1).attribute5 := p_k_line_rec.attribute5;
4197       l_clev_tbl_in (1).attribute6 := p_k_line_rec.attribute6;
4198       l_clev_tbl_in (1).attribute7 := p_k_line_rec.attribute7;
4199       l_clev_tbl_in (1).attribute8 := p_k_line_rec.attribute8;
4200       l_clev_tbl_in (1).attribute9 := p_k_line_rec.attribute9;
4201       l_clev_tbl_in (1).attribute10 := p_k_line_rec.attribute10;
4202       l_clev_tbl_in (1).attribute11 := p_k_line_rec.attribute11;
4203       l_clev_tbl_in (1).attribute12 := p_k_line_rec.attribute12;
4204       l_clev_tbl_in (1).attribute13 := p_k_line_rec.attribute13;
4205       l_clev_tbl_in (1).attribute14 := p_k_line_rec.attribute14;
4206       l_clev_tbl_in (1).attribute15 := p_k_line_rec.attribute15;
4207 ------------------------------------------
4208 -- Rules inserted by okc
4209 ------------------------------------------
4210       l_can_object := NULL;
4211       IF p_k_line_rec.warranty_flag <> 'W'
4212       THEN
4213 
4214          OPEN l_billto_csr (p_k_line_rec.bill_to_id);
4215          FETCH l_billto_csr INTO l_can_object;
4216          CLOSE l_billto_csr;
4217 
4218           --ramesh added on jan-26-01 for ib html interface
4219          IF l_can_object IS NULL
4220          THEN
4221              l_can_object := p_k_line_rec.cust_account;
4222          END IF;
4223       END IF;
4224 
4225 
4226       l_clev_tbl_in (1).cust_acct_id := l_can_object;                    --CAN
4227       l_clev_tbl_in (1).inv_rule_id := p_k_line_rec.invoicing_rule_id;   --IRE
4228       l_clev_tbl_in (1).line_renewal_type_code :=
4229                                    NVL (p_k_line_rec.line_renewal_type, 'FUL');
4230       --LRT
4231       l_clev_tbl_in (1).bill_to_site_use_id := p_k_line_rec.bill_to_id;  --BTO
4232       l_clev_tbl_in (1).ship_to_site_use_id := p_k_line_rec.ship_to_id;  --STO
4233       l_clev_tbl_in (1).price_list_id := p_k_line_rec.ln_price_list_id;
4234       -- price list
4235       okc_contract_pub.create_contract_line
4236                                        (p_api_version            => l_api_version,
4237                                         p_init_msg_list          => l_init_msg_list,
4238                                         p_restricted_update      => okc_api.g_true,
4239                                         x_return_status          => l_return_status,
4240                                         x_msg_count              => x_msg_count,
4241                                         x_msg_data               => x_msg_data,
4242                                         p_clev_tbl               => l_clev_tbl_in,
4243                                         x_clev_tbl               => l_clev_tbl_out
4244                                        );
4245 
4246       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4247       THEN
4248          fnd_log.STRING
4249                  (fnd_log.level_event,
4250                      g_module_current
4251                   || '.Create_K_Service_Lines.External_call.after',
4252                      'okc_contract_pub.create_contract_line(Return status = '
4253                   || l_return_status
4254                  );
4255       END IF;
4256 
4257       IF l_return_status = 'S'
4258       THEN
4259          l_line_id := l_clev_tbl_out (1).ID;
4260       ELSE
4261          --mmadhavi
4262          IF (p_caller = 'OC')
4263          THEN
4264             x_order_error := '#';
4265 
4266             FOR i IN 1 .. fnd_msg_pub.count_msg
4267             LOOP
4268                fnd_msg_pub.get (p_msg_index          => i,
4269                                 p_encoded            => 'T',
4270                                 p_data               => l_msg_data,
4271                                 p_msg_index_out      => l_ind
4272                                );
4273                x_order_error := x_order_error || l_msg_data || '#';
4274 
4275                IF (g_fnd_log_option = 'Y')
4276                THEN
4277                   fnd_message.set_encoded (l_msg_data);
4278                   l_msg_data := fnd_message.get;
4279                   fnd_file.put_line
4280                                (fnd_file.LOG,
4281                                    '(okc_contract_pub).create_contract_line '
4282                                 || l_msg_data
4283                                );
4284                END IF;
4285             END LOOP;
4286 
4287             RAISE g_exception_halt_validation;
4288          ELSE
4289             --mmadhavi
4290             okc_api.set_message (g_app_name,
4291                                  g_required_value,
4292                                  g_col_name_token,
4293                                  'Line (LINE)'
4294                                 );
4295             RAISE g_exception_halt_validation;
4296          END IF;
4297       END IF;
4298 
4299       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4300       THEN
4301          fnd_log.STRING (fnd_log.level_statement,
4302                          g_module_current || '.Create_K_Service_Lines',
4303                          'Line Id= ' || l_line_id
4304                         );
4305       END IF;
4306      -------------------------------------
4307       -- Get and populate the CC Trxn extension id
4308       -- and populate the oks line structure
4309       -------------------------------------
4310 
4311       -- Get the transaction extension id for the contract line
4312       IF p_k_line_rec.order_line_id IS NOT NULL THEN
4313          get_cc_trxn_extn (
4314             p_order_header_id  => NULL,
4315             p_order_line_id    => p_k_line_rec.order_line_id,
4316             p_context_level    => G_CONTEXT_ORDER_LINE,
4317             p_contract_hdr_id  => NULL,
4318             p_contract_line_id => l_line_id,
4319             x_entity_id        => l_entity_id,
4320             x_return_status    => l_return_status );
4321 
4322          IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
4323             -- Populate the oks header record with the trxn_extension_id
4324             l_klnv_tbl_in(1).trxn_extension_id := l_entity_id;
4325             IF l_entity_id IS NOT NULL THEN
4326                l_klnv_tbl_in (1).payment_type := 'CCR';  -- Credit Card
4327             END IF;
4328          ELSE
4329             FOR i IN 1 .. fnd_msg_pub.count_msg
4330             LOOP
4331                fnd_msg_pub.get (p_msg_index          => i,
4332                                 p_encoded            => 'T',
4333                                 p_data               => l_msg_data,
4334                                 p_msg_index_out      => l_ind
4335                                );
4336 
4337                IF (g_fnd_log_option = 'Y') THEN
4338                   fnd_message.set_encoded (l_msg_data);
4339                   l_msg_data := fnd_message.get;
4340                   fnd_file.put_line
4341                              (fnd_file.LOG,
4342                                  'get_cc_trxn for line'
4343                               || l_msg_data
4344                              );
4345                END IF;
4346             END LOOP;
4347             RAISE g_exception_halt_validation;
4348          END IF;
4349       END IF;
4350 
4351 -------------------------------------
4352 -- rules inserted by oks --IRT
4353 -------------------------------------
4354       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4355       THEN
4356          fnd_log.STRING (fnd_log.level_statement,
4357                          g_module_current || '.Create_K_Service_Lines',
4358                             'Accounting id = '
4359                          || p_k_line_rec.accounting_rule_id
4360                          || ',Commitment id = '
4361                          || p_k_line_rec.commitment_id
4362                         );
4363       END IF;
4364 
4365       l_klnv_tbl_in (1).cle_id := l_line_id;
4366       l_klnv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4367       --mmadhavi removing trucation of invoice_text
4368       l_klnv_tbl_in (1).invoice_text :=
4369             p_k_line_rec.srv_desc
4370          || ':'
4371          || to_char(p_k_line_rec.srv_sdt,'DD-MON-YYYY')
4372          || ':'
4373          || to_char(p_k_line_rec.srv_edt,'DD-MON-YYYY');
4374       l_klnv_tbl_in (1).created_by := okc_api.g_miss_num;
4375       l_klnv_tbl_in (1).creation_date := okc_api.g_miss_date;
4376       l_klnv_tbl_in (1).acct_rule_id := p_k_line_rec.accounting_rule_id; --ARL
4377 
4378       IF p_k_line_rec.commitment_id IS NOT NULL
4379       THEN
4380          l_klnv_tbl_in (1).payment_type := 'COM';
4381          l_klnv_tbl_in (1).commitment_id := p_k_line_rec.commitment_id;
4382       --PAYMENT METHOD
4383       END IF;
4384 
4385       l_klnv_tbl_in (1).cust_po_number_req_yn := 'N';    -- po number required
4386       l_klnv_tbl_in (1).inv_print_flag := 'Y';
4387                                 -- print flag'Changed to Y to fix bug 4188061'
4388       --Bug Fix 4121175
4389       l_klnv_tbl_in (1).tax_code := p_k_line_rec.tax_code;
4390       --End Bug Fix 4121175
4391       l_klnv_tbl_in (1).coverage_id := p_k_line_rec.coverage_template_id;
4392       l_klnv_tbl_in (1).standard_cov_yn := p_k_line_rec.standard_cov_yn;
4393       l_klnv_tbl_in (1).price_uom := p_k_line_rec.price_uom;
4394 
4395       --Added in R12 by rsu
4396       IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)
4397       THEN
4398          fnd_log.STRING (fnd_log.level_statement,
4399                          g_module_current || '.Create_K_Service_Lines',
4400                          'Before calling oks_contract_line_pub.create_line'
4401                         );
4402          fnd_log.STRING (fnd_log.level_statement,
4403                          g_module_current || '.Create_K_Service_Lines',
4404                             'p_k_line_rec.tax_classification_code: '
4405                          || p_k_line_rec.tax_classification_code
4406                         );
4407          fnd_log.STRING (fnd_log.level_statement,
4408                          g_module_current || '.Create_K_Service_Lines',
4409                             'p_k_line_rec.exempt_certificate_number: '
4410                          || p_k_line_rec.exemption_certificate_number
4411                         );
4412          fnd_log.STRING (fnd_log.level_statement,
4413                          g_module_current || '.Create_K_Service_Lines',
4414                             'p_k_line_rec.exempt_reason_code: '
4415                          || p_k_line_rec.exemption_reason_code
4416                         );
4417          fnd_log.STRING (fnd_log.level_statement,
4418                          g_module_current || '.Create_K_Service_Lines',
4419                          'p_k_line_rec.tax_status: '
4420                          || p_k_line_rec.tax_status
4421                         );
4422       END IF;
4423 
4424       l_klnv_tbl_in (1).tax_classification_code :=
4425                                           p_k_line_rec.tax_classification_code;
4426       l_klnv_tbl_in (1).exempt_certificate_number :=
4427                                      p_k_line_rec.exemption_certificate_number;
4428       l_klnv_tbl_in (1).exempt_reason_code :=
4429                                             p_k_line_rec.exemption_reason_code;
4430       l_klnv_tbl_in (1).tax_status := p_k_line_rec.tax_status;
4431       --End: Added in R12 by rsu
4432 
4433       -- Added for 120 CC EXTN(LINE) project by vjramali
4434 --      l_klnv_tbl_in (1).trxn_extension_id := p_k_line_rec.trxn_extension_id;
4435       oks_contract_line_pub.create_line (p_api_version        => l_api_version,
4436                                          p_init_msg_list      => l_init_msg_list,
4437                                          x_return_status      => l_return_status,
4438                                          x_msg_count          => x_msg_count,
4439                                          x_msg_data           => x_msg_data,
4440                                          p_klnv_tbl           => l_klnv_tbl_in,
4441                                          x_klnv_tbl           => l_klnv_tbl_out,
4442                                          p_validate_yn        => 'N'
4443                                         );
4444 
4445       IF NOT l_return_status = 'S'
4446       THEN
4447          --mmadhavi
4448          IF (p_caller = 'OC')
4449          THEN
4450             x_order_error := '#';
4451 
4452             FOR i IN 1 .. fnd_msg_pub.count_msg
4453             LOOP
4454                fnd_msg_pub.get (p_msg_index          => i,
4455                                 p_encoded            => 'T',
4456                                 p_data               => l_msg_data,
4457                                 p_msg_index_out      => l_ind
4458                                );
4459                x_order_error := x_order_error || l_msg_data || '#';
4460 
4461                IF (g_fnd_log_option = 'Y')
4462                THEN
4463                   fnd_message.set_encoded (l_msg_data);
4464                   l_msg_data := fnd_message.get;
4465                   fnd_file.put_line
4466                                    (fnd_file.LOG,
4467                                        '(oks_contract_line_pub).create_line '
4468                                     || l_msg_data
4469                                    );
4470                END IF;
4471             END LOOP;
4472 
4473             RAISE g_exception_halt_validation;
4474          ELSE
4475             --mmadhavi
4476             okc_api.set_message (g_app_name,
4477                                  g_required_value,
4478                                  g_col_name_token,
4479                                  'OKS Contract LINE'
4480                                 );
4481             RAISE g_exception_halt_validation;
4482          END IF;
4483       END IF;
4484 
4485       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4486       THEN
4487          fnd_log.STRING
4488                     (fnd_log.level_event,
4489                         g_module_current
4490                      || '.Create_K_Service_Lines.external_call.after',
4491                         'oks_contract_line_pub.create_line (Return status = '
4492                      || l_return_status
4493                      || ')'
4494                     );
4495       END IF;
4496 
4497       okc_time_util_pub.get_duration (p_start_date         => p_k_line_rec.srv_sdt,
4498                                       p_end_date           => p_k_line_rec.srv_edt,
4499                                       x_duration           => l_duration,
4500                                       x_timeunit           => l_timeunits,
4501                                       x_return_status      => l_return_status
4502                                      );
4503 
4504       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4505       THEN
4506          fnd_log.STRING (fnd_log.level_event,
4507                             g_module_current
4508                          || '.Create_K_Service_Lines.external_call.after',
4509                             'okc_time_util_pub.get_duration(Return status = '
4510                          || l_return_status
4511                          || ')'
4512                         );
4513       END IF;
4514 
4515       IF NOT l_return_status = 'S'
4516       THEN
4517          RAISE g_exception_halt_validation;
4518       END IF;
4519 
4520       --Create Contract Item
4521       l_cimv_tbl_in (1).cle_id := l_line_id;
4522       l_cimv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4523       l_cimv_tbl_in (1).object1_id1 := p_k_line_rec.srv_id;
4524 
4525         /*spingali- bugfix for bug12747411 - start*/
4526           OPEN get_k_inv_org(p_k_line_rec.k_id);
4527           FETCH get_k_inv_org INTO l_inv_org_id;
4528           CLOSE get_k_inv_org;
4529 
4530           IF (Nvl(OKS_EXTWARPRGM_PVT.G_TRF_K_CREATE,'N') ='Y') AND (l_inv_org_id<>(nvl(OKC_CONTEXT.GET_OKC_ORG_ID,-99)))THEN
4531               l_cimv_tbl_in( 1 ).object1_id2       := l_inv_org_id;
4532           ELSE
4533               l_cimv_tbl_in( 1 ).object1_id2       := okc_context.get_okc_organization_id;
4534           END IF;
4535           /*spingali bugfix for bug12747411 - end */
4536       ---l_cimv_tbl_in (1).object1_id2 := okc_context.get_okc_organization_id;
4537       l_cimv_tbl_in (1).jtot_object1_code := l_jtot_object;
4538       l_cimv_tbl_in (1).exception_yn := 'N';
4539 /*Modified for ER 16036980*/
4540       IF l_lsl_id <> 46 THEN
4541       l_cimv_tbl_in (1).number_of_items := l_duration;
4542       l_cimv_tbl_in (1).uom_code := l_timeunits;
4543 ELSE
4544       OPEN l_pricing_qty(p_k_line_rec.order_line_id);
4545       FETCH l_pricing_qty INTO l_prc_qty,l_prc_uom;
4546       CLOSE l_pricing_qty;
4547       l_cimv_tbl_in (1).number_of_items := l_prc_qty;
4548       l_cimv_tbl_in (1).uom_code := l_prc_uom;
4549       END IF;
4550       /*Modified for ER 16036980*/
4551       okc_contract_item_pub.create_contract_item
4552                                           (p_api_version        => l_api_version,
4553                                            p_init_msg_list      => l_init_msg_list,
4554                                            x_return_status      => l_return_status,
4555                                            x_msg_count          => x_msg_count,
4556                                            x_msg_data           => x_msg_data,
4557                                            p_cimv_tbl           => l_cimv_tbl_in,
4558                                            x_cimv_tbl           => l_cimv_tbl_out
4559                                           );
4560 
4561       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4562       THEN
4563          fnd_log.STRING
4564             (fnd_log.level_event,
4565              g_module_current || '.Create_K_Service_Lines.external_call.after',
4566                 'okc_contract_item_pub.create_contract_item(Return status = '
4567              || l_return_status
4568              || ')'
4569             );
4570       END IF;
4571 
4572       IF l_return_status = 'S'
4573       THEN
4574          l_line_item_id := l_cimv_tbl_out (1).ID;
4575       ELSE
4576          okc_api.set_message (g_app_name,
4577                               g_required_value,
4578                               g_col_name_token,
4579                                  'Service Inventory Item ID '
4580                               || p_k_line_rec.srv_id
4581                               || ' ORG '
4582                               +  okc_context.get_okc_organization_id
4583                              );
4584          RAISE g_exception_halt_validation;
4585       END IF;
4586 
4587       --Create SalesCredits
4588       IF p_salescredit_tbl_in.COUNT > 0
4589       THEN
4590          i := p_salescredit_tbl_in.FIRST;
4591 
4592          LOOP
4593             l_scrv_tbl_in (1).PERCENT := p_salescredit_tbl_in (i).PERCENT;
4594             l_scrv_tbl_in (1).chr_id := p_k_line_rec.k_id;
4595             l_scrv_tbl_in (1).cle_id := l_line_id;
4596             l_scrv_tbl_in (1).ctc_id := p_salescredit_tbl_in (i).ctc_id;
4597             l_scrv_tbl_in (1).sales_credit_type_id1 :=
4598                                 p_salescredit_tbl_in (i).sales_credit_type_id;
4599             l_scrv_tbl_in (1).sales_credit_type_id2 := '#';
4600             l_scrv_tbl_in (1).sales_group_id :=
4601                                       p_salescredit_tbl_in (i).sales_group_id;
4602             oks_sales_credit_pub.insert_sales_credit
4603                                          (p_api_version        => 1.0,
4604                                           p_init_msg_list      => okc_api.g_false,
4605                                           x_return_status      => x_return_status,
4606                                           x_msg_count          => x_msg_count,
4607                                           x_msg_data           => x_msg_data,
4608                                           p_scrv_tbl           => l_scrv_tbl_in,
4609                                           x_scrv_tbl           => l_scrv_tbl_out
4610                                          );
4611 
4612             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4613             THEN
4614                fnd_log.STRING
4615                   (fnd_log.level_event,
4616                       g_module_current
4617                    || '.Create_K_Service_Lines.external_call.after',
4618                       'oks_sales_credit_pub.insert_sales_credit(Return status = '
4619                    || l_return_status
4620                    || ')'
4621                   );
4622             END IF;
4623 
4624             IF l_return_status = 'S'
4625             THEN
4626                l_salescredit_id := l_scrv_tbl_out (1).ID;
4627             ELSE
4628                okc_api.set_message (g_app_name,
4629                                     g_required_value,
4630                                     g_col_name_token,
4631                                     'Sales Credit Failure'
4632                                    );
4633                RAISE g_exception_halt_validation;
4634             END IF;
4635 
4636             EXIT WHEN i = p_salescredit_tbl_in.LAST;
4637             i := p_salescredit_tbl_in.NEXT (i);
4638          END LOOP;
4639       END IF;
4640 
4641       --CONTACT CREATION ROUT NOCOPY INE STARTS
4642       IF p_contact_tbl.COUNT > 0
4643       THEN
4644          i := p_contact_tbl.FIRST;
4645 
4646          LOOP
4647             IF p_contact_tbl (i).flag = 'H'
4648             THEN
4649                l_lin_party_id := NULL;
4650                l_lin_contactid := NULL;
4651 
4652                OPEN l_ra_hcontacts_cur (p_contact_tbl (i).contact_id);
4653 
4654                FETCH l_ra_hcontacts_cur
4655                 INTO l_lin_party_id, l_lin_contactid;
4656 
4657                CLOSE l_ra_hcontacts_cur;
4658 
4659                IF i = p_contact_tbl.FIRST
4660                THEN
4661                   IF p_k_line_rec.warranty_flag = 'SU'
4662                   THEN
4663                      l_rle_code := 'SUBSCRIBER';
4664                   ELSE
4665                      l_rle_code := 'CUSTOMER';
4666                   END IF;
4667 
4668                   party_role (p_chrid              => p_k_line_rec.k_id,
4669                               p_cleid              => l_line_id,
4670                               p_rle_code           => l_rle_code,
4671                               p_partyid            => l_lin_party_id,
4672                               p_object_code        => g_jtf_party,
4673                               x_roleid             => l_line_party_role_id,
4674                               x_msg_count          => x_msg_count,
4675                               x_msg_data           => x_msg_data,
4676                               x_return_status      => l_return_status
4677                              );
4678 
4679                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
4680                      )
4681                   THEN
4682                      fnd_log.STRING
4683                                  (fnd_log.level_event,
4684                                      g_module_current
4685                                   || '.Create_K_Service_Lines.contact_creation',
4686                                      'party_role(Return status = '
4687                                   || l_return_status
4688                                   || ')'
4689                                   || 'CPL id = '
4690                                   || l_line_party_role_id
4691                                  );
4692                   END IF;
4693 
4694                   IF NOT l_return_status = okc_api.g_ret_sts_success
4695                   THEN
4696                      x_return_status := l_return_status;
4697                      RAISE g_exception_halt_validation;
4698                   END IF;
4699                END IF;
4700 
4701                IF p_contact_tbl (i).contact_role LIKE '%BILLING%'
4702                THEN
4703                   l_role := 'CUST_BILLING';
4704                   l_obj := 'OKX_CONTBILL';
4705                ELSIF p_contact_tbl (i).contact_role LIKE '%ADMIN%'
4706                THEN
4707                   l_role := 'CUST_ADMIN';
4708                   l_obj := 'OKX_CONTADMN';
4709                ELSIF p_contact_tbl (i).contact_role LIKE '%SHIP%'
4710                THEN
4711                   l_role := 'CUST_SHIPPING';
4712                   l_obj := 'OKX_CONTSHIP';
4713                END IF;
4714 
4715                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
4716                THEN
4717                   fnd_log.STRING (fnd_log.level_statement,
4718                                      g_module_current
4719                                   || '.Create_K_Service_Lines.before_contact',
4720                                      'Line Party Id = '
4721                                   || l_lin_party_id
4722                                   || ',ORG CTC Id = '
4723                                   || p_contact_tbl (i).contact_id
4724                                   || ',RAH CTC Id = '
4725                                   || l_lin_contactid
4726                                   || ',Cont rule = '
4727                                   || p_contact_tbl (i).contact_role
4728                                   || ',CON OBJ Rule = '
4729                                   || p_contact_tbl (i).contact_object_code
4730                                  );
4731                END IF;
4732 
4733                l_ctcv_tbl_in (1).cpl_id := l_line_party_role_id;
4734                l_ctcv_tbl_in (1).dnz_chr_id := p_k_line_rec.k_id;
4735                l_ctcv_tbl_in (1).cro_code := l_role;
4736                l_ctcv_tbl_in (1).object1_id1 := p_contact_tbl (i).contact_id;
4737                l_ctcv_tbl_in (1).object1_id2 := '#';
4738                l_ctcv_tbl_in (1).jtot_object1_code := l_obj;
4739                okc_contract_party_pub.create_contact
4740                                           (p_api_version        => l_api_version,
4741                                            p_init_msg_list      => l_init_msg_list,
4742                                            x_return_status      => l_return_status,
4743                                            x_msg_count          => x_msg_count,
4744                                            x_msg_data           => x_msg_data,
4745                                            p_ctcv_tbl           => l_ctcv_tbl_in,
4746                                            x_ctcv_tbl           => l_ctcv_tbl_out
4747                                           );
4748 
4749                IF l_return_status = 'S'
4750                THEN
4751                   l_line_contact_id := l_ctcv_tbl_out (1).ID;
4752                ELSE
4753                   okc_api.set_message (g_app_name,
4754                                        g_required_value,
4755                                        g_col_name_token,
4756                                           p_contact_tbl (i).contact_role
4757                                        || ' Contact (LINE) '
4758                                        || p_contact_tbl (i).contact_object_code
4759                                       );
4760                   RAISE g_exception_halt_validation;
4761                END IF;
4762             END IF;
4763 
4764             EXIT WHEN i = p_contact_tbl.LAST;
4765             i := p_contact_tbl.NEXT (i);
4766          END LOOP;
4767       END IF;
4768 
4769       IF p_k_line_rec.coverage_template_id IS NOT NULL and p_caller <> 'ST'
4770       THEN
4771          fnd_msg_pub.initialize;
4772          oks_coverages_pvt.create_k_coverage_ext
4773                          (p_api_version        => 1,
4774                           p_init_msg_list      => 'T',
4775                           p_src_line_id        => p_k_line_rec.coverage_template_id,
4776                           p_tgt_line_id        => l_line_id,
4777                           x_return_status      => l_return_status,
4778                           x_msg_count          => x_msg_count,
4779                           x_msg_data           => x_msg_data
4780                          );
4781 
4782          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4783          THEN
4784             fnd_log.STRING
4785                (fnd_log.level_event,
4786                    g_module_current
4787                 || '.Create_K_Service_Lines.after_coverage_ext',
4788                    'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
4789                 || l_return_status
4790                 || ')'
4791                );
4792          END IF;
4793 
4794          IF NOT l_return_status = okc_api.g_ret_sts_success
4795          THEN
4796             IF (p_caller = 'OC')
4797             THEN
4798                fnd_message.set_name (g_app_name, 'OKS_INVD_COV_TEMP');
4799                fnd_message.set_token (token      => 'SERV_ID',
4800                                       VALUE      => p_k_line_rec.srv_id
4801                                      );
4802                x_order_error := '#' || fnd_message.get_encoded || '#';
4803             ELSE
4804                okc_api.set_message (g_app_name,
4805                                     g_required_value,
4806                                     g_col_name_token,
4807                                        'Invalid Coverage Associated with  '
4808                                     || p_k_line_rec.srv_id
4809                                    );
4810             END IF;
4811 
4812             RAISE g_exception_halt_validation;
4813          END IF;
4814       ELSIF p_k_line_rec.coverage_template_id IS NULL AND p_caller <> 'ST' AND l_lsl_id <> 46   ---Modified for ER 16036980
4815       THEN
4816          IF fnd_log.level_error >= fnd_log.g_current_runtime_level
4817          THEN
4818             fnd_log.STRING (fnd_log.level_error,
4819                             g_module_current
4820                             || '.Create_K_Service_Lines.ERROR',
4821                                'Coverage is not associated with '
4822                             || p_k_line_rec.srv_id
4823                            );
4824          END IF;
4825 
4826          l_return_status := okc_api.g_ret_sts_error;
4827          okc_api.set_message (g_app_name,
4828                               g_required_value,
4829                               g_col_name_token,
4830                                  'Coverage Not Associated with  '
4831                               || p_k_line_rec.srv_id
4832                              );
4833          RAISE g_exception_halt_validation;
4834 
4835       /*Added for  ER 16036980 */
4836       ELSE
4837        IF p_k_line_rec.coverage_template_id IS NULL AND l_lsl_id = 46 THEN
4838         OPEN get_subs_dtls(p_k_line_rec.order_line_id);
4839         FETCH get_subs_dtls INTO l_subsc_template_id;
4840         CLOSE get_subs_dtls;
4841 
4842        OKS_OCINT_PUB.OM_subscription_schedule (p_api_version => 1.0,
4843                  p_init_msg_list => 'F',
4844                  x_return_status => l_return_status,
4845                  x_msg_count     => l_msg_count,
4846                  x_msg_data      => l_msg_data,
4847                  p_cle_id        => l_line_id,
4848                  p_template_id   => l_subsc_template_id);
4849 
4850         IF NOT l_return_status = okc_api.g_ret_sts_success
4851          THEN
4852             IF (p_caller = 'OC')
4853             THEN
4854                fnd_message.set_name (g_app_name, 'OKS_INVD_COV_TEMP');
4855                fnd_message.set_token (token      => 'SERV_ID',
4856                                       VALUE      => p_k_line_rec.srv_id
4857                                      );
4858                x_order_error := '#' || fnd_message.get_encoded || '#';
4859             ELSE
4860                okc_api.set_message (g_app_name,
4861                                     g_required_value,
4862                                     g_col_name_token,
4863                                        'Invalid subscription template Associated with  '
4864                                     || p_k_line_rec.srv_id
4865                                    );
4866             END IF;
4867 
4868             RAISE g_exception_halt_validation;
4869 
4870          END IF;
4871 
4872         END IF;
4873       /*Added for ER 16036980 */
4874       END IF;
4875 
4876       l_ctr_grpid := NULL;
4877 
4878       OPEN l_ctr_csr (p_k_line_rec.srv_id);
4879 
4880       FETCH l_ctr_csr
4881        INTO l_ctr_grpid;
4882 
4883       CLOSE l_ctr_csr;
4884 
4885       IF l_ctr_grpid IS NOT NULL AND l_lsl_id <> 46  ---Modified for ER 16036980
4886       THEN
4887          cs_counters_pub.autoinstantiate_counters
4888                          (p_api_version                    => 1.0,
4889                           p_init_msg_list                  => okc_api.g_false,
4890                           p_commit                         => 'F',
4891                           x_return_status                  => l_return_status,
4892                           x_msg_count                      => x_msg_count,
4893                           x_msg_data                       => x_msg_data,
4894                           p_source_object_id_template      => p_k_line_rec.srv_id,
4895                           p_source_object_id_instance      => l_line_id,
4896                           x_ctr_grp_id_template            => l_ctr_grp_id_template,
4897                           x_ctr_grp_id_instance            => l_ctr_grp_id_instance
4898                          );
4899 
4900          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
4901          THEN
4902             fnd_log.STRING
4903                (fnd_log.level_event,
4904                    g_module_current
4905                 || '.Create_K_Service_Lines.after_instantiate_counters',
4906                    'cs_counters_pub.autoinstantiate_counters(Return Status = '
4907                 || l_return_status
4908                 || ')'
4909                );
4910          END IF;
4911 
4912          IF NOT l_return_status = okc_api.g_ret_sts_success
4913          THEN
4914             okc_api.set_message (g_app_name,
4915                                  g_required_value,
4916                                  g_col_name_token,
4917                                  'Counter Instantiate (LINE)'
4918                                 );
4919             RAISE g_exception_halt_validation;
4920          END IF;
4921 
4922          -- To instantiate the events
4923          l_inp_rec.ins_ctr_grp_id := l_ctr_grp_id_instance;
4924          l_inp_rec.tmp_ctr_grp_id := l_ctr_grp_id_template;
4925          l_inp_rec.chr_id := p_k_line_rec.k_id;
4926          l_inp_rec.cle_id := l_line_id;
4927          l_inp_rec.jtot_object_code := 'OKC_K_LINE';
4928          l_inp_rec.inv_item_id := p_k_line_rec.srv_id;
4929          okc_inst_cnd_pub.inst_condition (p_api_version          => 1.0,
4930                                           p_init_msg_list        => 'T',
4931                                           x_return_status        => x_return_status,
4932                                           x_msg_count            => x_msg_count,
4933                                           x_msg_data             => x_msg_data,
4934                                           p_instcnd_inp_rec      => l_inp_rec
4935                                          );
4936       END IF;
4937 
4938       x_service_line_id := l_line_id;
4939    EXCEPTION
4940       WHEN g_exception_halt_validation
4941       THEN
4942          x_return_status := l_return_status;
4943       WHEN OTHERS
4944       THEN
4945          x_return_status := okc_api.g_ret_sts_unexp_error;
4946          okc_api.set_message (g_app_name,
4947                               g_unexpected_error,
4948                               g_sqlcode_token,
4949                               SQLCODE,
4950                               g_sqlerrm_token,
4951                               SQLERRM
4952                              );
4953    END create_k_service_lines;
4954 
4955    PROCEDURE create_k_covered_levels (
4956       p_k_covd_rec      IN              k_line_covered_level_rec_type,
4957       p_price_attribs   IN              pricing_attributes_type,
4958       p_caller          IN              VARCHAR2,
4959       x_order_error     OUT NOCOPY      VARCHAR2,
4960       x_covlvl_id       OUT NOCOPY      NUMBER,
4961       x_update_line     OUT NOCOPY      VARCHAR2,
4962       x_return_status   OUT NOCOPY      VARCHAR2,
4963       x_msg_count       OUT NOCOPY      NUMBER,
4964       x_msg_data        OUT NOCOPY      VARCHAR2
4965    )
4966    IS
4967       l_api_version     CONSTANT NUMBER                                := 1.0;
4968       l_init_msg_list   CONSTANT VARCHAR2 (1)              := okc_api.g_false;
4969       l_return_status            VARCHAR2 (1)                          := 'S';
4970       l_index                    VARCHAR2 (2000);
4971       --Contract Line Table
4972       l_clev_tbl_in              okc_contract_pub.clev_tbl_type;
4973       l_clev_tbl_out             okc_contract_pub.clev_tbl_type;
4974       l_klnv_tbl_in              oks_kln_pvt.klnv_tbl_type;
4975       l_klnv_tbl_out             oks_kln_pvt.klnv_tbl_type;
4976       --Contract Item
4977       l_cimv_tbl                 okc_contract_item_pub.cimv_tbl_type;
4978       l_cimv_tbl_out             okc_contract_item_pub.cimv_tbl_type;
4979       --Pricing Attributes
4980       l_pavv_tbl_in              okc_price_adjustment_pvt.pavv_tbl_type;
4981       l_pavv_tbl_out             okc_price_adjustment_pvt.pavv_tbl_type;
4982       --Rule Related
4983       --l_rgpv_tbl_in                 okc_rule_pub.rgpv_tbl_type;
4984       --l_rgpv_tbl_out                okc_rule_pub.rgpv_tbl_type;
4985       --l_rulv_tbl_in                 okc_rule_pub.rulv_tbl_type;
4986       --l_rulv_tbl_out                okc_rule_pub.rulv_tbl_type;
4987       --Return IDs
4988       l_line_id                  NUMBER;
4989       l_rule_group_id            NUMBER;
4990       l_rule_id                  NUMBER;
4991       l_line_item_id             NUMBER;
4992       l_lsl_id                   NUMBER;
4993       l_hdrsdt                   DATE;
4994       l_hdredt                   DATE;
4995       l_line_sdt                 DATE;
4996       l_line_edt                 DATE;
4997       l_hdrstatus                VARCHAR2 (3);
4998       l_line_status              VARCHAR2 (3);
4999       l_priceattrib_id           NUMBER;
5000       l_invoice_text             VARCHAR2 (2000);
5001       --Obj Rel
5002       l_crjv_tbl_out             okc_k_rel_objs_pub.crjv_tbl_type;
5003       l_msg_data                 VARCHAR2 (2000);
5004       l_ind                      NUMBER;
5005       l_ste_code                 VARCHAR2 (240);
5006       l_sts_code                 VARCHAR2 (240);
5007       g_rail_rec                 oks_tax_util_pvt.ra_rec_type;
5008 
5009       CURSOR l_line_csr (p_line_id NUMBER)
5010       IS
5011          SELECT kl.start_date, kl.end_date, kl.inv_rule_id
5012            FROM okc_k_lines_b kl
5013           WHERE kl.ID = p_line_id;
5014 
5015       l_duration                 NUMBER;
5016       l_timeunits                VARCHAR2 (25);
5017       l_sll_tbl                  oks_bill_sch.streamlvl_tbl;
5018       l_bil_sch_out              oks_bill_sch.itembillsch_tbl;
5019       l_strmlvl_id               NUMBER                               := NULL;
5020       l_update_top_line          VARCHAR2 (1);
5021       l_start_date               DATE;
5022       l_end_date                 DATE;
5023       l_invoice_rule_id          VARCHAR2 (10);
5024       l_sts_flag                 VARCHAR2 (1);
5025    BEGIN
5026       x_return_status := okc_api.g_ret_sts_success;
5027       x_update_line := 'N';
5028       check_line_effectivity (p_cle_id        => p_k_covd_rec.attach_2_line_id,
5029                               p_srv_sdt       => p_k_covd_rec.product_start_date,
5030                               p_srv_edt       => p_k_covd_rec.product_end_date,
5031                               x_line_sdt      => l_line_sdt,
5032                               x_line_edt      => l_line_edt,
5033                               x_status        => l_line_status
5034                              );
5035 
5036       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
5037       THEN
5038          fnd_log.STRING (fnd_log.level_statement,
5039                          g_module_current || '.Create_K_Covered_Levels',
5040                          'Check line effectivity status = ' || l_line_status
5041                         );
5042       END IF;
5043 
5044       IF l_line_status = 'E'
5045       THEN
5046          IF fnd_log.level_error >= fnd_log.g_current_runtime_level
5047          THEN
5048             fnd_log.STRING
5049                        (fnd_log.level_error,
5050                         g_module_current || '.Create_K_Covered_Levels.ERROR',
5051                         'Covered level Dates are not within Line effectivity'
5052                        );
5053          END IF;
5054 
5055          okc_api.set_message (g_app_name,
5056                               g_unexpected_error,
5057                               g_sqlcode_token,
5058                               SQLCODE,
5059                               g_sqlerrm_token,
5060                               'Covlvl Dates not within Line effectivity'
5061                              );
5062          l_return_status := okc_api.g_ret_sts_error;
5063          RAISE g_exception_halt_validation;
5064       ELSIF l_line_status = 'Y'
5065       THEN
5066          check_hdr_effectivity (p_chr_id       => p_k_covd_rec.k_id,
5067                                 p_srv_sdt      => l_line_sdt,
5068                                 p_srv_edt      => l_line_edt,
5069                                 x_hdr_sdt      => l_hdrsdt,
5070                                 x_hdr_edt      => l_hdredt,
5071                                 x_status       => l_hdrstatus
5072                                );
5073 
5074          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
5075          THEN
5076             fnd_log.STRING (fnd_log.level_statement,
5077                             g_module_current || '.Create_K_Covered_Levels',
5078                             'Check Header effectivity status = '
5079                             || l_hdrstatus
5080                            );
5081          END IF;
5082 
5083          IF l_hdrstatus = 'E'
5084          THEN
5085             IF fnd_log.level_error >= fnd_log.g_current_runtime_level
5086             THEN
5087                fnd_log.STRING (fnd_log.level_error,
5088                                g_module_current || '.Create_K_Covered_Levels',
5089                                'Line Dates are not within Header effectivity'
5090                               );
5091             END IF;
5092 
5093             okc_api.set_message (g_app_name,
5094                                  g_unexpected_error,
5095                                  g_sqlcode_token,
5096                                  SQLCODE,
5097                                  g_sqlerrm_token,
5098                                  'line Dates not within Hdr effectivity'
5099                                 );
5100             l_return_status := okc_api.g_ret_sts_error;
5101             RAISE g_exception_halt_validation;
5102          ELSIF l_hdrstatus = 'Y'
5103          THEN
5104             get_sts_code (NULL,
5105                           p_k_covd_rec.product_sts_code,
5106                           l_ste_code,
5107                           l_sts_code
5108                          );
5109 
5110             IF l_ste_code = 'ENTERED'
5111             THEN
5112                l_sts_flag := 'N';
5113             ELSE
5114                l_sts_flag := 'Y';
5115             END IF;
5116 
5117             update_hdr_dates (p_chr_id         => p_k_covd_rec.k_id,
5118                               p_new_sdt        => l_hdrsdt,
5119                               p_new_edt        => l_hdredt,
5120                               p_sts_flag       => l_sts_flag,
5121                               x_status         => l_return_status,
5122                               x_msg_count      => x_msg_count,
5123                               x_msg_data       => x_msg_data
5124                              );
5125 
5126             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5127             THEN
5128                fnd_log.STRING
5129                              (fnd_log.level_event,
5130                                  g_module_current
5131                               || '.Create_K_Covered_Levels.afterupdatehdrdtaes',
5132                                  'update_hdr_dates(Return status = '
5133                               || l_return_status
5134                               || ')'
5135                              );
5136             END IF;
5137 
5138             IF NOT l_return_status = 'S'
5139             THEN
5140                l_return_status := okc_api.g_ret_sts_error;
5141                okc_api.set_message (g_app_name,
5142                                     g_required_value,
5143                                     g_col_name_token,
5144                                     'Header Effectivity Update (SUB LINE)'
5145                                    );
5146                RAISE g_exception_halt_validation;
5147             END IF;
5148          END IF;
5149 
5150          IF p_k_covd_rec.product_sts_code = 'ENTERED'
5151          THEN
5152             l_sts_flag := 'N';
5153          ELSE
5154             l_sts_flag := 'Y';
5155          END IF;
5156 
5157          update_line_dates (p_cle_id             => p_k_covd_rec.attach_2_line_id,
5158                             p_chr_id             => p_k_covd_rec.k_id,
5159                             p_new_sdt            => l_line_sdt,
5160                             p_new_edt            => l_line_edt,
5161                             p_sts_flag           => l_sts_flag,
5162                             p_warranty_flag      => p_k_covd_rec.warranty_flag,
5163                             x_status             => l_return_status,
5164                             x_msg_count          => x_msg_count,
5165                             x_msg_data           => x_msg_data
5166                            );
5167 
5168          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5169          THEN
5170             fnd_log.STRING
5171                          (fnd_log.level_event,
5172                              g_module_current
5173                           || '.Create_K_Covered_Levels.after_update.line_dtaes',
5174                              'update_hdr_dates(Return status = '
5175                           || l_return_status
5176                           || ')'
5177                          );
5178          END IF;
5179 
5180          IF NOT l_return_status = 'S'
5181          THEN
5182             l_return_status := okc_api.g_ret_sts_error;
5183             okc_api.set_message (g_app_name,
5184                                  g_required_value,
5185                                  g_col_name_token,
5186                                  'LINE Effectivity Update (SUB LINE)'
5187                                 );
5188             RAISE g_exception_halt_validation;
5189          ELSE
5190             x_update_line := 'Y';
5191          END IF;
5192 
5193          oks_pm_programs_pvt.adjust_pm_program_schedule
5194                          (p_api_version           => 1.0,
5195                           p_init_msg_list         => 'F',
5196                           p_contract_line_id      => p_k_covd_rec.attach_2_line_id,
5197                           p_new_start_date        => l_line_sdt,
5198                           p_new_end_date          => l_line_edt,
5199                           x_return_status         => l_return_status,
5200                           x_msg_count             => x_msg_count,
5201                           x_msg_data              => x_msg_data
5202                          );
5203 
5204          IF NOT l_return_status = 'S'
5205          THEN
5206             l_return_status := okc_api.g_ret_sts_error;
5207             okc_api.set_message (g_app_name,
5208                                  g_required_value,
5209                                  g_col_name_token,
5210                                  'Adjust PM Program Schedule(SUB LINE)'
5211                                 );
5212             RAISE g_exception_halt_validation;
5213          END IF;
5214 
5215          IF p_k_covd_rec.standard_coverage = 'N'
5216          THEN
5217             oks_coverages_pub.update_cov_eff
5218                          (p_api_version          => 1.0,
5219                           p_init_msg_list        => 'F',
5220                           x_return_status        => l_return_status,
5221                           x_msg_count            => x_msg_count,
5222                           x_msg_data             => x_msg_data,
5223                           p_service_line_id      => p_k_covd_rec.attach_2_line_id,
5224                           p_new_start_date       => l_line_sdt,
5225                           p_new_end_date         => l_line_edt
5226                          );
5227 
5228             IF NOT l_return_status = 'S'
5229             THEN
5230                l_return_status := okc_api.g_ret_sts_error;
5231                okc_api.set_message (g_app_name,
5232                                     g_required_value,
5233                                     g_col_name_token,
5234                                     'Coverage Effectivity Update (SUB LINE)'
5235                                    );
5236                RAISE g_exception_halt_validation;
5237             END IF;
5238          END IF;
5239       END IF;
5240 
5241       IF p_k_covd_rec.warranty_flag = 'W'
5242       THEN
5243          l_lsl_id := 18;
5244       ELSIF p_k_covd_rec.warranty_flag = 'E'
5245       THEN
5246          l_lsl_id := 25;
5247       ELSIF p_k_covd_rec.warranty_flag IN ('S', 'SU')
5248       THEN
5249          l_lsl_id := 9;
5250       END IF;
5251 
5252       l_clev_tbl_in (1).chr_id := NULL;
5253       l_clev_tbl_in (1).sfwt_flag := 'N';
5254       l_clev_tbl_in (1).lse_id := l_lsl_id;
5255       --l_clev_tbl_in(1).line_number            := p_k_covd_rec.line_number;
5256       l_clev_tbl_in (1).line_number :=
5257          get_sub_line_number (p_k_covd_rec.k_id,
5258                               p_k_covd_rec.attach_2_line_id);
5259       l_clev_tbl_in (1).sts_code := p_k_covd_rec.product_sts_code;
5260       l_clev_tbl_in (1).display_sequence := 2;
5261       l_clev_tbl_in (1).dnz_chr_id := p_k_covd_rec.k_id;
5262       --l_clev_tbl_in(1).name                   := Substr(p_k_covd_rec.Product_segment1,1,50);
5263       l_clev_tbl_in (1).NAME := NULL;
5264       l_clev_tbl_in (1).item_description := p_k_covd_rec.product_desc;
5265       l_clev_tbl_in (1).start_date := p_k_covd_rec.product_start_date;
5266       l_clev_tbl_in (1).end_date := p_k_covd_rec.product_end_date;
5267       l_clev_tbl_in (1).exception_yn := 'N';
5268       l_clev_tbl_in (1).price_negotiated := Nvl(p_k_covd_rec.negotiated_amount,0);
5269       l_clev_tbl_in (1).currency_code := p_k_covd_rec.currency_code;
5270       l_clev_tbl_in (1).price_unit := Nvl(p_k_covd_rec.list_price,0);
5271       l_clev_tbl_in (1).cle_id := p_k_covd_rec.attach_2_line_id;
5272       l_clev_tbl_in (1).price_level_ind := priced_yn (l_lsl_id);
5273       l_clev_tbl_in (1).trn_code := p_k_covd_rec.reason_code;
5274       l_clev_tbl_in (1).comments := p_k_covd_rec.reason_comments;
5275       --l_clev_tbl_in(1).translated_text        := p_k_covd_rec.translated_text;
5276       l_clev_tbl_in (1).upg_orig_system_ref :=
5277                                               p_k_covd_rec.upg_orig_system_ref;
5278       -- 04-jun-2002 Vigandhi
5279       l_clev_tbl_in (1).upg_orig_system_ref_id :=
5280                                            p_k_covd_rec.upg_orig_system_ref_id;
5281       -- 04-jun-2002 Vigandhi
5282       l_clev_tbl_in (1).attribute1 := p_k_covd_rec.attribute1;
5283       l_clev_tbl_in (1).attribute2 := p_k_covd_rec.attribute2;
5284       l_clev_tbl_in (1).attribute3 := p_k_covd_rec.attribute3;
5285       l_clev_tbl_in (1).attribute4 := p_k_covd_rec.attribute4;
5286       l_clev_tbl_in (1).attribute5 := p_k_covd_rec.attribute5;
5287       l_clev_tbl_in (1).attribute6 := p_k_covd_rec.attribute6;
5288       l_clev_tbl_in (1).attribute7 := p_k_covd_rec.attribute7;
5289       l_clev_tbl_in (1).attribute8 := p_k_covd_rec.attribute8;
5290       l_clev_tbl_in (1).attribute9 := p_k_covd_rec.attribute9;
5291       l_clev_tbl_in (1).attribute10 := p_k_covd_rec.attribute10;
5292       l_clev_tbl_in (1).attribute11 := p_k_covd_rec.attribute11;
5293       l_clev_tbl_in (1).attribute12 := p_k_covd_rec.attribute12;
5294       l_clev_tbl_in (1).attribute13 := p_k_covd_rec.attribute13;
5295       l_clev_tbl_in (1).attribute14 := p_k_covd_rec.attribute14;
5296       l_clev_tbl_in (1).attribute15 := p_k_covd_rec.attribute15;
5297       --  rules inserted by okc
5298       l_clev_tbl_in (1).line_renewal_type_code :=
5299                                    NVL (p_k_covd_rec.line_renewal_type, 'FUL');
5300       --LRT
5301       okc_contract_pub.create_contract_line
5302                                        (p_api_version            => l_api_version,
5303                                         p_init_msg_list          => l_init_msg_list,
5304                                         p_restricted_update      => okc_api.g_true,
5305                                         x_return_status          => l_return_status,
5306                                         x_msg_count              => x_msg_count,
5307                                         x_msg_data               => x_msg_data,
5308                                         p_clev_tbl               => l_clev_tbl_in,
5309                                         x_clev_tbl               => l_clev_tbl_out
5310                                        );
5311 
5312       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5313       THEN
5314          fnd_log.STRING
5315                  (fnd_log.level_event,
5316                      g_module_current
5317                   || '.Create_K_Covered_Levels.after_create.top_line',
5318                      'okc_contract_pub.create_contract_line(Return status = '
5319                   || l_return_status
5320                   || ')'
5321                  );
5322       END IF;
5323 
5324       IF l_return_status = 'S'
5325       THEN
5326          l_line_id := l_clev_tbl_out (1).ID;
5327       ELSE
5328          --mmadhavi
5329          IF (p_caller = 'OC')
5330          THEN
5331             x_order_error := '#';
5332 
5333             FOR i IN 1 .. fnd_msg_pub.count_msg
5334             LOOP
5335                fnd_msg_pub.get (p_msg_index          => i,
5336                                 p_encoded            => 'T',
5337                                 p_data               => l_msg_data,
5338                                 p_msg_index_out      => l_ind
5339                                );
5340                x_order_error := x_order_error || l_msg_data || '#';
5341 
5342                IF (g_fnd_log_option = 'Y')
5343                THEN
5344                   fnd_message.set_encoded (l_msg_data);
5345                   l_msg_data := fnd_message.get;
5346                   fnd_file.put_line
5347                                (fnd_file.LOG,
5348                                    '(OKC_CONTRACT_PUB).CREATE_CONTRACT_LINE '
5349                                 || l_msg_data
5350                                );
5351                END IF;
5352             END LOOP;
5353 
5354             RAISE g_exception_halt_validation;
5355          ELSE
5356             --mmadhavi
5357             okc_api.set_message (g_app_name,
5358                                  g_required_value,
5359                                  g_col_name_token,
5360                                  'K LINE (SUB LINE)'
5361                                 );
5362             RAISE g_exception_halt_validation;
5363          END IF;
5364       END IF;
5365 
5366       x_covlvl_id := l_line_id;
5367       -- cov rules inserted by oks
5368       l_klnv_tbl_in (1).tax_amount := nvl(p_k_covd_rec.tax_amount,0);
5369 
5370       -- Added tax calculation for the new contract created after transfer
5371       -- 30-jan-2004 Vigandhi
5372       IF p_caller = 'ST' AND p_k_covd_rec.warranty_flag <> 'W'
5373       THEN
5374          oks_tax_util_pvt.get_tax (p_api_version        => 1.0,
5375                                    p_init_msg_list      => okc_api.g_true,
5376                                    p_chr_id             => p_k_covd_rec.k_id,
5377                                    p_cle_id             => l_line_id,
5378                                    px_rail_rec          => g_rail_rec,
5379                                    x_msg_count          => x_msg_count,
5380                                    x_msg_data           => x_msg_data,
5381                                    x_return_status      => l_return_status
5382                                   );
5383 
5384          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5385          THEN
5386             fnd_log.STRING (fnd_log.level_event,
5387                                g_module_current
5388                             || '.Create_K_Covered_Levels.after_tax',
5389                                'oks_tax_util_pvt.get_tax(Return status = '
5390                             || l_return_status
5391                             || ')'
5392                            );
5393          END IF;
5394 
5395          -- Fixed Bug 5035571
5396          /*
5397 	 IF (l_return_status <> okc_api.g_ret_sts_success)
5398          THEN
5399             RAISE g_exception_halt_validation;
5400          END IF;
5401 	 */
5402 
5403          l_klnv_tbl_in (1).tax_inclusive_yn := g_rail_rec.amount_includes_tax_flag;
5404 
5405          IF g_rail_rec.amount_includes_tax_flag = 'Y'
5406          THEN
5407             l_klnv_tbl_in (1).tax_amount := 0;
5408          ELSE
5409             l_klnv_tbl_in (1).tax_amount := g_rail_rec.tax_value;
5410          END IF;
5411       END IF;
5412 
5413       l_invoice_text :=
5414          getformattedinvoicetext (p_k_covd_rec.prod_item_id,
5415                                   p_k_covd_rec.product_start_date,
5416                                   p_k_covd_rec.product_end_date,
5417                                   p_k_covd_rec.attach_2_line_desc,
5418                                   p_k_covd_rec.quantity
5419                                  );
5420       l_klnv_tbl_in (1).cle_id := l_line_id;  --p_k_covd_rec.attach_2_line_id;
5421       l_klnv_tbl_in (1).dnz_chr_id := p_k_covd_rec.k_id;
5422       l_klnv_tbl_in (1).invoice_text := l_invoice_text;                  --IRT
5423       l_klnv_tbl_in (1).created_by := okc_api.g_miss_num;
5424       l_klnv_tbl_in (1).creation_date := okc_api.g_miss_date;
5425       l_klnv_tbl_in (1).status_text := 'Subline created from OM/IB';
5426       l_klnv_tbl_in (1).price_uom := p_k_covd_rec.price_uom;
5427       l_klnv_tbl_in (1).toplvl_uom_code := p_k_covd_rec.toplvl_uom_code;
5428       l_klnv_tbl_in (1).inv_print_flag := 'Y';  --Bug# 5655521
5429 
5430       --mchoudha added for bug#5233956
5431       l_klnv_tbl_in (1).toplvl_price_qty := p_k_covd_rec.toplvl_price_qty;
5432       oks_contract_line_pub.create_line (p_api_version        => l_api_version,
5433                                          p_init_msg_list      => l_init_msg_list,
5434                                          x_return_status      => l_return_status,
5435                                          x_msg_count          => x_msg_count,
5436                                          x_msg_data           => x_msg_data,
5437                                          p_klnv_tbl           => l_klnv_tbl_in,
5438                                          x_klnv_tbl           => l_klnv_tbl_out,
5439                                          p_validate_yn        => 'N'
5440                                         );
5441 
5442       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5443       THEN
5444          fnd_log.STRING
5445                      (fnd_log.level_event,
5446                          g_module_current
5447                       || '.Create_K_Covered_Levels.after_create.covered_line',
5448                          'oks_contract_line_pub.create_line(Return status = '
5449                       || l_return_status
5450                       || ')'
5451                      );
5452       END IF;
5453 
5454       IF NOT l_return_status = 'S'
5455       THEN
5456          --mmadhavi
5457          IF (p_caller = 'OC')
5458          THEN
5459             x_order_error := '#';
5460 
5461             FOR i IN 1 .. fnd_msg_pub.count_msg
5462             LOOP
5463                fnd_msg_pub.get (p_msg_index          => i,
5464                                 p_encoded            => 'T',
5465                                 p_data               => l_msg_data,
5466                                 p_msg_index_out      => l_ind
5467                                );
5468                x_order_error := x_order_error || l_msg_data || '#';
5469 
5470                IF (g_fnd_log_option = 'Y')
5471                THEN
5472                   fnd_message.set_encoded (l_msg_data);
5473                   l_msg_data := fnd_message.get;
5474                   fnd_file.put_line
5475                                    (fnd_file.LOG,
5476                                        '(OKS_CONTRACT_LINE_PUB).CREATE_LINE '
5477                                     || l_msg_data
5478                                    );
5479                END IF;
5480             END LOOP;
5481 
5482             RAISE g_exception_halt_validation;
5483          ELSE
5484             --mmadhavi
5485             okc_api.set_message (g_app_name,
5486                                  g_required_value,
5487                                  g_col_name_token,
5488                                  'OKS Contract COV LINE'
5489                                 );
5490             RAISE g_exception_halt_validation;
5491          END IF;
5492       END IF;
5493 
5494       --Create Contract Item
5495       l_cimv_tbl (1).ID := okc_p_util.raw_to_number (SYS_GUID ());
5496       l_cimv_tbl (1).cle_id := l_line_id;
5497       l_cimv_tbl (1).chr_id := NULL;
5498       l_cimv_tbl (1).cle_id_for := NULL;
5499       l_cimv_tbl (1).dnz_chr_id := p_k_covd_rec.k_id;
5500       l_cimv_tbl (1).object1_id1 := p_k_covd_rec.customer_product_id;
5501       l_cimv_tbl (1).object1_id2 := '#';
5502       l_cimv_tbl (1).jtot_object1_code := 'OKX_CUSTPROD';
5503       l_cimv_tbl (1).uom_code := p_k_covd_rec.uom_code;
5504       l_cimv_tbl (1).exception_yn := 'N';
5505       l_cimv_tbl (1).number_of_items := p_k_covd_rec.quantity;
5506       l_cimv_tbl (1).priced_item_yn := '';
5507       l_cimv_tbl (1).upg_orig_system_ref := '';
5508       l_cimv_tbl (1).upg_orig_system_ref_id := NULL;
5509       l_cimv_tbl (1).object_version_number := 1;
5510       l_cimv_tbl (1).created_by := fnd_global.user_id;
5511       l_cimv_tbl (1).creation_date := SYSDATE;
5512       l_cimv_tbl (1).last_updated_by := fnd_global.user_id;
5513       l_cimv_tbl (1).last_update_date := SYSDATE;
5514       l_cimv_tbl (1).last_update_login := NULL;
5515       l_cimv_tbl (1).request_id := NULL;
5516       l_cimv_tbl (1).program_id := NULL;
5517       l_cimv_tbl (1).program_application_id := NULL;
5518       l_cimv_tbl (1).program_update_date := NULL;
5519       okc_cim_pvt.insert_row_upg (x_return_status      => l_return_status,
5520                                   p_cimv_tbl           => l_cimv_tbl
5521                                  );
5522 
5523       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5524       THEN
5525          fnd_log.STRING
5526                       (fnd_log.level_event,
5527                           g_module_current
5528                        || '.Create_K_Covered_Levels.after_create.contract_item',
5529                           'okc_cim_pvt.insert_row_upg(Return status = '
5530                        || l_return_status
5531                        || ')'
5532                       );
5533       END IF;
5534 
5535       IF l_return_status = 'S'
5536       THEN
5537          l_line_item_id := l_cimv_tbl (1).ID;
5538       ELSE
5539          okc_api.set_message (g_app_name,
5540                               g_required_value,
5541                               g_col_name_token,
5542                               'KItem (SUB LINE)'
5543                              );
5544          RAISE g_exception_halt_validation;
5545       END IF;
5546 
5547       --Create Obj Rel
5548       IF p_k_covd_rec.warranty_flag IN ('E', 'S', 'SU')
5549       THEN
5550          create_obj_rel (p_k_id               => p_k_covd_rec.k_id,
5551                          p_line_id            => l_line_id,
5552                          p_orderhdrid         => NULL,
5553                          p_rty_code           => p_k_covd_rec.rty_code,
5554                          p_orderlineid        => p_k_covd_rec.order_line_id,
5555                          x_return_status      => l_return_status,
5556                          x_msg_count          => x_msg_count,
5557                          x_msg_data           => x_msg_data,
5558                          x_crjv_tbl_out       => l_crjv_tbl_out
5559                         );
5560 
5561          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5562          THEN
5563             fnd_log.STRING
5564                           (fnd_log.level_event,
5565                               g_module_current
5566                            || '.Create_K_Covered_Levels.create.object_relation',
5567                               'create_obj_rel(Return status = '
5568                            || l_return_status
5569                            || ')'
5570                           );
5571          END IF;
5572 
5573          IF NOT l_return_status = okc_api.g_ret_sts_success
5574          THEN
5575             okc_api.set_message (g_app_name,
5576                                  g_required_value,
5577                                  g_col_name_token,
5578                                  'Order Line Id (SUB LINE)'
5579                                 );
5580             RAISE g_exception_halt_validation;
5581          END IF;
5582       END IF;
5583 
5584       --Create Pricing Attributes
5585       IF p_price_attribs.pricing_context IS NOT NULL
5586       THEN
5587          l_pavv_tbl_in (1).cle_id := l_line_id;
5588          l_pavv_tbl_in (1).flex_title := 'QP_ATTR_DEFNS_PRICING';
5589          l_pavv_tbl_in (1).pricing_context := p_price_attribs.pricing_context;
5590          l_pavv_tbl_in (1).pricing_attribute1 :=
5591                                            p_price_attribs.pricing_attribute1;
5592          l_pavv_tbl_in (1).pricing_attribute2 :=
5593                                            p_price_attribs.pricing_attribute2;
5594          l_pavv_tbl_in (1).pricing_attribute3 :=
5595                                            p_price_attribs.pricing_attribute3;
5596          l_pavv_tbl_in (1).pricing_attribute4 :=
5597                                            p_price_attribs.pricing_attribute4;
5598          l_pavv_tbl_in (1).pricing_attribute5 :=
5599                                            p_price_attribs.pricing_attribute5;
5600          l_pavv_tbl_in (1).pricing_attribute6 :=
5601                                            p_price_attribs.pricing_attribute6;
5602          l_pavv_tbl_in (1).pricing_attribute7 :=
5603                                            p_price_attribs.pricing_attribute7;
5604          l_pavv_tbl_in (1).pricing_attribute8 :=
5605                                            p_price_attribs.pricing_attribute8;
5606          l_pavv_tbl_in (1).pricing_attribute9 :=
5607                                            p_price_attribs.pricing_attribute9;
5608          l_pavv_tbl_in (1).pricing_attribute10 :=
5609                                           p_price_attribs.pricing_attribute10;
5610          l_pavv_tbl_in (1).pricing_attribute11 :=
5611                                           p_price_attribs.pricing_attribute11;
5612          l_pavv_tbl_in (1).pricing_attribute12 :=
5613                                           p_price_attribs.pricing_attribute12;
5614          l_pavv_tbl_in (1).pricing_attribute13 :=
5615                                           p_price_attribs.pricing_attribute13;
5616          l_pavv_tbl_in (1).pricing_attribute14 :=
5617                                           p_price_attribs.pricing_attribute14;
5618          l_pavv_tbl_in (1).pricing_attribute15 :=
5619                                           p_price_attribs.pricing_attribute15;
5620          l_pavv_tbl_in (1).pricing_attribute16 :=
5621                                           p_price_attribs.pricing_attribute16;
5622          l_pavv_tbl_in (1).pricing_attribute17 :=
5623                                           p_price_attribs.pricing_attribute17;
5624          l_pavv_tbl_in (1).pricing_attribute18 :=
5625                                           p_price_attribs.pricing_attribute18;
5626          l_pavv_tbl_in (1).pricing_attribute19 :=
5627                                           p_price_attribs.pricing_attribute19;
5628          l_pavv_tbl_in (1).pricing_attribute20 :=
5629                                           p_price_attribs.pricing_attribute20;
5630          l_pavv_tbl_in (1).pricing_attribute21 :=
5631                                           p_price_attribs.pricing_attribute21;
5632          l_pavv_tbl_in (1).pricing_attribute22 :=
5633                                           p_price_attribs.pricing_attribute22;
5634          l_pavv_tbl_in (1).pricing_attribute23 :=
5635                                           p_price_attribs.pricing_attribute23;
5636          l_pavv_tbl_in (1).pricing_attribute24 :=
5637                                           p_price_attribs.pricing_attribute24;
5638          l_pavv_tbl_in (1).pricing_attribute25 :=
5639                                           p_price_attribs.pricing_attribute25;
5640          l_pavv_tbl_in (1).pricing_attribute26 :=
5641                                           p_price_attribs.pricing_attribute26;
5642          l_pavv_tbl_in (1).pricing_attribute27 :=
5643                                           p_price_attribs.pricing_attribute27;
5644          l_pavv_tbl_in (1).pricing_attribute28 :=
5645                                           p_price_attribs.pricing_attribute28;
5646          l_pavv_tbl_in (1).pricing_attribute29 :=
5647                                           p_price_attribs.pricing_attribute29;
5648          l_pavv_tbl_in (1).pricing_attribute30 :=
5649                                           p_price_attribs.pricing_attribute30;
5650          l_pavv_tbl_in (1).pricing_attribute31 :=
5651                                           p_price_attribs.pricing_attribute31;
5652          l_pavv_tbl_in (1).pricing_attribute32 :=
5653                                           p_price_attribs.pricing_attribute32;
5654          l_pavv_tbl_in (1).pricing_attribute33 :=
5655                                           p_price_attribs.pricing_attribute33;
5656          l_pavv_tbl_in (1).pricing_attribute34 :=
5657                                           p_price_attribs.pricing_attribute34;
5658          l_pavv_tbl_in (1).pricing_attribute35 :=
5659                                           p_price_attribs.pricing_attribute35;
5660          l_pavv_tbl_in (1).pricing_attribute36 :=
5661                                           p_price_attribs.pricing_attribute36;
5662          l_pavv_tbl_in (1).pricing_attribute37 :=
5663                                           p_price_attribs.pricing_attribute37;
5664          l_pavv_tbl_in (1).pricing_attribute38 :=
5665                                           p_price_attribs.pricing_attribute38;
5666          l_pavv_tbl_in (1).pricing_attribute39 :=
5667                                           p_price_attribs.pricing_attribute39;
5668          l_pavv_tbl_in (1).pricing_attribute40 :=
5669                                           p_price_attribs.pricing_attribute40;
5670          l_pavv_tbl_in (1).pricing_attribute41 :=
5671                                           p_price_attribs.pricing_attribute41;
5672          l_pavv_tbl_in (1).pricing_attribute42 :=
5673                                           p_price_attribs.pricing_attribute42;
5674          l_pavv_tbl_in (1).pricing_attribute43 :=
5675                                           p_price_attribs.pricing_attribute43;
5676          l_pavv_tbl_in (1).pricing_attribute44 :=
5677                                           p_price_attribs.pricing_attribute44;
5678          l_pavv_tbl_in (1).pricing_attribute45 :=
5679                                           p_price_attribs.pricing_attribute45;
5680          l_pavv_tbl_in (1).pricing_attribute46 :=
5681                                           p_price_attribs.pricing_attribute46;
5682          l_pavv_tbl_in (1).pricing_attribute47 :=
5683                                           p_price_attribs.pricing_attribute47;
5684          l_pavv_tbl_in (1).pricing_attribute48 :=
5685                                           p_price_attribs.pricing_attribute48;
5686          l_pavv_tbl_in (1).pricing_attribute49 :=
5687                                           p_price_attribs.pricing_attribute49;
5688          l_pavv_tbl_in (1).pricing_attribute50 :=
5689                                           p_price_attribs.pricing_attribute50;
5690          l_pavv_tbl_in (1).pricing_attribute51 :=
5691                                           p_price_attribs.pricing_attribute51;
5692          l_pavv_tbl_in (1).pricing_attribute52 :=
5693                                           p_price_attribs.pricing_attribute52;
5694          l_pavv_tbl_in (1).pricing_attribute53 :=
5695                                           p_price_attribs.pricing_attribute53;
5696          l_pavv_tbl_in (1).pricing_attribute54 :=
5697                                           p_price_attribs.pricing_attribute54;
5698          l_pavv_tbl_in (1).pricing_attribute55 :=
5699                                           p_price_attribs.pricing_attribute55;
5700          l_pavv_tbl_in (1).pricing_attribute56 :=
5701                                           p_price_attribs.pricing_attribute56;
5702          l_pavv_tbl_in (1).pricing_attribute57 :=
5703                                           p_price_attribs.pricing_attribute57;
5704          l_pavv_tbl_in (1).pricing_attribute58 :=
5705                                           p_price_attribs.pricing_attribute58;
5706          l_pavv_tbl_in (1).pricing_attribute59 :=
5707                                           p_price_attribs.pricing_attribute59;
5708          l_pavv_tbl_in (1).pricing_attribute60 :=
5709                                           p_price_attribs.pricing_attribute60;
5710          l_pavv_tbl_in (1).pricing_attribute61 :=
5711                                           p_price_attribs.pricing_attribute61;
5712          l_pavv_tbl_in (1).pricing_attribute62 :=
5713                                           p_price_attribs.pricing_attribute62;
5714          l_pavv_tbl_in (1).pricing_attribute63 :=
5715                                           p_price_attribs.pricing_attribute63;
5716          l_pavv_tbl_in (1).pricing_attribute64 :=
5717                                           p_price_attribs.pricing_attribute64;
5718          l_pavv_tbl_in (1).pricing_attribute65 :=
5719                                           p_price_attribs.pricing_attribute65;
5720          l_pavv_tbl_in (1).pricing_attribute66 :=
5721                                           p_price_attribs.pricing_attribute66;
5722          l_pavv_tbl_in (1).pricing_attribute67 :=
5723                                           p_price_attribs.pricing_attribute67;
5724          l_pavv_tbl_in (1).pricing_attribute68 :=
5725                                           p_price_attribs.pricing_attribute68;
5726          l_pavv_tbl_in (1).pricing_attribute69 :=
5727                                           p_price_attribs.pricing_attribute69;
5728          l_pavv_tbl_in (1).pricing_attribute70 :=
5729                                           p_price_attribs.pricing_attribute70;
5730          l_pavv_tbl_in (1).pricing_attribute71 :=
5731                                           p_price_attribs.pricing_attribute71;
5732          l_pavv_tbl_in (1).pricing_attribute72 :=
5733                                           p_price_attribs.pricing_attribute72;
5734          l_pavv_tbl_in (1).pricing_attribute73 :=
5735                                           p_price_attribs.pricing_attribute73;
5736          l_pavv_tbl_in (1).pricing_attribute74 :=
5737                                           p_price_attribs.pricing_attribute74;
5738          l_pavv_tbl_in (1).pricing_attribute75 :=
5739                                           p_price_attribs.pricing_attribute75;
5740          l_pavv_tbl_in (1).pricing_attribute76 :=
5741                                           p_price_attribs.pricing_attribute76;
5742          l_pavv_tbl_in (1).pricing_attribute77 :=
5743                                           p_price_attribs.pricing_attribute77;
5744          l_pavv_tbl_in (1).pricing_attribute78 :=
5745                                           p_price_attribs.pricing_attribute78;
5746          l_pavv_tbl_in (1).pricing_attribute79 :=
5747                                           p_price_attribs.pricing_attribute79;
5748          l_pavv_tbl_in (1).pricing_attribute80 :=
5749                                           p_price_attribs.pricing_attribute80;
5750          l_pavv_tbl_in (1).pricing_attribute81 :=
5751                                           p_price_attribs.pricing_attribute81;
5752          l_pavv_tbl_in (1).pricing_attribute82 :=
5753                                           p_price_attribs.pricing_attribute82;
5754          l_pavv_tbl_in (1).pricing_attribute83 :=
5755                                           p_price_attribs.pricing_attribute83;
5756          l_pavv_tbl_in (1).pricing_attribute84 :=
5757                                           p_price_attribs.pricing_attribute84;
5758          l_pavv_tbl_in (1).pricing_attribute85 :=
5759                                           p_price_attribs.pricing_attribute85;
5760          l_pavv_tbl_in (1).pricing_attribute86 :=
5761                                           p_price_attribs.pricing_attribute86;
5762          l_pavv_tbl_in (1).pricing_attribute87 :=
5763                                           p_price_attribs.pricing_attribute87;
5764          l_pavv_tbl_in (1).pricing_attribute88 :=
5765                                           p_price_attribs.pricing_attribute88;
5766          l_pavv_tbl_in (1).pricing_attribute89 :=
5767                                           p_price_attribs.pricing_attribute89;
5768          l_pavv_tbl_in (1).pricing_attribute90 :=
5769                                           p_price_attribs.pricing_attribute90;
5770          l_pavv_tbl_in (1).pricing_attribute91 :=
5771                                           p_price_attribs.pricing_attribute91;
5772          l_pavv_tbl_in (1).pricing_attribute92 :=
5773                                           p_price_attribs.pricing_attribute92;
5774          l_pavv_tbl_in (1).pricing_attribute93 :=
5775                                           p_price_attribs.pricing_attribute93;
5776          l_pavv_tbl_in (1).pricing_attribute94 :=
5777                                           p_price_attribs.pricing_attribute94;
5778          l_pavv_tbl_in (1).pricing_attribute95 :=
5779                                           p_price_attribs.pricing_attribute95;
5780          l_pavv_tbl_in (1).pricing_attribute96 :=
5781                                           p_price_attribs.pricing_attribute96;
5782          l_pavv_tbl_in (1).pricing_attribute97 :=
5783                                           p_price_attribs.pricing_attribute97;
5784          l_pavv_tbl_in (1).pricing_attribute98 :=
5785                                           p_price_attribs.pricing_attribute98;
5786          l_pavv_tbl_in (1).pricing_attribute99 :=
5787                                           p_price_attribs.pricing_attribute99;
5788          l_pavv_tbl_in (1).pricing_attribute100 :=
5789                                          p_price_attribs.pricing_attribute100;
5790          okc_price_adjustment_pvt.create_price_att_value
5791                                          (p_api_version        => l_api_version,
5792                                           p_init_msg_list      => l_init_msg_list,
5793                                           x_return_status      => l_return_status,
5794                                           x_msg_count          => x_msg_count,
5795                                           x_msg_data           => x_msg_data,
5796                                           p_pavv_tbl           => l_pavv_tbl_in,
5797                                           x_pavv_tbl           => l_pavv_tbl_out
5798                                          );
5799 
5800          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5801          THEN
5802             fnd_log.STRING
5803                (fnd_log.level_event,
5804                    g_module_current
5805                 || '.Create_K_Covered_Levels.after_create.price_att',
5806                    'okc_price_adjustment_pvt.create_price_att_value(Return status = '
5807                 || l_return_status
5808                 || ')'
5809                );
5810          END IF;
5811 
5812          IF l_return_status = 'S'
5813          THEN
5814             l_priceattrib_id := l_pavv_tbl_out (1).ID;
5815          ELSE
5816             okc_api.set_message (g_app_name,
5817                                  g_required_value,
5818                                  g_col_name_token,
5819                                  'PRICE ATTRIBUTES (SUB LINE)'
5820                                 );
5821             RAISE g_exception_halt_validation;
5822          END IF;
5823       END IF;
5824    EXCEPTION
5825       WHEN g_exception_halt_validation
5826       THEN
5827          x_return_status := l_return_status;
5828          NULL;
5829       WHEN OTHERS
5830       THEN
5831          x_return_status := okc_api.g_ret_sts_unexp_error;
5832          okc_api.set_message (g_app_name,
5833                               g_unexpected_error,
5834                               g_sqlcode_token,
5835                               SQLCODE,
5836                               g_sqlerrm_token,
5837                               SQLERRM
5838                              );
5839    END create_k_covered_levels;
5840 
5841    PROCEDURE create_contract_ibnew (
5842       p_extwar_rec                IN              extwar_rec_type,
5843       p_contact_tbl_in            IN              oks_extwarprgm_pvt.contact_tbl,
5844       p_salescredit_tbl_hdr_in    IN              oks_extwarprgm_pvt.salescredit_tbl,
5845       --mmadhavi bug 4174921
5846       p_salescredit_tbl_line_in   IN              oks_extwarprgm_pvt.salescredit_tbl,
5847       p_price_attribs_in          IN              oks_extwarprgm_pvt.pricing_attributes_type,
5848       x_inst_dtls_tbl             IN OUT NOCOPY   oks_ihd_pvt.ihdv_tbl_type,
5849       x_chrid                     OUT NOCOPY      NUMBER,
5850       x_return_status             OUT NOCOPY      VARCHAR2,
5851       x_msg_count                 OUT NOCOPY      NUMBER,
5852       x_msg_data                  OUT NOCOPY      VARCHAR2
5853    )
5854    IS
5855       CURSOR l_party_csr
5856       IS
5857          SELECT NAME
5858            FROM okx_parties_v
5859           WHERE id1 = p_extwar_rec.hdr_party_id;
5860 
5861       CURSOR l_lndates_csr (p_id NUMBER)
5862       IS
5863          SELECT start_date, end_date
5864            FROM okc_k_lines_b
5865           WHERE ID = p_id;
5866 
5867       CURSOR l_hdrdates_csr (p_id NUMBER)
5868       IS
5869          SELECT start_date, end_date, sts_code
5870            FROM okc_k_headers_b
5871           WHERE ID = p_id;
5872 
5873       l_hdr_rec                  k_header_rec_type;
5874       l_line_rec                 k_line_service_rec_type;
5875       l_covd_rec                 k_line_covered_level_rec_type;
5876       l_return_status            VARCHAR2 (5)    := okc_api.g_ret_sts_success;
5877       l_chrid                    NUMBER                             := NULL;
5878       l_lineid                   NUMBER                             := NULL;
5879       l_covlvl_id                NUMBER                             := NULL;
5880       l_party_name               okx_parties_v.NAME%TYPE;
5881       l_lndates_rec              l_lndates_csr%ROWTYPE;
5882       l_hdrdates_rec             l_hdrdates_csr%ROWTYPE;
5883       --l_ctr                       NUMBER := 0;
5884 
5885       --Contact
5886       l_contact_tbl_in           oks_extwarprgm_pvt.contact_tbl;
5887       --SalesCredit
5888       l_salescredit_tbl          oks_extwarprgm_pvt.salescredit_tbl;
5889       l_api_version     CONSTANT NUMBER                             := 1.0;
5890       l_init_msg_list   CONSTANT VARCHAR2 (1)              := okc_api.g_false;
5891       l_index                    VARCHAR2 (2000);
5892       l_rule_group_id            NUMBER;
5893       l_rule_id                  NUMBER;
5894       l_sts_code                 VARCHAR2 (30);
5895       l_ste_code                 VARCHAR2 (30);
5896       l_duration                 NUMBER;
5897       l_timeunits                VARCHAR2 (25);
5898       l_sll_tbl                  oks_bill_sch.streamlvl_tbl;
5899       l_bil_sch_out              oks_bill_sch.itembillsch_tbl;
5900       l_strmlvl_id               NUMBER                             := NULL;
5901       l_update_line              VARCHAR2 (1);
5902       l_temp                     VARCHAR2 (2000);
5903    BEGIN
5904       x_return_status := okc_api.g_ret_sts_success;
5905 
5906       OPEN l_party_csr;
5907 
5908       FETCH l_party_csr
5909        INTO l_party_name;
5910 
5911       CLOSE l_party_csr;
5912 
5913       IF p_extwar_rec.hdr_scs_code IN ('SERVICE', 'SUBSCRIPTION')
5914       THEN
5915          l_hdr_rec.short_description :=
5916                                 'CUSTOMER : ' || l_party_name || '  Contract';
5917       ELSE
5918          l_hdr_rec.short_description :=
5919                'CUSTOMER : '
5920             || l_party_name
5921             || ' Warranty/Extended Warranty Contract';
5922       END IF;
5923 
5924       l_hdr_rec.contract_number := okc_api.g_miss_char;
5925       l_hdr_rec.rty_code := p_extwar_rec.rty_code;
5926       l_hdr_rec.start_date := p_extwar_rec.hdr_sdt;
5927       l_hdr_rec.end_date := p_extwar_rec.hdr_edt;
5928       --l_hdr_rec.sts_code            := 'ACTIVE';
5929       l_hdr_rec.class_code := 'SVC';
5930       l_hdr_rec.authoring_org_id := p_extwar_rec.hdr_org_id;
5931       l_hdr_rec.party_id := p_extwar_rec.hdr_party_id;
5932       l_hdr_rec.third_party_role := p_extwar_rec.hdr_third_party_role;
5933       l_hdr_rec.bill_to_id := p_extwar_rec.hdr_bill_2_id;
5934       l_hdr_rec.ship_to_id := p_extwar_rec.hdr_ship_2_id;
5935       l_hdr_rec.chr_group := p_extwar_rec.hdr_chr_group;
5936       --l_hdr_rec.short_description   := 'CUSTOMER : ' || l_party_name || ' Warranty/Extended Warranty Contract';
5937       l_hdr_rec.price_list_id := p_extwar_rec.hdr_price_list_id;
5938       l_hdr_rec.cust_po_number := p_extwar_rec.hdr_cust_po_number;
5939       l_hdr_rec.agreement_id := p_extwar_rec.hdr_agreement_id;
5940       l_hdr_rec.currency := p_extwar_rec.hdr_currency;
5941       l_hdr_rec.accounting_rule_id := p_extwar_rec.hdr_acct_rule_id;
5942       l_hdr_rec.invoice_rule_id := p_extwar_rec.hdr_inv_rule_id;
5943       l_hdr_rec.order_hdr_id := p_extwar_rec.hdr_order_hdr_id;
5944       l_hdr_rec.payment_term_id := p_extwar_rec.hdr_payment_term_id;
5945       l_hdr_rec.renewal_type := p_extwar_rec.hdr_renewal_type;
5946       l_hdr_rec.renewal_markup := p_extwar_rec.hdr_renewal_markup;
5947       l_hdr_rec.renewal_pricing_type := p_extwar_rec.hdr_renewal_pricing_type;
5948       l_hdr_rec.renewal_price_list_id :=
5949                                         p_extwar_rec.hdr_renewal_price_list_id;
5950       l_hdr_rec.renewal_po := p_extwar_rec.hdr_renewal_po;
5951       l_hdr_rec.cvn_type := p_extwar_rec.hdr_cvn_type;
5952       l_hdr_rec.cvn_rate := p_extwar_rec.hdr_cvn_rate;
5953       l_hdr_rec.cvn_date := p_extwar_rec.hdr_cvn_date;
5954       l_hdr_rec.cvn_euro_rate := p_extwar_rec.hdr_cvn_euro_rate;
5955       l_hdr_rec.tax_status_flag := p_extwar_rec.hdr_tax_status_flag;
5956       l_hdr_rec.tax_exemption_id := p_extwar_rec.hdr_tax_exemption_id;
5957       l_hdr_rec.contact_id := p_extwar_rec.hdr_contact_id;
5958       l_hdr_rec.scs_code := p_extwar_rec.hdr_scs_code;
5959       l_hdr_rec.merge_type := p_extwar_rec.merge_type;
5960       l_hdr_rec.merge_object_id := p_extwar_rec.merge_object_id;
5961       l_hdr_rec.qto_contact_id := p_extwar_rec.qto_contact_id;
5962       l_hdr_rec.qto_email_id := p_extwar_rec.qto_email_id;
5963       l_hdr_rec.qto_phone_id := p_extwar_rec.qto_phone_id;
5964       l_hdr_rec.qto_fax_id := p_extwar_rec.qto_fax_id;
5965       l_hdr_rec.qto_site_id := p_extwar_rec.qto_site_id;
5966       l_hdr_rec.order_line_id := p_extwar_rec.srv_order_line_id;
5967       l_hdr_rec.billing_profile_id := p_extwar_rec.billing_profile_id;
5968       l_hdr_rec.qcl_id := p_extwar_rec.hdr_qcl_id;
5969       l_hdr_rec.grace_period := p_extwar_rec.grace_period;
5970       l_hdr_rec.grace_duration := p_extwar_rec.grace_duration;
5971       l_hdr_rec.salesrep_id := p_extwar_rec.salesrep_id;
5972       l_hdr_rec.pdf_id := p_extwar_rec.hdr_pdf_id;
5973       l_hdr_rec.ccr_number := p_extwar_rec.ccr_number;
5974       l_hdr_rec.ccr_exp_date := p_extwar_rec.ccr_exp_date;
5975       l_hdr_rec.renewal_status := p_extwar_rec.renewal_status;
5976 
5977       IF p_extwar_rec.hdr_sdt > SYSDATE
5978       THEN
5979          get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
5980       ELSE
5981          get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
5982       END IF;
5983 
5984       l_hdr_rec.sts_code := l_sts_code;
5985       oks_extwarprgm_pvt.create_k_hdr
5986                             (p_k_header_rec            => l_hdr_rec,
5987                              p_contact_tbl             => p_contact_tbl_in,
5988                              p_salescredit_tbl_in      => p_salescredit_tbl_hdr_in,
5989                              --mmadhavi  bug 4174921
5990                              x_chr_id                  => l_chrid,
5991                              p_caller                  => 'IB',
5992                              x_order_error             => l_temp,
5993                              x_return_status           => l_return_status,
5994                              x_msg_count               => x_msg_count,
5995                              x_msg_data                => x_msg_data
5996                             );
5997 
5998       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
5999       THEN
6000          fnd_log.STRING
6001                        (fnd_log.level_event,
6002                            g_module_current
6003                         || '.Create_contract_Ibnew.after_create.header',
6004                            'oks_extwarprgm_pvt.create_k_hdr(Return status = '
6005                         || l_return_status
6006                         || ')'
6007                        );
6008       END IF;
6009 
6010       IF NOT l_return_status = 'S'
6011       THEN
6012          RAISE g_exception_halt_validation;
6013       END IF;
6014 
6015       x_chrid := l_chrid;
6016 
6017       IF     p_extwar_rec.hdr_order_hdr_id IS NOT NULL
6018          AND p_extwar_rec.merge_type = 'NEW'
6019       THEN
6020          okc_oc_int_pub.create_k_relationships
6021                            (p_api_version              => l_api_version,
6022                             p_init_msg_list            => l_init_msg_list,
6023                             p_commit                   => okc_api.g_false,
6024                             p_sales_contract_id        => okc_api.g_miss_num,
6025                             p_service_contract_id      => x_chrid,
6026                             p_quote_id                 => okc_api.g_miss_num,
6027                             p_quote_line_tab           => okc_oc_int_pub.g_miss_ql_tab,
6028                             p_order_id                 => p_extwar_rec.hdr_order_hdr_id,
6029                             p_order_line_tab           => okc_oc_int_pub.g_miss_ol_tab,
6030                             p_trace_mode               => NULL,
6031                             x_return_status            => l_return_status,
6032                             x_msg_count                => x_msg_count,
6033                             x_msg_data                 => x_msg_data
6034                            );
6035 
6036          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6037          THEN
6038             fnd_log.STRING
6039                  (fnd_log.level_event,
6040                      g_module_current
6041                   || '.Create_contract_Ibnew.after_create.header',
6042                      'okc_oc_int_pub.create_k_relationships(Return status = '
6043                   || l_return_status
6044                   || ')'
6045                  );
6046          END IF;
6047 
6048          IF NOT l_return_status = 'S'
6049          THEN
6050             RAISE g_exception_halt_validation;
6051          END IF;
6052       END IF;
6053 
6054       l_line_rec.k_id := l_chrid;
6055       l_line_rec.k_line_number := okc_api.g_miss_char;
6056       l_line_rec.org_id := p_extwar_rec.hdr_org_id;
6057       l_line_rec.accounting_rule_id := p_extwar_rec.line_accounting_rule_id;
6058       l_line_rec.invoicing_rule_id := p_extwar_rec.line_invoicing_rule_id;
6059       l_line_rec.srv_id := p_extwar_rec.srv_id;
6060       l_line_rec.srv_segment1 := p_extwar_rec.srv_name;
6061       l_line_rec.srv_desc := p_extwar_rec.srv_desc;
6062       l_line_rec.srv_sdt := p_extwar_rec.srv_sdt;
6063       l_line_rec.srv_edt := p_extwar_rec.srv_edt;
6064       l_line_rec.bill_to_id := p_extwar_rec.srv_bill_2_id;
6065       l_line_rec.ship_to_id := p_extwar_rec.srv_ship_2_id;
6066       l_line_rec.order_line_id := p_extwar_rec.srv_order_line_id;
6067       l_line_rec.warranty_flag := p_extwar_rec.warranty_flag;
6068       l_line_rec.currency := p_extwar_rec.srv_currency;
6069       l_line_rec.coverage_template_id := p_extwar_rec.srv_cov_template_id;
6070       l_line_rec.standard_cov_yn := 'Y';
6071       l_line_rec.cust_account := p_extwar_rec.cust_account;
6072       l_line_rec.SOURCE := 'NEW';
6073       l_line_rec.upg_orig_system_ref := 'ORDER'; -- added 04-jun-2002 Vigandhi
6074       l_line_rec.upg_orig_system_ref_id := NULL; -- added 04-jun-2002 Vigandhi
6075       l_line_rec.commitment_id := p_extwar_rec.commitment_id;
6076       -- added 12-aug-2003 Vigandhi
6077       l_line_rec.line_renewal_type := p_extwar_rec.line_renewal_type;
6078       --l_line_rec.tax_amount             := p_extwar_rec.tax_amount;      -- added 22-oct-2003 Vigandhi
6079       l_line_rec.ln_price_list_id := p_extwar_rec.ln_price_list_id;
6080 
6081       -- added 07-nov-2003 Vigandhi
6082       IF p_extwar_rec.srv_sdt > SYSDATE
6083       THEN
6084          get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
6085       ELSE
6086          get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
6087       END IF;
6088 
6089       l_line_rec.line_sts_code := l_sts_code;
6090       oks_extwarprgm_pvt.create_k_service_lines
6091                            (p_k_line_rec              => l_line_rec,
6092                             p_contact_tbl             => p_contact_tbl_in,
6093                             p_salescredit_tbl_in      => p_salescredit_tbl_line_in,
6094                             p_caller                  => 'IB',
6095                             x_order_error             => l_temp,
6096                             x_service_line_id         => l_lineid,
6097                             x_return_status           => l_return_status,
6098                             x_msg_count               => x_msg_count,
6099                             x_msg_data                => x_msg_data
6100                            );
6101 
6102       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6103       THEN
6104          fnd_log.STRING
6105              (fnd_log.level_event,
6106                  g_module_current
6107               || '.Create_contract_Ibnew.after_create.service_line',
6108                  'oks_extwarprgm_pvt.create_k_service_lines(Return status = '
6109               || l_return_status
6110               || ')'
6111              );
6112       END IF;
6113 
6114       IF NOT l_return_status = 'S'
6115       THEN
6116          RAISE g_exception_halt_validation;
6117       END IF;
6118 
6119       l_covd_rec.k_id := l_chrid;
6120       l_covd_rec.rty_code := p_extwar_rec.rty_code;
6121       l_covd_rec.attach_2_line_id := l_lineid;
6122       l_covd_rec.line_number := okc_api.g_miss_char;
6123       l_covd_rec.customer_product_id := p_extwar_rec.lvl_cp_id;
6124       -- l_covd_rec.product_segment1        := p_extwar_rec.lvl_inventory_name;
6125       -- l_covd_rec.product_desc            := p_extwar_rec.lvl_inventory_desc;
6126       l_covd_rec.product_start_date := p_extwar_rec.srv_sdt;
6127       l_covd_rec.product_end_date := p_extwar_rec.srv_edt;
6128       l_covd_rec.quantity := p_extwar_rec.lvl_quantity;
6129       l_covd_rec.list_price := p_extwar_rec.srv_unit_price;
6130       l_covd_rec.uom_code := p_extwar_rec.lvl_uom_code;
6131       l_covd_rec.negotiated_amount := p_extwar_rec.srv_amount;
6132       l_covd_rec.warranty_flag := p_extwar_rec.warranty_flag;
6133       --l_covd_rec.product_sts_code      := p_extwar_rec.lvl_sts_code;
6134       l_covd_rec.line_renewal_type := p_extwar_rec.lvl_line_renewal_type;
6135       l_covd_rec.currency_code := p_extwar_rec.srv_currency;
6136       l_covd_rec.order_line_id := p_extwar_rec.srv_order_line_id;
6137       --l_covd_rec.upg_orig_system_ref   := Null;
6138       l_covd_rec.attach_2_line_desc := p_extwar_rec.srv_desc;
6139       -- bug#2396580 Vigandhi
6140       l_covd_rec.upg_orig_system_ref := 'ORDER_LINE';
6141       -- added 04-jun-2002 Vigandhi
6142       l_covd_rec.upg_orig_system_ref_id := p_extwar_rec.srv_order_line_id;
6143       -- added 04-jun-2002 Vigandhi
6144       l_covd_rec.prod_item_id := p_extwar_rec.lvl_inventory_id;
6145       l_covd_rec.tax_amount := p_extwar_rec.tax_amount;
6146       -- added tax calculation from OM. -- Vigandhi
6147       l_covd_rec.standard_coverage := 'Y';
6148 
6149       IF p_extwar_rec.srv_sdt > SYSDATE
6150       THEN
6151          get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
6152       ELSE
6153          get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
6154       END IF;
6155 
6156       l_covd_rec.product_sts_code := l_sts_code;
6157       oks_extwarprgm_pvt.create_k_covered_levels
6158                                        (p_k_covd_rec         => l_covd_rec,
6159                                         p_price_attribs      => p_price_attribs_in,
6160                                         p_caller             => 'IB',
6161                                         x_order_error        => l_temp,
6162                                         x_covlvl_id          => l_covlvl_id,
6163                                         x_update_line        => l_update_line,
6164                                         x_return_status      => l_return_status,
6165                                         x_msg_count          => x_msg_count,
6166                                         x_msg_data           => x_msg_data
6167                                        );
6168 
6169       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6170       THEN
6171          fnd_log.STRING
6172             (fnd_log.level_event,
6173                 g_module_current
6174              || '.Create_contract_Ibnew.after_create.covered_line',
6175                 'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
6176              || l_return_status
6177              || ')'
6178             );
6179       END IF;
6180 
6181       IF NOT l_return_status = 'S'
6182       THEN
6183          RAISE g_exception_halt_validation;
6184       END IF;
6185 
6186       OPEN l_lndates_csr (l_lineid);
6187 
6188       FETCH l_lndates_csr
6189        INTO l_lndates_rec;
6190 
6191       CLOSE l_lndates_csr;
6192 
6193       OPEN l_hdrdates_csr (l_chrid);
6194 
6195       FETCH l_hdrdates_csr
6196        INTO l_hdrdates_rec;
6197 
6198       CLOSE l_hdrdates_csr;
6199 
6200       g_ptr := x_inst_dtls_tbl.COUNT;
6201       x_inst_dtls_tbl (g_ptr).instance_amt_old := NULL;
6202       x_inst_dtls_tbl (g_ptr).instance_qty_old := NULL;
6203       x_inst_dtls_tbl (g_ptr).old_contract_id := NULL;
6204       x_inst_dtls_tbl (g_ptr).old_contact_start_date := NULL;
6205       x_inst_dtls_tbl (g_ptr).old_contract_end_date := NULL;
6206       x_inst_dtls_tbl (g_ptr).old_service_line_id := NULL;
6207       x_inst_dtls_tbl (g_ptr).old_service_start_date := NULL;
6208       x_inst_dtls_tbl (g_ptr).old_service_end_date := NULL;
6209       x_inst_dtls_tbl (g_ptr).old_subline_id := NULL;
6210       x_inst_dtls_tbl (g_ptr).old_subline_start_date := NULL;
6211       x_inst_dtls_tbl (g_ptr).old_subline_end_date := NULL;
6212       x_inst_dtls_tbl (g_ptr).old_customer := NULL;
6213       x_inst_dtls_tbl (g_ptr).old_k_status := NULL;
6214       get_sts_code (NULL, l_hdrdates_rec.sts_code, l_ste_code, l_sts_code);
6215       x_inst_dtls_tbl (g_ptr).instance_amt_new := p_extwar_rec.srv_amount;
6216       x_inst_dtls_tbl (g_ptr).new_contract_id := l_chrid;
6217       x_inst_dtls_tbl (g_ptr).new_contact_start_date :=
6218                                                      l_hdrdates_rec.start_date;
6219       x_inst_dtls_tbl (g_ptr).new_contract_end_date := l_hdrdates_rec.end_date;
6220       x_inst_dtls_tbl (g_ptr).new_service_line_id := l_lineid;
6221       x_inst_dtls_tbl (g_ptr).new_service_start_date :=
6222                                                       l_lndates_rec.start_date;
6223       x_inst_dtls_tbl (g_ptr).new_service_end_date := l_lndates_rec.end_date;
6224       x_inst_dtls_tbl (g_ptr).new_subline_id := l_covlvl_id;
6225       x_inst_dtls_tbl (g_ptr).new_subline_start_date := p_extwar_rec.srv_sdt;
6226       x_inst_dtls_tbl (g_ptr).new_subline_end_date := p_extwar_rec.srv_edt;
6227       x_inst_dtls_tbl (g_ptr).new_customer := p_extwar_rec.cust_account;
6228       x_inst_dtls_tbl (g_ptr).new_k_status := l_sts_code;
6229       x_inst_dtls_tbl (g_ptr).subline_date_terminated := NULL;
6230 
6231       IF p_extwar_rec.warranty_flag <> 'W'
6232       THEN
6233          l_strmlvl_id := check_strmlvl_exists (l_lineid);
6234 
6235          IF l_strmlvl_id IS NULL
6236          THEN
6237             okc_time_util_pub.get_duration
6238                                        (p_start_date         => p_extwar_rec.srv_sdt,
6239                                         p_end_date           => p_extwar_rec.srv_edt,
6240                                         x_duration           => l_duration,
6241                                         x_timeunit           => l_timeunits,
6242                                         x_return_status      => l_return_status
6243                                        );
6244 
6245             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
6246             THEN
6247                fnd_log.STRING (fnd_log.level_statement,
6248                                   g_module_current
6249                                || '.Create_contract_Ibnew.after.get_duration',
6250                                   'Get_Duration Status ='
6251                                || l_return_status
6252                                || ',Duration = '
6253                                || l_duration
6254                                || ',Time Unit = '
6255                                || l_timeunits
6256                               );
6257             END IF;
6258 
6259             IF NOT l_return_status = 'S'
6260             THEN
6261                RAISE g_exception_halt_validation;
6262             END IF;
6263 
6264             l_sll_tbl (1).cle_id := l_lineid;
6265             --l_sll_tbl(1).billing_type                  := 'T';
6266             l_sll_tbl (1).uom_code := l_timeunits;
6267             l_sll_tbl (1).sequence_no := '1';
6268             l_sll_tbl (1).level_periods := '1';
6269             l_sll_tbl (1).start_date := p_extwar_rec.srv_sdt;
6270             l_sll_tbl (1).uom_per_period := l_duration;
6271             l_sll_tbl (1).advance_periods := NULL;
6272             l_sll_tbl (1).level_amount := NULL;
6273             l_sll_tbl (1).invoice_offset_days := NULL;
6274             l_sll_tbl (1).interface_offset_days := NULL;
6275             oks_bill_sch.create_bill_sch_rules
6276                     (p_billing_type         => 'T',
6277                      p_sll_tbl              => l_sll_tbl,
6278                      p_invoice_rule_id      => p_extwar_rec.line_invoicing_rule_id,
6279                      x_bil_sch_out_tbl      => l_bil_sch_out,
6280                      x_return_status        => l_return_status
6281                     );
6282 
6283             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6284             THEN
6285                fnd_log.STRING
6286                     (fnd_log.level_event,
6287                         g_module_current
6288                      || '.Create_contract_Ibnew.after.bill_sch',
6289                         'oks_bill_sch.create_bill_sch_rules(Return status = '
6290                      || l_return_status
6291                      || ')'
6292                     );
6293             END IF;
6294 
6295             IF l_return_status <> okc_api.g_ret_sts_success
6296             THEN
6297                okc_api.set_message (g_app_name,
6298                                     g_required_value,
6299                                     g_col_name_token,
6300                                     'Sched Billing Rule (LINE)'
6301                                    );
6302                RAISE g_exception_halt_validation;
6303             END IF;
6304 
6305             oks_bill_util_pub.create_bcl_for_om
6306                                            (p_line_id            => l_lineid,
6307                                             x_return_status      => l_return_status
6308                                            );
6309 
6310             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6311             THEN
6312                fnd_log.STRING
6313                   (fnd_log.level_event,
6314                    g_module_current || '.Create_contract_Ibnew.after.bcl_om',
6315                       ' oks_bill_util_pub.create_bcl_for_om(Return status = '
6316                    || l_return_status
6317                    || ')'
6318                   );
6319             END IF;
6320 
6321             IF NOT l_return_status = 'S'
6322             THEN
6323                RAISE g_exception_halt_validation;
6324             END IF;
6325          ELSE
6326             IF check_lvlelements_exists (l_lineid)
6327             THEN
6328                IF l_update_line = 'Y'
6329                THEN
6330                   oks_bill_sch.update_om_sll_date
6331                                          (p_top_line_id        => l_lineid,
6332                                           x_return_status      => l_return_status,
6333                                           x_msg_count          => x_msg_count,
6334                                           x_msg_data           => x_msg_data
6335                                          );
6336 
6337                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
6338                      )
6339                   THEN
6340                      fnd_log.STRING
6341                         (fnd_log.level_event,
6342                             g_module_current
6343                          || '.Create_contract_Ibnew.after.om_sll',
6344                             'oks_bill_sch.update_om_sll_date(Return status = '
6345                          || l_return_status
6346                          || ')'
6347                         );
6348                   END IF;
6349 
6350                   IF NOT l_return_status = 'S'
6351                   THEN
6352                      RAISE g_exception_halt_validation;
6353                   END IF;
6354                ELSE
6355                   oks_bill_sch.create_bill_sch_cp
6356                                          (p_top_line_id        => l_lineid,
6357                                           p_cp_line_id         => l_covlvl_id,
6358                                           p_cp_new             => 'Y',
6359                                           x_return_status      => l_return_status,
6360                                           x_msg_count          => x_msg_count,
6361                                           x_msg_data           => x_msg_data
6362                                          );
6363 
6364                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
6365                      )
6366                   THEN
6367                      fnd_log.STRING
6368                         (fnd_log.level_event,
6369                             g_module_current
6370                          || '.Create_contract_Ibnew.after.sch_cp',
6371                             'oks_bill_sch.create_bill_sch_cp(Return status = '
6372                          || l_return_status
6373                          || ')'
6374                         );
6375                   END IF;
6376 
6377                   IF NOT l_return_status = 'S'
6378                   THEN
6379                      RAISE g_exception_halt_validation;
6380                   END IF;
6381                END IF;
6382 
6383                oks_bill_util_pub.create_bcl_for_om
6384                                            (p_line_id            => l_lineid,
6385                                             x_return_status      => l_return_status
6386                                            );
6387 
6388                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6389                THEN
6390                   fnd_log.STRING
6391                      (fnd_log.level_event,
6392                       g_module_current
6393                       || '.Create_contract_Ibnew.after.bcl_om',
6394                          'oks_bill_util_pub.create_bcl_for_om(Return status = '
6395                       || l_return_status
6396                       || ')'
6397                      );
6398                END IF;
6399 
6400                IF NOT l_return_status = 'S'
6401                THEN
6402                   RAISE g_exception_halt_validation;
6403                END IF;
6404             ELSE
6405                okc_api.set_message (g_app_name,
6406                                     g_required_value,
6407                                     g_col_name_token,
6408                                     'level elements NOT EXIST'
6409                                    );
6410                RAISE g_exception_halt_validation;
6411             END IF;
6412          END IF;                                                -- strmlvl end
6413       END IF;                                             -- warranty flag end
6414 
6415       UPDATE okc_k_lines_b
6416          SET price_negotiated =
6417                            (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
6418                               FROM okc_k_lines_b
6419                              WHERE cle_id = l_lineid AND dnz_chr_id = l_chrid)
6420        WHERE ID = l_lineid;
6421 
6422       UPDATE okc_k_headers_b
6423          SET estimated_amount =
6424                            (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
6425                               FROM okc_k_lines_b
6426                              WHERE dnz_chr_id = l_chrid AND lse_id IN (1, 19))
6427        WHERE ID = l_chrid;
6428 
6429       launch_workflow (   'INSTALL BASE ACTIVITY : NEW '
6430                        || fnd_global.local_chr (10)
6431                        || 'Contract Number       :     '
6432                        || get_contract_number (l_chrid)
6433                        || fnd_global.local_chr (10)
6434                        || 'Service Added         :     '
6435                        || p_extwar_rec.srv_name
6436                        || fnd_global.local_chr (10)
6437                        || 'Customer Product      :     '
6438                        || p_extwar_rec.lvl_cp_id
6439                       );
6440    EXCEPTION
6441       WHEN g_exception_halt_validation
6442       THEN
6443          x_return_status := l_return_status;
6444          NULL;
6445       WHEN OTHERS
6446       THEN
6447          x_return_status := okc_api.g_ret_sts_unexp_error;
6448          okc_api.set_message (g_app_name,
6449                               g_unexpected_error,
6450                               g_sqlcode_token,
6451                               SQLCODE,
6452                               g_sqlerrm_token,
6453                               SQLERRM
6454                              );
6455    END;
6456 
6457    PROCEDURE create_transaction_source (
6458       p_create_opr_inst                    VARCHAR2,
6459       p_source_code                        VARCHAR2,
6460       p_target_chr_id                      VARCHAR2,
6461       p_source_line_id                     NUMBER,
6462       p_source_chr_id                      NUMBER,
6463       p_target_line_id                     NUMBER,
6464       x_oper_instance_id   IN OUT NOCOPY   NUMBER,
6465       x_return_status      OUT NOCOPY      VARCHAR2,
6466       x_msg_count          OUT NOCOPY      NUMBER,
6467       x_msg_data           OUT NOCOPY      VARCHAR2
6468    )
6469    IS
6470       CURSOR cop_csr (p_opn_code VARCHAR2)
6471       IS
6472          SELECT ID
6473            FROM okc_class_operations
6474           WHERE cls_code = (SELECT cls_code
6475                               FROM okc_subclasses_b
6476                              WHERE code = 'SERVICE')
6477                 AND opn_code = p_opn_code;
6478 
6479       l_cop_id                   NUMBER;
6480       l_api_version     CONSTANT NUMBER                          := 1.0;
6481       l_init_msg_list   CONSTANT VARCHAR2 (1)                    := 'F';
6482       l_return_status            VARCHAR2 (1)                    := 'S';
6483       l_oiev_tbl_in              okc_oper_inst_pvt.oiev_tbl_type;
6484       l_oiev_tbl_out             okc_oper_inst_pvt.oiev_tbl_type;
6485       l_olev_tbl_in              okc_oper_inst_pvt.olev_tbl_type;
6486       l_olev_tbl_out             okc_oper_inst_pvt.olev_tbl_type;
6487    BEGIN
6488       x_return_status := l_return_status;
6489 
6490       IF p_create_opr_inst = 'Y'
6491       THEN
6492          -- get class operation id
6493          OPEN cop_csr (p_source_code);
6494 
6495          FETCH cop_csr
6496           INTO l_cop_id;
6497 
6498          CLOSE cop_csr;
6499 
6500          --errorout_n('cop'||l_cop_id);
6501          l_oiev_tbl_in (1).status_code := 'PROCESSED';
6502          l_oiev_tbl_in (1).cop_id := l_cop_id;
6503          l_oiev_tbl_in (1).target_chr_id := p_target_chr_id;
6504          okc_oper_inst_pub.create_operation_instance
6505                                          (p_api_version        => l_api_version,
6506                                           p_init_msg_list      => l_init_msg_list,
6507                                           x_return_status      => l_return_status,
6508                                           x_msg_count          => x_msg_count,
6509                                           x_msg_data           => x_msg_data,
6510                                           p_oiev_tbl           => l_oiev_tbl_in,
6511                                           x_oiev_tbl           => l_oiev_tbl_out
6512                                          );
6513 
6514          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6515          THEN
6516             fnd_log.STRING
6517                (fnd_log.level_event,
6518                 g_module_current || '.CReate_transaction_source',
6519                    'OKC_OPER_INST_PUB.Create_Operation_Instance (Return status = '
6520                 || l_return_status
6521                 || ')'
6522                );
6523          END IF;
6524 
6525          IF NOT l_return_status = 'S'
6526          THEN
6527             RAISE g_exception_halt_validation;
6528          END IF;
6529 
6530          x_oper_instance_id := l_oiev_tbl_out (1).ID;
6531       END IF;
6532 
6533       l_olev_tbl_in (1).oie_id := x_oper_instance_id;
6534       l_olev_tbl_in (1).process_flag := 'P';
6535       l_olev_tbl_in (1).subject_chr_id := p_target_chr_id;
6536       l_olev_tbl_in (1).object_chr_id := p_source_chr_id;
6537       l_olev_tbl_in (1).subject_cle_id := p_target_line_id;
6538       l_olev_tbl_in (1).object_cle_id := p_source_line_id;
6539       l_olev_tbl_in (1).active_yn := 'Y';
6540       okc_oper_inst_pub.create_operation_line
6541                                           (p_api_version        => l_api_version,
6542                                            p_init_msg_list      => l_init_msg_list,
6543                                            x_return_status      => l_return_status,
6544                                            x_msg_count          => x_msg_count,
6545                                            x_msg_data           => x_msg_data,
6546                                            p_olev_tbl           => l_olev_tbl_in,
6547                                            x_olev_tbl           => l_olev_tbl_out
6548                                           );
6549 
6550       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6551       THEN
6552          fnd_log.STRING
6553               (fnd_log.level_event,
6554                g_module_current || '.CReate_transaction_source',
6555                   'OKC_OPER_INST_PUB.Create_Operation_Line (Return status = '
6556                || l_return_status
6557                || ')'
6558               );
6559       END IF;
6560 
6561       IF NOT l_return_status = 'S'
6562       THEN
6563          RAISE g_exception_halt_validation;
6564       END IF;
6565 
6566       x_return_status := l_return_status;
6567    EXCEPTION
6568       WHEN g_exception_halt_validation
6569       THEN
6570          x_return_status := l_return_status;
6571          NULL;
6572       WHEN OTHERS
6573       THEN
6574          x_return_status := okc_api.g_ret_sts_unexp_error;
6575          okc_api.set_message (g_app_name,
6576                               g_unexpected_error,
6577                               g_sqlcode_token,
6578                               SQLCODE,
6579                               g_sqlerrm_token,
6580                               SQLERRM
6581                              );
6582    END;
6583 
6584    PROCEDURE create_source_links (
6585       p_line_id                            NUMBER,
6586       p_source_code                        VARCHAR2,
6587       p_create_opr_inst                    VARCHAR2,
6588       p_target_chr_id                      VARCHAR2,
6589       p_target_line_id                     NUMBER,
6590       p_txn_date                           DATE,
6591       x_return_status      OUT NOCOPY      VARCHAR2,
6592       x_msg_count          OUT NOCOPY      NUMBER,
6593       x_msg_data           OUT NOCOPY      VARCHAR2,
6594       x_oper_instance_id   IN OUT NOCOPY   NUMBER
6595    )
6596    IS
6597       CURSOR check_renewal_link
6598       IS
6599          SELECT object_cle_id, object_chr_id
6600            FROM okc_operation_instances op,
6601                 okc_operation_lines ol,
6602                 okc_class_operations classopr,
6603                 okc_subclasses_b subclass
6604           WHERE ol.oie_id = op.ID
6605             AND subclass.code = 'SERVICE'
6606             AND classopr.cls_code = subclass.cls_code
6607             AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
6608             AND op.cop_id = classopr.ID
6609             AND ol.subject_cle_id = p_line_id;
6610 
6611       CURSOR check_source_link (p_line_id NUMBER)
6612       IS
6613          SELECT subject_cle_id, subject_chr_id
6614            FROM okc_operation_instances op,
6615                 okc_operation_lines ol,
6616                 okc_class_operations cl,
6617                 okc_subclasses_b sl
6618           WHERE ol.oie_id = op.ID
6619             AND op.cop_id = cl.ID
6620             AND cl.cls_code = sl.cls_code
6621             AND sl.code = 'SERVICE'
6622             AND cl.opn_code = p_source_code
6623             AND ol.object_cle_id = p_line_id;
6624 
6625       CURSOR check_split_source_link (p_line_id NUMBER)
6626       IS
6627          SELECT subject_cle_id, subject_chr_id
6628            FROM okc_operation_instances op,
6629                 okc_operation_lines ol,
6630                 okc_class_operations cl,
6631                 okc_subclasses_b sl,
6632                 okc_k_items a
6633           WHERE ol.oie_id = op.ID
6634             AND op.cop_id = cl.ID
6635             AND cl.cls_code = sl.cls_code
6636             AND sl.code = 'SERVICE'
6637             AND cl.opn_code = p_source_code
6638             AND ol.object_cle_id = p_line_id
6639             AND a.cle_id = ol.subject_cle_id
6640             AND a.object1_id1 = (Select  b.object1_id1
6641                                  from    okc_k_items b
6642                                  where   b.jtot_object1_code = 'OKX_CUSTPROD'
6643                                  and b.cle_id = p_target_line_id)
6644             AND a.jtot_object1_code = 'OKX_CUSTPROD';
6645 
6646       l_api_version     CONSTANT NUMBER       := 1.0;
6647       l_init_msg_list   CONSTANT VARCHAR2 (1) := 'F';
6648       l_return_status            VARCHAR2 (1) := 'S';
6649       l_renewal_id               NUMBER;
6650       l_source_id                NUMBER;
6651       l_renewal_chr_id           NUMBER;
6652       l_source_hdr_id            NUMBER;
6653       l_source_line_id           NUMBER;
6654       l_source_chr_id            NUMBER;
6655       l_line_date_renewed        DATE;
6656       l_hdr_date_renewed         DATE;
6657 
6658       FUNCTION hdr_renewal_link_exists (
6659          p_target_chr_id   NUMBER,
6660          p_source_chr_id   NUMBER
6661       )
6662          RETURN BOOLEAN
6663       IS
6664          CURSOR check_source_link
6665          IS
6666             SELECT 'Y'
6667               FROM okc_operation_instances op,
6668                    okc_operation_lines ol,
6669                    okc_class_operations classopr,
6670                    okc_subclasses_b subclass
6671              WHERE ol.oie_id = op.ID
6672                AND subclass.code = 'SERVICE'
6673                AND classopr.cls_code = subclass.cls_code
6674                AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
6675                AND op.cop_id = classopr.ID
6676                AND ol.subject_chr_id = p_target_chr_id
6677                AND ol.object_chr_id = p_source_chr_id
6678                AND ol.subject_cle_id IS NULL
6679                AND ol.object_cle_id IS NULL;
6680 
6681          l_found   VARCHAR2 (1) := '?';
6682       BEGIN
6683          OPEN check_source_link;
6684 
6685          FETCH check_source_link
6686           INTO l_found;
6687 
6688          CLOSE check_source_link;
6689 
6690          IF l_found = 'Y'
6691          THEN
6692             RETURN (TRUE);
6693          ELSE
6694             RETURN (FALSE);
6695          END IF;
6696       END;
6697    BEGIN
6698       x_return_status := l_return_status;
6699 
6700       OPEN check_renewal_link;
6701 
6702       FETCH check_renewal_link
6703        INTO l_renewal_id, l_renewal_chr_id;
6704 
6705       CLOSE check_renewal_link;
6706 
6707       IF l_renewal_id IS NOT NULL
6708       THEN
6709          IF p_source_code = 'IBSPLIT'
6710          THEN
6711             OPEN check_split_source_link (l_renewal_id);
6712 
6713             FETCH check_split_source_link
6714              INTO l_source_id, l_source_chr_id;
6715 
6716             CLOSE check_split_source_link;
6717          ELSE
6718             OPEN check_source_link (l_renewal_id);
6719 
6720             FETCH check_source_link
6721              INTO l_source_id, l_source_chr_id;
6722 
6723             CLOSE check_source_link;
6724          END IF;
6725 
6726          IF l_source_id IS NOT NULL
6727          THEN
6728             l_source_line_id := l_source_id;
6729             l_source_hdr_id := l_source_chr_id;
6730          ELSE
6731             l_source_line_id := l_renewal_id;
6732             l_source_hdr_id := l_renewal_chr_id;
6733          END IF;
6734 
6735          create_transaction_source (p_create_opr_inst       => p_create_opr_inst,
6736                                     p_source_code           => 'RENEWAL',
6737                                     p_target_chr_id         => p_target_chr_id,
6738                                     p_source_line_id        => l_source_line_id,
6739                                     p_source_chr_id         => l_source_hdr_id,
6740                                     p_target_line_id        => p_target_line_id,
6741                                     x_oper_instance_id      => x_oper_instance_id,
6742                                     x_return_status         => x_return_status,
6743                                     x_msg_count             => x_msg_count,
6744                                     x_msg_data              => x_msg_data
6745                                    );
6746 
6747          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6748          THEN
6749             fnd_log.STRING
6750                (fnd_log.level_event,
6751                 g_module_current || '.CReate_transaction_source',
6752                    'OKC_OPER_INST_PUB.Create_transaction_source(Return status = '
6753                 || l_return_status
6754                 || ')'
6755                );
6756          END IF;
6757 
6758          IF x_return_status = 'S'
6759          THEN
6760             UPDATE okc_k_lines_b
6761                SET date_renewed = p_txn_date
6762              WHERE ID = l_source_line_id;
6763 
6764             l_line_date_renewed :=
6765                      oks_ib_util_pvt.check_renewed_sublines (l_source_line_id);
6766 
6767             UPDATE okc_k_lines_b
6768                SET date_renewed = l_line_date_renewed
6769              WHERE ID = (SELECT cle_id
6770                            FROM okc_k_lines_b
6771                           WHERE ID = l_source_line_id)
6772                    AND date_renewed IS NULL;
6773 
6774             l_hdr_date_renewed :=
6775                         oks_ib_util_pvt.check_renewed_lines (l_source_line_id);
6776 
6777             UPDATE okc_k_headers_all_b
6778                SET date_renewed = l_hdr_date_renewed
6779              WHERE ID = (SELECT dnz_chr_id
6780                            FROM okc_k_lines_b
6781                           WHERE ID = l_source_line_id)
6782                    AND date_renewed IS NULL;
6783          ELSE
6784             RAISE g_exception_halt_validation;
6785          END IF;
6786 
6787          -- Create an operation line for headers.
6788          IF p_source_code = 'TRANSFER'
6789          THEN
6790             IF NOT hdr_renewal_link_exists (p_target_chr_id, l_source_hdr_id)
6791             THEN
6792                create_transaction_source
6793                                    (p_create_opr_inst       => 'N',
6794                                     p_source_code           => 'RENEWAL',
6795                                     p_target_chr_id         => p_target_chr_id,
6796                                     p_source_line_id        => NULL,
6797                                     p_source_chr_id         => l_source_hdr_id,
6798                                     p_target_line_id        => NULL,
6799                                     x_oper_instance_id      => x_oper_instance_id,
6800                                     x_return_status         => x_return_status,
6801                                     x_msg_count             => x_msg_count,
6802                                     x_msg_data              => x_msg_data
6803                                    );
6804 
6805                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6806                THEN
6807                   fnd_log.STRING
6808                      (fnd_log.level_event,
6809                       g_module_current || '.CReate_transaction_source',
6810                          'OKC_OPER_INST_PUB.Create_transaction_source(Return status = '
6811                       || l_return_status
6812                       || ')'
6813                      );
6814                END IF;
6815             END IF;
6816          END IF;
6817       END IF;
6818 
6819       x_return_status := l_return_status;
6820    EXCEPTION
6821       WHEN g_exception_halt_validation
6822       THEN
6823          x_return_status := l_return_status;
6824          NULL;
6825       WHEN OTHERS
6826       THEN
6827          x_return_status := okc_api.g_ret_sts_unexp_error;
6828          okc_api.set_message (g_app_name,
6829                               g_unexpected_error,
6830                               g_sqlcode_token,
6831                               SQLCODE,
6832                               g_sqlerrm_token,
6833                               SQLERRM
6834                              );
6835    END;
6836 
6837    PROCEDURE create_contract_ibsplit (
6838       p_kdtl_tbl        IN              contract_tbl,
6839       x_return_status   OUT NOCOPY      VARCHAR2,
6840       x_msg_count       OUT NOCOPY      NUMBER,
6841       x_msg_data        OUT NOCOPY      VARCHAR2
6842    )
6843    IS
6844       CURSOR l_bill_csr (p_cle_id NUMBER)
6845       IS
6846          SELECT NVL (SUM (amount), 0)
6847            FROM oks_bill_sub_lines_v
6848           WHERE cle_id = p_cle_id;
6849 
6850       CURSOR l_rule_csr (p_cle_id NUMBER)
6851       IS
6852          SELECT elmnts.ID
6853            FROM oks_stream_levels_b strm, oks_level_elements elmnts
6854           WHERE strm.cle_id = p_cle_id AND elmnts.rul_id = strm.ID;
6855 
6856       CURSOR l_credit_csr (p_cle_id NUMBER)
6857       IS
6858          SELECT NVL (SUM (amount), 0)
6859            FROM oks_bill_sub_lines bsl
6860           WHERE bsl.cle_id = p_cle_id
6861             AND EXISTS (SELECT 1
6862                           FROM oks_bill_cont_lines bcl
6863                          WHERE bcl.ID = bsl.bcl_id AND bill_action = 'TR');
6864 
6865       --bug start 3736860
6866       CURSOR get_oks_line_dtls (p_id NUMBER)
6867       IS
6868          SELECT ID, object_version_number
6869            FROM oks_k_lines_b
6870           WHERE cle_id = p_id;
6871 
6872       CURSOR l_bill_tax_csr (p_cle_id NUMBER)
6873       IS
6874          SELECT NVL (SUM (trx_line_tax_amount), 0)
6875            FROM oks_bill_txn_lines
6876           WHERE bsl_id IN (SELECT ID
6877                              FROM oks_bill_sub_lines
6878                             WHERE cle_id = p_cle_id);
6879 
6880       --bug end 3736860
6881       /* Added for Bug#14325727 */
6882       CURSOR l_serv_csr (p_serv_id NUMBER)
6883       IS
6884       SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
6885         FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
6886        WHERE b.inventory_item_id = t.inventory_item_id
6887          AND b.organization_id = t.organization_id
6888          AND t.LANGUAGE = USERENV ('LANG')
6889          AND b.inventory_item_id = p_serv_id
6890          AND ROWNUM < 2;
6891 
6892       /*Commented for Bug#14325727 */
6893       /*CURSOR l_serv_csr (p_serv_id NUMBER)
6894       IS
6895          SELECT b.concatenated_segments description
6896            FROM mtl_system_items_b_kfv b
6897           WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
6898       */
6899 
6900       CURSOR l_ordline_csr (p_line_id NUMBER)
6901       IS
6902          SELECT object1_id1
6903            FROM okc_k_rel_objs
6904           WHERE cle_id = p_line_id;
6905 
6906       CURSOR l_refnum_csr (p_cp_id NUMBER)
6907       IS
6908          SELECT instance_number
6909            FROM csi_item_instances
6910           WHERE instance_id = p_cp_id;
6911 
6912       l_ref_num                   VARCHAR2 (30);
6913       x_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
6914       l_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
6915       l_instparent_id             NUMBER;
6916       l_old_cp_id                 NUMBER;
6917       l_insthist_rec              oks_ins_pvt.insv_rec_type;
6918       x_insthist_rec              oks_ins_pvt.insv_rec_type;
6919       l_parameters                VARCHAR2 (2000);
6920       l_renewal_id                NUMBER;
6921       l_line_rec                  k_line_service_rec_type;
6922       l_covd_rec                  k_line_covered_level_rec_type;
6923       l_available_yn              VARCHAR2 (1);
6924       l_return_status             VARCHAR2 (5)    := okc_api.g_ret_sts_success;
6925       l_chrid                     NUMBER                               := NULL;
6926       l_lineid                    NUMBER                               := NULL;
6927       l_ctr                       NUMBER                                  := 0;
6928       l_ctr1                      NUMBER                                  := 0;
6929       l_api_version      CONSTANT NUMBER                                := 1.0;
6930       l_init_msg_list    CONSTANT VARCHAR2 (1)                          := 'F';
6931       l_terminate_rec             okc_terminate_pvt.terminate_in_cle_rec;
6932       l_srvc_stdt                 DATE;
6933       --Contract Line Table
6934       l_clev_tbl_in               okc_contract_pub.clev_tbl_type;
6935       l_clev_tbl_out              okc_contract_pub.clev_tbl_type;
6936       --SalesCredit
6937       l_salescredit_tbl_line      oks_extwarprgm_pvt.salescredit_tbl;
6938       l_salescredit_tbl_hdr       oks_extwarprgm_pvt.salescredit_tbl;
6939       l_qty1price                 NUMBER                                  := 0;
6940       l_oldamt                    NUMBER (30, 2)                          := 0;
6941       l_no_of_days                NUMBER                                  := 0;
6942       l_new_value                 NUMBER                                  := 0;
6943       l_dayprice                  NUMBER                                  := 0;
6944       l_newactprice               NUMBER (30, 2)                          := 0;
6945       l_diff                      NUMBER                                  := 0;
6946       l_covlvl_id                 NUMBER;
6947       l_rule_group_id             NUMBER;
6948       l_rule_id                   NUMBER;
6949       l_price_attribs_in          oks_extwarprgm_pvt.pricing_attributes_type;
6950       l_bill_schd_yn              VARCHAR2 (1);
6951       l_list_price                NUMBER                                  := 0;
6952       l_spldt                     DATE;
6953       l_billed_amount             NUMBER                                  := 0;
6954       actual_amt                  NUMBER                                  := 0;
6955       l_total_days                NUMBER;
6956       l_credit_amt                NUMBER;
6957       l_duration                  NUMBER;
6958       l_timeunits                 VARCHAR2 (25);
6959       l_sll_tbl                   oks_bill_sch.streamlvl_tbl;
6960       l_bil_sch_out               oks_bill_sch.itembillsch_tbl;
6961       l_strmlvl_id                NUMBER                               := NULL;
6962       l_update_line               VARCHAR2 (1);
6963       l_temp                      VARCHAR2 (2000);
6964       l_ste_code                  VARCHAR2 (30);
6965       l_sts_code                  VARCHAR2 (30);
6966       l_old_qty                   NUMBER                                  := 0;
6967       actual_tax                  NUMBER                                  := 0;
6968       l_qtyltax                   NUMBER                                  := 0;
6969       l_oldtax                    NUMBER (30, 2)                          := 0;
6970       l_newacttax                 NUMBER (30, 2)                          := 0;
6971       l_daytax                    NUMBER                                  := 0;
6972       l_obj_version_num           NUMBER;
6973       l_id                        NUMBER;
6974       l_klnv_tbl_in               oks_kln_pvt.klnv_tbl_type;
6975       l_klnv_tbl_out              oks_kln_pvt.klnv_tbl_type;
6976       l_taxed_amount              NUMBER                                  := 0;
6977       l_new_cp_tbl                oks_bill_sch.subline_id_tbl;
6978       l_warranty_flag             VARCHAR2 (2);
6979       l_renewal_opr_instance_id   NUMBER;
6980       l_opr_instance_id           NUMBER;
6981       l_target_chr_id             NUMBER;
6982       l_source_line_id            NUMBER;
6983       l_create_oper_instance      VARCHAR2 (1);
6984       l_new_sdate                 DATE;
6985       l_order_line_id             Number;
6986    BEGIN
6987       x_return_status := okc_api.g_ret_sts_success;
6988       l_target_chr_id := 0;
6989       l_old_cp_id := 0;
6990 
6991       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
6992       THEN
6993          fnd_log.STRING (fnd_log.level_event,
6994                          g_module_current || '.CREATE_CONTRACT_IBSPLIT.',
6995                          ', count = ' || p_kdtl_tbl.COUNT || ')'
6996                         );
6997       END IF;
6998 
6999       IF p_kdtl_tbl.COUNT > 0
7000       THEN
7001          l_ctr := p_kdtl_tbl.FIRST;
7002 
7003          LOOP
7004             okc_context.set_okc_org_context
7005                                            (p_kdtl_tbl (l_ctr).hdr_org_id,
7006                                             p_kdtl_tbl (l_ctr).organization_id
7007                                            );
7008             l_inst_dtls_tbl.DELETE;
7009             l_ctr1 := 1;
7010             l_spldt := p_kdtl_tbl (l_ctr).transaction_date;
7011 
7012             IF (TRUNC (l_spldt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
7013             THEN
7014                l_spldt := p_kdtl_tbl (l_ctr).prod_sdt;
7015             END IF;
7016 
7017             l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7018 
7019             IF p_kdtl_tbl (l_ctr).lse_id = 25
7020             THEN
7021                l_warranty_flag := 'E';
7022             ELSIF     p_kdtl_tbl (l_ctr).lse_id = 9
7023                   AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
7024             THEN
7025                l_warranty_flag := 'S';
7026             ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
7027             THEN
7028                l_warranty_flag := 'W';
7029             ELSIF     p_kdtl_tbl (l_ctr).lse_id = 9
7030                   AND p_kdtl_tbl (l_ctr).scs_code = 'SUBSCRIPTION'
7031             THEN
7032                l_warranty_flag := 'SU';
7033             END IF;
7034 
7035             IF l_warranty_flag = 'W'
7036             THEN
7037                l_covd_rec.list_price := 0;
7038                l_covd_rec.negotiated_amount := 0;
7039                l_newactprice := 0;
7040                l_oldamt := 0;
7041                l_old_qty :=
7042                     p_kdtl_tbl (l_ctr).old_cp_quantity
7043                   - p_kdtl_tbl (l_ctr).new_quantity;
7044                --bug start 3736860
7045                l_oldtax := 0;
7046                l_covd_rec.tax_amount := 0;
7047                l_newacttax := 0;
7048 
7049                --bug end 3736860
7050                IF l_old_qty < 1
7051                THEN                                                 -- changed
7052                   l_old_qty := p_kdtl_tbl (l_ctr).old_cp_quantity; -- changed
7053                END IF;                                              -- changed
7054 
7055                l_new_sdate := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7056             ELSIF p_kdtl_tbl (l_ctr).service_amount IS NOT NULL
7057             THEN
7058                IF p_kdtl_tbl (l_ctr).lse_id <> 18
7059                THEN                   -- added subscription contract category
7060                   l_no_of_days :=
7061                      ABS (  TRUNC (  p_kdtl_tbl (l_ctr).prod_edt
7062                                    - TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7063                                   )
7064                           + 1
7065                          );
7066                   actual_amt := p_kdtl_tbl (l_ctr).service_amount;
7067                   --bug start 3736860
7068                   actual_tax := p_kdtl_tbl (l_ctr).service_tax_amount;
7069                   --bug end 3736860
7070                   l_new_sdate := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7071                END IF;
7072 
7073                l_qty1price := actual_amt / p_kdtl_tbl (l_ctr).old_cp_quantity;
7074                l_old_qty :=
7075                     p_kdtl_tbl (l_ctr).old_cp_quantity
7076                   - p_kdtl_tbl (l_ctr).new_quantity;                -- changed
7077                --bug start 3736860
7078                l_qtyltax := actual_tax / p_kdtl_tbl (l_ctr).old_cp_quantity;
7079 
7080                --bug end 3736860
7081                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7082                THEN
7083                   fnd_log.STRING (fnd_log.level_statement,
7084                                      g_module_current
7085                                   || '.CREATE_CONTRACT_IBSPLIT',
7086                                      ' cp quantity = '
7087                                   || p_kdtl_tbl (l_ctr).old_cp_quantity
7088                                  );
7089                END IF;
7090 
7091                ---- changed
7092                IF l_old_qty < 1
7093                THEN
7094                   l_old_qty := p_kdtl_tbl (l_ctr).old_cp_quantity;
7095                   l_oldamt := p_kdtl_tbl (l_ctr).service_amount;
7096                   l_newactprice := 0;
7097                   --bug start 3736860
7098                   l_oldtax := p_kdtl_tbl (l_ctr).service_tax_amount;
7099                   l_newacttax := 0;
7100                --bug end 3736860
7101                ELSE
7102                   l_oldamt := l_old_qty * l_qty1price;
7103                   l_newactprice :=
7104                                  p_kdtl_tbl (l_ctr).service_amount - l_oldamt;
7105                                                                -- bug 4274725
7106                   --bug start 3736860
7107                   l_oldtax := l_old_qty * l_qtyltax;
7108                   l_newacttax :=
7109                              p_kdtl_tbl (l_ctr).service_tax_amount - l_oldtax;
7110                                                                -- bug 4274725
7111                --bug end 3736860
7112                END IF;
7113 
7114                -- end of change
7115                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7116                THEN
7117                   fnd_log.STRING (fnd_log.level_statement,
7118                                      g_module_current
7119                                   || '.CREATE_CONTRACT_IBSPLIT',
7120                                      ' l_old_qty = '
7121                                   || l_old_qty
7122                                   || ',l_oldamt = '
7123                                   || l_oldamt
7124                                   || ',l_newactprice = '
7125                                   || l_newactprice
7126                                  );
7127                END IF;
7128 
7129                l_oldamt :=
7130                   oks_extwar_util_pvt.round_currency_amt
7131                                            (l_oldamt,
7132                                             p_kdtl_tbl (l_ctr).service_currency
7133                                            );
7134                l_covd_rec.negotiated_amount :=
7135                   oks_extwar_util_pvt.round_currency_amt
7136                                            (l_newactprice,
7137                                             p_kdtl_tbl (l_ctr).service_currency
7138                                            );
7139                --bug start 3736860
7140                l_covd_rec.tax_amount :=
7141                   oks_extwar_util_pvt.round_currency_amt
7142                                            (l_newacttax,
7143                                             p_kdtl_tbl (l_ctr).service_currency
7144                                            );
7145                --bug end 3736860
7146                l_list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7147                l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7148             END IF;                                     ---warranty flag = 'W'
7149 
7150             UPDATE okc_k_items
7151                SET number_of_items = l_old_qty
7152              WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
7153 
7154             UPDATE okc_k_lines_b
7155                SET price_negotiated = NVL (l_oldamt, 0),
7156                    price_unit = NVL (p_kdtl_tbl (l_ctr).service_unit_price, 0)
7157              WHERE ID = p_kdtl_tbl (l_ctr).object_line_id;
7158 
7159             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7160             THEN
7161                fnd_log.STRING
7162                             (fnd_log.level_event,
7163                                 g_module_current
7164                              || '.CREATE_CONTRACT_IBSPLIT.after_update.cov_lvl',
7165                                 ' update_cov_level(Return status = '
7166                              || l_return_status
7167                              || ')'
7168                             );
7169             END IF;
7170 
7171             IF NOT l_return_status = okc_api.g_ret_sts_success
7172             THEN
7173                RAISE g_exception_halt_validation;
7174             END IF;
7175 
7176             --bug start 3736860
7177             OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
7178 
7179             FETCH get_oks_line_dtls
7180              INTO l_id, l_obj_version_num;
7181 
7182             CLOSE get_oks_line_dtls;
7183 
7184             l_klnv_tbl_in (1).ID := l_id;
7185             l_klnv_tbl_in (1).tax_amount :=
7186                oks_extwar_util_pvt.round_currency_amt
7187                                            (l_oldtax,
7188                                             p_kdtl_tbl (l_ctr).service_currency
7189                                            );
7190             l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
7191             oks_contract_line_pub.update_line
7192                                           (p_api_version        => l_api_version,
7193                                            p_init_msg_list      => l_init_msg_list,
7194                                            x_return_status      => l_return_status,
7195                                            x_msg_count          => x_msg_count,
7196                                            x_msg_data           => x_msg_data,
7197                                            p_klnv_tbl           => l_klnv_tbl_in,
7198                                            x_klnv_tbl           => l_klnv_tbl_out,
7199                                            p_validate_yn        => 'N'
7200                                           );
7201 
7202             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7203             THEN
7204                fnd_log.STRING
7205                      (fnd_log.level_event,
7206                          g_module_current
7207                       || '.CREATE_CONTRACT_IBSPLIT.after_cov_lvl_tax',
7208                          'oks_contract_line_pub.update_line(Return status = '
7209                       || l_return_status
7210                       || ')'
7211                      );
7212             END IF;
7213 
7214             IF NOT l_return_status = 'S'
7215             THEN
7216                okc_api.set_message (g_app_name,
7217                                     g_required_value,
7218                                     g_col_name_token,
7219                                     'OKS Contract COV LINE'
7220                                    );
7221                RAISE g_exception_halt_validation;
7222             END IF;
7223 
7224             --bug end 3736860
7225             get_sts_code (NULL,
7226                           p_kdtl_tbl (l_ctr).hdr_sts,
7227                           l_ste_code,
7228                           l_sts_code
7229                          );
7230             --x_inst_dtls_tbl(l_ctr1).INST_PARENT_ID            :=  p_split_rec.old_cp_id;
7231             l_inst_dtls_tbl (l_ctr1).transaction_date :=
7232                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7233             l_inst_dtls_tbl (l_ctr1).transaction_type := 'SPL';
7234             l_inst_dtls_tbl (l_ctr1).instance_amt_old :=
7235                                              p_kdtl_tbl (l_ctr).service_amount;
7236             l_inst_dtls_tbl (l_ctr1).instance_qty_old :=
7237                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
7238             l_inst_dtls_tbl (l_ctr1).old_contract_id :=
7239                                                      p_kdtl_tbl (l_ctr).hdr_id;
7240             l_inst_dtls_tbl (l_ctr1).old_contact_start_date :=
7241                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
7242             l_inst_dtls_tbl (l_ctr1).old_contract_end_date :=
7243                                                     p_kdtl_tbl (l_ctr).hdr_edt;
7244             l_inst_dtls_tbl (l_ctr1).old_service_line_id :=
7245                                             p_kdtl_tbl (l_ctr).service_line_id;
7246             l_inst_dtls_tbl (l_ctr1).old_service_start_date :=
7247                                                 p_kdtl_tbl (l_ctr).service_sdt;
7248             l_inst_dtls_tbl (l_ctr1).old_service_end_date :=
7249                                                 p_kdtl_tbl (l_ctr).service_edt;
7250             l_inst_dtls_tbl (l_ctr1).old_subline_id :=
7251                                              p_kdtl_tbl (l_ctr).object_line_id;
7252             l_inst_dtls_tbl (l_ctr1).old_subline_start_date :=
7253                                                    p_kdtl_tbl (l_ctr).prod_sdt;
7254             l_inst_dtls_tbl (l_ctr1).old_subline_end_date :=
7255                                                    p_kdtl_tbl (l_ctr).prod_edt;
7256             l_inst_dtls_tbl (l_ctr1).old_customer :=
7257                                                p_kdtl_tbl (l_ctr).cust_account;
7258             l_inst_dtls_tbl (l_ctr1).old_k_status := l_sts_code;
7259             l_inst_dtls_tbl (l_ctr1).instance_id_new :=
7260                                                   p_kdtl_tbl (l_ctr).old_cp_id;
7261             l_inst_dtls_tbl (l_ctr1).instance_amt_new := NVL (l_oldamt, 0);
7262             l_inst_dtls_tbl (l_ctr1).instance_qty_new := l_old_qty;
7263             l_inst_dtls_tbl (l_ctr1).new_contract_id :=
7264                                                      p_kdtl_tbl (l_ctr).hdr_id;
7265             l_inst_dtls_tbl (l_ctr1).new_contact_start_date :=
7266                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
7267             l_inst_dtls_tbl (l_ctr1).new_contract_end_date :=
7268                                                     p_kdtl_tbl (l_ctr).hdr_edt;
7269             l_inst_dtls_tbl (l_ctr1).new_service_line_id :=
7270                                             p_kdtl_tbl (l_ctr).service_line_id;
7271             l_inst_dtls_tbl (l_ctr1).new_service_start_date :=
7272                                                 p_kdtl_tbl (l_ctr).service_sdt;
7273             l_inst_dtls_tbl (l_ctr1).new_service_end_date :=
7274                                                 p_kdtl_tbl (l_ctr).service_edt;
7275             l_inst_dtls_tbl (l_ctr1).new_subline_id :=
7276                                              p_kdtl_tbl (l_ctr).object_line_id;
7277             l_inst_dtls_tbl (l_ctr1).new_subline_start_date :=
7278                                                    p_kdtl_tbl (l_ctr).prod_sdt;
7279             l_inst_dtls_tbl (l_ctr1).new_subline_end_date :=
7280                                                    p_kdtl_tbl (l_ctr).prod_edt;
7281             l_inst_dtls_tbl (l_ctr1).new_customer :=
7282                                                p_kdtl_tbl (l_ctr).cust_account;
7283             l_inst_dtls_tbl (l_ctr1).new_k_status := l_sts_code;
7284 
7285             --x_inst_dtls_tbl(l_ctr1).SUBLINE_DATE_TERMINATED   :=
7286 
7287             -- Fixed Bug 2500056  06-Aug-2002
7288             IF p_kdtl_tbl (l_ctr).lse_id = 18
7289             THEN
7290                l_covd_rec.rty_code := 'CONTRACTWARRANTYORDER';
7291             ELSE
7292                l_covd_rec.rty_code := 'CONTRACTSERVICESORDER';
7293             END IF;
7294 
7295             l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
7296             l_covd_rec.attach_2_line_id := p_kdtl_tbl (l_ctr).service_line_id;
7297             l_covd_rec.line_number := okc_api.g_miss_char;
7298             l_covd_rec.customer_product_id := p_kdtl_tbl (l_ctr).new_cp_id;
7299             l_covd_rec.product_segment1 := p_kdtl_tbl (l_ctr).prod_name;
7300             l_covd_rec.product_desc := p_kdtl_tbl (l_ctr).prod_description;
7301             l_covd_rec.product_start_date := l_new_sdate;
7302             --TRUNC( p_kdtl_tbl( l_ctr ).prod_sdt ); -- fixed bug2296369
7303             l_covd_rec.product_end_date := TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
7304             l_covd_rec.quantity := p_kdtl_tbl (l_ctr).new_quantity;
7305             l_covd_rec.warranty_flag := l_warranty_flag;
7306             l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
7307             l_order_line_id := Null;
7308             OPEN l_ordline_csr (p_kdtl_tbl (l_ctr).object_line_id);
7309 
7310             FETCH l_ordline_csr
7311              INTO l_order_line_id;
7312 
7313             CLOSE l_ordline_csr;
7314 
7315             l_covd_rec.order_line_id := l_order_line_id;
7316             l_covd_rec.currency_code := p_kdtl_tbl (l_ctr).service_currency;
7317             l_covd_rec.product_sts_code := p_kdtl_tbl (l_ctr).prod_sts_code;
7318             l_covd_rec.upg_orig_system_ref :=
7319                                         p_kdtl_tbl (l_ctr).upg_orig_system_ref;
7320             l_covd_rec.upg_orig_system_ref_id :=
7321                                      p_kdtl_tbl (l_ctr).upg_orig_system_ref_id;
7322 
7323             OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
7324 
7325             FETCH l_serv_csr
7326              INTO l_covd_rec.attach_2_line_desc;
7327 
7328             CLOSE l_serv_csr;
7329 
7330             l_covd_rec.line_renewal_type :=
7331                                      p_kdtl_tbl (l_ctr).prod_line_renewal_type;
7332             l_covd_rec.prod_item_id := p_kdtl_tbl (l_ctr).new_inventory_item;
7333             l_covd_rec.price_uom := p_kdtl_tbl (l_ctr).price_uom_code;
7334             l_covd_rec.toplvl_uom_code := p_kdtl_tbl (l_ctr).toplvl_uom_code;
7335             --mchoudha added for bug#5233956
7336             l_covd_rec.toplvl_price_qty := p_kdtl_tbl (l_ctr).toplvl_price_qty;
7337             oks_extwar_util_pvt.get_k_pricing_attributes
7338                             (p_k_line_id          => p_kdtl_tbl (l_ctr).service_line_id,
7339                              x_pricing_att        => l_price_attribs_in,
7340                              x_return_status      => l_return_status
7341                             );
7342 
7343             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7344             THEN
7345                fnd_log.STRING
7346                   (fnd_log.level_event,
7347                       g_module_current
7348                    || '.CREATE_CONTRACT_IBSPLIT.after.price_att',
7349                       'oks_extwar_util_pvt.get_k_pricing_attributes(Return status = '
7350                    || l_return_status
7351                    || ')'
7352                   );
7353             END IF;
7354 
7355             IF NOT l_return_status = okc_api.g_ret_sts_success
7356             THEN
7357                RAISE g_exception_halt_validation;
7358             END IF;
7359 
7360             oks_extwarprgm_pvt.create_k_covered_levels
7361                                        (p_k_covd_rec         => l_covd_rec,
7362                                         p_price_attribs      => l_price_attribs_in,
7363                                         p_caller             => 'IB',
7364                                         x_order_error        => l_temp,
7365                                         x_covlvl_id          => l_covlvl_id,
7366                                         x_update_line        => l_update_line,
7367                                         x_return_status      => l_return_status,
7368                                         x_msg_count          => x_msg_count,
7369                                         x_msg_data           => x_msg_data
7370                                        );
7371 
7372             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7373             THEN
7374                fnd_log.STRING
7375                   (fnd_log.level_event,
7376                       g_module_current
7377                    || '.CREATE_CONTRACT_IBSPLIT.after_create.cov_lvl',
7378                       'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
7379                    || l_return_status
7380                    || ')'
7381                   );
7382             END IF;
7383 
7384             IF NOT l_return_status = 'S'
7385             THEN
7386                RAISE g_exception_halt_validation;
7387             END IF;
7388 
7389             --x_inst_dtls_tbl(l_ctr1+1).INST_PARENT_ID            :=  p_split_rec.old_cp_id;
7390             l_inst_dtls_tbl (l_ctr1 + 1).transaction_date :=
7391                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7392             l_inst_dtls_tbl (l_ctr1 + 1).transaction_type := NULL;
7393             l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_old :=
7394                                              p_kdtl_tbl (l_ctr).service_amount;
7395             l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_old :=
7396                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
7397             l_inst_dtls_tbl (l_ctr1 + 1).old_contract_id :=
7398                                                      p_kdtl_tbl (l_ctr).hdr_id;
7399             l_inst_dtls_tbl (l_ctr1 + 1).old_contact_start_date :=
7400                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
7401             l_inst_dtls_tbl (l_ctr1 + 1).old_contract_end_date :=
7402                                                     p_kdtl_tbl (l_ctr).hdr_edt;
7403             l_inst_dtls_tbl (l_ctr1 + 1).old_service_line_id :=
7404                                             p_kdtl_tbl (l_ctr).service_line_id;
7405             l_inst_dtls_tbl (l_ctr1 + 1).old_service_start_date :=
7406                                                 p_kdtl_tbl (l_ctr).service_sdt;
7407             l_inst_dtls_tbl (l_ctr1 + 1).old_service_end_date :=
7408                                                 p_kdtl_tbl (l_ctr).service_edt;
7409             l_inst_dtls_tbl (l_ctr1 + 1).old_subline_id :=
7410                                              p_kdtl_tbl (l_ctr).object_line_id;
7411             l_inst_dtls_tbl (l_ctr1 + 1).old_subline_start_date :=
7412                                                    p_kdtl_tbl (l_ctr).prod_sdt;
7413             l_inst_dtls_tbl (l_ctr1 + 1).old_subline_end_date :=
7414                                                    p_kdtl_tbl (l_ctr).prod_edt;
7415             l_inst_dtls_tbl (l_ctr1 + 1).old_customer :=
7416                                                p_kdtl_tbl (l_ctr).cust_account;
7417             l_inst_dtls_tbl (l_ctr1 + 1).old_k_status := l_sts_code;
7418             l_inst_dtls_tbl (l_ctr1 + 1).instance_id_new :=
7419                                                   p_kdtl_tbl (l_ctr).new_cp_id;
7420             l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_new :=
7421                oks_extwar_util_pvt.round_currency_amt
7422                                            (l_newactprice,
7423                                             p_kdtl_tbl (l_ctr).service_currency
7424                                            );
7425             l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_new :=
7426                                                p_kdtl_tbl (l_ctr).new_quantity;
7427             l_inst_dtls_tbl (l_ctr1 + 1).new_contract_id :=
7428                                                      p_kdtl_tbl (l_ctr).hdr_id;
7429             l_inst_dtls_tbl (l_ctr1 + 1).new_contact_start_date :=
7430                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
7431             l_inst_dtls_tbl (l_ctr1 + 1).new_contract_end_date :=
7432                                                     p_kdtl_tbl (l_ctr).hdr_edt;
7433             l_inst_dtls_tbl (l_ctr1 + 1).new_service_line_id :=
7434                                             p_kdtl_tbl (l_ctr).service_line_id;
7435             l_inst_dtls_tbl (l_ctr1 + 1).new_service_start_date :=
7436                                                 p_kdtl_tbl (l_ctr).service_sdt;
7437             l_inst_dtls_tbl (l_ctr1 + 1).new_service_end_date :=
7438                                                 p_kdtl_tbl (l_ctr).service_edt;
7439             l_inst_dtls_tbl (l_ctr1 + 1).new_subline_id := l_covlvl_id;
7440             l_inst_dtls_tbl (l_ctr1 + 1).new_subline_start_date := l_new_sdate;
7441             l_inst_dtls_tbl (l_ctr1 + 1).new_subline_end_date :=
7442                                            TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
7443             l_inst_dtls_tbl (l_ctr1 + 1).new_customer :=
7444                                                p_kdtl_tbl (l_ctr).cust_account;
7445             l_inst_dtls_tbl (l_ctr1 + 1).new_k_status := l_sts_code;
7446             l_inst_dtls_tbl (l_ctr1 + 1).subline_date_terminated := NULL;
7447             l_new_cp_tbl (1).ID := l_covlvl_id;
7448             oks_bill_sch.adjust_split_bill_sch
7449                              (p_old_cp_id          => p_kdtl_tbl (l_ctr).object_line_id,
7450                               p_new_cp_tbl         => l_new_cp_tbl,
7451                               x_return_status      => l_return_status,
7452                               x_msg_count          => x_msg_count,
7453                               x_msg_data           => x_msg_data
7454                              );
7455 
7456             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7457             THEN
7458                fnd_log.STRING
7459                            (fnd_log.level_event,
7460                                g_module_current
7461                             || '.CREATE_CONTRACT_IBSPLIT.ADJUST_SPLIT_BILL_SCH',
7462                             'Return status = ' || l_return_status
7463                            );
7464             END IF;
7465 
7466             IF NOT l_return_status = 'S'
7467             THEN
7468                RAISE g_exception_halt_validation;
7469             END IF;
7470 
7471             -- Fixed Bug 5039806
7472 	    /*
7473             UPDATE okc_k_lines_b
7474                SET price_negotiated =
7475                       (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7476                          FROM okc_k_lines_b
7477                         WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
7478                           AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id)
7479              WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
7480 
7481             UPDATE okc_k_headers_b
7482                SET estimated_amount =
7483                       (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0)
7484                          FROM okc_k_lines_b
7485                         WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
7486                           AND lse_id IN (1, 19))
7487              WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
7488 	     */
7489 
7490             l_create_oper_instance := 'N';
7491 
7492             IF    l_opr_instance_id IS NULL
7493                OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
7494             THEN
7495                l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
7496                l_create_oper_instance := 'Y';
7497             END IF;
7498 
7499             create_transaction_source
7500                         (p_create_opr_inst       => l_create_oper_instance,
7501                          p_source_code           => 'IBSPLIT',
7502                          p_target_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
7503                          p_source_line_id        => p_kdtl_tbl (l_ctr).object_line_id,
7504                          p_source_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
7505                          p_target_line_id        => l_covlvl_id,
7506                          x_oper_instance_id      => l_opr_instance_id,
7507                          x_return_status         => l_return_status,
7508                          x_msg_count             => x_msg_count,
7509                          x_msg_data              => x_msg_data
7510                         );
7511 
7512             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7513             THEN
7514                fnd_log.STRING
7515                        (fnd_log.level_event,
7516                            g_module_current
7517                         || '.CREATE_CONTRACT_IBSPLIT.Create_transaction_source',
7518                         'Return status = ' || l_return_status
7519                        );
7520             END IF;
7521 
7522             IF NOT l_return_status = 'S'
7523             THEN
7524                RAISE g_exception_halt_validation;
7525             END IF;
7526 
7527             create_source_links
7528                             (p_create_opr_inst       => l_create_oper_instance,
7529                              p_source_code           => 'IBSPLIT',
7530                              p_target_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
7531                              p_line_id               => p_kdtl_tbl (l_ctr).object_line_id,
7532                              p_target_line_id        => l_covlvl_id,
7533                              p_txn_date              => p_kdtl_tbl (l_ctr).transaction_date,
7534                              x_oper_instance_id      => l_renewal_opr_instance_id,
7535                              x_return_status         => l_return_status,
7536                              x_msg_count             => x_msg_count,
7537                              x_msg_data              => x_msg_data
7538                             );
7539 
7540             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7541             THEN
7542                fnd_log.STRING
7543                              (fnd_log.level_event,
7544                                  g_module_current
7545                               || '.CREATE_CONTRACT_IBSPLIT.Create_source_links',
7546                               'Return status = ' || l_return_status
7547                              );
7548             END IF;
7549 
7550             IF NOT l_return_status = 'S'
7551             THEN
7552                RAISE g_exception_halt_validation;
7553             END IF;
7554 
7555             IF l_inst_dtls_tbl.COUNT <> 0
7556             THEN
7557                IF     l_instparent_id IS NULL
7558                   AND l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
7559                THEN
7560                   OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
7561 
7562                   FETCH l_refnum_csr
7563                    INTO l_ref_num;
7564 
7565                   CLOSE l_refnum_csr;
7566 
7567                   l_parameters :=
7568                         ' Old CP :'
7569                      || p_kdtl_tbl (l_ctr).old_cp_id
7570                      || ','
7571                      || 'Item Id:'
7572                      || p_kdtl_tbl (l_ctr).prod_inventory_item
7573                      || ','
7574                      || 'Old Quantity:'
7575                      || p_kdtl_tbl (l_ctr).old_cp_quantity
7576                      || ','
7577                      || 'Transaction type :'
7578                      || 'SPL'
7579                      || ','
7580                      || ' Transaction date :'
7581                      || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
7582                      || ','
7583                      || 'New quantity:'
7584                      || p_kdtl_tbl (l_ctr).new_quantity;
7585                   --oks_instance_history
7586                   l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
7587                   l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
7588                   l_insthist_rec.transaction_type := 'SPL';
7589                   l_insthist_rec.transaction_date :=
7590                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
7591                   l_insthist_rec.reference_number := l_ref_num;
7592                   l_insthist_rec.PARAMETERS := l_parameters;
7593                   oks_ins_pvt.insert_row (p_api_version        => 1.0,
7594                                           p_init_msg_list      => 'T',
7595                                           x_return_status      => l_return_status,
7596                                           x_msg_count          => x_msg_count,
7597                                           x_msg_data           => x_msg_data,
7598                                           p_insv_rec           => l_insthist_rec,
7599                                           x_insv_rec           => x_insthist_rec
7600                                          );
7601 
7602                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
7603                      )
7604                   THEN
7605                      fnd_log.STRING
7606                                 (fnd_log.level_event,
7607                                  g_module_current || '.CREATE_K_IBSPLIT',
7608                                     'oks_ins_pvt.insert_row(Return status = '
7609                                  || l_return_status
7610                                  || ')'
7611                                 );
7612                   END IF;
7613 
7614                   x_return_status := l_return_status;
7615 
7616                   IF NOT l_return_status = okc_api.g_ret_sts_success
7617                   THEN
7618                      x_return_status := l_return_status;
7619                      RAISE g_exception_halt_validation;
7620                   END IF;
7621 
7622                   l_instparent_id := x_insthist_rec.ID;
7623                END IF;
7624 
7625                FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
7626                LOOP
7627                   l_inst_dtls_tbl (i).ins_id := l_instparent_id;
7628                END LOOP;
7629 
7630                --oks_inst_history_details
7631                oks_ihd_pvt.insert_row (p_api_version        => 1.0,
7632                                        p_init_msg_list      => 'T',
7633                                        x_return_status      => l_return_status,
7634                                        x_msg_count          => x_msg_count,
7635                                        x_msg_data           => x_msg_data,
7636                                        p_ihdv_tbl           => l_inst_dtls_tbl,
7637                                        x_ihdv_tbl           => x_inst_dtls_tbl
7638                                       );
7639 
7640                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7641                THEN
7642                   fnd_log.STRING
7643                                 (fnd_log.level_event,
7644                                  g_module_current || '.CREATE_K_IBSPLIT',
7645                                     'oks_ihd_pvt.insert_row(Return status = '
7646                                  || l_return_status
7647                                  || ')'
7648                                 );
7649                END IF;
7650 
7651                x_return_status := l_return_status;
7652 
7653                IF NOT l_return_status = okc_api.g_ret_sts_success
7654                THEN
7655                   x_return_status := l_return_status;
7656                   RAISE g_exception_halt_validation;
7657                END IF;
7658             END IF;
7659 
7660             launch_workflow (   'INSTALL BASE ACTIVITY : SPLIT '
7661                              || fnd_global.local_chr (10)
7662                              || 'Contract Number       :       '
7663                              || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
7664                              || fnd_global.local_chr (10)
7665                              || 'Splitted Cust Product :       '
7666                              || p_kdtl_tbl (l_ctr).old_cp_id
7667                              || fnd_global.local_chr (10)
7668                              || 'New Customer  Product :       '
7669                              || p_kdtl_tbl (l_ctr).new_cp_id
7670                             );
7671             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
7672             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
7673             l_ctr1 := l_ctr1 + 2;
7674          END LOOP;
7675       END IF;
7676    EXCEPTION
7677       WHEN g_exception_halt_validation
7678       THEN
7679          x_return_status := l_return_status;
7680          NULL;
7681       WHEN OTHERS
7682       THEN
7683          x_return_status := okc_api.g_ret_sts_unexp_error;
7684          okc_api.set_message (g_app_name,
7685                               g_unexpected_error,
7686                               g_sqlcode_token,
7687                               SQLCODE,
7688                               g_sqlerrm_token,
7689                               SQLERRM
7690                              );
7691    END;
7692 
7693    PROCEDURE update_contract_ibreplace (
7694       p_kdtl_tbl        IN              contract_tbl,
7695       x_return_status   OUT NOCOPY      VARCHAR2,
7696       x_msg_count       OUT NOCOPY      NUMBER,
7697       x_msg_data        OUT NOCOPY      VARCHAR2
7698    )
7699    IS
7700       --billed upto date
7701       CURSOR l_billend_csr (p_cle_id NUMBER)
7702       IS
7703          SELECT MAX (date_billed_to) date_billed_to
7704            FROM oks_bill_sub_lines
7705           WHERE cle_id = p_cle_id;
7706 
7707       CURSOR l_cov_csr (p_cle_id NUMBER)
7708       IS
7709          SELECT ksl1.inheritance_type
7710            FROM oks_k_lines_b ksl, oks_k_lines_b ksl1
7711           WHERE ksl.cle_id = p_cle_id AND ksl1.cle_id = ksl.coverage_id;
7712 
7713       --level element id
7714       CURSOR l_rule_csr (p_cle_id NUMBER)
7715       IS
7716          SELECT elmnts.ID
7717            FROM oks_stream_levels_b strm, oks_level_elements elmnts
7718           WHERE strm.cle_id = p_cle_id AND elmnts.rul_id = strm.ID;
7719 
7720       --total billed amount
7721       CURSOR l_billed_amount_csr (p_cle_id NUMBER)
7722       IS
7723          SELECT NVL (SUM (amount), 0)
7724            FROM oks_bill_sub_lines_v
7725           WHERE cle_id = p_cle_id;
7726 
7727       --credit amount
7728       CURSOR l_credit_csr (p_cle_id NUMBER)
7729       IS
7730          SELECT NVL (SUM (amount), 0)
7731            FROM oks_bill_sub_lines bsl
7732           WHERE bsl.cle_id = p_cle_id
7733             AND EXISTS (SELECT 1
7734                           FROM oks_bill_cont_lines bcl
7735                          WHERE bcl.ID = bsl.bcl_id AND bill_action = 'TR');
7736 
7737       -- bug start 3736860
7738       CURSOR get_oks_line_dtls (p_id NUMBER)
7739       IS
7740          SELECT ID, object_version_number
7741            FROM oks_k_lines_b
7742           WHERE cle_id = p_id;
7743 
7744       CURSOR l_bill_tax_csr (p_cle_id NUMBER)
7745       IS
7746          SELECT NVL (SUM (trx_line_tax_amount), 0)
7747            FROM oks_bill_txn_lines
7748           WHERE bsl_id IN (SELECT ID
7749                              FROM oks_bill_sub_lines
7750                             WHERE cle_id = p_cle_id);
7751 
7752       --bug end 3736860
7753       /* Added for Bug#14325727 */
7754       CURSOR l_serv_csr (p_serv_id NUMBER)
7755       IS
7756       SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
7757         FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
7758        WHERE b.inventory_item_id = t.inventory_item_id
7759          AND b.organization_id = t.organization_id
7760          AND t.LANGUAGE = USERENV ('LANG')
7761          AND b.inventory_item_id = p_serv_id
7762          AND ROWNUM < 2;
7763 
7764       /*Commented for Bug#14325727 */
7765       /*
7766       CURSOR l_serv_csr (p_serv_id NUMBER)
7767       IS
7768          SELECT b.concatenated_segments description
7769            FROM mtl_system_items_b_kfv b
7770           WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
7771       */
7772       CURSOR l_ordline_csr (p_line_id NUMBER)
7773       IS
7774          SELECT object1_id1
7775            FROM okc_k_rel_objs
7776           WHERE cle_id = p_line_id;
7777 
7778       CURSOR check_renewal_link (p_line_id NUMBER)
7779       IS
7780          SELECT object_cle_id
7781            FROM okc_operation_instances op, okc_operation_lines ol
7782           WHERE ol.oie_id = op.ID
7783             AND op.cop_id IN (41, 40)
7784             AND ol.subject_cle_id = p_line_id;
7785 
7786       CURSOR check_replace_link (p_line_id NUMBER)
7787       IS
7788          SELECT object_cle_id
7789            FROM okc_operation_instances op, okc_operation_lines ol
7790           WHERE ol.oie_id = op.ID
7791             AND op.cop_id = 11017
7792             AND ol.subject_cle_id = p_line_id;
7793 
7794       CURSOR l_refnum_csr (p_cp_id NUMBER)
7795       IS
7796          SELECT instance_number
7797            FROM csi_item_instances
7798           WHERE instance_id = p_cp_id;
7799 
7800       l_ref_num                   VARCHAR2 (30);
7801       x_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
7802       l_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
7803       l_instparent_id             NUMBER;
7804       l_old_cp_id                 NUMBER;
7805       l_insthist_rec              oks_ins_pvt.insv_rec_type;
7806       x_insthist_rec              oks_ins_pvt.insv_rec_type;
7807       l_parameters                VARCHAR2 (2000);
7808       l_renewal_id                NUMBER;
7809       -- l_contact_tbl_in              oks_extwarprgm_pvt.contact_tbl;
7810       -- l_salescredit_tbl_line        oks_extwarprgm_pvt.salescredit_tbl;
7811       -- l_salescredit_tbl_hdr         oks_extwarprgm_pvt.salescredit_tbl;
7812       l_line_rec                  k_line_service_rec_type;
7813       l_covd_rec                  k_line_covered_level_rec_type;
7814       l_available_yn              CHAR;
7815       l_return_status             VARCHAR2 (5)    := okc_api.g_ret_sts_success;
7816       l_chrid                     NUMBER                               := NULL;
7817       l_lineid                    NUMBER                               := NULL;
7818       l_days                      NUMBER                                  := 0;
7819       l_day1price                 NUMBER                                  := 0;
7820       l_oldamt                    NUMBER (30, 2)                          := 0;
7821       l_newamt                    NUMBER (30, 2)                          := 0;
7822       l_ctr                       NUMBER                                  := 0;
7823       l_ctr1                      NUMBER                                  := 0;
7824       l_newsdt                    DATE;
7825       l_newedt                    DATE;
7826       l_repldt                    DATE;
7827       l_repl_rule                 VARCHAR2 (2);
7828       l_duration                  NUMBER;
7829       l_timeunits                 VARCHAR2 (240);
7830       l_covlvl_id                 NUMBER;
7831       --Contract Line Table
7832       l_clev_tbl_in               okc_contract_pub.clev_tbl_type;
7833       l_clev_tbl_out              okc_contract_pub.clev_tbl_type;
7834       l_price_attribs_in          oks_extwarprgm_pvt.pricing_attributes_type;
7835       l_cov_rec                   l_cov_csr%ROWTYPE;
7836       l_api_version      CONSTANT NUMBER                                := 1.0;
7837       l_init_msg_list    CONSTANT VARCHAR2 (1)              := okc_api.g_false;
7838       l_list_price                NUMBER;
7839       l_no_of_days                NUMBER;
7840       l_billed_amount             NUMBER;
7841       l_billed_upto_dt            DATE;
7842       l_ptr                       NUMBER                                  := 0;
7843       actual_amount               NUMBER                                  := 0;
7844       l_ste_code                  VARCHAR2 (30);
7845       l_sts_code                  VARCHAR2 (30);
7846       l_update_line               VARCHAR2 (1);
7847       l_temp                      VARCHAR2 (2000);
7848       l_obj_version_num           NUMBER;
7849       l_id                        NUMBER;
7850       l_klnv_tbl_in               oks_kln_pvt.klnv_tbl_type;
7851       l_klnv_tbl_out              oks_kln_pvt.klnv_tbl_type;
7852       actual_tax                  NUMBER                                  := 0;
7853       l_day1tax                   NUMBER                                  := 0;
7854       l_oldtax                    NUMBER (30, 2)                          := 0;
7855       l_newtax                    NUMBER (30, 2)                          := 0;
7856       l_taxed_amount              NUMBER                                  := 0;
7857       l_warranty_flag             VARCHAR2 (2);
7858       l_opr_instance_id           NUMBER;
7859       l_renewal_opr_instance_id   NUMBER;
7860       l_target_chr_id             NUMBER;
7861       l_replace_id                NUMBER;
7862       l_source_line_id            NUMBER;
7863       l_create_oper_instance      VARCHAR2 (1);
7864       l_termdt                    DATE;
7865       l_order_line_id             Number;
7866    BEGIN
7867       x_return_status := okc_api.g_ret_sts_success;
7868       l_old_cp_id := 0;
7869       l_target_chr_id := 0;
7870 
7871       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
7872       THEN
7873          fnd_log.STRING (fnd_log.level_event,
7874                          g_module_current || '.CREATE_CONTRACT_IBREPLACE.',
7875                          'count = ' || p_kdtl_tbl.COUNT || ')'
7876                         );
7877       END IF;
7878 
7879       IF p_kdtl_tbl.COUNT > 0
7880       THEN
7881          l_ctr := p_kdtl_tbl.FIRST;
7882 
7883          LOOP
7884             okc_context.set_okc_org_context
7885                                            (p_kdtl_tbl (l_ctr).hdr_org_id,
7886                                             p_kdtl_tbl (l_ctr).organization_id
7887                                            );
7888             l_inst_dtls_tbl.DELETE;
7889             l_ctr1 := 1;
7890             get_sts_code (NULL,
7891                           p_kdtl_tbl (l_ctr).prod_sts_code,
7892                           l_ste_code,
7893                           l_sts_code
7894                          );
7895 
7896             --IF l_ste_code <> 'ENTERED' THEN
7897             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7898             THEN
7899                fnd_log.STRING
7900                   (fnd_log.level_statement,
7901                    g_module_current || '.CREATE_CONTRACT_IBREPLACE',
7902                       'Service Start Date = '
7903                    || p_kdtl_tbl (l_ctr).service_sdt
7904                    || '
7905                                            ,Service End Date = '
7906                    || p_kdtl_tbl (l_ctr).service_edt
7907                    || ', lse_id= '
7908                    || p_kdtl_tbl (l_ctr).lse_id
7909                   );
7910             END IF;
7911 
7912             l_days :=
7913                  (  TRUNC (p_kdtl_tbl (l_ctr).prod_edt)
7914                   - TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7915                  )
7916                + 1;
7917             l_repldt := trunc(p_kdtl_tbl (l_ctr).transaction_date);
7918 
7919             IF TRUNC (l_repldt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
7920             THEN
7921                l_repldt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
7922             END IF;
7923 
7924             l_covd_rec.list_price := p_kdtl_tbl (l_ctr).service_unit_price;
7925 
7926             IF p_kdtl_tbl (l_ctr).lse_id = 18
7927             THEN
7928                l_covd_rec.list_price := 0;
7929                l_covd_rec.negotiated_amount := 0;
7930                l_list_price := 0;
7931                l_oldamt := 0;
7932                l_repl_rule := NULL;
7933                l_newamt := 0;
7934                --bug start 3736860
7935                l_newtax := 0;
7936                l_oldtax := 0;
7937                l_covd_rec.tax_amount := 0;
7938 
7939                --bug end 3736860
7940                OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
7941 
7942                FETCH l_cov_csr
7943                 INTO l_cov_rec;
7944 
7945                l_repl_rule := l_cov_rec.inheritance_type;
7946 
7947                CLOSE l_cov_csr;
7948 
7949                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
7950                THEN
7951                   fnd_log.STRING (fnd_log.level_statement,
7952                                      g_module_current
7953                                   || '.CREATE_CONTRACT_IBREPLACE',
7954                                   'Replace Rule = ' || l_repl_rule
7955                                  );
7956                END IF;
7957 
7958                /* If product is terminated it can't be extended beyond Its terminated date
7959                   so Replace rule will be set only for the remaining period.
7960                */
7961                l_newsdt := l_repldt;
7962                l_termdt := l_repldt;
7963 
7964                IF NVL (l_repl_rule, 'R') = 'R'
7965                THEN
7966                   l_newedt := p_kdtl_tbl (l_ctr).prod_edt;
7967                ELSIF NVL (l_repl_rule, 'R') = 'F'
7968                THEN
7969                   okc_time_util_pub.get_duration
7970                                  (p_start_date         => p_kdtl_tbl (l_ctr).prod_sdt,
7971                                   p_end_date           => p_kdtl_tbl (l_ctr).prod_edt,
7972                                   x_duration           => l_duration,
7973                                   x_timeunit           => l_timeunits,
7974                                   x_return_status      => l_return_status
7975                                  );
7976 
7977                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
7978                      )
7979                   THEN
7980                      fnd_log.STRING
7981                             (fnd_log.level_event,
7982                                 g_module_current
7983                              || '.CREATE_CONTRACT_IBREPLACE.after.get_duration',
7984                              'Return Status = ' || l_return_status
7985                             );
7986                   END IF;
7987 
7988                   IF NOT l_return_status = 'S'
7989                   THEN
7990                      RAISE g_exception_halt_validation;
7991                   END IF;
7992 
7993                   l_newedt :=
7994                      okc_time_util_pub.get_enddate (p_start_date      => l_repldt,
7995                                                     p_duration        => l_duration,
7996                                                     p_timeunit        => l_timeunits
7997                                                    );
7998                END IF;
7999             END IF;
8000 
8001             IF p_kdtl_tbl (l_ctr).service_amount IS NOT NULL
8002             THEN
8003                IF p_kdtl_tbl (l_ctr).lse_id IN (25, 9)
8004                THEN
8005                   actual_amount := p_kdtl_tbl (l_ctr).service_amount;
8006                   actual_tax := p_kdtl_tbl (l_ctr).service_tax_amount;
8007                   l_newedt := TRUNC (p_kdtl_tbl (l_ctr).prod_edt);
8008                   l_newamt := p_kdtl_tbl (l_ctr).service_amount;
8009                   l_oldamt := 0;
8010                   l_newtax := p_kdtl_tbl (l_ctr).service_tax_amount;
8011                   l_oldtax := 0;
8012                   l_newsdt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8013                   -- Fixed for bug 4539750
8014                   l_termdt := TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8015                END IF;
8016             END IF;
8017 
8018             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8019             THEN
8020                fnd_log.STRING (fnd_log.level_statement,
8021                                g_module_current
8022                                || '.CREATE_CONTRACT_IBREPLACE',
8023                                   'New amount = '
8024                                || l_newamt
8025                                || ',Old amount = '
8026                                || l_oldamt
8027                               );
8028             END IF;
8029 
8030             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8031             THEN
8032                fnd_log.STRING (fnd_log.level_statement,
8033                                g_module_current
8034                                || '.CREATE_CONTRACT_IBREPLACE',
8035                                   'New tax = '
8036                                || l_newtax
8037                                || ',Old tax = '
8038                                || l_oldtax
8039                               );
8040             END IF;
8041 
8042             l_covd_rec.tax_amount :=
8043                oks_extwar_util_pvt.round_currency_amt
8044                                            (l_newtax,
8045                                             p_kdtl_tbl (l_ctr).service_currency
8046                                            );
8047             l_covd_rec.negotiated_amount :=
8048                oks_extwar_util_pvt.round_currency_amt
8049                                            (l_newamt,
8050                                             p_kdtl_tbl (l_ctr).service_currency
8051                                            );
8052 	    /* Commented for Bug#14829043 */
8053             /*l_covd_rec.list_price :=
8054                oks_extwar_util_pvt.round_currency_amt
8055                                            (  l_newamt
8056                                             / p_kdtl_tbl (l_ctr).old_cp_quantity,
8057                                             p_kdtl_tbl (l_ctr).service_currency
8058                                            );*/
8059 
8060 	     /* Code added for Bug#14829043 */
8061 	     BEGIN
8062 		 SELECT okcl.price_unit,oksl.price_uom
8063 		   INTO l_covd_rec.list_price, l_covd_rec.price_uom
8064 		   FROM okc_k_lines_b okcl, oks_k_lines_b oksl
8065 		  WHERE okcl.id = p_kdtl_tbl (l_ctr).object_line_id
8066 		    AND okcl.id = oksl.cle_id;
8067 	     EXCEPTION WHEN OTHERS THEN
8068 		  IF FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
8069 		     fnd_log.string(FND_LOG.LEVEL_EVENT,G_MODULE_CURRENT||'.CREATE_CONTRACT_IBREPLACE.price_uom_error', 'Error is: ' || SQLERRM);
8070 		  END IF;
8071 		  NULL;
8072 	     END;
8073 	     IF FND_LOG.LEVEL_EVENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
8074 		     fnd_log.string(FND_LOG.LEVEL_EVENT,G_MODULE_CURRENT||'.CREATE_CONTRACT_IBREPLACE',
8075 		       'Unit Price = '|| l_covd_rec.list_price ||
8076 		       ', Price UOM = '|| l_covd_rec.price_uom);
8077 	     END IF;
8078 	     /* End of code Added for Bug#14829043 */
8079 
8080             IF l_ste_code <> 'ENTERED'
8081             THEN
8082                l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).object_line_id;
8083                l_clev_tbl_in (1).date_terminated := l_termdt;
8084                l_clev_tbl_in (1).price_negotiated :=
8085                   oks_extwar_util_pvt.round_currency_amt
8086                                           (l_oldamt,
8087                                            p_kdtl_tbl (l_ctr).service_currency
8088                                           );
8089 
8090                /* Commented for Bug#14829043*/
8091                /*l_clev_tbl_in (1).price_unit :=
8092                   oks_extwar_util_pvt.round_currency_amt
8093                                           (  p_kdtl_tbl (l_ctr).service_amount
8094                                            / p_kdtl_tbl (l_ctr).old_cp_quantity,
8095                                            p_kdtl_tbl (l_ctr).service_currency
8096                                           ); */
8097                l_clev_tbl_in( 1 ).price_unit  := l_covd_rec.list_price; /* Added for Bug#14829043 */
8098                l_clev_tbl_in (1).trn_code := 'REP';
8099                l_clev_tbl_in (1).term_cancel_source := 'IBREPLACE';
8100 
8101                get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
8102                l_clev_tbl_in (1).sts_code := l_sts_code;
8103 
8104                okc_contract_pub.update_contract_line
8105                                        (p_api_version            => l_api_version,
8106                                         p_init_msg_list          => l_init_msg_list,
8107                                         p_restricted_update      => okc_api.g_true,
8108                                         x_return_status          => l_return_status,
8109                                         x_msg_count              => x_msg_count,
8110                                         x_msg_data               => x_msg_data,
8111                                         p_clev_tbl               => l_clev_tbl_in,
8112                                         x_clev_tbl               => l_clev_tbl_out
8113                                        );
8114 
8115                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8116                THEN
8117                   fnd_log.STRING
8118                      (fnd_log.level_event,
8119                          g_module_current
8120                       || '.CREATE_CONTRACT_IBREPLACE.update_cov_lvl',
8121                          'okc_contract_pub.update_contract_line(Return status = '
8122                       || l_return_status
8123                       || 'count = '
8124                       || p_kdtl_tbl.COUNT
8125                       || ')'
8126                      );
8127                END IF;
8128 
8129                IF NOT l_return_status = okc_api.g_ret_sts_success
8130                THEN
8131                   RAISE g_exception_halt_validation;
8132                END IF;
8133 
8134                OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
8135 
8136                FETCH get_oks_line_dtls
8137                 INTO l_id, l_obj_version_num;
8138 
8139                CLOSE get_oks_line_dtls;
8140 
8141                l_klnv_tbl_in (1).ID := l_id;
8142                l_klnv_tbl_in (1).tax_amount :=
8143                   oks_extwar_util_pvt.round_currency_amt
8144                                            (l_oldtax,
8145                                             p_kdtl_tbl (l_ctr).service_currency
8146                                            );
8147                l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
8148                oks_contract_line_pub.update_line
8149                                           (p_api_version        => l_api_version,
8150                                            p_init_msg_list      => l_init_msg_list,
8151                                            x_return_status      => l_return_status,
8152                                            x_msg_count          => x_msg_count,
8153                                            x_msg_data           => x_msg_data,
8154                                            p_klnv_tbl           => l_klnv_tbl_in,
8155                                            x_klnv_tbl           => l_klnv_tbl_out,
8156                                            p_validate_yn        => 'N'
8157                                           );
8158 
8159                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8160                THEN
8161                   fnd_log.STRING
8162                      (fnd_log.level_event,
8163                          g_module_current
8164                       || '.CREATE_CONTRACT_IBREPLACE.after_update.cov_lvl_tax',
8165                          'oks_contract_line_pub.update_line(Return status = '
8166                       || l_return_status
8167                       || ')'
8168                      );
8169                END IF;
8170 
8171                IF NOT l_return_status = 'S'
8172                THEN
8173                   okc_api.set_message (g_app_name,
8174                                        g_required_value,
8175                                        g_col_name_token,
8176                                        'OKS Contract COV LINE'
8177                                       );
8178                   RAISE g_exception_halt_validation;
8179                END IF;
8180 
8181                l_inst_dtls_tbl (l_ctr1).subline_date_terminated :=
8182                                            TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8183             ELSE
8184                -- Cancel the line
8185 
8186 	      -- added for the bug # 6000133
8187 	      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
8188 
8189                oks_change_status_pvt.update_line_status
8190                           (x_return_status           => l_return_status,
8191                            x_msg_data                => x_msg_data,
8192                            x_msg_count               => x_msg_count,
8193                            p_init_msg_list           => 'F',
8194                            p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
8195                            p_cle_id                  => p_kdtl_tbl (l_ctr).object_line_id,
8196                            p_new_sts_code            => l_sts_code,
8197                            p_canc_reason_code        => 'REPLACE',
8198                            p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
8199                            p_old_ste_code            => 'ENTERED',
8200                            p_new_ste_code            => 'CANCELLED',
8201                            p_term_cancel_source      => 'IBREPLACE',
8202                            p_date_cancelled          => TRUNC (l_termdt),
8203                            p_comments                => NULL,
8204                            p_validate_status         => 'N'
8205                           );
8206 
8207                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8208                THEN
8209                   fnd_log.STRING
8210                      (fnd_log.level_event,
8211                       g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
8212                          'okc_contract_pub.update_contract_line(Return status ='
8213                       || l_return_status
8214                       || ')'
8215                      );
8216                END IF;
8217 
8218                IF NOT l_return_status = okc_api.g_ret_sts_success
8219                THEN
8220                   RAISE g_exception_halt_validation;
8221                END IF;
8222 
8223                l_inst_dtls_tbl (l_ctr1).date_cancelled := TRUNC (l_termdt);
8224             END IF;
8225 
8226             get_sts_code (NULL,
8227                           p_kdtl_tbl (l_ctr).hdr_sts,
8228                           l_ste_code,
8229                           l_sts_code
8230                          );
8231             l_inst_dtls_tbl (l_ctr1).transaction_date :=
8232                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8233             l_inst_dtls_tbl (l_ctr1).transaction_type := 'RPL';
8234             l_inst_dtls_tbl (l_ctr1).instance_amt_old :=
8235                                              p_kdtl_tbl (l_ctr).service_amount;
8236             l_inst_dtls_tbl (l_ctr1).instance_qty_old :=
8237                                                p_kdtl_tbl (l_ctr).new_quantity;
8238             l_inst_dtls_tbl (l_ctr1).old_contract_id :=
8239                                                      p_kdtl_tbl (l_ctr).hdr_id;
8240             l_inst_dtls_tbl (l_ctr1).old_contact_start_date :=
8241                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
8242             l_inst_dtls_tbl (l_ctr1).old_contract_end_date :=
8243                                                     p_kdtl_tbl (l_ctr).hdr_edt;
8244             l_inst_dtls_tbl (l_ctr1).old_service_line_id :=
8245                                             p_kdtl_tbl (l_ctr).service_line_id;
8246             l_inst_dtls_tbl (l_ctr1).old_service_start_date :=
8247                                                 p_kdtl_tbl (l_ctr).service_sdt;
8248             l_inst_dtls_tbl (l_ctr1).old_service_end_date :=
8249                                                 p_kdtl_tbl (l_ctr).service_edt;
8250             l_inst_dtls_tbl (l_ctr1).old_subline_id :=
8251                                              p_kdtl_tbl (l_ctr).object_line_id;
8252             l_inst_dtls_tbl (l_ctr1).old_subline_start_date :=
8253                                                    p_kdtl_tbl (l_ctr).prod_sdt;
8254             l_inst_dtls_tbl (l_ctr1).old_subline_end_date :=
8255                                                    p_kdtl_tbl (l_ctr).prod_edt;
8256             l_inst_dtls_tbl (l_ctr1).old_customer :=
8257                                                p_kdtl_tbl (l_ctr).cust_account;
8258             l_inst_dtls_tbl (l_ctr1).old_k_status := l_sts_code;
8259             --l_inst_dtls_tbl(l_ctr1).SUBLINE_DATE_TERMINATED   := TRUNC(p_kdtl_tbl( l_ctr ).prod_sdt);
8260             l_inst_dtls_tbl (l_ctr1).instance_id_new :=
8261                                                   p_kdtl_tbl (l_ctr).new_cp_id;
8262             l_inst_dtls_tbl (l_ctr1).instance_amt_new :=
8263                oks_extwar_util_pvt.round_currency_amt
8264                                            (l_oldamt,
8265                                             p_kdtl_tbl (l_ctr).service_currency
8266                                            );
8267             l_inst_dtls_tbl (l_ctr1).instance_qty_new :=
8268                                                p_kdtl_tbl (l_ctr).new_quantity;
8269             l_inst_dtls_tbl (l_ctr1).new_contract_id :=
8270                                                      p_kdtl_tbl (l_ctr).hdr_id;
8271             l_inst_dtls_tbl (l_ctr1).new_contact_start_date :=
8272                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
8273             l_inst_dtls_tbl (l_ctr1).new_contract_end_date :=
8274                                                     p_kdtl_tbl (l_ctr).hdr_edt;
8275             l_inst_dtls_tbl (l_ctr1).new_service_line_id :=
8276                                             p_kdtl_tbl (l_ctr).service_line_id;
8277             l_inst_dtls_tbl (l_ctr1).new_service_start_date :=
8278                                                 p_kdtl_tbl (l_ctr).service_sdt;
8279             l_inst_dtls_tbl (l_ctr1).new_service_end_date :=
8280                                                 p_kdtl_tbl (l_ctr).service_edt;
8281             l_inst_dtls_tbl (l_ctr1).new_subline_id :=
8282                                              p_kdtl_tbl (l_ctr).object_line_id;
8283             l_inst_dtls_tbl (l_ctr1).new_subline_start_date :=
8284                                                    p_kdtl_tbl (l_ctr).prod_sdt;
8285             l_inst_dtls_tbl (l_ctr1).new_subline_end_date :=
8286                                                    p_kdtl_tbl (l_ctr).prod_edt;
8287             l_inst_dtls_tbl (l_ctr1).new_customer :=
8288                                                p_kdtl_tbl (l_ctr).cust_account;
8289             l_inst_dtls_tbl (l_ctr1).new_k_status := l_sts_code;
8290 
8291             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8292             THEN
8293                fnd_log.STRING (fnd_log.level_statement,
8294                                g_module_current
8295                                || '.CREATE_CONTRACT_IBREPLACE',
8296                                   'New End date = '
8297                                || l_newedt
8298                                || ',New start Date = '
8299                                || TRUNC (p_kdtl_tbl (l_ctr).prod_sdt)
8300                                || ',Old Amount= '
8301                                || l_oldamt
8302                                || 'New Amount = '
8303                                || l_newamt
8304                               );
8305             END IF;
8306 
8307             l_lineid := p_kdtl_tbl (l_ctr).service_line_id;
8308             l_inst_dtls_tbl (l_ctr1 + 1).new_service_line_id := l_lineid;
8309             l_inst_dtls_tbl (l_ctr1 + 1).new_service_start_date :=
8310                                                 p_kdtl_tbl (l_ctr).service_sdt;
8311             l_inst_dtls_tbl (l_ctr1 + 1).new_service_end_date :=
8312                                                 p_kdtl_tbl (l_ctr).service_edt;
8313 
8314             -- Fixed Bug 2500056  06-Aug-2002
8315             IF p_kdtl_tbl (l_ctr).lse_id = 18
8316             THEN
8317                l_covd_rec.rty_code := 'CONTRACTWARRANTYORDER';
8318             ELSE
8319                l_covd_rec.rty_code := 'CONTRACTSERVICESORDER';
8320             END IF;
8321             l_order_line_id := null;
8322             OPEN l_ordline_csr (p_kdtl_tbl (l_ctr).object_line_id);
8323 
8324             FETCH l_ordline_csr
8325              INTO l_order_line_id;
8326 
8327             CLOSE l_ordline_csr;
8328 
8329             l_covd_rec.order_line_id := l_order_line_id;
8330             OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
8331 
8332             FETCH l_serv_csr
8333              INTO l_covd_rec.attach_2_line_desc;
8334 
8335             CLOSE l_serv_csr;
8336 
8337             IF p_kdtl_tbl (l_ctr).lse_id = 25
8338             THEN
8339                l_warranty_flag := 'E';
8340             ELSIF     p_kdtl_tbl (l_ctr).lse_id = 9
8341                   AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
8342             THEN
8343                l_warranty_flag := 'S';
8344             ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
8345             THEN
8346                l_warranty_flag := 'W';
8347             ELSIF     p_kdtl_tbl (l_ctr).lse_id = 9
8348                   AND p_kdtl_tbl (l_ctr).scs_code = 'SUBSCRIPTION'
8349             THEN
8350                l_warranty_flag := 'SU';
8351             END IF;
8352 
8353             l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
8354             l_covd_rec.attach_2_line_id := l_lineid;
8355             l_covd_rec.line_number := 1;
8356             l_covd_rec.customer_product_id := p_kdtl_tbl (l_ctr).new_cp_id;
8357             l_covd_rec.product_start_date := l_newsdt;
8358             l_covd_rec.product_end_date := TRUNC (l_newedt);
8359             l_covd_rec.quantity := p_kdtl_tbl (l_ctr).new_quantity;
8360             l_covd_rec.warranty_flag := l_warranty_flag;
8361             l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
8362             l_covd_rec.currency_code := p_kdtl_tbl (l_ctr).service_currency;
8363             l_covd_rec.product_sts_code := p_kdtl_tbl (l_ctr).prod_sts_code;
8364             l_covd_rec.upg_orig_system_ref :=
8365                                         p_kdtl_tbl (l_ctr).upg_orig_system_ref;
8366             l_covd_rec.upg_orig_system_ref_id :=
8367                                      p_kdtl_tbl (l_ctr).upg_orig_system_ref_id;
8368             l_covd_rec.line_renewal_type :=
8369                                      p_kdtl_tbl (l_ctr).prod_line_renewal_type;
8370             l_covd_rec.prod_item_id := p_kdtl_tbl (l_ctr).new_inventory_item;
8371             l_covd_rec.price_uom := p_kdtl_tbl (l_ctr).price_uom_code;
8372             l_covd_rec.toplvl_uom_code := p_kdtl_tbl (l_ctr).toplvl_uom_code;
8373             --mchoudha added for bug#5233956
8374             l_covd_rec.toplvl_price_qty := p_kdtl_tbl (l_ctr).toplvl_price_qty;
8375             oks_extwarprgm_pvt.create_k_covered_levels
8376                                        (p_k_covd_rec         => l_covd_rec,
8377                                         p_price_attribs      => l_price_attribs_in,
8378                                         p_caller             => 'IB',
8379                                         x_order_error        => l_temp,
8380                                         x_covlvl_id          => l_covlvl_id,
8381                                         x_update_line        => l_update_line,
8382                                         x_return_status      => l_return_status,
8383                                         x_msg_count          => x_msg_count,
8384                                         x_msg_data           => x_msg_data
8385                                        );
8386 
8387             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8388             THEN
8389                fnd_log.STRING
8390                   (fnd_log.level_event,
8391                       g_module_current
8392                    || '.CREATE_CONTRACT_IBREPLACE.create_cov_lvl',
8393                       'oks_extwarprgm_pvt.create_k_covered_levels(Return status = '
8394                    || l_return_status
8395                   );
8396             END IF;
8397 
8398             IF NOT l_return_status = 'S'
8399             THEN
8400                RAISE g_exception_halt_validation;
8401             END IF;
8402 
8403             IF l_ste_code = 'ENTERED'
8404             THEN
8405                -- UPdate topline price negotiated.
8406                UPDATE okc_k_lines_b
8407                   SET price_negotiated = price_negotiated + l_newamt
8408                 WHERE ID = l_lineid;
8409 
8410                -- Update header estimated amount
8411                UPDATE okc_k_headers_b
8412                   SET estimated_amount = estimated_amount + l_newamt
8413                 WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
8414 
8415                -- Update topline tax amount
8416                UPDATE oks_k_lines_b
8417                   SET tax_amount = tax_amount + l_newtax
8418                 WHERE cle_id = l_lineid;
8419 
8420                -- Update header tax amount
8421                UPDATE oks_k_headers_b
8422                   SET tax_amount = tax_amount + l_newtax
8423                 WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
8424             END IF;
8425 
8426             l_inst_dtls_tbl (l_ctr1 + 1).transaction_date :=
8427                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8428             l_inst_dtls_tbl (l_ctr1 + 1).transaction_type := 'RPL';
8429             l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_old :=
8430                                              p_kdtl_tbl (l_ctr).service_amount;
8431             l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_old :=
8432                                                p_kdtl_tbl (l_ctr).new_quantity;
8433             l_inst_dtls_tbl (l_ctr1 + 1).old_contract_id :=
8434                                                      p_kdtl_tbl (l_ctr).hdr_id;
8435             l_inst_dtls_tbl (l_ctr1 + 1).old_contact_start_date :=
8436                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
8437             l_inst_dtls_tbl (l_ctr1 + 1).old_contract_end_date :=
8438                                                     p_kdtl_tbl (l_ctr).hdr_edt;
8439             l_inst_dtls_tbl (l_ctr1 + 1).old_service_line_id :=
8440                                             p_kdtl_tbl (l_ctr).service_line_id;
8441             l_inst_dtls_tbl (l_ctr1 + 1).old_service_start_date :=
8442                                                 p_kdtl_tbl (l_ctr).service_sdt;
8443             l_inst_dtls_tbl (l_ctr1 + 1).old_service_end_date :=
8444                                                 p_kdtl_tbl (l_ctr).service_edt;
8445             l_inst_dtls_tbl (l_ctr1 + 1).old_subline_id :=
8446                                              p_kdtl_tbl (l_ctr).object_line_id;
8447             l_inst_dtls_tbl (l_ctr1 + 1).old_subline_start_date :=
8448                                                    p_kdtl_tbl (l_ctr).prod_sdt;
8449             l_inst_dtls_tbl (l_ctr1 + 1).old_subline_end_date :=
8450                                                    p_kdtl_tbl (l_ctr).prod_edt;
8451             l_inst_dtls_tbl (l_ctr1 + 1).old_customer :=
8452                                                p_kdtl_tbl (l_ctr).cust_account;
8453             l_inst_dtls_tbl (l_ctr1 + 1).old_k_status := l_sts_code;
8454             l_inst_dtls_tbl (l_ctr1 + 1).subline_date_terminated := NULL;
8455             l_inst_dtls_tbl (l_ctr1 + 1).instance_id_new :=
8456                                                   p_kdtl_tbl (l_ctr).new_cp_id;
8457             l_inst_dtls_tbl (l_ctr1 + 1).instance_amt_new :=
8458                oks_extwar_util_pvt.round_currency_amt
8459                                            (l_newamt,
8460                                             p_kdtl_tbl (l_ctr).service_currency
8461                                            );
8462             l_inst_dtls_tbl (l_ctr1 + 1).instance_qty_new :=
8463                                                p_kdtl_tbl (l_ctr).new_quantity;
8464             l_inst_dtls_tbl (l_ctr1 + 1).new_contract_id :=
8465                                                      p_kdtl_tbl (l_ctr).hdr_id;
8466             l_inst_dtls_tbl (l_ctr1 + 1).new_contact_start_date :=
8467                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
8468             l_inst_dtls_tbl (l_ctr1 + 1).new_contract_end_date :=
8469                                                     p_kdtl_tbl (l_ctr).hdr_edt;
8470             l_inst_dtls_tbl (l_ctr1 + 1).new_subline_id := l_covlvl_id;
8471             l_inst_dtls_tbl (l_ctr1 + 1).new_subline_start_date :=
8472                                            TRUNC (p_kdtl_tbl (l_ctr).prod_sdt);
8473             l_inst_dtls_tbl (l_ctr1 + 1).new_subline_end_date :=
8474                                                               TRUNC (l_newedt);
8475             l_inst_dtls_tbl (l_ctr1 + 1).new_customer :=
8476                                                p_kdtl_tbl (l_ctr).cust_account;
8477             l_inst_dtls_tbl (l_ctr1 + 1).new_k_status := l_sts_code;
8478 
8479             -------Billing Schedule
8480             IF p_kdtl_tbl (l_ctr).lse_id IN (9, 25)
8481             THEN                       -- added subscription contract category
8482                oks_bill_sch.adjust_replace_product_bs
8483                             (p_old_cp_id          => p_kdtl_tbl (l_ctr).object_line_id,
8484                              p_new_cp_id          => l_covlvl_id,
8485                              x_return_status      => l_return_status,
8486                              x_msg_count          => x_msg_count,
8487                              x_msg_data           => x_msg_data
8488                             );
8489 
8490                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8491                THEN
8492                   fnd_log.STRING
8493                      (fnd_log.level_event,
8494                          g_module_current
8495                       || '.CREATE_CONTRACT_IBREPLACE.OKS_BILL_SCH.ADJUST_REPLACE_PRODUCT_BS',
8496                          'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8497                       || l_return_status
8498                      );
8499                END IF;
8500 
8501                IF NOT l_return_status = 'S'
8502                THEN
8503                   RAISE g_exception_halt_validation;
8504                END IF;
8505             END IF;
8506 
8507             l_create_oper_instance := 'N';
8508 
8509             IF    l_opr_instance_id IS NULL
8510                OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
8511             THEN
8512                l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
8513                l_create_oper_instance := 'Y';
8514             END IF;
8515 
8516             create_transaction_source
8517                         (p_create_opr_inst       => l_create_oper_instance,
8518                          p_source_code           => 'REPLACE',
8519                          p_target_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
8520                          p_source_line_id        => p_kdtl_tbl (l_ctr).object_line_id,
8521                          p_source_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
8522                          p_target_line_id        => l_covlvl_id,
8523                          x_oper_instance_id      => l_opr_instance_id,
8524                          x_return_status         => l_return_status,
8525                          x_msg_count             => x_msg_count,
8526                          x_msg_data              => x_msg_data
8527                         );
8528 
8529             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8530             THEN
8531                fnd_log.STRING
8532                      (fnd_log.level_event,
8533                          g_module_current
8534                       || '.CREATE_CONTRACT_IBREPLACE.Create_transaction_source',
8535                          'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8536                       || l_return_status
8537                      );
8538             END IF;
8539 
8540             IF NOT l_return_status = 'S'
8541             THEN
8542                RAISE g_exception_halt_validation;
8543             END IF;
8544 
8545             create_source_links
8546                             (p_create_opr_inst       => l_create_oper_instance,
8547                              p_source_code           => 'REPLACE',
8548                              p_target_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
8549                              p_line_id               => p_kdtl_tbl (l_ctr).object_line_id,
8550                              p_target_line_id        => l_covlvl_id,
8551                              p_txn_date              => p_kdtl_tbl (l_ctr).transaction_date,
8552                              x_oper_instance_id      => l_renewal_opr_instance_id,
8553                              x_return_status         => l_return_status,
8554                              x_msg_count             => x_msg_count,
8555                              x_msg_data              => x_msg_data
8556                             );
8557 
8558             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8559             THEN
8560                fnd_log.STRING
8561                            (fnd_log.level_event,
8562                                g_module_current
8563                             || '.CREATE_CONTRACT_IBREPLACE.Create_source_links',
8564                                'ADJUST_REPLACE_PRODUCT_BS(Return status = '
8565                             || l_return_status
8566                            );
8567             END IF;
8568 
8569             IF NOT l_return_status = 'S'
8570             THEN
8571                RAISE g_exception_halt_validation;
8572             END IF;
8573 
8574             IF l_inst_dtls_tbl.COUNT <> 0
8575             THEN
8576                IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
8577                THEN
8578                   OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
8579 
8580                   FETCH l_refnum_csr
8581                    INTO l_ref_num;
8582 
8583                   CLOSE l_refnum_csr;
8584 
8585                   l_parameters :=
8586                         ' Old CP :'
8587                      || p_kdtl_tbl (l_ctr).old_cp_id
8588                      || ','
8589                      || 'Item Id:'
8590                      || p_kdtl_tbl (l_ctr).prod_inventory_item
8591                      || ','
8592                      || 'Old Quantity:'
8593                      || p_kdtl_tbl (l_ctr).current_cp_quantity
8594                      || ','
8595                      || 'Transaction type :'
8596                      || 'RPL'
8597                      || ','
8598                      || ' Transaction date :'
8599                      || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
8600                      || ','
8601                      || 'New CP:'
8602                      || p_kdtl_tbl (l_ctr).new_cp_id;
8603                   --oks_instance_history
8604                   l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
8605                   l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
8606                   l_insthist_rec.transaction_type := 'RPL';
8607                   l_insthist_rec.transaction_date :=
8608                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
8609                   l_insthist_rec.reference_number := l_ref_num;
8610                   l_insthist_rec.PARAMETERS := l_parameters;
8611                   oks_ins_pvt.insert_row (p_api_version        => 1.0,
8612                                           p_init_msg_list      => 'T',
8613                                           x_return_status      => l_return_status,
8614                                           x_msg_count          => x_msg_count,
8615                                           x_msg_data           => x_msg_data,
8616                                           p_insv_rec           => l_insthist_rec,
8617                                           x_insv_rec           => x_insthist_rec
8618                                          );
8619 
8620                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
8621                      )
8622                   THEN
8623                      fnd_log.STRING
8624                                 (fnd_log.level_event,
8625                                  g_module_current || '.CREATE_IBREPLACE',
8626                                     'oks_ins_pvt.insert_row(Return status = '
8627                                  || l_return_status
8628                                  || ')'
8629                                 );
8630                   END IF;
8631 
8632                   x_return_status := l_return_status;
8633 
8634                   IF NOT l_return_status = okc_api.g_ret_sts_success
8635                   THEN
8636                      x_return_status := l_return_status;
8637                      RAISE g_exception_halt_validation;
8638                   END IF;
8639 
8640                   l_instparent_id := x_insthist_rec.ID;
8641                END IF;
8642 
8643                FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
8644                LOOP
8645                   l_inst_dtls_tbl (i).ins_id := l_instparent_id;
8646                END LOOP;
8647 
8648                --oks_inst_history_details
8649                oks_ihd_pvt.insert_row (p_api_version        => 1.0,
8650                                        p_init_msg_list      => 'T',
8651                                        x_return_status      => l_return_status,
8652                                        x_msg_count          => x_msg_count,
8653                                        x_msg_data           => x_msg_data,
8654                                        p_ihdv_tbl           => l_inst_dtls_tbl,
8655                                        x_ihdv_tbl           => x_inst_dtls_tbl
8656                                       );
8657 
8658                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8659                THEN
8660                   fnd_log.STRING
8661                                 (fnd_log.level_event,
8662                                  g_module_current || '.CREATE_K_IBREPLACE',
8663                                     'oks_ihd_pvt.insert_row(Return status = '
8664                                  || l_return_status
8665                                  || ')'
8666                                 );
8667                END IF;
8668 
8669                x_return_status := l_return_status;
8670 
8671                IF NOT l_return_status = okc_api.g_ret_sts_success
8672                THEN
8673                   x_return_status := l_return_status;
8674                   RAISE g_exception_halt_validation;
8675                END IF;
8676             END IF;
8677 
8678             launch_workflow (   'INSTALL BASE ACTIVITY : REPLACE '
8679                              || fnd_global.local_chr (10)
8680                              || 'Contract Number       :         '
8681                              || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
8682                              || fnd_global.local_chr (10)
8683                              || 'Old Cust Product      :         '
8684                              || p_kdtl_tbl (l_ctr).old_cp_id
8685                              || fnd_global.local_chr (10)
8686                              || 'Replaced Cust Product :         '
8687                              || p_kdtl_tbl (l_ctr).new_cp_id
8688                             );
8689             --END IF;
8690             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
8691             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
8692             l_ctr1 := l_ctr1 + 2;
8693          END LOOP;
8694       END IF;
8695    EXCEPTION
8696       WHEN g_exception_halt_validation
8697       THEN
8698          x_return_status := l_return_status;
8699          NULL;
8700       WHEN OTHERS
8701       THEN
8702          x_return_status := okc_api.g_ret_sts_unexp_error;
8703          okc_api.set_message (g_app_name,
8704                               g_unexpected_error,
8705                               g_sqlcode_token,
8706                               SQLCODE,
8707                               g_sqlerrm_token,
8708                               SQLERRM
8709                              );
8710    END;
8711 
8712    PROCEDURE create_contract_ibreturn (
8713       p_kdtl_tbl        IN              contract_tbl,
8714       x_return_status   OUT NOCOPY      VARCHAR2,
8715       x_msg_count       OUT NOCOPY      NUMBER,
8716       x_msg_data        OUT NOCOPY      VARCHAR2
8717    )
8718    IS
8719       /* Added for Bug#14325727 */
8720       CURSOR l_serv_csr (p_serv_id NUMBER)
8721       IS
8722       SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
8723         FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
8724        WHERE b.inventory_item_id = t.inventory_item_id
8725          AND b.organization_id = t.organization_id
8726          AND t.LANGUAGE = USERENV ('LANG')
8727          AND b.inventory_item_id = p_serv_id
8728          AND ROWNUM < 2;
8729 
8730       /*Commented for Bug#14325727 */
8731       /*CURSOR l_serv_csr (p_serv_id NUMBER)
8732       IS
8733          SELECT t.description NAME
8734            FROM mtl_system_items_tl t
8735           WHERE t.inventory_item_id = p_serv_id
8736             AND t.LANGUAGE = USERENV ('LANG')
8737             AND ROWNUM < 2;
8738       */
8739 
8740       CURSOR l_refnum_csr (p_cp_id NUMBER)
8741       IS
8742          SELECT instance_number
8743            FROM csi_item_instances
8744           WHERE instance_id = p_cp_id;
8745 
8746       Cursor l_hdr_sts_csr(p_hdr_id Number)
8747       Is
8748       Select sts_code
8749       From Okc_k_headers_all_b
8750       WHere id = p_hdr_id;
8751 
8752       l_hdr_status               Varchar2(240);
8753 
8754       l_ref_num                  VARCHAR2 (30);
8755       x_inst_dtls_tbl            oks_ihd_pvt.ihdv_tbl_type;
8756       l_inst_dtls_tbl            oks_ihd_pvt.ihdv_tbl_type;
8757       l_instparent_id            NUMBER;
8758       l_old_cp_id                NUMBER;
8759       l_insthist_rec             oks_ins_pvt.insv_rec_type;
8760       x_insthist_rec             oks_ins_pvt.insv_rec_type;
8761       l_parameters               VARCHAR2 (2000);
8762       l_price_attribs_in         oks_extwarprgm_pvt.pricing_attributes_type;
8763       --SalesCredit
8764       l_salescredit_tbl_line     oks_extwarprgm_pvt.salescredit_tbl;
8765       l_salescredit_tbl_hdr      oks_extwarprgm_pvt.salescredit_tbl;
8766       l_line_rec                 k_line_service_rec_type;
8767       l_covd_rec                 k_line_covered_level_rec_type;
8768       l_available_yn             CHAR;
8769       l_return_status            VARCHAR2 (5)     := okc_api.g_ret_sts_success;
8770       l_chrid                    NUMBER                                := NULL;
8771       l_lineid                   NUMBER                                := NULL;
8772       l_days                     NUMBER                                   := 0;
8773       l_day1price                NUMBER                                   := 0;
8774       l_oldamt                   NUMBER                                   := 0;
8775       l_ctr                      NUMBER                                   := 0;
8776       l_terminate_rec            okc_terminate_pvt.terminate_in_cle_rec;
8777       --Contract Line Table
8778       l_clev_tbl_in              okc_contract_pub.clev_tbl_type;
8779       l_clev_tbl_out             okc_contract_pub.clev_tbl_type;
8780       l_api_version     CONSTANT NUMBER                                 := 1.0;
8781       l_init_msg_list   CONSTANT VARCHAR2 (1)               := okc_api.g_false;
8782       l_retdt                    DATE;
8783       l_ste_code                 VARCHAR2 (30);
8784       l_sts_code                 VARCHAR2 (30);
8785       l_suppress_credit          VARCHAR2 (2)                           := 'N';
8786       l_chrv_tbl_in              okc_contract_pub.chrv_tbl_type;
8787       l_chrv_tbl_out             okc_contract_pub.chrv_tbl_type;
8788       l_full_credit              VARCHAR2 (2)                           := 'N';
8789       l_rnrl_rec_out             oks_renew_util_pvt.rnrl_rec_type;
8790       l_service_name             VARCHAR2 (2000);
8791       date_terminated            DATE;
8792       date_cancelled             DATE;
8793       l_alllines_terminated      VARCHAR2 (1);
8794       l_alllines_cancelled       VARCHAR2 (1);
8795       l_term_date_flag           VARCHAR2 (1);
8796       l_credit_amount            VARCHAR2 (30);
8797    BEGIN
8798       x_return_status := okc_api.g_ret_sts_success;
8799       l_old_cp_id := 0;
8800 
8801       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8802       THEN
8803          fnd_log.STRING (fnd_log.level_event,
8804                          g_module_current || '.Create_Contract_IBRETURN.',
8805                          'count = ' || p_kdtl_tbl.COUNT || ')'
8806                         );
8807       END IF;
8808 
8809       IF p_kdtl_tbl.COUNT > 0
8810       THEN
8811          l_ctr := p_kdtl_tbl.FIRST;
8812 
8813          LOOP
8814 
8815             get_sts_code (NULL,
8816                           p_kdtl_tbl (l_ctr).hdr_sts,
8817                           l_ste_code,
8818                           l_sts_code
8819                          );
8820 
8821             IF l_ste_code = 'HOLD'
8822             THEN
8823                IF fnd_log.level_error >= fnd_log.g_current_runtime_level
8824                THEN
8825                   fnd_log.STRING (fnd_log.level_error,
8826                                      g_module_current
8827                                   || '.CREATE_CONTRACT_IBRETURN.ERROR',
8828                                      ' Contract '
8829                                   || p_kdtl_tbl (l_ctr).contract_number
8830                                   || ' in QA_HOLD status'
8831                                  );
8832                END IF;
8833 
8834                l_return_status := okc_api.g_ret_sts_error;
8835                okc_api.set_message (g_app_name,
8836                                     g_invalid_value,
8837                                     g_col_name_token,
8838                                        'Return not allowed. Contract '
8839                                     || p_kdtl_tbl (l_ctr).contract_number
8840                                     || 'is in QA_HOLD status'
8841                                    );
8842                RAISE g_exception_halt_validation;
8843             END IF;
8844 
8845             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
8846             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
8847          END LOOP;
8848       END IF;
8849 
8850       IF p_kdtl_tbl.COUNT > 0
8851       THEN
8852          l_ctr := p_kdtl_tbl.FIRST;
8853 
8854          LOOP
8855             --Fix for Bug 5406201
8856             l_clev_tbl_in.delete;
8857             l_chrv_tbl_in.delete;
8858 
8859             l_inst_dtls_tbl.DELETE;
8860 
8861             okc_context.set_okc_org_context
8862                                            (p_kdtl_tbl (l_ctr).hdr_org_id,
8863                                             p_kdtl_tbl (l_ctr).organization_id
8864                                            );
8865             get_sts_code (NULL,
8866                           p_kdtl_tbl (l_ctr).prod_sts_code,
8867                           l_ste_code,
8868                           l_sts_code
8869                          );
8870 
8871             IF l_ste_code <> 'ENTERED'
8872             THEN
8873                l_retdt := p_kdtl_tbl (l_ctr).termination_date;
8874 
8875                IF (TRUNC (l_retdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
8876                THEN
8877                   l_retdt := p_kdtl_tbl (l_ctr).prod_sdt;
8878                END IF;
8879 
8880                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8881                THEN
8882                   fnd_log.STRING (fnd_log.level_statement,
8883                                      g_module_current
8884                                   || '.CREATE_CONTRACT_IBRETURN',
8885                                      'Credit option = '
8886                                   || p_kdtl_tbl (l_ctr).raise_credit
8887                                  );
8888                END IF;
8889 
8890                IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_retdt)
8891                THEN
8892                   l_retdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
8893                   l_suppress_credit := 'Y';
8894                   l_term_date_flag := 'Y';
8895                ELSE
8896                   IF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'FULL'
8897                   THEN
8898                      l_full_credit := 'Y';
8899                      --l_retdt := p_kdtl_tbl( l_ctr ).prod_sdt;
8900                      l_suppress_credit := 'N';
8901                   ELSIF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'NONE'
8902                   THEN
8903                      l_suppress_credit := 'Y';
8904                      l_full_credit := 'N';
8905                   ELSIF UPPER (p_kdtl_tbl (l_ctr).raise_credit) = 'CALCULATED'
8906                   THEN
8907                      l_suppress_credit := 'N';
8908                      l_full_credit := 'N';
8909                   ELSIF p_kdtl_tbl (l_ctr).raise_credit IS NULL
8910                   THEN
8911                      -- Get the credit option from gcd
8912                      l_credit_amount :=
8913                         oks_ib_util_pvt.get_credit_option
8914                                    (p_party_id              => p_kdtl_tbl
8915                                                                         (l_ctr).party_id,
8916                                     p_org_id                => p_kdtl_tbl
8917                                                                         (l_ctr).hdr_org_id,
8918                                     p_transaction_date      => TRUNC (l_retdt)
8919                                    );
8920 
8921                      IF fnd_log.level_statement >=
8922                                                fnd_log.g_current_runtime_level
8923                      THEN
8924                         fnd_log.STRING (fnd_log.level_statement,
8925                                            g_module_current
8926                                         || '.CREATE_CONTRACT_IBRETURN',
8927                                            'Credit option from GCD = '
8928                                         || l_credit_amount
8929                                        );
8930                      END IF;
8931 
8932                      IF UPPER (l_credit_amount) = 'FULL'
8933                      THEN
8934                         l_full_credit := 'Y';
8935                         --l_retdt := p_kdtl_tbl( l_ctr ).prod_sdt;
8936                         l_suppress_credit := 'N';
8937                      ELSIF UPPER (l_credit_amount) = 'NONE'
8938                      THEN
8939                         l_suppress_credit := 'Y';
8940                         l_full_credit := 'N';
8941                      ELSIF l_credit_amount = 'CALCULATED'
8942                      THEN
8943                         l_suppress_credit := 'N';
8944                         l_full_credit := 'N';
8945                      END IF;
8946                   END IF;
8947                END IF;
8948 
8949                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
8950                THEN
8951                   fnd_log.STRING (fnd_log.level_statement,
8952                                      g_module_current
8953                                   || '.CREATE_CONTRACT_IBRETURN',
8954                                      'Suppress credit = '
8955                                   || l_suppress_credit
8956                                   || 'Full credit = '
8957                                   || l_full_credit
8958                                  );
8959                END IF;
8960 
8961                oks_bill_rec_pub.pre_terminate_cp
8962                                 (p_calledfrom                => -1,
8963                                  p_cle_id                    => p_kdtl_tbl
8964                                                                         (l_ctr).object_line_id,
8965                                  p_termination_date          => TRUNC (l_retdt),
8966                                  p_terminate_reason          => 'RMA',
8967                                  p_override_amount           => NULL,
8968                                  p_con_terminate_amount      => NULL,
8969                                  p_termination_amount        => NULL,
8970                                  p_suppress_credit           => l_suppress_credit,
8971                                  --p_existing_credit               => 0,
8972                                  p_full_credit               => l_full_credit,
8973                                  p_term_date_flag            => l_term_date_flag,
8974                                  p_term_cancel_source        => 'IBRETURN',
8975                                  x_return_status             => l_return_status
8976                                 );
8977 
8978                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
8979                THEN
8980                   fnd_log.STRING
8981                      (fnd_log.level_event,
8982                          g_module_current
8983                       || '.CREATE_CONTRACT_IBRETURN.terminate_cp',
8984                          'oks_bill_rec_pub.pre_terminate_cp(Return status = '
8985                       || l_return_status
8986                       || ')'
8987                      );
8988                END IF;
8989 
8990                IF NOT l_return_status = okc_api.g_ret_sts_success
8991                THEN
8992                   RAISE g_exception_halt_validation;
8993                END IF;
8994 
8995                l_inst_dtls_tbl (1).subline_date_terminated := TRUNC (l_retdt);
8996                -- If all the sublines are terminated terminate the top line
8997                oks_ib_util_pvt.check_termcancel_lines
8998                                            (p_kdtl_tbl (l_ctr).service_line_id,
8999                                             'SL',
9000                                             'T',
9001                                             date_terminated
9002                                            );
9003 
9004                IF date_terminated IS NOT NULL
9005                THEN
9006                   get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
9007 
9008                   l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).service_line_id;
9009                   l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
9010                   l_clev_tbl_in (1).trn_code := 'RMA';
9011                   l_clev_tbl_in (1).term_cancel_source := 'IBRETURN';
9012 
9013                   If TRUNC (date_terminated)<= trunc(sysdate) Then
9014 	                    l_clev_tbl_in (1).sts_code  := l_sts_code;
9015                   End If;
9016 
9017                   okc_contract_pub.update_contract_line
9018                                       (p_api_version            => l_api_version,
9019                                        p_init_msg_list          => l_init_msg_list,
9020                                        p_restricted_update      => okc_api.g_true,
9021                                        x_return_status          => l_return_status,
9022                                        x_msg_count              => x_msg_count,
9023                                        x_msg_data               => x_msg_data,
9024                                        p_clev_tbl               => l_clev_tbl_in,
9025                                        x_clev_tbl               => l_clev_tbl_out
9026                                       );
9027 
9028                   IF NOT l_return_status = okc_api.g_ret_sts_success
9029                   THEN
9030                      RAISE g_exception_halt_validation;
9031                   END IF;
9032                END IF;
9033 
9034                date_terminated := NULL;
9035                -- If all the toplines are terminated, terminate the header
9036                oks_ib_util_pvt.check_termcancel_lines
9037                                                     (p_kdtl_tbl (l_ctr).hdr_id,
9038                                                      'TL',
9039                                                      'T',
9040                                                      date_terminated
9041                                                     );
9042 
9043                IF date_terminated IS NOT NULL
9044                THEN
9045                   get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
9046 
9047                   l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
9048                   l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
9049                   l_chrv_tbl_in (1).trn_code := 'RMA';
9050                   l_chrv_tbl_in (1).term_cancel_source := 'IBRETURN';
9051 
9052                   If TRUNC (date_terminated)<= trunc(sysdate) Then
9053                         l_chrv_tbl_in (1).sts_code := l_sts_code;
9054                   End If;
9055 
9056 
9057                   okc_contract_pub.update_contract_header
9058                                       (p_api_version            => l_api_version,
9059                                        p_init_msg_list          => l_init_msg_list,
9060                                        p_restricted_update      => okc_api.g_true,
9061                                        x_return_status          => l_return_status,
9062                                        x_msg_count              => x_msg_count,
9063                                        x_msg_data               => x_msg_data,
9064                                        p_chrv_tbl               => l_chrv_tbl_in,
9065                                        x_chrv_tbl               => l_chrv_tbl_out
9066                                       );
9067 
9068                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9069                      )
9070                   THEN
9071                      fnd_log.STRING
9072                         (fnd_log.level_event,
9073                             g_module_current
9074                          || '.CREATE_CONTRACT_IBRETURN.external_call.after',
9075                             'okc_contract_pub.update_contract_header(Return status =
9076                                                    '
9077                          || l_return_status
9078                          || ')'
9079                         );
9080                   END IF;
9081 
9082                   IF NOT l_return_status = okc_api.g_ret_sts_success
9083                   THEN
9084                      RAISE g_exception_halt_validation;
9085                   END IF;
9086                END IF;
9087             ELSIF l_ste_code = 'ENTERED'
9088             THEN
9089                l_retdt := p_kdtl_tbl (l_ctr).termination_date;
9090 
9091                IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_retdt)
9092                THEN
9093                   l_retdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
9094                END IF;
9095 
9096                --Cancel the the entered lines.
9097 
9098 	      -- added for the bug # 6000133
9099 	      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
9100 
9101                oks_change_status_pvt.update_line_status
9102                            (x_return_status           => l_return_status,
9103                             x_msg_data                => x_msg_data,
9104                             x_msg_count               => x_msg_count,
9105                             p_init_msg_list           => 'F',
9106                             p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
9107                             p_cle_id                  => p_kdtl_tbl (l_ctr).object_line_id,
9108                             p_new_sts_code            => l_sts_code,
9109                             p_canc_reason_code        => 'RETURN',
9110                             p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
9111                             p_old_ste_code            => 'ENTERED',
9112                             p_new_ste_code            => 'CANCELLED',
9113                             p_term_cancel_source      => 'IBRETURN',
9114                             p_date_cancelled          => TRUNC (l_retdt),
9115                             p_comments                => NULL,
9116                             p_validate_status         => 'N'
9117                            );
9118 
9119                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9120                THEN
9121                   fnd_log.STRING
9122                      (fnd_log.level_event,
9123                       g_module_current || '.CREATE_CONTRACT_IBRETURN',
9124                          'oks_change_status_pvt.Update_line_status (Return status ='
9125                       || l_return_status
9126                       || ')'
9127                      );
9128                END IF;
9129 
9130                IF NOT l_return_status = okc_api.g_ret_sts_success
9131                THEN
9132                   RAISE g_exception_halt_validation;
9133                END IF;
9134 
9135                l_inst_dtls_tbl (1).date_cancelled := TRUNC (l_retdt);
9136                date_cancelled := NULL;
9137                oks_ib_util_pvt.check_termcancel_lines
9138                                            (p_kdtl_tbl (l_ctr).service_line_id,
9139                                             'SL',
9140                                             'C',
9141                                             date_cancelled
9142                                            );
9143 
9144                IF date_cancelled IS NOT NULL
9145                THEN
9146 
9147 	      -- added for the bug # 6000133
9148 	      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
9149 
9150                   oks_change_status_pvt.update_line_status
9151                           (x_return_status           => l_return_status,
9152                            x_msg_data                => x_msg_data,
9153                            x_msg_count               => x_msg_count,
9154                            p_init_msg_list           => 'F',
9155                            p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
9156                            p_cle_id                  => p_kdtl_tbl (l_ctr).service_line_id,
9157                            p_new_sts_code            => l_sts_code,
9158                            p_canc_reason_code        => 'RETURN',
9159                            p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
9160                            p_old_ste_code            => 'ENTERED',
9161                            p_new_ste_code            => 'CANCELLED',
9162                            p_term_cancel_source      => 'IBRETURN',
9163                            p_date_cancelled          => TRUNC (date_cancelled),
9164                            p_comments                => NULL,
9165                            p_validate_status         => 'N'
9166                           );
9167 
9168                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9169                      )
9170                   THEN
9171                      fnd_log.STRING
9172                         (fnd_log.level_event,
9173                          g_module_current || '.CREATE_CONTRACT_IBRETURN',
9174                             'oks_change_status_pvt.Update_line_status (Return status = '
9175                          || l_return_status
9176                          || ')'
9177                         );
9178                   END IF;
9179 
9180                   IF NOT l_return_status = okc_api.g_ret_sts_success
9181                   THEN
9182                      RAISE g_exception_halt_validation;
9183                   END IF;
9184                END IF;
9185 
9186                date_cancelled := NULL;
9187                oks_ib_util_pvt.check_termcancel_lines
9188                                                     (p_kdtl_tbl (l_ctr).hdr_id,
9189                                                      'TL',
9190                                                      'C',
9191                                                      date_cancelled
9192                                                     );
9193 
9194                IF date_cancelled IS NOT NULL
9195                THEN
9196 
9197 	      -- added for the bug # 6000133
9198 	      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
9199 
9200                   oks_change_status_pvt.update_header_status
9201                           (x_return_status           => l_return_status,
9202                            x_msg_data                => x_msg_data,
9203                            x_msg_count               => x_msg_count,
9204                            p_init_msg_list           => 'F',
9205                            p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
9206                            p_new_sts_code            => l_sts_code,
9207                            p_canc_reason_code        => 'RETURN',
9208                            p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
9209                            p_comments                => NULL,
9210                            p_term_cancel_source      => 'IBRETURN',
9211                            p_date_cancelled          => TRUNC (date_cancelled),
9212                            p_validate_status         => 'N'
9213                           );
9214 
9215                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9216                      )
9217                   THEN
9218                      fnd_log.STRING
9219                         (fnd_log.level_event,
9220                          g_module_current || '.CREATE_CONTRACT_IBRETURN',
9221                             'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status =
9222                                                     '
9223                          || l_return_status
9224                          || ')'
9225                         );
9226                   END IF;
9227 
9228                   IF NOT l_return_status = okc_api.g_ret_sts_success
9229                   THEN
9230                      RAISE g_exception_halt_validation;
9231                   END IF;
9232                END IF;
9233             END IF;
9234 
9235             get_sts_code (NULL,
9236                           p_kdtl_tbl (l_ctr).hdr_sts,
9237                           l_ste_code,
9238                           l_sts_code
9239                          );
9240             --x_inst_dtls_tbl(l_ctr).INST_PARENT_ID            := p_retn_rec.old_cp_id;
9241             l_inst_dtls_tbl (1).transaction_date := TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
9242             l_inst_dtls_tbl (1).transaction_type := 'RET';
9243             l_inst_dtls_tbl (1).system_id := NULL;
9244             l_inst_dtls_tbl (1).instance_id_new := NULL;
9245             l_inst_dtls_tbl (1).instance_qty_old :=
9246                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
9247             l_inst_dtls_tbl (1).instance_qty_new :=
9248                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
9249             l_inst_dtls_tbl (1).instance_amt_old :=
9250                                              p_kdtl_tbl (l_ctr).service_amount;
9251             l_inst_dtls_tbl (1).instance_amt_new :=
9252                                              p_kdtl_tbl (l_ctr).service_amount;
9253             l_inst_dtls_tbl (1).old_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
9254             l_inst_dtls_tbl (1).old_contact_start_date :=
9255                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
9256             l_inst_dtls_tbl (1).old_contract_end_date :=
9257                                                     p_kdtl_tbl (l_ctr).hdr_edt;
9258             l_inst_dtls_tbl (1).new_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
9259             l_inst_dtls_tbl (1).new_contact_start_date :=
9260                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
9261             l_inst_dtls_tbl (1).new_contract_end_date :=
9262                                                     p_kdtl_tbl (l_ctr).hdr_edt;
9263             l_inst_dtls_tbl (1).old_service_line_id :=
9264                                             p_kdtl_tbl (l_ctr).service_line_id;
9265             l_inst_dtls_tbl (1).old_service_start_date :=
9266                                                 p_kdtl_tbl (l_ctr).service_sdt;
9267             l_inst_dtls_tbl (1).old_service_end_date :=
9268                                                 p_kdtl_tbl (l_ctr).service_edt;
9269             l_inst_dtls_tbl (1).new_service_line_id :=
9270                                             p_kdtl_tbl (l_ctr).service_line_id;
9271             l_inst_dtls_tbl (1).new_service_start_date :=
9272                                                 p_kdtl_tbl (l_ctr).service_sdt;
9273             l_inst_dtls_tbl (1).new_service_end_date :=
9274                                                 p_kdtl_tbl (l_ctr).service_edt;
9275             l_inst_dtls_tbl (1).old_subline_id :=
9276                                              p_kdtl_tbl (l_ctr).object_line_id;
9277             l_inst_dtls_tbl (1).old_subline_start_date :=
9278                                                    p_kdtl_tbl (l_ctr).prod_sdt;
9279             l_inst_dtls_tbl (1).old_subline_end_date :=
9280                                                    p_kdtl_tbl (l_ctr).prod_edt;
9281             l_inst_dtls_tbl (1).new_subline_id :=
9282                                              p_kdtl_tbl (l_ctr).object_line_id;
9283             l_inst_dtls_tbl (1).new_subline_start_date :=
9284                                                    p_kdtl_tbl (l_ctr).prod_sdt;
9285             l_inst_dtls_tbl (1).new_subline_end_date :=
9286                                                    p_kdtl_tbl (l_ctr).prod_edt;
9287             l_inst_dtls_tbl (1).old_customer :=
9288                                                p_kdtl_tbl (l_ctr).cust_account;
9289             l_inst_dtls_tbl (1).new_customer :=
9290                                                p_kdtl_tbl (l_ctr).cust_account;
9291             l_inst_dtls_tbl (1).old_k_status := l_sts_code;
9292             l_inst_dtls_tbl (1).new_k_status := l_sts_code;
9293 
9294             IF l_inst_dtls_tbl.COUNT <> 0
9295             THEN
9296                IF     l_instparent_id IS NULL
9297                   AND l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
9298                THEN
9299                   OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
9300 
9301                   FETCH l_refnum_csr
9302                    INTO l_ref_num;
9303 
9304                   CLOSE l_refnum_csr;
9305 
9306                   l_parameters :=
9307                         ' Old CP :'
9308                      || p_kdtl_tbl (l_ctr).old_cp_id
9309                      || ','
9310                      || 'Item Id:'
9311                      || p_kdtl_tbl (l_ctr).prod_inventory_item
9312                      || ','
9313                      || 'Old Quantity:'
9314                      || p_kdtl_tbl (l_ctr).current_cp_quantity
9315                      || ','
9316                      || 'Transaction type :'
9317                      || 'RET'
9318                      || ','
9319                      || ' Transaction date :'
9320                      || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
9321                      || ','
9322                      || 'New quantity:'
9323                      || p_kdtl_tbl (l_ctr).new_quantity;
9324                   --oks_instance_history
9325                   l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
9326                   l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
9327                   l_insthist_rec.transaction_type := 'RET';
9328                   l_insthist_rec.transaction_date := TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
9329                   l_insthist_rec.reference_number := l_ref_num;
9330                   l_insthist_rec.PARAMETERS := l_parameters;
9331                   oks_ins_pvt.insert_row (p_api_version        => 1.0,
9332                                           p_init_msg_list      => 'T',
9333                                           x_return_status      => l_return_status,
9334                                           x_msg_count          => x_msg_count,
9335                                           x_msg_data           => x_msg_data,
9336                                           p_insv_rec           => l_insthist_rec,
9337                                           x_insv_rec           => x_insthist_rec
9338                                          );
9339 
9340                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
9341                      )
9342                   THEN
9343                      fnd_log.STRING
9344                                 (fnd_log.level_event,
9345                                  g_module_current || '.CREATE_K_IBRETURN',
9346                                     'oks_ins_pvt.insert_row(Return status = '
9347                                  || l_return_status
9348                                  || ')'
9349                                 );
9350                   END IF;
9351 
9352                   x_return_status := l_return_status;
9353 
9354                   IF NOT l_return_status = okc_api.g_ret_sts_success
9355                   THEN
9356                      x_return_status := l_return_status;
9357                      RAISE g_exception_halt_validation;
9358                   END IF;
9359 
9360                   l_instparent_id := x_insthist_rec.ID;
9361                END IF;
9362 
9363                l_inst_dtls_tbl (1).ins_id := l_instparent_id;
9364                --oks_inst_history_details
9365                oks_ihd_pvt.insert_row (p_api_version        => 1.0,
9366                                        p_init_msg_list      => 'T',
9367                                        x_return_status      => l_return_status,
9368                                        x_msg_count          => x_msg_count,
9369                                        x_msg_data           => x_msg_data,
9370                                        p_ihdv_tbl           => l_inst_dtls_tbl,
9371                                        x_ihdv_tbl           => x_inst_dtls_tbl
9372                                       );
9373 
9374                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9375                THEN
9376                   fnd_log.STRING
9377                                 (fnd_log.level_event,
9378                                  g_module_current || '.CREATE_IBRETURN',
9379                                     'oks_ihd_pvt.insert_row(Return status = '
9380                                  || l_return_status
9381                                  || ')'
9382                                 );
9383                END IF;
9384 
9385                x_return_status := l_return_status;
9386 
9387                IF NOT l_return_status = okc_api.g_ret_sts_success
9388                THEN
9389                   x_return_status := l_return_status;
9390                   RAISE g_exception_halt_validation;
9391                END IF;
9392 
9393 	       If date_terminated is not null or date_cancelled is not null Then
9394 	    	    Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
9395 	            Fetch l_hdr_sts_csr into l_hdr_status;
9396 	            Close l_hdr_sts_csr;
9397 
9398 	            Update oks_inst_hist_details set new_k_status = l_hdr_status
9399 		    Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
9400 
9401                End If;
9402             END IF;
9403 
9404             OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
9405 
9406             FETCH l_serv_csr
9407              INTO l_service_name;
9408 
9409             CLOSE l_serv_csr;
9410 
9411             launch_workflow (   'INSTALL BASE ACTIVITY : RETURN  '
9412                              || fnd_global.local_chr (10)
9413                              || 'Contract Number       :         '
9414                              || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
9415                              || fnd_global.local_chr (10)
9416                              || 'Service Terminated    :         '
9417                              || l_service_name
9418                             );
9419             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
9420             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
9421          END LOOP;
9422       END IF;
9423    EXCEPTION
9424       WHEN g_exception_halt_validation
9425       THEN
9426          x_return_status := l_return_status;
9427          NULL;
9428       WHEN OTHERS
9429       THEN
9430          x_return_status := okc_api.g_ret_sts_unexp_error;
9431          okc_api.set_message (g_app_name,
9432                               g_unexpected_error,
9433                               g_sqlcode_token,
9434                               SQLCODE,
9435                               g_sqlerrm_token,
9436                               SQLERRM
9437                              );
9438    END;
9439 
9440 ---System Transfer
9441    PROCEDURE create_k_system_transfer (
9442       p_kdtl_tbl        IN              contract_trf_tbl,
9443       x_return_status   OUT NOCOPY      VARCHAR2,
9444       x_msg_count       OUT NOCOPY      NUMBER,
9445       x_msg_data        OUT NOCOPY      VARCHAR2
9446    )
9447    IS
9448       CURSOR l_cov_csr (p_cle_id NUMBER)
9449       IS
9450          SELECT LN.transfer_option
9451            FROM oks_k_lines_b LN, okc_k_lines_b kl, oks_k_lines_b ks
9452           WHERE kl.ID = p_cle_id
9453             AND ks.cle_id = kl.ID
9454             AND LN.cle_id = ks.coverage_id;
9455 
9456       CURSOR l_contracts_csr (
9457          p_system_id   NUMBER,
9458          p_trxn_date   DATE,
9459          p_cust_id     NUMBER
9460       )
9461       IS
9462          SELECT DISTINCT new_contract_id
9463                     FROM oks_inst_hist_details
9464                    WHERE system_id = p_system_id
9465                      AND transaction_date = p_trxn_date
9466                      AND transaction_type = 'TRF'
9467                      AND old_customer = p_cust_id
9468                      AND new_contract_id <> old_contract_id;
9469 
9470       CURSOR l_qa_csr (p_id NUMBER)
9471       IS
9472          SELECT qcl_id
9473            FROM okc_k_headers_b
9474           WHERE ID = p_id;
9475 
9476       CURSOR l_hdrdt_csr (p_hdr_id NUMBER)
9477       IS
9478          SELECT start_date, end_date
9479            FROM okc_k_headers_b
9480           WHERE ID = p_hdr_id;
9481 
9482       CURSOR l_srvdt_csr (p_line_id NUMBER)
9483       IS
9484          SELECT start_date, end_date
9485            FROM okc_k_lines_b
9486           WHERE ID = p_line_id;
9487 
9488       CURSOR l_cust_rel_csr (
9489          p_old_customer    VARCHAR2,
9490          p_new_customer    VARCHAR2,
9491          p_relation        VARCHAR2,
9492          p_transfer_date   DATE
9493       )
9494       IS
9495          SELECT DISTINCT relationship_type
9496                     FROM hz_relationships
9497                    WHERE (   (    object_id = p_new_customer
9498                               AND subject_id = p_old_customer
9499                              )
9500                           OR (    object_id = p_old_customer
9501                               AND subject_id = p_new_customer
9502                              )
9503                          )
9504                      AND relationship_type = p_relation
9505                      AND status = 'A'
9506                      AND TRUNC (p_transfer_date) BETWEEN TRUNC (start_date)
9507                                                      AND TRUNC (end_date);
9508 
9509       CURSOR l_hdr_sts_csr (p_hdr_id NUMBER)
9510       IS
9511          SELECT sts_code
9512            FROM okc_k_headers_b
9513           WHERE ID = p_hdr_id;
9514 
9515 
9516       CURSOR l_Launch_WF_csr (p_hdr_id NUMBER)
9517       IS
9518          SELECT 'Y'
9519            FROM okc_k_headers_b Kh, oks_k_headers_b Ks
9520                 , okc_statuses_b sts
9521           WHERE Kh.ID = p_hdr_id
9522           And   Ks.chr_id = Kh.id
9523           And kh.sts_code = sts.code
9524           And sts.ste_code = 'ENTERED'
9525           And ks.wf_item_key is null;
9526       l_launch_wf_yn Varchar2(1);
9527 
9528       CURSOR l_subline_csr (p_id NUMBER)
9529       IS
9530          SELECT date_terminated, price_negotiated
9531            FROM okc_k_lines_b
9532           WHERE ID = p_id;
9533 
9534       l_date_terminated           DATE;
9535       l_subline_price             NUMBER;
9536       l_hdr_sts                   VARCHAR2 (40);
9537 
9538       CURSOR l_toplines_csr (p_chr_id NUMBER, p_service_item_id NUMBER)
9539       IS
9540          SELECT kl.ID cle_id
9541            FROM okc_k_lines_b kl, okc_k_items ki, okc_statuses_b st
9542           WHERE kl.dnz_chr_id = p_chr_id
9543             AND kl.lse_id IN (1, 14, 19)
9544             AND kl.ID = ki.cle_id
9545             AND ki.object1_id1 = TO_CHAR (p_service_item_id)
9546             AND st.code = kl.sts_code
9547             AND st.ste_code NOT IN ('TERMINATED', 'CANCELLED');
9548 
9549       l_cov_rec                   l_cov_csr%ROWTYPE;
9550 
9551       CURSOR l_refnum_csr (p_cp_id NUMBER)
9552       IS
9553          SELECT instance_number
9554            FROM csi_item_instances
9555           WHERE instance_id = p_cp_id;
9556       /* Added for Bug#14325727 */
9557       CURSOR l_serv_csr (p_serv_id NUMBER)
9558       IS
9559       SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
9560         FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
9561        WHERE b.inventory_item_id = t.inventory_item_id
9562          AND b.organization_id = t.organization_id
9563          AND t.LANGUAGE = USERENV ('LANG')
9564          AND b.inventory_item_id = p_serv_id
9565          AND ROWNUM < 2;
9566 
9567       /*Commented for Bug#14325727 */
9568       /*
9569       CURSOR l_serv_csr (p_serv_id NUMBER)
9570       IS
9571          SELECT t.description NAME
9572            FROM mtl_system_items_tl t
9573           WHERE t.inventory_item_id = p_serv_id
9574             AND t.LANGUAGE = USERENV ('LANG')
9575             AND ROWNUM < 2;
9576       */
9577 
9578       l_start_date                DATE;
9579       l_end_date                  DATE;
9580       l_subline_id                NUMBER;
9581       l_renewal_id                NUMBER;
9582       l_source_line_id            NUMBER;
9583       l_transfer_id               NUMBER;
9584       l_srv_sdt                   DATE;
9585       l_srv_edt                   DATE;
9586       l_coverage_id               NUMBER;
9587       l_service_name              VARCHAR2 (240);
9588       l_ref_num                   VARCHAR2 (30);
9589       l_msg_count                 NUMBER;
9590       l_msg_data                  VARCHAR2 (2000);
9591       l_trf_option                VARCHAR2 (40);
9592       l_contact_tbl_in            oks_extwarprgm_pvt.contact_tbl;
9593       l_salescredit_tbl_line      oks_extwarprgm_pvt.salescredit_tbl;
9594       l_salescredit_tbl_hdr       oks_extwarprgm_pvt.salescredit_tbl;
9595       l_line_rec                  oks_extwarprgm_pvt.k_line_service_rec_type;
9596       l_covd_rec                  oks_extwarprgm_pvt.k_line_covered_level_rec_type;
9597 --l_kdtl_tbl                oks_extwar_util_pvt.contract_tbl_type;
9598       l_available_yn              CHAR;
9599       l_return_status             VARCHAR2 (5)    := okc_api.g_ret_sts_success;
9600       l_line_found                VARCHAR2 (1);
9601       l_ste_code                  VARCHAR2 (40);
9602       l_sts_code                  VARCHAR2 (40);
9603       l_ctr                       NUMBER;
9604       l_suppress_credit           VARCHAR2 (10)                         := 'N';
9605       l_trfdt                     DATE;
9606       l_clev_tbl_in               okc_contract_pub.clev_tbl_type;
9607       l_clev_tbl_out              okc_contract_pub.clev_tbl_type;
9608       l_api_version      CONSTANT NUMBER                                := 1.0;
9609       l_init_msg_list    CONSTANT VARCHAR2 (1)                          := 'F';
9610       l_index                     NUMBER;
9611       l_relationship              VARCHAR2 (40);
9612       l_relationship_type         VARCHAR2 (40);
9613       l_chr_id                    NUMBER;
9614       l_contract_exist            VARCHAR2 (1);
9615       l_contract_merge            VARCHAR2 (1);
9616       l_ptr                       NUMBER                                  := 0;
9617       l_old_cp_id                 NUMBER;
9618       l_line_id                   NUMBER;
9619       l_header_merge              VARCHAR2 (1);
9620       l_line_merge                VARCHAR2 (1);
9621       l_merge_chr_id              NUMBER;
9622       l_merge_line_id             NUMBER;
9623       l_max_severity              VARCHAR2 (1);
9624       l_msg_tbl                   okc_qa_check_pub.msg_tbl_type;
9625       l_covlvl_id                 NUMBER;
9626       i                           NUMBER;
9627       l_qcl_id                    NUMBER;
9628       l_update_line               VARCHAR2 (1);
9629       l_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
9630       x_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
9631       l_insthist_rec              oks_ins_pvt.insv_rec_type;
9632       x_insthist_rec              oks_ins_pvt.insv_rec_type;
9633       l_instparent_id             NUMBER;
9634       l_parameters                VARCHAR2 (2000);
9635       l_temp                      VARCHAR2 (2000);
9636       l_old_party_id              NUMBER;
9637       l_new_party_id              NUMBER;
9638       l_new_party_name            VARCHAR2 (360);
9639       l_old_party_name            VARCHAR2 (360);
9640       date_terminated             DATE;
9641       date_cancelled              DATE;
9642       l_chrv_tbl_in               okc_contract_pub.chrv_tbl_type;
9643       l_chrv_tbl_out              okc_contract_pub.chrv_tbl_type;
9644       l_create_contract           VARCHAR2 (1);
9645       l_party_id                  NUMBER;
9646       l_party_name                VARCHAR2 (360);
9647       l_opr_instance_id           NUMBER;
9648       l_renewal_opr_instance_id   NUMBER;
9649       l_term_date_flag            VARCHAR2 (1);
9650       l_wf_attr_details           oks_wf_k_process_pvt.wf_attr_details;
9651       l_create_oper_instance      VARCHAR2 (1);
9652       l_credit_amount             VARCHAR2 (50);
9653       l_full_credit               VARCHAR2 (10)                         := 'N';
9654 
9655       FUNCTION get_operation_instance (
9656          p_target_chr_id      NUMBER,
9657          p_transaction_type   VARCHAR2
9658       )
9659          RETURN NUMBER
9660       IS
9661          CURSOR l_operation_csr
9662          IS
9663             SELECT op.ID
9664               FROM okc_operation_instances op,
9665                    okc_class_operations classopr,
9666                    okc_subclasses_b subclass
9667              WHERE target_chr_id = p_target_chr_id
9668                AND subclass.code = 'SERVICE'
9669                AND classopr.cls_code = subclass.cls_code
9670                AND classopr.opn_code IN ('TRANSFER')
9671                AND op.cop_id = classopr.ID;
9672 
9673          CURSOR l_renewal_csr
9674          IS
9675             SELECT op.ID
9676               FROM okc_operation_instances op,
9677                    okc_class_operations classopr,
9678                    okc_subclasses_b subclass
9679              WHERE target_chr_id = p_target_chr_id
9680                AND subclass.code = 'SERVICE'
9681                AND classopr.cls_code = subclass.cls_code
9682                AND classopr.opn_code IN ('RENEWAL', 'REN_CON')
9683                AND op.cop_id = classopr.ID;
9684 
9685 /*
9686 Select id
9687 From   Okc_operation_instances
9688 Where  target_chr_id = p_target_chr_id
9689 And    cop_id in (40,41);
9690 */
9691          l_oper_inst_id   NUMBER;
9692       BEGIN
9693          IF p_transaction_type = 'TRF'
9694          THEN
9695             OPEN l_operation_csr;
9696 
9697             FETCH l_operation_csr
9698              INTO l_oper_inst_id;
9699 
9700             CLOSE l_operation_csr;
9701          ELSE
9702             OPEN l_renewal_csr;
9703 
9704             FETCH l_renewal_csr
9705              INTO l_oper_inst_id;
9706 
9707             CLOSE l_renewal_csr;
9708          END IF;
9709 
9710          RETURN (l_oper_inst_id);
9711       END;
9712 
9713       PROCEDURE get_party_id (
9714          p_cust_id      IN              NUMBER,
9715          x_party_id     OUT NOCOPY      NUMBER,
9716          x_party_name   OUT NOCOPY      VARCHAR2
9717       )
9718       IS
9719          CURSOR l_party_csr
9720          IS
9721             SELECT party_id, NAME
9722               FROM okx_customer_accounts_v
9723              WHERE id1 = p_cust_id;
9724       BEGIN
9725          OPEN l_party_csr;
9726 
9727          FETCH l_party_csr
9728           INTO x_party_id, x_party_name;
9729 
9730          CLOSE l_party_csr;
9731       EXCEPTION
9732          WHEN OTHERS
9733          THEN
9734             x_return_status := okc_api.g_ret_sts_unexp_error;
9735             okc_api.set_message (g_app_name,
9736                                  g_unexpected_error,
9737                                  g_sqlcode_token,
9738                                  SQLCODE,
9739                                  g_sqlerrm_token,
9740                                  SQLERRM
9741                                 );
9742       END;
9743 
9744       FUNCTION site_address (
9745          p_customer_id   NUMBER,
9746          p_party_id      NUMBER,
9747          p_code          VARCHAR2,
9748          p_org_id        NUMBER
9749       )
9750          RETURN NUMBER
9751       IS
9752          CURSOR l_address_csr
9753          IS
9754             SELECT id1
9755               FROM okx_cust_site_uses_v
9756              WHERE cust_account_id = p_customer_id
9757                AND party_id = p_party_id
9758                AND site_use_code = p_code
9759                AND identifying_address_flag = 'Y'
9760                AND status = 'A'
9761                AND org_id = p_org_id;
9762 
9763          l_site_id   NUMBER;
9764       BEGIN
9765          OPEN l_address_csr;
9766 
9767          FETCH l_address_csr
9768           INTO l_site_id;
9769 
9770          IF l_address_csr%NOTFOUND
9771          THEN
9772             CLOSE l_address_csr;
9773 
9774             RETURN (NULL);
9775          END IF;
9776 
9777          CLOSE l_address_csr;
9778 
9779          RETURN (l_site_id);
9780       END;
9781 
9782       PROCEDURE create_contract_header (
9783          p_kdtl_rec        IN              contract_trf_rec,
9784          x_msg_data        OUT NOCOPY      VARCHAR2,
9785          x_chr_id          OUT NOCOPY      NUMBER,
9786          x_msg_count       OUT NOCOPY      NUMBER,
9787          x_return_status   OUT NOCOPY      VARCHAR2
9788       )
9789       IS
9790          l_agrment_id        NUMBER;
9791          l_ste_code          VARCHAR2 (40);
9792          l_sts_code          VARCHAR2 (40);
9793 
9794          CURSOR l_party_csr (p_id NUMBER)
9795          IS
9796             SELECT party_id, NAME
9797               FROM okx_customer_accounts_v
9798              WHERE id1 = p_id;
9799 
9800          CURSOR l_get_agrid_csr (p_chr_id NUMBER)
9801          IS
9802             SELECT isa_agreement_id
9803               FROM okc_governances
9804              WHERE chr_id = p_chr_id AND dnz_chr_id = p_chr_id;
9805 
9806 -- Fix for bug 3588355
9807          CURSOR l_get_bill_ship_csr (p_cp_id NUMBER)
9808          IS
9809             SELECT bill_to_address, ship_to_address
9810               FROM csi_instance_party_v
9811              WHERE instance_id = p_cp_id;
9812 
9813 -- Fix for bug 3588355
9814          CURSOR validate_bill_ship_ids (
9815             p_id              NUMBER,
9816             p_org_id          NUMBER,
9817             p_site_use_code   VARCHAR2
9818          )
9819          IS
9820             SELECT 'x'
9821               FROM okx_cust_site_uses_v
9822              WHERE id1 = p_id
9823                AND site_use_code = p_site_use_code
9824                AND org_id = p_org_id
9825                AND status = 'A';
9826 
9827          CURSOR l_access_csr (p_hdr_id NUMBER)
9828          IS
9829             SELECT resource_id, GROUP_ID, access_level
9830               FROM okc_k_accesses_v
9831              WHERE chr_id = p_hdr_id;
9832 
9833          l_hdr_rec           k_header_rec_type;
9834          l_party_id          NUMBER;
9835          l_party_name        VARCHAR2 (360);
9836          l_return_status     VARCHAR2 (1);
9837          l_rnrl_rec_out      oks_renew_util_pvt.rnrl_rec_type;
9838          p_contact_tbl_in    oks_extwarprgm_pvt.contact_tbl;
9839          l_chrid             NUMBER;
9840          l_cacv_tbl_in       okc_contract_pub.cacv_tbl_type;
9841          l_cacv_tbl_out      okc_contract_pub.cacv_tbl_type;
9842          l_status            VARCHAR2 (40);
9843          l_bill_to_id        NUMBER;
9844          l_ship_to_id        NUMBER;
9845          l_valid             VARCHAR2 (1);
9846          l_resource_id       NUMBER;
9847          l_group_id          NUMBER;
9848          l_access_level      VARCHAR2 (3);
9849          l_sc_hdr_ctr        NUMBER;
9850          l_salescredit_tbl   oks_extwarprgm_pvt.salescredit_tbl;
9851          l_org_id            NUMBER;
9852 
9853          CURSOR l_sales_credit_hdr_csr (p_chr_id NUMBER)
9854          IS
9855             SELECT ctc_id, sales_credit_type_id1, PERCENT, sales_group_id
9856               FROM oks_k_sales_credits_v
9857              WHERE chr_id = p_chr_id AND cle_id IS NULL;
9858       BEGIN
9859          x_return_status := okc_api.g_ret_sts_success;
9860 
9861          OPEN l_get_agrid_csr (p_kdtl_rec.hdr_id);              --07-May-2003
9862 
9863          FETCH l_get_agrid_csr
9864           INTO l_agrment_id;
9865 
9866          CLOSE l_get_agrid_csr;
9867 
9868          l_hdr_rec.billed_at_source := p_kdtl_rec.billed_at_source;
9869 
9870          get_party_id (p_kdtl_rec.new_account_id, l_party_id, l_party_name);
9871          l_hdr_rec.party_id := l_party_id;
9872 
9873          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9874          THEN
9875             fnd_log.STRING (fnd_log.level_statement,
9876                                g_module_current
9877                             || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9878                             'Party id = ' || l_hdr_rec.party_id
9879                            );
9880          END IF;
9881 
9882          oks_renew_util_pub.get_renew_rules
9883                                           (p_api_version        => 1.0,
9884                                            p_init_msg_list      => 'T',
9885                                            x_return_status      => l_return_status,
9886                                            x_msg_count          => x_msg_count,
9887                                            x_msg_data           => x_msg_data,
9888                                            p_chr_id             => NULL,
9889                                            p_party_id           => l_hdr_rec.party_id,
9890                                            p_org_id             => p_kdtl_rec.hdr_org_id,
9891                                            p_date               => SYSDATE,
9892                                            p_rnrl_rec           => NULL,
9893                                            x_rnrl_rec           => l_rnrl_rec_out
9894                                           );
9895 
9896          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
9897          THEN
9898             fnd_log.STRING
9899                     (fnd_log.level_event,
9900                         g_module_current
9901                      || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9902                         'oks_renew_util_pub.get_renew_rules(Return status = '
9903                      || l_return_status
9904                     );
9905          END IF;
9906 
9907          IF NOT l_return_status = okc_api.g_ret_sts_success
9908          THEN
9909             x_return_status := l_return_status;
9910             RAISE g_exception_halt_validation;
9911          END IF;
9912 
9913          l_hdr_rec.scs_code := p_kdtl_rec.scs_code;
9914 
9915          IF p_kdtl_rec.scs_code = 'WARRANTY'
9916          THEN
9917             l_hdr_rec.short_description :=
9918                   'CUSTOMER : '
9919                || l_party_name
9920                || ' Warranty/Extended Warranty Contract';
9921          ELSE
9922             l_hdr_rec.short_description :=
9923                                 'CUSTOMER : ' || l_party_name || '  Contract';
9924          END IF;
9925 
9926          l_hdr_rec.start_date := TRUNC (l_trfdt);
9927 
9928          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9929          THEN
9930             fnd_log.STRING (fnd_log.level_statement,
9931                                g_module_current
9932                             || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9933                                'Transfer status Profile = '
9934                             || fnd_profile.VALUE ('OKS_TRANSFER_STATUS')
9935                            );
9936          END IF;
9937 
9938          IF (p_kdtl_rec.scs_code = 'WARRANTY' AND p_kdtl_rec.lse_id = 18)
9939          THEN
9940             IF l_hdr_rec.start_date > SYSDATE
9941             THEN
9942                get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
9943             ELSE
9944                get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
9945             END IF;
9946 
9947             l_hdr_rec.sts_code := l_sts_code;
9948             l_hdr_rec.renewal_status := 'COMPLETE';
9949             l_hdr_rec.accounting_rule_id := null;
9950             l_hdr_rec.invoice_rule_id := Null;
9951             l_hdr_rec.qcl_id := Null;
9952             l_hdr_rec.pdf_id := Null;
9953             l_hdr_rec.ar_interface_yn := 'N';
9954 
9955          ELSE
9956             l_hdr_rec.accounting_rule_id := p_kdtl_rec.hdr_acct_rule_id;
9957             l_hdr_rec.invoice_rule_id := -2;
9958             l_hdr_rec.qcl_id := l_rnrl_rec_out.qcl_id;
9959             l_hdr_rec.pdf_id := l_rnrl_rec_out.pdf_id;
9960             l_hdr_rec.ar_interface_yn := p_kdtl_rec.ar_interface_yn;
9961 
9962 
9963             get_sts_code (p_kdtl_rec.prod_sts_code,
9964                           NULL,
9965                           l_ste_code,
9966                           l_sts_code
9967                          );
9968 
9969             IF l_ste_code = 'ENTERED'
9970             THEN
9971                l_hdr_rec.sts_code := l_sts_code;
9972             ELSE
9973                l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
9974 
9975                IF l_status = 'ACTIVE'
9976                THEN
9977                   IF l_hdr_rec.start_date > SYSDATE
9978                   THEN
9979                      get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
9980                   ELSE
9981                      get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
9982                   END IF;
9983 
9984                   l_hdr_rec.renewal_status := 'COMPLETE';
9985                ELSE
9986                   get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
9987                END IF;
9988 
9989                l_hdr_rec.sts_code := l_sts_code;
9990             END IF;
9991          END IF;
9992 
9993          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
9994          THEN
9995             fnd_log.STRING (fnd_log.level_statement,
9996                                g_module_current
9997                             || '.CREATE_K_SYSTEM_TRF.create_contract_header',
9998                                'Header Status = '
9999                             || l_hdr_rec.sts_code
10000                             || 'End date = '
10001                             || l_hdr_rec.end_date
10002                             || 'Start Date = '
10003                             || l_hdr_rec.start_date
10004                            );
10005          END IF;
10006 
10007          -- Fix for bug 3588355 Begin
10008          OPEN l_get_bill_ship_csr (p_kdtl_rec.old_cp_id);
10009 
10010          FETCH l_get_bill_ship_csr
10011           INTO l_bill_to_id, l_ship_to_id;
10012 
10013          CLOSE l_get_bill_ship_csr;
10014 
10015          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10016          THEN
10017             fnd_log.STRING (fnd_log.level_statement,
10018                                g_module_current
10019                             || '.CREATE_K_SYSTEM_TRF.create_contract_header',
10020                                ' Bill to Id = '
10021                             || l_bill_to_id
10022                             || 'Ship to Id = '
10023                             || l_ship_to_id
10024                            );
10025          END IF;
10026 
10027          IF (l_bill_to_id IS NOT NULL)
10028          THEN
10029             OPEN validate_bill_ship_ids (l_bill_to_id,
10030                                          p_kdtl_tbl (l_ctr).hdr_org_id,
10031                                          'BILL_TO'
10032                                         );
10033 
10034             FETCH validate_bill_ship_ids
10035              INTO l_valid;
10036 
10037             IF validate_bill_ship_ids%NOTFOUND
10038             THEN
10039                CLOSE validate_bill_ship_ids;
10040 
10041                IF fnd_log.level_error >= fnd_log.g_current_runtime_level
10042                THEN
10043                   fnd_log.STRING (fnd_log.level_error,
10044                                      g_module_current
10045                                   || '.CREATE_K_SYSTEM_TRF.ERROR',
10046                                      ' Bill to Id ('
10047                                   || l_bill_to_id
10048                                   || ') is not valid'
10049                                  );
10050                END IF;
10051 
10052                l_return_status := okc_api.g_ret_sts_error;
10053                okc_api.set_message (g_app_name,
10054                                     g_required_value,
10055                                     g_col_name_token,
10056                                     'Bill to id is not Valid'
10057                                    );
10058                RAISE g_exception_halt_validation;
10059             END IF;
10060 
10061             CLOSE validate_bill_ship_ids;
10062          END IF;
10063 
10064          IF (l_ship_to_id IS NOT NULL)
10065          THEN
10066             OPEN validate_bill_ship_ids (l_ship_to_id,
10067                                          p_kdtl_rec.hdr_org_id,
10068                                          'SHIP_TO'
10069                                         );
10070 
10071             FETCH validate_bill_ship_ids
10072              INTO l_valid;
10073 
10074             IF validate_bill_ship_ids%NOTFOUND
10075             THEN
10076                CLOSE validate_bill_ship_ids;
10077 
10078                IF fnd_log.level_error >= fnd_log.g_current_runtime_level
10079                THEN
10080                   fnd_log.STRING (fnd_log.level_error,
10081                                      g_module_current
10082                                   || '.CREATE_K_SYSTEM_TRF.ERROR',
10083                                      ' Bill to Id ('
10084                                   || l_ship_to_id
10085                                   || ') is not valid'
10086                                  );
10087                END IF;
10088 
10089                l_return_status := okc_api.g_ret_sts_error;
10090                okc_api.set_message (g_app_name,
10091                                     g_required_value,
10092                                     g_col_name_token,
10093                                     'Ship to id is not Valid'
10094                                    );
10095                RAISE g_exception_halt_validation;
10096             END IF;
10097 
10098             CLOSE validate_bill_ship_ids;
10099          END IF;
10100 
10101          l_hdr_rec.bill_to_id :=
10102             NVL (l_bill_to_id,
10103                  site_address (p_kdtl_rec.new_account_id,
10104                                l_hdr_rec.party_id,
10105                                'BILL_TO',
10106                                p_kdtl_rec.hdr_org_id
10107                               )
10108                 );
10109          l_hdr_rec.ship_to_id :=
10110             NVL (l_ship_to_id,
10111                  site_address (p_kdtl_rec.new_account_id,
10112                                l_hdr_rec.party_id,
10113                                'SHIP_TO',
10114                                p_kdtl_rec.hdr_org_id
10115                               )
10116                 );
10117          -- Fix for bug 3588355 End
10118          l_hdr_rec.order_line_id := NULL;
10119          l_hdr_rec.contract_number := okc_api.g_miss_char;
10120          l_hdr_rec.rty_code := 'CONTRACTTRANSFERORDER';
10121          --l_hdr_rec.start_date                        := trunc(l_trfdt);
10122          l_hdr_rec.end_date := p_kdtl_rec.service_edt;
10123          l_hdr_rec.class_code := 'SVC';
10124          l_hdr_rec.authoring_org_id := p_kdtl_rec.hdr_org_id;
10125          l_hdr_rec.inv_organization_id := p_kdtl_rec.organization_id;
10126          l_hdr_rec.chr_group := l_rnrl_rec_out.cgp_new_id;
10127          l_hdr_rec.price_list_id := p_kdtl_rec.price_list_id;
10128          l_hdr_rec.agreement_id := l_agrment_id;
10129          l_hdr_rec.currency := p_kdtl_rec.header_currency;
10130          --p_kdtl_rec.hdr_inv_rule_id; --fix for bug 3451440
10131          l_hdr_rec.payment_type := p_kdtl_rec.payment_type;
10132          l_hdr_rec.inv_trx_type := p_kdtl_rec.inv_trx_type;
10133          l_hdr_rec.hold_billing := p_kdtl_rec.hold_billing;
10134          --mmadhavi for bug 3765672
10135          l_hdr_rec.summary_trx_yn := p_kdtl_rec.summary_trx_yn;
10136          --mmadhavi for bug 3765672
10137          l_hdr_rec.order_hdr_id := NULL;
10138          l_hdr_rec.payment_term_id := p_kdtl_rec.payment_term_id;
10139          l_hdr_rec.cvn_type := p_kdtl_rec.cvn_type;
10140          l_hdr_rec.cvn_rate := p_kdtl_rec.cvn_rate;
10141          l_hdr_rec.cvn_date := p_kdtl_rec.cvn_date;
10142          l_hdr_rec.cvn_euro_rate := p_kdtl_rec.cvn_euro_rate;
10143          l_hdr_rec.merge_type := 'NEW';
10144          l_hdr_rec.period_start := p_kdtl_rec.period_start;
10145          l_hdr_rec.period_type := p_kdtl_rec.period_type;
10146          l_hdr_rec.price_uom := p_kdtl_rec.price_uom_hdr;
10147          l_sc_hdr_ctr := 0;
10148 
10149       /*spingali bugfix for bug12747411 -start*/
10150        OKS_EXTWARPRGM_PVT.G_TRF_K_CREATE :=  'Y';
10151       /*spingali bugfix for bug12747411 -end */
10152 
10153          FOR l_sales_credit_hdr_rec IN
10154             l_sales_credit_hdr_csr (p_kdtl_rec.hdr_id)
10155          LOOP
10156             l_sc_hdr_ctr := l_sc_hdr_ctr + 1;
10157             l_salescredit_tbl (l_sc_hdr_ctr).ctc_id :=
10158                                                 l_sales_credit_hdr_rec.ctc_id;
10159             l_salescredit_tbl (l_sc_hdr_ctr).sales_credit_type_id :=
10160                                  l_sales_credit_hdr_rec.sales_credit_type_id1;
10161             l_salescredit_tbl (l_sc_hdr_ctr).PERCENT :=
10162                                                l_sales_credit_hdr_rec.PERCENT;
10163             l_salescredit_tbl (l_sc_hdr_ctr).sales_group_id :=
10164                                         l_sales_credit_hdr_rec.sales_group_id;
10165          END LOOP;             -- For l_sales_credit_rec IN l_sales_credit_csr
10166 
10167          oks_extwarprgm_pvt.create_k_hdr
10168                                    (p_k_header_rec            => l_hdr_rec,
10169                                     p_contact_tbl             => p_contact_tbl_in,
10170                                     p_salescredit_tbl_in      => l_salescredit_tbl
10171                                                                                   -- mmadhavi bug 4174921
10172          ,
10173                                     p_caller                  => 'ST',
10174                                     x_order_error             => l_temp,
10175                                     x_chr_id                  => l_chrid,
10176                                     x_return_status           => l_return_status,
10177                                     x_msg_count               => x_msg_count,
10178                                     x_msg_data                => x_msg_data
10179                                    );
10180 
10181          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10182          THEN
10183             fnd_log.STRING
10184                        (fnd_log.level_statement,
10185                            g_module_current
10186                         || '.CREATE_K_SYSTEM_TRF.create_contract_header',
10187                            'OKS_EXTWARPRGM_PVT.create_k_hdr(Return status = '
10188                         || l_return_status
10189                         || ')'
10190                        );
10191          END IF;
10192 
10193          IF NOT l_return_status = 'S'
10194          THEN
10195             RAISE g_exception_halt_validation;
10196          ELSE
10197             x_chr_id := l_chrid;
10198          END IF;
10199 
10200          SELECT authoring_org_id
10201            INTO l_org_id
10202            FROM okc_k_headers_b
10203           WHERE ID = l_chrid;
10204 
10205          OPEN l_access_csr (p_kdtl_rec.hdr_id);
10206 
10207          FETCH l_access_csr
10208           INTO l_resource_id, l_group_id, l_access_level;
10209 
10210          CLOSE l_access_csr;
10211 
10212          IF l_resource_id IS NOT NULL OR l_group_id IS NOT NULL
10213          THEN
10214             l_cacv_tbl_in (1).chr_id := l_chrid;
10215             l_cacv_tbl_in (1).resource_id := l_resource_id;
10216             l_cacv_tbl_in (1).GROUP_ID := l_group_id;
10217             l_cacv_tbl_in (1).access_level := l_access_level;
10218             okc_contract_pub.create_contract_access
10219                                          (p_api_version        => l_api_version,
10220                                           p_init_msg_list      => l_init_msg_list,
10221                                           x_return_status      => l_return_status,
10222                                           x_msg_count          => x_msg_count,
10223                                           x_msg_data           => x_msg_data,
10224                                           p_cacv_tbl           => l_cacv_tbl_in,
10225                                           x_cacv_tbl           => l_cacv_tbl_out
10226                                          );
10227 
10228             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10229             THEN
10230                fnd_log.STRING
10231                   (fnd_log.level_statement,
10232                       g_module_current
10233                    || '.CREATE_K_SYSTEM_TRF.create_contract_header',
10234                       'okc_contract_pub.create_contract_access(Return status = '
10235                    || l_return_status
10236                    || ')'
10237                   );
10238             END IF;
10239 
10240             IF NOT l_return_status = 'S'
10241             THEN
10242                RAISE g_exception_halt_validation;
10243             END IF;
10244          END IF;
10245 
10246          x_return_status := l_return_status;
10247       EXCEPTION
10248          WHEN g_exception_halt_validation
10249          THEN
10250             x_return_status := l_return_status;
10251             NULL;
10252          WHEN OTHERS
10253          THEN
10254             x_return_status := okc_api.g_ret_sts_unexp_error;
10255             okc_api.set_message (g_app_name,
10256                                  g_unexpected_error,
10257                                  g_sqlcode_token,
10258                                  SQLCODE,
10259                                  g_sqlerrm_token,
10260                                  SQLERRM
10261                                 );
10262       END create_contract_header;
10263 
10264       PROCEDURE create_contract_line (
10265          p_kdtl_rec        IN              contract_trf_rec,
10266          p_hdr_id          IN              NUMBER,
10267          x_return_status   OUT NOCOPY      VARCHAR2,
10268          x_msg_data        OUT NOCOPY      VARCHAR2,
10269          x_line_id         OUT NOCOPY      NUMBER,
10270          x_msg_count       OUT NOCOPY      NUMBER
10271       )
10272       IS
10273          CURSOR l_line_rule_csr (p_line_id NUMBER)
10274          IS
10275             SELECT oks.acct_rule_id, okc.inv_rule_id, okc.price_list_id
10276               FROM okc_k_lines_b okc, oks_k_lines_b oks
10277              WHERE okc.ID = p_line_id AND oks.cle_id = okc.ID;
10278 
10279          CURSOR l_party_csr (p_id NUMBER)
10280          IS
10281             SELECT party_id, NAME
10282               FROM okx_customer_accounts_v
10283              WHERE id1 = p_id;
10284 
10285          CURSOR l_hdr_sts_csr (p_hdr_id NUMBER)
10286          IS
10287             SELECT st.ste_code, kh.sts_code
10288               FROM okc_k_headers_b kh, okc_statuses_b st
10289              WHERE kh.ID = p_hdr_id AND st.code = kh.sts_code;
10290 
10291 -- Fix for bug 3588355
10292          CURSOR l_get_bill_ship_csr (p_cp_id NUMBER)
10293          IS
10294             SELECT bill_to_address, ship_to_address
10295               FROM csi_instance_party_v
10296              WHERE instance_id = p_cp_id;
10297 
10298          CURSOR l_serv_csr (p_serv_id NUMBER)
10299          IS
10300          SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments )
10301            FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
10302           WHERE b.inventory_item_id = t.inventory_item_id
10303             AND b.organization_id = t.organization_id
10304             AND t.LANGUAGE = USERENV ('LANG')
10305             AND b.inventory_item_id = p_serv_id
10306             AND ROWNUM < 2;
10307 
10308          l_line_rec          k_line_service_rec_type;
10309          l_acct_id           NUMBER;
10310          l_inv_id            NUMBER;
10311          l_party_id          NUMBER;
10312          l_party_name        VARCHAR2 (360);
10313          l_ste_code          VARCHAR2 (40);
10314          l_sts_code          VARCHAR2 (40);
10315          l_hdr_sts_code      VARCHAR2 (40);
10316          l_hdr_ste_code      VARCHAR2 (40);
10317          l_lineid            NUMBER;
10318          l_return_status     VARCHAR2 (10);
10319          l_price_list_id     NUMBER;
10320          p_contact_tbl_in    oks_extwarprgm_pvt.contact_tbl;
10321          l_status            VARCHAR2 (40);
10322          l_bill_to_id        NUMBER;
10323          l_ship_to_id        NUMBER;
10324          l_warranty_flag     VARCHAR2 (2);
10325 
10326          CURSOR l_sales_credit_csr (p_cle_id NUMBER)
10327          IS
10328             SELECT ctc_id, sales_credit_type_id1, PERCENT, sales_group_id
10329               FROM oks_k_sales_credits_v
10330              WHERE cle_id = p_cle_id;
10331 
10332          l_sc_ctr            NUMBER;
10333          l_salescredit_tbl   oks_extwarprgm_pvt.salescredit_tbl;
10334       BEGIN
10335          x_return_status := okc_api.g_ret_sts_success;
10336 
10337          OPEN l_line_rule_csr (p_kdtl_rec.service_line_id);
10338 
10339          FETCH l_line_rule_csr
10340           INTO l_acct_id, l_inv_id, l_price_list_id;
10341 
10342          CLOSE l_line_rule_csr;
10343 
10344          get_party_id (p_kdtl_rec.new_account_id, l_party_id, l_party_name);
10345 
10346          OPEN l_get_bill_ship_csr (p_kdtl_rec.old_cp_id);
10347 
10348          FETCH l_get_bill_ship_csr
10349           INTO l_bill_to_id, l_ship_to_id;
10350 
10351          CLOSE l_get_bill_ship_csr;
10352 
10353          l_line_rec.k_id := p_hdr_id;
10354          l_line_rec.k_line_number := okc_api.g_miss_char;
10355          l_line_rec.org_id := p_kdtl_rec.hdr_org_id;
10356          l_line_rec.accounting_rule_id := l_acct_id;
10357          l_line_rec.invoicing_rule_id := -2;
10358          --l_inv_id; -- fix for bug 3451440
10359          l_line_rec.srv_id := p_kdtl_rec.service_inventory_id;
10360          --  l_line_rec.srv_segment1           := p_kdtl_rec.service_name;
10361          --  l_line_rec.srv_desc               := p_kdtl_rec.service_description;
10362 
10363          OPEN l_serv_csr (p_kdtl_rec.service_inventory_id);
10364          FETCH l_serv_csr  INTO l_line_rec.srv_desc;
10365          CLOSE l_serv_csr;
10366 
10367          l_line_rec.srv_sdt := TRUNC (l_trfdt);
10368          l_line_rec.srv_edt := TRUNC (p_kdtl_rec.service_edt);
10369 
10370          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10371          THEN
10372             fnd_log.STRING (fnd_log.level_statement,
10373                                g_module_current
10374                             || '.CREATE_K_SYSTEM_TRF.create_k_service_line',
10375                                'Start date = '
10376                             || l_line_rec.srv_sdt
10377                             || 'End date = '
10378                             || l_line_rec.srv_edt
10379                            );
10380          END IF;
10381 
10382          --to be derived
10383          l_line_rec.bill_to_id :=
10384             NVL (l_bill_to_id,
10385                  site_address (p_kdtl_rec.new_account_id,
10386                                l_party_id,
10387                                'BILL_TO',
10388                                p_kdtl_rec.hdr_org_id
10389                               )
10390                 );
10391          l_line_rec.ship_to_id :=
10392             NVL (l_ship_to_id,
10393                  site_address (p_kdtl_rec.new_account_id,
10394                                l_party_id,
10395                                'SHIP_TO',
10396                                p_kdtl_rec.hdr_org_id
10397                               )
10398                 );
10399 
10400          IF p_kdtl_rec.lse_id = 25
10401          THEN
10402             l_warranty_flag := 'E';
10403          ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SERVICE'
10404          THEN
10405             l_warranty_flag := 'S';
10406          ELSIF p_kdtl_rec.lse_id = 18
10407          THEN
10408             l_warranty_flag := 'W';
10409          ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SUBSCRIPTION'
10410          THEN
10411             l_warranty_flag := 'SU';
10412          END IF;
10413 
10414          l_line_rec.warranty_flag := l_warranty_flag;
10415          l_line_rec.currency := p_kdtl_rec.service_currency;
10416          --Fix for Bug4121175
10417          l_line_rec.tax_code := p_kdtl_rec.tax_code;
10418          --End Fix for Bug4121175
10419          l_line_rec.cust_account := p_kdtl_rec.new_account_id;
10420          l_line_rec.ln_price_list_id := l_price_list_id;
10421          l_line_rec.coverage_id := p_kdtl_rec.coverage_id;
10422          l_line_rec.coverage_template_id := p_kdtl_rec.coverage_id;
10423          l_line_rec.standard_cov_yn := p_kdtl_rec.standard_cov_yn;
10424          l_line_rec.price_uom := p_kdtl_rec.price_uom_tl;
10425 
10426          --l_line_rec.line_renewal_type      := p_extwar_rec.line_renewal_type;
10427          IF l_line_rec.warranty_flag = 'W'
10428          THEN
10429             IF l_line_rec.srv_sdt > SYSDATE
10430             THEN
10431                get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10432             ELSE
10433                get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10434             END IF;
10435 
10436             l_line_rec.line_sts_code := l_sts_code;
10437             l_line_rec.line_renewal_type := 'DNR'  ;
10438 
10439          ELSE
10440             get_sts_code (p_kdtl_rec.prod_sts_code,
10441                           NULL,
10442                           l_ste_code,
10443                           l_sts_code
10444                          );
10445 
10446             IF l_ste_code = 'ENTERED'
10447             THEN
10448                l_line_rec.line_sts_code := l_sts_code;
10449             ELSE
10450                l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
10451 
10452                IF l_status = 'ACTIVE'
10453                THEN
10454                   IF l_line_rec.srv_sdt > SYSDATE
10455                   THEN
10456                      get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10457                   ELSE
10458                      get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10459                   END IF;
10460                ELSE
10461                   get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
10462                END IF;
10463 
10464                l_line_rec.line_sts_code := l_sts_code;
10465             END IF;
10466          END IF;
10467 
10468          l_line_rec.SOURCE := NULL;
10469          --errorout_n ('srv sdt'||p_extwar_rec.srv_sdt||'   '||p_extwar_rec.srv_edt);
10470          l_sc_ctr := 0;
10471 
10472          FOR l_sales_credit_rec IN
10473             l_sales_credit_csr (p_kdtl_rec.service_line_id)
10474          LOOP
10475             l_sc_ctr := l_sc_ctr + 1;
10476             l_salescredit_tbl (l_sc_ctr).ctc_id := l_sales_credit_rec.ctc_id;
10477             l_salescredit_tbl (l_sc_ctr).sales_credit_type_id :=
10478                                      l_sales_credit_rec.sales_credit_type_id1;
10479             l_salescredit_tbl (l_sc_ctr).PERCENT :=
10480                                                    l_sales_credit_rec.PERCENT;
10481             l_salescredit_tbl (l_sc_ctr).sales_group_id :=
10482                                             l_sales_credit_rec.sales_group_id;
10483          END LOOP;             -- For l_sales_credit_rec IN l_sales_credit_csr
10484 
10485          oks_extwarprgm_pvt.create_k_service_lines
10486                                    (p_k_line_rec              => l_line_rec,
10487                                     p_contact_tbl             => p_contact_tbl_in,
10488                                     p_salescredit_tbl_in      => l_salescredit_tbl,
10489                                     p_caller                  => 'ST',
10490                                     x_order_error             => l_temp,
10491                                     x_service_line_id         => l_lineid,
10492                                     x_return_status           => l_return_status,
10493                                     x_msg_count               => x_msg_count,
10494                                     x_msg_data                => x_msg_data
10495                                    );
10496 
10497          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10498          THEN
10499             fnd_log.STRING
10500                (fnd_log.level_statement,
10501                    g_module_current
10502                 || '.CREATE_K_SYSTEM_TRF.create_k_service_line',
10503                    'oks_extwarprgm_pvt.create_k_service_lines(Return status = '
10504                 || l_return_status
10505                 || ')'
10506                );
10507          END IF;
10508 
10509          IF NOT l_return_status = 'S'
10510          THEN
10511             RAISE g_exception_halt_validation;
10512          ELSE
10513             x_line_id := l_lineid;
10514          END IF;
10515       EXCEPTION
10516          WHEN g_exception_halt_validation
10517          THEN
10518             x_return_status := l_return_status;
10519             NULL;
10520          WHEN OTHERS
10521          THEN
10522             x_return_status := okc_api.g_ret_sts_unexp_error;
10523             okc_api.set_message (g_app_name,
10524                                  g_unexpected_error,
10525                                  g_sqlcode_token,
10526                                  SQLCODE,
10527                                  g_sqlerrm_token,
10528                                  SQLERRM
10529                                 );
10530       END create_contract_line;
10531 
10532       PROCEDURE create_contract_subline (
10533          p_kdtl_rec          IN              contract_trf_rec,
10534          p_hdr_id            IN              NUMBER,
10535          p_line_id           IN              NUMBER,
10536          x_subline_id        OUT NOCOPY      NUMBER,
10537          x_update_top_line   OUT NOCOPY      VARCHAR2,
10538          x_return_status     OUT NOCOPY      VARCHAR2,
10539          x_msg_data          OUT NOCOPY      VARCHAR2,
10540          x_msg_count         OUT NOCOPY      NUMBER
10541       )
10542       IS
10543 /*  Cursor l_Cust_csr IS                                                   --29-apr-03
10544 
10545       Select   csi.last_oe_order_line_id Original_order_line_id
10546               ,csi.inventory_item_id
10547               ,csi.quantity
10548               ,csi.unit_of_measure uom_code
10549        From   csi_item_instances csi
10550        Where  csi.instance_id = p_kdtl_rec.old_cp_id;
10551 */
10552          CURSOR l_line_sts_csr (p_line_id NUMBER)
10553          IS
10554             SELECT st.ste_code, kl.sts_code
10555               FROM okc_k_lines_b kl, okc_statuses_b st
10556              WHERE kl.ID = p_line_id AND st.code = kl.sts_code;
10557 
10558          CURSOR l_getprice_csr (p_line_id NUMBER)
10559          IS
10560             SELECT price_negotiated
10561               FROM okc_k_lines_b
10562              WHERE ID = p_line_id;
10563 
10564 
10565          CURSOR l_serv_csr (p_serv_id NUMBER)
10566          IS
10567          SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments )
10568            FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
10569           WHERE b.inventory_item_id = t.inventory_item_id
10570             AND b.organization_id = t.organization_id
10571             AND t.LANGUAGE = USERENV ('LANG')
10572             AND b.inventory_item_id = p_serv_id
10573             AND ROWNUM < 2;
10574 
10575 /*         CURSOR l_serv_csr (p_serv_id NUMBER)
10576          IS
10577             SELECT b.concatenated_segments description
10578               FROM mtl_system_items_b_kfv b
10579              WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
10580 */
10581 
10582          l_line_ste_code      VARCHAR2 (40);
10583          l_line_sts_code      VARCHAR2 (40);
10584          l_covd_rec           k_line_covered_level_rec_type;
10585          l_ste_code           VARCHAR2 (40);
10586          l_sts_code           VARCHAR2 (40);
10587          l_return_status      VARCHAR2 (10);
10588          l_days               NUMBER;
10589          l_newamt             NUMBER;
10590          l_day1price          NUMBER;
10591          p_price_attribs_in   oks_extwarprgm_pvt.pricing_attributes_type;
10592          l_warranty_flag      VARCHAR2 (2);
10593          l_covlvl_id          NUMBER;
10594          l_update_top_line    VARCHAR2 (1);
10595          l_status             VARCHAR2 (40);
10596          l_new_price          NUMBER;
10597          l_xfer_days          NUMBER;
10598          l_duration           NUMBER;
10599          l_timeunits          VARCHAR2 (25);
10600 --l_xfer_timeunits         VARCHAR2(25);
10601       BEGIN
10602          x_return_status := okc_api.g_ret_sts_success;
10603 
10604 /*                             Open l_Cust_csr;
10605                              Fetch l_Cust_csr into l_Cust_rec;
10606                              If l_Cust_csr%notfound Then
10607                                      Close l_Cust_Csr;
10608                                      IF FND_LOG.LEVEL_ERROR >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
10609                                        fnd_log.string(FND_LOG.LEVEL_ERROR,G_MODULE_CURRENT||'.CREATE_K_SYSTEM_TRF.ERROR',
10610                                        'l_Cust_csr Not Found ' );
10611                                      END IF;
10612                                 l_return_status := OKC_API.G_RET_STS_ERROR;
10613                                      OKC_API.set_message(G_APP_NAME,'OKS_CUST_PROD_DTLS_NOT_FOUND','CUSTOMER_PRODUCT',p_kdtl_rec.old_cp_id);
10614                                      Raise G_EXCEPTION_HALT_VALIDATION;
10615                              End if;
10616                              Close l_Cust_csr;
10617 */                           -- Amount to be prorated
10618                              -- Fix for the bug 3405907 Vigandhi 10-feb-2004
10619          IF p_kdtl_rec.service_amount IS NOT NULL
10620          THEN
10621             get_sts_code (p_kdtl_rec.prod_sts_code,
10622                           NULL,
10623                           l_ste_code,
10624                           l_sts_code
10625                          );
10626 
10627             IF l_ste_code = 'ENTERED'
10628             THEN
10629                --l_days           := (trunc(p_kdtl_rec.prod_edt) - trunc(p_kdtl_rec.prod_sdt)) + 1;
10630                --l_day1price      := p_kdtl_rec.service_amount / l_days;
10631                --l_newamt         := oks_extwar_util_pvt.round_currency_amt(l_day1price * (trunc(p_kdtl_rec.prod_edt) - trunc(l_trfdt) + 1),p_kdtl_rec.service_currency);
10632 
10633                -- Calculations based on partial period.
10634                IF p_kdtl_rec.price_uom_sl IS NULL
10635                THEN
10636                   okc_time_util_pub.get_duration
10637                                  (p_start_date         => TRUNC
10638                                                              (p_kdtl_rec.prod_sdt
10639                                                              ),
10640                                   p_end_date           => p_kdtl_rec.prod_edt,
10641                                   x_duration           => l_duration,
10642                                   x_timeunit           => l_timeunits,
10643                                   x_return_status      => l_return_status
10644                                  );
10645                /*
10646                  Okc_time_util_pub.get_duration
10647                                 (
10648                                  p_start_date    => trunc(l_trfdt),
10649                                  p_end_date      => p_kdtl_rec.prod_edt,
10650                                  x_duration      => l_duration,
10651                                  x_timeunit      => l_xfer_timeunits,
10652                                  x_return_status => l_return_status
10653                                );*/
10654                END IF;
10655 
10656                l_days :=
10657                   oks_time_measures_pub.get_quantity
10658                                                (p_kdtl_rec.prod_sdt,
10659                                                 p_kdtl_rec.prod_edt,
10660                                                 NVL (p_kdtl_rec.price_uom_sl,
10661                                                      l_timeunits
10662                                                     ),
10663                                                 p_kdtl_rec.period_type,
10664                                                 p_kdtl_rec.period_start
10665                                                );
10666                l_xfer_days :=
10667                   oks_time_measures_pub.get_quantity
10668                                                (l_trfdt,
10669                                                 p_kdtl_rec.prod_edt,
10670                                                 NVL (p_kdtl_rec.price_uom_sl,
10671                                                      l_timeunits
10672                                                     ),
10673                                                 p_kdtl_rec.period_type,
10674                                                 p_kdtl_rec.period_start
10675                                                );
10676                l_newamt :=
10677                   oks_extwar_util_pvt.round_currency_amt
10678                                                  (  p_kdtl_rec.service_amount
10679                                                   * l_xfer_days
10680                                                   / l_days,
10681                                                   p_kdtl_rec.service_currency
10682                                                  );
10683             ELSE
10684                OPEN l_getprice_csr (p_kdtl_rec.object_line_id);
10685 
10686                FETCH l_getprice_csr
10687                 INTO l_new_price;
10688 
10689                CLOSE l_getprice_csr;
10690 
10691                l_newamt := p_kdtl_rec.service_amount - l_new_price;
10692             END IF;
10693          ELSE
10694             l_newamt := 0;
10695          END IF;
10696 
10697          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
10698          THEN
10699             fnd_log.STRING (fnd_log.level_statement,
10700                                g_module_current
10701                             || '.CREATE_K_SYSTEM_TRF.Create_Contract_subline',
10702                             'New amount = ' || l_newamt
10703                            );
10704          END IF;
10705 
10706          l_covd_rec.k_id := p_hdr_id;
10707          l_covd_rec.rty_code := 'CONTRACTTRANSFERORDER';
10708          l_covd_rec.attach_2_line_id := p_line_id;
10709          l_covd_rec.line_number := okc_api.g_miss_char;
10710          l_covd_rec.customer_product_id := p_kdtl_rec.old_cp_id;
10711          l_covd_rec.product_segment1 := p_kdtl_rec.prod_name;
10712          l_covd_rec.product_desc := p_kdtl_rec.prod_description;
10713          l_covd_rec.product_start_date := TRUNC (l_trfdt);
10714          l_covd_rec.product_end_date := TRUNC (p_kdtl_rec.prod_edt);
10715          l_covd_rec.quantity := p_kdtl_rec.cp_qty;
10716          l_covd_rec.list_price := p_kdtl_rec.service_unit_price;
10717          l_covd_rec.uom_code := p_kdtl_rec.uom_code;
10718          l_covd_rec.negotiated_amount := l_newamt;
10719          l_covd_rec.standard_coverage := p_kdtl_rec.standard_cov_yn;
10720          l_covd_rec.price_uom := p_kdtl_rec.price_uom_sl;
10721          l_covd_rec.toplvl_uom_code := p_kdtl_rec.toplvl_uom_code;
10722          --mchoudha added for bug#5233956
10723          l_covd_rec.toplvl_price_qty := p_kdtl_rec.toplvl_price_qty;
10724 
10725          IF p_kdtl_rec.lse_id = 25
10726          THEN
10727             l_warranty_flag := 'E';
10728          ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SERVICE'
10729          THEN
10730             l_warranty_flag := 'S';
10731          ELSIF p_kdtl_rec.lse_id = 18
10732          THEN
10733             l_warranty_flag := 'W';
10734             l_covd_rec.line_renewal_type := 'DNR'  ;
10735          ELSIF p_kdtl_rec.lse_id = 9 AND p_kdtl_rec.scs_code = 'SUBSCRIPTION'
10736          THEN
10737             l_warranty_flag := 'SU';
10738 
10739 
10740          END IF;
10741 
10742          l_covd_rec.warranty_flag := l_warranty_flag;
10743          -- l_covd_rec.line_renewal_type               := p_kdtl_rec.cp_line_renewal_type;
10744          l_covd_rec.currency_code := p_kdtl_rec.service_currency;
10745 
10746          OPEN l_serv_csr (p_kdtl_rec.service_inventory_id);
10747 
10748          FETCH l_serv_csr
10749           INTO l_covd_rec.attach_2_line_desc;
10750 
10751          CLOSE l_serv_csr;
10752 
10753          l_covd_rec.prod_item_id := p_kdtl_rec.prod_inventory_item;
10754 
10755          IF l_covd_rec.warranty_flag = 'W'
10756          THEN
10757             IF l_covd_rec.product_start_date > SYSDATE
10758             THEN
10759                get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10760             ELSE
10761                get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10762             END IF;
10763 
10764             l_covd_rec.product_sts_code := l_sts_code;
10765          ELSE
10766             get_sts_code (p_kdtl_rec.prod_sts_code,
10767                           NULL,
10768                           l_ste_code,
10769                           l_sts_code
10770                          );
10771 
10772             IF l_ste_code = 'ENTERED'
10773             THEN
10774                l_covd_rec.product_sts_code := l_sts_code;
10775             ELSE
10776                l_status := fnd_profile.VALUE ('OKS_TRANSFER_STATUS');
10777 
10778                IF l_status = 'ACTIVE'
10779                THEN
10780                   IF l_covd_rec.product_start_date > SYSDATE
10781                   THEN
10782                      get_sts_code ('SIGNED', NULL, l_ste_code, l_sts_code);
10783                   ELSE
10784                      get_sts_code ('ACTIVE', NULL, l_ste_code, l_sts_code);
10785                   END IF;
10786                ELSE
10787                   get_sts_code (l_status, NULL, l_ste_code, l_sts_code);
10788                END IF;
10789 
10790                l_covd_rec.product_sts_code := l_sts_code;
10791             END IF;
10792          END IF;
10793 
10794          oks_extwarprgm_pvt.create_k_covered_levels
10795                                        (p_k_covd_rec         => l_covd_rec,
10796                                         p_price_attribs      => p_price_attribs_in,
10797                                         p_caller             => 'ST',
10798                                         x_order_error        => l_temp,
10799                                         x_covlvl_id          => l_covlvl_id,
10800                                         x_update_line        => l_update_top_line,
10801                                         x_return_status      => l_return_status,
10802                                         x_msg_count          => x_msg_count,
10803                                         x_msg_data           => x_msg_data
10804                                        );
10805 
10806          IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10807          THEN
10808             fnd_log.STRING (fnd_log.level_event,
10809                                g_module_current
10810                             || '.CREATE_K_SYSTEM_TRF.Create_Contract_subline',
10811                             'New amount = ' || l_newamt
10812                            );
10813          END IF;
10814 
10815          IF NOT l_return_status = 'S'
10816          THEN
10817             RAISE g_exception_halt_validation;
10818          ELSE
10819             x_subline_id := l_covlvl_id;
10820             x_update_top_line := l_update_top_line;
10821          END IF;
10822       EXCEPTION
10823          WHEN g_exception_halt_validation
10824          THEN
10825             x_return_status := l_return_status;
10826             NULL;
10827          WHEN OTHERS
10828          THEN
10829             x_return_status := okc_api.g_ret_sts_unexp_error;
10830             okc_api.set_message (g_app_name,
10831                                  g_unexpected_error,
10832                                  g_sqlcode_token,
10833                                  SQLCODE,
10834                                  g_sqlerrm_token,
10835                                  SQLERRM
10836                                 );
10837       END create_contract_subline;
10838 
10839       PROCEDURE create_billing_schedule (
10840          p_line_id         IN              NUMBER,
10841          p_covlvl_id       IN              NUMBER,
10842          P_period_start    IN              Varchar2,
10843          p_start_date      IN              DATE,
10844          p_end_date        IN              DATE,
10845          p_update_line     IN              VARCHAR2,
10846          x_return_status   OUT NOCOPY      VARCHAR2,
10847          x_msg_data        OUT NOCOPY      VARCHAR2,
10848          x_msg_count       OUT NOCOPY      NUMBER
10849       )
10850       IS
10851          l_strmlvl_id      NUMBER;
10852          l_sll_tbl         oks_bill_sch.streamlvl_tbl;
10853          l_return_status   VARCHAR2 (1);
10854          l_duration        NUMBER;
10855          l_timeunits       VARCHAR2 (25);
10856          l_bil_sch_out     oks_bill_sch.itembillsch_tbl;
10857          l_uom_code         Varchar2(240);
10858          Cursor get_day_uom_code IS
10859           select uom_code
10860            from okc_time_code_units_v
10861            where tce_code='DAY'
10862            and quantity=1;
10863 
10864 
10865 
10866       BEGIN
10867          l_strmlvl_id := check_strmlvl_exists (p_line_id);
10868 
10869          IF l_strmlvl_id IS NULL
10870          THEN
10871 
10872           If p_period_start = 'CALENDAR' Then
10873                        Open get_day_uom_code;
10874 	                 Fetch get_day_uom_code into l_uom_code;
10875 	                 Close get_day_uom_code;
10876 
10877 
10878                       l_sll_tbl (1).cle_id                := p_line_id;
10879                       l_sll_tbl (1).sequence_no           := 1;
10880                       l_sll_tbl (1).level_periods         := 1;
10881                       l_sll_tbl (1).uom_code              := l_uom_code;
10882                       l_sll_tbl (1).uom_per_period        := p_end_date - p_start_date + 1;
10883                       l_sll_tbl (1).invoice_offset_days   := 0;
10884                       l_sll_tbl (1).interface_offset_days := 0;
10885                       l_sll_tbl (1).level_amount          := null;
10886 
10887 
10888 
10889 
10890 
10891           Else
10892             okc_time_util_pub.get_duration
10893                                         (p_start_date         => TRUNC
10894                                                                     (p_start_date
10895                                                                     ),
10896                                          p_end_date           => p_end_date,
10897                                          x_duration           => l_duration,
10898                                          x_timeunit           => l_timeunits,
10899                                          x_return_status      => l_return_status
10900                                         );
10901 
10902             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10903             THEN
10904                fnd_log.STRING
10905                         (fnd_log.level_event,
10906                             g_module_current
10907                          || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10908                             'Okc_time_util_pub.get_duration(Return status = '
10909                          || l_return_status
10910                          || ',Duration = '
10911                          || l_duration
10912                          || ',Time Units = '
10913                          || l_timeunits
10914                          || ')'
10915                         );
10916             END IF;
10917 
10918             IF NOT l_return_status = 'S'
10919             THEN
10920                RAISE g_exception_halt_validation;
10921             END IF;
10922 
10923             l_sll_tbl (1).cle_id := p_line_id;
10924             --l_sll_tbl(1).billing_type                := 'T';
10925             l_sll_tbl (1).uom_code := l_timeunits;
10926             l_sll_tbl (1).sequence_no := '1';
10927             l_sll_tbl (1).level_periods := '1';
10928             --l_sll_tbl (1).start_date := TRUNC (l_trfdt);
10929             l_sll_tbl (1).uom_per_period := l_duration;
10930             l_sll_tbl (1).advance_periods := NULL;
10931             l_sll_tbl (1).level_amount := NULL;
10932             l_sll_tbl (1).invoice_offset_days := NULL;
10933             l_sll_tbl (1).interface_offset_days := NULL;
10934 
10935           End If;
10936             oks_bill_sch.create_bill_sch_rules
10937                                           (p_billing_type         => 'T',
10938                                            p_sll_tbl              => l_sll_tbl,
10939                                            p_invoice_rule_id      => -2,
10940                                            x_bil_sch_out_tbl      => l_bil_sch_out,
10941                                            x_return_status        => l_return_status
10942                                           );
10943 
10944             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
10945             THEN
10946                fnd_log.STRING
10947                     (fnd_log.level_event,
10948                         g_module_current
10949                      || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10950                         'oks_bill_sch.create_bill_sch_rules(Return status = '
10951                      || l_return_status
10952                      || ')'
10953                     );
10954             END IF;
10955 
10956             IF l_return_status <> okc_api.g_ret_sts_success
10957             THEN
10958                okc_api.set_message (g_app_name,
10959                                     g_required_value,
10960                                     g_col_name_token,
10961                                     'Sched Billing Rule (LINE)'
10962                                    );
10963                RAISE g_exception_halt_validation;
10964             END IF;
10965                   /* OKS_BILL_UTIL_PUB.CREATE_BCL_FOR_OM
10966                    (
10967                         P_LINE_ID  => p_line_id ,
10968                         X_RETURN_STATUS => l_return_status
10969                     );
10970           If(G_FND_LOG_OPTION = 'Y') Then
10971                    FND_FILE.PUT_LINE (FND_FILE.LOG,'IBNEW :- CREATE_BCL_FOR_OM ' || l_return_status );
10972          OKS_RENEW_PVT.DEBUG_LOG( 'OKS_EXTWARPRGM_PVT.CREATE_K_SYSTEM_TRF :: CREATE_BCL_FOR_OM '|| l_return_status);
10973          End if;
10974 
10975                    If Not l_return_status = 'S' then
10976                         Raise G_EXCEPTION_HALT_VALIDATION;
10977                    End if;
10978                    */
10979          ELSE
10980             IF check_lvlelements_exists (p_line_id)
10981             THEN
10982                IF p_update_line = 'Y'
10983                THEN
10984                   oks_bill_sch.update_om_sll_date
10985                                          (p_top_line_id        => p_line_id,
10986                                           x_return_status      => l_return_status,
10987                                           x_msg_count          => x_msg_count,
10988                                           x_msg_data           => x_msg_data
10989                                          );
10990 
10991                   -- FND_FILE.PUT_LINE( fnd_file.LOG, 'IBNEW :- Update_OM_SLL_Date ' || l_return_status );
10992                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
10993                      )
10994                   THEN
10995                      fnd_log.STRING
10996                         (fnd_log.level_event,
10997                             g_module_current
10998                          || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
10999                             'oks_bill_sch.update_om_sll_date(Return status = '
11000                          || l_return_status
11001                          || ')'
11002                         );
11003                   END IF;
11004 
11005                   IF NOT l_return_status = 'S'
11006                   THEN
11007                      RAISE g_exception_halt_validation;
11008                   END IF;
11009                ELSE
11010                   oks_bill_sch.create_bill_sch_cp
11011                                          (p_top_line_id        => p_line_id,
11012                                           p_cp_line_id         => p_covlvl_id,
11013                                           p_cp_new             => 'Y',
11014                                           x_return_status      => l_return_status,
11015                                           x_msg_count          => x_msg_count,
11016                                           x_msg_data           => x_msg_data
11017                                          );
11018 
11019                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
11020                      )
11021                   THEN
11022                      fnd_log.STRING
11023                         (fnd_log.level_event,
11024                             g_module_current
11025                          || '.CREATE_K_SYSTEM_TRF.Create_billing_schedule',
11026                             'oks_bill_sch.create_bill_sch_cp(Return status = '
11027                          || l_return_status
11028                          || ')'
11029                         );
11030                   END IF;
11031 
11032                   IF NOT l_return_status = 'S'
11033                   THEN
11034                      RAISE g_exception_halt_validation;
11035                   END IF;
11036                END IF;
11037                       /* OKS_BILL_UTIL_PUB.CREATE_BCL_FOR_OM
11038                        (
11039                        P_LINE_ID  => p_line_id ,
11040                        X_RETURN_STATUS => l_return_status
11041                        );
11042                       -- FND_FILE.PUT_LINE (FND_FILE.LOG,'IBNEW :- CREATE_BCL_FOR_OM ' || l_return_status );
11043             If(G_FND_LOG_OPTION = 'Y') Then
11044                        OKS_RENEW_PVT.DEBUG_LOG( 'OKS_EXTWARPRGM_PVT.CREATE_K_SYSTEM_TRF :: CREATE_BCL_FOR_OM '|| l_return_status);
11045             End if;
11046                        If Not l_return_status = 'S' then
11047                             Raise G_EXCEPTION_HALT_VALIDATION;
11048                        End if;
11049                        */
11050             ELSE
11051                okc_api.set_message (g_app_name,
11052                                     g_required_value,
11053                                     g_col_name_token,
11054                                     'level elements NOT EXIST'
11055                                    );
11056                RAISE g_exception_halt_validation;
11057             END IF;
11058          END IF;                                                -- strmlvl end
11059 
11060          x_return_status := l_return_status;
11061       EXCEPTION
11062          WHEN g_exception_halt_validation
11063          THEN
11064             x_return_status := l_return_status;
11065             NULL;
11066          WHEN OTHERS
11067          THEN
11068             x_return_status := okc_api.g_ret_sts_unexp_error;
11069             okc_api.set_message (g_app_name,
11070                                  g_unexpected_error,
11071                                  g_sqlcode_token,
11072                                  SQLCODE,
11073                                  g_sqlerrm_token,
11074                                  SQLERRM
11075                                 );
11076       END;
11077    BEGIN
11078       x_return_status := okc_api.g_ret_sts_success;
11079       l_old_cp_id := 0;
11080 
11081       IF p_kdtl_tbl.COUNT > 0
11082       THEN
11083          l_ctr := p_kdtl_tbl.FIRST;
11084 
11085          LOOP
11086 
11087 
11088             get_sts_code (NULL,
11089                           p_kdtl_tbl (l_ctr).hdr_sts,
11090                           l_ste_code,
11091                           l_sts_code
11092                          );
11093 
11094             IF l_ste_code = 'HOLD'
11095             THEN
11096                l_return_status := okc_api.g_ret_sts_error;
11097 
11098                IF fnd_log.level_error >= fnd_log.g_current_runtime_level
11099                THEN
11100                   fnd_log.STRING (fnd_log.level_error,
11101                                      g_module_current
11102                                   || '.CREATE_CONTRACT_IBTERMINATE.ERROR',
11103                                   'Contract in QA_HOLD status'
11104                                  );
11105                END IF;
11106 
11107                okc_api.set_message (g_app_name,
11108                                     g_invalid_value,
11109                                     g_col_name_token,
11110                                        'Termination not allowed .Contract '
11111                                     || p_kdtl_tbl (l_ctr).contract_number
11112                                     || 'is in QA_HOLD status'
11113                                    );
11114                RAISE g_exception_halt_validation;
11115             END IF;
11116 
11117             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
11118             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
11119          END LOOP;
11120       END IF;
11121 
11122 
11123       IF p_kdtl_tbl.COUNT > 0
11124       THEN
11125          l_ctr := p_kdtl_tbl.FIRST;
11126 
11127          LOOP
11128             --Fix for Bug 5406201
11129             l_clev_tbl_in.delete;
11130             l_chrv_tbl_in.delete;
11131             okc_context.set_okc_org_context
11132                                            (p_kdtl_tbl (l_ctr).hdr_org_id,
11133                                             p_kdtl_tbl (l_ctr).organization_id
11134                                            );
11135             get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
11136                           l_party_id,
11137                           l_party_name
11138                          );
11139 
11140             OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
11141 
11142             FETCH l_serv_csr
11143              INTO l_service_name;
11144 
11145             CLOSE l_serv_csr;
11146 
11147             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
11148             THEN
11149                fnd_log.STRING (fnd_log.level_statement,
11150                                g_module_current || '.CREATE_K_SYSTEM_TRF',
11151                                   'new cust acct id = '
11152                                || p_kdtl_tbl (l_ctr).new_account_id
11153                                || ',party id = '
11154                                || l_party_id
11155                               );
11156             END IF;
11157 
11158             IF p_kdtl_tbl (l_ctr).party_id <> l_party_id
11159             THEN
11160                l_inst_dtls_tbl.DELETE;
11161                l_ptr := l_ptr + 1;
11162                l_trf_option := NULL;
11163 
11164                OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
11165 
11166                FETCH l_cov_csr
11167                 INTO l_cov_rec;
11168 
11169                IF l_cov_csr%FOUND
11170                THEN
11171                   l_trf_option := l_cov_rec.transfer_option;
11172                END IF;
11173 
11174                --errorout_n('l_trf_option'||l_trf_option);
11175                CLOSE l_cov_csr;
11176 
11177                l_trfdt := p_kdtl_tbl (l_ctr).transfer_date;
11178 
11179                IF (TRUNC (l_trfdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
11180                THEN
11181                   l_trfdt := p_kdtl_tbl (l_ctr).prod_sdt;
11182                END IF;
11183 
11184                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
11185                THEN
11186                   fnd_log.STRING (fnd_log.level_statement,
11187                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
11188                                      'Transfer Option = '
11189                                   || l_trf_option
11190                                   || ',For service line = '
11191                                   || p_kdtl_tbl (l_ctr).service_line_id
11192                                  );
11193                END IF;
11194 
11195 /*-------------------------------------------------*/
11196 -- If Transfer Option Is "No Change to Contract"
11197 /*-------------------------------------------------*/
11198                IF l_trf_option = 'NO_CHANGE'
11199                THEN
11200                   NULL;
11201                END IF;
11202 
11203  /*-------------------------------------------------*/
11204  --If Transfer Option Is "Terminate upon Transfer"
11205  /*-------------------------------------------------*/
11206  /*----------------------------------------------------------------------------------------*/
11207  --If Transfer option Is "No Change if Transfer within group otherwise Terminate Contract".
11208 /*----------------------------------------------------------------------------------------*/
11209                IF l_trf_option IN ('TERM', 'TERM_NO_REL')
11210                THEN
11211                   l_ptr := 1;
11212                   --Check if the CUstomers are related by the value defined in profile
11213                   l_relationship := NULL;
11214 
11215                   IF l_trf_option = 'TERM_NO_REL'
11216                   THEN
11217                      l_relationship_type :=
11218                                       fnd_profile.VALUE ('OKS_TRF_PARTY_REL');
11219                      get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
11220                                    l_new_party_id,
11221                                    l_new_party_name
11222                                   );
11223                      get_party_id (p_kdtl_tbl (l_ctr).old_account_id,
11224                                    l_old_party_id,
11225                                    l_old_party_name
11226                                   );
11227 
11228                      OPEN l_cust_rel_csr (l_old_party_id,
11229                                           l_new_party_id,
11230                                           l_relationship_type,
11231                                           p_kdtl_tbl (l_ctr).transfer_date
11232                                          );
11233 
11234                      FETCH l_cust_rel_csr
11235                       INTO l_relationship;
11236 
11237                      CLOSE l_cust_rel_csr;
11238 
11239                      IF fnd_log.level_statement >=
11240                                                fnd_log.g_current_runtime_level
11241                      THEN
11242                         fnd_log.STRING
11243                                     (fnd_log.level_statement,
11244                                      g_module_current
11245                                      || '.CREATE_K_SYSTEM_TRF',
11246                                         'TERM_NO_REL profile relationship = '
11247                                      || l_relationship_type
11248                                      || ', Actual Relationship = '
11249                                      || l_relationship
11250                                     );
11251                      END IF;
11252                   END IF;
11253 
11254                   IF l_relationship IS NULL
11255                   THEN
11256 
11257 
11258 			-- Check Product status
11259                         get_sts_code (NULL,
11260                                    p_kdtl_tbl (l_ctr).prod_sts_code,
11261                                    l_ste_code,
11262                                    l_sts_code
11263                                   );
11264 
11265                      IF fnd_log.level_statement >=
11266                                                fnd_log.g_current_runtime_level
11267                      THEN
11268                         fnd_log.STRING (fnd_log.level_statement,
11269                                            g_module_current
11270                                         || '.CREATE_K_SYSTEM_TRF',
11271                                            'Product status Code = '
11272                                         || p_kdtl_tbl (l_ctr).prod_sts_code
11273                                         || ', Ste code = '
11274                                         || l_ste_code
11275                                        );
11276                      END IF;
11277 
11278                      IF l_ste_code <> 'ENTERED'
11279                      THEN
11280                         --Terminate the CUrrent Owners Contract subline with date terminated as Transfer date
11281                         IF fnd_log.level_statement >=
11282                                               fnd_log.g_current_runtime_level
11283                         THEN
11284                            fnd_log.STRING
11285                               (fnd_log.level_statement,
11286                                g_module_current || '.CREATE_K_SYSTEM_TRF',
11287                                   'OKS Raise credit memo profile option value  ='
11288                                || fnd_profile.VALUE
11289                                            ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
11290                               );
11291                         END IF;
11292 
11293                         /*IF    fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') = 'YES' OR fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') IS NULL THEN
11294                                l_suppress_credit := 'N';
11295                         ELSE
11296                                l_suppress_credit := 'Y';
11297                         END IF;*/
11298                         l_credit_amount :=
11299                            oks_ib_util_pvt.get_credit_option
11300                                               (p_kdtl_tbl (l_ctr).party_id,
11301                                                p_kdtl_tbl (l_ctr).hdr_org_id,
11302                                                p_kdtl_tbl (l_ctr).transfer_date
11303                                               );
11304 
11305                         IF UPPER (l_credit_amount) = 'FULL'
11306                         THEN
11307                            l_full_credit := 'Y';
11308                            l_suppress_credit := 'N';
11309                            --l_trfdt := p_kdtl_tbl( l_ctr ).prod_sdt;
11310                            l_term_date_flag := 'N';
11311                         ELSIF UPPER (l_credit_amount) = 'NONE'
11312                         THEN
11313                            l_suppress_credit := 'Y';
11314                            l_full_credit := 'N';
11315                            l_term_date_flag := 'N';
11316                         ELSIF UPPER (l_credit_amount) = 'CALCULATED'
11317                         THEN
11318                            l_suppress_credit := 'N';
11319                            l_full_credit := 'N';
11320                            l_term_date_flag := 'N';
11321                         END IF;
11322 
11323                         IF (TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11324                                                                TRUNC (l_trfdt)
11325                            )
11326                         THEN
11327                            l_suppress_credit := 'Y';
11328                            l_full_credit := 'N';
11329                            l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11330                            l_term_date_flag := 'Y';
11331                         END IF;
11332 
11333 
11334 
11335                         oks_bill_rec_pub.pre_terminate_cp
11336                                 (p_calledfrom                => -1,
11337                                  p_cle_id                    => p_kdtl_tbl
11338                                                                         (l_ctr).object_line_id,
11339                                  p_termination_date          => TRUNC (l_trfdt),
11340                                  p_terminate_reason          => 'TRF',
11341                                  p_override_amount           => NULL,
11342                                  p_con_terminate_amount      => NULL,
11343                                  p_termination_amount        => NULL,
11344                                  p_suppress_credit           => l_suppress_credit,
11345                                  --p_existing_credit             => 0,
11346                                  p_full_credit               => l_full_credit,
11347                                  --'N',
11348                                  p_term_date_flag            => l_term_date_flag,
11349                                  p_term_cancel_source        => 'IBTRANSFER',
11350                                  x_return_status             => l_return_status
11351                                 );
11352 
11353                         IF (fnd_log.level_event >=
11354                                                fnd_log.g_current_runtime_level
11355                            )
11356                         THEN
11357                            fnd_log.STRING
11358                               (fnd_log.level_event,
11359                                g_module_current || '.CREATE_K_SYSTEM_TRF',
11360                                   'oks_bill_rec_pub.Pre_terminate_cp(Return status ='
11361                                || l_return_status
11362                                || ')'
11363                               );
11364                         END IF;
11365 
11366                         IF NOT l_return_status = okc_api.g_ret_sts_success
11367                         THEN
11368                            RAISE g_exception_halt_validation;
11369                         END IF;
11370 
11371                         l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
11372                                                                TRUNC (l_trfdt);
11373                         date_terminated := NULL;
11374                         oks_ib_util_pvt.check_termcancel_lines
11375                                            (p_kdtl_tbl (l_ctr).service_line_id,
11376                                             'SL',
11377                                             'T',
11378                                             date_terminated
11379                                            );
11380 
11381                         IF date_terminated IS NOT NULL
11382                         THEN
11383                            get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11384 
11385                            l_clev_tbl_in (1).ID :=
11386                                            p_kdtl_tbl (l_ctr).service_line_id;
11387                            l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
11388                            l_clev_tbl_in (1).trn_code := 'TRF';
11389                            l_clev_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11390                            If TRUNC (date_terminated)<= trunc(sysdate) Then
11391                                  l_clev_tbl_in (1).sts_code := l_sts_code;
11392                            End If;
11393 
11394                            okc_contract_pub.update_contract_line
11395                                       (p_api_version            => l_api_version,
11396                                        p_init_msg_list          => l_init_msg_list,
11397                                        p_restricted_update      => okc_api.g_true,
11398                                        x_return_status          => l_return_status,
11399                                        x_msg_count              => x_msg_count,
11400                                        x_msg_data               => x_msg_data,
11401                                        p_clev_tbl               => l_clev_tbl_in,
11402                                        x_clev_tbl               => l_clev_tbl_out
11403                                       );
11404 
11405                            IF (fnd_log.level_event >=
11406                                                fnd_log.g_current_runtime_level
11407                               )
11408                            THEN
11409                               fnd_log.STRING
11410                                  (fnd_log.level_event,
11411                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
11412                                      'okc_contract_pub.update_contract_line(Return status = '
11413                                   || l_return_status
11414                                   || ')'
11415                                  );
11416                            END IF;
11417 
11418                            IF NOT l_return_status = okc_api.g_ret_sts_success
11419                            THEN
11420                               RAISE g_exception_halt_validation;
11421                            END IF;
11422                         END IF;
11423 
11424                         date_terminated := NULL;
11425                         oks_ib_util_pvt.check_termcancel_lines
11426                                                     (p_kdtl_tbl (l_ctr).hdr_id,
11427                                                      'TL',
11428                                                      'T',
11429                                                      date_terminated
11430                                                     );
11431 
11432                         IF date_terminated IS NOT NULL
11433                         THEN
11434                            get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11435 
11436                            l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
11437                            l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
11438                            l_chrv_tbl_in (1).trn_code := 'TRF';
11439                            l_chrv_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11440                            If TRUNC (date_terminated)<= trunc(sysdate) Then
11441 		                      l_chrv_tbl_in (1).sts_code  := l_sts_code;
11442                            End If;
11443 
11444                            okc_contract_pub.update_contract_header
11445                                       (p_api_version            => l_api_version,
11446                                        p_init_msg_list          => l_init_msg_list,
11447                                        p_restricted_update      => okc_api.g_true,
11448                                        x_return_status          => l_return_status,
11449                                        x_msg_count              => x_msg_count,
11450                                        x_msg_data               => x_msg_data,
11451                                        p_chrv_tbl               => l_chrv_tbl_in,
11452                                        x_chrv_tbl               => l_chrv_tbl_out
11453                                       );
11454 
11455                            IF (fnd_log.level_event >=
11456                                                fnd_log.g_current_runtime_level
11457                               )
11458                            THEN
11459                               fnd_log.STRING
11460                                  (fnd_log.level_event,
11461                                      g_module_current
11462                                   || '.Update_Hdr_Dates.external_call.after',
11463                                      'okc_contract_pub.update_contract_header(Return status = '
11464                                   || l_return_status
11465                                   || ')'
11466                                  );
11467                            END IF;
11468 
11469                            IF NOT l_return_status = okc_api.g_ret_sts_success
11470                            THEN
11471                               RAISE g_exception_halt_validation;
11472                            END IF;
11473                         END IF;
11474 
11475                         launch_workflow
11476                            (   'INSTALL BASE ACTIVITY : TRANSFER TERMINATE SUBLINE '
11477                             || fnd_global.local_chr (10)
11478                             || 'Contract Number       :                     '
11479                             || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
11480                             || fnd_global.local_chr (10)
11481                             || 'Service Terminated    :                     '
11482                             || l_service_name
11483                            );
11484                      ELSIF l_ste_code = 'ENTERED'
11485                      THEN
11486                         IF (TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11487                                                                TRUNC (l_trfdt)
11488                            )
11489                         THEN
11490                            l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11491                         END IF;
11492 
11493 		      -- added for the bug # 6000133
11494 		      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11495 
11496                         oks_change_status_pvt.update_line_status
11497                            (x_return_status           => l_return_status,
11498                             x_msg_data                => x_msg_data,
11499                             x_msg_count               => x_msg_count,
11500                             p_init_msg_list           => 'F',
11501                             p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
11502                             p_cle_id                  => p_kdtl_tbl (l_ctr).object_line_id,
11503                             p_new_sts_code            => l_sts_code,
11504                             p_canc_reason_code        => 'TRANSFER',
11505                             p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
11506                             p_old_ste_code            => 'ENTERED',
11507                             p_new_ste_code            => 'CANCELLED',
11508                             p_term_cancel_source      => 'IBTRANSFER',
11509                             p_date_cancelled          => TRUNC (l_trfdt),
11510                             p_comments                => NULL,
11511                             p_validate_status         => 'N'
11512                            );
11513 
11514                         IF (fnd_log.level_event >=
11515                                                fnd_log.g_current_runtime_level
11516                            )
11517                         THEN
11518                            fnd_log.STRING
11519                               (fnd_log.level_event,
11520                                g_module_current || '.CREATE_K_SYSTEM_TRF',
11521                                   'okc_contract_pub.update_contract_line(Return status ='
11522                                || l_return_status
11523                                || ')'
11524                               );
11525                         END IF;
11526 
11527                         IF NOT l_return_status = okc_api.g_ret_sts_success
11528                         THEN
11529                            RAISE g_exception_halt_validation;
11530                         END IF;
11531 
11532                         l_inst_dtls_tbl (l_ptr).date_cancelled :=
11533                                                                TRUNC (l_trfdt);
11534                         date_cancelled := NULL;
11535                         oks_ib_util_pvt.check_termcancel_lines
11536                                            (p_kdtl_tbl (l_ctr).service_line_id,
11537                                             'SL',
11538                                             'C',
11539                                             date_cancelled
11540                                            );
11541 
11542                         IF date_cancelled IS NOT NULL
11543                         THEN
11544 
11545 		      -- added for the bug # 6000133
11546 		      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11547 
11548 			   oks_change_status_pvt.update_line_status
11549                               (x_return_status           => l_return_status,
11550                                x_msg_data                => x_msg_data,
11551                                x_msg_count               => x_msg_count,
11552                                p_init_msg_list           => 'F',
11553                                p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
11554                                p_cle_id                  => p_kdtl_tbl (l_ctr).service_line_id,
11555                                p_new_sts_code            => l_sts_code,
11556                                p_canc_reason_code        => 'TRANSFER',
11557                                p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
11558                                p_old_ste_code            => 'ENTERED',
11559                                p_new_ste_code            => 'CANCELLED',
11560                                p_term_cancel_source      => 'IBTRANSFER',
11561                                p_date_cancelled          => TRUNC
11562                                                                (date_cancelled),
11563                                p_comments                => NULL,
11564                                p_validate_status         => 'N'
11565                               );
11566 
11567                            IF (fnd_log.level_event >=
11568                                                fnd_log.g_current_runtime_level
11569                               )
11570                            THEN
11571                               fnd_log.STRING
11572                                  (fnd_log.level_event,
11573                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
11574                                      'okc_contract_pub.update_contract_line(Return status = '
11575                                   || l_return_status
11576                                   || ')'
11577                                  );
11578                            END IF;
11579 
11580                            IF NOT l_return_status = okc_api.g_ret_sts_success
11581                            THEN
11582                               RAISE g_exception_halt_validation;
11583                            END IF;
11584                         END IF;
11585 
11586                         date_cancelled := NULL;
11587                         oks_ib_util_pvt.check_termcancel_lines
11588                                                     (p_kdtl_tbl (l_ctr).hdr_id,
11589                                                      'TL',
11590                                                      'C',
11591                                                      date_cancelled
11592                                                     );
11593 
11594                         IF date_cancelled IS NOT NULL
11595                         THEN
11596 
11597 		      -- added for the bug # 6000133
11598 		      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11599 
11600 			   oks_change_status_pvt.update_header_status
11601                               (x_return_status           => l_return_status,
11602                                x_msg_data                => x_msg_data,
11603                                x_msg_count               => x_msg_count,
11604                                p_init_msg_list           => 'F',
11605                                p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
11606                                p_new_sts_code            => l_sts_code,
11607                                p_canc_reason_code        => 'TRANSFER',
11608                                p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
11609                                p_comments                => NULL,
11610                                p_term_cancel_source      => 'IBTRANSFER',
11611                                p_date_cancelled          => TRUNC
11612                                                                (date_cancelled),
11613                                p_validate_status         => 'N'
11614                               );
11615 
11616                            IF (fnd_log.level_event >=
11617                                                fnd_log.g_current_runtime_level
11618                               )
11619                            THEN
11620                               fnd_log.STRING
11621                                  (fnd_log.level_event,
11622                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
11623                                      'oks_change_status_pvt.Update_header_status(Return status = '
11624                                   || l_return_status
11625                                   || ')'
11626                                  );
11627                            END IF;
11628 
11629                            IF NOT l_return_status = okc_api.g_ret_sts_success
11630                            THEN
11631                               RAISE g_exception_halt_validation;
11632                            END IF;
11633                         END IF;                   --Date_Cancelled Is Not Null
11634                      END IF;                          -- ste_code <> 'ENTERED'
11635 
11636                      l_date_terminated := NULL;
11637                      l_subline_price := NULL;
11638 
11639                      OPEN l_subline_csr (p_kdtl_tbl (l_ctr).object_line_id);
11640 
11641                      FETCH l_subline_csr
11642                       INTO l_date_terminated, l_subline_price;
11643 
11644                      CLOSE l_subline_csr;
11645 
11646                      l_inst_dtls_tbl (l_ptr).transaction_date :=
11647                                               (p_kdtl_tbl (l_ctr).transaction_date);
11648                      l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
11649                      l_inst_dtls_tbl (l_ptr).system_id :=
11650                                                   p_kdtl_tbl (l_ctr).system_id;
11651                      l_inst_dtls_tbl (l_ptr).transfer_option := l_trf_option;
11652                      l_inst_dtls_tbl (l_ptr).instance_id_new :=
11653                                                 p_kdtl_tbl (l_ctr).instance_id;
11654                      l_inst_dtls_tbl (l_ptr).instance_amt_new :=
11655                                                                l_subline_price;
11656                      --l_kdtl_tbl( l_ctr ).service_amount;
11657                      l_inst_dtls_tbl (l_ptr).instance_qty_new :=
11658                                                      p_kdtl_tbl (l_ctr).cp_qty;
11659                      l_inst_dtls_tbl (l_ptr).new_contract_id :=
11660                                                      p_kdtl_tbl (l_ctr).hdr_id;
11661                      l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
11662                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
11663                      l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
11664                                                     p_kdtl_tbl (l_ctr).hdr_edt;
11665                      l_inst_dtls_tbl (l_ptr).new_service_line_id :=
11666                                             p_kdtl_tbl (l_ctr).service_line_id;
11667                      l_inst_dtls_tbl (l_ptr).new_service_start_date :=
11668                                                 p_kdtl_tbl (l_ctr).service_sdt;
11669                      l_inst_dtls_tbl (l_ptr).new_service_end_date :=
11670                                                 p_kdtl_tbl (l_ctr).service_edt;
11671                      l_inst_dtls_tbl (l_ptr).new_subline_id :=
11672                                              p_kdtl_tbl (l_ctr).object_line_id;
11673                      l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
11674                                                    p_kdtl_tbl (l_ctr).prod_sdt;
11675                      l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
11676                                                    p_kdtl_tbl (l_ctr).prod_edt;
11677                      l_inst_dtls_tbl (l_ptr).new_customer :=
11678                                              p_kdtl_tbl (l_ctr).old_account_id;
11679                      l_inst_dtls_tbl (l_ptr).new_k_status :=
11680                                                     p_kdtl_tbl (l_ctr).hdr_sts;
11681                      l_inst_dtls_tbl (l_ptr).instance_amt_old :=
11682                                              p_kdtl_tbl (l_ctr).service_amount;
11683                      l_inst_dtls_tbl (l_ptr).instance_qty_old :=
11684                                                      p_kdtl_tbl (l_ctr).cp_qty;
11685                      l_inst_dtls_tbl (l_ptr).old_contract_id :=
11686                                                      p_kdtl_tbl (l_ctr).hdr_id;
11687                      l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
11688                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
11689                      l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
11690                                                     p_kdtl_tbl (l_ctr).hdr_edt;
11691                      l_inst_dtls_tbl (l_ptr).old_service_line_id :=
11692                                             p_kdtl_tbl (l_ctr).service_line_id;
11693                      l_inst_dtls_tbl (l_ptr).old_service_start_date :=
11694                                                 p_kdtl_tbl (l_ctr).service_sdt;
11695                      l_inst_dtls_tbl (l_ptr).old_service_end_date :=
11696                                                 p_kdtl_tbl (l_ctr).service_edt;
11697                      l_inst_dtls_tbl (l_ptr).old_subline_id :=
11698                                              p_kdtl_tbl (l_ctr).object_line_id;
11699                      l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
11700                                                    p_kdtl_tbl (l_ctr).prod_sdt;
11701                      l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
11702                                                    p_kdtl_tbl (l_ctr).prod_edt;
11703                      l_inst_dtls_tbl (l_ptr).old_customer :=
11704                                              p_kdtl_tbl (l_ctr).old_account_id;
11705                      l_inst_dtls_tbl (l_ptr).old_k_status :=
11706                                                     p_kdtl_tbl (l_ctr).hdr_sts;
11707                   END IF;                            -- l_relation_ship = null
11708                END IF;               --l_trf_option in ( 'TERM','TERM_NO_REL')
11709 
11710 /*------------------------------------------------------------------------------*/
11711  -- If Transfer option is "Transfer service to new owner, terminate old service".
11712 /*-------------------------------------------------------------------------------*/
11713                IF l_trf_option IN ('TRANS', 'TRANS_NO_REL')
11714                THEN
11715                   l_ptr := 1;
11716 
11717                    -- Check Subline status
11718                    get_sts_code (NULL,
11719                                 p_kdtl_tbl (l_ctr).prod_sts_code,
11720                                 l_ste_code,
11721                                 l_sts_code
11722                                );
11723 		   --Check if the Customers are related by the value defined in profile for  Transfer option 'TRANS_NO_REL'
11724 
11725                   /*1*/
11726                   IF l_trf_option = 'TRANS_NO_REL'
11727                   THEN
11728                      l_relationship := NULL;
11729                      l_relationship_type :=
11730                                       fnd_profile.VALUE ('OKS_TRF_PARTY_REL');
11731                      get_party_id (p_kdtl_tbl (l_ctr).new_account_id,
11732                                    l_new_party_id,
11733                                    l_new_party_name
11734                                   );
11735                      get_party_id (p_kdtl_tbl (l_ctr).old_account_id,
11736                                    l_old_party_id,
11737                                    l_old_party_name
11738                                   );
11739 
11740                      OPEN l_cust_rel_csr (l_old_party_id,
11741                                           l_new_party_id,
11742                                           l_relationship_type,
11743                                           p_kdtl_tbl (l_ctr).transfer_date
11744                                          );
11745 
11746                      FETCH l_cust_rel_csr
11747                       INTO l_relationship;
11748 
11749                      CLOSE l_cust_rel_csr;
11750                   /*E1*/
11751                   END IF;
11752 
11753                   IF fnd_log.level_statement >=
11754                                                fnd_log.g_current_runtime_level
11755                   THEN
11756                      fnd_log.STRING
11757                                    (fnd_log.level_statement,
11758                                     g_module_current || '.CREATE_K_SYSTEM_TRF',
11759                                        'TRANS_NO_REL profile relationship = '
11760                                     || l_relationship_type
11761                                     || ', Actual Relationship = '
11762                                     || l_relationship
11763                                    );
11764                   END IF;
11765 
11766                   /*2*/
11767                   IF l_relationship IS NULL OR l_trf_option = 'TRANS'
11768                   THEN
11769                      -- If Contract is in Entered Status then no updates on the original Contract
11770                      -- but Create a Contract for New Owner in Entered Status.
11771                      IF fnd_log.level_statement >=
11772                                               fnd_log.g_current_runtime_level
11773                      THEN
11774                         fnd_log.STRING (fnd_log.level_statement,
11775                                            g_module_current
11776                                         || '.CREATE_K_SYSTEM_TRF',
11777                                            'Product Status code = '
11778                                         || p_kdtl_tbl (l_ctr).prod_sts_code
11779                                         || ',Ste code = '
11780                                         || l_ste_code
11781                                        );
11782                      END IF;
11783 
11784                      l_create_contract := 'Y';
11785 
11786                      /*4*/
11787                      IF l_ste_code <> 'ENTERED'
11788                      THEN
11789                         IF fnd_log.level_statement >=
11790                                               fnd_log.g_current_runtime_level
11791                         THEN
11792                            fnd_log.STRING
11793                               (fnd_log.level_statement,
11794                                g_module_current || '.CREATE_K_SYSTEM_TRF',
11795                                   'OKS Raise credit memo profile option value  ='
11796                                || fnd_profile.VALUE
11797                                            ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
11798                               );
11799                         END IF;
11800 
11801                         /*IF    fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') = 'YES' OR fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') IS NULL THEN
11802                               l_suppress_credit := 'N';
11803                         ELSE
11804                               l_suppress_credit := 'Y';
11805                         END IF;*/
11806                         l_credit_amount :=
11807                            oks_ib_util_pvt.get_credit_option
11808                                               (p_kdtl_tbl (l_ctr).party_id,
11809                                                p_kdtl_tbl (l_ctr).hdr_org_id,
11810                                                p_kdtl_tbl (l_ctr).transfer_date
11811                                               );
11812 
11813                         IF UPPER (l_credit_amount) = 'FULL'
11814                         THEN
11815                            l_full_credit := 'Y';
11816                            l_suppress_credit := 'N';
11817                            --l_trfdt := p_kdtl_tbl( l_ctr ).prod_sdt;
11818                            l_term_date_flag := 'N';
11819                         ELSIF UPPER (l_credit_amount) = 'NONE'
11820                         THEN
11821                            l_suppress_credit := 'Y';
11822                            l_full_credit := 'N';
11823                            l_term_date_flag := 'N';
11824                         ELSIF UPPER (l_credit_amount) = 'CALCULATED'
11825                         THEN
11826                            l_suppress_credit := 'N';
11827                            l_full_credit := 'N';
11828                            l_term_date_flag := 'N';
11829                         END IF;
11830 
11831                         IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11832                                                                TRUNC (l_trfdt)
11833                         THEN
11834                            l_suppress_credit := 'Y';
11835                            l_full_credit := 'N';
11836                            l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11837                            l_term_date_flag := 'Y';
11838                            l_create_contract := 'N';
11839                         END IF;
11840 
11841 
11842 
11843                         oks_bill_rec_pub.pre_terminate_cp
11844                                 (p_calledfrom                => -1,
11845                                  p_cle_id                    => p_kdtl_tbl
11846                                                                         (l_ctr).object_line_id,
11847                                  p_termination_date          => TRUNC (l_trfdt),
11848                                  p_terminate_reason          => 'TRF',
11849                                  p_override_amount           => NULL,
11850                                  p_con_terminate_amount      => NULL,
11851                                  p_termination_amount        => NULL,
11852                                  --p_existing_credit               => 0,
11853                                  p_suppress_credit           => l_suppress_credit,
11854                                  p_full_credit               => l_full_credit,
11855                                  --'N',
11856                                  p_term_date_flag            => l_term_date_flag,
11857                                  p_term_cancel_source        => 'IBTRANSFER',
11858                                  x_return_status             => l_return_status
11859                                 );
11860 
11861                         IF (fnd_log.level_event >=
11862                                                fnd_log.g_current_runtime_level
11863                            )
11864                         THEN
11865                            fnd_log.STRING
11866                               (fnd_log.level_event,
11867                                g_module_current || '.CREATE_K_SYSTEM_TRF',
11868                                   'oks_bill_rec_pub.Pre_terminate_cp(Return status ='
11869                                || l_return_status
11870                                || ')'
11871                               );
11872                         END IF;
11873 
11874                         IF NOT l_return_status = okc_api.g_ret_sts_success
11875                         THEN
11876                            RAISE g_exception_halt_validation;
11877                         END IF;
11878 
11879                         l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
11880                                                                TRUNC (l_trfdt);
11881                         date_terminated := NULL;
11882                         oks_ib_util_pvt.check_termcancel_lines
11883                                            (p_kdtl_tbl (l_ctr).service_line_id,
11884                                             'SL',
11885                                             'T',
11886                                             date_terminated
11887                                            );
11888 
11889                         IF date_terminated IS NOT NULL
11890                         THEN
11891                            get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11892 
11893                            l_clev_tbl_in (1).ID :=
11894                                            p_kdtl_tbl (l_ctr).service_line_id;
11895                            l_clev_tbl_in (1).date_terminated :=
11896                                                       TRUNC (date_terminated);
11897                            l_clev_tbl_in (1).trn_code := 'TRF';
11898                            ---check the actual code
11899                            l_clev_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11900                            If TRUNC (date_terminated)<= trunc(sysdate) Then
11901                                 l_clev_tbl_in (1).sts_code  := l_sts_code;
11902                            End If;
11903 
11904                            okc_contract_pub.update_contract_line
11905                                       (p_api_version            => l_api_version,
11906                                        p_init_msg_list          => l_init_msg_list,
11907                                        p_restricted_update      => okc_api.g_true,
11908                                        x_return_status          => l_return_status,
11909                                        x_msg_count              => x_msg_count,
11910                                        x_msg_data               => x_msg_data,
11911                                        p_clev_tbl               => l_clev_tbl_in,
11912                                        x_clev_tbl               => l_clev_tbl_out
11913                                       );
11914 
11915                            IF (fnd_log.level_event >=
11916                                                fnd_log.g_current_runtime_level
11917                               )
11918                            THEN
11919                               fnd_log.STRING
11920                                  (fnd_log.level_event,
11921                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
11922                                      'okc_contract_pub.update_contract_line(Return status = '
11923                                   || l_return_status
11924                                   || ')'
11925                                  );
11926                            END IF;
11927 
11928                            IF NOT l_return_status = okc_api.g_ret_sts_success
11929                            THEN
11930                               RAISE g_exception_halt_validation;
11931                            END IF;
11932                         END IF;
11933 
11934                         date_terminated := NULL;
11935                         oks_ib_util_pvt.check_termcancel_lines
11936                                                     (p_kdtl_tbl (l_ctr).hdr_id,
11937                                                      'TL',
11938                                                      'T',
11939                                                      date_terminated
11940                                                     );
11941 
11942                         IF date_terminated IS NOT NULL
11943                         THEN
11944                            get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
11945 
11946                            l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
11947                            l_chrv_tbl_in (1).date_terminated := TRUNC (date_terminated);
11948                            l_chrv_tbl_in (1).trn_code := 'TRF';
11949                            l_chrv_tbl_in (1).term_cancel_source := 'IBTRANSFER';
11950                            If TRUNC (date_terminated)<= trunc(sysdate) Then
11951                                 l_chrv_tbl_in (1).sts_code  := l_sts_code;
11952                            End If;
11953 
11954                            okc_contract_pub.update_contract_header
11955                                       (p_api_version            => l_api_version,
11956                                        p_init_msg_list          => l_init_msg_list,
11957                                        p_restricted_update      => okc_api.g_true,
11958                                        x_return_status          => l_return_status,
11959                                        x_msg_count              => x_msg_count,
11960                                        x_msg_data               => x_msg_data,
11961                                        p_chrv_tbl               => l_chrv_tbl_in,
11962                                        x_chrv_tbl               => l_chrv_tbl_out
11963                                       );
11964 
11965                            IF (fnd_log.level_event >=
11966                                                fnd_log.g_current_runtime_level
11967                               )
11968                            THEN
11969                               fnd_log.STRING
11970                                  (fnd_log.level_event,
11971                                      g_module_current
11972                                   || '.Update_Hdr_Dates.external_call.after',
11973                                      'okc_contract_pub.update_contract_header(Return status = '
11974                                   || l_return_status
11975                                   || ')'
11976                                  );
11977                            END IF;
11978 
11979                            IF NOT l_return_status = okc_api.g_ret_sts_success
11980                            THEN
11981                               RAISE g_exception_halt_validation;
11982                            END IF;
11983                         END IF;
11984                      ELSIF l_ste_code = 'ENTERED'
11985                      THEN
11986                         IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) <
11987                                                               TRUNC (l_trfdt)
11988                         THEN
11989                            l_create_contract := 'N';
11990                            l_trfdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
11991                         ELSE
11992                            l_create_contract := 'Y';
11993                         END IF;
11994 
11995 		      -- added for the bug # 6000133
11996 		      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
11997 
11998 			oks_change_status_pvt.update_line_status
11999                            (x_return_status           => l_return_status,
12000                             x_msg_data                => x_msg_data,
12001                             x_msg_count               => x_msg_count,
12002                             p_init_msg_list           => 'F',
12003                             p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
12004                             p_cle_id                  => p_kdtl_tbl (l_ctr).object_line_id,
12005                             p_new_sts_code            => l_sts_code,
12006                             p_canc_reason_code        => 'TRANSFER',
12007                             p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
12008                             p_old_ste_code            => 'ENTERED',
12009                             p_new_ste_code            => 'CANCELLED',
12010                             p_term_cancel_source      => 'IBTRANSFER',
12011                             p_date_cancelled          => TRUNC (l_trfdt),
12012                             p_comments                => NULL,
12013                             p_validate_status         => 'N'
12014                            );
12015 
12016                         IF (fnd_log.level_event >=
12017                                                fnd_log.g_current_runtime_level
12018                            )
12019                         THEN
12020                            fnd_log.STRING
12021                               (fnd_log.level_event,
12022                                g_module_current || '.CREATE_K_SYSTEM_TRF',
12023                                   'oks_change_status_pvt.Update_line_status(Return status ='
12024                                || l_return_status
12025                                || ')'
12026                               );
12027                         END IF;
12028 
12029                         IF NOT l_return_status = okc_api.g_ret_sts_success
12030                         THEN
12031                            RAISE g_exception_halt_validation;
12032                         END IF;
12033 
12034                         l_inst_dtls_tbl (l_ptr).date_cancelled :=
12035                                                                TRUNC (l_trfdt);
12036                         date_cancelled := NULL;
12037                         oks_ib_util_pvt.check_termcancel_lines
12038                                            (p_kdtl_tbl (l_ctr).service_line_id,
12039                                             'SL',
12040                                             'C',
12041                                             date_cancelled
12042                                            );
12043 
12044                         IF date_cancelled IS NOT NULL
12045                         THEN
12046 
12047 		      -- added for the bug # 6000133
12048 		      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
12049 
12050 			   oks_change_status_pvt.update_line_status
12051                               (x_return_status           => l_return_status,
12052                                x_msg_data                => x_msg_data,
12053                                x_msg_count               => x_msg_count,
12054                                p_init_msg_list           => 'F',
12055                                p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
12056                                p_cle_id                  => p_kdtl_tbl (l_ctr).service_line_id,
12057                                p_new_sts_code            => l_sts_code,
12058                                p_canc_reason_code        => 'TRANSFER',
12059                                p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
12060                                p_old_ste_code            => 'ENTERED',
12061                                p_new_ste_code            => 'CANCELLED',
12062                                p_term_cancel_source      => 'IBTRANSFER',
12063                                p_date_cancelled          => TRUNC
12064                                                                (date_cancelled),
12065                                p_comments                => NULL,
12066                                p_validate_status         => 'N'
12067                               );
12068 
12069                            IF (fnd_log.level_event >=
12070                                                fnd_log.g_current_runtime_level
12071                               )
12072                            THEN
12073                               fnd_log.STRING
12074                                  (fnd_log.level_event,
12075                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
12076                                      'okc_contract_pub.update_contract_line(Return status = '
12077                                   || l_return_status
12078                                   || ')'
12079                                  );
12080                            END IF;
12081 
12082                            IF NOT l_return_status = okc_api.g_ret_sts_success
12083                            THEN
12084                               RAISE g_exception_halt_validation;
12085                            END IF;
12086                         END IF;
12087 
12088                         date_cancelled := NULL;
12089                         oks_ib_util_pvt.check_termcancel_lines
12090                                                     (p_kdtl_tbl (l_ctr).hdr_id,
12091                                                      'TL',
12092                                                      'C',
12093                                                      date_cancelled
12094                                                     );
12095 
12096                         IF date_cancelled IS NOT NULL
12097                         THEN
12098 
12099 		      -- added for the bug # 6000133
12100 		      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
12101 
12102                            oks_change_status_pvt.update_header_status
12103                               (x_return_status           => l_return_status,
12104                                x_msg_data                => x_msg_data,
12105                                x_msg_count               => x_msg_count,
12106                                p_init_msg_list           => 'F',
12107                                p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
12108                                p_new_sts_code            => l_sts_code,
12109                                p_canc_reason_code        => 'TRANSFER',
12110                                p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
12111                                p_comments                => NULL,
12112                                p_term_cancel_source      => 'IBTRANSFER',
12113                                p_date_cancelled          => TRUNC
12114                                                                (date_cancelled),
12115                                p_validate_status         => 'N'
12116                               );
12117 
12118                            IF (fnd_log.level_event >=
12119                                                fnd_log.g_current_runtime_level
12120                               )
12121                            THEN
12122                               fnd_log.STRING
12123                                  (fnd_log.level_event,
12124                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
12125                                      'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status = '
12126                                   || l_return_status
12127                                   || ')'
12128                                  );
12129                            END IF;
12130 
12131                            IF NOT l_return_status = okc_api.g_ret_sts_success
12132                            THEN
12133                               RAISE g_exception_halt_validation;
12134                            END IF;
12135                         END IF;
12136                      /*E4*/
12137                      END IF;                          -- ste_code <> 'ENTERED'
12138 
12139                      l_date_terminated := NULL;
12140                      l_subline_price := NULL;
12141 
12142                      OPEN l_subline_csr (p_kdtl_tbl (l_ctr).object_line_id);
12143 
12144                      FETCH l_subline_csr
12145                       INTO l_date_terminated, l_subline_price;
12146 
12147                      CLOSE l_subline_csr;
12148 
12149                      l_inst_dtls_tbl (l_ptr).transaction_date :=
12150                                               (p_kdtl_tbl (l_ctr).transaction_date);
12151                      l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
12152                      l_inst_dtls_tbl (l_ptr).system_id :=
12153                                                   p_kdtl_tbl (l_ctr).system_id;
12154                      l_inst_dtls_tbl (l_ptr).transfer_option := l_trf_option;
12155                      l_inst_dtls_tbl (l_ptr).instance_id_new :=
12156                                                   p_kdtl_tbl (l_ctr).old_cp_id;
12157                      l_inst_dtls_tbl (l_ptr).instance_amt_new :=
12158                                                                l_subline_price;
12159                      --l_kdtl_tbl( l_ctr ).service_amount;
12160                      l_inst_dtls_tbl (l_ptr).instance_qty_new :=
12161                                                      p_kdtl_tbl (l_ctr).cp_qty;
12162                      l_inst_dtls_tbl (l_ptr).new_contract_id :=
12163                                                      p_kdtl_tbl (l_ctr).hdr_id;
12164                      l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
12165                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
12166                      l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
12167                                                     p_kdtl_tbl (l_ctr).hdr_edt;
12168                      l_inst_dtls_tbl (l_ptr).new_service_line_id :=
12169                                             p_kdtl_tbl (l_ctr).service_line_id;
12170                      l_inst_dtls_tbl (l_ptr).new_service_start_date :=
12171                                                 p_kdtl_tbl (l_ctr).service_sdt;
12172                      l_inst_dtls_tbl (l_ptr).new_service_end_date :=
12173                                                 p_kdtl_tbl (l_ctr).service_edt;
12174                      l_inst_dtls_tbl (l_ptr).new_subline_id :=
12175                                              p_kdtl_tbl (l_ctr).object_line_id;
12176                      l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
12177                                                    p_kdtl_tbl (l_ctr).prod_sdt;
12178                      l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
12179                                                    p_kdtl_tbl (l_ctr).prod_edt;
12180                      l_inst_dtls_tbl (l_ptr).new_customer :=
12181                                              p_kdtl_tbl (l_ctr).old_account_id;
12182                      l_inst_dtls_tbl (l_ptr).new_k_status :=
12183                                                     p_kdtl_tbl (l_ctr).hdr_sts;
12184                      l_inst_dtls_tbl (l_ptr).instance_amt_old :=
12185                                              p_kdtl_tbl (l_ctr).service_amount;
12186                      l_inst_dtls_tbl (l_ptr).instance_qty_old :=
12187                                                      p_kdtl_tbl (l_ctr).cp_qty;
12188                      l_inst_dtls_tbl (l_ptr).old_contract_id :=
12189                                                      p_kdtl_tbl (l_ctr).hdr_id;
12190                      l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
12191                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
12192                      l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
12193                                                     p_kdtl_tbl (l_ctr).hdr_edt;
12194                      l_inst_dtls_tbl (l_ptr).old_service_line_id :=
12195                                             p_kdtl_tbl (l_ctr).service_line_id;
12196                      l_inst_dtls_tbl (l_ptr).old_service_start_date :=
12197                                                 p_kdtl_tbl (l_ctr).service_sdt;
12198                      l_inst_dtls_tbl (l_ptr).old_service_end_date :=
12199                                                 p_kdtl_tbl (l_ctr).service_edt;
12200                      l_inst_dtls_tbl (l_ptr).old_subline_id :=
12201                                              p_kdtl_tbl (l_ctr).object_line_id;
12202                      l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
12203                                                    p_kdtl_tbl (l_ctr).prod_sdt;
12204                      l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
12205                                                    p_kdtl_tbl (l_ctr).prod_edt;
12206                      l_inst_dtls_tbl (l_ptr).old_customer :=
12207                                              p_kdtl_tbl (l_ctr).old_account_id;
12208                      l_inst_dtls_tbl (l_ptr).old_k_status :=
12209                                                     p_kdtl_tbl (l_ctr).hdr_sts;
12210                      l_ptr := l_ptr + 1;
12211                      launch_workflow
12212                         (   'INSTALL BASE ACTIVITY : TRANSFER TERMINATE  SUBLINE '
12213                          || fnd_global.local_chr (10)
12214                          || 'Contract Number       :                     '
12215                          || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
12216                          || fnd_global.local_chr (10)
12217                          || 'Service Terminated    :                     '
12218                          || l_service_name
12219                         );
12220 
12221                      /*---------------------------------------------------------
12222                       Check if the Customer product transferred
12223                       is a part of System Transfer.
12224                       If SYstem id is Not null then SYsytem transfer
12225                       else Customer product Transfer.
12226                      -----------------------------------------------------------*/
12227                      IF fnd_log.level_statement >=
12228                                                fnd_log.g_current_runtime_level
12229                      THEN
12230                         fnd_log.STRING (fnd_log.level_statement,
12231                                            g_module_current
12232                                         || '.CREATE_K_SYSTEM_TRF.system_trf',
12233                                            'System Id = '
12234                                         || p_kdtl_tbl (l_ctr).system_id
12235                                         || ',lse_id = '
12236                                         || p_kdtl_tbl (l_ctr).lse_id
12237                                         || ',Merge Profile = '
12238                                         || fnd_profile.VALUE
12239                                                            ('OKS_MERGE_SYSTRF')
12240                                        );
12241                      END IF;
12242 
12243                      --If Contract is expired as of the transfer date, do not create a new contract.
12244                      IF l_create_contract = 'Y'
12245                      THEN
12246                         /*Sys trf*/
12247                         IF    p_kdtl_tbl (l_ctr).system_id IS NULL
12248                            OR p_kdtl_tbl (l_ctr).lse_id = 18
12249                            OR fnd_profile.VALUE ('OKS_MERGE_SYSTRF') = 'N'
12250                         THEN
12251                            l_contract_exist := 'F';
12252                            l_contract_merge := 'F';
12253                         /*Sys trf*/
12254                         ELSE
12255                            --Check if there exists a Contract for the System
12256                            l_contract_exist := 'F';
12257                            l_contract_merge := 'F';
12258 
12259                            FOR l_contracts_rec IN
12260                               l_contracts_csr
12261                                             (p_kdtl_tbl (l_ctr).system_id,
12262                                              p_kdtl_tbl (l_ctr).transaction_date,
12263                                              p_kdtl_tbl (l_ctr).old_account_id
12264                                             )
12265                            /*5*/
12266                            LOOP
12267                               IF fnd_log.level_statement >=
12268                                               fnd_log.g_current_runtime_level
12269                               THEN
12270                                  fnd_log.STRING
12271                                           (fnd_log.level_statement,
12272                                               g_module_current
12273                                            || '.CREATE_K_SYSTEM_TRF.system_trf',
12274                                            'In Contracts_rec Loop'
12275                                           );
12276                               END IF;
12277 
12278                               IF fnd_log.level_statement >=
12279                                                fnd_log.g_current_runtime_level
12280                               THEN
12281                                  fnd_log.STRING
12282                                           (fnd_log.level_statement,
12283                                               g_module_current
12284                                            || '.CREATE_K_SYSTEM_TRF.system_trf',
12285                                               'Source chr_id = '
12286                                            || p_kdtl_tbl (l_ctr).hdr_id
12287                                           );
12288                               END IF;
12289 
12290                               IF fnd_log.level_statement >=
12291                                                fnd_log.g_current_runtime_level
12292                               THEN
12293                                  fnd_log.STRING
12294                                           (fnd_log.level_statement,
12295                                               g_module_current
12296                                            || '.CREATE_K_SYSTEM_TRF.system_trf',
12297                                               'Target chr Id = '
12298                                            || l_contracts_rec.new_contract_id
12299                                           );
12300                               END IF;
12301 
12302                               l_contract_exist := 'T';
12303 
12304                               IF l_contract_merge = 'T'
12305                               THEN
12306                                  EXIT;
12307                               END IF;
12308 
12309                               -- Check Header merging rules
12310                               header_merge_yn
12311                                  (p_source_chr_id      => p_kdtl_tbl (l_ctr).hdr_id,
12312                                   p_target_chr_id      => l_contracts_rec.new_contract_id,
12313                                   p_sts_code           => p_kdtl_tbl (l_ctr).hdr_sts,
12314                                   x_eligible_yn        => l_header_merge,
12315                                   x_msg_count          => x_msg_count,
12316                                   x_msg_data           => x_msg_data,
12317                                   x_return_status      => l_return_status
12318                                  );
12319 
12320                               IF (fnd_log.level_event >=
12321                                                fnd_log.g_current_runtime_level
12322                                  )
12323                               THEN
12324                                  fnd_log.STRING
12325                                         (fnd_log.level_event,
12326                                             g_module_current
12327                                          || '.CREATE_K_SYSTEM_TRF',
12328                                             'header_merge_yn(Return status ='
12329                                          || l_return_status
12330                                          || ',Merging Rule = '
12331                                          || l_header_merge
12332                                          || ')'
12333                                         );
12334                               END IF;
12335 
12336                               l_merge_chr_id :=
12337                                                l_contracts_rec.new_contract_id;
12338                               l_line_found := 'F';
12339 
12340                               /*6*/
12341                               IF l_header_merge = 'Y'
12342                               THEN
12343                                  -- Check line_merge rules
12344                                  FOR l_topline_rec IN
12345                                     l_toplines_csr
12346                                        (l_merge_chr_id,
12347                                         p_kdtl_tbl (l_ctr).service_inventory_id
12348                                        )
12349                                  LOOP
12350                                     l_line_found := 'T';
12351 
12352                                     IF fnd_log.level_statement >=
12353                                               fnd_log.g_current_runtime_level
12354                                     THEN
12355                                        fnd_log.STRING
12356                                           (fnd_log.level_statement,
12357                                               g_module_current
12358                                            || '.CREATE_K_SYSTEM_TRF.system_trf',
12359                                               'Source line_id = '
12360                                            || p_kdtl_tbl (l_ctr).service_line_id
12361                                           );
12362                                     END IF;
12363 
12364                                     IF fnd_log.level_statement >=
12365                                                fnd_log.g_current_runtime_level
12366                                     THEN
12367                                        fnd_log.STRING
12368                                           (fnd_log.level_statement,
12369                                               g_module_current
12370                                            || '.CREATE_K_SYSTEM_TRF.system_trf',
12371                                               'Target line_id = '
12372                                            || l_topline_rec.cle_id
12373                                           );
12374                                     END IF;
12375 
12376                                     line_merge_yn
12377                                        (p_source_line_id      => p_kdtl_tbl
12378                                                                         (l_ctr).service_line_id,
12379                                         p_target_line_id      => l_topline_rec.cle_id,
12380                                         p_source_flag         => 'N',
12381                                         x_eligible_yn         => l_line_merge,
12382                                         x_msg_count           => x_msg_count,
12383                                         x_msg_data            => x_msg_data,
12384                                         x_return_status       => l_return_status
12385                                        );
12386 
12387                                     IF (fnd_log.level_event >=
12388                                                fnd_log.g_current_runtime_level
12389                                        )
12390                                     THEN
12391                                        fnd_log.STRING
12392                                           (fnd_log.level_event,
12393                                               g_module_current
12394                                            || '.CREATE_K_SYSTEM_TRF',
12395                                               'line_merge_yn(Return status ='
12396                                            || l_return_status
12397                                            || ',Merging Rule = '
12398                                            || l_line_merge
12399                                            || ')'
12400                                           );
12401                                     END IF;
12402 
12403                                     l_merge_line_id := l_topline_rec.cle_id;
12404 
12405                                     /*7*/
12406                                     IF l_line_merge = 'Y'
12407                                     THEN
12408                                        --Create Contract Subline
12409                                        create_contract_subline
12410                                           (p_kdtl_rec             => p_kdtl_tbl
12411                                                                         (l_ctr),
12412                                            p_hdr_id               => l_merge_chr_id,
12413                                            p_line_id              => l_merge_line_id,
12414                                            x_subline_id           => l_subline_id,
12415                                            x_update_top_line      => l_update_line,
12416                                            x_return_status        => l_return_status,
12417                                            x_msg_data             => x_msg_data,
12418                                            x_msg_count            => x_msg_count
12419                                           );
12420 
12421                                        IF (fnd_log.level_event >=
12422                                                fnd_log.g_current_runtime_level
12423                                           )
12424                                        THEN
12425                                           fnd_log.STRING
12426                                              (fnd_log.level_event,
12427                                                  g_module_current
12428                                               || '.CREATE_K_SYSTEM_TRF',
12429                                                  'Create_contract_subline(Return status ='
12430                                               || l_return_status
12431                                               || ')'
12432                                              );
12433                                        END IF;
12434 
12435                                        IF NOT l_return_status =
12436                                                      okc_api.g_ret_sts_success
12437                                        THEN
12438                                           RAISE g_exception_halt_validation;
12439                                        END IF;
12440 
12441                                        l_opr_instance_id :=
12442                                           get_operation_instance
12443                                                               (l_merge_chr_id,
12444                                                                'TRF'
12445                                                               );
12446                                        create_transaction_source
12447                                           (p_create_opr_inst       => 'N',
12448                                            p_source_code           => 'TRANSFER',
12449                                            p_target_chr_id         => l_merge_chr_id,
12450                                            p_source_line_id        => p_kdtl_tbl
12451                                                                          (l_ctr
12452                                                                          ).object_line_id,
12453                                            p_source_chr_id         => p_kdtl_tbl
12454                                                                          (l_ctr
12455                                                                          ).hdr_id,
12456                                            p_target_line_id        => l_subline_id,
12457                                            x_oper_instance_id      => l_opr_instance_id,
12458                                            x_return_status         => l_return_status,
12459                                            x_msg_count             => x_msg_count,
12460                                            x_msg_data              => x_msg_data
12461                                           );
12462 
12463                                        IF (fnd_log.level_event >=
12464                                                fnd_log.g_current_runtime_level
12465                                           )
12466                                        THEN
12467                                           fnd_log.STRING
12468                                              (fnd_log.level_event,
12469                                                  g_module_current
12470                                               || '.CREATE_K_SYSTEM_TRF',
12471                                                  'Create_transaction_source(Return status ='
12472                                               || l_return_status
12473                                               || ')'
12474                                              );
12475                                        END IF;
12476 
12477                                        IF NOT l_return_status = 'S'
12478                                        THEN
12479                                           RAISE g_exception_halt_validation;
12480                                        END IF;
12481 
12482                                        l_renewal_opr_instance_id :=
12483                                           get_operation_instance
12484                                                               (l_merge_chr_id,
12485                                                                'REN'
12486                                                               );
12487 
12488                                        IF l_renewal_opr_instance_id IS NULL
12489                                        THEN
12490                                           l_create_oper_instance := 'Y';
12491                                        ELSE
12492                                           l_create_oper_instance := 'N';
12493                                        END IF;
12494 
12495                                        create_source_links
12496                                           (p_create_opr_inst       => l_create_oper_instance,
12497                                            p_source_code           => 'TRANSFER',
12498                                            p_target_chr_id         => l_merge_chr_id,
12499                                            p_line_id               => p_kdtl_tbl
12500                                                                          (l_ctr
12501                                                                          ).object_line_id,
12502                                            p_target_line_id        => l_subline_id,
12503                                            p_txn_date              => p_kdtl_tbl
12504                                                                          (l_ctr
12505                                                                          ).transfer_date,
12506                                            x_oper_instance_id      => l_renewal_opr_instance_id,
12507                                            x_return_status         => l_return_status,
12508                                            x_msg_count             => x_msg_count,
12509                                            x_msg_data              => x_msg_data
12510                                           );
12511 
12512                                        IF (fnd_log.level_event >=
12513                                                fnd_log.g_current_runtime_level
12514                                           )
12515                                        THEN
12516                                           fnd_log.STRING
12517                                              (fnd_log.level_event,
12518                                                  g_module_current
12519                                               || '.CREATE_K_SYSTEM_TRF',
12520                                                  'Create_source_links(Return status ='
12521                                               || l_return_status
12522                                               || ')'
12523                                              );
12524                                        END IF;
12525 
12526                                        IF NOT l_return_status = 'S'
12527                                        THEN
12528                                           RAISE g_exception_halt_validation;
12529                                        END IF;
12530 
12531                                        OPEN l_hdrdt_csr (l_merge_chr_id);
12532 
12533                                        FETCH l_hdrdt_csr
12534                                         INTO l_start_date, l_end_date;
12535 
12536                                        CLOSE l_hdrdt_csr;
12537 
12538                                        IF fnd_log.level_statement >=
12539                                                fnd_log.g_current_runtime_level
12540                                        THEN
12541                                           fnd_log.STRING
12542                                                    (fnd_log.level_statement,
12543                                                        g_module_current
12544                                                     || '.CREATE_K_SYSTEM_TRF',
12545                                                        'Header start date = '
12546                                                     || l_start_date
12547                                                     || ',Header End date = '
12548                                                     || l_end_date
12549                                                    );
12550                                        END IF;
12551 
12552                                        OPEN l_srvdt_csr (l_merge_line_id);
12553 
12554                                        FETCH l_srvdt_csr
12555                                         INTO l_srv_sdt, l_srv_edt;
12556 
12557                                        CLOSE l_srvdt_csr;
12558 
12559                                        IF fnd_log.level_statement >=
12560                                                fnd_log.g_current_runtime_level
12561                                        THEN
12562                                           fnd_log.STRING
12563                                                     (fnd_log.level_statement,
12564                                                         g_module_current
12565                                                      || '.CREATE_K_SYSTEM_TRF',
12566                                                         'Line start date = '
12567                                                      || l_srv_sdt
12568                                                      || ',Line End date = '
12569                                                      || l_srv_edt
12570                                                     );
12571                                        END IF;
12572 
12573                                        l_date_terminated := NULL;
12574                                        l_subline_price := NULL;
12575 
12576                                        OPEN l_subline_csr (l_subline_id);
12577 
12578                                        FETCH l_subline_csr
12579                                         INTO l_date_terminated,
12580                                              l_subline_price;
12581 
12582                                        CLOSE l_subline_csr;
12583 
12584                                        l_inst_dtls_tbl (l_ptr).new_contract_id :=
12585                                                                 l_merge_chr_id;
12586                                        l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
12587                                                                   l_start_date;
12588                                        l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
12589                                                                     l_end_date;
12590                                        l_inst_dtls_tbl (l_ptr).new_service_line_id :=
12591                                                                l_merge_line_id;
12592                                        l_inst_dtls_tbl (l_ptr).new_service_start_date :=
12593                                                                      l_srv_sdt;
12594                                        l_inst_dtls_tbl (l_ptr).new_service_end_date :=
12595                                                                      l_srv_edt;
12596                                        l_inst_dtls_tbl (l_ptr).new_subline_id :=
12597                                                                   l_subline_id;
12598                                        l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
12599                                                                TRUNC (l_trfdt);
12600                                        --p_transfer_rec.transfer_date;
12601                                        l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
12602                                                    p_kdtl_tbl (l_ctr).prod_edt;
12603                                        l_inst_dtls_tbl (l_ptr).instance_amt_new :=
12604                                                                l_subline_price;
12605                                        ---Update Billing Schedule
12606                                        create_billing_schedule
12607                                           (p_line_id            => l_merge_line_id,
12608                                            p_covlvl_id          => l_subline_id,
12609                                            p_period_start       => p_kdtl_tbl(l_ctr).period_start,
12610                                            p_start_date         => l_srv_sdt,
12611                                            p_end_date           => l_srv_edt,
12612                                            p_update_line        => l_update_line,
12613                                            x_return_status      => l_return_status,
12614                                            x_msg_data           => x_msg_data,
12615                                            x_msg_count          => x_msg_count
12616                                           );
12617 
12618                                        IF (fnd_log.level_event >=
12619                                                fnd_log.g_current_runtime_level
12620                                           )
12621                                        THEN
12622                                           fnd_log.STRING
12623                                              (fnd_log.level_event,
12624                                                  g_module_current
12625                                               || '.CREATE_K_SYSTEM_TRF',
12626                                                  'Create_billing_schedule(Return status ='
12627                                               || l_return_status
12628                                               || ')'
12629                                              );
12630                                        END IF;
12631 
12632                                        IF NOT l_return_status =
12633                                                      okc_api.g_ret_sts_success
12634                                        THEN
12635                                           RAISE g_exception_halt_validation;
12636                                        END IF;
12637 
12638                                        UPDATE okc_k_lines_b
12639                                           SET price_negotiated =
12640                                                  (SELECT NVL
12641                                                             (SUM
12642                                                                 (NVL
12643                                                                     (price_negotiated,
12644                                                                      0
12645                                                                     )
12646                                                                 ),
12647                                                              0
12648                                                             )
12649                                                     FROM okc_k_lines_b
12650                                                    WHERE cle_id =
12651                                                                l_merge_line_id
12652                                                      AND dnz_chr_id =
12653                                                                 l_merge_chr_id)
12654                                         WHERE ID = l_merge_line_id;
12655 
12656                                        UPDATE oks_k_lines_b
12657                                           SET tax_amount =
12658                                                    NVL (tax_amount, 0)
12659                                                  + NVL ((SELECT tax_amount
12660                                                            FROM oks_k_lines_b
12661                                                           WHERE cle_id =
12662                                                                    l_subline_id),
12663                                                         0
12664                                                        )
12665                                         WHERE cle_id = l_merge_line_id;
12666 
12667                                        UPDATE okc_k_headers_b
12668                                           SET estimated_amount =
12669                                                  (SELECT NVL
12670                                                             (SUM
12671                                                                 (NVL
12672                                                                     (price_negotiated,
12673                                                                      0
12674                                                                     )
12675                                                                 ),
12676                                                              0
12677                                                             )
12678                                                     FROM okc_k_lines_b
12679                                                    WHERE dnz_chr_id =
12680                                                                 l_merge_chr_id
12681                                                      AND lse_id IN (1, 19))
12682                                         WHERE ID = l_merge_chr_id;
12683 
12684                                        UPDATE oks_k_headers_b
12685                                           SET tax_amount =
12686                                                    NVL (tax_amount, 0)
12687                                                  + NVL ((SELECT tax_amount
12688                                                            FROM oks_k_lines_b
12689                                                           WHERE cle_id =
12690                                                                    l_subline_id),
12691                                                         0
12692                                                        )
12693                                         WHERE chr_id = l_merge_chr_id;
12694 
12695                                        -- Check Qa
12696                                        -- Get the qa check list id
12697                                        OPEN l_qa_csr (l_merge_chr_id);
12698 
12699                                        FETCH l_qa_csr
12700                                         INTO l_qcl_id;
12701 
12702                                        CLOSE l_qa_csr;
12703 
12704                                        okc_qa_check_pub.execute_qa_check_list
12705                                           (p_api_version        => l_api_version,
12706                                            p_init_msg_list      => okc_api.g_false,
12707                                            x_return_status      => x_return_status,
12708                                            x_msg_count          => x_msg_count,
12709                                            x_msg_data           => x_msg_data,
12710                                            p_qcl_id             => l_qcl_id,
12711                                            p_chr_id             => l_merge_chr_id,
12712                                            x_msg_tbl            => l_msg_tbl
12713                                           );
12714 
12715                                        IF (fnd_log.level_event >=
12716                                                fnd_log.g_current_runtime_level
12717                                           )
12718                                        THEN
12719                                           fnd_log.STRING
12720                                              (fnd_log.level_event,
12721                                                  g_module_current
12722                                               || '.CREATE_K_SYSTEM_TRF',
12723                                                  'okc_qa_check_pub.execute_qa_check_list(Return status ='
12724                                               || x_return_status
12725                                               || ')'
12726                                              );
12727                                        END IF;
12728 
12729                                        IF x_return_status <>
12730                                                      okc_api.g_ret_sts_success
12731                                        THEN
12732                                           RAISE g_exception_halt_validation;
12733                                        END IF;
12734 
12735                                        l_max_severity := 'I';
12736 
12737                                        IF l_msg_tbl.COUNT > 0
12738                                        THEN
12739                                           i := l_msg_tbl.FIRST;
12740 
12741                                           LOOP
12742                                              IF l_msg_tbl (i).error_status =
12743                                                                           'E'
12744                                              THEN
12745                                                 --'QA returned with errors. Post renewal stopped';
12746                                                 EXIT;
12747                                              END IF;
12748 
12749                                              EXIT WHEN i = l_msg_tbl.LAST;
12750                                              i := l_msg_tbl.NEXT (i);
12751                                           END LOOP;
12752                                        END IF;                   --table count
12753 
12754                                        IF fnd_log.level_error >=
12755                                                fnd_log.g_current_runtime_level
12756                                        THEN
12757                                           fnd_log.STRING
12758                                                 (fnd_log.level_error,
12759                                                     g_module_current
12760                                                  || '.CREATE_K_SYSTEM_TRF',
12761                                                     'qa Check list error'
12762                                                  || l_msg_tbl (i).error_status
12763                                                  || ','
12764                                                  || l_msg_tbl (i).DATA
12765                                                 );
12766                                        END IF;
12767 
12768                                        IF l_msg_tbl (i).error_status = 'E'
12769                                        THEN
12770                                           -- Change the Contract status to QA_HOLD
12771                                           -- if the COntract is in either Signed or Active status
12772                                           OPEN l_hdr_sts_csr (l_merge_chr_id);
12773 
12774                                           FETCH l_hdr_sts_csr
12775                                            INTO l_hdr_sts;
12776 
12777                                           CLOSE l_hdr_sts_csr;
12778 
12779                                           get_sts_code (NULL,
12780                                                         l_hdr_sts,
12781                                                         l_ste_code,
12782                                                         l_sts_code
12783                                                        );
12784 
12785                                           IF l_ste_code IN
12786                                                          ('ACTIVE', 'SIGNED')
12787                                           THEN
12788                                              get_sts_code ('ENTERED',
12789                                                            NULL,
12790                                                            l_ste_code,
12791                                                            l_sts_code
12792                                                           );
12793 
12794                                              UPDATE okc_k_headers_b
12795                                                 SET sts_code = l_sts_code,
12796                                                     date_approved = NULL,
12797                                                     date_signed = NULL
12798                                               WHERE ID = l_merge_chr_id;
12799                                                   /*bugfix for 6882512*/
12800  	                                              /*update status in okc_contacts table*/
12801  	                                              OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_merge_chr_id,
12802  	                                                                             x_return_status=>l_return_status);
12803 
12804  	                                              IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
12805  	                                                 RAISE g_exception_halt_validation;
12806  	                                              END IF;
12807                                                /*bugfix for 6882512*/
12808                                              UPDATE okc_k_lines_b
12809                                                 SET sts_code = l_sts_code
12810                                               WHERE dnz_chr_id =
12811                                                                 l_merge_chr_id;
12812 
12813                                              l_wf_attr_details.contract_id :=
12814                                                                 l_merge_chr_id;
12815                                              l_wf_attr_details.irr_flag := 'Y';
12816                                              l_wf_attr_details.process_type :=
12817                                                                       'MANUAL';
12818                                              l_wf_attr_details.negotiation_status :=
12819                                                                        'DRAFT';
12820                                              oks_wf_k_process_pvt.launch_k_process_wf
12821                                                 (p_api_version        => 1,
12822                                                  p_init_msg_list      => 'T',
12823                                                  p_wf_attributes      => l_wf_attr_details,
12824                                                  x_return_status      => x_return_status,
12825                                                  x_msg_count          => x_msg_count,
12826                                                  x_msg_data           => x_msg_data
12827                                                 );
12828                                           END IF;
12829                                        END IF;
12830 
12831                                        launch_workflow
12832                                           (   'INSTALL BASE ACTIVITY : Transfer '
12833                                            || fnd_global.local_chr (10)
12834                                            || 'Contract Number       :       '
12835                                            || get_contract_number
12836                                                                (l_merge_chr_id)
12837                                            || fnd_global.local_chr (10)
12838                                            || 'Covered Product line merged into Contract     :       '
12839                                            || p_kdtl_tbl (l_ctr).old_cp_id
12840                                           );
12841                                        l_contract_merge := 'T';
12842                                        EXIT;
12843                                     /*End If7*/
12844                                     END IF;
12845                                  END LOOP;
12846 
12847                                  --If line merge fails Or l_line_found = 'F'
12848 
12849                                  /*8*/
12850                                  IF l_line_merge = 'N' OR l_line_found = 'F'
12851                                  THEN
12852                                     -- Create Top line
12853                                     create_contract_line
12854                                          (p_kdtl_rec           => p_kdtl_tbl
12855                                                                         (l_ctr),
12856                                           p_hdr_id             => l_merge_chr_id,
12857                                           x_return_status      => l_return_status,
12858                                           x_msg_data           => x_msg_data,
12859                                           x_line_id            => l_line_id,
12860                                           x_msg_count          => x_msg_count
12861                                          );
12862 
12863                                     IF (fnd_log.level_event >=
12864                                                fnd_log.g_current_runtime_level
12865                                        )
12866                                     THEN
12867                                        fnd_log.STRING
12868                                           (fnd_log.level_event,
12869                                               g_module_current
12870                                            || '.CREATE_K_SYSTEM_TRF',
12871                                               'Create_Contract_line(Return status = '
12872                                            || l_return_status
12873                                           );
12874                                     END IF;
12875 
12876                                     IF NOT l_return_status =
12877                                                      okc_api.g_ret_sts_success
12878                                     THEN
12879                                        RAISE g_exception_halt_validation;
12880                                     END IF;
12881 
12882                                     IF     p_kdtl_tbl (l_ctr).coverage_id IS NOT NULL
12883                                        AND p_kdtl_tbl (l_ctr).standard_cov_yn =
12884                                                                            'N'
12885                                     THEN
12886                                        oks_coverages_pub.create_adjusted_coverage
12887                                           (p_api_version                  => l_api_version,
12888                                            p_init_msg_list                => l_init_msg_list,
12889                                            x_return_status                => l_return_status,
12890                                            x_msg_count                    => x_msg_count,
12891                                            x_msg_data                     => x_msg_data,
12892                                            p_source_contract_line_id      => p_kdtl_tbl
12893                                                                                 (l_ctr
12894                                                                                 ).service_line_id,
12895                                            p_target_contract_line_id      => l_line_id,
12896                                            x_actual_coverage_id           => l_coverage_id
12897                                           );
12898 
12899                                        IF (fnd_log.level_event >=
12900                                                fnd_log.g_current_runtime_level
12901                                           )
12902                                        THEN
12903                                           fnd_log.STRING
12904                                              (fnd_log.level_event,
12905                                                  g_module_current
12906                                               || '.CREATE_K_SYSTEM_TRF',
12907                                                  'Oks_coverages_pub.create_adjusted_coverage(Return status = '
12908                                               || l_return_status
12909                                               || ')'
12910                                              );
12911                                        END IF;
12912 
12913                                        IF NOT l_return_status =
12914                                                      okc_api.g_ret_sts_success
12915                                        THEN
12916                                           RAISE g_exception_halt_validation;
12917                                        END IF;
12918 
12919                                        UPDATE oks_k_lines_b
12920                                           SET coverage_id = l_coverage_id,
12921                                               standard_cov_yn = 'N'
12922                                         WHERE cle_id = l_line_id;
12923                                     END IF;
12924 
12925 
12926                                    oks_coverages_pvt.create_k_coverage_ext
12927                                        (p_api_version        => 1,
12928                                         p_init_msg_list      => 'T',
12929                                         p_src_line_id        => p_kdtl_tbl
12930                                                                         (l_ctr).service_line_id,
12931                                         p_tgt_line_id        => l_line_id,
12932                                         x_return_status      => l_return_status,
12933                                         x_msg_count          => x_msg_count,
12934                                         x_msg_data           => x_msg_data
12935                                        );
12936 
12937                                     IF (fnd_log.level_event >=
12938                                                fnd_log.g_current_runtime_level
12939                                        )
12940                                     THEN
12941                                        fnd_log.STRING
12942                                           (fnd_log.level_event,
12943                                               g_module_current
12944                                            || '..after_coverage_ext',
12945                                               'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
12946                                            || l_return_status
12947                                            || ')'
12948                                           );
12949                                     END IF;
12950 
12951                                     IF NOT l_return_status =
12952                                                      okc_api.g_ret_sts_success
12953                                     THEN
12954                                        okc_api.set_message
12955                                              (g_app_name,
12956                                               g_required_value,
12957                                               g_col_name_token,
12958                                               'Coverage Extn creation error '
12959                                              );
12960                                        RAISE g_exception_halt_validation;
12961                                     END IF;
12962 
12963                                     create_contract_subline
12964                                           (p_kdtl_rec             => p_kdtl_tbl
12965                                                                         (l_ctr),
12966                                            p_hdr_id               => l_merge_chr_id,
12967                                            x_subline_id           => l_subline_id,
12968                                            x_update_top_line      => l_update_line,
12969                                            p_line_id              => l_line_id,
12970                                            x_return_status        => l_return_status,
12971                                            x_msg_data             => x_msg_data,
12972                                            x_msg_count            => x_msg_count
12973                                           );
12974 
12975                                     IF (fnd_log.level_event >=
12976                                                fnd_log.g_current_runtime_level
12977                                        )
12978                                     THEN
12979                                        fnd_log.STRING
12980                                           (fnd_log.level_event,
12981                                               g_module_current
12982                                            || '.CREATE_K_SYSTEM_TRF',
12983                                               'Create_contract_subline(Return status = '
12984                                            || l_return_status
12985                                            || ')'
12986                                           );
12987                                     END IF;
12988 
12989                                     IF NOT l_return_status =
12990                                                      okc_api.g_ret_sts_success
12991                                     THEN
12992                                        RAISE g_exception_halt_validation;
12993                                     END IF;
12994 
12995                                     l_opr_instance_id :=
12996                                        get_operation_instance (l_merge_chr_id,
12997                                                                'TRF'
12998                                                               );
12999                                     create_transaction_source
13000                                        (p_create_opr_inst       => 'N',
13001                                         p_source_code           => 'TRANSFER',
13002                                         p_target_chr_id         => l_merge_chr_id,
13003                                         p_source_line_id        => p_kdtl_tbl
13004                                                                         (l_ctr).object_line_id,
13005                                         p_source_chr_id         => p_kdtl_tbl
13006                                                                         (l_ctr).hdr_id,
13007                                         p_target_line_id        => l_subline_id,
13008                                         x_oper_instance_id      => l_opr_instance_id,
13009                                         x_return_status         => l_return_status,
13010                                         x_msg_count             => x_msg_count,
13011                                         x_msg_data              => x_msg_data
13012                                        );
13013 
13014                                     IF (fnd_log.level_event >=
13015                                                fnd_log.g_current_runtime_level
13016                                        )
13017                                     THEN
13018                                        fnd_log.STRING
13019                                           (fnd_log.level_event,
13020                                               g_module_current
13021                                            || '.CREATE_K_SYSTEM_TRF',
13022                                               'Create_transaction_source(Return status ='
13023                                            || l_return_status
13024                                            || ')'
13025                                           );
13026                                     END IF;
13027 
13028                                     IF NOT l_return_status = 'S'
13029                                     THEN
13030                                        RAISE g_exception_halt_validation;
13031                                     END IF;
13032 
13033                                     l_renewal_opr_instance_id :=
13034                                        get_operation_instance (l_merge_chr_id,
13035                                                                'REN'
13036                                                               );
13037 
13038                                     IF l_renewal_opr_instance_id IS NULL
13039                                     THEN
13040                                        l_create_oper_instance := 'Y';
13041                                     ELSE
13042                                        l_create_oper_instance := 'N';
13043                                     END IF;
13044 
13045                                     create_source_links
13046                                        (p_create_opr_inst       => l_create_oper_instance,
13047                                         p_source_code           => 'TRANSFER',
13048                                         p_target_chr_id         => l_merge_chr_id,
13049                                         p_line_id               => p_kdtl_tbl
13050                                                                         (l_ctr).object_line_id,
13051                                         p_target_line_id        => l_subline_id,
13052                                         p_txn_date              => p_kdtl_tbl
13053                                                                         (l_ctr).transfer_date,
13054                                         x_oper_instance_id      => l_renewal_opr_instance_id,
13055                                         x_return_status         => l_return_status,
13056                                         x_msg_count             => x_msg_count,
13057                                         x_msg_data              => x_msg_data
13058                                        );
13059 
13060                                     IF (fnd_log.level_event >=
13061                                                fnd_log.g_current_runtime_level
13062                                        )
13063                                     THEN
13064                                        fnd_log.STRING
13065                                           (fnd_log.level_event,
13066                                               g_module_current
13067                                            || '.CREATE_K_SYSTEM_TRF',
13068                                               'Create_source_links(Return status ='
13069                                            || l_return_status
13070                                            || ')'
13071                                           );
13072                                     END IF;
13073 
13074                                     IF NOT l_return_status = 'S'
13075                                     THEN
13076                                        RAISE g_exception_halt_validation;
13077                                     END IF;
13078 
13079                                     OPEN l_hdrdt_csr (l_merge_chr_id);
13080 
13081                                     FETCH l_hdrdt_csr
13082                                      INTO l_start_date, l_end_date;
13083 
13084                                     CLOSE l_hdrdt_csr;
13085 
13086                                     IF fnd_log.level_statement >=
13087                                                fnd_log.g_current_runtime_level
13088                                     THEN
13089                                        fnd_log.STRING
13090                                                    (fnd_log.level_statement,
13091                                                        g_module_current
13092                                                     || '.CREATE_K_SYSTEM_TRF',
13093                                                        'Header start date = '
13094                                                     || l_start_date
13095                                                     || ',End date ='
13096                                                     || l_end_date
13097                                                    );
13098                                     END IF;
13099 
13100                                     OPEN l_srvdt_csr (l_line_id);
13101 
13102                                     FETCH l_srvdt_csr
13103                                      INTO l_srv_sdt, l_srv_edt;
13104 
13105                                     CLOSE l_srvdt_csr;
13106 
13107                                     IF fnd_log.level_statement >=
13108                                                fnd_log.g_current_runtime_level
13109                                     THEN
13110                                        fnd_log.STRING
13111                                                     (fnd_log.level_statement,
13112                                                         g_module_current
13113                                                      || '.CREATE_K_SYSTEM_TRF',
13114                                                         'Line start date = '
13115                                                      || l_srv_sdt
13116                                                      || ',End date ='
13117                                                      || l_srv_edt
13118                                                     );
13119                                     END IF;
13120 
13121                                     l_date_terminated := NULL;
13122                                     l_subline_price := NULL;
13123 
13124                                     OPEN l_subline_csr (l_subline_id);
13125 
13126                                     FETCH l_subline_csr
13127                                      INTO l_date_terminated, l_subline_price;
13128 
13129                                     CLOSE l_subline_csr;
13130 
13131                                     l_inst_dtls_tbl (l_ptr).new_contract_id :=
13132                                                                 l_merge_chr_id;
13133                                     l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
13134                                                                   l_start_date;
13135                                     l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
13136                                                                     l_end_date;
13137                                     l_inst_dtls_tbl (l_ptr).new_service_line_id :=
13138                                                                      l_line_id;
13139                                     l_inst_dtls_tbl (l_ptr).new_service_start_date :=
13140                                                                      l_srv_sdt;
13141                                     l_inst_dtls_tbl (l_ptr).new_service_end_date :=
13142                                                                      l_srv_edt;
13143                                     --END IF;
13144                                     l_inst_dtls_tbl (l_ptr).new_subline_id :=
13145                                                                   l_subline_id;
13146                                     l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
13147                                                                TRUNC (l_trfdt);
13148                                     --p_transfer_rec.transfer_date;
13149                                     l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
13150                                                    p_kdtl_tbl (l_ctr).prod_edt;
13151                                     l_inst_dtls_tbl (l_ptr).instance_amt_new :=
13152                                                                l_subline_price;
13153                                     --- Create Billing Schedule
13154                                     create_billing_schedule
13155                                           (p_line_id            => l_line_id,
13156                                            p_covlvl_id          => l_subline_id,
13157                                            p_period_start       => p_kdtl_tbl(l_ctr).period_start,
13158                                            p_start_date         => l_srv_sdt,
13159                                            p_end_date           => l_srv_edt,
13160                                            p_update_line        => l_update_line,
13161                                            x_return_status      => l_return_status,
13162                                            x_msg_data           => x_msg_data,
13163                                            x_msg_count          => x_msg_count
13164                                           );
13165 
13166                                     IF (fnd_log.level_event >=
13167                                                fnd_log.g_current_runtime_level
13168                                        )
13169                                     THEN
13170                                        fnd_log.STRING
13171                                           (fnd_log.level_event,
13172                                               g_module_current
13173                                            || '.CREATE_K_SYSTEM_TRF',
13174                                               'Create_billing_schedule(Return status = '
13175                                            || l_return_status
13176                                            || ')'
13177                                           );
13178                                     END IF;
13179 
13180                                     IF NOT l_return_status =
13181                                                      okc_api.g_ret_sts_success
13182                                     THEN
13183                                        RAISE g_exception_halt_validation;
13184                                     END IF;
13185 
13186                                     UPDATE okc_k_lines_b
13187                                        SET price_negotiated =
13188                                               (SELECT NVL
13189                                                          (SUM
13190                                                              (NVL
13191                                                                  (price_negotiated,
13192                                                                   0
13193                                                                  )
13194                                                              ),
13195                                                           0
13196                                                          )
13197                                                  FROM okc_k_lines_b
13198                                                 WHERE cle_id = l_line_id
13199                                                   AND dnz_chr_id =
13200                                                                 l_merge_chr_id)
13201                                      WHERE ID = l_line_id;
13202 
13203                                     UPDATE oks_k_lines_b
13204                                        SET tax_amount =
13205                                                 NVL (tax_amount, 0)
13206                                               + NVL ((SELECT tax_amount
13207                                                         FROM oks_k_lines_b
13208                                                        WHERE cle_id =
13209                                                                   l_subline_id),
13210                                                      0
13211                                                     )
13212                                      WHERE cle_id = l_line_id;
13213 
13214                                     UPDATE okc_k_headers_b
13215                                        SET estimated_amount =
13216                                               (SELECT NVL
13217                                                          (SUM
13218                                                              (NVL
13219                                                                  (price_negotiated,
13220                                                                   0
13221                                                                  )
13222                                                              ),
13223                                                           0
13224                                                          )
13225                                                  FROM okc_k_lines_b
13226                                                 WHERE dnz_chr_id =
13227                                                                 l_merge_chr_id
13228                                                   AND lse_id IN (1, 19))
13229                                      WHERE ID = l_merge_chr_id;
13230 
13231                                     UPDATE oks_k_headers_b
13232                                        SET tax_amount =
13233                                                 NVL (tax_amount, 0)
13234                                               + NVL ((SELECT tax_amount
13235                                                         FROM oks_k_lines_b
13236                                                        WHERE cle_id =
13237                                                                   l_subline_id),
13238                                                      0
13239                                                     )
13240                                      WHERE chr_id = l_merge_chr_id;
13241 
13242                                     --  Check QA
13243                                     OPEN l_qa_csr (l_merge_chr_id);
13244 
13245                                     FETCH l_qa_csr
13246                                      INTO l_qcl_id;
13247 
13248                                     CLOSE l_qa_csr;
13249 
13250                                     okc_qa_check_pub.execute_qa_check_list
13251                                           (p_api_version        => l_api_version,
13252                                            p_init_msg_list      => okc_api.g_false,
13253                                            x_return_status      => x_return_status,
13254                                            x_msg_count          => x_msg_count,
13255                                            x_msg_data           => x_msg_data,
13256                                            p_qcl_id             => l_qcl_id,
13257                                            p_chr_id             => l_merge_chr_id,
13258                                            x_msg_tbl            => l_msg_tbl
13259                                           );
13260 
13261                                     IF (fnd_log.level_event >=
13262                                                fnd_log.g_current_runtime_level
13263                                        )
13264                                     THEN
13265                                        fnd_log.STRING
13266                                           (fnd_log.level_event,
13267                                               g_module_current
13268                                            || '.CREATE_K_SYSTEM_TRF',
13269                                               'okc_qa_check_pub.execute_qa_check_list(Return status = '
13270                                            || x_return_status
13271                                            || ')'
13272                                           );
13273                                     END IF;
13274 
13275                                     IF x_return_status <>
13276                                                      okc_api.g_ret_sts_success
13277                                     THEN
13278                                        RAISE g_exception_halt_validation;
13279                                     END IF;
13280 
13281                                     l_max_severity := 'I';
13282 
13283                                     IF l_msg_tbl.COUNT > 0
13284                                     THEN
13285                                        i := l_msg_tbl.FIRST;
13286 
13287                                        LOOP
13288                                           IF l_msg_tbl (i).error_status = 'E'
13289                                           THEN
13290                                              --'QA returned with errors. ';
13291                                              EXIT;
13292                                           END IF;
13293 
13294                                           EXIT WHEN i = l_msg_tbl.LAST;
13295                                           i := l_msg_tbl.NEXT (i);
13296                                        END LOOP;
13297                                     END IF;                      --table count
13298 
13299                                     IF fnd_log.level_error >=
13300                                                fnd_log.g_current_runtime_level
13301                                     THEN
13302                                        fnd_log.STRING
13303                                                 (fnd_log.level_error,
13304                                                     g_module_current
13305                                                  || '.CREATE_K_SYSTEM_TRF',
13306                                                     'qa Check list error'
13307                                                  || l_msg_tbl (i).error_status
13308                                                  || ','
13309                                                  || l_msg_tbl (i).DATA
13310                                                 );
13311                                     END IF;
13312 
13313                                     IF l_msg_tbl (i).error_status = 'E'
13314                                     THEN
13315                                        -- Change the Contract status to Entered
13316                                        -- if the COntract is in either Signed or Active status
13317                                        OPEN l_hdr_sts_csr (l_merge_chr_id);
13318 
13319                                        FETCH l_hdr_sts_csr
13320                                         INTO l_hdr_sts;
13321 
13322                                        CLOSE l_hdr_sts_csr;
13323 
13324                                        get_sts_code (NULL,
13325                                                      l_hdr_sts,
13326                                                      l_ste_code,
13327                                                      l_sts_code
13328                                                     );
13329 
13330                                        IF l_ste_code IN ('ACTIVE', 'SIGNED')
13331                                        THEN
13332                                           get_sts_code ('ENTERED',
13333                                                         NULL,
13334                                                         l_ste_code,
13335                                                         l_sts_code
13336                                                        );
13337 
13338                                           UPDATE okc_k_headers_b
13339                                              SET sts_code = l_sts_code,
13340                                                  date_approved = NULL,
13341                                                  date_signed = NULL
13342                                            WHERE ID = l_merge_chr_id;
13343                               /*bugfix for 6882512*/
13344  	                                          /*update status in okc_contacts table*/
13345  	                                           OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_merge_chr_id,
13346  	                                                                              x_return_status=>l_return_status);
13347  	                                           IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
13348  	                                              RAISE g_exception_halt_validation;
13349  	                                           END IF;
13350                             /*bugfix for 6882512*/
13351                                           UPDATE okc_k_lines_b
13352                                              SET sts_code = l_sts_code
13353                                            WHERE dnz_chr_id = l_merge_chr_id;
13354 
13355                                           l_wf_attr_details.contract_id :=
13356                                                                 l_merge_chr_id;
13357                                           l_wf_attr_details.irr_flag := 'Y';
13358                                           l_wf_attr_details.process_type :=
13359                                                                       'MANUAL';
13360                                           l_wf_attr_details.negotiation_status :=
13361                                                                        'DRAFT';
13362                                           oks_wf_k_process_pvt.launch_k_process_wf
13363                                              (p_api_version        => 1,
13364                                               p_init_msg_list      => 'T',
13365                                               p_wf_attributes      => l_wf_attr_details,
13366                                               x_return_status      => x_return_status,
13367                                               x_msg_count          => x_msg_count,
13368                                               x_msg_data           => x_msg_data
13369                                              );
13370                                        END IF;
13371                                     END IF;
13372 
13373                                     launch_workflow
13374                                        (   'INSTALL BASE ACTIVITY : TRANSFER  '
13375                                         || fnd_global.local_chr (10)
13376                                         || 'Contract Number       :                     '
13377                                         || get_contract_number (l_merge_chr_id)
13378                                         || fnd_global.local_chr (10)
13379                                         || 'Service line merged in to COntract    :                     '
13380                                         || l_service_name
13381                                        );
13382                                     l_contract_merge := 'T';
13383                                  /*E7*/
13384                                  END IF;
13385                               /*E6*/
13386                               END IF;                  --If Header Merge fails
13387                            /*E5*/
13388                            END LOOP;
13389                         /*Sys trf*/
13390                         END IF;
13391 
13392                         ---If none of the existing SYstem COntracts Header merge satisfies  then
13393 
13394                         -- Create New Contract
13395                         /*8*/
13396                         IF l_contract_exist = 'F' OR l_contract_merge = 'F'
13397                         THEN
13398                            IF fnd_log.level_statement >=
13399                                               fnd_log.g_current_runtime_level
13400                            THEN
13401                               fnd_log.STRING
13402                                  (fnd_log.level_statement,
13403                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
13404                                   'Header merge failed, Create a new contract.'
13405                                  );
13406                            END IF;
13407 
13408                            -- Create New Contract.
13409                            create_contract_header
13410                                            (p_kdtl_rec           => p_kdtl_tbl
13411                                                                         (l_ctr),
13412                                             x_msg_data           => x_msg_data,
13413                                             x_chr_id             => l_chr_id,
13414                                             x_msg_count          => x_msg_count,
13415                                             x_return_status      => l_return_status
13416                                            );
13417 
13418                            IF (fnd_log.level_event >=
13419                                                fnd_log.g_current_runtime_level
13420                               )
13421                            THEN
13422                               fnd_log.STRING
13423                                  (fnd_log.level_event,
13424                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
13425                                      'Create_Contract_header(Return status = '
13426                                   || l_return_status
13427                                   || ')'
13428                                  );
13429                            END IF;
13430 
13431                            IF NOT l_return_status = okc_api.g_ret_sts_success
13432                            THEN
13433                               RAISE g_exception_halt_validation;
13434                            END IF;
13435 
13436                            ---If new Contract is created in 'Entered' status launch workflow
13437                            l_launch_wf_yn := 'N';
13438                            OPEN l_Launch_WF_csr (l_chr_id);
13439                            FETCH l_Launch_WF_csr INTO l_launch_wf_yn;
13440                            CLOSE l_Launch_WF_csr ;
13441 
13442 
13443 
13444                            IF nvl(l_launch_wf_yn,'N') = 'Y'
13445                            THEN
13446                               l_wf_attr_details.contract_id := l_chr_id;
13447                               l_wf_attr_details.irr_flag := 'Y';
13448                               l_wf_attr_details.process_type := 'MANUAL';
13449                               l_wf_attr_details.negotiation_status := 'DRAFT';
13450                               oks_wf_k_process_pvt.launch_k_process_wf
13451                                        (p_api_version        => 1,
13452                                         p_init_msg_list      => 'T',
13453                                         p_wf_attributes      => l_wf_attr_details,
13454                                         x_return_status      => x_return_status,
13455                                         x_msg_count          => x_msg_count,
13456                                         x_msg_data           => x_msg_data
13457                                        );
13458                            END IF;
13459 
13460                            create_contract_line
13461                                           (p_kdtl_rec           => p_kdtl_tbl
13462                                                                         (l_ctr),
13463                                            p_hdr_id             => l_chr_id,
13464                                            x_return_status      => l_return_status,
13465                                            x_msg_data           => x_msg_data,
13466                                            x_line_id            => l_line_id,
13467                                            x_msg_count          => x_msg_count
13468                                           );
13469 
13470                            IF (fnd_log.level_event >=
13471                                                fnd_log.g_current_runtime_level
13472                               )
13473                            THEN
13474                               fnd_log.STRING
13475                                   (fnd_log.level_event,
13476                                    g_module_current || '.CREATE_K_SYSTEM_TRF',
13477                                       'Create_Contract_line(Return status = '
13478                                    || l_return_status
13479                                    || ')'
13480                                   );
13481                            END IF;
13482 
13483                            IF NOT l_return_status = okc_api.g_ret_sts_success
13484                            THEN
13485                               RAISE g_exception_halt_validation;
13486                            END IF;
13487 
13488                            IF     p_kdtl_tbl (l_ctr).coverage_id IS NOT NULL
13489                               AND p_kdtl_tbl (l_ctr).standard_cov_yn = 'N'
13490                            THEN
13491                               oks_coverages_pub.create_adjusted_coverage
13492                                  (p_api_version                  => l_api_version,
13493                                   p_init_msg_list                => l_init_msg_list,
13494                                   x_return_status                => l_return_status,
13495                                   x_msg_count                    => x_msg_count,
13496                                   x_msg_data                     => x_msg_data,
13497                                   p_source_contract_line_id      => p_kdtl_tbl
13498                                                                         (l_ctr).service_line_id,
13499                                   p_target_contract_line_id      => l_line_id,
13500                                   x_actual_coverage_id           => l_coverage_id
13501                                  );
13502 
13503                               IF (fnd_log.level_event >=
13504                                                fnd_log.g_current_runtime_level
13505                                  )
13506                               THEN
13507                                  fnd_log.STRING
13508                                     (fnd_log.level_event,
13509                                      g_module_current
13510                                      || '.CREATE_K_SYSTEM_TRF',
13511                                         'oks_coverages_pub.create_adjusted_coverage(Return status = '
13512                                      || l_return_status
13513                                      || ')'
13514                                     );
13515                               END IF;
13516 
13517                               IF NOT l_return_status =
13518                                                      okc_api.g_ret_sts_success
13519                               THEN
13520                                  RAISE g_exception_halt_validation;
13521                               END IF;
13522 
13523                               UPDATE oks_k_lines_b
13524                                  SET coverage_id = l_coverage_id,
13525                                      standard_cov_yn = 'N'
13526                                WHERE cle_id = l_line_id;
13527                            END IF;
13528 
13529                                    oks_coverages_pvt.create_k_coverage_ext
13530                                        (p_api_version        => 1,
13531                                         p_init_msg_list      => 'T',
13532                                         p_src_line_id        => p_kdtl_tbl
13533                                                                         (l_ctr).service_line_id,
13534                                         p_tgt_line_id        => l_line_id,
13535                                         x_return_status      => l_return_status,
13536                                         x_msg_count          => x_msg_count,
13537                                         x_msg_data           => x_msg_data
13538                                        );
13539 
13540                                     IF (fnd_log.level_event >=
13541                                                fnd_log.g_current_runtime_level
13542                                        )
13543                                     THEN
13544                                        fnd_log.STRING
13545                                           (fnd_log.level_event,
13546                                               g_module_current
13547                                            || '..after_coverage_ext',
13548                                               'OKS_COVERAGES_PVT.Create_K_coverage_ext(Return status = '
13549                                            || l_return_status
13550                                            || ')'
13551                                           );
13552                                     END IF;
13553 
13554                                     IF NOT l_return_status =
13555                                                      okc_api.g_ret_sts_success
13556                                     THEN
13557                                        okc_api.set_message
13558                                              (g_app_name,
13559                                               g_required_value,
13560                                               g_col_name_token,
13561                                               'Coverage Extn creation error '
13562                                              );
13563                                        RAISE g_exception_halt_validation;
13564                                     END IF;
13565 
13566                            create_contract_subline
13567                                           (p_kdtl_rec             => p_kdtl_tbl
13568                                                                         (l_ctr),
13569                                            p_hdr_id               => l_chr_id,
13570                                            x_subline_id           => l_subline_id,
13571                                            x_update_top_line      => l_update_line,
13572                                            p_line_id              => l_line_id,
13573                                            x_return_status        => l_return_status,
13574                                            x_msg_data             => x_msg_data,
13575                                            x_msg_count            => x_msg_count
13576                                           );
13577 
13578                            IF (fnd_log.level_event >=
13579                                                fnd_log.g_current_runtime_level
13580                               )
13581                            THEN
13582                               fnd_log.STRING
13583                                  (fnd_log.level_event,
13584                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
13585                                      'create_contract_subline(Return status = '
13586                                   || l_return_status
13587                                   || ')'
13588                                  );
13589                            END IF;
13590 
13591                            IF NOT l_return_status = okc_api.g_ret_sts_success
13592                            THEN
13593                               RAISE g_exception_halt_validation;
13594                            END IF;
13595 
13596                            create_transaction_source
13597                               (p_create_opr_inst       => 'Y',
13598                                p_source_code           => 'TRANSFER',
13599                                p_target_chr_id         => l_chr_id,
13600                                p_source_line_id        => p_kdtl_tbl (l_ctr).object_line_id,
13601                                p_source_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
13602                                p_target_line_id        => l_subline_id,
13603                                x_oper_instance_id      => l_opr_instance_id,
13604                                x_return_status         => l_return_status,
13605                                x_msg_count             => x_msg_count,
13606                                x_msg_data              => x_msg_data
13607                               );
13608 
13609                            IF (fnd_log.level_event >=
13610                                                fnd_log.g_current_runtime_level
13611                               )
13612                            THEN
13613                               fnd_log.STRING
13614                                  (fnd_log.level_event,
13615                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
13616                                      'Create_transaction_source(Return status ='
13617                                   || l_return_status
13618                                   || ')'
13619                                  );
13620                            END IF;
13621 
13622                            IF NOT l_return_status = 'S'
13623                            THEN
13624                               RAISE g_exception_halt_validation;
13625                            END IF;
13626 
13627                            create_source_links
13628                               (p_create_opr_inst       => 'Y',
13629                                p_source_code           => 'TRANSFER',
13630                                p_target_chr_id         => l_chr_id,
13631                                p_line_id               => p_kdtl_tbl (l_ctr).object_line_id,
13632                                p_target_line_id        => l_subline_id,
13633                                p_txn_date              => p_kdtl_tbl (l_ctr).transfer_date,
13634                                x_oper_instance_id      => l_renewal_opr_instance_id,
13635                                x_return_status         => l_return_status,
13636                                x_msg_count             => x_msg_count,
13637                                x_msg_data              => x_msg_data
13638                               );
13639 
13640                            IF (fnd_log.level_event >=
13641                                                fnd_log.g_current_runtime_level
13642                               )
13643                            THEN
13644                               fnd_log.STRING
13645                                  (fnd_log.level_event,
13646                                   g_module_current || '.CREATE_K_SYSTEM_TRF',
13647                                      'Create_transaction_source(Return status ='
13648                                   || l_return_status
13649                                   || ')'
13650                                  );
13651                            END IF;
13652 
13653                            IF NOT l_return_status = 'S'
13654                            THEN
13655                               RAISE g_exception_halt_validation;
13656                            END IF;
13657 
13658                            l_date_terminated := NULL;
13659                            l_subline_price := NULL;
13660 
13661                            OPEN l_subline_csr (l_subline_id);
13662 
13663                            FETCH l_subline_csr
13664                             INTO l_date_terminated, l_subline_price;
13665 
13666                            CLOSE l_subline_csr;
13667 
13668                            l_inst_dtls_tbl (l_ptr).new_contract_id := l_chr_id;
13669                            l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
13670                                                                TRUNC (l_trfdt);
13671                            --p_transfer_rec.transfer_date;
13672                            l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
13673                                                    p_kdtl_tbl (l_ctr).prod_edt;
13674                            l_inst_dtls_tbl (l_ptr).new_service_line_id :=
13675                                                                      l_line_id;
13676                            l_inst_dtls_tbl (l_ptr).new_service_start_date :=
13677                                                                TRUNC (l_trfdt);
13678                            --p_transfer_rec.transfer_date;
13679                            l_inst_dtls_tbl (l_ptr).new_service_end_date :=
13680                                                    p_kdtl_tbl (l_ctr).prod_edt;
13681                            -- END IF;
13682                            l_inst_dtls_tbl (l_ptr).new_subline_id :=
13683                                                                   l_subline_id;
13684                            l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
13685                                                                TRUNC (l_trfdt);
13686                            --p_transfer_rec.transfer_date;
13687                            l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
13688                                                    p_kdtl_tbl (l_ctr).prod_edt;
13689                            l_inst_dtls_tbl (l_ptr).instance_amt_new :=
13690                                                                l_subline_price;
13691 
13692                            -- Fixed for bug 3751050
13693                            UPDATE okc_k_lines_b
13694                               SET price_negotiated =
13695                                      (SELECT NVL (SUM (NVL (price_negotiated,
13696                                                             0
13697                                                            )
13698                                                       ),
13699                                                   0
13700                                                  )
13701                                         FROM okc_k_lines_b
13702                                        WHERE cle_id = l_line_id
13703                                          AND dnz_chr_id = l_chr_id)
13704                             WHERE ID = l_line_id;
13705 
13706                            UPDATE oks_k_lines_b
13707                               SET tax_amount =
13708                                        NVL (tax_amount, 0)
13709                                      + NVL ((SELECT tax_amount
13710                                                FROM oks_k_lines_b
13711                                               WHERE cle_id = l_subline_id), 0)
13712                             WHERE cle_id = l_line_id;
13713 
13714                            UPDATE okc_k_headers_b
13715                               SET estimated_amount =
13716                                      (SELECT NVL (SUM (NVL (price_negotiated,
13717                                                             0
13718                                                            )
13719                                                       ),
13720                                                   0
13721                                                  )
13722                                         FROM okc_k_lines_b
13723                                        WHERE dnz_chr_id = l_chr_id
13724                                          AND lse_id IN (1, 19))
13725                             WHERE ID = l_chr_id;
13726 
13727                            UPDATE oks_k_headers_b
13728                               SET tax_amount =
13729                                        NVL (tax_amount, 0)
13730                                      + NVL ((SELECT tax_amount
13731                                                FROM oks_k_lines_b
13732                                               WHERE cle_id = l_subline_id), 0)
13733                             WHERE chr_id = l_chr_id;
13734 
13735                            IF p_kdtl_tbl (l_ctr).lse_id <> 18
13736                            THEN
13737                               -- Create Billing Schedule
13738                               OPEN l_srvdt_csr (l_line_id);
13739 
13740                               FETCH l_srvdt_csr
13741                                INTO l_srv_sdt, l_srv_edt;
13742 
13743                               CLOSE l_srvdt_csr;
13744 
13745                               create_billing_schedule
13746                                           (p_line_id            => l_line_id,
13747                                            p_covlvl_id          => l_subline_id,
13748                                            p_period_start       => p_kdtl_tbl(l_ctr).period_start,
13749                                            p_start_date         => l_srv_sdt,
13750                                            p_end_date           => l_srv_edt,
13751                                            p_update_line        => l_update_line,
13752                                            x_msg_data           => x_msg_data,
13753                                            x_msg_count          => x_msg_count,
13754                                            x_return_status      => l_return_status
13755                                           );
13756 
13757                               IF (fnd_log.level_event >=
13758                                                fnd_log.g_current_runtime_level
13759                                  )
13760                               THEN
13761                                  fnd_log.STRING
13762                                     (fnd_log.level_event,
13763                                      g_module_current
13764                                      || '.CREATE_K_SYSTEM_TRF',
13765                                         'Create_billing_schedule(Return status = '
13766                                      || l_return_status
13767                                      || ')'
13768                                     );
13769                               END IF;
13770 
13771                               IF NOT l_return_status =
13772                                                      okc_api.g_ret_sts_success
13773                               THEN
13774                                  RAISE g_exception_halt_validation;
13775                               END IF;
13776 
13777                               /*UPDATE okc_k_lines_b
13778                               SET price_negotiated = ( SELECT NVL( SUM(NVL( price_negotiated, 0)),0 )
13779                                                        FROM okc_k_lines_b
13780                                                        WHERE cle_id = l_line_id
13781                                                        AND dnz_chr_id = l_chr_id)
13782                               WHERE id = l_line_id;
13783 
13784                               UPDATE okc_k_headers_b
13785                               SET estimated_amount = ( SELECT  NVL( SUM( NVL(price_negotiated,0) ), 0 )
13786                                                        FROM  okc_k_lines_b
13787                                                        WHERE  dnz_chr_id = l_chr_id
13788                                                        AND  lse_id in (1,19) )
13789                               WHERE id = l_chr_id;*/
13790 
13791                               -- Check Qa
13792                               OPEN l_qa_csr (l_chr_id);
13793 
13794                               FETCH l_qa_csr
13795                                INTO l_qcl_id;
13796 
13797                               CLOSE l_qa_csr;
13798 
13799                               okc_qa_check_pub.execute_qa_check_list
13800                                           (p_api_version        => l_api_version,
13801                                            p_init_msg_list      => okc_api.g_false,
13802                                            x_return_status      => x_return_status,
13803                                            x_msg_count          => x_msg_count,
13804                                            x_msg_data           => x_msg_data,
13805                                            p_qcl_id             => l_qcl_id,
13806                                            p_chr_id             => l_chr_id,
13807                                            x_msg_tbl            => l_msg_tbl
13808                                           );
13809 
13810                               IF (fnd_log.level_event >=
13811                                                fnd_log.g_current_runtime_level
13812                                  )
13813                               THEN
13814                                  fnd_log.STRING
13815                                     (fnd_log.level_event,
13816                                      g_module_current
13817                                      || '.CREATE_K_SYSTEM_TRF',
13818                                         'okc_qa_check_pub.execute_qa_check_list(Return status = '
13819                                      || x_return_status
13820                                      || ')'
13821                                     );
13822                               END IF;
13823 
13824                               IF x_return_status <> okc_api.g_ret_sts_success
13825                               THEN
13826                                  RAISE g_exception_halt_validation;
13827                               END IF;
13828 
13829                               l_max_severity := 'I';
13830 
13831                               IF l_msg_tbl.COUNT > 0
13832                               THEN
13833                                  i := l_msg_tbl.FIRST;
13834 
13835                                  LOOP
13836                                     IF l_msg_tbl (i).error_status = 'E'
13837                                     THEN
13838                                        --'QA returned with errors. ';
13839                                        EXIT;
13840                                     END IF;
13841 
13842                                     EXIT WHEN i = l_msg_tbl.LAST;
13843                                     i := l_msg_tbl.NEXT (i);
13844                                  END LOOP;
13845                               END IF;                            --table count
13846 
13847                               IF fnd_log.level_error >=
13848                                                fnd_log.g_current_runtime_level
13849                               THEN
13850                                  fnd_log.STRING (fnd_log.level_error,
13851                                                     g_module_current
13852                                                  || '.CREATE_K_SYSTEM_TRF',
13853                                                     'qa Check list error'
13854                                                  || l_msg_tbl (i).error_status
13855                                                  || ','
13856                                                  || l_msg_tbl (i).DATA
13857                                                 );
13858                               END IF;
13859 
13860                               IF l_msg_tbl (i).error_status = 'E'
13861                               THEN
13862                                  -- Change the Contract status to QA_HOLD
13863                                  -- if the COntract is in either Signed or Active status
13864                                  OPEN l_hdr_sts_csr (l_chr_id);
13865 
13866                                  FETCH l_hdr_sts_csr
13867                                   INTO l_hdr_sts;
13868 
13869                                  CLOSE l_hdr_sts_csr;
13870 
13871                                  get_sts_code (NULL,
13872                                                l_hdr_sts,
13873                                                l_ste_code,
13874                                                l_sts_code
13875                                               );
13876 
13877                                  IF l_ste_code IN ('ACTIVE', 'SIGNED')
13878                                  THEN
13879                                     get_sts_code ('ENTERED',
13880                                                   NULL,
13881                                                   l_ste_code,
13882                                                   l_sts_code
13883                                                  );
13884 
13885                                     UPDATE okc_k_headers_b
13886                                        SET sts_code = l_sts_code,
13887                                            date_approved = NULL,
13888                                            date_signed = NULL
13889                                      WHERE ID = l_chr_id;
13890                                      /* bugfix for 6882512*/
13891  	                                     /*update status in okc_contacts table*/
13892  	                                     OKC_CTC_PVT.update_contact_stecode(p_chr_id => l_chr_id,
13893  	                                                                        x_return_status=>l_return_status);
13894 
13895  	                                     IF l_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
13896  	                                        RAISE g_exception_halt_validation;
13897  	          /*bugfix for 6882512*/                          END IF;
13898 
13899                                     UPDATE okc_k_lines_b
13900                                        SET sts_code = l_sts_code
13901                                      WHERE dnz_chr_id = l_chr_id;
13902 
13903                                     l_wf_attr_details.contract_id := l_chr_id;
13904                                     l_wf_attr_details.irr_flag := 'Y';
13905                                     l_wf_attr_details.process_type := 'MANUAL';
13906                                     l_wf_attr_details.negotiation_status :=
13907                                                                        'DRAFT';
13908                                     oks_wf_k_process_pvt.launch_k_process_wf
13909                                         (p_api_version        => 1,
13910                                          p_init_msg_list      => 'T',
13911                                          p_wf_attributes      => l_wf_attr_details,
13912                                          x_return_status      => x_return_status,
13913                                          x_msg_count          => x_msg_count,
13914                                          x_msg_data           => x_msg_data
13915                                         );
13916                                  END IF;
13917                               END IF;
13918 
13919                               launch_workflow
13920                                  (   'INSTALL BASE ACTIVITY : TRANSFER  '
13921                                   || fnd_global.local_chr (10)
13922                                   || 'Contract Number       :                     '
13923                                   || get_contract_number (l_chr_id)
13924                                   || fnd_global.local_chr (10)
13925                                   || 'New Contract Created   :                     '
13926                                   || l_service_name
13927                                  );
13928                            END IF;
13929                         /*E8*/
13930                         END IF;
13931 
13932                         --Open l_hdr_sts_csr(l_chr_id);
13933                         --Fetch l_hdr_Sts_csr into l_hdr_sts;
13934                         --Close l_hdr_sts_csr;
13935                         --Removed trunc for transatcion date as the cursor to retrieve contracts
13936                         --to merge for system transfers fails to return K. The cursor looks at the time value compnent.
13937                         l_inst_dtls_tbl (l_ptr).transaction_date :=
13938                                               (p_kdtl_tbl (l_ctr).transaction_date);
13939                         l_inst_dtls_tbl (l_ptr).transaction_type := 'TRF';
13940                         l_inst_dtls_tbl (l_ptr).system_id :=
13941                                                   p_kdtl_tbl (l_ctr).system_id;
13942                         l_inst_dtls_tbl (l_ptr).transfer_option :=
13943                                                                   l_trf_option;
13944                         l_inst_dtls_tbl (l_ptr).instance_id_new :=
13945                                                   p_kdtl_tbl (l_ctr).old_cp_id;
13946                         --l_inst_dtls_tbl(l_ptr).INSTANCE_AMT_NEW          := p_kdtl_tbl( l_ctr ).service_amount;
13947                         l_inst_dtls_tbl (l_ptr).instance_qty_new :=
13948                                                      p_kdtl_tbl (l_ctr).cp_qty;
13949                         l_inst_dtls_tbl (l_ptr).new_customer :=
13950                                              p_kdtl_tbl (l_ctr).new_account_id;
13951                         --l_inst_dtls_tbl(l_ptr).NEW_K_STATUS              := l_hdr_sts;
13952                         l_inst_dtls_tbl (l_ptr).instance_amt_old :=
13953                                              p_kdtl_tbl (l_ctr).service_amount;
13954                         l_inst_dtls_tbl (l_ptr).instance_qty_old :=
13955                                                      p_kdtl_tbl (l_ctr).cp_qty;
13956                         l_inst_dtls_tbl (l_ptr).old_contract_id :=
13957                                                      p_kdtl_tbl (l_ctr).hdr_id;
13958                         l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
13959                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
13960                         l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
13961                                                     p_kdtl_tbl (l_ctr).hdr_edt;
13962                         l_inst_dtls_tbl (l_ptr).old_service_line_id :=
13963                                             p_kdtl_tbl (l_ctr).service_line_id;
13964                         l_inst_dtls_tbl (l_ptr).old_service_start_date :=
13965                                                 p_kdtl_tbl (l_ctr).service_sdt;
13966                         l_inst_dtls_tbl (l_ptr).old_service_end_date :=
13967                                                 p_kdtl_tbl (l_ctr).service_edt;
13968                         l_inst_dtls_tbl (l_ptr).old_subline_id :=
13969                                              p_kdtl_tbl (l_ctr).object_line_id;
13970                         l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
13971                                                    p_kdtl_tbl (l_ctr).prod_sdt;
13972                         l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
13973                                                    p_kdtl_tbl (l_ctr).prod_edt;
13974                         l_inst_dtls_tbl (l_ptr).old_customer :=
13975                                              p_kdtl_tbl (l_ctr).old_account_id;
13976                         l_inst_dtls_tbl (l_ptr).old_k_status :=
13977                                                     p_kdtl_tbl (l_ctr).hdr_sts;
13978                      END IF;
13979                   /*E2*/
13980                   END IF;
13981                END IF;
13982 
13983                --errorout_n('l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
13984                IF l_inst_dtls_tbl.COUNT <> 0
13985                THEN
13986                   IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
13987                   THEN
13988                      OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
13989 
13990                      FETCH l_refnum_csr
13991                       INTO l_ref_num;
13992 
13993                      CLOSE l_refnum_csr;
13994 
13995                      l_parameters :=
13996                            ' Old CP :'
13997                         || p_kdtl_tbl (l_ctr).old_cp_id
13998                         || ','
13999                         || 'Item Id:'
14000                         || p_kdtl_tbl (l_ctr).prod_inventory_item
14001                         || ','
14002                         || 'Old Customer :'
14003                         || p_kdtl_tbl (l_ctr).old_account_id
14004                         || ','
14005                         || 'System Id:'
14006                         || p_kdtl_tbl (l_ctr).system_id
14007                         || ','
14008                         || 'Transaction type :'
14009                         || 'TRF'
14010                         || ','
14011                         || ' Transaction date :'
14012                         || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
14013                         || ','
14014                         || 'New Customer:'
14015                         || p_kdtl_tbl (l_ctr).new_account_id;
14016                      --oks_instance_history
14017                      l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
14018                      l_insthist_rec.instance_id :=
14019                                                   p_kdtl_tbl (l_ctr).old_cp_id;
14020                      l_insthist_rec.transaction_type := 'TRF';
14021                      l_insthist_rec.transaction_date :=
14022                                               (p_kdtl_tbl (l_ctr).transaction_date);
14023                      l_insthist_rec.reference_number := l_ref_num;
14024                      l_insthist_rec.PARAMETERS := l_parameters;
14025                      oks_ins_pvt.insert_row
14026                                           (p_api_version        => 1.0,
14027                                            p_init_msg_list      => 'T',
14028                                            x_return_status      => l_return_status,
14029                                            x_msg_count          => l_msg_count,
14030                                            x_msg_data           => l_msg_data,
14031                                            p_insv_rec           => l_insthist_rec,
14032                                            x_insv_rec           => x_insthist_rec
14033                                           );
14034 
14035                      IF (fnd_log.level_event >=
14036                                                fnd_log.g_current_runtime_level
14037                         )
14038                      THEN
14039                         fnd_log.STRING
14040                                 (fnd_log.level_event,
14041                                  g_module_current || '.CREATE_K_SYSTEM_TRF',
14042                                     'oks_ins_pvt.insert_row(Return status = '
14043                                  || l_return_status
14044                                  || ')'
14045                                 );
14046                      END IF;
14047 
14048                      x_return_status := l_return_status;
14049 
14050                      IF NOT l_return_status = okc_api.g_ret_sts_success
14051                      THEN
14052                         x_return_status := l_return_status;
14053                         RAISE g_exception_halt_validation;
14054                      END IF;
14055 
14056                      l_instparent_id := x_insthist_rec.ID;
14057                   END IF;
14058 
14059                   --errorout_n('in inst l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
14060                   FOR l_ctr IN 1 .. l_inst_dtls_tbl.COUNT
14061                   LOOP
14062                      l_inst_dtls_tbl (l_ctr).ins_id := l_instparent_id;
14063 
14064                      OPEN l_hdr_sts_csr
14065                                       (l_inst_dtls_tbl (l_ctr).new_contract_id
14066                                       );
14067 
14068                      FETCH l_hdr_sts_csr
14069                       INTO l_hdr_sts;
14070 
14071                      CLOSE l_hdr_sts_csr;              -- Vigandhi 03-Feb-2004
14072 
14073                      l_inst_dtls_tbl (l_ctr).new_k_status := l_hdr_sts;
14074                   -- FIx for bug 2408704
14075                   END LOOP;
14076 
14077                   --oks_inst_history_details
14078                   oks_ihd_pvt.insert_row (p_api_version        => 1.0,
14079                                           p_init_msg_list      => 'T',
14080                                           x_return_status      => l_return_status,
14081                                           x_msg_count          => l_msg_count,
14082                                           x_msg_data           => l_msg_data,
14083                                           p_ihdv_tbl           => l_inst_dtls_tbl,
14084                                           x_ihdv_tbl           => x_inst_dtls_tbl
14085                                          );
14086 
14087                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14088                      )
14089                   THEN
14090                      fnd_log.STRING
14091                                 (fnd_log.level_event,
14092                                  g_module_current || '.CREATE_K_SYSTEM_TRF',
14093                                     'oks_ihd_pvt.insert_row(Return status = '
14094                                  || l_return_status
14095                                  || ')'
14096                                 );
14097                   END IF;
14098 
14099                   x_return_status := l_return_status;
14100 
14101                   IF NOT l_return_status = okc_api.g_ret_sts_success
14102                   THEN
14103                      x_return_status := l_return_status;
14104                      RAISE g_exception_halt_validation;
14105                   END IF;
14106 		  If date_terminated is not null or date_cancelled is not null Then
14107 	    	      Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
14108 	              Fetch l_hdr_sts_csr into l_hdr_sts;
14109 	              Close l_hdr_sts_csr;
14110 
14111 		        If p_kdtl_tbl (l_ctr).system_id Is Null Then
14112 	                  Update oks_inst_hist_details set new_k_status = l_hdr_sts
14113 		            Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
14114 	              Else
14115 	                  Update oks_inst_hist_details set new_k_status = l_hdr_sts
14116 		            Where system_id = p_kdtl_tbl (l_ctr).system_id  and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id
14117                         and transaction_date = p_kdtl_tbl (l_ctr).transaction_date;
14118                     End If;
14119 
14120                   End If;
14121 
14122 
14123 
14124 
14125                END IF;
14126             END IF;
14127 
14128             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14129             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14130          END LOOP;
14131       END IF;
14132 
14133       x_return_status := l_return_status;
14134    EXCEPTION
14135       WHEN g_exception_halt_validation
14136       THEN
14137          x_return_status := l_return_status;
14138          NULL;
14139       WHEN OTHERS
14140       THEN
14141          x_return_status := okc_api.g_ret_sts_unexp_error;
14142          okc_api.set_message (g_app_name,
14143                               g_unexpected_error,
14144                               g_sqlcode_token,
14145                               SQLCODE,
14146                               g_sqlerrm_token,
14147                               SQLERRM
14148                              );
14149    END create_k_system_transfer;
14150 
14151 -----Terminate of Customer product
14152    PROCEDURE create_contract_terminate (
14153       p_kdtl_tbl        IN              contract_tbl,
14154       x_return_status   OUT NOCOPY      VARCHAR2,
14155       x_msg_count       OUT NOCOPY      NUMBER,
14156       x_msg_data        OUT NOCOPY      VARCHAR2
14157    )
14158    IS
14159       /* Added for Bug#14325727 */
14160       CURSOR l_serv_csr (p_serv_id NUMBER)
14161       IS
14162       SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
14163         FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
14164        WHERE b.inventory_item_id = t.inventory_item_id
14165          AND b.organization_id = t.organization_id
14166          AND t.LANGUAGE = USERENV ('LANG')
14167          AND b.inventory_item_id = p_serv_id
14168          AND ROWNUM < 2;
14169 
14170       /*Commented for Bug#14325727 */
14171       /*
14172       CURSOR l_serv_csr (p_serv_id NUMBER)
14173       IS
14174          SELECT t.description NAME
14175            FROM mtl_system_items_tl t
14176           WHERE t.inventory_item_id = p_serv_id
14177             AND t.LANGUAGE = USERENV ('LANG')
14178             AND ROWNUM < 2;
14179       */
14180 
14181       CURSOR l_refnum_csr (p_cp_id NUMBER)
14182       IS
14183          SELECT instance_number
14184            FROM csi_item_instances
14185           WHERE instance_id = p_cp_id;
14186 
14187 
14188       Cursor l_hdr_sts_csr(p_hdr_id Number)
14189       Is
14190       Select sts_code
14191       From Okc_k_headers_all_b
14192       WHere id = p_hdr_id;
14193 
14194       l_hdr_status               Varchar2(240);
14195 
14196       l_ref_num                  VARCHAR2 (30);
14197       x_inst_dtls_tbl            oks_ihd_pvt.ihdv_tbl_type;
14198       l_inst_dtls_tbl            oks_ihd_pvt.ihdv_tbl_type;
14199       l_instparent_id            NUMBER;
14200       l_old_cp_id                NUMBER;
14201       l_insthist_rec             oks_ins_pvt.insv_rec_type;
14202       x_insthist_rec             oks_ins_pvt.insv_rec_type;
14203       l_parameters               VARCHAR2 (2000);
14204       l_service_name             VARCHAR2 (2000);
14205       --Contract Line Table
14206       l_clev_tbl_in              okc_contract_pub.clev_tbl_type;
14207       l_clev_tbl_out             okc_contract_pub.clev_tbl_type;
14208       --SalesCredit
14209       l_salescredit_tbl_line     oks_extwarprgm_pvt.salescredit_tbl;
14210       l_salescredit_tbl_hdr      oks_extwarprgm_pvt.salescredit_tbl;
14211       l_line_rec                 k_line_service_rec_type;
14212       l_covd_rec                 k_line_covered_level_rec_type;
14213       l_available_yn             CHAR;
14214       l_return_status            VARCHAR2 (5)     := okc_api.g_ret_sts_success;
14215       l_chrid                    NUMBER                                := NULL;
14216       l_lineid                   NUMBER                                := NULL;
14217       l_days                     NUMBER                                 := 0;
14218       l_day1price                NUMBER                                 := 0;
14219       l_oldamt                   NUMBER                                 := 0;
14220       l_ctr                      NUMBER                                 := 0;
14221       l_terminate_rec            okc_terminate_pvt.terminate_in_cle_rec;
14222       l_api_version     CONSTANT NUMBER                                 := 1.0;
14223       l_init_msg_list   CONSTANT VARCHAR2 (1)               := okc_api.g_false;
14224       l_index                    VARCHAR2 (2000);
14225       l_trmdt                    DATE;
14226       l_suppress_credit          VARCHAR2 (2)                           := 'N';
14227       l_full_credit              VARCHAR2 (2)                           := 'N';
14228       l_ste_code                 VARCHAR2 (30);
14229       l_sts_code                 VARCHAR2 (30);
14230       date_terminated            DATE;
14231       date_cancelled             DATE;
14232       l_alllines_terminated      VARCHAR2 (1);
14233       l_alllines_cancelled       VARCHAR2 (1);
14234       l_chrv_tbl_in              okc_contract_pub.chrv_tbl_type;
14235       l_chrv_tbl_out             okc_contract_pub.chrv_tbl_type;
14236       l_ptr                      NUMBER;
14237       l_term_date_flag           VARCHAR2 (1);
14238       l_credit_amount            VARCHAR2 (50);
14239    BEGIN
14240       x_return_status := okc_api.g_ret_sts_success;
14241 
14242       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14243       THEN
14244          fnd_log.STRING (fnd_log.level_event,
14245                          g_module_current || '.CREATE_CONTRACT_IBTERMINATE.',
14246                          'count = ' || p_kdtl_tbl.COUNT || ')'
14247                         );
14248       END IF;
14249 
14250       l_old_cp_id := 0;
14251 
14252       IF p_kdtl_tbl.COUNT > 0
14253       THEN
14254          l_ctr := p_kdtl_tbl.FIRST;
14255 
14256          LOOP
14257 
14258           get_sts_code (NULL,
14259                           p_kdtl_tbl (l_ctr).hdr_sts,
14260                           l_ste_code,
14261                           l_sts_code
14262                          );
14263 
14264             IF l_ste_code = 'HOLD'
14265             THEN
14266                l_return_status := okc_api.g_ret_sts_error;
14267 
14268                IF fnd_log.level_error >= fnd_log.g_current_runtime_level
14269                THEN
14270                   fnd_log.STRING (fnd_log.level_error,
14271                                      g_module_current
14272                                   || '.CREATE_CONTRACT_IBTERMINATE.ERROR',
14273                                   'Contract in QA_HOLD status'
14274                                  );
14275                END IF;
14276 
14277                okc_api.set_message (g_app_name,
14278                                     g_invalid_value,
14279                                     g_col_name_token,
14280                                        'Termination not allowed .Contract '
14281                                     || p_kdtl_tbl (l_ctr).contract_number
14282                                     || 'is in QA_HOLD status'
14283                                    );
14284                RAISE g_exception_halt_validation;
14285             END IF;
14286 
14287             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14288             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14289          END LOOP;
14290       END IF;
14291 
14292       IF p_kdtl_tbl.COUNT > 0
14293       THEN
14294          l_ctr := p_kdtl_tbl.FIRST;
14295 
14296          LOOP
14297             l_ptr := 1;
14298             --Fix for Bug 5406201
14299 
14300             l_clev_tbl_in.delete;
14301             l_chrv_tbl_in.delete;
14302             l_inst_dtls_tbl.DELETE;
14303 
14304 
14305             okc_context.set_okc_org_context
14306                                            (p_kdtl_tbl (l_ctr).hdr_org_id,
14307                                             p_kdtl_tbl (l_ctr).organization_id
14308                                            );
14309             get_sts_code (NULL,
14310                           p_kdtl_tbl (l_ctr).prod_sts_code,
14311                           l_ste_code,
14312                           l_sts_code
14313                          );
14314 
14315             IF l_ste_code NOT IN ('ENTERED','EXPIRED') /*Bug:7555733*/
14316             THEN
14317                l_trmdt := p_kdtl_tbl (l_ctr).termination_date;
14318 
14319                IF (TRUNC (l_trmdt) <= TRUNC (p_kdtl_tbl (l_ctr).prod_sdt))
14320                THEN
14321                   l_trmdt := p_kdtl_tbl (l_ctr).prod_sdt;
14322                END IF;
14323 
14324                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
14325                THEN
14326                   fnd_log.STRING
14327                        (fnd_log.level_statement,
14328                         g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14329                            'OKS Raise credit memo profile option value ='
14330                         || fnd_profile.VALUE
14331                                            ('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT')
14332                        );
14333                END IF;
14334 
14335                /*IF    fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') = 'YES'
14336                   OR fnd_profile.VALUE('OKS_RAISE_CREDIT_MEMO_FOR_IB_INT') IS NULL THEN
14337                     l_suppress_credit := 'N';
14338                ELSE
14339                     l_suppress_credit := 'Y';
14340                END IF;*/
14341                l_credit_amount :=
14342                   oks_ib_util_pvt.get_credit_option
14343                                            (p_kdtl_tbl (l_ctr).party_id,
14344                                             p_kdtl_tbl (l_ctr).hdr_org_id,
14345                                             p_kdtl_tbl (l_ctr).termination_date
14346                                            );
14347 
14348                IF UPPER (l_credit_amount) = 'FULL'
14349                THEN
14350                   l_full_credit := 'Y';
14351                   l_suppress_credit := 'N';
14352                   --l_trmdt := p_kdtl_tbl( l_ctr ).prod_sdt;
14353                   l_term_date_flag := 'N';
14354                ELSIF UPPER (l_credit_amount) = 'NONE'
14355                THEN
14356                   l_suppress_credit := 'Y';
14357                   l_full_credit := 'N';
14358                   l_term_date_flag := 'N';
14359                ELSIF UPPER (l_credit_amount) = 'CALCULATED'
14360                THEN
14361                   l_suppress_credit := 'N';
14362                   l_full_credit := 'N';
14363                   l_term_date_flag := 'N';
14364                END IF;
14365 
14366                IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_trmdt)
14367                THEN
14368                   l_trmdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
14369                   l_suppress_credit := 'Y';
14370                   l_full_credit := 'N';
14371                   l_term_date_flag := 'Y';
14372                END IF;
14373 
14374                oks_bill_rec_pub.pre_terminate_cp
14375                                 (p_calledfrom                => -1,
14376                                  p_cle_id                    => p_kdtl_tbl
14377                                                                         (l_ctr).object_line_id,
14378                                  p_termination_date          => TRUNC (l_trmdt),
14379                                  p_terminate_reason          => 'EXP',
14380                                  p_override_amount           => NULL,
14381                                  p_con_terminate_amount      => NULL,
14382                                  p_termination_amount        => NULL,
14383                                  p_suppress_credit           => l_suppress_credit,
14384                                  p_full_credit               => l_full_credit,
14385                                  --'N',
14386                                  p_term_date_flag            => l_term_date_flag,
14387                                  p_term_cancel_source        => 'IBTERMINATE',
14388                                  x_return_status             => l_return_status
14389                                 );
14390 
14391                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14392                THEN
14393                   fnd_log.STRING
14394                      (fnd_log.level_event,
14395                       g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14396                          'oks_bill_rec_pub.Pre_terminate_cp(Return status = '
14397                       || l_return_status
14398                       || ')'
14399                      );
14400                END IF;
14401 
14402                IF NOT l_return_status = okc_api.g_ret_sts_success
14403                THEN
14404                   RAISE g_exception_halt_validation;
14405                END IF;
14406 
14407                l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
14408                                                                TRUNC (l_trmdt);
14409                ---Terminate top line if all the sublines are terminated due to Instance termination
14410                date_terminated := NULL;
14411                oks_ib_util_pvt.check_termcancel_lines
14412                                            (p_kdtl_tbl (l_ctr).service_line_id,
14413                                             'SL',
14414                                             'T',
14415                                             date_terminated
14416                                            );
14417 
14418                IF date_terminated IS NOT NULL
14419                THEN
14420                   get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
14421 
14422                   l_clev_tbl_in (1).ID := p_kdtl_tbl (l_ctr).service_line_id;
14423                   l_clev_tbl_in (1).date_terminated := TRUNC (date_terminated);
14424                   l_clev_tbl_in (1).trn_code := 'EXP';
14425                   ---check the actual code
14426                   l_clev_tbl_in (1).term_cancel_source := 'IBTERMINATE';
14427                   If TRUNC (date_terminated)<= trunc(sysdate) Then
14428                         l_clev_tbl_in (1).sts_code := l_sts_code;
14429                   End If;
14430 
14431                   okc_contract_pub.update_contract_line
14432                                       (p_api_version            => l_api_version,
14433                                        p_init_msg_list          => l_init_msg_list,
14434                                        p_restricted_update      => okc_api.g_true,
14435                                        x_return_status          => l_return_status,
14436                                        x_msg_count              => x_msg_count,
14437                                        x_msg_data               => x_msg_data,
14438                                        p_clev_tbl               => l_clev_tbl_in,
14439                                        x_clev_tbl               => l_clev_tbl_out
14440                                       );
14441 
14442                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14443                      )
14444                   THEN
14445                      fnd_log.STRING
14446                         (fnd_log.level_event,
14447                          g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14448                             'oks_bill_rec_pub.update_contract_line(Return status = '
14449                          || l_return_status
14450                          || ')'
14451                         );
14452                   END IF;
14453 
14454                   IF NOT l_return_status = okc_api.g_ret_sts_success
14455                   THEN
14456                      RAISE g_exception_halt_validation;
14457                   END IF;
14458                END IF;
14459 
14460                date_terminated := NULL;
14461                oks_ib_util_pvt.check_termcancel_lines
14462                                                     (p_kdtl_tbl (l_ctr).hdr_id,
14463                                                      'TL',
14464                                                      'T',
14465                                                      date_terminated
14466                                                     );
14467 
14468                IF date_terminated IS NOT NULL
14469                THEN
14470                   get_sts_code ('TERMINATED', NULL, l_ste_code, l_sts_code);
14471 
14472                   l_chrv_tbl_in (1).ID := p_kdtl_tbl (l_ctr).hdr_id;
14473                   l_chrv_tbl_in (1).date_terminated :=
14474                                                       TRUNC (date_terminated);
14475                   l_chrv_tbl_in (1).trn_code := 'EXP';
14476                   l_chrv_tbl_in (1).term_cancel_source := 'IBTERMINATE';
14477                   If TRUNC (date_terminated)<= trunc(sysdate) Then
14478                        l_chrv_tbl_in (1).sts_code := l_sts_code;
14479                   End If;
14480 
14481                   okc_contract_pub.update_contract_header
14482                                       (p_api_version            => l_api_version,
14483                                        p_init_msg_list          => l_init_msg_list,
14484                                        p_restricted_update      => okc_api.g_true,
14485                                        x_return_status          => l_return_status,
14486                                        x_msg_count              => x_msg_count,
14487                                        x_msg_data               => x_msg_data,
14488                                        p_chrv_tbl               => l_chrv_tbl_in,
14489                                        x_chrv_tbl               => l_chrv_tbl_out
14490                                       );
14491 
14492                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14493                      )
14494                   THEN
14495                      fnd_log.STRING
14496                         (fnd_log.level_event,
14497                             g_module_current
14498                          || '.Update_Hdr_Dates.external_call.after',
14499                             'okc_contract_pub.update_contract_header(Return status = '
14500                          || l_return_status
14501                          || ')'
14502                         );
14503                   END IF;
14504 
14505                   IF NOT l_return_status = okc_api.g_ret_sts_success
14506                   THEN
14507                      RAISE g_exception_halt_validation;
14508                   END IF;
14509                END IF;
14510             ELSIF l_ste_code = 'ENTERED'
14511             THEN
14512                l_trmdt := p_kdtl_tbl (l_ctr).termination_date;
14513 
14514                IF TRUNC (p_kdtl_tbl (l_ctr).prod_edt) < TRUNC (l_trmdt)
14515                THEN
14516                   l_trmdt := p_kdtl_tbl (l_ctr).prod_edt + 1;
14517                END IF;
14518 
14519 	      -- added for the bug # 6000133
14520 	      get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14521 
14522                oks_change_status_pvt.update_line_status
14523                            (x_return_status           => l_return_status,
14524                             x_msg_data                => x_msg_data,
14525                             x_msg_count               => x_msg_count,
14526                             p_init_msg_list           => 'F',
14527                             p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
14528                             p_cle_id                  => p_kdtl_tbl (l_ctr).object_line_id,
14529                             p_new_sts_code            => l_sts_code,
14530                             p_canc_reason_code        => 'TERMINATED',
14531                             p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
14532                             p_old_ste_code            => 'ENTERED',
14533                             p_new_ste_code            => 'CANCELLED',
14534                             p_term_cancel_source      => 'IBTERMINATE',
14535                             p_date_cancelled          => TRUNC (l_trmdt),
14536                             p_comments                => NULL,
14537                             p_validate_status         => 'N'
14538                            );
14539 
14540                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14541                THEN
14542                   fnd_log.STRING
14543                      (fnd_log.level_event,
14544                       g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14545                          'okc_contract_pub.update_contract_line(Return status ='
14546                       || l_return_status
14547                       || ')'
14548                      );
14549                END IF;
14550 
14551                IF NOT l_return_status = okc_api.g_ret_sts_success
14552                THEN
14553                   RAISE g_exception_halt_validation;
14554                END IF;
14555 
14556                l_inst_dtls_tbl (l_ptr).date_cancelled := TRUNC (l_trmdt);
14557                date_cancelled := NULL;
14558                oks_ib_util_pvt.check_termcancel_lines
14559                                            (p_kdtl_tbl (l_ctr).service_line_id,
14560                                             'SL',
14561                                             'C',
14562                                             date_cancelled
14563                                            );
14564 
14565                IF date_cancelled IS NOT NULL
14566                THEN
14567 
14568 	          -- added for the bug # 6000133
14569 		  get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14570 
14571                   oks_change_status_pvt.update_line_status
14572                           (x_return_status           => l_return_status,
14573                            x_msg_data                => x_msg_data,
14574                            x_msg_count               => x_msg_count,
14575                            p_init_msg_list           => 'F',
14576                            p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
14577                            p_cle_id                  => p_kdtl_tbl (l_ctr).service_line_id,
14578                            p_new_sts_code            => l_sts_code,
14579                            p_canc_reason_code        => 'TERMINATED',
14580                            p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
14581                            p_old_ste_code            => 'ENTERED',
14582                            p_new_ste_code            => 'CANCELLED',
14583                            p_term_cancel_source      => 'IBTERMINATE',
14584                            p_date_cancelled          => TRUNC (date_cancelled),
14585                            p_comments                => NULL,
14586                            p_validate_status         => 'N'
14587                           );
14588 
14589                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14590                      )
14591                   THEN
14592                      fnd_log.STRING
14593                         (fnd_log.level_event,
14594                          g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14595                             'okc_contract_pub.update_contract_line(Return status = '
14596                          || l_return_status
14597                          || ')'
14598                         );
14599                   END IF;
14600 
14601                   IF NOT l_return_status = okc_api.g_ret_sts_success
14602                   THEN
14603                      RAISE g_exception_halt_validation;
14604                   END IF;
14605                END IF;
14606 
14607                date_cancelled := NULL;
14608                oks_ib_util_pvt.check_termcancel_lines
14609                                                     (p_kdtl_tbl (l_ctr).hdr_id,
14610                                                      'TL',
14611                                                      'C',
14612                                                      date_cancelled
14613                                                     );
14614 
14615                IF date_cancelled IS NOT NULL
14616                THEN
14617                   l_return_status := 'S';
14618 
14619 		  -- added for the bug # 6000133
14620 		  get_sts_code ('CANCELLED', NULL, l_ste_code, l_sts_code);
14621 
14622                   oks_change_status_pvt.update_header_status
14623                           (x_return_status           => l_return_status,
14624                            x_msg_data                => x_msg_data,
14625                            x_msg_count               => x_msg_count,
14626                            p_init_msg_list           => 'F',
14627                            p_id                      => p_kdtl_tbl (l_ctr).hdr_id,
14628                            p_new_sts_code            =>  l_sts_code,
14629                            p_canc_reason_code        => 'TERMINATED',
14630                            p_old_sts_code            => p_kdtl_tbl (l_ctr).prod_sts_code,
14631                            p_comments                => NULL,
14632                            p_term_cancel_source      => 'IBTERMINATE',
14633                            p_date_cancelled          => TRUNC (date_cancelled),
14634                            p_validate_status         => 'N'
14635                           );
14636 
14637                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14638                      )
14639                   THEN
14640                      fnd_log.STRING
14641                         (fnd_log.level_event,
14642                          g_module_current || '.CREATE_CONTRACT_IBTERMINATE',
14643                             'OKS_WF_K_PROCESS_PVT.cancel_contract(Return status = '
14644                          || l_return_status
14645                          || ')'
14646                         );
14647                   END IF;
14648 
14649                   IF NOT l_return_status = okc_api.g_ret_sts_success
14650                   THEN
14651                      RAISE g_exception_halt_validation;
14652                   END IF;
14653                END IF;
14654             END IF;
14655 
14656             OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_inventory_id);
14657 
14658             FETCH l_serv_csr
14659              INTO l_service_name;
14660 
14661             CLOSE l_serv_csr;
14662 
14663             launch_workflow (   'INSTALL BASE ACTIVITY : TERMINATE  '
14664                              || fnd_global.local_chr (10)
14665                              || 'Contract Number       :         '
14666                              || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
14667                              || fnd_global.local_chr (10)
14668                              || 'Customer product end dated    :         '
14669                              || l_service_name
14670                             );
14671            /*  get_sts_code (NULL,
14672                           p_kdtl_tbl (l_ctr).hdr_sts,
14673                           l_ste_code,
14674                           l_sts_code
14675                          );
14676 
14677             */
14678 
14679 
14680             l_inst_dtls_tbl (l_ptr).transaction_date :=
14681                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
14682             l_inst_dtls_tbl (l_ptr).transaction_type := 'TRM';
14683             l_inst_dtls_tbl (l_ptr).instance_id_new :=
14684                                                   p_kdtl_tbl (l_ctr).old_cp_id;
14685             l_inst_dtls_tbl (l_ptr).instance_qty_old :=
14686                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
14687             l_inst_dtls_tbl (l_ptr).instance_qty_new :=
14688                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
14689             l_inst_dtls_tbl (l_ptr).instance_amt_old :=
14690                                              p_kdtl_tbl (l_ctr).service_amount;
14691             l_inst_dtls_tbl (l_ptr).instance_amt_new :=
14692                                              p_kdtl_tbl (l_ctr).service_amount;
14693             l_inst_dtls_tbl (l_ptr).old_contract_id :=
14694                                                      p_kdtl_tbl (l_ctr).hdr_id;
14695             l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
14696                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
14697             l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
14698                                                     p_kdtl_tbl (l_ctr).hdr_edt;
14699             l_inst_dtls_tbl (l_ptr).new_contract_id :=
14700                                                      p_kdtl_tbl (l_ctr).hdr_id;
14701             l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
14702                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
14703             l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
14704                                                     p_kdtl_tbl (l_ctr).hdr_edt;
14705             l_inst_dtls_tbl (l_ptr).old_service_line_id :=
14706                                             p_kdtl_tbl (l_ctr).service_line_id;
14707             l_inst_dtls_tbl (l_ptr).old_service_start_date :=
14708                                                 p_kdtl_tbl (l_ctr).service_sdt;
14709             l_inst_dtls_tbl (l_ptr).old_service_end_date :=
14710                                                 p_kdtl_tbl (l_ctr).service_edt;
14711             l_inst_dtls_tbl (l_ptr).new_service_line_id :=
14712                                             p_kdtl_tbl (l_ctr).service_line_id;
14713             l_inst_dtls_tbl (l_ptr).new_service_start_date :=
14714                                                 p_kdtl_tbl (l_ctr).service_sdt;
14715             l_inst_dtls_tbl (l_ptr).new_service_end_date :=
14716                                                 p_kdtl_tbl (l_ctr).service_edt;
14717             l_inst_dtls_tbl (l_ptr).old_subline_id :=
14718                                              p_kdtl_tbl (l_ctr).object_line_id;
14719             l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
14720                                                    p_kdtl_tbl (l_ctr).prod_sdt;
14721             l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
14722                                                    p_kdtl_tbl (l_ctr).prod_edt;
14723             l_inst_dtls_tbl (l_ptr).new_subline_id :=
14724                                              p_kdtl_tbl (l_ctr).object_line_id;
14725             l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
14726                                                    p_kdtl_tbl (l_ctr).prod_sdt;
14727             l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
14728                                                    p_kdtl_tbl (l_ctr).prod_edt;
14729             l_inst_dtls_tbl (l_ptr).old_customer :=
14730                                                p_kdtl_tbl (l_ctr).cust_account;
14731             l_inst_dtls_tbl (l_ptr).new_customer :=
14732                                                p_kdtl_tbl (l_ctr).cust_account;
14733             l_inst_dtls_tbl (l_ptr).old_k_status := p_kdtl_tbl (l_ctr).hdr_sts;
14734 
14735             l_inst_dtls_tbl (l_ptr).new_k_status := p_kdtl_tbl (l_ctr).hdr_sts;
14736 
14737 
14738             IF l_inst_dtls_tbl.COUNT <> 0
14739             THEN
14740                IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
14741                THEN
14742                   OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
14743 
14744                   FETCH l_refnum_csr
14745                    INTO l_ref_num;
14746 
14747                   CLOSE l_refnum_csr;
14748 
14749                   l_parameters :=
14750                         ' Old CP :'
14751                      || p_kdtl_tbl (l_ctr).old_cp_id
14752                      || ','
14753                      || 'Item Id:'
14754                      || p_kdtl_tbl (l_ctr).prod_inventory_item
14755                      || ','
14756                      || 'Old Quantity:'
14757                      || p_kdtl_tbl (l_ctr).current_cp_quantity
14758                      || ','
14759                      || 'Transaction type :'
14760                      || 'TRM'
14761                      || ','
14762                      || ' Transaction date :'
14763                      || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
14764                      || ','
14765                      || 'New quantity:'
14766                      || p_kdtl_tbl (l_ctr).new_quantity;
14767                   --oks_instance_history
14768                   l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
14769                   l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
14770                   l_insthist_rec.transaction_type := 'TRM';
14771                   l_insthist_rec.transaction_date :=
14772                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
14773                   l_insthist_rec.reference_number := l_ref_num;
14774                   l_insthist_rec.PARAMETERS := l_parameters;
14775                   oks_ins_pvt.insert_row (p_api_version        => 1.0,
14776                                           p_init_msg_list      => 'T',
14777                                           x_return_status      => l_return_status,
14778                                           x_msg_count          => x_msg_count,
14779                                           x_msg_data           => x_msg_data,
14780                                           p_insv_rec           => l_insthist_rec,
14781                                           x_insv_rec           => x_insthist_rec
14782                                          );
14783 
14784                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
14785                      )
14786                   THEN
14787                      fnd_log.STRING
14788                                 (fnd_log.level_event,
14789                                  g_module_current || '.CREATE_K_SYSTEM_TRF',
14790                                     'oks_ins_pvt.insert_row(Return status = '
14791                                  || l_return_status
14792                                  || ')'
14793                                 );
14794                   END IF;
14795 
14796                   x_return_status := l_return_status;
14797 
14798                   IF NOT l_return_status = okc_api.g_ret_sts_success
14799                   THEN
14800                      x_return_status := l_return_status;
14801                      RAISE g_exception_halt_validation;
14802                   END IF;
14803 
14804                   l_instparent_id := x_insthist_rec.ID;
14805                END IF;
14806 
14807                l_inst_dtls_tbl (l_ptr).ins_id := l_instparent_id;
14808                --oks_inst_history_details
14809                oks_ihd_pvt.insert_row (p_api_version        => 1.0,
14810                                        p_init_msg_list      => 'T',
14811                                        x_return_status      => l_return_status,
14812                                        x_msg_count          => x_msg_count,
14813                                        x_msg_data           => x_msg_data,
14814                                        p_ihdv_tbl           => l_inst_dtls_tbl,
14815                                        x_ihdv_tbl           => x_inst_dtls_tbl
14816                                       );
14817 
14818                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
14819                THEN
14820                   fnd_log.STRING
14821                                 (fnd_log.level_event,
14822                                  g_module_current || '.CREATE_IBTERMINATE',
14823                                     'oks_ihd_pvt.insert_row(Return status = '
14824                                  || l_return_status
14825                                  || ')'
14826                                 );
14827                END IF;
14828 
14829                x_return_status := l_return_status;
14830 
14831                IF NOT l_return_status = okc_api.g_ret_sts_success
14832                THEN
14833                   x_return_status := l_return_status;
14834                   RAISE g_exception_halt_validation;
14835                END IF;
14836 
14837 	       If date_terminated is not null or date_cancelled is not null Then
14838 	    	    Open l_hdr_sts_csr(p_kdtl_tbl (l_ctr).hdr_id);
14839 	            Fetch l_hdr_sts_csr into l_hdr_status;
14840 	            Close l_hdr_sts_csr;
14841 
14842 	            Update oks_inst_hist_details set new_k_status = l_hdr_status
14843 		    Where ins_id = l_instparent_id and new_contract_id = p_kdtl_tbl (l_ctr).hdr_id;
14844 
14845                End If;
14846             END IF;
14847 
14848             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
14849             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
14850          END LOOP;
14851       END IF;
14852    EXCEPTION
14853       WHEN g_exception_halt_validation
14854       THEN
14855          x_return_status := l_return_status;
14856          NULL;
14857       WHEN OTHERS
14858       THEN
14859          x_return_status := okc_api.g_ret_sts_unexp_error;
14860          okc_api.set_message (g_app_name,
14861                               g_unexpected_error,
14862                               g_sqlcode_token,
14863                               SQLCODE,
14864                               g_sqlerrm_token,
14865                               SQLERRM
14866                              );
14867    END;
14868 
14869    PROCEDURE update_contract_idc (
14870       p_kdtl_tbl        IN              contract_tbl,
14871       x_return_status   OUT NOCOPY      VARCHAR2,
14872       x_msg_count       OUT NOCOPY      NUMBER,
14873       x_msg_data        OUT NOCOPY      VARCHAR2
14874    )
14875    IS
14876       -- Cursor to check cov attribute set
14877       CURSOR l_cov_csr (p_cle_id NUMBER)
14878       IS
14879          SELECT KL.sync_date_install
14880            FROM oks_k_lines_b LN, oks_k_lines_b kl
14881           WHERE LN.cle_id = p_cle_id AND kl.cle_id = LN.coverage_id;
14882 
14883       -- Cursor to check SR logged
14884       CURSOR l_checksr_csr (
14885          p_line_id   NUMBER,
14886          p_sdt       DATE,
14887          p_edt       DATE,
14888          p_cp_id     NUMBER
14889       )
14890       IS
14891          SELECT 'X'
14892            FROM cs_incidents_all_b
14893           WHERE customer_product_id = p_cp_id
14894             AND contract_service_id = p_line_id
14895             AND (   TRUNC (creation_date) <= TRUNC (p_sdt)
14896                  OR TRUNC (creation_date) >= TRUNC (p_edt)
14897                 );
14898 
14899       -- Cursor to get start and end date of sub lines
14900       CURSOR l_subline_dates (
14901          p_topline_id   NUMBER,
14902          p_hdr_id       NUMBER,
14903          p_subline_id   NUMBER
14904       )
14905       IS
14906          SELECT MIN (start_date) sdt, MAX (end_date) edt
14907            FROM okc_k_lines_b
14908           WHERE cle_id = p_topline_id
14909             AND dnz_chr_id = p_hdr_id
14910             AND lse_id = 18
14911             AND ID <> p_subline_id;
14912 
14913       -- Cursor to get start and end date of top lines
14914       CURSOR l_topline_dates (p_hdr_id NUMBER, p_topline_id NUMBER)
14915       IS
14916          SELECT MIN (start_date) sdt, MAX (end_date) edt
14917            FROM okc_k_lines_b
14918           WHERE dnz_chr_id = p_hdr_id AND cle_id IS NULL
14919                 AND ID <> p_topline_id;
14920 
14921       -- Cursor to get the header dates and status
14922       CURSOR l_lndates_csr (p_id NUMBER)
14923       IS
14924          SELECT start_date, end_date
14925            FROM okc_k_lines_b
14926           WHERE ID = p_id;
14927 
14928       -- Cursor to get the line dates and status
14929       CURSOR l_hdrdates_csr (p_id NUMBER)
14930       IS
14931          SELECT start_date, end_date, sts_code
14932            FROM okc_k_headers_b
14933           WHERE ID = p_id;
14934 
14935 --mmadhavi bug 3761489
14936       CURSOR get_oks_line_dtls (p_id NUMBER)
14937       IS
14938          SELECT ID, object_version_number
14939            FROM oks_k_lines_b
14940           WHERE cle_id = p_id;
14941 
14942 --mmadhavi bug 3761489
14943       CURSOR l_serv_csr (p_serv_line_id NUMBER)
14944       IS
14945          SELECT t.description NAME, b.concatenated_segments description
14946            FROM mtl_system_items_b_kfv b,
14947                 mtl_system_items_tl t,
14948                 okc_k_items ki
14949           WHERE ki.cle_id = p_serv_line_id
14950             AND b.inventory_item_id = TO_CHAR (ki.object1_id1)
14951             AND t.inventory_item_id = b.inventory_item_id
14952             AND t.organization_id = b.organization_id
14953             AND t.LANGUAGE = USERENV ('LANG')
14954             AND ROWNUM < 2;
14955 
14956       CURSOR l_refnum_csr (p_cp_id NUMBER)
14957       IS
14958          SELECT instance_number
14959            FROM csi_item_instances
14960           WHERE instance_id = p_cp_id;
14961 
14962       l_ref_num                  VARCHAR2 (30);
14963       x_inst_dtls_tbl            oks_ihd_pvt.ihdv_tbl_type;
14964       l_inst_dtls_tbl            oks_ihd_pvt.ihdv_tbl_type;
14965       l_instparent_id            NUMBER;
14966       l_old_cp_id                NUMBER;
14967       l_insthist_rec             oks_ins_pvt.insv_rec_type;
14968       x_insthist_rec             oks_ins_pvt.insv_rec_type;
14969       l_parameters               VARCHAR2 (2000);
14970       l_lndates_rec              l_lndates_csr%ROWTYPE;
14971       l_hdrdates_rec             l_hdrdates_csr%ROWTYPE;
14972       l_subline_rec              l_subline_dates%ROWTYPE;
14973       l_topline_rec              l_topline_dates%ROWTYPE;
14974       l_duration                 NUMBER;
14975       l_timeunits                VARCHAR2 (25);
14976       l_api_version     CONSTANT NUMBER                             := 1.0;
14977       l_init_msg_list   CONSTANT VARCHAR2 (1)               := okc_api.g_false;
14978       l_available_yn             VARCHAR2 (2);
14979       l_index                    VARCHAR2 (2000);
14980       l_return_status            VARCHAR2 (1)                       := 'S';
14981       --l_kdtl_tbl                          oks_extwar_util_pvt.contract_tbl_type;
14982       l_salescredit_tbl_line     oks_extwarprgm_pvt.salescredit_tbl;
14983       l_salescredit_tbl_hdr      oks_extwarprgm_pvt.salescredit_tbl;
14984       l_ctr                      NUMBER                             := 0;
14985       l_cov_att                  VARCHAR2 (1);
14986       v_temp                     VARCHAR2 (1);
14987       l_sub_sdt                  DATE                               := NULL;
14988       l_sub_edt                  DATE                               := NULL;
14989       l_top_sdt                  DATE                               := NULL;
14990       l_top_edt                  DATE                               := NULL;
14991       l_hdr_sdt                  DATE                               := NULL;
14992       l_hdr_edt                  DATE                               := NULL;
14993       l_status                   VARCHAR2 (30);
14994       l_top_flag                 VARCHAR2 (1);
14995       l_hdr_flag                 VARCHAR2 (1);
14996       l_update_line              VARCHAR2 (1);
14997       l_sts_flag                 VARCHAR2 (1);
14998       l_ste_code                 VARCHAR2 (240);
14999       l_sts_code                 VARCHAR2 (240);
15000       l_obj_version_num          NUMBER;
15001       l_id                       NUMBER;
15002       l_prod_item_id             NUMBER;
15003       line_desc                  VARCHAR2 (240);
15004       line_name                  VARCHAR2 (240);
15005       l_desc                     VARCHAR2 (240);
15006       l_quantity                 NUMBER;
15007       l_invoice_text             VARCHAR2 (2000);
15008       l_klnv_tbl_in              oks_kln_pvt.klnv_tbl_type;
15009       l_klnv_tbl_out             oks_kln_pvt.klnv_tbl_type;
15010    BEGIN
15011       x_return_status := okc_api.g_ret_sts_success;
15012 
15013       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15014       THEN
15015          fnd_log.STRING (fnd_log.level_event,
15016                          g_module_current || '.UPDATE_CONTRACT_IDC.after.',
15017                          'count = ' || p_kdtl_tbl.COUNT || ')'
15018                         );
15019       END IF;
15020 
15021       l_old_cp_id := 0;
15022 
15023       IF p_kdtl_tbl.COUNT > 0
15024       THEN
15025          l_ctr := p_kdtl_tbl.FIRST;
15026 
15027          LOOP
15028             okc_context.set_okc_org_context
15029                                            (p_kdtl_tbl (l_ctr).hdr_org_id,
15030                                             p_kdtl_tbl (l_ctr).organization_id
15031                                            );
15032 
15033             IF p_kdtl_tbl (l_ctr).installation_date IS NULL
15034             THEN
15035                l_return_status := okc_api.g_ret_sts_warning;
15036 
15037                IF fnd_log.level_error >= fnd_log.g_current_runtime_level
15038                THEN
15039                   fnd_log.STRING (fnd_log.level_error,
15040                                   g_module_current || '.IB_INTERFACE',
15041                                   'Installation date changed to null '
15042                                  );
15043                END IF;
15044 
15045                okc_api.set_message (g_app_name, 'OKS_NULL_INSTALLATION_DATE');
15046                RAISE g_exception_halt_validation;
15047             END IF;
15048 
15049             l_inst_dtls_tbl.DELETE;
15050             get_sts_code (p_kdtl_tbl (l_ctr).hdr_sts,
15051                           NULL,
15052                           l_ste_code,
15053                           l_sts_code
15054                          );
15055             -- Instance history details
15056             --x_inst_dtls_tbl(l_ctr).INST_PARENT_ID            := p_idc_rec.old_cp_id;
15057             l_inst_dtls_tbl (1).transaction_date :=
15058                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15059             l_inst_dtls_tbl (1).transaction_type := 'IDC';
15060             l_inst_dtls_tbl (1).instance_id_new :=
15061                                                   p_kdtl_tbl (l_ctr).old_cp_id;
15062             l_inst_dtls_tbl (1).instance_qty_old :=
15063                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
15064             l_inst_dtls_tbl (1).instance_qty_new :=
15065                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
15066             l_inst_dtls_tbl (1).instance_amt_old :=
15067                                              p_kdtl_tbl (l_ctr).service_amount;
15068             l_inst_dtls_tbl (1).instance_amt_new :=
15069                                              p_kdtl_tbl (l_ctr).service_amount;
15070             l_inst_dtls_tbl (1).old_contract_id := p_kdtl_tbl (l_ctr).hdr_id;
15071             l_inst_dtls_tbl (1).old_contact_start_date :=
15072                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
15073             l_inst_dtls_tbl (1).old_contract_end_date :=
15074                                                     p_kdtl_tbl (l_ctr).hdr_edt;
15075             l_inst_dtls_tbl (1).old_service_line_id :=
15076                                             p_kdtl_tbl (l_ctr).service_line_id;
15077             l_inst_dtls_tbl (1).old_service_start_date :=
15078                                                 p_kdtl_tbl (l_ctr).service_sdt;
15079             l_inst_dtls_tbl (1).old_service_end_date :=
15080                                                 p_kdtl_tbl (l_ctr).service_edt;
15081             l_inst_dtls_tbl (1).old_subline_id :=
15082                                              p_kdtl_tbl (l_ctr).object_line_id;
15083             l_inst_dtls_tbl (1).old_subline_start_date :=
15084                                                    p_kdtl_tbl (l_ctr).prod_sdt;
15085             l_inst_dtls_tbl (1).old_subline_end_date :=
15086                                                    p_kdtl_tbl (l_ctr).prod_edt;
15087             l_inst_dtls_tbl (1).old_customer :=
15088                                                p_kdtl_tbl (l_ctr).cust_account;
15089             l_inst_dtls_tbl (1).old_k_status := l_sts_code;
15090             -- If installation date is null Contract starts with OM shipment date
15091             -- New start date for the covered line
15092             l_sub_sdt := trunc(p_kdtl_tbl (l_ctr).installation_date); --bug 5757116 added trunc.
15093             okc_time_util_pub.get_duration
15094                                   (p_start_date         => p_kdtl_tbl (l_ctr).prod_sdt,
15095                                    p_end_date           => p_kdtl_tbl (l_ctr).prod_edt,
15096                                    x_duration           => l_duration,
15097                                    x_timeunit           => l_timeunits,
15098                                    x_return_status      => l_return_status
15099                                   );
15100 
15101             IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15102             THEN
15103                fnd_log.STRING
15104                         (fnd_log.level_event,
15105                             g_module_current
15106                          || '.UPDATE_CONTRACT_IDC.after.get_k_dtls',
15107                             'Okc_time_util_pub.get_duration(Return status = '
15108                          || l_return_status
15109                          || ',Duration = '
15110                          || l_duration
15111                          || ',Time units = '
15112                          || l_timeunits
15113                          || ')'
15114                         );
15115             END IF;
15116 
15117             IF NOT l_return_status = 'S'
15118             THEN
15119                RAISE g_exception_halt_validation;
15120             END IF;
15121 
15122             -- New end date for the covered line
15123             l_sub_edt :=
15124                okc_time_util_pub.get_enddate
15125                          (p_start_date      => trunc(p_kdtl_tbl (l_ctr).installation_date),
15126                           p_duration        => l_duration,
15127                           p_timeunit        => l_timeunits
15128                          );
15129 
15130             -- Check for the coverage flag Synchronization install date
15131             -- Contract date can be updated if the flag is checked
15132             OPEN l_cov_csr (p_kdtl_tbl (l_ctr).service_line_id);
15133 
15134             FETCH l_cov_csr
15135              INTO l_cov_att;
15136 
15137             CLOSE l_cov_csr;
15138 
15139             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
15140             THEN
15141                fnd_log.STRING (fnd_log.level_statement,
15142                                g_module_current || '.UPDATE_CONTRACT_IDC',
15143                                'Coverage attribute = ' || l_cov_att
15144                               );
15145             END IF;
15146 
15147 
15148             IF NVL (l_cov_att, 'N') = 'Y'
15149             THEN
15150                -- Check for any open service request
15151                -- Contract date wouldn't be updated only if there is a service request outside new effectivity
15152                OPEN l_checksr_csr (p_kdtl_tbl (l_ctr).service_line_id,
15153                                    l_sub_sdt,
15154                                    l_sub_edt,
15155                                    p_kdtl_tbl (l_ctr).old_cp_id
15156                                   );
15157 
15158                FETCH l_checksr_csr
15159                 INTO v_temp;
15160 
15161                IF l_checksr_csr%FOUND
15162                THEN
15163                   CLOSE l_checksr_csr;
15164 
15165                   l_return_status := okc_api.g_ret_sts_warning;
15166 
15167                   IF fnd_log.level_error >= fnd_log.g_current_runtime_level
15168                   THEN
15169                      fnd_log.STRING (fnd_log.level_error,
15170                                         g_module_current
15171                                      || '.UPDATE_CONTRACT_IDC.ERROR',
15172                                         'SR is logged '
15173                                      || ',status = '
15174                                      || l_return_status
15175                                     );
15176                   END IF;
15177 
15178                   okc_api.set_message (g_app_name, 'OKS_SR_EXISTS');
15179                   RAISE g_exception_halt_validation;
15180                ELSE
15181                   CLOSE l_checksr_csr;
15182 
15183                   OPEN l_subline_dates (p_kdtl_tbl (l_ctr).service_line_id,
15184                                         p_kdtl_tbl (l_ctr).hdr_id,
15185                                         p_kdtl_tbl (l_ctr).object_line_id
15186                                        );
15187 
15188                   FETCH l_subline_dates
15189                    INTO l_subline_rec;
15190 
15191                   IF     l_subline_dates%FOUND
15192                      AND l_subline_rec.sdt IS NOT NULL
15193                      AND l_subline_rec.edt IS NOT NULL
15194                   THEN
15195                      IF     l_subline_rec.sdt < l_sub_sdt
15196                         AND l_subline_rec.edt > l_sub_edt
15197                      THEN
15198                         l_top_flag := 'F';
15199                      ELSE
15200                         IF l_subline_rec.sdt >= l_sub_sdt
15201                         THEN
15202                            l_top_sdt := l_sub_sdt;
15203                         ELSE
15204                            l_top_sdt := l_subline_rec.sdt;
15205                         END IF;
15206 
15207                         IF l_subline_rec.edt >= l_sub_edt
15208                         THEN
15209                            l_top_edt := l_subline_rec.edt;
15210                         ELSE
15211                            l_top_edt := l_sub_edt;
15212                         END IF;
15213 
15214                         l_top_flag := 'T';
15215                      END IF;
15216                   ELSE
15217                      l_top_flag := 'T';
15218                      l_top_sdt := l_sub_sdt;
15219                      l_top_edt := l_sub_edt;
15220                   --errorout(   l_top_sdt || ': '||  l_top_edt   );
15221                   END IF;
15222 
15223                   CLOSE l_subline_dates;
15224 
15225                   IF l_top_flag = 'T'
15226                   THEN
15227                      OPEN l_topline_dates (p_kdtl_tbl (l_ctr).hdr_id,
15228                                            p_kdtl_tbl (l_ctr).service_line_id
15229                                           );
15230 
15231                      FETCH l_topline_dates
15232                       INTO l_topline_rec;
15233 
15234                      IF     l_topline_dates%FOUND
15235                         AND l_topline_rec.sdt IS NOT NULL
15236                         AND l_topline_rec.edt IS NOT NULL
15237                      THEN
15238                         IF     l_topline_rec.sdt < l_top_sdt
15239                            AND l_topline_rec.edt > l_top_edt
15240                         THEN
15241                            l_hdr_flag := 'F';
15242                         ELSE
15243                            IF l_topline_rec.sdt >= l_top_sdt
15244                            THEN
15245                               l_hdr_sdt := l_top_sdt;
15246                            ELSE
15247                               l_hdr_sdt := l_topline_rec.sdt;
15248                            END IF;
15249 
15250                            IF l_topline_rec.edt >= l_top_edt
15251                            THEN
15252                               l_hdr_edt := l_topline_rec.edt;
15253                            ELSE
15254                               l_hdr_edt := l_top_edt;
15255                            END IF;
15256 
15257                            l_hdr_flag := 'T';
15258                         END IF;
15259                      ELSE
15260                         l_hdr_flag := 'T';
15261                         l_hdr_sdt := l_top_sdt;
15262                         l_hdr_edt := l_top_edt;
15263                      END IF;
15264 
15265                      CLOSE l_topline_dates;
15266 
15267                      IF l_hdr_flag = 'T'
15268                      THEN
15269                         l_sts_flag := 'Y';
15270 
15271                         IF fnd_log.level_statement >=
15272                                               fnd_log.g_current_runtime_level
15273                         THEN
15274                            fnd_log.STRING (fnd_log.level_statement,
15275                                               g_module_current
15276                                            || '.UPDATE_CONTRACT_IDC',
15277                                               'Header start date = '
15278                                            || l_hdr_sdt
15279                                            || ',End date = '
15280                                            || l_hdr_edt
15281                                            || ',status = '
15282                                            || l_sts_flag
15283                                           );
15284                         END IF;
15285 
15286                         update_hdr_dates
15287                                         (p_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
15288                                          p_new_sdt        => l_hdr_sdt,
15289                                          p_new_edt        => l_hdr_edt,
15290                                          p_sts_flag       => l_sts_flag,
15291                                          x_status         => l_return_status,
15292                                          x_msg_count      => x_msg_count,
15293                                          x_msg_data       => x_msg_data
15294                                         );
15295 
15296                         IF (fnd_log.level_event >=
15297                                                fnd_log.g_current_runtime_level
15298                            )
15299                         THEN
15300                            fnd_log.STRING
15301                                       (fnd_log.level_event,
15302                                           g_module_current
15303                                        || '.UPDATE_CONTRACT_IDC',
15304                                           'Update_hdr_dates(Return status = '
15305                                        || l_return_status
15306                                        || ')'
15307                                       );
15308                         END IF;
15309 
15310                         IF NOT l_return_status = okc_api.g_ret_sts_success
15311                         THEN
15312                            RAISE g_exception_halt_validation;
15313                         END IF;
15314                      END IF;                                         --hdrflag
15315 
15316                      l_sts_flag := 'Y';
15317 
15318                      IF fnd_log.level_statement >=
15319                                                fnd_log.g_current_runtime_level
15320                      THEN
15321                         fnd_log.STRING (fnd_log.level_statement,
15322                                            g_module_current
15323                                         || '.UPDATE_CONTRACT_IDC',
15324                                            'Top line start date = '
15325                                         || l_top_sdt
15326                                         || ',End date = '
15327                                         || l_top_edt
15328                                         || ',status = '
15329                                         || l_sts_flag
15330                                        );
15331                      END IF;
15332 
15333                      update_line_dates
15334                                (p_cle_id             => p_kdtl_tbl (l_ctr).service_line_id,
15335                                 p_chr_id             => p_kdtl_tbl (l_ctr).hdr_id,
15336                                 p_new_sdt            => l_top_sdt,
15337                                 p_new_edt            => l_top_edt,
15338                                 p_sts_flag           => l_sts_flag,
15339                                 p_warranty_flag      => 'W',
15340                                 x_status             => l_return_status,
15341                                 x_msg_count          => x_msg_count,
15342                                 x_msg_data           => x_msg_data
15343                                );
15344 
15345                      IF (fnd_log.level_event >=
15346                                                fnd_log.g_current_runtime_level
15347                         )
15348                      THEN
15349                         fnd_log.STRING
15350                                      (fnd_log.level_event,
15351                                          g_module_current
15352                                       || '.UPDATE_CONTRACT_IDC',
15353                                          'Update_Line_dates(Return status = '
15354                                       || l_return_status
15355                                       || ')'
15356                                      );
15357                      END IF;
15358 
15359                      IF NOT l_return_status = okc_api.g_ret_sts_success
15360                      THEN
15361                         RAISE g_exception_halt_validation;
15362                      END IF;
15363 
15364                      OPEN l_serv_csr (p_kdtl_tbl (l_ctr).service_line_id);
15365 
15366                      FETCH l_serv_csr
15367                       INTO line_name, line_desc;
15368 
15369                      CLOSE l_serv_csr;
15370 
15371                      IF fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE') =
15372                                                                 'DISPLAY_NAME'
15373                      THEN
15374                         l_desc := line_name;
15375                      ELSE
15376                         l_desc := line_desc;
15377                      END IF;
15378 
15379                      l_invoice_text :=
15380                              l_desc || ':' || to_char(l_top_sdt,'DD-MON-YYYY')
15381 			     || ':' || to_char(l_top_edt,'DD-MON-YYYY');
15382 
15383                      OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).service_line_id
15384                                             );
15385 
15386                      FETCH get_oks_line_dtls
15387                       INTO l_id, l_obj_version_num;
15388 
15389                      CLOSE get_oks_line_dtls;
15390 
15391                      l_klnv_tbl_in (1).ID := l_id;
15392                      l_klnv_tbl_in (1).invoice_text := l_invoice_text;
15393                      l_klnv_tbl_in (1).object_version_number :=
15394                                                              l_obj_version_num;
15395                      oks_contract_line_pub.update_line
15396                                           (p_api_version        => l_api_version,
15397                                            p_init_msg_list      => l_init_msg_list,
15398                                            x_return_status      => l_return_status,
15399                                            x_msg_count          => x_msg_count,
15400                                            x_msg_data           => x_msg_data,
15401                                            p_klnv_tbl           => l_klnv_tbl_in,
15402                                            x_klnv_tbl           => l_klnv_tbl_out,
15403                                            p_validate_yn        => 'N'
15404                                           );
15405 
15406                      IF (fnd_log.level_event >=
15407                                                fnd_log.g_current_runtime_level
15408                         )
15409                      THEN
15410                         fnd_log.STRING
15411                            (fnd_log.level_event,
15412                             g_module_current || '.UPDATE_CONTRACT_IDC',
15413                                'oks_contract_line_pub.update_line(Return status = '
15414                             || l_return_status
15415                             || ')'
15416                            );
15417                      END IF;
15418 
15419                      IF NOT l_return_status = 'S'
15420                      THEN
15421                         okc_api.set_message (g_app_name,
15422                                              g_required_value,
15423                                              g_col_name_token,
15424                                              'OKS Contract COV LINE'
15425                                             );
15426                         RAISE g_exception_halt_validation;
15427                      END IF;
15428 
15429                      --mmadhavi end bug 3761489
15430                      oks_coverages_pub.update_cov_eff
15431                         (p_api_version          => 1.0,
15432                          p_init_msg_list        => 'T',
15433                          x_return_status        => l_return_status,
15434                          x_msg_count            => x_msg_count,
15435                          x_msg_data             => x_msg_data,
15436                          p_service_line_id      => p_kdtl_tbl (l_ctr).service_line_id,
15437                          p_new_start_date       => l_top_sdt,
15438                          p_new_end_date         => l_top_edt
15439                         );
15440 
15441                      IF (fnd_log.level_event >=
15442                                                fnd_log.g_current_runtime_level
15443                         )
15444                      THEN
15445                         fnd_log.STRING
15446                            (fnd_log.level_event,
15447                             g_module_current || '.UPDATE_CONTRACT_IDC',
15448                                'oks_coverages_pub.update_cov_eff(Return status = '
15449                             || l_return_status
15450                             || ')'
15451                            );
15452                      END IF;
15453 
15454                      IF NOT l_return_status = okc_api.g_ret_sts_success
15455                      THEN
15456                         RAISE g_exception_halt_validation;
15457                      END IF;
15458 
15459                      oks_pm_programs_pvt.adjust_pm_program_schedule
15460                         (p_api_version           => 1.0,
15461                          p_init_msg_list         => 'F',
15462                          p_contract_line_id      => p_kdtl_tbl (l_ctr).service_line_id,
15463                          p_new_start_date        => l_top_sdt,
15464                          p_new_end_date          => l_top_edt,
15465                          x_return_status         => l_return_status,
15466                          x_msg_count             => x_msg_count,
15467                          x_msg_data              => x_msg_data
15468                         );
15469 
15470                      IF (fnd_log.level_event >=
15471                                                fnd_log.g_current_runtime_level
15472                         )
15473                      THEN
15474                         fnd_log.STRING
15475                            (fnd_log.level_event,
15476                             g_module_current || '.UPDATE_CONTRACT_IDC',
15477                                'oks_pm_programs_pvt.ADJUST_PM_PROGRAM_SCHEDULE(Return status = '
15478                             || l_return_status
15479                             || ')'
15480                            );
15481                      END IF;
15482 
15483                      IF NOT l_return_status = okc_api.g_ret_sts_success
15484                      THEN
15485                         RAISE g_exception_halt_validation;
15486                      END IF;
15487                   END IF;                                            --topflag
15488 
15489                   IF fnd_log.level_statement >=
15490                                                fnd_log.g_current_runtime_level
15491                   THEN
15492                      fnd_log.STRING (fnd_log.level_statement,
15493                                      g_module_current
15494                                      || '.UPDATE_CONTRACT_IDC',
15495                                         'sub line start date = '
15496                                      || l_sub_sdt
15497                                      || ',End date'
15498                                      || l_sub_edt
15499                                     );
15500                   END IF;
15501 
15502                   update_line_dates
15503                                 (p_cle_id             => p_kdtl_tbl (l_ctr).object_line_id,
15504                                  p_chr_id             => p_kdtl_tbl (l_ctr).hdr_id,
15505                                  p_new_sdt            => l_sub_sdt,
15506                                  p_new_edt            => l_sub_edt,
15507                                  p_sts_flag           => 'Y',
15508                                  p_warranty_flag      => 'W',
15509                                  x_status             => l_return_status,
15510                                  x_msg_count          => x_msg_count,
15511                                  x_msg_data           => x_msg_data
15512                                 );
15513 
15514                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15515                      )
15516                   THEN
15517                      fnd_log.STRING (fnd_log.level_event,
15518                                      g_module_current
15519                                      || '.UPDATE_CONTRACT_IDC',
15520                                         'Update_line_dates(Return status = '
15521                                      || l_return_status
15522                                      || ')'
15523                                     );
15524                   END IF;
15525 
15526                   IF NOT l_return_status = okc_api.g_ret_sts_success
15527                   THEN
15528                      RAISE g_exception_halt_validation;
15529                   END IF;
15530 
15531                   --mmadhavi start bug 3761489
15532                   l_prod_item_id := p_kdtl_tbl (l_ctr).prod_inventory_item;
15533 
15534                   OPEN get_oks_line_dtls (p_kdtl_tbl (l_ctr).object_line_id);
15535 
15536                   FETCH get_oks_line_dtls
15537                    INTO l_id, l_obj_version_num;
15538 
15539                   CLOSE get_oks_line_dtls;
15540 
15541                   l_quantity := p_kdtl_tbl (l_ctr).old_cp_quantity;
15542                   l_invoice_text :=
15543                      getformattedinvoicetext (l_prod_item_id,
15544                                               l_sub_sdt,
15545                                               l_sub_edt,
15546                                               line_desc,
15547                                               l_quantity
15548                                              );
15549                   l_klnv_tbl_in (1).ID := l_id;
15550                   l_klnv_tbl_in (1).invoice_text := l_invoice_text;
15551                   l_klnv_tbl_in (1).object_version_number := l_obj_version_num;
15552                   oks_contract_line_pub.update_line
15553                                           (p_api_version        => l_api_version,
15554                                            p_init_msg_list      => l_init_msg_list,
15555                                            x_return_status      => l_return_status,
15556                                            x_msg_count          => x_msg_count,
15557                                            x_msg_data           => x_msg_data,
15558                                            p_klnv_tbl           => l_klnv_tbl_in,
15559                                            x_klnv_tbl           => l_klnv_tbl_out,
15560                                            p_validate_yn        => 'N'
15561                                           );
15562 
15563                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15564                      )
15565                   THEN
15566                      fnd_log.STRING
15567                         (fnd_log.level_event,
15568                          g_module_current || '.UPDATE_CONTRACT_IDC',
15569                             'oks_contract_line_pub.update_line(Return status = '
15570                          || l_return_status
15571                          || ')'
15572                         );
15573                   END IF;
15574 
15575                   IF NOT l_return_status = 'S'
15576                   THEN
15577                      okc_api.set_message (g_app_name,
15578                                           g_required_value,
15579                                           g_col_name_token,
15580                                           'OKS Contract COV LINE'
15581                                          );
15582                      RAISE g_exception_halt_validation;
15583                   END IF;
15584 
15585                   -- mmadhavi end bug 3761489
15586                   OPEN l_lndates_csr (p_kdtl_tbl (l_ctr).service_line_id);
15587 
15588                   FETCH l_lndates_csr
15589                    INTO l_lndates_rec;
15590 
15591                   CLOSE l_lndates_csr;
15592 
15593                   OPEN l_hdrdates_csr (p_kdtl_tbl (l_ctr).hdr_id);
15594 
15595                   FETCH l_hdrdates_csr
15596                    INTO l_hdrdates_rec;
15597 
15598                   CLOSE l_hdrdates_csr;
15599 
15600                   l_sts_code := NULL;
15601                   get_sts_code (l_hdrdates_rec.sts_code,
15602                                 NULL,
15603                                 l_ste_code,
15604                                 l_sts_code
15605                                );
15606                   l_inst_dtls_tbl (1).new_contract_id :=
15607                                                      p_kdtl_tbl (l_ctr).hdr_id;
15608                   l_inst_dtls_tbl (1).new_contact_start_date :=
15609                                                      l_hdrdates_rec.start_date;
15610                   l_inst_dtls_tbl (1).new_contract_end_date :=
15611                                                        l_hdrdates_rec.end_date;
15612                   l_inst_dtls_tbl (1).new_service_line_id :=
15613                                             p_kdtl_tbl (l_ctr).service_line_id;
15614                   l_inst_dtls_tbl (1).new_service_start_date :=
15615                                                       l_lndates_rec.start_date;
15616                   l_inst_dtls_tbl (1).new_service_end_date :=
15617                                                         l_lndates_rec.end_date;
15618                   l_inst_dtls_tbl (1).new_subline_id :=
15619                                              p_kdtl_tbl (l_ctr).object_line_id;
15620                   l_inst_dtls_tbl (1).new_subline_start_date :=
15621                                   NVL (l_sub_sdt, p_kdtl_tbl (l_ctr).prod_sdt);
15622                   l_inst_dtls_tbl (1).new_subline_end_date :=
15623                                   NVL (l_sub_edt, p_kdtl_tbl (l_ctr).prod_edt);
15624                   l_inst_dtls_tbl (1).subline_date_terminated := NULL;
15625                   l_inst_dtls_tbl (1).new_k_status := l_sts_code;
15626                   l_inst_dtls_tbl (1).new_customer :=
15627                                                p_kdtl_tbl (l_ctr).cust_account;
15628                END IF;                                             --SR logged
15629             ELSE
15630                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
15631                THEN
15632                   fnd_log.STRING (fnd_log.level_statement,
15633                                   g_module_current || '.UPDATE_CONTRACT_IDC',
15634                                   'coverage attribute not set'
15635                                  );
15636                END IF;
15637             END IF;                                       --coverage attribute
15638 
15639             IF l_inst_dtls_tbl.COUNT <> 0
15640             THEN
15641                IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
15642                THEN
15643                   OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
15644 
15645                   FETCH l_refnum_csr
15646                    INTO l_ref_num;
15647 
15648                   CLOSE l_refnum_csr;
15649 
15650                   l_parameters :=
15651                         ' Old CP :'
15652                      || p_kdtl_tbl (l_ctr).old_cp_id
15653                      || ','
15654                      || 'Item Id:'
15655                      || p_kdtl_tbl (l_ctr).prod_inventory_item
15656                      || ','
15657                      || 'Old Quantity:'
15658                      || p_kdtl_tbl (l_ctr).current_cp_quantity
15659                      || ','
15660                      || 'Transaction type :'
15661                      || 'IDC'
15662                      || ','
15663                      || ' Transaction date :'
15664                      || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
15665                      || ','
15666                      || 'Installation Date:'
15667                      || trunc(p_kdtl_tbl (l_ctr).installation_date);
15668                   --oks_instance_history
15669                   l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
15670                   l_insthist_rec.instance_id := p_kdtl_tbl (l_ctr).old_cp_id;
15671                   l_insthist_rec.transaction_type := 'IDC';
15672                   l_insthist_rec.transaction_date :=
15673                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15674                   l_insthist_rec.reference_number := l_ref_num;
15675                   l_insthist_rec.PARAMETERS := l_parameters;
15676                   oks_ins_pvt.insert_row (p_api_version        => 1.0,
15677                                           p_init_msg_list      => 'T',
15678                                           x_return_status      => l_return_status,
15679                                           x_msg_count          => x_msg_count,
15680                                           x_msg_data           => x_msg_data,
15681                                           p_insv_rec           => l_insthist_rec,
15682                                           x_insv_rec           => x_insthist_rec
15683                                          );
15684 
15685                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
15686                      )
15687                   THEN
15688                      fnd_log.STRING
15689                                 (fnd_log.level_event,
15690                                  g_module_current || '.UPDATE_CONTRACT_IDC',
15691                                     'oks_ins_pvt.insert_row(Return status = '
15692                                  || l_return_status
15693                                  || ')'
15694                                 );
15695                   END IF;
15696 
15697                   x_return_status := l_return_status;
15698 
15699                   IF NOT l_return_status = okc_api.g_ret_sts_success
15700                   THEN
15701                      x_return_status := l_return_status;
15702                      RAISE g_exception_halt_validation;
15703                   END IF;
15704 
15705                   l_instparent_id := x_insthist_rec.ID;
15706                END IF;
15707 
15708                l_inst_dtls_tbl (1).ins_id := l_instparent_id;
15709                --oks_inst_history_details
15710                oks_ihd_pvt.insert_row (p_api_version        => 1.0,
15711                                        p_init_msg_list      => 'T',
15712                                        x_return_status      => l_return_status,
15713                                        x_msg_count          => x_msg_count,
15714                                        x_msg_data           => x_msg_data,
15715                                        p_ihdv_tbl           => l_inst_dtls_tbl,
15716                                        x_ihdv_tbl           => x_inst_dtls_tbl
15717                                       );
15718 
15719                IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15720                THEN
15721                   fnd_log.STRING
15722                                 (fnd_log.level_event,
15723                                  g_module_current || '.UPDATE_CONTRACT_IDC',
15724                                     'oks_ihd_pvt.insert_row(Return status = '
15725                                  || l_return_status
15726                                  || ')'
15727                                 );
15728                END IF;
15729 
15730                x_return_status := l_return_status;
15731 
15732                IF NOT l_return_status = okc_api.g_ret_sts_success
15733                THEN
15734                   x_return_status := l_return_status;
15735                   RAISE g_exception_halt_validation;
15736                END IF;
15737             END IF;
15738 
15739             launch_workflow
15740                        (   'INSTALL BASE ACTIVITY : INSTALLTION DATE CHANGE  '
15741                         || fnd_global.local_chr (10)
15742                         || 'Contract Number       :         '
15743                         || get_contract_number (p_kdtl_tbl (l_ctr).hdr_id)
15744                         || fnd_global.local_chr (10)
15745                         || 'Inatallation date changed to    :         '
15746                         || trunc(p_kdtl_tbl (l_ctr).installation_date)
15747                        );
15748             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
15749             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
15750             l_hdr_sdt := NULL;
15751             l_hdr_edt := NULL;
15752             l_top_sdt := NULL;
15753             l_top_edt := NULL;
15754             l_sub_sdt := NULL;
15755             l_sub_edt := NULL;
15756          END LOOP;
15757       END IF;
15758    EXCEPTION
15759       WHEN g_exception_halt_validation
15760       THEN
15761          x_return_status := l_return_status;
15762          NULL;
15763       WHEN OTHERS
15764       THEN
15765          x_return_status := okc_api.g_ret_sts_unexp_error;
15766          okc_api.set_message (g_app_name,
15767                               g_unexpected_error,
15768                               g_sqlcode_token,
15769                               SQLCODE,
15770                               g_sqlerrm_token,
15771                               SQLERRM
15772                              );
15773    END;
15774 
15775    PROCEDURE create_contract_ibupdate (
15776       p_kdtl_tbl        IN              contract_tbl,
15777       x_return_status   OUT NOCOPY      VARCHAR2,
15778       x_msg_count       OUT NOCOPY      NUMBER,
15779       x_msg_data        OUT NOCOPY      VARCHAR2
15780    )
15781    IS
15782       CURSOR l_cust_csr (p_inventory_item_id NUMBER)
15783       IS
15784          SELECT mtl.NAME, mtl.description
15785            FROM okx_system_items_v mtl
15786           WHERE mtl.inventory_item_id = p_inventory_item_id
15787             AND mtl.organization_id = okc_context.get_okc_organization_id;
15788 
15789       CURSOR l_bill_csr (p_cle_id NUMBER)
15790       IS
15791          SELECT SUM (amount)
15792            FROM oks_bill_sub_lines_v
15793           WHERE cle_id = p_cle_id;
15794 
15795       /* Added for Bug#14325727 */
15796       CURSOR l_serv_csr (p_serv_id NUMBER)
15797       IS
15798       SELECT  DECODE (fnd_profile.VALUE ('OKS_ITEM_DISPLAY_PREFERENCE'), 'DISPLAY_DESC', t.description , b.concatenated_segments) description
15799         FROM mtl_system_items_b_kfv b, mtl_system_items_tl t
15800        WHERE b.inventory_item_id = t.inventory_item_id
15801          AND b.organization_id = t.organization_id
15802          AND t.LANGUAGE = USERENV ('LANG')
15803          AND b.inventory_item_id = p_serv_id
15804          AND ROWNUM < 2;
15805 
15806       /*Commented for Bug#14325727 */
15807       /*
15808       CURSOR l_serv_csr (p_serv_id NUMBER)
15809       IS
15810          SELECT b.concatenated_segments description
15811            FROM mtl_system_items_b_kfv b
15812           WHERE b.inventory_item_id = p_serv_id AND ROWNUM < 2;
15813       */
15814       CURSOR l_refnum_csr (p_cp_id NUMBER)
15815       IS
15816          SELECT instance_number
15817            FROM csi_item_instances
15818           WHERE instance_id = p_cp_id;
15819 
15820       l_ref_num                   VARCHAR2 (30);
15821       l_parameters                VARCHAR2 (2000);
15822       l_renewal_id                NUMBER;
15823       --Contract Line Table
15824       l_clev_tbl_in               okc_contract_pub.clev_tbl_type;
15825       l_clev_tbl_out              okc_contract_pub.clev_tbl_type;
15826       --SalesCredit
15827       l_salescredit_tbl_line      oks_extwarprgm_pvt.salescredit_tbl;
15828       l_salescredit_tbl_hdr       oks_extwarprgm_pvt.salescredit_tbl;
15829       l_line_rec                  k_line_service_rec_type;
15830       l_covd_rec                  k_line_covered_level_rec_type;
15831       -- l_kdtl_tbl                              OKS_EXTWAR_UTIL_PVT.Contract_tbl_type;
15832       l_available_yn              VARCHAR2 (1);
15833       l_return_status             VARCHAR2 (5)    := okc_api.g_ret_sts_success;
15834       l_chrid                     NUMBER                               := NULL;
15835       l_lineid                    NUMBER                               := NULL;
15836       l_cust_rec                  l_cust_csr%ROWTYPE;
15837       l_terminate_rec             okc_terminate_pvt.terminate_in_cle_rec;
15838       l_api_version      CONSTANT NUMBER                                := 1.0;
15839       l_init_msg_list    CONSTANT VARCHAR2 (1)              := okc_api.g_false;
15840       l_ste_code                  VARCHAR2 (40);
15841       l_sts_code                  VARCHAR2 (40);
15842       l_billed_amount             NUMBER;
15843       l_update_top_line           VARCHAR2 (1);
15844       l_msg_count                 NUMBER;
15845       l_msg_data                  VARCHAR2 (2000);
15846       l_covlvl_id                 NUMBER;
15847       l_amount                    NUMBER;
15848       l_subline_amount            NUMBER;
15849       l_srvc_stdt                 DATE;
15850       l_bill_schd_yn              VARCHAR2 (1);
15851       l_dur                       NUMBER;
15852       l_time                      VARCHAR2 (25);
15853       l_sll_tbl                   oks_bill_sch.streamlvl_tbl;
15854       l_bil_sch_out               oks_bill_sch.itembillsch_tbl;
15855       l_strmlvl_id                NUMBER                               := NULL;
15856       l_contact_tbl_in            oks_extwarprgm_pvt.contact_tbl;
15857       l_price_attribs_in          oks_extwarprgm_pvt.pricing_attributes_type;
15858       l_ctr                       NUMBER;
15859       l_temp                      VARCHAR2 (2000);
15860       l_suppress_credit           VARCHAR2 (10);
15861 
15862       CURSOR l_amount_csr (p_cle_id NUMBER)
15863       IS
15864          SELECT price_negotiated
15865            FROM okc_k_lines_b
15866           WHERE ID = p_cle_id;
15867 
15868       l_cov_tbl                   oks_bill_rec_pub.covered_tbl;
15869       l_ptr                       NUMBER                                  := 0;
15870       l_input_details             oks_qp_pkg.input_details;
15871       l_output_details            oks_qp_pkg.price_details;
15872       l_modif_details             qp_preq_grp.line_detail_tbl_type;
15873       l_pb_details                oks_qp_pkg.g_price_break_tbl_type;
15874       l_warranty_flag             VARCHAR2 (2);
15875       l_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
15876       x_inst_dtls_tbl             oks_ihd_pvt.ihdv_tbl_type;
15877       l_instparent_id             NUMBER;
15878       l_old_cp_id                 NUMBER;
15879       l_insthist_rec              oks_ins_pvt.insv_rec_type;
15880       x_insthist_rec              oks_ins_pvt.insv_rec_type;
15881       l_target_chr_id             NUMBER;
15882       l_opr_instance_id           NUMBER;
15883       l_renewal_opr_instance_id   NUMBER;
15884       l_update_id                 NUMBER;
15885       l_source_line_id            NUMBER;
15886       l_create_oper_instance      VARCHAR2 (1);
15887    BEGIN
15888       x_return_status := okc_api.g_ret_sts_success;
15889       l_old_cp_id := 0;
15890       l_target_chr_id := 0;
15891 
15892       IF (fnd_log.level_event >= fnd_log.g_current_runtime_level)
15893       THEN
15894          fnd_log.STRING (fnd_log.level_event,
15895                          g_module_current || '.CREATE_CONTRACT_IBUPDATE.',
15896                          'count = ' || p_kdtl_tbl.COUNT || ')'
15897                         );
15898       END IF;
15899 
15900       IF p_kdtl_tbl.COUNT > 0
15901       THEN
15902          l_ctr := p_kdtl_tbl.FIRST;
15903 
15904          LOOP
15905             l_ptr := 1;
15906             l_inst_dtls_tbl.DELETE;
15907             okc_context.set_okc_org_context
15908                                            (p_kdtl_tbl (l_ctr).hdr_org_id,
15909                                             p_kdtl_tbl (l_ctr).organization_id
15910                                            );
15911 
15912             --  If status = 'ENTERED' then just update the qty and reprice and update billing schedule.
15913             --  else check if line is already billed.
15914             -- If partially billed or unbilled update the qty and reprice and update billing schedule.
15915             -- If line fully billed Then
15916             -- update qty of subline.
15917             -- create new top line and subline with updated qty and create one time billing schedule.
15918             -- the amount will be the diff.
15919 
15920             --If the qty decrement is due to return for repair ignore, only manual increments to the qty from IB is honored.
15921             IF p_kdtl_tbl (l_ctr).return_reason_code = 'REGULAR'
15922             THEN
15923                IF p_kdtl_tbl (l_ctr).new_quantity >
15924                                            p_kdtl_tbl (l_ctr).old_cp_quantity
15925                THEN
15926                   get_sts_code (NULL,
15927                                 p_kdtl_tbl (l_ctr).prod_sts_code,
15928                                 l_ste_code,
15929                                 l_sts_code
15930                                );
15931 
15932                   IF fnd_log.level_statement >=
15933                                                fnd_log.g_current_runtime_level
15934                   THEN
15935                      fnd_log.STRING (fnd_log.level_statement,
15936                                         g_module_current
15937                                      || '.CREATE_CONTRACT_IBUPDATE',
15938                                      'lse_id= ' || p_kdtl_tbl (l_ctr).lse_id
15939                                     );
15940                   END IF;
15941 
15942                   --errorout_n('in update lse_id'||p_kdtl_tbl(l_ctr).lse_id);
15943                   -- For Warranty lines instance qty is updated, no repricing done.
15944                   IF p_kdtl_tbl (l_ctr).lse_id = 18
15945                   THEN                                              --Warranty
15946                      UPDATE okc_k_items
15947                         SET number_of_items = p_kdtl_tbl (l_ctr).new_quantity
15948                       WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
15949 
15950                      l_inst_dtls_tbl (l_ptr).transaction_date :=
15951                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
15952                      l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
15953                      l_inst_dtls_tbl (l_ptr).instance_amt_old :=
15954                                              p_kdtl_tbl (l_ctr).service_amount;
15955                      l_inst_dtls_tbl (l_ptr).instance_qty_old :=
15956                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
15957                      l_inst_dtls_tbl (l_ptr).old_contract_id :=
15958                                                      p_kdtl_tbl (l_ctr).hdr_id;
15959                      l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
15960                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
15961                      l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
15962                                                     p_kdtl_tbl (l_ctr).hdr_edt;
15963                      l_inst_dtls_tbl (l_ptr).old_service_line_id :=
15964                                             p_kdtl_tbl (l_ctr).service_line_id;
15965                      l_inst_dtls_tbl (l_ptr).old_service_start_date :=
15966                                                 p_kdtl_tbl (l_ctr).service_sdt;
15967                      l_inst_dtls_tbl (l_ptr).old_service_end_date :=
15968                                                 p_kdtl_tbl (l_ctr).service_edt;
15969                      l_inst_dtls_tbl (l_ptr).old_subline_id :=
15970                                              p_kdtl_tbl (l_ctr).object_line_id;
15971                      l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
15972                                                    p_kdtl_tbl (l_ctr).prod_sdt;
15973                      l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
15974                                                    p_kdtl_tbl (l_ctr).prod_edt;
15975                      l_inst_dtls_tbl (l_ptr).old_customer :=
15976                                                p_kdtl_tbl (l_ctr).cust_account;
15977                      l_inst_dtls_tbl (l_ptr).old_k_status :=
15978                                                     p_kdtl_tbl (l_ctr).hdr_sts;
15979                      l_inst_dtls_tbl (l_ptr).instance_id_new :=
15980                                                   p_kdtl_tbl (l_ctr).new_cp_id;
15981                      l_inst_dtls_tbl (l_ptr).instance_amt_new := NULL;
15982                      l_inst_dtls_tbl (l_ptr).instance_qty_new :=
15983                                                p_kdtl_tbl (l_ctr).new_quantity;
15984                      l_inst_dtls_tbl (l_ptr).new_contract_id :=
15985                                                      p_kdtl_tbl (l_ctr).hdr_id;
15986                      l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
15987                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
15988                      l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
15989                                                     p_kdtl_tbl (l_ctr).hdr_edt;
15990                      l_inst_dtls_tbl (l_ptr).new_service_line_id :=
15991                                             p_kdtl_tbl (l_ctr).service_line_id;
15992                      l_inst_dtls_tbl (l_ptr).new_service_start_date :=
15993                                                 p_kdtl_tbl (l_ctr).service_sdt;
15994                      l_inst_dtls_tbl (l_ptr).new_service_end_date :=
15995                                                 p_kdtl_tbl (l_ctr).service_edt;
15996                      l_inst_dtls_tbl (l_ptr).new_subline_id :=
15997                                              p_kdtl_tbl (l_ctr).object_line_id;
15998                      l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
15999                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16000                      l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16001                                                    p_kdtl_tbl (l_ctr).prod_edt;
16002                      l_inst_dtls_tbl (l_ptr).new_customer :=
16003                                                p_kdtl_tbl (l_ctr).cust_account;
16004                      l_inst_dtls_tbl (l_ptr).new_k_status :=
16005                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16006                   ELSE                 --lse_id = 18
16007                                        -- For service/ Ext.Warranty line types
16008                      l_billed_amount := NULL;
16009 
16010                      OPEN l_bill_csr (p_kdtl_tbl (l_ctr).object_line_id);
16011 
16012                      FETCH l_bill_csr
16013                       INTO l_billed_amount;
16014 
16015                      CLOSE l_bill_csr;
16016 
16017                      IF fnd_log.level_statement >=
16018                                               fnd_log.g_current_runtime_level
16019                      THEN
16020                         fnd_log.STRING (fnd_log.level_statement,
16021                                            g_module_current
16022                                         || '.CREATE_CONTRACT_IBUPDATE',
16023                                            'Billed amount = '
16024                                         || l_billed_amount
16025                                         || ',Service amount = '
16026                                         || p_kdtl_tbl (l_ctr).service_amount
16027                                        );
16028                      END IF;
16029 
16030                      --If amount billed is null, update instance qty and reprice.
16031                      IF l_billed_amount IS NULL
16032                      THEN
16033                         UPDATE okc_k_items
16034                            SET number_of_items =
16035                                                p_kdtl_tbl (l_ctr).new_quantity
16036                          WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
16037 
16038                         --calling reprice
16039                         l_input_details.line_id :=
16040                                             p_kdtl_tbl (l_ctr).service_line_id;
16041                         l_input_details.subline_id :=
16042                                              p_kdtl_tbl (l_ctr).object_line_id;
16043                         l_input_details.intent := 'SP';
16044                         oks_qp_int_pvt.compute_price
16045                                        (p_api_version              => 1.0,
16046                                         p_init_msg_list            => 'T',
16047                                         p_detail_rec               => l_input_details,
16048                                         x_price_details            => l_output_details,
16049                                         x_modifier_details         => l_modif_details,
16050                                         x_price_break_details      => l_pb_details,
16051                                         x_return_status            => l_return_status,
16052                                         x_msg_count                => x_msg_count,
16053                                         x_msg_data                 => x_msg_data
16054                                        );
16055 
16056                         IF (fnd_log.level_event >=
16057                                                fnd_log.g_current_runtime_level
16058                            )
16059                         THEN
16060                            fnd_log.STRING
16061                               (fnd_log.level_event,
16062                                g_module_current || '.CREATE_CONTRACT_IBUPDATE',
16063                                   'oks_qp_int_pvt.compute_price(Return status = '
16064                                || l_return_status
16065                                || ',Repriced amount = '
16066                                || l_amount
16067                                || ')'
16068                               );
16069                         END IF;
16070 
16071                         IF l_return_status <> okc_api.g_ret_sts_success
16072                         THEN
16073                            RAISE g_exception_halt_validation;
16074                         END IF;
16075 
16076                         ---update billing schedule
16077                         oks_bill_sch.create_bill_sch_cp
16078                            (p_top_line_id        => p_kdtl_tbl (l_ctr).service_line_id,
16079                             p_cp_line_id         => p_kdtl_tbl (l_ctr).object_line_id,
16080                             p_cp_new             => 'N',
16081                             x_return_status      => l_return_status,
16082                             x_msg_count          => x_msg_count,
16083                             x_msg_data           => x_msg_data
16084                            );
16085 
16086                         IF (fnd_log.level_event >=
16087                                                fnd_log.g_current_runtime_level
16088                            )
16089                         THEN
16090                            fnd_log.STRING
16091                               (fnd_log.level_event,
16092                                g_module_current || '.CREATE_CONTRACT_IBUPDATE',
16093                                   'Oks_bill_sch.Create_Bill_Sch_CP(Return status = '
16094                                || l_return_status
16095                                || ')'
16096                               );
16097                         END IF;
16098 
16099                         IF l_return_status <> okc_api.g_ret_sts_success
16100                         THEN
16101                            okc_api.set_message (g_app_name,
16102                                                 g_required_value,
16103                                                 g_col_name_token,
16104                                                 'Sched Billing Rule (LINE)'
16105                                                );
16106                            RAISE g_exception_halt_validation;
16107                         END IF;
16108 
16109                         l_subline_amount := NULL;
16110 
16111                         OPEN l_amount_csr (p_kdtl_tbl (l_ctr).object_line_id);
16112 
16113                         FETCH l_amount_csr
16114                          INTO l_subline_amount;
16115 
16116                         CLOSE l_amount_csr;
16117 
16118                         UPDATE okc_k_lines_b
16119                            SET price_negotiated =
16120                                   (SELECT NVL (SUM (NVL (price_negotiated, 0)),0)
16121                                      FROM okc_k_lines_b
16122                                     WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16123                                       AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16124 				      and date_cancelled is null)
16125                          WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16126 
16127                          UPDATE oks_k_lines_b
16128                             SET tax_amount =
16129                             (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16130                                FROM oks_k_lines_b
16131                               WHERE cle_id IN ( SELECT id
16132                                                   FROM okc_k_lines_b
16133                                                  WHERE cle_id =  p_kdtl_tbl (l_ctr).service_line_id
16134                                                    AND lse_id IN (9,25)
16135                                                    AND date_cancelled IS NULL ))
16136                         WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16137 
16138                         UPDATE okc_k_headers_b
16139                            SET estimated_amount =
16140                                   (SELECT NVL (SUM (NVL (price_negotiated, 0)), 0 )
16141                                      FROM okc_k_lines_b
16142                                     WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16143                                       AND lse_id IN (1, 19)
16144 				      AND date_cancelled IS NULL )
16145                          WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16146 
16147 
16148                          UPDATE oks_k_headers_b
16149                             SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16150                                                  FROM oks_k_lines_b
16151                                                 WHERE cle_id IN (SELECT id
16152                                                                    FROM okc_k_lineS_b
16153                                                                   WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16154                                                                     AND date_cancelled IS NULL
16155                                                                     AND lse_id IN (1,19)))
16156                          WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16157 
16158                         l_inst_dtls_tbl (l_ptr).transaction_date :=
16159                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16160                         l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16161                         l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16162                                              p_kdtl_tbl (l_ctr).service_amount;
16163                         l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16164                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
16165                         l_inst_dtls_tbl (l_ptr).old_contract_id :=
16166                                                      p_kdtl_tbl (l_ctr).hdr_id;
16167                         l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16168                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16169                         l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16170                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16171                         l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16172                                             p_kdtl_tbl (l_ctr).service_line_id;
16173                         l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16174                                                 p_kdtl_tbl (l_ctr).service_sdt;
16175                         l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16176                                                 p_kdtl_tbl (l_ctr).service_edt;
16177                         l_inst_dtls_tbl (l_ptr).old_subline_id :=
16178                                              p_kdtl_tbl (l_ctr).object_line_id;
16179                         l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16180                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16181                         l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16182                                                    p_kdtl_tbl (l_ctr).prod_edt;
16183                         l_inst_dtls_tbl (l_ptr).old_customer :=
16184                                                p_kdtl_tbl (l_ctr).cust_account;
16185                         l_inst_dtls_tbl (l_ptr).old_k_status :=
16186                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16187                         l_inst_dtls_tbl (l_ptr).instance_id_new :=
16188                                                   p_kdtl_tbl (l_ctr).old_cp_id;
16189                         l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16190                                                               l_subline_amount;
16191                         l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16192                                                p_kdtl_tbl (l_ctr).new_quantity;
16193                         l_inst_dtls_tbl (l_ptr).new_contract_id :=
16194                                                      p_kdtl_tbl (l_ctr).hdr_id;
16195                         l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16196                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16197                         l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16198                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16199                         l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16200                                             p_kdtl_tbl (l_ctr).service_line_id;
16201                         l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16202                                                 p_kdtl_tbl (l_ctr).service_sdt;
16203                         l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16204                                                 p_kdtl_tbl (l_ctr).service_edt;
16205                         l_inst_dtls_tbl (l_ptr).new_subline_id :=
16206                                              p_kdtl_tbl (l_ctr).object_line_id;
16207                         l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16208                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16209                         l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16210                                                    p_kdtl_tbl (l_ctr).prod_edt;
16211                         l_inst_dtls_tbl (l_ptr).new_customer :=
16212                                                p_kdtl_tbl (l_ctr).cust_account;
16213                         l_inst_dtls_tbl (l_ptr).new_k_status :=
16214                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16215                      ELSE                          --billed_amount is not null
16216                            --errorout_n('in update l_billed_amount2'||l_billed_amount);
16217                         -- If line is fully billed , terminate the subline, issue credit and create a new subline with the updated qty
16218                         IF l_billed_amount =
16219                                             p_kdtl_tbl (l_ctr).service_amount
16220                         THEN
16221                            -- Terminate the subline and create a New Subline with the update qty
16222                            IF fnd_log.level_statement >=
16223                                               fnd_log.g_current_runtime_level
16224                            THEN
16225                               fnd_log.STRING (fnd_log.level_statement,
16226                                                  g_module_current
16227                                               || '.CREATE_CONTRACT_IBUPDATE',
16228                                               'The Line is fully billed'
16229                                              );
16230                            END IF;
16231 
16232                            get_sts_code (NULL,
16233                                          p_kdtl_tbl (l_ctr).hdr_sts,
16234                                          l_ste_code,
16235                                          l_sts_code
16236                                         );
16237 
16238                            IF l_ste_code = 'HOLD'
16239                            THEN
16240                               l_return_status := okc_api.g_ret_sts_error;
16241 
16242                               IF fnd_log.level_error >=
16243                                               fnd_log.g_current_runtime_level
16244                               THEN
16245                                  fnd_log.STRING
16246                                           (fnd_log.level_error,
16247                                               g_module_current
16248                                            || '.CREATE_CONTRACT_IBUPDATE.ERROR',
16249                                            ' Contract in QA_HOLD status'
16250                                           );
16251                               END IF;
16252 
16253                               okc_api.set_message
16254                                   (g_app_name,
16255                                    g_invalid_value,
16256                                    g_col_name_token,
16257                                       'Quantity Update not allowed. Contract '
16258                                    || p_kdtl_tbl (l_ctr).contract_number
16259                                    || ' is in QA_HOLD status'
16260                                   );
16261                               RAISE g_exception_halt_validation;
16262                            END IF;
16263 
16264                            ---to pass the term_cancel source.....
16265                            oks_bill_rec_pub.pre_terminate_cp
16266                               (p_calledfrom                => -1,
16267                                p_cle_id                    => p_kdtl_tbl
16268                                                                         (l_ctr).object_line_id,
16269                                p_termination_date          => TRUNC
16270                                                                  (p_kdtl_tbl
16271                                                                         (l_ctr).prod_sdt
16272                                                                  ),
16273                                p_terminate_reason          => 'UPD',
16274                                p_override_amount           => NULL,
16275                                p_con_terminate_amount      => NULL,
16276                                p_termination_amount        => NULL,
16277                                p_suppress_credit           => 'N',
16278                                p_full_credit               => 'Y',
16279                                p_term_date_flag            => 'N',
16280                                p_term_cancel_source        => 'IBUPDATE',
16281                                x_return_status             => l_return_status
16282                               );
16283 
16284                            IF (fnd_log.level_event >=
16285                                                fnd_log.g_current_runtime_level
16286                               )
16287                            THEN
16288                               fnd_log.STRING
16289                                  (fnd_log.level_event,
16290                                      g_module_current
16291                                   || '.CREATE_CONTRACT_IBUPDATE',
16292                                      ' oks_bill_rec_pub.Pre_terminate_cp(Retun status = '
16293                                   || l_return_status
16294                                   || ')'
16295                                  );
16296                            END IF;
16297 
16298                            IF NOT l_return_status = okc_api.g_ret_sts_success
16299                            THEN
16300                               RAISE g_exception_halt_validation;
16301                            END IF;
16302 
16303                            l_inst_dtls_tbl (l_ptr).transaction_date :=
16304                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16305                            l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16306                            l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16307                                              p_kdtl_tbl (l_ctr).service_amount;
16308                            l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16309                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
16310                            l_inst_dtls_tbl (l_ptr).old_contract_id :=
16311                                                      p_kdtl_tbl (l_ctr).hdr_id;
16312                            l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16313                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16314                            l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16315                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16316                            l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16317                                             p_kdtl_tbl (l_ctr).service_line_id;
16318                            l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16319                                                 p_kdtl_tbl (l_ctr).service_sdt;
16320                            l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16321                                                 p_kdtl_tbl (l_ctr).service_edt;
16322                            l_inst_dtls_tbl (l_ptr).old_subline_id :=
16323                                              p_kdtl_tbl (l_ctr).object_line_id;
16324                            l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16325                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16326                            l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16327                                                    p_kdtl_tbl (l_ctr).prod_edt;
16328                            l_inst_dtls_tbl (l_ptr).old_customer :=
16329                                                p_kdtl_tbl (l_ctr).cust_account;
16330                            l_inst_dtls_tbl (l_ptr).old_k_status :=
16331                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16332                            l_inst_dtls_tbl (l_ptr).instance_id_new :=
16333                                                   p_kdtl_tbl (l_ctr).old_cp_id;
16334                            l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16335                                              p_kdtl_tbl (l_ctr).service_amount;
16336                            l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16337                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
16338                            l_inst_dtls_tbl (l_ptr).new_contract_id :=
16339                                                      p_kdtl_tbl (l_ctr).hdr_id;
16340                            l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16341                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16342                            l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16343                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16344                            l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16345                                             p_kdtl_tbl (l_ctr).service_line_id;
16346                            l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16347                                                 p_kdtl_tbl (l_ctr).service_sdt;
16348                            l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16349                                                 p_kdtl_tbl (l_ctr).service_edt;
16350                            l_inst_dtls_tbl (l_ptr).new_subline_id :=
16351                                              p_kdtl_tbl (l_ctr).object_line_id;
16352                            l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16353                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16354                            l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16355                                                    p_kdtl_tbl (l_ctr).prod_edt;
16356                            l_inst_dtls_tbl (l_ptr).new_customer :=
16357                                                p_kdtl_tbl (l_ctr).cust_account;
16358                            l_inst_dtls_tbl (l_ptr).new_k_status :=
16359                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16360                            l_inst_dtls_tbl (l_ptr).subline_date_terminated :=
16361                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16362                            l_ptr := l_ptr + 1;
16363                            l_covd_rec.k_id := p_kdtl_tbl (l_ctr).hdr_id;
16364                            l_covd_rec.attach_2_line_id :=
16365                                             p_kdtl_tbl (l_ctr).service_line_id;
16366                            l_covd_rec.line_number := 1;
16367                            l_covd_rec.customer_product_id :=
16368                                                   p_kdtl_tbl (l_ctr).old_cp_id;
16369                            l_covd_rec.product_start_date :=
16370                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16371                            l_covd_rec.product_end_date :=
16372                                                    p_kdtl_tbl (l_ctr).prod_edt;
16373                            l_covd_rec.quantity :=
16374                                                p_kdtl_tbl (l_ctr).new_quantity;
16375 
16376                            IF p_kdtl_tbl (l_ctr).lse_id = 25
16377                            THEN
16378                               l_warranty_flag := 'E';
16379                            ELSIF     p_kdtl_tbl (l_ctr).lse_id = 9
16380                                  AND p_kdtl_tbl (l_ctr).scs_code = 'SERVICE'
16381                            THEN
16382                               l_warranty_flag := 'S';
16383                            ELSIF p_kdtl_tbl (l_ctr).lse_id = 18
16384                            THEN
16385                               l_warranty_flag := 'W';
16386                            ELSIF     p_kdtl_tbl (l_ctr).lse_id = 9
16387                                  AND p_kdtl_tbl (l_ctr).scs_code =
16388                                                                 'SUBSCRIPTION'
16389                            THEN
16390                               l_warranty_flag := 'SU';
16391                            END IF;
16392 
16393                            l_covd_rec.warranty_flag := l_warranty_flag;
16394                            l_covd_rec.uom_code := p_kdtl_tbl (l_ctr).uom_code;
16395                            l_covd_rec.currency_code :=
16396                                            p_kdtl_tbl (l_ctr).service_currency;
16397                            l_covd_rec.product_sts_code :=
16398                                               p_kdtl_tbl (l_ctr).prod_sts_code;
16399 
16400                            OPEN l_serv_csr
16401                                        (p_kdtl_tbl (l_ctr).service_inventory_id
16402                                        );
16403 
16404                            FETCH l_serv_csr
16405                             INTO l_covd_rec.attach_2_line_desc;
16406 
16407                            CLOSE l_serv_csr;
16408 
16409                            l_covd_rec.line_renewal_type :=
16410                                      p_kdtl_tbl (l_ctr).prod_line_renewal_type;
16411                            l_covd_rec.list_price := 0;
16412                            l_covd_rec.negotiated_amount := 0;
16413                            l_covd_rec.prod_item_id :=
16414                                         p_kdtl_tbl (l_ctr).prod_inventory_item;
16415                            l_covd_rec.price_uom :=
16416                                              p_kdtl_tbl (l_ctr).price_uom_code;
16417                            l_covd_rec.toplvl_uom_code :=
16418                                             p_kdtl_tbl (l_ctr).toplvl_uom_code;
16419                            --mchoudha added for bug#5233956
16420                            l_covd_rec.toplvl_price_qty :=
16421                                             p_kdtl_tbl (l_ctr).toplvl_price_qty;
16422                            oks_extwarprgm_pvt.create_k_covered_levels
16423                                        (p_k_covd_rec         => l_covd_rec,
16424                                         p_price_attribs      => l_price_attribs_in,
16425                                         p_caller             => 'IB',
16426                                         x_order_error        => l_temp,
16427                                         x_covlvl_id          => l_covlvl_id,
16428                                         x_update_line        => l_update_top_line,
16429                                         x_return_status      => l_return_status,
16430                                         x_msg_count          => x_msg_count,
16431                                         x_msg_data           => x_msg_data
16432                                        );
16433 
16434                            --errorout_n('in update Create_K_Covered_Levels l_return_status'||l_return_status);
16435                            IF (fnd_log.level_event >=
16436                                                fnd_log.g_current_runtime_level
16437                               )
16438                            THEN
16439                               fnd_log.STRING
16440                                  (fnd_log.level_event,
16441                                      g_module_current
16442                                   || '.CREATE_CONTRACT_IBUPDATE',
16443                                      'oks_extwarprgm_pvt.create_k_covered_levels(Retun status = '
16444                                   || l_return_status
16445                                   || ')'
16446                                  );
16447                            END IF;
16448 
16449                            IF NOT l_return_status = 'S'
16450                            THEN
16451                               RAISE g_exception_halt_validation;
16452                            END IF;
16453 
16454                            l_create_oper_instance := 'N';
16455 
16456                            IF    l_opr_instance_id IS NULL
16457                               OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
16458                            THEN
16459                               l_target_chr_id := p_kdtl_tbl (l_ctr).hdr_id;
16460                               l_create_oper_instance := 'Y';
16461                            END IF;
16462 
16463                            create_transaction_source
16464                               (p_create_opr_inst       => 'Y',
16465                                p_source_code           => 'IBUPDATE',
16466                                p_target_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
16467                                p_source_line_id        => p_kdtl_tbl (l_ctr).object_line_id,
16468                                p_source_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
16469                                p_target_line_id        => l_covlvl_id,
16470                                x_oper_instance_id      => l_opr_instance_id,
16471                                x_return_status         => l_return_status,
16472                                x_msg_count             => x_msg_count,
16473                                x_msg_data              => x_msg_data
16474                               );
16475 
16476                            IF (fnd_log.level_event >=
16477                                                fnd_log.g_current_runtime_level
16478                               )
16479                            THEN
16480                               fnd_log.STRING
16481                                  (fnd_log.level_event,
16482                                      g_module_current
16483                                   || '.CREATE_CONTRACT_IBUPDATE',
16484                                      'Create_transaction_source(Retun status = '
16485                                   || l_return_status
16486                                   || ')'
16487                                  );
16488                            END IF;
16489 
16490                            IF NOT l_return_status = 'S'
16491                            THEN
16492                               RAISE g_exception_halt_validation;
16493                            END IF;
16494 
16495                            IF    l_renewal_opr_instance_id IS NULL
16496                               OR l_target_chr_id <> p_kdtl_tbl (l_ctr).hdr_id
16497                            THEN
16498                               l_create_oper_instance := 'Y';
16499                            ELSE
16500                               l_create_oper_instance := 'N';
16501                            END IF;
16502 
16503                            create_source_links
16504                               (p_create_opr_inst       => l_create_oper_instance,
16505                                p_source_code           => 'IBUPDATE',
16506                                p_target_chr_id         => p_kdtl_tbl (l_ctr).hdr_id,
16507                                p_line_id               => p_kdtl_tbl (l_ctr).object_line_id,
16508                                p_target_line_id        => l_covlvl_id,
16509                                p_txn_date              => p_kdtl_tbl (l_ctr).transaction_date,
16510                                x_oper_instance_id      => l_renewal_opr_instance_id,
16511                                x_return_status         => l_return_status,
16512                                x_msg_count             => x_msg_count,
16513                                x_msg_data              => x_msg_data
16514                               );
16515 
16516                            IF NOT l_return_status = 'S'
16517                            THEN
16518                               RAISE g_exception_halt_validation;
16519                            END IF;
16520 
16521                            IF (fnd_log.level_event >=
16522                                                fnd_log.g_current_runtime_level
16523                               )
16524                            THEN
16525                               fnd_log.STRING
16526                                     (fnd_log.level_event,
16527                                         g_module_current
16528                                      || '.CREATE_CONTRACT_IBUPDATE',
16529                                         'Create_source_links(Retun status = '
16530                                      || l_return_status
16531                                      || ')'
16532                                     );
16533                            END IF;
16534 
16535                            l_input_details.line_id :=
16536                                             p_kdtl_tbl (l_ctr).service_line_id;
16537                            l_input_details.subline_id := l_covlvl_id;
16538                            l_input_details.intent := 'SP';
16539                            oks_qp_int_pvt.compute_price
16540                                        (p_api_version              => 1.0,
16541                                         p_init_msg_list            => 'T',
16542                                         p_detail_rec               => l_input_details,
16543                                         x_price_details            => l_output_details,
16544                                         x_modifier_details         => l_modif_details,
16545                                         x_price_break_details      => l_pb_details,
16546                                         x_return_status            => l_return_status,
16547                                         x_msg_count                => l_msg_count,
16548                                         x_msg_data                 => l_msg_data
16549                                        );
16550 
16551                            IF (fnd_log.level_event >=
16552                                                fnd_log.g_current_runtime_level
16553                               )
16554                            THEN
16555                               fnd_log.STRING
16556                                  (fnd_log.level_event,
16557                                      g_module_current
16558                                   || '.CREATE_CONTRACT_IBUPDATE',
16559                                      'oks_qp_int_pvt.compute_price(Retun status = '
16560                                   || l_return_status
16561                                   || ',Repriced amount = '
16562                                   || l_output_details.serv_ext_amount
16563                                   || ')'
16564                                  );
16565                            END IF;
16566 
16567                            IF l_return_status <> okc_api.g_ret_sts_success
16568                            THEN
16569                               RAISE g_exception_halt_validation;
16570                            END IF;
16571 
16572                            l_subline_amount := NULL;
16573 
16574                            OPEN l_amount_csr (l_covlvl_id);
16575 
16576                            FETCH l_amount_csr
16577                             INTO l_subline_amount;
16578 
16579                            CLOSE l_amount_csr;
16580 
16581                            IF fnd_log.level_statement >=
16582                                                fnd_log.g_current_runtime_level
16583                            THEN
16584                               fnd_log.STRING (fnd_log.level_statement,
16585                                                  g_module_current
16586                                               || '.CREATE_CONTRACT_IBUPDATE',
16587                                                  'Subline Amount = '
16588                                               || l_subline_amount
16589                                              );
16590                            END IF;
16591 
16592                            UPDATE okc_k_lines_b
16593                               SET price_negotiated =
16594                                      (SELECT NVL (SUM (NVL (price_negotiated,0 ) ), 0 )
16595                                         FROM okc_k_lines_b
16596                                        WHERE cle_id = p_kdtl_tbl (l_ctr).service_line_id
16597                                          AND dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16598 					 AND date_cancelled is NULL)
16599                             WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16600 
16601                             UPDATE oks_k_lines_b
16602                                SET tax_amount =
16603                                (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16604                         	  FROM oks_k_lines_b
16605                         	 WHERE cle_id IN ( SELECT id
16606                                                      FROM okc_k_lines_b
16607                                                     WHERE cle_id =  p_kdtl_tbl (l_ctr).service_line_id
16608                                                       AND lse_id IN (9,25)
16609                                                       AND date_cancelled IS NULL ))
16610                 	    WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16611 
16612                            UPDATE okc_k_headers_b
16613                               SET estimated_amount =
16614                                      (SELECT NVL (SUM (NVL (price_negotiated,
16615                                                             0
16616                                                            )
16617                                                       ),
16618                                                   0
16619                                                  )
16620                                         FROM okc_k_lines_b
16621                                        WHERE dnz_chr_id =
16622                                                      p_kdtl_tbl (l_ctr).hdr_id
16623                                          AND lse_id IN (1, 19)
16624 					 AND date_cancelled IS NULL)
16625                             WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16626 
16627                             UPDATE oks_k_headers_b
16628                                SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16629                                                     FROM oks_k_lines_b
16630                                                    WHERE cle_id IN (SELECT id
16631                                                                       FROM okc_k_lineS_b
16632                                                                      WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16633                                                                        AND date_cancelled IS NULL
16634                                                                        AND lse_id IN (1,19)))
16635                             WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16636 
16637 			   l_inst_dtls_tbl (l_ptr).transaction_date :=
16638                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16639                            l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16640                            l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16641                                              p_kdtl_tbl (l_ctr).service_amount;
16642                            l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16643                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
16644                            l_inst_dtls_tbl (l_ptr).old_contract_id :=
16645                                                      p_kdtl_tbl (l_ctr).hdr_id;
16646                            l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16647                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16648                            l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16649                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16650                            l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16651                                             p_kdtl_tbl (l_ctr).service_line_id;
16652                            l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16653                                                 p_kdtl_tbl (l_ctr).service_sdt;
16654                            l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16655                                                 p_kdtl_tbl (l_ctr).service_edt;
16656                            l_inst_dtls_tbl (l_ptr).old_subline_id :=
16657                                              p_kdtl_tbl (l_ctr).object_line_id;
16658                            l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16659                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16660                            l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16661                                                    p_kdtl_tbl (l_ctr).prod_edt;
16662                            l_inst_dtls_tbl (l_ptr).old_customer :=
16663                                                p_kdtl_tbl (l_ctr).cust_account;
16664                            l_inst_dtls_tbl (l_ptr).old_k_status :=
16665                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16666                            l_inst_dtls_tbl (l_ptr).instance_id_new :=
16667                                                   p_kdtl_tbl (l_ctr).old_cp_id;
16668                            l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16669                                                               l_subline_amount;
16670                            l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16671                                                p_kdtl_tbl (l_ctr).new_quantity;
16672                            l_inst_dtls_tbl (l_ptr).new_contract_id :=
16673                                                      p_kdtl_tbl (l_ctr).hdr_id;
16674                            l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16675                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16676                            l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16677                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16678                            l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16679                                             p_kdtl_tbl (l_ctr).service_line_id;
16680                            l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16681                                                 p_kdtl_tbl (l_ctr).service_sdt;
16682                            l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16683                                                 p_kdtl_tbl (l_ctr).service_edt;
16684                            l_inst_dtls_tbl (l_ptr).new_subline_id :=
16685                                                                    l_covlvl_id;
16686                            l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16687                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16688                            l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16689                                                    p_kdtl_tbl (l_ctr).prod_edt;
16690                            l_inst_dtls_tbl (l_ptr).new_customer :=
16691                                                p_kdtl_tbl (l_ctr).cust_account;
16692                            l_inst_dtls_tbl (l_ptr).new_k_status :=
16693                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16694 
16695                            --x_inst_dtls_tbl(l_ptr).subline_date_terminated   := p_kdtl_tbl( l_ctr ).prod_sdt;
16696                            ---update billing schedule
16697                            IF check_lvlelements_exists
16698                                             (p_kdtl_tbl (l_ctr).service_line_id
16699                                             )
16700                            THEN
16701                               oks_bill_sch.create_bill_sch_cp
16702                                  (p_top_line_id        => p_kdtl_tbl (l_ctr).service_line_id,
16703                                   p_cp_line_id         => l_covlvl_id,
16704                                   p_cp_new             => 'Y',
16705                                   x_return_status      => l_return_status,
16706                                   x_msg_count          => l_msg_count,
16707                                   x_msg_data           => l_msg_data
16708                                  );
16709 
16710                               IF (fnd_log.level_event >=
16711                                                fnd_log.g_current_runtime_level
16712                                  )
16713                               THEN
16714                                  fnd_log.STRING
16715                                     (fnd_log.level_event,
16716                                         g_module_current
16717                                      || '.CREATE_CONTRACT_IBUPDATE',
16718                                         'oks_bill_sch.create_bill_sch_cp(Retun status = '
16719                                      || l_return_status
16720                                      || ')'
16721                                     );
16722                               END IF;
16723 
16724                               IF l_return_status <> okc_api.g_ret_sts_success
16725                               THEN
16726                                  okc_api.set_message
16727                                                  (g_app_name,
16728                                                   g_required_value,
16729                                                   g_col_name_token,
16730                                                   'Sched Billing Rule (LINE)'
16731                                                  );
16732                                  RAISE g_exception_halt_validation;
16733                               END IF;
16734                            END IF;
16735                         ELSE       --Billed amount is less than service amount
16736                            UPDATE okc_k_items
16737                               SET number_of_items =
16738                                                p_kdtl_tbl (l_ctr).new_quantity
16739                             WHERE cle_id = p_kdtl_tbl (l_ctr).object_line_id;
16740 
16741                            l_input_details.line_id :=
16742                                             p_kdtl_tbl (l_ctr).service_line_id;
16743                            l_input_details.subline_id :=
16744                                              p_kdtl_tbl (l_ctr).object_line_id;
16745                            l_input_details.intent := 'SP';
16746                            oks_qp_int_pvt.compute_price
16747                                        (p_api_version              => 1.0,
16748                                         p_init_msg_list            => 'T',
16749                                         p_detail_rec               => l_input_details,
16750                                         x_price_details            => l_output_details,
16751                                         x_modifier_details         => l_modif_details,
16752                                         x_price_break_details      => l_pb_details,
16753                                         x_return_status            => l_return_status,
16754                                         x_msg_count                => l_msg_count,
16755                                         x_msg_data                 => l_msg_data
16756                                        );
16757 
16758                            IF (fnd_log.level_event >=
16759                                                fnd_log.g_current_runtime_level
16760                               )
16761                            THEN
16762                               fnd_log.STRING
16763                                  (fnd_log.level_event,
16764                                      g_module_current
16765                                   || '.CREATE_CONTRACT_IBUPDATE',
16766                                      'oks_qp_int_pvt.compute_price(Retun status = '
16767                                   || l_return_status
16768                                   || ',Repriced amount = '
16769                                   || l_output_details.serv_ext_amount
16770                                   || ')'
16771                                  );
16772                            END IF;
16773 
16774                            IF l_return_status <> okc_api.g_ret_sts_success
16775                            THEN
16776                               RAISE g_exception_halt_validation;
16777                            END IF;
16778 
16779                            l_amount := l_output_details.serv_ext_amount;
16780 
16781                            IF l_amount <= l_billed_amount
16782                            THEN
16783                               UPDATE okc_k_lines_b
16784                                  SET price_negotiated = l_billed_amount
16785                                WHERE ID = p_kdtl_tbl (l_ctr).object_line_id;
16786                            END IF;
16787 
16788                            l_subline_amount := NULL;
16789 
16790                            OPEN l_amount_csr (p_kdtl_tbl (l_ctr).object_line_id
16791                                              );
16792 
16793                            FETCH l_amount_csr
16794                             INTO l_subline_amount;
16795 
16796                            CLOSE l_amount_csr;
16797 
16798                            UPDATE okc_k_lines_b
16799                               SET price_negotiated =
16800                                      (SELECT NVL (SUM (NVL (price_negotiated,
16801                                                             0
16802                                                            )
16803                                                       ),
16804                                                   0
16805                                                  )
16806                                         FROM okc_k_lines_b
16807                                        WHERE cle_id =
16808                                                 p_kdtl_tbl (l_ctr).service_line_id
16809                                          AND dnz_chr_id =
16810                                                      p_kdtl_tbl (l_ctr).hdr_id
16811 					 AND date_cancelled IS NULL)
16812                             WHERE ID = p_kdtl_tbl (l_ctr).service_line_id;
16813 
16814                             UPDATE oks_k_lines_b
16815                                SET tax_amount =
16816                                (SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16817                         	  FROM oks_k_lines_b
16818                         	 WHERE cle_id IN ( SELECT id
16819                                                      FROM okc_k_lines_b
16820                                                     WHERE cle_id =  p_kdtl_tbl (l_ctr).service_line_id
16821                                                       AND lse_id IN (9,25)
16822                                                       AND date_cancelled IS NULL ))
16823                             WHERE cle_id =p_kdtl_tbl (l_ctr).service_line_id;
16824 
16825                            UPDATE okc_k_headers_b
16826                               SET estimated_amount =
16827                                      (SELECT NVL (SUM (NVL (price_negotiated,
16828                                                             0
16829                                                            )
16830                                                       ),
16831                                                   0
16832                                                  )
16833                                         FROM okc_k_lines_b
16834                                        WHERE dnz_chr_id =
16835                                                      p_kdtl_tbl (l_ctr).hdr_id
16836                                          AND lse_id IN (1, 19)
16837 					 AND date_cancelled IS NULL)
16838                             WHERE ID = p_kdtl_tbl (l_ctr).hdr_id;
16839 
16840 
16841                             UPDATE oks_k_headers_b
16842                                SET tax_amount = ( SELECT (NVL (SUM (NVL(tax_amount,0)),0))
16843                                                     FROM oks_k_lines_b
16844                                                    WHERE cle_id IN (SELECT id
16845                                                                       FROM okc_k_lineS_b
16846                                                                      WHERE dnz_chr_id = p_kdtl_tbl (l_ctr).hdr_id
16847                                                                        AND date_cancelled IS NULL
16848                                                                        AND lse_id IN (1,19)))
16849                             WHERE chr_id = p_kdtl_tbl (l_ctr).hdr_id;
16850 
16851                            ---update billing schedule
16852                            IF check_lvlelements_exists
16853                                             (p_kdtl_tbl (l_ctr).service_line_id
16854                                             )
16855                            THEN
16856                               oks_bill_sch.create_bill_sch_cp
16857                                  (p_top_line_id        => p_kdtl_tbl (l_ctr).service_line_id,
16858                                   p_cp_line_id         => p_kdtl_tbl (l_ctr).object_line_id,
16859                                   p_cp_new             => 'N',
16860                                   x_return_status      => l_return_status,
16861                                   x_msg_count          => l_msg_count,
16862                                   x_msg_data           => l_msg_data
16863                                  );
16864 
16865                               IF (fnd_log.level_event >=
16866                                                fnd_log.g_current_runtime_level
16867                                  )
16868                               THEN
16869                                  fnd_log.STRING
16870                                     (fnd_log.level_event,
16871                                         g_module_current
16872                                      || '.CREATE_CONTRACT_IBUPDATE',
16873                                         'oks_bill_sch.create_bill_sch_cp(Retun status = '
16874                                      || l_return_status
16875                                      || ')'
16876                                     );
16877                               END IF;
16878 
16879                               IF l_return_status <> okc_api.g_ret_sts_success
16880                               THEN
16881                                  okc_api.set_message
16882                                                  (g_app_name,
16883                                                   g_required_value,
16884                                                   g_col_name_token,
16885                                                   'Sched Billing Rule (LINE)'
16886                                                  );
16887                                  RAISE g_exception_halt_validation;
16888                               END IF;
16889                            END IF;
16890 
16891                            l_inst_dtls_tbl (l_ptr).transaction_date :=
16892                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16893                            l_inst_dtls_tbl (l_ptr).transaction_type := 'UPD';
16894                            l_inst_dtls_tbl (l_ptr).instance_amt_old :=
16895                                              p_kdtl_tbl (l_ctr).service_amount;
16896                            l_inst_dtls_tbl (l_ptr).instance_qty_old :=
16897                                             p_kdtl_tbl (l_ctr).old_cp_quantity;
16898                            l_inst_dtls_tbl (l_ptr).old_contract_id :=
16899                                                      p_kdtl_tbl (l_ctr).hdr_id;
16900                            l_inst_dtls_tbl (l_ptr).old_contact_start_date :=
16901                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16902                            l_inst_dtls_tbl (l_ptr).old_contract_end_date :=
16903                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16904                            l_inst_dtls_tbl (l_ptr).old_service_line_id :=
16905                                             p_kdtl_tbl (l_ctr).service_line_id;
16906                            l_inst_dtls_tbl (l_ptr).old_service_start_date :=
16907                                                 p_kdtl_tbl (l_ctr).service_sdt;
16908                            l_inst_dtls_tbl (l_ptr).old_service_end_date :=
16909                                                 p_kdtl_tbl (l_ctr).service_edt;
16910                            l_inst_dtls_tbl (l_ptr).old_subline_id :=
16911                                              p_kdtl_tbl (l_ctr).object_line_id;
16912                            l_inst_dtls_tbl (l_ptr).old_subline_start_date :=
16913                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16914                            l_inst_dtls_tbl (l_ptr).old_subline_end_date :=
16915                                                    p_kdtl_tbl (l_ctr).prod_edt;
16916                            l_inst_dtls_tbl (l_ptr).old_customer :=
16917                                                p_kdtl_tbl (l_ctr).cust_account;
16918                            l_inst_dtls_tbl (l_ptr).old_k_status :=
16919                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16920                            l_inst_dtls_tbl (l_ptr).instance_id_new :=
16921                                                   p_kdtl_tbl (l_ctr).old_cp_id;
16922                            l_inst_dtls_tbl (l_ptr).instance_amt_new :=
16923                                                               l_subline_amount;
16924                            l_inst_dtls_tbl (l_ptr).instance_qty_new :=
16925                                                p_kdtl_tbl (l_ctr).new_quantity;
16926                            l_inst_dtls_tbl (l_ptr).new_contract_id :=
16927                                                      p_kdtl_tbl (l_ctr).hdr_id;
16928                            l_inst_dtls_tbl (l_ptr).new_contact_start_date :=
16929                                                     p_kdtl_tbl (l_ctr).hdr_sdt;
16930                            l_inst_dtls_tbl (l_ptr).new_contract_end_date :=
16931                                                     p_kdtl_tbl (l_ctr).hdr_edt;
16932                            l_inst_dtls_tbl (l_ptr).new_service_line_id :=
16933                                             p_kdtl_tbl (l_ctr).service_line_id;
16934                            l_inst_dtls_tbl (l_ptr).new_service_start_date :=
16935                                                 p_kdtl_tbl (l_ctr).service_sdt;
16936                            l_inst_dtls_tbl (l_ptr).new_service_end_date :=
16937                                                 p_kdtl_tbl (l_ctr).service_edt;
16938                            l_inst_dtls_tbl (l_ptr).new_subline_id :=
16939                                              p_kdtl_tbl (l_ctr).object_line_id;
16940                            l_inst_dtls_tbl (l_ptr).new_subline_start_date :=
16941                                                    p_kdtl_tbl (l_ctr).prod_sdt;
16942                            l_inst_dtls_tbl (l_ptr).new_subline_end_date :=
16943                                                    p_kdtl_tbl (l_ctr).prod_edt;
16944                            l_inst_dtls_tbl (l_ptr).new_customer :=
16945                                                p_kdtl_tbl (l_ctr).cust_account;
16946                            l_inst_dtls_tbl (l_ptr).new_k_status :=
16947                                                     p_kdtl_tbl (l_ctr).hdr_sts;
16948                         END IF;
16949                      END IF;                         -- Billed amt is not null
16950                   END IF;                                       -- if Warranty
16951                END IF;
16952 
16953                --errorout_n('l_inst_dtls_tbl.count'||l_inst_dtls_tbl.count);
16954                IF l_inst_dtls_tbl.COUNT <> 0
16955                THEN
16956                   IF l_old_cp_id <> p_kdtl_tbl (l_ctr).old_cp_id
16957                   THEN
16958                      OPEN l_refnum_csr (p_kdtl_tbl (l_ctr).old_cp_id);
16959 
16960                      FETCH l_refnum_csr
16961                       INTO l_ref_num;
16962 
16963                      CLOSE l_refnum_csr;
16964 
16965                      l_parameters :=
16966                            ' Old CP :'
16967                         || p_kdtl_tbl (l_ctr).old_cp_id
16968                         || ','
16969                         || 'Item Id:'
16970                         || p_kdtl_tbl (l_ctr).prod_inventory_item
16971                         || ','
16972                         || 'Old Quantity:'
16973                         || p_kdtl_tbl (l_ctr).old_cp_quantity
16974                         || ','
16975                         || 'Transaction type :'
16976                         || 'UPD'
16977                         || ','
16978                         || ' Transaction date :'
16979                         || TRUNC(p_kdtl_tbl (l_ctr).transaction_date)
16980                         || ','
16981                         || 'New quantity:'
16982                         || p_kdtl_tbl (l_ctr).new_quantity;
16983                      --oks_instance_history
16984                      l_old_cp_id := p_kdtl_tbl (l_ctr).old_cp_id;
16985                      l_insthist_rec.instance_id :=
16986                                                   p_kdtl_tbl (l_ctr).old_cp_id;
16987                      l_insthist_rec.transaction_type := 'UPD';
16988                      l_insthist_rec.transaction_date :=
16989                                            TRUNC(p_kdtl_tbl (l_ctr).transaction_date);
16990                      l_insthist_rec.reference_number := l_ref_num;
16991                      l_insthist_rec.PARAMETERS := l_parameters;
16992                      oks_ins_pvt.insert_row
16993                                           (p_api_version        => 1.0,
16994                                            p_init_msg_list      => 'T',
16995                                            x_return_status      => l_return_status,
16996                                            x_msg_count          => l_msg_count,
16997                                            x_msg_data           => l_msg_data,
16998                                            p_insv_rec           => l_insthist_rec,
16999                                            x_insv_rec           => x_insthist_rec
17000                                           );
17001 
17002                      IF (fnd_log.level_event >=
17003                                                fnd_log.g_current_runtime_level
17004                         )
17005                      THEN
17006                         fnd_log.STRING
17007                                 (fnd_log.level_event,
17008                                     g_module_current
17009                                  || '.CREATE_CONTRACT_IBUPDATE',
17010                                     'oks_ins_pvt.insert_row(Return status = '
17011                                  || l_return_status
17012                                  || ')'
17013                                 );
17014                      END IF;
17015 
17016                      x_return_status := l_return_status;
17017 
17018                      IF NOT l_return_status = okc_api.g_ret_sts_success
17019                      THEN
17020                         x_return_status := l_return_status;
17021                         RAISE g_exception_halt_validation;
17022                      END IF;
17023 
17024                      l_instparent_id := x_insthist_rec.ID;
17025                   END IF;
17026 
17027                   FOR i IN l_inst_dtls_tbl.FIRST .. l_inst_dtls_tbl.LAST
17028                   LOOP
17029                      l_inst_dtls_tbl (i).ins_id := l_instparent_id;
17030                   END LOOP;
17031 
17032                   --oks_inst_history_details
17033                   oks_ihd_pvt.insert_row (p_api_version        => 1.0,
17034                                           p_init_msg_list      => 'T',
17035                                           x_return_status      => l_return_status,
17036                                           x_msg_count          => l_msg_count,
17037                                           x_msg_data           => l_msg_data,
17038                                           p_ihdv_tbl           => l_inst_dtls_tbl,
17039                                           x_ihdv_tbl           => x_inst_dtls_tbl
17040                                          );
17041 
17042                   IF (fnd_log.level_event >= fnd_log.g_current_runtime_level
17043                      )
17044                   THEN
17045                      fnd_log.STRING
17046                                 (fnd_log.level_event,
17047                                     g_module_current
17048                                  || '.CREATE_CONTRACT_IBUPDATE',
17049                                     'oks_ihd_pvt.insert_row(Return status = '
17050                                  || l_return_status
17051                                  || ')'
17052                                 );
17053                   END IF;
17054 
17055                   x_return_status := l_return_status;
17056 
17057                   IF NOT l_return_status = okc_api.g_ret_sts_success
17058                   THEN
17059                      x_return_status := l_return_status;
17060                      RAISE g_exception_halt_validation;
17061                   END IF;
17062                END IF;
17063             END IF;
17064 
17065             EXIT WHEN l_ctr = p_kdtl_tbl.LAST;
17066             l_ctr := p_kdtl_tbl.NEXT (l_ctr);
17067          END LOOP;
17068       END IF;
17069 
17070       x_return_status := l_return_status;
17071    EXCEPTION
17072       WHEN g_exception_halt_validation
17073       THEN
17074          x_return_status := l_return_status;
17075          NULL;
17076       WHEN OTHERS
17077       THEN
17078          x_return_status := okc_api.g_ret_sts_unexp_error;
17079          okc_api.set_message (g_app_name,
17080                               g_unexpected_error,
17081                               g_sqlcode_token,
17082                               SQLCODE,
17083                               g_sqlerrm_token,
17084                               SQLERRM
17085                              );
17086    END;
17087 
17088    PROCEDURE get_jtf_resource (
17089       p_authorg_id                   NUMBER,
17090       p_party_id                     NUMBER,
17091       x_winners_rec     OUT NOCOPY   jtf_terr_assign_pub.bulk_winners_rec_type,
17092       x_msg_count       OUT NOCOPY   NUMBER,
17093       x_msg_data        OUT NOCOPY   VARCHAR2,
17094       x_return_status   OUT NOCOPY   VARCHAR2
17095    )
17096    IS
17097 -- Fix for bug 4142999
17098       CURSOR get_vendor_details
17099       IS
17100          SELECT a.party_name, b.country, b.region_2
17101            FROM hr_locations b, hr_all_organization_units c, hz_parties a
17102           WHERE b.location_id = c.location_id
17103             AND c.organization_id = p_authorg_id
17104             AND a.party_id = p_party_id;
17105 
17106       CURSOR get_party_details
17107       IS
17108          SELECT hz.party_name, hzl.country, hzl.state
17109            FROM hz_parties hz, hz_party_sites hzs, hz_locations hzl
17110           WHERE hz.party_id = p_party_id
17111             AND hzs.party_id = hz.party_id
17112             AND hzs.identifying_address_flag = 'Y'
17113             AND hzl.location_id = hzs.location_id;
17114 
17115       l_gen_bulk_rec     jtf_terr_assign_pub.bulk_trans_rec_type;
17116       l_gen_return_rec   jtf_terr_assign_pub.bulk_winners_rec_type;
17117       l_party_name       VARCHAR2 (360);
17118       l_country_code     VARCHAR2 (60);
17119       l_state_code       VARCHAR2 (120);
17120       l_use_type         VARCHAR2 (30);
17121       l_msg_count        NUMBER;
17122       l_msg_data         VARCHAR2 (200);
17123       l_return_status    VARCHAR2 (3);
17124    BEGIN
17125 -- Fix for bug 4142999
17126       IF NVL (fnd_profile.VALUE ('OKS_SRC_TERR_QUALFIERS'), 'V') = 'V'
17127       THEN
17128          OPEN get_vendor_details;
17129 
17130          FETCH get_vendor_details
17131           INTO l_party_name, l_country_code, l_state_code;
17132 
17133          CLOSE get_vendor_details;
17134       ELSE
17135          OPEN get_party_details;
17136 
17137          FETCH get_party_details
17138           INTO l_party_name, l_country_code, l_state_code;
17139 
17140          CLOSE get_party_details;
17141       END IF;
17142 
17143       l_gen_bulk_rec.trans_object_id.EXTEND;
17144       l_gen_bulk_rec.trans_detail_object_id.EXTEND;
17145       l_gen_bulk_rec.squal_char01.EXTEND;
17146       l_gen_bulk_rec.squal_char04.EXTEND;
17147       l_gen_bulk_rec.squal_char07.EXTEND;
17148       l_gen_bulk_rec.squal_num01.EXTEND;
17149 
17150       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17151       THEN
17152          fnd_log.STRING (fnd_log.level_statement,
17153                          g_module_current,
17154                             'Values passed to JTF API : '
17155                          || ' Party ID '
17156                          || p_party_id
17157                          || ' Party Name'
17158                          || l_party_name
17159                          || ' State Code'
17160                          || l_state_code
17161                          || ' Country Code'
17162                          || l_country_code
17163                          || ' Territory Qualifier profile '
17164                          || fnd_profile.VALUE ('OKS_SRC_TERR_QUALFIERS')
17165                         );
17166       END IF;
17167 
17168       l_gen_bulk_rec.trans_object_id (1) := 100;
17169       l_gen_bulk_rec.trans_detail_object_id (1) := 1000;
17170       l_gen_bulk_rec.squal_char01 (1) := l_party_name;
17171       l_gen_bulk_rec.squal_char04 (1) := l_state_code;
17172       l_gen_bulk_rec.squal_char07 (1) := l_country_code;
17173       l_gen_bulk_rec.squal_num01 (1) := p_party_id;
17174       l_use_type := 'RESOURCE';
17175 
17176       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17177       THEN
17178          fnd_log.STRING (fnd_log.level_statement,
17179                          g_module_current
17180                          || '.JTF_TERR_ASSIGN_PUB.get_winners',
17181                          'Before JTF API call '
17182                         );
17183       END IF;
17184 
17185       jtf_terr_assign_pub.get_winners
17186                                    (p_api_version_number      => 1.0,
17187                                     p_init_msg_list           => okc_api.g_false,
17188                                     p_use_type                => l_use_type,
17189                                     p_source_id               => -1500,
17190                                     p_trans_id                => -1501,
17191                                     p_trans_rec               => l_gen_bulk_rec,
17192                                     p_resource_type           => fnd_api.g_miss_char,
17193                                     p_role                    => fnd_api.g_miss_char,
17194                                     p_top_level_terr_id       => fnd_api.g_miss_num,
17195                                     p_num_winners             => fnd_api.g_miss_num,
17196                                     x_return_status           => l_return_status,
17197                                     x_msg_count               => l_msg_count,
17198                                     x_msg_data                => l_msg_data,
17199                                     x_winners_rec             => l_gen_return_rec
17200                                    );
17201       x_winners_rec := l_gen_return_rec;
17202 
17203       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17204       THEN
17205          fnd_log.STRING (fnd_log.level_statement,
17206                          g_module_current
17207                          || '.JTF_TERR_ASSIGN_PUB.get_winners',
17208                          'After JTF call '
17209                         );
17210       END IF;
17211    END get_jtf_resource;
17212 
17213    PROCEDURE send_notification (
17214       p_order_id      IN   NUMBER,
17215       p_contract_id        NUMBER,
17216       p_type          IN   VARCHAR2
17217    )
17218    IS
17219       CURSOR l_fnd_csr (p_user_id NUMBER)
17220       IS
17221          SELECT user_name
17222            FROM fnd_user
17223           WHERE user_id = p_user_id;
17224 
17225       CURSOR get_order_number
17226       IS
17227          SELECT order_number
17228            FROM oe_order_headers_all
17229           WHERE header_id = p_order_id;
17230 
17231       CURSOR get_contract_number
17232       IS
17233          SELECT contract_number || ' ' || contract_number_modifier
17234            FROM okc_k_headers_all_b
17235           WHERE ID = p_contract_id;
17236 
17237       l_return_status          VARCHAR2 (10);
17238       l_msg_data               VARCHAR2 (2000);
17239       l_msg_count              NUMBER;
17240       l_terr_admin_id          NUMBER;
17241       l_order_number           NUMBER          := 0;
17242       l_contract_number        VARCHAR2 (2000);
17243       l_contract_admin_id      NUMBER;
17244       l_contract_approver_id   NUMBER;
17245       l_subj                   VARCHAR2 (1000);
17246       l_msg                    VARCHAR2 (1000);
17247       l_user_name              VARCHAR2 (100);
17248       l_order_num_prompt       VARCHAR2 (100);
17249    BEGIN
17250       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17251       THEN
17252          fnd_log.STRING (fnd_log.level_statement,
17253                          g_module_current,
17254                          'Inside  SEND_NOTIFICATION : '
17255                         );
17256       END IF;
17257 
17258       l_subj := fnd_message.get_string ('OKS', 'OKS_TERR_SETUP_ERR_SUB');
17259       l_terr_admin_id := fnd_profile.VALUE ('OKS_TERR_ADMIN_ID');
17260 
17261       IF (l_terr_admin_id IS NULL)
17262       THEN
17263          l_contract_admin_id := fnd_profile.VALUE ('OKS_CONTRACT_ADMIN_ID');
17264       END IF;
17265 
17266       IF l_terr_admin_id IS NOT NULL
17267       THEN
17268          OPEN l_fnd_csr (l_terr_admin_id);
17269 
17270          FETCH l_fnd_csr
17271           INTO l_user_name;
17272 
17273          CLOSE l_fnd_csr;
17274 
17275          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17276          THEN
17277             fnd_log.STRING (fnd_log.level_statement,
17278                             g_module_current,
17279                             'Territory Admin is not null  - ' || l_user_name
17280                            );
17281          END IF;
17282       ELSIF l_contract_admin_id IS NOT NULL
17283       THEN
17284          OPEN l_fnd_csr (l_contract_admin_id);
17285 
17286          FETCH l_fnd_csr
17287           INTO l_user_name;
17288 
17289          CLOSE l_fnd_csr;
17290 
17291          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17292          THEN
17293             fnd_log.STRING (fnd_log.level_statement,
17294                             g_module_current,
17295                             'Contract Admin is not null  - ' || l_user_name
17296                            );
17297          END IF;
17298       ELSE
17299          l_user_name := fnd_profile.VALUE ('OKC_K_APPROVER');
17300 
17301          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17302          THEN
17303             fnd_log.STRING (fnd_log.level_statement,
17304                             g_module_current,
17305                             'Contract Approver is not null  - ' || l_user_name
17306                            );
17307          END IF;
17308       END IF;
17309 
17310       IF p_order_id IS NOT NULL
17311       THEN
17312          OPEN get_order_number;
17313 
17314          FETCH get_order_number
17315           INTO l_order_number;
17316 
17317          CLOSE get_order_number;
17318 
17319          l_order_num_prompt :=
17320                            fnd_message.get_string ('OKS', 'OKS_ORDER_NUMBER');
17321          l_subj :=
17322                l_subj || ' ' || l_order_num_prompt || ' - ' || l_order_number;
17323       ELSE
17324          OPEN get_contract_number;
17325 
17326          FETCH get_contract_number
17327           INTO l_contract_number;
17328 
17329          CLOSE get_contract_number;
17330 
17331          l_subj :=
17332                l_subj
17333             || ' '
17334             || fnd_message.get_string ('OKS', 'OKS_CONTRACT_NUMBER')
17335             || ' - '
17336             || l_contract_number;
17337       END IF;
17338 
17339       IF (p_type = 'NRS')
17340       THEN
17341          l_msg := fnd_message.get_string ('OKS', 'OKS_NO_TERR_RESOURCES');
17342       ELSIF (p_type = 'ISP')
17343       THEN
17344          l_msg := fnd_message.get_string ('OKS', 'OKS_INVALID_SALES_PERSON');
17345       ELSE
17346          l_msg := fnd_message.get_string ('OKS', 'OKS_TERR_SETUP_ERR_SUB');
17347       END IF;
17348 
17349       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17350       THEN
17351          fnd_log.STRING (fnd_log.level_statement,
17352                          g_module_current,
17353                             'p_recipient is '
17354                          || l_user_name
17355                          || ' Order no is  '
17356                          || l_order_number
17357                          || 'Contract Number Is  '
17358                          || l_contract_number
17359                         );
17360       END IF;
17361 
17362       okc_async_pub.msg_call (p_api_version        => 1,
17363                               x_return_status      => l_return_status,
17364                               x_msg_count          => l_msg_count,
17365                               x_msg_data           => l_msg_data,
17366                               p_recipient          => l_user_name,
17367                               p_msg_body           => l_msg,
17368                               p_msg_subj           => l_subj,
17369                               p_contract_id        => NVL (l_order_number,
17370                                                            p_contract_id
17371                                                           )
17372                              );
17373 
17374       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level
17375       THEN
17376          fnd_log.STRING (fnd_log.level_statement,
17377                          g_module_current,
17378                          'Exiting Send_notification ' || l_return_status
17379                         );
17380       END IF;
17381    END send_notification;
17382 END oks_extwarprgm_pvt;