DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_MASS_UPDATE_PVT

Source


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