DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_CLE_PVT

Source


1 PACKAGE BODY OKC_CLE_PVT AS
2 /* $Header: OKCSCLEB.pls 120.16.12020000.2 2012/08/23 14:48:24 spingali ship $ */
3 
4 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
5 
6   /************************ HAND-CODED *********************************/
7   FUNCTION Validate_Attributes ( p_clev_rec IN  clev_rec_type)
8 		RETURN VARCHAR2;
9   G_NO_PARENT_RECORD CONSTANT	VARCHAR2(200) := 'OKC_NO_PARENT_RECORD';
10   G_UNEXPECTED_ERROR CONSTANT	VARCHAR2(200) := 'OKC_CONTRACTS_UNEXPECTED_ERROR';
11   G_SQLERRM_TOKEN	 CONSTANT	VARCHAR2(200) := 'ERROR_MESSAGE';
12   G_SQLCODE_TOKEN	 CONSTANT	VARCHAR2(200) := 'ERROR_CODE';
13   G_VIEW			 CONSTANT	VARCHAR2(200) := 'OKC_K_LINES_V';
14   G_EXCEPTION_HALT_VALIDATION	exception;
15   l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
16 
17   -- Start of comments
18   --
19   -- Procedure Name  : validate_line_number
20   -- Description     :
21   -- Business Rules  :
22   -- Parameters      :
23   -- Version         : 1.0
24   -- End of comments
25   PROCEDURE validate_line_number(x_return_status OUT NOCOPY   VARCHAR2,
26                                  p_clev_rec      IN    clev_rec_type) is
27   Begin
28 
29     IF (l_debug = 'Y') THEN
30        okc_debug.Set_Indentation('OKC_CLE_PVT');
31        okc_debug.log('100: Entered validate_line_number', 2);
32     END IF;
33 
34     -- initialize return status
35     x_return_status := OKC_API.G_RET_STS_SUCCESS;
36 
37     -- check that data exists
38     If (p_clev_rec.line_number = OKC_API.G_MISS_CHAR or
39 	   p_clev_rec.line_number IS NULL)
40     Then
41   	  OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
42 					  p_msg_name	=> g_required_value,
43 					  p_token1	=> g_col_name_token,
44 					  p_token1_value=> 'line_number');
45 	   -- notify caller of an error
46         x_return_status := OKC_API.G_RET_STS_ERROR;
47 
48 	   -- halt validation
49 	   raise G_EXCEPTION_HALT_VALIDATION;
50     End If;
51 
52     IF (l_debug = 'Y') THEN
53        okc_debug.log('200: Leaving validate_line_number with return status '||x_return_status, 2);
54        okc_debug.Reset_Indentation;
55     END IF;
56 
57   exception
58     when G_EXCEPTION_HALT_VALIDATION then
59 
60     IF (l_debug = 'Y') THEN
61        okc_debug.log('300: Exiting validate_line_number:G_EXCEPTION_HALT_VALIDATION Exception', 2);
62        okc_debug.Reset_Indentation;
63     END IF;
64 
65       -- no processing necessary; validation can continue with next column
66       null;
67 
68     when OTHERS then
69 
70     IF (l_debug = 'Y') THEN
71        okc_debug.log('400: Exiting validate_line_number:OTHERS Exception', 2);
72        okc_debug.Reset_Indentation;
73     END IF;
74 
75 	  -- store SQL error message on message stack
76   	  OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
77 					  p_msg_name	=> g_unexpected_error,
78 					  p_token1	=> g_sqlcode_token,
79 					  p_token1_value=> sqlcode,
80 					  p_token2	=> g_sqlerrm_token,
81 					  p_token2_value=> sqlerrm);
82 	   -- notify caller of an error as UNEXPETED error
83         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
84 
85   End validate_line_number;
86 
87   -- Start of comments
88   --
89   -- Procedure Name  : validate_chr_id
90   -- Description     :
91   -- Business Rules  :
92   -- Parameters      :
93   -- Version         : 1.0
94   -- End of comments
95   PROCEDURE validate_chr_id(x_return_status OUT NOCOPY   VARCHAR2,
96                             p_clev_rec      IN    clev_rec_type) is
97 
98   l_dummy_var   VARCHAR2(1) := '?';
99   Cursor l_chrv_csr Is
100   		select 'x'
101                 --npalepu 08-11-2005 modified for bug # 4691662.
102                 --Replaced table okc_k_headers_b with headers_All_b table
103                 /* from OKC_K_HEADERS_B */
104                 FROM OKC_K_HEADERS_ALL_B
105                 --end npalepu
106   		where ID = p_clev_rec.chr_id;
107   Begin
108 
109     IF (l_debug = 'Y') THEN
110        okc_debug.Set_Indentation('OKC_CLE_PVT');
111        okc_debug.log('500: Entered validate_chr_id', 2);
112     END IF;
113 
114     -- initialize return status
115     x_return_status := OKC_API.G_RET_STS_SUCCESS;
116 
117     -- enforce foreign key, if data exists
118     If (p_clev_rec.chr_id <> OKC_API.G_MISS_NUM and
119   	   p_clev_rec.chr_id IS NOT NULL)
120     Then
121       Open l_chrv_csr;
122       Fetch l_chrv_csr Into l_dummy_var;
123       Close l_chrv_csr;
124 
125       -- if l_dummy_var still set to default, data was not found
126       If (l_dummy_var = '?') Then
127   	    OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
128 					    p_msg_name	=> g_no_parent_record,
129 					    p_token1	=> g_col_name_token,
130 					    p_token1_value=> 'chr_id',
131 					    p_token2	=> g_child_table_token,
132 					    p_token2_value=> G_VIEW,
133 					    p_token3	=> g_parent_table_token,
134 					    p_token3_value=> 'OKC_K_HEADERS_V');
135 	    -- notify caller of an error
136          x_return_status := OKC_API.G_RET_STS_ERROR;
137       End If;
138     End If;
139 
140     IF (l_debug = 'Y') THEN
141        okc_debug.log('600: Leaving validate_chr_id with return status '||x_return_status, 2);
142        okc_debug.Reset_Indentation;
143     END IF;
144 
145   exception
146     when OTHERS then
147 
148     IF (l_debug = 'Y') THEN
149        okc_debug.log('700: Exiting validate_chr_id:OTHERS Exception', 2);
150        okc_debug.Reset_Indentation;
151     END IF;
152 
153 	  -- store SQL error message on message stack
154   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
155 					  p_msg_name		=> g_unexpected_error,
156 					  p_token1		=> g_sqlcode_token,
157 					  p_token1_value	=> sqlcode,
158 					  p_token2		=> g_sqlerrm_token,
159 					  p_token2_value	=> sqlerrm);
160 	   -- notify caller of an error as UNEXPETED error
161         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
162 
163         -- verify that cursor was closed
164         if l_chrv_csr%ISOPEN then
165 	      close l_chrv_csr;
166         end if;
167 
168   End validate_chr_id;
169 
170   -- Start of comments
171   --
172   -- Procedure Name  : validate_cle_id
173   -- Description     :
174   -- Business Rules  :
175   -- Parameters      :
176   -- Version         : 1.0
177   -- End of comments
178   PROCEDURE validate_cle_id(x_return_status OUT NOCOPY   VARCHAR2,
179                             p_clev_rec      IN    clev_rec_type) is
180 
181   l_dummy_var   VARCHAR2(1) := '?';
182   Cursor l_clev_csr Is
183   		select 'x'
184   		from OKC_K_LINES_B
185   		where ID = p_clev_rec.cle_id;
186   Begin
187 
188     IF (l_debug = 'Y') THEN
189        okc_debug.Set_Indentation('OKC_CLE_PVT');
190        okc_debug.log('800: Entered validate_cle_id', 2);
191     END IF;
192 
193     -- initialize return status
194     x_return_status := OKC_API.G_RET_STS_SUCCESS;
195 
196     -- enforce foreign key, if data exists
197     If (p_clev_rec.cle_id <> OKC_API.G_MISS_NUM and
198   	   p_clev_rec.cle_id IS NOT NULL)
199     Then
200       Open l_clev_csr;
201       Fetch l_clev_csr Into l_dummy_var;
202       Close l_clev_csr;
203 
204       -- if l_dummy_var still set to default, data was not found
205       If (l_dummy_var = '?') Then
206   	    OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
207 					    p_msg_name		=> g_no_parent_record,
208 					    p_token1		=> g_col_name_token,
209 					    p_token1_value	=> 'cle_id',
210 					    p_token2		=> g_child_table_token,
211 					    p_token2_value	=> G_VIEW,
212 					    p_token3		=> g_parent_table_token,
213 					    p_token3_value	=> G_VIEW);
214 	    -- notify caller of an error
215          x_return_status := OKC_API.G_RET_STS_ERROR;
216       End If;
217     End If;
218 
219     IF (l_debug = 'Y') THEN
220        okc_debug.log('900: Leaving validate_cle_id with return status '||x_return_status, 2);
221        okc_debug.Reset_Indentation;
222     END IF;
223 
224   exception
225     when OTHERS then
226 
227     IF (l_debug = 'Y') THEN
228        okc_debug.log('1000: Exiting validate_cle_id:OTHERS Exception', 2);
229        okc_debug.Reset_Indentation;
230     END IF;
231 
232 	  -- store SQL error message on message stack
233   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
234 					  p_msg_name		=> g_unexpected_error,
235 					  p_token1		=> g_sqlcode_token,
236 					  p_token1_value	=> sqlcode,
237 					  p_token2		=> g_sqlerrm_token,
238 					  p_token2_value	=> sqlerrm);
239 	   -- notify caller of an error as UNEXPETED error
240         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
241 
242         -- verify that cursor was closed
243         if l_clev_csr%ISOPEN then
244 	      close l_clev_csr;
245         end if;
246 
247   End validate_cle_id;
248 
249   -- Start of comments
250   --
251   -- Procedure Name  : validate_lse_id
252   -- Description     :
253   -- Business Rules  :
254   -- Parameters      :
255   -- Version         : 1.0
256   -- End of comments
257   PROCEDURE validate_lse_id(x_return_status OUT NOCOPY   VARCHAR2,
258                             p_clev_rec      IN    clev_rec_type) is
259 
260   l_dummy_var   VARCHAR2(1) := '?';
261 -- Rajendra
262   l_access_level        VARCHAR2(1);
263 --
264   Cursor l_lslv_csr Is
265   		select 'x'
266   		from OKC_LINE_STYLES_V
267   		where ID = p_clev_rec.lse_id;
268   CURSOR c_lines61( p_chr_id NUMBER, p_cle_id NUMBER ) IS
269    SELECT 'x'
270      FROM okc_k_lines_b
271      WHERE chr_id = p_chr_id AND id<>Nvl(p_cle_id,-1) AND lse_id=61;
272 -- Rajendra
273  CURSOR c_access_level IS
274   SELECT access_level
275   FROM okc_line_styles_v
276   WHERE id = p_clev_rec.lse_id;
277 --
278   Begin
279 
280     IF (l_debug = 'Y') THEN
281        okc_debug.Set_Indentation('OKC_CLE_PVT');
282        okc_debug.log('1100: Entered validate_lse_id', 2);
283     END IF;
284 
285     -- initialize return status
286     x_return_status := OKC_API.G_RET_STS_SUCCESS;
287 
288     -- check that data exists
289     If (p_clev_rec.lse_id = OKC_API.G_MISS_NUM or
290   	   p_clev_rec.lse_id IS NULL)
291     Then
292   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
293 					  p_msg_name		=> g_required_value,
294 					  p_token1		=> g_col_name_token,
295 					  p_token1_value	=> 'lse_id');
296 	   -- notify caller of an error
297         x_return_status := OKC_API.G_RET_STS_ERROR;
298 
299 	   -- halt validation
300 	   raise G_EXCEPTION_HALT_VALIDATION;
301     End If;
302 
303     -- Rajendra
304    Open c_access_level;
305    Fetch c_access_level into l_access_level;
306    Close c_access_level;
307 
308   If l_access_level = 'U' Then -- If user defined line style
309   --
310     -- enforce foreign key
311     Open l_lslv_csr;
312     Fetch l_lslv_csr Into l_dummy_var;
313     Close l_lslv_csr;
314 
315     -- if l_dummy_var still set to default, data was not found
316     If (l_dummy_var = '?') Then
317   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
318 					  p_msg_name		=> g_no_parent_record,
319 					  p_token1		=> g_col_name_token,
320 					  p_token1_value	=> 'lse_id',
321 					  p_token2		=> g_child_table_token,
322 					  p_token2_value	=> G_VIEW,
323 					  p_token3		=> g_parent_table_token,
324 					  p_token3_value	=> 'OKC_LINE_STYLES_V');
325 	  -- notify caller of an error
326        x_return_status := OKC_API.G_RET_STS_ERROR;
327      ELSIF (p_clev_rec.lse_id=61 AND p_clev_rec.CHR_id IS NOT NULL
328         AND p_clev_rec.cle_id IS NULL ) THEN
329       l_dummy_var := '?';
330       -- Should be just one Price Hold TopLine
331       Open c_lines61( p_clev_rec.chr_id, p_clev_rec.id );
332       Fetch c_lines61 Into l_dummy_var;
333       Close c_lines61;
334 
335        -- if l_dummy_var still set to default, data was not found
336       If (l_dummy_var <> '?') Then
337   	    OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
338 					  p_msg_name		=> 'OKC_JUST_1_PH_TOPLINE_ALLOWED');
339     	  -- notify caller of an error
340          x_return_status := OKC_API.G_RET_STS_ERROR;
341       End If;
342     End If;
343 -- Rajendra
344 End If; -- if user defined line style
345 
346     IF (l_debug = 'Y') THEN
347        okc_debug.log('1200: Leaving validate_lse_id with return status '||x_return_status, 2);
348        okc_debug.Reset_Indentation;
349     END IF;
350 
351   exception
352     when G_EXCEPTION_HALT_VALIDATION then
353 
354     IF (l_debug = 'Y') THEN
355        okc_debug.log('1300: Exiting validate_lse_id:G_EXCEPTION_HALT_VALIDATION Exception', 2);
356        okc_debug.Reset_Indentation;
357     END IF;
358 
359       -- no processing necessary; validation can continue with next column
360       null;
361 
362     when OTHERS then
363 
364     IF (l_debug = 'Y') THEN
365        okc_debug.log('1400: Exiting validate_lse_id:OTHERS Exception', 2);
366        okc_debug.Reset_Indentation;
367     END IF;
368 
369 	  -- store SQL error message on message stack
370   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
371 					  p_msg_name		=> g_unexpected_error,
372 					  p_token1		=> g_sqlcode_token,
373 					  p_token1_value	=> sqlcode,
374 					  p_token2		=> g_sqlerrm_token,
375 					  p_token2_value	=> sqlerrm);
376 	   -- notify caller of an error as UNEXPETED error
377         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
378 
379         -- verify that cursor was closed
380         if l_lslv_csr%ISOPEN then
381 	      close l_lslv_csr;
382         end if;
383 
384   End validate_lse_id;
385 
386   -- Start of comments
387   --
388   -- Procedure Name  : validate_display_sequence
389   -- Description     :
390   -- Business Rules  :
391   -- Parameters      :
392   -- Version         : 1.0
393   -- End of comments
394   PROCEDURE validate_display_sequence(x_return_status OUT NOCOPY   VARCHAR2,
395                                  	   p_clev_rec      IN    clev_rec_type) is
396   Begin
397 
398     IF (l_debug = 'Y') THEN
399        okc_debug.Set_Indentation('OKC_CLE_PVT');
400        okc_debug.log('1500: Entered validate_display_sequence', 2);
401     END IF;
402 
403     -- initialize return status
404     x_return_status := OKC_API.G_RET_STS_SUCCESS;
405 
406     -- check that data exists
407     If (p_clev_rec.display_sequence = OKC_API.G_MISS_NUM or
408 	   p_clev_rec.display_sequence IS NULL)
409     Then
410   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
411 					  p_msg_name		=> g_required_value,
412 					  p_token1		=> g_col_name_token,
413 					  p_token1_value	=> 'display_sequence');
414 	   -- notify caller of an error
415         x_return_status := OKC_API.G_RET_STS_ERROR;
416 
417 	   -- halt validation
418 	   raise G_EXCEPTION_HALT_VALIDATION;
419     End If;
420 
421     -- check for display sequence > 0
422     If (p_clev_rec.display_sequence < 0) Then
423   	   OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
424 					   p_msg_name		=> g_invalid_value,
425 					   p_token1		=> g_col_name_token,
426 					   p_token1_value	=> 'display_sequence');
427         x_return_status := OKC_API.G_RET_STS_ERROR;
428     End If;
429 
430     IF (l_debug = 'Y') THEN
431        okc_debug.log('1600: Leaving validate_display_sequence with return status '||x_return_status, 2);
432        okc_debug.Reset_Indentation;
433     END IF;
434 
435   exception
436     when G_EXCEPTION_HALT_VALIDATION then
437 
438     IF (l_debug = 'Y') THEN
439        okc_debug.log('1700: Exiting validate_display_sequence:G_EXCEPTION_HALT_VALIDATION Exception', 2);
440        okc_debug.Reset_Indentation;
441     END IF;
442 
443       -- no processing necessary; validation can continue with next column
444       null;
445 
446     when OTHERS then
447 
448     IF (l_debug = 'Y') THEN
449        okc_debug.log('1800: Exiting validate_display_sequence:OTHERS Exception', 2);
450        okc_debug.Reset_Indentation;
451     END IF;
452 
453 	  -- store SQL error message on message stack
454   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
455 					  p_msg_name		=> g_unexpected_error,
456 					  p_token1		=> g_sqlcode_token,
457 					  p_token1_value	=> sqlcode,
458 					  p_token2		=> g_sqlerrm_token,
459 					  p_token2_value	=> sqlerrm);
460 	   -- notify caller of an error as UNEXPETED error
461         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
462 
463   End validate_display_sequence;
464 
465   -- Start of comments
466   --
467   -- Procedure Name  : validate_trn_code
468   -- Description     :
469   -- Business Rules  :
470   -- Parameters      :
471   -- Version         : 1.0
472   -- End of comments
473   PROCEDURE validate_trn_code(x_return_status OUT NOCOPY   VARCHAR2,
474                               p_clev_rec      IN    clev_rec_type) is
475   Begin
476 
477     IF (l_debug = 'Y') THEN
478        okc_debug.Set_Indentation('OKC_CLE_PVT');
479        okc_debug.log('1900: Entered validate_trn_code', 2);
480     END IF;
481 
482     -- initialize return status
483     x_return_status := OKC_API.G_RET_STS_SUCCESS;
484 
485     -- enforce foreign key if data exists
486     If (p_clev_rec.trn_code <> OKC_API.G_MISS_CHAR and
487 	   p_clev_rec.trn_code IS NOT NULL)
488     Then
489       -- Check if the value is a valid code from lookup table
490       x_return_status := OKC_UTIL.check_lookup_code('OKC_TERMINATION_REASON',
491 								      p_clev_rec.trn_code);
492       If (x_return_status = OKC_API.G_RET_STS_ERROR) Then
493 	    --set error message in message stack
494 	    OKC_API.SET_MESSAGE(
495 			p_app_name	=> G_APP_NAME,
496 			p_msg_name	=> G_INVALID_VALUE,
497 			p_token1		=> G_COL_NAME_TOKEN,
498 			p_token1_value => 'TERMINATION_REASON');
499 	    raise G_EXCEPTION_HALT_VALIDATION;
500       Elsif (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) Then
501 	    raise G_EXCEPTION_HALT_VALIDATION;
502       End If;
503     End If;
504 
505     IF (l_debug = 'Y') THEN
506        okc_debug.log('2000: Leaving validate_trn_code with return status '||x_return_status, 2);
507        okc_debug.Reset_Indentation;
508     END IF;
509 
510   exception
511     when OTHERS then
512 
513     IF (l_debug = 'Y') THEN
514        okc_debug.log('2100: Exiting validate_trn_code:OTHERS Exception', 2);
515        okc_debug.Reset_Indentation;
516     END IF;
517 
518 	  -- store SQL error message on message stack
519   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
520 					  p_msg_name		=> g_unexpected_error,
521 					  p_token1		=> g_sqlcode_token,
522 					  p_token1_value	=> sqlcode,
523 					  p_token2		=> g_sqlerrm_token,
524 					  p_token2_value	=> sqlerrm);
525 	   -- notify caller of an error as UNEXPETED error
526         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
527 
528   End validate_trn_code;
529 
530   -- Start of comments
531   --
532   -- Procedure Name  : validate_dnz_chr_id
533   -- Description     :
534   -- Business Rules  :
535   -- Parameters      :
536   -- Version         : 1.0
537   -- End of comments
538   PROCEDURE validate_dnz_chr_id(x_return_status OUT NOCOPY   VARCHAR2,
539                             p_clev_rec      IN    clev_rec_type) is
540 
541   l_dummy_var   VARCHAR2(1) := '?';
542   Cursor l_chrv_csr Is
543   		select 'x'
544                 --npalepu 08-11-2005 modified for bug # 4691662.
545                 --Replaced table okc_k_headers_b with headers_All_b table
546                 /* from OKC_K_HEADERS_B */
547                 FROM OKC_K_HEADERS_ALL_B
548                 --end npalepu
549   		where ID = p_clev_rec.dnz_chr_id;
550   Begin
551 
552     IF (l_debug = 'Y') THEN
553        okc_debug.Set_Indentation('OKC_CLE_PVT');
554        okc_debug.log('2200: Entered validate_dnz_chr_id', 2);
555     END IF;
556 
557     -- initialize return status
558     x_return_status := OKC_API.G_RET_STS_SUCCESS;
559     -- check that data exists
560     If (p_clev_rec.dnz_chr_id = OKC_API.G_MISS_NUM or
561   	   p_clev_rec.dnz_chr_id IS NULL)
562     Then
563   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
564 					  p_msg_name		=> g_required_value,
565 					  p_token1		=> g_col_name_token,
566 					  p_token1_value	=> 'dnz_chr_id');
567 	   -- notify caller of an error
568         x_return_status := OKC_API.G_RET_STS_ERROR;
569 
570 	   -- halt validation
571 	   raise G_EXCEPTION_HALT_VALIDATION;
572     End If;
573 
574     -- enforce foreign key
575     Open l_chrv_csr;
576     Fetch l_chrv_csr Into l_dummy_var;
577     Close l_chrv_csr;
578 
579     -- if l_dummy_var still set to default, data was not found
580     If (l_dummy_var = '?') Then
581   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
582 					  p_msg_name		=> g_no_parent_record,
583 					  p_token1		=> g_col_name_token,
584 					  p_token1_value	=> 'dnz_chr_id',
585 					  p_token2		=> g_child_table_token,
586 					  p_token2_value	=> G_VIEW,
587 					  p_token3		=> g_parent_table_token,
588 					  p_token3_value	=> 'OKC_K_HEADERS_V');
589 	  -- notify caller of an error
590        x_return_status := OKC_API.G_RET_STS_ERROR;
591     End If;
592 
593     IF (l_debug = 'Y') THEN
594        okc_debug.log('2300: Leaving validate_dnz_chr_id with return status '||x_return_status, 2);
595        okc_debug.Reset_Indentation;
596     END IF;
597 
598   exception
599     when G_EXCEPTION_HALT_VALIDATION then
600 
601     IF (l_debug = 'Y') THEN
602        okc_debug.log('2400: Exiting validate_dnz_chr_id:G_EXCEPTION_HALT_VALIDATION Exception', 2);
603        okc_debug.Reset_Indentation;
604     END IF;
605 
606       -- no processing necessary; validation can continue with next column
607       null;
608 
609     when OTHERS then
610 
611     IF (l_debug = 'Y') THEN
612        okc_debug.log('2500: Exiting validate_dnz_chr_id:OTHERS Exception', 2);
613        okc_debug.Reset_Indentation;
614     END IF;
615 
616 	  -- store SQL error message on message stack
617   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
618 					  p_msg_name		=> g_unexpected_error,
619 					  p_token1		=> g_sqlcode_token,
620 					  p_token1_value	=> sqlcode,
621 					  p_token2		=> g_sqlerrm_token,
622 					  p_token2_value	=> sqlerrm);
623 	   -- notify caller of an error as UNEXPETED error
624         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
625 
626         -- verify that cursor was closed
627         if l_chrv_csr%ISOPEN then
628 	      close l_chrv_csr;
629         end if;
630 
631   End validate_dnz_chr_id;
632 
633   -- Start of comments
634   --
635   -- Procedure Name  : validate_exception_yn
636   -- Description     :
637   -- Business Rules  :
638   -- Parameters      :
639   -- Version         : 1.0
640   -- End of comments
641   PROCEDURE validate_exception_yn(x_return_status OUT NOCOPY   VARCHAR2,
642                             	    p_clev_rec      IN    clev_rec_type) is
643   Begin
644 
645     IF (l_debug = 'Y') THEN
646        okc_debug.Set_Indentation('OKC_CLE_PVT');
647        okc_debug.log('2600: Entered validate_exception_yn', 2);
648     END IF;
649 
650     -- initialize return status
651     x_return_status := OKC_API.G_RET_STS_SUCCESS;
652 
653     -- check that data exists
654     If (p_clev_rec.exception_yn = OKC_API.G_MISS_CHAR or
655   	   p_clev_rec.exception_yn IS NULL)
656     Then
657   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
658 					  p_msg_name		=> g_required_value,
659 					  p_token1		=> g_col_name_token,
660 					  p_token1_value	=> 'exception_yn');
661 	   -- notify caller of an error
662         x_return_status := OKC_API.G_RET_STS_ERROR;
663 
664 	   -- halt validation
665 	   raise G_EXCEPTION_HALT_VALIDATION;
666     End If;
667 
668     -- check allowed values
669     If (upper(p_clev_rec.exception_yn) NOT IN ('Y','N')) Then
670   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
671 					  p_msg_name		=> g_invalid_value,
672 					  p_token1		=> g_col_name_token,
673 					  p_token1_value	=> 'exception_yn');
674 	   -- notify caller of an error
675         x_return_status := OKC_API.G_RET_STS_ERROR;
676     End If;
677 
678     IF (l_debug = 'Y') THEN
679        okc_debug.log('2700: Leaving validate_exception_yn with return status '||x_return_status, 2);
680        okc_debug.Reset_Indentation;
681     END IF;
682 
683   exception
684     when G_EXCEPTION_HALT_VALIDATION then
685 
686     IF (l_debug = 'Y') THEN
687        okc_debug.log('2800: Exiting validate_exception_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
688        okc_debug.Reset_Indentation;
689     END IF;
690 
691       -- no processing necessary; validation can continue with next column
692       null;
693 
694     when OTHERS then
695 
696     IF (l_debug = 'Y') THEN
697        okc_debug.log('2900: Exiting validate_exception_yn:OTHERS Exception', 2);
698        okc_debug.Reset_Indentation;
699     END IF;
700 
701 	  -- store SQL error message on message stack
702   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
703 					  p_msg_name		=> g_unexpected_error,
704 					  p_token1		=> g_sqlcode_token,
705 					  p_token1_value	=> sqlcode,
706 					  p_token2		=> g_sqlerrm_token,
707 					  p_token2_value	=> sqlerrm);
708 	   -- notify caller of an error as UNEXPETED error
709         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
710 
711   End validate_exception_yn;
712 
713   -- Start of comments
714   --
715   -- Procedure Name  : validate_hidden_ind
716   -- Description     :
717   -- Business Rules  :
718   -- Parameters      :
719   -- Version         : 1.0
720   -- End of comments
721   PROCEDURE validate_hidden_ind(x_return_status OUT NOCOPY   VARCHAR2,
722                             	  p_clev_rec      IN    clev_rec_type) is
723   Begin
724 
725     IF (l_debug = 'Y') THEN
726        okc_debug.Set_Indentation('OKC_CLE_PVT');
727        okc_debug.log('3000: Entered validate_hidden_ind', 2);
728     END IF;
729 
730     -- initialize return status
731     x_return_status := OKC_API.G_RET_STS_SUCCESS;
732     If (p_clev_rec.hidden_ind <> OKC_API.G_MISS_CHAR and
733   	   p_clev_rec.hidden_ind IS NOT NULL)
734     Then
735       -- check allowed values
736       If (upper(p_clev_rec.hidden_ind) NOT IN ('Y','N')) Then
737   	    OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
738 					    p_msg_name		=> g_invalid_value,
739 					    p_token1		=> g_col_name_token,
740 					    p_token1_value	=> 'hidden_ind');
741 	     -- notify caller of an error
742           x_return_status := OKC_API.G_RET_STS_ERROR;
743       End If;
744     End If;
745 
746     IF (l_debug = 'Y') THEN
747        okc_debug.log('3100: Leaving validate_hidden_ind with return status '||x_return_status, 2);
748        okc_debug.Reset_Indentation;
749     END IF;
750 
751   exception
752     when OTHERS then
753 
754     IF (l_debug = 'Y') THEN
755        okc_debug.log('3200: Exiting validate_hidden_ind:OTHERS Exception', 2);
756        okc_debug.Reset_Indentation;
757     END IF;
758 
759 	  -- store SQL error message on message stack
760   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
761 					  p_msg_name		=> g_unexpected_error,
762 					  p_token1		=> g_sqlcode_token,
763 					  p_token1_value	=> sqlcode,
764 					  p_token2		=> g_sqlerrm_token,
765 					  p_token2_value	=> sqlerrm);
766 	   -- notify caller of an error as UNEXPETED error
767         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
768 
769   End validate_hidden_ind;
770 
771   -- Start of comments
772   --
773   -- Procedure Name  : validate_price_level_ind
774   -- Description     :
775   -- Business Rules  :
776   -- Parameters      :
777   -- Version         : 1.0
778   -- End of comments
779   PROCEDURE validate_price_level_ind(x_return_status OUT NOCOPY   VARCHAR2,
780                             	       p_clev_rec      IN    clev_rec_type) is
781   Begin
782 
783     IF (l_debug = 'Y') THEN
784        okc_debug.Set_Indentation('OKC_CLE_PVT');
785        okc_debug.log('3300: Entered validate_price_level_ind', 2);
786     END IF;
787 
788     -- initialize return status
789     x_return_status := OKC_API.G_RET_STS_SUCCESS;
790 
791     If (p_clev_rec.price_level_ind <> OKC_API.G_MISS_CHAR and
792   	   p_clev_rec.price_level_ind IS NOT NULL)
793     Then
794       -- check allowed values
795       If (upper(p_clev_rec.price_level_ind) NOT IN ('Y','N')) Then
796   	    OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
797 					    p_msg_name		=> g_invalid_value,
798 					    p_token1		=> g_col_name_token,
799 					    p_token1_value	=> 'price_level_ind');
800 	     -- notify caller of an error
801           x_return_status := OKC_API.G_RET_STS_ERROR;
802       End If;
803     End If;
804 
805     IF (l_debug = 'Y') THEN
806        okc_debug.log('3400: Leaving validate_price_level_ind with return status '||x_return_status, 2);
807        okc_debug.Reset_Indentation;
811     when OTHERS then
808     END IF;
809 
810   exception
812 
813     IF (l_debug = 'Y') THEN
814        okc_debug.log('3500: Exiting validate_price_level_ind:OTHERS Exception', 2);
815        okc_debug.Reset_Indentation;
816     END IF;
817 
818 	  -- store SQL error message on message stack
819   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
820 					  p_msg_name		=> g_unexpected_error,
821 					  p_token1		=> g_sqlcode_token,
822 					  p_token1_value	=> sqlcode,
823 					  p_token2		=> g_sqlerrm_token,
824 					  p_token2_value	=> sqlerrm);
825 	   -- notify caller of an error as UNEXPETED error
826         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
827 
828   End validate_price_level_ind;
829 
830   -- Start of comments
831   --
832   -- Procedure Name  : validate_inv_line_level_ind
833   -- Description     :
834   -- Business Rules  :
835   -- Parameters      :
836   -- Version         : 1.0
837   -- End of comments
838   PROCEDURE validate_inv_line_level_ind(x_return_status OUT NOCOPY   VARCHAR2,
839                             	     	    p_clev_rec      IN    clev_rec_type) is
840   Begin
841 
842     IF (l_debug = 'Y') THEN
843        okc_debug.Set_Indentation('OKC_CLE_PVT');
844        okc_debug.log('3600: Entered validate_inv_line_level_ind', 2);
845     END IF;
846 
847     -- initialize return status
848     x_return_status := OKC_API.G_RET_STS_SUCCESS;
849 
850     If (p_clev_rec.invoice_line_level_ind <> OKC_API.G_MISS_CHAR and
851   	   p_clev_rec.invoice_line_level_ind IS NOT NULL)
852     Then
853       -- check allowed values
854       If (upper(p_clev_rec.invoice_line_level_ind) NOT IN ('Y','N')) Then
855   	    OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
856 					    p_msg_name		=> g_invalid_value,
857 					    p_token1		=> g_col_name_token,
858 					    p_token1_value	=> 'invoice_line_level_ind');
859 	     -- notify caller of an error
860           x_return_status := OKC_API.G_RET_STS_ERROR;
861       End If;
862     End If;
863 
864     IF (l_debug = 'Y') THEN
865        okc_debug.log('3700: Leaving validate_inv_line_level_ind with return status '||x_return_status, 2);
866        okc_debug.Reset_Indentation;
867     END IF;
868 
869   exception
870     when OTHERS then
871 
872     IF (l_debug = 'Y') THEN
873        okc_debug.log('3800: Exiting validate_inv_line_level_ind:OTHERS Exception', 2);
874        okc_debug.Reset_Indentation;
875     END IF;
876 
877 	  -- store SQL error message on message stack
878   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
879 					  p_msg_name		=> g_unexpected_error,
880 					  p_token1		=> g_sqlcode_token,
881 					  p_token1_value	=> sqlcode,
882 					  p_token2		=> g_sqlerrm_token,
883 					  p_token2_value	=> sqlerrm);
884 	   -- notify caller of an error as UNEXPETED error
885         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
886 
887   End validate_inv_line_level_ind;
888 
889   -- Start of comments
890   --
891   -- Procedure Name  : validate_price_type
892   -- Description     :
893   -- Business Rules  :
894   -- Parameters      :
895   -- Version         : 1.0
896   -- End of comments
897   PROCEDURE validate_price_type(x_return_status OUT NOCOPY   VARCHAR2,
898                                 p_clev_rec      IN    clev_rec_type) is
899   Begin
900 
901     IF (l_debug = 'Y') THEN
902        okc_debug.Set_Indentation('OKC_CLE_PVT');
903        okc_debug.log('3900: Entered validate_price_type', 2);
904     END IF;
905 
906     -- initialize return status
907     x_return_status := OKC_API.G_RET_STS_SUCCESS;
908 
909     -- check data is in lookup table only if data is not null
910     If (p_clev_rec.price_type <> OKC_API.G_MISS_CHAR and
911   	   p_clev_rec.price_type IS NOT NULL)
912     Then
913       -- Check if the value is a valid code from lookup table
914       x_return_status:=OKC_UTIL.check_lookup_code('OKC_PRICE_TYPE',p_clev_rec.price_type);
915       If (x_return_status = OKC_API.G_RET_STS_ERROR) Then
916 	    --set error message in message stack
917 	    OKC_API.SET_MESSAGE(
918 			p_app_name	=> G_APP_NAME,
919 			p_msg_name	=> G_INVALID_VALUE,
920 			p_token1		=> G_COL_NAME_TOKEN,
921 			p_token1_value => 'PRICE_TYPE');
922 	    raise G_EXCEPTION_HALT_VALIDATION;
923       Elsif (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) Then
924 	    raise G_EXCEPTION_HALT_VALIDATION;
925       End If;
926     End If;
927 
928     IF (l_debug = 'Y') THEN
929        okc_debug.log('4000: Leaving validate_price_type with return status '||x_return_status, 2);
930        okc_debug.Reset_Indentation;
931     END IF;
932 
933   exception
934     when G_EXCEPTION_HALT_VALIDATION then
935 
936     IF (l_debug = 'Y') THEN
937        okc_debug.log('4100: Exiting validate_price_type:G_EXCEPTION_HALT_VALIDATION Exception', 2);
938        okc_debug.Reset_Indentation;
939     END IF;
940 
941       -- no processing necessary; validation can continue with next column
942       null;
943 
944     when OTHERS then
945 
946     IF (l_debug = 'Y') THEN
947        okc_debug.log('4200: Exiting validate_price_type:OTHERS Exception', 2);
948        okc_debug.Reset_Indentation;
949     END IF;
950 
951 	  -- store SQL error message on message stack
952   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
953 					  p_msg_name		=> g_unexpected_error,
954 					  p_token1		=> g_sqlcode_token,
955 					  p_token1_value	=> sqlcode,
956 					  p_token2		=> g_sqlerrm_token,
957 					  p_token2_value	=> sqlerrm);
961   End validate_price_type;
958 	   -- notify caller of an error as UNEXPETED error
959         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
960 
962 
963   -- Start of comments
964   --
965   -- Procedure Name  : validate_sts_code
966   -- Description     :
967   -- Business Rules  :
968   -- Parameters      :
969   -- Version         : 1.0
970   -- End of comments
971   PROCEDURE validate_sts_code(x_return_status OUT NOCOPY   VARCHAR2,
972                               p_clev_rec      IN    clev_rec_type) is
973 	l_dummy_var   VARCHAR2(1) := '?';
974 	CURSOR l_stsv_csr (p_code IN VARCHAR2) IS
975 	SELECT 'x'
976 	 FROM Okc_Statuses_B
977 	 WHERE okc_statuses_b.code  = p_code;
978   Begin
979 
980     IF (l_debug = 'Y') THEN
981        okc_debug.Set_Indentation('OKC_CLE_PVT');
982        okc_debug.log('4300: Entered validate_sts_code', 2);
983     END IF;
984 
985     -- initialize return status
986     x_return_status := OKC_API.G_RET_STS_SUCCESS;
987 
988     -- check that data exists
989     If (p_clev_rec.sts_code = OKC_API.G_MISS_CHAR or
990 	   p_clev_rec.sts_code IS NULL)
991     Then
992   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
993 					  p_msg_name		=> g_required_value,
994 					  p_token1		=> g_col_name_token,
995 					  p_token1_value	=> 'sts_code');
996 	   -- notify caller of an error
997         x_return_status := OKC_API.G_RET_STS_ERROR;
998 
999 	   -- halt validation
1000 	   raise G_EXCEPTION_HALT_VALIDATION;
1001     End If;
1002 
1003     -- Check foreign key
1004     Open l_stsv_csr(p_clev_rec.sts_code);
1005     Fetch l_stsv_csr into l_dummy_var;
1006     Close l_stsv_csr;
1007 
1008     If (l_dummy_var = '?') Then
1009 	  --set error message in message stack
1010     	  OKC_API.SET_MESSAGE(
1011 				    p_app_name      => g_app_name,
1012 				    p_msg_name      => g_no_parent_record,
1013 				    p_token1        => g_col_name_token,
1014 				    p_token1_value  => 'sts_code',
1015 				    p_token2        => g_child_table_token,
1016 				    p_token2_value  => G_VIEW,
1017 				    p_token3        => g_parent_table_token,
1018 				    p_token3_value  => 'OKC_STATUSES_V');
1019              -- notify caller of an error
1020           x_return_status := OKC_API.G_RET_STS_ERROR;
1021 
1022     End If;
1023 
1024     IF (l_debug = 'Y') THEN
1025        okc_debug.log('4400: Leaving validate_sts_code with return status '||x_return_status, 2);
1026        okc_debug.Reset_Indentation;
1027     END IF;
1028 
1029   exception
1030     when G_EXCEPTION_HALT_VALIDATION then
1031 
1032     IF (l_debug = 'Y') THEN
1033        okc_debug.log('4500: Exiting validate_sts_code:G_EXCEPTION_HALT_VALIDATION Exception', 2);
1034        okc_debug.Reset_Indentation;
1035     END IF;
1036 
1037       -- no processing necessary; validation can continue with next column
1038       null;
1039 
1040     when OTHERS then
1041 
1042     IF (l_debug = 'Y') THEN
1043        okc_debug.log('4600: Exiting validate_sts_code:OTHERS Exception', 2);
1044        okc_debug.Reset_Indentation;
1045     END IF;
1046 
1047 	  -- store SQL error message on message stack
1048   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1049 					  p_msg_name		=> g_unexpected_error,
1050 					  p_token1		=> g_sqlcode_token,
1051 					  p_token1_value	=> sqlcode,
1052 					  p_token2		=> g_sqlerrm_token,
1053 					  p_token2_value	=> sqlerrm);
1054 	   -- notify caller of an error as UNEXPETED error
1055         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1056 
1057   End validate_sts_code;
1058 
1059   -- Start of comments
1060   --
1061   -- Procedure Name  : validate_currency_code
1062   -- Description     :
1063   -- Business Rules  :
1064   -- Parameters      :
1065   -- Version         : 1.0
1066   -- End of comments
1067   PROCEDURE validate_currency_code(x_return_status OUT NOCOPY   VARCHAR2,
1068                                 p_clev_rec      IN    clev_rec_type) is
1069 
1070   l_dummy_var   VARCHAR2(1) := '?';
1071   Cursor l_fndv_csr Is
1072   		select 'x'
1073 		from FND_CURRENCIES_VL
1074 		where currency_code = p_clev_rec.currency_code
1075 		and enabled_flag = 'Y'
1076 		and sysdate between nvl(start_date_active,sysdate)
1077 					 and nvl(end_date_active,sysdate);
1078   Begin
1079 
1080     IF (l_debug = 'Y') THEN
1081        okc_debug.Set_Indentation('OKC_CLE_PVT');
1082        okc_debug.log('4700: Entered validate_currency_code', 2);
1083     END IF;
1084 
1085     -- initialize return status
1086     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1087 
1088     -- check data is in lookup table only if data is not null
1089     If (p_clev_rec.currency_code <> OKC_API.G_MISS_CHAR and
1090   	   p_clev_rec.currency_code IS NOT NULL)
1091     Then
1092       Open l_fndv_csr;
1093       Fetch l_fndv_csr Into l_dummy_var;
1094       Close l_fndv_csr;
1095 
1096       -- if l_dummy_var still set to default, data was not found
1097       If (l_dummy_var = '?') Then
1098   	    OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1099 					    p_msg_name		=> g_no_parent_record,
1100 					    p_token1			=> g_col_name_token,
1101 					    p_token1_value	=> 'currency_code',
1102 					    p_token2			=> g_child_table_token,
1103 					    p_token2_value	=> G_VIEW,
1104 					    p_token3			=> g_parent_table_token,
1105 					    p_token3_value	=> 'FND_CURRENCIES');
1106 	    -- notify caller of an error
1107          x_return_status := OKC_API.G_RET_STS_ERROR;
1108       End If;
1109     End If;
1110 
1111     IF (l_debug = 'Y') THEN
1115 
1112        okc_debug.log('4800: Leaving validate_currency_code with return status '||x_return_status, 2);
1113        okc_debug.Reset_Indentation;
1114     END IF;
1116   exception
1117     when OTHERS then
1118 
1119     IF (l_debug = 'Y') THEN
1120        okc_debug.log('4900: Exiting validate_currency_code:OTHERS Exception', 2);
1121        okc_debug.Reset_Indentation;
1122     END IF;
1123 
1124 	  -- store SQL error message on message stack
1125   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1126 					  p_msg_name		=> g_unexpected_error,
1127 					  p_token1		=> g_sqlcode_token,
1128 					  p_token1_value	=> sqlcode,
1129 					  p_token2		=> g_sqlerrm_token,
1130 					  p_token2_value	=> sqlerrm);
1131 	   -- notify caller of an error as UNEXPETED error
1132         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1133 
1134         -- verify that cursor was closed
1135         if l_fndv_csr%ISOPEN then
1136 	      close l_fndv_csr;
1137         end if;
1138 
1139   End validate_currency_code;
1140 
1141   -- Start of comments
1142   --
1143   -- Procedure Name  : validate_start_date
1144   -- Description     :
1145   -- Business Rules  :
1146   -- Parameters      :
1147   -- Version         : 1.0
1148   -- End of comments
1149   PROCEDURE validate_start_date(x_return_status OUT NOCOPY   VARCHAR2,
1150                             	  p_clev_rec      IN    clev_rec_type) is
1151 	l_start_date	DATE;
1152 	l_end_date	DATE;
1153 	l_not_found BOOLEAN;
1154 	no_header_found EXCEPTION;
1155 
1156 	-- Cursor to get header start and end dates
1157 	Cursor l_chrv_csr Is
1158 			SELECT START_DATE, END_DATE
1159                         --npalepu 08-11-2005 modified for bug # 4691662.
1160                         --Replaced table okc_k_headers_b with headers_All_b table
1161                         /* FROM OKC_K_HEADERS_B */
1162                         FROM OKC_K_HEADERS_ALL_B
1163                         --end npalepu
1164 			WHERE ID = p_clev_rec.dnz_chr_id;
1165 
1166 	-- Cursor to get parent line's start and end dates
1167 	Cursor l_clev_csr Is
1168 			SELECT START_DATE, END_DATE
1169 			FROM OKC_K_LINES_B
1170 			WHERE ID = p_clev_rec.cle_id;
1171   Begin
1172 
1173     IF (l_debug = 'Y') THEN
1174        okc_debug.Set_Indentation('OKC_CLE_PVT');
1175        okc_debug.log('5000: Entered validate_start_date', 2);
1176     END IF;
1177 
1178     -- initialize return status
1179     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1180 
1181     -- check that data exists
1182     If (p_clev_rec.start_date <> OKC_API.G_MISS_DATE and
1183   	   p_clev_rec.start_date IS NOT NULL)
1184     Then
1185 	   If (p_clev_rec.chr_id is not null and
1186 		  p_clev_rec.chr_id <> OKC_API.G_MISS_NUM)
1187 	   Then
1188 	      open l_chrv_csr;
1189 	      fetch l_chrv_csr into l_start_date, l_end_date;
1190 	      l_not_found := l_chrv_csr%NOTFOUND;
1191 	      close l_chrv_csr;
1192 	   Elsif (p_clev_rec.cle_id is not null and
1193 			p_clev_rec.cle_id <> OKC_API.G_MISS_NUM)
1194 	   Then
1195 	      open l_clev_csr;
1196 	      fetch l_clev_csr into l_start_date, l_end_date;
1197 	      l_not_found := l_clev_csr%NOTFOUND;
1198 	      close l_clev_csr;
1199 	   End If;
1200 
1201 	   If (l_not_found) Then
1202 		 x_return_status := OKC_API.G_RET_STS_ERROR;
1203 		 raise NO_HEADER_FOUND;
1204 	   End If;
1205 	   If (l_start_date IS NOT NULL and l_end_date IS NOT NULL) Then
1206 		 If (trunc(p_clev_rec.start_date) < trunc(l_start_date) OR
1207 			trunc(p_clev_rec.start_date) > trunc(l_end_date))
1208 		 Then
1209         		x_return_status := OKC_API.G_RET_STS_ERROR;
1210 		 End If;
1211 /* --Bug-1970094 --------------------------------------------------
1212 	   Elsif (l_start_date IS NOT NULL and
1213 			p_clev_rec.start_date < l_start_date)
1214 	   Then
1215 -------------------------------------------------------------------*/
1216         Elsif (l_start_date IS NOT NULL and
1217 	     trunc(p_clev_rec.start_date) < trunc(l_start_date))
1218         Then
1219         	 x_return_status := OKC_API.G_RET_STS_ERROR;
1220 	   End If;
1221     End If;
1222 
1223     If (x_return_status = OKC_API.G_RET_STS_ERROR) Then
1224   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1225 					  p_msg_name		=> 'OKC_WRONG_CHILD_DATE',
1226 					  p_token1          => 'VALUE1',
1227 					  p_token1_value	=> 'Line Start Date');
1228     End If;
1229 
1230     IF (l_debug = 'Y') THEN
1231        okc_debug.log('5100: Leaving validate_start_date with return status '||x_return_status, 2);
1232        okc_debug.Reset_Indentation;
1233     END IF;
1234 
1235   exception
1236     when NO_HEADER_FOUND then
1237 
1238     IF (l_debug = 'Y') THEN
1239        okc_debug.log('5200: Exiting validate_start_date:NO_HEADER_FOUND Exception', 2);
1240        okc_debug.Reset_Indentation;
1241     END IF;
1242 
1243 	  -- store SQL error message on message stack
1244   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1245 					  p_msg_name		=> 'OKC_NOT_FOUND',
1246 					  p_token1		=> 'VALUE1',
1247 					  p_token1_value	=> 'Start/End Dates',
1248 					  p_token2		=> 'VALUE2',
1249 					  p_token2_value	=> 'OKC_K_HEADERS_V');
1250     when OTHERS then
1251 
1252     IF (l_debug = 'Y') THEN
1253        okc_debug.log('5300: Exiting validate_start_date:OTHERS Exception', 2);
1254        okc_debug.Reset_Indentation;
1255     END IF;
1256 
1257 	  -- store SQL error message on message stack
1258   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1259 					  p_msg_name		=> g_unexpected_error,
1260 					  p_token1		=> g_sqlcode_token,
1261 					  p_token1_value	=> sqlcode,
1262 					  p_token2		=> g_sqlerrm_token,
1263 					  p_token2_value	=> sqlerrm);
1264 	   -- notify caller of an error as UNEXPETED error
1265         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1266 
1267   End validate_start_date;
1268 
1269   -- Start of comments
1270   --
1271   -- Procedure Name  : validate_end_date
1272   -- Description     :
1273   -- Business Rules  :
1274   -- Parameters      :
1275   -- Version         : 1.0
1276   -- End of comments
1277   PROCEDURE validate_end_date(x_return_status OUT NOCOPY   VARCHAR2,
1278                             	p_clev_rec      IN    clev_rec_type) is
1279 	l_start_date	DATE;
1280 	l_end_date	DATE;
1281 	l_not_found BOOLEAN;
1282 	no_header_found EXCEPTION;
1283 
1284 	-- Cursor to get header start and end dates
1285 	Cursor l_chrv_csr Is
1286 			SELECT START_DATE, END_DATE
1287                         --npalepu 08-11-2005 modified for bug # 4691662.
1288                         --Replaced table okc_k_headers_b with headers_All_b table
1289                         /* FROM OKC_K_HEADERS_B */
1290                         FROM OKC_K_HEADERS_ALL_B
1291                         --end npalepu
1292 			WHERE ID = p_clev_rec.dnz_chr_id;
1293 
1294 	-- Cursor to get parent line's start and end dates
1295 	Cursor l_clev_csr Is
1296 			SELECT START_DATE, END_DATE
1297 			FROM OKC_K_LINES_B
1298 			WHERE ID = p_clev_rec.cle_id;
1299   Begin
1300 
1301     IF (l_debug = 'Y') THEN
1302        okc_debug.Set_Indentation('OKC_CLE_PVT');
1303        okc_debug.log('5400: Entered validate_end_date', 2);
1304     END IF;
1305 
1306     -- initialize return status
1307     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1308 
1309     -- check that data exists
1310     If (p_clev_rec.end_date <> OKC_API.G_MISS_DATE and
1311   	   p_clev_rec.end_date IS NOT NULL)
1312     Then
1313 	   If (p_clev_rec.chr_id is not null and
1314 		  p_clev_rec.chr_id <> OKC_API.G_MISS_NUM)
1315 	   Then
1316 	      open l_chrv_csr;
1317 	      fetch l_chrv_csr into l_start_date, l_end_date;
1318 	      l_not_found := l_chrv_csr%NOTFOUND;
1319 	      close l_chrv_csr;
1320 	   Elsif (p_clev_rec.cle_id is not null and
1321 			p_clev_rec.cle_id <> OKC_API.G_MISS_NUM)
1322 	   Then
1323 	      open l_clev_csr;
1324 	      fetch l_clev_csr into l_start_date, l_end_date;
1325 	      l_not_found := l_clev_csr%NOTFOUND;
1326 	      close l_clev_csr;
1327 	   End If;
1328 
1329 	   If (l_not_found) Then
1330 		 x_return_status := OKC_API.G_RET_STS_ERROR;
1331 		 raise NO_HEADER_FOUND;
1332 	   End If;
1333 	   If (l_start_date IS NOT NULL and l_end_date IS NOT NULL) Then
1334 		 If (trunc(p_clev_rec.end_date) < trunc(l_start_date) OR
1335 			trunc(p_clev_rec.end_date) > trunc(l_end_date))
1336 		 Then
1337         		x_return_status := OKC_API.G_RET_STS_ERROR;
1338 		 End If;
1339 	   Elsif (l_end_date IS NOT NULL and
1340 	          trunc(p_clev_rec.end_date) > trunc(l_end_date))
1341 	   Then
1342         	 x_return_status := OKC_API.G_RET_STS_ERROR;
1343 	   End If;
1344     End If;
1345 
1346     If (x_return_status = OKC_API.G_RET_STS_ERROR) Then
1347   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1348 					  p_msg_name		=> 'OKC_WRONG_CHILD_DATE',
1349 					  p_token1          => 'VALUE1',
1350 					  p_token1_value	=> 'Line End Date');
1351     End If;
1352 
1353     IF (l_debug = 'Y') THEN
1354        okc_debug.log('5500: Leaving validate_end_date with return status '||x_return_status, 2);
1355        okc_debug.Reset_Indentation;
1356     END IF;
1357 
1358   exception
1359     when NO_HEADER_FOUND then
1360 
1361     IF (l_debug = 'Y') THEN
1362        okc_debug.log('5600: Exiting validate_end_date:NO_HEADER_FOUND Exception', 2);
1363        okc_debug.Reset_Indentation;
1364     END IF;
1365 
1366 	  -- store SQL error message on message stack
1367   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1368 					  p_msg_name		=> 'OKC_NOT_FOUND',
1369 					  p_token1		=> 'VALUE1',
1370 					  p_token1_value	=> 'Start/End Dates',
1371 					  p_token2		=> 'VALUE2',
1372 					  p_token2_value	=> 'OKC_K_HEADERS_V');
1373     when OTHERS then
1374 
1375     IF (l_debug = 'Y') THEN
1376        okc_debug.log('5700: Exiting validate_end_date:OTHERS Exception', 2);
1377        okc_debug.Reset_Indentation;
1378     END IF;
1379 
1380 	  -- store SQL error message on message stack
1381   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1382 					  p_msg_name		=> g_unexpected_error,
1383 					  p_token1		=> g_sqlcode_token,
1384 					  p_token1_value	=> sqlcode,
1385 					  p_token2		=> g_sqlerrm_token,
1386 					  p_token2_value	=> sqlerrm);
1387 	   -- notify caller of an error as UNEXPETED error
1388         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1389 
1390   End validate_end_date;
1391 
1392 
1393     -- Start of comments
1394   --
1395   -- Procedure Name  : validate_line_renewal_type
1396   -- Description     :
1397   -- Business Rules  :
1398   -- Parameters      :
1399   -- Version         : 1.0
1400   -- End of comments
1401   PROCEDURE validate_line_renewal_type (x_return_status OUT NOCOPY   VARCHAR2,
1402                                         p_clev_rec      IN    clev_rec_type) is
1403 
1404   Begin
1405 
1406     IF (l_debug = 'Y') THEN
1407        okc_debug.Set_Indentation('OKC_CLE_PVT');
1408        okc_debug.log('5711: Entered validate_line_renewal_type', 2);
1409     END IF;
1410 
1411     -- initialize return status
1412     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1413 
1414     -- check that data exists
1415     If (p_clev_rec.line_renewal_type_code <> OKC_API.G_MISS_CHAR or
1416   	   p_clev_rec.line_renewal_type_code IS NOT NULL)
1417     Then
1418     -- Check if the value is a valid code from lookup table
1419        x_return_status := OKC_UTIL.check_lookup_code('OKC_LINE_RENEWAL_TYPE',
1420 								      p_clev_rec.line_renewal_type_code);
1421 
1422        If (x_return_status = OKC_API.G_RET_STS_ERROR) Then
1423 	    --set error message in message stack
1424       	    OKC_API.SET_MESSAGE(
1425 			p_app_name	=> G_APP_NAME,
1426 			p_msg_name	=> G_INVALID_VALUE,
1427 			p_token1		=> G_COL_NAME_TOKEN,
1428 			p_token1_value => 'LINE_RENEWAL_TYPE');
1429 
1430         Elsif (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) Then
1431 	         raise G_EXCEPTION_HALT_VALIDATION;
1432         End If;
1433     End IF;
1434     IF (l_debug = 'Y') THEN
1435        okc_debug.log('5712: Exiting validate_line_renewal_type with return status '||x_return_status, 2);
1436        okc_debug.Reset_Indentation;
1437     END IF;
1438 
1439 
1440   exception
1441 
1442     when OTHERS then
1443 
1444     IF (l_debug = 'Y') THEN
1445        okc_debug.log('5713: Exiting validate_line_renewal_type:OTHERS Exception', 2);
1446        okc_debug.Reset_Indentation;
1447     END IF;
1448 
1449 	  -- store SQL error message on message stack
1450   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1451 					  p_msg_name		=> g_unexpected_error,
1452 					  p_token1		=> g_sqlcode_token,
1453 					  p_token1_value	=> sqlcode,
1454 					  p_token2		=> g_sqlerrm_token,
1455 					  p_token2_value	=> sqlerrm);
1456 	   -- notify caller of an error as UNEXPETED error
1457         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1458 
1459 
1460 
1461   End validate_line_renewal_type;
1462 
1463 
1464  ----------end rules validation
1465 
1466   PROCEDURE get_next_line_number(p_chr_id		IN NUMBER,
1467 						   p_cle_id		IN NUMBER,
1468 						   x_return_status OUT NOCOPY VARCHAR2,
1469 						   x_line_number OUT NOCOPY NUMBER) Is
1470 	-- cursor to get next line number if parent is header
1471 	Cursor l_clev_csr1 Is
1472 		select line_number
1473 		from OKC_K_LINES_B
1474 		where chr_id = p_chr_id;
1475 
1476 	-- cursor to get next line number if parent is another line
1477 	Cursor l_clev_csr2 Is
1478 		select line_number
1479 		from OKC_K_LINES_B
1480 		where cle_id = p_cle_id;
1481      l_line_number_n NUMBER;
1482   BEGIN
1483 
1484     IF (l_debug = 'Y') THEN
1485        okc_debug.Set_Indentation('OKC_CLE_PVT');
1486        okc_debug.log('5800: Entered get_next_line_number', 2);
1487     END IF;
1488 
1489      -- initialize return status
1490      x_return_status := OKC_API.G_RET_STS_SUCCESS;
1491 	x_line_number := 0;
1492 
1493 	If (p_chr_id is not null) Then
1494 	   -- get next line number in the first level of lines
1495 	   For l_rec in l_clev_csr1
1496 	   Loop
1497             Begin
1498 
1499     IF (l_debug = 'Y') THEN
1500        okc_debug.Set_Indentation('OKC_CLE_PVT');
1501        okc_debug.log('5900: Entered get_next_line_number', 2);
1502     END IF;
1503 
1504 		    l_line_number_n := to_number(l_rec.line_number);
1505 		    If (x_line_number < l_line_number_n) Then
1506 			   x_line_number := l_line_number_n;
1507               End If;
1508 
1509     IF (l_debug = 'Y') THEN
1510        okc_debug.log('6000: Leaving get_next_line_number', 2);
1511        okc_debug.Reset_Indentation;
1512     END IF;
1513 
1514 		  Exception
1515 		    When OTHERS Then
1516 
1517     IF (l_debug = 'Y') THEN
1518        okc_debug.log('6100: Exiting get_next_line_number:OTHERS Exception', 2);
1519        okc_debug.Reset_Indentation;
1520     END IF;
1521 
1522 			    NULL;
1523 		  End;
1524 	   End Loop;
1525 	Elsif (p_cle_id is not null) Then
1526 	   -- get next line number for this level of lines
1527 	   For l_rec in l_clev_csr2
1528 	   Loop
1529             Begin
1530 
1531     IF (l_debug = 'Y') THEN
1532        okc_debug.Set_Indentation('OKC_CLE_PVT');
1533        okc_debug.log('6200: Entered get_next_line_number', 2);
1534     END IF;
1535 
1536 		    l_line_number_n := to_number(l_rec.line_number);
1537 		    If (x_line_number < l_line_number_n) Then
1538 			   x_line_number := l_line_number_n;
1539               End If;
1540 
1541     IF (l_debug = 'Y') THEN
1542        okc_debug.log('6300: Leaving get_next_line_number', 2);
1543        okc_debug.Reset_Indentation;
1544     END IF;
1545 
1546 
1547 		  Exception
1548 		    When OTHERS Then
1549 
1550     IF (l_debug = 'Y') THEN
1551        okc_debug.log('6400: Exiting get_next_line_number:OTHERS Exception', 2);
1552        okc_debug.Reset_Indentation;
1553     END IF;
1554 
1555 			    NULL;
1556 		  End;
1557 	   End Loop;
1558 	End If;
1559 
1560 	x_line_number := x_line_number + 1;
1561 
1562     IF (l_debug = 'Y') THEN
1563        okc_debug.log('6500: Leaving get_next_line_number', 2);
1564        okc_debug.Reset_Indentation;
1565     END IF;
1566 
1567   exception
1568     when NO_DATA_FOUND then
1569 
1570     IF (l_debug = 'Y') THEN
1571        okc_debug.log('6600: Exiting get_next_line_number:NO_DATA_FOUND Exception', 2);
1572        okc_debug.Reset_Indentation;
1573     END IF;
1574 
1575 	  x_line_number := 1;
1576     when OTHERS then
1577 
1578     IF (l_debug = 'Y') THEN
1579        okc_debug.log('6700: Exiting get_next_line_number:OTHERS Exception', 2);
1580        okc_debug.Reset_Indentation;
1581     END IF;
1582 
1583 	  -- store SQL error message on message stack
1584   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1585 					  p_msg_name		=> g_unexpected_error,
1586 					  p_token1		=> g_sqlcode_token,
1587 					  p_token1_value	=> sqlcode,
1588 					  p_token2		=> g_sqlerrm_token,
1589 					  p_token2_value	=> sqlerrm);
1590 
1591 	   -- notify caller of an UNEXPETED error
1592 	   x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1593 
1594   END get_next_line_number;
1595 
1596 -- Start of comments
1597   --
1598   -- Procedure Name  : validate_curr_code_rnwd
1599   -- Description     :
1600   -- Business Rules  :
1601   -- Parameters      :
1602   -- Version         : 1.0
1603   -- End of comments
1604   PROCEDURE validate_curr_code_rnwd(x_return_status OUT NOCOPY   VARCHAR2,
1605                                 p_clev_rec      IN    clev_rec_type) is
1606 
1607   l_dummy_var   VARCHAR2(1) := '?';
1608   Cursor l_fndv_csr Is
1609   		select 'x'
1610 		from FND_CURRENCIES_VL
1611 		where currency_code = p_clev_rec.currency_code_renewed
1612 		and enabled_flag = 'Y'
1613 		and sysdate between nvl(start_date_active,sysdate)
1614 					 and nvl(end_date_active,sysdate);
1615   Begin
1616 
1617     IF (l_debug = 'Y') THEN
1618        okc_debug.Set_Indentation('OKC_CLE_PVT');
1619        okc_debug.log('6800: Entered validate_curr_code_rnwd', 2);
1620     END IF;
1621 
1622     -- initialize return status
1623     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1624 
1625     -- check data is in lookup table only if data is not null
1626     If (p_clev_rec.currency_code_renewed <> OKC_API.G_MISS_CHAR and
1627   	   p_clev_rec.currency_code_renewed IS NOT NULL)
1628     Then
1629       Open l_fndv_csr;
1630       Fetch l_fndv_csr Into l_dummy_var;
1631       Close l_fndv_csr;
1632 
1633       -- if l_dummy_var still set to default, data was not found
1634       If (l_dummy_var = '?') Then
1635   	    OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1636 					    p_msg_name		=> g_no_parent_record,
1637 					    p_token1			=> g_col_name_token,
1638 					    p_token1_value	=> 'currency_code_renewed',
1639 					    p_token2			=> g_child_table_token,
1640 					    p_token2_value	=> G_VIEW,
1641 					    p_token3			=> g_parent_table_token,
1642 					    p_token3_value	=> 'FND_CURRENCIES');
1643 	    -- notify caller of an error
1644          x_return_status := OKC_API.G_RET_STS_ERROR;
1645       End If;
1646     End If;
1647 
1648     IF (l_debug = 'Y') THEN
1649        okc_debug.log('6900: Leaving validate_curr_code_rnwd with return status '||x_return_status, 2);
1650        okc_debug.Reset_Indentation;
1651     END IF;
1652 
1653   exception
1654     when OTHERS then
1655 
1656     IF (l_debug = 'Y') THEN
1657        okc_debug.log('7000: Exiting validate_curr_code_rnwd:OTHERS Exception', 2);
1658        okc_debug.Reset_Indentation;
1659     END IF;
1660 
1661 	  -- store SQL error message on message stack
1662   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1663 					  p_msg_name		=> g_unexpected_error,
1664 					  p_token1		=> g_sqlcode_token,
1665 					  p_token1_value	=> sqlcode,
1666 					  p_token2		=> g_sqlerrm_token,
1667 					  p_token2_value	=> sqlerrm);
1668 	   -- notify caller of an error as UNEXPETED error
1669         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1670 
1671         -- verify that cursor was closed
1672         if l_fndv_csr%ISOPEN then
1673 	      close l_fndv_csr;
1674         end if;
1675 
1676   End validate_curr_code_rnwd;
1677 
1678   -- Procedure Name  : validate_orig_sys_code
1679   -- Description     :
1680   -- Business Rules  :
1681   -- Parameters      :
1682   -- Version         : 1.0
1683   -- End of comments
1684   PROCEDURE validate_orig_sys_code(x_return_status OUT NOCOPY   VARCHAR2,
1685                               p_clev_rec      IN    clev_rec_type) is
1686   Begin
1687 
1688     IF (l_debug = 'Y') THEN
1689        okc_debug.Set_Indentation('OKC_CLE_PVT');
1690        okc_debug.log('7100: Entered validate_orig_sys_code', 2);
1691     END IF;
1692 
1693     -- initialize return status
1694     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1695 
1696     -- enforce foreign key if data exists
1697     If (p_clev_rec.orig_system_source_code <> OKC_API.G_MISS_CHAR and
1698 	   p_clev_rec.orig_system_source_code IS NOT NULL)
1699     Then
1700       -- Check if the value is a valid code from lookup table
1701       x_return_status := OKC_UTIL.check_lookup_code('OKC_CONTRACT_SOURCES',
1702 					    p_clev_rec.orig_system_source_code);
1703       If (x_return_status = OKC_API.G_RET_STS_ERROR) Then
1704 	    --set error message in message stack
1705 	    OKC_API.SET_MESSAGE(
1706 			p_app_name	=> G_APP_NAME,
1707 			p_msg_name	=> G_INVALID_VALUE,
1708 			p_token1	=> G_COL_NAME_TOKEN,
1709 			p_token1_value => 'ORIG_SYSTEM_SOURCE_CODE');
1710 	    raise G_EXCEPTION_HALT_VALIDATION;
1711       Elsif (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) Then
1712 	    raise G_EXCEPTION_HALT_VALIDATION;
1713       End If;
1714     End If;
1715 
1716     IF (l_debug = 'Y') THEN
1717        okc_debug.log('7200: Leaving validate_orig_sys_code with return status '||x_return_status , 2);
1718        okc_debug.Reset_Indentation;
1719     END IF;
1720 
1721   exception
1722     when OTHERS then
1723 
1724     IF (l_debug = 'Y') THEN
1725        okc_debug.log('7300: Exiting validate_orig_sys_code:OTHERS Exception', 2);
1726        okc_debug.Reset_Indentation;
1727     END IF;
1728 
1729 	  -- store SQL error message on message stack
1730   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1731 					  p_msg_name		=> g_unexpected_error,
1732 					  p_token1		=> g_sqlcode_token,
1733 					  p_token1_value	=> sqlcode,
1734 					  p_token2		=> g_sqlerrm_token,
1735 					  p_token2_value	=> sqlerrm);
1736 	   -- notify caller of an error as UNEXPETED error
1737         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1738 
1739   End validate_orig_sys_code;
1740 
1741   -- Start of comments
1742   --
1743   -- Procedure Name  : validate_dnz_chr_id
1744   -- Description     :
1745   -- Business Rules  :
1746   -- Parameters      :
1747 
1748   /*********************** END HAND-CODED ********************************/
1749   -- Start of comments
1750   --
1751   -- Procedure Name  : validate_CONFIG_COMPLETE_YN
1752   -- Description     :
1753   -- Business Rules  :
1754   -- Parameters      :
1755   -- Version         : 1.0
1756   -- End of comments
1757   PROCEDURE validate_config_complete_yn(x_return_status OUT NOCOPY   VARCHAR2,
1758                             	        p_clev_rec      IN    clev_rec_type) is
1759   Begin
1760 
1761     IF (l_debug = 'Y') THEN
1762        okc_debug.Set_Indentation('OKC_CLE_PVT');
1763        okc_debug.log('7400: Entered validate_config_complete_yn', 2);
1764     END IF;
1765 
1766     -- initialize return status
1767     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1768 
1769     -- check that data exists
1770     If (p_clev_rec.config_complete_yn <> OKC_API.G_MISS_CHAR and
1771   	   p_clev_rec.config_complete_yn IS NOT NULL)
1772     Then
1773        If p_clev_rec.config_complete_yn NOT IN ('Y','N') Then
1774   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
1775 					     p_msg_name	=> g_invalid_value,
1776 					     p_token1		=> g_col_name_token,
1777 					     p_token1_value	=> 'config_complete_yn');
1778 	     -- notify caller of an error
1779           x_return_status := OKC_API.G_RET_STS_ERROR;
1780 
1781 	     -- halt validation
1782 	     raise G_EXCEPTION_HALT_VALIDATION;
1783 	 end if;
1784     End If;
1785 
1786     IF (l_debug = 'Y') THEN
1787        okc_debug.log('7500: Leaving validate_config_complete_yn with return status '||x_return_status, 2);
1788        okc_debug.Reset_Indentation;
1789     END IF;
1790 
1791   exception
1792     when G_EXCEPTION_HALT_VALIDATION then
1793 
1794     IF (l_debug = 'Y') THEN
1795        okc_debug.log('7600: Exiting validate_config_complete_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
1796        okc_debug.Reset_Indentation;
1797     END IF;
1798 
1799       -- no processing necessary; validation can continue with next column
1800       null;
1801 
1802     when OTHERS then
1803 
1804     IF (l_debug = 'Y') THEN
1805        okc_debug.log('7700: Exiting validate_config_complete_yn:OTHERS Exception', 2);
1809 	  -- store SQL error message on message stack
1806        okc_debug.Reset_Indentation;
1807     END IF;
1808 
1810   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1811 					  p_msg_name		=> g_unexpected_error,
1812 					  p_token1		=> g_sqlcode_token,
1813 					  p_token1_value	=> sqlcode,
1814 					  p_token2		=> g_sqlerrm_token,
1815 					  p_token2_value	=> sqlerrm);
1816 	   -- notify caller of an error as UNEXPETED error
1817         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1818 
1819   End validate_config_complete_yn;
1820 
1821 -------------------------------------------------------------------------------------
1822   -- Start of comments
1823   --
1824   -- Procedure Name  : validate_CONFIG_VALID_YN
1825   -- Description     :
1826   -- Business Rules  :
1827   -- Parameters      :
1828   -- Version         : 1.0
1829   -- End of comments
1830   PROCEDURE validate_config_valid_yn(x_return_status OUT NOCOPY   VARCHAR2,
1831                             	     p_clev_rec      IN    clev_rec_type) is
1832   Begin
1833 
1834     IF (l_debug = 'Y') THEN
1835        okc_debug.Set_Indentation('OKC_CLE_PVT');
1836        okc_debug.log('7800: Entered validate_config_valid_yn', 2);
1837     END IF;
1838 
1839     -- initialize return status
1840     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1841 
1842     -- check that data exists
1843     If (p_clev_rec.config_valid_yn <> OKC_API.G_MISS_CHAR and
1844   	   p_clev_rec.config_valid_yn IS NOT NULL)
1845     Then
1846        If p_clev_rec.config_valid_yn NOT IN ('Y','N') Then
1847   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
1848 					     p_msg_name	=> g_invalid_value,
1849 					     p_token1		=> g_col_name_token,
1850 					     p_token1_value	=> 'config_valid_yn');
1851 	     -- notify caller of an error
1852           x_return_status := OKC_API.G_RET_STS_ERROR;
1853 
1854 	     -- halt validation
1855 	     raise G_EXCEPTION_HALT_VALIDATION;
1856 	end if;
1857     End If;
1858 
1859     IF (l_debug = 'Y') THEN
1860        okc_debug.log('7900: Leaving validate_config_valid_yn with return status '||x_return_status, 2);
1861        okc_debug.Reset_Indentation;
1862     END IF;
1863 
1864   exception
1865     when G_EXCEPTION_HALT_VALIDATION then
1866 
1867     IF (l_debug = 'Y') THEN
1868        okc_debug.log('8000: Exiting validate_config_valid_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
1869        okc_debug.Reset_Indentation;
1870     END IF;
1871 
1872       -- no processing necessary; validation can continue with next column
1873       null;
1874 
1875     when OTHERS then
1876 
1877     IF (l_debug = 'Y') THEN
1878        okc_debug.log('8100: Exiting validate_config_valid_yn:OTHERS Exception', 2);
1879        okc_debug.Reset_Indentation;
1880     END IF;
1881 
1882 	  -- store SQL error message on message stack
1883   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1884 					  p_msg_name		=> g_unexpected_error,
1885 					  p_token1		=> g_sqlcode_token,
1886 					  p_token1_value	=> sqlcode,
1887 					  p_token2		=> g_sqlerrm_token,
1888 					  p_token2_value	=> sqlerrm);
1889 	   -- notify caller of an error as UNEXPETED error
1890         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1891 
1892   End validate_config_valid_yn;
1893 --------------------------------------------------------------------------
1894   -- Start of comments
1895   --
1896   -- Procedure Name  : validate_ITEM_TO_PRICE_YN
1897   -- Description     :
1898   -- Business Rules  :
1899   -- Parameters      :
1900   -- Version         : 1.0
1901   -- End of comments
1902   PROCEDURE validate_item_to_price_yn(x_return_status OUT NOCOPY   VARCHAR2,
1903                             	        p_clev_rec      IN    clev_rec_type) is
1904   Begin
1905 
1906     IF (l_debug = 'Y') THEN
1907        okc_debug.Set_Indentation('OKC_CLE_PVT');
1908        okc_debug.log('8200: Entered validate_item_to_price_yn', 2);
1909     END IF;
1910 
1911     -- initialize return status
1912     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1913 
1914     -- check that data exists
1915     If (p_clev_rec.item_to_price_yn <> OKC_API.G_MISS_CHAR and
1916   	   p_clev_rec.item_to_price_yn IS NOT NULL)
1917     Then
1918        If p_clev_rec.item_to_price_yn NOT IN ('Y','N') Then
1919   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
1920 					     p_msg_name	=> g_invalid_value,
1921 					     p_token1		=> g_col_name_token,
1922 					     p_token1_value	=> 'item_to_price_yn');
1923 	     -- notify caller of an error
1924           x_return_status := OKC_API.G_RET_STS_ERROR;
1925 
1926 	     -- halt validation
1927 	     raise G_EXCEPTION_HALT_VALIDATION;
1928 	end if;
1929     End If;
1930 
1931     IF (l_debug = 'Y') THEN
1932        okc_debug.log('8300: Leaving validate_item_to_price_yn with return status '||x_return_status, 2);
1933        okc_debug.Reset_Indentation;
1934     END IF;
1935 
1936   exception
1937     when G_EXCEPTION_HALT_VALIDATION then
1938 
1939     IF (l_debug = 'Y') THEN
1940        okc_debug.log('8400: Exiting validate_item_to_price_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
1941        okc_debug.Reset_Indentation;
1942     END IF;
1943 
1944       -- no processing necessary; validation can continue with next column
1945       null;
1946 
1947     when OTHERS then
1948 
1949     IF (l_debug = 'Y') THEN
1950        okc_debug.log('8500: Exiting validate_item_to_price_yn:OTHERS Exception', 2);
1951        okc_debug.Reset_Indentation;
1952     END IF;
1953 
1954 	  -- store SQL error message on message stack
1955   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
1956 					  p_msg_name		=> g_unexpected_error,
1957 					  p_token1		=> g_sqlcode_token,
1958 					  p_token1_value	=> sqlcode,
1962         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1959 					  p_token2		=> g_sqlerrm_token,
1960 					  p_token2_value	=> sqlerrm);
1961 	   -- notify caller of an error as UNEXPETED error
1963 
1964   End validate_item_to_price_yn;
1965 --------------------------------------------------------------------------
1966   -- Start of comments
1967   --
1968   -- Procedure Name  : validate_PRICE_BASIS_YN
1969   -- Description     :
1970   -- Business Rules  :
1971   -- Parameters      :
1972   -- Version         : 1.0
1973   -- End of comments
1974   PROCEDURE validate_price_basis_yn(x_return_status OUT NOCOPY   VARCHAR2,
1975                                     p_clev_rec      IN    clev_rec_type) is
1976   Begin
1977 
1978     IF (l_debug = 'Y') THEN
1979        okc_debug.Set_Indentation('OKC_CLE_PVT');
1980        okc_debug.log('8600: Entered validate_price_basis_yn', 2);
1981     END IF;
1982 
1983     -- initialize return status
1984     x_return_status := OKC_API.G_RET_STS_SUCCESS;
1985 
1986     -- check that data exists
1987     If (p_clev_rec.price_basis_yn <> OKC_API.G_MISS_CHAR and
1988   	   p_clev_rec.price_basis_yn IS NOT NULL)
1989     Then
1990        If p_clev_rec.price_basis_yn NOT IN ('Y','N') Then
1991   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
1992 					     p_msg_name	=> g_invalid_value,
1993 					     p_token1		=> g_col_name_token,
1994 					     p_token1_value	=> 'price_basis_yn');
1995 	     -- notify caller of an error
1996           x_return_status := OKC_API.G_RET_STS_ERROR;
1997 
1998 	     -- halt validation
1999 	     raise G_EXCEPTION_HALT_VALIDATION;
2000 	end if;
2001     End If;
2002 
2003     IF (l_debug = 'Y') THEN
2004        okc_debug.log('8700: Leaving validate_price_basis_yn with return status '||x_return_status, 2);
2005        okc_debug.Reset_Indentation;
2006     END IF;
2007 
2008   exception
2009     when G_EXCEPTION_HALT_VALIDATION then
2010 
2011     IF (l_debug = 'Y') THEN
2012        okc_debug.log('8800: Exiting validate_price_basis_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
2013        okc_debug.Reset_Indentation;
2014     END IF;
2015 
2016       -- no processing necessary; validation can continue with next column
2017       null;
2018 
2019     when OTHERS then
2020 
2021     IF (l_debug = 'Y') THEN
2022        okc_debug.log('8900: Exiting validate_price_basis_yn:OTHERS Exception', 2);
2023        okc_debug.Reset_Indentation;
2024     END IF;
2025 
2026 	  -- store SQL error message on message stack
2027   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2028 					  p_msg_name		=> g_unexpected_error,
2029 					  p_token1		=> g_sqlcode_token,
2030 					  p_token1_value	=> sqlcode,
2031 					  p_token2		=> g_sqlerrm_token,
2032 					  p_token2_value	=> sqlerrm);
2033 	   -- notify caller of an error as UNEXPETED error
2034         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2035 
2036   End validate_price_basis_yn;
2037 -----------------------------------------------------------------------------
2038   -- Start of comments
2039   --
2040   -- Procedure Name  : validate_CONFIG_ITEM_TYPE
2041   -- Description     :
2042   -- Business Rules  :
2043   -- Parameters      :
2044   -- Version         : 1.0
2045   -- End of comments
2046   PROCEDURE validate_config_item_type(x_return_status OUT NOCOPY   VARCHAR2,
2047                                       p_clev_rec      IN    clev_rec_type) is
2048   Begin
2049 
2050     IF (l_debug = 'Y') THEN
2051        okc_debug.Set_Indentation('OKC_CLE_PVT');
2052        okc_debug.log('9000: Entered validate_config_item_type', 2);
2053     END IF;
2054 
2055     -- initialize return status
2056     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2057 
2058     -- check that data exists
2059     If (p_clev_rec.config_item_type <> OKC_API.G_MISS_CHAR and
2060   	   p_clev_rec.config_item_type IS NOT NULL)
2061     Then
2062        If p_clev_rec.config_item_type NOT IN
2063           ('TOP_MODEL_LINE','TOP_BASE_LINE','CONFIG') then
2064          	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2065 					     p_msg_name	=> g_invalid_value,
2066 					     p_token1		=> g_col_name_token,
2067 					     p_token1_value	=> 'config_item_type');
2068 	     -- notify caller of an error
2069           x_return_status := OKC_API.G_RET_STS_ERROR;
2070 
2071 	     -- halt validation
2072 	     raise G_EXCEPTION_HALT_VALIDATION;
2073 	end if;
2074     End If;
2075 
2076     IF (l_debug = 'Y') THEN
2077        okc_debug.log('9100: Leaving validate_config_item_type with return status '||x_return_status, 2);
2078        okc_debug.Reset_Indentation;
2079     END IF;
2080 
2081   exception
2082     when G_EXCEPTION_HALT_VALIDATION then
2083 
2084     IF (l_debug = 'Y') THEN
2085        okc_debug.log('9200: Exiting validate_config_item_type:G_EXCEPTION_HALT_VALIDATION Exception', 2);
2086        okc_debug.Reset_Indentation;
2087     END IF;
2088 
2089       -- no processing necessary; validation can continue with next column
2090       null;
2091 
2092     when OTHERS then
2093 
2094     IF (l_debug = 'Y') THEN
2095        okc_debug.log('9300: Exiting validate_config_item_type:OTHERS Exception', 2);
2096        okc_debug.Reset_Indentation;
2097     END IF;
2098 
2099 	  -- store SQL error message on message stack
2100   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2101 					  p_msg_name		=> g_unexpected_error,
2102 					  p_token1		=> g_sqlcode_token,
2103 					  p_token1_value	=> sqlcode,
2104 					  p_token2		=> g_sqlerrm_token,
2105 					  p_token2_value	=> sqlerrm);
2106 	   -- notify caller of an error as UNEXPETED error
2107         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2108 
2109   End validate_config_item_type;
2110 -----------------------------------------------------------------------------
2111   -- Start of comments
2112   --
2113   -- Procedure Name  : validate_price_list_id
2114   -- Description     :
2115   -- Business Rules  :
2116   -- Parameters      :
2117   -- Version         : 1.0
2118   -- End of comments
2119   PROCEDURE validate_price_list_id(x_return_status OUT NOCOPY   VARCHAR2,
2120                                    p_clev_rec      IN    clev_rec_type) is
2121 
2122   l_dummy_var   VARCHAR2(1) := '?';
2123 -- Bug 2661571 ricagraw
2124 /*
2125   Cursor l_chrv_csr Is
2126   		select 'x'
2127   		from QP_PRICE_LISTS_V
2128   		where PRICE_LIST_ID = p_clev_rec.price_list_id;
2129 */
2130 -- Bug 2661571 ricagraw
2131 /*
2132 ** Bug #3312444, modified the cursor by removing the currency_code
2133 ** condition. This is not required as a pricelist can be enables in
2134 ** multiple currencies.
2135 */
2136 
2137 Cursor l_chrv_csr IS
2138 select 'x'
2139 from okx_list_headers_v
2140 WHERE id1 = p_clev_rec.price_list_id
2141 and ((  status = 'A' and p_clev_rec.pricing_date is null) OR
2142       (p_clev_rec.pricing_date is not null
2143        and p_clev_rec.pricing_date between
2144        nvl(start_date_active,p_clev_rec.pricing_date)
2145        and nvl(end_date_active,p_clev_rec.pricing_date)));
2146 -- and  currency_code = p_clev_rec.currency_code;
2147   Begin
2148 
2149     IF (l_debug = 'Y') THEN
2150        okc_debug.Set_Indentation('OKC_CLE_PVT');
2151        okc_debug.log('9400: Entered validate_price_list_id', 2);
2152     END IF;
2153 
2154     -- initialize return status
2155     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2156 
2157     -- enforce foreign key, if data exists
2158     If (p_clev_rec.price_list_id <> OKC_API.G_MISS_NUM and
2159   	   p_clev_rec.price_list_id IS NOT NULL)
2160     Then
2161       Open l_chrv_csr;
2162       Fetch l_chrv_csr Into l_dummy_var;
2163       Close l_chrv_csr;
2164 
2165       -- if l_dummy_var still set to default, data was not found
2166       If (l_dummy_var = '?') Then
2167   	    OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2168 					    p_msg_name	=> g_no_parent_record,
2169 					    p_token1	=> g_col_name_token,
2170 					    p_token1_value=> 'PRICE_LIST_ID',
2171 					    p_token2	=> g_child_table_token,
2172 					    p_token2_value=> G_VIEW,
2173 					    p_token3	=> g_parent_table_token,
2174 					    p_token3_value=> 'QP_PRICE_LISTS_V');
2175 	    -- notify caller of an error
2176          x_return_status := OKC_API.G_RET_STS_ERROR;
2177       End If;
2178     End If;
2179 
2180     IF (l_debug = 'Y') THEN
2181        okc_debug.log('9500: Leaving validate_price_list_id with return status '||x_return_status, 2);
2182        okc_debug.Reset_Indentation;
2183     END IF;
2184 
2185   exception
2186     when OTHERS then
2187 
2188     IF (l_debug = 'Y') THEN
2189        okc_debug.log('9600: Exiting validate_price_list_id:OTHERS Exception', 2);
2190        okc_debug.Reset_Indentation;
2191     END IF;
2192 
2193 	  -- store SQL error message on message stack
2194   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2195 					  p_msg_name		=> g_unexpected_error,
2196 					  p_token1		=> g_sqlcode_token,
2197 					  p_token1_value	=> sqlcode,
2198 					  p_token2		=> g_sqlerrm_token,
2199 					  p_token2_value	=> sqlerrm);
2200 	   -- notify caller of an error as UNEXPETED error
2201         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2202 
2203         -- verify that cursor was closed
2204         if l_chrv_csr%ISOPEN then
2205 	      close l_chrv_csr;
2206         end if;
2207 
2208   End validate_price_list_id;
2209 -----------------------------------------------------------------------------
2210   -- Start of comments
2211   --
2212   -- Procedure Name  : validate_PRICE_LIST_LINE_ID
2213   -- Description     :
2214   -- Business Rules  :
2215   -- Parameters      :
2216   -- Version         : 1.0
2217   -- End of comments
2218   PROCEDURE validate_price_list_line_id(x_return_status OUT NOCOPY   VARCHAR2,
2219                                         p_clev_rec      IN    clev_rec_type) is
2220 
2221   l_dummy_var   VARCHAR2(1) := '?';
2222 /*
2223   Cursor l_chrv_csr Is
2224   		select 'x'
2225   		from QP_PRICE_LIST_LINES_V
2226   		where PRICE_LIST_LINE_ID = p_clev_rec.price_list_line_id;
2227 
2228 Bug No-1993878
2229 
2230 		*/
2231 
2232 
2233   Cursor l_chrv_csr Is
2234   select 'x'
2235   from OKX_QP_LIST_LINES_V
2236   where ID1 = p_clev_rec.price_list_line_id;
2237 
2238   Begin
2239 
2240     IF (l_debug = 'Y') THEN
2241        okc_debug.Set_Indentation('OKC_CLE_PVT');
2242        okc_debug.log('9700: Entered validate_price_list_line_id', 2);
2243     END IF;
2244 
2245     -- initialize return status
2246     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2247 
2248     -- enforce foreign key, if data exists
2249     If (p_clev_rec.price_list_line_id <> OKC_API.G_MISS_NUM and
2250   	p_clev_rec.price_list_line_id IS NOT NULL)
2251     Then
2252       Open l_chrv_csr;
2253       Fetch l_chrv_csr Into l_dummy_var;
2254       Close l_chrv_csr;
2255 
2256       -- if l_dummy_var still set to default, data was not found
2257       If (l_dummy_var = '?') Then
2258   	    OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2259 					    p_msg_name	=> g_no_parent_record,
2260 					    p_token1	=> g_col_name_token,
2261 					    p_token1_value=> 'PRICE_LIST_LINE_ID',
2262 					    p_token2	=> g_child_table_token,
2263 					    p_token2_value=> G_VIEW,
2264 					    p_token3	=> g_parent_table_token,
2265 					    p_token3_value=> 'QP_PRICE_LIST_LINES_V');
2266 	    -- notify caller of an error
2267          x_return_status := OKC_API.G_RET_STS_ERROR;
2268       End If;
2269     End If;
2270 
2271     IF (l_debug = 'Y') THEN
2272        okc_debug.log('9800: Leaving validate_price_list_line_id with return status '||x_return_status, 2);
2273        okc_debug.Reset_Indentation;
2274     END IF;
2275 
2276   exception
2277     when OTHERS then
2278 
2279     IF (l_debug = 'Y') THEN
2280        okc_debug.log('9900: Exiting validate_price_list_line_id:OTHERS Exception', 2);
2281        okc_debug.Reset_Indentation;
2282     END IF;
2283 
2284 	  -- store SQL error message on message stack
2285   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2286 					  p_msg_name		=> g_unexpected_error,
2287 					  p_token1		=> g_sqlcode_token,
2288 					  p_token1_value	=> sqlcode,
2289 					  p_token2		=> g_sqlerrm_token,
2290 					  p_token2_value	=> sqlerrm);
2291 	   -- notify caller of an error as UNEXPETED error
2292         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2293 
2294         -- verify that cursor was closed
2295         if l_chrv_csr%ISOPEN then
2296 	      close l_chrv_csr;
2297         end if;
2298 
2299   End validate_price_list_line_id;
2300 -----------------------*
2301   -- Start of comments
2302   --
2303   -- Procedure Name  : validate_conf_top_mod_ln_id
2304   -- Description     :
2305   -- Business Rules  :
2306   -- Parameters      :
2307   -- Version         : 1.0
2308   -- End of comments
2309   PROCEDURE validate_conf_top_mod_ln_id(x_return_status OUT NOCOPY   VARCHAR2,
2310                             p_clev_rec      IN    clev_rec_type) is
2311 
2312    l_dummy_var   VARCHAR2(1) := '?';
2313    Cursor l_tml_id_csr Is
2314   		SELECT 'x'
2315   		FROM OKC_K_LINES_B
2316   		WHERE id = p_clev_rec.config_top_model_line_id
2317                 AND CONFIG_ITEM_TYPE = 'TOP_MODEL_LINE';
2318   Begin
2319 
2320     IF (l_debug = 'Y') THEN
2321        okc_debug.Set_Indentation('OKC_CLE_PVT');
2322        okc_debug.log('10000: Entered validate_conf_top_mod_ln_id', 2);
2323     END IF;
2324 
2325     -- initialize return status
2326     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2327 
2328     -- enforce foreign key, if data exists
2329     If (p_clev_rec.config_top_model_line_id <> OKC_API.G_MISS_NUM and
2330   	   p_clev_rec.config_top_model_line_id IS NOT NULL)
2331     Then
2332       Open l_tml_id_csr;
2333       Fetch l_tml_id_csr Into l_dummy_var;
2334       Close l_tml_id_csr;
2335 
2336       -- if l_dummy_var still set to default, data was not found
2337       If (l_dummy_var = '?') Then
2338   	    OKC_API.SET_MESSAGE(p_app_name      => g_app_name,
2339 				p_msg_name	=> g_no_parent_record,
2340 				p_token1	=> g_col_name_token,
2341 				p_token1_value  => 'CONFIG_TOP_MODEL_LINE_ID',
2342 				p_token2	=> g_child_table_token,
2343 				p_token2_value  => G_VIEW,
2344 				p_token3	=> g_parent_table_token,
2345 				p_token3_value  => 'OKC_K_LINES_V');
2346 	    -- notify caller of an error
2347          x_return_status := OKC_API.G_RET_STS_ERROR;
2348       End If;
2349     End If;
2350 
2351     IF (l_debug = 'Y') THEN
2352        okc_debug.log('10100: Leaving validate_conf_top_mod_ln_id with return status '||x_return_status, 2);
2353        okc_debug.Reset_Indentation;
2354     END IF;
2355 
2356   exception
2357     when OTHERS then
2358 
2359     IF (l_debug = 'Y') THEN
2360        okc_debug.log('10200: Exiting validate_conf_top_mod_ln_id:OTHERS Exception', 2);
2361        okc_debug.Reset_Indentation;
2362     END IF;
2363 
2364 	  -- store SQL error message on message stack
2365   	  OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2366 			      p_msg_name	=> g_unexpected_error,
2367 			      p_token1		=> g_sqlcode_token,
2368 			      p_token1_value	=> sqlcode,
2369 			      p_token2		=> g_sqlerrm_token,
2370 			      p_token2_value	=> sqlerrm);
2371 	   -- notify caller of an error as UNEXPETED error
2372         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2373 
2374         -- verify that cursor was closed
2375         if l_tml_id_csr%ISOPEN then
2376 	      close l_tml_id_csr;
2377         end if;
2378 
2379   End validate_conf_top_mod_ln_id;
2380   ----------------------------------------------
2381   -- Validate_Attributes for: PH_PRICING_TYPE --
2382   ----------------------------------------------
2383   PROCEDURE validate_ph_pricing_type(
2384             x_return_status  OUT  NOCOPY VARCHAR2,
2385             p_clev_rec       IN   clev_rec_type) IS
2386     l_dummy_var   VARCHAR2(1) := '?';
2387     Cursor l_tmp_csr Is
2388   		SELECT 'x'
2389   		FROM FND_LOOKUPS
2390   		WHERE LOOKUP_CODE = p_clev_rec.ph_pricing_type
2391                 AND LOOKUP_TYPE='OKC_PH_LINE_PRICE_TYPE';
2392   BEGIN
2393     IF (l_debug = 'Y') THEN
2394        okc_debug.Set_Indentation('OKC_CLE_PVT');
2395        okc_debug.log('10000: Entered validate_ph_pricing_type', 2);
2396     END IF;
2397 
2398     -- initialize return status
2399     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2400 
2401     -- enforce foreign key, if data exists
2402     IF (p_clev_rec.ph_pricing_type <> OKC_API.G_MISS_CHAR AND
2403         p_clev_rec.ph_pricing_type IS NOT NULL)
2404     THEN
2405       Open l_tmp_csr;
2406       Fetch l_tmp_csr Into l_dummy_var;
2407       Close l_tmp_csr;
2408 
2409       -- if l_dummy_var still set to default, data was not found
2410       If (l_dummy_var = '?') Then
2411   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2412 					     p_msg_name	=> g_invalid_value,
2413 					     p_token1		=> g_col_name_token,
2414 					     p_token1_value	=> 'ph_pricing_type');
2415          x_return_status := OKC_API.G_RET_STS_ERROR;
2416 	       -- halt validation
2417          raise G_EXCEPTION_HALT_VALIDATION;
2418       END IF;
2419     END IF;
2420 
2421     IF (l_debug = 'Y') THEN
2422        okc_debug.log('10100: Leaving validate_ph_pricing_type with return status '||x_return_status, 2);
2423        okc_debug.Reset_Indentation;
2424     END IF;
2425 
2426   EXCEPTION
2427     when G_EXCEPTION_HALT_VALIDATION then
2428 
2429     IF (l_debug = 'Y') THEN
2430        okc_debug.log('8400: Exiting validate_item_to_price_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
2431        okc_debug.Reset_Indentation;
2432     END IF;
2433 
2434       -- no processing necessary; validation can continue with next column
2435       null;
2436 
2437     WHEN OTHERS THEN
2438 
2439     IF (l_debug = 'Y') THEN
2440        okc_debug.log('10200: Exiting validate_ph_pricing_type:OTHERS Exception', 2);
2441        okc_debug.Reset_Indentation;
2442     END IF;
2443 
2444 	  -- store SQL error message on message stack
2445       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
2446                           ,p_msg_name     => G_UNEXPECTED_ERROR
2447                           ,p_token1       => G_SQLCODE_TOKEN
2448                           ,p_token1_value => SQLCODE
2449                           ,p_token2       => G_SQLERRM_TOKEN
2450                           ,p_token2_value => SQLERRM);
2451       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2452   END validate_ph_pricing_type;
2453   ---------------------------------------------------
2454   -- Validate_Attributes for: PH_PRICE_BREAK_BASIS --
2455   ---------------------------------------------------
2456   PROCEDURE validate_ph_price_break_basis(
2457             x_return_status  OUT  NOCOPY VARCHAR2,
2458             p_clev_rec       IN   clev_rec_type) IS
2459     l_dummy_var   VARCHAR2(1) := '?';
2460     Cursor l_tmp_csr Is
2461   		SELECT 'x'
2462   		FROM FND_LOOKUPS
2463   		WHERE LOOKUP_CODE = p_clev_rec.ph_price_break_basis
2464                 AND LOOKUP_TYPE='OKC_PH_PRICE_BREAK_BASIS';
2465   BEGIN
2466     IF (l_debug = 'Y') THEN
2467        okc_debug.Set_Indentation('OKC_CLE_PVT');
2468        okc_debug.log('10000: Entered validate_ph_price_break_basis', 2);
2469     END IF;
2470 
2471     -- initialize return status
2472     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2473 
2474     -- enforce foreign key, if data exists
2475     IF (p_clev_rec.ph_price_break_basis <> OKC_API.G_MISS_CHAR AND
2476         p_clev_rec.ph_price_break_basis IS NOT NULL)
2477     THEN
2478       Open l_tmp_csr;
2479       Fetch l_tmp_csr Into l_dummy_var;
2480       Close l_tmp_csr;
2481 
2482       -- if l_dummy_var still set to default, data was not found
2483       If (l_dummy_var = '?') Then
2484   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2485 					     p_msg_name	=> g_invalid_value,
2486 					     p_token1		=> g_col_name_token,
2487 					     p_token1_value	=> 'ph_price_break_basis');
2488          x_return_status := OKC_API.G_RET_STS_ERROR;
2489 	       -- halt validation
2490          raise G_EXCEPTION_HALT_VALIDATION;
2491       END IF;
2492     END IF;
2493 
2494     IF (l_debug = 'Y') THEN
2495        okc_debug.log('10100: Leaving validate_ph_price_break_basis with return status '||x_return_status, 2);
2496        okc_debug.Reset_Indentation;
2497     END IF;
2498 
2499   EXCEPTION
2500     when G_EXCEPTION_HALT_VALIDATION then
2501 
2502     IF (l_debug = 'Y') THEN
2503        okc_debug.log('8400: Exiting validate_item_to_price_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
2504        okc_debug.Reset_Indentation;
2505     END IF;
2506 
2507       -- no processing necessary; validation can continue with next column
2508       null;
2509 
2510     WHEN OTHERS THEN
2511 
2512     IF (l_debug = 'Y') THEN
2513        okc_debug.log('10200: Exiting validate_ph_price_break_basis:OTHERS Exception', 2);
2514        okc_debug.Reset_Indentation;
2515     END IF;
2516 
2517 	  -- store SQL error message on message stack
2518       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
2519                           ,p_msg_name     => G_UNEXPECTED_ERROR
2520                           ,p_token1       => G_SQLCODE_TOKEN
2521                           ,p_token1_value => SQLCODE
2522                           ,p_token2       => G_SQLERRM_TOKEN
2523                           ,p_token2_value => SQLERRM);
2524       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2525   END validate_ph_price_break_basis;
2526   -------------------------------------------------
2527   -- Validate_Attributes for: PH_QP_REFERENCE_ID --
2528   -------------------------------------------------
2529   PROCEDURE validate_ph_qp_reference_id(
2530     x_return_status                OUT NOCOPY VARCHAR2,
2531             p_clev_rec       IN   clev_rec_type) IS
2532     l_dummy_var   VARCHAR2(1) := '?';
2533     Cursor l_tmp_1_csr Is
2534   		SELECT 'x'
2535   		FROM QP_LIST_HEADERS_B
2536   		WHERE LIST_HEADER_ID = p_clev_rec.ph_qp_reference_id;
2537     Cursor l_tmp_2_csr Is
2538   		SELECT 'x'
2539   		FROM QP_LIST_LINES
2540   		WHERE LIST_LINE_ID = p_clev_rec.ph_qp_reference_id;
2541   BEGIN
2542     IF (l_debug = 'Y') THEN
2543        okc_debug.Set_Indentation('OKC_CLE_PVT');
2544        okc_debug.log('10000: Entered validate_ph_qp_reference_id', 2);
2545     END IF;
2546 
2547     -- initialize return status
2548     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2549 
2550     -- enforce foreign key, if data exists
2551     IF (p_clev_rec.ph_qp_reference_id <> OKC_API.G_MISS_NUM AND
2552         p_clev_rec.ph_qp_reference_id IS NOT NULL)
2553     THEN
2554       IF p_clev_rec.cle_id IS NULL THEN -- top level line should point to QP_LIST_HEADERS
2555         Open l_tmp_1_csr;
2556         Fetch l_tmp_1_csr Into l_dummy_var;
2557         Close l_tmp_1_csr;
2558        ELSE -- subline should point to QP_LIST_LINES
2559         Open l_tmp_2_csr;
2560         Fetch l_tmp_2_csr Into l_dummy_var;
2561         Close l_tmp_2_csr;
2562       END IF;
2563 
2564       -- if l_dummy_var still set to default, data was not found
2565       If (l_dummy_var = '?') Then
2566   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2567 					     p_msg_name	=> g_invalid_value,
2568 					     p_token1		=> g_col_name_token,
2569 					     p_token1_value	=> 'ph_qp_reference_id');
2570          x_return_status := OKC_API.G_RET_STS_ERROR;
2571 	       -- halt validation
2572          raise G_EXCEPTION_HALT_VALIDATION;
2573       END IF;
2574     END IF;
2575 
2576     IF (l_debug = 'Y') THEN
2577        okc_debug.log('10100: Leaving validate_ph_qp_reference_id with return status '||x_return_status, 2);
2578        okc_debug.Reset_Indentation;
2579     END IF;
2580 
2581   EXCEPTION
2582     when G_EXCEPTION_HALT_VALIDATION then
2583 
2584     IF (l_debug = 'Y') THEN
2585        okc_debug.log('8400: Exiting validate_item_to_price_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
2586        okc_debug.Reset_Indentation;
2587     END IF;
2588 
2589       -- no processing necessary; validation can continue with next column
2590       null;
2591 
2592     WHEN OTHERS THEN
2593 
2594     IF (l_debug = 'Y') THEN
2595        okc_debug.log('10200: Exiting validate_ph_qp_reference_id:OTHERS Exception', 2);
2596        okc_debug.Reset_Indentation;
2597     END IF;
2598 
2599 	  -- store SQL error message on message stack
2600       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
2601                           ,p_msg_name     => G_UNEXPECTED_ERROR
2602                           ,p_token1       => G_SQLCODE_TOKEN
2603                           ,p_token1_value => SQLCODE
2604                           ,p_token2       => G_SQLERRM_TOKEN
2605                           ,p_token2_value => SQLERRM);
2606       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2607   END validate_ph_qp_reference_id;
2608   -------------------------------------------------
2609   -- Validate_Attributes for: PH_ENFORCE_PRICE_LIST_YN --
2610   -------------------------------------------------
2611   PROCEDURE validate_ph_enforce_price_list(
2612             x_return_status OUT NOCOPY   VARCHAR2,
2613             p_clev_rec      IN    clev_rec_type) is
2614   Begin
2615 
2616     IF (l_debug = 'Y') THEN
2617        okc_debug.Set_Indentation('OKC_CLE_PVT');
2618        okc_debug.log('8200: Entered validate_ph_enforce_price_list_yn', 2);
2619     END IF;
2620 
2621     -- initialize return status
2622     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2623 
2624     -- check that data exists
2625     If (p_clev_rec.ph_enforce_price_list_yn <> OKC_API.G_MISS_CHAR and
2626   	   p_clev_rec.ph_enforce_price_list_yn IS NOT NULL)
2627     Then
2628        If p_clev_rec.ph_enforce_price_list_yn NOT IN ('Y','N') Then
2629   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2630 					     p_msg_name	=> g_invalid_value,
2631 					     p_token1		=> g_col_name_token,
2632 					     p_token1_value	=> 'ph_enforce_price_list_yn');
2633 	     -- notify caller of an error
2634           x_return_status := OKC_API.G_RET_STS_ERROR;
2635 
2636 	     -- halt validation
2637 	     raise G_EXCEPTION_HALT_VALIDATION;
2638 	end if;
2639     End If;
2640 
2641     IF (l_debug = 'Y') THEN
2642        okc_debug.log('8300: Leaving validate_ph_enforce_price_list_yn with return status '||x_return_status, 2);
2643        okc_debug.Reset_Indentation;
2644     END IF;
2645 
2646   exception
2647     when G_EXCEPTION_HALT_VALIDATION then
2648 
2649     IF (l_debug = 'Y') THEN
2650        okc_debug.log('8400: Exiting validate_ph_enforce_price_list_yn:G_EXCEPTION_HALT_VALIDATION Exception', 2);
2651        okc_debug.Reset_Indentation;
2652     END IF;
2653 
2654       -- no processing necessary; validation can continue with next column
2655       null;
2656 
2657     when OTHERS then
2658 
2659     IF (l_debug = 'Y') THEN
2660        okc_debug.log('8500: Exiting validate_ph_enforce_price_list_yn:OTHERS Exception', 2);
2661        okc_debug.Reset_Indentation;
2662     END IF;
2663 
2664 	  -- store SQL error message on message stack
2665   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2666 					  p_msg_name		=> g_unexpected_error,
2667 					  p_token1		=> g_sqlcode_token,
2668 					  p_token1_value	=> sqlcode,
2669 					  p_token2		=> g_sqlerrm_token,
2670 					  p_token2_value	=> sqlerrm);
2671 	   -- notify caller of an error as UNEXPETED error
2672         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2673 
2674   End validate_ph_enforce_price_list;
2675   -------------------------------------------------
2676   -- Validate_Attributes for: PH_INTEGRATED_WITH_QP --
2677   -------------------------------------------------
2678   PROCEDURE validate_ph_integrated_with_qp(
2679             x_return_status OUT NOCOPY   VARCHAR2,
2680             p_clev_rec      IN    clev_rec_type) is
2681   Begin
2682 
2683     IF (l_debug = 'Y') THEN
2684        okc_debug.Set_Indentation('OKC_CLE_PVT');
2685        okc_debug.log('8200: Entered validate_ph_integrated_with_qp', 2);
2686     END IF;
2687 
2688     -- initialize return status
2689     x_return_status := OKC_API.G_RET_STS_SUCCESS;
2690 
2691     -- check that data exists
2692     If (p_clev_rec.ph_integrated_with_qp <> OKC_API.G_MISS_CHAR and
2693   	   p_clev_rec.ph_integrated_with_qp IS NOT NULL)
2694     Then
2695        If p_clev_rec.ph_integrated_with_qp NOT IN ('Y','N') Then
2696   	     OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
2697 					     p_msg_name	=> g_invalid_value,
2698 					     p_token1		=> g_col_name_token,
2699 					     p_token1_value	=> 'ph_integrated_with_qp');
2700 	     -- notify caller of an error
2701           x_return_status := OKC_API.G_RET_STS_ERROR;
2702 
2703 	     -- halt validation
2704 	     raise G_EXCEPTION_HALT_VALIDATION;
2705 	end if;
2706     End If;
2707 
2708     IF (l_debug = 'Y') THEN
2709        okc_debug.log('8300: Leaving validate_ph_integrated_with_qp with return status '||x_return_status, 2);
2710        okc_debug.Reset_Indentation;
2711     END IF;
2712 
2713   exception
2714     when G_EXCEPTION_HALT_VALIDATION then
2715 
2716     IF (l_debug = 'Y') THEN
2717        okc_debug.log('8400: Exiting validate_ph_integrated_with_qp:G_EXCEPTION_HALT_VALIDATION Exception', 2);
2718        okc_debug.Reset_Indentation;
2719     END IF;
2720 
2721       -- no processing necessary; validation can continue with next column
2722       null;
2723 
2724     when OTHERS then
2725 
2726     IF (l_debug = 'Y') THEN
2727        okc_debug.log('8500: Exiting validate_ph_integrated_with_qp:OTHERS Exception', 2);
2728        okc_debug.Reset_Indentation;
2729     END IF;
2730 
2731 	  -- store SQL error message on message stack
2732   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
2733 					  p_msg_name		=> g_unexpected_error,
2734 					  p_token1		=> g_sqlcode_token,
2735 					  p_token1_value	=> sqlcode,
2736 					  p_token2		=> g_sqlerrm_token,
2737 					  p_token2_value	=> sqlerrm);
2738 	   -- notify caller of an error as UNEXPETED error
2739         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2740 
2741   End validate_ph_integrated_with_qp;
2742 ---------------------------------------------------------------------------
2743   -- FUNCTION get_seq_id
2744   ---------------------------------------------------------------------------
2745   FUNCTION get_seq_id RETURN NUMBER IS
2746   BEGIN
2747 
2748     RETURN(okc_p_util.raw_to_number(sys_guid()));
2749 
2750   END get_seq_id;
2751 
2752   ---------------------------------------------------------------------------
2753   -- PROCEDURE qc
2754   ---------------------------------------------------------------------------
2755   PROCEDURE qc IS
2756   BEGIN
2757 
2758     null;
2759 
2760   END qc;
2761 
2762   ---------------------------------------------------------------------------
2763   -- PROCEDURE change_version
2764   ---------------------------------------------------------------------------
2765   PROCEDURE change_version IS
2766   BEGIN
2767 
2768     null;
2769 
2770   END change_version;
2771 
2772   ---------------------------------------------------------------------------
2773   -- PROCEDURE api_copy
2774   ---------------------------------------------------------------------------
2775   PROCEDURE api_copy IS
2776   BEGIN
2777 
2778     null;
2779 
2780   END api_copy;
2781 
2782   ---------------------------------------------------------------------------
2783   -- PROCEDURE add_language
2784   ---------------------------------------------------------------------------
2785   PROCEDURE add_language IS
2786   BEGIN
2787 
2788     IF (l_debug = 'Y') THEN
2789        okc_debug.Set_Indentation('OKC_CLE_PVT');
2790        okc_debug.log('10700: Entered add_language', 2);
2791     END IF;
2792 
2793 /* Mar/19/03 requested by Ric Ginsberg */
2794 /* The following delete and update statements are commented out */
2795 /* as a quick workaround to fix the time-consuming table handler issue */
2796 /* Eventually we'll need to turn them into a separate fix_language procedure */
2797 /*
2798 
2799     DELETE FROM OKC_K_LINES_TL T
2800      WHERE NOT EXISTS (
2801         SELECT NULL
2802           FROM OKC_K_LINES_B B
2803          WHERE B.ID = T.ID
2804         );
2805 
2806     UPDATE OKC_K_LINES_TL T SET (
2807         NAME,
2808         COMMENTS,
2809         ITEM_DESCRIPTION,
2810         OKE_BOE_DESCRIPTION,
2811         COGNOMEN,
2812         BLOCK23TEXT) = (SELECT
2813                                   B.NAME,
2814                                   B.COMMENTS,
2815                                   B.ITEM_DESCRIPTION,
2816 				  B.OKE_BOE_DESCRIPTION,
2817 				  B.COGNOMEN,
2818                                   B.BLOCK23TEXT
2819                                 FROM OKC_K_LINES_TL B
2820                                WHERE B.ID = T.ID
2821                                  AND B.LANGUAGE = T.SOURCE_LANG)
2822       WHERE (
2823               T.ID,
2824               T.LANGUAGE)
2825           IN (SELECT
2826                   SUBT.ID,
2827                   SUBT.LANGUAGE
2828                 FROM OKC_K_LINES_TL SUBB, OKC_K_LINES_TL SUBT
2829                WHERE SUBB.ID = SUBT.ID
2830                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
2831                  AND (SUBB.NAME <> SUBT.NAME
2832                       OR SUBB.COMMENTS <> SUBT.COMMENTS
2833                       OR SUBB.ITEM_DESCRIPTION <> SUBT.ITEM_DESCRIPTION
2834                       OR SUBB.OKE_BOE_DESCRIPTION <> SUBT.OKE_BOE_DESCRIPTION
2835                       OR SUBB.COGNOMEN <> SUBT.COGNOMEN
2836                       OR SUBB.BLOCK23TEXT <> SUBT.BLOCK23TEXT
2837                       OR (SUBB.NAME IS NULL AND SUBT.NAME IS NOT NULL)
2838                       OR (SUBB.NAME IS NOT NULL AND SUBT.NAME IS NULL)
2839                       OR (SUBB.COMMENTS IS NULL AND SUBT.COMMENTS IS NOT NULL)
2840                       OR (SUBB.COMMENTS IS NOT NULL AND SUBT.COMMENTS IS NULL)
2841                       OR (SUBB.ITEM_DESCRIPTION IS NULL AND SUBT.ITEM_DESCRIPTION IS NOT NULL)
2842                       OR (SUBB.ITEM_DESCRIPTION IS NOT NULL AND SUBT.ITEM_DESCRIPTION IS NULL)
2843                       OR (SUBB.OKE_BOE_DESCRIPTION IS NULL AND SUBT.OKE_BOE_DESCRIPTION IS NOT NULL)
2844                       OR (SUBB.OKE_BOE_DESCRIPTION IS NOT NULL AND SUBT.OKE_BOE_DESCRIPTION IS NULL)
2845                       OR (SUBB.COGNOMEN IS NULL AND SUBT.COGNOMEN IS NOT NULL)
2846                       OR (SUBB.COGNOMEN IS NOT NULL AND SUBT.COGNOMEN IS NULL)
2847                       OR (SUBB.BLOCK23TEXT IS NULL AND SUBT.BLOCK23TEXT IS NOT NULL)
2848                       OR (SUBB.BLOCK23TEXT IS NOT NULL AND SUBT.BLOCK23TEXT IS NULL)
2849               ));
2850 */
2851 /* Modifying Insert as per performance guidelines given in bug 3723874 */
2852     INSERT /*+ append parallel(tt) */ INTO OKC_K_LINES_TL tt(
2853         ID,
2854         LANGUAGE,
2855         SOURCE_LANG,
2856         SFWT_FLAG,
2857         NAME,
2858         COMMENTS,
2859         ITEM_DESCRIPTION,
2860         OKE_BOE_DESCRIPTION,
2861         COGNOMEN,
2862         BLOCK23TEXT,
2863         CREATED_BY,
2864         CREATION_DATE,
2865         LAST_UPDATED_BY,
2866         LAST_UPDATE_DATE,
2867         LAST_UPDATE_LOGIN)
2868       select /*+ parallel(v) parallel(t) use_nl(t)  */  v.* from
2869       (SELECT  /*+ no_merge ordered parallel(b) */
2870             B.ID,
2871             L.LANGUAGE_CODE,
2872             B.SOURCE_LANG,
2873             B.SFWT_FLAG,
2874             B.NAME,
2875             B.COMMENTS,
2876             B.ITEM_DESCRIPTION,
2877      	    B.OKE_BOE_DESCRIPTION,
2878      	    B.COGNOMEN,
2879             B.BLOCK23TEXT,
2880             B.CREATED_BY,
2881             B.CREATION_DATE,
2882             B.LAST_UPDATED_BY,
2883             B.LAST_UPDATE_DATE,
2884             B.LAST_UPDATE_LOGIN
2885         FROM OKC_K_LINES_TL B, FND_LANGUAGES L
2886        WHERE L.INSTALLED_FLAG IN ('I', 'B')
2887          AND B.LANGUAGE = USERENV('LANG')
2888 	 ) v , OKC_K_LINES_TL t
2889          WHERE t.ID(+) = v.ID
2890          AND t.LANGUAGE(+) = v.LANGUAGE_CODE
2891 	 AND t.id IS NULL;
2892 
2893 /* Commenting delete and update for bug 3723874 */
2894 /*
2895     DELETE FROM OKC_K_LINES_TLH T
2896      WHERE NOT EXISTS (
2897         SELECT NULL
2898           FROM OKC_K_LINES_BH B
2899          WHERE B.ID = T.ID
2900          AND T.MAJOR_VERSION = B.MAJOR_VERSION
2901         );
2902 
2903     UPDATE OKC_K_LINES_TLH T SET (
2904         NAME,
2905         COMMENTS,
2906         ITEM_DESCRIPTION,
2907         OKE_BOE_DESCRIPTION,
2908         COGNOMEN,
2909         BLOCK23TEXT) = (SELECT
2910                                   B.NAME,
2911                                   B.COMMENTS,
2912                                   B.ITEM_DESCRIPTION,
2913                                   B.OKE_BOE_DESCRIPTION,
2914                                   B.COGNOMEN,
2915                                   B.BLOCK23TEXT
2916                                 FROM OKC_K_LINES_TLH B
2917                                WHERE B.ID = T.ID
2918                                 AND B.MAJOR_VERSION = T.MAJOR_VERSION
2919                                  AND B.LANGUAGE = T.SOURCE_LANG)
2920       WHERE (
2921               T.ID,
2922               T.MAJOR_VERSION,
2923               T.LANGUAGE)
2924           IN (SELECT
2925                   SUBT.ID,
2926                   SUBT.MAJOR_VERSION,
2927                   SUBT.LANGUAGE
2928                 FROM OKC_K_LINES_TLH SUBB, OKC_K_LINES_TLH SUBT
2929                WHERE SUBB.ID = SUBT.ID
2930                  AND SUBB.MAJOR_VERSION = SUBT.MAJOR_VERSION
2931                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
2932                  AND (SUBB.NAME <> SUBT.NAME
2933                       OR SUBB.COMMENTS <> SUBT.COMMENTS
2934                       OR SUBB.ITEM_DESCRIPTION <> SUBT.ITEM_DESCRIPTION
2935                       OR SUBB.OKE_BOE_DESCRIPTION <> SUBT.OKE_BOE_DESCRIPTION
2936                       OR SUBB.COGNOMEN <> SUBT.COGNOMEN
2937                       OR SUBB.BLOCK23TEXT <> SUBT.BLOCK23TEXT
2938                       OR (SUBB.NAME IS NULL AND SUBT.NAME IS NOT NULL)
2939                       OR (SUBB.NAME IS NOT NULL AND SUBT.NAME IS NULL)
2940                       OR (SUBB.COMMENTS IS NULL AND SUBT.COMMENTS IS NOT NULL)
2941                       OR (SUBB.COMMENTS IS NOT NULL AND SUBT.COMMENTS IS NULL)
2942                       OR (SUBB.ITEM_DESCRIPTION IS NULL AND SUBT.ITEM_DESCRIPTION IS NOT NULL)
2943                       OR (SUBB.ITEM_DESCRIPTION IS NOT NULL AND SUBT.ITEM_DESCRIPTION IS NULL)
2944                       OR (SUBB.OKE_BOE_DESCRIPTION IS NULL AND SUBT.OKE_BOE_DESCRIPTION IS NOT NULL)
2945                       OR (SUBB.OKE_BOE_DESCRIPTION IS NOT NULL AND SUBT.OKE_BOE_DESCRIPTION IS NULL)
2946                       OR (SUBB.COGNOMEN IS NULL AND SUBT.COGNOMEN IS NOT NULL)
2947                       OR (SUBB.COGNOMEN IS NOT NULL AND SUBT.COGNOMEN IS NULL)
2948                       OR (SUBB.BLOCK23TEXT IS NULL AND SUBT.BLOCK23TEXT IS NOT NULL)
2949                       OR (SUBB.BLOCK23TEXT IS NOT NULL AND SUBT.BLOCK23TEXT IS NULL)
2950               ));
2951 */
2952 /* Modifying Insert as per performance guidelines given in bug 3723874 */
2953     INSERT /*+ append parallel(tt) */ INTO OKC_K_LINES_TLH tt (
2954         ID,
2955         LANGUAGE,
2956         MAJOR_VERSION,
2957         SOURCE_LANG,
2958         SFWT_FLAG,
2959         NAME,
2960         COMMENTS,
2961         ITEM_DESCRIPTION,
2962         OKE_BOE_DESCRIPTION,
2963         COGNOMEN,
2964         BLOCK23TEXT,
2965         CREATED_BY,
2966         CREATION_DATE,
2967         LAST_UPDATED_BY,
2968 
2969         LAST_UPDATE_DATE,
2970         LAST_UPDATE_LOGIN)
2971       select /*+ parallel(v) parallel(t) use_nl(t)  */ v.* from
2972      ( SELECT /*+ no_merge ordered parallel(b) */
2973             B.ID,
2974             L.LANGUAGE_CODE,
2975             B.MAJOR_VERSION,
2976             B.SOURCE_LANG,
2977             B.SFWT_FLAG,
2978             B.NAME,
2979             B.COMMENTS,
2980             B.ITEM_DESCRIPTION,
2981             B.OKE_BOE_DESCRIPTION,
2982             B.COGNOMEN,
2983             B.BLOCK23TEXT,
2984             B.CREATED_BY,
2985             B.CREATION_DATE,
2986             B.LAST_UPDATED_BY,
2987             B.LAST_UPDATE_DATE,
2988             B.LAST_UPDATE_LOGIN
2989         FROM OKC_K_LINES_TLH B, FND_LANGUAGES L
2990        WHERE L.INSTALLED_FLAG IN ('I', 'B')
2991          AND B.LANGUAGE = USERENV('LANG')
2992 	 ) v , OKC_K_LINES_TLH T
2993          WHERE T.ID(+) = v.ID
2994          AND T.LANGUAGE(+) = v.LANGUAGE_CODE
2995          AND T.MAJOR_VERSION(+) = v.MAJOR_VERSION
2996          AND t.id IS NULL;
2997 
2998 
2999 IF (l_debug = 'Y') THEN
3000    okc_debug.log('10750: Leaving  add_language ', 2);
3001    okc_debug.Reset_Indentation;
3002 END IF;
3003 
3004   END add_language;
3005 
3006   ---------------------------------------------------------------------------
3007   -- FUNCTION get_rec for: OKC_K_LINES_B
3008   ---------------------------------------------------------------------------
3009   FUNCTION get_rec (
3010     p_cle_rec                      IN cle_rec_type,
3011     x_no_data_found                OUT NOCOPY BOOLEAN
3012   ) RETURN cle_rec_type IS
3013     CURSOR cle_pk_csr (p_id                 IN NUMBER) IS
3014     SELECT
3015             ID,
3016             LINE_NUMBER,
3017             CHR_ID,
3018             CLE_ID,
3019             DNZ_CHR_ID,
3020             DISPLAY_SEQUENCE,
3021             STS_CODE,
3022             TRN_CODE,
3023             LSE_ID,
3024             EXCEPTION_YN,
3025             OBJECT_VERSION_NUMBER,
3026             CREATED_BY,
3027             CREATION_DATE,
3028             LAST_UPDATED_BY,
3029             LAST_UPDATE_DATE,
3030             HIDDEN_IND,
3031 	    PRICE_UNIT,
3032 	    PRICE_UNIT_PERCENT,
3033             PRICE_NEGOTIATED,
3034 	    PRICE_NEGOTIATED_RENEWED,
3035             PRICE_LEVEL_IND,
3036             INVOICE_LINE_LEVEL_IND,
3037             DPAS_RATING,
3038             TEMPLATE_USED,
3039             PRICE_TYPE,
3040             CURRENCY_CODE,
3041 	    CURRENCY_CODE_RENEWED,
3042             LAST_UPDATE_LOGIN,
3043             DATE_TERMINATED,
3044             START_DATE,
3045             END_DATE,
3046 	    DATE_RENEWED,
3047             UPG_ORIG_SYSTEM_REF,
3048             UPG_ORIG_SYSTEM_REF_ID,
3049             ORIG_SYSTEM_SOURCE_CODE,
3050             ORIG_SYSTEM_ID1,
3051             ORIG_SYSTEM_REFERENCE1,
3052             REQUEST_ID,
3053             PROGRAM_APPLICATION_ID,
3054             PROGRAM_ID,
3055             PROGRAM_UPDATE_DATE,
3056             PRICE_LIST_ID,
3057             PRICING_DATE,
3058             PRICE_LIST_LINE_ID,
3059             LINE_LIST_PRICE,
3060             ITEM_TO_PRICE_YN,
3061             PRICE_BASIS_YN,
3062             CONFIG_HEADER_ID,
3063             CONFIG_REVISION_NUMBER,
3064             CONFIG_COMPLETE_YN,
3065             CONFIG_VALID_YN,
3066             CONFIG_TOP_MODEL_LINE_ID,
3067             CONFIG_ITEM_TYPE,
3068             CONFIG_ITEM_ID,
3069             ATTRIBUTE_CATEGORY,
3070             ATTRIBUTE1,
3071             ATTRIBUTE2,
3072             ATTRIBUTE3,
3073             ATTRIBUTE4,
3074             ATTRIBUTE5,
3075             ATTRIBUTE6,
3076             ATTRIBUTE7,
3077             ATTRIBUTE8,
3078             ATTRIBUTE9,
3079             ATTRIBUTE10,
3080             ATTRIBUTE11,
3084             ATTRIBUTE15,
3081             ATTRIBUTE12,
3082             ATTRIBUTE13,
3083             ATTRIBUTE14,
3085             SERVICE_ITEM_YN,
3086                       --new columns for price hold
3087             ph_pricing_type,
3088             ph_price_break_basis,
3089             ph_min_qty,
3090             ph_min_amt,
3091             ph_qp_reference_id,
3092             ph_value,
3093             ph_enforce_price_list_yn,
3094             ph_adjustment,
3095             ph_integrated_with_qp,
3096 -- new colums to replace rules
3097             CUST_ACCT_ID,
3098             BILL_TO_SITE_USE_ID,
3099             INV_RULE_ID,
3100             LINE_RENEWAL_TYPE_CODE,
3101             SHIP_TO_SITE_USE_ID,
3102             PAYMENT_TERM_ID,
3103             --NPALEPU on 30-JUN-2005 added new column for Annualized Amounts project
3104             ANNUALIZED_FACTOR,
3105             --END NPALEPU-
3106 	    DATE_CANCELLED,  -- New columns for Line Level Cancellation
3107 	    --canc_reason_code,
3108 	    TERM_CANCEL_SOURCE,
3109 	    CANCELLED_AMOUNT,
3110 	    payment_instruction_type  --added by mchoudha 22-JUL
3111       FROM Okc_K_Lines_B
3112      WHERE okc_k_lines_b.id     = p_id;
3113     l_cle_pk                       cle_pk_csr%ROWTYPE;
3114     l_cle_rec                      cle_rec_type;
3115   BEGIN
3116 
3117     IF (l_debug = 'Y') THEN
3118        okc_debug.Set_Indentation('OKC_CLE_PVT');
3119        okc_debug.log('10800: Entered get_rec', 2);
3120     END IF;
3121 
3122     x_no_data_found := TRUE;
3123     -- Get current database values
3124     OPEN cle_pk_csr (p_cle_rec.id);
3125     FETCH cle_pk_csr INTO
3126               l_cle_rec.ID,
3127               l_cle_rec.LINE_NUMBER,
3128               l_cle_rec.CHR_ID,
3129               l_cle_rec.CLE_ID,
3130               l_cle_rec.DNZ_CHR_ID,
3131               l_cle_rec.DISPLAY_SEQUENCE,
3132               l_cle_rec.STS_CODE,
3133               l_cle_rec.TRN_CODE,
3134               l_cle_rec.LSE_ID,
3135               l_cle_rec.EXCEPTION_YN,
3136               l_cle_rec.OBJECT_VERSION_NUMBER,
3137               l_cle_rec.CREATED_BY,
3138               l_cle_rec.CREATION_DATE,
3139               l_cle_rec.LAST_UPDATED_BY,
3140               l_cle_rec.LAST_UPDATE_DATE,
3141               l_cle_rec.HIDDEN_IND,
3142 	      l_cle_rec.PRICE_UNIT,
3143 	      l_cle_rec.PRICE_UNIT_PERCENT,
3144               l_cle_rec.PRICE_NEGOTIATED,
3145 	      l_cle_rec.PRICE_NEGOTIATED_RENEWED,
3146               l_cle_rec.PRICE_LEVEL_IND,
3147               l_cle_rec.INVOICE_LINE_LEVEL_IND,
3148               l_cle_rec.DPAS_RATING,
3149               l_cle_rec.TEMPLATE_USED,
3150               l_cle_rec.PRICE_TYPE,
3151               l_cle_rec.CURRENCY_CODE,
3152 	      l_cle_rec.CURRENCY_CODE_RENEWED,
3153               l_cle_rec.LAST_UPDATE_LOGIN,
3154               l_cle_rec.DATE_TERMINATED,
3155               l_cle_rec.START_DATE,
3156               l_cle_rec.END_DATE,
3157 	      l_cle_rec.DATE_RENEWED,
3158               l_cle_rec.UPG_ORIG_SYSTEM_REF,
3159               l_cle_rec.UPG_ORIG_SYSTEM_REF_ID,
3160               l_cle_rec.ORIG_SYSTEM_SOURCE_CODE,
3161               l_cle_rec.ORIG_SYSTEM_ID1,
3162               l_cle_rec.ORIG_SYSTEM_REFERENCE1,
3163               l_cle_rec.REQUEST_ID,
3164               l_cle_rec.PROGRAM_APPLICATION_ID,
3165               l_cle_rec.PROGRAM_ID,
3166               l_cle_rec.PROGRAM_UPDATE_DATE,
3167               l_cle_rec.PRICE_LIST_ID,
3168               l_cle_rec.PRICING_DATE,
3169               l_cle_rec.PRICE_LIST_LINE_ID,
3170               l_cle_rec.LINE_LIST_PRICE,
3171               l_cle_rec.ITEM_TO_PRICE_YN,
3172               l_cle_rec.PRICE_BASIS_YN,
3173               l_cle_rec.CONFIG_HEADER_ID,
3174               l_cle_rec.CONFIG_REVISION_NUMBER,
3175               l_cle_rec.CONFIG_COMPLETE_YN,
3176               l_cle_rec.CONFIG_VALID_YN,
3177               l_cle_rec.CONFIG_TOP_MODEL_LINE_ID,
3178               l_cle_rec.CONFIG_ITEM_TYPE,
3179               l_cle_rec.CONFIG_ITEM_ID,
3180               l_cle_rec.ATTRIBUTE_CATEGORY,
3181               l_cle_rec.ATTRIBUTE1,
3182               l_cle_rec.ATTRIBUTE2,
3183               l_cle_rec.ATTRIBUTE3,
3184               l_cle_rec.ATTRIBUTE4,
3185               l_cle_rec.ATTRIBUTE5,
3186               l_cle_rec.ATTRIBUTE6,
3187               l_cle_rec.ATTRIBUTE7,
3188               l_cle_rec.ATTRIBUTE8,
3189               l_cle_rec.ATTRIBUTE9,
3190               l_cle_rec.ATTRIBUTE10,
3191               l_cle_rec.ATTRIBUTE11,
3192               l_cle_rec.ATTRIBUTE12,
3193               l_cle_rec.ATTRIBUTE13,
3194               l_cle_rec.ATTRIBUTE14,
3195               l_cle_rec.ATTRIBUTE15,
3196               l_cle_rec.SERVICE_ITEM_YN,
3197                       --new columns for price hold
3198               l_cle_rec.ph_pricing_type,
3199               l_cle_rec.ph_price_break_basis,
3200               l_cle_rec.ph_min_qty,
3201               l_cle_rec.ph_min_amt,
3202               l_cle_rec.ph_qp_reference_id,
3203               l_cle_rec.ph_value,
3204               l_cle_rec.ph_enforce_price_list_yn,
3205               l_cle_rec.ph_adjustment,
3206               l_cle_rec.ph_integrated_with_qp,
3207                -- new columns to  replace rules
3208               l_cle_rec.cust_acct_id,
3209               l_cle_rec.bill_to_site_use_id,
3210               l_cle_rec.inv_rule_id,
3211               l_cle_rec.line_renewal_type_code,
3212               l_cle_rec.ship_to_site_use_id,
3213               l_cle_rec.payment_term_id,
3214 	      --NPALEPU on 24-JUN-2005 added new column for Annualized Amounts project
3215               l_cle_rec.annualized_factor,
3216               --END NPALEPU
3217 	      l_cle_rec.date_cancelled,
3218 	      --l_cle_rec.canc_reason_code,
3222     x_no_data_found := cle_pk_csr%NOTFOUND;
3219 	      l_cle_rec.term_cancel_source,
3220 	      l_cle_rec.cancelled_amount,
3221 	      l_cle_rec.payment_instruction_type;  --added by mchoudha 22-JUL
3223     CLOSE cle_pk_csr;
3224 
3225 IF (l_debug = 'Y') THEN
3226    okc_debug.log('10850: Leaving  Fn  get_rec ', 2);
3227    okc_debug.Reset_Indentation;
3228 END IF;
3229 
3230     RETURN(l_cle_rec);
3231 
3232   END get_rec;
3233 
3234   FUNCTION get_rec (
3235     p_cle_rec                      IN cle_rec_type
3236   ) RETURN cle_rec_type IS
3237     l_row_notfound                 BOOLEAN := TRUE;
3238   BEGIN
3239 
3240     RETURN(get_rec(p_cle_rec, l_row_notfound));
3241 
3242   END get_rec;
3243   ---------------------------------------------------------------------------
3244   -- FUNCTION get_rec for: OKC_K_LINES_TL
3245   ---------------------------------------------------------------------------
3246   FUNCTION get_rec (
3247     p_okc_k_lines_tl_rec           IN okc_k_lines_tl_rec_type,
3248     x_no_data_found                OUT NOCOPY BOOLEAN
3249   ) RETURN okc_k_lines_tl_rec_type IS
3250     CURSOR cle_pktl_csr (p_id                 IN NUMBER,
3251                          p_language           IN VARCHAR2) IS
3252     SELECT
3253             ID,
3254             LANGUAGE,
3255             SOURCE_LANG,
3256             SFWT_FLAG,
3257             NAME,
3258             COMMENTS,
3259             ITEM_DESCRIPTION,
3260 	    OKE_BOE_DESCRIPTION,
3261             COGNOMEN,
3262             BLOCK23TEXT,
3263             CREATED_BY,
3264             CREATION_DATE,
3265             LAST_UPDATED_BY,
3266             LAST_UPDATE_DATE,
3267             LAST_UPDATE_LOGIN
3268       FROM Okc_K_Lines_Tl
3269      WHERE okc_k_lines_tl.id    = p_id
3270        AND okc_k_lines_tl.language = p_language;
3271     l_cle_pktl                     cle_pktl_csr%ROWTYPE;
3272     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
3273   BEGIN
3274 
3275     IF (l_debug = 'Y') THEN
3276        okc_debug.Set_Indentation('OKC_CLE_PVT');
3277        okc_debug.log('11000: Entered get_rec', 2);
3278     END IF;
3279 
3280     x_no_data_found := TRUE;
3281     -- Get current database values
3282     OPEN cle_pktl_csr (p_okc_k_lines_tl_rec.id,
3283                        p_okc_k_lines_tl_rec.language);
3284     FETCH cle_pktl_csr INTO
3285               l_okc_k_lines_tl_rec.ID,
3286               l_okc_k_lines_tl_rec.LANGUAGE,
3287               l_okc_k_lines_tl_rec.SOURCE_LANG,
3288               l_okc_k_lines_tl_rec.SFWT_FLAG,
3289               l_okc_k_lines_tl_rec.NAME,
3290               l_okc_k_lines_tl_rec.COMMENTS,
3291               l_okc_k_lines_tl_rec.ITEM_DESCRIPTION,
3292               l_okc_k_lines_tl_rec.OKE_BOE_DESCRIPTION,
3293               l_okc_k_lines_tl_rec.COGNOMEN,
3294               l_okc_k_lines_tl_rec.BLOCK23TEXT,
3295               l_okc_k_lines_tl_rec.CREATED_BY,
3296               l_okc_k_lines_tl_rec.CREATION_DATE,
3297               l_okc_k_lines_tl_rec.LAST_UPDATED_BY,
3298               l_okc_k_lines_tl_rec.LAST_UPDATE_DATE,
3299               l_okc_k_lines_tl_rec.LAST_UPDATE_LOGIN;
3300     x_no_data_found := cle_pktl_csr%NOTFOUND;
3301     CLOSE cle_pktl_csr;
3302 
3303 IF (l_debug = 'Y') THEN
3304    okc_debug.log('11050: Leaving  Fn  get_rec ', 2);
3305    okc_debug.Reset_Indentation;
3306 END IF;
3307 
3308     RETURN(l_okc_k_lines_tl_rec);
3309 
3310   END get_rec;
3311 
3312   FUNCTION get_rec (
3313     p_okc_k_lines_tl_rec           IN okc_k_lines_tl_rec_type
3314   ) RETURN okc_k_lines_tl_rec_type IS
3315     l_row_notfound                 BOOLEAN := TRUE;
3316   BEGIN
3317 
3318     RETURN(get_rec(p_okc_k_lines_tl_rec, l_row_notfound));
3319 
3320   END get_rec;
3321   ---------------------------------------------------------------------------
3322   -- FUNCTION get_rec for: OKC_K_LINES_V
3323   ---------------------------------------------------------------------------
3324   FUNCTION get_rec (
3325     p_clev_rec                     IN clev_rec_type,
3326     x_no_data_found                OUT NOCOPY BOOLEAN
3327   ) RETURN clev_rec_type IS
3328     CURSOR okc_clev_pk_csr (p_id                 IN NUMBER) IS
3329     SELECT
3330             ID,
3331             OBJECT_VERSION_NUMBER,
3332             SFWT_FLAG,
3333             CHR_ID,
3334             CLE_ID,
3335             LSE_ID,
3336             LINE_NUMBER,
3337             STS_CODE,
3338             DISPLAY_SEQUENCE,
3339             TRN_CODE,
3340             DNZ_CHR_ID,
3341             COMMENTS,
3342             ITEM_DESCRIPTION,
3343 	    OKE_BOE_DESCRIPTION,
3344      	    COGNOMEN,
3345             HIDDEN_IND,
3346             PRICE_UNIT,
3347 	    PRICE_UNIT_PERCENT,
3348             PRICE_NEGOTIATED,
3349 	    PRICE_NEGOTIATED_RENEWED,
3350             PRICE_LEVEL_IND,
3351             INVOICE_LINE_LEVEL_IND,
3352             DPAS_RATING,
3353             BLOCK23TEXT,
3354             EXCEPTION_YN,
3355             TEMPLATE_USED,
3356             DATE_TERMINATED,
3357             NAME,
3358             START_DATE,
3359             END_DATE,
3360 	    DATE_RENEWED,
3361             UPG_ORIG_SYSTEM_REF,
3362             UPG_ORIG_SYSTEM_REF_ID,
3363             ORIG_SYSTEM_SOURCE_CODE,
3364             ORIG_SYSTEM_ID1,
3365             ORIG_SYSTEM_REFERENCE1,
3366             REQUEST_ID,
3367             PROGRAM_APPLICATION_ID,
3368             PROGRAM_ID,
3369             PROGRAM_UPDATE_DATE,
3370             PRICE_LIST_ID,
3371             PRICING_DATE,
3372             PRICE_LIST_LINE_ID,
3373             LINE_LIST_PRICE,
3374             ITEM_TO_PRICE_YN,
3375             PRICE_BASIS_YN,
3376             CONFIG_HEADER_ID,
3377             CONFIG_REVISION_NUMBER,
3378             CONFIG_COMPLETE_YN,
3379             CONFIG_VALID_YN,
3380             CONFIG_TOP_MODEL_LINE_ID,
3381             CONFIG_ITEM_TYPE,
3382             CONFIG_ITEM_ID ,
3383             ATTRIBUTE_CATEGORY,
3384             ATTRIBUTE1,
3385             ATTRIBUTE2,
3386             ATTRIBUTE3,
3387             ATTRIBUTE4,
3388             ATTRIBUTE5,
3389             ATTRIBUTE6,
3390             ATTRIBUTE7,
3391             ATTRIBUTE8,
3392             ATTRIBUTE9,
3393             ATTRIBUTE10,
3394             ATTRIBUTE11,
3395             ATTRIBUTE12,
3396             ATTRIBUTE13,
3397             ATTRIBUTE14,
3398             ATTRIBUTE15,
3399             CREATED_BY,
3400             CREATION_DATE,
3401             LAST_UPDATED_BY,
3402             LAST_UPDATE_DATE,
3403             PRICE_TYPE,
3404             CURRENCY_CODE,
3405 	       CURRENCY_CODE_RENEWED,
3406             LAST_UPDATE_LOGIN,
3407             SERVICE_ITEM_YN,
3408                       --new columns for price hold
3409             ph_pricing_type,
3410             ph_price_break_basis,
3411             ph_min_qty,
3412             ph_min_amt,
3413             ph_qp_reference_id,
3414             ph_value,
3415             ph_enforce_price_list_yn,
3416             ph_adjustment,
3417             ph_integrated_with_qp,
3418                --new columns to replace rules
3419             CUST_ACCT_ID,
3420             BILL_TO_SITE_USE_ID,
3421             INV_RULE_ID,
3422             LINE_RENEWAL_TYPE_CODE,
3423             SHIP_TO_SITE_USE_ID,
3424             PAYMENT_TERM_ID,
3425 	    DATE_CANCELLED,
3426 	    --CANC_REASON_CODE,
3427 	    TERM_CANCEL_SOURCE,
3428 	    CANCELLED_AMOUNT,
3429 	    --added by mchoudha 22-JUL
3430             annualized_factor,
3431 	    payment_instruction_type
3432      FROM Okc_K_Lines_V
3433      WHERE okc_k_lines_v.id     = p_id;
3434     l_okc_clev_pk                  okc_clev_pk_csr%ROWTYPE;
3435     l_clev_rec                     clev_rec_type;
3436   BEGIN
3437 
3438     IF (l_debug = 'Y') THEN
3439        okc_debug.Set_Indentation('OKC_CLE_PVT');
3440        okc_debug.log('11200: Entered get_rec', 2);
3441     END IF;
3442 
3443     x_no_data_found := TRUE;
3444     -- Get current database values
3445     OPEN okc_clev_pk_csr (p_clev_rec.id);
3446     FETCH okc_clev_pk_csr INTO
3447               l_clev_rec.ID,
3448               l_clev_rec.OBJECT_VERSION_NUMBER,
3449               l_clev_rec.SFWT_FLAG,
3450               l_clev_rec.CHR_ID,
3451               l_clev_rec.CLE_ID,
3452               l_clev_rec.LSE_ID,
3453               l_clev_rec.LINE_NUMBER,
3454               l_clev_rec.STS_CODE,
3455               l_clev_rec.DISPLAY_SEQUENCE,
3456               l_clev_rec.TRN_CODE,
3457               l_clev_rec.DNZ_CHR_ID,
3458               l_clev_rec.COMMENTS,
3459               l_clev_rec.ITEM_DESCRIPTION,
3460               l_clev_rec.OKE_BOE_DESCRIPTION,
3461 	         l_clev_rec.COGNOMEN,
3462               l_clev_rec.HIDDEN_IND,
3463 	         l_clev_rec.PRICE_UNIT,
3464 	         l_clev_rec.PRICE_UNIT_PERCENT,
3465               l_clev_rec.PRICE_NEGOTIATED,
3466 	         l_clev_rec.PRICE_NEGOTIATED_RENEWED,
3467               l_clev_rec.PRICE_LEVEL_IND,
3468               l_clev_rec.INVOICE_LINE_LEVEL_IND,
3469               l_clev_rec.DPAS_RATING,
3470               l_clev_rec.BLOCK23TEXT,
3471               l_clev_rec.EXCEPTION_YN,
3472               l_clev_rec.TEMPLATE_USED,
3473               l_clev_rec.DATE_TERMINATED,
3474               l_clev_rec.NAME,
3475               l_clev_rec.START_DATE,
3476               l_clev_rec.END_DATE,
3477 	         l_clev_rec.DATE_RENEWED,
3478               l_clev_rec.UPG_ORIG_SYSTEM_REF,
3479               l_clev_rec.UPG_ORIG_SYSTEM_REF_ID,
3480               l_clev_rec.ORIG_SYSTEM_SOURCE_CODE,
3481               l_clev_rec.ORIG_SYSTEM_ID1,
3482               l_clev_rec.ORIG_SYSTEM_REFERENCE1,
3483               l_clev_rec.request_id,
3484               l_clev_rec.program_application_id,
3485               l_clev_rec.program_id,
3486               l_clev_rec.program_update_date,
3487               l_clev_rec.price_list_id,
3488               l_clev_rec.pricing_date,
3489               l_clev_rec.price_list_line_id,
3490               l_clev_rec.line_list_price,
3491               l_clev_rec.item_to_price_yn,
3492               l_clev_rec.price_basis_yn,
3493               l_clev_rec.config_header_id,
3494               l_clev_rec.config_revision_number,
3495               l_clev_rec.config_complete_yn,
3496               l_clev_rec.config_valid_yn,
3497               l_clev_rec.config_top_model_line_id,
3498               l_clev_rec.config_item_type,
3499               l_clev_rec.CONFIG_ITEM_ID ,
3500               l_clev_rec.ATTRIBUTE_CATEGORY,
3501               l_clev_rec.ATTRIBUTE1,
3502               l_clev_rec.ATTRIBUTE2,
3503               l_clev_rec.ATTRIBUTE3,
3504               l_clev_rec.ATTRIBUTE4,
3505               l_clev_rec.ATTRIBUTE5,
3506               l_clev_rec.ATTRIBUTE6,
3507               l_clev_rec.ATTRIBUTE7,
3508               l_clev_rec.ATTRIBUTE8,
3509               l_clev_rec.ATTRIBUTE9,
3510               l_clev_rec.ATTRIBUTE10,
3511               l_clev_rec.ATTRIBUTE11,
3512               l_clev_rec.ATTRIBUTE12,
3513               l_clev_rec.ATTRIBUTE13,
3514               l_clev_rec.ATTRIBUTE14,
3515               l_clev_rec.ATTRIBUTE15,
3516               l_clev_rec.CREATED_BY,
3517               l_clev_rec.CREATION_DATE,
3518               l_clev_rec.LAST_UPDATED_BY,
3519               l_clev_rec.LAST_UPDATE_DATE,
3520               l_clev_rec.PRICE_TYPE,
3521               l_clev_rec.CURRENCY_CODE,
3522 	         l_clev_rec.CURRENCY_CODE_RENEWED,
3523               l_clev_rec.LAST_UPDATE_LOGIN,
3524               l_clev_rec.SERVICE_ITEM_YN,
3525        -- new columns for price hold
3526               l_clev_rec.ph_pricing_type,
3527               l_clev_rec.ph_price_break_basis,
3528               l_clev_rec.ph_min_qty,
3529               l_clev_rec.ph_min_amt,
3530               l_clev_rec.ph_qp_reference_id,
3531               l_clev_rec.ph_value,
3532               l_clev_rec.ph_enforce_price_list_yn,
3533               l_clev_rec.ph_adjustment,
3534               l_clev_rec.ph_integrated_with_qp,
3535        -- new columns to  replace rules
3536               l_clev_rec.cust_acct_id,
3537               l_clev_rec.bill_to_site_use_id,
3538               l_clev_rec.inv_rule_id,
3539               l_clev_rec.line_renewal_type_code,
3540               l_clev_rec.ship_to_site_use_id,
3541               l_clev_rec.payment_term_id,
3542 	      l_clev_rec.date_cancelled,
3543 	     --l_clev_rec.canc_reason_code,
3544 	      l_clev_rec.term_cancel_source,
3545 	      l_clev_rec.cancelled_amount,
3546               --added by mchoudha 22-JUL
3547              l_clev_rec.annualized_factor,
3548 	     l_clev_rec.payment_instruction_type;
3549     x_no_data_found := okc_clev_pk_csr%NOTFOUND;
3550     CLOSE okc_clev_pk_csr;
3551 
3552 IF (l_debug = 'Y') THEN
3553    okc_debug.log('11250: Leaving  Fn  get_rec ', 2);
3554    okc_debug.Reset_Indentation;
3555 END IF;
3556 
3557     RETURN(l_clev_rec);
3558 
3559   END get_rec;
3560 
3561   FUNCTION get_rec (
3562     p_clev_rec                     IN clev_rec_type
3563   ) RETURN clev_rec_type IS
3564     l_row_notfound                 BOOLEAN := TRUE;
3565   BEGIN
3566 
3567     RETURN(get_rec(p_clev_rec, l_row_notfound));
3568 
3569   END get_rec;
3570 
3571   ---------------------------------------------------
3572   -- FUNCTION null_out_defaults for: OKC_K_LINES_V --
3573   ---------------------------------------------------
3574   FUNCTION null_out_defaults (
3575     p_clev_rec	IN clev_rec_type
3576   ) RETURN clev_rec_type IS
3577     l_clev_rec	clev_rec_type := p_clev_rec;
3578   BEGIN
3579 
3580     IF (l_debug = 'Y') THEN
3581        okc_debug.Set_Indentation('OKC_CLE_PVT');
3582        okc_debug.log('11400: Entered null_out_defaults', 2);
3583     END IF;
3584 
3585     IF (l_clev_rec.object_version_number = OKC_API.G_MISS_NUM) THEN
3586       l_clev_rec.object_version_number := NULL;
3587     END IF;
3588     IF (l_clev_rec.sfwt_flag = OKC_API.G_MISS_CHAR) THEN
3589       l_clev_rec.sfwt_flag := NULL;
3590     END IF;
3591     IF (l_clev_rec.chr_id = OKC_API.G_MISS_NUM) THEN
3592       l_clev_rec.chr_id := NULL;
3593     END IF;
3594     IF (l_clev_rec.cle_id = OKC_API.G_MISS_NUM) THEN
3595       l_clev_rec.cle_id := NULL;
3596     END IF;
3597     IF (l_clev_rec.lse_id = OKC_API.G_MISS_NUM) THEN
3598       l_clev_rec.lse_id := NULL;
3599     END IF;
3600     IF (l_clev_rec.line_number = OKC_API.G_MISS_CHAR) THEN
3601       l_clev_rec.line_number := NULL;
3602     END IF;
3603     IF (l_clev_rec.sts_code = OKC_API.G_MISS_CHAR) THEN
3604       l_clev_rec.sts_code := NULL;
3605     END IF;
3606     IF (l_clev_rec.display_sequence = OKC_API.G_MISS_NUM) THEN
3607       l_clev_rec.display_sequence := NULL;
3608     END IF;
3609     IF (l_clev_rec.trn_code = OKC_API.G_MISS_CHAR) THEN
3610       l_clev_rec.trn_code := NULL;
3611     END IF;
3612     IF (l_clev_rec.dnz_chr_id = OKC_API.G_MISS_NUM) THEN
3613       l_clev_rec.dnz_chr_id := NULL;
3614     END IF;
3615     IF (l_clev_rec.comments = OKC_API.G_MISS_CHAR) THEN
3616       l_clev_rec.comments := NULL;
3617     END IF;
3618     IF (l_clev_rec.item_description = OKC_API.G_MISS_CHAR) THEN
3619       l_clev_rec.item_description := NULL;
3620     END IF;
3621     IF (l_clev_rec.oke_boe_description = OKC_API.G_MISS_CHAR) THEN
3622       l_clev_rec.oke_boe_description := NULL;
3623     END IF;
3624     IF (l_clev_rec.cognomen = OKC_API.G_MISS_CHAR) THEN
3625       l_clev_rec.cognomen := NULL;
3626     END IF;
3627     IF (l_clev_rec.hidden_ind = OKC_API.G_MISS_CHAR) THEN
3628       l_clev_rec.hidden_ind := NULL;
3629     END IF;
3630     IF (l_clev_rec.price_unit = OKC_API.G_MISS_NUM) THEN
3631       l_clev_rec.price_unit := NULL;
3632     END IF;
3633     IF (l_clev_rec.price_unit_percent = OKC_API.G_MISS_NUM) THEN
3634       l_clev_rec.price_unit_percent := NULL;
3635     END IF;
3636     IF (l_clev_rec.price_negotiated = OKC_API.G_MISS_NUM) THEN
3637       l_clev_rec.price_negotiated := NULL;
3638     END IF;
3639     IF (l_clev_rec.price_negotiated_renewed = OKC_API.G_MISS_NUM) THEN
3640       l_clev_rec.price_negotiated_renewed := NULL;
3641     END IF;
3642     IF (l_clev_rec.price_level_ind = OKC_API.G_MISS_CHAR) THEN
3643       l_clev_rec.price_level_ind := NULL;
3644     END IF;
3645     IF (l_clev_rec.invoice_line_level_ind = OKC_API.G_MISS_CHAR) THEN
3646       l_clev_rec.invoice_line_level_ind := NULL;
3647     END IF;
3648     IF (l_clev_rec.dpas_rating = OKC_API.G_MISS_CHAR) THEN
3649       l_clev_rec.dpas_rating := NULL;
3650     END IF;
3651     IF (l_clev_rec.block23text = OKC_API.G_MISS_CHAR) THEN
3652       l_clev_rec.block23text := NULL;
3653     END IF;
3654     IF (l_clev_rec.exception_yn = OKC_API.G_MISS_CHAR) THEN
3655       l_clev_rec.exception_yn := NULL;
3656     END IF;
3657     IF (l_clev_rec.template_used = OKC_API.G_MISS_CHAR) THEN
3658       l_clev_rec.template_used := NULL;
3659     END IF;
3660     IF (l_clev_rec.date_terminated = OKC_API.G_MISS_DATE) THEN
3661       l_clev_rec.date_terminated := NULL;
3662     END IF;
3663     IF (l_clev_rec.name = OKC_API.G_MISS_CHAR) THEN
3664       l_clev_rec.name := NULL;
3665     END IF;
3666     IF (l_clev_rec.start_date = OKC_API.G_MISS_DATE) THEN
3667       l_clev_rec.start_date := NULL;
3668     END IF;
3669     IF (l_clev_rec.end_date = OKC_API.G_MISS_DATE) THEN
3670       l_clev_rec.end_date := NULL;
3671     END IF;
3672     IF (l_clev_rec.date_renewed = OKC_API.G_MISS_DATE) THEN
3673       l_clev_rec.date_renewed := NULL;
3674     END IF;
3675     IF (l_clev_rec.UPG_ORIG_SYSTEM_REF = OKC_API.G_MISS_CHAR) THEN
3676       l_clev_rec.UPG_ORIG_SYSTEM_REF := NULL;
3677     END IF;
3678     IF (l_clev_rec.UPG_ORIG_SYSTEM_REF_ID = OKC_API.G_MISS_NUM) THEN
3679       l_clev_rec.UPG_ORIG_SYSTEM_REF_ID := NULL;
3680     END IF;
3681     IF (l_clev_rec.orig_system_source_code = OKC_API.G_MISS_CHAR ) THEN
3682       l_clev_rec.orig_system_source_code := NULL;
3683     END IF;
3684     IF (l_clev_rec.orig_system_id1 = OKC_API.G_MISS_NUM ) THEN
3685       l_clev_rec.orig_system_id1 := NULL;
3686     END IF;
3687     IF (l_clev_rec.orig_system_reference1 = OKC_API.G_MISS_CHAR ) THEN
3688       l_clev_rec.orig_system_reference1 := NULL;
3689     END IF;
3690 
3691     IF (l_clev_rec.program_application_id = OKC_API.G_MISS_NUM) THEN
3692         l_clev_rec.program_application_id := NULL;
3693     END IF;
3694     IF (l_clev_rec.program_id = OKC_API.G_MISS_NUM) THEN
3695         l_clev_rec.program_id := NULL;
3696     END IF;
3697     IF (l_clev_rec.program_update_date  = OKC_API.G_MISS_DATE) THEN
3698         l_clev_rec.program_update_date  := NULL;
3699     END IF;
3700     IF (l_clev_rec.request_id = OKC_API.G_MISS_NUM) THEN
3701         l_clev_rec.request_id := NULL;
3702     END IF;
3703     IF (l_clev_rec.price_list_id = OKC_API.G_MISS_NUM) THEN
3704         l_clev_rec.price_list_id := NULL;
3705     END IF;
3706     IF (l_clev_rec.pricing_date  = OKC_API.G_MISS_DATE) THEN
3707         l_clev_rec.pricing_date  := NULL;
3708     END IF;
3709     IF (l_clev_rec.price_list_line_id  = OKC_API.G_MISS_NUM) THEN
3710         l_clev_rec.price_list_line_id  := NULL;
3711     END IF;
3712     IF (l_clev_rec.line_list_price  = OKC_API.G_MISS_NUM) THEN
3713         l_clev_rec.line_list_price  := NULL;
3714     END IF;
3715     IF (l_clev_rec.item_to_price_yn = OKC_API.G_MISS_CHAR) THEN
3716         l_clev_rec.item_to_price_yn := NULL;
3717     END IF;
3718     IF (l_clev_rec.price_basis_yn = OKC_API.G_MISS_CHAR) THEN
3719         l_clev_rec.price_basis_yn := NULL;
3720     END IF;
3721     IF (l_clev_rec.config_header_id  = OKC_API.G_MISS_NUM) THEN
3722         l_clev_rec.config_header_id  := NULL;
3723     END IF;
3724     IF (l_clev_rec.config_revision_number  = OKC_API.G_MISS_NUM) THEN
3725         l_clev_rec.config_revision_number  := NULL;
3726     END IF;
3727     IF (l_clev_rec.config_complete_yn = OKC_API.G_MISS_CHAR) THEN
3728         l_clev_rec.config_complete_yn := NULL;
3729     END IF;
3730     IF (l_clev_rec.config_valid_yn = OKC_API.G_MISS_CHAR) THEN
3731         l_clev_rec.config_valid_yn := NULL;
3732     END IF;
3733     IF (l_clev_rec.config_top_model_line_id  = OKC_API.G_MISS_NUM) THEN
3734         l_clev_rec.config_top_model_line_id  := NULL;
3735     END IF;
3736     IF (l_clev_rec.config_item_type = OKC_API.G_MISS_CHAR) THEN
3737         l_clev_rec.config_item_type := NULL;
3738     END IF;
3739 --Bug.No-1942374--
3740     IF (l_clev_rec.CONFIG_ITEM_ID   = OKC_API.G_MISS_NUM) THEN
3741         l_clev_rec.CONFIG_ITEM_ID   := NULL;
3742     END IF;
3743 --bug.No-1942374--
3744     IF (l_clev_rec.attribute_category = OKC_API.G_MISS_CHAR) THEN
3745       l_clev_rec.attribute_category := NULL;
3746     END IF;
3747     IF (l_clev_rec.attribute1 = OKC_API.G_MISS_CHAR) THEN
3748       l_clev_rec.attribute1 := NULL;
3749     END IF;
3750     IF (l_clev_rec.attribute2 = OKC_API.G_MISS_CHAR) THEN
3751       l_clev_rec.attribute2 := NULL;
3752     END IF;
3753     IF (l_clev_rec.attribute3 = OKC_API.G_MISS_CHAR) THEN
3754       l_clev_rec.attribute3 := NULL;
3755     END IF;
3756     IF (l_clev_rec.attribute4 = OKC_API.G_MISS_CHAR) THEN
3757       l_clev_rec.attribute4 := NULL;
3758     END IF;
3759     IF (l_clev_rec.attribute5 = OKC_API.G_MISS_CHAR) THEN
3760       l_clev_rec.attribute5 := NULL;
3761     END IF;
3762     IF (l_clev_rec.attribute6 = OKC_API.G_MISS_CHAR) THEN
3763       l_clev_rec.attribute6 := NULL;
3764     END IF;
3765     IF (l_clev_rec.attribute7 = OKC_API.G_MISS_CHAR) THEN
3766       l_clev_rec.attribute7 := NULL;
3767     END IF;
3768     IF (l_clev_rec.attribute8 = OKC_API.G_MISS_CHAR) THEN
3769       l_clev_rec.attribute8 := NULL;
3770     END IF;
3771     IF (l_clev_rec.attribute9 = OKC_API.G_MISS_CHAR) THEN
3772       l_clev_rec.attribute9 := NULL;
3773     END IF;
3774     IF (l_clev_rec.attribute10 = OKC_API.G_MISS_CHAR) THEN
3775       l_clev_rec.attribute10 := NULL;
3776     END IF;
3777     IF (l_clev_rec.attribute11 = OKC_API.G_MISS_CHAR) THEN
3778       l_clev_rec.attribute11 := NULL;
3779     END IF;
3780     IF (l_clev_rec.attribute12 = OKC_API.G_MISS_CHAR) THEN
3781       l_clev_rec.attribute12 := NULL;
3782     END IF;
3783     IF (l_clev_rec.attribute13 = OKC_API.G_MISS_CHAR) THEN
3784       l_clev_rec.attribute13 := NULL;
3785     END IF;
3786     IF (l_clev_rec.attribute14 = OKC_API.G_MISS_CHAR) THEN
3787       l_clev_rec.attribute14 := NULL;
3788     END IF;
3789     IF (l_clev_rec.attribute15 = OKC_API.G_MISS_CHAR) THEN
3790       l_clev_rec.attribute15 := NULL;
3791     END IF;
3792     IF (l_clev_rec.created_by = OKC_API.G_MISS_NUM) THEN
3793       l_clev_rec.created_by := NULL;
3794     END IF;
3795     IF (l_clev_rec.creation_date = OKC_API.G_MISS_DATE) THEN
3796       l_clev_rec.creation_date := NULL;
3797     END IF;
3798     IF (l_clev_rec.last_updated_by = OKC_API.G_MISS_NUM) THEN
3799       l_clev_rec.last_updated_by := NULL;
3800     END IF;
3801     IF (l_clev_rec.last_update_date = OKC_API.G_MISS_DATE) THEN
3802       l_clev_rec.last_update_date := NULL;
3803     END IF;
3804     IF (l_clev_rec.price_type = OKC_API.G_MISS_CHAR) THEN
3805       l_clev_rec.price_type := NULL;
3806     END IF;
3807     IF (l_clev_rec.currency_code = OKC_API.G_MISS_CHAR) THEN
3808       l_clev_rec.currency_code := NULL;
3809     END IF;
3810     IF (l_clev_rec.currency_code_renewed = OKC_API.G_MISS_CHAR) THEN
3811       l_clev_rec.currency_code_renewed := NULL;
3812     END IF;
3813     IF (l_clev_rec.last_update_login = OKC_API.G_MISS_NUM) THEN
3814       l_clev_rec.last_update_login := NULL;
3815     END IF;
3816     IF (l_clev_rec.service_item_yn = OKC_API.G_MISS_CHAR) THEN
3817       l_clev_rec.service_item_yn := NULL;
3818     END IF;
3819     --new columns for price hold
3820     IF (l_clev_rec.ph_pricing_type = OKC_API.G_MISS_CHAR) THEN
3821       l_clev_rec.ph_pricing_type := NULL;
3822     END IF;
3823     IF (l_clev_rec.ph_price_break_basis = OKC_API.G_MISS_CHAR) THEN
3824       l_clev_rec.ph_price_break_basis := NULL;
3825     END IF;
3826     IF (l_clev_rec.ph_min_qty = OKC_API.G_MISS_NUM) THEN
3827       l_clev_rec.ph_min_qty := NULL;
3828     END IF;
3829     IF (l_clev_rec.ph_min_amt = OKC_API.G_MISS_NUM) THEN
3830       l_clev_rec.ph_min_amt := NULL;
3831     END IF;
3832     IF (l_clev_rec.ph_qp_reference_id = OKC_API.G_MISS_NUM) THEN
3833       l_clev_rec.ph_qp_reference_id := NULL;
3834     END IF;
3835     IF (l_clev_rec.ph_value = OKC_API.G_MISS_NUM) THEN
3836       l_clev_rec.ph_value := NULL;
3837     END IF;
3838     IF (l_clev_rec.ph_enforce_price_list_yn = OKC_API.G_MISS_CHAR) THEN
3839       l_clev_rec.ph_enforce_price_list_yn := NULL;
3840     END IF;
3841     IF (l_clev_rec.ph_adjustment = OKC_API.G_MISS_NUM) THEN
3842       l_clev_rec.ph_adjustment := NULL;
3843     END IF;
3844     IF (l_clev_rec.ph_integrated_with_qp = OKC_API.G_MISS_CHAR) THEN
3845       l_clev_rec.ph_integrated_with_qp := NULL;
3846     END IF;
3847 -- new  columns to replace rules
3848     IF (l_clev_rec.cust_acct_id = OKC_API.G_MISS_NUM) THEN
3849       l_clev_rec.cust_acct_id := NULL;
3850     END IF;
3851     IF (l_clev_rec.bill_to_site_use_id = OKC_API.G_MISS_NUM) THEN
3852       l_clev_rec.bill_to_site_use_id := NULL;
3853     END IF;
3854     IF (l_clev_rec.inv_rule_id = OKC_API.G_MISS_NUM) THEN
3855       l_clev_rec.inv_rule_id := NULL;
3856     END IF;
3857     IF (l_clev_rec.line_renewal_type_code = OKC_API.G_MISS_CHAR) THEN
3858       l_clev_rec.line_renewal_type_code := NULL;
3859     END IF;
3860     IF (l_clev_rec.ship_to_site_use_id = OKC_API.G_MISS_NUM) THEN
3861       l_clev_rec.ship_to_site_use_id := NULL;
3862     END IF;
3863     IF (l_clev_rec.payment_term_id = OKC_API.G_MISS_NUM) THEN
3864       l_clev_rec.payment_term_id := NULL;
3865     END IF;
3866     -- Line level cancellation --
3867     IF (l_clev_rec.date_cancelled = OKC_API.G_MISS_DATE) THEN
3868       l_clev_rec.date_cancelled := NULL;
3869     END IF;
3870     /*IF (l_clev_rec.canc_reason_code = OKC_API.G_MISS_CHAR) THEN
3871       l_clev_rec.canc_reason_code := NULL;
3872     END IF;*/
3873     IF (l_clev_rec.term_cancel_source = OKC_API.G_MISS_CHAR) THEN
3874       l_clev_rec.term_cancel_source := NULL;
3875     END IF;
3876     IF (l_clev_rec.cancelled_amount = OKC_API.G_MISS_NUM) THEN
3877       l_clev_rec.cancelled_amount := NULL;
3878     END IF;
3879     --added by mchoudha 22-JUL
3880     IF (l_clev_rec.payment_instruction_type = OKC_API.G_MISS_CHAR) THEN
3881       l_clev_rec.payment_instruction_type := NULL;
3882     END IF;
3883     IF (l_clev_rec.annualized_factor = OKC_API.G_MISS_NUM) THEN
3884       l_clev_rec.annualized_factor := NULL;
3885     END IF;
3886 
3887 --
3888 IF (l_debug = 'Y') THEN
3889    okc_debug.log('11450: Leaving  Fn  null_out_defaults ', 2);
3890    okc_debug.Reset_Indentation;
3891 END IF;
3892 
3893     RETURN(l_clev_rec);
3894 
3895   END null_out_defaults;
3896   ---------------------------------------------------------------------------
3897   -- PROCEDURE Validate_Attributes
3898   ---------------------------------------------------------------------------
3899   -------------------------------------------
3900   -- Validate_Attributes for:OKC_K_LINES_V --
3901   -------------------------------------------
3902   FUNCTION Validate_Attributes (
3903     p_clev_rec IN  clev_rec_type
3904   ) RETURN VARCHAR2 IS
3905     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3906     x_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3907     /* Bug 3652127 */
3908     l_application_id     Number;
3909     Cursor l_application_csr Is
3910     --npalepu 08-11-2005 modified for bug # 4691662.
3911     --Replaced table okc_k_headers_b with headers_All_b table
3912     /* Select application_id from okc_k_headers_b */
3913     Select application_id from okc_k_headers_all_b
3914     --end npalepu
3915     Where id = p_clev_rec.dnz_chr_id;
3916 
3917   BEGIN
3918 
3919     IF (l_debug = 'Y') THEN
3920        okc_debug.Set_Indentation('OKC_CLE_PVT');
3921        okc_debug.log('11500: Entered Validate_Attributes', 2);
3922     END IF;
3923 
3924     /************************ HAND-CODED *********************************/
3925     validate_line_number
3926   			(x_return_status => l_return_status,
3927   			 p_clev_rec      => p_clev_rec);
3928 
3929     -- store the highest degree of error
3930     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
3931 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
3932   	     x_return_status := l_return_status;
3933        End If;
3934     End If;
3935 
3936     validate_chr_id
3937   			(x_return_status => l_return_status,
3938   			 p_clev_rec      => p_clev_rec);
3939 
3940     -- store the highest degree of error
3941     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
3942 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
3943   	     x_return_status := l_return_status;
3944        End If;
3945     End If;
3946 
3947     validate_cle_id
3948   			(x_return_status => l_return_status,
3949   			 p_clev_rec      => p_clev_rec);
3950 
3951     -- store the highest degree of error
3952     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
3953 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
3954   	     x_return_status := l_return_status;
3955        End If;
3956     End If;
3957 
3958     validate_lse_id
3959   			(x_return_status => l_return_status,
3960   			 p_clev_rec      => p_clev_rec);
3961 
3962     -- store the highest degree of error
3963     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
3964 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
3965   	     x_return_status := l_return_status;
3966        End If;
3967     End If;
3968 
3969     validate_display_sequence
3970   			(x_return_status => l_return_status,
3971   			 p_clev_rec      => p_clev_rec);
3972 
3973     -- store the highest degree of error
3974     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
3975 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
3976   	     x_return_status := l_return_status;
3977        End If;
3978     End If;
3979 
3980     validate_dnz_chr_id
3981   			(x_return_status => l_return_status,
3982   			 p_clev_rec      => p_clev_rec);
3983 
3984     -- store the highest degree of error
3985     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
3986 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
3987   	     x_return_status := l_return_status;
3988        End If;
3989     End If;
3990 
3991     validate_exception_yn
3992   			(x_return_status => l_return_status,
3993   			 p_clev_rec      => p_clev_rec);
3994 
3995     -- store the highest degree of error
3996     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
3997 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
3998   	     x_return_status := l_return_status;
3999        End If;
4000     End If;
4001 
4002     validate_hidden_ind
4003   			(x_return_status => l_return_status,
4004   			 p_clev_rec      => p_clev_rec);
4005 
4006     -- store the highest degree of error
4007     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4008 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4009   	     x_return_status := l_return_status;
4010        End If;
4011     End If;
4012 
4013     validate_price_level_ind
4014   			(x_return_status => l_return_status,
4015   			 p_clev_rec      => p_clev_rec);
4016 
4017     -- store the highest degree of error
4018     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4019 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4020   	     x_return_status := l_return_status;
4021        End If;
4022     End If;
4023 
4024     validate_inv_line_level_ind
4025   			(x_return_status => l_return_status,
4026   			 p_clev_rec      => p_clev_rec);
4027 
4028     -- store the highest degree of error
4029     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4030 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4031   	     x_return_status := l_return_status;
4032        End If;
4033     End If;
4034 
4035     validate_price_type
4036   			(x_return_status => l_return_status,
4037   			 p_clev_rec      => p_clev_rec);
4038 
4039     -- store the highest degree of error
4040     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4041 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4042   	     x_return_status := l_return_status;
4043        End If;
4044     End If;
4045 
4046     validate_sts_code
4047   			(x_return_status => l_return_status,
4048   			 p_clev_rec      => p_clev_rec);
4049 
4050     -- store the highest degree of error
4051     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4052 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4053   	     x_return_status := l_return_status;
4054        End If;
4055     End If;
4056 
4057     validate_currency_code
4058   			(x_return_status => l_return_status,
4059   			 p_clev_rec      => p_clev_rec);
4060 
4061     -- store the highest degree of error
4062     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4063 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4064   	     x_return_status := l_return_status;
4065        End If;
4066     End If;
4067 
4068     validate_start_date
4069   			(x_return_status => l_return_status,
4070   			 p_clev_rec      => p_clev_rec);
4071 
4072     -- store the highest degree of error
4073     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4074 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4075   	     x_return_status := l_return_status;
4076        End If;
4077     End If;
4078 
4079     validate_end_date
4080   			(x_return_status => l_return_status,
4081   			 p_clev_rec      => p_clev_rec);
4082 
4083     -- store the highest degree of error
4084     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4085 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4086   	     x_return_status := l_return_status;
4087        End If;
4088     End If;
4089 
4090     validate_curr_code_rnwd
4091   			(x_return_status => l_return_status,
4092   			 p_clev_rec      => p_clev_rec);
4093 
4094     -- store the highest degree of error
4095     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4096 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4097   	     x_return_status := l_return_status;
4098        End If;
4099     End If;
4100 
4101     validate_orig_sys_code
4102   			(x_return_status => l_return_status,
4103   			 p_clev_rec      => p_clev_rec);
4104 
4105     -- store the highest degree of error
4106     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4107 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4108   	     x_return_status := l_return_status;
4109        End If;
4110     End If;
4111 ---------------------------
4112     validate_config_complete_yn
4113   			(x_return_status => l_return_status,
4114   			 p_clev_rec      => p_clev_rec);
4115 
4116     -- store the highest degree of error
4117     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4118 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4119   	     x_return_status := l_return_status;
4120           End If;
4121     End If;
4122 -------------------------
4123     validate_config_valid_yn
4124   			(x_return_status => l_return_status,
4125   			 p_clev_rec      => p_clev_rec);
4126 
4127     -- store the highest degree of error
4128     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4129 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4130   	     x_return_status := l_return_status;
4131           End If;
4132     End If;
4133 --------------------------
4134     validate_item_to_price_yn
4135   			(x_return_status => l_return_status,
4136   			 p_clev_rec      => p_clev_rec);
4137 
4138     -- store the highest degree of error
4139     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4140 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4141   	     x_return_status := l_return_status;
4142           End If;
4143     End If;
4144 --------------------------
4145     validate_price_basis_yn
4146   			(x_return_status => l_return_status,
4147   			 p_clev_rec      => p_clev_rec);
4148 
4149     -- store the highest degree of error
4150     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4151 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4152   	     x_return_status := l_return_status;
4153           End If;
4154     End If;
4155 --------------------------
4156     validate_config_item_type
4157   			(x_return_status => l_return_status,
4158   			 p_clev_rec      => p_clev_rec);
4159 
4160     -- store the highest degree of error
4161     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4162 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4163   	     x_return_status := l_return_status;
4164           End If;
4165     End If;
4166 --------------------------
4167 /* Bug 3652127 - price list  check not done for application id 515(OKS) */
4168 
4169 Open l_application_csr;
4170 Fetch l_application_csr into l_application_id;
4171 Close l_application_csr;
4172 
4173 If l_application_id <> 515 Then
4174     validate_price_list_id
4175   			(x_return_status => l_return_status,
4176   			 p_clev_rec      => p_clev_rec);
4177 
4178     -- store the highest degree of error
4179     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4180 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4181   	     x_return_status := l_return_status;
4182           End If;
4183     End If;
4184 End If;
4185 -----------------------------
4186     validate_price_list_line_id
4187   			(x_return_status => l_return_status,
4188   			 p_clev_rec      => p_clev_rec);
4189 
4190     -- store the highest degree of error
4191     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4192 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4193   	     x_return_status := l_return_status;
4194           End If;
4195     End If;
4196 --------------------------
4197     validate_ph_pricing_type
4198   			(x_return_status => l_return_status,
4199   			 p_clev_rec      => p_clev_rec);
4200 
4201     -- store the highest degree of error
4202     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4203 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4204   	     x_return_status := l_return_status;
4205           End If;
4206     End If;
4207 --------------------------
4208     validate_ph_price_break_basis
4209   			(x_return_status => l_return_status,
4210   			 p_clev_rec      => p_clev_rec);
4211 
4212     -- store the highest degree of error
4213     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4214 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4215   	     x_return_status := l_return_status;
4216           End If;
4217     End If;
4218 --------------------------
4219     validate_ph_qp_reference_id
4220   			(x_return_status => l_return_status,
4221   			 p_clev_rec      => p_clev_rec);
4222 
4223     -- store the highest degree of error
4224     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4225 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4226   	     x_return_status := l_return_status;
4227           End If;
4228     End If;
4229 --------------------------
4230     validate_ph_enforce_price_list
4231   			(x_return_status => l_return_status,
4232   			 p_clev_rec      => p_clev_rec);
4233 
4234     -- store the highest degree of error
4235     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4236 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4237   	     x_return_status := l_return_status;
4238           End If;
4239     End If;
4240 --------------------------
4241     validate_ph_integrated_with_qp
4242   			(x_return_status => l_return_status,
4243   			 p_clev_rec      => p_clev_rec);
4244 
4245     -- store the highest degree of error
4246     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4247 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4248   	     x_return_status := l_return_status;
4249           End If;
4250     End If;
4251 --------------------------
4252     validate_line_renewal_type
4253                (x_return_status => l_return_status,
4254                 p_clev_rec      => p_clev_rec);
4255 
4256     -- store the highest degree of error
4257     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4258        If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4259           x_return_status := l_return_status;
4260           End If;
4261     End If;
4262 ----------------------------
4263     -- return status to caller
4264         RETURN(x_return_status);
4265 
4266     IF (l_debug = 'Y') THEN
4267        okc_debug.log('11600: Exiting Validate_Attributes', 2);
4268        okc_debug.Reset_Indentation;
4269     END IF;
4270 
4271   exception
4272     when OTHERS then
4273 
4274     IF (l_debug = 'Y') THEN
4275        okc_debug.log('11700: Exiting Validate_Attributes:OTHERS Exception', 2);
4276        okc_debug.Reset_Indentation;
4277     END IF;
4278 
4279 	  -- store SQL error message on message stack
4280   	  OKC_API.SET_MESSAGE(p_app_name	=> g_app_name,
4281 					  p_msg_name	=> g_unexpected_error,
4282 					  p_token1	=> g_sqlcode_token,
4283 					  p_token1_value=> sqlcode,
4284 					  p_token2	=> g_sqlerrm_token,
4285 					  p_token2_value=> sqlerrm);
4286 
4287 	   -- notify caller of an UNEXPETED error
4288 	   x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4289 
4290 	   -- return status to caller
4291         RETURN(x_return_status);
4292 --------------------------------
4293     validate_conf_top_mod_ln_id
4294   			(x_return_status => l_return_status,
4295   			 p_clev_rec      => p_clev_rec);
4296 
4297     -- store the highest degree of error
4298     If l_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4299 	  If x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4300   	     x_return_status := l_return_status;
4301           End If;
4302     End If;
4303     /*********************** END HAND-CODED ********************************/
4304 
4305   END Validate_Attributes;
4306 
4307   ---------------------------------------------------------------------------
4308   -- PROCEDURE Validate_Record
4309   ---------------------------------------------------------------------------
4310   ---------------------------------------
4311   -- Validate_Record for:OKC_K_LINES_V --
4312   ---------------------------------------
4313   FUNCTION Validate_Record (
4314     p_clev_rec IN clev_rec_type
4315   ) RETURN VARCHAR2 IS
4316     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4317      -- Cursor to get header  end dates
4318      Cursor l_chrv_csr Is
4319                SELECT END_DATE
4320                --npalepu 08-11-2005 modified for bug # 4691662.
4321                --Replaced table okc_k_headers_b with headers_All_b table
4322                /* FROM OKC_K_HEADERS_B */
4323                FROM OKC_K_HEADERS_ALL_B
4324                --end npalepu
4325                WHERE ID = p_clev_rec.dnz_chr_id;
4326       l_end_date   DATE;
4327   BEGIN
4328 
4329     IF (l_debug = 'Y') THEN
4330        okc_debug.Set_Indentation('OKC_CLE_PVT');
4331        okc_debug.log('11800: Entered Validate_Record', 2);
4332     END IF;
4333 
4334     /************************ HAND-CODED ****************************/
4335     -- CHR_ID and CLE_ID are mutually exclusive
4336     If (p_clev_rec.chr_id IS NULL and
4337 	   p_clev_rec.cle_id IS NULL) or
4338        (p_clev_rec.chr_id IS NOT NULL and
4339 	   p_clev_rec.cle_id IS NOT NULL)
4340     Then
4341 	    l_return_status := OKC_API.G_RET_STS_ERROR;
4342 	    OKC_API.SET_MESSAGE(
4343 			p_app_name      => g_app_name,
4344 			p_msg_name      => g_invalid_value,
4345 			p_token1        => g_col_name_token,
4346 			p_token1_value  => 'chr_id',
4347 			p_token2        => g_col_name_token,
4348 			p_token2_value  => 'cle_id');
4349     End If;
4350     ---Pricing date cannot be greater than line/contract end date for advanced pricing
4351 
4352     If ((l_return_status = OKC_API.G_RET_STS_SUCCESS) AND
4353         Nvl(fnd_profile.value('OKC_ADVANCED_PRICING'), 'N') = 'Y') Then
4354        If p_clev_rec.PRICING_DATE is not null Then
4355 
4356            open l_chrv_csr;
4357            fetch l_chrv_csr into  l_end_date;
4358            close l_chrv_csr;
4359        End If;
4360 
4361        If  (p_clev_rec.END_DATE is not null OR l_end_date is not null) Then
4362            If (p_clev_rec.PRICING_DATE > nvl(p_clev_rec.END_DATE,l_end_date)) Then
4363            -- notify caller of an error as UNEXPETED error
4364               l_return_status := OKC_API.G_RET_STS_ERROR;
4365               OKC_API.SET_MESSAGE(p_app_name      => g_app_name,
4366                                p_msg_name      => 'OKC_INVALID_LINE_PRICING_DATE');
4367            End If;
4368        End If;
4369    End If;
4370 
4371     /*********************** END HAND-CODED *************************/
4372 
4373     IF (l_debug = 'Y') THEN
4374        okc_debug.log('11850: Exiting Validate_Record ', 2);
4375        okc_debug.Reset_Indentation;
4376     END IF;
4377 
4378     RETURN (l_return_status);
4379 
4380   END Validate_Record;
4381 
4382   ---------------------------------------------------------------------------
4383   -- PROCEDURE Migrate
4384   ---------------------------------------------------------------------------
4385   PROCEDURE migrate (
4386     p_from	IN clev_rec_type,
4387     p_to	IN OUT NOCOPY cle_rec_type
4388   ) IS
4389   BEGIN
4390 
4391     p_to.id := p_from.id;
4392     p_to.line_number := p_from.line_number;
4393     p_to.chr_id := p_from.chr_id;
4394     p_to.cle_id := p_from.cle_id;
4395     p_to.dnz_chr_id := p_from.dnz_chr_id;
4396     p_to.display_sequence := p_from.display_sequence;
4397     p_to.sts_code := p_from.sts_code;
4398     p_to.trn_code := p_from.trn_code;
4399     p_to.lse_id := p_from.lse_id;
4400     p_to.exception_yn := p_from.exception_yn;
4401     p_to.object_version_number := p_from.object_version_number;
4402     p_to.created_by := p_from.created_by;
4403     p_to.creation_date := p_from.creation_date;
4404     p_to.last_updated_by := p_from.last_updated_by;
4405     p_to.last_update_date := p_from.last_update_date;
4406     p_to.hidden_ind := p_from.hidden_ind;
4407     p_to.price_unit := p_from.price_unit;
4408     p_to.price_unit_percent := p_from.price_unit_percent;
4409     p_to.price_negotiated := p_from.price_negotiated;
4410     p_to.price_negotiated_renewed := p_from.price_negotiated_renewed;
4411     p_to.price_level_ind := p_from.price_level_ind;
4412     p_to.invoice_line_level_ind := p_from.invoice_line_level_ind;
4413     p_to.dpas_rating := p_from.dpas_rating;
4414     p_to.template_used := p_from.template_used;
4415     p_to.price_type := p_from.price_type;
4416     p_to.currency_code := p_from.currency_code;
4417     p_to.currency_code_renewed := p_from.currency_code_renewed;
4418     p_to.last_update_login := p_from.last_update_login;
4419     p_to.date_terminated := p_from.date_terminated;
4420     p_to.start_date := p_from.start_date;
4421     p_to.end_date := p_from.end_date;
4422     p_to.date_renewed := p_from.date_renewed;
4423     p_to.upg_orig_system_ref := p_from.upg_orig_system_ref;
4424     p_to.upg_orig_system_ref_id := p_from.upg_orig_system_ref_id;
4425     p_to.orig_system_source_code := p_from.orig_system_source_code;
4426     p_to.orig_system_id1 :=p_from.orig_system_id1 ;
4427     p_to.orig_system_reference1 := p_from.orig_system_reference1 ;
4428     p_to.request_id                := p_from.request_id;
4429     p_to.program_application_id    := p_from.program_application_id;
4430     p_to.program_id                := p_from.program_id;
4431     p_to.program_update_date       := p_from.program_update_date;
4432     p_to.price_list_id             := p_from.price_list_id;
4433     p_to.pricing_date              := p_from.pricing_date;
4434     p_to.price_list_line_id        := p_from.price_list_line_id;
4435     p_to.line_list_price           := p_from.line_list_price;
4436     p_to.item_to_price_yn          := p_from.item_to_price_yn;
4437     p_to.price_basis_yn            := p_from.price_basis_yn;
4438     p_to.config_header_id          := p_from.config_header_id;
4439     p_to.config_revision_number    := p_from.config_revision_number;
4440     p_to.config_complete_yn        := p_from.config_complete_yn;
4441     p_to.config_valid_yn           := p_from.config_valid_yn;
4442     p_to.config_top_model_line_id  := p_from.config_top_model_line_id;
4443     p_to.config_item_type          := p_from.config_item_type;
4444 ---Bug.No.-1942374
4445     p_to.CONFIG_ITEM_ID          := p_from.CONFIG_ITEM_ID;
4446 ---Bug.No.-1942374
4447     p_to.attribute_category := p_from.attribute_category;
4448     p_to.attribute1 := p_from.attribute1;
4449     p_to.attribute2 := p_from.attribute2;
4450     p_to.attribute3 := p_from.attribute3;
4451     p_to.attribute4 := p_from.attribute4;
4452     p_to.attribute5 := p_from.attribute5;
4453     p_to.attribute6 := p_from.attribute6;
4454     p_to.attribute7 := p_from.attribute7;
4455     p_to.attribute8 := p_from.attribute8;
4456     p_to.attribute9 := p_from.attribute9;
4457     p_to.attribute10 := p_from.attribute10;
4458     p_to.attribute11 := p_from.attribute11;
4459     p_to.attribute12 := p_from.attribute12;
4460     p_to.attribute13 := p_from.attribute13;
4461     p_to.attribute14 := p_from.attribute14;
4462     p_to.attribute15 := p_from.attribute15;
4463     p_to.service_item_yn := p_from.service_item_yn;
4464                       --new columns for price hold
4465     p_to.ph_pricing_type          := p_from.ph_pricing_type;
4466     p_to.ph_price_break_basis     := p_from.ph_price_break_basis;
4467     p_to.ph_min_qty               := p_from.ph_min_qty;
4468     p_to.ph_min_amt               := p_from.ph_min_amt;
4469     p_to.ph_qp_reference_id       := p_from.ph_qp_reference_id;
4470     p_to.ph_value                 := p_from.ph_value;
4471     p_to.ph_enforce_price_list_yn := p_from.ph_enforce_price_list_yn;
4472     p_to.ph_adjustment            := p_from.ph_adjustment;
4473     p_to.ph_integrated_with_qp    := p_from.ph_integrated_with_qp;
4474 
4475 --new columns to replace rules
4476 
4477     p_to.cust_acct_id           := p_from.cust_acct_id;
4478     p_to.bill_to_site_use_id    := p_from.bill_to_site_use_id;
4479     p_to.inv_rule_id            := p_from.inv_rule_id;
4480     p_to.line_renewal_type_code := p_from.line_renewal_type_code;
4481     p_to.ship_to_site_use_id    := p_from.ship_to_site_use_id;
4482     p_to.payment_term_id        := p_from.payment_term_id;
4483 
4484 ---Line Level Cancellation ---
4485     p_to.date_cancelled := p_from.date_cancelled;
4486     --p_to.canc_reason_code := p_from.canc_reason_code;
4487     p_to.term_cancel_source := p_from.term_cancel_source;
4488     p_to.cancelled_amount   := p_from.cancelled_amount;
4489     --added by mchoudha 22-JUL
4490     p_to.annualized_factor := p_from.annualized_factor;
4491     p_to.payment_instruction_type := p_from.payment_instruction_type;
4492 
4493   END migrate;
4494 
4495   PROCEDURE migrate (
4496     p_from	IN cle_rec_type,
4497     p_to	IN OUT NOCOPY clev_rec_type
4498   ) IS
4499   BEGIN
4500 
4501     p_to.id := p_from.id;
4502     p_to.line_number := p_from.line_number;
4503     p_to.chr_id := p_from.chr_id;
4504     p_to.cle_id := p_from.cle_id;
4505     p_to.dnz_chr_id := p_from.dnz_chr_id;
4506     p_to.display_sequence := p_from.display_sequence;
4507     p_to.sts_code := p_from.sts_code;
4508     p_to.trn_code := p_from.trn_code;
4509     p_to.lse_id := p_from.lse_id;
4510     p_to.exception_yn := p_from.exception_yn;
4511     p_to.object_version_number := p_from.object_version_number;
4512     p_to.created_by := p_from.created_by;
4513     p_to.creation_date := p_from.creation_date;
4514     p_to.last_updated_by := p_from.last_updated_by;
4515     p_to.last_update_date := p_from.last_update_date;
4516     p_to.hidden_ind := p_from.hidden_ind;
4517     p_to.price_unit := p_from.price_unit;
4518     p_to.price_unit_percent := p_from.price_unit_percent;
4519     p_to.price_negotiated := p_from.price_negotiated;
4520     p_to.price_negotiated_renewed := p_from.price_negotiated_renewed;
4521     p_to.price_level_ind := p_from.price_level_ind;
4522     p_to.invoice_line_level_ind := p_from.invoice_line_level_ind;
4523     p_to.dpas_rating := p_from.dpas_rating;
4524     p_to.template_used := p_from.template_used;
4525     p_to.price_type := p_from.price_type;
4526     p_to.currency_code := p_from.currency_code;
4527     p_to.currency_code_renewed := p_from.currency_code_renewed;
4528     p_to.last_update_login := p_from.last_update_login;
4529     p_to.date_terminated := p_from.date_terminated;
4530     p_to.start_date := p_from.start_date;
4531     p_to.end_date := p_from.end_date;
4532     p_to.date_renewed := p_from.date_renewed;
4533     p_to.upg_orig_system_ref := p_from.upg_orig_system_ref;
4534     p_to.upg_orig_system_ref_id := p_from.upg_orig_system_ref_id;
4535     p_to.orig_system_source_code := p_from.orig_system_source_code;
4536     p_to.orig_system_id1 :=p_from.orig_system_id1 ;
4537     p_to.orig_system_reference1 := p_from.orig_system_reference1 ;
4538     p_to.request_id                := p_from.request_id;
4539     p_to.program_application_id    := p_from.program_application_id;
4540     p_to.program_id                := p_from.program_id;
4541     p_to.program_update_date       := p_from.program_update_date;
4542     p_to.price_list_id             := p_from.price_list_id;
4543     p_to.pricing_date              := p_from.pricing_date;
4544     p_to.price_list_line_id        := p_from.price_list_line_id;
4545     p_to.line_list_price           := p_from.line_list_price;
4546     p_to.item_to_price_yn          := p_from.item_to_price_yn;
4547     p_to.price_basis_yn            := p_from.price_basis_yn;
4548     p_to.config_header_id          := p_from.config_header_id;
4549     p_to.config_revision_number    := p_from.config_revision_number;
4550     p_to.config_complete_yn        := p_from.config_complete_yn;
4551     p_to.config_valid_yn           := p_from.config_valid_yn;
4552     p_to.config_top_model_line_id  := p_from.config_top_model_line_id;
4553     p_to.config_item_type          := p_from.config_item_type;
4554 ---Bug.No.1942374-
4555     p_to.CONFIG_ITEM_ID           := p_from.CONFIG_ITEM_ID;
4556 ---Bug.No.1942374-
4557     p_to.attribute_category := p_from.attribute_category;
4558     p_to.attribute1 := p_from.attribute1;
4559     p_to.attribute2 := p_from.attribute2;
4560     p_to.attribute3 := p_from.attribute3;
4561     p_to.attribute4 := p_from.attribute4;
4562     p_to.attribute5 := p_from.attribute5;
4563     p_to.attribute6 := p_from.attribute6;
4564     p_to.attribute7 := p_from.attribute7;
4565     p_to.attribute8 := p_from.attribute8;
4566     p_to.attribute9 := p_from.attribute9;
4567     p_to.attribute10 := p_from.attribute10;
4568     p_to.attribute11 := p_from.attribute11;
4569     p_to.attribute12 := p_from.attribute12;
4570     p_to.attribute13 := p_from.attribute13;
4571     p_to.attribute14 := p_from.attribute14;
4572     p_to.attribute15 := p_from.attribute15;
4573     p_to.service_item_yn := p_from.service_item_yn;
4574                       --new columns for price hold
4575     p_to.ph_pricing_type          := p_from.ph_pricing_type;
4576     p_to.ph_price_break_basis     := p_from.ph_price_break_basis;
4577     p_to.ph_min_qty               := p_from.ph_min_qty;
4578     p_to.ph_min_amt               := p_from.ph_min_amt;
4579     p_to.ph_qp_reference_id       := p_from.ph_qp_reference_id;
4580     p_to.ph_value                 := p_from.ph_value;
4581     p_to.ph_enforce_price_list_yn := p_from.ph_enforce_price_list_yn;
4582     p_to.ph_adjustment            := p_from.ph_adjustment;
4583     p_to.ph_integrated_with_qp    := p_from.ph_integrated_with_qp;
4584 --new columns to replace rules
4585 
4586     p_to.cust_acct_id           := p_from.cust_acct_id;
4587     p_to.bill_to_site_use_id    := p_from.bill_to_site_use_id;
4588     p_to.inv_rule_id            := p_from.inv_rule_id;
4589     p_to.line_renewal_type_code := p_from.line_renewal_type_code;
4590     p_to.ship_to_site_use_id    := p_from.ship_to_site_use_id;
4591     p_to.payment_term_id        := p_from.payment_term_id;
4592 
4593 -- Line level cancellation --
4594     p_to.date_cancelled 	:= p_from.date_cancelled;
4595     --p_to.canc_reason_code 	:= p_from.canc_reason_code;
4596     p_to.term_cancel_source 	:= p_from.term_cancel_source;
4597     p_to.cancelled_amount 	:= p_from.cancelled_amount;
4598     --added by mchoudha 22-JUL
4599     p_to.annualized_factor := p_from.annualized_factor;
4600     p_to.payment_instruction_type := p_from.payment_instruction_type;
4601 
4602   END migrate;
4603 
4604 
4605   PROCEDURE migrate (
4606     p_from	IN clev_rec_type,
4607     p_to	IN OUT NOCOPY okc_k_lines_tl_rec_type
4608   ) IS
4609   BEGIN
4610 
4611     p_to.id := p_from.id;
4612     p_to.sfwt_flag := p_from.sfwt_flag;
4613     p_to.name := p_from.name;
4617     p_to.cognomen := p_from.cognomen;
4614     p_to.comments := p_from.comments;
4615     p_to.item_description := p_from.item_description;
4616     p_to.oke_boe_description := p_from.oke_boe_description;
4618     p_to.block23text := p_from.block23text;
4619     p_to.created_by := p_from.created_by;
4620     p_to.creation_date := p_from.creation_date;
4621     p_to.last_updated_by := p_from.last_updated_by;
4622     p_to.last_update_date := p_from.last_update_date;
4623     p_to.last_update_login := p_from.last_update_login;
4624 
4625   END migrate;
4626 
4627 
4628   PROCEDURE migrate (
4629     p_from	IN okc_k_lines_tl_rec_type,
4630     p_to	IN OUT NOCOPY clev_rec_type
4631   ) IS
4632   BEGIN
4633 
4634     p_to.id := p_from.id;
4635     p_to.sfwt_flag := p_from.sfwt_flag;
4636     p_to.name := p_from.name;
4637     p_to.comments := p_from.comments;
4638     p_to.item_description := p_from.item_description;
4639     p_to.oke_boe_description := p_from.oke_boe_description;
4640     p_to.cognomen := p_from.cognomen;
4641     p_to.block23text := p_from.block23text;
4642     p_to.created_by := p_from.created_by;
4643     p_to.creation_date := p_from.creation_date;
4644     p_to.last_updated_by := p_from.last_updated_by;
4645     p_to.last_update_date := p_from.last_update_date;
4646     p_to.last_update_login := p_from.last_update_login;
4647 
4648   END migrate;
4649 
4650   ---------------------------------------------------------------------------
4651   -- PROCEDURE validate_row
4652   ---------------------------------------------------------------------------
4653   ------------------------------------
4654   -- validate_row for:OKC_K_LINES_V --
4655   ------------------------------------
4656   PROCEDURE validate_row(
4657     p_api_version                  IN NUMBER,
4658     p_init_msg_list                IN VARCHAR2,
4659     x_return_status                OUT NOCOPY VARCHAR2,
4660     x_msg_count                    OUT NOCOPY NUMBER,
4661     x_msg_data                     OUT NOCOPY VARCHAR2,
4662     p_clev_rec                     IN clev_rec_type) IS
4663 
4664     l_api_version                 CONSTANT NUMBER := 1;
4665     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
4666     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4667     l_clev_rec                     clev_rec_type := p_clev_rec;
4668     l_cle_rec                      cle_rec_type;
4669     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
4670   BEGIN
4671 
4672     IF (l_debug = 'Y') THEN
4673        okc_debug.Set_Indentation('OKC_CLE_PVT');
4674        okc_debug.log('12300: Entered validate_row', 2);
4675     END IF;
4676 
4677     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4678                                               G_PKG_NAME,
4679                                               p_init_msg_list,
4680                                               l_api_version,
4681                                               p_api_version,
4682                                               '_PVT',
4683                                               x_return_status);
4684     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4685       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4686     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4687       RAISE OKC_API.G_EXCEPTION_ERROR;
4688     END IF;
4689 
4690     IF p_clev_rec.VALIDATE_YN = 'Y' THEN ---Bug#3150149
4691        --- Validate all non-missing attributes (Item Level Validation)
4692        l_return_status := Validate_Attributes(l_clev_rec);
4693     END IF;---Bug#3150149
4694 
4695     --- If any errors happen abort API
4696     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4697       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4698     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4699       RAISE OKC_API.G_EXCEPTION_ERROR;
4700     END IF;
4701     l_return_status := Validate_Record(l_clev_rec);
4702     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4703       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4704     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4705       RAISE OKC_API.G_EXCEPTION_ERROR;
4706     END IF;
4707     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4708 
4709     IF (l_debug = 'Y') THEN
4710        okc_debug.log('12400: Exiting validate_row', 2);
4711        okc_debug.Reset_Indentation;
4712     END IF;
4713 
4714   EXCEPTION
4715     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4716 
4717     IF (l_debug = 'Y') THEN
4718        okc_debug.log('12500: Exiting validate_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
4719        okc_debug.Reset_Indentation;
4720     END IF;
4721 
4722       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4723       (
4724         l_api_name,
4725         G_PKG_NAME,
4726         'OKC_API.G_RET_STS_ERROR',
4727         x_msg_count,
4728         x_msg_data,
4729         '_PVT'
4730       );
4731     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4732 
4733     IF (l_debug = 'Y') THEN
4734        okc_debug.log('12600: Exiting validate_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
4735        okc_debug.Reset_Indentation;
4736     END IF;
4737 
4738       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4739       (
4740         l_api_name,
4741         G_PKG_NAME,
4742         'OKC_API.G_RET_STS_UNEXP_ERROR',
4743         x_msg_count,
4744         x_msg_data,
4745         '_PVT'
4746       );
4747     WHEN OTHERS THEN
4748 
4749     IF (l_debug = 'Y') THEN
4750        okc_debug.log('12700: Exiting validate_row:OTHERS Exception', 2);
4751        okc_debug.Reset_Indentation;
4752     END IF;
4753 
4754       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4755       (
4756         l_api_name,
4757         G_PKG_NAME,
4758         'OTHERS',
4759         x_msg_count,
4760         x_msg_data,
4761         '_PVT'
4762       );
4763 
4764   END validate_row;
4765   ------------------------------------------
4766   -- PL/SQL TBL validate_row for:CLEV_TBL --
4767   ------------------------------------------
4768   PROCEDURE validate_row(
4769     p_api_version                  IN NUMBER,
4770     p_init_msg_list                IN VARCHAR2,
4771     x_return_status                OUT NOCOPY VARCHAR2,
4772     x_msg_count                    OUT NOCOPY NUMBER,
4773     x_msg_data                     OUT NOCOPY VARCHAR2,
4774     p_clev_tbl                     IN clev_tbl_type) IS
4775 
4776     l_api_version                 CONSTANT NUMBER := 1;
4777     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
4778     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4779     l_overall_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4780     i                              NUMBER := 0;
4781   BEGIN
4782 
4783     IF (l_debug = 'Y') THEN
4784        okc_debug.Set_Indentation('OKC_CLE_PVT');
4785        okc_debug.log('12800: Entered validate_row', 2);
4786     END IF;
4787 
4788     OKC_API.init_msg_list(p_init_msg_list);
4789     -- Make sure PL/SQL table has records in it before passing
4790     IF (p_clev_tbl.COUNT > 0) THEN
4791       i := p_clev_tbl.FIRST;
4792       LOOP
4793         validate_row (
4794           p_api_version                  => p_api_version,
4795           p_init_msg_list                => OKC_API.G_FALSE,
4796           x_return_status                => x_return_status,
4797           x_msg_count                    => x_msg_count,
4798           x_msg_data                     => x_msg_data,
4799           p_clev_rec                     => p_clev_tbl(i));
4800 
4801 		-- store the highest degree of error
4802 		If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
4803 		   If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
4804 			 l_overall_status := x_return_status;
4805 		   End If;
4806 		End If;
4807 
4808         EXIT WHEN (i = p_clev_tbl.LAST);
4809         i := p_clev_tbl.NEXT(i);
4810       END LOOP;
4811 	 -- return overall status
4812 	 x_return_status := l_overall_status;
4813     END IF;
4814 
4815 IF (l_debug = 'Y') THEN
4816    okc_debug.log('12900: Exiting validate_row', 2);
4817    okc_debug.Reset_Indentation;
4818 END IF;
4819 
4820   EXCEPTION
4821     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4822 
4823     IF (l_debug = 'Y') THEN
4824        okc_debug.log('13000: Exiting validate_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
4825        okc_debug.Reset_Indentation;
4826     END IF;
4827 
4828       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4829       (
4830         l_api_name,
4831         G_PKG_NAME,
4832         'OKC_API.G_RET_STS_ERROR',
4833         x_msg_count,
4834         x_msg_data,
4835         '_PVT'
4836       );
4837     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4838 
4839     IF (l_debug = 'Y') THEN
4840        okc_debug.log('13100: Exiting validate_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
4841        okc_debug.Reset_Indentation;
4842     END IF;
4843 
4844       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4845       (
4846         l_api_name,
4847         G_PKG_NAME,
4848         'OKC_API.G_RET_STS_UNEXP_ERROR',
4849         x_msg_count,
4850         x_msg_data,
4851         '_PVT'
4852       );
4853     WHEN OTHERS THEN
4854 
4855     IF (l_debug = 'Y') THEN
4856        okc_debug.log('13200: Exiting validate_row:OTHERS Exception', 2);
4857        okc_debug.Reset_Indentation;
4858     END IF;
4859 
4860       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4861       (
4862         l_api_name,
4863         G_PKG_NAME,
4864         'OTHERS',
4865         x_msg_count,
4866         x_msg_data,
4867         '_PVT'
4868       );
4869 
4870   END validate_row;
4871 
4872   ---------------------------------------------------------------------------
4873   -- PROCEDURE insert_row
4874   ---------------------------------------------------------------------------
4875   ----------------------------------
4876   -- insert_row for:OKC_K_LINES_B --
4877   ----------------------------------
4878   PROCEDURE insert_row(
4879     p_init_msg_list                IN VARCHAR2,
4880     x_return_status                OUT NOCOPY VARCHAR2,
4881     x_msg_count                    OUT NOCOPY NUMBER,
4882     x_msg_data                     OUT NOCOPY VARCHAR2,
4883     p_cle_rec                      IN cle_rec_type,
4884     x_cle_rec                      OUT NOCOPY cle_rec_type) IS
4885 
4886     l_api_version                 CONSTANT NUMBER := 1;
4887     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
4888     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4889     l_cle_rec                      cle_rec_type := p_cle_rec;
4890     l_def_cle_rec                  cle_rec_type;
4891     --------------------------------------
4892     -- Set_Attributes for:OKC_K_LINES_B --
4893     --------------------------------------
4894     FUNCTION Set_Attributes (
4895       p_cle_rec IN  cle_rec_type,
4896       x_cle_rec OUT NOCOPY cle_rec_type
4897     ) RETURN VARCHAR2 IS
4898       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4899     BEGIN
4900 
4901       x_cle_rec := p_cle_rec;
4902       RETURN(l_return_status);
4903 
4904     END Set_Attributes;
4905   BEGIN
4906 
4907     IF (l_debug = 'Y') THEN
4908        okc_debug.Set_Indentation('OKC_CLE_PVT');
4909        okc_debug.log('13400: Entered insert_row', 2);
4910     END IF;
4911 
4912     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4913                                               p_init_msg_list,
4914                                               '_PVT',
4915                                               x_return_status);
4916     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4917       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4918     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4919       RAISE OKC_API.G_EXCEPTION_ERROR;
4920     END IF;
4921     --- Setting item attributes
4922     l_return_status := Set_Attributes(
4923       p_cle_rec,                         -- IN
4924       l_cle_rec);                        -- OUT
4925     --- If any errors happen abort API
4926     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4927       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4928     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4929       RAISE OKC_API.G_EXCEPTION_ERROR;
4930     END IF;
4931     INSERT INTO OKC_K_LINES_B(
4932         id,
4933         line_number,
4934         chr_id,
4935         cle_id,
4936         dnz_chr_id,
4937         display_sequence,
4938         sts_code,
4939         trn_code,
4940         lse_id,
4941         exception_yn,
4942         object_version_number,
4943         created_by,
4944         creation_date,
4945         last_updated_by,
4946         last_update_date,
4947         hidden_ind,
4948         price_unit,
4949     	price_unit_percent,
4950         price_negotiated,
4951         price_negotiated_renewed,
4952         price_level_ind,
4953         invoice_line_level_ind,
4954         dpas_rating,
4955         template_used,
4956         price_type,
4957         currency_code,
4958         currency_code_renewed,
4959         last_update_login,
4960         date_terminated,
4961         start_date,
4962         end_date,
4963 	date_renewed,
4964         upg_orig_system_ref,
4965         upg_orig_system_ref_id,
4966         orig_system_source_code,
4967         orig_system_id1,
4968         orig_system_reference1,
4969         program_id,
4970         request_id,
4971         program_update_date,
4972         program_application_id,
4973         price_list_id,
4974         pricing_date,
4975         price_list_line_id,
4976         line_list_price,
4977         item_to_price_yn,
4978         price_basis_yn,
4979         config_header_id,
4980         config_revision_number,
4981         config_complete_yn,
4982         config_valid_yn,
4983         config_top_model_line_id,
4984         config_item_type,
4985 ---Bug.No.-1942374
4986         config_item_id,
4987 ---Bug.No.-1942374
4988         attribute_category,
4989         attribute1,
4990         attribute2,
4991         attribute3,
4992         attribute4,
4993         attribute5,
4994         attribute6,
4995         attribute7,
4996         attribute8,
4997         attribute9,
4998         attribute10,
4999         attribute11,
5000         attribute12,
5001         attribute13,
5002         attribute14,
5003         attribute15,
5004         service_item_yn,
5005                       --new columns for price hold
5006         ph_pricing_type,
5007         ph_price_break_basis,
5008         ph_min_qty,
5009         ph_min_amt,
5010         ph_qp_reference_id,
5011         ph_value,
5012         ph_enforce_price_list_yn,
5013         ph_adjustment,
5014         ph_integrated_with_qp,
5015 	   --new columns to replace rules
5016 	   cust_acct_id,
5017 	   bill_to_site_use_id,
5018 	   inv_rule_id,
5019 	   line_renewal_type_code,
5020 	   ship_to_site_use_id,
5021 	   payment_term_id,
5022 	   payment_instruction_type, --added by mchoudha 22-JUL
5023 	   ---NPALEPU on 03-JUN-2005 Added new column for Annualized Amount
5024         annualized_factor,
5025 	/*** R12 Data Model Changes Start  **/
5026            date_cancelled		  ,
5027          -- canc_reason_code		  ,
5028            term_cancel_source		,
5029 	   cancelled_amount
5030 /** 	R12 Data Model Changes End ***/
5031 	)
5032       VALUES (
5033         l_cle_rec.id,
5034         l_cle_rec.line_number,
5035         l_cle_rec.chr_id,
5036         l_cle_rec.cle_id,
5037         l_cle_rec.dnz_chr_id,
5038         l_cle_rec.display_sequence,
5039         l_cle_rec.sts_code,
5040         l_cle_rec.trn_code,
5041         l_cle_rec.lse_id,
5042         l_cle_rec.exception_yn,
5043         l_cle_rec.object_version_number,
5044         l_cle_rec.created_by,
5045         l_cle_rec.creation_date,
5046         l_cle_rec.last_updated_by,
5047         l_cle_rec.last_update_date,
5048         l_cle_rec.hidden_ind,
5049     	l_cle_rec.price_unit,
5050     	l_cle_rec.price_unit_percent,
5051         l_cle_rec.price_negotiated,
5052         l_cle_rec.price_negotiated_renewed,
5053         l_cle_rec.price_level_ind,
5054         l_cle_rec.invoice_line_level_ind,
5055         l_cle_rec.dpas_rating,
5056         l_cle_rec.template_used,
5057         l_cle_rec.price_type,
5058         l_cle_rec.currency_code,
5059 	l_cle_rec.currency_code_renewed,
5060         l_cle_rec.last_update_login,
5061         l_cle_rec.date_terminated,
5062         l_cle_rec.start_date,
5063         l_cle_rec.end_date,
5064         l_cle_rec.date_renewed,
5065         l_cle_rec.upg_orig_system_ref,
5066         l_cle_rec.upg_orig_system_ref_id,
5067         l_cle_rec.orig_system_source_code,
5068         l_cle_rec.orig_system_id1,
5069         l_cle_rec.orig_system_reference1,
5070 decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
5071 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
5072 decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
5073 decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
5074         l_cle_rec.price_list_id,
5075         l_cle_rec.pricing_date,
5076         l_cle_rec.price_list_line_id,
5077         l_cle_rec.line_list_price,
5078         l_cle_rec.item_to_price_yn,
5079         l_cle_rec.price_basis_yn,
5080         l_cle_rec.config_header_id,
5081         l_cle_rec.config_revision_number,
5082         l_cle_rec.config_complete_yn,
5083         l_cle_rec.config_valid_yn,
5084         l_cle_rec.config_top_model_line_id,
5085         l_cle_rec.config_item_type,
5086 ---Bug.No.-1942374
5087         l_cle_rec.config_item_id,
5088 ---Bug.No.-1942374
5089         l_cle_rec.attribute_category,
5090         l_cle_rec.attribute1,
5091         l_cle_rec.attribute2,
5092         l_cle_rec.attribute3,
5093         l_cle_rec.attribute4,
5094         l_cle_rec.attribute5,
5095         l_cle_rec.attribute6,
5096         l_cle_rec.attribute7,
5097         l_cle_rec.attribute8,
5098         l_cle_rec.attribute9,
5099         l_cle_rec.attribute10,
5100         l_cle_rec.attribute11,
5101         l_cle_rec.attribute12,
5102         l_cle_rec.attribute13,
5103         l_cle_rec.attribute14,
5104         l_cle_rec.attribute15,
5105         l_cle_rec.service_item_yn,
5106                   -- new columns for price hold
5107         l_cle_rec.ph_pricing_type,
5108         l_cle_rec.ph_price_break_basis,
5109         l_cle_rec.ph_min_qty,
5110         l_cle_rec.ph_min_amt,
5111         l_cle_rec.ph_qp_reference_id,
5112         l_cle_rec.ph_value,
5113         l_cle_rec.ph_enforce_price_list_yn,
5114         l_cle_rec.ph_adjustment,
5115         l_cle_rec.ph_integrated_with_qp,
5116 --new columns to replace rules
5117         l_cle_rec.cust_acct_id,
5118         l_cle_rec.bill_to_site_use_id,
5119         l_cle_rec.inv_rule_id,
5120         l_cle_rec.line_renewal_type_code,
5121         l_cle_rec.ship_to_site_use_id,
5122         l_cle_rec.payment_term_id,
5123 	l_cle_rec.payment_instruction_type, --added by mchoudha 22-JUL
5124         --NPALEPU on 03-JUN-2005 Added new column for Annualized Amounts
5125         NVL((SELECT (ADD_MONTHS(l_cle_rec.start_date, (nyears+1)*12) - l_cle_rec.start_date -
5126                     DECODE(ADD_MONTHS(l_cle_rec.end_date, -12),( l_cle_rec.end_date-366), 0,
5127                     DECODE(ADD_MONTHS(l_cle_rec.start_date, (nyears+1)*12) -
5128                     ADD_MONTHS(l_cle_rec.start_date, nyears*12), 366, 1, 0)))
5129                     / (nyears+1) /(l_cle_rec.end_date-l_cle_rec.start_date+1)
5130              FROM (SELECT trunc(MONTHS_BETWEEN(l_cle_rec.end_date, l_cle_rec.start_date)/12) nyears FROM dual)  dual
5131              WHERE l_cle_rec.lse_id in (1,12,14,19,46,7,8,9,10,11,13,18,25,35)),0),
5132        /*** R12 Data Model Changes Start  **/
5133         l_cle_rec.date_cancelled		  ,
5134         --l_cle_rec.canc_reason_code		  ,
5135         l_cle_rec.term_cancel_source		  ,
5136 	l_cle_rec.cancelled_amount
5137 /** 	R12 Data Model Changes End ***/
5138 	);
5139        --END NPALEPU
5140     -- Set OUT values
5141     x_cle_rec := l_cle_rec;
5142     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5143 
5144  IF (l_debug = 'Y') THEN
5145     okc_debug.log('13500: Exiting insert_row', 2);
5146     okc_debug.Reset_Indentation;
5147  END IF;
5148 
5149   EXCEPTION
5150     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5151 
5152     IF (l_debug = 'Y') THEN
5153        okc_debug.log('13600: Exiting insert_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
5154        okc_debug.Reset_Indentation;
5155     END IF;
5156 
5157       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5158       (
5159         l_api_name,
5160         G_PKG_NAME,
5161         'OKC_API.G_RET_STS_ERROR',
5162         x_msg_count,
5163         x_msg_data,
5164         '_PVT'
5165       );
5166     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5167 
5168     IF (l_debug = 'Y') THEN
5169        okc_debug.log('13700: Exiting insert_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
5170        okc_debug.Reset_Indentation;
5171     END IF;
5172 
5173       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5174       (
5175         l_api_name,
5176         G_PKG_NAME,
5177         'OKC_API.G_RET_STS_UNEXP_ERROR',
5178         x_msg_count,
5179         x_msg_data,
5180         '_PVT'
5181       );
5182     WHEN OTHERS THEN
5183 
5184     IF (l_debug = 'Y') THEN
5185        okc_debug.log('13800: Exiting insert_row:OTHERS Exception', 2);
5186        okc_debug.Reset_Indentation;
5187     END IF;
5188 
5189       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5190       (
5191         l_api_name,
5192         G_PKG_NAME,
5193         'OTHERS',
5194         x_msg_count,
5195         x_msg_data,
5196         '_PVT'
5197       );
5198 
5199   END insert_row;
5200   -----------------------------------
5201   -- insert_row for:OKC_K_LINES_TL --
5202   -----------------------------------
5203   PROCEDURE insert_row(
5204     p_init_msg_list                IN VARCHAR2,
5205     x_return_status                OUT NOCOPY VARCHAR2,
5206     x_msg_count                    OUT NOCOPY NUMBER,
5207     x_msg_data                     OUT NOCOPY VARCHAR2,
5208     p_okc_k_lines_tl_rec           IN okc_k_lines_tl_rec_type,
5209     x_okc_k_lines_tl_rec           OUT NOCOPY okc_k_lines_tl_rec_type) IS
5210 
5211     l_api_version                 CONSTANT NUMBER := 1;
5212     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
5213     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5214     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type := p_okc_k_lines_tl_rec;
5215     l_def_okc_k_lines_tl_rec       okc_k_lines_tl_rec_type;
5216     CURSOR get_languages IS
5217       SELECT *
5218         FROM FND_LANGUAGES
5219        WHERE INSTALLED_FLAG IN ('I', 'B');
5220     ---------------------------------------
5221     -- Set_Attributes for:OKC_K_LINES_TL --
5222     ---------------------------------------
5223     FUNCTION Set_Attributes (
5224       p_okc_k_lines_tl_rec IN  okc_k_lines_tl_rec_type,
5225       x_okc_k_lines_tl_rec OUT NOCOPY okc_k_lines_tl_rec_type
5226     ) RETURN VARCHAR2 IS
5227       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5228     BEGIN
5229 
5230       x_okc_k_lines_tl_rec := p_okc_k_lines_tl_rec;
5231       x_okc_k_lines_tl_rec.LANGUAGE := okc_util.get_userenv_lang;
5232       x_okc_k_lines_tl_rec.SOURCE_LANG := okc_util.get_userenv_lang;
5233 
5234       RETURN(l_return_status);
5235 
5236     END Set_Attributes;
5237   BEGIN
5238 
5239     IF (l_debug = 'Y') THEN
5240        okc_debug.Set_Indentation('OKC_CLE_PVT');
5241        okc_debug.log('14000: Entered insert_row', 2);
5242     END IF;
5243 
5244     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5245                                               p_init_msg_list,
5246                                               '_PVT',
5247                                               x_return_status);
5248     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5249       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5250     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5251       RAISE OKC_API.G_EXCEPTION_ERROR;
5252     END IF;
5253     --- Setting item attributes
5254     l_return_status := Set_Attributes(
5255       p_okc_k_lines_tl_rec,              -- IN
5256       l_okc_k_lines_tl_rec);             -- OUT
5257     --- If any errors happen abort API
5258     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5259       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5260     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5261       RAISE OKC_API.G_EXCEPTION_ERROR;
5262     END IF;
5263     FOR l_lang_rec IN get_languages LOOP
5264       l_okc_k_lines_tl_rec.language := l_lang_rec.language_code;
5265       INSERT INTO OKC_K_LINES_TL(
5266           id,
5267           language,
5268           source_lang,
5269           sfwt_flag,
5270           name,
5271           comments,
5272           item_description,
5273           oke_boe_description,
5274           cognomen,
5275           block23text,
5276           created_by,
5277           creation_date,
5278           last_updated_by,
5279           last_update_date,
5280           last_update_login)
5281         VALUES (
5282           l_okc_k_lines_tl_rec.id,
5283           l_okc_k_lines_tl_rec.language,
5284           l_okc_k_lines_tl_rec.source_lang,
5285           l_okc_k_lines_tl_rec.sfwt_flag,
5286           l_okc_k_lines_tl_rec.name,
5287           l_okc_k_lines_tl_rec.comments,
5288           l_okc_k_lines_tl_rec.item_description,
5289 	  l_okc_k_lines_tl_rec.oke_boe_description,
5290 	  l_okc_k_lines_tl_rec.cognomen,
5291           l_okc_k_lines_tl_rec.block23text,
5292           l_okc_k_lines_tl_rec.created_by,
5293           l_okc_k_lines_tl_rec.creation_date,
5294           l_okc_k_lines_tl_rec.last_updated_by,
5295           l_okc_k_lines_tl_rec.last_update_date,
5296           l_okc_k_lines_tl_rec.last_update_login);
5297     END LOOP;
5298     -- Set OUT values
5299     x_okc_k_lines_tl_rec := l_okc_k_lines_tl_rec;
5300     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5301 
5302  IF (l_debug = 'Y') THEN
5303     okc_debug.log('14100: Exiting insert_row', 2);
5304     okc_debug.Reset_Indentation;
5305  END IF;
5306 
5307   EXCEPTION
5308     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5309 
5310     IF (l_debug = 'Y') THEN
5311        okc_debug.log('14200: Exiting insert_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
5312        okc_debug.Reset_Indentation;
5313     END IF;
5314 
5315       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5316       (
5317         l_api_name,
5318         G_PKG_NAME,
5319         'OKC_API.G_RET_STS_ERROR',
5320         x_msg_count,
5321         x_msg_data,
5322         '_PVT'
5323       );
5324     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5325 
5326     IF (l_debug = 'Y') THEN
5327        okc_debug.log('14300: Exiting insert_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
5328        okc_debug.Reset_Indentation;
5329     END IF;
5330 
5331       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5332       (
5333         l_api_name,
5334         G_PKG_NAME,
5335         'OKC_API.G_RET_STS_UNEXP_ERROR',
5336         x_msg_count,
5337         x_msg_data,
5338         '_PVT'
5339       );
5340     WHEN OTHERS THEN
5341 
5342     IF (l_debug = 'Y') THEN
5343        okc_debug.log('14400: Exiting insert_row:OTHERS Exception', 2);
5344        okc_debug.Reset_Indentation;
5345     END IF;
5346 
5347       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5348       (
5349         l_api_name,
5350         G_PKG_NAME,
5351         'OTHERS',
5352         x_msg_count,
5353         x_msg_data,
5354         '_PVT'
5355       );
5356 
5357   END insert_row;
5358   ----------------------------------
5359   -- insert_row for:OKC_K_LINES_V --
5360   ----------------------------------
5361   PROCEDURE insert_row(
5362     p_api_version                  IN NUMBER,
5363     p_init_msg_list                IN VARCHAR2,
5364     x_return_status                OUT NOCOPY VARCHAR2,
5365     x_msg_count                    OUT NOCOPY NUMBER,
5366     x_msg_data                     OUT NOCOPY VARCHAR2,
5367     p_clev_rec                     IN clev_rec_type,
5368     x_clev_rec                     OUT NOCOPY clev_rec_type) IS
5369 
5370     l_api_version                 CONSTANT NUMBER := 1;
5371     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
5372     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5373     l_clev_rec                     clev_rec_type;
5374     l_def_clev_rec                 clev_rec_type;
5375     l_cle_rec                      cle_rec_type;
5376     lx_cle_rec                     cle_rec_type;
5377     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
5378     lx_okc_k_lines_tl_rec          okc_k_lines_tl_rec_type;
5379     -------------------------------
5380     -- FUNCTION fill_who_columns --
5381     -------------------------------
5382     FUNCTION fill_who_columns (
5383       p_clev_rec	IN clev_rec_type
5384     ) RETURN clev_rec_type IS
5385       l_clev_rec	clev_rec_type := p_clev_rec;
5386     BEGIN
5387 
5388       l_clev_rec.CREATION_DATE := SYSDATE;
5389       l_clev_rec.CREATED_BY := FND_GLOBAL.USER_ID;
5390       l_clev_rec.LAST_UPDATE_DATE := l_clev_rec.CREATION_DATE;
5391       l_clev_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
5392       l_clev_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
5393 
5394       RETURN(l_clev_rec);
5395 
5396     END fill_who_columns;
5397     --------------------------------------
5398     -- Set_Attributes for:OKC_K_LINES_V --
5399     --------------------------------------
5400     FUNCTION Set_Attributes (
5401       p_clev_rec IN  clev_rec_type,
5402       x_clev_rec OUT NOCOPY clev_rec_type
5403     ) RETURN VARCHAR2 IS
5404       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5405     BEGIN
5406 
5407       x_clev_rec := p_clev_rec;
5408       x_clev_rec.OBJECT_VERSION_NUMBER := 1;
5409       x_clev_rec.SFWT_FLAG := 'N';
5410       /************************ HAND-CODED *********************************/
5411       x_clev_rec.HIDDEN_IND		:= UPPER(x_clev_rec.HIDDEN_IND);
5412       x_clev_rec.PRICE_LEVEL_IND	:= UPPER(x_clev_rec.PRICE_LEVEL_IND);
5413 	 If (x_clev_rec.PRICE_LEVEL_IND is null OR
5414 		x_clev_rec.PRICE_LEVEL_IND = OKC_API.G_MISS_CHAR)
5415       Then
5416 		x_clev_rec.PRICE_LEVEL_IND := 'N';
5417 	 End If;
5418       x_clev_rec.INVOICE_LINE_LEVEL_IND := UPPER(x_clev_rec.INVOICE_LINE_LEVEL_IND);
5419       x_clev_rec.EXCEPTION_YN		:= UPPER(x_clev_rec.EXCEPTION_YN);
5420       x_clev_rec.ITEM_TO_PRICE_YN   := UPPER(x_clev_rec.ITEM_TO_PRICE_YN);
5421       x_clev_rec.PRICE_BASIS_YN     := UPPER(x_clev_rec.PRICE_BASIS_YN);
5422       x_clev_rec.CONFIG_COMPLETE_YN := UPPER(x_clev_rec.CONFIG_COMPLETE_YN);
5423       x_clev_rec.CONFIG_VALID_YN    := UPPER(x_clev_rec.CONFIG_VALID_YN);
5424       x_clev_rec.CONFIG_ITEM_TYPE   := UPPER(x_clev_rec.CONFIG_ITEM_TYPE);
5425       /*********************** END HAND-CODED ********************************/
5426 
5427       RETURN(l_return_status);
5428 
5429     END Set_Attributes;
5430   BEGIN
5431 
5432     IF (l_debug = 'Y') THEN
5433        okc_debug.Set_Indentation('OKC_CLE_PVT');
5434        okc_debug.log('14700: Entered insert_row', 2);
5435     END IF;
5436 
5437 
5438     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5439                                               G_PKG_NAME,
5440                                               p_init_msg_list,
5441                                               l_api_version,
5442                                               p_api_version,
5443                                               '_PVT',
5444                                               x_return_status);
5445     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5446       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5447     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5448       RAISE OKC_API.G_EXCEPTION_ERROR;
5449     END IF;
5450     l_clev_rec := null_out_defaults(p_clev_rec);
5451     -- Set primary key value
5452     l_clev_rec.ID := get_seq_id;
5453     --- Setting item attributes
5454     l_return_status := Set_Attributes(
5455       l_clev_rec,                        -- IN
5456       l_def_clev_rec);                   -- OUT
5457     --- If any errors happen abort API
5458     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5459       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5460     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5461       RAISE OKC_API.G_EXCEPTION_ERROR;
5462     END IF;
5463     /************************ HAND-CODED ***************************/
5464     If (l_clev_rec.line_number is null) Then
5465         get_next_line_number(p_chr_id		=> l_clev_rec.chr_id,
5466 					    p_cle_id		=> l_clev_rec.cle_id,
5467 					    x_return_status	=> l_return_status,
5468 					    x_line_number	=> l_def_clev_rec.line_number);
5469         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5470           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5471         END IF;
5472     Else
5473 	   l_def_clev_rec.line_number := l_clev_rec.line_number;
5474     End If;
5475 
5476     /*********************** END HAND-CODED ************************/
5477     l_def_clev_rec := fill_who_columns(l_def_clev_rec);
5478 
5479     IF p_clev_rec.VALIDATE_YN = 'Y' THEN ---Bug#3150149
5480        --- Validate all non-missing attributes (Item Level Validation)
5481        l_return_status := Validate_Attributes(l_def_clev_rec);
5482     END IF;
5483 
5484     --- If any errors happen abort API
5485     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5486       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5487     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5488       RAISE OKC_API.G_EXCEPTION_ERROR;
5489     END IF;
5490     l_return_status := Validate_Record(l_def_clev_rec);
5491     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5492       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5493     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5494       RAISE OKC_API.G_EXCEPTION_ERROR;
5495     END IF;
5496     --------------------------------------
5497     -- Move VIEW record to "Child" records
5498     --------------------------------------
5499     migrate(l_def_clev_rec, l_cle_rec);
5500     migrate(l_def_clev_rec, l_okc_k_lines_tl_rec);
5501     --------------------------------------------
5502     -- Call the INSERT_ROW for each child record
5503     --------------------------------------------
5504     insert_row(
5505       p_init_msg_list,
5506       x_return_status,
5507       x_msg_count,
5508       x_msg_data,
5509       l_cle_rec,
5510       lx_cle_rec
5511     );
5512     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5513       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5514     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5515       RAISE OKC_API.G_EXCEPTION_ERROR;
5516     END IF;
5517     migrate(lx_cle_rec, l_def_clev_rec);
5518     insert_row(
5519       p_init_msg_list,
5520       x_return_status,
5521       x_msg_count,
5522       x_msg_data,
5523       l_okc_k_lines_tl_rec,
5524       lx_okc_k_lines_tl_rec
5525     );
5529       RAISE OKC_API.G_EXCEPTION_ERROR;
5526     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5527       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5528     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5530     END IF;
5531     migrate(lx_okc_k_lines_tl_rec, l_def_clev_rec);
5532     -- Set OUT values
5533     x_clev_rec := l_def_clev_rec;
5534 
5535     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5536 
5537  IF (l_debug = 'Y') THEN
5538     okc_debug.log('14800: Exiting insert_row', 2);
5539     okc_debug.Reset_Indentation;
5540  END IF;
5541 
5542   EXCEPTION
5543     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5544 
5545     IF (l_debug = 'Y') THEN
5546        okc_debug.log('14900: Exiting insert_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
5547        okc_debug.Reset_Indentation;
5548     END IF;
5549 
5550       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5551       (
5552         l_api_name,
5553         G_PKG_NAME,
5554         'OKC_API.G_RET_STS_ERROR',
5555         x_msg_count,
5556         x_msg_data,
5557         '_PVT'
5558       );
5559     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5560 
5561     IF (l_debug = 'Y') THEN
5562        okc_debug.log('15000: Exiting insert_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
5563        okc_debug.Reset_Indentation;
5564     END IF;
5565 
5566       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5567       (
5568         l_api_name,
5569         G_PKG_NAME,
5570         'OKC_API.G_RET_STS_UNEXP_ERROR',
5571         x_msg_count,
5572         x_msg_data,
5573         '_PVT'
5574       );
5575     WHEN OTHERS THEN
5576 
5577     IF (l_debug = 'Y') THEN
5578        okc_debug.log('15100: Exiting insert_row:OTHERS Exception', 2);
5579        okc_debug.Reset_Indentation;
5580     END IF;
5581 
5582       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5583       (
5584         l_api_name,
5585         G_PKG_NAME,
5586         'OTHERS',
5587         x_msg_count,
5588         x_msg_data,
5589         '_PVT'
5590       );
5591 
5592   END insert_row;
5593   ----------------------------------------
5594   -- PL/SQL TBL insert_row for:CLEV_TBL --
5595   ----------------------------------------
5596   PROCEDURE insert_row(
5597     p_api_version                  IN NUMBER,
5598     p_init_msg_list                IN VARCHAR2,
5599     x_return_status                OUT NOCOPY VARCHAR2,
5600     x_msg_count                    OUT NOCOPY NUMBER,
5601     x_msg_data                     OUT NOCOPY VARCHAR2,
5602     p_clev_tbl                     IN clev_tbl_type,
5603     x_clev_tbl                     OUT NOCOPY clev_tbl_type) IS
5604 
5605     l_api_version                 CONSTANT NUMBER := 1;
5606     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
5607     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5608     l_overall_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5609     i                              NUMBER := 0;
5610   BEGIN
5611 
5612     IF (l_debug = 'Y') THEN
5613        okc_debug.Set_Indentation('OKC_CLE_PVT');
5614        okc_debug.log('15200: Entered insert_row', 2);
5615     END IF;
5616 
5617     OKC_API.init_msg_list(p_init_msg_list);
5618     -- Make sure PL/SQL table has records in it before passing
5619     IF (p_clev_tbl.COUNT > 0) THEN
5620       i := p_clev_tbl.FIRST;
5621       LOOP
5622         insert_row (
5623           p_api_version                  => p_api_version,
5624           p_init_msg_list                => OKC_API.G_FALSE,
5625           x_return_status                => x_return_status,
5626           x_msg_count                    => x_msg_count,
5627           x_msg_data                     => x_msg_data,
5628           p_clev_rec                     => p_clev_tbl(i),
5629           x_clev_rec                     => x_clev_tbl(i));
5630 
5631 		-- store the highest degree of error
5632 		If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
5633 		   If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
5634 			 l_overall_status := x_return_status;
5635 		   End If;
5636 		End If;
5637 
5638         EXIT WHEN (i = p_clev_tbl.LAST);
5639         i := p_clev_tbl.NEXT(i);
5640       END LOOP;
5641 	 -- return overall status
5642 	 x_return_status := l_overall_status;
5643     END IF;
5644 
5645  IF (l_debug = 'Y') THEN
5646     okc_debug.log('15300: Exiting insert_row', 2);
5647     okc_debug.Reset_Indentation;
5648  END IF;
5649 
5650   EXCEPTION
5651     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5652 
5653     IF (l_debug = 'Y') THEN
5654        okc_debug.log('15400: Exiting insert_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
5655        okc_debug.Reset_Indentation;
5656     END IF;
5657 
5658       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5659       (
5660         l_api_name,
5661         G_PKG_NAME,
5662         'OKC_API.G_RET_STS_ERROR',
5663         x_msg_count,
5664         x_msg_data,
5665         '_PVT'
5666       );
5667     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5668 
5669     IF (l_debug = 'Y') THEN
5670        okc_debug.log('15500: Exiting insert_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
5671        okc_debug.Reset_Indentation;
5672     END IF;
5673 
5674       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5675       (
5676         l_api_name,
5677         G_PKG_NAME,
5678         'OKC_API.G_RET_STS_UNEXP_ERROR',
5679         x_msg_count,
5680         x_msg_data,
5681         '_PVT'
5682       );
5683     WHEN OTHERS THEN
5684 
5685     IF (l_debug = 'Y') THEN
5686        okc_debug.log('15600: Exiting insert_row:OTHERS Exception', 2);
5687        okc_debug.Reset_Indentation;
5688     END IF;
5689 
5690       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5691       (
5692         l_api_name,
5693         G_PKG_NAME,
5694         'OTHERS',
5695         x_msg_count,
5696         x_msg_data,
5697         '_PVT'
5698       );
5699 
5700   END insert_row;
5701 
5702   ---------------------------------------------------------------------------
5703   -- PROCEDURE lock_row
5704   ---------------------------------------------------------------------------
5705   --------------------------------
5706   -- lock_row for:OKC_K_LINES_B --
5707   --------------------------------
5708   PROCEDURE lock_row(
5709     p_init_msg_list                IN VARCHAR2,
5710     x_return_status                OUT NOCOPY VARCHAR2,
5711     x_msg_count                    OUT NOCOPY NUMBER,
5712     x_msg_data                     OUT NOCOPY VARCHAR2,
5713     p_cle_rec                      IN cle_rec_type) IS
5714 
5715     E_Resource_Busy               EXCEPTION;
5716     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
5717     CURSOR lock_csr (p_cle_rec IN cle_rec_type) IS
5718     SELECT OBJECT_VERSION_NUMBER
5719       FROM OKC_K_LINES_B
5720      WHERE ID = p_cle_rec.id
5721        AND OBJECT_VERSION_NUMBER = p_cle_rec.object_version_number
5722     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
5723 
5724     CURSOR  lchk_csr (p_cle_rec IN cle_rec_type) IS
5725     SELECT OBJECT_VERSION_NUMBER
5726       FROM OKC_K_LINES_B
5727     WHERE ID = p_cle_rec.id;
5728     l_api_version                 CONSTANT NUMBER := 1;
5729     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
5730     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5731     l_object_version_number       OKC_K_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
5732     lc_object_version_number      OKC_K_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
5733     l_row_notfound                BOOLEAN := FALSE;
5734     lc_row_notfound               BOOLEAN := FALSE;
5735   BEGIN
5736 
5737     IF (l_debug = 'Y') THEN
5738        okc_debug.Set_Indentation('OKC_CLE_PVT');
5739        okc_debug.log('15700: Entered lock_row', 2);
5740     END IF;
5741 
5742     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5743                                               p_init_msg_list,
5744                                               '_PVT',
5745                                               x_return_status);
5746     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5747       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5748     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5749       RAISE OKC_API.G_EXCEPTION_ERROR;
5750     END IF;
5751     BEGIN
5752 
5753     IF (l_debug = 'Y') THEN
5754        okc_debug.Set_Indentation('OKC_CLE_PVT');
5755        okc_debug.log('15800: Entered lock_row', 2);
5756     END IF;
5757 
5758       OPEN lock_csr(p_cle_rec);
5759       FETCH lock_csr INTO l_object_version_number;
5760       l_row_notfound := lock_csr%NOTFOUND;
5761       CLOSE lock_csr;
5762 
5763     IF (l_debug = 'Y') THEN
5764        okc_debug.log('15900: Leaving lock_row', 2);
5765        okc_debug.Reset_Indentation;
5766     END IF;
5767 
5768     EXCEPTION
5769       WHEN E_Resource_Busy THEN
5770 
5771     IF (l_debug = 'Y') THEN
5772        okc_debug.log('16000: Exiting lock_row:E_Resource_Busy Exception', 2);
5773        okc_debug.Reset_Indentation;
5774     END IF;
5775 
5776         IF (lock_csr%ISOPEN) THEN
5777           CLOSE lock_csr;
5778         END IF;
5779         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
5780         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
5781     END;
5782 
5783     IF ( l_row_notfound ) THEN
5784       OPEN lchk_csr(p_cle_rec);
5785       FETCH lchk_csr INTO lc_object_version_number;
5786       lc_row_notfound := lchk_csr%NOTFOUND;
5787       CLOSE lchk_csr;
5788     END IF;
5789     IF (lc_row_notfound) THEN
5790       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
5791       RAISE OKC_API.G_EXCEPTION_ERROR;
5792     ELSIF lc_object_version_number > p_cle_rec.object_version_number THEN
5793       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5794       RAISE OKC_API.G_EXCEPTION_ERROR;
5795     ELSIF lc_object_version_number <> p_cle_rec.object_version_number THEN
5796       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
5797       RAISE OKC_API.G_EXCEPTION_ERROR;
5798     ELSIF lc_object_version_number = -1 THEN
5799       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
5800       RAISE OKC_API.G_EXCEPTION_ERROR;
5801     END IF;
5802     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5803 
5804     IF (l_debug = 'Y') THEN
5805        okc_debug.log('16100: Leaving lock_row', 2);
5806        okc_debug.Reset_Indentation;
5807     END IF;
5808 
5809   EXCEPTION
5810     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5811 
5812     IF (l_debug = 'Y') THEN
5813        okc_debug.log('16200: Exiting lock_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
5814        okc_debug.Reset_Indentation;
5815     END IF;
5816 
5817       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5818       (
5819         l_api_name,
5820         G_PKG_NAME,
5821         'OKC_API.G_RET_STS_ERROR',
5822         x_msg_count,
5823         x_msg_data,
5824         '_PVT'
5825       );
5826     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5827 
5828     IF (l_debug = 'Y') THEN
5829        okc_debug.log('16300: Exiting lock_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
5830        okc_debug.Reset_Indentation;
5831     END IF;
5832 
5833       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5834       (
5835         l_api_name,
5836         G_PKG_NAME,
5837         'OKC_API.G_RET_STS_UNEXP_ERROR',
5838         x_msg_count,
5839         x_msg_data,
5840         '_PVT'
5841       );
5842     WHEN OTHERS THEN
5843 
5844     IF (l_debug = 'Y') THEN
5845        okc_debug.log('16400: Exiting lock_row:OTHERS Exception', 2);
5846        okc_debug.Reset_Indentation;
5847     END IF;
5848 
5849       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5850       (
5851         l_api_name,
5852         G_PKG_NAME,
5853         'OTHERS',
5854         x_msg_count,
5855         x_msg_data,
5856         '_PVT'
5857       );
5858 
5859   END lock_row;
5860   ---------------------------------
5861   -- lock_row for:OKC_K_LINES_TL --
5862   ---------------------------------
5863   PROCEDURE lock_row(
5864     p_init_msg_list                IN VARCHAR2,
5865     x_return_status                OUT NOCOPY VARCHAR2,
5866     x_msg_count                    OUT NOCOPY NUMBER,
5867     x_msg_data                     OUT NOCOPY VARCHAR2,
5868     p_okc_k_lines_tl_rec           IN okc_k_lines_tl_rec_type) IS
5869 
5870     E_Resource_Busy               EXCEPTION;
5871     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
5872     CURSOR lock_csr (p_okc_k_lines_tl_rec IN okc_k_lines_tl_rec_type) IS
5873     SELECT *
5874       FROM OKC_K_LINES_TL
5875      WHERE ID = p_okc_k_lines_tl_rec.id
5876     FOR UPDATE NOWAIT;
5877 
5878     l_api_version                 CONSTANT NUMBER := 1;
5879     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
5880     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5881     l_lock_var                    lock_csr%ROWTYPE;
5882     l_row_notfound                BOOLEAN := FALSE;
5883     lc_row_notfound               BOOLEAN := FALSE;
5884   BEGIN
5885 
5886     IF (l_debug = 'Y') THEN
5887        okc_debug.Set_Indentation('OKC_CLE_PVT');
5888        okc_debug.log('16500: Entered lock_row', 2);
5889     END IF;
5890 
5891     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5892                                               p_init_msg_list,
5893                                               '_PVT',
5894                                               x_return_status);
5895     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5896       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5897     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5898       RAISE OKC_API.G_EXCEPTION_ERROR;
5899     END IF;
5900     BEGIN
5901 
5902     IF (l_debug = 'Y') THEN
5903        okc_debug.Set_Indentation('OKC_CLE_PVT');
5904        okc_debug.log('16600: Entered lock_row', 2);
5905     END IF;
5906 
5907       OPEN lock_csr(p_okc_k_lines_tl_rec);
5908       FETCH lock_csr INTO l_lock_var;
5909       l_row_notfound := lock_csr%NOTFOUND;
5910       CLOSE lock_csr;
5911 
5912  IF (l_debug = 'Y') THEN
5913     okc_debug.log('16700: Exiting lock_row', 2);
5914     okc_debug.Reset_Indentation;
5915  END IF;
5916 
5917     EXCEPTION
5918       WHEN E_Resource_Busy THEN
5919 
5920     IF (l_debug = 'Y') THEN
5921        okc_debug.log('16800: Exiting lock_row:E_Resource_Busy Exception', 2);
5922        okc_debug.Reset_Indentation;
5923     END IF;
5924 
5925         IF (lock_csr%ISOPEN) THEN
5926           CLOSE lock_csr;
5927         END IF;
5928         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
5929         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
5930     END;
5931 
5932     IF ( l_row_notfound ) THEN
5933       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
5934       RAISE OKC_API.G_EXCEPTION_ERROR;
5935     END IF;
5936     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5937 
5938     IF (l_debug = 'Y') THEN
5939        okc_debug.log('16900: Exiting lock_row', 2);
5940        okc_debug.Reset_Indentation;
5941     END IF;
5942 
5943   EXCEPTION
5944     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5945 
5946     IF (l_debug = 'Y') THEN
5947        okc_debug.log('17000: Exiting lock_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
5948        okc_debug.Reset_Indentation;
5949     END IF;
5950 
5951       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5952       (
5953         l_api_name,
5954         G_PKG_NAME,
5955         'OKC_API.G_RET_STS_ERROR',
5956         x_msg_count,
5957         x_msg_data,
5958         '_PVT'
5959       );
5960     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5961 
5962     IF (l_debug = 'Y') THEN
5963        okc_debug.log('17100: Exiting lock_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
5964        okc_debug.Reset_Indentation;
5965     END IF;
5966 
5967       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5968       (
5969         l_api_name,
5970         G_PKG_NAME,
5971         'OKC_API.G_RET_STS_UNEXP_ERROR',
5972         x_msg_count,
5973         x_msg_data,
5974         '_PVT'
5975       );
5976     WHEN OTHERS THEN
5977 
5978     IF (l_debug = 'Y') THEN
5979        okc_debug.log('17200: Exiting lock_row:OTHERS Exception', 2);
5980        okc_debug.Reset_Indentation;
5981     END IF;
5982 
5983       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5984       (
5985         l_api_name,
5986         G_PKG_NAME,
5987         'OTHERS',
5988         x_msg_count,
5989         x_msg_data,
5990         '_PVT'
5991       );
5992 
5993   END lock_row;
5994   --------------------------------
5995   -- lock_row for:OKC_K_LINES_V --
5996   --------------------------------
5997   PROCEDURE lock_row(
5998     p_api_version                  IN NUMBER,
5999     p_init_msg_list                IN VARCHAR2,
6000     x_return_status                OUT NOCOPY VARCHAR2,
6001     x_msg_count                    OUT NOCOPY NUMBER,
6002     x_msg_data                     OUT NOCOPY VARCHAR2,
6003     p_clev_rec                     IN clev_rec_type) IS
6004 
6005     l_api_version                 CONSTANT NUMBER := 1;
6006     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
6007     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6008     l_cle_rec                      cle_rec_type;
6009     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
6010   BEGIN
6011 
6012     IF (l_debug = 'Y') THEN
6013        okc_debug.Set_Indentation('OKC_CLE_PVT');
6014        okc_debug.log('17300: Entered lock_row', 2);
6015     END IF;
6016 
6017     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6018                                               G_PKG_NAME,
6019                                               p_init_msg_list,
6020                                               l_api_version,
6021                                               p_api_version,
6022                                               '_PVT',
6023                                               x_return_status);
6024     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6025       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6026     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6027       RAISE OKC_API.G_EXCEPTION_ERROR;
6028     END IF;
6029     --------------------------------------
6030     -- Move VIEW record to "Child" records
6031     --------------------------------------
6032     migrate(p_clev_rec, l_cle_rec);
6033     migrate(p_clev_rec, l_okc_k_lines_tl_rec);
6034     --------------------------------------------
6035     -- Call the LOCK_ROW for each child record
6036     --------------------------------------------
6037     lock_row(
6038       p_init_msg_list,
6039       x_return_status,
6040       x_msg_count,
6041       x_msg_data,
6042       l_cle_rec
6043     );
6044     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6045       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6046     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6047       RAISE OKC_API.G_EXCEPTION_ERROR;
6048     END IF;
6049     lock_row(
6050       p_init_msg_list,
6051       x_return_status,
6052       x_msg_count,
6053       x_msg_data,
6054       l_okc_k_lines_tl_rec
6055     );
6056     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6057       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6058     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6059       RAISE OKC_API.G_EXCEPTION_ERROR;
6060     END IF;
6061     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6062 
6063  IF (l_debug = 'Y') THEN
6064     okc_debug.log('17400: Exiting lock_row', 2);
6065     okc_debug.Reset_Indentation;
6066  END IF;
6067 
6068   EXCEPTION
6069     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6070 
6071     IF (l_debug = 'Y') THEN
6072        okc_debug.log('17500: Exiting lock_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
6073        okc_debug.Reset_Indentation;
6074     END IF;
6075 
6076       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6077       (
6078         l_api_name,
6079         G_PKG_NAME,
6080         'OKC_API.G_RET_STS_ERROR',
6081         x_msg_count,
6082         x_msg_data,
6083         '_PVT'
6084       );
6085     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6086 
6087     IF (l_debug = 'Y') THEN
6088        okc_debug.log('17600: Exiting lock_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
6089        okc_debug.Reset_Indentation;
6090     END IF;
6091 
6092       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6093       (
6094         l_api_name,
6095         G_PKG_NAME,
6096         'OKC_API.G_RET_STS_UNEXP_ERROR',
6097         x_msg_count,
6098         x_msg_data,
6099         '_PVT'
6100       );
6101     WHEN OTHERS THEN
6102 
6103     IF (l_debug = 'Y') THEN
6104        okc_debug.log('17700: Exiting lock_row:OTHERS Exception', 2);
6105        okc_debug.Reset_Indentation;
6106     END IF;
6107 
6108       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6109       (
6110         l_api_name,
6111         G_PKG_NAME,
6112         'OTHERS',
6113         x_msg_count,
6114         x_msg_data,
6115         '_PVT'
6116       );
6117 
6118   END lock_row;
6119   --------------------------------------
6120   -- PL/SQL TBL lock_row for:CLEV_TBL --
6121   --------------------------------------
6122   PROCEDURE lock_row(
6123     p_api_version                  IN NUMBER,
6124     p_init_msg_list                IN VARCHAR2,
6125     x_return_status                OUT NOCOPY VARCHAR2,
6126     x_msg_count                    OUT NOCOPY NUMBER,
6127     x_msg_data                     OUT NOCOPY VARCHAR2,
6128     p_clev_tbl                     IN clev_tbl_type) IS
6129 
6130     l_api_version                 CONSTANT NUMBER := 1;
6131     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
6132     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6133     l_overall_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6134     i                              NUMBER := 0;
6135   BEGIN
6136 
6137     IF (l_debug = 'Y') THEN
6138        okc_debug.Set_Indentation('OKC_CLE_PVT');
6139        okc_debug.log('17800: Entered lock_row', 2);
6140     END IF;
6141 
6142     OKC_API.init_msg_list(p_init_msg_list);
6143     -- Make sure PL/SQL table has records in it before passing
6144     IF (p_clev_tbl.COUNT > 0) THEN
6145       i := p_clev_tbl.FIRST;
6146       LOOP
6147         lock_row (
6148           p_api_version                  => p_api_version,
6149           p_init_msg_list                => OKC_API.G_FALSE,
6150           x_return_status                => x_return_status,
6151           x_msg_count                    => x_msg_count,
6152           x_msg_data                     => x_msg_data,
6153           p_clev_rec                     => p_clev_tbl(i));
6154 
6155 		-- store the highest degree of error
6156 		If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
6157 		   If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
6158 			 l_overall_status := x_return_status;
6159 		   End If;
6160 		End If;
6161 
6162         EXIT WHEN (i = p_clev_tbl.LAST);
6163         i := p_clev_tbl.NEXT(i);
6164       END LOOP;
6165 	 -- return overall status
6166 	 x_return_status := l_overall_status;
6167     END IF;
6168 
6169  IF (l_debug = 'Y') THEN
6170     okc_debug.log('17900: Exiting lock_row', 2);
6171     okc_debug.Reset_Indentation;
6172  END IF;
6173 
6174   EXCEPTION
6175     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6176 
6177     IF (l_debug = 'Y') THEN
6178        okc_debug.log('18000: Exiting lock_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
6179        okc_debug.Reset_Indentation;
6180     END IF;
6181 
6182       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6183       (
6184         l_api_name,
6185         G_PKG_NAME,
6186         'OKC_API.G_RET_STS_ERROR',
6187         x_msg_count,
6191     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6188         x_msg_data,
6189         '_PVT'
6190       );
6192 
6193     IF (l_debug = 'Y') THEN
6194        okc_debug.log('18100: Exiting lock_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
6195        okc_debug.Reset_Indentation;
6196     END IF;
6197 
6198       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6199       (
6200         l_api_name,
6201         G_PKG_NAME,
6202         'OKC_API.G_RET_STS_UNEXP_ERROR',
6203         x_msg_count,
6204         x_msg_data,
6205         '_PVT'
6206       );
6207     WHEN OTHERS THEN
6208 
6209     IF (l_debug = 'Y') THEN
6210        okc_debug.log('18200: Exiting lock_row:OTHERS Exception', 2);
6211        okc_debug.Reset_Indentation;
6212     END IF;
6213 
6214       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6215       (
6216         l_api_name,
6217         G_PKG_NAME,
6218         'OTHERS',
6219         x_msg_count,
6220         x_msg_data,
6221         '_PVT'
6222       );
6223 
6224   END lock_row;
6225 
6226   ---------------------------------------------------------------------------
6227   -- PROCEDURE update_row
6228   ---------------------------------------------------------------------------
6229   ----------------------------------
6230   -- update_row for:OKC_K_LINES_B --
6231   ----------------------------------
6232   PROCEDURE update_row(
6233     p_init_msg_list                IN VARCHAR2,
6234     x_return_status                OUT NOCOPY VARCHAR2,
6235     x_msg_count                    OUT NOCOPY NUMBER,
6236     x_msg_data                     OUT NOCOPY VARCHAR2,
6237     p_restricted_update            IN VARCHAR2,
6238     p_cle_rec                      IN cle_rec_type,
6239     x_cle_rec                      OUT NOCOPY cle_rec_type) IS
6240 
6241     l_api_version                 CONSTANT NUMBER := 1;
6242     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
6243     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6244     l_cle_rec                      cle_rec_type := p_cle_rec;
6245     l_def_cle_rec                  cle_rec_type;
6246     l_row_notfound                 BOOLEAN := TRUE;
6247     ----------------------------------
6248     -- FUNCTION populate_new_record --
6249     ----------------------------------
6250     FUNCTION populate_new_record (
6251       p_cle_rec	IN cle_rec_type,
6252       x_cle_rec	OUT NOCOPY cle_rec_type
6253     ) RETURN VARCHAR2 IS
6254       l_cle_rec                      cle_rec_type;
6255       l_row_notfound                 BOOLEAN := TRUE;
6256       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6257     BEGIN
6258 
6259     IF (l_debug = 'Y') THEN
6260        okc_debug.Set_Indentation('OKC_CLE_PVT');
6261        okc_debug.log('18300: Entered populate_new_record', 2);
6262     END IF;
6263 
6264       x_cle_rec := p_cle_rec;
6265       -- Get current database values
6266       l_cle_rec := get_rec(p_cle_rec, l_row_notfound);
6267       IF (l_row_notfound) THEN
6268         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6269       END IF;
6270       IF (x_cle_rec.id = OKC_API.G_MISS_NUM)
6271       THEN
6272         x_cle_rec.id := l_cle_rec.id;
6273       END IF;
6274       IF (x_cle_rec.line_number = OKC_API.G_MISS_CHAR)
6275       THEN
6276         x_cle_rec.line_number := l_cle_rec.line_number;
6277       END IF;
6278       IF (x_cle_rec.chr_id = OKC_API.G_MISS_NUM)
6279       THEN
6280         x_cle_rec.chr_id := l_cle_rec.chr_id;
6281       END IF;
6282       IF (x_cle_rec.cle_id = OKC_API.G_MISS_NUM)
6283       THEN
6284         x_cle_rec.cle_id := l_cle_rec.cle_id;
6285       END IF;
6286       IF (x_cle_rec.dnz_chr_id = OKC_API.G_MISS_NUM)
6287       THEN
6288         x_cle_rec.dnz_chr_id := l_cle_rec.dnz_chr_id;
6289       END IF;
6290       IF (x_cle_rec.display_sequence = OKC_API.G_MISS_NUM)
6291       THEN
6292         x_cle_rec.display_sequence := l_cle_rec.display_sequence;
6293       END IF;
6294       IF (x_cle_rec.sts_code = OKC_API.G_MISS_CHAR)
6295       THEN
6296         x_cle_rec.sts_code := l_cle_rec.sts_code;
6297       END IF;
6298       IF (x_cle_rec.trn_code = OKC_API.G_MISS_CHAR)
6299       THEN
6300         x_cle_rec.trn_code := l_cle_rec.trn_code;
6301       END IF;
6302       IF (x_cle_rec.lse_id = OKC_API.G_MISS_NUM)
6303       THEN
6304         x_cle_rec.lse_id := l_cle_rec.lse_id;
6305       END IF;
6306       IF (x_cle_rec.exception_yn = OKC_API.G_MISS_CHAR)
6307       THEN
6308         x_cle_rec.exception_yn := l_cle_rec.exception_yn;
6309       END IF;
6310       IF (x_cle_rec.object_version_number = OKC_API.G_MISS_NUM)
6311       THEN
6312         x_cle_rec.object_version_number := l_cle_rec.object_version_number;
6313       END IF;
6314       IF (x_cle_rec.created_by = OKC_API.G_MISS_NUM)
6315       THEN
6316         x_cle_rec.created_by := l_cle_rec.created_by;
6317       END IF;
6318       IF (x_cle_rec.creation_date = OKC_API.G_MISS_DATE)
6319       THEN
6320         x_cle_rec.creation_date := l_cle_rec.creation_date;
6321       END IF;
6322       IF (x_cle_rec.last_updated_by = OKC_API.G_MISS_NUM)
6323       THEN
6324         x_cle_rec.last_updated_by := l_cle_rec.last_updated_by;
6325       END IF;
6326       IF (x_cle_rec.last_update_date = OKC_API.G_MISS_DATE)
6327       THEN
6328         x_cle_rec.last_update_date := l_cle_rec.last_update_date;
6329       END IF;
6330       IF (x_cle_rec.hidden_ind = OKC_API.G_MISS_CHAR)
6331       THEN
6332         x_cle_rec.hidden_ind := l_cle_rec.hidden_ind;
6333       END IF;
6334       IF (x_cle_rec.price_unit = OKC_API.G_MISS_NUM)
6335       THEN
6336         x_cle_rec.price_unit := l_cle_rec.price_unit;
6337       END IF;
6338       IF (x_cle_rec.price_unit_percent = OKC_API.G_MISS_NUM)
6339       THEN
6340         x_cle_rec.price_unit_percent := l_cle_rec.price_unit_percent;
6341       END IF;
6342       IF (x_cle_rec.price_negotiated = OKC_API.G_MISS_NUM)
6343       THEN
6344         x_cle_rec.price_negotiated := l_cle_rec.price_negotiated;
6345       END IF;
6346       IF (x_cle_rec.price_negotiated_renewed = OKC_API.G_MISS_NUM)
6347       THEN
6348         x_cle_rec.price_negotiated_renewed := l_cle_rec.price_negotiated_renewed;
6349       END IF;
6350       IF (x_cle_rec.price_level_ind = OKC_API.G_MISS_CHAR)
6351       THEN
6352         x_cle_rec.price_level_ind := l_cle_rec.price_level_ind;
6353       END IF;
6354       IF (x_cle_rec.invoice_line_level_ind = OKC_API.G_MISS_CHAR)
6355       THEN
6356         x_cle_rec.invoice_line_level_ind := l_cle_rec.invoice_line_level_ind;
6357       END IF;
6358       IF (x_cle_rec.dpas_rating = OKC_API.G_MISS_CHAR)
6359       THEN
6360         x_cle_rec.dpas_rating := l_cle_rec.dpas_rating;
6361       END IF;
6362       IF (x_cle_rec.template_used = OKC_API.G_MISS_CHAR)
6363       THEN
6364         x_cle_rec.template_used := l_cle_rec.template_used;
6365       END IF;
6366       IF (x_cle_rec.price_type = OKC_API.G_MISS_CHAR)
6367       THEN
6368         x_cle_rec.price_type := l_cle_rec.price_type;
6369       END IF;
6370       IF (x_cle_rec.currency_code = OKC_API.G_MISS_CHAR)
6371       THEN
6372         x_cle_rec.currency_code := l_cle_rec.currency_code;
6373       END IF;
6374       IF (x_cle_rec.currency_code_renewed = OKC_API.G_MISS_CHAR)
6375       THEN
6376         x_cle_rec.currency_code_renewed := l_cle_rec.currency_code_renewed;
6377       END IF;
6378       IF (x_cle_rec.last_update_login = OKC_API.G_MISS_NUM)
6379       THEN
6380         x_cle_rec.last_update_login := l_cle_rec.last_update_login;
6381       END IF;
6382       IF (x_cle_rec.date_terminated = OKC_API.G_MISS_DATE)
6383       THEN
6384         x_cle_rec.date_terminated := l_cle_rec.date_terminated;
6385       END IF;
6386       --NPALEPU
6387       --24-JUN-2005
6388       --ANNUALIZED AMOUNTS PROJECT
6389       --ADDED CONDITION TO CALCULATE THE ANNUALIZED_FACTOR VALUE
6390       IF ((x_cle_rec.start_date = OKC_API.G_MISS_DATE) AND (x_cle_rec.end_date = OKC_API.G_MISS_DATE)) THEN
6391 
6392         x_cle_rec.annualized_factor := l_cle_rec.annualized_factor;
6393 
6394       ELSE
6395 
6396         IF x_cle_rec.lse_id in (1,12,14,19,46,7,8,9,10,11,13,18,25,35) THEN
6397 
6398           BEGIN
6399 
6400              SELECT (ADD_MONTHS(x_cle_rec.start_date, (nyears+1)*12) - x_cle_rec.start_date -
6401                      DECODE(ADD_MONTHS(x_cle_rec.end_date, -12),( x_cle_rec.end_date-366), 0,
6402                      DECODE(ADD_MONTHS(x_cle_rec.start_date, (nyears+1)*12) - ADD_MONTHS(x_cle_rec.start_date, nyears*12), 366, 1, 0)))
6403                      / (nyears+1) /(x_cle_rec.end_date-x_cle_rec.start_date+1)
6404              INTO    x_cle_rec.annualized_factor
6405              FROM  (SELECT trunc(MONTHS_BETWEEN(x_cle_rec.end_date, x_cle_rec.start_date)/12) nyears FROM dual)  dual ;
6406 
6407           EXCEPTION
6408 
6409              WHEN NO_DATA_FOUND THEN
6410 
6411                 x_cle_rec.annualized_factor := 0;
6412 
6413              WHEN OTHERS THEN
6414 
6415                 x_cle_rec.annualized_factor := 0;
6416           END;
6417 
6418         ELSE
6419               x_cle_rec.annualized_factor := 0;
6420 
6421         END IF; /* IF <x_cle_rec.lse_id in (1,12,14,19,46,7,8,9,10,11,13,18,25,35)> */
6422 
6423       END IF; /* IF <((x_cle_rec.start_date = OKC_API.G_MISS_DATE) AND (x_cle_rec.end_date = OKC_API.G_MISS_DATE))>  */
6424       --END NPALEPU
6425       IF (x_cle_rec.start_date = OKC_API.G_MISS_DATE)
6426       THEN
6427         x_cle_rec.start_date := l_cle_rec.start_date;
6428       END IF;
6429       IF (x_cle_rec.end_date = OKC_API.G_MISS_DATE)
6430       THEN
6431         x_cle_rec.end_date := l_cle_rec.end_date;
6432       END IF;
6433       IF (x_cle_rec.date_renewed = OKC_API.G_MISS_DATE)
6434       THEN
6435         x_cle_rec.date_renewed := l_cle_rec.date_renewed;
6436       END IF;
6437       IF (x_cle_rec.upg_orig_system_ref = OKC_API.G_MISS_CHAR)
6438       THEN
6439         x_cle_rec.upg_orig_system_ref := l_cle_rec.upg_orig_system_ref;
6440       END IF;
6441       IF (x_cle_rec.upg_orig_system_ref_id = OKC_API.G_MISS_NUM)
6442       THEN
6443         x_cle_rec.upg_orig_system_ref_id := l_cle_rec.upg_orig_system_ref_id;
6444       END IF;
6445       IF (x_cle_rec.orig_system_source_code = OKC_API.G_MISS_CHAR) THEN
6446         x_cle_rec.orig_system_source_code := l_cle_rec.orig_system_source_code;
6447       END IF;
6448       IF (x_cle_rec.orig_system_id1 = OKC_API.G_MISS_NUM ) THEN
6449         x_cle_rec.orig_system_id1 := l_cle_rec.orig_system_id1;
6450       END IF;
6451       IF (x_cle_rec.orig_system_reference1 = OKC_API.G_MISS_CHAR ) THEN
6452         x_cle_rec.orig_system_reference1 := l_cle_rec.orig_system_reference1 ;
6453       END IF;
6454       IF (x_cle_rec.program_application_id = OKC_API.G_MISS_NUM)
6455       THEN
6456         x_cle_rec.program_application_id := l_cle_rec.program_application_id;
6457       END IF;
6458       IF (x_cle_rec.program_id = OKC_API.G_MISS_NUM)
6459       THEN
6460         x_cle_rec.program_id := l_cle_rec.program_id;
6461       END IF;
6462       IF (x_cle_rec.program_update_date  = OKC_API.G_MISS_DATE)
6463       THEN
6464         x_cle_rec.program_update_date  := l_cle_rec.program_update_date ;
6465       END IF;
6466       IF (x_cle_rec.request_id = OKC_API.G_MISS_NUM)
6467       THEN
6468         x_cle_rec.request_id := l_cle_rec.request_id;
6469       END IF;
6470       IF (x_cle_rec.price_list_id = OKC_API.G_MISS_NUM)
6471       THEN
6472         x_cle_rec.price_list_id := l_cle_rec.price_list_id;
6473       END IF;
6474       IF (x_cle_rec.pricing_date  = OKC_API.G_MISS_DATE)
6475       THEN
6476         x_cle_rec.pricing_date  := l_cle_rec.pricing_date ;
6477       END IF;
6478       IF (x_cle_rec.price_list_line_id  = OKC_API.G_MISS_NUM)
6479       THEN
6480         x_cle_rec.price_list_line_id  := l_cle_rec.price_list_line_id;
6481       END IF;
6482       IF (x_cle_rec.line_list_price  = OKC_API.G_MISS_NUM)
6483       THEN
6484         x_cle_rec.line_list_price  := l_cle_rec.line_list_price;
6485       END IF;
6486       IF (x_cle_rec.item_to_price_yn = OKC_API.G_MISS_CHAR) THEN
6487         x_cle_rec.item_to_price_yn := l_cle_rec.item_to_price_yn;
6488       END IF;
6489       IF (x_cle_rec.price_basis_yn = OKC_API.G_MISS_CHAR) THEN
6490         x_cle_rec.price_basis_yn := l_cle_rec.price_basis_yn;
6491       END IF;
6492       IF (x_cle_rec.config_header_id  = OKC_API.G_MISS_NUM)
6493       THEN
6494         x_cle_rec.config_header_id  := l_cle_rec.config_header_id;
6495       END IF;
6496       IF (x_cle_rec.config_revision_number  = OKC_API.G_MISS_NUM)
6497       THEN
6498         x_cle_rec.config_revision_number  := l_cle_rec.config_revision_number;
6499       END IF;
6500       IF (x_cle_rec.config_complete_yn = OKC_API.G_MISS_CHAR) THEN
6501         x_cle_rec.config_complete_yn := l_cle_rec.config_complete_yn;
6502       END IF;
6503       IF (x_cle_rec.config_valid_yn = OKC_API.G_MISS_CHAR) THEN
6504         x_cle_rec.config_valid_yn := l_cle_rec.config_valid_yn;
6505       END IF;
6506       IF (x_cle_rec.config_top_model_line_id  = OKC_API.G_MISS_NUM)
6507       THEN
6508         x_cle_rec.config_top_model_line_id  := l_cle_rec.config_top_model_line_id;
6509       END IF;
6510       IF (x_cle_rec.config_item_type = OKC_API.G_MISS_CHAR) THEN
6511         x_cle_rec.config_item_type := l_cle_rec.config_item_type;
6512       END IF;
6513    ---Bug.No.-1942374
6514       IF (x_cle_rec.CONFIG_ITEM_ID  = OKC_API.G_MISS_NUM)
6515       THEN
6516         x_cle_rec.CONFIG_ITEM_ID  := l_cle_rec.CONFIG_ITEM_ID;
6517       END IF;
6518    ---Bug.No.-1942374
6519       IF (x_cle_rec.attribute_category = OKC_API.G_MISS_CHAR)
6520       THEN
6521         x_cle_rec.attribute_category := l_cle_rec.attribute_category;
6522       END IF;
6523       IF (x_cle_rec.attribute1 = OKC_API.G_MISS_CHAR)
6524       THEN
6525         x_cle_rec.attribute1 := l_cle_rec.attribute1;
6526       END IF;
6527       IF (x_cle_rec.attribute2 = OKC_API.G_MISS_CHAR)
6528       THEN
6529         x_cle_rec.attribute2 := l_cle_rec.attribute2;
6530       END IF;
6531       IF (x_cle_rec.attribute3 = OKC_API.G_MISS_CHAR)
6532       THEN
6533         x_cle_rec.attribute3 := l_cle_rec.attribute3;
6534       END IF;
6535       IF (x_cle_rec.attribute4 = OKC_API.G_MISS_CHAR)
6536       THEN
6537         x_cle_rec.attribute4 := l_cle_rec.attribute4;
6538       END IF;
6539       IF (x_cle_rec.attribute5 = OKC_API.G_MISS_CHAR)
6540       THEN
6541         x_cle_rec.attribute5 := l_cle_rec.attribute5;
6542       END IF;
6543       IF (x_cle_rec.attribute6 = OKC_API.G_MISS_CHAR)
6544       THEN
6545         x_cle_rec.attribute6 := l_cle_rec.attribute6;
6546       END IF;
6547       IF (x_cle_rec.attribute7 = OKC_API.G_MISS_CHAR)
6548       THEN
6549         x_cle_rec.attribute7 := l_cle_rec.attribute7;
6550       END IF;
6551       IF (x_cle_rec.attribute8 = OKC_API.G_MISS_CHAR)
6552       THEN
6553         x_cle_rec.attribute8 := l_cle_rec.attribute8;
6554       END IF;
6555       IF (x_cle_rec.attribute9 = OKC_API.G_MISS_CHAR)
6556       THEN
6557         x_cle_rec.attribute9 := l_cle_rec.attribute9;
6558       END IF;
6559       IF (x_cle_rec.attribute10 = OKC_API.G_MISS_CHAR)
6560       THEN
6561         x_cle_rec.attribute10 := l_cle_rec.attribute10;
6562       END IF;
6563       IF (x_cle_rec.attribute11 = OKC_API.G_MISS_CHAR)
6564       THEN
6565         x_cle_rec.attribute11 := l_cle_rec.attribute11;
6566       END IF;
6567       IF (x_cle_rec.attribute12 = OKC_API.G_MISS_CHAR)
6568       THEN
6569         x_cle_rec.attribute12 := l_cle_rec.attribute12;
6570       END IF;
6571       IF (x_cle_rec.attribute13 = OKC_API.G_MISS_CHAR)
6572       THEN
6573         x_cle_rec.attribute13 := l_cle_rec.attribute13;
6574       END IF;
6575       IF (x_cle_rec.attribute14 = OKC_API.G_MISS_CHAR)
6576       THEN
6577         x_cle_rec.attribute14 := l_cle_rec.attribute14;
6578       END IF;
6579       IF (x_cle_rec.attribute15 = OKC_API.G_MISS_CHAR)
6580       THEN
6581         x_cle_rec.attribute15 := l_cle_rec.attribute15;
6582       END IF;
6586       END IF;
6583       IF (x_cle_rec.service_item_yn = OKC_API.G_MISS_CHAR)
6584       THEN
6585         x_cle_rec.service_item_yn := l_cle_rec.service_item_yn;
6587     --new columns for price hold
6588       IF (x_cle_rec.ph_pricing_type = OKC_API.G_MISS_CHAR) THEN
6589         x_cle_rec.ph_pricing_type := l_cle_rec.ph_pricing_type;
6590       END IF;
6591       IF (x_cle_rec.ph_price_break_basis = OKC_API.G_MISS_CHAR) THEN
6592         x_cle_rec.ph_price_break_basis := l_cle_rec.ph_price_break_basis;
6593       END IF;
6594       IF (x_cle_rec.ph_min_qty = OKC_API.G_MISS_NUM) THEN
6595         x_cle_rec.ph_min_qty := l_cle_rec.ph_min_qty;
6596       END IF;
6597       IF (x_cle_rec.ph_min_amt = OKC_API.G_MISS_NUM) THEN
6598         x_cle_rec.ph_min_amt := l_cle_rec.ph_min_amt;
6599       END IF;
6600       IF (x_cle_rec.ph_qp_reference_id = OKC_API.G_MISS_NUM) THEN
6601         x_cle_rec.ph_qp_reference_id := l_cle_rec.ph_qp_reference_id;
6602       END IF;
6603       IF (x_cle_rec.ph_value = OKC_API.G_MISS_NUM) THEN
6604         x_cle_rec.ph_value := l_cle_rec.ph_value;
6605       END IF;
6606       IF (x_cle_rec.ph_enforce_price_list_yn = OKC_API.G_MISS_CHAR) THEN
6607         x_cle_rec.ph_enforce_price_list_yn := l_cle_rec.ph_enforce_price_list_yn;
6608       END IF;
6609       IF (x_cle_rec.ph_adjustment = OKC_API.G_MISS_NUM) THEN
6610         x_cle_rec.ph_adjustment := l_cle_rec.ph_adjustment;
6611       END IF;
6612       IF (x_cle_rec.ph_integrated_with_qp = OKC_API.G_MISS_CHAR) THEN
6613         x_cle_rec.ph_integrated_with_qp := l_cle_rec.ph_integrated_with_qp;
6614       END IF;
6615 -- new  columns to replace rules
6616       IF (x_cle_rec.cust_acct_id = OKC_API.G_MISS_NUM) THEN
6617         x_cle_rec.cust_acct_id := l_cle_rec.cust_acct_id;
6618       END IF;
6619       IF (x_cle_rec.bill_to_site_use_id = OKC_API.G_MISS_NUM) THEN
6620         x_cle_rec.bill_to_site_use_id := l_cle_rec.bill_to_site_use_id;
6621       END IF;
6622       IF (x_cle_rec.inv_rule_id = OKC_API.G_MISS_NUM) THEN
6623         x_cle_rec.inv_rule_id := l_cle_rec.inv_rule_id;
6624       END IF;
6625       IF (x_cle_rec.line_renewal_type_code = OKC_API.G_MISS_CHAR) THEN
6626         x_cle_rec.line_renewal_type_code := l_cle_rec.line_renewal_type_code;
6627       END IF;
6628       IF (x_cle_rec.ship_to_site_use_id = OKC_API.G_MISS_NUM) THEN
6629         x_cle_rec.ship_to_site_use_id := l_cle_rec.ship_to_site_use_id;
6630       END IF;
6631       IF (x_cle_rec.payment_term_id = OKC_API.G_MISS_NUM) THEN
6632         x_cle_rec.payment_term_id := l_cle_rec.payment_term_id;
6633       END IF;
6634 ---- line Level Cancellation ---
6635       IF (x_cle_rec.date_cancelled = OKC_API.G_MISS_DATE) THEN
6636         x_cle_rec.date_cancelled := l_cle_rec.date_cancelled;
6637       END IF;
6638      /* IF (x_cle_rec.canc_reason_code = OKC_API.G_MISS_CHAR) THEN
6639         x_cle_rec.canc_reason_code := l_cle_rec.canc_reason_code;
6640       END IF; */
6641       IF (x_cle_rec.term_cancel_source = OKC_API.G_MISS_CHAR) THEN
6642         x_cle_rec.term_cancel_source := l_cle_rec.term_cancel_source;
6643       END IF;
6644       IF (x_cle_rec.cancelled_amount = OKC_API.G_MISS_NUM) THEN
6645         x_cle_rec.cancelled_amount := l_cle_rec.cancelled_amount;
6646       END IF;
6647       IF (x_cle_rec.payment_instruction_type = OKC_API.G_MISS_CHAR) THEN
6648         x_cle_rec.payment_instruction_type := l_cle_rec.payment_instruction_type;
6649       END IF;
6650 
6651 IF (l_debug = 'Y') THEN
6652    okc_debug.log('18350: Leaving  populate_new_record', 2);
6653    okc_debug.Reset_Indentation;
6654 END IF;
6655 
6656       RETURN(l_return_status);
6657 
6658     END populate_new_record;
6659     --------------------------------------
6660     -- Set_Attributes for:OKC_K_LINES_B --
6661     --------------------------------------
6662     FUNCTION Set_Attributes (
6663       p_cle_rec IN  cle_rec_type,
6664       x_cle_rec OUT NOCOPY cle_rec_type
6665     ) RETURN VARCHAR2 IS
6666       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6667     BEGIN
6668 
6669       x_cle_rec := p_cle_rec;
6670       RETURN(l_return_status);
6671 
6672     END Set_Attributes;
6673   BEGIN
6674 
6675     IF (l_debug = 'Y') THEN
6676        okc_debug.Set_Indentation('OKC_CLE_PVT');
6677        okc_debug.log('18500: Entered update_row', 2);
6678     END IF;
6679 
6680     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6681                                               p_init_msg_list,
6682                                               '_PVT',
6683                                               x_return_status);
6684     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6685       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6686     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6687       RAISE OKC_API.G_EXCEPTION_ERROR;
6688     END IF;
6689     --- Setting item attributes
6690     l_return_status := Set_Attributes(
6691       p_cle_rec,                         -- IN
6692       l_cle_rec);                        -- OUT
6693     --- If any errors happen abort API
6694     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6695       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6696     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6697       RAISE OKC_API.G_EXCEPTION_ERROR;
6698     END IF;
6699     l_return_status := populate_new_record(l_cle_rec, l_def_cle_rec);
6700     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6701       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6702     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
6703       RAISE OKC_API.G_EXCEPTION_ERROR;
6704     END IF;
6705 
6706       UPDATE  OKC_K_LINES_B
6707       SET LINE_NUMBER = l_def_cle_rec.line_number,
6708         CHR_ID = l_def_cle_rec.chr_id,
6709         CLE_ID = l_def_cle_rec.cle_id,
6710         DNZ_CHR_ID = l_def_cle_rec.dnz_chr_id,
6711         DISPLAY_SEQUENCE = l_def_cle_rec.display_sequence,
6712         STS_CODE = l_def_cle_rec.sts_code,
6713         TRN_CODE = l_def_cle_rec.trn_code,
6714         LSE_ID = l_def_cle_rec.lse_id,
6715         EXCEPTION_YN = l_def_cle_rec.exception_yn,
6716         OBJECT_VERSION_NUMBER = l_def_cle_rec.object_version_number,
6717         --CREATED_BY = l_def_cle_rec.created_by,                                     /*Commented for bug 14499300 */
6718         --CREATION_DATE = l_def_cle_rec.creation_date,
6719         LAST_UPDATED_BY = l_def_cle_rec.last_updated_by,
6720         LAST_UPDATE_DATE = l_def_cle_rec.last_update_date,
6721         HIDDEN_IND = l_def_cle_rec.hidden_ind,
6722     	PRICE_UNIT = l_def_cle_rec.price_unit,
6723     	PRICE_UNIT_PERCENT = l_def_cle_rec.price_unit_percent,
6724         PRICE_NEGOTIATED = l_def_cle_rec.price_negotiated,
6725         PRICE_NEGOTIATED_RENEWED = l_def_cle_rec.price_negotiated_renewed,
6726         PRICE_LEVEL_IND = l_def_cle_rec.price_level_ind,
6727         INVOICE_LINE_LEVEL_IND = l_def_cle_rec.invoice_line_level_ind,
6728         DPAS_RATING = l_def_cle_rec.dpas_rating,
6729         TEMPLATE_USED = l_def_cle_rec.template_used,
6730         PRICE_TYPE = l_def_cle_rec.price_type,
6731         CURRENCY_CODE = l_def_cle_rec.currency_code,
6732 	CURRENCY_CODE_RENEWED = l_def_cle_rec.currency_code_renewed,
6733         LAST_UPDATE_LOGIN = l_def_cle_rec.last_update_login,
6734         DATE_TERMINATED = l_def_cle_rec.date_terminated,
6735         START_DATE = l_def_cle_rec.start_date,
6736         END_DATE = l_def_cle_rec.end_date,
6737 	DATE_RENEWED = l_def_cle_rec.date_renewed,
6738         UPG_ORIG_SYSTEM_REF = l_def_cle_rec.upg_orig_system_ref,
6739         UPG_ORIG_SYSTEM_REF_ID = l_def_cle_rec.upg_orig_system_ref_id,
6740         ORIG_SYSTEM_SOURCE_CODE = l_def_cle_rec.orig_system_source_code,
6741         ORIG_SYSTEM_ID1         = l_def_cle_rec.orig_system_id1,
6742         ORIG_SYSTEM_REFERENCE1  = l_def_cle_rec.orig_system_reference1,
6743         PROGRAM_ID = NVL(decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),l_def_cle_rec.program_id),
6744         REQUEST_ID = NVL(decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),l_def_cle_rec.request_id),
6745         PROGRAM_UPDATE_DATE = decode(decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),NULL,l_def_cle_rec.program_update_date,SYSDATE),
6746         PROGRAM_APPLICATION_ID = NVL(decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),l_def_cle_rec.program_application_id),
6747         PRICE_LIST_ID 	          =  l_def_cle_rec.PRICE_LIST_ID,
6748         PRICING_DATE 	          =  l_def_cle_rec.PRICING_DATE,
6749         PRICE_LIST_LINE_ID 	  =  l_def_cle_rec.PRICE_LIST_LINE_ID,
6750         LINE_LIST_PRICE 	  =  l_def_cle_rec.LINE_LIST_PRICE,
6751         ITEM_TO_PRICE_YN 	  =  l_def_cle_rec.ITEM_TO_PRICE_YN,
6752         PRICE_BASIS_YN 	          =  l_def_cle_rec.PRICE_BASIS_YN,
6753         CONFIG_HEADER_ID 	  =  l_def_cle_rec.CONFIG_HEADER_ID,
6754         CONFIG_REVISION_NUMBER 	  =  l_def_cle_rec.CONFIG_REVISION_NUMBER,
6755         CONFIG_COMPLETE_YN 	  =  l_def_cle_rec.CONFIG_COMPLETE_YN,
6756         CONFIG_VALID_YN 	  =  l_def_cle_rec.CONFIG_VALID_YN,
6760         ATTRIBUTE_CATEGORY = l_def_cle_rec.attribute_category,
6757         CONFIG_TOP_MODEL_LINE_ID  =  l_def_cle_rec.CONFIG_TOP_MODEL_LINE_ID,
6758         CONFIG_ITEM_TYPE          =  l_def_cle_rec.CONFIG_ITEM_TYPE,
6759         CONFIG_ITEM_ID            =  l_def_cle_rec.CONFIG_ITEM_ID,
6761         ATTRIBUTE1 = l_def_cle_rec.attribute1,
6762         ATTRIBUTE2 = l_def_cle_rec.attribute2,
6763         ATTRIBUTE3 = l_def_cle_rec.attribute3,
6764         ATTRIBUTE4 = l_def_cle_rec.attribute4,
6765         ATTRIBUTE5 = l_def_cle_rec.attribute5,
6766         ATTRIBUTE6 = l_def_cle_rec.attribute6,
6767         ATTRIBUTE7 = l_def_cle_rec.attribute7,
6768         ATTRIBUTE8 = l_def_cle_rec.attribute8,
6769         ATTRIBUTE9 = l_def_cle_rec.attribute9,
6770         ATTRIBUTE10 = l_def_cle_rec.attribute10,
6771         ATTRIBUTE11 = l_def_cle_rec.attribute11,
6772         ATTRIBUTE12 = l_def_cle_rec.attribute12,
6773         ATTRIBUTE13 = l_def_cle_rec.attribute13,
6774         ATTRIBUTE14 = l_def_cle_rec.attribute14,
6775         ATTRIBUTE15 = l_def_cle_rec.attribute15,
6776         SERVICE_ITEM_YN = l_def_cle_rec.service_item_yn,
6777                       --new columns for price hold
6778         ph_pricing_type          = l_def_cle_rec.ph_pricing_type,
6779         ph_price_break_basis     = l_def_cle_rec.ph_price_break_basis,
6780         ph_min_qty               = l_def_cle_rec.ph_min_qty,
6781         ph_min_amt               = l_def_cle_rec.ph_min_amt,
6782         ph_qp_reference_id       = l_def_cle_rec.ph_qp_reference_id,
6783         ph_value                 = l_def_cle_rec.ph_value,
6784         ph_enforce_price_list_yn = l_def_cle_rec.ph_enforce_price_list_yn,
6785         ph_adjustment            = l_def_cle_rec.ph_adjustment,
6786         ph_integrated_with_qp    = l_def_cle_rec.ph_integrated_with_qp,
6787                --new columns to replace rules
6788         cust_acct_id             = l_def_cle_rec.cust_acct_id,
6789         bill_to_site_use_id      = l_def_cle_rec.bill_to_site_use_id,
6790         inv_rule_id              = l_def_cle_rec.inv_rule_id,
6791         line_renewal_type_code   = l_def_cle_rec.line_renewal_type_code,
6792         ship_to_site_use_id      = l_def_cle_rec.ship_to_site_use_id,
6793         payment_term_id          = l_def_cle_rec.payment_term_id,
6794 	--NPALEPU on 03-JUN-2005 Added new column for Annualized Amounts
6795         annualized_factor        =  l_def_cle_rec.annualized_factor,
6796         --END NPALEPU
6797       --LINE LEVEL CANCELLATION--
6798       date_cancelled            = l_def_cle_rec.date_cancelled,
6799       --canc_reason_code          = l_def_cle_rec.canc_reason_code,
6800       term_cancel_source        = l_def_cle_rec.term_cancel_source,
6801       cancelled_amount		= l_def_cle_rec.cancelled_amount,
6802       --added by mchoudha 22-JUL
6803       payment_instruction_type =   l_def_cle_rec.payment_instruction_type
6804       WHERE ID = l_def_cle_rec.id;
6805 
6806     x_cle_rec := l_def_cle_rec;
6807     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
6808 
6809 IF (l_debug = 'Y') THEN
6810    okc_debug.log('18600: Exiting update_row', 2);
6811    okc_debug.Reset_Indentation;
6812 END IF;
6813 
6814   EXCEPTION
6815     WHEN OKC_API.G_EXCEPTION_ERROR THEN
6816 
6817     IF (l_debug = 'Y') THEN
6818        okc_debug.log('18700: Exiting update_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
6819        okc_debug.Reset_Indentation;
6820     END IF;
6821 
6822       x_return_status := OKC_API.HANDLE_EXCEPTIONS
6823       (
6824         l_api_name,
6825         G_PKG_NAME,
6826         'OKC_API.G_RET_STS_ERROR',
6827         x_msg_count,
6828         x_msg_data,
6829         '_PVT'
6830       );
6831     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6832 
6833     IF (l_debug = 'Y') THEN
6834        okc_debug.log('18800: Exiting update_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
6835        okc_debug.Reset_Indentation;
6836     END IF;
6837 
6838       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6839       (
6840         l_api_name,
6841         G_PKG_NAME,
6842         'OKC_API.G_RET_STS_UNEXP_ERROR',
6843         x_msg_count,
6844         x_msg_data,
6845         '_PVT'
6846       );
6847     WHEN OTHERS THEN
6848 
6849     IF (l_debug = 'Y') THEN
6850        okc_debug.log('18900: Exiting update_row:OTHERS Exception', 2);
6851        okc_debug.Reset_Indentation;
6852     END IF;
6853 
6854       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
6855       (
6856         l_api_name,
6857         G_PKG_NAME,
6858         'OTHERS',
6859         x_msg_count,
6860         x_msg_data,
6861         '_PVT'
6862       );
6863 
6864   END update_row;
6865   -----------------------------------
6866   -- update_row for:OKC_K_LINES_TL --
6867   -----------------------------------
6868   PROCEDURE update_row(
6869     p_init_msg_list                IN VARCHAR2,
6870     x_return_status                OUT NOCOPY VARCHAR2,
6871     x_msg_count                    OUT NOCOPY NUMBER,
6872     x_msg_data                     OUT NOCOPY VARCHAR2,
6873     p_okc_k_lines_tl_rec           IN okc_k_lines_tl_rec_type,
6874     x_okc_k_lines_tl_rec           OUT NOCOPY okc_k_lines_tl_rec_type) IS
6875 
6876     l_api_version                 CONSTANT NUMBER := 1;
6877     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
6878     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6879     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type := p_okc_k_lines_tl_rec;
6880     l_def_okc_k_lines_tl_rec       okc_k_lines_tl_rec_type;
6881     l_row_notfound                 BOOLEAN := TRUE;
6882     ----------------------------------
6883     -- FUNCTION populate_new_record --
6884     ----------------------------------
6888     ) RETURN VARCHAR2 IS
6885     FUNCTION populate_new_record (
6886       p_okc_k_lines_tl_rec	IN okc_k_lines_tl_rec_type,
6887       x_okc_k_lines_tl_rec	OUT NOCOPY okc_k_lines_tl_rec_type
6889       l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
6890       l_row_notfound                 BOOLEAN := TRUE;
6891       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6892     BEGIN
6893 
6894     IF (l_debug = 'Y') THEN
6895        okc_debug.Set_Indentation('OKC_CLE_PVT');
6896        okc_debug.log('19000: Entered populate_new_record', 2);
6897     END IF;
6898 
6899       x_okc_k_lines_tl_rec := p_okc_k_lines_tl_rec;
6900       -- Get current database values
6901       l_okc_k_lines_tl_rec := get_rec(p_okc_k_lines_tl_rec, l_row_notfound);
6902       IF (l_row_notfound) THEN
6903         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
6904       END IF;
6905       IF (x_okc_k_lines_tl_rec.id = OKC_API.G_MISS_NUM)
6906       THEN
6907         x_okc_k_lines_tl_rec.id := l_okc_k_lines_tl_rec.id;
6908       END IF;
6909       IF (x_okc_k_lines_tl_rec.language = OKC_API.G_MISS_CHAR)
6910       THEN
6911         x_okc_k_lines_tl_rec.language := l_okc_k_lines_tl_rec.language;
6912       END IF;
6913       IF (x_okc_k_lines_tl_rec.source_lang = OKC_API.G_MISS_CHAR)
6914       THEN
6915         x_okc_k_lines_tl_rec.source_lang := l_okc_k_lines_tl_rec.source_lang;
6916       END IF;
6917       IF (x_okc_k_lines_tl_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
6918       THEN
6919         x_okc_k_lines_tl_rec.sfwt_flag := l_okc_k_lines_tl_rec.sfwt_flag;
6920       END IF;
6921       IF (x_okc_k_lines_tl_rec.name = OKC_API.G_MISS_CHAR)
6922       THEN
6923         x_okc_k_lines_tl_rec.name := l_okc_k_lines_tl_rec.name;
6924       END IF;
6925       IF (x_okc_k_lines_tl_rec.comments = OKC_API.G_MISS_CHAR)
6926       THEN
6927         x_okc_k_lines_tl_rec.comments := l_okc_k_lines_tl_rec.comments;
6928       END IF;
6929       IF (x_okc_k_lines_tl_rec.item_description = OKC_API.G_MISS_CHAR)
6930       THEN
6931         x_okc_k_lines_tl_rec.item_description := l_okc_k_lines_tl_rec.item_description;
6932       END IF;
6933       IF (x_okc_k_lines_tl_rec.oke_boe_description = OKC_API.G_MISS_CHAR)
6934       THEN
6935         x_okc_k_lines_tl_rec.oke_boe_description := l_okc_k_lines_tl_rec.oke_boe_description;
6936       END IF;
6937       IF (x_okc_k_lines_tl_rec.cognomen = OKC_API.G_MISS_CHAR)
6938       THEN
6939         x_okc_k_lines_tl_rec.cognomen := l_okc_k_lines_tl_rec.cognomen;
6940       END IF;
6941       IF (x_okc_k_lines_tl_rec.block23text = OKC_API.G_MISS_CHAR)
6942       THEN
6943         x_okc_k_lines_tl_rec.block23text := l_okc_k_lines_tl_rec.block23text;
6944       END IF;
6945       IF (x_okc_k_lines_tl_rec.created_by = OKC_API.G_MISS_NUM)
6946       THEN
6947         x_okc_k_lines_tl_rec.created_by := l_okc_k_lines_tl_rec.created_by;
6948       END IF;
6949       IF (x_okc_k_lines_tl_rec.creation_date = OKC_API.G_MISS_DATE)
6950       THEN
6951         x_okc_k_lines_tl_rec.creation_date := l_okc_k_lines_tl_rec.creation_date;
6952       END IF;
6953       IF (x_okc_k_lines_tl_rec.last_updated_by = OKC_API.G_MISS_NUM)
6954       THEN
6955         x_okc_k_lines_tl_rec.last_updated_by := l_okc_k_lines_tl_rec.last_updated_by;
6956       END IF;
6957       IF (x_okc_k_lines_tl_rec.last_update_date = OKC_API.G_MISS_DATE)
6958       THEN
6959         x_okc_k_lines_tl_rec.last_update_date := l_okc_k_lines_tl_rec.last_update_date;
6960       END IF;
6961       IF (x_okc_k_lines_tl_rec.last_update_login = OKC_API.G_MISS_NUM)
6962       THEN
6963         x_okc_k_lines_tl_rec.last_update_login := l_okc_k_lines_tl_rec.last_update_login;
6964       END IF;
6965 
6966     IF (l_debug = 'Y') THEN
6967        okc_debug.log('19050: Leaving update_row', 2);
6968        okc_debug.Reset_Indentation;
6969     END IF;
6970 
6971       RETURN(l_return_status);
6972 
6973     END populate_new_record;
6974     ---------------------------------------
6975     -- Set_Attributes for:OKC_K_LINES_TL --
6976     ---------------------------------------
6977     FUNCTION Set_Attributes (
6978       p_okc_k_lines_tl_rec IN  okc_k_lines_tl_rec_type,
6979       x_okc_k_lines_tl_rec OUT NOCOPY okc_k_lines_tl_rec_type
6980     ) RETURN VARCHAR2 IS
6981       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
6982     BEGIN
6983 
6984       x_okc_k_lines_tl_rec := p_okc_k_lines_tl_rec;
6985       x_okc_k_lines_tl_rec.LANGUAGE := okc_util.get_userenv_lang;
6986       x_okc_k_lines_tl_rec.SOURCE_LANG := okc_util.get_userenv_lang;
6987 
6988       RETURN(l_return_status);
6989 
6990     END Set_Attributes;
6991   BEGIN
6992 
6993     IF (l_debug = 'Y') THEN
6994        okc_debug.Set_Indentation('OKC_CLE_PVT');
6995        okc_debug.log('19200: Entered update_row', 2);
6996     END IF;
6997 
6998     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
6999                                               p_init_msg_list,
7000                                               '_PVT',
7001                                               x_return_status);
7002     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7003       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7004     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7005       RAISE OKC_API.G_EXCEPTION_ERROR;
7006     END IF;
7007     --- Setting item attributes
7008     l_return_status := Set_Attributes(
7009       p_okc_k_lines_tl_rec,              -- IN
7010       l_okc_k_lines_tl_rec);             -- OUT
7011     --- If any errors happen abort API
7012     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7013       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7014     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7015       RAISE OKC_API.G_EXCEPTION_ERROR;
7016     END IF;
7020     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7017     l_return_status := populate_new_record(l_okc_k_lines_tl_rec, l_def_okc_k_lines_tl_rec);
7018     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7019       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7021       RAISE OKC_API.G_EXCEPTION_ERROR;
7022     END IF;
7023     UPDATE  OKC_K_LINES_TL
7024     SET NAME = l_def_okc_k_lines_tl_rec.name,
7025         COMMENTS = l_def_okc_k_lines_tl_rec.comments,
7026         ITEM_DESCRIPTION = l_def_okc_k_lines_tl_rec.item_description,
7027         OKE_BOE_DESCRIPTION = l_def_okc_k_lines_tl_rec.oke_boe_description,
7028         COGNOMEN            = l_def_okc_k_lines_tl_rec.cognomen,
7029         BLOCK23TEXT = l_def_okc_k_lines_tl_rec.block23text,
7030 	   SOURCE_LANG = l_def_okc_k_lines_tl_rec.source_lang,
7031         --CREATED_BY = l_def_okc_k_lines_tl_rec.created_by,          /*Commented for bug 14499300 */
7032         --CREATION_DATE = l_def_okc_k_lines_tl_rec.creation_date,
7033         LAST_UPDATED_BY = l_def_okc_k_lines_tl_rec.last_updated_by,
7034         LAST_UPDATE_DATE = l_def_okc_k_lines_tl_rec.last_update_date,
7035         LAST_UPDATE_LOGIN = l_def_okc_k_lines_tl_rec.last_update_login
7036     WHERE ID = l_def_okc_k_lines_tl_rec.id
7037       AND USERENV('LANG') IN (SOURCE_LANG,LANGUAGE);
7038 
7039     UPDATE  OKC_K_LINES_TL
7040     SET SFWT_FLAG = 'Y'
7041     WHERE ID = l_def_okc_k_lines_tl_rec.id
7042       AND SOURCE_LANG <> USERENV('LANG');
7043 
7044     x_okc_k_lines_tl_rec := l_def_okc_k_lines_tl_rec;
7045     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7046 
7047     IF (l_debug = 'Y') THEN
7048        okc_debug.log('19300: Exiting update_row', 2);
7049        okc_debug.Reset_Indentation;
7050     END IF;
7051 
7052   EXCEPTION
7053     WHEN OKC_API.G_EXCEPTION_ERROR THEN
7054 
7055     IF (l_debug = 'Y') THEN
7056        okc_debug.log('19400: Exiting update_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
7057        okc_debug.Reset_Indentation;
7058     END IF;
7059 
7060       x_return_status := OKC_API.HANDLE_EXCEPTIONS
7061       (
7062         l_api_name,
7063         G_PKG_NAME,
7064         'OKC_API.G_RET_STS_ERROR',
7065         x_msg_count,
7066         x_msg_data,
7067         '_PVT'
7068       );
7069     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7070 
7071     IF (l_debug = 'Y') THEN
7072        okc_debug.log('19500: Exiting update_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
7073        okc_debug.Reset_Indentation;
7074     END IF;
7075 
7076       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7077       (
7078         l_api_name,
7079         G_PKG_NAME,
7080         'OKC_API.G_RET_STS_UNEXP_ERROR',
7081         x_msg_count,
7082         x_msg_data,
7083         '_PVT'
7084       );
7085     WHEN OTHERS THEN
7086 
7087     IF (l_debug = 'Y') THEN
7088        okc_debug.log('19600: Exiting update_row:OTHERS Exception', 2);
7089        okc_debug.Reset_Indentation;
7090     END IF;
7091 
7092       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7093       (
7094         l_api_name,
7095         G_PKG_NAME,
7096         'OTHERS',
7097         x_msg_count,
7098         x_msg_data,
7099         '_PVT'
7100       );
7101 
7102   END update_row;
7103   ----------------------------------
7104   -- update_row for:OKC_K_LINES_V --
7105   ----------------------------------
7106   PROCEDURE update_row(
7107     p_api_version                  IN NUMBER,
7108     p_init_msg_list                IN VARCHAR2,
7109     x_return_status                OUT NOCOPY VARCHAR2,
7110     x_msg_count                    OUT NOCOPY NUMBER,
7111     x_msg_data                     OUT NOCOPY VARCHAR2,
7112     p_restricted_update            IN VARCHAR2,
7113     p_clev_rec                     IN clev_rec_type,
7114     x_clev_rec                     OUT NOCOPY clev_rec_type) IS
7115 
7116     l_api_version                 CONSTANT NUMBER := 1;
7117     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
7118     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7119     l_clev_rec                     clev_rec_type := p_clev_rec;
7120     l_def_clev_rec                 clev_rec_type;
7121     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
7122     lx_okc_k_lines_tl_rec          okc_k_lines_tl_rec_type;
7123     l_cle_rec                      cle_rec_type;
7124     lx_cle_rec                     cle_rec_type;
7125     -------------------------------
7126     -- FUNCTION fill_who_columns --
7127     -------------------------------
7128     FUNCTION fill_who_columns (
7129       p_clev_rec	IN clev_rec_type
7130     ) RETURN clev_rec_type IS
7131       l_clev_rec	clev_rec_type := p_clev_rec;
7132     BEGIN
7133 
7134       l_clev_rec.LAST_UPDATE_DATE := SYSDATE;
7135       l_clev_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
7136       l_clev_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
7137       RETURN(l_clev_rec);
7138 
7139     END fill_who_columns;
7140     ----------------------------------
7141     -- FUNCTION populate_new_record --
7142     ----------------------------------
7143     FUNCTION populate_new_record (
7144       p_clev_rec	IN clev_rec_type,
7145       x_clev_rec	OUT NOCOPY clev_rec_type
7146     ) RETURN VARCHAR2 IS
7147       l_clev_rec                     clev_rec_type;
7148       l_row_notfound                 BOOLEAN := TRUE;
7149       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7150     BEGIN
7151 
7152     IF (l_debug = 'Y') THEN
7153        okc_debug.Set_Indentation('OKC_CLE_PVT');
7154        okc_debug.log('19800: Entered populate_new_record', 2);
7155     END IF;
7156 
7157       x_clev_rec := p_clev_rec;
7158       -- Get current database values
7159       l_clev_rec := get_rec(p_clev_rec, l_row_notfound);
7163       IF (x_clev_rec.id = OKC_API.G_MISS_NUM)
7160       IF (l_row_notfound) THEN
7161         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
7162       END IF;
7164       THEN
7165         x_clev_rec.id := l_clev_rec.id;
7166       END IF;
7167       IF (x_clev_rec.object_version_number = OKC_API.G_MISS_NUM)
7168       THEN
7169         x_clev_rec.object_version_number := l_clev_rec.object_version_number;
7170       END IF;
7171       IF (x_clev_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
7172       THEN
7173         x_clev_rec.sfwt_flag := l_clev_rec.sfwt_flag;
7174       END IF;
7175       IF (x_clev_rec.chr_id = OKC_API.G_MISS_NUM)
7176       THEN
7177         x_clev_rec.chr_id := l_clev_rec.chr_id;
7178       END IF;
7179       IF (x_clev_rec.cle_id = OKC_API.G_MISS_NUM)
7180       THEN
7181         x_clev_rec.cle_id := l_clev_rec.cle_id;
7182       END IF;
7183       IF (x_clev_rec.lse_id = OKC_API.G_MISS_NUM)
7184       THEN
7185         x_clev_rec.lse_id := l_clev_rec.lse_id;
7186       END IF;
7187       IF (x_clev_rec.line_number = OKC_API.G_MISS_CHAR)
7188       THEN
7189         x_clev_rec.line_number := l_clev_rec.line_number;
7190       END IF;
7191       IF (x_clev_rec.sts_code = OKC_API.G_MISS_CHAR)
7192       THEN
7193         x_clev_rec.sts_code := l_clev_rec.sts_code;
7194       END IF;
7195       IF (x_clev_rec.display_sequence = OKC_API.G_MISS_NUM)
7196       THEN
7197         x_clev_rec.display_sequence := l_clev_rec.display_sequence;
7198       END IF;
7199       IF (x_clev_rec.trn_code = OKC_API.G_MISS_CHAR)
7200       THEN
7201         x_clev_rec.trn_code := l_clev_rec.trn_code;
7202       END IF;
7203       IF (x_clev_rec.dnz_chr_id = OKC_API.G_MISS_NUM)
7204       THEN
7205         x_clev_rec.dnz_chr_id := l_clev_rec.dnz_chr_id;
7206       END IF;
7207       IF (x_clev_rec.comments = OKC_API.G_MISS_CHAR)
7208       THEN
7209         x_clev_rec.comments := l_clev_rec.comments;
7210       END IF;
7211       IF (x_clev_rec.item_description = OKC_API.G_MISS_CHAR)
7212       THEN
7213         x_clev_rec.item_description := l_clev_rec.item_description;
7214       END IF;
7215       IF (x_clev_rec.oke_boe_description = OKC_API.G_MISS_CHAR)
7216       THEN
7217         x_clev_rec.oke_boe_description := l_clev_rec.oke_boe_description;
7218       END IF;
7219       IF (x_clev_rec.cognomen = OKC_API.G_MISS_CHAR)
7220       THEN
7221         x_clev_rec.cognomen := l_clev_rec.cognomen;
7222       END IF;
7223       IF (x_clev_rec.hidden_ind = OKC_API.G_MISS_CHAR)
7224       THEN
7225         x_clev_rec.hidden_ind := l_clev_rec.hidden_ind;
7226       END IF;
7227       IF (x_clev_rec.price_unit = OKC_API.G_MISS_NUM)
7228       THEN
7229         x_clev_rec.price_unit := l_clev_rec.price_unit;
7230       END IF;
7231       IF (x_clev_rec.price_unit_percent = OKC_API.G_MISS_NUM)
7232       THEN
7233         x_clev_rec.price_unit_percent := l_clev_rec.price_unit_percent;
7234       END IF;
7235       IF (x_clev_rec.price_negotiated = OKC_API.G_MISS_NUM)
7236       THEN
7237         x_clev_rec.price_negotiated := l_clev_rec.price_negotiated;
7238       END IF;
7239       IF (x_clev_rec.price_negotiated_renewed = OKC_API.G_MISS_NUM)
7240       THEN
7241         x_clev_rec.price_negotiated_renewed := l_clev_rec.price_negotiated_renewed;
7242       END IF;
7243       IF (x_clev_rec.price_level_ind = OKC_API.G_MISS_CHAR)
7244       THEN
7245         x_clev_rec.price_level_ind := l_clev_rec.price_level_ind;
7246       END IF;
7247       IF (x_clev_rec.invoice_line_level_ind = OKC_API.G_MISS_CHAR)
7248       THEN
7249         x_clev_rec.invoice_line_level_ind := l_clev_rec.invoice_line_level_ind;
7250       END IF;
7251       IF (x_clev_rec.dpas_rating = OKC_API.G_MISS_CHAR)
7252       THEN
7253         x_clev_rec.dpas_rating := l_clev_rec.dpas_rating;
7254       END IF;
7255       IF (x_clev_rec.block23text = OKC_API.G_MISS_CHAR)
7256       THEN
7257         x_clev_rec.block23text := l_clev_rec.block23text;
7258       END IF;
7259       IF (x_clev_rec.exception_yn = OKC_API.G_MISS_CHAR)
7260       THEN
7261         x_clev_rec.exception_yn := l_clev_rec.exception_yn;
7262       END IF;
7263       IF (x_clev_rec.template_used = OKC_API.G_MISS_CHAR)
7264       THEN
7265         x_clev_rec.template_used := l_clev_rec.template_used;
7266       END IF;
7267       IF (x_clev_rec.date_terminated = OKC_API.G_MISS_DATE)
7268       THEN
7269         x_clev_rec.date_terminated := l_clev_rec.date_terminated;
7270       END IF;
7271       IF (x_clev_rec.name = OKC_API.G_MISS_CHAR)
7272       THEN
7273         x_clev_rec.name := l_clev_rec.name;
7274       END IF;
7275       IF (x_clev_rec.start_date = OKC_API.G_MISS_DATE)
7276       THEN
7277         x_clev_rec.start_date := l_clev_rec.start_date;
7278       END IF;
7279       IF (x_clev_rec.end_date = OKC_API.G_MISS_DATE)
7280       THEN
7281         x_clev_rec.end_date := l_clev_rec.end_date;
7282       END IF;
7283       IF (x_clev_rec.date_renewed = OKC_API.G_MISS_DATE)
7284       THEN
7285         x_clev_rec.date_renewed := l_clev_rec.date_renewed;
7286       END IF;
7287       IF (x_clev_rec.upg_orig_system_ref = OKC_API.G_MISS_CHAR)
7288       THEN
7289         x_clev_rec.upg_orig_system_ref := l_clev_rec.upg_orig_system_ref;
7290       END IF;
7291       IF (x_clev_rec.upg_orig_system_ref_id = OKC_API.G_MISS_NUM)
7292       THEN
7293         x_clev_rec.upg_orig_system_ref_id := l_clev_rec.upg_orig_system_ref_id;
7294       END IF;
7295       IF (x_clev_rec.orig_system_source_code = OKC_API.G_MISS_CHAR )
7296       THEN
7297         x_clev_rec.orig_system_source_code :=l_clev_rec.orig_system_source_code;
7298       END IF;
7299       IF (x_clev_rec.orig_system_id1 = OKC_API.G_MISS_NUM )
7300       THEN
7301         x_clev_rec.orig_system_id1 := l_clev_rec.orig_system_id1;
7305         x_clev_rec.orig_system_reference1 := l_clev_rec.orig_system_reference1;
7302       END IF;
7303       IF (x_clev_rec.orig_system_reference1 = OKC_API.G_MISS_CHAR )
7304       THEN
7306       END IF;
7307       IF (x_clev_rec.program_application_id = OKC_API.G_MISS_NUM)
7308       THEN
7309         x_clev_rec.program_application_id := l_clev_rec.program_application_id;
7310       END IF;
7311       IF (x_clev_rec.program_id = OKC_API.G_MISS_NUM)
7312       THEN
7313         x_clev_rec.program_id := l_clev_rec.program_id;
7314       END IF;
7315       IF (x_clev_rec.program_update_date  = OKC_API.G_MISS_DATE)
7316       THEN
7317         x_clev_rec.program_update_date  := l_clev_rec.program_update_date ;
7318       END IF;
7319       IF (x_clev_rec.request_id = OKC_API.G_MISS_NUM)
7320       THEN
7321         x_clev_rec.request_id := l_clev_rec.request_id;
7322       END IF;
7323       IF (x_clev_rec.price_list_id = OKC_API.G_MISS_NUM)
7324       THEN
7325         x_clev_rec.price_list_id := l_clev_rec.price_list_id;
7326       END IF;
7327       IF (x_clev_rec.pricing_date  = OKC_API.G_MISS_DATE)
7328       THEN
7329         x_clev_rec.pricing_date  := l_clev_rec.pricing_date ;
7330       END IF;
7331       IF (x_clev_rec.price_list_line_id  = OKC_API.G_MISS_NUM)
7332       THEN
7333         x_clev_rec.price_list_line_id  := l_clev_rec.price_list_line_id;
7334       END IF;
7335       IF (x_clev_rec.line_list_price  = OKC_API.G_MISS_NUM)
7336       THEN
7337         x_clev_rec.line_list_price  := l_clev_rec.line_list_price;
7338       END IF;
7339       IF (x_clev_rec.item_to_price_yn = OKC_API.G_MISS_CHAR) THEN
7340         x_clev_rec.item_to_price_yn := l_clev_rec.item_to_price_yn;
7341       END IF;
7342       IF (x_clev_rec.price_basis_yn = OKC_API.G_MISS_CHAR) THEN
7343         x_clev_rec.price_basis_yn := l_clev_rec.price_basis_yn;
7344       END IF;
7345       IF (x_clev_rec.config_header_id  = OKC_API.G_MISS_NUM)
7346       THEN
7347         x_clev_rec.config_header_id  := l_clev_rec.config_header_id;
7348       END IF;
7349       IF (x_clev_rec.config_revision_number  = OKC_API.G_MISS_NUM)
7350       THEN
7351         x_clev_rec.config_revision_number  := l_clev_rec.config_revision_number;
7352       END IF;
7353       IF (x_clev_rec.config_complete_yn = OKC_API.G_MISS_CHAR) THEN
7354         x_clev_rec.config_complete_yn := l_clev_rec.config_complete_yn;
7355       END IF;
7356       IF (x_clev_rec.config_valid_yn = OKC_API.G_MISS_CHAR) THEN
7357         x_clev_rec.config_valid_yn := l_clev_rec.config_valid_yn;
7358       END IF;
7359       IF (x_clev_rec.config_top_model_line_id  = OKC_API.G_MISS_NUM)
7360       THEN
7361         x_clev_rec.config_top_model_line_id  := l_clev_rec.config_top_model_line_id;
7362       END IF;
7363       IF (x_clev_rec.config_item_type = OKC_API.G_MISS_CHAR) THEN
7364         x_clev_rec.config_item_type := l_clev_rec.config_item_type;
7365       END IF;
7366 ---Bug.No.-1942374
7367       IF (x_clev_rec.CONFIG_ITEM_ID = OKC_API.G_MISS_NUM) THEN
7368         x_clev_rec.CONFIG_ITEM_ID := l_clev_rec.CONFIG_ITEM_ID;
7369       END IF;
7370 ---Bug.No.-1942374
7371       IF (x_clev_rec.attribute_category = OKC_API.G_MISS_CHAR)
7372       THEN
7373         x_clev_rec.attribute_category := l_clev_rec.attribute_category;
7374       END IF;
7375       IF (x_clev_rec.attribute1 = OKC_API.G_MISS_CHAR)
7376       THEN
7377         x_clev_rec.attribute1 := l_clev_rec.attribute1;
7378       END IF;
7379       IF (x_clev_rec.attribute2 = OKC_API.G_MISS_CHAR)
7380       THEN
7381         x_clev_rec.attribute2 := l_clev_rec.attribute2;
7382       END IF;
7383       IF (x_clev_rec.attribute3 = OKC_API.G_MISS_CHAR)
7384       THEN
7385         x_clev_rec.attribute3 := l_clev_rec.attribute3;
7386       END IF;
7387       IF (x_clev_rec.attribute4 = OKC_API.G_MISS_CHAR)
7388       THEN
7389         x_clev_rec.attribute4 := l_clev_rec.attribute4;
7390       END IF;
7391       IF (x_clev_rec.attribute5 = OKC_API.G_MISS_CHAR)
7392       THEN
7393         x_clev_rec.attribute5 := l_clev_rec.attribute5;
7394       END IF;
7395       IF (x_clev_rec.attribute6 = OKC_API.G_MISS_CHAR)
7396       THEN
7397         x_clev_rec.attribute6 := l_clev_rec.attribute6;
7398       END IF;
7399       IF (x_clev_rec.attribute7 = OKC_API.G_MISS_CHAR)
7400       THEN
7401         x_clev_rec.attribute7 := l_clev_rec.attribute7;
7402       END IF;
7403       IF (x_clev_rec.attribute8 = OKC_API.G_MISS_CHAR)
7404       THEN
7405         x_clev_rec.attribute8 := l_clev_rec.attribute8;
7406       END IF;
7407       IF (x_clev_rec.attribute9 = OKC_API.G_MISS_CHAR)
7408       THEN
7409         x_clev_rec.attribute9 := l_clev_rec.attribute9;
7410       END IF;
7411       IF (x_clev_rec.attribute10 = OKC_API.G_MISS_CHAR)
7412       THEN
7413         x_clev_rec.attribute10 := l_clev_rec.attribute10;
7414       END IF;
7415       IF (x_clev_rec.attribute11 = OKC_API.G_MISS_CHAR)
7416       THEN
7417         x_clev_rec.attribute11 := l_clev_rec.attribute11;
7418       END IF;
7419       IF (x_clev_rec.attribute12 = OKC_API.G_MISS_CHAR)
7420       THEN
7421         x_clev_rec.attribute12 := l_clev_rec.attribute12;
7422       END IF;
7423       IF (x_clev_rec.attribute13 = OKC_API.G_MISS_CHAR)
7424       THEN
7425         x_clev_rec.attribute13 := l_clev_rec.attribute13;
7426       END IF;
7427       IF (x_clev_rec.attribute14 = OKC_API.G_MISS_CHAR)
7428       THEN
7429         x_clev_rec.attribute14 := l_clev_rec.attribute14;
7430       END IF;
7431       IF (x_clev_rec.attribute15 = OKC_API.G_MISS_CHAR)
7432       THEN
7433         x_clev_rec.attribute15 := l_clev_rec.attribute15;
7434       END IF;
7435       IF (x_clev_rec.created_by = OKC_API.G_MISS_NUM)
7436       THEN
7437         x_clev_rec.created_by := l_clev_rec.created_by;
7438       END IF;
7442       END IF;
7439       IF (x_clev_rec.creation_date = OKC_API.G_MISS_DATE)
7440       THEN
7441         x_clev_rec.creation_date := l_clev_rec.creation_date;
7443       IF (x_clev_rec.last_updated_by = OKC_API.G_MISS_NUM)
7444       THEN
7445         x_clev_rec.last_updated_by := l_clev_rec.last_updated_by;
7446       END IF;
7447       IF (x_clev_rec.last_update_date = OKC_API.G_MISS_DATE)
7448       THEN
7449         x_clev_rec.last_update_date := l_clev_rec.last_update_date;
7450       END IF;
7451       IF (x_clev_rec.price_type = OKC_API.G_MISS_CHAR)
7452       THEN
7453         x_clev_rec.price_type := l_clev_rec.price_type;
7454       END IF;
7455       IF (x_clev_rec.currency_code = OKC_API.G_MISS_CHAR)
7456       THEN
7457         x_clev_rec.currency_code := l_clev_rec.currency_code;
7458       END IF;
7459       IF (x_clev_rec.currency_code_renewed = OKC_API.G_MISS_CHAR)
7460       THEN
7461         x_clev_rec.currency_code_renewed := l_clev_rec.currency_code_renewed;
7462       END IF;
7463       IF (x_clev_rec.last_update_login = OKC_API.G_MISS_NUM)
7464       THEN
7465         x_clev_rec.last_update_login := l_clev_rec.last_update_login;
7466       END IF;
7467       IF (x_clev_rec.service_item_yn = OKC_API.G_MISS_CHAR)
7468       THEN
7469         x_clev_rec.service_item_yn := l_clev_rec.service_item_yn;
7470       END IF;
7471     --new columns for price hold
7472       IF (x_clev_rec.ph_pricing_type = OKC_API.G_MISS_CHAR) THEN
7473         x_clev_rec.ph_pricing_type := l_clev_rec.ph_pricing_type;
7474       END IF;
7475       IF (x_clev_rec.ph_price_break_basis = OKC_API.G_MISS_CHAR) THEN
7476         x_clev_rec.ph_price_break_basis := l_clev_rec.ph_price_break_basis;
7477       END IF;
7478       IF (x_clev_rec.ph_min_qty = OKC_API.G_MISS_NUM) THEN
7479         x_clev_rec.ph_min_qty := l_clev_rec.ph_min_qty;
7480       END IF;
7481       IF (x_clev_rec.ph_min_amt = OKC_API.G_MISS_NUM) THEN
7482         x_clev_rec.ph_min_amt := l_clev_rec.ph_min_amt;
7483       END IF;
7484       IF (x_clev_rec.ph_qp_reference_id = OKC_API.G_MISS_NUM) THEN
7485         x_clev_rec.ph_qp_reference_id := l_clev_rec.ph_qp_reference_id;
7486       END IF;
7487       IF (x_clev_rec.ph_value = OKC_API.G_MISS_NUM) THEN
7488         x_clev_rec.ph_value := l_clev_rec.ph_value;
7489       END IF;
7490       IF (x_clev_rec.ph_enforce_price_list_yn = OKC_API.G_MISS_CHAR) THEN
7491         x_clev_rec.ph_enforce_price_list_yn := l_clev_rec.ph_enforce_price_list_yn;
7492       END IF;
7493       IF (x_clev_rec.ph_adjustment = OKC_API.G_MISS_NUM) THEN
7494         x_clev_rec.ph_adjustment := l_clev_rec.ph_adjustment;
7495       END IF;
7496       IF (x_clev_rec.ph_integrated_with_qp = OKC_API.G_MISS_CHAR) THEN
7497         x_clev_rec.ph_integrated_with_qp := l_clev_rec.ph_integrated_with_qp;
7498       END IF;
7499       -- new  columns to replace rules
7500       IF (x_clev_rec.cust_acct_id = OKC_API.G_MISS_NUM) THEN
7501         x_clev_rec.cust_acct_id := l_clev_rec.cust_acct_id;
7502       END IF;
7503       IF (x_clev_rec.bill_to_site_use_id = OKC_API.G_MISS_NUM) THEN
7504         x_clev_rec.bill_to_site_use_id := l_clev_rec.bill_to_site_use_id;
7505       END IF;
7506       IF (x_clev_rec.inv_rule_id = OKC_API.G_MISS_NUM) THEN
7507         x_clev_rec.inv_rule_id := l_clev_rec.inv_rule_id;
7508       END IF;
7509       IF (x_clev_rec.line_renewal_type_code = OKC_API.G_MISS_CHAR) THEN
7510         x_clev_rec.line_renewal_type_code := l_clev_rec.line_renewal_type_code;
7511       END IF;
7512       IF (x_clev_rec.ship_to_site_use_id = OKC_API.G_MISS_NUM) THEN
7513         x_clev_rec.ship_to_site_use_id := l_clev_rec.ship_to_site_use_id;
7514       END IF;
7515       IF (x_clev_rec.payment_term_id = OKC_API.G_MISS_NUM) THEN
7516         x_clev_rec.payment_term_id := l_clev_rec.payment_term_id;
7517       END IF;
7518      ---- line Level Cancellation ---
7519       IF (x_clev_rec.date_cancelled = OKC_API.G_MISS_DATE) THEN
7520         x_clev_rec.date_cancelled := l_clev_rec.date_cancelled;
7521       END IF;
7522      /*IF (x_clev_rec.canc_reason_code = OKC_API.G_MISS_CHAR) THEN
7523         x_clev_rec.canc_reason_code := l_clev_rec.canc_reason_code;
7524       END IF;*/
7525       IF (x_clev_rec.term_cancel_source = OKC_API.G_MISS_CHAR) THEN
7526         x_clev_rec.term_cancel_source := l_clev_rec.term_cancel_source;
7527       END IF;
7528       IF (x_clev_rec.cancelled_amount = OKC_API.G_MISS_NUM) THEN
7529         x_clev_rec.cancelled_amount := l_clev_rec.cancelled_amount;
7530       END IF;
7531 
7532      ---- added by mchoudha 22-JUL ---
7533       IF (x_clev_rec.payment_instruction_type = OKC_API.G_MISS_CHAR) THEN
7534         x_clev_rec.payment_instruction_type := l_clev_rec.payment_instruction_type;
7535       END IF;
7536 
7537 
7538     IF (l_debug = 'Y') THEN
7539        okc_debug.log('19900: Leaving populate_new_record ', 2);
7540        okc_debug.Reset_Indentation;
7541     END IF;
7542 
7543       RETURN(l_return_status);
7544 
7545     END populate_new_record;
7546     --------------------------------------
7547     -- Set_Attributes for:OKC_K_LINES_V --
7548     --------------------------------------
7549     FUNCTION Set_Attributes (
7550       p_clev IN  clev_rec_type,
7551       x_clev_rec OUT NOCOPY clev_rec_type
7552     ) RETURN VARCHAR2 IS
7553       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7554     BEGIN
7555 
7556       x_clev_rec := p_clev_rec;
7557       x_clev_rec.OBJECT_VERSION_NUMBER := NVL(x_clev_rec.OBJECT_VERSION_NUMBER, 0) + 1;
7558       /************************ HAND-CODED *********************************/
7559       x_clev_rec.SFWT_FLAG		:= UPPER(x_clev_rec.SFWT_FLAG);
7560       x_clev_rec.HIDDEN_IND		:= UPPER(x_clev_rec.HIDDEN_IND);
7561       x_clev_rec.PRICE_LEVEL_IND	:= UPPER(x_clev_rec.PRICE_LEVEL_IND);
7562       x_clev_rec.INVOICE_LINE_LEVEL_IND := UPPER(x_clev_rec.INVOICE_LINE_LEVEL_IND);
7566       x_clev_rec.CONFIG_COMPLETE_YN     := UPPER(x_clev_rec.CONFIG_COMPLETE_YN);
7563       x_clev_rec.EXCEPTION_YN		:= UPPER(x_clev_rec.EXCEPTION_YN);
7564       x_clev_rec.ITEM_TO_PRICE_YN       := UPPER(x_clev_rec.ITEM_TO_PRICE_YN);
7565       x_clev_rec.PRICE_BASIS_YN         := UPPER(x_clev_rec.PRICE_BASIS_YN);
7567       x_clev_rec.CONFIG_VALID_YN        := UPPER(x_clev_rec.CONFIG_VALID_YN);
7568       x_clev_rec.CONFIG_ITEM_TYPE       := UPPER(x_clev_rec.CONFIG_ITEM_TYPE);
7569       /*********************** END HAND-CODED ********************************/
7570       RETURN(l_return_status);
7571 
7572     END Set_Attributes;
7573   BEGIN
7574 
7575     IF (l_debug = 'Y') THEN
7576        okc_debug.Set_Indentation('OKC_CLE_PVT');
7577        okc_debug.log('20000: Entered update_row', 2);
7578     END IF;
7579 
7580     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
7581 
7582 
7583                                               G_PKG_NAME,
7584                                               p_init_msg_list,
7585                                               l_api_version,
7586                                               p_api_version,
7587                                               '_PVT',
7588                                      x_return_status);
7589 
7590     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7591       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7592     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7593       RAISE OKC_API.G_EXCEPTION_ERROR;
7594     END IF;
7595     --- Setting item attributes
7596     l_return_status := Set_Attributes(
7597       p_clev_rec,                        -- IN
7598       l_clev_rec);                       -- OUT
7599     --- If any errors happen abort API
7600     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7601       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7602     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7603       RAISE OKC_API.G_EXCEPTION_ERROR;
7604     END IF;
7605     l_return_status := populate_new_record(l_clev_rec, l_def_clev_rec);
7606     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7607       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7608     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7609       RAISE OKC_API.G_EXCEPTION_ERROR;
7610     END IF;
7611     l_def_clev_rec := fill_who_columns(l_def_clev_rec);
7612 
7613     IF p_clev_rec.VALIDATE_YN = 'Y' THEN ---Bug#3150149
7614        --- Validate all non-missing attributes (Item Level Validation)
7615        -- No validation if the status changes from ENTERED -> CANCELED
7616        If (NVL(p_clev_rec.new_ste_code,'x') <> 'CANCELLED') Then
7617            l_return_status := Validate_Attributes(l_def_clev_rec);
7618        End If;
7619     END IF; ---Bug#3150149.
7620 
7621     --- If any errors happen abort API
7622     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7623       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7624     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7625       RAISE OKC_API.G_EXCEPTION_ERROR;
7626     END IF;
7627     l_return_status := Validate_Record(l_def_clev_rec);
7628     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7629       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7630     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7631       RAISE OKC_API.G_EXCEPTION_ERROR;
7632     END IF;
7633 
7634     --------------------------------------
7635     -- Move VIEW record to "Child" records
7636     --------------------------------------
7637     migrate(l_def_clev_rec, l_okc_k_lines_tl_rec);
7638     migrate(l_def_clev_rec, l_cle_rec);
7639     --------------------------------------------
7640     -- Call the UPDATE_ROW for each child record
7641     --------------------------------------------
7642     update_row(
7643       p_init_msg_list,
7644       x_return_status,
7645       x_msg_count,
7646       x_msg_data,
7647       l_okc_k_lines_tl_rec,
7648       lx_okc_k_lines_tl_rec
7649     );
7650     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7651       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7652     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7653       RAISE OKC_API.G_EXCEPTION_ERROR;
7654     END IF;
7655     migrate(lx_okc_k_lines_tl_rec, l_def_clev_rec);
7656     update_row(
7657       p_init_msg_list,
7658       x_return_status,
7659       x_msg_count,
7660       x_msg_data,
7661 	 p_restricted_update,
7662       l_cle_rec,
7663       lx_cle_rec
7664     );
7665     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7666       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7667     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
7668       RAISE OKC_API.G_EXCEPTION_ERROR;
7669     END IF;
7670     migrate(lx_cle_rec, l_def_clev_rec);
7671     x_clev_rec := l_def_clev_rec;
7672     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7673 
7674 IF (l_debug = 'Y') THEN
7675    okc_debug.log('20100: Exiting update_row', 2);
7676    okc_debug.Reset_Indentation;
7677 END IF;
7678 
7679   EXCEPTION
7680     WHEN OKC_API.G_EXCEPTION_ERROR THEN
7681 
7682     IF (l_debug = 'Y') THEN
7683        okc_debug.log('20200: Exiting update_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
7684        okc_debug.Reset_Indentation;
7685     END IF;
7686 
7687       x_return_status := OKC_API.HANDLE_EXCEPTIONS
7688       (
7689         l_api_name,
7690         G_PKG_NAME,
7691         'OKC_API.G_RET_STS_ERROR',
7692         x_msg_count,
7693         x_msg_data,
7694         '_PVT'
7695       );
7696     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7697 
7698     IF (l_debug = 'Y') THEN
7702 
7699        okc_debug.log('20300: Exiting update_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
7700        okc_debug.Reset_Indentation;
7701     END IF;
7703       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7704       (
7705         l_api_name,
7706         G_PKG_NAME,
7707         'OKC_API.G_RET_STS_UNEXP_ERROR',
7708         x_msg_count,
7709         x_msg_data,
7710         '_PVT'
7711       );
7712     WHEN OTHERS THEN
7713 
7714     IF (l_debug = 'Y') THEN
7715        okc_debug.log('20400: Exiting update_row:OTHERS Exception', 2);
7716        okc_debug.Reset_Indentation;
7717     END IF;
7718 
7719       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7720       (
7721         l_api_name,
7722         G_PKG_NAME,
7723         'OTHERS',
7724         x_msg_count,
7725         x_msg_data,
7726         '_PVT'
7727       );
7728 
7729   END update_row;
7730   ----------------------------------------
7731   -- PL/SQL TBL update_row for:CLEV_TBL --
7732   ----------------------------------------
7733   PROCEDURE update_row(
7734     p_api_version                  IN NUMBER,
7735     p_init_msg_list                IN VARCHAR2,
7736     x_return_status                OUT NOCOPY VARCHAR2,
7737     x_msg_count                    OUT NOCOPY NUMBER,
7738     x_msg_data                     OUT NOCOPY VARCHAR2,
7739     p_restricted_update            IN VARCHAR2,
7740     p_clev_tbl                     IN clev_tbl_type,
7741     x_clev_tbl                     OUT NOCOPY clev_tbl_type) IS
7742 
7743     l_api_version                 CONSTANT NUMBER := 1;
7744     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
7745     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7746     l_overall_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7747     i                              NUMBER := 0;
7748   BEGIN
7749 
7750     IF (l_debug = 'Y') THEN
7751        okc_debug.Set_Indentation('OKC_CLE_PVT');
7752        okc_debug.log('20500: Entered update_row', 2);
7753     END IF;
7754 
7755     OKC_API.init_msg_list(p_init_msg_list);
7756     -- Make sure PL/SQL table has records in it before passing
7757     IF (p_clev_tbl.COUNT > 0) THEN
7758       i := p_clev_tbl.FIRST;
7759       LOOP
7760         update_row (
7761           p_api_version                  => p_api_version,
7762           p_init_msg_list                => OKC_API.G_FALSE,
7763           x_return_status                => x_return_status,
7764           x_msg_count                    => x_msg_count,
7765           x_msg_data                     => x_msg_data,
7766 		p_restricted_update 		 => p_restricted_update,
7767           p_clev_rec                     => p_clev_tbl(i),
7768           x_clev_rec                     => x_clev_tbl(i));
7769 
7770 		-- store the highest degree of error
7771 		If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
7772 		   If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
7773 			 l_overall_status := x_return_status;
7774 		   End If;
7775 		End If;
7776 
7777         EXIT WHEN (i = p_clev_tbl.LAST);
7778         i := p_clev_tbl.NEXT(i);
7779       END LOOP;
7780 	 -- return overall status
7781 	 x_return_status := l_overall_status;
7782     END IF;
7783 
7784  IF (l_debug = 'Y') THEN
7785     okc_debug.log('20600: Exiting update_row', 2);
7786     okc_debug.Reset_Indentation;
7787  END IF;
7788 
7789   EXCEPTION
7790     WHEN OKC_API.G_EXCEPTION_ERROR THEN
7791 
7792     IF (l_debug = 'Y') THEN
7793        okc_debug.log('20700: Exiting update_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
7794        okc_debug.Reset_Indentation;
7795     END IF;
7796 
7797       x_return_status := OKC_API.HANDLE_EXCEPTIONS
7798       (
7799         l_api_name,
7800         G_PKG_NAME,
7801         'OKC_API.G_RET_STS_ERROR',
7802         x_msg_count,
7803         x_msg_data,
7804         '_PVT'
7805       );
7806     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7807 
7808     IF (l_debug = 'Y') THEN
7809        okc_debug.log('20800: Exiting update_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
7810        okc_debug.Reset_Indentation;
7811     END IF;
7812 
7813       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7814       (
7815         l_api_name,
7816         G_PKG_NAME,
7817         'OKC_API.G_RET_STS_UNEXP_ERROR',
7818         x_msg_count,
7819         x_msg_data,
7820         '_PVT'
7821       );
7822     WHEN OTHERS THEN
7823 
7824     IF (l_debug = 'Y') THEN
7825        okc_debug.log('20900: Exiting update_row:OTHERS Exception', 2);
7826        okc_debug.Reset_Indentation;
7827     END IF;
7828 
7829       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7830       (
7831         l_api_name,
7832         G_PKG_NAME,
7833         'OTHERS',
7834         x_msg_count,
7835         x_msg_data,
7836         '_PVT'
7837       );
7838 
7839   END update_row;
7840 
7841   ---------------------------------------------------------------------------
7842   -- PROCEDURE delete_row
7843   ---------------------------------------------------------------------------
7844   ----------------------------------
7845   -- delete_row for:OKC_K_LINES_B --
7846   ----------------------------------
7847   PROCEDURE delete_row(
7848     p_init_msg_list                IN VARCHAR2,
7849     x_return_status                OUT NOCOPY VARCHAR2,
7850     x_msg_count                    OUT NOCOPY NUMBER,
7851     x_msg_data                     OUT NOCOPY VARCHAR2,
7852     p_cle_rec                      IN cle_rec_type) IS
7853 
7854     l_api_version                 CONSTANT NUMBER := 1;
7855     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
7856     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7857     l_cle_rec                      cle_rec_type:= p_cle_rec;
7858     l_row_notfound                 BOOLEAN := TRUE;
7859   BEGIN
7860 
7861     IF (l_debug = 'Y') THEN
7862        okc_debug.Set_Indentation('OKC_CLE_PVT');
7863        okc_debug.log('21000: Entered delete_row', 2);
7864     END IF;
7865 
7866     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
7867                                               p_init_msg_list,
7868                                               '_PVT',
7869                                               x_return_status);
7870     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7871       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7872     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7873       RAISE OKC_API.G_EXCEPTION_ERROR;
7874     END IF;
7875     DELETE FROM OKC_K_LINES_B
7876      WHERE ID = l_cle_rec.id;
7877 
7878     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7879 
7880  IF (l_debug = 'Y') THEN
7881     okc_debug.log('21100: Leaving delete_row', 2);
7882     okc_debug.Reset_Indentation;
7883  END IF;
7884 
7885   EXCEPTION
7886     WHEN OKC_API.G_EXCEPTION_ERROR THEN
7887 
7888     IF (l_debug = 'Y') THEN
7889        okc_debug.log('21200: Exiting delete_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
7890        okc_debug.Reset_Indentation;
7891     END IF;
7892 
7893       x_return_status := OKC_API.HANDLE_EXCEPTIONS
7894       (
7895         l_api_name,
7896         G_PKG_NAME,
7897         'OKC_API.G_RET_STS_ERROR',
7898         x_msg_count,
7899         x_msg_data,
7900         '_PVT'
7901       );
7902     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7903 
7904     IF (l_debug = 'Y') THEN
7905        okc_debug.log('21300: Exiting delete_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
7906        okc_debug.Reset_Indentation;
7907     END IF;
7908 
7909       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7910       (
7911         l_api_name,
7912         G_PKG_NAME,
7913         'OKC_API.G_RET_STS_UNEXP_ERROR',
7914         x_msg_count,
7915         x_msg_data,
7916         '_PVT'
7917       );
7918     WHEN OTHERS THEN
7919 
7920     IF (l_debug = 'Y') THEN
7921        okc_debug.log('21400: Exiting delete_row:OTHERS Exception', 2);
7922        okc_debug.Reset_Indentation;
7923     END IF;
7924 
7925       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
7926       (
7927         l_api_name,
7928         G_PKG_NAME,
7929         'OTHERS',
7930         x_msg_count,
7931         x_msg_data,
7932         '_PVT'
7933       );
7934 
7935   END delete_row;
7936   -----------------------------------
7937   -- delete_row for:OKC_K_LINES_TL --
7938   -----------------------------------
7939   PROCEDURE delete_row(
7940     p_init_msg_list                IN VARCHAR2,
7941     x_return_status                OUT NOCOPY VARCHAR2,
7942     x_msg_count                    OUT NOCOPY NUMBER,
7943     x_msg_data                     OUT NOCOPY VARCHAR2,
7944     p_okc_k_lines_tl_rec           IN okc_k_lines_tl_rec_type) IS
7948     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7945 
7946     l_api_version                 CONSTANT NUMBER := 1;
7947     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
7949     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type:= p_okc_k_lines_tl_rec;
7950     l_row_notfound                 BOOLEAN := TRUE;
7951     ---------------------------------------
7952     -- Set_Attributes for:OKC_K_LINES_TL --
7953     ---------------------------------------
7954     FUNCTION Set_Attributes (
7955       p_okc_k_lines_tl_rec IN  okc_k_lines_tl_rec_type,
7956       x_okc_k_lines_tl_rec OUT NOCOPY okc_k_lines_tl_rec_type
7957     ) RETURN VARCHAR2 IS
7958       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
7959     BEGIN
7960 
7961       x_okc_k_lines_tl_rec := p_okc_k_lines_tl_rec;
7962       x_okc_k_lines_tl_rec.LANGUAGE := okc_util.get_userenv_lang;
7963       RETURN(l_return_status);
7964 
7965     END Set_Attributes;
7966   BEGIN
7967 
7968     IF (l_debug = 'Y') THEN
7969        okc_debug.Set_Indentation('OKC_CLE_PVT');
7970        okc_debug.log('21600: Entered delete_row', 2);
7971     END IF;
7972 
7973     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
7974                                               p_init_msg_list,
7975                                               '_PVT',
7976                                               x_return_status);
7977     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7978       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7979     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7980       RAISE OKC_API.G_EXCEPTION_ERROR;
7981     END IF;
7982     --- Setting item attributes
7983     l_return_status := Set_Attributes(
7984       p_okc_k_lines_tl_rec,              -- IN
7985       l_okc_k_lines_tl_rec);             -- OUT
7986     --- If any errors happen abort API
7987     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
7988       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
7989     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
7990       RAISE OKC_API.G_EXCEPTION_ERROR;
7991     END IF;
7992     DELETE FROM OKC_K_LINES_TL
7993      WHERE ID = l_okc_k_lines_tl_rec.id;
7994 
7995     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
7996 
7997  IF (l_debug = 'Y') THEN
7998     okc_debug.log('21700: Exiting delete_row', 2);
7999     okc_debug.Reset_Indentation;
8000  END IF;
8001 
8002   EXCEPTION
8003     WHEN OKC_API.G_EXCEPTION_ERROR THEN
8004 
8005     IF (l_debug = 'Y') THEN
8006        okc_debug.log('21800: Exiting delete_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
8007        okc_debug.Reset_Indentation;
8008     END IF;
8009 
8010       x_return_status := OKC_API.HANDLE_EXCEPTIONS
8011       (
8012         l_api_name,
8013         G_PKG_NAME,
8014         'OKC_API.G_RET_STS_ERROR',
8015         x_msg_count,
8016         x_msg_data,
8017         '_PVT'
8018       );
8019     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8020 
8021     IF (l_debug = 'Y') THEN
8022        okc_debug.log('21900: Exiting delete_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
8023        okc_debug.Reset_Indentation;
8024     END IF;
8025 
8026       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8027       (
8028         l_api_name,
8029         G_PKG_NAME,
8030         'OKC_API.G_RET_STS_UNEXP_ERROR',
8031         x_msg_count,
8032         x_msg_data,
8033         '_PVT'
8034       );
8035     WHEN OTHERS THEN
8036 
8037     IF (l_debug = 'Y') THEN
8038        okc_debug.log('22000: Exiting delete_row:OTHERS Exception', 2);
8039        okc_debug.Reset_Indentation;
8040     END IF;
8041 
8042       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8043       (
8044         l_api_name,
8045         G_PKG_NAME,
8046         'OTHERS',
8047         x_msg_count,
8048         x_msg_data,
8049         '_PVT'
8050       );
8051 
8052   END delete_row;
8053   ----------------------------------
8054   -- delete_row for:OKC_K_LINES_V --
8055   ----------------------------------
8056   PROCEDURE delete_row(
8057     p_api_version                  IN NUMBER,
8058     p_init_msg_list                IN VARCHAR2,
8059     x_return_status                OUT NOCOPY VARCHAR2,
8060     x_msg_count                    OUT NOCOPY NUMBER,
8061     x_msg_data                     OUT NOCOPY VARCHAR2,
8062     p_clev_rec                     IN clev_rec_type) IS
8063 
8064     l_api_version                  CONSTANT NUMBER := 1;
8065     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
8066     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8067     l_clev_rec                     clev_rec_type := p_clev_rec;
8068     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
8069     l_cle_rec                      cle_rec_type;
8070     l_olev_rec                     OKC_OPER_INST_PUB.olev_rec_type;
8071     x_olev_rec                     OKC_OPER_INST_PUB.olev_rec_type;
8072     l_opn_code                     VARCHAR2(30);
8073     l_ste_code                     VARCHAR2(30);
8074     l_parent_line_id                NUMBER;
8075 
8076     --
8077     -- Cursor to get operation lines to delete or update
8078     -- id required to delete or update
8079     -- object_version_number required in case of update
8080     -- oie_id to get cop_id in the next cursor to determine
8081     -- whether the instance is renewal or renew consolidation (RENEWAL/REN_CON)
8082     --
8083 
8084    -- Added for bug # 3909534
8085     Cursor ole_csr Is
8086           SELECT id, object_version_number,oie_id,object_chr_id,active_yn,object_cle_id
8087           FROM okc_operation_lines
8088           WHERE subject_cle_id = p_clev_rec.id;
8089 
8093           WHERE id = p_line_id
8090     Cursor c_parent_line_id (p_line_id NUMBER) Is
8091           SELECT cle_id
8092           FROM okc_k_lines_b
8094             AND lse_id in (7,8,9,10,11,13,18,25,35);
8095 
8096     Cursor cop_csr(p_oie_id NUMBER) Is
8097           SELECT opn_code
8098           FROM okc_class_operations
8099           WHERE id = (SELECT cop_id
8100 		            FROM okc_operation_instances
8101 				  WHERE id = p_oie_id );
8102 
8103     --
8104     -- A contract line cannot be deleted unless it is in
8105     -- ENTERED or CANCELLED status
8106     -- Bug# 1646987
8107     --
8108     Cursor ste_csr Is
8109            SELECT ste_code
8110            FROM okc_statuses_b
8111            WHERE code = (SELECT sts_code
8112 		               FROM okc_k_lines_b
8113 					WHERE id = p_clev_rec.id);
8114 
8115   BEGIN
8116 
8117     IF (l_debug = 'Y') THEN
8118        okc_debug.Set_Indentation('OKC_CLE_PVT');
8119        okc_debug.log('22100: Entered delete_row', 2);
8120     END IF;
8121 
8122     -- Check whether the line is updateable or not
8123     Open ste_csr;
8124     Fetch ste_csr Into l_ste_code;
8125     Close ste_csr;
8126 
8127     If (l_ste_code not in ('ENTERED' , 'CANCELLED') ) Then
8128 
8129          OKC_API.SET_MESSAGE(p_app_name      => g_app_name,
8130 	                        p_msg_name      => 'OKC_CANNOT_DELETE_LINE');
8131 
8132           -- notify caller of an error
8133           x_return_status := OKC_API.G_RET_STS_ERROR;
8134 
8135           return ;
8136 
8137     End If;
8138 
8139     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
8140                                               G_PKG_NAME,
8141                                               p_init_msg_list,
8142                                               l_api_version,
8143                                               p_api_version,
8144                                               '_PVT',
8145                                               x_return_status);
8146     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8147       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8148     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
8149       RAISE OKC_API.G_EXCEPTION_ERROR;
8150     END IF;
8151 
8152     --------------------------------------
8153     -- Move VIEW record to "Child" records
8154     --------------------------------------
8155     migrate(l_clev_rec, l_okc_k_lines_tl_rec);
8156     migrate(l_clev_rec, l_cle_rec);
8157 
8158     --------------------------------------------
8159     -- Call the DELETE_ROW for each child record
8160     --------------------------------------------
8161     delete_row(
8162       p_init_msg_list,
8163       x_return_status,
8164       x_msg_count,
8165       x_msg_data,
8166       l_okc_k_lines_tl_rec
8167     );
8168     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8169       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8170     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8171       RAISE OKC_API.G_EXCEPTION_ERROR;
8172     END IF;
8173     delete_row(
8174       p_init_msg_list,
8175       x_return_status,
8176       x_msg_count,
8177       x_msg_data,
8178       l_cle_rec
8179     );
8180     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8181       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8182     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8183       RAISE OKC_API.G_EXCEPTION_ERROR;
8184     END IF;
8185 
8186      -- delete all renewal links from operation lines
8187      -- for the current line as subject line
8188 	--
8189 	-- only one record per line in operation lines
8190 	-- loop used for implicit cursor opening
8191 	--
8192 	FOR ole_rec IN ole_csr
8193 	LOOP
8194 	    --
8195 	    -- When a line is deleted, if the line is renewed from a contract
8196 	    -- that contract cannot be considered as renewed
8197 	    -- so, set the date_renewed of that source contract to null
8198 	    --
8199 	    If (ole_rec.active_yn = 'Y') Then
8200                     --npalepu 08-11-2005 modified for bug # 4691662.
8201                     --Replaced table okc_k_headers_b with headers_All_b table
8202                     /* UPDATE okc_k_headers_b */
8203                     UPDATE OKC_K_HEADERS_ALL_B
8204                     --end npalepu
8205 		    SET    date_renewed = null
8206 		    WHERE id = ole_rec.object_chr_id
8207 		    AND date_renewed is not null;
8208          End If;
8209 
8210 	   l_olev_rec.ID := ole_rec.ID;
8211 	   l_olev_rec.OBJECT_VERSION_NUMBER := ole_rec.OBJECT_VERSION_NUMBER;
8212 
8213 	   open cop_csr(ole_rec.OIE_ID);
8214 	   fetch cop_csr into l_opn_code;
8215 	   close cop_csr;
8216 
8217 	   If (l_opn_code = 'RENEWAL') Then
8218 
8219 		 OKC_OPER_INST_PUB.Delete_Operation_Line (
8220 		    p_api_version		=> p_api_version,
8221 		    p_init_msg_list	     => p_init_msg_list,
8222 		    x_return_status 	=> x_return_status,
8223 		    x_msg_count     	=> x_msg_count,
8224 		    x_msg_data      	=> x_msg_data,
8225 		    p_olev_rec		     => l_olev_rec);
8226 
8227 	   Elsif (l_opn_code = 'REN_CON') Then
8228 
8229         -- Bug fix#3909534 starts
8230 
8231 
8232                  l_parent_line_id   := NULL;
8233 
8234  		 UPDATE okc_k_lines_b
8235 		 SET    date_renewed = null
8236 		 WHERE id = ole_rec.object_cle_id
8237 		 AND date_renewed is not null;
8238 
8239               -- Update Parent Line (Source Contract Top Line) date_renewed
8240                 Open c_parent_line_id (ole_rec.object_cle_id) ;
8244                 If l_parent_line_id IS NOT NULL then
8241                 Fetch c_parent_line_id into l_parent_line_id ;
8242                 Close c_parent_line_id ;
8243 
8245    		     UPDATE okc_k_lines_b
8246 		     SET    date_renewed = null
8247 		     WHERE id  = l_parent_line_id
8248 		     AND date_renewed is not null;
8249                 End If;
8250              --
8251              -- Bug fix ends
8252 
8253 		 l_olev_rec.SUBJECT_CLE_ID := NULL;
8254 		 l_olev_rec.PROCESS_FLAG := 'A';
8255 		 l_olev_rec.ACTIVE_YN := 'N';
8256 
8257 		 OKC_OPER_INST_PUB.Update_Operation_Line (
8258 		    p_api_version		=> p_api_version,
8259 		    p_init_msg_list	     => p_init_msg_list,
8260 		    x_return_status 	=> x_return_status,
8261 		    x_msg_count     	=> x_msg_count,
8262 		    x_msg_data      	=> x_msg_data,
8263 		    p_olev_rec		     => l_olev_rec,
8264 		    x_olev_rec           => x_olev_rec);
8265 	   End If;
8266 
8267         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8268            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8269         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8270            RAISE OKC_API.G_EXCEPTION_ERROR;
8271 	   END IF;
8272 	END LOOP;
8273 
8274     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
8275 
8276 IF (l_debug = 'Y') THEN
8277    okc_debug.log('22200: Exiting delete_row', 2);
8278    okc_debug.Reset_Indentation;
8279 END IF;
8280 
8281   EXCEPTION
8282     WHEN OKC_API.G_EXCEPTION_ERROR THEN
8283 
8284     IF (l_debug = 'Y') THEN
8285        okc_debug.log('22300: Exiting delete_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
8286        okc_debug.Reset_Indentation;
8287     END IF;
8288 
8289       x_return_status := OKC_API.HANDLE_EXCEPTIONS
8290       (
8291         l_api_name,
8292         G_PKG_NAME,
8293         'OKC_API.G_RET_STS_ERROR',
8294         x_msg_count,
8295         x_msg_data,
8296         '_PVT'
8297       );
8298     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8299 
8300     IF (l_debug = 'Y') THEN
8301        okc_debug.log('22400: Exiting delete_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
8302        okc_debug.Reset_Indentation;
8303     END IF;
8304 
8305       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8306       (
8307         l_api_name,
8308         G_PKG_NAME,
8309         'OKC_API.G_RET_STS_UNEXP_ERROR',
8310         x_msg_count,
8311         x_msg_data,
8312         '_PVT'
8313       );
8314     WHEN OTHERS THEN
8315 
8316     IF (l_debug = 'Y') THEN
8317        okc_debug.log('22500: Exiting delete_row:OTHERS Exception', 2);
8318        okc_debug.Reset_Indentation;
8319     END IF;
8320 
8321       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8322       (
8323         l_api_name,
8324         G_PKG_NAME,
8325         'OTHERS',
8326         x_msg_count,
8327         x_msg_data,
8328         '_PVT'
8329       );
8330 
8331   END delete_row;
8332   ----------------------------------------
8333   -- PL/SQL TBL delete_row for:CLEV_TBL --
8334   ----------------------------------------
8335   PROCEDURE delete_row(
8336     p_api_version                  IN NUMBER,
8337     p_init_msg_list                IN VARCHAR2,
8338     x_return_status                OUT NOCOPY VARCHAR2,
8339     x_msg_count                    OUT NOCOPY NUMBER,
8340     x_msg_data                     OUT NOCOPY VARCHAR2,
8341     p_clev_tbl                     IN clev_tbl_type) IS
8342 
8343     l_api_version                 CONSTANT NUMBER := 1;
8344     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
8345     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8346     l_overall_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8347     i                              NUMBER := 0;
8348   BEGIN
8349 
8350     IF (l_debug = 'Y') THEN
8351        okc_debug.Set_Indentation('OKC_CLE_PVT');
8352        okc_debug.log('22600: Entered delete_row', 2);
8353     END IF;
8354 
8355     OKC_API.init_msg_list(p_init_msg_list);
8356     -- Make sure PL/SQL table has records in it before passing
8357     IF (p_clev_tbl.COUNT > 0) THEN
8358       i := p_clev_tbl.FIRST;
8359       LOOP
8360         delete_row (
8361           p_api_version                  => p_api_version,
8362           p_init_msg_list                => OKC_API.G_FALSE,
8363           x_return_status                => x_return_status,
8364           x_msg_count                    => x_msg_count,
8365           x_msg_data                     => x_msg_data,
8366           p_clev_rec                     => p_clev_tbl(i));
8367 
8368 		-- store the highest degree of error
8369 		If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
8370 		   If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
8371 			 l_overall_status := x_return_status;
8372 		   End If;
8373 		End If;
8374 
8375         EXIT WHEN (i = p_clev_tbl.LAST);
8376         i := p_clev_tbl.NEXT(i);
8377       END LOOP;
8378 	 -- return overall status
8379 	 x_return_status := l_overall_status;
8380     END IF;
8381 
8382  IF (l_debug = 'Y') THEN
8383     okc_debug.log('22700: Exiting delete_row', 2);
8384     okc_debug.Reset_Indentation;
8385  END IF;
8386 
8387   EXCEPTION
8388     WHEN OKC_API.G_EXCEPTION_ERROR THEN
8389 
8390     IF (l_debug = 'Y') THEN
8391        okc_debug.log('22800: Exiting delete_row:OKC_API.G_EXCEPTION_ERROR Exception', 2);
8392        okc_debug.Reset_Indentation;
8393     END IF;
8394 
8398         G_PKG_NAME,
8395       x_return_status := OKC_API.HANDLE_EXCEPTIONS
8396       (
8397         l_api_name,
8399         'OKC_API.G_RET_STS_ERROR',
8400         x_msg_count,
8401         x_msg_data,
8402         '_PVT'
8403       );
8404     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8405 
8406     IF (l_debug = 'Y') THEN
8407        okc_debug.log('22900: Exiting delete_row:OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception', 2);
8408        okc_debug.Reset_Indentation;
8409     END IF;
8410 
8411       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8412       (
8413         l_api_name,
8414         G_PKG_NAME,
8415         'OKC_API.G_RET_STS_UNEXP_ERROR',
8416         x_msg_count,
8417         x_msg_data,
8418         '_PVT'
8419       );
8420     WHEN OTHERS THEN
8421 
8422     IF (l_debug = 'Y') THEN
8423        okc_debug.log('23000: Exiting delete_row:OTHERS Exception', 2);
8424        okc_debug.Reset_Indentation;
8425     END IF;
8426 
8427       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8428       (
8429         l_api_name,
8430         G_PKG_NAME,
8431         'OTHERS',
8432         x_msg_count,
8433         x_msg_data,
8434         '_PVT'
8435       );
8436 
8437   END delete_row;
8438 
8439 --------------------------------------------
8440 -- force_delete_row for:OKC_K_LINES_V --
8441 --------------------------------------------
8442 PROCEDURE force_delete_row(
8443     p_api_version                  IN NUMBER,
8444     p_init_msg_list                IN VARCHAR2,
8445     x_return_status                OUT NOCOPY VARCHAR2,
8446     x_msg_count                    OUT NOCOPY NUMBER,
8447     x_msg_data                     OUT NOCOPY VARCHAR2,
8448     p_clev_rec                     IN clev_rec_type) IS
8449 
8450     l_api_version                  CONSTANT NUMBER := 1;
8451     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
8452     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8453     l_clev_rec                     clev_rec_type := p_clev_rec;
8454     l_okc_k_lines_tl_rec           okc_k_lines_tl_rec_type;
8455     l_cle_rec                      cle_rec_type;
8456     l_olev_rec                     OKC_OPER_INST_PUB.olev_rec_type;
8457     x_olev_rec                     OKC_OPER_INST_PUB.olev_rec_type;
8458     l_opn_code                     VARCHAR2(30);
8459     l_ste_code                     VARCHAR2(30);
8460 
8461     --
8462     -- Cursor to get operation lines to delete or update
8463     -- id required to delete or update
8464     -- object_version_number required in case of update
8465     -- oie_id to get cop_id in the next cursor to determine
8466     -- whether the instance is renewal or renew consolidation (RENEWAL/REN_CON)
8467     --
8468     Cursor ole_csr Is
8469           SELECT id, object_version_number,oie_id,object_chr_id,active_yn
8470           FROM okc_operation_lines
8471           WHERE subject_cle_id = p_clev_rec.id;
8472 
8473     Cursor cop_csr(p_oie_id NUMBER) Is
8474           SELECT opn_code
8475           FROM okc_class_operations
8476           WHERE id = (SELECT cop_id
8477 		            FROM okc_operation_instances
8478 				  WHERE id = p_oie_id );
8479 
8480   BEGIN
8481 
8482     --------------------------------------
8483     -- Move VIEW record to "Child" records
8484     --------------------------------------
8485     migrate(l_clev_rec, l_okc_k_lines_tl_rec);
8486     migrate(l_clev_rec, l_cle_rec);
8487 
8488     --------------------------------------------
8489     -- Call the DELETE_ROW for each child record
8490     --------------------------------------------
8491     delete_row(
8492       p_init_msg_list,
8493       x_return_status,
8494       x_msg_count,
8495       x_msg_data,
8496       l_okc_k_lines_tl_rec
8497     );
8498     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8499       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8500     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8501       RAISE OKC_API.G_EXCEPTION_ERROR;
8502     END IF;
8503     delete_row(
8504       p_init_msg_list,
8505       x_return_status,
8506       x_msg_count,
8507       x_msg_data,
8508       l_cle_rec
8509     );
8510     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8511       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8512     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8513       RAISE OKC_API.G_EXCEPTION_ERROR;
8514     END IF;
8515 
8516      -- delete all renewal links from operation lines
8517      -- for the current line as subject line
8518 	--
8519 	-- only one record per line in operation lines
8520 	-- loop used for implicit cursor opening
8521 	--
8522 	FOR ole_rec IN ole_csr
8523 	LOOP
8524 	    --
8525 	    -- When a line is deleted, if the line is renewed from a contract
8526 	    -- that contract cannot be considered as renewed
8527 	    -- so, set the date_renewed of that source contract to null
8528 	    --
8529 	    If (ole_rec.active_yn = 'Y') Then
8530                     --npalepu 08-11-2005 modified for bug # 4691662.
8531                     --Replaced table okc_k_headers_b with headers_All_b table
8532                     /* UPDATE okc_k_headers_b */
8533                     UPDATE OKC_K_HEADERS_ALL_B
8534                     --end npalepu
8535 		    SET    date_renewed = null
8536 		    WHERE id = ole_rec.object_chr_id
8537 		    AND date_renewed is not null;
8538          End If;
8539 
8540 	   l_olev_rec.ID := ole_rec.ID;
8541 	   l_olev_rec.OBJECT_VERSION_NUMBER := ole_rec.OBJECT_VERSION_NUMBER;
8542 
8543 	   open cop_csr(ole_rec.OIE_ID);
8544 	   fetch cop_csr into l_opn_code;
8545 	   close cop_csr;
8546 
8547 	   If (l_opn_code = 'RENEWAL') Then
8548 
8552 		    x_return_status 	=> x_return_status,
8549 		 OKC_OPER_INST_PUB.Delete_Operation_Line (
8550 		    p_api_version		=> p_api_version,
8551 		    p_init_msg_list	     => p_init_msg_list,
8553 		    x_msg_count     	=> x_msg_count,
8554 		    x_msg_data      	=> x_msg_data,
8555 		    p_olev_rec		     => l_olev_rec);
8556 
8557 	   Elsif (l_opn_code = 'REN_CON') Then
8558 
8559 		 l_olev_rec.SUBJECT_CLE_ID := NULL;
8560 		 l_olev_rec.PROCESS_FLAG := 'A';
8561 		 l_olev_rec.ACTIVE_YN := 'N';
8562 
8563 		 OKC_OPER_INST_PUB.Update_Operation_Line (
8564 		    p_api_version		=> p_api_version,
8565 		    p_init_msg_list	     => p_init_msg_list,
8566 		    x_return_status 	=> x_return_status,
8567 		    x_msg_count     	=> x_msg_count,
8568 		    x_msg_data      	=> x_msg_data,
8569 		    p_olev_rec		     => l_olev_rec,
8570 		    x_olev_rec           => x_olev_rec);
8571 	   End If;
8572 
8573         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
8574            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
8575         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
8576            RAISE OKC_API.G_EXCEPTION_ERROR;
8577 	   END IF;
8578 	END LOOP;
8579 
8580   EXCEPTION
8581     WHEN OKC_API.G_EXCEPTION_ERROR THEN
8582       x_return_status := OKC_API.HANDLE_EXCEPTIONS
8583       (
8584         l_api_name,
8585         G_PKG_NAME,
8586         'OKC_API.G_RET_STS_ERROR',
8587         x_msg_count,
8588         x_msg_data,
8589         '_PVT'
8590       );
8591     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8592       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8593       (
8594         l_api_name,
8595         G_PKG_NAME,
8596         'OKC_API.G_RET_STS_UNEXP_ERROR',
8597         x_msg_count,
8598         x_msg_data,
8599         '_PVT'
8600       );
8601     WHEN OTHERS THEN
8602       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8603       (
8604         l_api_name,
8605         G_PKG_NAME,
8606         'OTHERS',
8607         x_msg_count,
8608         x_msg_data,
8609         '_PVT'
8610       );
8611 END force_delete_row;
8612 
8613 ---------------------------------------------------
8614 -- PL/SQL TBL force_delete_row for:CLEV_TBL --
8615 ---------------------------------------------------
8616 PROCEDURE force_delete_row(
8617     p_api_version                  IN NUMBER,
8618     p_init_msg_list                IN VARCHAR2,
8619     x_return_status                OUT NOCOPY VARCHAR2,
8620     x_msg_count                    OUT NOCOPY NUMBER,
8621     x_msg_data                     OUT NOCOPY VARCHAR2,
8622     p_clev_tbl                     IN clev_tbl_type) IS
8623 
8624     l_api_version                 CONSTANT NUMBER := 1;
8625     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
8626     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8627     l_overall_status               VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
8628     i                              NUMBER := 0;
8629   BEGIN
8630     OKC_API.init_msg_list(p_init_msg_list);
8631     -- Make sure PL/SQL table has records in it before passing
8632     IF (p_clev_tbl.COUNT > 0) THEN
8633       i := p_clev_tbl.FIRST;
8634       LOOP
8635         force_delete_row (
8636           p_api_version                  => p_api_version,
8637           p_init_msg_list                => OKC_API.G_FALSE,
8638           x_return_status                => x_return_status,
8639           x_msg_count                    => x_msg_count,
8640           x_msg_data                     => x_msg_data,
8641           p_clev_rec                     => p_clev_tbl(i));
8642 
8643 		-- store the highest degree of error
8647 		   End If;
8644 		If x_return_status <> OKC_API.G_RET_STS_SUCCESS Then
8645 		   If l_overall_status <> OKC_API.G_RET_STS_UNEXP_ERROR Then
8646 			 l_overall_status := x_return_status;
8648 		End If;
8649 
8650         EXIT WHEN (i = p_clev_tbl.LAST);
8651         i := p_clev_tbl.NEXT(i);
8652       END LOOP;
8653 	 -- return overall status
8654 	 x_return_status := l_overall_status;
8655     END IF;
8656   EXCEPTION
8657     WHEN OKC_API.G_EXCEPTION_ERROR THEN
8658       x_return_status := OKC_API.HANDLE_EXCEPTIONS
8659       (
8660         l_api_name,
8661         G_PKG_NAME,
8662         'OKC_API.G_RET_STS_ERROR',
8663         x_msg_count,
8664         x_msg_data,
8665         '_PVT'
8666       );
8667     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8668       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8669       (
8670         l_api_name,
8671         G_PKG_NAME,
8672         'OKC_API.G_RET_STS_UNEXP_ERROR',
8673         x_msg_count,
8674         x_msg_data,
8675         '_PVT'
8676       );
8677     WHEN OTHERS THEN
8678       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
8679       (
8680         l_api_name,
8681         G_PKG_NAME,
8682         'OTHERS',
8683         x_msg_count,
8684         x_msg_data,
8685         '_PVT'
8686       );
8687 END force_delete_row;
8688 
8689 ---------------------------------------------------------------
8690 -- Procedure for mass insert in OKC_K_LINES _B and TL tables
8691 ---------------------------------------------------------------
8692 PROCEDURE INSERT_ROW_UPG(x_return_status OUT NOCOPY VARCHAR2, p_clev_tbl clev_tbl_type) IS
8693   l_tabsize NUMBER := p_clev_tbl.COUNT;
8694   l_source_lang VARCHAR2(12) := okc_util.get_userenv_lang;
8695 
8696   in_id                            OKC_DATATYPES.NumberTabTyp;
8697   in_object_version_number         OKC_DATATYPES.NumberTabTyp;
8698   in_sfwt_flag                     OKC_DATATYPES.Var3TabTyp;
8699   in_chr_id                        OKC_DATATYPES.NumberTabTyp;
8700   in_cle_id                        OKC_DATATYPES.NumberTabTyp;
8701   in_lse_id                        OKC_DATATYPES.NumberTabTyp;
8702   in_line_number                   OKC_DATATYPES.Var150TabTyp;
8703   in_sts_code                      OKC_DATATYPES.Var30TabTyp;
8704   in_display_sequence              OKC_DATATYPES.NumberTabTyp;
8705   in_trn_code                      OKC_DATATYPES.Var30TabTyp;
8706   in_dnz_chr_id                    OKC_DATATYPES.NumberTabTyp;
8707   in_comments                      OKC_DATATYPES.Var1995TabTyp;
8708   in_item_description              OKC_DATATYPES.Var1995TabTyp;
8709   in_oke_boe_description           OKC_DATATYPES.Var1995TabTyp;
8710   in_cognomen                      OKC_DATATYPES.Var300TabTyp;
8711   in_hidden_ind                    OKC_DATATYPES.Var3TabTyp;
8712   in_price_unit                    OKC_DATATYPES.NumberTabTyp;
8713   in_price_unit_percent            OKC_DATATYPES.NumberTabTyp;
8714   in_price_negotiated              OKC_DATATYPES.NumberTabTyp;
8715   in_price_negotiated_renewed      OKC_DATATYPES.NumberTabTyp;
8716   in_price_level_ind               OKC_DATATYPES.Var3TabTyp;
8717   in_invoice_line_level_ind        OKC_DATATYPES.Var3TabTyp;
8718   in_dpas_rating                   OKC_DATATYPES.Var24TabTyp;
8719   in_block23text                   OKC_DATATYPES.Var1995TabTyp;
8720   in_exception_yn                  OKC_DATATYPES.Var3TabTyp;
8721   in_template_used                 OKC_DATATYPES.Var150TabTyp;
8722   in_date_terminated               OKC_DATATYPES.DateTabTyp;
8723   in_name                          OKC_DATATYPES.Var150TabTyp;
8724   in_start_date                    OKC_DATATYPES.DateTabTyp;
8725   in_end_date                      OKC_DATATYPES.DateTabTyp;
8726   in_date_renewed                  OKC_DATATYPES.DateTabTyp;
8727   in_upg_orig_system_ref           OKC_DATATYPES.Var75TabTyp;
8728   in_upg_orig_system_ref_id        OKC_DATATYPES.NumberTabTyp;
8729   in_orig_system_source_code       OKC_DATATYPES.Var30TabTyp;
8730   in_orig_system_id1               OKC_DATATYPES.NumberTabTyp;
8731   in_orig_system_reference1        OKC_DATATYPES.Var30TabTyp;
8732   in_request_id                    OKC_DATATYPES.NumberTabTyp;
8733   in_program_application_id        OKC_DATATYPES.NumberTabTyp;
8734   in_program_id                    OKC_DATATYPES.NumberTabTyp;
8735   in_program_update_date           OKC_DATATYPES.DateTabTyp;
8736   in_price_list_id                 OKC_DATATYPES.NumberTabTyp;
8737   in_pricing_date                  OKC_DATATYPES.DateTabTyp;
8738   in_price_list_line_id            OKC_DATATYPES.NumberTabTyp;
8739   in_line_list_price               OKC_DATATYPES.NumberTabTyp;
8740   in_item_to_price_yn              OKC_DATATYPES.Var3TabTyp;
8741   in_price_basis_yn                OKC_DATATYPES.Var3TabTyp;
8742   in_config_header_id              OKC_DATATYPES.NumberTabTyp;
8743   in_config_revision_number        OKC_DATATYPES.NumberTabTyp;
8744   in_config_complete_yn            OKC_DATATYPES.Var3TabTyp;
8745   in_config_valid_yn               OKC_DATATYPES.Var3TabTyp;
8746   in_config_top_model_line_id      OKC_DATATYPES.NumberTabTyp;
8747   in_config_item_type              OKC_DATATYPES.Var30TabTyp;
8748 ---Bug.No.-1942374
8749   in_config_item_id                OKC_DATATYPES.NumberTabTyp;
8750 ---Bug.No.-1942374
8751   in_attribute_category            OKC_DATATYPES.Var90TabTyp;
8752   in_attribute1                    OKC_DATATYPES.Var450TabTyp;
8753   in_attribute2                    OKC_DATATYPES.Var450TabTyp;
8754   in_attribute3                    OKC_DATATYPES.Var450TabTyp;
8755   in_attribute4                    OKC_DATATYPES.Var450TabTyp;
8756   in_attribute5                    OKC_DATATYPES.Var450TabTyp;
8757   in_attribute6                    OKC_DATATYPES.Var450TabTyp;
8758   in_attribute7                    OKC_DATATYPES.Var450TabTyp;
8759   in_attribute8                    OKC_DATATYPES.Var450TabTyp;
8763   in_attribute12                   OKC_DATATYPES.Var450TabTyp;
8760   in_attribute9                    OKC_DATATYPES.Var450TabTyp;
8761   in_attribute10                   OKC_DATATYPES.Var450TabTyp;
8762   in_attribute11                   OKC_DATATYPES.Var450TabTyp;
8764   in_attribute13                   OKC_DATATYPES.Var450TabTyp;
8765   in_attribute14                   OKC_DATATYPES.Var450TabTyp;
8766   in_attribute15                   OKC_DATATYPES.Var450TabTyp;
8767   in_created_by                    OKC_DATATYPES.NumberTabTyp;
8768   in_creation_date                 OKC_DATATYPES.DateTabTyp;
8769   in_last_updated_by               OKC_DATATYPES.NumberTabTyp;
8770   in_last_update_date              OKC_DATATYPES.DateTabTyp;
8771   in_last_update_login             OKC_DATATYPES.NumberTabTyp;
8772   in_price_type                    OKC_DATATYPES.Var30TabTyp;
8773   in_currency_code                 OKC_DATATYPES.Var15TabTyp;
8774   in_currency_code_renewed         OKC_DATATYPES.Var15TabTyp;
8775   i                                NUMBER := p_clev_tbl.FIRST;
8776   j                                NUMBER := 0;
8777   in_service_item_yn               OKC_DATATYPES.Var3TabTyp;
8778                       --new columns for price hold
8779   in_ph_pricing_type               OKC_DATATYPES.Var30TabTyp;
8780   in_ph_price_break_basis          OKC_DATATYPES.Var30TabTyp;
8781   in_ph_min_qty                    OKC_DATATYPES.NumberTabTyp;
8782   in_ph_min_amt                    OKC_DATATYPES.NumberTabTyp;
8783   in_ph_qp_reference_id            OKC_DATATYPES.NumberTabTyp;
8784   in_ph_value                      OKC_DATATYPES.NumberTabTyp;
8785   in_ph_enforce_price_list_yn      OKC_DATATYPES.Var3TabTyp;
8786   in_ph_adjustment                 OKC_DATATYPES.NumberTabTyp;
8787   in_ph_integrated_with_qp         OKC_DATATYPES.Var3TabTyp;
8788 --new columns to replace rules
8789   in_cust_acct_id                  OKC_DATATYPES.Number15TabTyp;
8790   in_bill_to_site_use_id           OKC_DATATYPES.Number15TabTyp;
8791   in_inv_rule_id                   OKC_DATATYPES.Number15TabTyp;
8792   in_line_renewal_type_code        OKC_DATATYPES.Var30TabTyp;
8793   in_ship_to_site_use_id           OKC_DATATYPES.Number15TabTyp;
8794   in_payment_term_id               OKC_DATATYPES.Number15TabTyp;
8795   in_payment_instruction_type      OKC_DATATYPES.Var3TabTyp; --added by mchoudha 22-JUL
8796 
8797 /*** R12 Data Model Changes  27072005 ***/
8798     in_annualized_factor           OKC_DATATYPES.NumberTabTyp;
8799     -- Line level Cancellation --
8800     in_date_cancelled		   OKC_DATATYPES.DateTabTyp;
8801    -- in_canc_reason_code		   OKC_DATATYPES.Var30TabTyp;
8802     in_term_cancel_source	   OKC_DATATYPES.Var30TabTyp;
8803     in_cancelled_amount		   OKC_DATATYPES.NumberTabTyp;
8804 
8805 /*** R12 Data Model Changes  27072005 ***/
8806 
8807 
8808 BEGIN
8809     -- Initializing return status
8810     x_return_status := OKC_API.G_RET_STS_SUCCESS;
8811     IF (l_debug = 'Y') THEN
8812        okc_debug.Set_Indentation('OKC_CLE_PVT');
8813        okc_debug.log('23100: Entered INSERT_ROW_UPG', 2);
8814     END IF;
8815 
8816    -- pkoganti   08/26/2000
8817    -- replace for loop with while loop to handle
8818    -- gaps in pl/sql table indexes.
8819    -- Example:
8820    --   consider a pl/sql table(A) with the following elements
8821    --   A(1) = 10
8822    --   A(2) = 20
8823    --   A(6) = 30
8824    --   A(7) = 40
8825    --
8826    -- The for loop was erroring for indexes 3,4,5, the while loop
8827    -- along with the NEXT operator would handle the missing indexes
8828    -- with out causing the API to fail.
8829    --
8830 
8831   WHILE i IS NOT NULL
8832   LOOP
8833     j                               := j + 1;
8834 
8835     in_id                       (j) := p_clev_tbl(i).id;
8836     in_object_version_number    (j) := p_clev_tbl(i).object_version_number;
8837     in_sfwt_flag                (j) := p_clev_tbl(i).sfwt_flag;
8838     in_chr_id                   (j) := p_clev_tbl(i).chr_id;
8839     in_cle_id                   (j) := p_clev_tbl(i).cle_id;
8840     in_lse_id                   (j) := p_clev_tbl(i).lse_id;
8841     in_line_number              (j) := p_clev_tbl(i).line_number;
8842     in_sts_code                 (j) := p_clev_tbl(i).sts_code;
8843     in_display_sequence         (j) := p_clev_tbl(i).display_sequence;
8844     in_trn_code                 (j) := p_clev_tbl(i).trn_code;
8845     in_dnz_chr_id               (j) := p_clev_tbl(i).dnz_chr_id;
8846     in_comments                 (j) := p_clev_tbl(i).comments;
8847     in_item_description         (j) := p_clev_tbl(i).item_description;
8848     in_oke_boe_description      (j) := p_clev_tbl(i).oke_boe_description;
8849     in_cognomen                 (j) := p_clev_tbl(i).cognomen;
8850     in_hidden_ind               (j) := p_clev_tbl(i).hidden_ind;
8851     in_price_unit               (j) := p_clev_tbl(i).price_unit;
8852     in_price_unit_percent       (j) := p_clev_tbl(i).price_unit_percent;
8853     in_price_negotiated         (j) := p_clev_tbl(i).price_negotiated;
8854     in_price_negotiated_renewed (j) := p_clev_tbl(i).price_negotiated_renewed;
8855     in_price_level_ind          (j) := p_clev_tbl(i).price_level_ind;
8856     in_invoice_line_level_ind   (j) := p_clev_tbl(i).invoice_line_level_ind;
8857     in_dpas_rating              (j) := p_clev_tbl(i).dpas_rating;
8858     in_block23text              (j) := p_clev_tbl(i).block23text;
8859     in_exception_yn             (j) := p_clev_tbl(i).exception_yn;
8860     in_template_used            (j) := p_clev_tbl(i).template_used;
8861     in_date_terminated          (j) := p_clev_tbl(i).date_terminated;
8862     in_name                     (j) := p_clev_tbl(i).name;
8863     in_start_date               (j) := p_clev_tbl(i).start_date;
8864     in_end_date                 (j) := p_clev_tbl(i).end_date;
8865     in_date_renewed             (j) := p_clev_tbl(i).date_renewed;
8869     in_orig_system_id1          (j) := p_clev_tbl(i).orig_system_id1;
8866     in_upg_orig_system_ref      (j) := p_clev_tbl(i).upg_orig_system_ref;
8867     in_upg_orig_system_ref_id   (j) := p_clev_tbl(i).upg_orig_system_ref_id;
8868     in_orig_system_source_code  (j) := p_clev_tbl(i).orig_system_source_code;
8870     in_orig_system_reference1   (j) := p_clev_tbl(i).orig_system_reference1;
8871     in_request_id 	        (j) := p_clev_tbl(i).request_id;
8872     in_program_application_id 	(j) := p_clev_tbl(i).program_application_id;
8873     in_program_id 	        (j) := p_clev_tbl(i).program_id;
8874     in_program_update_date 	(j) := p_clev_tbl(i).program_update_date;
8875     in_price_list_id 	        (j) := p_clev_tbl(i).price_list_id;
8876     in_pricing_date 	        (j) := p_clev_tbl(i).pricing_date;
8877     in_price_list_line_id 	(j) := p_clev_tbl(i).price_list_line_id;
8878     in_line_list_price 	        (j) := p_clev_tbl(i).line_list_price;
8879     in_item_to_price_yn 	(j) := p_clev_tbl(i).item_to_price_yn;
8880     in_price_basis_yn 	        (j) := p_clev_tbl(i).price_basis_yn;
8881     in_config_header_id 	(j) := p_clev_tbl(i).config_header_id;
8882     in_config_revision_number 	(j) := p_clev_tbl(i).config_revision_number;
8883     in_config_complete_yn 	(j) := p_clev_tbl(i).config_complete_yn;
8884     in_config_valid_yn 	        (j) := p_clev_tbl(i).config_valid_yn;
8885     in_config_top_model_line_id (j) := p_clev_tbl(i).config_top_model_line_id;
8886     in_config_item_type	        (j) := p_clev_tbl(i).config_item_type;
8887 ---Bug.No.-1942374
8888     in_CONFIG_ITEM_ID	        (j) := p_clev_tbl(i).CONFIG_ITEM_ID;
8889 ---Bug.No.-1942374
8890     in_attribute_category       (j) := p_clev_tbl(i).attribute_category;
8891     in_attribute1               (j) := p_clev_tbl(i).attribute1;
8892     in_attribute2               (j) := p_clev_tbl(i).attribute2;
8893     in_attribute3               (j) := p_clev_tbl(i).attribute3;
8894     in_attribute4               (j) := p_clev_tbl(i).attribute4;
8895     in_attribute5               (j) := p_clev_tbl(i).attribute5;
8896     in_attribute6               (j) := p_clev_tbl(i).attribute6;
8897     in_attribute7               (j) := p_clev_tbl(i).attribute7;
8898     in_attribute8               (j) := p_clev_tbl(i).attribute8;
8899     in_attribute9               (j) := p_clev_tbl(i).attribute9;
8900     in_attribute10              (j) := p_clev_tbl(i).attribute10;
8901     in_attribute11              (j) := p_clev_tbl(i).attribute11;
8902     in_attribute12              (j) := p_clev_tbl(i).attribute12;
8903     in_attribute13              (j) := p_clev_tbl(i).attribute13;
8904     in_attribute14              (j) := p_clev_tbl(i).attribute14;
8905     in_attribute15              (j) := p_clev_tbl(i).attribute15;
8906     in_created_by               (j) := p_clev_tbl(i).created_by;
8907     in_creation_date            (j) := p_clev_tbl(i).creation_date;
8908     in_last_updated_by          (j) := p_clev_tbl(i).last_updated_by;
8909     in_last_update_date         (j) := p_clev_tbl(i).last_update_date;
8910     in_last_update_login        (j) := p_clev_tbl(i).last_update_login;
8911     in_price_type               (j) := p_clev_tbl(i).price_type;
8912     in_currency_code            (j) := p_clev_tbl(i).currency_code;
8913     in_currency_code_renewed    (j) := p_clev_tbl(i).currency_code_renewed;
8914     in_service_item_yn          (j) := p_clev_tbl(i).service_item_yn;
8915                       --new columns for price hold
8916     in_ph_pricing_type          (j) := p_clev_tbl(i).ph_pricing_type;
8917     in_ph_price_break_basis     (j) := p_clev_tbl(i).ph_price_break_basis;
8918     in_ph_min_qty               (j) := p_clev_tbl(i).ph_min_qty;
8919     in_ph_min_amt               (j) := p_clev_tbl(i).ph_min_amt;
8920     in_ph_qp_reference_id       (j) := p_clev_tbl(i).ph_qp_reference_id;
8921     in_ph_value                 (j) := p_clev_tbl(i).ph_value;
8922     in_ph_enforce_price_list_yn (j) := p_clev_tbl(i).ph_enforce_price_list_yn;
8923     in_ph_adjustment            (j) := p_clev_tbl(i).ph_adjustment;
8924     in_ph_integrated_with_qp    (j) := p_clev_tbl(i).ph_integrated_with_qp;
8925 -- new columns to replave rules
8926     in_cust_acct_id             (j) := p_clev_tbl(i).cust_acct_id;
8927     in_bill_to_site_use_id      (j) := p_clev_tbl(i).bill_to_site_use_id;
8928     in_inv_rule_id              (j) := p_clev_tbl(i).inv_rule_id;
8929     in_line_renewal_type_code   (j) := p_clev_tbl(i).line_renewal_type_code;
8930     in_ship_to_site_use_id      (j) := p_clev_tbl(i).ship_to_site_use_id;
8931     in_payment_term_id          (j) := p_clev_tbl(i).payment_term_id;
8932     in_payment_instruction_type (j) := p_clev_tbl(i).payment_instruction_type; --added by mchoudha 22-JUL
8933     /*** R12 Data Model Changes  27072005 ***/
8934     in_annualized_factor           (j) := p_clev_tbl(i).annualized_factor;
8935     -- Line level Cancellation --
8936     in_date_cancelled		   (j) := p_clev_tbl(i).date_cancelled;
8937     --in_canc_reason_code		   (j) := p_clev_tbl(i).canc_reason_code;
8938     in_term_cancel_source	   (j) := p_clev_tbl(i).term_cancel_source;
8939     in_cancelled_amount	   (j) := p_clev_tbl(i).cancelled_amount;
8940 
8941 /*** R12 Data Model Changes  27072005 ***/
8942     i                               := p_clev_tbl.NEXT(i);
8943   END LOOP;
8944 
8945   FORALL i in 1..l_tabsize
8946     INSERT
8947       INTO OKC_K_LINES_B
8948       (
8949         id,
8950         line_number,
8951         chr_id,
8952         cle_id,
8953         dnz_chr_id,
8954         display_sequence,
8955         sts_code,
8956         trn_code,
8957         lse_id,
8958         exception_yn,
8959         object_version_number,
8960         created_by,
8961         creation_date,
8962         last_updated_by,
8963         last_update_date,
8964         hidden_ind,
8965         price_negotiated,
8966         price_level_ind,
8967         price_unit,
8968         price_unit_percent,
8969         invoice_line_level_ind,
8970         dpas_rating,
8971         template_used,
8972         price_type,
8976         start_date,
8973         currency_code,
8974         last_update_login,
8975         date_terminated,
8977         end_date,
8978         date_renewed,
8979         upg_orig_system_ref,
8980         upg_orig_system_ref_id,
8981         orig_system_source_code,
8982         orig_system_id1,
8983         orig_system_reference1,
8984         request_id,
8985         program_application_id,
8986         program_id,
8987         program_update_date,
8988         price_list_id,
8989         pricing_date,
8990         price_list_line_id,
8991         line_list_price,
8992         item_to_price_yn,
8993         price_basis_yn,
8994         config_header_id,
8995         config_revision_number,
8996         config_complete_yn,
8997         config_valid_yn,
8998         config_top_model_line_id,
8999         config_item_type,
9000 ---Bug.No.-1942374
9001         config_item_id,
9002 ---Bug.No.-1942374
9003         attribute_category,
9004         attribute1,
9005         attribute2,
9006         attribute3,
9007         attribute4,
9008         attribute5,
9009         attribute6,
9010         attribute7,
9011         attribute8,
9012         attribute9,
9013         attribute10,
9014         attribute11,
9015         attribute12,
9016         attribute13,
9017         attribute14,
9018         attribute15,
9019         currency_code_renewed,
9020         price_negotiated_renewed,
9021         service_item_yn,
9022                       --new columns for price hold
9023         ph_pricing_type,
9024         ph_price_break_basis,
9025         ph_min_qty,
9026         ph_min_amt,
9027         ph_qp_reference_id,
9028         ph_value,
9029         ph_enforce_price_list_yn,
9030         ph_adjustment,
9031         ph_integrated_with_qp,
9032 -- new columns to replace rules
9033         cust_acct_id,
9034         bill_to_site_use_id,
9035         inv_rule_id,
9036         line_renewal_type_code,
9037         ship_to_site_use_id,
9038         payment_term_id,
9039         payment_instruction_type,   --added by mchoudha 22-JUL
9040 /*** R12 data model Changes 27072005 to be checked Start***/
9041        annualized_factor             ,
9042     -- Line level Cancellation --
9043        date_cancelled		  ,
9044        --canc_reason_code		  ,
9045        term_cancel_source		,
9046        cancelled_amount
9047 /*** R12 data model Changes 27072005 to be checked End***/
9048      )
9049      VALUES (
9050         in_id(i),
9051         in_line_number(i),
9052         in_chr_id(i),
9053         in_cle_id(i),
9054         in_dnz_chr_id(i),
9055         in_display_sequence(i),
9056         in_sts_code(i),
9057         in_trn_code(i),
9058         in_lse_id(i),
9059         in_exception_yn(i),
9060         in_object_version_number(i),
9061         in_created_by(i),
9062         in_creation_date(i),
9063         in_last_updated_by(i),
9064         in_last_update_date(i),
9065         in_hidden_ind(i),
9066         in_price_negotiated(i),
9067         in_price_level_ind(i),
9068         in_price_unit(i),
9069         in_price_unit_percent(i),
9070         in_invoice_line_level_ind(i),
9071         in_dpas_rating(i),
9072         in_template_used(i),
9073         in_price_type(i),
9074         in_currency_code(i),
9075         in_last_update_login(i),
9076         in_date_terminated(i),
9077         in_start_date(i),
9078         in_end_date(i),
9079         in_date_renewed(i),
9080         in_upg_orig_system_ref(i),
9081         in_upg_orig_system_ref_id(i),
9082         in_orig_system_source_code(i),
9083         in_orig_system_id1(i),
9084         in_orig_system_reference1(i),
9085         in_request_id(i),
9086         in_program_application_id(i),
9087         in_program_id(i),
9088         in_program_update_date(i),
9089         in_price_list_id(i),
9090         in_pricing_date(i),
9091         in_price_list_line_id(i),
9092         in_line_list_price(i),
9093         in_item_to_price_yn(i),
9094         in_price_basis_yn(i),
9095         in_config_header_id(i),
9096         in_config_revision_number(i),
9097         in_config_complete_yn(i),
9098         in_config_valid_yn(i),
9099         in_config_top_model_line_id(i),
9100         in_config_item_type(i),
9101 ---Bug.No.-1942374
9102         in_config_item_id(i),
9103 ---Bug.No.-1942374
9104         in_attribute_category(i),
9105         in_attribute1(i),
9106         in_attribute2(i),
9107         in_attribute3(i),
9108         in_attribute4(i),
9109         in_attribute5(i),
9110         in_attribute6(i),
9111         in_attribute7(i),
9112         in_attribute8(i),
9113         in_attribute9(i),
9114         in_attribute10(i),
9115         in_attribute11(i),
9116         in_attribute12(i),
9117         in_attribute13(i),
9118         in_attribute14(i),
9119         in_attribute15(i),
9120         in_currency_code_renewed(i),
9121         in_price_negotiated_renewed(i),
9122         in_service_item_yn(i),
9123 --new columns for price hold
9124 
9125         in_ph_pricing_type(i),
9126         in_ph_price_break_basis(i),
9127         in_ph_min_qty(i),
9128         in_ph_min_amt(i),
9129         in_ph_qp_reference_id(i),
9130         in_ph_value(i),
9131         in_ph_enforce_price_list_yn(i),
9132         in_ph_adjustment(i),
9133         in_ph_integrated_with_qp(i),
9134 
9135  --new columns to replace rules
9136         in_cust_acct_id(i),
9137         in_bill_to_site_use_id(i),
9138         in_inv_rule_id(i),
9139         in_line_renewal_type_code (i),
9140         in_ship_to_site_use_id(i),
9144         in_annualized_factor(i)             ,
9141         in_payment_term_id(i)  ,
9142         in_payment_instruction_type(i) ,  --added by mchoudha 22-JUL
9143 /*** R12 data model Changes 27072005 to be checked Start***/
9145         -- Line level Cancellation --
9146         in_date_cancelled(i)		  ,
9147         --in_canc_reason_code(i)		  ,
9148         in_term_cancel_source(i)		,
9149 	in_cancelled_amount(i)
9150 /*** R12 data model Changes 27072005 to be checked End***/
9151      );
9152 
9153   FOR lang_i IN OKC_UTIL.g_language_code.FIRST..OKC_UTIL.g_language_code.LAST LOOP
9154     FORALL i in 1..l_tabsize
9155       INSERT INTO OKC_K_LINES_TL(
9156         id,
9157         language,
9158         source_lang,
9159         sfwt_flag,
9160         name,
9161         comments,
9162         item_description,
9163 	oke_boe_description,
9164 	cognomen,
9165         block23text,
9166         created_by,
9167         creation_date,
9168         last_updated_by,
9169         last_update_date,
9170         last_update_login
9171      )
9172      VALUES (
9173         in_id(i),
9174         OKC_UTIL.g_language_code(lang_i),
9175         l_source_lang,
9176         in_sfwt_flag(i),
9177         in_name(i),
9178         in_comments(i),
9179         in_item_description(i),
9180         in_oke_boe_description(i),
9181         in_cognomen(i),
9182         in_block23text(i),
9183         in_created_by(i),
9184         in_creation_date(i),
9185         in_last_updated_by(i),
9186         in_last_update_date(i),
9187         in_last_update_login(i)
9188       );
9189       END LOOP;
9190 
9191 IF (l_debug = 'Y') THEN
9192    okc_debug.log('23200: Leaving INSERT_ROW_UPG', 2);
9193    okc_debug.Reset_Indentation;
9194 END IF;
9195 
9196 EXCEPTION
9197   WHEN OTHERS THEN
9198 
9199     IF (l_debug = 'Y') THEN
9200        okc_debug.log('23300: Exiting INSERT_ROW_UPG:OTHERS Exception', 2);
9201        okc_debug.Reset_Indentation;
9202     END IF;
9203 
9204     -- store SQL error message on message stack
9205     OKC_API.SET_MESSAGE(
9206       p_app_name        => G_APP_NAME,
9207       p_msg_name        => G_UNEXPECTED_ERROR,
9208       p_token1          => G_SQLCODE_TOKEN,
9209       p_token1_value    => SQLCODE,
9210       p_token2          => G_SQLERRM_TOKEN,
9211       p_token2_value    => SQLERRM);
9212     -- notify caller of an error as UNEXPETED error
9213     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
9214 
9215    --RAISE;
9216 END INSERT_ROW_UPG;
9217 
9218 --This function is called from versioning API OKC_VERSION_PVT
9219 --Old Location: OKCRVERB.pls
9220 --New Location: Base Table API
9221 
9222 FUNCTION create_version(
9223              p_chr_id         IN NUMBER,
9224              p_major_version  IN NUMBER
9225            ) RETURN VARCHAR2 IS
9226 
9227   l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS;
9228 
9229 BEGIN
9230 
9231     IF (l_debug = 'Y') THEN
9232        okc_debug.Set_Indentation('OKC_CLE_PVT');
9233        okc_debug.log('23400: Entered create_version', 2);
9234     END IF;
9235 
9236 INSERT INTO okc_k_lines_bh
9237   (
9238       major_version,
9239       id,
9240       line_number,
9241       chr_id,
9242       cle_id,
9243       dnz_chr_id,
9244       display_sequence,
9245       sts_code,
9246       trn_code,
9247       lse_id,
9248       exception_yn,
9249       object_version_number,
9250       created_by,
9251       creation_date,
9252       last_updated_by,
9253       last_update_date,
9254       hidden_ind,
9255       price_negotiated,
9256       price_level_ind,
9257       price_unit,
9258       price_unit_percent,
9259       invoice_line_level_ind,
9260       dpas_rating,
9261       template_used,
9262       price_type,
9263       --uom_code,
9264       currency_code,
9265       last_update_login,
9266       date_terminated,
9267       start_date,
9268       end_date,
9269       date_renewed,
9270       orig_system_source_code,
9271       orig_system_id1,
9272       orig_system_reference1,
9273       upg_orig_system_ref,
9274       upg_orig_system_ref_id,
9275       request_id,
9276       program_application_id,
9277       program_id,
9278       program_update_date,
9279       price_list_id,
9280       pricing_date,
9281       price_list_line_id,
9282       line_list_price,
9283       item_to_price_yn,
9284       price_basis_yn,
9285       config_header_id,
9286       config_revision_number,
9287       config_complete_yn,
9288       config_valid_yn,
9289       config_top_model_line_id,
9290       config_item_type,
9291 ---Bug.No.-1942374
9292       config_item_id,
9293 ---Bug.No.-1942374
9294       attribute_category,
9295       attribute1,
9296       attribute2,
9297       attribute3,
9298       attribute4,
9299       attribute5,
9300       attribute6,
9301       attribute7,
9302       attribute8,
9303       attribute9,
9304       attribute10,
9305       attribute11,
9306       attribute12,
9307       attribute13,
9308       attribute14,
9309       attribute15,
9310       currency_code_renewed,
9311       price_negotiated_renewed,
9312       service_item_yn,
9313                       --new columns for price hold
9314       ph_pricing_type,
9315       ph_price_break_basis,
9316       ph_min_qty,
9317       ph_min_amt,
9318       ph_qp_reference_id,
9319       ph_value,
9320       ph_enforce_price_list_yn,
9321       ph_adjustment,
9322       ph_integrated_with_qp,
9323  -- new columns to replace rules
9327       line_renewal_type_code,
9324       cust_acct_id,
9325       bill_to_site_use_id,
9326       inv_rule_id,
9328       ship_to_site_use_id,
9329       payment_term_id,
9330       date_cancelled, -- added as part of LLC
9331       --canc_reason_code,
9332       term_cancel_source,
9333       cancelled_amount,
9334       payment_instruction_type, --added by mchoudha 22-JUL
9335       annualized_factor    --Added by npalepu 26-JUL
9336 )
9337   SELECT
9338       p_major_version,
9339       id,
9340       line_number,
9341       chr_id,
9342       cle_id,
9343       dnz_chr_id,
9344       display_sequence,
9345       sts_code,
9346       trn_code,
9347       lse_id,
9348       exception_yn,
9349       object_version_number,
9350       created_by,
9351       creation_date,
9352       last_updated_by,
9353       last_update_date,
9354       hidden_ind,
9355       price_negotiated,
9356       price_level_ind,
9357       price_unit,
9358       price_unit_percent,
9359       invoice_line_level_ind,
9360       dpas_rating,
9361       template_used,
9362       price_type,
9363       --uom_code,
9364       currency_code,
9365       last_update_login,
9366       date_terminated,
9367       start_date,
9368       end_date,
9369       date_renewed,
9370       orig_system_source_code,
9371       orig_system_id1,
9372       orig_system_reference1,
9373       upg_orig_system_ref,
9374       upg_orig_system_ref_id,
9375       request_id,
9376       program_application_id,
9377       program_id,
9378       program_update_date,
9379       price_list_id,
9380       pricing_date,
9381       price_list_line_id,
9382       line_list_price,
9383       item_to_price_yn,
9384       price_basis_yn,
9385       config_header_id,
9386       config_revision_number,
9387       config_complete_yn,
9388       config_valid_yn,
9389       config_top_model_line_id,
9390       config_item_type,
9391 ---Bug.No.-1942374
9392       config_item_id,
9393 ---Bug.No.-1942374
9394       attribute_category,
9395       attribute1,
9396       attribute2,
9397       attribute3,
9398       attribute4,
9399       attribute5,
9400       attribute6,
9401       attribute7,
9402       attribute8,
9403       attribute9,
9404       attribute10,
9405       attribute11,
9406       attribute12,
9407       attribute13,
9408       attribute14,
9409       attribute15,
9410       currency_code_renewed,
9411       price_negotiated_renewed,
9412       service_item_yn,
9413                       --new columns for price hold
9414       ph_pricing_type,
9415       ph_price_break_basis,
9416       ph_min_qty,
9417       ph_min_amt,
9418       ph_qp_reference_id,
9419       ph_value,
9420       ph_enforce_price_list_yn,
9421       ph_adjustment,
9422       ph_integrated_with_qp,
9423 --new columns to replace rules
9424       cust_acct_id,
9425       bill_to_site_use_id,
9426       inv_rule_id,
9427       line_renewal_type_code,
9428       ship_to_site_use_id,
9429       payment_term_id,
9430       date_cancelled,  -- Added as part of LLC
9431       --canc_reason_code,
9432       term_cancel_source,
9433       cancelled_amount,
9434       payment_instruction_type, --Added by mchoudha 22-JUL
9435       annualized_factor   --Added by npalepu 26-JUL
9436   FROM okc_k_lines_b
9437  WHERE dnz_chr_id = p_chr_id;
9438 
9439 ----------------------------------
9440 -- Version TL Table
9441 ----------------------------------
9442 
9443 INSERT INTO okc_k_lines_tlh
9444   (
9445       major_version,
9446       id,
9447       language,
9448       source_lang,
9449       sfwt_flag,
9450       name,
9451       comments,
9452       item_description,
9453       oke_boe_description,
9454       cognomen,
9455       block23text,
9456       created_by,
9457       creation_date,
9458       last_updated_by,
9459       last_update_date,
9460       last_update_login
9461 )
9462   SELECT
9463       p_major_version,
9464       id,
9465       language,
9466       source_lang,
9467       sfwt_flag,
9468       name,
9469       comments,
9470       item_description,
9471       oke_boe_description,
9472       cognomen,
9473       block23text,
9474       created_by,
9475       creation_date,
9476       last_updated_by,
9477       last_update_date,
9478       last_update_login
9479   FROM okc_k_lines_tl
9480 WHERE id in (select id
9481 		   from okc_k_lines_b
9482 		   where dnz_chr_id = p_chr_id);
9483 
9484 IF (l_debug = 'Y') THEN
9485    okc_debug.log('23500: Exiting create_version', 2);
9486    okc_debug.Reset_Indentation;
9487 END IF;
9488 
9489 RETURN l_return_status;
9490 
9491   EXCEPTION
9492        -- other appropriate handlers
9493     WHEN OTHERS THEN
9494 
9495     IF (l_debug = 'Y') THEN
9496        okc_debug.log('23600: Exiting create_version:OTHERS Exception', 2);
9497        okc_debug.Reset_Indentation;
9498     END IF;
9499 
9500        -- store SQL error message on message stack
9501              OKC_API.SET_MESSAGE(p_app_name     => okc_version_pvt.G_APP_NAME,
9502                                  p_msg_name     => okc_version_pvt.G_UNEXPECTED_ERROR,
9503                                  p_token1       => okc_version_pvt.G_SQLCODE_TOKEN,
9504                                  p_token1_value => sqlcode,
9505                                  p_token2       => okc_version_pvt.G_SQLERRM_TOKEN,
9506                                  p_token2_value => sqlerrm);
9507 
9508        -- notify  UNEXPECTED error
9512 END create_version;
9509              l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
9510              return l_return_status;
9511 
9513 
9514 --This Function is called from Versioning API OKC_VERSION_PVT
9515 --Old Location:OKCRVERB.pls
9516 --New Location:Base Table API
9517 
9518 FUNCTION restore_version(
9519              p_chr_id         IN NUMBER,
9520              p_major_version  IN NUMBER
9521            ) RETURN VARCHAR2 IS
9522 
9523   l_return_status VARCHAR2(1):= OKC_API.G_RET_STS_SUCCESS;
9524 
9525 BEGIN
9526 
9527     IF (l_debug = 'Y') THEN
9528        okc_debug.Set_Indentation('OKC_CLE_PVT');
9529        okc_debug.log('23700: Entered restore_version', 2);
9530     END IF;
9531 
9532 INSERT INTO okc_k_lines_tl
9533   (
9534       id,
9535       language,
9536       source_lang,
9537       sfwt_flag,
9538       name,
9539       comments,
9540       item_description,
9541       oke_boe_description,
9542       cognomen,
9543       block23text,
9544       created_by,
9545       creation_date,
9546       last_updated_by,
9547       last_update_date,
9548       last_update_login
9549 )
9550   SELECT
9551       id,
9552       language,
9553       source_lang,
9554       sfwt_flag,
9555       name,
9556       comments,
9557       item_description,
9558       oke_boe_description,
9559       cognomen,
9560       block23text,
9561       created_by,
9562       creation_date,
9563       last_updated_by,
9564       last_update_date,
9565       last_update_login
9566   FROM okc_k_lines_tlh
9567  WHERE id in (SELECT id
9568 			 FROM okc_k_lines_bh
9569 			WHERE dnz_chr_id = p_chr_id)
9570   AND major_version = p_major_version;
9571 
9572 ------------------------------------------
9573 -- Restoring Base Table
9574 ------------------------------------------
9575 
9576 INSERT INTO okc_k_lines_b
9577   (
9578       id,
9579       line_number,
9580       chr_id,
9581       cle_id,
9582       dnz_chr_id,
9583       display_sequence,
9584       sts_code,
9585       trn_code,
9586       lse_id,
9587       exception_yn,
9588       object_version_number,
9589       created_by,
9590       creation_date,
9591       last_updated_by,
9592       last_update_date,
9593       hidden_ind,
9594       price_negotiated,
9595       price_level_ind,
9596       price_unit,
9597       price_unit_percent,
9598       invoice_line_level_ind,
9599       dpas_rating,
9600       template_used,
9601       price_type,
9602       --uom_code,
9603       currency_code,
9604       last_update_login,
9605       date_terminated,
9606       start_date,
9607       end_date,
9608       date_renewed,
9609       orig_system_source_code,
9610       orig_system_id1,
9611       orig_system_reference1,
9612       upg_orig_system_ref,
9613       upg_orig_system_ref_id,
9614       request_id,
9615       program_application_id,
9616       program_id,
9617       program_update_date,
9618       price_list_id,
9619       pricing_date,
9620       price_list_line_id,
9621       line_list_price,
9622       item_to_price_yn,
9623       price_basis_yn,
9624       config_header_id,
9625       config_revision_number,
9626       config_complete_yn,
9627       config_valid_yn,
9628       config_top_model_line_id,
9629       config_item_type,
9630 ---Bug.No.-1942374
9631       config_item_id,
9632 ---Bug.No.-1942374
9633       attribute_category,
9634       attribute1,
9635       attribute2,
9636       attribute3,
9637       attribute4,
9638       attribute5,
9639       attribute6,
9640       attribute7,
9641       attribute8,
9642       attribute9,
9643       attribute10,
9644       attribute11,
9645       attribute12,
9646       attribute13,
9647       attribute14,
9648       attribute15,
9649       currency_code_renewed,
9650       price_negotiated_renewed,
9651       service_item_yn,
9652                       --new columns for price hold
9653       ph_pricing_type,
9654       ph_price_break_basis,
9655       ph_min_qty,
9656       ph_min_amt,
9657       ph_qp_reference_id,
9658       ph_value,
9659       ph_enforce_price_list_yn,
9660       ph_adjustment,
9661       ph_integrated_with_qp,
9662 --new columns to replace rules
9663       cust_acct_id,
9664       bill_to_site_use_id,
9665       inv_rule_id,
9666       line_renewal_type_code,
9667       ship_to_site_use_id,
9668       payment_term_id,
9669       payment_instruction_type, --added by mchoudha 22-JUL
9670       DATE_CANCELLED,  --added by npalepu 26-JUL -- New columns for Line Level Cancellation
9671       --canc_reason_code,
9672       TERM_CANCEL_SOURCE,
9673       cancelled_amount,
9674       annualized_factor   --added by npalepu 26-JUL
9675 )
9676   SELECT
9677       id,
9678       line_number,
9679       chr_id,
9680       cle_id,
9681       dnz_chr_id,
9682       display_sequence,
9683       sts_code,
9684       trn_code,
9685       lse_id,
9686       exception_yn,
9687       object_version_number,
9688       created_by,
9689       creation_date,
9690       last_updated_by,
9691       last_update_date,
9692       hidden_ind,
9693       price_negotiated,
9694       price_level_ind,
9695       price_unit,
9696       price_unit_percent,
9697       invoice_line_level_ind,
9698       dpas_rating,
9699       template_used,
9700       price_type,
9701       --uom_code,
9702       currency_code,
9703       last_update_login,
9704       date_terminated,
9705       start_date,
9706       end_date,
9707       date_renewed,
9708       orig_system_source_code,
9709       orig_system_id1,
9710       orig_system_reference1,
9711       upg_orig_system_ref,
9712       upg_orig_system_ref_id,
9713       request_id,
9714       program_application_id,
9715       program_id,
9716       program_update_date,
9717       price_list_id,
9718       pricing_date,
9719       price_list_line_id,
9720       line_list_price,
9721       item_to_price_yn,
9722       price_basis_yn,
9723       config_header_id,
9724       config_revision_number,
9725       config_complete_yn,
9726       config_valid_yn,
9727       config_top_model_line_id,
9728       config_item_type,
9729 ---Bug.No.-1942374
9730       config_item_id,
9731 ---Bug.No.-1942374
9732       attribute_category,
9733       attribute1,
9734       attribute2,
9735       attribute3,
9736       attribute4,
9737       attribute5,
9738       attribute6,
9739       attribute7,
9740       attribute8,
9741       attribute9,
9742       attribute10,
9743       attribute11,
9744       attribute12,
9745       attribute13,
9746       attribute14,
9747       attribute15,
9748       currency_code_renewed,
9749       price_negotiated_renewed,
9750       service_item_yn,
9751                       --new columns for price hold
9752       ph_pricing_type,
9753       ph_price_break_basis,
9754       ph_min_qty,
9755       ph_min_amt,
9756       ph_qp_reference_id,
9757       ph_value,
9758       ph_enforce_price_list_yn,
9759       ph_adjustment,
9760       ph_integrated_with_qp,
9761 -- new columns to replace rules
9762       cust_acct_id,
9763       bill_to_site_use_id,
9764       inv_rule_id,
9765       line_renewal_type_code,
9766       ship_to_site_use_id,
9767       payment_term_id,
9768       payment_instruction_type, --added by mchoudha 22-JUL
9769       DATE_CANCELLED,  --added by npalepu 26-JUL -- New columns for Line Level Cancellation
9770       --canc_reason_code,
9771       TERM_CANCEL_SOURCE,
9772       cancelled_amount,
9773       annualized_factor   --added by npalepu 26-JUL
9774 
9775   FROM okc_k_lines_bh
9776 WHERE dnz_chr_id = p_chr_id
9777   AND major_version = p_major_version;
9778 
9779 IF (l_debug = 'Y') THEN
9780    okc_debug.log('23800: Exiting restore_version', 2);
9781    okc_debug.Reset_Indentation;
9782 END IF;
9783 
9784 RETURN l_return_status;
9785 
9786   EXCEPTION
9787        -- other appropriate handlers
9788     WHEN OTHERS THEN
9789 
9790     IF (l_debug = 'Y') THEN
9791        okc_debug.log('23900: Exiting restore_version:OTHERS Exception', 2);
9792        okc_debug.Reset_Indentation;
9793     END IF;
9794 
9795        -- store SQL error message on message stack
9796              OKC_API.SET_MESSAGE(p_app_name     => okc_version_pvt.G_APP_NAME,
9797                                  p_msg_name     => okc_version_pvt.G_UNEXPECTED_ERROR,
9798                                  p_token1       => okc_version_pvt.G_SQLCODE_TOKEN,
9799                                  p_token1_value => sqlcode,
9800                                  p_token2       => okc_version_pvt.G_SQLERRM_TOKEN,
9801                                  p_token2_value => sqlerrm);
9802 
9803        -- notify  UNEXPECTED error
9804              l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
9805              return l_return_status;
9806 
9807 END restore_version;
9808 
9809 END OKC_CLE_PVT;