DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_BSD_PVT

Source


1 PACKAGE BODY OKS_BSD_PVT AS
2 /* $Header: OKSSBSDB.pls 120.0 2005/05/25 17:54:55 appldev noship $ */
3   ---------------------------------------------------------------------------
4   -- FUNCTION get_seq_id
5   ---------------------------------------------------------------------------
6   FUNCTION get_seq_id RETURN NUMBER IS
7   BEGIN
8     RETURN(okc_p_util.raw_to_number(sys_guid()));
9   END get_seq_id;
10 
11   ---------------------------------------------------------------------------
12   -- PROCEDURE qc
13   ---------------------------------------------------------------------------
14   PROCEDURE qc IS
15   BEGIN
16     null;
17   END qc;
18 
19   ---------------------------------------------------------------------------
20   -- PROCEDURE change_version
21   ---------------------------------------------------------------------------
22   PROCEDURE change_version IS
23   BEGIN
24     null;
25   END change_version;
26 
27   ---------------------------------------------------------------------------
28   -- PROCEDURE api_copy
29   ---------------------------------------------------------------------------
30   PROCEDURE api_copy IS
31   BEGIN
32     null;
33   END api_copy;
34 
35   ---------------------------------------------------------------------------
36   -- FUNCTION get_rec for: OKS_BILL_SUB_LINE_DTLS
37   ---------------------------------------------------------------------------
38   FUNCTION get_rec (
39     p_bsd_rec                      IN bsd_rec_type,
40     x_no_data_found                OUT NOCOPY BOOLEAN
41   ) RETURN bsd_rec_type IS
42     CURSOR bsd_pk_csr (p_id                 IN NUMBER) IS
43     SELECT
44             ID,
45             BSL_ID,
46             BSL_ID_AVERAGED,
47             BSD_ID,
48             BSD_ID_APPLIED,
49             CCR_ID,
50             CGR_ID,
51             START_READING,
52             END_READING,
53             BASE_READING,
54             ESTIMATED_QUANTITY,
55             UNIT_OF_MEASURE,
56             AMCV_YN,
57             RESULT,
58             AMOUNT,
59             OBJECT_VERSION_NUMBER,
60             CREATED_BY,
61             CREATION_DATE,
62             LAST_UPDATED_BY,
63             LAST_UPDATE_DATE,
64             FIXED,
65             ACTUAL,
66             DEFAULT_DEFAULT,
67             ADJUSTMENT_LEVEL,
68             ADJUSTMENT_MINIMUM,
69             LAST_UPDATE_LOGIN,
70             ATTRIBUTE_CATEGORY,
71             ATTRIBUTE1,
72             ATTRIBUTE2,
73             ATTRIBUTE3,
74             ATTRIBUTE4,
75             ATTRIBUTE5,
76             ATTRIBUTE6,
77             ATTRIBUTE7,
78             ATTRIBUTE8,
79             ATTRIBUTE9,
80             ATTRIBUTE10,
81             ATTRIBUTE11,
82             ATTRIBUTE12,
83             ATTRIBUTE13,
84             ATTRIBUTE14,
85             ATTRIBUTE15
86       FROM Oks_Bill_Sub_Line_Dtls
87      WHERE oks_bill_sub_line_dtls.id = p_id;
88     l_bsd_pk                       bsd_pk_csr%ROWTYPE;
89     l_bsd_rec                      bsd_rec_type;
90   BEGIN
91     x_no_data_found := TRUE;
92     -- Get current database values
93     OPEN bsd_pk_csr (p_bsd_rec.id);
94     FETCH bsd_pk_csr INTO
95               l_bsd_rec.ID,
96               l_bsd_rec.BSL_ID,
97               l_bsd_rec.BSL_ID_AVERAGED,
98               l_bsd_rec.BSD_ID,
99               l_bsd_rec.BSD_ID_APPLIED,
100               l_bsd_rec.CCR_ID,
101               l_bsd_rec.CGR_ID,
102               l_bsd_rec.START_READING,
103               l_bsd_rec.END_READING,
104               l_bsd_rec.BASE_READING,
105               l_bsd_rec.ESTIMATED_QUANTITY,
106               l_bsd_rec.UNIT_OF_MEASURE,
107               l_bsd_rec.AMCV_YN,
108               l_bsd_rec.RESULT,
109               l_bsd_rec.AMOUNT,
110               l_bsd_rec.OBJECT_VERSION_NUMBER,
111               l_bsd_rec.CREATED_BY,
112               l_bsd_rec.CREATION_DATE,
113               l_bsd_rec.LAST_UPDATED_BY,
114               l_bsd_rec.LAST_UPDATE_DATE,
115               l_bsd_rec.FIXED,
116               l_bsd_rec.ACTUAL,
117               l_bsd_rec.DEFAULT_DEFAULT,
118               l_bsd_rec.ADJUSTMENT_LEVEL,
119               l_bsd_rec.ADJUSTMENT_MINIMUM,
120               l_bsd_rec.LAST_UPDATE_LOGIN,
121               l_bsd_rec.ATTRIBUTE_CATEGORY,
122               l_bsd_rec.ATTRIBUTE1,
123               l_bsd_rec.ATTRIBUTE2,
124               l_bsd_rec.ATTRIBUTE3,
125               l_bsd_rec.ATTRIBUTE4,
126               l_bsd_rec.ATTRIBUTE5,
127               l_bsd_rec.ATTRIBUTE6,
128               l_bsd_rec.ATTRIBUTE7,
129               l_bsd_rec.ATTRIBUTE8,
130               l_bsd_rec.ATTRIBUTE9,
131               l_bsd_rec.ATTRIBUTE10,
132               l_bsd_rec.ATTRIBUTE11,
133               l_bsd_rec.ATTRIBUTE12,
134               l_bsd_rec.ATTRIBUTE13,
135               l_bsd_rec.ATTRIBUTE14,
136               l_bsd_rec.ATTRIBUTE15;
137     x_no_data_found := bsd_pk_csr%NOTFOUND;
138     CLOSE bsd_pk_csr;
139     RETURN(l_bsd_rec);
140   END get_rec;
141 
142   FUNCTION get_rec (
143     p_bsd_rec                      IN bsd_rec_type
144   ) RETURN bsd_rec_type IS
145     l_row_notfound                 BOOLEAN := TRUE;
146   BEGIN
147     RETURN(get_rec(p_bsd_rec, l_row_notfound));
148   END get_rec;
149   ---------------------------------------------------------------------------
150   -- FUNCTION get_rec for: OKS_BILL_SUBLINE_DTLS_V
151   ---------------------------------------------------------------------------
152   FUNCTION get_rec (
153     p_bsdv_rec                     IN bsdv_rec_type,
154     x_no_data_found                OUT NOCOPY BOOLEAN
155   ) RETURN bsdv_rec_type IS
156     CURSOR okc_bsdv_pk_csr (p_id                 IN NUMBER) IS
157     SELECT
158             ID,
159             OBJECT_VERSION_NUMBER,
160             BSL_ID,
161             BSL_ID_AVERAGED,
162             BSD_ID,
163             BSD_ID_APPLIED,
164             CCR_ID,
165             CGR_ID,
166             START_READING,
167             END_READING,
168             BASE_READING,
169             ESTIMATED_QUANTITY,
170             UNIT_OF_MEASURE,
171             FIXED,
172             ACTUAL,
173             DEFAULT_DEFAULT,
174             AMCV_YN,
175             ADJUSTMENT_LEVEL,
176             ADJUSTMENT_MINIMUM,
177             RESULT,
178             AMOUNT,
179             ATTRIBUTE_CATEGORY,
180             ATTRIBUTE1,
181             ATTRIBUTE2,
182             ATTRIBUTE3,
183             ATTRIBUTE4,
184             ATTRIBUTE5,
185             ATTRIBUTE6,
186             ATTRIBUTE7,
187             ATTRIBUTE8,
188             ATTRIBUTE9,
189             ATTRIBUTE10,
190             ATTRIBUTE11,
191             ATTRIBUTE12,
192             ATTRIBUTE13,
193             ATTRIBUTE14,
194             ATTRIBUTE15,
195             CREATED_BY,
196             CREATION_DATE,
197             LAST_UPDATED_BY,
198             LAST_UPDATE_DATE,
199             LAST_UPDATE_LOGIN
200       FROM Oks_Bill_Subline_Dtls_V
201      WHERE oks_bill_subline_dtls_v.id = p_id;
202     l_okc_bsdv_pk                  okc_bsdv_pk_csr%ROWTYPE;
203     l_bsdv_rec                     bsdv_rec_type;
204   BEGIN
205     x_no_data_found := TRUE;
206     -- Get current database values
207     OPEN okc_bsdv_pk_csr (p_bsdv_rec.id);
208     FETCH okc_bsdv_pk_csr INTO
209               l_bsdv_rec.ID,
210               l_bsdv_rec.OBJECT_VERSION_NUMBER,
211               l_bsdv_rec.BSL_ID,
212               l_bsdv_rec.BSL_ID_AVERAGED,
213               l_bsdv_rec.BSD_ID,
214               l_bsdv_rec.BSD_ID_APPLIED,
215               l_bsdv_rec.CCR_ID,
216               l_bsdv_rec.CGR_ID,
217               l_bsdv_rec.START_READING,
218               l_bsdv_rec.END_READING,
219               l_bsdv_rec.BASE_READING,
220               l_bsdv_rec.ESTIMATED_QUANTITY,
221               l_bsdv_rec.UNIT_OF_MEASURE,
222               l_bsdv_rec.FIXED,
223               l_bsdv_rec.ACTUAL,
224               l_bsdv_rec.DEFAULT_DEFAULT,
225               l_bsdv_rec.AMCV_YN,
226               l_bsdv_rec.ADJUSTMENT_LEVEL,
227               l_bsdv_rec.ADJUSTMENT_MINIMUM,
228               l_bsdv_rec.RESULT,
229               l_bsdv_rec.AMOUNT,
230               l_bsdv_rec.ATTRIBUTE_CATEGORY,
231               l_bsdv_rec.ATTRIBUTE1,
232               l_bsdv_rec.ATTRIBUTE2,
233               l_bsdv_rec.ATTRIBUTE3,
234               l_bsdv_rec.ATTRIBUTE4,
235               l_bsdv_rec.ATTRIBUTE5,
236               l_bsdv_rec.ATTRIBUTE6,
237               l_bsdv_rec.ATTRIBUTE7,
238               l_bsdv_rec.ATTRIBUTE8,
239               l_bsdv_rec.ATTRIBUTE9,
240               l_bsdv_rec.ATTRIBUTE10,
241               l_bsdv_rec.ATTRIBUTE11,
242               l_bsdv_rec.ATTRIBUTE12,
243               l_bsdv_rec.ATTRIBUTE13,
244               l_bsdv_rec.ATTRIBUTE14,
245               l_bsdv_rec.ATTRIBUTE15,
246               l_bsdv_rec.CREATED_BY,
247               l_bsdv_rec.CREATION_DATE,
248               l_bsdv_rec.LAST_UPDATED_BY,
249               l_bsdv_rec.LAST_UPDATE_DATE,
250               l_bsdv_rec.LAST_UPDATE_LOGIN;
251     x_no_data_found := okc_bsdv_pk_csr%NOTFOUND;
252     CLOSE okc_bsdv_pk_csr;
253     RETURN(l_bsdv_rec);
254   END get_rec;
255 
256   FUNCTION get_rec (
257     p_bsdv_rec                     IN bsdv_rec_type
258   ) RETURN bsdv_rec_type IS
259     l_row_notfound                 BOOLEAN := TRUE;
260   BEGIN
261     RETURN(get_rec(p_bsdv_rec, l_row_notfound));
262   END get_rec;
263 
264   -------------------------------------------------------------
265   -- FUNCTION null_out_defaults for: OKS_BILL_SUBLINE_DTLS_V --
266   -------------------------------------------------------------
267   FUNCTION null_out_defaults (
268     p_bsdv_rec	IN bsdv_rec_type
269   ) RETURN bsdv_rec_type IS
270     l_bsdv_rec	bsdv_rec_type := p_bsdv_rec;
271   BEGIN
272     IF (l_bsdv_rec.object_version_number = OKC_API.G_MISS_NUM) THEN
273       l_bsdv_rec.object_version_number := NULL;
274     END IF;
275     IF (l_bsdv_rec.bsl_id = OKC_API.G_MISS_NUM) THEN
276       l_bsdv_rec.bsl_id := NULL;
277     END IF;
278     IF (l_bsdv_rec.bsl_id_averaged = OKC_API.G_MISS_NUM) THEN
279       l_bsdv_rec.bsl_id_averaged := NULL;
280     END IF;
281     IF (l_bsdv_rec.bsd_id = OKC_API.G_MISS_NUM) THEN
282       l_bsdv_rec.bsd_id := NULL;
283     END IF;
284     IF (l_bsdv_rec.bsd_id_applied = OKC_API.G_MISS_NUM) THEN
285       l_bsdv_rec.bsd_id_applied := NULL;
286     END IF;
287     IF (l_bsdv_rec.ccr_id = OKC_API.G_MISS_NUM) THEN
288       l_bsdv_rec.ccr_id := NULL;
289     END IF;
290     IF (l_bsdv_rec.cgr_id = OKC_API.G_MISS_NUM) THEN
291       l_bsdv_rec.cgr_id := NULL;
292     END IF;
293     IF (l_bsdv_rec.start_reading = OKC_API.G_MISS_NUM) THEN
294       l_bsdv_rec.start_reading := NULL;
295     END IF;
296     IF (l_bsdv_rec.end_reading = OKC_API.G_MISS_NUM) THEN
297       l_bsdv_rec.end_reading := NULL;
298     END IF;
299     IF (l_bsdv_rec.base_reading = OKC_API.G_MISS_NUM) THEN
300       l_bsdv_rec.base_reading := NULL;
301     END IF;
302     IF (l_bsdv_rec.estimated_quantity = OKC_API.G_MISS_NUM) THEN
303       l_bsdv_rec.estimated_quantity := NULL;
304     END IF;
305     IF (l_bsdv_rec.unit_of_measure = OKC_API.G_MISS_CHAR) THEN
306       l_bsdv_rec.unit_of_measure := NULL;
307     END IF;
308     IF (l_bsdv_rec.fixed = OKC_API.G_MISS_NUM) THEN
309       l_bsdv_rec.fixed := NULL;
310     END IF;
311     IF (l_bsdv_rec.actual = OKC_API.G_MISS_NUM) THEN
312       l_bsdv_rec.actual := NULL;
313     END IF;
314     IF (l_bsdv_rec.default_default = OKC_API.G_MISS_NUM) THEN
315       l_bsdv_rec.default_default := NULL;
316     END IF;
317     IF (l_bsdv_rec.amcv_yn = OKC_API.G_MISS_CHAR) THEN
318       l_bsdv_rec.amcv_yn := NULL;
319     END IF;
320     IF (l_bsdv_rec.adjustment_level = OKC_API.G_MISS_NUM) THEN
321       l_bsdv_rec.adjustment_level := NULL;
322     END IF;
323     IF (l_bsdv_rec.adjustment_minimum = OKC_API.G_MISS_NUM) THEN
324       l_bsdv_rec.adjustment_minimum := NULL;
325     END IF;
326     IF (l_bsdv_rec.result = OKC_API.G_MISS_NUM) THEN
327       l_bsdv_rec.result := NULL;
328     END IF;
329     IF (l_bsdv_rec.amount = OKC_API.G_MISS_NUM) THEN
330       l_bsdv_rec.amount := NULL;
331     END IF;
332     IF (l_bsdv_rec.attribute_category = OKC_API.G_MISS_CHAR) THEN
333       l_bsdv_rec.attribute_category := NULL;
334     END IF;
335     IF (l_bsdv_rec.attribute1 = OKC_API.G_MISS_CHAR) THEN
336       l_bsdv_rec.attribute1 := NULL;
337     END IF;
338     IF (l_bsdv_rec.attribute2 = OKC_API.G_MISS_CHAR) THEN
339       l_bsdv_rec.attribute2 := NULL;
340     END IF;
341     IF (l_bsdv_rec.attribute3 = OKC_API.G_MISS_CHAR) THEN
342       l_bsdv_rec.attribute3 := NULL;
343     END IF;
344     IF (l_bsdv_rec.attribute4 = OKC_API.G_MISS_CHAR) THEN
345       l_bsdv_rec.attribute4 := NULL;
346     END IF;
347     IF (l_bsdv_rec.attribute5 = OKC_API.G_MISS_CHAR) THEN
348       l_bsdv_rec.attribute5 := NULL;
349     END IF;
350     IF (l_bsdv_rec.attribute6 = OKC_API.G_MISS_CHAR) THEN
351       l_bsdv_rec.attribute6 := NULL;
352     END IF;
353     IF (l_bsdv_rec.attribute7 = OKC_API.G_MISS_CHAR) THEN
354       l_bsdv_rec.attribute7 := NULL;
355     END IF;
356     IF (l_bsdv_rec.attribute8 = OKC_API.G_MISS_CHAR) THEN
357       l_bsdv_rec.attribute8 := NULL;
358     END IF;
359     IF (l_bsdv_rec.attribute9 = OKC_API.G_MISS_CHAR) THEN
360       l_bsdv_rec.attribute9 := NULL;
361     END IF;
362     IF (l_bsdv_rec.attribute10 = OKC_API.G_MISS_CHAR) THEN
363       l_bsdv_rec.attribute10 := NULL;
364     END IF;
365     IF (l_bsdv_rec.attribute11 = OKC_API.G_MISS_CHAR) THEN
366       l_bsdv_rec.attribute11 := NULL;
367     END IF;
368     IF (l_bsdv_rec.attribute12 = OKC_API.G_MISS_CHAR) THEN
369       l_bsdv_rec.attribute12 := NULL;
370     END IF;
371     IF (l_bsdv_rec.attribute13 = OKC_API.G_MISS_CHAR) THEN
372       l_bsdv_rec.attribute13 := NULL;
373     END IF;
374     IF (l_bsdv_rec.attribute14 = OKC_API.G_MISS_CHAR) THEN
375       l_bsdv_rec.attribute14 := NULL;
376     END IF;
377     IF (l_bsdv_rec.attribute15 = OKC_API.G_MISS_CHAR) THEN
378       l_bsdv_rec.attribute15 := NULL;
379     END IF;
380     IF (l_bsdv_rec.created_by = OKC_API.G_MISS_NUM) THEN
381       l_bsdv_rec.created_by := NULL;
382     END IF;
383     IF (l_bsdv_rec.creation_date = OKC_API.G_MISS_DATE) THEN
384       l_bsdv_rec.creation_date := NULL;
385     END IF;
386     IF (l_bsdv_rec.last_updated_by = OKC_API.G_MISS_NUM) THEN
387       l_bsdv_rec.last_updated_by := NULL;
388     END IF;
389     IF (l_bsdv_rec.last_update_date = OKC_API.G_MISS_DATE) THEN
390       l_bsdv_rec.last_update_date := NULL;
391     END IF;
392     IF (l_bsdv_rec.last_update_login = OKC_API.G_MISS_NUM) THEN
393       l_bsdv_rec.last_update_login := NULL;
394     END IF;
395     RETURN(l_bsdv_rec);
396   END null_out_defaults;
397   ---------------------------------------------------------------------------
398   -- PROCEDURE Validate_Attributes
399   ---------------------------------------------------------------------------
400 PROCEDURE validate_id(x_return_status OUT NOCOPY varchar2,
401 				p_id   IN  Number)
402   Is
403   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
404   Begin
405 
406   x_return_status := OKC_API.G_RET_STS_SUCCESS;
407 
408   If p_id = OKC_API.G_MISS_NUM OR
409        p_id IS NULL
410   Then
411       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'id');
412       l_return_status := OKC_API.G_RET_STS_ERROR;
413   End If;
414 
415   Exception
416   When  G_EXCEPTION_HALT_VALIDATION THEN
417             x_return_status := l_return_status;
418 		NULL;
419   When OTHERS THEN
420 	-- store SQL error message on message stack for caller
421 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
422                           p_msg_name     => g_unexpected_error,
423                           p_token1       => g_sqlcode_token,
424                           p_token1_value => sqlcode,
425                           p_token2       => g_sqlerrm_token,
426                           p_token2_value => sqlerrm);
427 
428       -- notify caller of an UNEXPECTED error
429       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
430   End validate_id;
431 
432 
433 PROCEDURE validate_bsl_id(x_return_status OUT NOCOPY varchar2,
434 					 P_bsl_id IN  Number)
435   Is
436   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
437   l_dummy_var   VARCHAR2(1) := '?';
438   Cursor l_bsl_Csr Is
439   	  select 'x'
440 	  from OKS_BILL_SUB_LINES_V
441   	  where id = P_bsl_id;
442 
443 Begin
444    If p_bsl_id  = OKC_API.G_MISS_NUM OR
445       p_bsl_id  IS NULL
446    Then
447       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'bsl_id');
448 
449      l_return_status := OKC_API.G_RET_STS_ERROR;
450      RAISE G_EXCEPTION_HALT_VALIDATION;
451    End If;
452 
453    If (p_bsl_id <> OKC_API.G_MISS_NUM and
454   	   p_bsl_id IS NOT NULL)
455    Then
456        Open l_bsl_csr;
457        Fetch l_bsl_csr Into l_dummy_var;
458        Close l_bsl_csr;
459        -- if l_dummy_var still set to default, data was not found
460        If (l_dummy_var = '?') Then
461   	          OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
462                           p_msg_name     => g_unexpected_error,
463                           p_token1       => g_sqlcode_token,
464                           p_token1_value => sqlcode,
465                           p_token2       => g_sqlerrm_token,
466                           p_token2_value => 'bsl_id ');
467 
468 	     -- notify caller of an error
469           x_return_status := OKC_API.G_RET_STS_ERROR;
470        End If;
471    End If;
472 
473   Exception
474   When  G_EXCEPTION_HALT_VALIDATION Then
475 		NULL;
476   When OTHERS Then
477 	-- store SQL error message on message stack for caller
478 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
479                           p_msg_name     => g_unexpected_error,
480                           p_token1       => g_sqlcode_token,
481                           p_token1_value => sqlcode,
482                           p_token2       => g_sqlerrm_token,
483                           p_token2_value => sqlerrm);
484 
485       -- notify caller of an UNEXPECTED error
486       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
487   END validate_bsl_id;
488 
489   PROCEDURE validate_bsl_id_averaged(x_return_status OUT NOCOPY varchar2,
490 					 P_bsl_id_averaged IN  Number)
491   Is
492   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
493   Begin
494 
495     -- call column length utility
496 
497 ---------giving prob so commented
498   /*
499   OKC_UTIL.CHECK_LENGTH
500   (
501 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
502             ,p_col_name      => 'bsl_id_averaged'
503             ,p_col_value     => p_bsl_id_averaged
504             ,x_return_status => l_return_status
505    );
506    */
507 
508 
509    -- verify that length is within allowed limits
510    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
511 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
512                           p_msg_name     => g_unexpected_error,
513                           p_token1       => g_sqlcode_token,
514                           p_token1_value => sqlcode,
515                           p_token2       => g_sqlerrm_token,
516                           p_token2_value => 'bsl_id_averaged Length');
517 
518 
519 	-- notify caller of an error
520 	x_return_status := OKC_API.G_RET_STS_ERROR;
521 	-- halt further validation of this column
522 	RAISE G_EXCEPTION_HALT_VALIDATION;
523   End If;
524 
525   Exception
526   When  G_EXCEPTION_HALT_VALIDATION Then
527 		NULL;
528   When OTHERS Then
529 	-- store SQL error message on message stack for caller
530 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
531                           p_msg_name     => g_unexpected_error,
532                           p_token1       => g_sqlcode_token,
533                           p_token1_value => sqlcode,
534                           p_token2       => g_sqlerrm_token,
535                           p_token2_value => sqlerrm);
536 
537       -- notify caller of an UNEXPECTED error
538       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
539 END validate_bsl_id_averaged;
540 
541 PROCEDURE validate_bsd_id(x_return_status OUT NOCOPY varchar2,
542 					 P_bsd_id IN  Number)
543   Is
544   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
545   Begin
546 
547     -- call column length utility
548 
549 ---------giving prob so commented
550   /*
551   OKC_UTIL.CHECK_LENGTH
552   (
553 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
554             ,p_col_name      => 'bsd_id'
555             ,p_col_value     => p_bsd_id
556             ,x_return_status => l_return_status
557    );
558    */
559 
560 
561    -- verify that length is within allowed limits
562    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
563 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
564                           p_msg_name     => g_unexpected_error,
565                           p_token1       => g_sqlcode_token,
566                           p_token1_value => sqlcode,
567                           p_token2       => g_sqlerrm_token,
568                           p_token2_value => 'bsd_id Length');
569 
570 
571 	-- notify caller of an error
572 	x_return_status := OKC_API.G_RET_STS_ERROR;
573 	-- halt further validation of this column
574 	RAISE G_EXCEPTION_HALT_VALIDATION;
575   End If;
576 
577   Exception
578   When  G_EXCEPTION_HALT_VALIDATION Then
579 		NULL;
580   When OTHERS Then
581 	-- store SQL error message on message stack for caller
582 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
583                           p_msg_name     => g_unexpected_error,
584                           p_token1       => g_sqlcode_token,
585                           p_token1_value => sqlcode,
586                           p_token2       => g_sqlerrm_token,
587                           p_token2_value => sqlerrm);
588 
589       -- notify caller of an UNEXPECTED error
590       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
591 END validate_bsd_id;
592 
593 
594 
595 PROCEDURE validate_bsd_id_applied(x_return_status OUT NOCOPY varchar2,
596 					 P_bsd_id_applied IN  Number)
597   Is
598   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
599   Begin
600 
601     -- call column length utility
602 
603 ---------giving prob so commented
604   /*
605   OKC_UTIL.CHECK_LENGTH
606   (
607 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
608             ,p_col_name      => 'bsd_id_applied'
609             ,p_col_value     => p_bsd_id_applied
610             ,x_return_status => l_return_status
611    );
612    */
613 
614 
615    -- verify that length is within allowed limits
616    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
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 => 'bsd_id_applied Length');
623 
624 
625 	-- notify caller of an error
626 	x_return_status := OKC_API.G_RET_STS_ERROR;
627 	-- halt further validation of this column
628 	RAISE G_EXCEPTION_HALT_VALIDATION;
629   End If;
630 
631   Exception
632   When  G_EXCEPTION_HALT_VALIDATION Then
633 		NULL;
634   When OTHERS Then
635 	-- store SQL error message on message stack for caller
636 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
637                           p_msg_name     => g_unexpected_error,
638                           p_token1       => g_sqlcode_token,
639                           p_token1_value => sqlcode,
640                           p_token2       => g_sqlerrm_token,
641                           p_token2_value => sqlerrm);
642 
643       -- notify caller of an UNEXPECTED error
644       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
645   END validate_bsd_id_applied;
646 
647 PROCEDURE validate_ccr_id(x_return_status OUT NOCOPY varchar2,
648 					 P_ccr_id IN  Number)
649   Is
650   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
651   Begin
652 
653   x_return_status           := OKC_API.G_RET_STS_SUCCESS;
654 
655   Exception
656   When  G_EXCEPTION_HALT_VALIDATION Then
657 		NULL;
658   When OTHERS Then
659 	-- store SQL error message on message stack for caller
660 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
661                           p_msg_name     => g_unexpected_error,
662                           p_token1       => g_sqlcode_token,
663                           p_token1_value => sqlcode,
664                           p_token2       => g_sqlerrm_token,
665                           p_token2_value => sqlerrm);
666 
667       -- notify caller of an UNEXPECTED error
668       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
669   END validate_ccr_id;
670 
671 
672 PROCEDURE validate_cgr_id(x_return_status OUT NOCOPY varchar2,
673 					 P_cgr_id IN  Number)
674   Is
675   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
676   Begin
677 
678   x_return_status           := OKC_API.G_RET_STS_SUCCESS;
679 
680   Exception
681   When  G_EXCEPTION_HALT_VALIDATION Then
682 		NULL;
683   When OTHERS Then
684 	-- store SQL error message on message stack for caller
685 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
686                           p_msg_name     => g_unexpected_error,
687                           p_token1       => g_sqlcode_token,
688                           p_token1_value => sqlcode,
689                           p_token2       => g_sqlerrm_token,
690                           p_token2_value => sqlerrm);
691 
692       -- notify caller of an UNEXPECTED error
693       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
694   END validate_cgr_id;
695 
696 
697 PROCEDURE validate_start_reading(x_return_status OUT NOCOPY varchar2,
698 					 P_start_reading IN  Number)
699   Is
700   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
701   Begin
702 
703   x_return_status           := OKC_API.G_RET_STS_SUCCESS;
704 
705   Exception
706   When  G_EXCEPTION_HALT_VALIDATION Then
707 		NULL;
708   When OTHERS Then
709 	-- store SQL error message on message stack for caller
710 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
711                           p_msg_name     => g_unexpected_error,
712                           p_token1       => g_sqlcode_token,
713                           p_token1_value => sqlcode,
714                           p_token2       => g_sqlerrm_token,
715                           p_token2_value => sqlerrm);
716 
717       -- notify caller of an UNEXPECTED error
718       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
719   END validate_start_reading;
720 
721 
722 PROCEDURE validate_end_reading(x_return_status OUT NOCOPY varchar2,
723 					 P_end_reading IN  Number)
724   Is
725   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
726   Begin
727 
728   x_return_status           := OKC_API.G_RET_STS_SUCCESS;
729   Exception
730   When  G_EXCEPTION_HALT_VALIDATION Then
731 		NULL;
732   When OTHERS Then
733 	-- store SQL error message on message stack for caller
734 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
735                           p_msg_name     => g_unexpected_error,
736                           p_token1       => g_sqlcode_token,
737                           p_token1_value => sqlcode,
738                           p_token2       => g_sqlerrm_token,
739                           p_token2_value => sqlerrm);
740 
741       -- notify caller of an UNEXPECTED error
742       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
743   END validate_end_reading;
744 
745  PROCEDURE validate_base_reading(x_return_status OUT NOCOPY varchar2,
746                                          P_base_reading IN  Number)
747   Is
748   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
749   Begin
750 
751   x_return_status           := OKC_API.G_RET_STS_SUCCESS;
752   Exception
753   When  G_EXCEPTION_HALT_VALIDATION Then
754                 NULL;
755   When OTHERS Then
756         -- store SQL error message on message stack for caller
757         OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
758                           p_msg_name     => g_unexpected_error,
759                           p_token1       => g_sqlcode_token,
760                           p_token1_value => sqlcode,
761                           p_token2       => g_sqlerrm_token,
762                           p_token2_value => sqlerrm);
763 
764       -- notify caller of an UNEXPECTED error
765       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
766   END validate_base_reading;
767  PROCEDURE validate_estimated_Quantity(x_return_status OUT NOCOPY varchar2,
768                                  P_estimated_Quantity IN  Number)
769   Is
770   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
771   Begin
772 
773   x_return_status           := OKC_API.G_RET_STS_SUCCESS;
774   Exception
775   When  G_EXCEPTION_HALT_VALIDATION Then
776                 NULL;
777   When OTHERS Then
778         -- store SQL error message on message stack for caller
779         OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
780                           p_msg_name     => g_unexpected_error,
781                           p_token1       => g_sqlcode_token,
782                           p_token1_value => sqlcode,
783                           p_token2       => g_sqlerrm_token,
784                           p_token2_value => sqlerrm);
785 
786       -- notify caller of an UNEXPECTED error
787       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
788   END validate_estimated_Quantity;
789 
790 
791 PROCEDURE validate_unit_of_measure (	x_return_status OUT NOCOPY varchar2,
792 							 P_unit_of_measure IN  Varchar2)
793   Is
794   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
795   Begin
796 
797   x_return_status := OKC_API.G_RET_STS_SUCCESS;
798 
799 
800   If P_unit_of_measure = OKC_API.G_MISS_CHAR OR
801        P_unit_of_measure IS NULL
802   Then
803       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'unit_of_measure');
804       x_return_status := OKC_API.G_RET_STS_ERROR;
805 	RAISE G_EXCEPTION_HALT_VALIDATION;
806   End If;
807 
808   -- call column length utility
809 
810   /*
811   OKC_UTIL.CHECK_LENGTH
812   (
813 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
814             ,p_col_name      => 'unit_of_measure'
815             ,p_col_value     => P_unit_of_measure
816             ,x_return_status => l_return_status
817    );
818    */
819 
820    -- verify that length is within allowed limits
821    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
822 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
823                           p_msg_name     => g_unexpected_error,
824                           p_token1       => g_sqlcode_token,
825                           p_token1_value => sqlcode,
826                           p_token2       => g_sqlerrm_token,
827                           p_token2_value => 'unit_of_measure length');
828 
829 
830 	-- notify caller of an error
831 	x_return_status := OKC_API.G_RET_STS_ERROR;
832 	-- halt further validation of this column
833 	RAISE G_EXCEPTION_HALT_VALIDATION;
834   End If;
835 
836   Exception
837   When  G_EXCEPTION_HALT_VALIDATION Then
838 		NULL;
839   When OTHERS Then
840 	-- store SQL error message on message stack for caller
841 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
842                           p_msg_name     => g_unexpected_error,
843                           p_token1       => g_sqlcode_token,
844                           p_token1_value => sqlcode,
845                           p_token2       => g_sqlerrm_token,
846                           p_token2_value => sqlerrm);
847 
848       -- notify caller of an UNEXPECTED error
849       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
850   END validate_unit_of_measure;
851 
852   PROCEDURE validate_amcv_yn (	x_return_status OUT NOCOPY varchar2,
853 							 P_amcv_yn IN  Varchar2)
854   Is
855   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
856   Begin
857 
858   x_return_status := OKC_API.G_RET_STS_SUCCESS;
859 
860 
861   If P_amcv_yn = OKC_API.G_MISS_CHAR OR
862        P_amcv_yn IS NULL
863   Then
864       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'amcv_yn');
865       x_return_status := OKC_API.G_RET_STS_ERROR;
866 	RAISE G_EXCEPTION_HALT_VALIDATION;
867   End If;
868 
869   -- call column length utility
870 
871   /*
872   OKC_UTIL.CHECK_LENGTH
873   (
874 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
875             ,p_col_name      => 'amcv_yn'
876             ,p_col_value     => P_amcv_yn
877             ,x_return_status => l_return_status
878    );
879    */
880 
881    -- verify that length is within allowed limits
882    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
883 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
884                           p_msg_name     => g_unexpected_error,
885                           p_token1       => g_sqlcode_token,
886                           p_token1_value => sqlcode,
887                           p_token2       => g_sqlerrm_token,
888                           p_token2_value => 'amcv_yn length');
889 
890 
891 	-- notify caller of an error
892 	x_return_status := OKC_API.G_RET_STS_ERROR;
893 	-- halt further validation of this column
894 	RAISE G_EXCEPTION_HALT_VALIDATION;
895   End If;
896 
897   Exception
898   When  G_EXCEPTION_HALT_VALIDATION Then
899 		NULL;
900   When OTHERS Then
901 	-- store SQL error message on message stack for caller
902 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
903                           p_msg_name     => g_unexpected_error,
904                           p_token1       => g_sqlcode_token,
905                           p_token1_value => sqlcode,
906                           p_token2       => g_sqlerrm_token,
907                           p_token2_value => sqlerrm);
908 
909       -- notify caller of an UNEXPECTED error
910       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
911   END validate_amcv_yn;
912 
913 PROCEDURE validate_result(	x_return_status OUT NOCOPY varchar2,
914 					P_result IN  NUMBER)
915   Is
916   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
917   Begin
918 
919   If P_result= OKC_API.G_MISS_NUM OR
920        P_result	IS NULL
921   Then
922       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Result' );
923       l_return_status := OKC_API.G_RET_STS_ERROR;
924 
925 	RAISE G_EXCEPTION_HALT_VALIDATION;
926   End If;
927 
928     -- call column length utility
929   /*
930   OKC_UTIL.CHECK_LENGTH
931   (
932 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
933             ,p_col_name      => 'Result'
934             ,p_col_value     => P_result
935             ,x_return_status => l_return_status
936    );
937    */
938 
939    -- verify that length is within allowed limits
940    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
941 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
942                           p_msg_name     => g_unexpected_error,
943                           p_token1       => g_sqlcode_token,
944                           p_token1_value => sqlcode,
945                           p_token2       => g_sqlerrm_token,
946                           p_token2_value => 'Result Length');
947 
948 
949 	-- notify caller of an error
950 	x_return_status := OKC_API.G_RET_STS_ERROR;
951 	-- halt further validation of this column
952 	RAISE G_EXCEPTION_HALT_VALIDATION;
953   End If;
954 
955   Exception
956   When  G_EXCEPTION_HALT_VALIDATION Then
957 		NULL;
958   When OTHERS Then
959 	-- store SQL error message on message stack for caller
960 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
961                           p_msg_name     => g_unexpected_error,
962                           p_token1       => g_sqlcode_token,
963                           p_token1_value => sqlcode,
964                           p_token2       => g_sqlerrm_token,
965                           p_token2_value => sqlerrm);
966 
967       -- notify caller of an UNEXPECTED error
968       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
969   END validate_result;
970 
971 
972 PROCEDURE validate_Amount(	x_return_status OUT NOCOPY varchar2,
973 					P_amount IN  NUMBER)
974   Is
975   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
976   Begin
977 
978   If P_Amount= OKC_API.G_MISS_NUM OR
979        P_Amount	IS NULL
980   Then
981       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'Amount' );
982       l_return_status := OKC_API.G_RET_STS_ERROR;
983 
984 	RAISE G_EXCEPTION_HALT_VALIDATION;
985   End If;
986 
987     -- call column length utility
988   /*
989   OKC_UTIL.CHECK_LENGTH
990   (
991 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
992             ,p_col_name      => 'Amount'
993             ,p_col_value     => P_amount
994             ,x_return_status => l_return_status
995    );
996    */
997 
998    -- verify that length is within allowed limits
999    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1000 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1001                           p_msg_name     => g_unexpected_error,
1002                           p_token1       => g_sqlcode_token,
1003                           p_token1_value => sqlcode,
1004                           p_token2       => g_sqlerrm_token,
1005                           p_token2_value => 'Amount Length');
1006 
1007 
1008 	-- notify caller of an error
1009 	x_return_status := OKC_API.G_RET_STS_ERROR;
1010 	-- halt further validation of this column
1011 	RAISE G_EXCEPTION_HALT_VALIDATION;
1012   End If;
1013 
1014   Exception
1015   When  G_EXCEPTION_HALT_VALIDATION Then
1016 		NULL;
1017   When OTHERS Then
1018 	-- store SQL error message on message stack for caller
1019 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1020                           p_msg_name     => g_unexpected_error,
1021                           p_token1       => g_sqlcode_token,
1022                           p_token1_value => sqlcode,
1023                           p_token2       => g_sqlerrm_token,
1024                           p_token2_value => sqlerrm);
1025 
1026       -- notify caller of an UNEXPECTED error
1027       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1028   END validate_Amount;
1029 
1030 
1031 
1032 PROCEDURE validate_objvernum(x_return_status OUT NOCOPY varchar2,
1033 					 P_object_version_number IN  Number)
1034   Is
1035   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1036   Begin
1037 
1038   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1039 
1040   If p_object_version_number = OKC_API.G_MISS_NUM OR
1041        p_object_version_number IS NULL
1042   Then
1043       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'object_version_number');
1044       x_return_status := OKC_API.G_RET_STS_ERROR;
1045 	RAISE G_EXCEPTION_HALT_VALIDATION;
1046   End If;
1047 
1048   Exception
1049   When  G_EXCEPTION_HALT_VALIDATION Then
1050 		NULL;
1051   When OTHERS Then
1052 	-- store SQL error message on message stack for caller
1053 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1054                           p_msg_name     => g_unexpected_error,
1055                           p_token1       => g_sqlcode_token,
1056                           p_token1_value => sqlcode,
1057                           p_token2       => g_sqlerrm_token,
1058                           p_token2_value => sqlerrm);
1059 
1060       -- notify caller of an UNEXPECTED error
1061       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1062   END validate_objvernum;
1063 
1064 
1065 PROCEDURE validate_fixed(	x_return_status OUT NOCOPY varchar2,
1066 					P_fixed IN  NUMBER)
1067   Is
1068   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1069   Begin
1070 
1071 
1072     -- call column length utility
1073   /*
1074   OKC_UTIL.CHECK_LENGTH
1075   (
1076 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1077             ,p_col_name      => 'Fixed'
1078             ,p_col_value     => P_fixed
1079             ,x_return_status => l_return_status
1080    );
1081    */
1082 
1083    -- verify that length is within allowed limits
1084    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1085 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1086                           p_msg_name     => g_unexpected_error,
1087                           p_token1       => g_sqlcode_token,
1088                           p_token1_value => sqlcode,
1089                           p_token2       => g_sqlerrm_token,
1090                           p_token2_value => 'Fixed Length');
1091 
1092 
1093 	-- notify caller of an error
1094 	x_return_status := OKC_API.G_RET_STS_ERROR;
1095 	-- halt further validation of this column
1096 	RAISE G_EXCEPTION_HALT_VALIDATION;
1097   End If;
1098 
1099   Exception
1100   When  G_EXCEPTION_HALT_VALIDATION Then
1101 		NULL;
1102   When OTHERS Then
1103 	-- store SQL error message on message stack for caller
1104 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1105                           p_msg_name     => g_unexpected_error,
1106                           p_token1       => g_sqlcode_token,
1107                           p_token1_value => sqlcode,
1108                           p_token2       => g_sqlerrm_token,
1109                           p_token2_value => sqlerrm);
1110 
1111       -- notify caller of an UNEXPECTED error
1112       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1113   END validate_fixed;
1114 
1115 
1116 PROCEDURE validate_actual(	x_return_status OUT NOCOPY varchar2,
1117 					P_actual IN  NUMBER)
1118   Is
1119   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1120   Begin
1121 
1122 
1123     -- call column length utility
1124   /*
1125   OKC_UTIL.CHECK_LENGTH
1126   (
1127 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1128             ,p_col_name      => 'Actual'
1129             ,p_col_value     => P_actual
1130             ,x_return_status => l_return_status
1131    );
1132    */
1133 
1134    -- verify that length is within allowed limits
1135    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1136 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1137                           p_msg_name     => g_unexpected_error,
1138                           p_token1       => g_sqlcode_token,
1139                           p_token1_value => sqlcode,
1140                           p_token2       => g_sqlerrm_token,
1141                           p_token2_value => 'Actual Length');
1142 
1143 
1144 	-- notify caller of an error
1145 	x_return_status := OKC_API.G_RET_STS_ERROR;
1146 	-- halt further validation of this column
1147 	RAISE G_EXCEPTION_HALT_VALIDATION;
1148   End If;
1149 
1150   Exception
1151   When  G_EXCEPTION_HALT_VALIDATION Then
1152 		NULL;
1153   When OTHERS Then
1154 	-- store SQL error message on message stack for caller
1155 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1156                           p_msg_name     => g_unexpected_error,
1157                           p_token1       => g_sqlcode_token,
1158                           p_token1_value => sqlcode,
1159                           p_token2       => g_sqlerrm_token,
1160                           p_token2_value => sqlerrm);
1161 
1162       -- notify caller of an UNEXPECTED error
1163       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1164   END validate_actual;
1165 
1166 
1167 PROCEDURE validate_default_default(	x_return_status OUT NOCOPY varchar2,
1168 					P_default_default IN  NUMBER)
1169   Is
1170   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1171   Begin
1172 
1173 
1174     -- call column length utility
1175   /*
1176   OKC_UTIL.CHECK_LENGTH
1177   (
1178 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1179             ,p_col_name      => 'default_default'
1180             ,p_col_value     => P_default_default
1181             ,x_return_status => l_return_status
1182    );
1183    */
1184 
1185    -- verify that length is within allowed limits
1186    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1187 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1188                           p_msg_name     => g_unexpected_error,
1189                           p_token1       => g_sqlcode_token,
1190                           p_token1_value => sqlcode,
1191                           p_token2       => g_sqlerrm_token,
1192                           p_token2_value => 'default_default');
1193 
1194 
1195 	-- notify caller of an error
1196 	x_return_status := OKC_API.G_RET_STS_ERROR;
1197 	-- halt further validation of this column
1198 	RAISE G_EXCEPTION_HALT_VALIDATION;
1199   End If;
1200 
1201   Exception
1202   When  G_EXCEPTION_HALT_VALIDATION Then
1203 		NULL;
1204   When OTHERS Then
1205 	-- store SQL error message on message stack for caller
1206 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1207                           p_msg_name     => g_unexpected_error,
1208                           p_token1       => g_sqlcode_token,
1209                           p_token1_value => sqlcode,
1210                           p_token2       => g_sqlerrm_token,
1211                           p_token2_value => sqlerrm);
1212 
1213       -- notify caller of an UNEXPECTED error
1214       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1215   END validate_default_default;
1216 
1217 PROCEDURE validate_adjustment_level(	x_return_status OUT NOCOPY varchar2,
1218 					P_adjustment_level IN  NUMBER)
1219   Is
1220   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1221   Begin
1222 
1223     -- call column length utility
1224   /*
1225   OKC_UTIL.CHECK_LENGTH
1226   (
1227 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1228             ,p_col_name      => 'adjustment_level'
1229             ,p_col_value     => P_adjustment_level
1230             ,x_return_status => l_return_status
1231    );
1232    */
1233 
1234    -- verify that length is within allowed limits
1235    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1236 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1237                           p_msg_name     => g_unexpected_error,
1238                           p_token1       => g_sqlcode_token,
1239                           p_token1_value => sqlcode,
1240                           p_token2       => g_sqlerrm_token,
1241                           p_token2_value => 'adjustment_level Length');
1242 
1243 
1244 	-- notify caller of an error
1245 	x_return_status := OKC_API.G_RET_STS_ERROR;
1246 	-- halt further validation of this column
1247 	RAISE G_EXCEPTION_HALT_VALIDATION;
1248   End If;
1249 
1250   Exception
1251   When  G_EXCEPTION_HALT_VALIDATION Then
1252 		NULL;
1253   When OTHERS Then
1254 	-- store SQL error message on message stack for caller
1255 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1256                           p_msg_name     => g_unexpected_error,
1257                           p_token1       => g_sqlcode_token,
1258                           p_token1_value => sqlcode,
1259                           p_token2       => g_sqlerrm_token,
1260                           p_token2_value => sqlerrm);
1261 
1262       -- notify caller of an UNEXPECTED error
1263       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1264   END validate_adjustment_level;
1265 
1266 PROCEDURE validate_adjustment_minimum(	x_return_status OUT NOCOPY varchar2,
1267 					P_adjustment_minimum IN  NUMBER)
1268   Is
1269   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1270   Begin
1271 
1272 
1273     -- call column length utility
1274   /*
1275   OKC_UTIL.CHECK_LENGTH
1276   (
1277 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1278             ,p_col_name      => 'adjustment_minimum'
1279             ,p_col_value     => P_adjustment_minimum
1280             ,x_return_status => l_return_status
1281    );
1282    */
1283 
1284    -- verify that length is within allowed limits
1285    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1286 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1287                           p_msg_name     => g_unexpected_error,
1288                           p_token1       => g_sqlcode_token,
1289                           p_token1_value => sqlcode,
1290                           p_token2       => g_sqlerrm_token,
1291                           p_token2_value => 'adjustment_minimum Length');
1292 
1293 
1294 	-- notify caller of an error
1295 	x_return_status := OKC_API.G_RET_STS_ERROR;
1296 	-- halt further validation of this column
1297 	RAISE G_EXCEPTION_HALT_VALIDATION;
1298   End If;
1299 
1300   Exception
1301   When  G_EXCEPTION_HALT_VALIDATION Then
1302 		NULL;
1303   When OTHERS Then
1304 	-- store SQL error message on message stack for caller
1305 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1306                           p_msg_name     => g_unexpected_error,
1307                           p_token1       => g_sqlcode_token,
1308                           p_token1_value => sqlcode,
1309                           p_token2       => g_sqlerrm_token,
1310                           p_token2_value => sqlerrm);
1311 
1312       -- notify caller of an UNEXPECTED error
1313       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1314   END validate_adjustment_minimum;
1315 
1316 
1317 PROCEDURE validate_attribute_category(	x_return_status OUT NOCOPY varchar2,
1318 							 P_attribute_category IN  varchar)
1319   Is
1320   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1321   Begin
1322 
1323   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1324 
1325   -- call column length utility
1326 
1327   Exception
1328   When  G_EXCEPTION_HALT_VALIDATION Then
1329 		NULL;
1330   When OTHERS Then
1331 	-- store SQL error message on message stack for caller
1332 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1333                           p_msg_name     => g_unexpected_error,
1334                           p_token1       => g_sqlcode_token,
1335                           p_token1_value => sqlcode,
1336                           p_token2       => g_sqlerrm_token,
1337                           p_token2_value => sqlerrm);
1338 
1339       -- notify caller of an UNEXPECTED error
1340       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1341   END validate_attribute_category;
1342 
1343 
1344 PROCEDURE validate_attribute1(	x_return_status OUT NOCOPY varchar2,
1345 							 P_attribute1 IN  varchar2)
1346   Is
1347   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1348   Begin
1349 
1350   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1351 
1352   -- call column length utility
1353   /*
1354   OKC_UTIL.CHECK_LENGTH
1355   (
1356 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1357             ,p_col_name      => 'attribute1'
1358             ,p_col_value     => p_attribute1
1359             ,x_return_status => l_return_status
1360    );
1361    */
1362 
1363    -- verify that length is within allowed limits
1364    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1365 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1366                           p_msg_name     => g_unexpected_error,
1367                           p_token1       => g_sqlcode_token,
1368                           p_token1_value => sqlcode,
1369                           p_token2       => g_sqlerrm_token,
1370                           p_token2_value => 'attribute 1 Length');
1371 
1372 
1373 	-- notify caller of an error
1374 	x_return_status := OKC_API.G_RET_STS_ERROR;
1375 	-- halt further validation of this column
1376 	RAISE G_EXCEPTION_HALT_VALIDATION;
1377   End If;
1378 
1379   Exception
1380   When  G_EXCEPTION_HALT_VALIDATION Then
1381 		NULL;
1382   When OTHERS Then
1383 	-- store SQL error message on message stack for caller
1384 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1385                           p_msg_name     => g_unexpected_error,
1386                           p_token1       => g_sqlcode_token,
1387                           p_token1_value => sqlcode,
1388                           p_token2       => g_sqlerrm_token,
1389                           p_token2_value => sqlerrm);
1390 
1391       -- notify caller of an UNEXPECTED error
1392       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1393   END validate_attribute1;
1394 PROCEDURE validate_attribute2(	x_return_status OUT NOCOPY varchar2,
1395 							 P_attribute2 IN  varchar2)
1396   Is
1397   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1398   Begin
1399 
1400   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1401 
1402   -- call column length utility
1403   /*
1404   OKC_UTIL.CHECK_LENGTH
1405   (
1406 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1407             ,p_col_name      => 'attribute2'
1408             ,p_col_value     => p_attribute2
1409             ,x_return_status => l_return_status
1410    );
1411    */
1412 
1413    -- verify that length is within allowed limits
1414    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1415 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1416                           p_msg_name     => g_unexpected_error,
1417                           p_token1       => g_sqlcode_token,
1418                           p_token1_value => sqlcode,
1419                           p_token2       => g_sqlerrm_token,
1420                           p_token2_value => 'attribute 2 Length');
1421 
1422 	-- notify caller of an error
1423 	x_return_status := OKC_API.G_RET_STS_ERROR;
1424 	-- halt further validation of this column
1425 	RAISE G_EXCEPTION_HALT_VALIDATION;
1426   End If;
1427 
1428   Exception
1429   When  G_EXCEPTION_HALT_VALIDATION Then
1430 		NULL;
1431   When OTHERS Then
1432 	-- store SQL error message on message stack for caller
1433 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1434                           p_msg_name     => g_unexpected_error,
1435                           p_token1       => g_sqlcode_token,
1436                           p_token1_value => sqlcode,
1437                           p_token2       => g_sqlerrm_token,
1438                           p_token2_value => sqlerrm);
1439 
1440       -- notify caller of an UNEXPECTED error
1441       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1442   END validate_attribute2;
1443 
1444 
1445 PROCEDURE validate_attribute3(	x_return_status OUT NOCOPY varchar2,
1446 							 P_attribute3 IN  varchar2)
1447   Is
1448   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1449   Begin
1450 
1451   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1452 
1453   -- call column length utility
1454   /*
1455   OKC_UTIL.CHECK_LENGTH
1456   (
1457 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1458             ,p_col_name      => 'attribute3'
1459             ,p_col_value     => p_attribute3
1460             ,x_return_status => l_return_status
1461    );
1462    */
1463 
1464    -- verify that length is within allowed limits
1465    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1466 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1467                           p_msg_name     => g_unexpected_error,
1468                           p_token1       => g_sqlcode_token,
1469                           p_token1_value => sqlcode,
1470                           p_token2       => g_sqlerrm_token,
1471                           p_token2_value => 'attribute 3 Length');
1472 
1473 	-- notify caller of an error
1474 	x_return_status := OKC_API.G_RET_STS_ERROR;
1475 	-- halt further validation of this column
1476 	RAISE G_EXCEPTION_HALT_VALIDATION;
1477   End If;
1478 
1479   Exception
1480   When  G_EXCEPTION_HALT_VALIDATION Then
1481 		NULL;
1482   When OTHERS Then
1483 	-- store SQL error message on message stack for caller
1484 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1485                           p_msg_name     => g_unexpected_error,
1486                           p_token1       => g_sqlcode_token,
1487                           p_token1_value => sqlcode,
1488                           p_token2       => g_sqlerrm_token,
1489                           p_token2_value => sqlerrm);
1490 
1491       -- notify caller of an UNEXPECTED error
1492       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1493   END validate_attribute3;
1494 
1495 PROCEDURE validate_attribute4 (x_return_status OUT NOCOPY varchar2,
1496 							 P_attribute4 IN  varchar2)
1497   Is
1498   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1499   Begin
1500 
1501   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1502 
1503   -- call column length utility
1504   /*
1505   OKC_UTIL.CHECK_LENGTH
1506   (
1507 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1508             ,p_col_name      => 'attribute4'
1509             ,p_col_value     => p_attribute4
1510             ,x_return_status => l_return_status
1511    );
1512    */
1513 
1514    -- verify that length is within allowed limits
1515    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1516 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1517                           p_msg_name     => g_unexpected_error,
1518                           p_token1       => g_sqlcode_token,
1519                           p_token1_value => sqlcode,
1520                           p_token2       => g_sqlerrm_token,
1521                           p_token2_value => 'attribute 4 Length');
1522 
1523 	-- notify caller of an error
1524 	x_return_status := OKC_API.G_RET_STS_ERROR;
1525 	-- halt further validation of this column
1526 	RAISE G_EXCEPTION_HALT_VALIDATION;
1527   End If;
1528 
1529   Exception
1530   When  G_EXCEPTION_HALT_VALIDATION Then
1531 		NULL;
1532   When OTHERS Then
1533 	-- store SQL error message on message stack for caller
1534 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1535                           p_msg_name     => g_unexpected_error,
1536                           p_token1       => g_sqlcode_token,
1537                           p_token1_value => sqlcode,
1538                           p_token2       => g_sqlerrm_token,
1539                           p_token2_value => sqlerrm);
1540 
1541       -- notify caller of an UNEXPECTED error
1542       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1543   END validate_attribute4;
1544 
1545 
1546 PROCEDURE validate_attribute5(	x_return_status OUT NOCOPY varchar2,
1547 							 P_attribute5 IN  varchar2)
1548   Is
1549   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1550   Begin
1551 
1552   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1553 
1554   -- call column length utility
1555   /*
1556   OKC_UTIL.CHECK_LENGTH
1557   (
1558 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1559             ,p_col_name      => 'attribute5'
1560             ,p_col_value     => p_attribute5
1561             ,x_return_status => l_return_status
1562    );
1563    */
1564 
1565    -- verify that length is within allowed limits
1566    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1567 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1568                           p_msg_name     => g_unexpected_error,
1569                           p_token1       => g_sqlcode_token,
1570                           p_token1_value => sqlcode,
1571                           p_token2       => g_sqlerrm_token,
1572                           p_token2_value => 'attribute 5 Length');
1573 
1574 	-- notify caller of an error
1575 	x_return_status := OKC_API.G_RET_STS_ERROR;
1576 	-- halt further validation of this column
1577 	RAISE G_EXCEPTION_HALT_VALIDATION;
1578   End If;
1579 
1580   Exception
1581   When  G_EXCEPTION_HALT_VALIDATION Then
1582 		NULL;
1583   When OTHERS Then
1584 	-- store SQL error message on message stack for caller
1585 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1586                           p_msg_name     => g_unexpected_error,
1587                           p_token1       => g_sqlcode_token,
1588                           p_token1_value => sqlcode,
1589                           p_token2       => g_sqlerrm_token,
1590                           p_token2_value => sqlerrm);
1591 
1592       -- notify caller of an UNEXPECTED error
1593       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1594   END validate_attribute5;
1595 
1596 
1597 PROCEDURE validate_attribute6(	x_return_status OUT NOCOPY varchar2,
1598 							 P_attribute6 IN  varchar2)
1599   Is
1600   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1601   Begin
1602 
1603   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1604 
1605   -- call column length utility
1606   /*
1607   OKC_UTIL.CHECK_LENGTH
1608   (
1609 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1610             ,p_col_name      => 'attribute6'
1611             ,p_col_value     => p_attribute6
1612             ,x_return_status => l_return_status
1613    );
1614    */
1615 
1616    -- verify that length is within allowed limits
1617    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1618 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1619                           p_msg_name     => g_unexpected_error,
1620                           p_token1       => g_sqlcode_token,
1621                           p_token1_value => sqlcode,
1622                           p_token2       => g_sqlerrm_token,
1623                           p_token2_value => 'attribute 6 Length');
1624 
1625 	-- notify caller of an error
1626 	x_return_status := OKC_API.G_RET_STS_ERROR;
1627 	-- halt further validation of this column
1628 	RAISE G_EXCEPTION_HALT_VALIDATION;
1629   End If;
1630 
1631   Exception
1632   When  G_EXCEPTION_HALT_VALIDATION Then
1633 		NULL;
1634   When OTHERS Then
1635 	-- store SQL error message on message stack for caller
1636 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1637                           p_msg_name     => g_unexpected_error,
1638                           p_token1       => g_sqlcode_token,
1639                           p_token1_value => sqlcode,
1640                           p_token2       => g_sqlerrm_token,
1641                           p_token2_value => sqlerrm);
1642 
1643       -- notify caller of an UNEXPECTED error
1644       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1645   END validate_attribute6;
1646 
1647 
1648 PROCEDURE validate_attribute7(	x_return_status OUT NOCOPY varchar2,
1649 							 P_attribute7 IN  varchar2)
1650   Is
1651   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1652   Begin
1653 
1654   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1655 
1656   -- call column length utility
1657   /*
1658   OKC_UTIL.CHECK_LENGTH
1659   (
1660 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1661             ,p_col_name      => 'attribute7'
1662             ,p_col_value     => p_attribute7
1663             ,x_return_status => l_return_status
1664    );
1665    */
1666 
1667    -- verify that length is within allowed limits
1668    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1669 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1670                           p_msg_name     => g_unexpected_error,
1671                           p_token1       => g_sqlcode_token,
1672                           p_token1_value => sqlcode,
1673                           p_token2       => g_sqlerrm_token,
1674                           p_token2_value => 'attribute 7 Length');
1675 
1676 	-- notify caller of an error
1677 	x_return_status := OKC_API.G_RET_STS_ERROR;
1678 	-- halt further validation of this column
1679 	RAISE G_EXCEPTION_HALT_VALIDATION;
1680   End If;
1681 
1682   Exception
1683   When  G_EXCEPTION_HALT_VALIDATION Then
1684 		NULL;
1685   When OTHERS Then
1686 	-- store SQL error message on message stack for caller
1687 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1688                           p_msg_name     => g_unexpected_error,
1689                           p_token1       => g_sqlcode_token,
1690                           p_token1_value => sqlcode,
1691                           p_token2       => g_sqlerrm_token,
1692                           p_token2_value => sqlerrm);
1693 
1694       -- notify caller of an UNEXPECTED error
1695       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1696   END validate_attribute7;
1697 
1698 
1699 
1700 PROCEDURE validate_attribute8 (x_return_status OUT NOCOPY varchar2,
1701 							 P_attribute8 IN  varchar2)
1702   Is
1703   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1704   Begin
1705 
1706   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1707 
1708   -- call column length utility
1709   /*
1710   OKC_UTIL.CHECK_LENGTH
1711   (
1712 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1713             ,p_col_name      => 'attribute8'
1714             ,p_col_value     => p_attribute8
1715             ,x_return_status => l_return_status
1716    );
1717    */
1718 
1719    -- verify that length is within allowed limits
1720    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1721 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1722                           p_msg_name     => g_unexpected_error,
1723                           p_token1       => g_sqlcode_token,
1724                           p_token1_value => sqlcode,
1725                           p_token2       => g_sqlerrm_token,
1726                           p_token2_value => 'attribute 8 Length');
1727 
1728 	-- notify caller of an error
1729 	x_return_status := OKC_API.G_RET_STS_ERROR;
1730 	-- halt further validation of this column
1731 	RAISE G_EXCEPTION_HALT_VALIDATION;
1732   End If;
1733 
1734   Exception
1735   When  G_EXCEPTION_HALT_VALIDATION Then
1736 		NULL;
1737   When OTHERS Then
1738 	-- store SQL error message on message stack for caller
1739 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1740                           p_msg_name     => g_unexpected_error,
1741                           p_token1       => g_sqlcode_token,
1742                           p_token1_value => sqlcode,
1743                           p_token2       => g_sqlerrm_token,
1744                           p_token2_value => sqlerrm);
1745 
1746       -- notify caller of an UNEXPECTED error
1747       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1748   END validate_attribute8;
1749 
1750 
1751 
1752 PROCEDURE validate_attribute9(	x_return_status OUT NOCOPY varchar2,
1753 							 P_attribute9 IN  varchar2)
1754   Is
1755   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1756   Begin
1757 
1758   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1759 
1760   -- call column length utility
1761   /*
1762   OKC_UTIL.CHECK_LENGTH
1763   (
1764 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1765             ,p_col_name      => 'attribute9'
1766             ,p_col_value     => p_attribute9
1767             ,x_return_status => l_return_status
1768    );
1769    */
1770 
1771    -- verify that length is within allowed limits
1772    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1773 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1774                           p_msg_name     => g_unexpected_error,
1775                           p_token1       => g_sqlcode_token,
1776                           p_token1_value => sqlcode,
1777                           p_token2       => g_sqlerrm_token,
1778                           p_token2_value => 'attribute 9 Length');
1779 
1780 	-- notify caller of an error
1781 	x_return_status := OKC_API.G_RET_STS_ERROR;
1782 	-- halt further validation of this column
1783 	RAISE G_EXCEPTION_HALT_VALIDATION;
1784   End If;
1785 
1786   Exception
1787   When  G_EXCEPTION_HALT_VALIDATION Then
1788 		NULL;
1789   When OTHERS Then
1790 	-- store SQL error message on message stack for caller
1791 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1792                           p_msg_name     => g_unexpected_error,
1793                           p_token1       => g_sqlcode_token,
1794                           p_token1_value => sqlcode,
1795                           p_token2       => g_sqlerrm_token,
1796                           p_token2_value => sqlerrm);
1797 
1798       -- notify caller of an UNEXPECTED error
1799       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1800   END validate_attribute9;
1801 
1802 
1803 PROCEDURE validate_attribute10(	x_return_status OUT NOCOPY varchar2,
1804 							 P_attribute10 IN  varchar2)
1805   Is
1806   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1807   Begin
1808 
1809   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1810 
1811   -- call column length utility
1812   /*
1813   OKC_UTIL.CHECK_LENGTH
1814   (
1815 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1816             ,p_col_name      => 'attribute10'
1817             ,p_col_value     => p_attribute10
1818             ,x_return_status => l_return_status
1819    );
1820    */
1821 
1822    -- verify that length is within allowed limits
1823    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1824 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1825                           p_msg_name     => g_unexpected_error,
1826                           p_token1       => g_sqlcode_token,
1827                           p_token1_value => sqlcode,
1828                           p_token2       => g_sqlerrm_token,
1829                           p_token2_value => 'attribute 10 Length');
1830 
1831 	-- notify caller of an error
1832 	x_return_status := OKC_API.G_RET_STS_ERROR;
1833 	-- halt further validation of this column
1834 	RAISE G_EXCEPTION_HALT_VALIDATION;
1835   End If;
1836 
1837   Exception
1838   When  G_EXCEPTION_HALT_VALIDATION Then
1839 		NULL;
1840   When OTHERS Then
1841 	-- store SQL error message on message stack for caller
1842 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1843                           p_msg_name     => g_unexpected_error,
1844                           p_token1       => g_sqlcode_token,
1845                           p_token1_value => sqlcode,
1846                           p_token2       => g_sqlerrm_token,
1847                           p_token2_value => sqlerrm);
1848 
1849       -- notify caller of an UNEXPECTED error
1850       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1851   END validate_attribute10;
1852 
1853 
1854 
1855 PROCEDURE validate_attribute11(	x_return_status OUT NOCOPY varchar2,
1856 							 P_attribute11 IN  varchar2)
1857   Is
1858   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1859   Begin
1860 
1861   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1862 
1863   -- call column length utility
1864 
1865   /*
1866   OKC_UTIL.CHECK_LENGTH
1867   (
1868 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1869             ,p_col_name      => 'attribute11'
1870             ,p_col_value     => p_attribute11
1871             ,x_return_status => l_return_status
1872    );
1873    */
1874 
1875    -- verify that length is within allowed limits
1876    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1877 OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1878                           p_msg_name     => g_unexpected_error,
1879                           p_token1       => g_sqlcode_token,
1880                           p_token1_value => sqlcode,
1881                           p_token2       => g_sqlerrm_token,
1882                           p_token2_value => 'attribute 11 Length');
1883 
1884 	-- notify caller of an error
1885 	x_return_status := OKC_API.G_RET_STS_ERROR;
1886 	-- halt further validation of this column
1887 	RAISE G_EXCEPTION_HALT_VALIDATION;
1888   End If;
1889 
1890   Exception
1891   When  G_EXCEPTION_HALT_VALIDATION Then
1892 		NULL;
1893   When OTHERS Then
1894 	-- store SQL error message on message stack for caller
1895 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1896                           p_msg_name     => g_unexpected_error,
1897                           p_token1       => g_sqlcode_token,
1898                           p_token1_value => sqlcode,
1899                           p_token2       => g_sqlerrm_token,
1900                           p_token2_value => sqlerrm);
1901 
1902       -- notify caller of an UNEXPECTED error
1903       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1904   END validate_attribute11;
1905 
1906 
1907 
1908 
1909 PROCEDURE validate_attribute12(	x_return_status OUT NOCOPY varchar2,
1910 							 P_attribute12 IN  varchar2)
1911   Is
1912   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1913   Begin
1914 
1915   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1916 
1917   -- call column length utility
1918   /*
1919   OKC_UTIL.CHECK_LENGTH
1920   (
1921 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1922             ,p_col_name      => 'attribute12'
1923             ,p_col_value     => p_attribute12
1924             ,x_return_status => l_return_status
1925    );
1926    */
1927 
1928    -- verify that length is within allowed limits
1929    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1930 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1931                           p_msg_name     => g_unexpected_error,
1932                           p_token1       => g_sqlcode_token,
1933                           p_token1_value => sqlcode,
1934                           p_token2       => g_sqlerrm_token,
1935                           p_token2_value => 'attribute 12 Length');
1936 
1937 	-- notify caller of an error
1938 	x_return_status := OKC_API.G_RET_STS_ERROR;
1939 	-- halt further validation of this column
1940 	RAISE G_EXCEPTION_HALT_VALIDATION;
1941   End If;
1942 
1943   Exception
1944   When  G_EXCEPTION_HALT_VALIDATION Then
1945 		NULL;
1946   When OTHERS Then
1947 	-- store SQL error message on message stack for caller
1948 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1949                           p_msg_name     => g_unexpected_error,
1950                           p_token1       => g_sqlcode_token,
1951                           p_token1_value => sqlcode,
1952                           p_token2       => g_sqlerrm_token,
1953                           p_token2_value => sqlerrm);
1954 
1955       -- notify caller of an UNEXPECTED error
1956       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1957   END validate_attribute12;
1958 
1959 
1960 
1961 
1962 PROCEDURE validate_attribute13(	x_return_status OUT NOCOPY varchar2,
1963 							 P_attribute13 IN  varchar2)
1964   Is
1965   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1966   Begin
1967 
1968   x_return_status := OKC_API.G_RET_STS_SUCCESS;
1969 
1970   -- call column length utility
1971   /*
1972   OKC_UTIL.CHECK_LENGTH
1973   (
1974 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
1975             ,p_col_name      => 'attribute13'
1976             ,p_col_value     => p_attribute13
1977             ,x_return_status => l_return_status
1978    );
1979    */
1980 
1981    -- verify that length is within allowed limits
1982    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1983 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
1984                           p_msg_name     => g_unexpected_error,
1985                           p_token1       => g_sqlcode_token,
1986                           p_token1_value => sqlcode,
1987                           p_token2       => g_sqlerrm_token,
1988                           p_token2_value => 'attribute 13 Length');
1989 
1990 	-- notify caller of an error
1991 	x_return_status := OKC_API.G_RET_STS_ERROR;
1992 	-- halt further validation of this column
1993 	RAISE G_EXCEPTION_HALT_VALIDATION;
1994   End If;
1995 
1996   Exception
1997   When  G_EXCEPTION_HALT_VALIDATION Then
1998 		NULL;
1999   When OTHERS Then
2000 	-- store SQL error message on message stack for caller
2001 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
2002                           p_msg_name     => g_unexpected_error,
2003                           p_token1       => g_sqlcode_token,
2004                           p_token1_value => sqlcode,
2005                           p_token2       => g_sqlerrm_token,
2006                           p_token2_value => sqlerrm);
2007 
2008       -- notify caller of an UNEXPECTED error
2009       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2010   END validate_attribute13;
2011 
2012 
2013 
2014 
2015 PROCEDURE validate_attribute14(	x_return_status OUT NOCOPY varchar2,
2016 							 P_attribute14 IN  varchar2)
2017   Is
2018   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
2019   Begin
2020 
2021   x_return_status := OKC_API.G_RET_STS_SUCCESS;
2022 
2023   -- call column length utility
2024   /*
2025   OKC_UTIL.CHECK_LENGTH
2026   (
2027 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
2028             ,p_col_name      => 'attribute14'
2029             ,p_col_value     => p_attribute14
2030             ,x_return_status => l_return_status
2031    );
2032    */
2033 
2034    -- verify that length is within allowed limits
2035    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
2036 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
2037                           p_msg_name     => g_unexpected_error,
2038                           p_token1       => g_sqlcode_token,
2039                           p_token1_value => sqlcode,
2040                           p_token2       => g_sqlerrm_token,
2041                           p_token2_value => 'attribute 14 Length');
2042 
2043 	-- notify caller of an error
2044 	x_return_status := OKC_API.G_RET_STS_ERROR;
2045 	-- halt further validation of this column
2046 	RAISE G_EXCEPTION_HALT_VALIDATION;
2047   End If;
2048 
2049   Exception
2050   When  G_EXCEPTION_HALT_VALIDATION Then
2051 		NULL;
2052   When OTHERS Then
2053 	-- store SQL error message on message stack for caller
2054 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
2055                           p_msg_name     => g_unexpected_error,
2056                           p_token1       => g_sqlcode_token,
2057                           p_token1_value => sqlcode,
2058                           p_token2       => g_sqlerrm_token,
2059                           p_token2_value => sqlerrm);
2060 
2061       -- notify caller of an UNEXPECTED error
2062       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2063   END validate_attribute14;
2064 
2065 
2066 
2067 PROCEDURE validate_attribute15(	x_return_status OUT NOCOPY varchar2,
2068 							 P_attribute15 IN  varchar2)
2069   Is
2070   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
2071   Begin
2072   x_return_status := OKC_API.G_RET_STS_SUCCESS;
2073 
2074   -- call column length utility
2075   /*
2076   OKC_UTIL.CHECK_LENGTH
2077   (
2078 		 p_view_name     => 'OKS_BILL_SUBLINE_DTLS_V'
2079             ,p_col_name      => 'attribute15'
2080             ,p_col_value     => p_attribute15
2081             ,x_return_status => l_return_status
2082    );
2083    */
2084 
2085    -- verify that length is within allowed limits
2086    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
2087 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
2088                           p_msg_name     => g_unexpected_error,
2089                           p_token1       => g_sqlcode_token,
2090                           p_token1_value => sqlcode,
2091                           p_token2       => g_sqlerrm_token,
2092                           p_token2_value => 'attribute 15 Length');
2093 
2094 	-- notify caller of an error
2095 	x_return_status := OKC_API.G_RET_STS_ERROR;
2096 	-- halt further validation of this column
2097 	RAISE G_EXCEPTION_HALT_VALIDATION;
2098   End If;
2099 
2100   Exception
2101   When  G_EXCEPTION_HALT_VALIDATION Then
2102 		NULL;
2103   When OTHERS Then
2104 	-- store SQL error message on message stack for caller
2105 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
2106                           p_msg_name     => g_unexpected_error,
2107                           p_token1       => g_sqlcode_token,
2108                           p_token1_value => sqlcode,
2109                           p_token2       => g_sqlerrm_token,
2110                           p_token2_value => sqlerrm);
2111 
2112       -- notify caller of an UNEXPECTED error
2113       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2114   END validate_attribute15;
2115 
2116 
2117 /*  -----------------------------------------------------
2118   -- Validate_Attributes for:OKS_BILL_SUBLINE_DTLS_V --
2119   -----------------------------------------------------
2120 
2121   FUNCTION Validate_Attributes (
2122     p_bsdv_rec IN  bsdv_rec_type
2123   ) RETURN VARCHAR2 IS
2124     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2125   BEGIN
2126     IF p_bsdv_rec.id = OKC_API.G_MISS_NUM OR
2127        p_bsdv_rec.id IS NULL
2128     THEN
2129       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'id');
2130       l_return_status := OKC_API.G_RET_STS_ERROR;
2131     ELSIF p_bsdv_rec.object_version_number = OKC_API.G_MISS_NUM OR
2132           p_bsdv_rec.object_version_number IS NULL
2133     THEN
2134       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'object_version_number');
2135       l_return_status := OKC_API.G_RET_STS_ERROR;
2136     ELSIF p_bsdv_rec.bsl_id = OKC_API.G_MISS_NUM OR
2137           p_bsdv_rec.bsl_id IS NULL
2138     THEN
2139       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'bsl_id');
2140       l_return_status := OKC_API.G_RET_STS_ERROR;
2141     ELSIF p_bsdv_rec.unit_of_measure = OKC_API.G_MISS_CHAR OR
2142           p_bsdv_rec.unit_of_measure IS NULL
2143     THEN
2144       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'unit_of_measure');
2145       l_return_status := OKC_API.G_RET_STS_ERROR;
2146     ELSIF p_bsdv_rec.amcv_yn = OKC_API.G_MISS_CHAR OR
2147           p_bsdv_rec.amcv_yn IS NULL
2148     THEN
2149       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'amcv_yn');
2150       l_return_status := OKC_API.G_RET_STS_ERROR;
2151     ELSIF p_bsdv_rec.result = OKC_API.G_MISS_NUM OR
2152           p_bsdv_rec.result IS NULL
2153     THEN
2154       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'result');
2155       l_return_status := OKC_API.G_RET_STS_ERROR;
2156     ELSIF p_bsdv_rec.amount = OKC_API.G_MISS_NUM OR
2157           p_bsdv_rec.amount IS NULL
2158     THEN
2159       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'amount');
2160       l_return_status := OKC_API.G_RET_STS_ERROR;
2161     END IF;
2162     RETURN(l_return_status);
2163   END Validate_Attributes;
2164   */
2165 
2166 
2167 
2168 
2169 FUNCTION Validate_Attributes (
2170     p_bsdv_rec IN  bsdv_rec_type
2171   )
2172   Return VARCHAR2 Is
2173     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2174     x_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2175 
2176   Begin
2177   -- call OKC_UTIL.ADD_VIEW to prepare the PL/SQL table to hold columns of view
2178 
2179     OKC_UTIL.ADD_VIEW('OKS_BILL_SUBLINE_DTLS_V',x_return_status);
2180 
2181     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2182        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2183           -- need to leave
2184           l_return_status := x_return_status;
2185           RAISE G_EXCEPTION_HALT_VALIDATION;
2186        ELSE
2187           -- record that there is a error
2188           l_return_status := x_return_status;
2189        END IF;
2190     END IF;
2191 
2192     --Column Level Validation
2193 
2194     --ID
2195     validate_id(x_return_status, p_bsdv_rec.id);
2196 
2197     -- store the highest degree of error
2198     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2199         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2200         -- need to leave
2201         l_return_status := x_return_status;
2202         RAISE G_EXCEPTION_HALT_VALIDATION;
2203         ELSE
2204         -- record that there was an error
2205         l_return_status := x_return_status;
2206         END IF;
2207     END IF;
2208 
2209 --bsl_id
2210 	 validate_bsl_id(x_return_status, p_bsdv_rec.bsl_id);
2211     -- store the highest degree of error
2212     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2213         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2214         -- need to leave
2215         l_return_status := x_return_status;
2216         RAISE G_EXCEPTION_HALT_VALIDATION;
2217         ELSE
2218         -- record that there was an error
2219         l_return_status := x_return_status;
2220         END IF;
2221     END IF;
2222 
2223     --bsl_id_averaged
2224 	 validate_bsl_id_averaged(x_return_status, p_bsdv_rec.bsl_id_averaged);
2225     -- store the highest degree of error
2226     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2227         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2228         -- need to leave
2229         l_return_status := x_return_status;
2230         RAISE G_EXCEPTION_HALT_VALIDATION;
2231         ELSE
2232         -- record that there was an error
2233         l_return_status := x_return_status;
2234         END IF;
2235     END IF;
2236 
2237 	--bsd_id
2238 
2239  	validate_bsd_id(x_return_status, p_bsdv_rec.bsd_id);
2240     -- store the highest degree of error
2241     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2242 
2243         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2244 
2245         -- need to leave
2246         l_return_status := x_return_status;
2247         RAISE G_EXCEPTION_HALT_VALIDATION;
2248         ELSE
2249         -- record that there was an error
2250         l_return_status := x_return_status;
2251         END IF;
2252     END IF;
2253 
2254    --bsd_id_applied
2255     validate_bsd_id_applied(x_return_status, p_bsdv_rec.bsd_id_applied);
2256     -- store the highest degree of error
2257     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2258 
2259         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2260 
2261         -- need to leave
2262         l_return_status := x_return_status;
2263         RAISE G_EXCEPTION_HALT_VALIDATION;
2264         ELSE
2265         -- record that there was an error
2266         l_return_status := x_return_status;
2267         END IF;
2268     END IF;
2269 
2270    --ccr_id
2271       validate_ccr_id(x_return_status, p_bsdv_rec.ccr_id);
2272         -- store the highest degree of error
2273         IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2274 
2275            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2276 
2277             -- need to leave
2278             l_return_status := x_return_status;
2279             RAISE G_EXCEPTION_HALT_VALIDATION;
2280             ELSE
2281             -- record that there was an error
2282             l_return_status := x_return_status;
2283             END IF;
2284         END IF;
2285 
2286     --cgr_id
2287       validate_cgr_id(x_return_status, p_bsdv_rec.cgr_id);
2288         -- store the highest degree of error
2289         IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2290 
2291            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2292 
2293             -- need to leave
2294             l_return_status := x_return_status;
2295             RAISE G_EXCEPTION_HALT_VALIDATION;
2296             ELSE
2297             -- record that there was an error
2298             l_return_status := x_return_status;
2299             END IF;
2300         END IF;
2301 
2302       --start_read
2303       validate_start_reading(x_return_status, p_bsdv_rec.start_reading);
2304         -- store the highest degree of error
2305         IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2306 
2307            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2308 
2309             -- need to leave
2310             l_return_status := x_return_status;
2311             RAISE G_EXCEPTION_HALT_VALIDATION;
2312             ELSE
2313             -- record that there was an error
2314             l_return_status := x_return_status;
2315             END IF;
2316         END IF;
2317 
2318      --end_read
2319       validate_end_reading(x_return_status, p_bsdv_rec.end_reading);
2320         -- store the highest degree of error
2321         IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2322 
2323            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2324 
2325             -- need to leave
2326             l_return_status := x_return_status;
2327             RAISE G_EXCEPTION_HALT_VALIDATION;
2328             ELSE
2329             -- record that there was an error
2330             l_return_status := x_return_status;
2331             END IF;
2332         END IF;
2333 
2334   --base_read
2335       validate_base_reading(x_return_status, p_bsdv_rec.base_reading);
2336         -- store the highest degree of error
2337         IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2338 
2339            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2340 
2341             -- need to leave
2342             l_return_status := x_return_status;
2343             RAISE G_EXCEPTION_HALT_VALIDATION;
2344             ELSE
2345             -- record that there was an error
2346             l_return_status := x_return_status;
2347             END IF;
2348         END IF;
2349 
2350      --estimated_quantity
2351         validate_estimated_quantity(x_return_status, p_bsdv_rec.estimated_quantity);
2352         -- store the highest degree of error
2353         IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2354 
2355            IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2356 
2357             -- need to leave
2358             l_return_status := x_return_status;
2359             RAISE G_EXCEPTION_HALT_VALIDATION;
2360             ELSE
2361             -- record that there was an error
2362             l_return_status := x_return_status;
2363             END IF;
2364         END IF;
2365 
2366     --unit_of_measure
2367 	 validate_unit_of_measure(x_return_status, p_bsdv_rec.unit_of_measure);
2368     -- store the highest degree of error
2369     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2370         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2371         -- need to leave
2372         l_return_status := x_return_status;
2373         RAISE G_EXCEPTION_HALT_VALIDATION;
2374         ELSE
2375         -- record that there was an error
2376         l_return_status := x_return_status;
2377         END IF;
2378     END IF;
2379 
2380 	--amcv_yn
2381 
2382  	validate_amcv_yn(x_return_status, p_bsdv_rec.amcv_yn);
2383     -- store the highest degree of error
2384     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2385 
2386         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2387 
2388         -- need to leave
2389         l_return_status := x_return_status;
2390         RAISE G_EXCEPTION_HALT_VALIDATION;
2391         ELSE
2392         -- record that there was an error
2393         l_return_status := x_return_status;
2394         END IF;
2395     END IF;
2396 
2397     --result
2398     validate_result(x_return_status, p_bsdv_rec.result);
2399     -- store the highest degree of error
2400     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2401 
2402         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2403 
2404         -- need to leave
2405         l_return_status := x_return_status;
2406         RAISE G_EXCEPTION_HALT_VALIDATION;
2407         ELSE
2408         -- record that there was an error
2409         l_return_status := x_return_status;
2410         END IF;
2411     END IF;
2412 
2413 	--AMOUNT
2414 		validate_amount(x_return_status, p_bsdv_rec.amount);
2415 
2416     -- store the highest degree of error
2417     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2418         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2419         -- need to leave
2420         l_return_status := x_return_status;
2421         RAISE G_EXCEPTION_HALT_VALIDATION;
2422         ELSE
2423         -- record that there was an error
2424         l_return_status := x_return_status;
2425         END IF;
2426     END IF;
2427 
2428 
2429     --OBJECT_VERSION_NUMBER
2430     validate_objvernum(x_return_status, p_bsdv_rec.object_version_number);
2431 
2432     -- store the highest degree of error
2433     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2434         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2435         -- need to leave
2436         l_return_status := x_return_status;
2437         RAISE G_EXCEPTION_HALT_VALIDATION;
2438         ELSE
2439         -- record that there was an error
2440         l_return_status := x_return_status;
2441         END IF;
2442     END IF;
2443 
2444     --fixed
2445     validate_fixed(x_return_status, p_bsdv_rec.fixed);
2446 
2447     -- store the highest degree of error
2448     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2449         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2450         -- need to leave
2451         l_return_status := x_return_status;
2452         RAISE G_EXCEPTION_HALT_VALIDATION;
2453         ELSE
2454         -- record that there was an error
2455         l_return_status := x_return_status;
2456         END IF;
2457     END IF;
2458 
2459     --actual
2460 	 validate_actual(x_return_status, p_bsdv_rec.actual);
2461     -- store the highest degree of error
2462     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2463         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2464         -- need to leave
2465         l_return_status := x_return_status;
2466         RAISE G_EXCEPTION_HALT_VALIDATION;
2467         ELSE
2468         -- record that there was an error
2469         l_return_status := x_return_status;
2470         END IF;
2471     END IF;
2472 
2473     --default_default
2474 	 validate_default_default(x_return_status, p_bsdv_rec.default_default);
2475     -- store the highest degree of error
2476     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2477         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2478         -- need to leave
2479         l_return_status := x_return_status;
2480         RAISE G_EXCEPTION_HALT_VALIDATION;
2481         ELSE
2482         -- record that there was an error
2483         l_return_status := x_return_status;
2484         END IF;
2485     END IF;
2486 
2487 	--adjustment_level
2488 
2489  	validate_adjustment_level(x_return_status, p_bsdv_rec.adjustment_level);
2490     -- store the highest degree of error
2491     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2492 
2493         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2494 
2495         -- need to leave
2496         l_return_status := x_return_status;
2497         RAISE G_EXCEPTION_HALT_VALIDATION;
2498         ELSE
2499         -- record that there was an error
2500         l_return_status := x_return_status;
2501         END IF;
2502     END IF;
2503 
2504     -- adjustment_level
2505 
2506     validate_adjustment_level(x_return_status, p_bsdv_rec.adjustment_level);
2507     -- store the highest degree of error
2508     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2509 
2510         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2511 
2512         -- need to leave
2513         l_return_status := x_return_status;
2514         RAISE G_EXCEPTION_HALT_VALIDATION;
2515         ELSE
2516         -- record that there was an error
2517         l_return_status := x_return_status;
2518         END IF;
2519     END IF;
2520 
2521 
2522 	--ATTRIBUTE_CATEGORY
2523 
2524 		validate_attribute_category(x_return_status, p_bsdv_rec.attribute_category);
2525 
2526     -- store the highest degree of error
2527     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2528         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2529         -- need to leave
2530         l_return_status := x_return_status;
2531         RAISE G_EXCEPTION_HALT_VALIDATION;
2532         ELSE
2533         -- record that there was an error
2534         l_return_status := x_return_status;
2535         END IF;
2536     END IF;
2537 
2538 
2539 	--ATTRIBUTE1
2540 
2541 		validate_attribute1(x_return_status, p_bsdv_rec.attribute1);
2542 
2543     -- store the highest degree of error
2544     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2545         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2546         -- need to leave
2547         l_return_status := x_return_status;
2548         RAISE G_EXCEPTION_HALT_VALIDATION;
2549         ELSE
2550         -- record that there was an error
2551         l_return_status := x_return_status;
2552         END IF;
2553     END IF;
2554 
2555 	--ATTRIBUTE2
2556 
2557 		validate_attribute2(x_return_status, p_bsdv_rec.attribute2);
2558 
2559     -- store the highest degree of error
2560     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2561         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2562         -- need to leave
2563         l_return_status := x_return_status;
2564         RAISE G_EXCEPTION_HALT_VALIDATION;
2565         ELSE
2566         -- record that there was an error
2567         l_return_status := x_return_status;
2568         END IF;
2569     END IF;
2570 
2571 
2572 --ATTRIBUTE3
2573 
2574 		validate_attribute3(x_return_status, p_bsdv_rec.attribute3);
2575 
2576     -- store the highest degree of error
2577     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2578         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2579         -- need to leave
2580         l_return_status := x_return_status;
2581         RAISE G_EXCEPTION_HALT_VALIDATION;
2582         ELSE
2583         -- record that there was an error
2584         l_return_status := x_return_status;
2585         END IF;
2586     END IF;
2587 
2588 
2589 --ATTRIBUTE4
2590 		validate_attribute4(x_return_status, p_bsdv_rec.attribute4);
2591 
2592     -- store the highest degree of error
2593     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2594         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2595         -- need to leave
2596         l_return_status := x_return_status;
2597         RAISE G_EXCEPTION_HALT_VALIDATION;
2598         ELSE
2599         -- record that there was an error
2600         l_return_status := x_return_status;
2601         END IF;
2602     END IF;
2603 
2604 
2605 	--ATTRIBUTE5
2606 		validate_attribute5(x_return_status, p_bsdv_rec.attribute5);
2607 
2608     -- store the highest degree of error
2609     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2610         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2611         -- need to leave
2612         l_return_status := x_return_status;
2613         RAISE G_EXCEPTION_HALT_VALIDATION;
2614         ELSE
2615         -- record that there was an error
2616         l_return_status := x_return_status;
2617         END IF;
2618     END IF;
2619 
2620 
2621 	--ATTRIBUTE6
2622 
2623 		validate_attribute6(x_return_status, p_bsdv_rec.attribute6);
2624 
2625     -- store the highest degree of error
2626     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2627         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2628         -- need to leave
2629         l_return_status := x_return_status;
2630         RAISE G_EXCEPTION_HALT_VALIDATION;
2631         ELSE
2632         -- record that there was an error
2633         l_return_status := x_return_status;
2634         END IF;
2635     END IF;
2636 
2637 
2638 	--ATTRIBUTE7
2639 
2640 		validate_attribute7(x_return_status, p_bsdv_rec.attribute7);
2641 
2642     -- store the highest degree of error
2643     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2644         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2645         -- need to leave
2646         l_return_status := x_return_status;
2647         RAISE G_EXCEPTION_HALT_VALIDATION;
2648         ELSE
2649         -- record that there was an error
2650         l_return_status := x_return_status;
2651         END IF;
2652     END IF;
2653 
2654 
2655 	--ATTRIBUTE8
2656 		validate_attribute8(x_return_status, p_bsdv_rec.attribute8);
2657 
2658     -- store the highest degree of error
2659     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2660         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2661         -- need to leave
2662         l_return_status := x_return_status;
2663         RAISE G_EXCEPTION_HALT_VALIDATION;
2664         ELSE
2665         -- record that there was an error
2666         l_return_status := x_return_status;
2667         END IF;
2668     END IF;
2669 
2670 
2671 	--ATTRIBUTE9
2672 		validate_attribute9(x_return_status, p_bsdv_rec.attribute9);
2673 
2674     -- store the highest degree of error
2675     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2676         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2677         -- need to leave
2678         l_return_status := x_return_status;
2679         RAISE G_EXCEPTION_HALT_VALIDATION;
2680         ELSE
2681         -- record that there was an error
2682         l_return_status := x_return_status;
2683         END IF;
2684     END IF;
2685 
2686 
2687 	--ATTRIBUTE10
2688 
2689 		validate_attribute10(x_return_status, p_bsdv_rec.attribute10);
2690 
2691     -- store the highest degree of error
2692     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2693         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2694         -- need to leave
2695         l_return_status := x_return_status;
2696         RAISE G_EXCEPTION_HALT_VALIDATION;
2697         ELSE
2698         -- record that there was an error
2699         l_return_status := x_return_status;
2700         END IF;
2701     END IF;
2702 
2703 
2704 	--ATTRIBUTE11
2705 
2706 		validate_attribute11(x_return_status, p_bsdv_rec.attribute11);
2707 
2708     -- store the highest degree of error
2709     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2710         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2711         -- need to leave
2712         l_return_status := x_return_status;
2713         RAISE G_EXCEPTION_HALT_VALIDATION;
2714         ELSE
2715         -- record that there was an error
2716         l_return_status := x_return_status;
2717         END IF;
2718     END IF;
2719 
2720 
2721 	--ATTRIBUTE12
2722 
2723 		validate_attribute12(x_return_status, p_bsdv_rec.attribute12);
2724 
2725     -- store the highest degree of error
2726     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2727         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2728         -- need to leave
2729         l_return_status := x_return_status;
2730         RAISE G_EXCEPTION_HALT_VALIDATION;
2731         ELSE
2732         -- record that there was an error
2733         l_return_status := x_return_status;
2734         END IF;
2735     END IF;
2736 
2737 
2738 	--ATTRIBUTE13
2739 		validate_attribute13(x_return_status, p_bsdv_rec.attribute13);
2740 
2741     -- store the highest degree of error
2742     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2743         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2744         -- need to leave
2745         l_return_status := x_return_status;
2746         RAISE G_EXCEPTION_HALT_VALIDATION;
2747         ELSE
2748         -- record that there was an error
2749         l_return_status := x_return_status;
2750         END IF;
2751     END IF;
2752 
2753 
2754 	--ATTRIBUTE14
2755 
2756 		validate_attribute14(x_return_status, p_bsdv_rec.attribute14);
2757 
2758     -- store the highest degree of error
2759     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2760         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2761         -- need to leave
2762         l_return_status := x_return_status;
2763         RAISE G_EXCEPTION_HALT_VALIDATION;
2764         ELSE
2765         -- record that there was an error
2766         l_return_status := x_return_status;
2767         END IF;
2768     END IF;
2769 
2770 	--ATTRIBUTE15
2771 
2772 		validate_attribute15(x_return_status, p_bsdv_rec.attribute15);
2773 
2774     -- store the highest degree of error
2775     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
2776         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2777         -- need to leave
2778         l_return_status := x_return_status;
2779         RAISE G_EXCEPTION_HALT_VALIDATION;
2780         ELSE
2781         -- record that there was an error
2782         l_return_status := x_return_status;
2783         END IF;
2784     END IF;
2785 
2786     Raise G_EXCEPTION_HALT_VALIDATION;
2787 
2788   Exception
2789 
2790   When G_EXCEPTION_HALT_VALIDATION Then
2791 
2792        Return (l_return_status);
2793 
2794   When OTHERS Then
2795        -- store SQL error message on message stack for caller
2796        OKC_API.SET_MESSAGE(p_app_name         => g_app_name,
2797                            p_msg_name         => g_unexpected_error,
2798                            p_token1           => g_sqlcode_token,
2799                            p_token1_value     => sqlcode,
2800                            p_token2           => g_sqlerrm_token,
2801                            p_token2_value     => sqlerrm);
2802 
2803        -- notify caller of an UNEXPECTED error
2804        l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
2805        Return(l_return_status);
2806 
2807   END validate_attributes;
2808 
2809   ---------------------------------------------------------------------------
2810   -- PROCEDURE Validate_Record
2811   ---------------------------------------------------------------------------
2812   -------------------------------------------------
2813   -- Validate_Record for:OKS_BILL_SUBLINE_DTLS_V --
2814   -------------------------------------------------
2815   FUNCTION Validate_Record (
2816     p_bsdv_rec IN bsdv_rec_type
2817   ) RETURN VARCHAR2 IS
2818     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2819     ------------------------------------
2820     -- FUNCTION validate_foreign_keys --
2821     ------------------------------------
2822     FUNCTION validate_foreign_keys (
2823       p_bsdv_rec IN bsdv_rec_type
2824     ) RETURN VARCHAR2 IS
2825       item_not_found_error          EXCEPTION;
2826       CURSOR okc_bsdv_pk_csr (p_id                 IN NUMBER) IS
2827       SELECT
2828               ID,
2829               OBJECT_VERSION_NUMBER,
2830               BSL_ID,
2831               BSL_ID_AVERAGED,
2832               BSD_ID,
2833               BSD_ID_APPLIED,
2834               CCR_ID,
2835               CGR_ID,
2836               START_READING,
2837               END_READING,
2838               BASE_READING,
2839               ESTIMATED_QUANTITY,
2840               UNIT_OF_MEASURE,
2841               FIXED,
2842               ACTUAL,
2843               DEFAULT_DEFAULT,
2844               AMCV_YN,
2845               ADJUSTMENT_LEVEL,
2846               ADJUSTMENT_MINIMUM,
2847               RESULT,
2848               AMOUNT,
2849               ATTRIBUTE_CATEGORY,
2850               ATTRIBUTE1,
2851               ATTRIBUTE2,
2852               ATTRIBUTE3,
2853               ATTRIBUTE4,
2854               ATTRIBUTE5,
2855               ATTRIBUTE6,
2856               ATTRIBUTE7,
2857               ATTRIBUTE8,
2858               ATTRIBUTE9,
2859               ATTRIBUTE10,
2860               ATTRIBUTE11,
2861               ATTRIBUTE12,
2862               ATTRIBUTE13,
2863               ATTRIBUTE14,
2864               ATTRIBUTE15,
2865               CREATED_BY,
2866               CREATION_DATE,
2867               LAST_UPDATED_BY,
2868               LAST_UPDATE_DATE,
2869               LAST_UPDATE_LOGIN
2870         FROM Oks_Bill_Subline_Dtls_V
2871        WHERE oks_bill_subline_dtls_v.id = p_id;
2872       l_okc_bsdv_pk                  okc_bsdv_pk_csr%ROWTYPE;
2873       CURSOR okc_bslv_pk_csr (p_id                 IN NUMBER) IS
2874       SELECT
2875               ID,
2876               OBJECT_VERSION_NUMBER,
2877               BCL_ID,
2878               CLE_ID,
2879               AVERAGE,
2880               AMOUNT,
2881               ATTRIBUTE_CATEGORY,
2882               ATTRIBUTE1,
2883               ATTRIBUTE2,
2884               ATTRIBUTE3,
2885               ATTRIBUTE4,
2886               ATTRIBUTE5,
2887               ATTRIBUTE6,
2888               ATTRIBUTE7,
2889               ATTRIBUTE8,
2890               ATTRIBUTE9,
2891               ATTRIBUTE10,
2892               ATTRIBUTE11,
2893               ATTRIBUTE12,
2894               ATTRIBUTE13,
2895               ATTRIBUTE14,
2896               ATTRIBUTE15,
2897               CREATED_BY,
2898               CREATION_DATE,
2899               LAST_UPDATED_BY,
2900               LAST_UPDATE_DATE,
2901               LAST_UPDATE_LOGIN
2902         FROM Oks_Bill_Sub_lines_V
2903        WHERE oks_bill_sub_lines_v.id = p_id;
2904       l_okc_bslv_pk                  okc_bslv_pk_csr%ROWTYPE;
2905     /*  CURSOR okx_units_of_measure_v_pk_csr (p_unit_of_measure    IN VARCHAR2) IS
2906       SELECT
2907               UNIT_OF_MEASURE,
2908               UOM_CODE,
2909               UOM_CLASS,
2910               DISABLE_DATE,
2911               DESCRIPTION
2912         FROM Okx_Units_Of_Measure_V
2913        WHERE okx_units_of_measure_v.unit_of_measure = p_unit_of_measure;
2914   */
2915     --  l_okx_units_of_measure_v_pk    okx_units_of_measure_v_pk_csr%ROWTYPE;
2916       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2917       l_row_notfound                 BOOLEAN := TRUE;
2918     BEGIN
2919       IF (p_bsdv_rec.BSD_ID IS NOT NULL)
2920       THEN
2921         OPEN okc_bsdv_pk_csr(p_bsdv_rec.BSD_ID);
2922         FETCH okc_bsdv_pk_csr INTO l_okc_bsdv_pk;
2923         l_row_notfound := okc_bsdv_pk_csr%NOTFOUND;
2924         CLOSE okc_bsdv_pk_csr;
2925         IF (l_row_notfound) THEN
2926           OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'BSD_ID');
2927           RAISE item_not_found_error;
2928         END IF;
2929       END IF;
2930       IF (p_bsdv_rec.BSL_ID IS NOT NULL)
2931       THEN
2932         OPEN okc_bslv_pk_csr(p_bsdv_rec.BSL_ID);
2933         FETCH okc_bslv_pk_csr INTO l_okc_bslv_pk;
2934         l_row_notfound := okc_bslv_pk_csr%NOTFOUND;
2935         CLOSE okc_bslv_pk_csr;
2936         IF (l_row_notfound) THEN
2937           OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'BSL_ID');
2938           RAISE item_not_found_error;
2939         END IF;
2940       END IF;
2941       /*
2942       IF (p_bsdv_rec.UNIT_OF_MEASURE IS NOT NULL)
2943       THEN
2944         OPEN okx_units_of_measure_v_pk_csr(p_bsdv_rec.UNIT_OF_MEASURE);
2945         FETCH okx_units_of_measure_v_pk_csr INTO l_okx_units_of_measure_v_pk;
2946         l_row_notfound := okx_units_of_measure_v_pk_csr%NOTFOUND;
2947         CLOSE okx_units_of_measure_v_pk_csr;
2948         IF (l_row_notfound) THEN
2949           OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'UNIT_OF_MEASURE');
2950           RAISE item_not_found_error;
2951         END IF;
2952       END IF;
2953       */
2954       IF (p_bsdv_rec.BSD_ID_APPLIED IS NOT NULL)
2955       THEN
2956         OPEN okc_bsdv_pk_csr(p_bsdv_rec.BSD_ID_APPLIED);
2957         FETCH okc_bsdv_pk_csr INTO l_okc_bsdv_pk;
2958         l_row_notfound := okc_bsdv_pk_csr%NOTFOUND;
2959         CLOSE okc_bsdv_pk_csr;
2960         IF (l_row_notfound) THEN
2961           OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'BSD_ID_APPLIED');
2962           RAISE item_not_found_error;
2963         END IF;
2964       END IF;
2965       IF (p_bsdv_rec.BSL_ID_AVERAGED IS NOT NULL)
2966       THEN
2967         OPEN okc_bslv_pk_csr(p_bsdv_rec.BSL_ID_AVERAGED);
2968         FETCH okc_bslv_pk_csr INTO l_okc_bslv_pk;
2969         l_row_notfound := okc_bslv_pk_csr%NOTFOUND;
2970         CLOSE okc_bslv_pk_csr;
2971         IF (l_row_notfound) THEN
2972           OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'BSL_ID_AVERAGED');
2973           RAISE item_not_found_error;
2974         END IF;
2975       END IF;
2976       RETURN (l_return_status);
2977     EXCEPTION
2978       WHEN item_not_found_error THEN
2979         l_return_status := OKC_API.G_RET_STS_ERROR;
2980         RETURN (l_return_status);
2981     END validate_foreign_keys;
2982   BEGIN
2983     l_return_status := validate_foreign_keys (p_bsdv_rec);
2984     RETURN (l_return_status);
2985   END Validate_Record;
2986 
2987   ---------------------------------------------------------------------------
2988   -- PROCEDURE Migrate
2989   ---------------------------------------------------------------------------
2990   PROCEDURE migrate (
2991     p_from	IN bsdv_rec_type,
2992     p_to	OUT NOCOPY bsd_rec_type
2993   ) IS
2994   BEGIN
2995     p_to.id := p_from.id;
2996     p_to.bsl_id := p_from.bsl_id;
2997     p_to.bsl_id_averaged := p_from.bsl_id_averaged;
2998     p_to.bsd_id := p_from.bsd_id;
2999     p_to.bsd_id_applied := p_from.bsd_id_applied;
3000     p_to.ccr_id := p_from.ccr_id;
3001     p_to.cgr_id := p_from.cgr_id;
3002     p_to.start_reading := p_from.start_reading;
3003     p_to.end_reading := p_from.end_reading;
3004     p_to.base_reading := p_from.base_reading;
3005     p_to.estimated_quantity := p_from.estimated_quantity;
3006     p_to.unit_of_measure := p_from.unit_of_measure;
3007     p_to.amcv_yn := p_from.amcv_yn;
3008     p_to.result := p_from.result;
3009     p_to.amount := p_from.amount;
3010     p_to.object_version_number := p_from.object_version_number;
3011     p_to.created_by := p_from.created_by;
3012     p_to.creation_date := p_from.creation_date;
3013     p_to.last_updated_by := p_from.last_updated_by;
3014     p_to.last_update_date := p_from.last_update_date;
3015     p_to.fixed := p_from.fixed;
3016     p_to.actual := p_from.actual;
3017     p_to.default_default := p_from.default_default;
3018     p_to.adjustment_level := p_from.adjustment_level;
3019     p_to.adjustment_minimum := p_from.adjustment_minimum;
3020     p_to.last_update_login := p_from.last_update_login;
3021     p_to.attribute_category := p_from.attribute_category;
3022     p_to.attribute1 := p_from.attribute1;
3023     p_to.attribute2 := p_from.attribute2;
3024     p_to.attribute3 := p_from.attribute3;
3025     p_to.attribute4 := p_from.attribute4;
3026     p_to.attribute5 := p_from.attribute5;
3027     p_to.attribute6 := p_from.attribute6;
3028     p_to.attribute7 := p_from.attribute7;
3029     p_to.attribute8 := p_from.attribute8;
3030     p_to.attribute9 := p_from.attribute9;
3031     p_to.attribute10 := p_from.attribute10;
3032     p_to.attribute11 := p_from.attribute11;
3033     p_to.attribute12 := p_from.attribute12;
3034     p_to.attribute13 := p_from.attribute13;
3035     p_to.attribute14 := p_from.attribute14;
3036     p_to.attribute15 := p_from.attribute15;
3037   END migrate;
3038   PROCEDURE migrate (
3039     p_from	IN bsd_rec_type,
3040     p_to	OUT NOCOPY bsdv_rec_type
3041   ) IS
3042   BEGIN
3043     p_to.id := p_from.id;
3044     p_to.bsl_id := p_from.bsl_id;
3045     p_to.bsl_id_averaged := p_from.bsl_id_averaged;
3046     p_to.bsd_id := p_from.bsd_id;
3047     p_to.bsd_id_applied := p_from.bsd_id_applied;
3048     p_to.ccr_id := p_from.ccr_id;
3049     p_to.cgr_id := p_from.cgr_id;
3050     p_to.start_Reading := p_from.start_Reading;
3051     p_to.end_Reading := p_from.end_Reading;
3052     p_to.base_Reading := p_from.base_Reading;
3053     p_to.estimated_quantity := p_from.estimated_quantity;
3054     p_to.unit_of_measure := p_from.unit_of_measure;
3055     p_to.amcv_yn := p_from.amcv_yn;
3056     p_to.result := p_from.result;
3057     p_to.amount := p_from.amount;
3058     p_to.object_version_number := p_from.object_version_number;
3059     p_to.created_by := p_from.created_by;
3060     p_to.creation_date := p_from.creation_date;
3061     p_to.last_updated_by := p_from.last_updated_by;
3062     p_to.last_update_date := p_from.last_update_date;
3063     p_to.fixed := p_from.fixed;
3064     p_to.actual := p_from.actual;
3065     p_to.default_default := p_from.default_default;
3066     p_to.adjustment_level := p_from.adjustment_level;
3067     p_to.adjustment_minimum := p_from.adjustment_minimum;
3068     p_to.last_update_login := p_from.last_update_login;
3069     p_to.attribute_category := p_from.attribute_category;
3070     p_to.attribute1 := p_from.attribute1;
3071     p_to.attribute2 := p_from.attribute2;
3072     p_to.attribute3 := p_from.attribute3;
3073     p_to.attribute4 := p_from.attribute4;
3074     p_to.attribute5 := p_from.attribute5;
3075     p_to.attribute6 := p_from.attribute6;
3076     p_to.attribute7 := p_from.attribute7;
3077     p_to.attribute8 := p_from.attribute8;
3078     p_to.attribute9 := p_from.attribute9;
3079     p_to.attribute10 := p_from.attribute10;
3080     p_to.attribute11 := p_from.attribute11;
3081     p_to.attribute12 := p_from.attribute12;
3082     p_to.attribute13 := p_from.attribute13;
3083     p_to.attribute14 := p_from.attribute14;
3084     p_to.attribute15 := p_from.attribute15;
3085   END migrate;
3086 
3087   ---------------------------------------------------------------------------
3088   -- PROCEDURE validate_row
3089   ---------------------------------------------------------------------------
3090   ----------------------------------------------
3091   -- validate_row for:OKS_BILL_SUBLINE_DTLS_V --
3092   ----------------------------------------------
3093   PROCEDURE validate_row(
3094     p_api_version                  IN NUMBER,
3095     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3096     x_return_status                OUT NOCOPY VARCHAR2,
3097     x_msg_count                    OUT NOCOPY NUMBER,
3098     x_msg_data                     OUT NOCOPY VARCHAR2,
3099     p_bsdv_rec                     IN bsdv_rec_type) IS
3100 
3101     l_api_version                 CONSTANT NUMBER := 1;
3102     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
3103     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3104     l_bsdv_rec                     bsdv_rec_type := p_bsdv_rec;
3105     l_bsd_rec                      bsd_rec_type;
3106   BEGIN
3107     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3108                                               G_PKG_NAME,
3109                                               p_init_msg_list,
3110                                               l_api_version,
3111                                               p_api_version,
3112                                               '_PVT',
3113                                               x_return_status);
3114     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3115       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3116     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3117       RAISE OKC_API.G_EXCEPTION_ERROR;
3118     END IF;
3119     --- Validate all non-missing attributes (Item Level Validation)
3120     l_return_status := Validate_Attributes(l_bsdv_rec);
3121     --- If any errors happen abort API
3122     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3123       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3124     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3125       RAISE OKC_API.G_EXCEPTION_ERROR;
3126     END IF;
3127     l_return_status := Validate_Record(l_bsdv_rec);
3128     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3129       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3130     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3131       RAISE OKC_API.G_EXCEPTION_ERROR;
3132     END IF;
3133     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3134   EXCEPTION
3135     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3136       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3137       (
3138         l_api_name,
3139         G_PKG_NAME,
3140         'OKC_API.G_RET_STS_ERROR',
3141         x_msg_count,
3142         x_msg_data,
3143         '_PVT'
3144       );
3145     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3146       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3147       (
3148         l_api_name,
3149         G_PKG_NAME,
3150         'OKC_API.G_RET_STS_UNEXP_ERROR',
3151         x_msg_count,
3152         x_msg_data,
3153         '_PVT'
3154       );
3155     WHEN OTHERS THEN
3156       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3157       (
3158         l_api_name,
3159         G_PKG_NAME,
3160         'OTHERS',
3161         x_msg_count,
3162         x_msg_data,
3163         '_PVT'
3164       );
3165   END validate_row;
3166   ------------------------------------------
3167   -- PL/SQL TBL validate_row for:BSDV_TBL --
3168   ------------------------------------------
3169   PROCEDURE validate_row(
3170     p_api_version                  IN NUMBER,
3171     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3172     x_return_status                OUT NOCOPY VARCHAR2,
3173     x_msg_count                    OUT NOCOPY NUMBER,
3174     x_msg_data                     OUT NOCOPY VARCHAR2,
3175     p_bsdv_tbl                     IN bsdv_tbl_type) IS
3176 
3177     l_api_version                 CONSTANT NUMBER := 1;
3178     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
3179     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3180     i                              NUMBER := 0;
3181   BEGIN
3182     OKC_API.init_msg_list(p_init_msg_list);
3183     -- Make sure PL/SQL table has records in it before passing
3184     IF (p_bsdv_tbl.COUNT > 0) THEN
3185       i := p_bsdv_tbl.FIRST;
3186       LOOP
3187         validate_row (
3188           p_api_version                  => p_api_version,
3189           p_init_msg_list                => OKC_API.G_FALSE,
3190           x_return_status                => x_return_status,
3191           x_msg_count                    => x_msg_count,
3192           x_msg_data                     => x_msg_data,
3193           p_bsdv_rec                     => p_bsdv_tbl(i));
3194         EXIT WHEN (i = p_bsdv_tbl.LAST);
3195         i := p_bsdv_tbl.NEXT(i);
3196       END LOOP;
3197     END IF;
3198   EXCEPTION
3199     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3200       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3201       (
3202         l_api_name,
3203         G_PKG_NAME,
3204         'OKC_API.G_RET_STS_ERROR',
3205         x_msg_count,
3206         x_msg_data,
3207         '_PVT'
3208       );
3209     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3210       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3211       (
3212         l_api_name,
3213         G_PKG_NAME,
3214         'OKC_API.G_RET_STS_UNEXP_ERROR',
3215         x_msg_count,
3216         x_msg_data,
3217         '_PVT'
3218       );
3219     WHEN OTHERS THEN
3220       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3221       (
3222         l_api_name,
3223         G_PKG_NAME,
3224         'OTHERS',
3225         x_msg_count,
3226         x_msg_data,
3227         '_PVT'
3228       );
3229   END validate_row;
3230 
3231   ---------------------------------------------------------------------------
3232   -- PROCEDURE insert_row
3233   ---------------------------------------------------------------------------
3234   -------------------------------------------
3235   -- insert_row for:OKS_BILL_SUB_LINE_DTLS --
3236   -------------------------------------------
3237   PROCEDURE insert_row(
3238     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3239     x_return_status                OUT NOCOPY VARCHAR2,
3240     x_msg_count                    OUT NOCOPY NUMBER,
3241     x_msg_data                     OUT NOCOPY VARCHAR2,
3242     p_bsd_rec                      IN bsd_rec_type,
3243     x_bsd_rec                      OUT NOCOPY bsd_rec_type) IS
3244 
3245     l_api_version                 CONSTANT NUMBER := 1;
3246     l_api_name                     CONSTANT VARCHAR2(30) := 'DTLS_insert_row';
3247     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3248     l_bsd_rec                      bsd_rec_type := p_bsd_rec;
3249     l_def_bsd_rec                  bsd_rec_type;
3250     -----------------------------------------------
3251     -- Set_Attributes for:OKS_BILL_SUB_LINE_DTLS --
3252     -----------------------------------------------
3253     FUNCTION Set_Attributes (
3254       p_bsd_rec IN  bsd_rec_type,
3255       x_bsd_rec OUT NOCOPY bsd_rec_type
3256     ) RETURN VARCHAR2 IS
3257       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3258     BEGIN
3259       x_bsd_rec := p_bsd_rec;
3260       RETURN(l_return_status);
3261     END Set_Attributes;
3262   BEGIN
3263     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3264                                               p_init_msg_list,
3265                                               '_PVT',
3266                                               x_return_status);
3267     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3268       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3269     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3270       RAISE OKC_API.G_EXCEPTION_ERROR;
3271     END IF;
3272     --- Setting item attributes
3273     l_return_status := Set_Attributes(
3274       p_bsd_rec,                         -- IN
3275       l_bsd_rec);                        -- OUT
3276     --- If any errors happen abort API
3277     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3278       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3279     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3280       RAISE OKC_API.G_EXCEPTION_ERROR;
3281     END IF;
3282     INSERT INTO OKS_BILL_SUB_LINE_DTLS(
3283         id,
3284         bsl_id,
3285         bsl_id_averaged,
3286         bsd_id,
3287         bsd_id_applied,
3288         ccr_id,
3289         cgr_id,
3290         start_Reading,
3291         end_reading,
3292         base_reading,
3293         estimated_quantity,
3294         unit_of_measure,
3295         amcv_yn,
3296         result,
3297         amount,
3298         object_version_number,
3299         created_by,
3300         creation_date,
3301         last_updated_by,
3302         last_update_date,
3303         fixed,
3304         actual,
3305         default_default,
3306         adjustment_level,
3307         adjustment_minimum,
3308         last_update_login,
3309         attribute_category,
3310         attribute1,
3311         attribute2,
3312         attribute3,
3313         attribute4,
3314         attribute5,
3315         attribute6,
3316         attribute7,
3317         attribute8,
3318         attribute9,
3319         attribute10,
3320         attribute11,
3321         attribute12,
3322         attribute13,
3323         attribute14,
3324         attribute15)
3325       VALUES (
3326         l_bsd_rec.id,
3327         l_bsd_rec.bsl_id,
3328         l_bsd_rec.bsl_id_averaged,
3329         l_bsd_rec.bsd_id,
3330         l_bsd_rec.bsd_id_applied,
3331         l_bsd_rec.ccr_id,
3332         l_bsd_rec.cgr_id,
3333         l_bsd_rec.start_reading,
3334         l_bsd_rec.end_reading,
3335         l_bsd_rec.base_reading,
3336         l_bsd_rec.estimated_quantity,
3337         l_bsd_rec.unit_of_measure,
3338         l_bsd_rec.amcv_yn,
3339         l_bsd_rec.result,
3340         l_bsd_rec.amount,
3341         l_bsd_rec.object_version_number,
3342         l_bsd_rec.created_by,
3343         l_bsd_rec.creation_date,
3344         l_bsd_rec.last_updated_by,
3345         l_bsd_rec.last_update_date,
3346         l_bsd_rec.fixed,
3347         l_bsd_rec.actual,
3348         l_bsd_rec.default_default,
3349         l_bsd_rec.adjustment_level,
3350         l_bsd_rec.adjustment_minimum,
3351         l_bsd_rec.last_update_login,
3352         l_bsd_rec.attribute_category,
3353         l_bsd_rec.attribute1,
3354         l_bsd_rec.attribute2,
3355         l_bsd_rec.attribute3,
3356         l_bsd_rec.attribute4,
3357         l_bsd_rec.attribute5,
3358         l_bsd_rec.attribute6,
3359         l_bsd_rec.attribute7,
3360         l_bsd_rec.attribute8,
3361         l_bsd_rec.attribute9,
3362         l_bsd_rec.attribute10,
3363         l_bsd_rec.attribute11,
3364         l_bsd_rec.attribute12,
3365         l_bsd_rec.attribute13,
3366         l_bsd_rec.attribute14,
3367         l_bsd_rec.attribute15);
3368     -- Set OUT values
3369     x_bsd_rec := l_bsd_rec;
3370     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3371   EXCEPTION
3372     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3373       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3374       (
3375         l_api_name,
3376         G_PKG_NAME,
3377         'OKC_API.G_RET_STS_ERROR',
3378         x_msg_count,
3379         x_msg_data,
3380         '_PVT'
3381       );
3382     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3383       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3384       (
3385         l_api_name,
3386         G_PKG_NAME,
3387         'OKC_API.G_RET_STS_UNEXP_ERROR',
3388         x_msg_count,
3389         x_msg_data,
3390         '_PVT'
3391       );
3392     WHEN OTHERS THEN
3393       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3394       (
3395         l_api_name,
3396         G_PKG_NAME,
3397         'OTHERS',
3398         x_msg_count,
3399         x_msg_data,
3400         '_PVT'
3401       );
3402   END insert_row;
3403   --------------------------------------------
3404   -- insert_row for:OKS_BILL_SUBLINE_DTLS_V --
3405   --------------------------------------------
3406   PROCEDURE insert_row(
3407     p_api_version                  IN NUMBER,
3408     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3409     x_return_status                OUT NOCOPY VARCHAR2,
3410     x_msg_count                    OUT NOCOPY NUMBER,
3411     x_msg_data                     OUT NOCOPY VARCHAR2,
3412     p_bsdv_rec                     IN bsdv_rec_type,
3413     x_bsdv_rec                     OUT NOCOPY bsdv_rec_type) IS
3414 
3415     l_api_version                 CONSTANT NUMBER := 1;
3416     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
3417     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3418     l_bsdv_rec                     bsdv_rec_type;
3419     l_def_bsdv_rec                 bsdv_rec_type;
3420     l_bsd_rec                      bsd_rec_type;
3421     lx_bsd_rec                     bsd_rec_type;
3422     -------------------------------
3423     -- FUNCTION fill_who_columns --
3424     -------------------------------
3425     FUNCTION fill_who_columns (
3426       p_bsdv_rec	IN bsdv_rec_type
3427     ) RETURN bsdv_rec_type IS
3428       l_bsdv_rec	bsdv_rec_type := p_bsdv_rec;
3429     BEGIN
3430       l_bsdv_rec.CREATION_DATE := SYSDATE;
3431       l_bsdv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
3432       l_bsdv_rec.LAST_UPDATE_DATE := SYSDATE;
3433       l_bsdv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
3434       l_bsdv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
3435       RETURN(l_bsdv_rec);
3436     END fill_who_columns;
3437     ------------------------------------------------
3438     -- Set_Attributes for:OKS_BILL_SUBLINE_DTLS_V --
3439     ------------------------------------------------
3440     FUNCTION Set_Attributes (
3441       p_bsdv_rec IN  bsdv_rec_type,
3442       x_bsdv_rec OUT NOCOPY bsdv_rec_type
3443     ) RETURN VARCHAR2 IS
3444       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3445     BEGIN
3446       x_bsdv_rec := p_bsdv_rec;
3447       x_bsdv_rec.OBJECT_VERSION_NUMBER := 1;
3448       RETURN(l_return_status);
3449     END Set_Attributes;
3450   BEGIN
3451     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3452                                               G_PKG_NAME,
3453                                               p_init_msg_list,
3454                                               l_api_version,
3455                                               p_api_version,
3456                                               '_PVT',
3457                                               x_return_status);
3458     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3459       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3460     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3461       RAISE OKC_API.G_EXCEPTION_ERROR;
3462     END IF;
3463     l_bsdv_rec := null_out_defaults(p_bsdv_rec);
3464     -- Set primary key value
3465     l_bsdv_rec.ID := get_seq_id;
3466     --- Setting item attributes
3467     l_return_status := Set_Attributes(
3468       l_bsdv_rec,                        -- IN
3469       l_def_bsdv_rec);                   -- OUT
3470     --- If any errors happen abort API
3471     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3472       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3473     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3474       RAISE OKC_API.G_EXCEPTION_ERROR;
3475     END IF;
3476     l_def_bsdv_rec := fill_who_columns(l_def_bsdv_rec);
3477     --- Validate all non-missing attributes (Item Level Validation)
3478     l_return_status := Validate_Attributes(l_def_bsdv_rec);
3479     --- If any errors happen abort API
3480     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3481       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3482     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3483       RAISE OKC_API.G_EXCEPTION_ERROR;
3484     END IF;
3485     l_return_status := Validate_Record(l_def_bsdv_rec);
3486     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3487       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3488     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3489       RAISE OKC_API.G_EXCEPTION_ERROR;
3490     END IF;
3491     --------------------------------------
3492     -- Move VIEW record to "Child" records
3493     --------------------------------------
3494     migrate(l_def_bsdv_rec, l_bsd_rec);
3495     --------------------------------------------
3496     -- Call the INSERT_ROW for each child record
3497     --------------------------------------------
3498     insert_row(
3499       p_init_msg_list,
3500       x_return_status,
3501       x_msg_count,
3502       x_msg_data,
3503       l_bsd_rec,
3504       lx_bsd_rec
3505     );
3506     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3507       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3508     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3509       RAISE OKC_API.G_EXCEPTION_ERROR;
3510     END IF;
3511     migrate(lx_bsd_rec, l_def_bsdv_rec);
3512     -- Set OUT values
3513     x_bsdv_rec := l_def_bsdv_rec;
3514     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3515   EXCEPTION
3516     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3517       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3518       (
3519         l_api_name,
3520         G_PKG_NAME,
3521         'OKC_API.G_RET_STS_ERROR',
3522         x_msg_count,
3523         x_msg_data,
3524         '_PVT'
3525       );
3526     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3527       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3528       (
3529         l_api_name,
3530         G_PKG_NAME,
3531         'OKC_API.G_RET_STS_UNEXP_ERROR',
3532         x_msg_count,
3533         x_msg_data,
3534         '_PVT'
3535       );
3536     WHEN OTHERS THEN
3537       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3538       (
3539         l_api_name,
3540         G_PKG_NAME,
3541         'OTHERS',
3542         x_msg_count,
3543         x_msg_data,
3544         '_PVT'
3545       );
3546   END insert_row;
3547   ----------------------------------------
3548   -- PL/SQL TBL insert_row for:BSDV_TBL --
3549   ----------------------------------------
3550   PROCEDURE insert_row(
3551     p_api_version                  IN NUMBER,
3552     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3553     x_return_status                OUT NOCOPY VARCHAR2,
3554     x_msg_count                    OUT NOCOPY NUMBER,
3555     x_msg_data                     OUT NOCOPY VARCHAR2,
3556     p_bsdv_tbl                     IN bsdv_tbl_type,
3557     x_bsdv_tbl                     OUT NOCOPY bsdv_tbl_type) IS
3558 
3559     l_api_version                 CONSTANT NUMBER := 1;
3560     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
3561     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3562     i                              NUMBER := 0;
3563   BEGIN
3564     OKC_API.init_msg_list(p_init_msg_list);
3565     -- Make sure PL/SQL table has records in it before passing
3566     IF (p_bsdv_tbl.COUNT > 0) THEN
3567       i := p_bsdv_tbl.FIRST;
3568       LOOP
3569         insert_row (
3570           p_api_version                  => p_api_version,
3571           p_init_msg_list                => OKC_API.G_FALSE,
3572           x_return_status                => x_return_status,
3573           x_msg_count                    => x_msg_count,
3574           x_msg_data                     => x_msg_data,
3575           p_bsdv_rec                     => p_bsdv_tbl(i),
3576           x_bsdv_rec                     => x_bsdv_tbl(i));
3577         EXIT WHEN (i = p_bsdv_tbl.LAST);
3578         i := p_bsdv_tbl.NEXT(i);
3579       END LOOP;
3580     END IF;
3581   EXCEPTION
3582     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3583       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3584       (
3585         l_api_name,
3586         G_PKG_NAME,
3587         'OKC_API.G_RET_STS_ERROR',
3588         x_msg_count,
3589         x_msg_data,
3590         '_PVT'
3591       );
3592     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3593       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3594       (
3595         l_api_name,
3596         G_PKG_NAME,
3597         'OKC_API.G_RET_STS_UNEXP_ERROR',
3598         x_msg_count,
3599         x_msg_data,
3600         '_PVT'
3601       );
3602     WHEN OTHERS THEN
3603       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3604       (
3605         l_api_name,
3606         G_PKG_NAME,
3607         'OTHERS',
3608         x_msg_count,
3609         x_msg_data,
3610         '_PVT'
3611       );
3612   END insert_row;
3613 
3614   ---------------------------------------------------------------------------
3615   -- PROCEDURE lock_row
3616   ---------------------------------------------------------------------------
3617   -----------------------------------------
3618   -- lock_row for:OKS_BILL_SUB_LINE_DTLS --
3619   -----------------------------------------
3620   PROCEDURE lock_row(
3621     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3622     x_return_status                OUT NOCOPY VARCHAR2,
3623     x_msg_count                    OUT NOCOPY NUMBER,
3624     x_msg_data                     OUT NOCOPY VARCHAR2,
3625     p_bsd_rec                      IN bsd_rec_type) IS
3626 
3627     E_Resource_Busy               EXCEPTION;
3628     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3629     CURSOR lock_csr (p_bsd_rec IN bsd_rec_type) IS
3630     SELECT OBJECT_VERSION_NUMBER
3631       FROM OKS_BILL_SUB_LINE_DTLS
3632      WHERE ID = p_bsd_rec.id
3633        AND OBJECT_VERSION_NUMBER = p_bsd_rec.object_version_number
3634     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
3635 
3636     CURSOR  lchk_csr (p_bsd_rec IN bsd_rec_type) IS
3637     SELECT OBJECT_VERSION_NUMBER
3638       FROM OKS_BILL_SUB_LINE_DTLS
3639     WHERE ID = p_bsd_rec.id;
3640     l_api_version                 CONSTANT NUMBER := 1;
3641     l_api_name                     CONSTANT VARCHAR2(30) := 'DTLS_lock_row';
3642     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3643     l_object_version_number       OKS_BILL_SUB_LINE_DTLS.OBJECT_VERSION_NUMBER%TYPE;
3644     lc_object_version_number      OKS_BILL_SUB_LINE_DTLS.OBJECT_VERSION_NUMBER%TYPE;
3645     l_row_notfound                BOOLEAN := FALSE;
3646     lc_row_notfound               BOOLEAN := FALSE;
3647   BEGIN
3648     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3649                                               p_init_msg_list,
3650                                               '_PVT',
3651                                               x_return_status);
3652     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3653       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3654     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3655       RAISE OKC_API.G_EXCEPTION_ERROR;
3656     END IF;
3657     BEGIN
3658       OPEN lock_csr(p_bsd_rec);
3659       FETCH lock_csr INTO l_object_version_number;
3660       l_row_notfound := lock_csr%NOTFOUND;
3661       CLOSE lock_csr;
3662     EXCEPTION
3663       WHEN E_Resource_Busy THEN
3664         IF (lock_csr%ISOPEN) THEN
3665           CLOSE lock_csr;
3666         END IF;
3667         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3668         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3669     END;
3670 
3671     IF ( l_row_notfound ) THEN
3672       OPEN lchk_csr(p_bsd_rec);
3673       FETCH lchk_csr INTO lc_object_version_number;
3674       lc_row_notfound := lchk_csr%NOTFOUND;
3675       CLOSE lchk_csr;
3676     END IF;
3677     IF (lc_row_notfound) THEN
3678       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3679       RAISE OKC_API.G_EXCEPTION_ERROR;
3680     ELSIF lc_object_version_number > p_bsd_rec.object_version_number THEN
3681       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3682       RAISE OKC_API.G_EXCEPTION_ERROR;
3683     ELSIF lc_object_version_number <> p_bsd_rec.object_version_number THEN
3684       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3685       RAISE OKC_API.G_EXCEPTION_ERROR;
3686     ELSIF lc_object_version_number = -1 THEN
3687       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
3688       RAISE OKC_API.G_EXCEPTION_ERROR;
3689     END IF;
3690     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3691   EXCEPTION
3692     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3693       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3694       (
3695         l_api_name,
3696         G_PKG_NAME,
3697         'OKC_API.G_RET_STS_ERROR',
3698         x_msg_count,
3699         x_msg_data,
3700         '_PVT'
3701       );
3702     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3703       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3704       (
3705         l_api_name,
3706         G_PKG_NAME,
3707         'OKC_API.G_RET_STS_UNEXP_ERROR',
3708         x_msg_count,
3709         x_msg_data,
3710         '_PVT'
3711       );
3712     WHEN OTHERS THEN
3713       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3714       (
3715         l_api_name,
3716         G_PKG_NAME,
3717         'OTHERS',
3718         x_msg_count,
3719         x_msg_data,
3720         '_PVT'
3721       );
3722   END lock_row;
3723   ------------------------------------------
3724   -- lock_row for:OKS_BILL_SUBLINE_DTLS_V --
3725   ------------------------------------------
3726   PROCEDURE lock_row(
3727     p_api_version                  IN NUMBER,
3728     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3729     x_return_status                OUT NOCOPY VARCHAR2,
3730     x_msg_count                    OUT NOCOPY NUMBER,
3731     x_msg_data                     OUT NOCOPY VARCHAR2,
3732     p_bsdv_rec                     IN bsdv_rec_type) IS
3733 
3734     l_api_version                 CONSTANT NUMBER := 1;
3735     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
3736     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3737     l_bsd_rec                      bsd_rec_type;
3738   BEGIN
3739     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3740                                               G_PKG_NAME,
3741                                               p_init_msg_list,
3742                                               l_api_version,
3743                                               p_api_version,
3744                                               '_PVT',
3745                                               x_return_status);
3746     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3747       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3748     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3749       RAISE OKC_API.G_EXCEPTION_ERROR;
3750     END IF;
3751     --------------------------------------
3752     -- Move VIEW record to "Child" records
3753     --------------------------------------
3754     migrate(p_bsdv_rec, l_bsd_rec);
3755     --------------------------------------------
3756     -- Call the LOCK_ROW for each child record
3757     --------------------------------------------
3758     lock_row(
3759       p_init_msg_list,
3760       x_return_status,
3761       x_msg_count,
3762       x_msg_data,
3763       l_bsd_rec
3764     );
3765     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3766       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3767     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3768       RAISE OKC_API.G_EXCEPTION_ERROR;
3769     END IF;
3770     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3771   EXCEPTION
3772     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3773       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3774       (
3775         l_api_name,
3776         G_PKG_NAME,
3777         'OKC_API.G_RET_STS_ERROR',
3778         x_msg_count,
3779         x_msg_data,
3780         '_PVT'
3781       );
3782     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3783       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3784       (
3785         l_api_name,
3786         G_PKG_NAME,
3787         'OKC_API.G_RET_STS_UNEXP_ERROR',
3788         x_msg_count,
3789         x_msg_data,
3790         '_PVT'
3791       );
3792     WHEN OTHERS THEN
3793       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3794       (
3795         l_api_name,
3796         G_PKG_NAME,
3797         'OTHERS',
3798         x_msg_count,
3799         x_msg_data,
3800         '_PVT'
3801       );
3802   END lock_row;
3803   --------------------------------------
3804   -- PL/SQL TBL lock_row for:BSDV_TBL --
3805   --------------------------------------
3806   PROCEDURE lock_row(
3807     p_api_version                  IN NUMBER,
3808     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3809     x_return_status                OUT NOCOPY VARCHAR2,
3810     x_msg_count                    OUT NOCOPY NUMBER,
3811     x_msg_data                     OUT NOCOPY VARCHAR2,
3812     p_bsdv_tbl                     IN bsdv_tbl_type) IS
3813 
3814     l_api_version                 CONSTANT NUMBER := 1;
3815     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
3816     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3817     i                              NUMBER := 0;
3818   BEGIN
3819     OKC_API.init_msg_list(p_init_msg_list);
3820     -- Make sure PL/SQL table has records in it before passing
3821     IF (p_bsdv_tbl.COUNT > 0) THEN
3822       i := p_bsdv_tbl.FIRST;
3823       LOOP
3824         lock_row (
3825           p_api_version                  => p_api_version,
3826           p_init_msg_list                => OKC_API.G_FALSE,
3827           x_return_status                => x_return_status,
3828           x_msg_count                    => x_msg_count,
3829           x_msg_data                     => x_msg_data,
3830           p_bsdv_rec                     => p_bsdv_tbl(i));
3831         EXIT WHEN (i = p_bsdv_tbl.LAST);
3832         i := p_bsdv_tbl.NEXT(i);
3833       END LOOP;
3834     END IF;
3835   EXCEPTION
3836     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3837       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3838       (
3839         l_api_name,
3840         G_PKG_NAME,
3841         'OKC_API.G_RET_STS_ERROR',
3842         x_msg_count,
3843         x_msg_data,
3844         '_PVT'
3845       );
3846     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3847       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3848       (
3849         l_api_name,
3850         G_PKG_NAME,
3851         'OKC_API.G_RET_STS_UNEXP_ERROR',
3852         x_msg_count,
3853         x_msg_data,
3854         '_PVT'
3855       );
3856     WHEN OTHERS THEN
3857       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3858       (
3859         l_api_name,
3860         G_PKG_NAME,
3861         'OTHERS',
3862         x_msg_count,
3863         x_msg_data,
3864         '_PVT'
3865       );
3866   END lock_row;
3867 
3868   ---------------------------------------------------------------------------
3869   -- PROCEDURE update_row
3870   ---------------------------------------------------------------------------
3871   -------------------------------------------
3872   -- update_row for:OKS_BILL_SUB_LINE_DTLS --
3873   -------------------------------------------
3874   PROCEDURE update_row(
3875     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
3876     x_return_status                OUT NOCOPY VARCHAR2,
3877     x_msg_count                    OUT NOCOPY NUMBER,
3878     x_msg_data                     OUT NOCOPY VARCHAR2,
3879     p_bsd_rec                      IN bsd_rec_type,
3880     x_bsd_rec                      OUT NOCOPY bsd_rec_type) IS
3881 
3882     l_api_version                 CONSTANT NUMBER := 1;
3883     l_api_name                     CONSTANT VARCHAR2(30) := 'DTLS_update_row';
3884     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3885     l_bsd_rec                      bsd_rec_type := p_bsd_rec;
3886     l_def_bsd_rec                  bsd_rec_type;
3887     l_row_notfound                 BOOLEAN := TRUE;
3888     ----------------------------------
3889     -- FUNCTION populate_new_record --
3890     ----------------------------------
3891     FUNCTION populate_new_record (
3892       p_bsd_rec	IN bsd_rec_type,
3893       x_bsd_rec	OUT NOCOPY bsd_rec_type
3894     ) RETURN VARCHAR2 IS
3895       l_bsd_rec                      bsd_rec_type;
3896       l_row_notfound                 BOOLEAN := TRUE;
3897       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3898     BEGIN
3899       x_bsd_rec := p_bsd_rec;
3900       -- Get current database values
3901       l_bsd_rec := get_rec(p_bsd_rec, l_row_notfound);
3902       IF (l_row_notfound) THEN
3903         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3904       END IF;
3905       IF (x_bsd_rec.id = OKC_API.G_MISS_NUM)
3906       THEN
3907         x_bsd_rec.id := l_bsd_rec.id;
3908       END IF;
3909       IF (x_bsd_rec.bsl_id = OKC_API.G_MISS_NUM)
3910       THEN
3911         x_bsd_rec.bsl_id := l_bsd_rec.bsl_id;
3912       END IF;
3913       IF (x_bsd_rec.bsl_id_averaged = OKC_API.G_MISS_NUM)
3914       THEN
3915         x_bsd_rec.bsl_id_averaged := l_bsd_rec.bsl_id_averaged;
3916       END IF;
3917       IF (x_bsd_rec.bsd_id = OKC_API.G_MISS_NUM)
3918       THEN
3919         x_bsd_rec.bsd_id := l_bsd_rec.bsd_id;
3920       END IF;
3921       IF (x_bsd_rec.bsd_id_applied = OKC_API.G_MISS_NUM)
3922       THEN
3923         x_bsd_rec.bsd_id_applied := l_bsd_rec.bsd_id_applied;
3924       END IF;
3925       IF (x_bsd_rec.ccr_id = OKC_API.G_MISS_NUM)
3926       THEN
3927         x_bsd_rec.ccr_id := l_bsd_rec.ccr_id;
3928       END IF;
3929       IF (x_bsd_rec.cgr_id = OKC_API.G_MISS_NUM)
3930       THEN
3931         x_bsd_rec.cgr_id := l_bsd_rec.cgr_id;
3932       END IF;
3933       IF (x_bsd_rec.start_reading = OKC_API.G_MISS_NUM)
3934       THEN
3935         x_bsd_rec.start_reading := l_bsd_rec.start_reading;
3936       END IF;
3937       IF (x_bsd_rec.end_reading = OKC_API.G_MISS_NUM)
3938       THEN
3939         x_bsd_rec.end_reading := l_bsd_rec.end_reading;
3940       END IF;
3941       IF (x_bsd_rec.base_reading = OKC_API.G_MISS_NUM)
3942       THEN
3943         x_bsd_rec.base_reading := l_bsd_rec.base_reading;
3944       END IF;
3945       IF (x_bsd_rec.estimated_quantity = OKC_API.G_MISS_NUM)
3946       THEN
3947         x_bsd_rec.estimated_quantity := l_bsd_rec.estimated_quantity;
3948       END IF;
3949       IF (x_bsd_rec.unit_of_measure = OKC_API.G_MISS_CHAR)
3950       THEN
3951         x_bsd_rec.unit_of_measure := l_bsd_rec.unit_of_measure;
3952       END IF;
3953       IF (x_bsd_rec.amcv_yn = OKC_API.G_MISS_CHAR)
3954       THEN
3955         x_bsd_rec.amcv_yn := l_bsd_rec.amcv_yn;
3956       END IF;
3957       IF (x_bsd_rec.result = OKC_API.G_MISS_NUM)
3958       THEN
3959         x_bsd_rec.result := l_bsd_rec.result;
3960       END IF;
3961       IF (x_bsd_rec.amount = OKC_API.G_MISS_NUM)
3962       THEN
3963         x_bsd_rec.amount := l_bsd_rec.amount;
3964       END IF;
3965       IF (x_bsd_rec.object_version_number = OKC_API.G_MISS_NUM)
3966       THEN
3967         x_bsd_rec.object_version_number := l_bsd_rec.object_version_number;
3968       END IF;
3969       IF (x_bsd_rec.created_by = OKC_API.G_MISS_NUM)
3970       THEN
3971         x_bsd_rec.created_by := l_bsd_rec.created_by;
3972       END IF;
3973       IF (x_bsd_rec.creation_date = OKC_API.G_MISS_DATE)
3974       THEN
3975         x_bsd_rec.creation_date := l_bsd_rec.creation_date;
3976       END IF;
3977       IF (x_bsd_rec.last_updated_by = OKC_API.G_MISS_NUM)
3978       THEN
3979         x_bsd_rec.last_updated_by := l_bsd_rec.last_updated_by;
3980       END IF;
3981       IF (x_bsd_rec.last_update_date = OKC_API.G_MISS_DATE)
3982       THEN
3983         x_bsd_rec.last_update_date := l_bsd_rec.last_update_date;
3984       END IF;
3985       IF (x_bsd_rec.fixed = OKC_API.G_MISS_NUM)
3986       THEN
3987         x_bsd_rec.fixed := l_bsd_rec.fixed;
3988       END IF;
3989       IF (x_bsd_rec.actual = OKC_API.G_MISS_NUM)
3990       THEN
3991         x_bsd_rec.actual := l_bsd_rec.actual;
3992       END IF;
3993       IF (x_bsd_rec.default_default = OKC_API.G_MISS_NUM)
3994       THEN
3995         x_bsd_rec.default_default := l_bsd_rec.default_default;
3996       END IF;
3997       IF (x_bsd_rec.adjustment_level = OKC_API.G_MISS_NUM)
3998       THEN
3999         x_bsd_rec.adjustment_level := l_bsd_rec.adjustment_level;
4000       END IF;
4001       IF (x_bsd_rec.adjustment_minimum = OKC_API.G_MISS_NUM)
4002       THEN
4003         x_bsd_rec.adjustment_minimum := l_bsd_rec.adjustment_minimum;
4004       END IF;
4005       IF (x_bsd_rec.last_update_login = OKC_API.G_MISS_NUM)
4006       THEN
4007         x_bsd_rec.last_update_login := l_bsd_rec.last_update_login;
4008       END IF;
4009       IF (x_bsd_rec.attribute_category = OKC_API.G_MISS_CHAR)
4010       THEN
4011         x_bsd_rec.attribute_category := l_bsd_rec.attribute_category;
4012       END IF;
4013       IF (x_bsd_rec.attribute1 = OKC_API.G_MISS_CHAR)
4014       THEN
4015         x_bsd_rec.attribute1 := l_bsd_rec.attribute1;
4016       END IF;
4017       IF (x_bsd_rec.attribute2 = OKC_API.G_MISS_CHAR)
4018       THEN
4019         x_bsd_rec.attribute2 := l_bsd_rec.attribute2;
4020       END IF;
4021       IF (x_bsd_rec.attribute3 = OKC_API.G_MISS_CHAR)
4022       THEN
4023         x_bsd_rec.attribute3 := l_bsd_rec.attribute3;
4024       END IF;
4025       IF (x_bsd_rec.attribute4 = OKC_API.G_MISS_CHAR)
4026       THEN
4027         x_bsd_rec.attribute4 := l_bsd_rec.attribute4;
4028       END IF;
4029       IF (x_bsd_rec.attribute5 = OKC_API.G_MISS_CHAR)
4030       THEN
4031         x_bsd_rec.attribute5 := l_bsd_rec.attribute5;
4032       END IF;
4033       IF (x_bsd_rec.attribute6 = OKC_API.G_MISS_CHAR)
4034       THEN
4035         x_bsd_rec.attribute6 := l_bsd_rec.attribute6;
4036       END IF;
4037       IF (x_bsd_rec.attribute7 = OKC_API.G_MISS_CHAR)
4038       THEN
4039         x_bsd_rec.attribute7 := l_bsd_rec.attribute7;
4040       END IF;
4041       IF (x_bsd_rec.attribute8 = OKC_API.G_MISS_CHAR)
4042       THEN
4043         x_bsd_rec.attribute8 := l_bsd_rec.attribute8;
4044       END IF;
4045       IF (x_bsd_rec.attribute9 = OKC_API.G_MISS_CHAR)
4046       THEN
4047         x_bsd_rec.attribute9 := l_bsd_rec.attribute9;
4048       END IF;
4049       IF (x_bsd_rec.attribute10 = OKC_API.G_MISS_CHAR)
4050       THEN
4051         x_bsd_rec.attribute10 := l_bsd_rec.attribute10;
4052       END IF;
4053       IF (x_bsd_rec.attribute11 = OKC_API.G_MISS_CHAR)
4054       THEN
4055         x_bsd_rec.attribute11 := l_bsd_rec.attribute11;
4056       END IF;
4057       IF (x_bsd_rec.attribute12 = OKC_API.G_MISS_CHAR)
4058       THEN
4059         x_bsd_rec.attribute12 := l_bsd_rec.attribute12;
4060       END IF;
4061       IF (x_bsd_rec.attribute13 = OKC_API.G_MISS_CHAR)
4062       THEN
4063         x_bsd_rec.attribute13 := l_bsd_rec.attribute13;
4064       END IF;
4065       IF (x_bsd_rec.attribute14 = OKC_API.G_MISS_CHAR)
4066       THEN
4067         x_bsd_rec.attribute14 := l_bsd_rec.attribute14;
4068       END IF;
4069       IF (x_bsd_rec.attribute15 = OKC_API.G_MISS_CHAR)
4070       THEN
4071         x_bsd_rec.attribute15 := l_bsd_rec.attribute15;
4072       END IF;
4073       RETURN(l_return_status);
4074     END populate_new_record;
4075     -----------------------------------------------
4076     -- Set_Attributes for:OKS_BILL_SUB_LINE_DTLS --
4077     -----------------------------------------------
4078     FUNCTION Set_Attributes (
4079       p_bsd_rec IN  bsd_rec_type,
4080       x_bsd_rec OUT NOCOPY bsd_rec_type
4081     ) RETURN VARCHAR2 IS
4082       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4083     BEGIN
4084       x_bsd_rec := p_bsd_rec;
4085       RETURN(l_return_status);
4086     END Set_Attributes;
4087   BEGIN
4088     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4089                                               p_init_msg_list,
4090                                               '_PVT',
4091                                               x_return_status);
4092     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4093       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4094     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4095       RAISE OKC_API.G_EXCEPTION_ERROR;
4096     END IF;
4097     --- Setting item attributes
4098     l_return_status := Set_Attributes(
4099       p_bsd_rec,                         -- IN
4100       l_bsd_rec);                        -- OUT
4101     --- If any errors happen abort API
4102     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4103       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4104     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4105       RAISE OKC_API.G_EXCEPTION_ERROR;
4106     END IF;
4107     l_return_status := populate_new_record(l_bsd_rec, l_def_bsd_rec);
4108     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4109       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4110     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4111       RAISE OKC_API.G_EXCEPTION_ERROR;
4112     END IF;
4113     UPDATE  OKS_BILL_SUB_LINE_DTLS
4114     SET BSL_ID = l_def_bsd_rec.bsl_id,
4115         BSL_ID_AVERAGED = l_def_bsd_rec.bsl_id_averaged,
4116         BSD_ID = l_def_bsd_rec.bsd_id,
4117         BSD_ID_APPLIED = l_def_bsd_rec.bsd_id_applied,
4118         CCR_ID         = l_def_bsd_rec.ccr_id,
4119         CGR_ID         = l_def_bsd_rec.cgr_id,
4120         START_READING         = l_def_bsd_rec.start_reading,
4121         END_READING         = l_def_bsd_rec.end_reading,
4122         BASE_READING         = l_def_bsd_rec.base_reading,
4123         ESTIMATED_QUANTITY         = l_def_bsd_rec.estimated_quantity,
4124         UNIT_OF_MEASURE = l_def_bsd_rec.unit_of_measure,
4125         AMCV_YN = l_def_bsd_rec.amcv_yn,
4126         RESULT = l_def_bsd_rec.result,
4127         AMOUNT = l_def_bsd_rec.amount,
4128         OBJECT_VERSION_NUMBER = l_def_bsd_rec.object_version_number,
4129         CREATED_BY = l_def_bsd_rec.created_by,
4130         CREATION_DATE = l_def_bsd_rec.creation_date,
4131         LAST_UPDATED_BY = l_def_bsd_rec.last_updated_by,
4132         LAST_UPDATE_DATE = l_def_bsd_rec.last_update_date,
4133         FIXED = l_def_bsd_rec.fixed,
4134         ACTUAL = l_def_bsd_rec.actual,
4135         DEFAULT_DEFAULT = l_def_bsd_rec.default_default,
4136         ADJUSTMENT_LEVEL = l_def_bsd_rec.adjustment_level,
4137         ADJUSTMENT_MINIMUM = l_def_bsd_rec.adjustment_minimum,
4138         LAST_UPDATE_LOGIN = l_def_bsd_rec.last_update_login,
4139         ATTRIBUTE_CATEGORY = l_def_bsd_rec.attribute_category,
4140         ATTRIBUTE1 = l_def_bsd_rec.attribute1,
4141         ATTRIBUTE2 = l_def_bsd_rec.attribute2,
4142         ATTRIBUTE3 = l_def_bsd_rec.attribute3,
4143         ATTRIBUTE4 = l_def_bsd_rec.attribute4,
4144         ATTRIBUTE5 = l_def_bsd_rec.attribute5,
4145         ATTRIBUTE6 = l_def_bsd_rec.attribute6,
4146         ATTRIBUTE7 = l_def_bsd_rec.attribute7,
4147         ATTRIBUTE8 = l_def_bsd_rec.attribute8,
4148         ATTRIBUTE9 = l_def_bsd_rec.attribute9,
4149         ATTRIBUTE10 = l_def_bsd_rec.attribute10,
4150         ATTRIBUTE11 = l_def_bsd_rec.attribute11,
4151         ATTRIBUTE12 = l_def_bsd_rec.attribute12,
4152         ATTRIBUTE13 = l_def_bsd_rec.attribute13,
4153         ATTRIBUTE14 = l_def_bsd_rec.attribute14,
4154         ATTRIBUTE15 = l_def_bsd_rec.attribute15
4155     WHERE ID = l_def_bsd_rec.id;
4156 
4157     x_bsd_rec := l_def_bsd_rec;
4158     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4159   EXCEPTION
4160     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4161       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4162       (
4163         l_api_name,
4164         G_PKG_NAME,
4165         'OKC_API.G_RET_STS_ERROR',
4166         x_msg_count,
4167         x_msg_data,
4168         '_PVT'
4169       );
4170     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4171       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4172       (
4173         l_api_name,
4174         G_PKG_NAME,
4175         'OKC_API.G_RET_STS_UNEXP_ERROR',
4176         x_msg_count,
4177         x_msg_data,
4178         '_PVT'
4179       );
4180     WHEN OTHERS THEN
4181       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4182       (
4183         l_api_name,
4184         G_PKG_NAME,
4185         'OTHERS',
4186         x_msg_count,
4187         x_msg_data,
4188         '_PVT'
4189       );
4190   END update_row;
4191   --------------------------------------------
4192   -- update_row for:OKS_BILL_SUBLINE_DTLS_V --
4193   --------------------------------------------
4194   PROCEDURE update_row(
4195     p_api_version                  IN NUMBER,
4196     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4197     x_return_status                OUT NOCOPY VARCHAR2,
4198     x_msg_count                    OUT NOCOPY NUMBER,
4199     x_msg_data                     OUT NOCOPY VARCHAR2,
4200     p_bsdv_rec                     IN bsdv_rec_type,
4201     x_bsdv_rec                     OUT NOCOPY bsdv_rec_type) IS
4202 
4203     l_api_version                 CONSTANT NUMBER := 1;
4204     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
4205     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4206     l_bsdv_rec                     bsdv_rec_type := p_bsdv_rec;
4207     l_def_bsdv_rec                 bsdv_rec_type;
4208     l_bsd_rec                      bsd_rec_type;
4209     lx_bsd_rec                     bsd_rec_type;
4210     -------------------------------
4211     -- FUNCTION fill_who_columns --
4212     -------------------------------
4213     FUNCTION fill_who_columns (
4214       p_bsdv_rec	IN bsdv_rec_type
4215     ) RETURN bsdv_rec_type IS
4216       l_bsdv_rec	bsdv_rec_type := p_bsdv_rec;
4217     BEGIN
4218       l_bsdv_rec.LAST_UPDATE_DATE := SYSDATE;
4219       l_bsdv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
4220       l_bsdv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
4221       RETURN(l_bsdv_rec);
4222     END fill_who_columns;
4223     ----------------------------------
4224     -- FUNCTION populate_new_record --
4225     ----------------------------------
4226     FUNCTION populate_new_record (
4227       p_bsdv_rec	IN bsdv_rec_type,
4228       x_bsdv_rec	OUT NOCOPY bsdv_rec_type
4229     ) RETURN VARCHAR2 IS
4230       l_bsdv_rec                     bsdv_rec_type;
4231       l_row_notfound                 BOOLEAN := TRUE;
4232       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4233     BEGIN
4234       x_bsdv_rec := p_bsdv_rec;
4235       -- Get current database values
4236       l_bsdv_rec := get_rec(p_bsdv_rec, l_row_notfound);
4237       IF (l_row_notfound) THEN
4238         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4239       END IF;
4240       IF (x_bsdv_rec.id = OKC_API.G_MISS_NUM)
4241       THEN
4242         x_bsdv_rec.id := l_bsdv_rec.id;
4243       END IF;
4244       IF (x_bsdv_rec.object_version_number = OKC_API.G_MISS_NUM)
4245       THEN
4246         x_bsdv_rec.object_version_number := l_bsdv_rec.object_version_number;
4247       END IF;
4248       IF (x_bsdv_rec.bsl_id = OKC_API.G_MISS_NUM)
4249       THEN
4250         x_bsdv_rec.bsl_id := l_bsdv_rec.bsl_id;
4251       END IF;
4252       IF (x_bsdv_rec.bsl_id_averaged = OKC_API.G_MISS_NUM)
4253       THEN
4254         x_bsdv_rec.bsl_id_averaged := l_bsdv_rec.bsl_id_averaged;
4255       END IF;
4256       IF (x_bsdv_rec.bsd_id = OKC_API.G_MISS_NUM)
4257       THEN
4258         x_bsdv_rec.bsd_id := l_bsdv_rec.bsd_id;
4259       END IF;
4260       IF (x_bsdv_rec.bsd_id_applied = OKC_API.G_MISS_NUM)
4261       THEN
4262         x_bsdv_rec.bsd_id_applied := l_bsdv_rec.bsd_id_applied;
4263       END IF;
4264       IF (x_bsdv_rec.ccr_id = OKC_API.G_MISS_NUM)
4265       THEN
4266         x_bsdv_rec.ccr_id := l_bsdv_rec.ccr_id;
4267       END IF;
4268       IF (x_bsdv_rec.cgr_id = OKC_API.G_MISS_NUM)
4269       THEN
4270         x_bsdv_rec.cgr_id := l_bsdv_rec.cgr_id;
4271       END IF;
4272       IF (x_bsdv_rec.start_Reading = OKC_API.G_MISS_NUM)
4273       THEN
4274         x_bsdv_rec.start_Reading := l_bsdv_rec.start_Reading;
4275       END IF;
4276       IF (x_bsdv_rec.end_reading = OKC_API.G_MISS_NUM)
4277       THEN
4278         x_bsdv_rec.end_reading := l_bsdv_rec.end_reading;
4279       END IF;
4280       IF (x_bsdv_rec.base_reading = OKC_API.G_MISS_NUM)
4281       THEN
4282         x_bsdv_rec.base_reading := l_bsdv_rec.base_reading;
4283       END IF;
4284       IF (x_bsdv_rec.estimated_quantity = OKC_API.G_MISS_NUM)
4285       THEN
4286         x_bsdv_rec.estimated_quantity := l_bsdv_rec.estimated_quantity;
4287       END IF;
4288       IF (x_bsdv_rec.unit_of_measure = OKC_API.G_MISS_CHAR)
4289       THEN
4290         x_bsdv_rec.unit_of_measure := l_bsdv_rec.unit_of_measure;
4291       END IF;
4292       IF (x_bsdv_rec.fixed = OKC_API.G_MISS_NUM)
4293       THEN
4294         x_bsdv_rec.fixed := l_bsdv_rec.fixed;
4295       END IF;
4296       IF (x_bsdv_rec.actual = OKC_API.G_MISS_NUM)
4297       THEN
4298         x_bsdv_rec.actual := l_bsdv_rec.actual;
4299       END IF;
4300       IF (x_bsdv_rec.default_default = OKC_API.G_MISS_NUM)
4301       THEN
4302         x_bsdv_rec.default_default := l_bsdv_rec.default_default;
4303       END IF;
4304       IF (x_bsdv_rec.amcv_yn = OKC_API.G_MISS_CHAR)
4305       THEN
4306         x_bsdv_rec.amcv_yn := l_bsdv_rec.amcv_yn;
4307       END IF;
4308       IF (x_bsdv_rec.adjustment_level = OKC_API.G_MISS_NUM)
4309       THEN
4310         x_bsdv_rec.adjustment_level := l_bsdv_rec.adjustment_level;
4311       END IF;
4312       IF (x_bsdv_rec.adjustment_minimum = OKC_API.G_MISS_NUM)
4313       THEN
4314         x_bsdv_rec.adjustment_minimum := l_bsdv_rec.adjustment_minimum;
4315       END IF;
4316       IF (x_bsdv_rec.result = OKC_API.G_MISS_NUM)
4317       THEN
4318         x_bsdv_rec.result := l_bsdv_rec.result;
4319       END IF;
4320       IF (x_bsdv_rec.amount = OKC_API.G_MISS_NUM)
4321       THEN
4322         x_bsdv_rec.amount := l_bsdv_rec.amount;
4323       END IF;
4324       IF (x_bsdv_rec.attribute_category = OKC_API.G_MISS_CHAR)
4325       THEN
4326         x_bsdv_rec.attribute_category := l_bsdv_rec.attribute_category;
4327       END IF;
4328       IF (x_bsdv_rec.attribute1 = OKC_API.G_MISS_CHAR)
4329       THEN
4330         x_bsdv_rec.attribute1 := l_bsdv_rec.attribute1;
4331       END IF;
4332       IF (x_bsdv_rec.attribute2 = OKC_API.G_MISS_CHAR)
4333       THEN
4334         x_bsdv_rec.attribute2 := l_bsdv_rec.attribute2;
4335       END IF;
4336       IF (x_bsdv_rec.attribute3 = OKC_API.G_MISS_CHAR)
4337       THEN
4338         x_bsdv_rec.attribute3 := l_bsdv_rec.attribute3;
4339       END IF;
4340       IF (x_bsdv_rec.attribute4 = OKC_API.G_MISS_CHAR)
4341       THEN
4342         x_bsdv_rec.attribute4 := l_bsdv_rec.attribute4;
4343       END IF;
4344       IF (x_bsdv_rec.attribute5 = OKC_API.G_MISS_CHAR)
4345       THEN
4346         x_bsdv_rec.attribute5 := l_bsdv_rec.attribute5;
4347       END IF;
4348       IF (x_bsdv_rec.attribute6 = OKC_API.G_MISS_CHAR)
4349       THEN
4350         x_bsdv_rec.attribute6 := l_bsdv_rec.attribute6;
4351       END IF;
4352       IF (x_bsdv_rec.attribute7 = OKC_API.G_MISS_CHAR)
4353       THEN
4354         x_bsdv_rec.attribute7 := l_bsdv_rec.attribute7;
4355       END IF;
4356       IF (x_bsdv_rec.attribute8 = OKC_API.G_MISS_CHAR)
4357       THEN
4358         x_bsdv_rec.attribute8 := l_bsdv_rec.attribute8;
4359       END IF;
4360       IF (x_bsdv_rec.attribute9 = OKC_API.G_MISS_CHAR)
4361       THEN
4362         x_bsdv_rec.attribute9 := l_bsdv_rec.attribute9;
4363       END IF;
4364       IF (x_bsdv_rec.attribute10 = OKC_API.G_MISS_CHAR)
4365       THEN
4366         x_bsdv_rec.attribute10 := l_bsdv_rec.attribute10;
4367       END IF;
4368       IF (x_bsdv_rec.attribute11 = OKC_API.G_MISS_CHAR)
4369       THEN
4370         x_bsdv_rec.attribute11 := l_bsdv_rec.attribute11;
4371       END IF;
4372       IF (x_bsdv_rec.attribute12 = OKC_API.G_MISS_CHAR)
4373       THEN
4374         x_bsdv_rec.attribute12 := l_bsdv_rec.attribute12;
4375       END IF;
4376       IF (x_bsdv_rec.attribute13 = OKC_API.G_MISS_CHAR)
4377       THEN
4378         x_bsdv_rec.attribute13 := l_bsdv_rec.attribute13;
4379       END IF;
4380       IF (x_bsdv_rec.attribute14 = OKC_API.G_MISS_CHAR)
4381       THEN
4382         x_bsdv_rec.attribute14 := l_bsdv_rec.attribute14;
4383       END IF;
4384       IF (x_bsdv_rec.attribute15 = OKC_API.G_MISS_CHAR)
4385       THEN
4386         x_bsdv_rec.attribute15 := l_bsdv_rec.attribute15;
4387       END IF;
4388       IF (x_bsdv_rec.created_by = OKC_API.G_MISS_NUM)
4389       THEN
4390         x_bsdv_rec.created_by := l_bsdv_rec.created_by;
4391       END IF;
4392       IF (x_bsdv_rec.creation_date = OKC_API.G_MISS_DATE)
4393       THEN
4394         x_bsdv_rec.creation_date := l_bsdv_rec.creation_date;
4395       END IF;
4396       IF (x_bsdv_rec.last_updated_by = OKC_API.G_MISS_NUM)
4397       THEN
4398         x_bsdv_rec.last_updated_by := l_bsdv_rec.last_updated_by;
4399       END IF;
4400       IF (x_bsdv_rec.last_update_date = OKC_API.G_MISS_DATE)
4401       THEN
4402         x_bsdv_rec.last_update_date := l_bsdv_rec.last_update_date;
4403       END IF;
4404       IF (x_bsdv_rec.last_update_login = OKC_API.G_MISS_NUM)
4405       THEN
4406         x_bsdv_rec.last_update_login := l_bsdv_rec.last_update_login;
4407       END IF;
4408       RETURN(l_return_status);
4409     END populate_new_record;
4410     ------------------------------------------------
4411     -- Set_Attributes for:OKS_BILL_SUBLINE_DTLS_V --
4412     ------------------------------------------------
4413     FUNCTION Set_Attributes (
4414       p_bsdv_rec IN  bsdv_rec_type,
4415       x_bsdv_rec OUT NOCOPY bsdv_rec_type
4416     ) RETURN VARCHAR2 IS
4417       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4418     BEGIN
4419       x_bsdv_rec := p_bsdv_rec;
4420       x_bsdv_rec.OBJECT_VERSION_NUMBER := NVL(x_bsdv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
4421       RETURN(l_return_status);
4422     END Set_Attributes;
4423   BEGIN
4424     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4425                                               G_PKG_NAME,
4426                                               p_init_msg_list,
4427                                               l_api_version,
4428                                               p_api_version,
4429                                               '_PVT',
4430                                               x_return_status);
4431     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4432       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4433     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4434       RAISE OKC_API.G_EXCEPTION_ERROR;
4435     END IF;
4436     --- Setting item attributes
4437     l_return_status := Set_Attributes(
4438       p_bsdv_rec,                        -- IN
4439       l_bsdv_rec);                       -- OUT
4440     --- If any errors happen abort API
4441     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4442       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4443     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4444       RAISE OKC_API.G_EXCEPTION_ERROR;
4445     END IF;
4446     l_return_status := populate_new_record(l_bsdv_rec, l_def_bsdv_rec);
4447     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4448       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4449     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4450       RAISE OKC_API.G_EXCEPTION_ERROR;
4451     END IF;
4452     l_def_bsdv_rec := fill_who_columns(l_def_bsdv_rec);
4453     --- Validate all non-missing attributes (Item Level Validation)
4454     l_return_status := Validate_Attributes(l_def_bsdv_rec);
4455     --- If any errors happen abort API
4456     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4457       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4458     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4459       RAISE OKC_API.G_EXCEPTION_ERROR;
4460     END IF;
4461     l_return_status := Validate_Record(l_def_bsdv_rec);
4462     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4463       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4464     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4465       RAISE OKC_API.G_EXCEPTION_ERROR;
4466     END IF;
4467 
4468     --------------------------------------
4469     -- Move VIEW record to "Child" records
4470     --------------------------------------
4471     migrate(l_def_bsdv_rec, l_bsd_rec);
4472     --------------------------------------------
4473     -- Call the UPDATE_ROW for each child record
4474     --------------------------------------------
4475     update_row(
4476       p_init_msg_list,
4477       x_return_status,
4478       x_msg_count,
4479       x_msg_data,
4480       l_bsd_rec,
4481       lx_bsd_rec
4482     );
4483     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4484       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4485     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4486       RAISE OKC_API.G_EXCEPTION_ERROR;
4487     END IF;
4488     migrate(lx_bsd_rec, l_def_bsdv_rec);
4489     x_bsdv_rec := l_def_bsdv_rec;
4490     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4491   EXCEPTION
4492     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4493       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4494       (
4495         l_api_name,
4496         G_PKG_NAME,
4497         'OKC_API.G_RET_STS_ERROR',
4498         x_msg_count,
4499         x_msg_data,
4500         '_PVT'
4501       );
4502     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4503       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4504       (
4505         l_api_name,
4506         G_PKG_NAME,
4507         'OKC_API.G_RET_STS_UNEXP_ERROR',
4508         x_msg_count,
4509         x_msg_data,
4510         '_PVT'
4511       );
4512     WHEN OTHERS THEN
4513       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4514       (
4515         l_api_name,
4516         G_PKG_NAME,
4517         'OTHERS',
4518         x_msg_count,
4519         x_msg_data,
4520         '_PVT'
4521       );
4522   END update_row;
4523   ----------------------------------------
4524   -- PL/SQL TBL update_row for:BSDV_TBL --
4525   ----------------------------------------
4526   PROCEDURE update_row(
4527     p_api_version                  IN NUMBER,
4528     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4529     x_return_status                OUT NOCOPY VARCHAR2,
4530     x_msg_count                    OUT NOCOPY NUMBER,
4531     x_msg_data                     OUT NOCOPY VARCHAR2,
4532     p_bsdv_tbl                     IN bsdv_tbl_type,
4533     x_bsdv_tbl                     OUT NOCOPY bsdv_tbl_type) IS
4534 
4535     l_api_version                 CONSTANT NUMBER := 1;
4536     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
4537     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4538     i                              NUMBER := 0;
4539   BEGIN
4540     OKC_API.init_msg_list(p_init_msg_list);
4541     -- Make sure PL/SQL table has records in it before passing
4542     IF (p_bsdv_tbl.COUNT > 0) THEN
4543       i := p_bsdv_tbl.FIRST;
4544       LOOP
4545         update_row (
4546           p_api_version                  => p_api_version,
4547           p_init_msg_list                => OKC_API.G_FALSE,
4548           x_return_status                => x_return_status,
4549           x_msg_count                    => x_msg_count,
4550           x_msg_data                     => x_msg_data,
4551           p_bsdv_rec                     => p_bsdv_tbl(i),
4552           x_bsdv_rec                     => x_bsdv_tbl(i));
4553         EXIT WHEN (i = p_bsdv_tbl.LAST);
4554         i := p_bsdv_tbl.NEXT(i);
4555       END LOOP;
4556     END IF;
4557   EXCEPTION
4558     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4559       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4560       (
4561         l_api_name,
4562         G_PKG_NAME,
4563         'OKC_API.G_RET_STS_ERROR',
4564         x_msg_count,
4565         x_msg_data,
4566         '_PVT'
4567       );
4568     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4569       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4570       (
4571         l_api_name,
4572         G_PKG_NAME,
4573         'OKC_API.G_RET_STS_UNEXP_ERROR',
4574         x_msg_count,
4575         x_msg_data,
4576         '_PVT'
4577       );
4578     WHEN OTHERS THEN
4579       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4580       (
4581         l_api_name,
4582         G_PKG_NAME,
4583         'OTHERS',
4584         x_msg_count,
4585         x_msg_data,
4586         '_PVT'
4587       );
4588   END update_row;
4589 
4590   ---------------------------------------------------------------------------
4591   -- PROCEDURE delete_row
4592   ---------------------------------------------------------------------------
4593   -------------------------------------------
4594   -- delete_row for:OKS_BILL_SUB_LINE_DTLS --
4595   -------------------------------------------
4596   PROCEDURE delete_row(
4597     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4598     x_return_status                OUT NOCOPY VARCHAR2,
4599     x_msg_count                    OUT NOCOPY NUMBER,
4600     x_msg_data                     OUT NOCOPY VARCHAR2,
4601     p_bsd_rec                      IN bsd_rec_type) IS
4602 
4603     l_api_version                 CONSTANT NUMBER := 1;
4604     l_api_name                     CONSTANT VARCHAR2(30) := 'DTLS_delete_row';
4605     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4606     l_bsd_rec                      bsd_rec_type:= p_bsd_rec;
4607     l_row_notfound                 BOOLEAN := TRUE;
4608   BEGIN
4609     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4610                                               p_init_msg_list,
4611                                               '_PVT',
4612                                               x_return_status);
4613     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4614       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4615     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4616       RAISE OKC_API.G_EXCEPTION_ERROR;
4617     END IF;
4618     DELETE FROM OKS_BILL_SUB_LINE_DTLS
4619      WHERE ID = l_bsd_rec.id;
4620 
4621     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4622   EXCEPTION
4623     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4624       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4625       (
4626         l_api_name,
4627         G_PKG_NAME,
4628         'OKC_API.G_RET_STS_ERROR',
4629         x_msg_count,
4630         x_msg_data,
4631         '_PVT'
4632       );
4633     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4634       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4635       (
4636         l_api_name,
4637         G_PKG_NAME,
4638         'OKC_API.G_RET_STS_UNEXP_ERROR',
4639         x_msg_count,
4640         x_msg_data,
4641         '_PVT'
4642       );
4643     WHEN OTHERS THEN
4644       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4645       (
4646         l_api_name,
4647         G_PKG_NAME,
4648         'OTHERS',
4649         x_msg_count,
4650         x_msg_data,
4651         '_PVT'
4652       );
4653   END delete_row;
4654   --------------------------------------------
4655   -- delete_row for:OKS_BILL_SUBLINE_DTLS_V --
4656   --------------------------------------------
4657   PROCEDURE delete_row(
4658     p_api_version                  IN NUMBER,
4659     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4660     x_return_status                OUT NOCOPY VARCHAR2,
4661     x_msg_count                    OUT NOCOPY NUMBER,
4662     x_msg_data                     OUT NOCOPY VARCHAR2,
4663     p_bsdv_rec                     IN bsdv_rec_type) IS
4664 
4665     l_api_version                 CONSTANT NUMBER := 1;
4666     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
4667     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4668     l_bsdv_rec                     bsdv_rec_type := p_bsdv_rec;
4669     l_bsd_rec                      bsd_rec_type;
4670   BEGIN
4671     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4672                                               G_PKG_NAME,
4673                                               p_init_msg_list,
4674                                               l_api_version,
4675                                               p_api_version,
4676                                               '_PVT',
4677                                               x_return_status);
4678     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4679       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4680     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4681       RAISE OKC_API.G_EXCEPTION_ERROR;
4682     END IF;
4683     --------------------------------------
4684     -- Move VIEW record to "Child" records
4685     --------------------------------------
4686     migrate(l_bsdv_rec, l_bsd_rec);
4687     --------------------------------------------
4688     -- Call the DELETE_ROW for each child record
4689     --------------------------------------------
4690     delete_row(
4691       p_init_msg_list,
4692       x_return_status,
4693       x_msg_count,
4694       x_msg_data,
4695       l_bsd_rec
4696     );
4697     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4698       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4699     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4700       RAISE OKC_API.G_EXCEPTION_ERROR;
4701     END IF;
4702     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4703   EXCEPTION
4704     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4705       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4706       (
4707         l_api_name,
4708         G_PKG_NAME,
4709         'OKC_API.G_RET_STS_ERROR',
4710         x_msg_count,
4711         x_msg_data,
4712         '_PVT'
4713       );
4714     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4715       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4716       (
4717         l_api_name,
4718         G_PKG_NAME,
4719         'OKC_API.G_RET_STS_UNEXP_ERROR',
4720         x_msg_count,
4721         x_msg_data,
4722         '_PVT'
4723       );
4724     WHEN OTHERS THEN
4725       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4726       (
4727         l_api_name,
4728         G_PKG_NAME,
4729         'OTHERS',
4730         x_msg_count,
4731         x_msg_data,
4732         '_PVT'
4733       );
4734   END delete_row;
4735   ----------------------------------------
4736   -- PL/SQL TBL delete_row for:BSDV_TBL --
4737   ----------------------------------------
4738   PROCEDURE delete_row(
4739     p_api_version                  IN NUMBER,
4740     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
4741     x_return_status                OUT NOCOPY VARCHAR2,
4742     x_msg_count                    OUT NOCOPY NUMBER,
4743     x_msg_data                     OUT NOCOPY VARCHAR2,
4744     p_bsdv_tbl                     IN bsdv_tbl_type) IS
4745 
4746     l_api_version                 CONSTANT NUMBER := 1;
4747     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
4748     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4749     i                              NUMBER := 0;
4750   BEGIN
4751     OKC_API.init_msg_list(p_init_msg_list);
4752     -- Make sure PL/SQL table has records in it before passing
4753     IF (p_bsdv_tbl.COUNT > 0) THEN
4754       i := p_bsdv_tbl.FIRST;
4755       LOOP
4756         delete_row (
4757           p_api_version                  => p_api_version,
4758           p_init_msg_list                => OKC_API.G_FALSE,
4759           x_return_status                => x_return_status,
4760           x_msg_count                    => x_msg_count,
4761           x_msg_data                     => x_msg_data,
4762           p_bsdv_rec                     => p_bsdv_tbl(i));
4763         EXIT WHEN (i = p_bsdv_tbl.LAST);
4764         i := p_bsdv_tbl.NEXT(i);
4765       END LOOP;
4766     END IF;
4767   EXCEPTION
4768     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4769       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4770       (
4771         l_api_name,
4772         G_PKG_NAME,
4773         'OKC_API.G_RET_STS_ERROR',
4774         x_msg_count,
4775         x_msg_data,
4776         '_PVT'
4777       );
4778     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4779       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4780       (
4781         l_api_name,
4782         G_PKG_NAME,
4783         'OKC_API.G_RET_STS_UNEXP_ERROR',
4784         x_msg_count,
4785         x_msg_data,
4786         '_PVT'
4787       );
4788     WHEN OTHERS THEN
4789       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4790       (
4791         l_api_name,
4792         G_PKG_NAME,
4793         'OTHERS',
4794         x_msg_count,
4795         x_msg_data,
4796         '_PVT'
4797       );
4798   END delete_row;
4799 END OKS_BSD_PVT;