DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKS_BTN_PVT

Source


1 PACKAGE BODY OKS_BTN_PVT AS
2 /* $Header: OKSSBTNB.pls 120.0 2005/05/25 17:55:32 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_TRANSACTIONS
37   ---------------------------------------------------------------------------
38   FUNCTION get_rec (
39     p_btn_rec                      IN btn_rec_type,
40     x_no_data_found                OUT NOCOPY BOOLEAN
41   ) RETURN btn_rec_type IS
42     CURSOR btn_pk_csr (p_id                 IN NUMBER) IS
43     SELECT
44             ID,
45             CURRENCY_CODE,
46             OBJECT_VERSION_NUMBER,
47             CREATED_BY,
48             CREATION_DATE,
49             LAST_UPDATED_BY,
50             LAST_UPDATE_DATE,
51             TRX_DATE,
52             TRX_NUMBER,
53             TRX_AMOUNT,
54             TRX_CLASS,
55             LAST_UPDATE_LOGIN
56       FROM Oks_Bill_Transactions
57      WHERE oks_bill_transactions.id = p_id;
58     l_btn_pk                       btn_pk_csr%ROWTYPE;
59     l_btn_rec                      btn_rec_type;
60   BEGIN
61     x_no_data_found := TRUE;
62     -- Get current database values
63     OPEN btn_pk_csr (p_btn_rec.id);
64     FETCH btn_pk_csr INTO
65               l_btn_rec.ID,
66               l_btn_rec.CURRENCY_CODE,
67               l_btn_rec.OBJECT_VERSION_NUMBER,
68               l_btn_rec.CREATED_BY,
69               l_btn_rec.CREATION_DATE,
70               l_btn_rec.LAST_UPDATED_BY,
71               l_btn_rec.LAST_UPDATE_DATE,
72               l_btn_rec.TRX_DATE,
73               l_btn_rec.TRX_NUMBER,
74               l_btn_rec.TRX_AMOUNT,
75               l_btn_rec.TRX_CLASS,
76               l_btn_rec.LAST_UPDATE_LOGIN;
77     x_no_data_found := btn_pk_csr%NOTFOUND;
78     CLOSE btn_pk_csr;
79     RETURN(l_btn_rec);
80   END get_rec;
81 
82   FUNCTION get_rec (
83     p_btn_rec                      IN btn_rec_type
84   ) RETURN btn_rec_type IS
85     l_row_notfound                 BOOLEAN := TRUE;
86   BEGIN
87     RETURN(get_rec(p_btn_rec, l_row_notfound));
88   END get_rec;
89   ---------------------------------------------------------------------------
90   -- FUNCTION get_rec for: OKS_BILL_TRANSACTIONS_V
91   ---------------------------------------------------------------------------
92   FUNCTION get_rec (
93     p_btnv_rec                     IN btnv_rec_type,
94     x_no_data_found                OUT NOCOPY BOOLEAN
95   ) RETURN btnv_rec_type IS
96     CURSOR okc_btnv_pk_csr (p_id                 IN NUMBER) IS
97     SELECT
98             ID,
99             OBJECT_VERSION_NUMBER,
100             TRX_DATE,
101             TRX_NUMBER,
102             TRX_AMOUNT,
103             TRX_CLASS,
104             CURRENCY_CODE,
105             CREATED_BY,
106             CREATION_DATE,
107             LAST_UPDATED_BY,
108             LAST_UPDATE_DATE,
109             LAST_UPDATE_LOGIN
110       FROM Oks_Bill_Transactions_V
111      WHERE oks_bill_transactions_v.id = p_id;
112     l_okc_btnv_pk                  okc_btnv_pk_csr%ROWTYPE;
113     l_btnv_rec                     btnv_rec_type;
114   BEGIN
115     x_no_data_found := TRUE;
116     -- Get current database values
117     OPEN okc_btnv_pk_csr (p_btnv_rec.id);
118     FETCH okc_btnv_pk_csr INTO
119               l_btnv_rec.ID,
120               l_btnv_rec.OBJECT_VERSION_NUMBER,
121               l_btnv_rec.TRX_DATE,
122               l_btnv_rec.TRX_NUMBER,
123               l_btnv_rec.TRX_AMOUNT,
124               l_btnv_rec.TRX_CLASS,
125               l_btnv_rec.CURRENCY_CODE,
126               l_btnv_rec.CREATED_BY,
127               l_btnv_rec.CREATION_DATE,
128               l_btnv_rec.LAST_UPDATED_BY,
129               l_btnv_rec.LAST_UPDATE_DATE,
130               l_btnv_rec.LAST_UPDATE_LOGIN;
131     x_no_data_found := okc_btnv_pk_csr%NOTFOUND;
132     CLOSE okc_btnv_pk_csr;
133     RETURN(l_btnv_rec);
134   END get_rec;
135 
136   FUNCTION get_rec (
137     p_btnv_rec                     IN btnv_rec_type
138   ) RETURN btnv_rec_type IS
139     l_row_notfound                 BOOLEAN := TRUE;
140   BEGIN
141     RETURN(get_rec(p_btnv_rec, l_row_notfound));
142   END get_rec;
143 
144   -------------------------------------------------------------
145   -- FUNCTION null_out_defaults for: OKS_BILL_TRANSACTIONS_V --
146   -------------------------------------------------------------
147   FUNCTION null_out_defaults (
148     p_btnv_rec	IN btnv_rec_type
149   ) RETURN btnv_rec_type IS
150     l_btnv_rec	btnv_rec_type := p_btnv_rec;
151   BEGIN
152     IF (l_btnv_rec.object_version_number = OKC_API.G_MISS_NUM) THEN
153       l_btnv_rec.object_version_number := NULL;
154     END IF;
155     IF (l_btnv_rec.trx_date = OKC_API.G_MISS_DATE) THEN
156       l_btnv_rec.trx_date := NULL;
157     END IF;
158     IF (l_btnv_rec.trx_number = OKC_API.G_MISS_CHAR) THEN
159       l_btnv_rec.trx_number := NULL;
160     END IF;
161     IF (l_btnv_rec.trx_amount = OKC_API.G_MISS_NUM) THEN
162       l_btnv_rec.trx_amount := NULL;
163     END IF;
164     IF (l_btnv_rec.trx_class = OKC_API.G_MISS_CHAR) THEN
165       l_btnv_rec.trx_class := NULL;
166     END IF;
167     IF (l_btnv_rec.currency_code = OKC_API.G_MISS_CHAR) THEN
168       l_btnv_rec.currency_code := NULL;
169     END IF;
170     IF (l_btnv_rec.created_by = OKC_API.G_MISS_NUM) THEN
171       l_btnv_rec.created_by := NULL;
172     END IF;
173     IF (l_btnv_rec.creation_date = OKC_API.G_MISS_DATE) THEN
174       l_btnv_rec.creation_date := NULL;
175     END IF;
176     IF (l_btnv_rec.last_updated_by = OKC_API.G_MISS_NUM) THEN
177       l_btnv_rec.last_updated_by := NULL;
178     END IF;
179     IF (l_btnv_rec.last_update_date = OKC_API.G_MISS_DATE) THEN
180       l_btnv_rec.last_update_date := NULL;
181     END IF;
182     IF (l_btnv_rec.last_update_login = OKC_API.G_MISS_NUM) THEN
183       l_btnv_rec.last_update_login := NULL;
184     END IF;
185     RETURN(l_btnv_rec);
186   END null_out_defaults;
187   ---------------------------------------------------------------------------
188   -- PROCEDURE Validate_Attributes
189   ---------------------------------------------------------------------------
190   -----------------------------------------------------
191   -- Validate ID--
192   -----------------------------------------------------
193   PROCEDURE validate_id(x_return_status OUT NOCOPY varchar2,
194 				p_id   IN  Number)
195   Is
196   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
197   Begin
198 
199   x_return_status := OKC_API.G_RET_STS_SUCCESS;
200 
201   If p_id = OKC_API.G_MISS_NUM OR
202        p_id IS NULL
203   Then
204       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'id');
205       l_return_status := OKC_API.G_RET_STS_ERROR;
206   End If;
207 
208   Exception
209   When  G_EXCEPTION_HALT_VALIDATION THEN
210             x_return_status := l_return_status;
211 		NULL;
212   When OTHERS THEN
213 	-- store SQL error message on message stack for caller
214 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
215                           p_msg_name     => g_unexpected_error,
216                           p_token1       => g_sqlcode_token,
217                           p_token1_value => sqlcode,
218                           p_token2       => g_sqlerrm_token,
219                           p_token2_value => sqlerrm);
220 
221       -- notify caller of an UNEXPECTED error
222       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
223   End validate_id;
224 
225   -----------------------------------------------------
226   -- Validate Object Version Number --
227   -----------------------------------------------------
228   PROCEDURE validate_objvernum(x_return_status OUT NOCOPY varchar2,
229 					 P_object_version_number IN  Number)
230   Is
231   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
232   Begin
233 
234   x_return_status := OKC_API.G_RET_STS_SUCCESS;
235 
236   If p_object_version_number = OKC_API.G_MISS_NUM OR
237        p_object_version_number IS NULL
238   Then
239       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'object_version_number');
240       x_return_status := OKC_API.G_RET_STS_ERROR;
241 	RAISE G_EXCEPTION_HALT_VALIDATION;
242   End If;
243 
244   Exception
245   When  G_EXCEPTION_HALT_VALIDATION Then
246 		NULL;
247   When OTHERS Then
248 	-- store SQL error message on message stack for caller
249 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
250                           p_msg_name     => g_unexpected_error,
251                           p_token1       => g_sqlcode_token,
252                           p_token1_value => sqlcode,
253                           p_token2       => g_sqlerrm_token,
254                           p_token2_value => sqlerrm);
255 
256       -- notify caller of an UNEXPECTED error
257       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
258   END validate_objvernum;
259   -----------------------------------------------------
260   -- Validate TRX DATE --
261   -----------------------------------------------------
262   PROCEDURE validate_Trx_Date(x_return_status OUT NOCOPY varchar2,
263 							 P_Trx_Date IN  DATE)
264   Is
265   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
266 
267   Begin
268 
269 
270   x_return_status := OKC_API.G_RET_STS_SUCCESS;
271 
272   Exception
273   When  G_EXCEPTION_HALT_VALIDATION Then
274 		NULL;
275   When OTHERS Then
276 	-- store SQL error message on message stack for caller
277 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
278                           p_msg_name     => g_unexpected_error,
279                           p_token1       => g_sqlcode_token,
280                           p_token1_value => sqlcode,
281                           p_token2       => g_sqlerrm_token,
282                           p_token2_value => sqlerrm);
283 
284       -- notify caller of an UNEXPECTED error
285       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
286 
287 
288   END validate_Trx_Date;
289 
290   -----------------------------------------------------
291   -- Validate TRX NUMBER --
292   -----------------------------------------------------
293   PROCEDURE validate_Trx_Number(	x_return_status OUT NOCOPY varchar2,
294 					P_Trx_Number IN  VARCHAR2)
295   Is
296   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
297   Begin
298       -- call column length utility
299   /*
300   OKC_UTIL.CHECK_LENGTH
301   (
302 		 p_view_name     => 'OKS_BILL_TRANSACTIONS_V'
303             ,p_col_name      => 'TRX_NUMBER'
304             ,p_col_value     => P_Trx_Number
305             ,x_return_status => l_return_status
306    );
307    */
308 
309    -- verify that length is within allowed limits
310    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
311 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
312                           p_msg_name     => g_unexpected_error,
313                           p_token1       => g_sqlcode_token,
314                           p_token1_value => sqlcode,
315                           p_token2       => g_sqlerrm_token,
316                           p_token2_value => 'Trx Number Length');
317 
318 
319 	-- notify caller of an error
320 	x_return_status := OKC_API.G_RET_STS_ERROR;
321 	-- halt further validation of this column
322 	RAISE G_EXCEPTION_HALT_VALIDATION;
323   End If;
324 
325   Exception
326   When  G_EXCEPTION_HALT_VALIDATION Then
327 		NULL;
328   When OTHERS Then
329 	-- store SQL error message on message stack for caller
330 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
331                           p_msg_name     => g_unexpected_error,
332                           p_token1       => g_sqlcode_token,
333                           p_token1_value => sqlcode,
334                           p_token2       => g_sqlerrm_token,
335                           p_token2_value => sqlerrm);
336 
337       -- notify caller of an UNEXPECTED error
338       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
339   END validate_Trx_Number;
340 
341   -----------------------------------------------------
342   -- Validate TRX Amount --
343   -----------------------------------------------------
344   PROCEDURE validate_Trx_Amount(x_return_status OUT NOCOPY varchar2,
345 					P_Trx_Amount IN  NUMBER)
346   Is
347   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
348   Begin
349       -- call column length utility
350   /*
351   OKC_UTIL.CHECK_LENGTH
352   (
353 		 p_view_name     => 'OKS_BILL_TRANSACTIONS_V'
354             ,p_col_name      => 'TRX_AMOUNT'
355             ,p_col_value     => P_Trx_Amount
356             ,x_return_status => l_return_status
357    );
358    */
359 
360    -- verify that length is within allowed limits
361    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
362 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
363                           p_msg_name     => g_unexpected_error,
364                           p_token1       => g_sqlcode_token,
365                           p_token1_value => sqlcode,
366                           p_token2       => g_sqlerrm_token,
367                           p_token2_value => 'Trx Amount Length');
368 
369 
370 	-- notify caller of an error
371 	x_return_status := OKC_API.G_RET_STS_ERROR;
372 	-- halt further validation of this column
373 	RAISE G_EXCEPTION_HALT_VALIDATION;
374   End If;
375 
376   Exception
377   When  G_EXCEPTION_HALT_VALIDATION Then
378 		NULL;
379   When OTHERS Then
380 	-- store SQL error message on message stack for caller
381 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
382                           p_msg_name     => g_unexpected_error,
383                           p_token1       => g_sqlcode_token,
384                           p_token1_value => sqlcode,
385                           p_token2       => g_sqlerrm_token,
386                           p_token2_value => sqlerrm);
387 
388       -- notify caller of an UNEXPECTED error
389       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
390   END validate_Trx_Amount;
391   -----------------------------------------------------
392   -- Validate TRX Class --
393   -----------------------------------------------------
394   PROCEDURE validate_Trx_Class (x_return_status OUT NOCOPY varchar2,
395 					 P_Trx_Class IN  Varchar2)
396   Is
397   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
398   Begin
399 
400   x_return_status := OKC_API.G_RET_STS_SUCCESS;
401 
402   -- call column length utility
403 
404   /*
405   OKC_UTIL.CHECK_LENGTH
406   (
407 		 p_view_name     => 'OKS_BILL_TRANSACTIONS_V'
408             ,p_col_name      => 'TRX_CLASS'
409             ,p_col_value     => P_Trx_Class
410             ,x_return_status => l_return_status
411    );
412 
413    */
414 
415    -- verify that length is within allowed limits
416    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
417 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
418                           p_msg_name     => g_unexpected_error,
419                           p_token1       => g_sqlcode_token,
420                           p_token1_value => sqlcode,
421                           p_token2       => g_sqlerrm_token,
422                           p_token2_value => 'Trx_Class length');
423 
424 
425 	-- notify caller of an error
426 	x_return_status := OKC_API.G_RET_STS_ERROR;
427 	-- halt further validation of this column
428 	RAISE G_EXCEPTION_HALT_VALIDATION;
429   End If;
430 
431   Exception
432   When  G_EXCEPTION_HALT_VALIDATION Then
433 		NULL;
434   When OTHERS Then
435 	-- store SQL error message on message stack for caller
436 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
437                           p_msg_name     => g_unexpected_error,
438                           p_token1       => g_sqlcode_token,
439                           p_token1_value => sqlcode,
440                           p_token2       => g_sqlerrm_token,
441                           p_token2_value => sqlerrm);
442 
443       -- notify caller of an UNEXPECTED error
444       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
445   END validate_Trx_Class;
446 
447   -----------------------------------------------------
448   -- Validate TRX Class --
449   -----------------------------------------------------
450   PROCEDURE validate_Currency_Code(	x_return_status OUT NOCOPY varchar2,
451 							 P_Currency_Code IN  Varchar2)
452   Is
453   l_return_status         VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
454   Begin
455 
456   x_return_status := OKC_API.G_RET_STS_SUCCESS;
457 
458 
459   If P_Currency_Code= OKC_API.G_MISS_CHAR OR
460        P_Currency_Code IS NULL
461   Then
462       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'CURRENCY_CODE');
463       x_return_status := OKC_API.G_RET_STS_ERROR;
464 	RAISE G_EXCEPTION_HALT_VALIDATION;
465   End If;
466 
467   -- call column length utility
468 
469   /*
470   OKC_UTIL.CHECK_LENGTH
471   (
472 		 p_view_name     => 'OKS_BILL_TRANSACTIONS_V'
473             ,p_col_name      => 'CURRENCY_CODE'
474             ,p_col_value     => P_Currency_Code
475             ,x_return_status => l_return_status
476    );
477    */
478 
479    -- verify that length is within allowed limits
480    If (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
481 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
482                           p_msg_name     => g_unexpected_error,
483                           p_token1       => g_sqlcode_token,
484                           p_token1_value => sqlcode,
485                           p_token2       => g_sqlerrm_token,
486                           p_token2_value => 'CURRENCY CODE length');
487 
488 
489 	-- notify caller of an error
490 	x_return_status := OKC_API.G_RET_STS_ERROR;
491 	-- halt further validation of this column
492 	RAISE G_EXCEPTION_HALT_VALIDATION;
493   End If;
494 
495   Exception
496   When  G_EXCEPTION_HALT_VALIDATION Then
497 		NULL;
498   When OTHERS Then
499 	-- store SQL error message on message stack for caller
500 	OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
501                           p_msg_name     => g_unexpected_error,
502                           p_token1       => g_sqlcode_token,
503                           p_token1_value => sqlcode,
504                           p_token2       => g_sqlerrm_token,
505                           p_token2_value => sqlerrm);
506 
507       -- notify caller of an UNEXPECTED error
508       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
509   END validate_Currency_Code;
510 
511 
512 ---------------------------------------------------
513   -- Validate_Attributes for:OKS_BILL_TRANSACTIONS_V --
514   ---------------------------------------------------
515  FUNCTION Validate_Attributes (
516     p_btnv_rec IN  btnv_rec_type
517   )
518   Return VARCHAR2 Is
519     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
520     x_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
521 
522   Begin
523   -- call OKC_UTIL.ADD_VIEW to prepare the PL/SQL table to hold columns of view
524 
525     OKC_UTIL.ADD_VIEW('OKS_BILL_TRANSACTIONS_V',x_return_status);
526 
527     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
528        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
529           -- need to leave
530           l_return_status := x_return_status;
531           RAISE G_EXCEPTION_HALT_VALIDATION;
532        ELSE
533           -- record that there is a error
534           l_return_status := x_return_status;
535        END IF;
536     END IF;
537 
538     --Column Level Validation
539 
540     --ID
541     validate_id(x_return_status, p_btnv_rec.id);
542 
543     -- store the highest degree of error
544     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
545         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
546         -- need to leave
547         l_return_status := x_return_status;
548         RAISE G_EXCEPTION_HALT_VALIDATION;
549         ELSE
550         -- record that there was an error
551         l_return_status := x_return_status;
552         END IF;
553     END IF;
554 
555     --OBJECT_VERSION_NUMBER
556     validate_objvernum(x_return_status, p_btnv_rec.object_version_number);
557 
558     -- store the highest degree of error
559     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
560         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
561         -- need to leave
562         l_return_status := x_return_status;
563         RAISE G_EXCEPTION_HALT_VALIDATION;
564         ELSE
565         -- record that there was an error
566         l_return_status := x_return_status;
567         END IF;
568     END IF;
569     	--TRX_DATE
570 	 validate_Trx_Date(x_return_status, p_btnv_rec.Trx_Date);
571 
572     -- store the highest degree of error
573     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
574         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
575 
576 
577         -- need to leave
578         l_return_status := x_return_status;
579         RAISE G_EXCEPTION_HALT_VALIDATION;
580         ELSE
581         -- record that there was an error
582         l_return_status := x_return_status;
583         END IF;
584     END IF;
585 
586 	--TRX_NUMBER
587 	 validate_Trx_Number(x_return_status, p_btnv_rec.Trx_Number);
588 
589     -- store the highest degree of error
590     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
591         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
592 
593         -- need to leave
594         l_return_status := x_return_status;
595         RAISE G_EXCEPTION_HALT_VALIDATION;
596         ELSE
597         -- record that there was an error
598         l_return_status := x_return_status;
599         END IF;
600     END IF;
601 
602 	--TRX_AMOUNT
603 		validate_Trx_amount(x_return_status, p_btnv_rec.Trx_Amount);
604 
605     -- store the highest degree of error
606     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
607         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
608         -- need to leave
609         l_return_status := x_return_status;
610         RAISE G_EXCEPTION_HALT_VALIDATION;
611         ELSE
612         -- record that there was an error
613         l_return_status := x_return_status;
614         END IF;
615     END IF;
616 
617 
618 	--TRX_Class
619 		validate_Trx_Class(x_return_status, p_btnv_rec.Trx_Class);
620     -- store the highest degree of error
621     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
622         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
623         -- need to leave
624         l_return_status := x_return_status;
625         RAISE G_EXCEPTION_HALT_VALIDATION;
626         ELSE
627         -- record that there was an error
628         l_return_status := x_return_status;
629         END IF;
630     END IF;
631 
632     --Currency Code
633 		validate_Currency_Code(x_return_status, p_btnv_rec.Currency_Code);
634     -- store the highest degree of error
635     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
636         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
637         -- need to leave
638         l_return_status := x_return_status;
639         RAISE G_EXCEPTION_HALT_VALIDATION;
640         ELSE
641         -- record that there was an error
642         l_return_status := x_return_status;
643         END IF;
644     END IF;
645 
646     Raise G_EXCEPTION_HALT_VALIDATION;
647 
648   Exception
649 
650   When G_EXCEPTION_HALT_VALIDATION Then
651 
652        Return (l_return_status);
653 
654   When OTHERS Then
655        -- store SQL error message on message stack for caller
656        OKC_API.SET_MESSAGE(p_app_name         => g_app_name,
657                            p_msg_name         => g_unexpected_error,
658                            p_token1           => g_sqlcode_token,
659                            p_token1_value     => sqlcode,
660                            p_token2           => g_sqlerrm_token,
661                            p_token2_value     => sqlerrm);
662 
663        -- notify caller of an UNEXPECTED error
664        l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
665        Return(l_return_status);
666 
667   END validate_attributes;
668 
669 
670 /*
671   -----------------------------------------------------
672   -- Validate_Attributes for:OKS_BILL_TRANSACTIONS_V --
673   -----------------------------------------------------
674   FUNCTION Validate_Attributes (
675     p_btnv_rec IN  btnv_rec_type
676   ) RETURN VARCHAR2 IS
677     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
678   BEGIN
679     IF p_btnv_rec.id = OKC_API.G_MISS_NUM OR
680        p_btnv_rec.id IS NULL
681     THEN
682       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'id');
683       l_return_status := OKC_API.G_RET_STS_ERROR;
684     ELSIF p_btnv_rec.object_version_number = OKC_API.G_MISS_NUM OR
685           p_btnv_rec.object_version_number IS NULL
686     THEN
687       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'object_version_number');
688       l_return_status := OKC_API.G_RET_STS_ERROR;
689     ELSIF p_btnv_rec.currency_code = OKC_API.G_MISS_CHAR OR
690           p_btnv_rec.currency_code IS NULL
691     THEN
692       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'currency_code');
693       l_return_status := OKC_API.G_RET_STS_ERROR;
694     END IF;
695     RETURN(l_return_status);
696   END Validate_Attributes;
697   */
698   ---------------------------------------------------------------------------
699   -- PROCEDURE Validate_Record
700   ---------------------------------------------------------------------------
701   -------------------------------------------------
702   -- Validate_Record for:OKS_BILL_TRANSACTIONS_V --
703   -------------------------------------------------
704   FUNCTION Validate_Record (
705     p_btnv_rec IN btnv_rec_type
706   ) RETURN VARCHAR2 IS
707     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
708     ------------------------------------
709     -- FUNCTION validate_foreign_keys --
710     ------------------------------------
711     FUNCTION validate_foreign_keys (
712       p_btnv_rec IN btnv_rec_type
713     ) RETURN VARCHAR2 IS
714       item_not_found_error          EXCEPTION;
715       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
716       l_row_notfound                 BOOLEAN := TRUE;
717     BEGIN
718       RETURN (l_return_status);
719     EXCEPTION
720       WHEN item_not_found_error THEN
721         l_return_status := OKC_API.G_RET_STS_ERROR;
722         RETURN (l_return_status);
723     END validate_foreign_keys;
724   BEGIN
725     l_return_status := validate_foreign_keys (p_btnv_rec);
726     RETURN (l_return_status);
727   END Validate_Record;
728 
729   ---------------------------------------------------------------------------
730   -- PROCEDURE Migrate
731   ---------------------------------------------------------------------------
732   PROCEDURE migrate (
733     p_from	IN btnv_rec_type,
734     p_to	OUT NOCOPY btn_rec_type
735   ) IS
736   BEGIN
737     p_to.id := p_from.id;
738     p_to.currency_code := p_from.currency_code;
739     p_to.object_version_number := p_from.object_version_number;
740     p_to.created_by := p_from.created_by;
741     p_to.creation_date := p_from.creation_date;
742     p_to.last_updated_by := p_from.last_updated_by;
743     p_to.last_update_date := p_from.last_update_date;
744     p_to.trx_date := p_from.trx_date;
745     p_to.trx_number := p_from.trx_number;
746     p_to.trx_amount := p_from.trx_amount;
747     p_to.trx_class := p_from.trx_class;
748     p_to.last_update_login := p_from.last_update_login;
749   END migrate;
750   PROCEDURE migrate (
751     p_from	IN btn_rec_type,
752     p_to	OUT NOCOPY btnv_rec_type
753   ) IS
754   BEGIN
755     p_to.id := p_from.id;
756     p_to.currency_code := p_from.currency_code;
757     p_to.object_version_number := p_from.object_version_number;
758     p_to.created_by := p_from.created_by;
759     p_to.creation_date := p_from.creation_date;
760     p_to.last_updated_by := p_from.last_updated_by;
761     p_to.last_update_date := p_from.last_update_date;
762     p_to.trx_date := p_from.trx_date;
763     p_to.trx_number := p_from.trx_number;
764     p_to.trx_amount := p_from.trx_amount;
765     p_to.trx_class := p_from.trx_class;
766     p_to.last_update_login := p_from.last_update_login;
767   END migrate;
768 
769   ---------------------------------------------------------------------------
770   -- PROCEDURE validate_row
771   ---------------------------------------------------------------------------
772   ----------------------------------------------
773   -- validate_row for:OKS_BILL_TRANSACTIONS_V --
774   ----------------------------------------------
775   PROCEDURE validate_row(
776     p_api_version                  IN NUMBER,
777     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
778     x_return_status                OUT NOCOPY VARCHAR2,
779     x_msg_count                    OUT NOCOPY NUMBER,
780     x_msg_data                     OUT NOCOPY VARCHAR2,
781     p_btnv_rec                     IN btnv_rec_type) IS
782 
783     l_api_version                 CONSTANT NUMBER := 1;
784     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
785     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
786     l_btnv_rec                     btnv_rec_type := p_btnv_rec;
787     l_btn_rec                      btn_rec_type;
788   BEGIN
789     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
790                                               G_PKG_NAME,
791                                               p_init_msg_list,
792                                               l_api_version,
793                                               p_api_version,
794                                               '_PVT',
795                                               x_return_status);
796     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
797       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
798     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
799       RAISE OKC_API.G_EXCEPTION_ERROR;
800     END IF;
801     --- Validate all non-missing attributes (Item Level Validation)
802     l_return_status := Validate_Attributes(l_btnv_rec);
803     --- If any errors happen abort API
804     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
805       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
806     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
807       RAISE OKC_API.G_EXCEPTION_ERROR;
808     END IF;
809     l_return_status := Validate_Record(l_btnv_rec);
810     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
811       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
812     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
813       RAISE OKC_API.G_EXCEPTION_ERROR;
814     END IF;
815     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
816   EXCEPTION
817     WHEN OKC_API.G_EXCEPTION_ERROR THEN
818       x_return_status := OKC_API.HANDLE_EXCEPTIONS
819       (
820         l_api_name,
821         G_PKG_NAME,
822         'OKC_API.G_RET_STS_ERROR',
823         x_msg_count,
824         x_msg_data,
825         '_PVT'
826       );
827     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
828       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
829       (
830         l_api_name,
831         G_PKG_NAME,
832         'OKC_API.G_RET_STS_UNEXP_ERROR',
833         x_msg_count,
834         x_msg_data,
835         '_PVT'
836       );
837     WHEN OTHERS THEN
838       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
839       (
840         l_api_name,
841         G_PKG_NAME,
842         'OTHERS',
843         x_msg_count,
844         x_msg_data,
845         '_PVT'
846       );
847   END validate_row;
848   ------------------------------------------
849   -- PL/SQL TBL validate_row for:BTNV_TBL --
850   ------------------------------------------
851   PROCEDURE validate_row(
852     p_api_version                  IN NUMBER,
853     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
854     x_return_status                OUT NOCOPY VARCHAR2,
855     x_msg_count                    OUT NOCOPY NUMBER,
856     x_msg_data                     OUT NOCOPY VARCHAR2,
857     p_btnv_tbl                     IN btnv_tbl_type) IS
858 
859     l_api_version                 CONSTANT NUMBER := 1;
860     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
861     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
862     i                              NUMBER := 0;
863   BEGIN
864     OKC_API.init_msg_list(p_init_msg_list);
865     -- Make sure PL/SQL table has records in it before passing
866     IF (p_btnv_tbl.COUNT > 0) THEN
867       i := p_btnv_tbl.FIRST;
868       LOOP
869         validate_row (
870           p_api_version                  => p_api_version,
871           p_init_msg_list                => OKC_API.G_FALSE,
872           x_return_status                => x_return_status,
873           x_msg_count                    => x_msg_count,
874           x_msg_data                     => x_msg_data,
875           p_btnv_rec                     => p_btnv_tbl(i));
876         EXIT WHEN (i = p_btnv_tbl.LAST);
877         i := p_btnv_tbl.NEXT(i);
878       END LOOP;
879     END IF;
880   EXCEPTION
881     WHEN OKC_API.G_EXCEPTION_ERROR THEN
882       x_return_status := OKC_API.HANDLE_EXCEPTIONS
883       (
884         l_api_name,
885         G_PKG_NAME,
886         'OKC_API.G_RET_STS_ERROR',
887         x_msg_count,
888         x_msg_data,
889         '_PVT'
890       );
891     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
892       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
893       (
894         l_api_name,
895         G_PKG_NAME,
896         'OKC_API.G_RET_STS_UNEXP_ERROR',
897         x_msg_count,
898         x_msg_data,
899         '_PVT'
900       );
901     WHEN OTHERS THEN
902       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
903       (
904         l_api_name,
905         G_PKG_NAME,
906         'OTHERS',
907         x_msg_count,
908         x_msg_data,
909         '_PVT'
910       );
911   END validate_row;
912 
913   ---------------------------------------------------------------------------
914   -- PROCEDURE insert_row
915   ---------------------------------------------------------------------------
916   ------------------------------------------
917   -- insert_row for:OKS_BILL_TRANSACTIONS --
918   ------------------------------------------
919   PROCEDURE insert_row(
920     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
921     x_return_status                OUT NOCOPY VARCHAR2,
922     x_msg_count                    OUT NOCOPY NUMBER,
923     x_msg_data                     OUT NOCOPY VARCHAR2,
924     p_btn_rec                      IN btn_rec_type,
925     x_btn_rec                      OUT NOCOPY btn_rec_type) IS
926 
927     l_api_version                 CONSTANT NUMBER := 1;
928     l_api_name                     CONSTANT VARCHAR2(30) := 'TRANSACTIONS_insert_row';
929     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
930     l_btn_rec                      btn_rec_type := p_btn_rec;
931     l_def_btn_rec                  btn_rec_type;
932     ----------------------------------------------
933     -- Set_Attributes for:OKS_BILL_TRANSACTIONS --
934     ----------------------------------------------
935     FUNCTION Set_Attributes (
936       p_btn_rec IN  btn_rec_type,
937       x_btn_rec OUT NOCOPY btn_rec_type
938     ) RETURN VARCHAR2 IS
939       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
940     BEGIN
941       x_btn_rec := p_btn_rec;
942       RETURN(l_return_status);
943     END Set_Attributes;
944   BEGIN
945     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
946                                               p_init_msg_list,
947                                               '_PVT',
948                                               x_return_status);
949     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
950       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
951     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
952       RAISE OKC_API.G_EXCEPTION_ERROR;
953     END IF;
954     --- Setting item attributes
955     l_return_status := Set_Attributes(
956       p_btn_rec,                         -- IN
957       l_btn_rec);                        -- OUT
958     --- If any errors happen abort API
959     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
960       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
961     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
962       RAISE OKC_API.G_EXCEPTION_ERROR;
963     END IF;
964     INSERT INTO OKS_BILL_TRANSACTIONS(
965         id,
966         currency_code,
967         object_version_number,
968         created_by,
969         creation_date,
970         last_updated_by,
971         last_update_date,
972         trx_date,
973         trx_number,
974         trx_amount,
975         trx_class,
976         last_update_login)
977       VALUES (
978         l_btn_rec.id,
979         l_btn_rec.currency_code,
980         l_btn_rec.object_version_number,
981         l_btn_rec.created_by,
982         l_btn_rec.creation_date,
983         l_btn_rec.last_updated_by,
984         l_btn_rec.last_update_date,
985         l_btn_rec.trx_date,
986         l_btn_rec.trx_number,
987         l_btn_rec.trx_amount,
988         l_btn_rec.trx_class,
989         l_btn_rec.last_update_login);
990     -- Set OUT values
991     x_btn_rec := l_btn_rec;
992     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
993   EXCEPTION
994     WHEN OKC_API.G_EXCEPTION_ERROR THEN
995       x_return_status := OKC_API.HANDLE_EXCEPTIONS
996       (
997         l_api_name,
998         G_PKG_NAME,
999         'OKC_API.G_RET_STS_ERROR',
1000         x_msg_count,
1001         x_msg_data,
1002         '_PVT'
1003       );
1004     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1005       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1006       (
1007         l_api_name,
1008         G_PKG_NAME,
1009         'OKC_API.G_RET_STS_UNEXP_ERROR',
1010         x_msg_count,
1011         x_msg_data,
1012         '_PVT'
1013       );
1014     WHEN OTHERS THEN
1015       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1016       (
1017         l_api_name,
1018         G_PKG_NAME,
1019         'OTHERS',
1020         x_msg_count,
1021         x_msg_data,
1022         '_PVT'
1023       );
1024   END insert_row;
1025   --------------------------------------------
1026   -- insert_row for:OKS_BILL_TRANSACTIONS_V --
1027   --------------------------------------------
1028   PROCEDURE insert_row(
1029     p_api_version                  IN NUMBER,
1030     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1031     x_return_status                OUT NOCOPY VARCHAR2,
1032     x_msg_count                    OUT NOCOPY NUMBER,
1033     x_msg_data                     OUT NOCOPY VARCHAR2,
1034     p_btnv_rec                     IN btnv_rec_type,
1035     x_btnv_rec                     OUT NOCOPY btnv_rec_type) IS
1036 
1037     l_api_version                 CONSTANT NUMBER := 1;
1038     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1039     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1040     l_btnv_rec                     btnv_rec_type;
1041     l_def_btnv_rec                 btnv_rec_type;
1042     l_btn_rec                      btn_rec_type;
1043     lx_btn_rec                     btn_rec_type;
1044     -------------------------------
1045     -- FUNCTION fill_who_columns --
1046     -------------------------------
1047     FUNCTION fill_who_columns (
1048       p_btnv_rec	IN btnv_rec_type
1049     ) RETURN btnv_rec_type IS
1050       l_btnv_rec	btnv_rec_type := p_btnv_rec;
1051     BEGIN
1052       l_btnv_rec.CREATION_DATE := SYSDATE;
1053       l_btnv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1054       l_btnv_rec.LAST_UPDATE_DATE := SYSDATE;
1055       l_btnv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1056       l_btnv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1057       RETURN(l_btnv_rec);
1058     END fill_who_columns;
1059     ------------------------------------------------
1060     -- Set_Attributes for:OKS_BILL_TRANSACTIONS_V --
1061     ------------------------------------------------
1062     FUNCTION Set_Attributes (
1063       p_btnv_rec IN  btnv_rec_type,
1064       x_btnv_rec OUT NOCOPY btnv_rec_type
1065     ) RETURN VARCHAR2 IS
1066       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1067     BEGIN
1068       x_btnv_rec := p_btnv_rec;
1069       x_btnv_rec.OBJECT_VERSION_NUMBER := 1;
1070       RETURN(l_return_status);
1071     END Set_Attributes;
1072   BEGIN
1073     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1074                                               G_PKG_NAME,
1075                                               p_init_msg_list,
1076                                               l_api_version,
1077                                               p_api_version,
1078                                               '_PVT',
1079                                               x_return_status);
1080     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1081       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1082     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1083       RAISE OKC_API.G_EXCEPTION_ERROR;
1084     END IF;
1085     l_btnv_rec := null_out_defaults(p_btnv_rec);
1086     -- Set primary key value
1087     l_btnv_rec.ID := get_seq_id;
1088     --- Setting item attributes
1089     l_return_status := Set_Attributes(
1090       l_btnv_rec,                        -- IN
1091       l_def_btnv_rec);                   -- OUT
1092     --- If any errors happen abort API
1093     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1094       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1095     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1096       RAISE OKC_API.G_EXCEPTION_ERROR;
1097     END IF;
1098     l_def_btnv_rec := fill_who_columns(l_def_btnv_rec);
1099     --- Validate all non-missing attributes (Item Level Validation)
1100     l_return_status := Validate_Attributes(l_def_btnv_rec);
1101     --- If any errors happen abort API
1102     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1103       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1104     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1105       RAISE OKC_API.G_EXCEPTION_ERROR;
1106     END IF;
1107     l_return_status := Validate_Record(l_def_btnv_rec);
1108     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1109       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1110     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1111       RAISE OKC_API.G_EXCEPTION_ERROR;
1112     END IF;
1113     --------------------------------------
1114     -- Move VIEW record to "Child" records
1115     --------------------------------------
1116     migrate(l_def_btnv_rec, l_btn_rec);
1117     --------------------------------------------
1118     -- Call the INSERT_ROW for each child record
1119     --------------------------------------------
1120     insert_row(
1121       p_init_msg_list,
1122       x_return_status,
1123       x_msg_count,
1124       x_msg_data,
1125       l_btn_rec,
1126       lx_btn_rec
1127     );
1128     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1129       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1130     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1131       RAISE OKC_API.G_EXCEPTION_ERROR;
1132     END IF;
1133     migrate(lx_btn_rec, l_def_btnv_rec);
1134     -- Set OUT values
1135     x_btnv_rec := l_def_btnv_rec;
1136     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1137   EXCEPTION
1138     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1139       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1140       (
1141         l_api_name,
1142         G_PKG_NAME,
1143         'OKC_API.G_RET_STS_ERROR',
1144         x_msg_count,
1145         x_msg_data,
1146         '_PVT'
1147       );
1148     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1149       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1150       (
1151         l_api_name,
1152         G_PKG_NAME,
1153         'OKC_API.G_RET_STS_UNEXP_ERROR',
1154         x_msg_count,
1155         x_msg_data,
1156         '_PVT'
1157       );
1158     WHEN OTHERS THEN
1159       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1160       (
1161         l_api_name,
1162         G_PKG_NAME,
1163         'OTHERS',
1164         x_msg_count,
1165         x_msg_data,
1166         '_PVT'
1167       );
1168   END insert_row;
1169   ----------------------------------------
1170   -- PL/SQL TBL insert_row for:BTNV_TBL --
1171   ----------------------------------------
1172   PROCEDURE insert_row(
1173     p_api_version                  IN NUMBER,
1174     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1175     x_return_status                OUT NOCOPY VARCHAR2,
1176     x_msg_count                    OUT NOCOPY NUMBER,
1177     x_msg_data                     OUT NOCOPY VARCHAR2,
1178     p_btnv_tbl                     IN btnv_tbl_type,
1179     x_btnv_tbl                     OUT NOCOPY btnv_tbl_type) IS
1180 
1181     l_api_version                 CONSTANT NUMBER := 1;
1182     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1183     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1184     i                              NUMBER := 0;
1185   BEGIN
1186     OKC_API.init_msg_list(p_init_msg_list);
1187     -- Make sure PL/SQL table has records in it before passing
1188     IF (p_btnv_tbl.COUNT > 0) THEN
1189       i := p_btnv_tbl.FIRST;
1190       LOOP
1191         insert_row (
1192           p_api_version                  => p_api_version,
1193           p_init_msg_list                => OKC_API.G_FALSE,
1194           x_return_status                => x_return_status,
1195           x_msg_count                    => x_msg_count,
1196           x_msg_data                     => x_msg_data,
1197           p_btnv_rec                     => p_btnv_tbl(i),
1198           x_btnv_rec                     => x_btnv_tbl(i));
1199         EXIT WHEN (i = p_btnv_tbl.LAST);
1200         i := p_btnv_tbl.NEXT(i);
1201       END LOOP;
1202     END IF;
1203   EXCEPTION
1204     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1205       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1206       (
1207         l_api_name,
1208         G_PKG_NAME,
1209         'OKC_API.G_RET_STS_ERROR',
1210         x_msg_count,
1211         x_msg_data,
1212         '_PVT'
1213       );
1214     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1215       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1216       (
1217         l_api_name,
1218         G_PKG_NAME,
1219         'OKC_API.G_RET_STS_UNEXP_ERROR',
1220         x_msg_count,
1221         x_msg_data,
1222         '_PVT'
1223       );
1224     WHEN OTHERS THEN
1225       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1226       (
1227         l_api_name,
1228         G_PKG_NAME,
1229         'OTHERS',
1230         x_msg_count,
1231         x_msg_data,
1232         '_PVT'
1233       );
1234   END insert_row;
1235 
1236   ---------------------------------------------------------------------------
1237   -- PROCEDURE lock_row
1238   ---------------------------------------------------------------------------
1239   ----------------------------------------
1240   -- lock_row for:OKS_BILL_TRANSACTIONS --
1241   ----------------------------------------
1242   PROCEDURE lock_row(
1243     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1244     x_return_status                OUT NOCOPY VARCHAR2,
1245     x_msg_count                    OUT NOCOPY NUMBER,
1246     x_msg_data                     OUT NOCOPY VARCHAR2,
1247     p_btn_rec                      IN btn_rec_type) IS
1248 
1249     E_Resource_Busy               EXCEPTION;
1250     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1251     CURSOR lock_csr (p_btn_rec IN btn_rec_type) IS
1252     SELECT OBJECT_VERSION_NUMBER
1253       FROM OKS_BILL_TRANSACTIONS
1254      WHERE ID = p_btn_rec.id
1255        AND OBJECT_VERSION_NUMBER = p_btn_rec.object_version_number
1256     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1257 
1258     CURSOR  lchk_csr (p_btn_rec IN btn_rec_type) IS
1259     SELECT OBJECT_VERSION_NUMBER
1260       FROM OKS_BILL_TRANSACTIONS
1261     WHERE ID = p_btn_rec.id;
1262     l_api_version                 CONSTANT NUMBER := 1;
1263     l_api_name                     CONSTANT VARCHAR2(30) := 'TRANSACTIONS_lock_row';
1264     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1265     l_object_version_number       OKS_BILL_TRANSACTIONS.OBJECT_VERSION_NUMBER%TYPE;
1266     lc_object_version_number      OKS_BILL_TRANSACTIONS.OBJECT_VERSION_NUMBER%TYPE;
1267     l_row_notfound                BOOLEAN := FALSE;
1268     lc_row_notfound               BOOLEAN := FALSE;
1269   BEGIN
1270     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1271                                               p_init_msg_list,
1272                                               '_PVT',
1273                                               x_return_status);
1274     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1275       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1276     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1277       RAISE OKC_API.G_EXCEPTION_ERROR;
1278     END IF;
1279     BEGIN
1280       OPEN lock_csr(p_btn_rec);
1281       FETCH lock_csr INTO l_object_version_number;
1282       l_row_notfound := lock_csr%NOTFOUND;
1283       CLOSE lock_csr;
1284     EXCEPTION
1285       WHEN E_Resource_Busy THEN
1286         IF (lock_csr%ISOPEN) THEN
1287           CLOSE lock_csr;
1288         END IF;
1289         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1290         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1291     END;
1292 
1293     IF ( l_row_notfound ) THEN
1294       OPEN lchk_csr(p_btn_rec);
1295       FETCH lchk_csr INTO lc_object_version_number;
1296       lc_row_notfound := lchk_csr%NOTFOUND;
1297       CLOSE lchk_csr;
1298     END IF;
1299     IF (lc_row_notfound) THEN
1300       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1301       RAISE OKC_API.G_EXCEPTION_ERROR;
1302     ELSIF lc_object_version_number > p_btn_rec.object_version_number THEN
1303       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1304       RAISE OKC_API.G_EXCEPTION_ERROR;
1305     ELSIF lc_object_version_number <> p_btn_rec.object_version_number THEN
1306       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1307       RAISE OKC_API.G_EXCEPTION_ERROR;
1308     ELSIF lc_object_version_number = -1 THEN
1309       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1310       RAISE OKC_API.G_EXCEPTION_ERROR;
1311     END IF;
1312     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1313   EXCEPTION
1314     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1315       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1316       (
1317         l_api_name,
1318         G_PKG_NAME,
1319         'OKC_API.G_RET_STS_ERROR',
1320         x_msg_count,
1321         x_msg_data,
1322         '_PVT'
1323       );
1324     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1325       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1326       (
1327         l_api_name,
1328         G_PKG_NAME,
1329         'OKC_API.G_RET_STS_UNEXP_ERROR',
1330         x_msg_count,
1331         x_msg_data,
1332         '_PVT'
1333       );
1334     WHEN OTHERS THEN
1335       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1336       (
1337         l_api_name,
1338         G_PKG_NAME,
1339         'OTHERS',
1340         x_msg_count,
1341         x_msg_data,
1342         '_PVT'
1343       );
1344   END lock_row;
1345   ------------------------------------------
1346   -- lock_row for:OKS_BILL_TRANSACTIONS_V --
1347   ------------------------------------------
1348   PROCEDURE lock_row(
1349     p_api_version                  IN NUMBER,
1350     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1351     x_return_status                OUT NOCOPY VARCHAR2,
1352     x_msg_count                    OUT NOCOPY NUMBER,
1353     x_msg_data                     OUT NOCOPY VARCHAR2,
1354     p_btnv_rec                     IN btnv_rec_type) IS
1355 
1356     l_api_version                 CONSTANT NUMBER := 1;
1357     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1358     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1359     l_btn_rec                      btn_rec_type;
1360   BEGIN
1361     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1362                                               G_PKG_NAME,
1363                                               p_init_msg_list,
1364                                               l_api_version,
1365                                               p_api_version,
1366                                               '_PVT',
1367                                               x_return_status);
1368     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1369       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1370     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1371       RAISE OKC_API.G_EXCEPTION_ERROR;
1372     END IF;
1373     --------------------------------------
1374     -- Move VIEW record to "Child" records
1375     --------------------------------------
1376     migrate(p_btnv_rec, l_btn_rec);
1377     --------------------------------------------
1378     -- Call the LOCK_ROW for each child record
1379     --------------------------------------------
1380     lock_row(
1381       p_init_msg_list,
1382       x_return_status,
1383       x_msg_count,
1384       x_msg_data,
1385       l_btn_rec
1386     );
1387     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1388       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1389     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1390       RAISE OKC_API.G_EXCEPTION_ERROR;
1391     END IF;
1392     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1393   EXCEPTION
1394     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1395       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1396       (
1397         l_api_name,
1398         G_PKG_NAME,
1399         'OKC_API.G_RET_STS_ERROR',
1400         x_msg_count,
1401         x_msg_data,
1402         '_PVT'
1403       );
1404     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1405       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1406       (
1407         l_api_name,
1408         G_PKG_NAME,
1409         'OKC_API.G_RET_STS_UNEXP_ERROR',
1410         x_msg_count,
1411         x_msg_data,
1412         '_PVT'
1413       );
1414     WHEN OTHERS THEN
1415       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1416       (
1417         l_api_name,
1418         G_PKG_NAME,
1419         'OTHERS',
1420         x_msg_count,
1421         x_msg_data,
1422         '_PVT'
1423       );
1424   END lock_row;
1425   --------------------------------------
1426   -- PL/SQL TBL lock_row for:BTNV_TBL --
1427   --------------------------------------
1428   PROCEDURE lock_row(
1429     p_api_version                  IN NUMBER,
1430     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1431     x_return_status                OUT NOCOPY VARCHAR2,
1432     x_msg_count                    OUT NOCOPY NUMBER,
1433     x_msg_data                     OUT NOCOPY VARCHAR2,
1434     p_btnv_tbl                     IN btnv_tbl_type) IS
1435 
1436     l_api_version                 CONSTANT NUMBER := 1;
1437     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
1438     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1439     i                              NUMBER := 0;
1440   BEGIN
1441     OKC_API.init_msg_list(p_init_msg_list);
1442     -- Make sure PL/SQL table has records in it before passing
1443     IF (p_btnv_tbl.COUNT > 0) THEN
1444       i := p_btnv_tbl.FIRST;
1445       LOOP
1446         lock_row (
1447           p_api_version                  => p_api_version,
1448           p_init_msg_list                => OKC_API.G_FALSE,
1449           x_return_status                => x_return_status,
1450           x_msg_count                    => x_msg_count,
1451           x_msg_data                     => x_msg_data,
1452           p_btnv_rec                     => p_btnv_tbl(i));
1453         EXIT WHEN (i = p_btnv_tbl.LAST);
1454         i := p_btnv_tbl.NEXT(i);
1455       END LOOP;
1456     END IF;
1457   EXCEPTION
1458     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1459       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1460       (
1461         l_api_name,
1462         G_PKG_NAME,
1463         'OKC_API.G_RET_STS_ERROR',
1464         x_msg_count,
1465         x_msg_data,
1466         '_PVT'
1467       );
1468     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1469       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1470       (
1471         l_api_name,
1472         G_PKG_NAME,
1473         'OKC_API.G_RET_STS_UNEXP_ERROR',
1474         x_msg_count,
1475         x_msg_data,
1476         '_PVT'
1477       );
1478     WHEN OTHERS THEN
1479       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1480       (
1481         l_api_name,
1482         G_PKG_NAME,
1483         'OTHERS',
1484         x_msg_count,
1485         x_msg_data,
1486         '_PVT'
1487       );
1488   END lock_row;
1489 
1490   ---------------------------------------------------------------------------
1491   -- PROCEDURE update_row
1492   ---------------------------------------------------------------------------
1493   ------------------------------------------
1494   -- update_row for:OKS_BILL_TRANSACTIONS --
1495   ------------------------------------------
1496   PROCEDURE update_row(
1497     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1498     x_return_status                OUT NOCOPY VARCHAR2,
1499     x_msg_count                    OUT NOCOPY NUMBER,
1500     x_msg_data                     OUT NOCOPY VARCHAR2,
1501     p_btn_rec                      IN btn_rec_type,
1502     x_btn_rec                      OUT NOCOPY btn_rec_type) IS
1503 
1504     l_api_version                 CONSTANT NUMBER := 1;
1505     l_api_name                     CONSTANT VARCHAR2(30) := 'TRANSACTIONS_update_row';
1506     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1507     l_btn_rec                      btn_rec_type := p_btn_rec;
1508     l_def_btn_rec                  btn_rec_type;
1509     l_row_notfound                 BOOLEAN := TRUE;
1510     ----------------------------------
1511     -- FUNCTION populate_new_record --
1512     ----------------------------------
1513     FUNCTION populate_new_record (
1514       p_btn_rec	IN btn_rec_type,
1515       x_btn_rec	OUT NOCOPY btn_rec_type
1516     ) RETURN VARCHAR2 IS
1517       l_btn_rec                      btn_rec_type;
1518       l_row_notfound                 BOOLEAN := TRUE;
1519       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1520     BEGIN
1521       x_btn_rec := p_btn_rec;
1522       -- Get current database values
1523       l_btn_rec := get_rec(p_btn_rec, l_row_notfound);
1524       IF (l_row_notfound) THEN
1525         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1526       END IF;
1527       IF (x_btn_rec.id = OKC_API.G_MISS_NUM)
1528       THEN
1529         x_btn_rec.id := l_btn_rec.id;
1530       END IF;
1531       IF (x_btn_rec.currency_code = OKC_API.G_MISS_CHAR)
1532       THEN
1533         x_btn_rec.currency_code := l_btn_rec.currency_code;
1534       END IF;
1535       IF (x_btn_rec.object_version_number = OKC_API.G_MISS_NUM)
1536       THEN
1537         x_btn_rec.object_version_number := l_btn_rec.object_version_number;
1538       END IF;
1539       IF (x_btn_rec.created_by = OKC_API.G_MISS_NUM)
1540       THEN
1541         x_btn_rec.created_by := l_btn_rec.created_by;
1542       END IF;
1543       IF (x_btn_rec.creation_date = OKC_API.G_MISS_DATE)
1544       THEN
1545         x_btn_rec.creation_date := l_btn_rec.creation_date;
1546       END IF;
1547       IF (x_btn_rec.last_updated_by = OKC_API.G_MISS_NUM)
1548       THEN
1549         x_btn_rec.last_updated_by := l_btn_rec.last_updated_by;
1550       END IF;
1551       IF (x_btn_rec.last_update_date = OKC_API.G_MISS_DATE)
1552       THEN
1553         x_btn_rec.last_update_date := l_btn_rec.last_update_date;
1554       END IF;
1555       IF (x_btn_rec.trx_date = OKC_API.G_MISS_DATE)
1556       THEN
1557         x_btn_rec.trx_date := l_btn_rec.trx_date;
1558       END IF;
1559       IF (x_btn_rec.trx_number = OKC_API.G_MISS_CHAR)
1560       THEN
1561         x_btn_rec.trx_number := l_btn_rec.trx_number;
1562       END IF;
1563       IF (x_btn_rec.trx_amount = OKC_API.G_MISS_NUM)
1564       THEN
1565         x_btn_rec.trx_amount := l_btn_rec.trx_amount;
1566       END IF;
1567       IF (x_btn_rec.trx_class = OKC_API.G_MISS_CHAR)
1568       THEN
1569         x_btn_rec.trx_class := l_btn_rec.trx_class;
1570       END IF;
1571       IF (x_btn_rec.last_update_login = OKC_API.G_MISS_NUM)
1572       THEN
1573         x_btn_rec.last_update_login := l_btn_rec.last_update_login;
1574       END IF;
1575       RETURN(l_return_status);
1576     END populate_new_record;
1577     ----------------------------------------------
1578     -- Set_Attributes for:OKS_BILL_TRANSACTIONS --
1579     ----------------------------------------------
1580     FUNCTION Set_Attributes (
1581       p_btn_rec IN  btn_rec_type,
1582       x_btn_rec OUT NOCOPY btn_rec_type
1583     ) RETURN VARCHAR2 IS
1584       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1585     BEGIN
1586       x_btn_rec := p_btn_rec;
1587       RETURN(l_return_status);
1588     END Set_Attributes;
1589   BEGIN
1590     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1591                                               p_init_msg_list,
1592                                               '_PVT',
1593                                               x_return_status);
1594     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1595       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1596     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1597       RAISE OKC_API.G_EXCEPTION_ERROR;
1598     END IF;
1599     --- Setting item attributes
1600     l_return_status := Set_Attributes(
1601       p_btn_rec,                         -- IN
1602       l_btn_rec);                        -- OUT
1603     --- If any errors happen abort API
1604     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1605       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1606     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1607       RAISE OKC_API.G_EXCEPTION_ERROR;
1608     END IF;
1609     l_return_status := populate_new_record(l_btn_rec, l_def_btn_rec);
1610     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1611       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1612     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1613       RAISE OKC_API.G_EXCEPTION_ERROR;
1614     END IF;
1615     UPDATE  OKS_BILL_TRANSACTIONS
1616     SET CURRENCY_CODE = l_def_btn_rec.currency_code,
1617         OBJECT_VERSION_NUMBER = l_def_btn_rec.object_version_number,
1618         CREATED_BY = l_def_btn_rec.created_by,
1619         CREATION_DATE = l_def_btn_rec.creation_date,
1620         LAST_UPDATED_BY = l_def_btn_rec.last_updated_by,
1621         LAST_UPDATE_DATE = l_def_btn_rec.last_update_date,
1622         TRX_DATE = l_def_btn_rec.trx_date,
1623         TRX_NUMBER = l_def_btn_rec.trx_number,
1624         TRX_AMOUNT = l_def_btn_rec.trx_amount,
1625         TRX_CLASS = l_def_btn_rec.trx_class,
1626         LAST_UPDATE_LOGIN = l_def_btn_rec.last_update_login
1627     WHERE ID = l_def_btn_rec.id;
1628 
1629     x_btn_rec := l_def_btn_rec;
1630     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1631   EXCEPTION
1632     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1633       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1634       (
1635         l_api_name,
1636         G_PKG_NAME,
1637         'OKC_API.G_RET_STS_ERROR',
1638         x_msg_count,
1639         x_msg_data,
1640         '_PVT'
1641       );
1642     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1643       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1644       (
1645         l_api_name,
1646         G_PKG_NAME,
1647         'OKC_API.G_RET_STS_UNEXP_ERROR',
1648         x_msg_count,
1649         x_msg_data,
1650         '_PVT'
1651       );
1652     WHEN OTHERS THEN
1653       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1654       (
1655         l_api_name,
1656         G_PKG_NAME,
1657         'OTHERS',
1658         x_msg_count,
1659         x_msg_data,
1660         '_PVT'
1661       );
1662   END update_row;
1663   --------------------------------------------
1664   -- update_row for:OKS_BILL_TRANSACTIONS_V --
1665   --------------------------------------------
1666   PROCEDURE update_row(
1667     p_api_version                  IN NUMBER,
1668     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1669     x_return_status                OUT NOCOPY VARCHAR2,
1670     x_msg_count                    OUT NOCOPY NUMBER,
1671     x_msg_data                     OUT NOCOPY VARCHAR2,
1672     p_btnv_rec                     IN btnv_rec_type,
1673     x_btnv_rec                     OUT NOCOPY btnv_rec_type) IS
1674 
1675     l_api_version                 CONSTANT NUMBER := 1;
1676     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
1677     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1678     l_btnv_rec                     btnv_rec_type := p_btnv_rec;
1679     l_def_btnv_rec                 btnv_rec_type;
1680     l_btn_rec                      btn_rec_type;
1681     lx_btn_rec                     btn_rec_type;
1682     -------------------------------
1683     -- FUNCTION fill_who_columns --
1684     -------------------------------
1685     FUNCTION fill_who_columns (
1686       p_btnv_rec	IN btnv_rec_type
1687     ) RETURN btnv_rec_type IS
1688       l_btnv_rec	btnv_rec_type := p_btnv_rec;
1689     BEGIN
1690       l_btnv_rec.LAST_UPDATE_DATE := SYSDATE;
1691       l_btnv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1692       l_btnv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1693       RETURN(l_btnv_rec);
1694     END fill_who_columns;
1695     ----------------------------------
1696     -- FUNCTION populate_new_record --
1697     ----------------------------------
1698     FUNCTION populate_new_record (
1699       p_btnv_rec	IN btnv_rec_type,
1700       x_btnv_rec	OUT NOCOPY btnv_rec_type
1701     ) RETURN VARCHAR2 IS
1702       l_btnv_rec                     btnv_rec_type;
1703       l_row_notfound                 BOOLEAN := TRUE;
1704       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1705     BEGIN
1706       x_btnv_rec := p_btnv_rec;
1707       -- Get current database values
1708       l_btnv_rec := get_rec(p_btnv_rec, l_row_notfound);
1709       IF (l_row_notfound) THEN
1710         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
1711       END IF;
1712       IF (x_btnv_rec.id = OKC_API.G_MISS_NUM)
1713       THEN
1714         x_btnv_rec.id := l_btnv_rec.id;
1715       END IF;
1716       IF (x_btnv_rec.object_version_number = OKC_API.G_MISS_NUM)
1717       THEN
1718         x_btnv_rec.object_version_number := l_btnv_rec.object_version_number;
1719       END IF;
1720       IF (x_btnv_rec.trx_date = OKC_API.G_MISS_DATE)
1721       THEN
1722         x_btnv_rec.trx_date := l_btnv_rec.trx_date;
1723       END IF;
1724       IF (x_btnv_rec.trx_number = OKC_API.G_MISS_CHAR)
1725       THEN
1726         x_btnv_rec.trx_number := l_btnv_rec.trx_number;
1727       END IF;
1728       IF (x_btnv_rec.trx_amount = OKC_API.G_MISS_NUM)
1729       THEN
1730         x_btnv_rec.trx_amount := l_btnv_rec.trx_amount;
1731       END IF;
1732       IF (x_btnv_rec.trx_class = OKC_API.G_MISS_CHAR)
1733       THEN
1734         x_btnv_rec.trx_class := l_btnv_rec.trx_class;
1735       END IF;
1736       IF (x_btnv_rec.currency_code = OKC_API.G_MISS_CHAR)
1737       THEN
1738         x_btnv_rec.currency_code := l_btnv_rec.currency_code;
1739       END IF;
1740       IF (x_btnv_rec.created_by = OKC_API.G_MISS_NUM)
1741       THEN
1742         x_btnv_rec.created_by := l_btnv_rec.created_by;
1743       END IF;
1744       IF (x_btnv_rec.creation_date = OKC_API.G_MISS_DATE)
1745       THEN
1746         x_btnv_rec.creation_date := l_btnv_rec.creation_date;
1747       END IF;
1748       IF (x_btnv_rec.last_updated_by = OKC_API.G_MISS_NUM)
1749       THEN
1750         x_btnv_rec.last_updated_by := l_btnv_rec.last_updated_by;
1751       END IF;
1752       IF (x_btnv_rec.last_update_date = OKC_API.G_MISS_DATE)
1753       THEN
1754         x_btnv_rec.last_update_date := l_btnv_rec.last_update_date;
1755       END IF;
1756       IF (x_btnv_rec.last_update_login = OKC_API.G_MISS_NUM)
1757       THEN
1758         x_btnv_rec.last_update_login := l_btnv_rec.last_update_login;
1759       END IF;
1760       RETURN(l_return_status);
1761     END populate_new_record;
1762     ------------------------------------------------
1763     -- Set_Attributes for:OKS_BILL_TRANSACTIONS_V --
1764     ------------------------------------------------
1765     FUNCTION Set_Attributes (
1766       p_btnv_rec IN  btnv_rec_type,
1767       x_btnv_rec OUT NOCOPY btnv_rec_type
1768     ) RETURN VARCHAR2 IS
1769       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1770     BEGIN
1771       x_btnv_rec := p_btnv_rec;
1772       x_btnv_rec.OBJECT_VERSION_NUMBER := NVL(x_btnv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
1773       RETURN(l_return_status);
1774     END Set_Attributes;
1775   BEGIN
1776     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1777                                               G_PKG_NAME,
1778                                               p_init_msg_list,
1779                                               l_api_version,
1780                                               p_api_version,
1781                                               '_PVT',
1782                                               x_return_status);
1783     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1784       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1785     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1786       RAISE OKC_API.G_EXCEPTION_ERROR;
1787     END IF;
1788     --- Setting item attributes
1789     l_return_status := Set_Attributes(
1790       p_btnv_rec,                        -- IN
1791       l_btnv_rec);                       -- OUT
1792     --- If any errors happen abort API
1793     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1794       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1795     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1796       RAISE OKC_API.G_EXCEPTION_ERROR;
1797     END IF;
1798     l_return_status := populate_new_record(l_btnv_rec, l_def_btnv_rec);
1799     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1800       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1801     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1802       RAISE OKC_API.G_EXCEPTION_ERROR;
1803     END IF;
1804     l_def_btnv_rec := fill_who_columns(l_def_btnv_rec);
1805     --- Validate all non-missing attributes (Item Level Validation)
1806     l_return_status := Validate_Attributes(l_def_btnv_rec);
1807     --- If any errors happen abort API
1808     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1809       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1810     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1811       RAISE OKC_API.G_EXCEPTION_ERROR;
1812     END IF;
1813     l_return_status := Validate_Record(l_def_btnv_rec);
1814     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1815       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1816     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1817       RAISE OKC_API.G_EXCEPTION_ERROR;
1818     END IF;
1819 
1820     --------------------------------------
1821     -- Move VIEW record to "Child" records
1822     --------------------------------------
1823     migrate(l_def_btnv_rec, l_btn_rec);
1824     --------------------------------------------
1825     -- Call the UPDATE_ROW for each child record
1826     --------------------------------------------
1827     update_row(
1828       p_init_msg_list,
1829       x_return_status,
1830       x_msg_count,
1831       x_msg_data,
1832       l_btn_rec,
1833       lx_btn_rec
1834     );
1835     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1836       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1837     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1838       RAISE OKC_API.G_EXCEPTION_ERROR;
1839     END IF;
1840     migrate(lx_btn_rec, l_def_btnv_rec);
1841     x_btnv_rec := l_def_btnv_rec;
1842     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1843   EXCEPTION
1844     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1845       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1846       (
1847         l_api_name,
1848         G_PKG_NAME,
1849         'OKC_API.G_RET_STS_ERROR',
1850         x_msg_count,
1851         x_msg_data,
1852         '_PVT'
1853       );
1854     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1855       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1856       (
1857         l_api_name,
1858         G_PKG_NAME,
1859         'OKC_API.G_RET_STS_UNEXP_ERROR',
1860         x_msg_count,
1861         x_msg_data,
1862         '_PVT'
1863       );
1864     WHEN OTHERS THEN
1865       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1866       (
1867         l_api_name,
1868         G_PKG_NAME,
1869         'OTHERS',
1870         x_msg_count,
1871         x_msg_data,
1872         '_PVT'
1873       );
1874   END update_row;
1875   ----------------------------------------
1876   -- PL/SQL TBL update_row for:BTNV_TBL --
1877   ----------------------------------------
1878   PROCEDURE update_row(
1879     p_api_version                  IN NUMBER,
1880     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1881     x_return_status                OUT NOCOPY VARCHAR2,
1882     x_msg_count                    OUT NOCOPY NUMBER,
1883     x_msg_data                     OUT NOCOPY VARCHAR2,
1884     p_btnv_tbl                     IN btnv_tbl_type,
1885     x_btnv_tbl                     OUT NOCOPY btnv_tbl_type) IS
1886 
1887     l_api_version                 CONSTANT NUMBER := 1;
1888     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
1889     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1890     i                              NUMBER := 0;
1891   BEGIN
1892     OKC_API.init_msg_list(p_init_msg_list);
1893     -- Make sure PL/SQL table has records in it before passing
1894     IF (p_btnv_tbl.COUNT > 0) THEN
1895       i := p_btnv_tbl.FIRST;
1896       LOOP
1897         update_row (
1898           p_api_version                  => p_api_version,
1899           p_init_msg_list                => OKC_API.G_FALSE,
1900           x_return_status                => x_return_status,
1901           x_msg_count                    => x_msg_count,
1902           x_msg_data                     => x_msg_data,
1903           p_btnv_rec                     => p_btnv_tbl(i),
1904           x_btnv_rec                     => x_btnv_tbl(i));
1905         EXIT WHEN (i = p_btnv_tbl.LAST);
1906         i := p_btnv_tbl.NEXT(i);
1907       END LOOP;
1908     END IF;
1909   EXCEPTION
1910     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1911       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1912       (
1913         l_api_name,
1914         G_PKG_NAME,
1915         'OKC_API.G_RET_STS_ERROR',
1916         x_msg_count,
1917         x_msg_data,
1918         '_PVT'
1919       );
1920     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1921       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1922       (
1923         l_api_name,
1924         G_PKG_NAME,
1925         'OKC_API.G_RET_STS_UNEXP_ERROR',
1926         x_msg_count,
1927         x_msg_data,
1928         '_PVT'
1929       );
1930     WHEN OTHERS THEN
1931       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1932       (
1933         l_api_name,
1934         G_PKG_NAME,
1935         'OTHERS',
1936         x_msg_count,
1937         x_msg_data,
1938         '_PVT'
1939       );
1940   END update_row;
1941 
1942   ---------------------------------------------------------------------------
1943   -- PROCEDURE delete_row
1944   ---------------------------------------------------------------------------
1945   ------------------------------------------
1946   -- delete_row for:OKS_BILL_TRANSACTIONS --
1947   ------------------------------------------
1948   PROCEDURE delete_row(
1949     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1950     x_return_status                OUT NOCOPY VARCHAR2,
1951     x_msg_count                    OUT NOCOPY NUMBER,
1952     x_msg_data                     OUT NOCOPY VARCHAR2,
1953     p_btn_rec                      IN btn_rec_type) IS
1954 
1955     l_api_version                 CONSTANT NUMBER := 1;
1956     l_api_name                     CONSTANT VARCHAR2(30) := 'TRANSACTIONS_delete_row';
1957     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1958     l_btn_rec                      btn_rec_type:= p_btn_rec;
1959     l_row_notfound                 BOOLEAN := TRUE;
1960   BEGIN
1961     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
1962                                               p_init_msg_list,
1963                                               '_PVT',
1964                                               x_return_status);
1965     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1966       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1967     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1968       RAISE OKC_API.G_EXCEPTION_ERROR;
1969     END IF;
1970     DELETE FROM OKS_BILL_TRANSACTIONS
1971      WHERE ID = l_btn_rec.id;
1972 
1973     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1974   EXCEPTION
1975     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1976       x_return_status := OKC_API.HANDLE_EXCEPTIONS
1977       (
1978         l_api_name,
1979         G_PKG_NAME,
1980         'OKC_API.G_RET_STS_ERROR',
1981         x_msg_count,
1982         x_msg_data,
1983         '_PVT'
1984       );
1985     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1986       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1987       (
1988         l_api_name,
1989         G_PKG_NAME,
1990         'OKC_API.G_RET_STS_UNEXP_ERROR',
1991         x_msg_count,
1992         x_msg_data,
1993         '_PVT'
1994       );
1995     WHEN OTHERS THEN
1996       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1997       (
1998         l_api_name,
1999         G_PKG_NAME,
2000         'OTHERS',
2001         x_msg_count,
2002         x_msg_data,
2003         '_PVT'
2004       );
2005   END delete_row;
2006   --------------------------------------------
2007   -- delete_row for:OKS_BILL_TRANSACTIONS_V --
2008   --------------------------------------------
2009   PROCEDURE delete_row(
2010     p_api_version                  IN NUMBER,
2011     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2012     x_return_status                OUT NOCOPY VARCHAR2,
2013     x_msg_count                    OUT NOCOPY NUMBER,
2014     x_msg_data                     OUT NOCOPY VARCHAR2,
2015     p_btnv_rec                     IN btnv_rec_type) IS
2016 
2017     l_api_version                 CONSTANT NUMBER := 1;
2018     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2019     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2020     l_btnv_rec                     btnv_rec_type := p_btnv_rec;
2021     l_btn_rec                      btn_rec_type;
2022   BEGIN
2023     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2024                                               G_PKG_NAME,
2025                                               p_init_msg_list,
2026                                               l_api_version,
2027                                               p_api_version,
2028                                               '_PVT',
2029                                               x_return_status);
2030     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2031       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2032     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2033       RAISE OKC_API.G_EXCEPTION_ERROR;
2034     END IF;
2035     --------------------------------------
2036     -- Move VIEW record to "Child" records
2037     --------------------------------------
2038     migrate(l_btnv_rec, l_btn_rec);
2039     --------------------------------------------
2040     -- Call the DELETE_ROW for each child record
2041     --------------------------------------------
2042     delete_row(
2043       p_init_msg_list,
2044       x_return_status,
2045       x_msg_count,
2046       x_msg_data,
2047       l_btn_rec
2048     );
2049     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2050       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2051     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2052       RAISE OKC_API.G_EXCEPTION_ERROR;
2053     END IF;
2054     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2055   EXCEPTION
2056     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2057       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2058       (
2059         l_api_name,
2060         G_PKG_NAME,
2061         'OKC_API.G_RET_STS_ERROR',
2062         x_msg_count,
2063         x_msg_data,
2064         '_PVT'
2065       );
2066     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2067       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2068       (
2069         l_api_name,
2070         G_PKG_NAME,
2071         'OKC_API.G_RET_STS_UNEXP_ERROR',
2072         x_msg_count,
2073         x_msg_data,
2074         '_PVT'
2075       );
2076     WHEN OTHERS THEN
2077       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2078       (
2079         l_api_name,
2080         G_PKG_NAME,
2081         'OTHERS',
2082         x_msg_count,
2083         x_msg_data,
2084         '_PVT'
2085       );
2086   END delete_row;
2087   ----------------------------------------
2088   -- PL/SQL TBL delete_row for:BTNV_TBL --
2089   ----------------------------------------
2090   PROCEDURE delete_row(
2091     p_api_version                  IN NUMBER,
2092     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
2093     x_return_status                OUT NOCOPY VARCHAR2,
2094     x_msg_count                    OUT NOCOPY NUMBER,
2095     x_msg_data                     OUT NOCOPY VARCHAR2,
2096     p_btnv_tbl                     IN btnv_tbl_type) IS
2097 
2098     l_api_version                 CONSTANT NUMBER := 1;
2099     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
2100     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2101     i                              NUMBER := 0;
2102   BEGIN
2103     OKC_API.init_msg_list(p_init_msg_list);
2104     -- Make sure PL/SQL table has records in it before passing
2105     IF (p_btnv_tbl.COUNT > 0) THEN
2106       i := p_btnv_tbl.FIRST;
2107       LOOP
2108         delete_row (
2109           p_api_version                  => p_api_version,
2110           p_init_msg_list                => OKC_API.G_FALSE,
2111           x_return_status                => x_return_status,
2112           x_msg_count                    => x_msg_count,
2113           x_msg_data                     => x_msg_data,
2114           p_btnv_rec                     => p_btnv_tbl(i));
2115         EXIT WHEN (i = p_btnv_tbl.LAST);
2116         i := p_btnv_tbl.NEXT(i);
2117       END LOOP;
2118     END IF;
2119   EXCEPTION
2120     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2121       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2122       (
2123         l_api_name,
2124         G_PKG_NAME,
2125         'OKC_API.G_RET_STS_ERROR',
2126         x_msg_count,
2127         x_msg_data,
2128         '_PVT'
2129       );
2130     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2131       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2132       (
2133         l_api_name,
2134         G_PKG_NAME,
2135         'OKC_API.G_RET_STS_UNEXP_ERROR',
2136         x_msg_count,
2137         x_msg_data,
2138         '_PVT'
2139       );
2140     WHEN OTHERS THEN
2141       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2142       (
2143         l_api_name,
2144         G_PKG_NAME,
2145         'OTHERS',
2146         x_msg_count,
2147         x_msg_data,
2148         '_PVT'
2149       );
2150   END delete_row;
2151 
2152 
2153 PROCEDURE INSERT_ROW_UPG(p_btnv_tbl     btnv_tbl_type) IS
2154 
2155   l_tabsize NUMBER := p_btnv_tbl.COUNT;
2156 
2157   in_id                             OKC_DATATYPES.NumberTabTyp;
2158   in_object_version_number          OKC_DATATYPES.NumberTabTyp;
2159   in_trx_date                       OKC_DATATYPES.DateTabTyp;
2160   in_trx_number                     Var60TabTyp;
2161   in_trx_amount                     OKC_DATATYPES.NumberTabTyp;
2162   in_trx_class                      Var60TabTyp;
2163   in_currency_code                  Var45TabTyp;
2164   in_created_by                     OKC_DATATYPES.NumberTabTyp;
2165   in_creation_date                  OKC_DATATYPES.DateTabTyp;
2166   in_last_updated_by                OKC_DATATYPES.NumberTabTyp;
2167   in_last_update_date               OKC_DATATYPES.DateTabTyp;
2168   in_last_update_login              OKC_DATATYPES.NumberTabTyp;
2169 
2170   i number;
2171   j number;
2172 
2173 BEGIN
2174   i := p_btnv_tbl.FIRST;
2175   j := 0;
2176 
2177   while i is not null
2178   LOOP
2179     j:=j+1;
2180     in_id                       (j) := p_btnv_tbl(i).id;
2181     in_object_version_number    (j) := p_btnv_tbl(i).object_version_number;
2182     in_trx_date                 (j) := p_btnv_tbl(i).trx_date;
2183     in_trx_number               (j) := p_btnv_tbl(i).trx_number;
2184     in_trx_amount               (j) := p_btnv_tbl(i).trx_amount;
2185     in_trx_class                (j) := p_btnv_tbl(i).trx_class;
2186     in_currency_code            (j) := p_btnv_tbl(i).currency_code;
2187     in_created_by               (j) := p_btnv_tbl(i).created_by;
2188     in_creation_date            (j) := p_btnv_tbl(i).creation_date;
2189     in_last_updated_by          (j) := p_btnv_tbl(i).last_updated_by;
2190     in_last_update_date         (j) := p_btnv_tbl(i).last_update_date;
2191     in_last_update_login        (j) := p_btnv_tbl(i).last_update_login;
2192 
2193     i := p_btnv_tbl.next(i);
2194 
2195   END LOOP;
2196 
2197   FORALL i in 1..l_tabsize
2198     INSERT
2199       INTO OKS_BILL_TRANSACTIONS
2200       (
2201         id,
2202         object_version_number,
2203         trx_date,
2204         trx_number,
2205         trx_amount,
2206         trx_class,
2207         currency_code,
2208         created_by,
2209         creation_date,
2210         last_updated_by,
2211         last_update_date,
2212         last_update_login
2213       )
2214      VALUES
2215      (
2216         in_id(i),
2217         in_object_version_number(i),
2218         in_trx_date(i),
2219         in_trx_number(i),
2220         in_trx_amount(i),
2221         in_trx_class(i),
2222         in_currency_code(i),
2223         in_created_by(i),
2224         in_creation_date(i),
2225         in_last_updated_by(i),
2226         in_last_update_date(i),
2227         in_last_update_login(i)
2228      );
2229 
2230 EXCEPTION
2231   WHEN OTHERS THEN
2232     RAISE;
2233 END INSERT_ROW_UPG;
2234 END OKS_BTN_PVT;