DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_CONTRACTS_PUB

Source


1 Package Body OKS_CONTRACTS_PUB  AS
2 /* $Header: OKSPKCRB.pls 120.3 2006/06/06 23:38:00 upillai noship $ */
3 
4 l_api_version       CONSTANT       NUMBER       := 1.0;
5 
6 
7 Function get_top_line_number(p_chr_id IN Number) return Number;
8 Function get_sub_line_number(p_chr_id IN Number,p_cle_id IN Number) return Number;
9 
10 TYPE numeric_tab_typ IS TABLE of number INDEX BY BINARY_INTEGER;
11 
12 TYPE Party_Role_Rec Is Record
13 (
14        authoring_org_id           Number,
15        party_id                   Number,
16        bill_to_id                 Number,
17        third_party_role           VARCHAR2(30),
18        scs_code                   VARCHAR2(30)
19 );
20 -------------------------------------------------------------------------
21 -- Procedure for checking effectivity of line effectivities
22 -------------------------------------------------------------------------
23 
24 PROCEDURE CHECK_LINE_EFFECTIVITY
25 (
26     p_cle_id                    IN      NUMBER,
27     p_srv_sdt                   IN      DATE,
28     p_srv_edt                   IN      DATE,
29     x_line_sdt                  OUT NOCOPY  DATE,
30     x_line_edt                  OUT NOCOPY   DATE,
31     x_status                    OUT NOCOPY    VarChar2
32 )
33 IS
34     CURSOR  l_line_csr  Is
35     SELECT Start_Date, End_Date From OKC_K_LINES_V
36     WHERE  id = p_cle_id;
37 
38     l_line_csr_rec      l_line_csr%ROWTYPE;
39     l_msg_data          Varchar2(2000);
40     l_msg_count         Number;
41     l_return_status     Varchar2(1);
42 
43 BEGIN
44 
45     OPEN l_line_csr;
46     FETCH l_line_csr Into l_line_csr_rec;
47 
48     ----dbms_output.put_line('service_start_date'||p_srv_sdt ||'start date '|| l_line_csr_rec.Start_Date);
49     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CHECK_LINE_EFFECTIVITY ::  Srv Start date : '|| p_srv_sdt );
50     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CHECK_LINE_EFFECTIVITY ::  Srv End date   : '|| p_srv_edt );
51     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CHECK_LINE_EFFECTIVITY ::  Line Start_date: '|| l_line_csr_rec.Start_Date );
52     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CHECK_LINE_EFFECTIVITY ::  Line End_date  : '|| l_line_csr_rec.End_Date );
53 
54     If l_line_csr%FOUND Then
55         If  TRUNC(p_srv_sdt) >= TRUNC(l_line_csr_rec.Start_Date) And
56             TRUNC(p_srv_edt) <= TRUNC(l_line_csr_rec.End_Date) Then
57 
58             x_Status := 'N';
59         Else
60             If p_srv_sdt >= l_line_csr_rec.Start_Date Then
61                 x_line_sdt := l_line_csr_rec.Start_Date;
62             Else
63                 x_line_sdt := p_srv_sdt;
64             End If;
65 
66             If p_srv_edt >= l_line_csr_rec.End_Date Then
67                 x_line_edt := p_srv_edt;
68             Else
69                 x_line_edt := l_line_csr_rec.End_Date;
70             End If;
71             x_Status := 'Y';
72 
73         End If;
74     Else
75         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CHECK_LINE_EFFECTIVITY ::   Start date and End date of the Line not Found');
76         x_Status := 'E';
77     End If;
78 EXCEPTION
79     WHEN OTHERS THEN
80          OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
81          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CHECK_LINE_EFFECTIVITY :: Error:'||SQLCODE ||':'||SQLERRM);
82 
83 END CHECK_LINE_EFFECTIVITY;
84 -----------------------------------------------------------------------------
85 -- Procedure for creating party roles
86 -----------------------------------------------------------------------------
87 
88 PROCEDURE  PARTY_ROLE (  p_ChrId          IN NUMBER,
89                          p_cleid          IN NUMBER,
90                          p_Rle_Code       IN VARCHAR2,
91                          p_PartyId        IN NUMBER,
92                          p_Object_Code    IN VARCHAR2,
93                          x_roleid        OUT NOCOPY NUMBER,
94                          x_return_status OUT NOCOPY VARCHAR2,
95                          x_msg_count     OUT NOCOPY NUMBER,
96                          x_msg_data      OUT NOCOPY VARCHAR2
97 )
98 IS
99 
100   l_api_version         CONSTANT NUMBER      := 1.0;
101   l_init_msg_list       CONSTANT VARCHAR2(1) := 'F';
102   l_return_status       VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
103 
104   l_index                   VARCHAR2(240);
105 
106 --Party Role
107   l_cplv_tbl_in                 okc_contract_party_pub.cplv_tbl_type;
108   l_cplv_tbl_out                okc_contract_party_pub.cplv_tbl_type;
109 
110   Cursor l_party_csr  Is
111   Select Id From OKC_K_PARTY_ROLES_B
112   Where  dnz_chr_id = p_chrid
113   And    cle_id Is Null
114   And    rle_code = p_rle_code;
115 
116   Cursor l_lparty_csr  Is  Select Id From OKC_K_PARTY_ROLES_B
117                            Where  dnz_chr_id = p_chrid
118                            And    cle_id = p_cleid
119                            And    rle_code = p_rle_code;
120 
121   l_roleid                      Number;
122 
123 Begin
124 
125       If p_cleid Is Null Then
126 
127              Open  l_party_csr;
128              Fetch l_party_csr Into l_roleid;
129              Close l_party_csr;
130 
131              If l_roleid Is Not Null Then
132                   x_roleid := l_roleid;
133                   Return;
134              End If;
135 
136              l_cplv_tbl_in(1).chr_id   := p_chrid;
137 
138        Else
139 
140              Open  l_lparty_csr;
141              Fetch l_lparty_csr Into l_roleid;
142              Close l_lparty_csr;
143 
144              If l_roleid Is Not Null Then
145                    x_roleid := l_roleid;
146                    Return;
147              End If;
148 
149              l_cplv_tbl_in(1).cle_id  := p_cleid;
150 
151        End If;
152 
153        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Party_Role ::  rle_code: '|| p_rle_code );
154        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Party_Role ::  p_partyid: '|| p_partyid );
155        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Party_Role ::  p_object_code: '|| p_object_code );
156        ----dbms_output.put_line('party role rle_code'||p_rle_code);
157        ----dbms_output.put_line('party role p_partyid'||p_partyid);
158        ----dbms_output.put_line('party role p_object_code'||p_object_code);
159 
160        l_cplv_tbl_in(1).sfwt_flag                      := 'N';
161        l_cplv_tbl_in(1).rle_code                    := p_rle_code;
162        l_cplv_tbl_in(1).object1_id1                    := p_partyid;
163        l_cplv_tbl_in(1).Object1_id2                    := '#';
164        l_cplv_tbl_in(1).jtot_object1_code              := p_object_code;
165        l_cplv_tbl_in(1).dnz_chr_id                      := p_chrid;
166 
167        Okc_contract_party_pub.create_k_party_role
168        (
169             p_api_version       => l_api_version,
170             p_init_msg_list     => l_init_msg_list,
171             x_return_status     => l_return_status,
172             x_msg_count         => x_msg_count,
173             x_msg_data          => x_msg_data,
174             p_cplv_tbl          => l_cplv_tbl_in,
175             x_cplv_tbl          => l_cplv_tbl_out
176        );
177 
178        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Party_Role ::  create_k_party_role status: '|| l_return_status);
179        ----dbms_output.put_line('party role:'||l_return_status);
180 
181        If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
182 
183              x_roleid := l_cplv_tbl_out(1).id;
184        Else
185              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN,           p_rle_code || ' Party Role (HEADER)');
186              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB):Party_Role ::   Error in Create_k_party role' );
187              Raise   G_EXCEPTION_HALT_VALIDATION;
188 
189 
190        End if;
191        x_return_status := l_return_status;
192 
193  EXCEPTION
194       WHEN  G_EXCEPTION_HALT_VALIDATION THEN
195             x_return_status := l_return_status ;
196       WHEN OTHERS THEN
197             x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
198             OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
199             OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB):Party_Role :: Error:'||SQLCODE ||':'||SQLERRM );
200 
201  End Party_Role;
202 
203 /*
204 ----------------------------------------------------------------------------
205 -- Function for checking the rules exist or not
206 ----------------------------------------------------------------------------
207 Function Check_Rule_Exists
208 (
209     p_rgp_id    IN NUMBER,
210     p_rule_type IN VARCHAR2
211 )   Return NUMBER
212 Is
213      v_id NUMBER;
214 Begin
215      If p_rgp_id is null Then
216          Return(null);
217      Else
218          Select ID Into V_ID From OKC_RULES_V
219          Where  rgp_id = p_rgp_id
220          And    Rule_information_category = p_rule_type;
221 
222          If v_id Is NULL Then
223             return(null);
224          Else
225             return(V_ID);
226          End If;
227      End if;
228 
229 
230 Exception
231   WHEN No_Data_Found Then
232             Return (null);
233 
234 End Check_Rule_Exists;
235 
236 
237 -----------------------------------------------------------------------------
238 -- Check whether rule group exist or not
239 -----------------------------------------------------------------------------
240 
241 Function CHECK_RULE_GRP_EXISTS
242 (
243         p_chr_id IN NUMBER,
244         p_cle_id IN NUMBER
245 ) Return NUMBER
246 Is
247             v_id NUMBER;
248 Begin
249 
250 
251     If (p_chr_id IS NOT NULL) Then
252         SELECT ID INTO V_ID FROM OKC_RULE_GROUPS_V
253         WHERE  Dnz_CHR_ID = p_chr_id
254         And    cle_id is null ;
255         If V_ID IS NULL Then
256             return(NULL);
257         Else
258             return(V_ID);
259         End If;
260     End If;
261 
262     If (p_cle_id IS NOT NULL) Then
263         SELECT ID INTO V_ID FROM OKC_RULE_GROUPS_V WHERE CLE_ID = p_cle_id;
264         If V_ID IS NULL Then
265             return(NULL);
266         Else
267             return(V_ID);
268         End If;
269     End If;
270 
271 Exception
272     When OTHERS Then
273         RETURN(NULL);
274 
275 End CHECK_RULE_GRP_EXISTS;
276 
277 */
278 --------------------------------------------------------------------------------
279 -- Create Articles
280 --------------------------------------------------------------------------------
281 
282 procedure Create_articles
283 (
284  p_articles_tbl       IN  obj_articles_tbl
285 ,p_contract_id       IN  NUMBER
286 ,p_cle_id               IN  NUMBER
287 ,p_dnz_chr_id       IN  NUMBER
288 ,x_return_status    OUT NOCOPY Varchar2
289 ,x_msg_count       OUT  NOCOPY Number
290 ,x_msg_data         OUT NOCOPY Varchar2
291 )
292 Is
293 
294    Cursor l_art_csr(p_name Varchar2) Is
295    Select id
296    From   okc_std_articles_v
297    Where  name = p_name;
298 
299    Cursor l_art_release_csr(p_sae_id Number) Is
300    Select sav_release
301    From   okc_std_art_versions_v
302    Where  sae_id = p_sae_id;
303 
304 
305    l_catv_tbl_in  OKC_K_ARTICLE_PUB.catv_tbl_type;
306    l_catv_tbl_out  OKC_K_ARTICLE_PVT.catv_tbl_type;
307 
308    l_sae_id                     Number;
309    l_sae_release                Varchar2(100);
310    l_api_version                CONSTANT NUMBER      := 1.0;
311    l_init_msg_list              CONSTANT VARCHAR2(1) := 'F';
312    l_return_status              VARCHAR2(1)          := OKC_API.G_RET_STS_SUCCESS;
313    l_index                      VARCHAR2(240);
314    l_msg_count                  NUMBER;
315    l_msg_data                   VARCHAR2(2000);
316 
317 
318 
319 Begin
320    x_return_status := OKC_API.G_RET_STS_SUCCESS;
321 
322    For l_ptr in 1..P_Articles_tbl.count
323    Loop
324 
325        Open l_art_csr(p_articles_tbl(l_ptr).name);
326        Fetch l_art_csr Into l_sae_id;
327        Close l_art_csr;
328 
329        Open l_art_release_csr(l_sae_id);
330        Fetch l_art_release_csr into l_sae_release;
331        Close l_art_release_csr;
332 
333        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CREATE_ARTICLES :: l_sae_id:'|| l_sae_id);
334        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CREATE_ARTICLES :: l_sae_release:'|| l_sae_release);
335 
336        l_catv_tbl_in(1).sav_sae_id        := l_sae_id;
337        l_catv_tbl_in(1).sbt_code          := p_articles_tbl(l_ptr).subject_code;
338        l_catv_tbl_in(1).cat_type          := 'STA';
339        l_catv_tbl_in(1).chr_id            := p_contract_id;
340        l_catv_tbl_in(1).cle_id            := p_cle_id;
341        l_catv_tbl_in(1).cat_id            := NULL;
342        l_catv_tbl_in(1).dnz_chr_id        := p_dnz_chr_id;
343        l_catv_tbl_in(1).fulltext_yn       := p_articles_tbl(l_ptr).full_text_yn;
344        l_catv_tbl_in(1).sav_sav_release   := l_sae_release;
345 
346 
347        Okc_k_article_pub. create_k_article
348         (
349              p_api_version    => l_api_version,
350              p_init_msg_list  => l_init_msg_list,
351              x_return_status  => l_return_status,
352              x_msg_count      => l_msg_count      ,
353              x_msg_data       => l_msg_data        ,
354              p_catv_tbl       => l_catv_tbl_in     ,
355              x_catv_tbl       => l_catv_tbl_out
356         );
357         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CREATE_ARTICLES ::  Create_k_article status:'|| l_return_status);
358         x_return_status := l_return_status;
359 
360         If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
361                OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'ARITCLES (HEADER)');
362                Raise G_EXCEPTION_HALT_VALIDATION;
363 
364         End If;
365 
366 
367    End Loop;
368    x_return_status := l_return_status;
369 
370    EXCEPTION
371          WHEN  G_EXCEPTION_HALT_VALIDATION THEN
372             x_return_status := l_return_status ;
373 
374           WHEN  Others THEN
375                 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
376                 OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
377                 OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).CREATE_ARTICLES :: Error : '||SQLCODE ||':'|| SQLERRM);
378 
379 End Create_articles;
380 ------------------------------------------------------------------------------------------
381 /*********function to validate credit card  WHICH  Returns 0' failure,  1' success*****/
382 ------------------------------------------------------------------------------------------
383 
384 FUNCTION Validate_credit_card
385          (
386           p_cc_num_stripped       IN  VARCHAR2
387          )
388   RETURN number IS
389 
390   l_stripped_num_table      numeric_tab_typ;   /* Holds credit card number stripped of white spaces */
391   l_product_table           numeric_tab_typ;   /* Table of cc digits multiplied by 2 or 1,for validity check */
392   l_len_credit_card_num     number := 0;       /* Length of credit card number stripped of white spaces */
393   l_product_tab_sum         number := 0;       /* Sum of digits in product table */
394   l_actual_cc_check_digit   number := 0;       /* First digit of credit card, numbered from right to left */
395   l_mod10_check_digit       number := 0;       /* Check digit after mod10 algorithm is applied */
396   j                         number := 0;       /* Product table index */
397 
398   BEGIN
399 
400         SELECT length(p_cc_num_stripped)
401         INTO   l_len_credit_card_num
402         FROM   dual;
403 
404         FOR i in 1..l_len_credit_card_num
405         LOOP
406                SELECT to_number(substr(p_cc_num_stripped,i,1))
407                INTO   l_stripped_num_table(i)
408                FROM   dual;
409         END LOOP;
410 
411         l_actual_cc_check_digit := l_stripped_num_table(l_len_credit_card_num);
412 
413         FOR i in 1..l_len_credit_card_num-1
414         LOOP
415             IF ( mod(l_len_credit_card_num+1-i,2) > 0 ) THEN
416 
417                 -- Odd numbered digit.  Store as is, in the product table.
418                 j := j+1;
419                 l_product_table(j) := l_stripped_num_table(i);
420 
421             ELSE
422                 -- Even numbered digit.  Multiply digit by 2 and store in the product table.
423                 -- Numbers beyond 5 result in 2 digits when multiplied by 2. So handled seperately.
424 
425                 IF (l_stripped_num_table(i) >= 5) THEN
426 
427                      j := j+1;
428                      l_product_table(j) := 1;
429                      j := j+1;
430                      l_product_table(j) := (l_stripped_num_table(i) - 5) * 2;
431 
432                 ELSE
433 
434                      j := j+1;
435                      l_product_table(j) := l_stripped_num_table(i) * 2;
436 
437                 END IF;
438             END IF;
439         END LOOP;
440 
441         -- Sum up the product table's digits
442 
443         FOR k in 1..j
444         LOOP
445             l_product_tab_sum := l_product_tab_sum + l_product_table(k);
446         END LOOP;
447 
448         l_mod10_check_digit := mod( (10 - mod( l_product_tab_sum, 10)), 10);
449 
450         -- If actual check digit and check_digit after mod10 don't match, the credit card is an invalid one.
451 
452         IF ( l_mod10_check_digit <> l_actual_cc_check_digit) THEN
453             return(0);
454         ELSE
455             return(1);
456         END IF;
457 
458 EXCEPTION
459         When Others Then
460              OKS_RENEW_PVT.DEBUG_LOG( 'VALIDATE CREDIT CARD ::  Error in Validate Credit card');
461              OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
462 
463 END Validate_Credit_Card;
464 
465 
466 ---------------------------------------------------------------------------------------------------
467 -- function to validate line records WHICH  Returns 0' failure,  1' success
468 ---------------------------------------------------------------------------------------------------
469 
470 PROCEDURE Validate_Line_Record(
471                   p_line_rec        IN   line_Rec_Type,
472                   x_return_status   OUT NOCOPY VARCHAR2
473 )
474 IS
475 
476 BEGIN
477      x_return_status := OKC_API.G_RET_STS_SUCCESS;
478 
479 
480 
481      IF   p_line_rec.srv_id IS NULL THEN
482 
483           x_return_status :=  OKC_API.G_RET_STS_ERROR;
484           ----dbms_output.put_line('K LINE VALIDATION :- SRV ID REQUIRED FOR LINE RECORD');
485           OKS_RENEW_PVT.DEBUG_LOG( 'OKS_CONTARACTS_PUB .VALIDATE_LINE_RECORD ::   SRV_Id required for line record');
486           OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' SRV ID REQUIRED FOR LINE RECORD');
487           Raise G_EXCEPTION_HALT_VALIDATION;
488 
489      ELSIF p_line_rec.organization_id IS NULL THEN
490 
491            x_return_status :=  OKC_API.G_RET_STS_ERROR;
492            ----dbms_output.put_line('(OKS_CONTRACTS_PUB): K LINE VALIDATION :-  ORGANIZATION ID REQUIRED FOR LINE RECORD');
493            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::   Organization_Id required for line record');
494            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' ORGANIZATION ID REQUIRED FOR LINE RECORD');
495            Raise G_EXCEPTION_HALT_VALIDATION;
496 
497      ELSIF p_line_rec.srv_sdt IS NULL THEN
498 
499            x_return_status :=  OKC_API.G_RET_STS_ERROR;
500            ----dbms_output.put_line('K LINE VALIDATION :-   SRV START DATE REQUIRED FOR LINE RECORD');
501            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::   SRV Start_Date required for line record');
502            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' SRV START DATE REQUIRED FOR LINE RECORD');
503            Raise G_EXCEPTION_HALT_VALIDATION;
504 
505      ELSIF p_line_rec.srv_edt IS NULL THEN
506 
507            x_return_status :=  OKC_API.G_RET_STS_ERROR;
508            ----dbms_output.put_line('K LINE VALIDATION :-   SRV END DATE REQUIRED FOR LINE RECORD');
509            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::   SRV End_Date required for line record');
510            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' SRV END DATE REQUIRED FOR LINE RECORD');
511            Raise G_EXCEPTION_HALT_VALIDATION;
512 
513      ELSIF  p_line_rec.k_hdr_id IS NULL THEN
514 
515             x_return_status :=  OKC_API.G_RET_STS_ERROR;
516             ----dbms_output.put_line('K LINE VALIDATION :-   K_hdr_id REQUIRED FOR LINE RECORD');
517             OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::   Header_Id required for line record');
518             OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' K_hdr_id REQUIRED FOR LINE RECORD');
519             Raise G_EXCEPTION_HALT_VALIDATION;
520 
521 
522      ELSIF p_line_rec.org_id IS NULL THEN
523 
524            x_return_status :=  OKC_API.G_RET_STS_ERROR;
525            ----dbms_output.put_line('K LINE VALIDATION :-   ORG_ID REQUIRED FOR LINE RECORD');
526            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::   ORG Id required for line record');
527            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' ORG_ID REQUIRED FOR LINE RECORD');
528            Raise G_EXCEPTION_HALT_VALIDATION;
529 
530      ELSIF (p_line_rec.usage_type = 'VRT' OR p_line_rec.usage_type = 'QTY' OR p_line_rec.usage_type = 'FRT')
531            AND ( p_line_rec.usage_period IS NULL) THEN
532 
533            x_return_status :=  OKC_API.G_RET_STS_ERROR;
534            ----dbms_output.put_line('K LINE VALIDATION :-   USAGE PERIOD REQUIRED FOR LINE RECORD');
535            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::   Usage_Period required for line record');
536            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' USAGE PERIOD REQUIRED FOR LINE RECORD');
537            Raise G_EXCEPTION_HALT_VALIDATION;
538 
539      ELSIF (p_line_rec.usage_type = 'VRT' OR p_line_rec.usage_type = 'QTY') AND (p_line_rec.invoicing_rule_type <> -3) THEN
540 
541            x_return_status :=  OKC_API.G_RET_STS_ERROR;
542            ----dbms_output.put_line('K LINE VALIDATION :-   ARRERS INVOICE TYPE REQUIRED FOR LINE RECORD');
543            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::  Arrers Invoice Type required for line record');
544            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, ' ARRERS INVOICE TYPE REQUIRED.');
545            Raise G_EXCEPTION_HALT_VALIDATION;
546 
547      END IF;
548 
549 EXCEPTION
550 
551    WHEN  G_EXCEPTION_HALT_VALIDATION THEN
552       NULL;
553    WHEN  Others THEN
554       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
555       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
556       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::  Error :'||SQLCODE ||':'|| SQLERRM);
557 
558 END Validate_Line_Record;
559 
560 
561 ------------------------------------------------------------------------------------------------------
562 -- Procedure to validate covered product Record
563 ------------------------------------------------------------------------------------------------------
564 
565 PROCEDURE Validate_Cp_Rec
566 (
567                  p_cp_rec        IN  Covered_level_Rec_Type,
568                  p_usage_type    IN  VARCHAR2,
569                  x_return_status OUT  NOCOPY VARCHAR2
570 )
571 IS
572 
573 l_msg_data          Varchar2(2000);
574 l_msg_count         Number;
575 
576 BEGIN
577 
578 x_return_status :=  OKC_API.G_RET_STS_SUCCESS;
579 
580 IF    p_cp_rec.Product_start_date IS NULL THEN
581 
582       x_return_status :=  OKC_API.G_RET_STS_ERROR;
583       ----dbms_output.put_line('K COVERED PRODUCT VALIDATION :-   PRODUCT START DATE REQUIRED FOR COVERED PRODUCT');
584       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_CP_REC ::   Product_Start_Date required for CP');
585       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'PRODUCT START DATE REQUIRED FOR COVERED PRODUCT');
586       Raise G_EXCEPTION_HALT_VALIDATION;
587 
588 ELSIF p_cp_rec.Product_end_date IS NULL THEN
589 
590       x_return_status :=  OKC_API.G_RET_STS_ERROR;
591       ----dbms_output.put_line('K COVERED PRODUCT VALIDATION :-   PRODUCT END DATE REQUIRED FOR COVERED PRODUCT');
592       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_CP_REC ::   Product_End_Date required for CP');
593       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'PRODUCT END DATE REQUIRED FOR COVERED PRODUCT');
594       Raise G_EXCEPTION_HALT_VALIDATION;
595 
596 ELSIF p_cp_rec.Customer_Product_Id IS NULL THEN
597 
598       x_return_status :=  OKC_API.G_RET_STS_ERROR;
599       ----dbms_output.put_line('K COVERED PRODUCT VALIDATION :-   PRODUCTID REQUIRED FOR COVERED PRODUCT');
600       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_CP_REC ::   Product_Id required for CP');
601       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'PRODUCT ID REQUIRED FOR COVERED PRODUCT');
602       Raise G_EXCEPTION_HALT_VALIDATION;
603 
604 ELSIF p_usage_type = 'FRT' AND p_cp_rec.fixed_qty IS NULL THEN
605 
606       x_return_status :=  OKC_API.G_RET_STS_ERROR;
607       ----dbms_output.put_line('K COVERED PRODUCT VALIDATION :-   FIXED_QTY REQUIRED FOR COVERED PRODUCT');
608       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_CP_REC ::  Fixed_qty required for CP');
609       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'FIXED_QTY REQUIRED FOR COVERED PRODUCT');
610       Raise G_EXCEPTION_HALT_VALIDATION;
611 
612 ELSIF p_usage_type = 'NPR' AND p_cp_rec.negotiated_amount IS NULL THEN
613 
614       x_return_status :=  OKC_API.G_RET_STS_ERROR;
615       ----dbms_output.put_line('K COVERED PRODUCT VALIDATION :-   NEGOTIATED_AMOUNT REQUIRED FOR COVERED PRODUCT');
616       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_CP_REC ::  Negotiated_amount required for CP');
617       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'NEGOTIATED_AMOUNT REQUIRED FOR COVERED PRODUCT');
618       Raise G_EXCEPTION_HALT_VALIDATION;
619 
620 ELSIF (p_usage_type = 'VRT' OR p_usage_type = 'QTY')AND
621       (p_cp_rec.default_qty IS NULL OR p_cp_rec.base_reading IS NULL)THEN
622 
623       x_return_status :=  OKC_API.G_RET_STS_ERROR;
624       ----dbms_output.put_line('K COVERED PRODUCT VALIDATION :-   DEFAULT_QTY AND BASE_READING REQUIRED REQUIRED FOR COVERED PRODUCT');
625       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_CP_REC ::  Default_Qty and Base_reading required for CP');
626       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'DEFAULT_QTY AND BASE_READING REQUIRED FOR COVERED PRODUCT');
627       Raise G_EXCEPTION_HALT_VALIDATION;
628 
629 END IF;
630 
631 EXCEPTION
632 
633   WHEN  G_EXCEPTION_HALT_VALIDATION THEN
634       NULL;
635   WHEN  Others THEN
636       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
637       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
638       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_CP_REC ::  Error :' || SQLCODE ||':'|| SQLERRM);
639 END Validate_Cp_Rec;
640 
641 
642 -------------------------------------------------------------------------------------
643 -- create time value For Billing Schedule
644 -------------------------------------------------------------------------------------
645 
646 PROCEDURE Create_timeval( p_line_id        IN   NUMBER,
647                           x_time_val       OUT NOCOPY NUMBER,
648                           x_return_status  OUT NOCOPY VARCHAR2
649 )
650 IS
651 
652 CURSOR l_line_csr(p_cle_id NUMBER) IS
653        SELECT dnz_chr_id, start_date
654        FROM okc_k_lines_b
655        WHERE id = p_cle_id;
656 
657 l_line_rec            l_line_csr%ROWTYPE;
658 
659 --Time value
660 l_tavv_tbl_in         okc_time_pub.tavv_tbl_type;
661 l_tavv_tbl_out        okc_time_pub.tavv_tbl_type;
662 l_msg_count           Number;
663 l_msg_data            VARCHAR2(2000);
664 l_return_status       VARCHAR2(10) := OKC_API.G_RET_STS_SUCCESS;
665 l_init_msg_list       VARCHAR2(2000) := OKC_API.G_FALSE;
666 
667 BEGIN
668 
669     OPEN l_line_csr(p_line_id);
670     FETCH l_line_csr INTO l_line_rec;
671 
672     IF l_line_csr%NOTFOUND THEN
673 
674        x_return_status := OKC_API.G_RET_STS_ERROR;
675        OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN, 'LINE NOT FOUND - CREATE_TIMEVAL');
676        Raise G_EXCEPTION_HALT_VALIDATION ;
677        Close l_line_csr;
678        RETURN;
679 
680     ELSE
681        Close l_line_csr;
682     END IF;
683 
684     l_tavv_tbl_in(1).dnz_chr_id  := l_line_rec.dnz_chr_id;
685     l_tavv_tbl_in(1).datetime    := l_line_rec.start_date;
686 
687     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRCACTS_PUB).CREATE_TIMEVAL :: dnz_chr_id: '||l_line_rec.dnz_chr_id);
688     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRCACTS_PUB).CREATE_TIMEVAL :: datetime: '||l_line_rec.start_date);
689 
690 
691     OKC_TIME_PUB.CREATE_TPA_VALUE
692      (
693       p_api_version     =>    l_api_version,
694       p_init_msg_list   =>    l_init_msg_list,
695       x_return_status   =>    l_return_status,
696       x_msg_count       =>    l_msg_count,
697       x_msg_data        =>    l_msg_data,
698       p_tavv_tbl        =>    l_tavv_tbl_in,
699       x_tavv_tbl        =>    l_tavv_tbl_out
700       );
701 
702     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRCACTS_PUB).CREATE_TIMEVAL :: CREATE_TPA_VALUE status: '||l_return_status);
703 
704      x_return_status  := l_return_status;
705      If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
706            x_time_val  := l_tavv_tbl_out(1).id;
707      Else
708 
709         OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN, 'CREATE_TPA_VALUE');
710         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRCACTS_PUB).CREATE_TIMEVAL ::  Error in create timeval');
711         Raise G_EXCEPTION_HALT_VALIDATION ;
712 
713      End If;
714 
715     x_return_status := l_return_status;
716 
717 EXCEPTION
718 
719    WHEN  G_EXCEPTION_HALT_VALIDATION THEN
720       NULL;
721    WHEN  Others THEN
722       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
723       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
724       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).VALIDATE_LINE_RECORD ::  Error :'||SQLCODE ||':'|| SQLERRM);
725 
726 END Create_timeval;
727 
728 
729 
730 ------------------------------------------------------------------------------------------
731 -- Procedure to create Billing Schedule for recursive billing
732 ------------------------------------------------------------------------------------------
733 
734 Procedure Create_Bill_Schedule
735 (
736      p_billing_sch         IN    VARCHAR2,
737      p_strm_level_tbl      IN    OKS_BILL_SCH.StreamLvl_tbl,
738      p_invoice_rule_id     IN    Number,
739      x_return_status       OUT NOCOPY VARCHAR2
740 )
741 IS
742 l_bil_sch_out_tbl       OKS_BILL_SCH.ItemBillSch_tbl;
743 --l_slh_rec               OKS_BILL_SCH.StreamHdr_type;
744 l_time_val              NUMBER;
745 l_invoice_rule_id       NUMBER;
746 l_msg_data              Varchar2(2000);
747 l_msg_count             Number;
748 
749 BEGIN
750 
751     IF p_strm_level_tbl(1).cle_id IS NULL THEN
752 
753              x_return_status := OKC_API.G_RET_STS_ERROR;
754              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'LINE ID REQUIRED FOR SLH');
755              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Bill_Schedule :: Line Id required for SLH');
756             Raise G_EXCEPTION_HALT_VALIDATION ;
757 
758     END IF;
759 
760 -- Commented
761 -- Rules re-architecture project for 11.5.10
762 /*
763                      l_slh_rec := p_Strm_hdr_rec;
764                      If l_slh_rec.Object1_Id1 IS NULL THEN
765                          l_slh_rec.Object1_Id1 := '1';
766                      END IF;
767 
768                      Create_timeval
769                      (
770                          p_line_id        => l_slh_rec.cle_id,
771                          x_time_val       => l_time_val,
772                          x_return_status  => x_return_status
773                      );
774 
775                      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Bill_Schedule :: Create_timeval status:'|| x_return_status);
776 
777                      IF x_return_status = 'S' THEN
778                            l_slh_rec.Object2_Id1 := l_time_val;
779                      ELSIF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
780                            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
781                      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
782                            RAISE OKC_API.G_EXCEPTION_ERROR;
783                      END IF;
784 */
785     l_invoice_rule_id := p_invoice_rule_id;
786     IF l_invoice_rule_id IS NULL THEN
787        l_invoice_rule_id := -3;
788     END IF;
789 
790     OKS_BILL_SCH.Create_Bill_Sch_Rules
791     (
792            p_billing_type         => p_billing_sch ,
793            p_sll_tbl              => p_strm_level_tbl,
794            p_invoice_rule_id      => l_invoice_rule_id,
795            x_bil_sch_out_tbl      => l_bil_sch_out_tbl,
796            x_return_status        => x_return_status
797      );
798 
799      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Bill_Schedule :: Create_bill_sch_rules status:'|| x_return_status);
800      --FND_FILE.PUT_LINE (FND_FILE.LOG,'K BILL SCHEDULE STATUS:-  ' || x_return_status);
801      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
802                RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
803      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
804                RAISE OKC_API.G_EXCEPTION_ERROR;
805      END IF;
806 
807 EXCEPTION
808 
809    WHEN  G_EXCEPTION_HALT_VALIDATION THEN
810       NULL;
811 
812   WHEN  Others THEN
813       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
814       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
815       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Bill_Schedule :: Error: '||SQLCODE ||':'|| SQLERRM);
816 
817 END Create_Bill_Schedule;
818 
819 
820 -----------------------------------------------------------------------------------
821 -- Billing schedule for one time billing
822 -----------------------------------------------------------------------------------
823 Procedure Create_Billing_Schd
824 (
825   P_srv_sdt          IN  Date
826 , P_srv_edt          IN  Date
827 , P_amount           IN  Number
828 , P_chr_id           IN  Number
829 , P_rule_id          IN  Varchar2
830 , P_line_id          IN  Number
831 , P_invoice_rule_id  IN  Number
832 , X_msg_data        OUT NOCOPY Varchar2
833 , X_msg_count       OUT NOCOPY Number
834 , X_Return_status   OUT NOCOPY Varchar2
835 )
836 Is
837 
838 --Scedule Billing
839       --l_slh_rec                           OKS_BILL_SCH.StreamHdr_type;
840       l_sll_tbl                           OKS_BILL_SCH.StreamLvl_tbl;
841       l_bil_sch_out                       OKS_BILL_SCH.ItemBillSch_tbl;
842 ---Time value
843       l_tavv_tbl_in                       okc_time_pub.tavv_tbl_type;
844       l_tavv_tbl_out                      okc_time_pub.tavv_tbl_type;
845       l_tpa_id                            Number;
846 
847       l_api_version                       CONSTANT NUMBER       := 1.0;
848       l_init_msg_list                     CONSTANT VARCHAR2(1)  := 'F';
849       l_return_status                     VARCHAR2(1)  := 'S';
850       l_duration                          Number;
851       l_timeunits                         Varchar2(25);
852   Begin
853 
854          x_return_status              := OKC_API.G_RET_STS_SUCCESS;
855 /* -- Rules Rearchitecture TPA id removed
856          l_tavv_tbl_in(1).dnz_chr_id  := P_chr_id;
857          l_tavv_tbl_in(1).datetime    := P_srv_sdt;
858 
859          OKC_TIME_PUB.CREATE_TPA_VALUE
860         (
861           p_api_version     =>    l_api_version,
862           p_init_msg_list   =>    l_init_msg_list,
863           x_return_status   =>    l_return_status,
864           x_msg_count       =>    x_msg_count,
865           x_msg_data        =>    x_msg_data,
866           p_tavv_tbl        =>    l_tavv_tbl_in,
867           x_tavv_tbl        =>    l_tavv_tbl_out
868         );
869 
870          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Billing_Schd :: Create_TPA_value status:'|| l_return_status ||'Id'||l_tavv_tbl_out(1).id);
871          ----dbms_output.put_line('TPA value status '||l_return_status);
872 
873          If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
874            l_tpa_id  := l_tavv_tbl_out(1).id;
875          Else
876            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'CREATE_TPA_VALUE');
877            Raise G_EXCEPTION_HALT_VALIDATION;
878          End If;
879  */
880           Okc_time_util_pub.get_duration
881          (
882           p_start_date    => P_srv_sdt,
883           p_end_date      => P_srv_edt,
884           x_duration      => l_duration,
885           x_timeunit      => l_timeunits,
886           x_return_status => l_return_status
887          );
888 
889          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Billing_Schd :: get_duration status:'|| l_return_status);
890          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Billing_Schd :: Duration:'|| l_duration ||'time unit' ||l_timeunits);
891 
892          ----dbms_output.put_line('get duration status '||l_return_status);
893 
894          If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
895                Raise G_EXCEPTION_HALT_VALIDATION;
896          End If;
897 /*
898          l_slh_rec.cle_id                           := P_line_id;
899          l_slh_rec.Rule_Information1                := 'E';
900          l_slh_rec.Object1_id1                      := '1';
901          l_slh_rec.Object1_id2                      := '#';
902          l_slh_rec.Jtot_Object1_code                := 'OKS_STRM_TYPE';
903          l_slh_rec.Object2_id1                      := l_tpa_id;
904          l_slh_rec.Object2_id2                      := '#';
905          l_slh_rec.Jtot_object2_code                := 'OKS_TIMEVAL';
906          l_slh_rec.Rule_information_category        := 'SLH';
907          l_sll_tbl(1).Rule_Id                       := P_rule_id;
908          l_sll_tbl(1).Rule_Information1             := '1';
909          l_sll_tbl(1).Rule_Information3             := '1';
910          l_sll_tbl(1).Rule_Information4             := l_duration;
911          l_sll_tbl(1).Rule_Information5             := Null;
912          l_sll_tbl(1).Rule_Information6             := p_amount;
913          l_sll_tbl(1).Rule_Information7             := Null;
914          l_sll_tbl(1).Rule_Information8             := Null;
915          l_sll_tbl(1).Rule_Information_Category     := 'SLL';
916          l_sll_tbl(1).object1_id1                   := l_timeunits;
917          l_sll_tbl(1).jtot_object1_code             := 'OKS_TUOM';
918 */
919 
920                   l_sll_tbl(1).cle_id                        := P_line_id;
921                   l_sll_tbl(1).uom_code                      := l_timeunits;
922                   l_sll_tbl(1).sequence_no                   := '1';
923                   l_sll_tbl(1).level_periods                 := '1';
924                   l_sll_tbl(1).start_date                    := P_srv_sdt;
925                   l_sll_tbl(1).uom_per_period                := l_duration;
926                   l_sll_tbl(1).advance_periods               := Null;
927                   l_sll_tbl(1).level_amount                  := p_amount;
928                   l_sll_tbl(1).invoice_offset_days            := Null;
929                   l_sll_tbl(1).interface_offset_days         := Null;
930 
931          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Billing_Schd :: P_amount   :'|| P_amount);
932          ----dbms_output.put_line('before bill sch rule ');
933 
934          OKS_BILL_SCH.Create_Bill_Sch_Rules
935          (
936              p_billing_type       =>   'E'
937            , p_sll_tbl            =>   l_sll_tbl
938            , p_invoice_rule_id    =>   p_invoice_rule_id
939            , x_bil_sch_out_tbl    =>   l_bil_sch_out
940            , x_return_status      =>   l_return_status
941           );
942 
943           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Billing_Schd :: Create_Bill_Sch_Rules status: '||l_return_status);
944           ----dbms_output.put_line('K LINE CREATION :- Create_Bill_Sch_Rules STATUS ' || l_return_status );
945 
946           If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
947               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Sched Billing Rule (LINE)');
948               Raise G_EXCEPTION_HALT_VALIDATION;
949           End If;
950           x_return_status := l_return_status;
951 
952 Exception
953     When  G_EXCEPTION_HALT_VALIDATION Then
954           x_return_status := l_return_status;
955         Null;
956     When  Others Then
957           x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
958           OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
959           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Billing_Schd :: Error: '|| SQLCODE|| ':' ||SQLERRM);
960 
961 End;
962 
963 /*
964 -------------------------------------------------------------------------------------
965 -- Procedure to create Rule groups
966 -------------------------------------------------------------------------------------
967 
968 Procedure Create_Rule_Grp
969 (
970              p_dnz_chr_id     IN  Number,
971              p_chr_id         IN  Number,
972              p_cle_id         IN  Number,
973              x_rul_grp_id     OUT NOCOPY Number,
974              x_return_status  OUT NOCOPY VARCHAR2,
975              x_msg_data       OUT NOCOPY VARCHAR2,
976              x_msg_count      OUT NOCOPY NUMBER
977 )
978 IS
979    l_rul_grp_id               Number;
980    l_return_status            VARCHAR2(100);
981    l_msg_count                VARCHAR2(2000);
982    l_msg_data                 Number;
983    l_api_version     CONSTANT NUMBER      := 1.0;
984    l_rgpv_tbl_in              okc_rule_pub.rgpv_tbl_type;
985    l_rgpv_tbl_out             okc_rule_pub.rgpv_tbl_type;
986    l_msg_data                 Varchar2(2000);
987    l_msg_count                Number;
988 
989 BEGIN
990 
991     l_rgpv_tbl_in.delete;
992 
993 
994     -----check if rule group exists for given line id if not then create it.
995 
996     IF p_cle_id Is NOT NULL THEN         -----------for lines and sub lines level
997 
998        l_rul_grp_id := CHECK_RULE_GRP_EXISTS(Null,p_cle_id);
999 
1000     ELSE               ------for contract level
1001 
1002        l_rul_grp_id := CHECK_RULE_GRP_EXISTS(p_chr_id, NULL);
1003 
1004     END IF;
1005 
1006     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Rule_Grp :: Rule group Id:'|| l_rul_grp_id);
1007     ----dbms_output.put_line('l_rul_grp_id'||l_rul_grp_id);
1008 
1009     IF l_rul_grp_id IS NULL THEN
1010 
1011         ----dbms_output.put_line('G_RULE_GROUP_CODE'||G_RULE_GROUP_CODE);
1012 
1013        l_rgpv_tbl_in(1).chr_id                 := p_chr_id;
1014        l_rgpv_tbl_in(1).cle_id                 := p_cle_id;
1015        l_rgpv_tbl_in(1).sfwt_flag              := 'N';
1016        l_rgpv_tbl_in(1).rgd_code               := G_RULE_GROUP_CODE;
1017        l_rgpv_tbl_in(1).dnz_chr_id             := p_dnz_chr_id;
1018        l_rgpv_tbl_in(1).rgp_type               := 'KRG';
1019        l_rgpv_tbl_in(1).object_version_number  := OKC_API.G_MISS_NUM;
1020        l_rgpv_tbl_in(1).created_by             := OKC_API.G_MISS_NUM;
1021        l_rgpv_tbl_in(1).creation_date          := SYSDATE;
1022        l_rgpv_tbl_in(1).last_updated_by        := OKC_API.G_MISS_NUM;
1023        l_rgpv_tbl_in(1).last_update_date       := SYSDATE;
1024 
1025 
1026        OKC_RULE_PUB.create_rule_group
1027        (
1028                  p_api_version      => l_api_version,
1029                  x_return_status    => l_return_status,
1030                  x_msg_count        => x_msg_count,
1031                  x_msg_data         => x_msg_data,
1032                  p_rgpv_tbl         => l_rgpv_tbl_in,
1033                  x_rgpv_tbl         => l_rgpv_tbl_out
1034         );
1035 
1036         x_return_status := l_return_status;
1037         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Rule_Grp :: create_rule_group status:'|| x_return_status);
1038         --dbms_output.put_line('OKC_RULE_PUB.create_rule_group  = ' || l_return_status);
1039 
1040         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1041 
1042              RAISE G_EXCEPTION_HALT_VALIDATION;
1043 
1044         ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1045 
1046              RAISE G_EXCEPTION_HALT_VALIDATION;
1047 
1048         END IF;
1049 
1050         x_rul_grp_id := l_rgpv_tbl_out(1).id;
1051         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Rule_Grp :: Rule group Id: '||x_rul_grp_id);
1052     ELSE
1053         x_rul_grp_id := l_rul_grp_id;
1054     END IF;
1055 
1056 EXCEPTION
1057   WHEN  G_EXCEPTION_HALT_VALIDATION THEN
1058      null;
1059   WHEN  Others THEN
1060 
1061       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1062       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1063       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Rule_Grp :: Error:'||SQLCODE ||':'|| SQLERRM );
1064 
1065   -----end rule group check
1066 End Create_Rule_Grp;
1067 */
1068 
1069 
1070 
1071 --------------------------------------------------------------------------
1072 -- Procedure for creating contacts
1073 ----------------------------------------------------------------------------
1074 
1075 Procedure Create_contacts(
1076           p_contract_id        IN  NUMBER,
1077           p_line_id            IN  NUMBER,
1078           p_contact_info_tbl   IN  Contact_tbl,
1079           p_party_role         IN  Party_Role_Rec,
1080           x_return_status      OUT NOCOPY VARCHAR2,
1081           x_msg_data           OUT NOCOPY VARCHAR2,
1082           x_msg_count          OUT NOCOPY NUMBER
1083 )
1084 IS
1085 
1086 
1087   CURSOR l_thirdparty_csr (p_id Number) IS
1088          SELECT Party_Id From OKX_CUST_SITE_USES_V
1089          WHERE  ID1 = p_id;
1090 
1091   CURSOR l_cust_csr (p_contactid Number) IS
1092          SELECT Party_Id From OKX_CUST_CONTACTS_V
1093          WHERE  Id1 = p_contactid And id2 = '#';
1094 
1095   CURSOR l_ra_hcontacts_cur (p_contact_id number) Is
1096          SELECT hzr.object_id, hzr.party_id
1097 	  --NPALEPU
1098           --18-JUN-2005,08-AUG-2005
1099           --TCA Project
1100           --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V.
1101           --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
1102          /* FROM ra_hcontacts rah,hz_party_relationships hzr
1103          WHERE  rah.contact_id  = p_contact_id
1104          AND    rah.party_relationship_id = hzr.party_relationship_id; */
1105          FROM OKS_RA_HCONTACTS_V rah,hz_relationships hzr
1106          WHERE  rah.contact_id  = p_contact_id
1107          AND rah.party_relationship_id = hzr.relationship_id
1108          AND hzr.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
1109          AND hzr.OBJECT_TABLE_NAME = 'HZ_PARTIES'
1110          AND hzr.DIRECTIONAL_FLAG = 'F';
1111          --END NPALEPU
1112 
1113   l_cplv_tbl_in                     okc_contract_party_pub.cplv_tbl_type;
1114   l_cplv_tbl_out                    okc_contract_party_pub.cplv_tbl_type;
1115   --Contacts
1116   l_ctcv_tbl_in                     okc_contract_party_pub.ctcv_tbl_type;
1117   l_ctcv_tbl_out                    okc_contract_party_pub.ctcv_tbl_type;
1118 
1119   l_partyid_v                       NUMBER;
1120   l_partyid_t                       NUMBER;
1121   l_rah_party_id                    NUMBER;
1122   l_thirdparty_id                   NUMBER;
1123   l_thirdparty_role                 VARCHAR2(30);
1124   i                                 NUMBER;
1125   l_add2partyid                     NUMBER;
1126   l_hdr_contactid                   NUMBER;
1127   l_partyid                         NUMBER;
1128   l_contact_id                      NUMBER;
1129 
1130   l_api_version         CONSTANT    NUMBER  := 1.0;
1131   l_init_msg_list       CONSTANT    VARCHAR2(1) := OKC_API.G_FALSE;
1132   l_return_status                   VARCHAR2(1) := 'S';
1133   l_index                           VARCHAR2 (2000);
1134   l_msg_data                        VARCHAR2 (2000);
1135   l_msg_count                       NUMBER;
1136 
1137 BEGIN
1138 
1139 --Party Role Routine ('VENDOR')
1140 --- debug messages to be included
1141 If p_party_role.scs_code = 'SUBSCRIPTION' then
1142 
1143         Party_Role(
1144                 p_ChrId          => p_contract_id,
1145                 p_cleId          => p_line_id,
1146                 p_Rle_Code       => 'MERCHANT',
1147                 p_PartyId        => p_party_role.authoring_org_id,
1148                 p_Object_Code    => G_JTF_PARTY_VENDOR,
1149                 x_roleid         => l_partyid_v,
1150                 x_msg_count      => x_msg_count,
1151                 x_msg_data       => x_msg_data,
1152                 x_return_status  => l_return_status
1153                );
1154 
1155         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Merchant Role Creation CPL_Id: '||l_partyid_v);
1156         --dbms_output.put_line( ' MERCHANT ROLE CREATION :- CPL ID ' || l_partyid_v);
1157 
1158         If l_return_status <> OKC_API.G_RET_STS_SUCCESS then
1159             Raise G_EXCEPTION_HALT_VALIDATION;
1160         End If;
1161 
1162 
1163         --Party Role Routine ('CUSTOMER')
1164 
1165         Party_Role (
1166                 p_ChrId          => p_contract_id,
1167                         p_cleId          => p_line_id,
1168                 p_Rle_Code       => 'SUBSCRIBER',
1169                 p_PartyId        => p_party_role.party_id,
1170                 p_Object_Code    => G_JTF_PARTY,
1171                 x_roleid         => l_partyid,
1172                 x_msg_count      => x_msg_count,
1173                 x_msg_data       => x_msg_data,
1174                 x_return_status  => l_return_status
1175                );
1176 
1177          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Subscriber Role Creation CPL_Id: '||l_partyid);
1178          --dbms_output.put_line( ' SUBSCRIBER ROLE CREATION :- CPL ID ' || l_partyid);
1179 
1180          If l_return_status <> OKC_API.G_RET_STS_SUCCESS then
1181               Raise G_EXCEPTION_HALT_VALIDATION;
1182          End If;
1183 
1184 
1185 Else
1186 
1187 
1188          Party_Role (
1189                 p_ChrId          => p_contract_id,
1190                 p_cleId          => p_line_id,
1191                 p_Rle_Code       => 'VENDOR',
1192                 p_PartyId        => p_party_role.authoring_org_id,
1193                 p_Object_Code    => G_JTF_PARTY_VENDOR,
1194                 x_roleid         => l_partyid_v,
1195                 x_msg_count      => x_msg_count,
1196                 x_msg_data       => x_msg_data,
1197                 x_return_status  => l_return_status
1198                );
1199 
1200          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Vendor Role Creation CPL_Id: '||l_partyid_v);
1201          --dbms_output.put_line( ' VENDOR ROLE CREATION :- CPL ID ' || l_partyid_v);
1202 
1203          If l_return_status <> OKC_API.G_RET_STS_SUCCESS then
1204               Raise G_EXCEPTION_HALT_VALIDATION;
1205          End If;
1206 
1207 
1208          --Party Role Routine ('CUSTOMER')
1209 
1210          Party_Role (
1211                 p_ChrId          => p_contract_id,
1212                 p_cleId          => p_line_id,
1213                 p_Rle_Code       => 'CUSTOMER',
1214                 p_PartyId        => p_party_role.party_id,
1215                 p_Object_Code    => G_JTF_PARTY,
1216                 x_roleid         => l_partyid,
1217                 x_msg_count      => x_msg_count,
1218                 x_msg_data       => x_msg_data,
1219                 x_return_status  => l_return_status
1220                );
1221 
1222         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Customer Role Creation CPL_Id: '||l_partyid);
1223         --dbms_output.put_line( ' CUSTOMER ROLE CREATION :- CPL ID ' || l_partyid);
1224 
1225         If l_return_status <> OKC_API.G_RET_STS_SUCCESS then
1226             Raise G_EXCEPTION_HALT_VALIDATION;
1227         End If;
1228 
1229 End If;
1230         Open  l_thirdparty_csr (p_party_role.bill_to_id);
1231         Fetch l_thirdparty_csr Into l_thirdparty_id;
1232         Close l_thirdparty_csr;
1233 
1234         If l_thirdparty_Id Is Not Null Then
1235 
1236             If Not l_thirdparty_Id = p_party_role.party_Id Then
1237 
1238                 l_thirdparty_role := Nvl(p_party_role.third_party_role, 'THIRD_PARTY');
1239 
1240                 --Party Role Routine ('THIRD_PARTY')
1241                 Party_Role (
1242                        p_ChrId          => p_contract_id,
1243                        p_cleId          => p_line_id,
1244                        p_Rle_Code       => l_thirdparty_role,
1245                        p_PartyId        => l_thirdparty_id,
1246                        p_Object_Code    => G_JTF_PARTY,
1247                        x_roleid         => l_partyid_t,
1248                        x_msg_count      => x_msg_count,
1249                        x_msg_data       => x_msg_data,
1250                        x_return_status  => l_return_status
1251                        );
1252 
1253                  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Third Party Role Creation CPL_Id: '||l_partyid_t);
1254                  --dbms_output.put_line( ' THIRD PARTY ROLE CREATION :- CPL ID ' || l_partyid_t);
1255 
1256                  If l_return_status <> OKC_API.G_RET_STS_SUCCESS then
1257                      Raise G_EXCEPTION_HALT_VALIDATION;
1258                  End If;
1259 
1260            End If;
1261      End If;
1262 
1263 
1264 If p_contact_info_tbl.count > 0 Then
1265         i := p_Contact_info_tbl.First;
1266         Loop
1267 
1268             OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Parrt Role: '||p_Contact_info_tbl (i).party_role);
1269             OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Contact Id: '||p_Contact_info_tbl (i).contact_id);
1270             --dbms_output.put_line( ' CONTACT CREATION :- PARTY ROLE ' ||p_Contact_info_tbl (i).party_role);
1271             --dbms_output.put_line( ' CONTACT CREATION :- CONTACT ID ' ||p_Contact_info_tbl (i).contact_id );
1272 
1273             l_ctcv_tbl_in.DELETE;
1274 
1275             IF    p_contact_info_tbl (i).party_role = 'VENDOR' And l_partyid_v Is Not Null Then
1276                   l_add2partyid     := l_partyid_v;
1277                   l_hdr_contactid   := p_contact_info_tbl (i).contact_id;
1278             ELSE
1279 
1280                   Open  l_ra_hcontacts_cur (p_contact_info_tbl (i).contact_id);
1281                   fetch l_ra_hcontacts_cur into l_rah_party_id, l_hdr_contactid;
1282                   close l_ra_hcontacts_cur;
1283 
1284                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Third Party Id: '||l_thirdparty_id);
1285                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Customer Id: '||p_party_role.party_id);
1286                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Org contact Id: '||p_contact_info_tbl (i).contact_id);
1287                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Rah party contact Id: '||l_rah_party_id);
1288                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Rah contact Id: '||l_hdr_contactid );
1289                   --dbms_output.put_line( ' CONTACT CREATION :- THIRDP  ID ' ||l_thirdparty_id);
1290                   --dbms_output.put_line( ' CONTACT CREATION :- CUSTMR  ID ' ||p_party_role.party_id);
1291                   --dbms_output.put_line( ' CONTACT CREATION :- ORG CTC ID ' ||p_contact_info_tbl (i).contact_id );
1292                   --dbms_output.put_line( ' CONTACT CREATION :- RAH PTY ID ' ||l_rah_party_id );
1293                   --dbms_output.put_line( ' CONTACT CREATION :- RAH CTC ID ' ||l_hdr_contactid);
1294 
1295                   IF l_rah_party_id = l_thirdparty_id And l_partyid_t Is Not Null THEN
1296                      l_add2partyid     := l_partyid_t;
1297                   ELSE
1298                      l_add2partyid     := l_partyid;
1299                   END IF;
1300              End If;
1301 
1302              IF l_add2partyid Is Null THEN
1303                     OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, p_contact_info_tbl (i).contact_role
1304                                         || ' Contact (HEADER) Missing Role Id ' || p_contact_info_tbl (i).contact_object_code);
1305                     Raise G_EXCEPTION_HALT_VALIDATION;
1306              End If;
1307 
1308 
1309              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: CPL ID: '||l_add2partyid );
1310              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: CRO CD: '||p_contact_info_tbl (i).contact_role);
1311              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: CTC CD: '||l_hdr_contactid);
1312              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: JTO CD: '||p_contact_info_tbl (i).contact_object_code);
1313              --dbms_output.put_line( ' CONTACT CREATION :- CPL ID ' || l_add2partyid);
1314              --dbms_output.put_line( ' CONTACT CREATION :- CRO CD ' || p_contact_info_tbl (i).contact_role);
1315              --dbms_output.put_line( ' CONTACT CREATION :- CTC CD ' || l_hdr_contactid);
1316              --dbms_output.put_line( ' CONTACT CREATION :- JTO CD ' || p_contact_info_tbl (i).contact_object_code);
1317 
1318              l_ctcv_tbl_in(1).cpl_id                 := l_add2partyid;
1319              l_ctcv_tbl_in(1).dnz_chr_id             := p_contract_id;
1320              l_ctcv_tbl_in(1).cro_code               := p_contact_info_tbl (i).contact_role;
1321              l_ctcv_tbl_in(1).object1_id1            := p_contact_info_tbl (i).contact_id; --l_hdr_contactid;
1322              l_ctcv_tbl_in(1).object1_id2            := '#';
1323              l_ctcv_tbl_in(1).jtot_object1_code      := p_contact_info_tbl (i).contact_object_code;
1324 
1325              okc_contract_party_pub.create_contact
1326              (
1327                 p_api_version   => l_api_version,
1328                 p_init_msg_list => l_init_msg_list,
1329                 x_return_status => l_return_status,
1330                 x_msg_count     => x_msg_count,
1331                 x_msg_data      => x_msg_data,
1332                 p_ctcv_tbl      => l_ctcv_tbl_in,
1333                 x_ctcv_tbl      => l_ctcv_tbl_out
1334               );
1335 
1336               OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Insert contact status: '||l_return_status );
1337               --dbms_output.put_line('insert contact'||l_return_status);
1338 
1339               x_return_status := l_return_status;
1340 
1341               If l_return_status = OKC_API.G_RET_STS_SUCCESS then
1342                    l_contact_id := l_ctcv_tbl_out(1).id;
1343               Else
1344                    OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, p_contact_info_tbl (i).contact_role
1345                                              || ' Contact (HEADER) ' || p_contact_info_tbl (i).contact_object_code);
1346                    Raise G_EXCEPTION_HALT_VALIDATION;
1347               End if;
1348 
1349       Exit When i = p_contact_info_tbl.Last;
1350                i := p_Contact_info_Tbl.Next(i);
1351       End Loop;
1352 
1353 End If;
1354  x_return_status := l_return_status;
1355 
1356 EXCEPTION
1357      WHEN  G_EXCEPTION_HALT_VALIDATION THEN
1358            x_return_status := l_return_status;
1359      WHEN  Others THEN
1360            x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1361            OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1362            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contacts :: Error: '||SQLCODE||':'|| SQLERRM);
1363 
1364 END Create_Contacts;
1365 
1366 
1367 
1368 
1369 
1370 -----------------------------------------------------------------------
1371 -- Procedure Create groups
1372 -----------------------------------------------------------------------
1373 
1374 PROCEDURE Create_Groups
1375 (
1376           p_contract_id     IN  NUMBER,
1377           p_pdf_id          IN  NUMBER,
1378           p_chr_group       IN  NUMBER,
1379           x_return_status   OUT NOCOPY VARCHAR2,
1380           x_msg_data        OUT NOCOPY VARCHAR2,
1381           x_msg_count       OUT NOCOPY NUMBER
1382 )
1383 IS
1384   --Grouping
1385   l_cgcv_tbl_in                     okc_contract_group_pub.cgcv_tbl_type;
1386   l_cgcv_tbl_out                    okc_contract_group_pub.cgcv_tbl_type;
1387 
1388   --Approval WorkFlow
1389   l_cpsv_tbl_in                     okc_contract_pub.cpsv_tbl_type;
1390   l_cpsv_tbl_out                    okc_contract_pub.cpsv_tbl_type;
1391 
1392   l_grpid                           NUMBER;
1393   l_pdfid                           NUMBER;
1394   l_ctrgrp                          NUMBER;
1395   l_init_msg_list                   VARCHAR2(2000) := OKC_API.G_FALSE;
1396   l_return_status                   VARCHAR2(10);
1397   l_msg_count                       NUMBER;
1398   l_msg_data                        VARCHAR2(2000);
1399   l_msg_index_out                   NUMBER;
1400   l_msg_index                       NUMBER;
1401 
1402 BEGIN
1403 
1404 
1405 --Grouping Routine
1406       l_cgcv_tbl_in.DELETE;
1407       l_ctrgrp                                         := Nvl(p_chr_group, Nvl(Fnd_Profile.Value ('OKS_WARR_CONTRACT_GROUP'),2));
1408       l_cgcv_tbl_in(1).cgp_parent_id                   := l_ctrgrp;
1409       l_cgcv_tbl_in(1).included_chr_id                 := p_contract_id;
1410       l_cgcv_tbl_in(1).object_version_number           := OKC_API.G_MISS_NUM;
1411       l_cgcv_tbl_in(1).created_by                      := OKC_API.G_MISS_NUM;
1412       l_cgcv_tbl_in(1).creation_date                   := OKC_API.G_MISS_DATE;
1413       l_cgcv_tbl_in(1).last_updated_by                 := OKC_API.G_MISS_NUM;
1414       l_cgcv_tbl_in(1).last_update_date                := OKC_API.G_MISS_DATE;
1415       l_cgcv_tbl_in(1).last_update_login               := OKC_API.G_MISS_NUM;
1416       l_cgcv_tbl_in(1).included_cgp_id                 := NULL;
1417 
1418       okc_contract_group_pub.create_contract_grpngs
1419       (
1420            p_api_version       => l_api_version,
1421            p_init_msg_list     => l_init_msg_list,
1422            x_return_status     => l_return_status,
1423            x_msg_count         => x_msg_count,
1424            x_msg_data          => x_msg_data,
1425            p_cgcv_tbl          => l_cgcv_tbl_in,
1426            x_cgcv_tbl          => l_cgcv_tbl_out
1427        );
1428 
1429        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Groups :: create contract groups status :'|| l_return_status );
1430        --dbms_output.put_line( 'K HDR CREATION :- GROUPING STATUS ' || l_return_status);
1431 
1432        x_return_status := l_return_status;
1433 
1434        If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
1435               l_grpid := l_cgcv_tbl_out(1).id;
1436        Else
1437                OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Contract Group (HEADER)');
1438                Raise G_EXCEPTION_HALT_VALIDATION;
1439        End if;
1440 
1441 
1442        If p_pdf_id Is Not Null Then
1443 
1444              l_cpsv_tbl_in(1).pdf_id                          := p_pdf_id;
1445              l_cpsv_tbl_in(1).CHR_ID                          := p_contract_id;
1446              l_cpsv_tbl_in(1).USER_ID                         := FND_global.user_id;
1447              l_cpsv_tbl_in(1).IN_PROCESS_YN                   := OKC_API.G_MISS_CHAR;
1448              l_cpsv_tbl_in(1).object_version_number           := OKC_API.G_MISS_NUM;
1449              l_cpsv_tbl_in(1).created_by                      := OKC_API.G_MISS_NUM;
1450              l_cpsv_tbl_in(1).creation_date                   := OKC_API.G_MISS_DATE;
1451              l_cpsv_tbl_in(1).last_updated_by                 := OKC_API.G_MISS_NUM;
1452              l_cpsv_tbl_in(1).last_update_date                := OKC_API.G_MISS_DATE;
1453              l_cpsv_tbl_in(1).last_update_login               := OKC_API.G_MISS_NUM;
1454 
1455              okc_contract_pub.create_contract_process
1456              (
1457                  p_api_version        => l_api_version,
1458                  p_init_msg_list      => l_init_msg_list,
1459                  x_return_status      => l_return_status,
1460                  x_msg_count          => x_msg_count,
1461                  x_msg_data           => x_msg_data,
1462                  p_cpsv_tbl           => l_cpsv_tbl_in,
1463                  x_cpsv_tbl           => l_cpsv_tbl_out
1464               );
1465 
1466               OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Groups :: Create contract process status: '|| l_return_status );
1467               --dbms_output.put_line( 'K HDR CREATION :- PROCESS DEF STATUS ' || l_return_status);
1468 
1469               X_return_status := l_return_status;
1470 
1471               If l_return_status = 'S' then
1472                     l_pdfid := l_cpsv_tbl_out(1).id;
1473               Else
1474                     OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Contract WorkFlow (HEADER)');
1475                     Raise G_EXCEPTION_HALT_VALIDATION;
1476               End if;
1477 
1478          End If; -- pdf not null
1479          x_return_status := l_return_status;
1480 
1481 EXCEPTION
1482 
1483   WHEN  G_EXCEPTION_HALT_VALIDATION THEN
1484         x_return_status := l_return_status;
1485   WHEN  Others THEN
1486         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1487         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
1488         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Groups :: Error: '|| SQLCODE||':'|| SQLERRM);
1489 
1490 END Create_Groups;
1491 
1492 
1493 
1494 -------------------------------------------------------------------------------
1495 -- Function for getting contract header Id
1496 -------------------------------------------------------------------------------
1497 
1498 Function Get_K_Hdr_Id
1499 (
1500         P_Type       IN    VARCHAR2
1501        ,P_Object_ID  IN    NUMBER
1502        ,P_EndDate    IN    DATE
1503 
1504 )
1505 Return NUMBER
1506 Is
1507 
1508  Cursor l_kexists_csr (p_jtf_id VARCHAR2) is
1509         SELECT  Chr_id
1510         FROM    OKC_K_REL_OBJS
1511         WHERE   OBJECT1_ID1 = P_Object_id
1512         AND     jtot_object1_code  = p_jtf_id;
1513 
1514  Cursor l_wexists_csr (p_jtf_id VARCHAR2) is
1515         SELECT  Chr_id
1516         FROM    OKC_K_REL_OBJS
1517         WHERE   OBJECT1_ID1 = P_Object_id
1518         AND     jtot_object1_code  = p_jtf_id
1519         AND     rty_code = 'CONTRACTWARRANTYORDER';
1520 
1521  Cursor l_hdr_csr Is
1522         SELECT Id Chr_Id
1523         FROM   OKC_K_HEADERS_V
1524         WHERE  Attribute1 = p_Object_Id
1525         AND    End_date   = p_EndDate ;
1526 
1527  l_wchrid       Number;
1528  l_kchrid       Number;
1529  l_jtf_id       VARCHAR2(30);
1530 
1531 Begin
1532 
1533     IF P_type = 'ORDER' THEN
1534 
1535         l_jtf_id := G_JTF_ORDER_HDR;
1536 
1537         Open l_kexists_csr (l_jtf_id);
1538         Fetch l_kexists_csr into l_kchrid;
1539         If l_kexists_csr%Notfound THEN
1540             Close l_kexists_csr;
1541             Return(Null);
1542         END If;
1543 
1544         Close l_kexists_csr;
1545         Return(l_kchrid);
1546 
1547     ELSIF P_Type = 'RENEW' THEN
1548 
1549         Open  l_hdr_csr;
1550         Fetch l_hdr_csr Into l_kchrid;
1551         If l_hdr_csr%Notfound then
1552              Close l_hdr_csr;
1553              Return (Null);
1554         End If;
1555         Close l_hdr_csr;
1556         Return (l_kchrid);
1557 
1558      ELSIF P_Type = 'WARR' THEN
1559 
1560           l_jtf_id := G_JTF_ORDER_HDR;
1561           OPEN  l_wexists_csr (l_jtf_id);
1562           FETCH l_wexists_csr into l_wchrid;
1563           IF l_wexists_csr%Notfound THEN
1564               CLOSE l_wexists_csr;
1565               RETURN (Null);
1566           END IF;
1567           CLOSE   l_wexists_csr;
1568           RETURN (l_wchrid);
1569     END IF;
1570 
1571 END Get_K_Hdr_Id;
1572 
1573 
1574 /*----------------------------------------------------------------------------
1575  Procedure create all rules like
1576  TAX, QTO, PRE, PTR, CVN, BTO, STO, RPO,
1577  ARL, IRE, REN, RPT, SBG, RER, CCR, RVE.
1578 -----------------------------------------------------------------------------
1579 */
1580 
1581 PROCEDURE Create_All_Rules
1582 (
1583           p_contract_rec     IN  OKS_CONTRACTS_PUB.header_rec_type,
1584           p_rule_grp_id      IN  NUMBER,
1585           p_dnz_chr_id       IN  NUMBER,
1586           x_return_status    OUT NOCOPY  VARCHAR2,
1587           x_msg_data         OUT NOCOPY VARCHAr2,
1588           x_msg_count        OUT NOCOPY NUMBER
1589 
1590 )
1591 IS
1592   --rules
1593    --l_rulv_tbl_in                    okc_rule_pub.rulv_tbl_type;
1594    --l_rulv_tbl_out                   okc_rule_pub.rulv_tbl_type;
1595    l_khrv_tbl_in                 oks_khr_pvt.khrv_tbl_type;
1596    l_khrv_tbl_out                oks_khr_pvt.khrv_tbl_type;
1597   --Agreements/Governance
1598    l_gvev_tbl_in                    okc_contract_pub.gvev_tbl_type;
1599    l_gvev_tbl_out                   okc_contract_pub.gvev_tbl_type;
1600   --miss
1601    l_init_msg_list                  VARCHAR2(2000) := OKC_API.G_FALSE;
1602    l_return_status                  VARCHAR2(10);
1603    l_msg_count                      NUMBER;
1604    l_msg_data                       VARCHAR2(2000);
1605    l_msg_index_out                  NUMBER;
1606    l_msg_index                      NUMBER;
1607   --program variables
1608    l_rule_id                        NUMBER;
1609    l_govern_id                      NUMBER;
1610    x_credit_card_no                 VARCHAR(40);
1611    l_validate_cc                    NUMBER;
1612    l_return_value                   NUMBER;
1613           l_email_id                    NUMBER;
1614           l_phone_id                    NUMBER;
1615           l_fax_id                      NUMBER;
1616           l_site_id                     NUMBER;
1617 
1618           -- Contact address
1619           CURSOR address_cur_new( p_contact_id NUMBER ) IS
1620                SELECT a.id1
1621                  FROM okx_cust_sites_v a, okx_cust_contacts_v b
1622                 WHERE b.id1 = p_contact_id
1623                   AND a.id1 = b.cust_acct_site_id;
1624 
1625           -- Primary e-mail address
1626           CURSOR email_cur_new( p_contact_id NUMBER ) IS
1627                SELECT contact_point_id
1628                  FROM okx_contact_points_v
1629                 WHERE contact_point_type = 'EMAIL'
1630                   AND primary_flag = 'Y'
1631                   AND owner_table_id = p_contact_id;
1632 
1633           -- Primary telephone number
1634           CURSOR phone_cur_new( p_contact_id NUMBER ) IS
1635                SELECT contact_point_id
1636                  FROM hz_contact_points
1637                 WHERE contact_point_type = 'PHONE'
1638                   AND NVL( phone_line_type, 'GEN' ) = 'GEN'
1639                   AND primary_flag = 'Y'
1640                   AND owner_table_id = p_contact_id;
1641 
1642           -- Any one fax number
1643           CURSOR fax_cur_new( p_contact_id NUMBER ) IS
1644                SELECT contact_point_id
1645                  FROM hz_contact_points
1646                 WHERE contact_point_type = 'PHONE'
1647                   AND phone_line_type = 'FAX'
1648                   AND owner_table_id = p_contact_id;
1649 
1650 BEGIN
1651 
1652 
1653           -- Hdr rules inserted by oks
1654 
1655           l_khrv_tbl_in( 1 ).chr_id               := p_dnz_chr_id;
1656           l_khrv_tbl_in( 1 ).acct_rule_id         := p_contract_rec.accounting_rule_type;    --ARL
1657 
1658           IF p_contract_rec.renewal_type = 'ERN' THEN
1659                l_khrv_tbl_in( 1 ).electronic_renewal_flag := 'Y';
1660               -- l_khrv_tbl_in( 1 ).billing_profile_id      := p_contract_rec.billing_profile_id;
1661           END IF;
1662 
1663           l_khrv_tbl_in( 1 ).renewal_po_required  := NVL(p_contract_rec.renewal_po, 'N');            --RPO
1664           l_khrv_tbl_in( 1 ).renewal_price_list   := p_contract_rec.renewal_price_list_id; --RPT
1665           l_khrv_tbl_in( 1 ).renewal_pricing_type := p_contract_rec.renewal_pricing_type;  --RPT
1666 
1667           IF p_contract_rec.renewal_pricing_type = 'PCT' THEN                              --RPT
1668                l_khrv_tbl_in( 1 ).renewal_markup_percent  :=p_contract_rec.renewal_markup;
1669           ELSE
1670                l_khrv_tbl_in( 1 ).renewal_markup_percent  := NULL;
1671           END IF;
1672 
1673           IF p_contract_rec.qto_contact_id IS NOT NULL THEN                                --QTO
1674                l_khrv_tbl_in( 1 ).quote_to_contact_id  := p_contract_rec.qto_contact_id;
1675                l_khrv_tbl_in( 1 ).quote_to_site_id     := p_contract_rec.qto_site_id;
1676                l_khrv_tbl_in( 1 ).quote_to_email_id    := p_contract_rec.qto_email_id;
1677                l_khrv_tbl_in( 1 ).quote_to_phone_id    := p_contract_rec.qto_phone_id;
1678                l_khrv_tbl_in( 1 ).quote_to_fax_id      := p_contract_rec.qto_fax_id;
1679           ELSIF p_contract_rec.contact_id IS NOT NULL THEN
1680 
1681                OPEN address_cur_new( p_contract_rec.contact_id );
1682                FETCH address_cur_new INTO l_site_id;
1683                CLOSE address_cur_new;
1684 
1685                OPEN email_cur_new( p_contract_rec.contact_id );
1686                FETCH email_cur_new INTO l_email_id;
1687                CLOSE email_cur_new;
1688 
1689                OPEN phone_cur_new( p_contract_rec.contact_id );
1690                FETCH phone_cur_new INTO l_phone_id;
1691                CLOSE phone_cur_new;
1692 
1693                OPEN fax_cur_new( p_contract_rec.contact_id );
1694                FETCH fax_cur_new INTO l_fax_id;
1695                CLOSE fax_cur_new;
1696 
1697                l_khrv_tbl_in( 1 ).quote_to_contact_id :=p_contract_rec.contact_id;
1698                l_khrv_tbl_in( 1 ).quote_to_site_id    := l_site_id;
1699                l_khrv_tbl_in( 1 ).quote_to_email_id   := l_email_id;
1700                l_khrv_tbl_in( 1 ).quote_to_phone_id   := l_phone_id;
1701                l_khrv_tbl_in( 1 ).quote_to_fax_id     := l_fax_id;
1702 
1703           END IF;
1704 
1705           l_khrv_tbl_in( 1 ).tax_status          := p_contract_rec.tax_status_flag; --TAX
1706           l_khrv_tbl_in( 1 ).tax_code            := NULL;                           --TAX
1707           l_khrv_tbl_in( 1 ).tax_exemption_id    := p_contract_rec.tax_exemption_id; --TAX
1708           l_khrv_tbl_in( 1 ).inv_print_profile   := 'N';
1709 
1710           oks_contract_hdr_pub.create_header(
1711                p_api_version                   => l_api_version,
1712                p_init_msg_list                 => l_init_msg_list,
1713                x_return_status                 => l_return_status,
1714                x_msg_count                     => x_msg_count,
1715                x_msg_data                      => x_msg_data,
1716                p_khrv_tbl                      => l_khrv_tbl_in,
1717                x_khrv_tbl                      => l_khrv_tbl_out,
1718                p_validate_yn                   => 'N'
1719            );
1720           OKS_RENEW_PVT.DEBUG_LOG('(OKS_EXTWARPRGM_PVT).Create_K_Hdr :: OKS contract header  : '|| l_return_status);
1721           FND_FILE.PUT_LINE(fnd_file.LOG,'K HDR CREATION :- OKS Contract Header STATUS '|| l_return_status );
1722 
1723           IF NOT l_return_status = okc_api.g_ret_sts_success THEN
1724                OKC_API.SET_MESSAGE(
1725                     g_app_name,
1726                     g_required_value,
1727                     g_col_name_token,
1728                     'OKS (HEADER)'
1729                 );
1730                RAISE G_EXCEPTION_HALT_VALIDATION;
1731           END IF;
1732 
1733 
1734 /*    IF  p_contract_rec.tax_exemption_id Is Not Null THEN
1735 
1736         l_rulv_tbl_in.DELETE;
1737         l_rule_id  := Check_Rule_Exists(p_rule_grp_id, 'TAX');
1738         IF l_rule_id Is NULL THEN
1739 
1740            l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
1741            l_rulv_tbl_in(1).sfwt_flag                 := 'N';
1742            l_rulv_tbl_in(1).std_template_yn           := 'N';
1743            l_rulv_tbl_in(1).warn_yn                   := 'N';
1744            l_rulv_tbl_in(1).rule_information_category := 'TAX';
1745            l_rulv_tbl_in(1).object1_id1               := p_contract_rec.tax_exemption_id;
1746            l_rulv_tbl_in(1).object1_id2               := '#';
1747            l_rulv_tbl_in(1).JTOT_OBJECT1_CODE         := G_JTF_TAXEXEMP;
1748            l_rulv_tbl_in(1).object2_id1               := 'TAX_CONTROL_FLAG';
1749            l_rulv_tbl_in(1).object2_id2               := p_contract_rec.tax_status_flag;
1750            l_rulv_tbl_in(1).JTOT_OBJECT2_CODE         := G_JTF_TAXCTRL;
1751            l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
1752            l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
1753            l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
1754            l_rulv_tbl_in(1).creation_date             := SYSDATE;
1755            l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
1756            l_rulv_tbl_in(1).last_update_date          := SYSDATE;
1757 
1758            OKC_RULE_PUB.create_rule
1759            (
1760                  p_api_version      => l_api_version,
1761                  x_return_status    => l_return_status,
1762                  x_msg_count        => x_msg_count,
1763                  x_msg_data         => x_msg_data,
1764                  p_rulv_tbl         => l_rulv_tbl_in,
1765                  x_rulv_tbl         => l_rulv_tbl_out
1766            );
1767 
1768           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  Tax rule status:'|| l_return_status);
1769           --dbms_output.put_line( 'K HDR CREATION :- TAX RULE STATUS ' || l_return_Status);
1770           x_return_status := l_return_status;
1771 
1772           IF l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
1773              l_rule_id  := l_rulv_tbl_out(1).id;
1774           ELSE
1775              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'TAX EXEMPTION (HEADER)');
1776              Raise G_EXCEPTION_HALT_VALIDATION;
1777           END IF;
1778       END IF;
1779   END IF;
1780 
1781 
1782   IF p_contract_rec.price_list_id Is Not Null THEN
1783 
1784      l_rulv_tbl_in.DELETE;
1785      l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'PRE');
1786      IF  l_rule_id Is NULL THEN
1787 
1788          l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
1789          l_rulv_tbl_in(1).sfwt_flag                 := 'N';
1790          l_rulv_tbl_in(1).std_template_yn           := 'N';
1791          l_rulv_tbl_in(1).warn_yn                   := 'N';
1792          l_rulv_tbl_in(1).rule_information_category := 'PRE';
1793          l_rulv_tbl_in(1).object1_id1               := p_contract_rec.price_list_id;
1794          l_rulv_tbl_in(1).object1_id2               := '#';
1795          l_rulv_tbl_in(1).JTOT_OBJECT1_CODE         := G_JTF_PRICE;
1796          l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
1797          l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
1798          l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
1799          l_rulv_tbl_in(1).creation_date             := SYSDATE;
1800          l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
1801          l_rulv_tbl_in(1).last_update_date          := SYSDATE;
1802          OKC_RULE_PUB.create_rule
1803          (
1804                  p_api_version      => l_api_version,
1805                  x_return_status    => l_return_status,
1806                  x_msg_count        => x_msg_count,
1807                  x_msg_data         => x_msg_data,
1808                  p_rulv_tbl         => l_rulv_tbl_in,
1809                  x_rulv_tbl         => l_rulv_tbl_out
1810          );
1811 
1812 
1813          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  PRE rule status:'|| l_return_status);
1814          --dbms_output.put_line( 'K HDR CREATION :- PRE RULE STATUS ' || l_return_Status);
1815          x_return_status := l_return_status;
1816 
1817 
1818          IF l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
1819             l_rule_id   := l_rulv_tbl_out(1).id;
1820          ELSE
1821             OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'PRICE LIST (HEADER)');
1822             Raise G_EXCEPTION_HALT_VALIDATION;
1823          END IF;
1824 
1825      END IF;
1826   END IF;
1827 -- QTO rule
1828 
1829    if p_contract_rec.qto_contact_id Is Not Null Then
1830 
1831        l_rulv_tbl_in.delete;
1832        l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'QTO');
1833        If l_rule_id Is NULL Then
1834 
1835                 l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
1836                 l_rulv_tbl_in(1).sfwt_flag                 := 'N';
1837                 l_rulv_tbl_in(1).std_template_yn           := 'N';
1838                 l_rulv_tbl_in(1).warn_yn                   := 'N';
1839                 l_rulv_tbl_in(1).rule_information_category := 'QTO';
1840                 l_rulv_tbl_in(1).object1_id1               := p_contract_rec.qto_contact_id;
1841                 l_rulv_tbl_in(1).object1_id2               := '#';
1842                 l_rulv_tbl_in(1).JTOT_OBJECT1_CODE         := 'OKX_CCONTACT';
1843                 l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
1844                 l_rulv_tbl_in(1).rule_information1         := p_contract_rec.qto_email_id;
1845                 l_rulv_tbl_in(1).rule_information2         := p_contract_rec.qto_phone_id;
1846                 l_rulv_tbl_in(1).rule_information3         := p_contract_rec.qto_fax_id;
1847                 l_rulv_tbl_in(1).rule_information4         := p_contract_rec.qto_site_id;
1848 
1849                 OKC_RULE_PUB.create_rule
1850                 (
1851                     p_api_version      => l_api_version,
1852                     x_return_status    => l_return_status,
1853                     x_msg_count        => x_msg_count,
1854                     x_msg_data         => x_msg_data,
1855                     p_rulv_tbl         => l_rulv_tbl_in,
1856                     x_rulv_tbl         => l_rulv_tbl_out
1857                   );
1858 
1859                  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  QTO rule status:'|| l_return_status);
1860                  --dbms_output.put_line('K HDR CREATION :- QTO RULE STATUS ' || l_return_Status);
1861 
1862                  If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
1863                         OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'QTO RUle (HEADER)');
1864                         Raise G_EXCEPTION_HALT_VALIDATION;
1865                  End If;
1866         End If;
1867 
1868     Elsif p_contract_rec.contact_id Is Not Null Then
1869 
1870           l_rulv_tbl_in.delete;
1871           l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'QTO');
1872           If l_rule_id Is NULL Then
1873 
1874                 OKS_EXTWAR_UTIL_PUB.Create_Qto_Rule
1875                 (
1876                     p_api_version   => l_api_version,
1877                     p_init_msg_list => l_init_msg_list,
1878                     p_chr_id        => p_dnz_chr_id,
1879                     p_contact_id    => p_contract_rec.contact_id,
1880                     x_return_status => l_return_status,
1881                     x_msg_count     => x_msg_count,
1882                     x_msg_data      => x_msg_data
1883                  );
1884                  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  QTO rule status:'|| l_return_status);
1885                  --dbms_output.put_line('K HDR CREATION :- QTO RULE STATUS ' || l_return_Status);
1886 
1887                  If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
1888                       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'QTO RUle (HEADER)');
1889                       Raise G_EXCEPTION_HALT_VALIDATION;
1890                  End If;
1891            End If;
1892     End If;
1893 
1894     IF  p_contract_rec.payment_term_id Is Not Null THEN
1895 
1896         l_rulv_tbl_in.DELETE;
1897         l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'PTR');
1898         IF  l_rule_id Is NULL THEN
1899             l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
1900             l_rulv_tbl_in(1).sfwt_flag                 := 'N';
1901             l_rulv_tbl_in(1).std_template_yn           := 'N';
1902             l_rulv_tbl_in(1).warn_yn                   := 'N';
1903             l_rulv_tbl_in(1).rule_information_category := 'PTR';
1904             l_rulv_tbl_in(1).object1_id1               := p_contract_rec.payment_term_id;
1905             l_rulv_tbl_in(1).object1_id2               := '#';
1906             l_rulv_tbl_in(1).JTOT_OBJECT1_CODE         := G_JTF_PAYMENT_TERM;
1907             l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
1908             l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
1909             l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
1910             l_rulv_tbl_in(1).creation_date             := SYSDATE;
1911             l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
1912             l_rulv_tbl_in(1).last_update_date          := SYSDATE;
1913 
1914             OKC_RULE_PUB.create_rule
1915             (
1916                  p_api_version      => l_api_version,
1917                  x_return_status    => l_return_status,
1918                  x_msg_count        => x_msg_count,
1919                  x_msg_data         => x_msg_data,
1920                  p_rulv_tbl         => l_rulv_tbl_in,
1921                  x_rulv_tbl         => l_rulv_tbl_out
1922             );
1923 
1924             OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  PTR rule status:'|| l_return_status);
1925             x_return_status := l_return_status;
1926             --dbms_output.put_line( 'K HDR CREATION :- PTR RULE STATUS ' || x_return_Status);
1927 
1928 
1929             IF l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
1930                l_rule_id    := l_rulv_tbl_out(1).id;
1931             ELSE
1932                OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'PAYMENT TERM (HEADER)');
1933                Raise G_EXCEPTION_HALT_VALIDATION;
1934             END IF;
1935         END IF;
1936     END IF;
1937 
1938 
1939     IF  p_contract_rec.cvn_type Is Not Null THEN
1940 
1941         l_rulv_tbl_in.DELETE;
1942         l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'CVN');
1943         IF l_rule_id Is NULL THEN
1944            l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
1945            l_rulv_tbl_in(1).sfwt_flag                 := 'N';
1946            l_rulv_tbl_in(1).std_template_yn           := 'N';
1947            l_rulv_tbl_in(1).warn_yn                   := 'N';
1948            l_rulv_tbl_in(1).rule_information_category := 'CVN';
1949            l_rulv_tbl_in(1).object1_id1               := p_contract_rec.cvn_type;
1950            l_rulv_tbl_in(1).object1_id2               := '#';
1951            l_rulv_tbl_in(1).JTOT_OBJECT1_CODE         := G_JTF_CONV_TYPE;
1952            l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
1953            l_rulv_tbl_in(1).rule_information1         := p_contract_rec.cvn_rate;
1954            l_rulv_tbl_in(1).rule_information2         := to_char(p_contract_rec.cvn_date ,'YYYY/MM/DD HH24:MI:SS') ;
1955            l_rulv_tbl_in(1).rule_information3         := p_contract_rec.cvn_euro_rate;
1956            l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
1957            l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
1958            l_rulv_tbl_in(1).creation_date             := SYSDATE;
1959            l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
1960            l_rulv_tbl_in(1).last_update_date          := SYSDATE;
1961 
1962            OKC_RULE_PUB.create_rule
1963            (
1964                  p_api_version      => l_api_version,
1965                  x_return_status    => l_return_status,
1966                  x_msg_count        => x_msg_count,
1967                  x_msg_data         => x_msg_data,
1968                  p_rulv_tbl         => l_rulv_tbl_in,
1969                  x_rulv_tbl         => l_rulv_tbl_out
1970             );
1971 
1972            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  CVN rule status:'|| l_return_status);
1973            x_return_status := l_return_status;
1974            --dbms_output.put_line( 'K HDR CREATION :- CVN RULE STATUS ' || l_return_Status);
1975 
1976            If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
1977               l_rule_id := l_rulv_tbl_out(1).id;
1978            Else
1979               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'CONVERSION TYPE (HEADER)');
1980               Raise G_EXCEPTION_HALT_VALIDATION;
1981            End If;
1982        END IF;
1983    END IF;
1984 
1985 --Bill To Routine
1986 
1987    If p_contract_rec.bill_to_id Is Not Null Then
1988 
1989       l_rulv_tbl_in.DELETE;
1990       l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'BTO');
1991       If l_rule_id Is NULL Then
1992          l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
1993          l_rulv_tbl_in(1).sfwt_flag                 := 'N';
1994          l_rulv_tbl_in(1).std_template_yn           := 'N';
1995          l_rulv_tbl_in(1).warn_yn                   := 'N';
1996          l_rulv_tbl_in(1).rule_information_category := 'BTO';
1997          l_rulv_tbl_in(1).object1_id1               := p_contract_rec.bill_to_id;
1998          l_rulv_tbl_in(1).object1_id2               := '#';
1999          l_rulv_tbl_in(1).jtot_object1_code         := G_JTF_BILLTO;
2000          l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2001          l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2002          l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2003          l_rulv_tbl_in(1).creation_date             := SYSDATE;
2004          l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2005          l_rulv_tbl_in(1).last_update_date          := SYSDATE ;
2006 
2007          OKC_RULE_PUB.create_rule
2008          (
2009                  p_api_version      => l_api_version,
2010                  x_return_status    => l_return_status,
2011                  x_msg_count        => x_msg_count,
2012                  x_msg_data         => x_msg_data,
2013                  p_rulv_tbl         => l_rulv_tbl_in,
2014                  x_rulv_tbl         => l_rulv_tbl_out
2015           );
2016 
2017           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  BTO rule status:'|| l_return_status);
2018           x_return_status := l_return_status;
2019           --dbms_output.put_line( 'K HDR CREATION :- BTO RULE STATUS ' || l_return_Status);
2020 
2021           If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2022              l_rule_id  := l_rulv_tbl_out(1).id;
2023           Else
2024              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'BillTo Id (HEADER)');
2025              Raise G_EXCEPTION_HALT_VALIDATION;
2026           End If;
2027        End If;
2028    End If;
2029 
2030 --Ship To Routine
2031 
2032   If p_contract_rec.ship_to_id Is Not Null Then
2033 
2034      l_rulv_tbl_in.DELETE;
2035      l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'STO');
2036      If l_rule_id Is NULL Then
2037         l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2038         l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2039         l_rulv_tbl_in(1).std_template_yn           := 'N';
2040         l_rulv_tbl_in(1).warn_yn                   := 'N';
2041         l_rulv_tbl_in(1).rule_information_category := 'STO';
2042         l_rulv_tbl_in(1).object1_id1               := p_contract_rec.ship_to_id;
2043         l_rulv_tbl_in(1).object1_id2               := '#';
2044         l_rulv_tbl_in(1).jtot_object1_code         := G_JTF_SHIPTO;
2045         l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2046         l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2047         l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2048         l_rulv_tbl_in(1).creation_date             := SYSDATE;
2049         l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2050         l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2051 
2052         OKC_RULE_PUB.create_rule
2053         (
2054                  p_api_version      => l_api_version,
2055                  x_return_status    => l_return_status,
2056                  x_msg_count        => x_msg_count,
2057                  x_msg_data         => x_msg_data,
2058                  p_rulv_tbl         => l_rulv_tbl_in,
2059                  x_rulv_tbl         => l_rulv_tbl_out
2060          );
2061 
2062          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  STO rule status:'|| l_return_status);
2063          x_return_status := l_return_status;
2064          --dbms_output.put_line( 'K HDR CREATION :- STO RULE STATUS ' || l_return_Status);
2065 
2066          If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2067             l_rule_id   := l_rulv_tbl_out(1).id;
2068          Else
2069             OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'ShipTo Id (HEADER)');
2070             Raise G_EXCEPTION_HALT_VALIDATION;
2071          End If;
2072       End If;
2073   End If;
2074 
2075   If p_contract_rec.agreement_id Is Not Null Then
2076 
2077 --Agreement ID Routine
2078      l_gvev_tbl_in(1).chr_id                      := p_dnz_chr_id;
2079      l_gvev_tbl_in(1).isa_agreement_id            := p_contract_rec.agreement_id;
2080      l_gvev_tbl_in(1).copied_only_yn              := 'Y';
2081      l_gvev_tbl_in(1).dnz_chr_id                  := p_dnz_chr_id;
2082 
2083       okc_contract_pub.create_governance
2084       (
2085          p_api_version      => l_api_version,
2086          p_init_msg_list    => l_init_msg_list,
2087          x_return_status    => l_return_status,
2088          x_msg_count        => l_msg_count,
2089          x_msg_data         => l_msg_data,
2090          p_gvev_tbl         => l_gvev_tbl_in,
2091          x_gvev_tbl         => l_gvev_tbl_out
2092        );
2093 
2094 
2095        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  Agreement rule status:'|| l_return_status);
2096        --dbms_output.put_line( 'K HDR CREATION :- AGREEMENT RULE STATUS ' || l_return_Status);
2097 
2098        x_return_status  := l_return_status;
2099        If l_return_status = 'S' then
2100           l_govern_id := l_gvev_tbl_out(1).id;
2101        Else
2102           OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Agreement Id (HEADER)');
2103           Raise G_EXCEPTION_HALT_VALIDATION;
2104        End if;
2105     End If;
2106 
2107 --Accounting Rule ID  Routine
2108 
2109     If p_contract_rec.accounting_rule_type Is Not Null Then
2110 
2111        l_rulv_tbl_in.DELETE;
2112        l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'ARL');
2113 
2114        If l_rule_id Is NULL Then
2115           l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2116           l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2117           l_rulv_tbl_in(1).std_template_yn           := 'N';
2118           l_rulv_tbl_in(1).warn_yn                   := 'N';
2119           l_rulv_tbl_in(1).rule_information_category := 'ARL';
2120           l_rulv_tbl_in(1).object1_id1               := p_contract_rec.accounting_rule_type;
2121           l_rulv_tbl_in(1).object1_id2               := '#';
2122           l_rulv_tbl_in(1).jtot_object1_code         := G_JTF_ARL;
2123           l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2124           l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2125           l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2126           l_rulv_tbl_in(1).creation_date             := SYSDATE;
2127           l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2128           l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2129 
2130        OKC_RULE_PUB.create_rule
2131           (
2132                  p_api_version      => l_api_version,
2133                  x_return_status    => l_return_status,
2134                  x_msg_count        => x_msg_count,
2135                  x_msg_data         => x_msg_data,
2136                  p_rulv_tbl         => l_rulv_tbl_in,
2137                  x_rulv_tbl         => l_rulv_tbl_out
2138            );
2139 
2140            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  ARL rule status:'|| l_return_status);
2141            x_return_status := l_return_status;
2142            --dbms_output.put_line( 'K HDR CREATION :- ARL RULE STATUS ' || l_return_Status);
2143 
2144            If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2145               l_rule_id := l_rulv_tbl_out(1).id;
2146            Else
2147               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Accounting Id (HEADER)');
2148               Raise G_EXCEPTION_HALT_VALIDATION;
2149            End If;
2150        End If;
2151    End If;
2152 
2153 --Invoice Rule ID  Routine
2154 
2155    If p_contract_rec.invoice_rule_type Is Not Null Then
2156 
2157        l_rulv_tbl_in.DELETE;
2158        l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'IRE');
2159        If l_rule_id Is NULL Then
2160           l_rulv_tbl_in(1).rgp_id                      := p_rule_grp_id;
2161           l_rulv_tbl_in(1).sfwt_flag                   := 'N';
2162           l_rulv_tbl_in(1).std_template_yn             := 'N';
2163           l_rulv_tbl_in(1).warn_yn                     := 'N';
2164           l_rulv_tbl_in(1).rule_information_category   := 'IRE';
2165           l_rulv_tbl_in(1).object1_id1                 := p_contract_rec.invoice_rule_type;
2166           l_rulv_tbl_in(1).object1_id2                 := '#';
2167           l_rulv_tbl_in(1).jtot_object1_code           := G_JTF_IRE;
2168           l_rulv_tbl_in(1).dnz_chr_id                  := p_dnz_chr_id;
2169           l_rulv_tbl_in(1).object_version_number       := OKC_API.G_MISS_NUM;
2170           l_rulv_tbl_in(1).created_by                  := OKC_API.G_MISS_NUM;
2171           l_rulv_tbl_in(1).creation_date               := SYSDATE;
2172           l_rulv_tbl_in(1).last_updated_by             := OKC_API.G_MISS_NUM;
2173           l_rulv_tbl_in(1).last_update_date            := SYSDATE;
2174 
2175           OKC_RULE_PUB.create_rule
2176           (
2177                  p_api_version      => l_api_version,
2178                  x_return_status    => l_return_status,
2179                  x_msg_count        => l_msg_count,
2180                  x_msg_data         => l_msg_data,
2181                  p_rulv_tbl         => l_rulv_tbl_in,
2182                  x_rulv_tbl         => l_rulv_tbl_out
2183            );
2184 
2185            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  IRE rule status:'|| l_return_status);
2186            x_return_status := l_return_status;
2187            --dbms_output.put_line( 'K HDR CREATION :- IRE RULE STATUS ' || l_return_Status);
2188 
2189            If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2190               l_rule_id := l_rulv_tbl_out(1).id;
2191            Else
2192               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Invoice Id (HEADER)');
2193               Raise G_EXCEPTION_HALT_VALIDATION;
2194            End If;
2195        End If;
2196    End If;
2197 
2198 
2199 --Renewal Type Routine
2200 
2201    If p_contract_rec.renewal_type Is Not Null Then
2202 
2203       l_rulv_tbl_in.DELETE;
2204       l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'REN');
2205       If l_rule_id Is NULL Then
2206          l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2207          l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2208          l_rulv_tbl_in(1).std_template_yn           := 'N';
2209          l_rulv_tbl_in(1).warn_yn                   := 'N';
2210          l_rulv_tbl_in(1).rule_information_category := 'REN';
2211          l_rulv_tbl_in(1).rule_information1         := p_contract_rec.renewal_type;
2212          l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2213          l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2214          l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2215          l_rulv_tbl_in(1).creation_date             := SYSDATE;
2216          l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2217          l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2218 
2219          OKC_RULE_PUB.create_rule
2220          (
2221                  p_api_version      => l_api_version,
2222                  x_return_status    => l_return_status,
2223                  x_msg_count        => x_msg_count,
2224                  x_msg_data         => x_msg_data,
2225                  p_rulv_tbl         => l_rulv_tbl_in,
2226                  x_rulv_tbl         => l_rulv_tbl_out
2227           );
2228 
2229           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  REN rule status:'|| l_return_status);
2230           x_return_status := l_return_status;
2231           --dbms_output.put_line( 'K HDR CREATION :- REN RULE STATUS ' || l_return_Status);
2232 
2233           If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2234              l_rule_id  := l_rulv_tbl_out(1).id;
2235           Else
2236              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Renewal Type (HEADER)');
2237              Raise G_EXCEPTION_HALT_VALIDATION;
2238           End If;
2239        End If;
2240    End If;
2241 
2242 
2243 --Renewal Pricing Type
2244 
2245    If p_contract_rec.renewal_pricing_type Is Not Null Then
2246 
2247       l_rulv_tbl_in.DELETE;
2248       l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'RPT');
2249       If l_rule_id Is NULL Then
2250           If p_contract_rec.renewal_pricing_type = 'PCT' Then
2251                l_rulv_tbl_in(1).rule_information2  := p_contract_rec.renewal_markup;
2252           Else
2253                l_rulv_tbl_in(1).rule_information2  := Null;
2254           End If;
2255 
2256           l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2257           l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2258           l_rulv_tbl_in(1).std_template_yn           := 'N';
2259           l_rulv_tbl_in(1).warn_yn                   := 'N';
2260           l_rulv_tbl_in(1).rule_information_category := 'RPT';
2261           l_rulv_tbl_in(1).object1_id1               := to_char(p_contract_rec.renewal_price_list_id);
2262           l_rulv_tbl_in(1).object1_id2               := '#';
2263           l_rulv_tbl_in(1).JTOT_OBJECT1_CODE         := G_JTF_PRICE;
2264           l_rulv_tbl_in(1).rule_information1         := p_contract_rec.renewal_pricing_type;
2265           l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2266           l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2267           l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2268           l_rulv_tbl_in(1).creation_date             := SYSDATE;
2269           l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2270           l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2271 
2272           OKC_RULE_PUB.create_rule
2273           (
2274                  p_api_version      => l_api_version,
2275                  x_return_status    => l_return_status,
2276                  x_msg_count        => x_msg_count,
2277                  x_msg_data         => x_msg_data,
2278                  p_rulv_tbl         => l_rulv_tbl_in,
2279                  x_rulv_tbl         => l_rulv_tbl_out
2280            );
2281 
2282 
2283            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  RPT rule status:'|| l_return_status);
2284            x_return_status := l_return_status;
2285            --dbms_output.put_line( 'K HDR CREATION :- RPT RULE STATUS ' || l_return_Status);
2286 
2287            If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2288               l_rule_id := l_rulv_tbl_out(1).id;
2289            Else
2290                OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Renewal Pricing  (HEADER)');
2291                Raise G_EXCEPTION_HALT_VALIDATION;
2292            End If;
2293        End If;
2294    End If;
2295 
2296 --Renewal PO Required
2297 
2298    If p_contract_rec.renewal_po Is Not Null Then
2299 
2300       l_rulv_tbl_in.DELETE;
2301       l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'RPO');
2302       If l_rule_id Is NULL Then
2303 
2304          l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2305          l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2306          l_rulv_tbl_in(1).std_template_yn           := 'N';
2307          l_rulv_tbl_in(1).warn_yn                   := 'N';
2308          l_rulv_tbl_in(1).rule_information_category := 'RPO';
2309          l_rulv_tbl_in(1).rule_information1         := p_contract_rec.renewal_po;
2310          l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2311          l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2312          l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2313          l_rulv_tbl_in(1).creation_date             := SYSDATE;
2314          l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2315          l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2316 
2317          OKC_RULE_PUB.create_rule
2318          (
2319                  p_api_version      => l_api_version,
2320                  x_return_status    => l_return_status,
2321                  x_msg_count        => x_msg_count,
2322                  x_msg_data         => x_msg_data,
2323                  p_rulv_tbl         => l_rulv_tbl_in,
2324                  x_rulv_tbl         => l_rulv_tbl_out
2325           );
2326 
2327           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  RPO rule status:'|| l_return_status);
2328           x_return_status := l_return_status;
2329           --dbms_output.put_line( 'K HDR CREATION :- RPO RULE STATUS ' || l_return_Status);
2330 
2331           If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2332              l_rule_id  := l_rulv_tbl_out(1).id;
2333           Else
2334               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Renewal PO (HEADER)');
2335               Raise G_EXCEPTION_HALT_VALIDATION;
2336           End If;
2337       End If;
2338   End If;
2339 
2340 ---AR Interface rule
2341 
2342   IF  p_contract_rec.Ar_interface_yn = 'Y' THEN
2343 
2344       l_rulv_tbl_in.DELETE;
2345       l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'SBG');
2346 
2347       If l_rule_id Is NULL Then
2348           l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2349           l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2350           l_rulv_tbl_in(1).std_template_yn           := 'N';
2351           l_rulv_tbl_in(1).warn_yn                   := 'N';
2352           l_rulv_tbl_in(1).rule_information_category := 'SBG';
2353           l_rulv_tbl_in(1).object1_id1               := p_contract_rec.transaction_type;
2354           l_rulv_tbl_in(1).object1_id2               := '#';
2355           l_rulv_tbl_in(1).jtot_object1_code         := 'OKS_TRXTYPE';
2356           l_rulv_tbl_in(1).rule_information11        := p_contract_rec.Ar_interface_yn;
2357           l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2358           l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2359           l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2360           l_rulv_tbl_in(1).creation_date             := SYSDATE;
2361           l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2362           l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2363 
2364           OKC_RULE_PUB.create_rule
2365           (
2366                  p_api_version      => l_api_version,
2367                  x_return_status    => l_return_status,
2368                  x_msg_count        => x_msg_count,
2369                  x_msg_data         => x_msg_data,
2370                  p_rulv_tbl         => l_rulv_tbl_in,
2371                  x_rulv_tbl         => l_rulv_tbl_out
2372            );
2373 
2374            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  SBG rule status:'|| l_return_status);
2375            x_return_status := l_return_status;
2376            --dbms_output.put_line( 'K HDR CREATION :- SBG RULE STATUS ' || l_return_Status);
2377 
2378            If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2379               l_rule_id := l_rulv_tbl_out(1).id;
2380            Else
2381               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'AR Interface (HEADER)');
2382               Raise G_EXCEPTION_HALT_VALIDATION;
2383            End If;
2384        End If;
2385    End If;
2386 
2387 --estimated percent
2388    IF p_contract_rec.estimate_percent IS NOT NULL THEN
2389 
2390       l_rulv_tbl_in.DELETE;
2391       l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'RER');
2392 
2393       If l_rule_id Is NULL Then
2394          l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2395          l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2396          l_rulv_tbl_in(1).std_template_yn           := 'N';
2397          l_rulv_tbl_in(1).warn_yn                   := 'N';
2398          l_rulv_tbl_in(1).rule_information_category := 'RER';
2399          l_rulv_tbl_in(1).rule_information1         := TO_CHAR(p_contract_rec.estimate_percent);
2400          l_rulv_tbl_in(1).rule_information2         := TO_CHAR(p_contract_rec.estimate_duration);
2401          l_rulv_tbl_in(1).rule_information3         := p_contract_rec.estimate_period;
2402          l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2403          l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2404          l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2405          l_rulv_tbl_in(1).creation_date             := SYSDATE;
2406          l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2407          l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2408 
2409          OKC_RULE_PUB.create_rule
2410          (
2411                  p_api_version      => l_api_version,
2412                  x_return_status    => l_return_status,
2413                  x_msg_count        => x_msg_count,
2414                  x_msg_data         => x_msg_data,
2415                  p_rulv_tbl         => l_rulv_tbl_in,
2416                  x_rulv_tbl         => l_rulv_tbl_out
2417           );
2418 
2419           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  RER rule status:'|| l_return_status);
2420           x_return_status := l_return_status;
2421           --dbms_output.put_line( 'K HDR CREATION :- RER RULE STATUS ' || l_return_Status);
2422 
2423           If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2424               l_rule_id := l_rulv_tbl_out(1).id;
2425           Else
2426               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Estimated Percent (HEADER)');
2427               Raise G_EXCEPTION_HALT_VALIDATION;
2428           End If;
2429       End If;
2430   End If;
2431 
2432 --Payment Details
2433   IF p_contract_rec.Credit_card_no IS NOT NULL THEN
2434 
2435      l_rulv_tbl_in.DELETE;
2436      l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'CCR');
2437      If l_rule_id Is NULL Then
2438 
2439         OKS_EXTWAR_UTIL_PVT.strip_white_spaces
2440         (
2441                  p_credit_card_num => p_contract_rec.Credit_card_no,
2442                  p_stripped_cc_num => x_credit_card_no
2443          );
2444 
2445         l_validate_cc := Validate_Credit_Card(p_cc_num_stripped => x_credit_card_no);
2446 
2447         IF l_validate_cc = 0 THEN            ---failure
2448               OKC_API.SET_MESSAGE
2449               (           p_app_name     => 'OKS'
2450                          ,p_msg_name     => G_INVALID_VALUE
2451                          ,p_token1       => G_COL_NAME_TOKEN
2452                          ,p_token1_value => 'Credit Card Number'
2453                );
2454                x_return_status := OKC_API.G_RET_STS_ERROR;
2455                Raise G_EXCEPTION_HALT_VALIDATION;
2456 
2457          ELSIF l_validate_cc = 1 THEN
2458                ------ERROROUT_AD('ccr rule creation starting : ');
2459 
2460                l_rulv_tbl_in(1).rgp_id                          := p_rule_grp_id;
2461                l_rulv_tbl_in(1).sfwt_flag                       := 'N';
2462                l_rulv_tbl_in(1).std_template_yn                 := 'N';
2463                l_rulv_tbl_in(1).warn_yn                         := 'N';
2464                l_rulv_tbl_in(1).rule_information_category       := 'CCR';
2465                l_rulv_tbl_in(1).rule_information1               := x_credit_card_no;
2466                l_rulv_tbl_in(1).rule_information2               := TO_CHAR(p_contract_rec.Expiry_date ,'YYYY/MM/DD HH24:MI:SS');
2467                l_rulv_tbl_in(1).dnz_chr_id                      := p_dnz_chr_id;
2468                l_rulv_tbl_in(1).object_version_number           := OKC_API.G_MISS_NUM;
2469                l_rulv_tbl_in(1).created_by                      := OKC_API.G_MISS_NUM;
2470                l_rulv_tbl_in(1).creation_date                   := SYSDATE;
2471                l_rulv_tbl_in(1).last_updated_by                 := OKC_API.G_MISS_NUM;
2472                l_rulv_tbl_in(1).last_update_date                := SYSDATE;
2473 
2474                OKC_RULE_PUB.create_rule
2475                (
2476                       p_api_version      => l_api_version,
2477                       x_return_status    => l_return_status,
2478                       x_msg_count        => x_msg_count,
2479                       x_msg_data         => x_msg_data,
2480                       p_rulv_tbl         => l_rulv_tbl_in,
2481                       x_rulv_tbl         => l_rulv_tbl_out
2482                 );
2483 
2484                 OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  CCR rule status:'|| l_return_status);
2485                 x_return_status := l_return_status;
2486                 --dbms_output.put_line( 'K HDR CREATION :- CCR RULE STATUS ' || l_return_Status);
2487 
2488                 If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2489                        l_rule_id    := l_rulv_tbl_out(1).id;
2490                 Else
2491                        OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Creadit Card Rule (HEADER)');
2492                        Raise G_EXCEPTION_HALT_VALIDATION;
2493                 End If;
2494           END IF;       ---credit card valid
2495       End If;     ---rule does not exit
2496   End If;        ----credit card not null
2497 
2498 
2499 --Payment details estimation
2500   IF p_contract_rec.estimate_percent IS NOT NULL THEN
2501 
2502      l_rulv_tbl_in.DELETE;
2503      l_rule_id     := Check_Rule_Exists(p_rule_grp_id, 'RVE');
2504 
2505      If l_rule_id Is NULL Then
2506         l_rulv_tbl_in(1).rgp_id                    := p_rule_grp_id;
2507         l_rulv_tbl_in(1).sfwt_flag                 := 'N';
2508         l_rulv_tbl_in(1).std_template_yn           := 'N';
2509         l_rulv_tbl_in(1).rule_information_category := 'RVE';
2510         l_rulv_tbl_in(1).warn_yn                   := 'N';
2511         l_rulv_tbl_in(1).rule_information1         := p_contract_rec.rve_percent;
2512         l_rulv_tbl_in(1).rule_information2         := TO_CHAR(p_contract_rec.rve_end_date, 'YYYY/MM/DD HH24:MI:SS');
2513         l_rulv_tbl_in(1).dnz_chr_id                := p_dnz_chr_id;
2514         l_rulv_tbl_in(1).object_version_number     := OKC_API.G_MISS_NUM;
2515         l_rulv_tbl_in(1).created_by                := OKC_API.G_MISS_NUM;
2516         l_rulv_tbl_in(1).creation_date             := SYSDATE;
2517         l_rulv_tbl_in(1).last_updated_by           := OKC_API.G_MISS_NUM;
2518         l_rulv_tbl_in(1).last_update_date          := SYSDATE;
2519 
2520         OKC_RULE_PUB.create_rule
2521         (
2522                  p_api_version      => l_api_version,
2523                  x_return_status    => l_return_status,
2524                  x_msg_count        => x_msg_count,
2525                  x_msg_data         => x_msg_data,
2526                  p_rulv_tbl         => l_rulv_tbl_in,
2527                  x_rulv_tbl         => l_rulv_tbl_out
2528          );
2529 
2530          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  REV rule status:'|| l_return_status);
2531          x_return_status := l_return_status;
2532          --dbms_output.put_line( 'K HDR CREATION :- RVE RULE STATUS ' || l_return_Status);
2533 
2534          If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2535               l_rule_id := l_rulv_tbl_out(1).id;
2536          Else
2537               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Payment Details Estimation (HEADER)');
2538               Raise G_EXCEPTION_HALT_VALIDATION;
2539          End If;
2540      End If;
2541  End If;
2542 */
2543 
2544  x_return_status := l_return_status;
2545 
2546  EXCEPTION
2547     WHEN  G_EXCEPTION_HALT_VALIDATION THEN
2548           x_return_status := l_return_status;
2549     WHEN  Others THEN
2550           x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2551           OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2552           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_All_Rules ::  Error:'|| SQLCODE||':'|| SQLERRM);
2553 
2554 END Create_All_Rules;
2555 
2556 
2557 -------------------------------------------------------------------------
2558 -- Procedure Create Sales credits
2559 -------------------------------------------------------------------------
2560 
2561 PROCEDURE Create_Sales_Credits
2562 (
2563           p_salescredit_tbl_in    IN  OKS_CONTRACTS_PUB.SalesCredit_tbl,
2564           p_contract_id           IN  NUMBER,
2565           p_line_id               IN  NUMBER,
2566           x_return_status         OUT NOCOPY VARCHAR2,
2567           x_msg_data              OUT NOCOPY VARCHAR2,
2568           x_msg_count             OUT NOCOPY NUMBER
2569 )
2570 IS
2571 
2572 --SalesCredit
2573 l_scrv_tbl_in                   oks_sales_credit_pub.scrv_tbl_type;
2574 l_scrv_tbl_out                  oks_sales_credit_pub.scrv_tbl_type;
2575 
2576 l_counter                       NUMBER;
2577 l_salescredit_id                NUMBER;
2578 l_api_version       CONSTANT    NUMBER      := 1.0;
2579 l_init_msg_list     CONSTANT    VARCHAR2(1) := OKC_API.G_FALSE;
2580 l_return_status                 VARCHAR2(1) := 'S';
2581 l_index                         VARCHAR2(2000);
2582 
2583 
2584 
2585  BEGIN
2586 
2587     If p_salescredit_tbl_in.count > 0 Then
2588 
2589        l_counter := p_salescredit_Tbl_in.First;
2590        Loop
2591 
2592            l_scrv_tbl_in (1).percent                 := p_salescredit_tbl_in(l_counter).percent;
2593            l_scrv_tbl_in (1).chr_id                  := p_contract_id;
2594            l_scrv_tbl_in (1).cle_id                  := p_line_id;
2595            l_scrv_tbl_in (1).ctc_id                  := p_salescredit_tbl_in(l_counter).ctc_id;
2596            l_scrv_tbl_in (1).sales_credit_type_id1   := p_salescredit_tbl_in(l_counter).sales_credit_type_id;
2597            l_scrv_tbl_in (1).sales_credit_type_id2   := '#';
2598 
2599 
2600 
2601             OKS_SALES_CREDIT_PUB.Insert_Sales_Credit
2602             (
2603                               p_api_version     => 1.0,
2604                               p_init_msg_list   => OKC_API.G_FALSE,
2605                               x_return_status   => l_return_status,
2606                               x_msg_count       => x_msg_count,
2607                               x_msg_data        => x_msg_data,
2608                               p_scrv_tbl        => l_scrv_tbl_in,
2609                               x_scrv_tbl        => l_scrv_tbl_out
2610               );
2611 
2612               OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Sales_Credits   ::  Insert sales credit status:'|| l_return_status);
2613               x_return_status := l_return_status;
2614               --dbms_output.put_line('K LINE CREATION :- SALESCREDIT STATUS ' || l_return_status);
2615 
2616               If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
2617                      l_salescredit_id := l_scrv_tbl_out(1).id;
2618               Else
2619                      OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Sales Credit Failure');
2620                      Raise G_EXCEPTION_HALT_VALIDATION;
2621               End if;
2622 
2623               Exit When l_counter = p_salescredit_Tbl_in.Last;
2624               l_counter := p_SalesCredit_Tbl_in.Next(l_counter);
2625           End Loop;
2626      End If;
2627      x_return_status := l_return_status;
2628 
2629 EXCEPTION
2630         WHEN  G_EXCEPTION_HALT_VALIDATION THEN
2631           x_return_status := l_return_status;
2632 
2633         When Others Then
2634               x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2635               OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2636               OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Sales_Credits   :: Error:'|| SQLCODE||':'||SQLERRM);
2637 
2638 
2639 END Create_Sales_Credits;
2640 
2641 
2642 -----------------------------------------------------------------------------
2643 -- Procedure for creating Object relation
2644 ------------------------------------------------------------------------------
2645 
2646 Procedure Create_Obj_Rel
2647 (
2648     p_K_id           IN  Number
2649 ,   p_line_id        IN  Number
2650 ,   p_orderhdrid     IN  Number
2651 ,   p_orderlineid    IN  Number
2652 ,   x_return_status  OUT NOCOPY Varchar2
2653 ,   x_msg_count      OUT NOCOPY Number
2654 ,   x_msg_data       OUT NOCOPY Varchar2
2655 )
2656 Is
2657 
2658  l_api_version   CONSTANT NUMBER       := 1.0;
2659  l_init_msg_list CONSTANT VARCHAR2(1)  := 'F';
2660  l_return_status          VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
2661  l_crjv_tbl_in            OKC_K_REL_OBJS_PUB.crjv_tbl_type;
2662  l_crjv_tbl_out           OKC_K_REL_OBJS_PUB.crjv_tbl_type;
2663 
2664 Begin
2665 
2666     x_return_status := l_return_status;
2667 
2668     If  p_orderhdrid Is Not Null Then
2669 
2670         l_crjv_tbl_in(1).chr_id            := p_K_id;
2671         l_crjv_tbl_in(1).object1_id1       := p_orderhdrid;
2672         l_crjv_tbl_in(1).jtot_object1_code := 'OKX_ORDERHEAD';
2673         l_crjv_tbl_in(1).rty_code          := 'CONTRACTSERVICESORDER';
2674 
2675         OKC_K_REL_OBJS_PUB.CREATE_ROW
2676         (
2677            P_API_VERSION    => l_api_version,
2678            P_INIT_MSG_LIST  => l_init_msg_list,
2679            X_RETURN_STATUS  => l_return_status,
2680            X_MSG_COUNT      => x_msg_count,
2681            X_MSG_DATA       => x_msg_data,
2682            P_CRJV_TBL       => l_crjv_tbl_in,
2683            X_CRJV_TBL       => l_crjv_tbl_out
2684          );
2685          x_return_status := l_return_status;
2686 
2687          If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
2688 
2689                      OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'OKC_k_rel_objs Create row Error');
2690                      Raise G_EXCEPTION_HALT_VALIDATION;
2691          End if;
2692 
2693      ElsIf p_orderlineid Is Not Null Then
2694 
2695            l_crjv_tbl_in(1).cle_id := p_line_id;
2696            l_crjv_tbl_in(1).object1_id1 := p_orderlineid;
2697            l_crjv_tbl_in(1).jtot_object1_code := 'OKX_ORDERLINE';
2698            l_crjv_tbl_in(1).rty_code := 'CONTRACTSERVICESORDER';
2699 
2700            OKC_K_REL_OBJS_PUB.CREATE_ROW
2701            (
2702                  P_API_VERSION    => l_api_version,
2703                  P_INIT_MSG_LIST  => l_init_msg_list,
2704                  X_RETURN_STATUS  => l_return_status,
2705                  X_MSG_COUNT      => x_msg_count,
2706                  X_MSG_DATA       => x_msg_data,
2707                  P_CRJV_TBL       => l_crjv_tbl_in,
2708                  X_CRJV_TBL       => l_crjv_tbl_out
2709              );
2710              x_return_status := l_return_status;
2711              If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
2712 
2713                      OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'OKC_k_rel_objs Create row Error');
2714                      Raise G_EXCEPTION_HALT_VALIDATION;
2715              End if;
2716 
2717        End If;
2718 
2719 Exception
2720 
2721    WHEN  G_EXCEPTION_HALT_VALIDATION THEN
2722           x_return_status := l_return_status;
2723 
2724    When Others Then
2725       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2726       OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2727       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Obj_Rel ::Error :'||SQLCODE||':'|| SQLERRM);
2728 
2729 END Create_Obj_Rel;
2730 
2731 
2732 
2733 -------------------------------------------------------------------
2734 -- Function for Geeting the line id
2735 -------------------------------------------------------------------
2736 
2737 Function Get_K_Cle_Id
2738 (
2739         p_ChrId        Number
2740      ,  p_InvServiceId Number
2741      ,  p_StartDate    Date
2742      ,  p_EndDate      Date
2743  )  Return Number Is
2744 
2745     Cursor l_Service_Csr  Is
2746                      Select KL.Id Cle_Id
2747                      From   OKC_K_LINES_V  KL
2748                            ,OKC_K_ITEMS_V  KI
2749                      Where  KL.dnz_chr_id  =  p_ChrId
2750                      And    KL.lse_id      In (14, 19)
2751                      And    KL.Id          =  KI.cle_Id
2752                      And    KI.Object1_Id1 =  p_InvServiceId
2753 --                   And    KL.StartDate   >= p_StartDate
2754                      And    KL.End_Date    =  p_EndDate;
2755 
2756 
2757 l_cle_Id          Number;
2758 
2759 Begin
2760         l_cle_id := Null;
2761 
2762         Open l_Service_Csr;
2763         Fetch l_Service_Csr Into l_cle_Id;
2764         Close l_Service_csr;
2765         Return (l_cle_id);
2766 
2767 End Get_K_Cle_Id;
2768 
2769 
2770 --------------------------------------------------------------------
2771 -- Check header Effectivity
2772 --------------------------------------------------------------------
2773 
2774 Procedure Check_hdr_Effectivity
2775 (
2776     p_chr_id      IN NUMBER,
2777     p_srv_sdt     IN DATE,
2778     p_srv_edt     IN DATE,
2779     x_hdr_sdt    OUT NOCOPY DATE,
2780     x_hdr_edt    OUT NOCOPY DATE,
2781     x_org_id     OUT NOCOPY Number,
2782     x_status     OUT NOCOPY  VarChar2
2783 )
2784 Is
2785     Cursor l_hdr_csr        Is
2786            Select Start_Date, End_Date ,
2787                   Authoring_Org_Id From OKC_K_HEADERS_V
2788            Where  id = p_chr_id;
2789 
2790     l_hdr_csr_rec       l_hdr_csr%ROWTYPE;
2791 
2792 Begin
2793 
2794     Open l_hdr_csr;
2795     Fetch l_hdr_csr Into l_hdr_csr_rec;
2796 
2797     If l_hdr_csr%FOUND Then
2798         x_org_id := l_hdr_csr_rec.authoring_org_id;
2799         IF TRUNC(p_srv_sdt) >= TRUNC(l_hdr_csr_rec.Start_Date) AND
2800                       TRUNC(p_srv_edt) <= TRUNC(l_hdr_csr_rec.End_Date) THEN
2801 
2802             x_Status := 'N';
2803         ELSE
2804             If p_srv_sdt >= l_hdr_csr_rec.Start_Date Then
2805                 x_hdr_sdt := l_hdr_csr_rec.Start_Date;
2806             Else
2807                 x_hdr_sdt := p_srv_sdt;
2808             End If;
2809 
2810             If p_srv_edt >= l_hdr_csr_rec.End_Date Then
2811                 x_hdr_edt := p_srv_edt;
2812             Else
2813                 x_hdr_edt := l_hdr_csr_rec.End_Date;
2814             End If;
2815             x_Status := 'Y';
2816 
2817          END IF;
2818     ELSE
2819         x_Status := 'E';
2820     END IF;
2821 
2822 Exception
2823     When Others Then
2824          OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2825          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Check_hdr_Effectivity ::Error:  '||SQLCODE ||':'||SQLERRM );
2826 
2827 End Check_hdr_Effectivity;
2828 ---------------------------------------------------------------------------
2829 -- Priced YN
2830 ---------------------------------------------------------------------------
2831 
2832 Function Priced_YN
2833 (
2834       P_LSE_ID IN NUMBER
2835 ) RETURN VARCHAR2 IS
2836 
2837   Cursor C_PRICED_YN IS
2838          Select PRICED_YN
2839          From  okc_line_styles_B
2840          Where ID = P_LSE_ID;
2841 
2842   V_PRICED VARCHAR2(50) := 'N';
2843 
2844 Begin
2845    For CUR_C_PRICED_YN IN C_PRICED_YN
2846    Loop
2847 
2848         V_PRICED := CUR_C_PRICED_YN.PRICED_YN;
2849         EXIT;
2850 
2851    End Loop;
2852    Return (V_PRICED);
2853 End Priced_YN;
2854 
2855 /*
2856 -----------------------------------------------------------------------------
2857 -- Create rules
2858 ------------------------------------------------------------------------------
2859 
2860 
2861 Procedure create_rules
2862 (
2863        p_rulv_tbl      IN  okc_rule_pub.rulv_tbl_type
2864       ,x_rulv_tbl      OUT NOCOPY okc_rule_pub.rulv_tbl_type
2865       ,x_return_status OUT NOCOPY Varchar2
2866       ,x_msg_count     OUT NOCOPY Number
2867       ,x_msg_data      OUT NOCOPY Varchar2
2868 )
2869 Is
2870   l_rulv_tbl_in            okc_rule_pub.rulv_tbl_type;
2871   l_rulv_tbl_out           okc_rule_pub.rulv_tbl_type;
2872   l_api_version   CONSTANT NUMBER       := 1.0;
2873   l_init_msg_list CONSTANT VARCHAR2(1) := 'F';
2874   l_return_status          VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2875   l_index                  NUMBER;
2876   l_module                 VARCHAR2(50) := 'TBL_RULE.CREATE_ROWS';
2877   l_debug                  BOOLEAN      := TRUE;
2878 
2879 Begin
2880 
2881   x_return_status := l_return_status;
2882 
2883   l_rulv_tbl_in := p_rulv_tbl;
2884 
2885   okc_rule_pub.create_rule
2886   (
2887       p_api_version      => l_api_version,
2888       p_init_msg_list    => l_init_msg_list,
2889       x_return_status    => l_return_status,
2890       x_msg_count        => x_msg_count,
2891       x_msg_data         => x_msg_data,
2892       p_rulv_tbl         => l_rulv_tbl_in,
2893       x_rulv_tbl         => l_rulv_tbl_out
2894    );
2895 
2896    If l_return_status = 'S'  Then
2897       x_rulv_tbl := l_rulv_tbl_out;
2898    Else
2899       x_return_status := l_return_status;
2900    End If;
2901 
2902 
2903 Exception
2904 When Others Then
2905     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2906     OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2907     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).create_rules :: Error:  '||SQLCODE||':'||SQLERRM );
2908 
2909 End create_rules;
2910 ------------------------------------------------------------------------------------
2911 -- Check for usage
2912 ------------------------------------------------------------------------------------
2913 */
2914 
2915 Procedure Check_for_usage
2916 (
2917      p_CP_id IN Number
2918    , x_counter_tbl   OUT NOCOPY counter_tbl
2919    , x_return_status OUT NOCOPY VARCHAR2
2920    , x_msg_data      OUT NOCOPY VARCHAR2
2921    , x_msg_count     OUT NOCOPY NUMBER
2922 )
2923 Is
2924 
2925    l_counter_group_id  number ;
2926    l_counter_id   number ;
2927    l_usage_item_id number ;
2928    i number ;
2929 
2930 
2931   CURSOR l_Counter_group_csr IS
2932   SELECT ccg.COUNTER_GROUP_ID COUNTER_GROUP_ID
2933   FROM   cs_csi_counter_groups ccg,
2934          csi_counters_b ccb,
2935          csi_counter_associations cca
2936   WHERE  ccg.template_flag = 'N'
2937     AND  ccg.counter_group_id = ccb.group_id
2938     AND  ccb.counter_id = cca.counter_id
2939     AND  cca.source_object_code = 'CP'
2940     AND  cca.source_object_id = p_cp_id;
2941 
2942   CURSOR l_counter_csr (p_counter_group_id NUMBER ) IS
2943   SELECT counter_id  , usage_item_id
2944   FROM  csi_counters_b
2945   WHERE group_id = p_counter_group_id
2946     AND usage_item_id IS NOT NULL
2947   ORDER BY usage_item_id;
2948 
2949 Begin
2950     x_return_status := 'S';
2951     x_counter_tbl.delete;
2952 
2953     Open  l_Counter_group_csr ;
2954     Fetch l_Counter_group_csr  into l_counter_group_id  ;
2955     Close l_Counter_group_csr ;
2956 
2957     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Check_for_usage :: Counter group Id:  '||l_counter_group_id );
2958     --dbms_output.put_line('in check for usage'||p_CP_id||'     '||l_counter_group_id);
2959 
2960     i := 1;
2961 
2962     If l_counter_group_id is not null then
2963 
2964         Open l_counter_csr(l_counter_group_id ) ;
2965         Loop
2966         Fetch l_counter_csr into l_usage_item_id  , l_counter_id  ;
2967         Exit When l_counter_csr%notfound ;
2968                  x_counter_tbl(i).usage_item_id  := l_usage_item_id  ;
2969                  x_counter_tbl(i).counter_id     := l_counter_id     ;
2970                  i := i + 1;
2971         End loop;
2972         close l_counter_csr ;
2973     End If;
2974 
2975 Exception
2976 
2977 When Others Then
2978   x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2979   OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
2980   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Check_for_usage ::Error:  '||SQLCODE ||':'||SQLERRM );
2981 
2982 End ;
2983 
2984 --------------------------------------------------------------------------
2985 -- Create Contract header
2986 --------------------------------------------------------------------------
2987 
2988 Procedure Create_Contract_Header
2989 (
2990       p_K_header_rec                   IN  OKS_CONTRACTS_PUB.header_rec_type
2991 ,     p_header_contacts_tbl            IN  OKS_CONTRACTS_PUB.contact_tbl
2992 ,     p_header_sales_crd_tbl           IN  OKS_CONTRACTS_PUB.SalesCredit_tbl
2993 ,     p_header_articles_tbl            IN  OKS_CONTRACTS_PUB.obj_articles_tbl
2994 ,     x_chrid                          OUT NOCOPY Number
2995 ,     x_return_status                  OUT NOCOPY VARCHAR2
2996 ,     x_msg_count                      OUT NOCOPY Number
2997 ,     x_msg_data                       OUT NOCOPY VARCHAR2
2998 )
2999 
3000 Is
3001 
3002 
3003 --Contract Header
3004   l_chrv_tbl_in                 Okc_contract_pub.chrv_tbl_type;
3005   l_chrv_tbl_out                Okc_contract_pub.chrv_tbl_type;
3006   l_party_role                  Party_Role_Rec;
3007 
3008 --Return IDs
3009 
3010   l_chrid                       NUMBER;
3011   l_rule_group_id               NUMBER;
3012   l_rule_id                     NUMBER;
3013   l_govern_id                   NUMBER;
3014   l_time_value_id               NUMBER;
3015   l_contact_id                  NUMBER;
3016   l_cust_partyid                NUMBER;
3017   l_findparty_id                NUMBER;
3018   l_hdr_contactid               NUMBER;
3019 --Miss
3020   l_api_version     CONSTANT    NUMBER      := 1.0;
3021   l_init_msg_list   CONSTANT    VARCHAR2(1) := OKC_API.G_FALSE;
3022   l_return_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3023   l_index                       VARCHAR2(2000);
3024   l_msg_count                   NUMBER;
3025   l_msg_data                    VARCHAR2(2000);
3026   l_msg_index_out               NUMBER;
3027   l_msg_index                   NUMBER;
3028 Begin
3029 
3030       x_return_status := OKC_API.G_RET_STS_SUCCESS;
3031 
3032       Okc_context.set_okc_org_context (p_K_header_rec.authoring_org_id, p_K_header_rec.organization_id);
3033 
3034       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::CREATE CONTRACT HEADER: ');
3035       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Header merge type     : '||p_k_header_rec.merge_type  );
3036       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Header Status code    : '||p_k_header_rec.sts_code  );
3037       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Header SCS code       : '||p_k_header_rec.scs_code  );
3038 
3039 
3040        If p_k_header_rec.merge_type = 'NEW' Then
3041 
3042           If (p_k_header_rec.merge_object_id Is Not NULL) Then
3043               l_chrid := p_k_header_rec.merge_object_id;
3044           Else
3045               l_chrid := Null;
3046           End if;
3047 
3048       ElsIf p_k_header_rec.merge_type = 'LTC' Then
3049 
3050               l_chrid := p_k_header_rec.merge_object_id;
3051 
3052       ElsIf p_k_header_rec.merge_type Is Not Null Then
3053 
3054               l_chrid := GET_K_HDR_ID (
3055                                        p_type        => p_k_header_rec.merge_type,
3056                                        p_object_id   => p_k_header_rec.merge_object_id ,
3057                                        p_enddate     => p_k_header_rec.end_date
3058                                        );
3059       End If;
3060 
3061 
3062       If l_chrid Is Not Null Then
3063 
3064             --dbms_output.put_line('K HDR CREATION :- CHR ID IS NOT NULL ');
3065             --dbms_output.put_line('K HDR CREATION :- CHR ID Status '||p_k_header_rec.sts_code);
3066 
3067             If p_k_header_rec.sts_code Not In ('TERMINATED','EXPIRED','CANCELLED') Then
3068 
3069                 x_chrid := l_chrid;
3070                 l_return_status := OKC_API.G_RET_STS_SUCCESS;
3071                 Raise G_EXCEPTION_HALT_VALIDATION;
3072 
3073             End If;
3074 
3075       End If;
3076 
3077       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header :: Header Id:   '||to_char(l_chrid) );
3078       --Contract Header Routine
3079 
3080       If Nvl(p_k_header_rec.sts_code,'ENTERED') = 'ACTIVE' Then
3081           l_chrv_tbl_in(1).date_signed     := p_k_header_rec.start_date;
3082           l_chrv_tbl_in(1).date_approved   := p_k_header_rec.start_date;
3083       Else
3084           l_chrv_tbl_in(1).date_signed     := Null;
3085           l_chrv_tbl_in(1).date_approved   := Null;
3086       End If;
3087 
3088       If p_k_header_rec.cust_po_number is not null then
3089              l_chrv_tbl_in(1).cust_po_number_req_yn := 'Y';
3090       Else
3091             l_chrv_tbl_in(1).cust_po_number_req_yn := 'N';
3092       End If;
3093 
3094 
3095       l_chrv_tbl_in(1).sfwt_flag                      := 'N';
3096       l_chrv_tbl_in(1).contract_number                := p_k_header_rec.contract_number;
3097       l_chrv_tbl_in(1).sts_code                       := NVL(p_k_header_rec.sts_code, 'ACTIVE');
3098       l_chrv_tbl_in(1).scs_code                       := NVL(p_k_header_rec.scs_code, 'WARRANTY');
3099       l_chrv_tbl_in(1).authoring_org_id               := p_k_header_rec.authoring_org_id;
3100       l_chrv_tbl_in(1).inv_organization_id            := okc_context.get_okc_organization_id;
3101       l_chrv_tbl_in(1).pre_pay_req_yn                 := 'N';
3102       l_chrv_tbl_in(1).cust_po_number                 := p_k_header_rec.cust_po_number;
3103       l_chrv_tbl_in(1).qcl_id                         := p_k_header_rec.qcl_id ;
3104       l_chrv_tbl_in(1).short_description              := Nvl(p_k_header_rec.short_description,'Warranty/Extended Warranty');
3105       l_chrv_tbl_in(1).template_yn                    := 'N';
3106       l_chrv_tbl_in(1).start_date                     := p_k_header_rec.start_date;
3107       l_chrv_tbl_in(1).end_date                       := p_k_header_rec.end_date;
3108       l_chrv_tbl_in(1).chr_type                       := OKC_API.G_MISS_CHAR;
3109       l_chrv_tbl_in(1).archived_yn                    := 'N';
3110       l_chrv_tbl_in(1).deleted_yn                     := 'N';
3111       l_chrv_tbl_in(1).created_by                     := OKC_API.G_MISS_NUM;
3112       l_chrv_tbl_in(1).creation_date                  := SYSDATE;
3113       l_chrv_tbl_in(1).last_updated_by                := OKC_API.G_MISS_NUM;
3114       l_chrv_tbl_in(1).last_update_date               := SYSDATE;
3115       l_chrv_tbl_in(1).currency_code                  := p_k_header_rec.currency;
3116       l_chrv_tbl_in(1).buy_or_sell                    := 'S';
3117       l_chrv_tbl_in(1).issue_or_receive               := 'I';
3118       l_chrv_tbl_in(1).Attribute1                     := p_k_header_rec.attribute1;
3119       l_chrv_tbl_in(1).Attribute2                     := p_k_header_rec.attribute2;
3120       l_chrv_tbl_in(1).Attribute3                     := p_k_header_rec.attribute3;
3121       l_chrv_tbl_in(1).Attribute4                     := p_k_header_rec.attribute4;
3122       l_chrv_tbl_in(1).Attribute5                     := p_k_header_rec.attribute5;
3123       l_chrv_tbl_in(1).Attribute6                     := p_k_header_rec.attribute6;
3124       l_chrv_tbl_in(1).Attribute7                     := p_k_header_rec.attribute7;
3125       l_chrv_tbl_in(1).Attribute8                     := p_k_header_rec.attribute8;
3126       l_chrv_tbl_in(1).Attribute9                     := p_k_header_rec.attribute9;
3127       l_chrv_tbl_in(1).Attribute10                    := p_k_header_rec.attribute10;
3128       l_chrv_tbl_in(1).Attribute11                    := p_k_header_rec.attribute11;
3129       l_chrv_tbl_in(1).Attribute12                    := p_k_header_rec.attribute12;
3130       l_chrv_tbl_in(1).Attribute13                    := p_k_header_rec.attribute13;
3131       l_chrv_tbl_in(1).Attribute14                    := p_k_header_rec.attribute14;
3132       l_chrv_tbl_in(1).Attribute15                    := p_k_header_rec.attribute15;
3133       -- rules seeded by okc
3134       l_chrv_tbl_in( 1 ).price_list_id        := p_k_header_rec.price_list_id;                               --PRE
3135       l_chrv_tbl_in( 1 ).payment_term_id      := p_k_header_rec.payment_term_id;                             --PTR
3136       l_chrv_tbl_in( 1 ).conversion_type      := p_k_header_rec.cvn_type;                                    --CVN
3137       l_chrv_tbl_in( 1 ).conversion_rate      := p_k_header_rec.cvn_rate;                                    --CVN
3138       l_chrv_tbl_in( 1 ).conversion_rate_date := TO_CHAR( p_k_header_rec.cvn_date, 'YYYY/MM/DD HH24:MI:SS' );--CVN
3139       l_chrv_tbl_in( 1 ).conversion_euro_rate := p_k_header_rec.cvn_euro_rate;                               --CVN
3140       l_chrv_tbl_in( 1 ).bill_to_site_use_id  := p_k_header_rec.bill_to_id;                                  --BTO
3141       l_chrv_tbl_in( 1 ).ship_to_site_use_id  := p_k_header_rec.ship_to_id;                                  --STO
3142       l_chrv_tbl_in( 1 ).inv_rule_id          := p_k_header_rec.invoice_rule_type;                             --IRE
3143 
3144       IF p_k_header_rec.renewal_type IS NOT NULL THEN --REN
3145                IF p_k_header_rec.renewal_type = 'ERN' THEN
3146                     l_chrv_tbl_in( 1 ).renewal_type_code := 'NSR';
3147                ELSE
3148                     l_chrv_tbl_in( 1 ).renewal_type_code :=  p_k_header_rec.renewal_type;
3149                END IF;
3150       END IF;
3151 
3152 
3153       If p_k_header_rec.merge_type = 'RENEW' Then
3154           l_chrv_tbl_in(1).Attribute1 := p_k_header_rec.merge_object_id;
3155       End If;
3156 
3157       Okc_contract_pub.create_contract_header
3158       (
3159           p_api_version     => l_api_version,
3160           p_init_msg_list       => l_init_msg_list,
3161           p_chrv_tbl            => l_chrv_tbl_in,
3162           x_return_status       => l_return_status,
3163           x_msg_count           => x_msg_count,
3164           x_msg_data            => x_msg_data,
3165           x_chrv_tbl            => l_chrv_tbl_out
3166        );
3167 
3168        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header :: Create_contract_header status:  '||l_return_status  );
3169        --dbms_output.put_line( 'K HDR CREATION :- HDR STATUS ' || l_return_status);
3170        x_return_status := l_return_status;
3171 
3172        If l_return_status = 'S' then
3173              l_chrid := l_chrv_tbl_out(1).id;
3174              x_chrid := l_chrv_tbl_out(1).id;
3175        Else
3176              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'HEADER (HEADER)');
3177              Raise G_EXCEPTION_HALT_VALIDATION;
3178        End if;
3179 
3180        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header :: Header Id:   '||to_char(l_chrid) );
3181 
3182       /* ----create rules group
3183 
3184        Create_Rule_grp
3185         (
3186          p_dnz_chr_id    => l_chrid,
3187          p_chr_id        => l_chrid,
3188          p_cle_id        => NULL,
3189          x_rul_grp_id    => l_rule_group_id,
3190          x_return_status => l_return_status,
3191          x_msg_data      => x_msg_data,
3192          x_msg_count     => x_msg_count
3193         );
3194 
3195         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Create_Rule_grp status :  '||l_return_status  );
3196 
3197         x_return_status := l_return_status;
3198         If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3199              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Order Header Id (HEADER)');
3200              Raise G_EXCEPTION_HALT_VALIDATION;
3201         End If;*/
3202 
3203         --dbms_output.put_line( 'K HDR CREATION :- RULE GROUP STATUS '||l_return_status);
3204 
3205         l_party_role.authoring_org_id  := p_k_header_rec.authoring_org_id;
3206         l_party_role.party_id          := p_k_header_rec.party_id;
3207         l_party_role.bill_to_id        := p_k_header_rec.bill_to_id;
3208         l_party_role.third_party_role  := p_k_header_rec.third_party_role;
3209         l_party_role.scs_code          := p_k_header_rec.scs_code;
3210 
3211 
3212         --------creating contacts info
3213 
3214         Create_contacts
3215         (
3216            p_contract_id       => l_chrid,
3217            p_line_id           => NULL,
3218            p_contact_info_tbl  => p_header_contacts_tbl,
3219            p_party_role        => l_party_role,
3220            x_return_status     => l_return_status,
3221            x_msg_data          => x_msg_data,
3222            x_msg_count         => x_msg_count
3223         );
3224 
3225         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Create_contacts status :  '||l_return_status  );
3226         --dbms_output.put_line('COntacts'||l_return_status);
3227         x_return_status := l_return_status;
3228 
3229         If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3230             OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Order Header Id (HEADER)');
3231             Raise G_EXCEPTION_HALT_VALIDATION;
3232         End If;
3233 
3234 
3235         -------end creating contacts info
3236 
3237         ----CONTRACT GROUPING and approval work flow
3238 
3239         Create_Groups
3240         (
3241            p_contract_id     => l_chrid,
3242            p_pdf_id          => p_k_header_rec.pdf_id,
3243            p_chr_group       => p_k_header_rec.chr_group,
3244            x_return_status   => l_return_status,
3245            x_msg_data        => x_msg_data,
3246            x_msg_count       => x_msg_count
3247         );
3248 
3249         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Create_Groups status :  '||l_return_status  );
3250         --dbms_output.put_line('create group'||l_return_status);
3251         x_return_status := l_return_status;
3252 
3253         If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3254               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Order Header Id (HEADER)');
3255               Raise G_EXCEPTION_HALT_VALIDATION;
3256         End If;
3257 
3258 
3259         ----END CONTRACT GROUPING
3260 
3261 
3262         Create_All_Rules
3263         (
3264           p_contract_rec   => p_k_header_rec,
3265           p_rule_grp_id    => l_rule_group_id,
3266           p_dnz_chr_id     => l_chrid,
3267           x_return_status  => l_return_status,
3268           x_msg_data       => x_msg_data,
3269           x_msg_count      => x_msg_count
3270         );
3271 
3272          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Create_All_Rules status :  '||l_return_status  );
3273          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Rule group Id :  '||to_char(l_rule_group_id)  );
3274 
3275          x_return_status := l_return_status;
3276 
3277          If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3278              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'HEADER RULES NOT CREATED (HEADER)');
3279              Raise G_EXCEPTION_HALT_VALIDATION;
3280          End If;
3281 
3282          --dbms_output.put_line( 'K HDR CREATION :- RULES CREATION STATUS '||l_return_status);
3283 
3284          ----create sales credit
3285          Create_Sales_Credits
3286          (
3287             p_salescredit_tbl_in  => p_header_sales_crd_tbl,
3288             p_contract_id         => l_chrid,
3289             p_line_id             => NULL,
3290             x_return_status       => l_return_status,
3291             x_msg_data            => x_msg_data,
3292             x_msg_count           => x_msg_count
3293          );
3294 
3295          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Create_Sales_Credits status :  '||l_return_status  );
3296          x_return_status := l_return_status;
3297 
3298          --dbms_output.put_line( 'K HDR CREATION :- Sales Credit STATUS '||l_return_status);
3299 
3300          If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3301              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Order Header Id (HEADER)');
3302              Raise G_EXCEPTION_HALT_VALIDATION;
3303          End If;
3304 
3305          ----create obj rel
3306          Create_Obj_Rel
3307          (
3308            p_K_id            => l_chrid,
3309            p_line_id         => Null,
3310            p_orderhdrid      => p_k_header_rec.order_hdr_id,
3311            p_orderlineid     => Null,
3312            x_return_status   => l_return_status,
3313            x_msg_count       => x_msg_count,
3314            x_msg_data        => x_msg_data
3315           );
3316 
3317           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Create_Obj_Rel status :  '||l_return_status  );
3318           x_return_status := l_return_status;
3319 
3320           If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3321             OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Order Header Id (HEADER)');
3322             Raise G_EXCEPTION_HALT_VALIDATION;
3323           End If;
3324 
3325           --dbms_output.put_line( 'K HDR CREATION :- OBJ RULE STATUS ' || l_return_Status);
3326 
3327 
3328          Create_articles
3329          (
3330              p_articles_tbl  => p_header_articles_tbl,
3331              p_contract_id   => l_chrid,
3332              p_cle_id        => NULL,
3333              P_dnz_chr_id    => l_chrid,
3334              x_return_status => l_return_status,
3335              x_msg_count     => x_msg_count,
3336              x_msg_data      => x_msg_data
3337           );
3338 
3339           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::create_articles status :  '||l_return_status  );
3340           x_return_status := l_return_status;
3341           --dbms_output.put_line( 'K HDR CREATION :- ARTICLE CREATION ' || l_return_Status);
3342 
3343           If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3344                OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Order Header Id (HEADER)');
3345                Raise G_EXCEPTION_HALT_VALIDATION;
3346           End If;
3347 
3348           x_chrid := l_chrid;
3349 
3350   EXCEPTION
3351           WHEN  G_EXCEPTION_HALT_VALIDATION THEN
3352           x_return_status := l_return_status;
3353   WHEN  Others THEN
3354           x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3355           OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
3356           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract_Header ::Error :  '||SQLCODE|| ':'||SQLERRM  );
3357 
3358   END Create_Contract_Header;
3359 
3360 -----------------------------------------------------------------------------
3361 -- Get top line and sub line numbers
3362 -----------------------------------------------------------------------------
3363 
3364 Function get_top_line_number(p_chr_id IN Number)
3365 Return Number
3366 Is
3367 max_line_number Number;
3368 Cursor get_line_number Is
3369      Select  NVL(Max(TO_NUMBER(line_number)),0) +1
3370      From okc_k_lines_b
3371      Where  dnz_chr_id = p_chr_id
3372      And    lse_id in (1,12,14,19,46);
3373 
3374 Begin
3375 
3376    open get_line_number;
3377    Fetch get_line_number Into max_line_number;
3378    close get_line_number;
3379 
3380    Return(max_line_number);
3381 
3382 End get_top_line_number;
3383 
3384 
3385 
3386 
3387 
3388 Function get_sub_line_number(p_chr_id IN Number,p_cle_id IN NUMBER)
3389 Return Number
3390 Is
3391 max_line_number Number;
3392 Cursor get_line_number Is
3393      Select  NVL(Max(TO_NUMBER(line_number)),0) +1
3394      From okc_k_lines_b
3395      Where  dnz_chr_id = p_chr_id
3396      And    cle_id = p_cle_id
3397      And    lse_id in (35,7,8,9,10,11,13,18,25);
3398 
3399 Begin
3400 
3401    open get_line_number;
3402    Fetch get_line_number Into max_line_number;
3403    close get_line_number;
3404 
3405    Return(max_line_number);
3406 
3407 End get_sub_line_number;
3408 
3409 
3410 -------------------------------------------------------------------------
3411 -- Create service line
3412 -------------------------------------------------------------------------
3413 
3414 Procedure Create_Service_Line
3415 (
3416    p_k_line_rec          IN     line_Rec_Type
3417   ,p_Contact_tbl         IN     Contact_Tbl
3418   ,p_line_sales_crd_tbl  IN     SalesCredit_Tbl
3419   ,x_service_line_id     OUT NOCOPY   Number
3420   ,x_return_status       OUT NOCOPY   Varchar2
3421   ,x_msg_count           OUT NOCOPY   Number
3422   ,x_msg_data            OUT NOCOPY   Varchar2
3423 )
3424 Is
3425 
3426     l_api_version             CONSTANT  NUMBER  := 1.0;
3427     l_init_msg_list           CONSTANT  VARCHAR2(1) := OKC_API.G_FALSE;
3428     l_return_status                     VARCHAR2(1) := 'S';
3429     l_index                             VARCHAR2(2000);
3430 
3431     l_ctcv_tbl_in                       Okc_contract_party_pub.ctcv_tbl_type;
3432     l_ctcv_tbl_out                      Okc_contract_party_pub.ctcv_tbl_type;
3433     l_bill_sch_out                      OKS_BILL_SCH.ItemBillSch_tbl;
3434     l_msg_index                         Number;
3435     l_klnv_tbl_in                 oks_kln_pvt.klnv_tbl_type;
3436     l_klnv_tbl_out                oks_kln_pvt.klnv_tbl_type;
3437 
3438 
3439     Cursor l_ctr_csr (p_id Number) Is
3440                   Select Counter_Group_id
3441                   From   OKX_CTR_ASSOCIATIONS_V
3442                   Where  Source_Object_Id = p_id;
3443 
3444     Cursor l_billto_csr (p_billto Number) Is
3445                   Select cust_account_id from OKX_CUST_SITE_USES_V
3446                   where  id1 = p_billto and id2 = '#';
3447 
3448     Cursor l_ra_hcontacts_cur (p_contact_id number) Is
3449                   Select hzr.object_id, hzr.party_id
3450 		  --NPALEPU
3451                   --18-JUN-2005,08-AUG-2005
3452                   --TCA Project
3453                   --Replaced hz_party_relationships table with hz_relationships table and ra_hcontacts view with OKS_RA_HCONTACTS_V
3454                   --Replaced hzr.party_relationship_id column with hzr.relationship_id column and added new conditions
3455                   /* From ra_hcontacts rah,  hz_party_relationships hzr
3456                   Where  rah.contact_id  = p_contact_id
3457                   And    rah.party_relationship_id = hzr.party_relationship_id; */
3458                   From OKS_RA_HCONTACTS_V rah,  hz_relationships hzr
3459                   Where  rah.contact_id  = p_contact_id
3460                   And    rah.party_relationship_id = hzr.relationship_id
3461                   AND hzr.SUBJECT_TABLE_NAME = 'HZ_PARTIES'
3462                   AND hzr.OBJECT_TABLE_NAME = 'HZ_PARTIES'
3463                   AND hzr.DIRECTIONAL_FLAG = 'F';
3464                   --END NPALEPU
3465 
3466     CURSOR l_header_csr (p_header_id number) IS
3467                   SELECT id,scs_code
3468                   FROM okc_k_headers_b
3469                   WHERE id =  p_header_id;
3470 
3471     CURSOR l_template_csr (p_srv_id  NUMBER, p_orgid  NUMBER) IS
3472                   SELECT coverage_template_id
3473                   FROM okx_system_items_v
3474                   WHERE id1 = p_srv_id
3475                   AND organization_id = p_orgid;
3476 
3477 
3478     l_header_rec                        l_header_csr%ROWTYPE;
3479     l_ctr_grpid                         Varchar2(40);
3480     l_template_id                       NUMBER;
3481 
3482     --Contract Line Table
3483     l_clev_tbl_in                       okc_contract_pub.clev_tbl_type;
3484     l_clev_tbl_out                      okc_contract_pub.clev_tbl_type;
3485 
3486     --Contract Item
3487     l_cimv_tbl_in                       okc_contract_item_pub.cimv_tbl_type;
3488     l_cimv_tbl_out                      okc_contract_item_pub.cimv_tbl_type;
3489 
3490     --Rule Related
3491 
3492     --l_rgpv_tbl_in                       okc_rule_pub.rgpv_tbl_type;
3493     --l_rgpv_tbl_out                      okc_rule_pub.rgpv_tbl_type;
3494 
3495     --l_rulv_tbl_in                       okc_rule_pub.rulv_tbl_type;
3496     --l_rulv_tbl_out                      okc_rule_pub.rulv_tbl_type;
3497 
3498     --Time Value Related
3499     l_isev_ext_tbl_in                   okc_time_pub.isev_ext_tbl_type;
3500     l_isev_ext_tbl_out                  okc_time_pub.isev_ext_tbl_type;
3501 
3502     --SalesCredit
3503     l_scrv_tbl_in                       oks_sales_credit_pub.scrv_tbl_type;
3504     l_scrv_tbl_out                      oks_sales_credit_pub.scrv_tbl_type;
3505 
3506     --Obj Rel
3507     l_crjv_tbl_out                      OKC_K_REL_OBJS_PUB.crjv_tbl_type;
3508 
3509     --Coverage
3510     l_cov_rec                           OKS_COVERAGES_PUB.ac_rec_type;
3511 
3512     --Counters
3513     l_ctr_grp_id_template               NUMBER;
3514     l_ctr_grp_id_instance               NUMBER;
3515 
3516     --Return IDs
3517 
3518     l_line_id                           NUMBER;
3519     l_rule_group_id                     NUMBER;
3520     l_rule_id                           NUMBER;
3521     l_line_item_id                      NUMBER;
3522     l_time_value_id                     NUMBER;
3523     l_cov_id                            NUMBER;
3524     l_salescredit_id                    NUMBER;
3525     l_organization_id                   NUMBER;
3526 
3527 
3528     --TimeUnits
3529     l_duration                          NUMBER;
3530     l_timeunits                         VARCHAR2(240);
3531 
3532 
3533     --General
3534     l_hdrsdt                            DATE;
3535     l_hdredt                            DATE;
3536     l_hdrstatus                         CHAR;
3537     l_hdrorgid                          Number;
3538     l_line_lse_id                       NUMBER;
3539     l_line_jtot_obj_code                VARCHAR2(30) := NULL;
3540     i                                   NUMBER;
3541     l_can_object                        NUMBER;
3542     l_line_party_role_id                NUMBER;
3543     l_lin_party_id                      NUMBER;
3544     l_lin_contactid                     NUMBER;
3545     l_line_contact_id                   NUMBER;
3546     l_role                              VARCHAR2(40);
3547     l_obj                               VARCHAR2(40);
3548     l_msg_index_out                     NUMBER;
3549     l_org                               Number;
3550     l_msg_data                          Varchar2(2000);
3551     l_msg_count                         Number;
3552 
3553 
3554     BEGIN
3555 
3556      x_return_status                := OKC_API.G_RET_STS_SUCCESS;
3557 
3558      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: CREATE SERVICE LINE FOR LINE TYPE :  '||p_k_line_rec.line_type  );
3559 
3560      Validate_Line_Record
3561      (         p_line_rec => p_k_line_rec,
3562                x_return_status  => l_return_status
3563      );
3564 
3565      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Validate_Line_Record status       :  '||l_return_status  );
3566      --dbms_output.put_line('validate line rec'||l_return_status);
3567 
3568      IF NOT l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
3569          x_return_status := OKC_API.G_RET_STS_ERROR;
3570          Raise G_EXCEPTION_HALT_VALIDATION;
3571      END IF;
3572 
3573      OPEN l_header_csr(p_k_line_rec.k_hdr_id);
3574      FETCH l_header_csr INTO l_header_rec;
3575 
3576      IF l_header_csr%NOTFOUND THEN
3577          Close l_header_csr;
3578          l_return_status := 'E';
3579          Raise G_EXCEPTION_HALT_VALIDATION;
3580      ELSE
3581          Close l_header_csr;
3582      END IF;
3583 
3584      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line   :: Header Scs code                  :  '||l_header_rec.scs_code  );
3585      --dbms_output.put_line('header id '|| l_header_rec.id);
3586      --dbms_output.put_line('header scs code '||l_header_rec.scs_code ||' line type' ||p_K_line_rec.line_type );
3587 
3588      Okc_context.set_okc_org_context (p_K_line_rec.org_id, p_K_line_rec.organization_id);
3589 
3590 
3591      IF l_header_rec.scs_code = 'WARRANTY' AND p_K_line_rec.line_type = 'W' THEN          ----warranty
3592          l_line_lse_id := 14;
3593          l_line_jtot_obj_code := 'OKX_WARRANTY';
3594 
3595      ELSIF l_header_rec.scs_code = 'WARRANTY' AND p_K_line_rec.line_type = 'E' THEN       ---ext warranty
3596          l_line_lse_id := 19;
3597          l_line_jtot_obj_code := 'OKX_SERVICE';
3598 
3599      ELSIF l_header_rec.scs_code = 'SERVICE' AND p_K_line_rec.line_type = 'U' THEN        ----usage
3600          l_line_lse_id := 12;
3601          l_line_jtot_obj_code := 'OKX_USAGE';
3602 
3603      ELSIF l_header_rec.scs_code = 'SERVICE' AND p_K_line_rec.line_type = 'S' THEN        ---SERVICE
3604          l_line_lse_id := 1;
3605          l_line_jtot_obj_code := 'OKX_SERVICE';
3606 
3607      ELSIF l_header_rec.scs_code = 'SUBSCRIPTION' AND p_K_line_rec.line_type = 'SB' THEN  -- SUBSCRIPTION
3608          l_line_lse_id := 46;
3609          l_line_jtot_obj_code := 'OKS_SUBSCRIPTION' ; --'OKX_CUSTPROD';
3610 
3611      ELSIF l_header_rec.scs_code = 'SUBSCRIPTION' AND p_K_line_rec.line_type = 'S' THEN   -- SUBSCRIPTION
3612          l_line_lse_id := 1;
3613          l_line_jtot_obj_code := 'OKX_SERVICE';
3614 
3615      ELSE
3616          x_return_status := 'E';
3617          Raise G_EXCEPTION_HALT_VALIDATION;
3618      END IF;
3619 
3620      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Line Lse Id :  '||l_line_lse_id  );
3621      --dbms_output.put_line('Line lse id'||l_line_lse_id);
3622 
3623 
3624      l_Line_id := Get_K_Cle_Id
3625                   (
3626                        p_ChrId        => l_header_rec.id
3627                     ,  p_InvServiceId => p_k_line_rec.srv_id
3628                     ,  p_StartDate    => p_k_line_rec.srv_sdt
3629                     ,  p_EndDate      => p_k_line_rec.srv_edt
3630                   );
3631 
3632      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Line Id :  '||to_char(l_line_id ));
3633      --dbms_output.put_line('K LINE CREATION :- LINE ID ' || l_line_id);
3634 
3635      If l_line_id Is Not Null Then
3636              x_Service_Line_id := l_line_id;
3637              x_return_status := OKC_API.G_RET_STS_SUCCESS;
3638      End If;
3639 
3640 
3641      Check_hdr_effectivity
3642      (
3643           p_chr_id          =>  l_header_rec.id,
3644           p_srv_sdt         =>  p_k_line_rec.srv_sdt,
3645           p_srv_edt         =>  p_k_line_rec.srv_edt,
3646           x_hdr_sdt         =>  l_hdrsdt,
3647           x_hdr_edt         =>  l_hdredt,
3648           x_org_id          =>  l_hdrorgid,
3649           x_status          =>  l_hdrstatus
3650       );
3651 
3652      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: check_hdr_effectivity status :  '||l_hdrstatus  );
3653      --x_return_status := l_return_status;
3654 
3655      If l_hdrstatus = 'N' Then
3656             NULL;
3657 
3658      ElsIf l_hdrstatus = 'Y' Then
3659            x_return_status := OKC_API.G_RET_STS_ERROR;
3660            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'LINE EFFECTIVITY SHOULD BE WITH IN CONTRACT EFFECTIVITY');
3661            Raise G_EXCEPTION_HALT_VALIDATION;
3662 
3663      End If;
3664      --dbms_output.put_line('Check header Effectivity status '||x_return_status);
3665 
3666 
3667 
3668      If p_k_line_rec.line_type = 'SB' then
3669             l_clev_tbl_in(1).price_negotiated    := p_k_line_rec.negotiated_amount;
3670      Else
3671             l_clev_tbl_in(1).price_negotiated    := Null;
3672      End If;
3673 
3674      l_clev_tbl_in(1).chr_id              := l_header_rec.id;
3675      l_clev_tbl_in(1).sfwt_flag           := 'N';
3676      l_clev_tbl_in(1).lse_id              := l_line_lse_id;
3677      --l_clev_tbl_in(1).line_number       := p_k_line_rec.k_line_number;
3678      l_clev_tbl_in(1).line_number         := get_top_line_number(p_k_line_rec.k_hdr_id);
3679      l_clev_tbl_in(1).sts_code            := NVL(p_k_line_rec.line_sts_code, 'ACTIVE');
3680      l_clev_tbl_in(1).display_sequence    := 1;
3681      l_clev_tbl_in(1).dnz_chr_id          := l_header_rec.id;
3682      --l_clev_tbl_in(1).name              := Substr(p_k_line_rec.srv_segment1,1,50);
3683      l_clev_tbl_in(1).name                := Null;
3684      l_clev_tbl_in(1).item_description    := p_k_line_rec.srv_desc;
3685      l_clev_tbl_in(1).start_date          := p_k_line_rec.srv_sdt;
3686      l_clev_tbl_in(1).end_date            := p_k_line_rec.srv_edt;
3687      l_clev_tbl_in(1).exception_yn        := 'N';
3688      l_clev_tbl_in(1).currency_code       := p_k_line_rec.currency;
3689      l_clev_tbl_in(1).price_level_ind     := Priced_YN(l_line_lse_id);
3690      l_clev_tbl_in(1).trn_code            := p_k_line_rec.reason_code;
3691      l_clev_tbl_in(1).comments            := p_k_line_rec.reason_comments;
3692      l_clev_tbl_in(1).Attribute1          := p_k_line_rec.attribute1;
3693      l_clev_tbl_in(1).Attribute2          := p_k_line_rec.attribute2;
3694      l_clev_tbl_in(1).Attribute3          := p_k_line_rec.attribute3;
3695      l_clev_tbl_in(1).Attribute4          := p_k_line_rec.attribute4;
3696      l_clev_tbl_in(1).Attribute5          := p_k_line_rec.attribute5;
3697      l_clev_tbl_in(1).Attribute6          := p_k_line_rec.attribute6;
3698      l_clev_tbl_in(1).Attribute7          := p_k_line_rec.attribute7;
3699      l_clev_tbl_in(1).Attribute8          := p_k_line_rec.attribute8;
3700      l_clev_tbl_in(1).Attribute9          := p_k_line_rec.attribute9;
3701      l_clev_tbl_in(1).Attribute10         := p_k_line_rec.attribute10;
3702      l_clev_tbl_in(1).Attribute11         := p_k_line_rec.attribute11;
3703      l_clev_tbl_in(1).Attribute12         := p_k_line_rec.attribute12;
3704      l_clev_tbl_in(1).Attribute13         := p_k_line_rec.attribute13;
3705      l_clev_tbl_in(1).Attribute14         := p_k_line_rec.attribute14;
3706      l_clev_tbl_in(1).Attribute15         := p_k_line_rec.attribute15;
3707 -- Rules inserted by okc
3708           l_can_object := NULL;
3709           OPEN l_billto_csr( p_k_line_rec.bill_to_id );
3710           FETCH l_billto_csr INTO l_can_object;
3711           CLOSE l_billto_csr;
3712 
3713           --ramesh added on jan-26-01 for ib html interface
3714           IF l_can_object IS NULL THEN
3715                l_can_object := p_k_line_rec.cust_account;
3716           END IF;
3717 
3718           l_clev_tbl_in( 1 ).cust_acct_id           := l_can_object;                                 --CAN
3719           l_clev_tbl_in( 1 ).inv_rule_id            := p_k_line_rec.invoicing_rule_type;               --IRE
3720           l_clev_tbl_in( 1 ).line_renewal_type_code := NVL( p_k_line_rec.line_renewal_type, 'FUL' ); --LRT
3721           l_clev_tbl_in( 1 ).bill_to_site_use_id    := p_k_line_rec.bill_to_id;                      --BTO
3722           l_clev_tbl_in( 1 ).ship_to_site_use_id    := p_k_line_rec.ship_to_id;                      --STO
3723 
3724     okc_contract_pub.create_contract_line
3725     (
3726        p_api_version                    => l_api_version,
3727        p_init_msg_list                  => l_init_msg_list,
3728        x_return_status                  => l_return_status,
3729        x_msg_count                      => x_msg_count,
3730        x_msg_data                       => x_msg_data,
3731        p_clev_tbl                       => l_clev_tbl_in,
3732        x_clev_tbl                       => l_clev_tbl_out
3733     );
3734 
3735     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: create_contract_line for' ||p_k_line_rec.line_type||' status :  '||l_return_status  );
3736     --dbms_output.put_line('K LINE CREATION :- LINE STATUS ' || l_return_status);
3737 
3738     x_return_status := l_return_status;
3739 
3740     If l_return_status = 'S' then
3741        l_line_id := l_clev_tbl_out(1).id;
3742     Else
3743        OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Line (LINE)');
3744        Raise G_EXCEPTION_HALT_VALIDATION;
3745     End if;
3746 
3747 -- rules inserted by oks --IRT
3748 
3749           OKS_RENEW_PVT.DEBUG_LOG('Accounting id  ' || p_k_line_rec.accounting_rule_type);
3750           --OKS_RENEW_PVT.DEBUG_LOG('commitment id  ' || p_k_line_rec.commitment_id );
3751 
3752           l_klnv_tbl_in( 1 ).cle_id                := l_line_id;
3753           l_klnv_tbl_in( 1 ).dnz_chr_id            := l_header_rec.id;
3754           l_klnv_tbl_in( 1 ).invoice_text          := Substr(p_k_line_rec.srv_desc,1,50);                               --IRT
3755 
3756           l_klnv_tbl_in( 1 ).acct_rule_id          := p_k_line_rec.accounting_rule_type; --ARL
3757           --l_klnv_tbl_in( 1 ).commitment_id       := p_k_line_rec.commitment_id;      --PAYMENT METHOD
3758           l_klnv_tbl_in( 1 ).cust_po_number_req_yn := 'N';   -- po number required
3759           l_klnv_tbl_in( 1 ).inv_print_flag        := 'N';   -- print flag
3760 	  l_klnv_tbl_in( 1 ).usage_type            := p_k_line_rec.usage_type; --passing usagetype(fix for 4151328)
3761 	  l_klnv_tbl_in( 1 ).usage_period          := p_k_line_rec.usage_period; --passing usageperiod(fix for 4151328)
3762 
3763 
3764           oks_contract_line_pub.create_line(
3765                p_api_version                   => l_api_version,
3766                p_init_msg_list                 => l_init_msg_list,
3767                x_return_status                 => l_return_status,
3768                x_msg_count                     => x_msg_count,
3769                x_msg_data                      => x_msg_data,
3770                p_klnv_tbl                      => l_klnv_tbl_in,
3771                x_klnv_tbl                      => l_klnv_tbl_out,
3772                p_validate_yn                   => 'N'
3773            );
3774 
3775           IF NOT l_return_status = 'S' THEN
3776                OKC_API.SET_MESSAGE(
3777                     g_app_name,
3778                     g_required_value,
3779                     g_col_name_token,
3780                     'OKS Contract LINE'
3781                 );
3782                RAISE G_EXCEPTION_HALT_VALIDATION;
3783           END IF;
3784 
3785           OKS_RENEW_PVT.DEBUG_LOG('(OKS_EXTWARPRGM_PVT).Create_K_Service_Lines :: OKS create line Status   : ' || l_return_status );
3786           FND_FILE.PUT_LINE( fnd_file.LOG, 'OKS K LINE CREATION :- LINE STATUS ' || l_return_status );
3787 
3788 
3789     okc_time_util_pub.get_duration
3790     (
3791           p_start_date    => p_k_line_rec.srv_sdt,
3792           p_end_date      => p_k_line_rec.srv_edt,
3793           x_duration      => l_duration,
3794           x_timeunit      => l_timeunits,
3795           x_return_status => l_return_status
3796     );
3797 
3798     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: get_duration status :  '||l_return_status  );
3799     x_return_status := l_return_status;
3800     --dbms_output.put_line('get duration status = ' || x_return_status );
3801 
3802     If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3803          Raise G_EXCEPTION_HALT_VALIDATION;
3804     End If;
3805 
3806     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Line jtot_obj_code :  '||l_line_jtot_obj_code  );
3807     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Srv Id             :  '||p_k_line_rec.srv_id  );
3808     --dbms_output.put_line('jtot_object1_code'||l_line_jtot_obj_code||'id'||p_k_line_rec.srv_id);
3809 
3810     --Create Contract Item
3811     --If l_line_lse_id = 46 Then
3812     --        l_cimv_tbl_in(1).object1_id2 := '#';
3813     --Else
3814             l_cimv_tbl_in(1).object1_id2  := okc_context.get_okc_organization_id;
3815     --End If;
3816 
3817     l_cimv_tbl_in(1).cle_id             := l_line_id;
3818     l_cimv_tbl_in(1).dnz_chr_id         := l_header_rec.id;
3819     l_cimv_tbl_in(1).object1_id1        := p_k_line_rec.srv_id;
3820     l_cimv_tbl_in(1).jtot_object1_code  := l_line_jtot_obj_code;
3821     l_cimv_tbl_in(1).exception_yn       := 'N';
3822     l_cimv_tbl_in(1).number_of_items    := p_k_line_rec.quantity;  --l_duration;
3823     l_cimv_tbl_in(1).uom_code           := p_k_line_rec.uom_code;  --l_timeunits;
3824 
3825     --dbms_output.put_line('l_cimv_tbl_in(1).object1_id1 '||    l_cimv_tbl_in(1).object1_id1);
3826 
3827     okc_contract_item_pub.create_contract_item
3828     (
3829         p_api_version               => l_api_version,
3830         p_init_msg_list             => l_init_msg_list,
3831         x_return_status             => l_return_status,
3832         x_msg_count                 => x_msg_count,
3833         x_msg_data                  => x_msg_data,
3834         p_cimv_tbl                  => l_cimv_tbl_in,
3835         x_cimv_tbl                  => l_cimv_tbl_out
3836     );
3837 
3838     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: create_contract_item status :  '||l_return_status  );
3839     --dbms_output.put_line('K LINE CREATION :- KITEM STATUS ' || l_return_status);
3840 
3841     x_return_status := l_return_status;
3842 
3843     If l_return_status = OKC_API.G_RET_STS_SUCCESS then
3844          l_line_item_id := l_cimv_tbl_out(1).id;
3845     Else
3846          OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Service Inventory Item ID ' || p_k_line_rec.srv_id || ' ORG ' + okc_context.get_okc_organization_id);
3847          Raise G_EXCEPTION_HALT_VALIDATION;
3848     End if;
3849 
3850     ----create sales credit
3851 
3852     Create_Sales_Credits
3853     (
3854             p_salescredit_tbl_in  => p_line_sales_crd_tbl,
3855             p_contract_id         => l_header_rec.id,
3856             p_line_id             => l_line_id,
3857             x_return_status       => l_return_status,
3858             x_msg_data            => x_msg_data,
3859             x_msg_count           => x_msg_count
3860      );
3861 
3862      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Create_Sales_Credits status :  '||l_return_status  );
3863      x_return_status := l_return_status;
3864      --dbms_output.put_line('LINE CREATION :- SALES CREDIT STATUS ' || l_return_status);
3865 
3866 /*
3867      --Rule Group Routine
3868      ------check/create rules group
3869 
3870      Create_Rule_grp
3871      (
3872         p_dnz_chr_id    => l_header_rec.id,
3873         p_chr_id        => NULL,
3874         p_cle_id        => l_line_id,
3875         x_rul_grp_id    => l_rule_group_id,
3876         x_return_status => l_return_status,
3877         x_msg_data      => x_msg_data,
3878         x_msg_count     => x_msg_count
3879       );
3880 
3881       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Create_Rule_grp status :  '||l_return_status  );
3882       x_return_status := l_return_status;
3883       --dbms_output.put_line( 'LINE CREATION :- RULE GROUP STATUS '||l_return_status);
3884 
3885       --Customer Account
3886 
3887       Open  l_billto_csr (p_k_line_rec.bill_to_id);
3888       Fetch l_billto_csr into l_can_object;
3889       Close l_billto_csr;
3890 
3891       l_rulv_tbl_in.delete;
3892 
3893       l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'CAN');
3894 
3895       If l_rule_id Is NULL Then
3896 
3897              l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
3898              l_rulv_tbl_in(1).sfwt_flag                 := 'N';
3899              l_rulv_tbl_in(1).std_template_yn           := 'N';
3900              l_rulv_tbl_in(1).warn_yn                   := 'N';
3901              l_rulv_tbl_in(1).rule_information_category := 'CAN';
3902              l_rulv_tbl_in(1).object1_id1               := l_can_object;
3903              l_rulv_tbl_in(1).object1_id2               := '#';
3904              l_rulv_tbl_in(1).jtot_object1_code         := G_JTF_CUSTACCT;
3905              l_rulv_tbl_in(1).dnz_chr_id                := l_header_rec.id;
3906 
3907              Create_rules
3908              (
3909                     p_rulv_tbl      =>  l_rulv_tbl_in,
3910                     x_rulv_tbl      =>  l_rulv_tbl_out,
3911                     x_return_status => l_return_status,
3912                     x_msg_count     => x_msg_count,
3913                     x_msg_data      => x_msg_data
3914               );
3915 
3916               OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Create CAN Rule status :  '||l_return_status  );
3917               --dbms_output.put_line('K LINE CREATION :- CAN RULE STATUS ' || l_return_status);
3918               x_return_status := l_return_status;
3919 
3920               If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
3921                       l_rule_id := l_rulv_tbl_out(1).id;
3922               Else
3923                       OKC_API.set_message
3924                       (
3925                            p_app_name     => 'OKS',
3926                            p_msg_name     => G_REQUIRED_VALUE,
3927                            p_token1       => G_COL_NAME_TOKEN,
3928                            p_token1_value => 'Customer Account (LINE)'
3929                        );
3930 
3931                        Raise G_EXCEPTION_HALT_VALIDATION;
3932               End If;
3933 
3934       End If;
3935 */
3936 
3937       --CONTACT CREATION ROUTINE STARTS
3938 
3939 
3940       If p_contact_tbl.count > 0 Then
3941 
3942          i := p_Contact_Tbl.First;
3943          Loop
3944 
3945              Open  l_ra_hcontacts_cur (p_Contact_tbl (i).contact_id);
3946              Fetch l_ra_hcontacts_cur into l_lin_party_id, l_lin_contactid;
3947              Close l_ra_hcontacts_cur;
3948 
3949              If i = p_contact_tbl.first Then
3950 
3951                   If l_header_rec.scs_code = 'SUBSCRIPTION' then
3952                         Party_Role
3953                         (
3954                           p_chrId          => l_header_rec.id,
3955                           p_cleId          => l_line_id,
3956                           p_Rle_Code       => 'SUBSCRIBER',
3957                           p_PartyId        => l_lin_party_id,
3958                           p_Object_Code    => G_JTF_PARTY,
3959                           x_roleid         => l_line_party_role_id,
3960                           x_msg_count      => x_msg_count,
3961                           x_msg_data       => x_msg_data,
3962                           x_return_status  => l_return_status
3963                         );
3964 
3965                        --dbms_output.put_line(' LINE PARTY ROLE  CREATION :- CPL ID ' || l_line_party_role_id);
3966 
3967                    Else
3968 
3969                         Party_Role
3970                         (
3971                           p_chrId          => l_header_rec.id,
3972                           p_cleId          => l_line_id,
3973                           p_Rle_Code       => 'CUSTOMER',
3974                           p_PartyId        => l_lin_party_id,
3975                           p_Object_Code    => G_JTF_PARTY,
3976                           x_roleid         => l_line_party_role_id,
3977                           x_msg_count      => x_msg_count,
3978                           x_msg_data       => x_msg_data,
3979                           x_return_status  => l_return_status
3980                          );
3981 
3982                         --dbms_output.put_line(' LINE PARTY ROLE  CREATION :- CPL ID ' || l_line_party_role_id);
3983                     End If;
3984              End If;
3985 
3986              If p_contact_tbl(i).contact_role like '%BILLING%' Then
3987                     l_role := 'CUST_BILLING';
3988                     l_obj  := 'OKX_CONTBILL';
3989              Elsif p_contact_tbl(i).contact_role like '%ADMIN%' Then
3990                     l_role := 'CUST_ADMIN';
3991                     l_obj  := 'OKX_CONTADMN';
3992              Elsif p_contact_tbl(i).contact_role like '%SHIP%' Then
3993                     l_role := 'CUST_SHIPPING';
3994                     l_obj  := 'OKX_CONTSHIP';
3995              End if;
3996 
3997              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: CPL Id         :  '||l_line_party_role_id  );
3998              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Line Party Id  :  '||l_lin_party_id  );
3999              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Org Contact Id :  '||p_Contact_tbl (i).contact_id  );
4000              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: RAH Contact Id :  '||l_lin_contactid  );
4001              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Contact Role   :  '||p_Contact_tbl (i).contact_role  );
4002              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Contact OBJ    :  '||p_Contact_tbl (i).contact_object_code  );
4003 
4004              l_ctcv_tbl_in(1).cpl_id                  := l_line_party_role_id;
4005              l_ctcv_tbl_in(1).dnz_chr_id              := l_header_rec.id;
4006              l_ctcv_tbl_in(1).cro_code                := l_role;
4007              l_ctcv_tbl_in(1).object1_id1             := p_contact_tbl(i).contact_id;
4008              l_ctcv_tbl_in(1).object1_id2             := '#';
4009              l_ctcv_tbl_in(1).jtot_object1_code       := l_obj;
4010 
4011              okc_contract_party_pub.create_contact
4012              (
4013                    p_api_version                       => l_api_version,
4014                    p_init_msg_list                     => l_init_msg_list,
4015                    x_return_status                     => l_return_status,
4016                    x_msg_count                         => x_msg_count,
4017                    x_msg_data                          => x_msg_data,
4018                    p_ctcv_tbl                          => l_ctcv_tbl_in,
4019                    x_ctcv_tbl                          => l_ctcv_tbl_out
4020                );
4021 
4022                OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: create_contact '||i||':'||l_return_status );
4023                x_return_status := l_return_status;
4024 
4025                If l_return_status = OKC_API.G_RET_STS_SUCCESS then
4026                     l_line_contact_id := l_ctcv_tbl_out(1).id;
4027                Else
4028                     OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, p_Contact_tbl (i).contact_role
4029                                              || ' Contact (LINE) ' || p_Contact_tbl (i).contact_object_code);
4030                     Raise G_EXCEPTION_HALT_VALIDATION;
4031                End if;
4032 
4033        Exit When i = p_Contact_Tbl.Last;
4034        i := p_Contact_Tbl.Next(i);
4035 
4036     End Loop;
4037 
4038     End If;
4039 
4040 /*
4041 ---TAX creation
4042 
4043   IF p_k_line_rec.tax_exemption_id Is Not Null THEN
4044 
4045     l_rulv_tbl_in.DELETE;
4046 
4047     l_rule_id  := Check_Rule_Exists(l_rule_group_id, 'TAX');
4048 
4049     IF l_rule_id Is NULL THEN
4050 
4051          l_rulv_tbl_in(1).rgp_id                      := l_rule_group_id;
4052          l_rulv_tbl_in(1).sfwt_flag                   := 'N';
4053          l_rulv_tbl_in(1).std_template_yn             := 'N';
4054          l_rulv_tbl_in(1).warn_yn                     := 'N';
4055          l_rulv_tbl_in(1).rule_information_category   := 'TAX';
4056          l_rulv_tbl_in(1).object1_id1                 := p_k_line_rec.tax_exemption_id;
4057          l_rulv_tbl_in(1).object1_id2                 := '#';
4058          l_rulv_tbl_in(1).JTOT_OBJECT1_CODE           := G_JTF_TAXEXEMP;
4059          l_rulv_tbl_in(1).object2_id1                 := 'TAX_CONTROL_FLAG';
4060          l_rulv_tbl_in(1).object2_id2                 := p_k_line_rec.tax_status_flag;
4061          l_rulv_tbl_in(1).JTOT_OBJECT2_CODE           := G_JTF_TAXCTRL;
4062          l_rulv_tbl_in(1).dnz_chr_id                  := p_k_line_rec.k_hdr_id;
4063          l_rulv_tbl_in(1).object_version_number       := OKC_API.G_MISS_NUM;
4064          l_rulv_tbl_in(1).created_by                  := OKC_API.G_MISS_NUM;
4065          l_rulv_tbl_in(1).creation_date               := SYSDATE;
4066          l_rulv_tbl_in(1).last_updated_by             := OKC_API.G_MISS_NUM;
4067          l_rulv_tbl_in(1).last_update_date            := SYSDATE;
4068 
4069          OKC_RULE_PUB.create_rule
4070          (
4071                  p_api_version      => l_api_version,
4072                  x_return_status    => l_return_status,
4073                  x_msg_count        => x_msg_count,
4074                  x_msg_data         => x_msg_data,
4075                  p_rulv_tbl         => l_rulv_tbl_in,
4076                  x_rulv_tbl         => l_rulv_tbl_out
4077           );
4078 
4079           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  TAX rule Status:'||l_return_status );
4080           --dbms_output.put_line( 'K LINE CREATION :- TAX RULE STATUS ' || l_return_Status);
4081 
4082           x_return_status := l_return_status;
4083 
4084           IF l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
4085              l_rule_id  := l_rulv_tbl_out(1).id;
4086           ELSE
4087              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'TAX EXEMPTION (LINE)');
4088              Raise G_EXCEPTION_HALT_VALIDATION;
4089           END IF;
4090 
4091     END IF;
4092 
4093   END IF;
4094 
4095  --CONTACT CREATION ROUTINE ENDS
4096 
4097 
4098 --Accounting Rule ID  Routine
4099 
4100     If p_k_line_rec.accounting_rule_type Is Not Null Then
4101 
4102     l_rulv_tbl_in.delete;
4103 
4104     l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'ARL');
4105 
4106     If l_rule_id Is NULL Then
4107 
4108         l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4109         l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4110         l_rulv_tbl_in(1).std_template_yn           := 'N';
4111         l_rulv_tbl_in(1).warn_yn                   := 'N';
4112         l_rulv_tbl_in(1).rule_information_category := 'ARL';
4113         l_rulv_tbl_in(1).object1_id1               := p_k_line_rec.accounting_rule_type;
4114         l_rulv_tbl_in(1).object1_id2               := '#';
4115         l_rulv_tbl_in(1).jtot_object1_code         := G_JTF_ARL;
4116         l_rulv_tbl_in(1).dnz_chr_id                := l_header_rec.id;
4117 
4118         create_rules
4119         (
4120                    p_rulv_tbl      => l_rulv_tbl_in,
4121                    x_rulv_tbl      => l_rulv_tbl_out,
4122                    x_return_status => l_return_status,
4123                    x_msg_count     => x_msg_count,
4124                    x_msg_data      => x_msg_data
4125          );
4126 
4127          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  ARL rule Status:'||l_return_status );
4128          --dbms_output.put_line('K LINE CREATION :- ARL RULE STATUS ' || l_return_status);
4129          x_return_status := l_return_status;
4130 
4131          If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4132              l_rule_id  := l_rulv_tbl_out(1).id;
4133          Else
4134              OKC_API.set_message
4135              (
4136                    p_app_name     => 'OKS',
4137                    p_msg_name     => G_REQUIRED_VALUE,
4138                    p_token1       => G_COL_NAME_TOKEN,
4139                    p_token1_value => 'Customer Account (LINE)'
4140               );
4141               Raise G_EXCEPTION_HALT_VALIDATION;
4142          End If;
4143 
4144       End If;
4145 
4146   End If;
4147 
4148 
4149 
4150 --QRE rule for usage only
4151 --rule will be created only for usage item i.e, for lse_id = 12
4152 
4153   If l_line_lse_id = 12 THEN
4154 
4155     l_rulv_tbl_in.delete;
4156 
4157     l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'QRE');
4158 
4159     If l_rule_id Is NULL Then
4160 
4161         l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4162         l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4163         l_rulv_tbl_in(1).std_template_yn           := 'N';
4164         l_rulv_tbl_in(1).warn_yn                   := 'N';
4165         l_rulv_tbl_in(1).rule_information_category := 'QRE';
4166       --l_rulv_tbl_in(1).rule_information1         := Substr(p_k_line_rec.srv_desc,1,50);
4167         l_rulv_tbl_in(1).rule_information11        := p_k_line_rec.usage_period;
4168         l_rulv_tbl_in(1).rule_information2         := p_k_line_rec.usage_period;
4169         l_rulv_tbl_in(1).rule_information6         := 'N';
4170         l_rulv_tbl_in(1).rule_information9         := 'N';
4171         l_rulv_tbl_in(1).ATTRIBUTE11               := p_k_line_rec.usage_period;
4172         l_rulv_tbl_in(1).rule_information10        := p_k_line_rec.usage_type;
4173         l_rulv_tbl_in(1).dnz_chr_id                := l_header_rec.id;
4174 
4175       create_rules
4176       (
4177             p_rulv_tbl      =>  l_rulv_tbl_in,
4178             x_rulv_tbl      =>  l_rulv_tbl_out,
4179             x_return_status =>  l_return_status,
4180             x_msg_count     =>  x_msg_count,
4181             x_msg_data      =>  x_msg_data
4182        );
4183 
4184        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  QRE rule Status:'||l_return_status );
4185        --dbms_output.put_line('K LINE CREATION :- QRE RULE STATUS ' || l_return_status);
4186 
4187        x_return_status := l_return_status;
4188 
4189        If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4190              l_rule_id  := l_rulv_tbl_out(1).id;
4191        Else
4192              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'USAGE ITEM (LINE)');
4193              Raise G_EXCEPTION_HALT_VALIDATION;
4194        End If;
4195 
4196     End If;
4197 
4198   End if;
4199 
4200 
4201 -- Line Invoicing Rule ONLY FOR USAGE AND SERVICE
4202 
4203 -- IF l_line_lse_id = 1 or l_line_lse_id = 12 THEN
4204 
4205 If p_k_line_rec.invoicing_rule_type Is Not Null Then
4206 
4207         l_rulv_tbl_in.delete;
4208         l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'IRE');
4209 
4210         If l_rule_id Is NULL Then
4211 
4212            l_rulv_tbl_in(1).rgp_id                      := l_rule_group_id;
4213            l_rulv_tbl_in(1).sfwt_flag                   := 'N';
4214            l_rulv_tbl_in(1).std_template_yn             := 'N';
4215            l_rulv_tbl_in(1).warn_yn                     := 'N';
4216            l_rulv_tbl_in(1).rule_information_category   := 'IRE';
4217            l_rulv_tbl_in(1).object1_id1                 := p_k_line_rec.invoicing_rule_type;
4218            l_rulv_tbl_in(1).object1_id2                 := '#';
4219            l_rulv_tbl_in(1).jtot_object1_code           := G_JTF_IRE;
4220            l_rulv_tbl_in(1).dnz_chr_id                  := l_header_rec.id;
4221 
4222            create_rules
4223            (
4224                 p_rulv_tbl      =>  l_rulv_tbl_in,
4225                 x_rulv_tbl      =>  l_rulv_tbl_out,
4226                 x_return_status =>  l_return_status,
4227                 x_msg_count     =>  x_msg_count,
4228                 x_msg_data      =>  x_msg_data
4229            );
4230 
4231            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  IRE rule Status:'||l_return_status );
4232            --dbms_output.put_line( 'K LINE CREATION :- IRE RULE STATUS ' || l_return_Status);
4233 
4234            x_return_status := l_return_status;
4235 
4236            If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4237               l_rule_id := l_rulv_tbl_out(1).id;
4238            Else
4239               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Invoice Id (LINE)');
4240               Raise G_EXCEPTION_HALT_VALIDATION;
4241            End If;
4242 
4243        End If;
4244 
4245 End If;
4246 
4247 --End If;
4248 
4249 --Invoice Text Routine
4250  IF p_k_line_rec.srv_desc IS NOT NULL THEN
4251     l_rulv_tbl_in.delete;
4252 
4253     l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'IRT');
4254 
4255     If l_rule_id Is NULL Then
4256 
4257           l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4258           l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4259           l_rulv_tbl_in(1).std_template_yn           := 'N';
4260           l_rulv_tbl_in(1).warn_yn                   := 'N';
4261           l_rulv_tbl_in(1).rule_information_category := 'IRT';
4262           l_rulv_tbl_in(1).rule_information1         := Substr(p_k_line_rec.srv_desc,1,50);
4263           l_rulv_tbl_in(1).rule_information2         := 'Y';
4264           l_rulv_tbl_in(1).dnz_chr_id                := l_header_rec.id;
4265 
4266           create_rules
4267           (
4268                  p_rulv_tbl      =>  l_rulv_tbl_in,
4269                  x_rulv_tbl      =>  l_rulv_tbl_out,
4270                  x_return_status => l_return_status,
4271                  x_msg_count     => x_msg_count,
4272                  x_msg_data      => x_msg_data
4273          );
4274 
4275          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  IRT rule Status:'||l_return_status );
4276          --dbms_output.put_line('K LINE CREATION :- IRT RULE STATUS ' || l_return_status);
4277          x_return_status := l_return_status;
4278 
4279          If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4280             l_rule_id   := l_rulv_tbl_out(1).id;
4281          Else
4282             OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'INVOICE TEXT (LINE)');
4283             Raise G_EXCEPTION_HALT_VALIDATION;
4284          End If;
4285 
4286     End If;
4287   END IF;
4288 
4289 --Line Renewal Type To Routine
4290 
4291 l_rulv_tbl_in.delete;
4292 l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'LRT');
4293 
4294 If l_rule_id Is NULL Then
4295 
4296             l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4297             l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4298             l_rulv_tbl_in(1).std_template_yn           := 'N';
4299             l_rulv_tbl_in(1).warn_yn                   := 'N';
4300             l_rulv_tbl_in(1).rule_information_category := 'LRT';
4301             l_rulv_tbl_in(1).rule_information1         := Nvl(p_k_line_rec.line_renewal_type,'FUL');
4302             l_rulv_tbl_in(1).dnz_chr_id                := l_header_rec.id;
4303 
4304             create_rules
4305             (
4306                     p_rulv_tbl      =>  l_rulv_tbl_in,
4307                     x_rulv_tbl      =>  l_rulv_tbl_out,
4308                     x_return_status =>  l_return_status,
4309                     x_msg_count     =>  x_msg_count,
4310                     x_msg_data      =>  x_msg_data
4311             );
4312 
4313            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  LRT rule Status:'||l_return_status );
4314            --dbms_output.put_line('K LINE CREATION :- LRT RULE STATUS ' || l_return_status);
4315            x_return_status := l_return_status;
4316 
4317            If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4318                l_rule_id    := l_rulv_tbl_out(1).id;
4319            Else
4320                OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'LINE RENEWAL TYPE (LINE)');
4321                Raise G_EXCEPTION_HALT_VALIDATION;
4322            End If;
4323 
4324     End If;
4325 
4326 --Bill To Routine
4327 
4328 If p_k_line_rec.bill_to_id Is Not Null Then
4329 
4330     l_rulv_tbl_in.delete;
4331 
4332     l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'BTO');
4333 
4334     If l_rule_id Is NULL Then
4335 
4336         l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4337         l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4338         l_rulv_tbl_in(1).std_template_yn           := 'N';
4339         l_rulv_tbl_in(1).warn_yn                   := 'N';
4340         l_rulv_tbl_in(1).rule_information_category := 'BTO';
4341         l_rulv_tbl_in(1).object1_id1               := p_k_line_rec.bill_to_id;
4342         l_rulv_tbl_in(1).object1_id2               := '#';
4343         l_rulv_tbl_in(1).jtot_object1_code         := G_JTF_BILLTO;
4344         l_rulv_tbl_in(1).dnz_chr_id                := l_header_rec.id;
4345 
4346         create_rules
4347         (
4348                     p_rulv_tbl      =>  l_rulv_tbl_in,
4349                     x_rulv_tbl      =>  l_rulv_tbl_out,
4350                     x_return_status => l_return_status,
4351                     x_msg_count     => x_msg_count,
4352                     x_msg_data      => x_msg_data
4353         );
4354 
4355         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  BTO rule Status:'||l_return_status );
4356         --dbms_output.put_line('K LINE CREATION :- BTO RULE STATUS ' || l_return_status);
4357         x_return_status := l_return_status;
4358 
4359         If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4360                l_rule_id    := l_rulv_tbl_out(1).id;
4361         Else
4362                OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'BillTo ID (LINE)');
4363                Raise G_EXCEPTION_HALT_VALIDATION;
4364         End If;
4365 
4366     End If;
4367 
4368 End If;
4369 
4370 --Ship To Routine
4371 
4372 If p_k_line_rec.ship_to_id Is Not Null Then
4373 
4374     l_rulv_tbl_in.delete;
4375     l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'STO');
4376 
4377     If l_rule_id Is NULL Then
4378 
4379         l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4380         l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4381         l_rulv_tbl_in(1).std_template_yn           := 'N';
4382         l_rulv_tbl_in(1).warn_yn                   := 'N';
4383         l_rulv_tbl_in(1).rule_information_category := 'STO';
4384         l_rulv_tbl_in(1).object1_id1               := p_k_line_rec.ship_to_id;
4385         l_rulv_tbl_in(1).object1_id2               := '#';
4386         l_rulv_tbl_in(1).jtot_object1_code         := G_JTF_SHIPTO;
4387         l_rulv_tbl_in(1).dnz_chr_id                := l_header_rec.id;
4388 
4389         create_rules
4390         (
4391                     p_rulv_tbl      =>  l_rulv_tbl_in,
4392                     x_rulv_tbl      =>  l_rulv_tbl_out,
4393                     x_return_status =>  l_return_status,
4394                     x_msg_count     =>  x_msg_count,
4395                     x_msg_data      =>  x_msg_data
4396         );
4397 
4398         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line ::  STO rule Status:'||l_return_status );
4399         --dbms_output.put_line('K LINE CREATION :- STO RULE STATUS ' || l_return_status);
4400 
4401         x_return_status := l_return_status;
4402 
4403         If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4404            l_rule_id    := l_rulv_tbl_out(1).id;
4405         Else
4406            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'ShipTo ID (LINE)');
4407            Raise G_EXCEPTION_HALT_VALIDATION;
4408         End If;
4409 
4410     End If;
4411 
4412 End If;           --end ship to id null
4413 
4414 */
4415 
4416 ----create objrel only for ext warranty
4417 
4418 IF l_line_lse_id = 19 AND  p_k_line_rec.order_line_id Is Not Null Then
4419 
4420 
4421        Create_Obj_Rel
4422        (
4423              p_K_id               => Null,
4424              p_line_id            => l_line_id,
4425              p_orderhdrid         => Null,
4426              p_orderlineid        => p_k_line_rec.order_line_id,
4427              x_return_status      => l_return_status,
4428              x_msg_count          => x_msg_count,
4429              x_msg_data           => x_msg_data
4430        );
4431 
4432        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Create_Obj_Rel Status:'||l_return_status );
4433        --dbms_output.put_line('K LINE CREATION :- OBJ REL STATUS ' || l_return_status);
4434 
4435        x_return_status := l_return_status;
4436 
4437        If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4438           OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Order Line Id (LINE)');
4439           Raise G_EXCEPTION_HALT_VALIDATION;
4440        End If;
4441 
4442 End If;                      ----------end objrel only for ext warranty
4443 
4444 ----coverage for service,ext war, war
4445 
4446 IF l_line_lse_id not in (12,46) THEN  --- No coverages for usage lines
4447 
4448      l_organization_id := Okc_context.get_okc_organization_id ;
4449      --dbms_output.put_line('serv_id '||p_k_line_rec.srv_id );
4450 
4451      OPEN l_template_csr(p_k_line_rec.srv_id, l_organization_id);
4452      FETCH l_template_csr INTO l_template_id;
4453 
4454      IF l_template_csr%NOTFOUND THEN
4455          Close l_template_csr;
4456          x_return_status := OKC_API.G_RET_STS_ERROR ;
4457          OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'TEMPLATE ID NOT FOUND (LINE)');
4458          Raise G_EXCEPTION_HALT_VALIDATION;
4459       ELSE
4460          Close l_template_csr;
4461       END IF;
4462 
4463       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Template Id:'||l_template_id );
4464       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: SRV ID     :'||p_k_line_rec.srv_id );
4465       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Line Id    :'||l_line_id );
4466 
4467       --dbms_output.put_line('l_line_id :: '|| l_line_id);
4468       --dbms_output.put_line('l_template_id:: '|| l_template_id);
4469       --dbms_output.put_line('start date:: '||p_k_line_rec.srv_sdt );
4470 
4471       l_cov_rec.Svc_cle_Id := l_line_id;
4472       l_cov_rec.Tmp_cle_Id := l_template_id;
4473       l_cov_rec.Start_date := p_k_line_rec.srv_sdt;
4474       l_cov_rec.End_Date   := p_k_line_rec.srv_edt;
4475 
4476       OKS_COVERAGES_PUB.CREATE_ACTUAL_COVERAGE
4477       (
4478           p_api_version           => 1.0,
4479           p_init_msg_list         => OKC_API.G_FALSE,
4480           x_return_status         => l_return_status,
4481           x_msg_count             => x_msg_count,
4482           x_msg_data              => x_msg_data,
4483           P_ac_rec_in             => l_cov_rec,
4484           x_Actual_coverage_id    => l_cov_id
4485       );
4486 
4487 
4488       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Create_Actual_Coverage Status :'||l_return_status );
4489       --dbms_output.put_line('K LINE CREATION :- COV STATUS ' || l_return_status);
4490       x_return_status := l_return_status;
4491 
4492       If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4493              OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'CoverageInstantiate (LINE)');
4494              Raise G_EXCEPTION_HALT_VALIDATION;
4495       End If;
4496 
4497 End if; -- for coverages
4498 
4499 
4500 
4501 l_ctr_grpid := Null;
4502 
4503 IF l_line_lse_id not in (46) THEN
4504 
4505          Open  l_ctr_csr (p_k_line_rec.srv_id);
4506          Fetch l_ctr_csr Into l_ctr_grpid;
4507          Close l_ctr_csr;
4508 
4509          If l_ctr_grpid Is Not Null Then
4510 
4511              cs_counters_pub.autoinstantiate_counters
4512              (
4513                     P_API_VERSION                  => 1.0,
4514                     P_INIT_MSG_LIST                => 'T',
4515                     P_COMMIT                       => 'F',
4516                     X_RETURN_STATUS                => l_return_status,
4517                     X_MSG_COUNT                    => x_msg_count,
4518                     X_MSG_DATA                     => x_msg_data,
4519                     P_SOURCE_OBJECT_ID_TEMPLATE    => p_k_line_rec.srv_id,
4520                     P_SOURCE_OBJECT_ID_INSTANCE    => l_line_id,
4521                     X_CTR_GRP_ID_TEMPLATE          => l_ctr_grp_id_template,
4522                     X_CTR_GRP_ID_INSTANCE          => l_ctr_grp_id_instance
4523              );
4524 
4525              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: autoinstantiate_counters Status :'||l_return_status );
4526              --dbms_output.put_line('K LINE CREATION :- CTR STATUS ' || l_return_status);
4527              x_return_status := l_return_status;
4528 
4529              If Not l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4530                   OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Counter Instantiate (LINE)');
4531                   Raise G_EXCEPTION_HALT_VALIDATION;
4532              End If;
4533 
4534           End If;
4535      End if;
4536  x_service_line_id := l_line_id;
4537 
4538 Exception
4539 
4540     When  G_EXCEPTION_HALT_VALIDATION Then
4541         x_return_status := l_return_status;
4542     When  Others Then
4543         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4544         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
4545         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Service_Line :: Error:'||SQLCODE ||':'|| SQLERRM);
4546 
4547 End Create_Service_line;
4548 
4549 
4550 
4551 
4552 
4553 
4554 -----------------------------------------------------------------------
4555 -- Procedure for creating Covered line
4556 --------------------------------------------------------------------------
4557 
4558 Procedure Create_Covered_Line
4559 (
4560       p_k_covd_rec                  IN    Covered_level_Rec_Type
4561 ,     p_PRICE_ATTRIBS               IN    Pricing_attributes_Type
4562 ,     x_cp_line_id                  OUT NOCOPY  NUMBER
4563 ,     x_return_status               OUT NOCOPY   Varchar2
4564 ,     x_msg_count                   OUT NOCOPY  Number
4565 ,     x_msg_data                    OUT NOCOPY  Varchar2
4566 )
4567 Is
4568 
4569     l_api_version       CONSTANT    NUMBER  := 1.0;
4570     l_init_msg_list     CONSTANT    VARCHAR2(1) := OKC_API.G_FALSE;
4571     l_return_status                 VARCHAR2(1) := 'S';
4572     l_index                         VARCHAR2(2000);
4573 
4574 --Contract Line Table
4575     l_clev_tbl_in                  okc_contract_pub.clev_tbl_type;
4576     l_clev_tbl_out                 okc_contract_pub.clev_tbl_type;
4577 
4578 --Contract Item
4579     l_cimv_tbl_in                  okc_contract_item_pub.cimv_tbl_type;
4580     l_cimv_tbl_out                 okc_contract_item_pub.cimv_tbl_type;
4581 
4582 --Pricing Attributes
4583     l_pavv_tbl_in                  okc_price_adjustment_pvt.pavv_tbl_type;
4584     l_pavv_tbl_out                 okc_price_adjustment_pvt.pavv_tbl_type;
4585 
4586 
4587 --Rule Related
4588 
4589     --l_rgpv_tbl_in                  okc_rule_pub.rgpv_tbl_type;
4590     --l_rgpv_tbl_out                 okc_rule_pub.rgpv_tbl_type;
4591     --l_rulv_tbl_in                  okc_rule_pub.rulv_tbl_type;
4592     --l_rulv_tbl_out                 okc_rule_pub.rulv_tbl_type;
4593       l_klnv_tbl_in                 oks_kln_pvt.klnv_tbl_type;
4594       l_klnv_tbl_out                oks_kln_pvt.klnv_tbl_type;
4595 --Return IDs
4596     l_line_id                      NUMBER;
4597     l_rule_group_id                NUMBER;
4598     l_rule_id                      NUMBER;
4599     l_line_item_id                 NUMBER;
4600     l_cp_lse_id                    NUMBER;
4601     l_cp_jtot_object               VARCHAR2(30) := NULL;
4602     l_hdrsdt                       DATE;
4603     l_hdredt                       DATE;
4604     l_hdrorgid                     Number;
4605     l_line_sdt                     DATE;
4606     l_line_edt                     DATE;
4607     l_hdrstatus                    VARCHAR2(3);
4608     l_line_status                  VARCHAR2(3);
4609     l_priceattrib_id               NUMBER;
4610 
4611 
4612     Cursor l_mtl_csr(p_inventory_id Number, p_organization_id Number) Is
4613                   Select  MTL.SERVICE_ITEM_FLAG
4614                          ,MTL.USAGE_ITEM_FLAG
4615                   From    OKX_SYSTEM_ITEMS_V MTL
4616                   Where   MTL.id1   = p_Inventory_id
4617                   And     MTL.Organization_id = p_organization_id;
4618 
4619    l_mtl_rec     l_mtl_csr%rowtype;
4620 
4621    CURSOR l_parent_line_csr (p_line_id Number) IS
4622                  SELECT id, lse_id
4623                  FROM okc_k_lines_b
4624                  WHERE id =  p_line_id;
4625 /*
4626    CURSOR l_usage_type_csr(p_line_id NUMBER) IS
4627                  SELECT rule_information10
4628                  FROM okc_rules_b rul, okc_rule_groups_b rg
4629                  WHERE rul.rgp_id = rg.id AND rg.cle_id = p_line_id
4630                  AND rule_information_category = 'QRE';*/
4631 
4632 CURSOR l_usage_type_csr(p_line_id NUMBER) IS
4633                  SELECT usage_type
4634                  FROM oks_k_lines_b
4635                  WHERE cle_id = p_line_id;
4636 
4637 
4638   l_parent_line_rec                       l_parent_line_csr%ROWTYPE;
4639   l_usage_type                            VARCHAR2(450);
4640   l_warranty_flag                         VARCHAR2(10);
4641 
4642 
4643   Begin
4644 
4645 
4646      x_return_status            := OKC_API.G_RET_STS_SUCCESS;
4647 
4648      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: CREATE COVERED LINE FOR LINE :'||p_k_covd_rec.Attach_2_Line_id );
4649      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Attached to line type        :'||p_k_covd_rec.product_sts_code );
4650 
4651      IF p_k_covd_rec.Attach_2_Line_id IS NULL THEN
4652 
4653         x_return_status :=  OKC_API.G_RET_STS_ERROR;
4654         OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'ATTACH_2_LINE_ID REQUIRED FOR COVERED PRODUCT');
4655         Raise G_EXCEPTION_HALT_VALIDATION;
4656 
4657      END IF;
4658 
4659      --dbms_output.put_line('line_id '|| p_k_covd_rec.Attach_2_Line_id );
4660 
4661      OPEN l_parent_line_csr(p_k_covd_rec.Attach_2_Line_id);
4662      FETCH l_parent_line_csr INTO l_parent_line_rec;
4663 
4664      IF l_parent_line_csr%NOTFOUND THEN
4665          Close l_parent_line_csr;
4666          ---message debug and okc.api
4667          x_return_status := OKC_API.G_RET_STS_ERROR;
4668          Raise G_EXCEPTION_HALT_VALIDATION;
4669      ELSE
4670          Close l_parent_line_csr;
4671      END IF;
4672 
4673      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Parent line Id     :'||to_char(l_parent_line_rec.id) );
4674      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Parent line Lse Id :'||to_char(l_parent_line_rec.lse_id) );
4675 
4676      IF l_parent_line_rec.lse_id = 12 THEN
4677 
4678          OPEN l_usage_type_csr(l_parent_line_rec.id);
4679          FETCH l_usage_type_csr INTO l_usage_type;
4680 
4681          IF l_usage_type_csr%NOTFOUND THEN
4682              Close l_usage_type_csr;
4683              l_usage_type := NULL;
4684          ELSE
4685              Close l_usage_type_csr;
4686          END IF;
4687 
4688       ELSE
4689          l_usage_type := NULL;
4690       END IF;
4691 
4692      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Usage Type :'||l_usage_type );
4693 
4694      Validate_Cp_Rec
4695      (
4696            p_cp_rec        => p_k_covd_rec,
4697            p_usage_type    => l_usage_type,
4698            x_return_status => l_return_status
4699      );
4700 
4701      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Validate_Cp_Rec Status :'||l_return_status );
4702 
4703 
4704      IF NOT l_return_status =  OKC_API.G_RET_STS_SUCCESS THEN
4705             x_return_status := OKC_API.G_RET_STS_ERROR;
4706             Raise G_EXCEPTION_HALT_VALIDATION;
4707      END IF;
4708 
4709      --dbms_output.put_line('validate CP '||l_return_status );
4710 
4711      Check_line_effectivity
4712      (
4713         p_cle_id      =>    p_k_covd_rec.Attach_2_Line_id,
4714         p_srv_sdt     =>    p_k_covd_rec.Product_start_date,
4715         p_srv_edt     =>    p_k_covd_rec.Product_end_date,
4716         x_line_sdt    =>    l_line_sdt,
4717         x_line_edt    =>    l_line_edt,
4718         x_status      =>    l_return_status
4719      );
4720 
4721       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Check_line_effectivity Status :'||l_return_status );
4722       x_return_status := l_return_status;
4723       --dbms_output.put_line('validate line effectivity '|| x_return_status );
4724 
4725       If l_return_status = OKC_API.G_RET_STS_ERROR Then
4726 
4727            x_return_status := OKC_API.G_RET_STS_ERROR;
4728            Raise G_EXCEPTION_HALT_VALIDATION;
4729 
4730       ElsIf l_return_status = 'Y' Then
4731 
4732             check_hdr_effectivity
4733             (
4734                 p_chr_id          =>    p_k_covd_rec.k_id,
4735                 p_srv_sdt         =>    l_line_sdt,
4736                 p_srv_edt         =>    l_line_edt,
4737                 x_hdr_sdt         =>    l_hdrsdt,
4738                 x_hdr_edt         =>    l_hdredt,
4739                 x_org_id          =>    l_hdrorgid,
4740                 x_status          =>    l_hdrstatus
4741              );
4742 
4743              OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: check_hdr_effectivity Status :'||l_hdrstatus );
4744              x_return_status := l_hdrstatus;
4745              --dbms_output.put_line('hdr effectivity  '|| x_return_status );
4746 
4747 
4748              If l_hdrstatus = 'N' Then
4749                   NULL;
4750 
4751              ElsIf l_hdrstatus = 'Y' Then
4752 
4753                   x_return_status := OKC_API.G_RET_STS_ERROR;
4754                   OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'CP EFFECTIVITY SHOULD BE WITH IN CONTRACT EFFECTIVITY');
4755                   Raise G_EXCEPTION_HALT_VALIDATION;
4756              End If;
4757       End if;
4758 
4759      --dbms_output.put_line('parent lse_id = ' || to_char(l_parent_line_rec.lse_id ));
4760 
4761      IF l_parent_line_rec.lse_id  = 1 THEN                       --service
4762           l_cp_lse_id := 9;
4763           l_cp_jtot_object := 'OKX_CUSTPROD';
4764      ELSIF l_parent_line_rec.lse_id   = 12 THEN                  --usage
4765           l_cp_lse_id := 13;
4766           l_cp_jtot_object := 'OKX_COUNTER';
4767      ELSIF l_parent_line_rec.lse_id  = 14 THEN                   --warranty
4768           l_cp_lse_id := 18;
4769           l_cp_jtot_object := 'OKX_CUSTPROD';
4770      ELSIF l_parent_line_rec.lse_id   = 19 THEN                  --ext warranty
4771           l_cp_lse_id := 25;
4772           l_cp_jtot_object := 'OKX_CUSTPROD';
4773 
4774      END IF;
4775 
4776     --dbms_output.put_line('l_cp_lse_id = ' || (l_cp_lse_id));
4777     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: CP Lse Id       :'|| to_char(l_cp_lse_id) );
4778     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: CP Jtot_object  :'||l_cp_jtot_object );
4779 
4780     l_clev_tbl_in(1).chr_id                 := Null;
4781     l_clev_tbl_in(1).sfwt_flag              := 'N';
4782     l_clev_tbl_in(1).lse_id                 := l_cp_lse_id;
4783    --l_clev_tbl_in(1).line_number           := p_k_covd_rec.line_number;
4784     l_clev_tbl_in(1).line_number            := get_sub_line_number(p_k_covd_rec.k_id,p_k_covd_rec.Attach_2_Line_Id);
4785     l_clev_tbl_in(1).sts_code               := Nvl(p_k_covd_rec.product_sts_code,'ACTIVE');
4786     l_clev_tbl_in(1).display_sequence       := 2;
4787     l_clev_tbl_in(1).dnz_chr_id             := p_k_covd_rec.k_id;
4788     --l_clev_tbl_in(1).name                 := Substr(p_k_covd_rec.Product_segment1,1,50);
4789     l_clev_tbl_in(1).name                   := Null;
4790     l_clev_tbl_in(1).item_description       := p_k_covd_rec.Product_desc;
4791     l_clev_tbl_in(1).start_date             := p_k_covd_rec.Product_start_date;
4792     l_clev_tbl_in(1).end_date               := p_k_covd_rec.Product_end_date;
4793     l_clev_tbl_in(1).exception_yn           := 'N';
4794     l_clev_tbl_in(1).price_negotiated       := p_k_covd_rec.negotiated_amount;
4795     l_clev_tbl_in(1).currency_code          := p_k_covd_rec.currency_code;
4796     l_clev_tbl_in(1).price_unit             := p_k_covd_rec.list_price;
4797     l_clev_tbl_in(1).cle_id                 := p_k_covd_rec.Attach_2_Line_Id;
4798     l_clev_tbl_in(1).price_level_ind        := Priced_YN(l_cp_lse_id);
4799     l_clev_tbl_in(1).trn_code               := p_k_covd_rec.reason_code;
4800     l_clev_tbl_in(1).comments               := p_k_covd_rec.reason_comments;
4801     l_clev_tbl_in(1).Attribute1             := p_k_covd_rec.attribute1;
4802     l_clev_tbl_in(1).Attribute2             := p_k_covd_rec.attribute2;
4803     l_clev_tbl_in(1).Attribute3             := p_k_covd_rec.attribute3;
4804     l_clev_tbl_in(1).Attribute4             := p_k_covd_rec.attribute4;
4805     l_clev_tbl_in(1).Attribute5             := p_k_covd_rec.attribute5;
4806     l_clev_tbl_in(1).Attribute6             := p_k_covd_rec.attribute6;
4807     l_clev_tbl_in(1).Attribute7             := p_k_covd_rec.attribute7;
4808     l_clev_tbl_in(1).Attribute8             := p_k_covd_rec.attribute8;
4809     l_clev_tbl_in(1).Attribute9             := p_k_covd_rec.attribute9;
4810     l_clev_tbl_in(1).Attribute10            := p_k_covd_rec.attribute10;
4811     l_clev_tbl_in(1).Attribute11            := p_k_covd_rec.attribute11;
4812     l_clev_tbl_in(1).Attribute12            := p_k_covd_rec.attribute12;
4813     l_clev_tbl_in(1).Attribute13            := p_k_covd_rec.attribute13;
4814     l_clev_tbl_in(1).Attribute14            := p_k_covd_rec.attribute14;
4815     l_clev_tbl_in(1).Attribute15            := p_k_covd_rec.attribute15;
4816     l_clev_tbl_in(1).line_renewal_type_code := NVL( p_k_covd_rec.line_renewal_type, 'FUL' ); --LRT
4817     okc_contract_pub.create_contract_line
4818       (
4819         p_api_version                   => l_api_version,
4820         p_init_msg_list                 => l_init_msg_list,
4821         x_return_status                 => l_return_status,
4822         x_msg_count                     => x_msg_count,
4823         x_msg_data                      => x_msg_data,
4824         p_clev_tbl                      => l_clev_tbl_in,
4825         x_clev_tbl                      => l_clev_tbl_out
4826       );
4827 
4828       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: create_contract_line status:'|| l_return_status);
4829       --dbms_output.put_line('K COVD LINE CREATION :- LINE  STATUS ' || l_return_status);
4830       x_return_status := l_return_status;
4831 
4832       If l_return_status = OKC_API.G_RET_STS_SUCCESS then
4833            l_line_id := l_clev_tbl_out(1).id;
4834       Else
4835            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'K LINE (SUB LINE)');
4836            Raise G_EXCEPTION_HALT_VALIDATION;
4837       End if;
4838 
4839       -- cov rules inserted by oks
4840           l_klnv_tbl_in( 1 ).cle_id                 := l_line_id; --p_k_covd_rec.attach_2_line_id;
4841           l_klnv_tbl_in( 1 ).dnz_chr_id             := p_k_covd_rec.k_id;
4842 IF l_cp_lse_id <> 13 THEN
4843 
4844           l_klnv_tbl_in( 1 ).invoice_text           := 'Counter'||Substr(p_k_covd_rec.Product_desc,1,50);                    --IRT
4845 
4846 Else
4847                     l_klnv_tbl_in(1).UOM_QUANTIFIED              := p_k_covd_rec.period;
4848                     l_klnv_tbl_in(1).minimum_quantity                 := p_k_covd_rec.minimum_qty;
4849                     l_klnv_tbl_in(1).default_quantity             := p_k_covd_rec.default_qty;
4850                     l_klnv_tbl_in(1).amcv_flag        := p_k_covd_rec.amcv_flag;
4851                     l_klnv_tbl_in(1).fixed_quantity                     := p_k_covd_rec.fixed_qty;
4852                    -- ??? uom_per_period mapping column does not exist in the table
4853                    -- l_klnv_tbl_in(1).UOM_PER_PERIOD           := 1;
4854                     l_klnv_tbl_in(1).level_yn                 := p_k_covd_rec.level_yn;
4855                     l_klnv_tbl_in(1).base_reading      := p_k_covd_rec.base_reading;
4856                     l_klnv_tbl_in(1).price_uom           := p_k_covd_rec.uom_code;
4857                     l_klnv_tbl_in(1).dnz_chr_id               := p_k_covd_rec.k_id;
4858 
4859 End If;
4860           OKS_CONTRACT_LINE_PUB.CREATE_LINE(
4861                p_api_version                   => l_api_version,
4862                p_init_msg_list                 => l_init_msg_list,
4863                x_return_status                 => l_return_status,
4864                x_msg_count                     => x_msg_count,
4865                x_msg_data                      => x_msg_data,
4866                p_klnv_tbl                      => l_klnv_tbl_in,
4867                x_klnv_tbl                      => l_klnv_tbl_out,
4868                p_validate_yn                   => 'N'
4869            );
4870           OKS_RENEW_PVT.DEBUG_LOG('(OKS_EXTWARPRGM_PVT).OKS create cov lvl status :: ' || l_return_status );
4871           FND_FILE.PUT_LINE(fnd_file.LOG, 'OKS COV LINE CREATION :- LINE STATUS '|| l_return_status );
4872 
4873           IF NOT l_return_status = 'S' THEN
4874                OKC_API.SET_MESSAGE(
4875                     g_app_name,
4876                     g_required_value,
4877                     g_col_name_token,
4878                     'OKS Contract COV LINE'
4879                 );
4880                RAISE G_EXCEPTION_HALT_VALIDATION;
4881           END IF;
4882 
4883 
4884       --Create Contract Item
4885 
4886       l_cimv_tbl_in(1).cle_id                   := l_line_id;
4887       l_cimv_tbl_in(1).dnz_chr_id               := p_k_covd_rec.k_id;
4888       l_cimv_tbl_in(1).object1_id1              := to_char(p_k_covd_rec.Customer_Product_Id);
4889       l_cimv_tbl_in(1).object1_id2              := '#';
4890       l_cimv_tbl_in(1).jtot_object1_code        := l_cp_jtot_object;
4891       l_cimv_tbl_in(1).exception_yn             := 'N';
4892       l_cimv_tbl_in(1).number_of_items          := p_k_covd_rec.quantity;
4893       l_cimv_tbl_in(1).uom_code                 := p_k_covd_rec.uom_code;
4894 
4895       Okc_contract_item_pub.create_contract_item
4896       (
4897         p_api_version                   => l_api_version,
4898         p_init_msg_list                 => l_init_msg_list,
4899         x_return_status                 => l_return_status,
4900         x_msg_count                     => x_msg_count,
4901         x_msg_data                      => x_msg_data,
4902         p_cimv_tbl                      => l_cimv_tbl_in,
4903         x_cimv_tbl                      => l_cimv_tbl_out
4904       );
4905 
4906       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: create_contract_item status:'|| l_return_status);
4907       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Item Id :'|| l_cimv_tbl_out(1).id );
4908       --dbms_output.put_line('K COVD LINE CREATION :- KITEM  STATUS ' || l_return_status);
4909 
4910       x_return_status := l_return_status;
4911 
4912       If l_return_status = OKC_API.G_RET_STS_SUCCESS then
4913            l_line_item_id := l_cimv_tbl_out(1).id;
4914            --dbms_output.put_line('item id  '||l_cimv_tbl_out(1).id );
4915       Else
4916            OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'KItem (SUB LINE)');
4917            Raise G_EXCEPTION_HALT_VALIDATION;
4918       End if;
4919 
4920  /*
4921       --Rule Group Routine
4922 
4923       Create_Rule_grp
4924       (
4925         p_dnz_chr_id    => p_k_covd_rec.k_id,
4926         p_chr_id        => NULL,
4927         p_cle_id        => l_line_id,
4928         x_rul_grp_id    => l_rule_group_id,
4929         x_return_status => l_return_status,
4930         x_msg_data      => x_msg_data,
4931         x_msg_count     => x_msg_count
4932       );
4933 
4934       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Create_Rule_grp status :'|| l_return_status );
4935       --dbms_output.put_line('K COVD LINE CREATION :- RGP  STATUS ' || l_return_status);
4936       x_return_status := l_return_status;
4937 
4938       If NOT l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4939             OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'Rule Group (SUB LINE)');
4940             Raise G_EXCEPTION_HALT_VALIDATION;
4941       End If;
4942 
4943       --Invoice Text Routine
4944       IF l_cp_lse_id <> 13 THEN
4945            l_rulv_tbl_in.DELETE;
4946            l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'IRT');
4947 
4948            If l_rule_id Is NULL Then
4949 
4950                 l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4951                 l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4952                 l_rulv_tbl_in(1).std_template_yn           := 'N';
4953                 l_rulv_tbl_in(1).warn_yn                   := 'N';
4954                 l_rulv_tbl_in(1).rule_information_category := 'IRT';
4955                 l_rulv_tbl_in(1).rule_information1         := 'Counter'||Substr(p_k_covd_rec.Product_desc,1,50);
4956                 l_rulv_tbl_in(1).rule_information2         := 'Y';
4957                 l_rulv_tbl_in(1).dnz_chr_id                := p_k_covd_rec.k_id;
4958 
4959                 Create_rules
4960                 (
4961                     p_rulv_tbl      =>  l_rulv_tbl_in,
4962                     x_rulv_tbl      =>  l_rulv_tbl_out,
4963                     x_return_status =>  l_return_status,
4964                     x_msg_count     =>  x_msg_count,
4965                     x_msg_data      =>  x_msg_data
4966                 );
4967 
4968                 OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: IRT Rule status :'|| l_return_status );
4969                 --dbms_output.put_line('K COVD LINE CREATION :- IRT RULE STATUS ' || l_return_status);
4970                 x_return_status := l_return_status;
4971 
4972                 If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
4973                       l_rule_id := l_rulv_tbl_out(1).id;
4974                 Else
4975                       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'INVOICE TEXT (SUB LINE)');
4976                       Raise G_EXCEPTION_HALT_VALIDATION;
4977                 End If;
4978 
4979            End If;
4980       End If;
4981 
4982       IF l_cp_lse_id= 13 THEN -- validation for usage rules
4983 
4984              --- QRE rule for usages
4985              l_rulv_tbl_in.DELETE;
4986              l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'QRE');
4987 
4988              If l_rule_id Is NULL Then
4989 
4990                     l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
4991                     l_rulv_tbl_in(1).sfwt_flag                 := 'N';
4992                     l_rulv_tbl_in(1).std_template_yn           := 'N';
4993                     l_rulv_tbl_in(1).warn_yn                   := 'N';
4994                     l_rulv_tbl_in(1).rule_information_category := 'QRE';
4995                     --   l_rulv_tbl_in(1).rule_information1         := Substr(p_k_covd_rec.Product_desc,1,50);
4996                     l_rulv_tbl_in(1).rule_information2         := p_k_covd_rec.period;
4997                     l_rulv_tbl_in(1).rule_information4         := p_k_covd_rec.minimum_qty;
4998                     l_rulv_tbl_in(1).rule_information5         := p_k_covd_rec.default_qty;
4999                     l_rulv_tbl_in(1).rule_information6         := p_k_covd_rec.amcv_flag;
5000                     l_rulv_tbl_in(1).rule_information7         := p_k_covd_rec.fixed_qty;
5001                     l_rulv_tbl_in(1).rule_information8         := 1;
5002                     l_rulv_tbl_in(1).rule_information9         := p_k_covd_rec.level_yn;
5003                     l_rulv_tbl_in(1).rule_information12        := p_k_covd_rec.base_reading;
5004                     l_rulv_tbl_in(1).rule_information11        := p_k_covd_rec.uom_code;
5005                     l_rulv_tbl_in(1).dnz_chr_id                := p_k_covd_rec.k_id;
5006 
5007                     Create_rules
5008                     (
5009                       p_rulv_tbl      =>  l_rulv_tbl_in,
5010                       x_rulv_tbl      =>  l_rulv_tbl_out,
5011                       x_return_status =>  l_return_status,
5012                       x_msg_count     =>  x_msg_count,
5013                       x_msg_data      =>  x_msg_data
5014                     );
5015 
5016                     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: QRE Rule status :'|| l_return_status );
5017                     --dbms_output.put_line('K COVD LINE CREATION :- QRE RULE STATUS ' || l_return_status);
5018                     x_return_status := l_return_status;
5019 
5020                     If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
5021                               l_rule_id := l_rulv_tbl_out(1).id;
5022                     Else
5023                               OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'USAGE ITEM (SUB LINE)');
5024                               Raise G_EXCEPTION_HALT_VALIDATION;
5025                     End If;
5026 
5027             End If;  -- end if for QRE rule
5028 
5029       ELSE
5030 
5031             --Line Renewal Type To Routine
5032 
5033             l_rulv_tbl_in.DELETE;
5034 
5035             l_rule_id     := Check_Rule_Exists(l_rule_group_id, 'LRT');
5036 
5037             If l_rule_id Is NULL Then
5038                  --dbms_output.put_line('rgp'||l_rule_group_id);
5039                  --dbms_output.put_line('rule_information1'||p_k_covd_rec.line_renewal_type);
5040 
5041                  l_rulv_tbl_in(1).rgp_id                    := l_rule_group_id;
5042                  l_rulv_tbl_in(1).sfwt_flag                 := 'N';
5043                  l_rulv_tbl_in(1).std_template_yn           := 'N';
5044                  l_rulv_tbl_in(1).warn_yn                   := 'N';
5045                  l_rulv_tbl_in(1).rule_information_category := 'LRT';
5046                  l_rulv_tbl_in(1).rule_information1         := Nvl(p_k_covd_rec.line_renewal_type,'FUL');
5047                  l_rulv_tbl_in(1).dnz_chr_id                := p_k_covd_rec.k_id;
5048 
5049                  Create_rules
5050                  (
5051                     p_rulv_tbl      =>  l_rulv_tbl_in,
5052                     x_rulv_tbl      =>  l_rulv_tbl_out,
5053                     x_return_status =>  l_return_status,
5054                     x_msg_count     =>  x_msg_count,
5055                     x_msg_data      =>  x_msg_data
5056                  );
5057 
5058                  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: LRT Rule status :'|| l_return_status );
5059                  --dbms_output.put_line('K COVD LINE CREATION :- LRT RULE STATUS ' || l_return_status);
5060                  x_return_status := l_return_status;
5061 
5062                  If l_return_status = OKC_API.G_RET_STS_SUCCESS Then
5063                       l_rule_id := l_rulv_tbl_out(1).id;
5064                  Else
5065                       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'LINE RENEWAL TYPE (SUB LINE)');
5066                       Raise G_EXCEPTION_HALT_VALIDATION;
5067                  End If;
5068 
5069               End If;
5070 
5071        End if;  -- validation for usage rules
5072 */
5073        --Create Pricing Attributes
5074 
5075        If p_price_attribs.pricing_context Is Not Null Then
5076 
5077                 l_pavv_tbl_in(1).cle_id                 :=   l_line_id;
5078                 l_pavv_tbl_in(1).flex_title             :=   'QP_ATTR_DEFNS_PRICING';
5079                 l_pavv_tbl_in(1).pricing_context        :=   p_price_attribs.PRICING_CONTEXT;
5080                 l_pavv_tbl_in(1).pricing_attribute1     :=   p_price_attribs.PRICING_ATTRIBUTE1;
5081                 l_pavv_tbl_in(1).pricing_attribute2     :=   p_price_attribs.PRICING_ATTRIBUTE2;
5082                 l_pavv_tbl_in(1).pricing_attribute3     :=   p_price_attribs.PRICING_ATTRIBUTE3;
5083                 l_pavv_tbl_in(1).pricing_attribute4     :=   p_price_attribs.PRICING_ATTRIBUTE4;
5084                 l_pavv_tbl_in(1).pricing_attribute5     :=   p_price_attribs.PRICING_ATTRIBUTE5;
5085                 l_pavv_tbl_in(1).pricing_attribute6     :=   p_price_attribs.PRICING_ATTRIBUTE6;
5086                 l_pavv_tbl_in(1).pricing_attribute7     :=   p_price_attribs.PRICING_ATTRIBUTE7;
5087                 l_pavv_tbl_in(1).pricing_attribute8     :=   p_price_attribs.PRICING_ATTRIBUTE8;
5088                 l_pavv_tbl_in(1).pricing_attribute9     :=   p_price_attribs.PRICING_ATTRIBUTE9;
5089                 l_pavv_tbl_in(1).pricing_attribute10    :=   p_price_attribs.PRICING_ATTRIBUTE10;
5090                 l_pavv_tbl_in(1).pricing_attribute11    :=   p_price_attribs.PRICING_ATTRIBUTE11;
5091                 l_pavv_tbl_in(1).pricing_attribute12    :=   p_price_attribs.PRICING_ATTRIBUTE12;
5092                 l_pavv_tbl_in(1).pricing_attribute13    :=   p_price_attribs.PRICING_ATTRIBUTE13;
5093                 l_pavv_tbl_in(1).pricing_attribute14    :=   p_price_attribs.PRICING_ATTRIBUTE14;
5094                 l_pavv_tbl_in(1).pricing_attribute15    :=   p_price_attribs.PRICING_ATTRIBUTE15;
5095                 l_pavv_tbl_in(1).pricing_attribute16    :=   p_price_attribs.PRICING_ATTRIBUTE16;
5096                 l_pavv_tbl_in(1).pricing_attribute17    :=   p_price_attribs.PRICING_ATTRIBUTE17;
5097                 l_pavv_tbl_in(1).pricing_attribute18    :=   p_price_attribs.PRICING_ATTRIBUTE18;
5098                 l_pavv_tbl_in(1).pricing_attribute19    :=   p_price_attribs.PRICING_ATTRIBUTE19;
5099                 l_pavv_tbl_in(1).pricing_attribute20    :=   p_price_attribs.PRICING_ATTRIBUTE20;
5100                 l_pavv_tbl_in(1).pricing_attribute21    :=   p_price_attribs.PRICING_ATTRIBUTE21;
5101                 l_pavv_tbl_in(1).pricing_attribute22    :=   p_price_attribs.PRICING_ATTRIBUTE22;
5102                 l_pavv_tbl_in(1).pricing_attribute23    :=   p_price_attribs.PRICING_ATTRIBUTE23;
5103                 l_pavv_tbl_in(1).pricing_attribute24    :=   p_price_attribs.PRICING_ATTRIBUTE24;
5104                 l_pavv_tbl_in(1).pricing_attribute25    :=   p_price_attribs.PRICING_ATTRIBUTE25;
5105                 l_pavv_tbl_in(1).pricing_attribute26    :=   p_price_attribs.PRICING_ATTRIBUTE26;
5106                 l_pavv_tbl_in(1).pricing_attribute27    :=   p_price_attribs.PRICING_ATTRIBUTE27;
5107                 l_pavv_tbl_in(1).pricing_attribute28    :=   p_price_attribs.PRICING_ATTRIBUTE28;
5108                 l_pavv_tbl_in(1).pricing_attribute29    :=   p_price_attribs.PRICING_ATTRIBUTE29;
5109                 l_pavv_tbl_in(1).pricing_attribute30    :=   p_price_attribs.PRICING_ATTRIBUTE30;
5110                 l_pavv_tbl_in(1).pricing_attribute31    :=   p_price_attribs.PRICING_ATTRIBUTE31;
5111                 l_pavv_tbl_in(1).pricing_attribute32    :=   p_price_attribs.PRICING_ATTRIBUTE32;
5112                 l_pavv_tbl_in(1).pricing_attribute33    :=   p_price_attribs.PRICING_ATTRIBUTE33;
5113                 l_pavv_tbl_in(1).pricing_attribute34    :=   p_price_attribs.PRICING_ATTRIBUTE34;
5114                 l_pavv_tbl_in(1).pricing_attribute35    :=   p_price_attribs.PRICING_ATTRIBUTE35;
5115                 l_pavv_tbl_in(1).pricing_attribute36    :=   p_price_attribs.PRICING_ATTRIBUTE36;
5116                 l_pavv_tbl_in(1).pricing_attribute37    :=   p_price_attribs.PRICING_ATTRIBUTE37;
5117                 l_pavv_tbl_in(1).pricing_attribute38    :=   p_price_attribs.PRICING_ATTRIBUTE38;
5118                 l_pavv_tbl_in(1).pricing_attribute39    :=   p_price_attribs.PRICING_ATTRIBUTE39;
5119                 l_pavv_tbl_in(1).pricing_attribute40    :=   p_price_attribs.PRICING_ATTRIBUTE40;
5120                 l_pavv_tbl_in(1).pricing_attribute41    :=   p_price_attribs.PRICING_ATTRIBUTE41;
5121                 l_pavv_tbl_in(1).pricing_attribute42    :=   p_price_attribs.PRICING_ATTRIBUTE42;
5122                 l_pavv_tbl_in(1).pricing_attribute43    :=   p_price_attribs.PRICING_ATTRIBUTE43;
5123                 l_pavv_tbl_in(1).pricing_attribute44    :=   p_price_attribs.PRICING_ATTRIBUTE44;
5124                 l_pavv_tbl_in(1).pricing_attribute45    :=   p_price_attribs.PRICING_ATTRIBUTE45;
5125                 l_pavv_tbl_in(1).pricing_attribute46    :=   p_price_attribs.PRICING_ATTRIBUTE46;
5126                 l_pavv_tbl_in(1).pricing_attribute47    :=   p_price_attribs.PRICING_ATTRIBUTE47;
5127                 l_pavv_tbl_in(1).pricing_attribute48    :=   p_price_attribs.PRICING_ATTRIBUTE48;
5128                 l_pavv_tbl_in(1).pricing_attribute49    :=   p_price_attribs.PRICING_ATTRIBUTE49;
5129                 l_pavv_tbl_in(1).pricing_attribute50    :=   p_price_attribs.PRICING_ATTRIBUTE50;
5130                 l_pavv_tbl_in(1).pricing_attribute51    :=   p_price_attribs.PRICING_ATTRIBUTE51;
5131                 l_pavv_tbl_in(1).pricing_attribute52    :=   p_price_attribs.PRICING_ATTRIBUTE52;
5132                 l_pavv_tbl_in(1).pricing_attribute53    :=   p_price_attribs.PRICING_ATTRIBUTE53;
5133                 l_pavv_tbl_in(1).pricing_attribute54    :=   p_price_attribs.PRICING_ATTRIBUTE54;
5134                 l_pavv_tbl_in(1).pricing_attribute55    :=   p_price_attribs.PRICING_ATTRIBUTE55;
5135                 l_pavv_tbl_in(1).pricing_attribute56    :=   p_price_attribs.PRICING_ATTRIBUTE56;
5136                 l_pavv_tbl_in(1).pricing_attribute57    :=   p_price_attribs.PRICING_ATTRIBUTE57;
5137                 l_pavv_tbl_in(1).pricing_attribute58    :=   p_price_attribs.PRICING_ATTRIBUTE58;
5138                 l_pavv_tbl_in(1).pricing_attribute59    :=   p_price_attribs.PRICING_ATTRIBUTE59;
5139                 l_pavv_tbl_in(1).pricing_attribute60    :=   p_price_attribs.PRICING_ATTRIBUTE60;
5140                 l_pavv_tbl_in(1).pricing_attribute61    :=   p_price_attribs.PRICING_ATTRIBUTE61;
5141                 l_pavv_tbl_in(1).pricing_attribute62    :=   p_price_attribs.PRICING_ATTRIBUTE62;
5142                 l_pavv_tbl_in(1).pricing_attribute63    :=   p_price_attribs.PRICING_ATTRIBUTE63;
5143                 l_pavv_tbl_in(1).pricing_attribute64    :=   p_price_attribs.PRICING_ATTRIBUTE64;
5144                 l_pavv_tbl_in(1).pricing_attribute65    :=   p_price_attribs.PRICING_ATTRIBUTE65;
5145                 l_pavv_tbl_in(1).pricing_attribute66    :=   p_price_attribs.PRICING_ATTRIBUTE66;
5146                 l_pavv_tbl_in(1).pricing_attribute67    :=   p_price_attribs.PRICING_ATTRIBUTE67;
5147                 l_pavv_tbl_in(1).pricing_attribute68    :=   p_price_attribs.PRICING_ATTRIBUTE68;
5148                 l_pavv_tbl_in(1).pricing_attribute69    :=   p_price_attribs.PRICING_ATTRIBUTE69;
5149                 l_pavv_tbl_in(1).pricing_attribute70    :=   p_price_attribs.PRICING_ATTRIBUTE70;
5150                 l_pavv_tbl_in(1).pricing_attribute71    :=   p_price_attribs.PRICING_ATTRIBUTE71;
5151                 l_pavv_tbl_in(1).pricing_attribute72    :=   p_price_attribs.PRICING_ATTRIBUTE72;
5152                 l_pavv_tbl_in(1).pricing_attribute73    :=   p_price_attribs.PRICING_ATTRIBUTE73;
5153                 l_pavv_tbl_in(1).pricing_attribute74    :=   p_price_attribs.PRICING_ATTRIBUTE74;
5154                 l_pavv_tbl_in(1).pricing_attribute75    :=   p_price_attribs.PRICING_ATTRIBUTE75;
5155                 l_pavv_tbl_in(1).pricing_attribute76    :=   p_price_attribs.PRICING_ATTRIBUTE76;
5156                 l_pavv_tbl_in(1).pricing_attribute77    :=   p_price_attribs.PRICING_ATTRIBUTE77;
5157                 l_pavv_tbl_in(1).pricing_attribute78    :=   p_price_attribs.PRICING_ATTRIBUTE78;
5158                 l_pavv_tbl_in(1).pricing_attribute79    :=   p_price_attribs.PRICING_ATTRIBUTE79;
5159                 l_pavv_tbl_in(1).pricing_attribute80    :=   p_price_attribs.PRICING_ATTRIBUTE80;
5160                 l_pavv_tbl_in(1).pricing_attribute81    :=   p_price_attribs.PRICING_ATTRIBUTE81;
5161                 l_pavv_tbl_in(1).pricing_attribute82    :=   p_price_attribs.PRICING_ATTRIBUTE82;
5162                 l_pavv_tbl_in(1).pricing_attribute83    :=   p_price_attribs.PRICING_ATTRIBUTE83;
5163                 l_pavv_tbl_in(1).pricing_attribute84    :=   p_price_attribs.PRICING_ATTRIBUTE84;
5164                 l_pavv_tbl_in(1).pricing_attribute85    :=   p_price_attribs.PRICING_ATTRIBUTE85;
5165                 l_pavv_tbl_in(1).pricing_attribute86    :=   p_price_attribs.PRICING_ATTRIBUTE86;
5166                 l_pavv_tbl_in(1).pricing_attribute87    :=   p_price_attribs.PRICING_ATTRIBUTE87;
5167                 l_pavv_tbl_in(1).pricing_attribute88    :=   p_price_attribs.PRICING_ATTRIBUTE88;
5168                 l_pavv_tbl_in(1).pricing_attribute89    :=   p_price_attribs.PRICING_ATTRIBUTE89;
5169                 l_pavv_tbl_in(1).pricing_attribute90    :=   p_price_attribs.PRICING_ATTRIBUTE90;
5170                 l_pavv_tbl_in(1).pricing_attribute91    :=   p_price_attribs.PRICING_ATTRIBUTE91;
5171                 l_pavv_tbl_in(1).pricing_attribute92    :=   p_price_attribs.PRICING_ATTRIBUTE92;
5172                 l_pavv_tbl_in(1).pricing_attribute93    :=   p_price_attribs.PRICING_ATTRIBUTE93;
5173                 l_pavv_tbl_in(1).pricing_attribute94    :=   p_price_attribs.PRICING_ATTRIBUTE94;
5174                 l_pavv_tbl_in(1).pricing_attribute95    :=   p_price_attribs.PRICING_ATTRIBUTE95;
5175                 l_pavv_tbl_in(1).pricing_attribute96    :=   p_price_attribs.PRICING_ATTRIBUTE96;
5176                 l_pavv_tbl_in(1).pricing_attribute97    :=   p_price_attribs.PRICING_ATTRIBUTE97;
5177                 l_pavv_tbl_in(1).pricing_attribute98    :=   p_price_attribs.PRICING_ATTRIBUTE98;
5178                 l_pavv_tbl_in(1).pricing_attribute99    :=   p_price_attribs.PRICING_ATTRIBUTE99;
5179                 l_pavv_tbl_in(1).pricing_attribute100   :=   p_price_attribs.PRICING_ATTRIBUTE100;
5180 
5181                 okc_price_adjustment_pvt.create_price_att_value
5182                 (
5183                    p_api_version        => l_api_version,
5184                    p_init_msg_list      => l_init_msg_list,
5185                    x_return_status      => l_return_status,
5186                    x_msg_count          => x_msg_count,
5187                    x_msg_data           => x_msg_data,
5188                    p_pavv_tbl           => l_pavv_tbl_in,
5189                    x_pavv_tbl           => l_pavv_tbl_out
5190                 );
5191 
5192                 OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: create_price_att_value status :'|| l_return_status );
5193                 --dbms_output.put_line('K COVD LINE CREATION :- PRICE ATTRIB STATUS ' || l_return_status);
5194 
5195                 x_return_status := l_return_status;
5196 
5197                 If l_return_status = OKC_API.G_RET_STS_SUCCESS then
5198                     l_priceattrib_id := l_pavv_tbl_out(1).id;
5199                 Else
5200                     OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'PRICE ATTRIBUTES (SUB LINE)');
5201                     Raise G_EXCEPTION_HALT_VALIDATION;
5202                 End if;
5203           End If;
5204           x_cp_line_id := l_line_id;
5205 
5206 Exception
5207     When  G_EXCEPTION_HALT_VALIDATION Then
5208 
5209         x_return_status := l_return_status;
5210         Null;
5211     When  Others Then
5212 
5213           x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5214           OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
5215           OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Covered_Line :: Error :'|| SQLCODE||':'|| SQLERRM);
5216 
5217 
5218 End Create_Covered_Line;
5219 
5220 
5221 
5222 ----------------------------------------------------------------------------------------
5223 -- Procedure for creating instance of subscription item
5224 ----------------------------------------------------------------------------------------
5225 
5226 PROCEDURE create_item
5227  (
5228      p_instance_rec_out      IN OUT NOCOPY csi_datastructures_pub.instance_rec
5229     ,p_ext_attrib_values_tbl IN OUT NOCOPY csi_datastructures_pub.extend_attrib_values_tbl
5230     ,p_party_tbl             IN OUT NOCOPY csi_datastructures_pub.party_tbl
5231     ,p_account_tbl           IN OUT NOCOPY csi_datastructures_pub.party_account_tbl
5232     ,p_pricing_attrib_tbl    IN OUT NOCOPY csi_datastructures_pub.pricing_attribs_tbl
5233     ,p_org_assignments_tbl   IN OUT NOCOPY csi_datastructures_pub.organization_units_tbl
5234     ,p_asset_assignment_tbl  IN OUT NOCOPY csi_datastructures_pub.instance_asset_tbl
5235     ,p_txn_rec               IN OUT NOCOPY csi_datastructures_pub.transaction_rec
5236     ,x_return_status            OUT NOCOPY    VARCHAR2
5237     ,x_msg_count                OUT NOCOPY    NUMBER
5238     ,x_msg_data                 OUT NOCOPY    VARCHAR2
5239  )
5240 IS
5241 
5242     l_api_name                      CONSTANT VARCHAR2(30)   := 'CREATE_ITEM';
5243     l_api_version                   CONSTANT NUMBER         := 1.0;
5244     l_debug_level                   VARCHAR2(1);
5245     l_flag                          VARCHAR2(1)             := 'N';
5246     l_msg_data                      VARCHAR2(2000);
5247     l_msg_index                     NUMBER;
5248     l_msg_count                     NUMBER;
5249     l_instance_rec_out              CSI_DATASTRUCTURES_PUB.INSTANCE_REC;
5250     l_ext_attrib_values_tbl         CSI_DATASTRUCTURES_PUB.EXTEND_ATTRIB_VALUES_TBL;
5251     l_party_tbl                     CSI_DATASTRUCTURES_PUB.PARTY_TBL;
5252     l_account_tbl                   CSI_DATASTRUCTURES_PUB.PARTY_ACCOUNT_TBL;
5253     l_pricing_attrib_tbl            CSI_DATASTRUCTURES_PUB.PRICING_ATTRIBS_TBL;
5254     l_org_assignments_tbl           CSI_DATASTRUCTURES_PUB.ORGANIZATION_UNITS_TBL;
5255     l_asset_assignment_tbl          CSI_DATASTRUCTURES_PUB.INSTANCE_ASSET_TBL;
5256     l_txn_rec                       CSI_DATASTRUCTURES_PUB.TRANSACTION_REC;
5257     l_return_status                 VARCHAR2(2000);
5258     l_msg_index_out                 NUMBER;
5259     t_output                        VARCHAR2(2000);
5260     t_msg_dummy                     NUMBER;
5261 
5262 
5263 BEGIN
5264 
5265 -- calling Ib API to craete item instance
5266    csi_item_instance_pub.create_item_instance
5267    (
5268       p_api_version              => 1.0
5269      ,p_commit                   => 'F'
5270      ,p_init_msg_list            => 'F'
5271      ,p_validation_level         => 1
5272      ,p_instance_rec             => p_instance_rec_out
5273      ,p_ext_attrib_values_tbl    => p_ext_attrib_values_tbl
5274      ,p_party_tbl                => p_party_tbl
5275      ,p_account_tbl              => p_account_tbl
5276      ,p_pricing_attrib_tbl       => p_pricing_attrib_tbl
5277      ,p_org_assignments_tbl      => p_org_assignments_tbl
5278      ,p_asset_assignment_tbl     => p_asset_assignment_tbl
5279      ,p_txn_rec                  => p_txn_rec
5280      ,x_return_status            => l_return_status
5281      ,x_msg_count                => x_msg_count
5282      ,x_msg_data                 => x_msg_data
5283    );
5284 
5285     OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Item :: create_item_instance status :'|| l_return_status );
5286     --dbms_output.put_line('create item instance status:-  ' || l_return_status);
5287 
5288     IF Not l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
5289          RAISE G_EXCEPTION_HALT_VALIDATION;
5290     END IF;
5291 
5292     x_return_status := l_return_status;
5293 Exception
5294     When  G_EXCEPTION_HALT_VALIDATION Then
5295         x_return_status := l_return_status;
5296         Null;
5297     When  Others Then
5298         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5299         OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
5300         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Item :: Error :'|| SQLCODE||':'||SQLERRM );
5301 End create_item;
5302 
5303 
5304 
5305 ---------------------------------------------------------------------------------------
5306 -- Procedure for Creating contract for subscription item
5307 ---------------------------------------------------------------------------------------
5308 
5309 PROCEDURE Create_Subscription
5310 (                              p_K_header_rec                   IN  OKS_CONTRACTS_PUB.header_rec_type
5311                          ,     p_K_Support_rec                  IN  OKS_CONTRACTS_PUB.line_rec_type
5312                          ,     p_Support_contacts_tbl_in        IN  OKS_CONTRACTS_PUB.contact_tbl
5313                          ,     p_Support_sales_crd_tbl_in       IN  OKS_CONTRACTS_PUB.SalesCredit_tbl
5314                          ,     p_k_line_rec                     IN  OKS_CONTRACTS_PUB.line_rec_type
5315                          ,     p_line_contacts_tbl_in           IN  OKS_CONTRACTS_PUB.contact_tbl
5316                          ,     p_line_sales_crd_tbl_in          IN  OKS_CONTRACTS_PUB.SalesCredit_tbl
5317                          ,     p_price_attribs_in               IN  OKS_CONTRACTS_PUB.pricing_attributes_type
5318                          ,     p_contract_header_id             IN  NUMBER
5319                          ,     bill_type                        IN  varchar2
5320                          ,     p_strm_level_tbl                 IN  OKS_BILL_SCH.StreamLvl_tbl
5321                          ,     x_return_status                  OUT NOCOPY VARCHAR2
5322                          ,     x_msg_count                      OUT NOCOPY NUMBER
5323                          ,     x_msg_data                       OUT NOCOPY varchar2
5324 ) IS
5325 
5326 -- Cursor for getting name and description of the product/item
5327 Cursor l_line_Csr(p_inventory_id Number,p_organization_id Number) Is
5328                   Select  MTL.Name
5329                          ,MTL.Description
5330                          ,MTL.Primary_UOM_Code
5331                          ,MTL.Service_starting_delay
5332                   From    OKX_SYSTEM_ITEMS_V MTL
5333                   Where   MTL.id1   = p_Inventory_id
5334                   And     MTL.Organization_id = okc_context.get_okc_organization_id;
5335 
5336 l_line_dtl_rec     l_line_csr%rowtype;
5337 
5338 --  cursor for getting rule informations
5339 Cursor l_rule_dtl_csr Is
5340        Select  ks.averaging_interval
5341              , ks.uom_quantified
5342              --, ks.rule_information3
5343              , ks.minimum_quantity
5344              , ks.default_quantity
5345              , ks.amcv_flag
5346              , ks.fixed_quantity
5347              , ks.level_yn
5348              , ks.usage_type
5349              --, ks.rule_information10
5350              , ks.base_reading
5351         From oks_k_lines_b ks,
5352              okc_k_lines_v kc
5353         Where ks.cle_id = kc.id
5354         And   kc.lse_id = 12;
5355 
5356   l_rule_dtl_rec     l_rule_dtl_csr%rowtype;
5357 
5358   Cursor l_subscr_scr (p_line_id number, p_hdr_id number) is
5359   Select instance_id from oks_subscr_header_b
5360   Where  cle_id = p_line_id
5361   And    dnz_chr_id = p_hdr_id;
5362 
5363  -- local variables
5364   i                        NUMBER;
5365   l_contract_header_id     NUMBER;
5366   l_sb_service_line_id     NUMBER;                                          -- Service line id for Subscription line
5367   l_su_service_line_id     NUMBER;                                          -- Service line id for Support line
5368   l_u_service_line_id      NUMBER;                                          -- Service line id for Usage line
5369   l_cp_line_id             NUMBER;
5370   l_time_val               NUMBER;
5371   cp_id                    NUMBER;
5372   l_return_status          VARCHAR2(2000) := OKC_API.G_RET_STS_SUCCESS;
5373   l_K_line_rec             OKS_CONTRACTS_PUB.line_Rec_Type;                 -- subscription line record
5374   l_counter_tbl            OKS_CONTRACTS_PUB.counter_tbl;                   -- counter table
5375   l_K_support_rec          OKS_CONTRACTS_PUB.line_Rec_Type;                 -- Support line record
5376   l_K_usage_rec            OKS_CONTRACTS_PUB.line_Rec_Type;                 -- Usage line record
5377   l_K_covd_rec             OKS_CONTRACTS_PUB.Covered_level_Rec_Type;        -- Covered level record for support line
5378   l_K_counter_rec          OKS_CONTRACTS_PUB.Covered_level_Rec_Type;        -- covered level record for usage line
5379   l_k_hdr_rec              OKS_CONTRACTS_PUB.header_rec_type;               -- Header record
5380   p_instance_rec           CSI_DATASTRUCTURES_PUB.INSTANCE_REC;             -- Item Instance record
5381   p_ext_attrib_values_tbl  CSI_DATASTRUCTURES_PUB.EXTEND_ATTRIB_VALUES_TBL; -- Attributes value table
5382   p_party_tbl              CSI_DATASTRUCTURES_PUB.PARTY_TBL;
5383   p_account_tbl            CSI_DATASTRUCTURES_PUB.PARTY_ACCOUNT_TBL;
5384   p_pricing_attrib_tbl     CSI_DATASTRUCTURES_PUB.PRICING_ATTRIBS_TBL;
5385   p_org_assignments_tbl    CSI_DATASTRUCTURES_PUB.ORGANIZATION_UNITS_TBL;
5386   p_asset_assignment_tbl   CSI_DATASTRUCTURES_PUB.INSTANCE_ASSET_TBL;
5387   p_txn_rec                CSI_DATASTRUCTURES_PUB.TRANSACTION_REC;
5388   l_bil_sch_out_tbl        OKS_BILL_SCH.ItemBillSch_tbl;
5389   --l_slh_rec                OKS_BILL_SCH.StreamHdr_type;
5390   l_msg_index              Number;
5391   l_inst_id                Number;
5392 
5393 
5394 BEGIN
5395 
5396       DBMS_TRANSACTION.SAVEPOINT('BEFORE_TRANSACTIONS');
5397 
5398       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  SRV Id for Subscription line        :'|| p_k_line_rec.srv_id );
5399       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  SRV Id for Support Line             :'|| p_K_support_rec.srv_id );
5400       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Negotiated amount for SB line       :'|| p_k_line_rec.negotiated_amount );
5401       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Negotiated amount for SU line       :'|| p_K_support_rec.negotiated_amount );
5402       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Negotiated amount for Covered line  :'|| p_K_support_rec.negotiated_amount );
5403 
5404       l_contract_header_id := p_contract_header_id;
5405 
5406       -- calling create item procedure to create CP
5407       p_instance_rec.location_type_code               := p_k_line_rec.location_type_code;
5408       p_instance_rec.location_Id                      := p_k_line_rec.location_Id;
5409       p_instance_rec.Inv_organization_Id              := p_k_line_rec.Inv_organization_Id;
5410       p_instance_rec.Inv_subinventory_name            := p_k_line_rec.Inv_subinventory_name;
5411       p_instance_rec.Inv_locator_Id                   := p_k_line_rec.Inv_locator_Id;
5412       p_instance_rec.Pa_project_Id                    := p_k_line_rec.Pa_project_Id;
5413       p_instance_rec.Pa_project_task_Id               := p_k_line_rec.Pa_project_task_Id;
5414       p_instance_rec.In_transit_order_line_Id         := p_k_line_rec.In_transit_order_line_Id;
5415       p_instance_rec.wip_job_Id                       := p_k_line_rec.wip_job_Id;
5416       p_instance_rec.po_order_line_Id                 := p_k_line_rec.po_order_line_Id;
5417       p_instance_rec.inventory_item_id                := p_k_line_rec.srv_id ; -- inventory item id
5418       p_instance_rec.vld_organization_id              := okc_context.get_okc_organization_id;
5419       p_instance_rec.inventory_revision               := 'A';
5420       p_instance_rec.inv_master_organization_id       := okc_context.get_okc_organization_id;
5421       p_instance_rec.quantity                         := 1;
5422       p_instance_rec.unit_of_measure                  := 'Ea';
5423       p_instance_rec.instance_condition_id            := 1; --NULL;
5424       p_instance_rec.active_start_date                := FND_API.G_MISS_DATE;
5425       p_instance_rec.active_end_date                  := FND_API.G_MISS_DATE;  --TO_DATE('Null');
5426       p_instance_rec.in_transit_order_line_id         := okc_api.g_miss_num;
5427       p_party_tbl(1).party_source_table               := 'HZ_PARTIES';
5428       p_party_tbl(1).party_id                         := p_k_header_rec.party_id;--1000; --NULL;
5429       p_party_tbl(1).relationship_type_code           := 'OWNER';
5430       p_party_tbl(1).contact_flag                     := 'N';
5431       p_account_tbl(1).ip_account_id                  := NULL;
5432       p_account_tbl(1).parent_tbl_index               := 1; --NULL;
5433       p_account_tbl(1).instance_party_id              := NULL;
5434       p_account_tbl(1).party_account_id               := p_k_line_rec.cust_account;--1000; --NULL;
5435       p_account_tbl(1).relationship_type_code         := 'OWNER';
5436       p_org_assignments_tbl(1).operating_unit_id      := p_k_line_rec.org_id; --NULL;
5437       p_org_assignments_tbl(1).relationship_type_code := 'SOLD_FROM';
5438       p_txn_rec.transaction_type_id                   := 1; --NULL;
5439       p_txn_rec.source_transaction_date               := SYSDATE;
5440       p_txn_rec.transaction_date                      := SYSDATE;
5441 
5442 
5443       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: ord Id for Item          :'|| p_instance_rec.vld_organization_id );
5444       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Uom for Item             :'|| p_instance_rec.unit_of_measure );
5445       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Active Satrt date of Item:'|| p_instance_rec.active_start_date );
5446       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Active End Date of Item  :'|| p_instance_rec.active_end_date  );
5447       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Party account Id of Item :'|| p_account_tbl(1).party_account_id );
5448       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Inventory Item Id        :'|| p_instance_rec.inventory_item_id );
5449       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Po order line Id  of Item:'|| p_instance_rec.po_order_line_Id );
5450       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Location Id of Item      :'|| p_instance_rec.location_Id );
5451 
5452 /*
5453       Create_item
5454      (
5455          p_instance_rec_out      => p_instance_rec
5456         ,p_ext_attrib_values_tbl => p_ext_attrib_values_tbl
5457         ,p_party_tbl             => p_party_tbl
5458         ,p_account_tbl           => p_account_tbl
5459         ,p_pricing_attrib_tbl    => p_pricing_attrib_tbl
5460         ,p_org_assignments_tbl   => p_org_assignments_tbl
5461         ,p_asset_assignment_tbl  => p_asset_assignment_tbl
5462         ,p_txn_rec               => p_txn_rec
5463         ,x_return_status         => l_return_status
5464         ,x_msg_count             => x_msg_count
5465         ,x_msg_data              => x_msg_data
5466      );
5467 
5468      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: create_item status :'|| l_return_status );
5469      OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Item Id            :'||p_instance_rec.instance_id );
5470      --dbms_output.put_line('create item status:-  ' || l_return_status);
5471      --dbms_output.put_line('create item status :: item id:-  ' || p_instance_rec.instance_id);
5472 
5473      IF  Not l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
5474         DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5475         RAISE G_EXCEPTION_HALT_VALIDATION;
5476      END IF;
5477 */
5478 
5479      -- create service line for subscription line but it will not have a covered level
5480 
5481      l_K_line_rec          := p_K_line_rec;
5482      l_K_line_rec.k_hdr_id := l_contract_header_id;
5483      l_k_line_rec.srv_id   := p_k_line_rec.srv_id ;  --p_instance_rec.instance_id;
5484 
5485      --dbms_output.put_line('l_k_line_rec.srv_id '||   p_k_line_rec.srv_id);
5486 
5487      Create_Service_Line
5488      (
5489        p_k_line_rec         => l_K_line_rec
5490       ,p_Contact_tbl        => p_line_contacts_tbl_in
5491       ,p_line_sales_crd_tbl => p_line_sales_crd_tbl_in
5492       ,x_service_line_id    => l_sb_service_line_id
5493       ,x_return_status      => l_return_status
5494       ,x_msg_count          => x_msg_count
5495       ,x_msg_data           => x_msg_data
5496       );
5497 
5498       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Create SB Service Line status :'|| l_return_status );
5499       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Service line Id for SB Line   :'|| l_sb_service_line_id );
5500       --dbms_output.put_line('K SUBSCRIPTION LINE CREATION STATUS:-  ' || l_return_status);
5501 
5502       IF Not l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
5503              DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5504              RAISE G_EXCEPTION_HALT_VALIDATION;
5505       END IF;
5506 
5507       -- Create default schedule
5508 
5509       oks_subscription_pvt.create_default_schedule
5510       (
5511                  p_api_version   => 1.0,
5512                  p_init_msg_list => 'T' ,
5513                  x_return_status => l_return_status,
5514                  x_msg_count      => x_msg_count,
5515                  x_msg_data       => x_msg_data,
5516                  p_cle_id        => l_sb_service_line_id,
5517                  p_intent        => Null);
5518 
5519       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Create default sch status :'|| l_return_status );
5520       --dbms_output.put_line('K SUBSCRIPTION LINE CREATION STATUS:-  ' || l_return_status);
5521 
5522       IF Not l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
5523              DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5524              RAISE G_EXCEPTION_HALT_VALIDATION;
5525       END IF;
5526 
5527       OPEN l_subscr_scr(l_sb_service_line_id,l_contract_header_id);
5528       FETCH l_subscr_scr into l_inst_id;
5529       close l_subscr_scr;
5530 
5531       -- create a service line for support serive line and covered level for that
5532 
5533       l_K_support_rec          := p_K_Support_rec ;
5534       l_K_support_rec.k_hdr_id := l_contract_header_id;
5535 
5536       --dbms_output.put_line(' support line id '|| l_K_support_rec.srv_id);
5537 
5538       Create_Service_Line
5539       (
5540           p_k_line_rec         => l_K_support_rec
5541          ,p_Contact_tbl        => p_support_contacts_tbl_in
5542          ,p_line_sales_crd_tbl => p_support_sales_crd_tbl_in
5543          ,x_service_line_id    => l_su_service_line_id
5544          ,x_return_status      => l_return_status
5545          ,x_msg_count          => x_msg_count
5546          ,x_msg_data           => x_msg_data
5547       );
5548 
5549       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Create SU Service Line status :'|| l_return_status);
5550       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Service line Id for Su Line   :'|| l_su_service_line_id);
5551       --dbms_output.put_line('K CONTRACT SUPPORT SERVICE LINE CREATION STATUS:-  ' || l_return_status);
5552 
5553       IF Not l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
5554           DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5555           RAISE G_EXCEPTION_HALT_VALIDATION;
5556       END IF;
5557 
5558       -- Get the name description details of the product
5559 
5560       Open l_line_Csr(p_instance_rec.Inventory_Item_Id ,l_k_support_rec.org_id );
5561       Fetch l_line_Csr into l_line_dtl_rec;
5562 
5563       If l_line_Csr%notfound Then
5564              Close l_line_Csr ;
5565              l_return_status := OKC_API.G_RET_STS_ERROR;
5566              OKC_API.set_message(G_APP_NAME,'OKS_CUST_PROD_DTLS_NOT_FOUND','CUSTOMER_PRODUCT',p_instance_rec.instance_id);
5567 --             message 'OKS_CUSTPROD' to be changed
5568              Raise G_EXCEPTION_HALT_VALIDATION;
5569       End if;
5570 
5571       Close l_line_Csr;
5572 
5573       -- creating covered level for support service line
5574       l_K_covd_rec.k_id                 := l_contract_header_id;
5575       l_K_covd_rec.Attach_2_Line_id     := l_su_service_line_id;
5576       l_K_covd_rec.line_number          := 1;
5577       l_K_covd_rec.product_sts_code     := p_k_support_rec.line_sts_code;
5578       l_K_covd_rec.Customer_Product_Id  := l_inst_id ;           --p_instance_rec.instance_id ;
5579       l_K_covd_rec.Product_Desc         := l_line_dtl_rec.description;
5580       l_K_covd_rec.Product_Start_Date   := p_k_header_rec.start_date;
5581       l_K_covd_rec.Product_End_Date     := p_k_header_rec.end_date;
5582       l_K_covd_rec.Quantity             := p_instance_rec.Quantity;
5583       l_K_covd_rec.uom_code             := l_line_dtl_rec.primary_uom_code;-- p_instance_rec.unit_of_measure;
5584       l_K_covd_rec.list_price           := l_k_support_rec.list_price ;
5585       l_K_covd_rec.negotiated_amount    := l_k_support_rec.negotiated_amount;
5586       l_K_covd_rec.currency_code        := l_k_support_rec.currency;
5587       l_K_covd_rec.reason_code          := l_k_support_rec.reason_code;
5588       l_K_covd_rec.reason_comments      := l_k_support_rec.reason_comments;
5589       l_K_covd_rec.line_renewal_type    := p_k_line_rec.line_renewal_type;
5590 
5591       Create_Covered_Line
5592       (
5593             p_k_covd_rec             => l_K_covd_rec
5594             ,p_PRICE_ATTRIBS         => p_price_attribs_in
5595             ,x_cp_line_id            => l_cp_line_id
5596             ,x_return_status         => l_return_status
5597             ,x_msg_count             => x_msg_count
5598             ,x_msg_data              => x_msg_data
5599       );
5600 
5601       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Create_Covered_Line for SU line status :'|| l_return_status );
5602       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Covered line id for support line       :'|| l_cp_line_id );
5603       --dbms_output.put_line('K COVERED PRODUCT CREATION FOR SUPPORT SERVICE LINE STATUS:-  ' || l_return_status);
5604 
5605       IF Not l_return_status = OKC_API.G_RET_STS_SUCCESS THEN
5606            DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5607            RAISE G_EXCEPTION_HALT_VALIDATION;
5608       END IF;
5609 
5610      /* -- if CP has a counter then create a covered usage line  - for counter
5611       cp_id := p_instance_rec.instance_id;
5612       --dbms_output.put_line('Customer product Id '|| cp_id );
5613 
5614       -- Check if any usage is associated with the product
5615       Check_for_usage
5616       (
5617                 p_CP_id         =>cp_id
5618             ,   x_counter_tbl   => l_counter_tbl
5619             ,   x_return_status => x_return_status
5620             ,   x_msg_data      => x_msg_data
5621             ,   x_msg_count     => x_msg_count
5622        );
5623 
5624        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Check_for_usage status :'|| x_return_status);
5625        OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Number of Usage Lines  :'|| l_counter_tbl.count );
5626        --dbms_output.put_line('CHECK FOR USAGE LINE STATUS:-  ' || x_return_status||' ctr tbl'||l_counter_tbl.count);
5627 
5628        IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5629             RAISE G_EXCEPTION_HALT_VALIDATION;
5630        END IF;
5631 
5632        -- opening rule detail cursor :
5633        -- rule_information1  :: Average_bill_flag
5634        -- rule_information2  :: Period
5635        -- rule_information3  :: Settlement_flag
5636        -- rule_information4  :: Minimum
5637        -- rule_information5  :: Default
5638        -- rule_information6  :: Amcv
5639        -- rule_information7  :: Fixed
5640        -- rule_information8
5641        -- rule_information9  :: Level
5642        -- rule_information10 :: Usage_type
5643        -- rule_information11
5644        -- rule_information12 :: Base
5645 
5646 
5647        Open l_rule_dtl_Csr;
5648        Fetch l_rule_dtl_Csr into l_rule_dtl_rec;
5649        If l_rule_dtl_Csr%notfound Then
5650              Close l_rule_dtl_Csr ;
5651              x_return_status := OKC_API.G_RET_STS_ERROR;
5652              OKC_API.set_message(G_APP_NAME,'OKS_CUST_PROD_DTLS_NOT_FOUND','CUSTOMER_PRODUCT',p_instance_rec.instance_id);
5653              Raise G_EXCEPTION_HALT_VALIDATION;
5654        End if;
5655        Close l_rule_dtl_Csr;
5656 
5657        -- create service line and covered lines for usage and counters associated with the product.
5658        If l_counter_tbl.count > 0 Then
5659              i := l_Counter_Tbl.First;
5660 
5661              LOOP
5662              if (l_counter_tbl(i).usage_item_id <> Null) then
5663                   l_K_usage_rec                     :=   p_K_Support_rec ;
5664                   l_K_usage_rec.k_hdr_id            :=   l_contract_header_id;
5665                   l_k_usage_rec.customer_product_id :=   l_counter_tbl(i).usage_item_id;
5666                   l_k_usage_rec.usage_type          :=   l_rule_dtl_rec.rule_information10;
5667                   l_k_usage_rec.usage_period        :=   l_rule_dtl_rec.rule_information2;
5668                   l_k_usage_rec.line_type           :=   'U';
5669 
5670                   Create_Service_Line
5671                   (
5672                          p_k_line_rec         => l_K_usage_rec
5673                         ,p_Contact_tbl        => p_support_contacts_tbl_in
5674                         ,p_line_sales_crd_tbl => p_support_sales_crd_tbl_in
5675                         ,x_service_line_id    => l_u_service_line_id
5676                         ,x_return_status      => x_return_status
5677                         ,x_msg_count          => x_msg_count
5678                         ,x_msg_data           => x_msg_data
5679                    );
5680                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Create_Service_Line status     :'|| x_return_status );
5681                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Service Line Id sor usage line :'|| l_u_service_line_id );
5682 
5683                   --dbms_output.put_line('K CONTRACT USAGE LINE CREATION STATUS:-  ' || x_return_status);
5684 
5685                   IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5686                         RAISE G_EXCEPTION_HALT_VALIDATION;
5687                   END IF;
5688 
5689                   -- opening line cursor
5690                   Open l_line_Csr(l_counter_tbl(i).usage_item_id,l_k_usage_rec.org_id ); --to pass invetory item id
5691                   Fetch l_line_Csr into l_line_dtl_rec;
5692                   If l_line_Csr%notfound Then
5693                         Close l_line_Csr ;
5694                         l_return_status := OKC_API.G_RET_STS_ERROR;
5695                         OKC_API.set_message(G_APP_NAME,'OKS_CUST_PROD_DTLS_NOT_FOUND','CUSTOMER_PRODUCT',p_instance_rec.instance_id);
5696                         Raise G_EXCEPTION_HALT_VALIDATION;
5697                   End if;
5698                   Close l_line_Csr;
5699 
5700 
5701                   l_K_counter_rec.k_id                 := l_contract_header_id;
5702                   l_K_counter_rec.Attach_2_Line_id     := l_u_service_line_id;
5703                   l_K_counter_rec.line_number          := 1;
5704                   l_K_counter_rec.product_sts_code     := 'OKX_COUNTER';
5705                   l_K_counter_rec.Customer_Product_Id  := l_counter_tbl(i).usage_item_id;
5706                   l_K_counter_rec.Product_Desc         := l_line_dtl_rec.description;
5707                   l_K_counter_rec.Product_Start_Date   := p_k_header_rec.start_date;
5708                   l_K_counter_rec.Product_End_Date     := p_k_header_rec.end_date;
5709                 --  l_K_counter_rec.Quantity             := p_instance_rec.Quantity;
5710                 --  l_K_counter_rec.uom_code             := l_line_dtl_rec.primary_uom_code;
5711                   l_K_counter_rec.list_price           := l_k_usage_rec.list_price;
5712                   l_K_counter_rec.negotiated_amount    := l_k_usage_rec.negotiated_amount;
5713                   l_K_counter_rec.currency_code        := l_k_usage_rec.currency;
5714                   l_K_counter_rec.reason_code          := l_k_usage_rec.reason_code;
5715                   l_K_counter_rec.reason_comments      := l_k_usage_rec.reason_comments;
5716                   l_K_counter_rec.line_renewal_type    := p_k_header_rec.renewal_type;
5717                   l_K_counter_rec.minimum_qty          := l_rule_dtl_rec.rule_information4;
5718                   l_K_counter_rec.default_qty          := l_rule_dtl_rec.rule_information5;
5719                   l_K_counter_rec.period               := l_rule_dtl_rec.rule_information2;
5720                   l_K_counter_rec.amcv_flag            := l_rule_dtl_rec.rule_information6;
5721                   l_K_counter_rec.fixed_qty            := l_rule_dtl_rec.rule_information7;
5722                   l_K_counter_rec.level_yn             := l_rule_dtl_rec.rule_information9;
5723                   l_K_counter_rec.base_reading         := l_rule_dtl_rec.rule_information12;
5724                   l_K_counter_rec.settlement_flag      := l_rule_dtl_rec.rule_information3;
5725                   l_K_counter_rec.average_bill_flag    := l_rule_dtl_rec.rule_information1;
5726                   l_K_counter_rec.invoice_print_flag   := '';
5727                   l_K_counter_rec.ATTRIBUTE1           := '';
5728                   l_K_counter_rec.ATTRIBUTE2           := '';
5729                   l_K_counter_rec.ATTRIBUTE3           := '';
5730                   l_K_counter_rec.ATTRIBUTE4           := '';
5731                   l_K_counter_rec.ATTRIBUTE5           := '';
5732                   l_K_counter_rec.ATTRIBUTE6           := '';
5733                   l_K_counter_rec.ATTRIBUTE7           := '';
5734                   l_K_counter_rec.ATTRIBUTE8           := '';
5735                   l_K_counter_rec.ATTRIBUTE9           := '';
5736                   l_K_counter_rec.ATTRIBUTE10          := '';
5737                   l_K_counter_rec.ATTRIBUTE11          := '';
5738                   l_K_counter_rec.ATTRIBUTE12          := '';
5739                   l_K_counter_rec.ATTRIBUTE13          := '';
5740                   l_K_counter_rec.ATTRIBUTE14          := '';
5741                   l_K_counter_rec.ATTRIBUTE15          := '';
5742 
5743                   Create_Covered_Line
5744                   (
5745                             p_k_covd_rec               => l_K_counter_rec
5746                             ,p_PRICE_ATTRIBS           => p_price_attribs_in
5747                             ,x_cp_line_id              => l_cp_line_id
5748                             ,x_return_status           => x_return_status
5749                             ,x_msg_count               => x_msg_count
5750                             ,x_msg_data                => x_msg_data
5751                    );
5752                  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Create_Covered_Line status     :'|| x_return_status );
5753                  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Line Id for usage covered line :'|| l_cp_line_id );
5754 
5755                  --dbms_output.put_line('K COVERED PRODUCT CREATION FOR USAGE LINE STATUS:-  ' || x_return_status);
5756 
5757                   IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5758                        RAISE G_EXCEPTION_HALT_VALIDATION;
5759                   END IF;
5760 
5761                   --  Billing schedule for usage line
5762 
5763                   l_slh_rec := p_Strm_hdr_rec;
5764                   l_slh_rec.cle_id := l_u_service_line_id;
5765                   IF l_slh_rec.Object1_Id1 IS NULL THEN
5766                      l_slh_rec.Object1_Id1 := '1';
5767                   END IF;
5768 
5769                   IF l_slh_rec.Object2_Id1 IS NULL THEN
5770                       Create_timeval
5771                       (
5772                           p_line_id        => l_slh_rec.cle_id,
5773                           x_time_val       => l_time_val,
5774                           x_return_status  => x_return_status
5775                        );
5776 
5777                        --dbms_output.put_line('create time val '|| x_return_status);
5778                        IF x_return_status = 'S' THEN
5779                           l_slh_rec.Object2_Id1 := l_time_val;
5780                        ELSE
5781                           x_return_status := OKC_API.G_RET_STS_ERROR;
5782                           DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTION');
5783                           Raise G_EXCEPTION_HALT_VALIDATION;
5784                        END IF;
5785                    END IF;
5786 
5787                    --dbms_output.put_line('rule information catagory '|| l_slh_rec.Rule_Information_Category );
5788                    OKS_BILL_SCH.Create_Bill_Sch_Rules
5789                    (
5790                        p_billing_type         => p_billing_sch_type,
5791                        p_sll_tbl              => p_strm_level_tbl,
5792                        p_invoice_rule_id      => l_K_support_rec.invoicing_rule_type,
5793                        x_bil_sch_out_tbl      => l_bil_sch_out_tbl,
5794                        x_return_status        => x_return_status
5795                     );
5796 
5797                     --dbms_output.put_line('K BILL SCHEDULE FOR USAGE LINE STATUS  ' || x_return_status);
5798                     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5799                         RAISE G_EXCEPTION_HALT_VALIDATION;
5800                     END IF;
5801 
5802                     -- End of Billing Schedule for Usage Line
5803             END If;
5804             i := l_Counter_Tbl.Next(i);
5805          END LOOP;  -- End of counter_tbl.count
5806       End If;    -- End of counter_tbl.count IF
5807 
5808 
5809 */
5810 
5811 
5812 -- create billing schd for subscription lines :one time billing
5813 
5814 IF (l_k_line_rec.line_type = 'SB') THEN
5815 
5816    --dbms_output.put_line('amount'||l_k_line_rec.negotiated_amount);
5817 
5818    Create_Billing_Schd
5819    (
5820         P_srv_sdt             => p_k_header_rec.start_date
5821       , P_srv_edt             => p_k_header_rec.end_date
5822       , P_amount              => l_k_line_rec.negotiated_amount
5823       , P_chr_id              => l_contract_header_id
5824       , P_rule_id             => NULL
5825       , P_line_id             => l_sb_service_line_id
5826       , P_invoice_rule_id     => l_k_line_rec.invoicing_rule_type
5827       , X_msg_data            => X_msg_data
5828       , X_msg_count           => X_msg_count
5829       , X_Return_status       => l_Return_status
5830    );
5831 
5832    OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Create_Billing_Schd for SB Line status :'|| l_return_status );
5833    --dbms_output.put_line('SUBSCRIPTION LINE BILL SCHEDULE STATUS:-  ' || l_return_status);
5834 
5835    IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5836       DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5837       RAISE G_EXCEPTION_HALT_VALIDATION;
5838    END IF;
5839 
5840 END If;  -- end of billing for subscription line
5841 
5842 -- for support line recursive billing
5843 
5844 IF(l_k_support_rec.line_type = 'S') then
5845 
5846  Create_Billing_Schd
5847    (
5848         P_srv_sdt             => p_k_support_rec.srv_sdt
5849       , P_srv_edt             => p_k_support_rec.srv_edt
5850       , P_amount              => null --l_k_line_rec.negotiated_amount
5851       , P_chr_id              => l_contract_header_id
5852       , P_rule_id             => NULL
5853       , P_line_id             => l_su_service_line_id
5854       , P_invoice_rule_id     => l_k_line_rec.invoicing_rule_type
5855       , X_msg_data            => X_msg_data
5856       , X_msg_count           => X_msg_count
5857       , X_Return_status       => l_Return_status
5858    );
5859 
5860     -- l_slh_rec := p_Strm_hdr_rec;
5861     -- l_slh_rec.cle_id := l_su_service_line_id;
5862 
5863     -- IF l_slh_rec.Object1_Id1 IS NULL THEN
5864     --    l_slh_rec.Object1_Id1 := '1';
5865     -- END IF;
5866 
5867    --  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Object2_id1             :'|| l_slh_rec.Object2_Id1 );
5868  /*
5869      IF l_slh_rec.Object2_Id1 IS NULL THEN
5870         Create_timeval
5871         (
5872            p_line_id        => l_slh_rec.cle_id,
5873            x_time_val       => l_time_val,
5874            x_return_status  => l_return_status
5875          );
5876 
5877         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::Create_timeval            :'|| l_return_status );
5878         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::Time val                  :'|| l_time_val );
5879         OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::Rule Information catagory :'|| l_slh_rec.Rule_Information_Category  );
5880         --dbms_output.put_line('create time val '|| x_return_status);
5881 
5882         IF l_return_status = 'S' THEN
5883               l_slh_rec.Object2_Id1 := l_time_val;
5884         ELSE
5885              l_return_status := OKC_API.G_RET_STS_ERROR;
5886              DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5887              Raise G_EXCEPTION_HALT_VALIDATION;
5888         END IF;
5889      END IF;
5890 
5891      --dbms_output.put_line('rule information catagory '|| l_slh_rec.Rule_Information_Category );
5892      OKS_BILL_SCH.Create_Bill_Sch_Rules
5893      (
5894        p_billing_type         => bill_type,
5895        p_sll_tbl              => p_strm_level_tbl,
5896        p_invoice_rule_id      => l_K_line_rec.invoicing_rule_type,
5897        x_bil_sch_out_tbl      => l_bil_sch_out_tbl,
5898        x_return_status        => l_return_status
5899       );
5900 
5901       OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription ::  Create_Bill_Sch_Rules for Support Line status :'|| l_return_status );
5902       --dbms_output.put_line('K BILL SCHEDULE FOR SERVICE LINE STATUS  ' || l_return_status);
5903 */
5904       IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5905           RAISE G_EXCEPTION_HALT_VALIDATION;
5906       END IF;
5907 
5908 END IF;  -- end of billing for line type = 'SU'
5909 
5910 IF    l_return_status <> 'S' THEN
5911       DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTIONS');
5912 END IF;
5913 
5914 x_return_status := l_return_status;
5915 
5916 Exception
5917     When  G_EXCEPTION_HALT_VALIDATION Then
5918         x_return_status := l_return_status;
5919         Null;
5920     When  Others Then
5921           x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
5922             OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
5923             OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Subscription :: Error :'|| SQLCODE || SQLERRM);
5924 
5925 END Create_subscription;
5926 
5927 
5928 
5929 
5930 
5931 ---------------------------------------------------------------------------------
5932 -- Procedure for creating contracts
5933 ---------------------------------------------------------------------------------
5934 
5935 
5936 
5937 Procedure Create_Contract
5938 (
5939       p_K_header_rec                   IN  OKS_CONTRACTS_PUB.header_rec_type
5940 ,     p_header_contacts_tbl            IN  OKS_CONTRACTS_PUB.contact_tbl
5941 ,     p_header_sales_crd_tbl           IN  OKS_CONTRACTS_PUB.SalesCredit_tbl
5942 ,     p_header_articles_tbl            IN  OKS_CONTRACTS_PUB.obj_articles_tbl
5943 ,     p_K_line_rec                     IN  OKS_CONTRACTS_PUB.line_rec_type
5944 ,     p_line_contacts_tbl              IN  OKS_CONTRACTS_PUB.contact_tbl
5945 ,     p_line_sales_crd_tbl             IN  OKS_CONTRACTS_PUB.SalesCredit_tbl
5946 ,     p_K_Support_rec                  IN  OKS_CONTRACTS_PUB.line_rec_type
5947 ,     p_Support_contacts_tbl           IN  OKS_CONTRACTS_PUB.contact_tbl
5948 ,     p_Support_sales_crd_tbl          IN  OKS_CONTRACTS_PUB.SalesCredit_tbl
5949 ,     p_K_covd_rec                     IN  OKS_CONTRACTS_PUB.Covered_level_Rec_Type
5950 ,     p_price_attribs_in               IN  OKS_CONTRACTS_PUB.pricing_attributes_type
5951 ,     p_merge_rule                     IN  Varchar2
5952 ,     p_usage_instantiate              IN  Varchar2
5953 ,     p_ib_creation                    IN  Varchar2
5954 ,     p_billing_sch_type               IN  Varchar2
5955 ,     p_strm_level_tbl                 IN  OKS_BILL_SCH.StreamLvl_tbl
5956 ,     x_chrid                          OUT NOCOPY Number
5957 ,     x_return_status                  OUT NOCOPY Varchar2
5958 ,     x_msg_count                      OUT NOCOPY Number
5959 ,     x_msg_data                       OUT NOCOPY Varchar2
5960 )
5961 IS
5962 
5963       l_contract_header_id    NUMBER;
5964       l_service_line_id       NUMBER;
5965       l_cp_line_id            NUMBER;
5966       l_bil_sch_out_tbl       OKS_BILL_SCH.ItemBillSch_tbl;
5967       --l_slh_rec               OKS_BILL_SCH.StreamHdr_type;
5968       l_K_line_rec            OKS_CONTRACTS_PUB.line_Rec_Type;
5969       l_k_support_rec         OKS_CONTRACTS_PUB.line_Rec_Type;
5970       l_k_hdr_rec             OKS_CONTRACTS_PUB.header_Rec_Type;
5971       l_K_covd_rec            OKS_CONTRACTS_PUB.Covered_level_Rec_Type;
5972       l_time_val              NUMBER;
5973       l_return_status         Varchar2(1);
5974       BEGIN
5975 
5976            DBMS_TRANSACTION.SAVEPOINT('BEFORE_TRANSACTION');
5977 
5978            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Line Style                    :'|| p_K_line_rec.line_type );
5979            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Support line style            :'|| p_K_Support_rec.line_type );
5980            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Usage type                    :'|| p_K_line_rec.usage_type );
5981            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Header Renewal type           :'|| p_K_header_rec.renewal_type );
5982            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Line Renewal type             :'|| p_K_line_rec.line_renewal_type );
5983            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Coverage Renewal type         :'|| p_K_covd_rec.line_renewal_type );
5984            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Header Start Date             :'|| p_K_header_rec.start_date );
5985            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Header End Date               :'|| p_K_header_rec.end_date );
5986            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Customer Product Id           :'|| p_K_covd_rec.customer_product_id );
5987            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Product Description           :'|| p_K_covd_rec.product_desc );
5988 
5989 
5990            Create_Contract_Header
5991            (
5992                p_K_header_rec         => p_K_header_rec,
5993                p_header_contacts_tbl  => p_header_contacts_tbl,
5994                p_header_sales_crd_tbl => p_header_sales_crd_tbl,
5995                p_header_articles_tbl  => p_header_articles_tbl,
5996                x_chrid                => l_contract_header_id,
5997                x_return_status        => l_return_status,
5998                x_msg_count            => x_msg_count,
5999                x_msg_data             => x_msg_data
6000            );
6001 
6002            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Create_Contract_Header status :'|| l_return_status );
6003            OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Contract Header Id            :'|| to_char(l_contract_header_id) );
6004            --dbms_output.put_line('K CONTRACT HEADER CREATION STATUS:-  ' || l_return_status);
6005 
6006            IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6007                DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTION');
6008                RAISE G_EXCEPTION_HALT_VALIDATION;
6009            END IF;
6010 
6011 
6012 
6013            If ( p_K_line_rec.line_type = 'SB') then
6014                 l_k_support_rec := p_k_support_rec;
6015                 l_k_line_rec    := p_k_line_rec;
6016                 l_k_hdr_rec     := p_k_header_rec;
6017                 --l_slh_rec       := p_Strm_hdr_rec;
6018 
6019                 Create_Subscription
6020                 (
6021                      p_K_header_rec                   => l_k_hdr_rec
6022                     ,p_K_Support_rec                  => l_k_support_rec
6023                     ,p_Support_contacts_tbl_in        => p_Support_contacts_tbl
6024                     ,p_Support_sales_crd_tbl_in       => p_Support_sales_crd_tbl
6025                     ,p_k_line_rec                     => l_k_line_rec
6026                     ,p_line_contacts_tbl_in           => p_line_contacts_tbl
6027                     ,p_line_sales_crd_tbl_in          => p_line_sales_crd_tbl
6028                     ,p_price_attribs_in               => p_price_attribs_in
6029                     ,p_contract_header_id             => l_contract_header_id
6030                     ,bill_type                        => p_billing_sch_type
6031                     ,p_strm_level_tbl                 => p_strm_level_tbl
6032                     ,x_return_status                  => l_return_status
6033                     ,x_msg_count                      => x_msg_count
6034                     ,x_msg_data                       => x_msg_data
6035                  );
6036 
6037                  OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Create_Subscription status :'|| l_return_status);
6038                  --dbms_output.put_line('CREATE SUBSCRIPTION STATUS:-  ' || l_return_status);
6039 
6040                  IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6041                      DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTION');
6042                      RAISE G_EXCEPTION_HALT_VALIDATION;
6043                  END IF;
6044             ELSE
6045 
6046 
6047                  l_K_line_rec := p_K_line_rec;
6048                  l_K_line_rec.k_hdr_id := l_contract_header_id;
6049 
6050                  IF (p_K_header_rec.scs_code = 'SERVICE' AND l_K_line_rec.line_type = 'U') AND
6051                     (l_K_line_rec.usage_type = 'VRT' OR l_K_line_rec.usage_type = 'QTY') THEN
6052 
6053                     l_K_line_rec.invoicing_rule_type := -3;
6054                  END IF;
6055 
6056                  Create_Service_Line
6057                  (
6058                       p_k_line_rec         => l_K_line_rec,
6059                       p_Contact_tbl        => p_line_contacts_tbl,
6060                       p_line_sales_crd_tbl => p_line_sales_crd_tbl,
6061                       x_service_line_id    => l_service_line_id,
6062                       x_return_status      => l_return_status,
6063                       x_msg_count          => x_msg_count,
6064                       x_msg_data           => x_msg_data
6065                   );
6066                   OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Create_Service_Line status :'|| l_return_status );
6067                   --dbms_output.put_line('K CONTRACT SERVICE LINE CREATION STATUS:-  ' || l_return_status);
6068                   IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6069                      DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTION');
6070                      RAISE G_EXCEPTION_HALT_VALIDATION;
6071                   END IF;
6072 
6073 
6074                   l_K_covd_rec                  := p_K_covd_rec;
6075                   l_K_covd_rec.k_id             := l_contract_header_id;
6076                   l_K_covd_rec.Attach_2_Line_id := l_service_line_id;
6077 
6078                   Create_Covered_Line
6079                   (
6080                      p_k_covd_rec            => l_K_covd_rec,
6081                      p_PRICE_ATTRIBS         => p_price_attribs_in,
6082                      x_cp_line_id            => l_cp_line_id,
6083                      x_return_status         => l_return_status,
6084                      x_msg_count             => x_msg_count,
6085                      x_msg_data              => x_msg_data
6086                    );
6087 
6088                    OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Create_Covered_Line status :'|| l_return_status );
6089                    --dbms_output.put_line('K COVERED PRODUCT LINE CREATION STATUS:-  ' || l_return_status);
6090 
6091                    IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6092                        DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTION');
6093                        RAISE G_EXCEPTION_HALT_VALIDATION;
6094                    END IF;
6095 
6096                    IF p_K_header_rec.scs_code = 'WARRANTY' AND p_K_line_rec.line_type = 'W' THEN     ----warranty
6097                        NULL;
6098 
6099                    ELSE
6100                         /*--l_slh_rec := p_Strm_hdr_rec;
6101                         l_slh_rec.cle_id := l_service_line_id;
6102 
6103                         IF l_slh_rec.Object1_Id1 IS NULL THEN
6104                            l_slh_rec.Object1_Id1 := '1';
6105                         END IF;
6106 
6107                         IF l_slh_rec.Object2_Id1 IS NULL THEN
6108                            Create_timeval
6109                            (
6110                                p_line_id        => l_slh_rec.cle_id,
6111                                x_time_val       => l_time_val,
6112                                x_return_status  => x_return_status
6113                             );
6114 
6115 
6116                             IF l_return_status = 'S' THEN
6117                                 l_slh_rec.Object2_Id1 := l_time_val;
6118                             ELSE
6119                                 x_return_status := OKC_API.G_RET_STS_ERROR;
6120                                 OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'TIME VALUE REQUIRED FOR SLH');
6121                                 DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTION');
6122                                 Raise G_EXCEPTION_HALT_VALIDATION;
6123                             END IF;
6124                         END IF;*/
6125 
6126                         OKS_BILL_SCH.Create_Bill_Sch_Rules
6127                         (
6128                            p_billing_type         => p_billing_sch_type,
6129                            p_sll_tbl              => p_strm_level_tbl,
6130                            p_invoice_rule_id      => l_K_line_rec.invoicing_rule_type,
6131                            x_bil_sch_out_tbl      => l_bil_sch_out_tbl,
6132                            x_return_status        => l_return_status
6133                          );
6134 
6135                          OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Create_Bill_Sch_Rules status :'|| l_return_status );
6136                          --dbms_output.put_line('K BILL SCHEDULE STATUS:-  ' || l_return_status);
6137 
6138                          IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
6139 
6140                              DBMS_TRANSACTION.ROLLBACK_SAVEPOINT('BEFORE_TRANSACTION');
6141                              RAISE G_EXCEPTION_HALT_VALIDATION;
6142                          END IF;
6143 
6144 
6145                     END IF;
6146             End If;
6147 
6148             Update Okc_k_headers_b
6149             Set    Estimated_amount = (Select nvl(sum(nvl(price_negotiated,0)),0)
6150             from   Okc_k_lines_b
6151             Where  dnz_chr_id = l_contract_header_id
6152             and    lse_id in (9,25,46))
6153             Where  id = l_contract_header_id ;
6154 
6155             x_chrid := l_contract_header_id;
6156             --dbms_output.put_line('Contract header Id:-  ' || TO_CHAR(l_contract_header_id));
6157             OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Contract header Id    :'|| TO_CHAR(l_contract_header_id) );
6158 
6159      Exception
6160             When  G_EXCEPTION_HALT_VALIDATION Then
6161                x_return_status := l_return_status;
6162                Null;
6163             When  Others Then
6164                x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6165                OKC_API.set_message(G_APP_NAME, G_UNEXPECTED_ERROR,G_SQLCODE_TOKEN,SQLCODE,G_SQLERRM_TOKEN,SQLERRM);
6166                OKS_RENEW_PVT.DEBUG_LOG( '(OKS_CONTRACTS_PUB).Create_Contract ::  Error :'|| SQLCODE || ':'|| SQLERRM );
6167    END Create_Contract;
6168 
6169 /* dummy overloaded procedure for OKL*/
6170 
6171 Procedure Create_Bill_Schedule(p_Strm_hdr_rec        IN	   OKS_BILL_SCH.StreamHdr_Type,
6172                                p_strm_level_tbl      IN    OKS_BILL_SCH.StreamLvl_tbl,
6173                                p_invoice_rule_id     IN    Number,
6174                                x_return_status       OUT NOCOPY  VARCHAR2
6175 )
6176 
6177 is
6178 Begin
6179 
6180 x_return_status := 'S';
6181 
6182 End Create_Bill_Schedule;
6183 
6184 
6185 End OKS_CONTRACTS_PUB;
6186