DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_BCH_PVT

Source


1 Package BODY Okl_Bch_Pvt AS
2 /* $Header: OKLSBCHB.pls 120.3 2007/08/08 12:42:34 arajagop ship $ */
3 
4   ---------------------------------------------------------------------------
5   -- Global Variables
6   -- Post-Generation Change
7   -- By RDRAGUIL on 24-APR-2001
8   ---------------------------------------------------------------------------
9   --GLOBAL MESSAGES
10      G_UNEXPECTED_ERROR CONSTANT   VARCHAR2(200) := 'OKL_UNEXPECTED_ERROR';
11      G_NO_PARENT_RECORD CONSTANT   VARCHAR2(200) := 'OKL_NO_PARENT_RECORD';
12      G_SQLERRM_TOKEN    CONSTANT   VARCHAR2(200) := 'ERROR_MESSAGE';
13      G_SQLCODE_TOKEN    CONSTANT   VARCHAR2(200) := 'ERROR_CODE';
14      G_NOT_SAME         CONSTANT   VARCHAR2(200) := 'OKL_CANNOT_BE_SAME';
15 
16   --GLOBAL VARIABLES
17     G_VIEW              CONSTANT   VARCHAR2(30)  := 'OKL_BILLING_CHARGES_V';
18     G_EXCEPTION_HALT_VALIDATION    EXCEPTION;
19 
20   ---------------------------------------------------------------------------
21   -- FUNCTION get_seq_id
22   ---------------------------------------------------------------------------
23   FUNCTION get_seq_id RETURN NUMBER IS
24   BEGIN
25     RETURN(Okc_P_Util.raw_to_number(sys_guid()));
26   END get_seq_id;
27 
28   ---------------------------------------------------------------------------
29   -- PROCEDURE qc
30   ---------------------------------------------------------------------------
31   PROCEDURE qc IS
32   BEGIN
33     NULL;
34   END qc;
35 
36   ---------------------------------------------------------------------------
37   -- PROCEDURE change_version
38   ---------------------------------------------------------------------------
39   PROCEDURE change_version IS
40   BEGIN
41     NULL;
42   END change_version;
43 
44   ---------------------------------------------------------------------------
45   -- PROCEDURE api_copy
46   ---------------------------------------------------------------------------
47   PROCEDURE api_copy IS
48   BEGIN
49     NULL;
50   END api_copy;
51 
52   ---------------------------------------------------------------------------
53   -- PROCEDURE add_language
54   ---------------------------------------------------------------------------
55   PROCEDURE add_language IS
56   BEGIN
57     DELETE FROM OKL_BILLING_CHARGES_TL T
58      WHERE NOT EXISTS (
59         SELECT NULL
60           FROM OKL_BLNG_CHARGES_ALL_B B    --fixed bug 3321017 by kmotepal
61          WHERE B.ID = T.ID
62         );
63 
64     UPDATE OKL_BILLING_CHARGES_TL T SET (
65         CHARGE_TYPE,
66         DESCRIPTION) = (SELECT
67                                   B.CHARGE_TYPE,
68                                   B.DESCRIPTION
69                                 FROM OKL_BILLING_CHARGES_TL B
70                                WHERE B.ID = T.ID
71                                  AND B.LANGUAGE = T.SOURCE_LANG)
72       WHERE (
73               T.ID,
74               T.LANGUAGE)
75           IN (SELECT
76                   SUBT.ID,
77                   SUBT.LANGUAGE
78                 FROM OKL_BILLING_CHARGES_TL SUBB, OKL_BILLING_CHARGES_TL SUBT
79                WHERE SUBB.ID = SUBT.ID
80                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
81                  AND (SUBB.CHARGE_TYPE <> SUBT.CHARGE_TYPE
82                       OR SUBB.DESCRIPTION <> SUBT.DESCRIPTION
83                       OR (SUBB.CHARGE_TYPE IS NULL AND SUBT.CHARGE_TYPE IS NOT NULL)
84                       OR (SUBB.CHARGE_TYPE IS NOT NULL AND SUBT.CHARGE_TYPE IS NULL)
85                       OR (SUBB.DESCRIPTION IS NULL AND SUBT.DESCRIPTION IS NOT NULL)
86                       OR (SUBB.DESCRIPTION IS NOT NULL AND SUBT.DESCRIPTION IS NULL)
87               ));
88 
89     INSERT INTO OKL_BILLING_CHARGES_TL (
90         ID,
91         LANGUAGE,
92         SOURCE_LANG,
93         SFWT_FLAG,
94         CHARGE_TYPE,
95         DESCRIPTION,
96         CREATED_BY,
97         CREATION_DATE,
98         LAST_UPDATED_BY,
99         LAST_UPDATE_DATE,
100         LAST_UPDATE_LOGIN)
101       SELECT
102             B.ID,
103             L.LANGUAGE_CODE,
104             B.SOURCE_LANG,
105             B.SFWT_FLAG,
106             B.CHARGE_TYPE,
107             B.DESCRIPTION,
108             B.CREATED_BY,
109             B.CREATION_DATE,
110             B.LAST_UPDATED_BY,
111             B.LAST_UPDATE_DATE,
112             B.LAST_UPDATE_LOGIN
113         FROM OKL_BILLING_CHARGES_TL B, FND_LANGUAGES L
114        WHERE L.INSTALLED_FLAG IN ('I', 'B')
115          AND B.LANGUAGE = USERENV('LANG')
116          AND NOT EXISTS(
117                     SELECT NULL
118                       FROM OKL_BILLING_CHARGES_TL T
119                      WHERE T.ID = B.ID
120                        AND T.LANGUAGE = L.LANGUAGE_CODE
121                     );
122 
123   END add_language;
124 
125   ---------------------------------------------------------------------------
126   -- FUNCTION get_rec for: OKL_BILLING_CHARGES_B
127   ---------------------------------------------------------------------------
128   FUNCTION get_rec (
129     p_bch_rec                      IN bch_rec_type,
130     x_no_data_found                OUT NOCOPY BOOLEAN
131   ) RETURN bch_rec_type IS
132     CURSOR bch_pk_csr (p_id                 IN NUMBER) IS
133     SELECT
134             ID,
135             SEQUENCE_NUMBER,
136             BGH_ID,
137             OBJECT_VERSION_NUMBER,
138             CONTRACT_ID,
139             ASSET_ID,
140             CHARGE_DATE,
141             AMOUNT,
142             CURRENCY_CODE,
143             CUSTOMER_ID,
144             CUSTOMER_REF,
145             CUSTOMER_ADDRESS_ID,
146             CUSTOMER_ADDRESS_REF,
147             REQUEST_ID,
148             PROGRAM_APPLICATION_ID,
149             PROGRAM_ID,
150             PROGRAM_UPDATE_DATE,
151             ORG_ID,
152 			STY_ID,
153 			STY_NAME,
154             ATTRIBUTE_CATEGORY,
155             ATTRIBUTE1,
156             ATTRIBUTE2,
157             ATTRIBUTE3,
158             ATTRIBUTE4,
159             ATTRIBUTE5,
160             ATTRIBUTE6,
161             ATTRIBUTE7,
162             ATTRIBUTE8,
163             ATTRIBUTE9,
164             ATTRIBUTE10,
165             ATTRIBUTE11,
166             ATTRIBUTE12,
167             ATTRIBUTE13,
168             ATTRIBUTE14,
169             ATTRIBUTE15,
170             INTERFACE_ATTRIBUTE1,
171             INTERFACE_ATTRIBUTE2,
172             INTERFACE_ATTRIBUTE3,
173             INTERFACE_ATTRIBUTE4,
174             INTERFACE_ATTRIBUTE5,
175             INTERFACE_ATTRIBUTE6,
176             INTERFACE_ATTRIBUTE7,
177             INTERFACE_ATTRIBUTE8,
178             INTERFACE_ATTRIBUTE9,
179             INTERFACE_ATTRIBUTE10,
180             INTERFACE_ATTRIBUTE11,
181             INTERFACE_ATTRIBUTE12,
182             INTERFACE_ATTRIBUTE13,
183             INTERFACE_ATTRIBUTE14,
184             INTERFACE_ATTRIBUTE15,
185             CREATED_BY,
186             CREATION_DATE,
187             LAST_UPDATED_BY,
188             LAST_UPDATE_DATE,
189             LAST_UPDATE_LOGIN
190       FROM Okl_Billing_Charges_B
191      WHERE okl_billing_charges_b.id = p_id;
192     l_bch_pk                       bch_pk_csr%ROWTYPE;
193     l_bch_rec                      bch_rec_type;
194   BEGIN
195     x_no_data_found := TRUE;
196     -- Get current database values
197     OPEN bch_pk_csr (p_bch_rec.id);
198     FETCH bch_pk_csr INTO
199               l_bch_rec.ID,
200               l_bch_rec.SEQUENCE_NUMBER,
201               l_bch_rec.BGH_ID,
202               l_bch_rec.OBJECT_VERSION_NUMBER,
203               l_bch_rec.CONTRACT_ID,
204               l_bch_rec.ASSET_ID,
205               l_bch_rec.CHARGE_DATE,
206               l_bch_rec.AMOUNT,
207               l_bch_rec.CURRENCY_CODE,
208               l_bch_rec.CUSTOMER_ID,
209               l_bch_rec.CUSTOMER_REF,
210               l_bch_rec.CUSTOMER_ADDRESS_ID,
211               l_bch_rec.CUSTOMER_ADDRESS_REF,
212               l_bch_rec.REQUEST_ID,
213               l_bch_rec.PROGRAM_APPLICATION_ID,
214               l_bch_rec.PROGRAM_ID,
215               l_bch_rec.PROGRAM_UPDATE_DATE,
216               l_bch_rec.ORG_ID,
217               l_bch_rec.STY_ID,
218               l_bch_rec.STY_NAME,
219               l_bch_rec.ATTRIBUTE_CATEGORY,
220               l_bch_rec.ATTRIBUTE1,
221               l_bch_rec.ATTRIBUTE2,
222               l_bch_rec.ATTRIBUTE3,
223               l_bch_rec.ATTRIBUTE4,
224               l_bch_rec.ATTRIBUTE5,
225               l_bch_rec.ATTRIBUTE6,
226               l_bch_rec.ATTRIBUTE7,
227               l_bch_rec.ATTRIBUTE8,
228               l_bch_rec.ATTRIBUTE9,
229               l_bch_rec.ATTRIBUTE10,
230               l_bch_rec.ATTRIBUTE11,
231               l_bch_rec.ATTRIBUTE12,
232               l_bch_rec.ATTRIBUTE13,
233               l_bch_rec.ATTRIBUTE14,
234               l_bch_rec.ATTRIBUTE15,
235               l_bch_rec.INTERFACE_ATTRIBUTE1,
236               l_bch_rec.INTERFACE_ATTRIBUTE2,
237               l_bch_rec.INTERFACE_ATTRIBUTE3,
238               l_bch_rec.INTERFACE_ATTRIBUTE4,
239               l_bch_rec.INTERFACE_ATTRIBUTE5,
240               l_bch_rec.INTERFACE_ATTRIBUTE6,
241               l_bch_rec.INTERFACE_ATTRIBUTE7,
242               l_bch_rec.INTERFACE_ATTRIBUTE8,
243               l_bch_rec.INTERFACE_ATTRIBUTE9,
244               l_bch_rec.INTERFACE_ATTRIBUTE10,
245               l_bch_rec.INTERFACE_ATTRIBUTE11,
246               l_bch_rec.INTERFACE_ATTRIBUTE12,
247               l_bch_rec.INTERFACE_ATTRIBUTE13,
248               l_bch_rec.INTERFACE_ATTRIBUTE14,
249               l_bch_rec.INTERFACE_ATTRIBUTE15,
250               l_bch_rec.CREATED_BY,
251               l_bch_rec.CREATION_DATE,
252               l_bch_rec.LAST_UPDATED_BY,
253               l_bch_rec.LAST_UPDATE_DATE,
254               l_bch_rec.LAST_UPDATE_LOGIN;
255     x_no_data_found := bch_pk_csr%NOTFOUND;
256     CLOSE bch_pk_csr;
257     RETURN(l_bch_rec);
258   END get_rec;
259 
260   FUNCTION get_rec (
261     p_bch_rec                      IN bch_rec_type
262   ) RETURN bch_rec_type IS
263     l_row_notfound                 BOOLEAN := TRUE;
264   BEGIN
265     RETURN(get_rec(p_bch_rec, l_row_notfound));
266   END get_rec;
267   ---------------------------------------------------------------------------
268   -- FUNCTION get_rec for: OKL_BILLING_CHARGES_TL
269   ---------------------------------------------------------------------------
270   FUNCTION get_rec (
271     p_okl_billing_charges_tl_rec   IN OklBillingChargesTlRecType,
272     x_no_data_found                OUT NOCOPY BOOLEAN
273   ) RETURN OklBillingChargesTlRecType IS
274     CURSOR okl_billing_charges_tl_pk_csr (p_id                 IN NUMBER,
275                                           p_language           IN VARCHAR2) IS
276     SELECT
277             ID,
278             Okl_Billing_Charges_Tl.LANGUAGE,
279             SOURCE_LANG,
280             SFWT_FLAG,
281             CHARGE_TYPE,
282             DESCRIPTION,
283             CREATED_BY,
284             CREATION_DATE,
285             LAST_UPDATED_BY,
286             LAST_UPDATE_DATE,
287             LAST_UPDATE_LOGIN
288       FROM Okl_Billing_Charges_Tl
289      WHERE okl_billing_charges_tl.id = p_id
290        AND okl_billing_charges_tl.LANGUAGE = p_language;
291     l_okl_billing_charges_tl_pk    okl_billing_charges_tl_pk_csr%ROWTYPE;
292     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType;
293   BEGIN
294     x_no_data_found := TRUE;
295     -- Get current database values
296     OPEN okl_billing_charges_tl_pk_csr (p_okl_billing_charges_tl_rec.id,
297                                         p_okl_billing_charges_tl_rec.LANGUAGE);
298     FETCH okl_billing_charges_tl_pk_csr INTO
299               l_okl_billing_charges_tl_rec.ID,
300               l_okl_billing_charges_tl_rec.LANGUAGE,
301               l_okl_billing_charges_tl_rec.SOURCE_LANG,
302               l_okl_billing_charges_tl_rec.SFWT_FLAG,
303               l_okl_billing_charges_tl_rec.CHARGE_TYPE,
304               l_okl_billing_charges_tl_rec.DESCRIPTION,
305               l_okl_billing_charges_tl_rec.CREATED_BY,
306               l_okl_billing_charges_tl_rec.CREATION_DATE,
307               l_okl_billing_charges_tl_rec.LAST_UPDATED_BY,
308               l_okl_billing_charges_tl_rec.LAST_UPDATE_DATE,
309               l_okl_billing_charges_tl_rec.LAST_UPDATE_LOGIN;
310     x_no_data_found := okl_billing_charges_tl_pk_csr%NOTFOUND;
311     CLOSE okl_billing_charges_tl_pk_csr;
312     RETURN(l_okl_billing_charges_tl_rec);
313   END get_rec;
314 
315   FUNCTION get_rec (
316     p_okl_billing_charges_tl_rec   IN OklBillingChargesTlRecType
317   ) RETURN OklBillingChargesTlRecType IS
318     l_row_notfound                 BOOLEAN := TRUE;
319   BEGIN
320     RETURN(get_rec(p_okl_billing_charges_tl_rec, l_row_notfound));
321   END get_rec;
322   ---------------------------------------------------------------------------
323   -- FUNCTION get_rec for: OKL_BILLING_CHARGES_V
324   ---------------------------------------------------------------------------
325   FUNCTION get_rec (
326     p_bchv_rec                     IN bchv_rec_type,
327     x_no_data_found                OUT NOCOPY BOOLEAN
328   ) RETURN bchv_rec_type IS
329     CURSOR okl_bchv_pk_csr (p_id                 IN NUMBER) IS
330     SELECT
331             ID,
332             OBJECT_VERSION_NUMBER,
333             SFWT_FLAG,
334             BGH_ID,
335             SEQUENCE_NUMBER,
336             CONTRACT_ID,
337             ASSET_ID,
338             CHARGE_TYPE,
339             CHARGE_DATE,
340             AMOUNT,
341             CURRENCY_CODE,
342             DESCRIPTION,
343             CUSTOMER_ID,
344             CUSTOMER_REF,
345             CUSTOMER_ADDRESS_ID,
346             CUSTOMER_ADDRESS_REF,
347 			STY_ID,
348 			STY_NAME,
349             ATTRIBUTE_CATEGORY,
350             ATTRIBUTE1,
351             ATTRIBUTE2,
352             ATTRIBUTE3,
353             ATTRIBUTE4,
354             ATTRIBUTE5,
355             ATTRIBUTE6,
356             ATTRIBUTE7,
357             ATTRIBUTE8,
358             ATTRIBUTE9,
359             ATTRIBUTE10,
360             ATTRIBUTE11,
361             ATTRIBUTE12,
362             ATTRIBUTE13,
363             ATTRIBUTE14,
364             ATTRIBUTE15,
365             INTERFACE_ATTRIBUTE1,
366             INTERFACE_ATTRIBUTE2,
367             INTERFACE_ATTRIBUTE3,
368             INTERFACE_ATTRIBUTE4,
369             INTERFACE_ATTRIBUTE5,
370             INTERFACE_ATTRIBUTE6,
374             INTERFACE_ATTRIBUTE10,
371             INTERFACE_ATTRIBUTE7,
372             INTERFACE_ATTRIBUTE8,
373             INTERFACE_ATTRIBUTE9,
375             INTERFACE_ATTRIBUTE11,
376             INTERFACE_ATTRIBUTE12,
377             INTERFACE_ATTRIBUTE13,
378             INTERFACE_ATTRIBUTE14,
379             INTERFACE_ATTRIBUTE15,
380             REQUEST_ID,
381             PROGRAM_APPLICATION_ID,
382             PROGRAM_ID,
383             PROGRAM_UPDATE_DATE,
384             ORG_ID,
385             CREATED_BY,
386             CREATION_DATE,
387             LAST_UPDATED_BY,
388             LAST_UPDATE_DATE,
389             LAST_UPDATE_LOGIN
390       FROM Okl_Billing_Charges_V
391      WHERE okl_billing_charges_v.id = p_id;
392     l_okl_bchv_pk                  okl_bchv_pk_csr%ROWTYPE;
393     l_bchv_rec                     bchv_rec_type;
394   BEGIN
395     x_no_data_found := TRUE;
396     -- Get current database values
397     OPEN okl_bchv_pk_csr (p_bchv_rec.id);
398     FETCH okl_bchv_pk_csr INTO
399               l_bchv_rec.ID,
400               l_bchv_rec.OBJECT_VERSION_NUMBER,
401               l_bchv_rec.SFWT_FLAG,
402               l_bchv_rec.BGH_ID,
403               l_bchv_rec.SEQUENCE_NUMBER,
404               l_bchv_rec.CONTRACT_ID,
405               l_bchv_rec.ASSET_ID,
406               l_bchv_rec.CHARGE_TYPE,
407               l_bchv_rec.CHARGE_DATE,
408               l_bchv_rec.AMOUNT,
409               l_bchv_rec.CURRENCY_CODE,
410               l_bchv_rec.DESCRIPTION,
411               l_bchv_rec.CUSTOMER_ID,
412               l_bchv_rec.CUSTOMER_REF,
413               l_bchv_rec.CUSTOMER_ADDRESS_ID,
414               l_bchv_rec.CUSTOMER_ADDRESS_REF,
415               l_bchv_rec.STY_ID,
416               l_bchv_rec.STY_NAME,
417               l_bchv_rec.ATTRIBUTE_CATEGORY,
418               l_bchv_rec.ATTRIBUTE1,
419               l_bchv_rec.ATTRIBUTE2,
420               l_bchv_rec.ATTRIBUTE3,
421               l_bchv_rec.ATTRIBUTE4,
422               l_bchv_rec.ATTRIBUTE5,
423               l_bchv_rec.ATTRIBUTE6,
424               l_bchv_rec.ATTRIBUTE7,
425               l_bchv_rec.ATTRIBUTE8,
426               l_bchv_rec.ATTRIBUTE9,
427               l_bchv_rec.ATTRIBUTE10,
428               l_bchv_rec.ATTRIBUTE11,
429               l_bchv_rec.ATTRIBUTE12,
430               l_bchv_rec.ATTRIBUTE13,
431               l_bchv_rec.ATTRIBUTE14,
432               l_bchv_rec.ATTRIBUTE15,
433               l_bchv_rec.INTERFACE_ATTRIBUTE1,
434               l_bchv_rec.INTERFACE_ATTRIBUTE2,
435               l_bchv_rec.INTERFACE_ATTRIBUTE3,
436               l_bchv_rec.INTERFACE_ATTRIBUTE4,
437               l_bchv_rec.INTERFACE_ATTRIBUTE5,
438               l_bchv_rec.INTERFACE_ATTRIBUTE6,
439               l_bchv_rec.INTERFACE_ATTRIBUTE7,
440               l_bchv_rec.INTERFACE_ATTRIBUTE8,
441               l_bchv_rec.INTERFACE_ATTRIBUTE9,
442               l_bchv_rec.INTERFACE_ATTRIBUTE10,
443               l_bchv_rec.INTERFACE_ATTRIBUTE11,
444               l_bchv_rec.INTERFACE_ATTRIBUTE12,
445               l_bchv_rec.INTERFACE_ATTRIBUTE13,
446               l_bchv_rec.INTERFACE_ATTRIBUTE14,
447               l_bchv_rec.INTERFACE_ATTRIBUTE15,
448               l_bchv_rec.REQUEST_ID,
449               l_bchv_rec.PROGRAM_APPLICATION_ID,
450               l_bchv_rec.PROGRAM_ID,
451               l_bchv_rec.PROGRAM_UPDATE_DATE,
452               l_bchv_rec.ORG_ID,
453               l_bchv_rec.CREATED_BY,
454               l_bchv_rec.CREATION_DATE,
455               l_bchv_rec.LAST_UPDATED_BY,
456               l_bchv_rec.LAST_UPDATE_DATE,
457               l_bchv_rec.LAST_UPDATE_LOGIN;
458     x_no_data_found := okl_bchv_pk_csr%NOTFOUND;
459     CLOSE okl_bchv_pk_csr;
460     RETURN(l_bchv_rec);
461   END get_rec;
462 
463   FUNCTION get_rec (
464     p_bchv_rec                     IN bchv_rec_type
465   ) RETURN bchv_rec_type IS
466     l_row_notfound                 BOOLEAN := TRUE;
467   BEGIN
468     RETURN(get_rec(p_bchv_rec, l_row_notfound));
469   END get_rec;
470 
471   -----------------------------------------------------------
472   -- FUNCTION null_out_defaults for: OKL_BILLING_CHARGES_V --
473   -----------------------------------------------------------
474   FUNCTION null_out_defaults (
475     p_bchv_rec	IN bchv_rec_type
476   ) RETURN bchv_rec_type IS
477     l_bchv_rec	bchv_rec_type := p_bchv_rec;
478   BEGIN
479     IF (l_bchv_rec.object_version_number = Okl_Api.G_MISS_NUM) THEN
480       l_bchv_rec.object_version_number := NULL;
481     END IF;
482     IF (l_bchv_rec.sfwt_flag = Okl_Api.G_MISS_CHAR) THEN
483       l_bchv_rec.sfwt_flag := NULL;
484     END IF;
485     IF (l_bchv_rec.bgh_id = Okl_Api.G_MISS_NUM) THEN
486       l_bchv_rec.bgh_id := NULL;
487     END IF;
488     IF (l_bchv_rec.sequence_number = Okl_Api.G_MISS_NUM) THEN
489       l_bchv_rec.sequence_number := NULL;
490     END IF;
491     IF (l_bchv_rec.contract_id = Okl_Api.G_MISS_NUM) THEN
492       l_bchv_rec.contract_id := NULL;
493     END IF;
494     IF (l_bchv_rec.asset_id = Okl_Api.G_MISS_NUM) THEN
495       l_bchv_rec.asset_id := NULL;
496     END IF;
497     IF (l_bchv_rec.charge_type = Okl_Api.G_MISS_CHAR) THEN
498       l_bchv_rec.charge_type := NULL;
499     END IF;
503     IF (l_bchv_rec.amount = Okl_Api.G_MISS_NUM) THEN
500     IF (l_bchv_rec.charge_date = Okl_Api.G_MISS_DATE) THEN
501       l_bchv_rec.charge_date := NULL;
502     END IF;
504       l_bchv_rec.amount := NULL;
505     END IF;
506     IF (l_bchv_rec.currency_code = Okl_Api.G_MISS_CHAR) THEN
507       l_bchv_rec.currency_code := NULL;
508     END IF;
509     IF (l_bchv_rec.description = Okl_Api.G_MISS_CHAR) THEN
510       l_bchv_rec.description := NULL;
511     END IF;
512     IF (l_bchv_rec.customer_id = Okl_Api.G_MISS_NUM) THEN
513       l_bchv_rec.customer_id := NULL;
514     END IF;
515     IF (l_bchv_rec.customer_ref = Okl_Api.G_MISS_CHAR) THEN
516       l_bchv_rec.customer_ref := NULL;
517     END IF;
518     IF (l_bchv_rec.customer_address_id = Okl_Api.G_MISS_NUM) THEN
519       l_bchv_rec.customer_address_id := NULL;
520     END IF;
521     IF (l_bchv_rec.customer_address_ref = Okl_Api.G_MISS_CHAR) THEN
522       l_bchv_rec.customer_address_ref := NULL;
523     END IF;
524     IF (l_bchv_rec.sty_id = Okl_Api.G_MISS_NUM) THEN
525       l_bchv_rec.sty_id := NULL;
526     END IF;
527     IF (l_bchv_rec.sty_name = Okl_Api.G_MISS_CHAR) THEN
528       l_bchv_rec.sty_name := NULL;
529     END IF;
530     IF (l_bchv_rec.attribute_category = Okl_Api.G_MISS_CHAR) THEN
531       l_bchv_rec.attribute_category := NULL;
532     END IF;
533     IF (l_bchv_rec.attribute1 = Okl_Api.G_MISS_CHAR) THEN
534       l_bchv_rec.attribute1 := NULL;
535     END IF;
536     IF (l_bchv_rec.attribute2 = Okl_Api.G_MISS_CHAR) THEN
537       l_bchv_rec.attribute2 := NULL;
538     END IF;
539     IF (l_bchv_rec.attribute3 = Okl_Api.G_MISS_CHAR) THEN
540       l_bchv_rec.attribute3 := NULL;
541     END IF;
542     IF (l_bchv_rec.attribute4 = Okl_Api.G_MISS_CHAR) THEN
543       l_bchv_rec.attribute4 := NULL;
544     END IF;
545     IF (l_bchv_rec.attribute5 = Okl_Api.G_MISS_CHAR) THEN
546       l_bchv_rec.attribute5 := NULL;
547     END IF;
548     IF (l_bchv_rec.attribute6 = Okl_Api.G_MISS_CHAR) THEN
549       l_bchv_rec.attribute6 := NULL;
550     END IF;
551     IF (l_bchv_rec.attribute7 = Okl_Api.G_MISS_CHAR) THEN
552       l_bchv_rec.attribute7 := NULL;
553     END IF;
554     IF (l_bchv_rec.attribute8 = Okl_Api.G_MISS_CHAR) THEN
555       l_bchv_rec.attribute8 := NULL;
556     END IF;
557     IF (l_bchv_rec.attribute9 = Okl_Api.G_MISS_CHAR) THEN
558       l_bchv_rec.attribute9 := NULL;
559     END IF;
560     IF (l_bchv_rec.attribute10 = Okl_Api.G_MISS_CHAR) THEN
561       l_bchv_rec.attribute10 := NULL;
562     END IF;
563     IF (l_bchv_rec.attribute11 = Okl_Api.G_MISS_CHAR) THEN
564       l_bchv_rec.attribute11 := NULL;
565     END IF;
566     IF (l_bchv_rec.attribute12 = Okl_Api.G_MISS_CHAR) THEN
567       l_bchv_rec.attribute12 := NULL;
568     END IF;
569     IF (l_bchv_rec.attribute13 = Okl_Api.G_MISS_CHAR) THEN
570       l_bchv_rec.attribute13 := NULL;
571     END IF;
572     IF (l_bchv_rec.attribute14 = Okl_Api.G_MISS_CHAR) THEN
573       l_bchv_rec.attribute14 := NULL;
574     END IF;
575     IF (l_bchv_rec.attribute15 = Okl_Api.G_MISS_CHAR) THEN
576       l_bchv_rec.attribute15 := NULL;
577     END IF;
578     IF (l_bchv_rec.interface_attribute1 = Okl_Api.G_MISS_CHAR) THEN
579       l_bchv_rec.interface_attribute1 := NULL;
580     END IF;
581     IF (l_bchv_rec.interface_attribute2 = Okl_Api.G_MISS_CHAR) THEN
582       l_bchv_rec.interface_attribute2 := NULL;
583     END IF;
584     IF (l_bchv_rec.interface_attribute3 = Okl_Api.G_MISS_CHAR) THEN
585       l_bchv_rec.interface_attribute3 := NULL;
586     END IF;
587     IF (l_bchv_rec.interface_attribute4 = Okl_Api.G_MISS_CHAR) THEN
588       l_bchv_rec.interface_attribute4 := NULL;
589     END IF;
590     IF (l_bchv_rec.interface_attribute5 = Okl_Api.G_MISS_CHAR) THEN
591       l_bchv_rec.interface_attribute5 := NULL;
592     END IF;
593     IF (l_bchv_rec.interface_attribute6 = Okl_Api.G_MISS_CHAR) THEN
594       l_bchv_rec.interface_attribute6 := NULL;
595     END IF;
596     IF (l_bchv_rec.interface_attribute7 = Okl_Api.G_MISS_CHAR) THEN
597       l_bchv_rec.interface_attribute7 := NULL;
598     END IF;
599     IF (l_bchv_rec.interface_attribute8 = Okl_Api.G_MISS_CHAR) THEN
600       l_bchv_rec.interface_attribute8 := NULL;
601     END IF;
602     IF (l_bchv_rec.interface_attribute9 = Okl_Api.G_MISS_CHAR) THEN
603       l_bchv_rec.interface_attribute9 := NULL;
604     END IF;
605     IF (l_bchv_rec.interface_attribute10 = Okl_Api.G_MISS_CHAR) THEN
606       l_bchv_rec.interface_attribute10 := NULL;
607     END IF;
608     IF (l_bchv_rec.interface_attribute11 = Okl_Api.G_MISS_CHAR) THEN
609       l_bchv_rec.interface_attribute11 := NULL;
610     END IF;
611     IF (l_bchv_rec.interface_attribute12 = Okl_Api.G_MISS_CHAR) THEN
612       l_bchv_rec.interface_attribute12 := NULL;
613     END IF;
614     IF (l_bchv_rec.interface_attribute13 = Okl_Api.G_MISS_CHAR) THEN
615       l_bchv_rec.interface_attribute13 := NULL;
616     END IF;
617     IF (l_bchv_rec.interface_attribute14 = Okl_Api.G_MISS_CHAR) THEN
618       l_bchv_rec.interface_attribute14 := NULL;
619     END IF;
620     IF (l_bchv_rec.interface_attribute15 = Okl_Api.G_MISS_CHAR) THEN
621       l_bchv_rec.interface_attribute15 := NULL;
622     END IF;
623     IF (l_bchv_rec.request_id = Okl_Api.G_MISS_NUM) THEN
624       l_bchv_rec.request_id := NULL;
625     END IF;
626     IF (l_bchv_rec.program_application_id = Okl_Api.G_MISS_NUM) THEN
627       l_bchv_rec.program_application_id := NULL;
628     END IF;
629     IF (l_bchv_rec.program_id = Okl_Api.G_MISS_NUM) THEN
630       l_bchv_rec.program_id := NULL;
631     END IF;
632     IF (l_bchv_rec.program_update_date = Okl_Api.G_MISS_DATE) THEN
633       l_bchv_rec.program_update_date := NULL;
634     END IF;
635     IF (l_bchv_rec.org_id = Okl_Api.G_MISS_NUM) THEN
636       l_bchv_rec.org_id := NULL;
637     END IF;
638     IF (l_bchv_rec.created_by = Okl_Api.G_MISS_NUM) THEN
639       l_bchv_rec.created_by := NULL;
640     END IF;
641     IF (l_bchv_rec.creation_date = Okl_Api.G_MISS_DATE) THEN
642       l_bchv_rec.creation_date := NULL;
643     END IF;
644     IF (l_bchv_rec.last_updated_by = Okl_Api.G_MISS_NUM) THEN
645       l_bchv_rec.last_updated_by := NULL;
646     END IF;
647     IF (l_bchv_rec.last_update_date = Okl_Api.G_MISS_DATE) THEN
648       l_bchv_rec.last_update_date := NULL;
649     END IF;
650     IF (l_bchv_rec.last_update_login = Okl_Api.G_MISS_NUM) THEN
651       l_bchv_rec.last_update_login := NULL;
652     END IF;
653     RETURN(l_bchv_rec);
654   END null_out_defaults;
655 
656   ---------------------------------------------------------------------------
657   -- PROCEDURE Validate_Id
658   -- Post-Generation Change
659   -- By RDRAGUIL on 24-APR-2001
660   ---------------------------------------------------------------------------
661 
662   PROCEDURE Validate_Id (
663     x_return_status OUT NOCOPY VARCHAR2,
664     p_bchv_rec		  IN  bchv_rec_type) IS
665 
666   BEGIN
667 
668     -- initialize return status
669     x_return_status	:= Okl_Api.G_RET_STS_SUCCESS;
670 
671     -- data is required
672     IF p_bchv_rec.id = Okl_Api.G_MISS_NUM
673     OR p_bchv_rec.id IS NULL
674     THEN
675 
676       -- display error message
677       Okl_Api.set_message(
678       	p_app_name		 => G_APP_NAME,
679       	p_msg_name		 => G_REQUIRED_VALUE,
680       	p_token1       => G_COL_NAME_TOKEN,
681       	p_token1_value => 'id');
682 
683       -- notify caller of en error
684       x_return_status := Okl_Api.G_RET_STS_ERROR;
685       -- halt furhter validation of the column
686       RAISE G_EXCEPTION_HALT_VALIDATION;
687 
688     END IF;
689 
690   EXCEPTION
691 
692     WHEN G_EXCEPTION_HALT_VALIDATION THEN
693       -- no processing necessary; continue validation
694       NULL;
695 
696     WHEN OTHERS THEN
697       -- display error message
698       Okl_Api.set_message(
699       	p_app_name        => G_APP_NAME,
700       	p_msg_name        => G_UNEXPECTED_ERROR,
701       	p_token1          => G_SQLCODE_TOKEN,
702       	p_token1_value    => SQLCODE,
703       	p_token2          => G_SQLERRM_TOKEN,
704       	p_token2_value    => SQLERRM);
705       -- notify caller of an unexpected error
706       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
707 
708   END Validate_Id;
709 
710   ---------------------------------------------------------------------------
711   -- PROCEDURE Validate_Object_Version_Number
712   -- Post-Generation Change
713   -- By RDRAGUIL on 24-APR-2001
714   ---------------------------------------------------------------------------
715 
716   PROCEDURE Validate_Object_Version_Number (
717     x_return_status OUT NOCOPY VARCHAR2,
718     p_bchv_rec		  IN  bchv_rec_type) IS
719 
720   BEGIN
721 
722     -- initialize return status
723     x_return_status	:= Okl_Api.G_RET_STS_SUCCESS;
724 
725     -- data is required
726     IF p_bchv_rec.object_version_number = Okl_Api.G_MISS_NUM
727     OR p_bchv_rec.object_version_number IS NULL
728     THEN
729 
730       -- display error message
731       Okl_Api.set_message(
732       	p_app_name		 => G_APP_NAME,
733       	p_msg_name		 => G_REQUIRED_VALUE,
734       	p_token1       => G_COL_NAME_TOKEN,
735       	p_token1_value => 'object_version_number');
736 
737       -- notify caller of en error
738       x_return_status := Okl_Api.G_RET_STS_ERROR;
739       -- halt furhter validation of the column
740       RAISE G_EXCEPTION_HALT_VALIDATION;
741 
742     END IF;
743 
744   EXCEPTION
745 
746     WHEN G_EXCEPTION_HALT_VALIDATION THEN
747       -- no processing necessary; continue validation
748       NULL;
749 
750     WHEN OTHERS THEN
751       -- display error message
752       Okl_Api.set_message(
753       	p_app_name        => G_APP_NAME,
754       	p_msg_name        => G_UNEXPECTED_ERROR,
755       	p_token1          => G_SQLCODE_TOKEN,
756       	p_token1_value    => SQLCODE,
757       	p_token2          => G_SQLERRM_TOKEN,
758       	p_token2_value    => SQLERRM);
759       -- notify caller of an unexpected error
760       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
761 
762   END Validate_Object_Version_Number;
763 
764 
765   ---------------------------------------------------------------------------
766   -- PROCEDURE Validate_Bgh_Id
767   -- Post-Generation Change
771   PROCEDURE Validate_Bgh_Id (
768   -- By RDRAGUIL on 24-APR-2001
769   ---------------------------------------------------------------------------
770 
772     x_return_status OUT NOCOPY VARCHAR2,
773     p_bchv_rec		  IN  bchv_rec_type) IS
774 
775     l_dummy_var             VARCHAR2(1) := '?';
776 
777     CURSOR l_bchv_csr IS
778 		  SELECT 'x'
779 		  FROM   okl_bllng_chrg_hdrs_v
780 		  WHERE  id = p_bchv_rec.bgh_id;
781 
782   BEGIN
783 
784     -- initialize return status
785     x_return_status	:= Okl_Api.G_RET_STS_SUCCESS;
786 
787     -- data is required
788     IF p_bchv_rec.bgh_id = Okl_Api.G_MISS_NUM
789     OR p_bchv_rec.bgh_id IS NULL
790     THEN
791 
792       -- display error message
793       Okl_Api.set_message(
794       	p_app_name		 => G_APP_NAME,
795       	p_msg_name		 => G_REQUIRED_VALUE,
796       	p_token1       => G_COL_NAME_TOKEN,
797       	p_token1_value => 'bgh_id');
798 
799       -- notify caller of en error
800       x_return_status := Okl_Api.G_RET_STS_ERROR;
801       -- halt furhter validation of the column
802       RAISE G_EXCEPTION_HALT_VALIDATION;
803 
804     END IF;
805 
806     -- enforce foreign key
807     OPEN l_bchv_csr;
808       FETCH l_bchv_csr INTO l_dummy_var;
809     CLOSE l_bchv_csr;
810 
811     -- if dummy value is still set to default, data was not found
812     IF (l_dummy_var = '?') THEN
813 
814       -- display error message
815       Okl_Api.set_message(
816       	p_app_name		 => G_APP_NAME,
817       	p_msg_name		 => G_NO_PARENT_RECORD,
818       	p_token1       => G_COL_NAME_TOKEN,
819       	p_token1_value => 'bgh_id',
820       	p_token2       => G_CHILD_TABLE_TOKEN,
821       	p_token2_value => 'OKL_BILLING_CHARGES_V',
822       	p_token3       => G_PARENT_TABLE_TOKEN,
823       	p_token3_value => 'OKL_BLLNG_CHRG_HDRS_V');
824 
825       -- notify caller of en error
826       x_return_status := Okl_Api.G_RET_STS_ERROR;
827 
828     END IF;
829 
830   EXCEPTION
831 
832     WHEN G_EXCEPTION_HALT_VALIDATION THEN
833       -- no processing necessary; continue validation
834       NULL;
835 
836     WHEN OTHERS THEN
837       -- display error message
838       Okl_Api.set_message(
839       	p_app_name        => G_APP_NAME,
840       	p_msg_name        => G_UNEXPECTED_ERROR,
841       	p_token1          => G_SQLCODE_TOKEN,
842       	p_token1_value    => SQLCODE,
843       	p_token2          => G_SQLERRM_TOKEN,
844       	p_token2_value    => SQLERRM);
845       -- notify caller of an unexpected error
846       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
847       -- verify the cursor is closed
848       IF l_bchv_csr%ISOPEN THEN
849          CLOSE l_bchv_csr;
850       END IF;
851 
852   END Validate_Bgh_Id;
853 
854   ---------------------------------------------------------------------------
855   -- PROCEDURE Validate_Sequence_Number
856   -- Post-Generation Change
857   -- By RDRAGUIL on 24-APR-2001
858   ---------------------------------------------------------------------------
859 
860   PROCEDURE Validate_Sequence_Number (
861     x_return_status OUT NOCOPY VARCHAR2,
862     p_bchv_rec		  IN  bchv_rec_type) IS
863 
864   BEGIN
865 
866     -- initialize return status
867     x_return_status	:= Okl_Api.G_RET_STS_SUCCESS;
868 
869     -- data is required
870     IF p_bchv_rec.sequence_number = Okl_Api.G_MISS_NUM
871     OR p_bchv_rec.sequence_number IS NULL
872     THEN
873 
874       -- display error message
875       Okl_Api.set_message(
876       	p_app_name		 => G_APP_NAME,
877       	p_msg_name		 => G_REQUIRED_VALUE,
878       	p_token1       => G_COL_NAME_TOKEN,
879       	p_token1_value => 'sequence_number');
880 
881       -- notify caller of en error
882       x_return_status := Okl_Api.G_RET_STS_ERROR;
883       -- halt furhter validation of the column
884       RAISE G_EXCEPTION_HALT_VALIDATION;
885 
886     END IF;
887 
888   EXCEPTION
889 
890     WHEN G_EXCEPTION_HALT_VALIDATION THEN
891       -- no processing necessary; continue validation
892       NULL;
893 
894     WHEN OTHERS THEN
895       -- display error message
896       Okl_Api.set_message(
897       	p_app_name        => G_APP_NAME,
898       	p_msg_name        => G_UNEXPECTED_ERROR,
899       	p_token1          => G_SQLCODE_TOKEN,
900       	p_token1_value    => SQLCODE,
901       	p_token2          => G_SQLERRM_TOKEN,
902       	p_token2_value    => SQLERRM);
903       -- notify caller of an unexpected error
904       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
905 
906   END Validate_Sequence_Number;
907 
908   ---------------------------------------------------------------------------
909   -- PROCEDURE Validate_Org_Id
910   -- Post-Generation Change
911   -- By RDRAGUIL on 24-APR-2001
912   ---------------------------------------------------------------------------
913 
914   PROCEDURE Validate_Org_Id (
915     x_return_status OUT NOCOPY VARCHAR2,
916     p_bchv_rec		  IN  bchv_rec_type) IS
917 
918   BEGIN
919 
920     -- initialize return status
921     x_return_status	:= Okl_Api.G_RET_STS_SUCCESS;
922 
923     -- check value
924     --IF  p_bchv_rec.org_id <> OKL_API.G_MISS_NUM
925     --AND p_bchv_rec.org_id IS NOT NULL
926     --THEN
927       x_return_status := Okl_Util.check_org_id (p_bchv_rec.org_id);
928     --END IF;
929 
930   EXCEPTION
931 
932     WHEN OTHERS THEN
933       -- display error message
934       Okl_Api.set_message(
935       	p_app_name        => G_APP_NAME,
936       	p_msg_name        => G_UNEXPECTED_ERROR,
937       	p_token1          => G_SQLCODE_TOKEN,
938       	p_token1_value    => SQLCODE,
939       	p_token2          => G_SQLERRM_TOKEN,
940       	p_token2_value    => SQLERRM);
941       -- notify caller of an unexpected error
942       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
943 
944   END Validate_Org_Id;
945 
946   ---------------------------------------------------------------------------
947   -- PROCEDURE Is_Unique
948   -- Post-Generation Change
949   -- By RDRAGUIL on 24-APR-2001
950   ---------------------------------------------------------------------------
951   FUNCTION Is_Unique (
952     p_bchv_rec IN bchv_rec_type
953   ) RETURN VARCHAR2 IS
954 
955     CURSOR l_bchv_csr IS
956 		  SELECT 'x'
957 		  FROM   okl_billing_charges_v
958 		  WHERE  bgh_id          = p_bchv_rec.bgh_id
959 		  AND    sequence_number = p_bchv_rec.sequence_number
960 		  AND    id              <> NVL (p_bchv_rec.id, -99999);
961 
962     l_return_status     VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
963     l_dummy             VARCHAR2(1);
964     l_found             BOOLEAN;
965 
966   BEGIN
967 
968     -- check for unique BGH_ID + SEQUENCE_NUMBER
969     OPEN     l_bchv_csr;
970     FETCH    l_bchv_csr INTO l_dummy;
971 	  l_found  := l_bchv_csr%FOUND;
972 	  CLOSE    l_bchv_csr;
973 
974     IF (l_found) THEN
975 
976       -- display error message
977       Okl_Api.set_message(
978       	p_app_name        => G_APP_NAME,
979       	p_msg_name        => G_NOT_SAME,
980       	p_token1          => 'BGH_ID',
981       	p_token1_value    => p_bchv_rec.bgh_id,
982       	p_token2          => 'SEQUENCE_NUMBER',
983       	p_token2_value    => p_bchv_rec.sequence_number);
984 
985       -- notify caller of an error
986       l_return_status := Okl_Api.G_RET_STS_ERROR;
987 
988     END IF;
989 
990     -- return status to the caller
991     RETURN l_return_status;
992 
993   EXCEPTION
994 
995     WHEN OTHERS THEN
996       -- display error message
997       Okl_Api.set_message(
998       	p_app_name        => G_APP_NAME,
999       	p_msg_name        => G_UNEXPECTED_ERROR,
1000       	p_token1          => G_SQLCODE_TOKEN,
1001       	p_token1_value    => SQLCODE,
1002       	p_token2          => G_SQLERRM_TOKEN,
1003       	p_token2_value    => SQLERRM);
1004       -- notify caller of an unexpected error
1005       l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1006       -- verify the cursor is closed
1007       IF l_bchv_csr%ISOPEN THEN
1008          CLOSE l_bchv_csr;
1009       END IF;
1010       -- return status to the caller
1011       RETURN l_return_status;
1012 
1013   END Is_Unique;
1014 
1015   ---------------------------------------------------------------------------
1016   -- PROCEDURE Validate_Attributes
1017   -- Post-Generation Change
1018   -- By RDRAGUIL on 24-APR-2001
1019   ---------------------------------------------------------------------------
1020   ---------------------------------------------------
1021   -- Validate_Attributes for:OKL_BILLING_CHARGES_V --
1022   ---------------------------------------------------
1023   FUNCTION Validate_Attributes (
1024     p_bchv_rec IN  bchv_rec_type
1025   ) RETURN VARCHAR2 IS
1026 
1027     x_return_status	VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1028     l_return_status	VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1029 
1030   BEGIN
1031 
1032     -- call each column-level validation
1033 
1034     validate_id (
1035       x_return_status => l_return_status,
1036       p_bchv_rec      => p_bchv_rec);
1037 
1038     IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
1039        IF (x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1040           x_return_status := l_return_status;
1041        END IF;
1042     END IF;
1043 
1044     validate_object_version_number (
1045       x_return_status => l_return_status,
1046       p_bchv_rec      => p_bchv_rec);
1047 
1048     IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
1049        IF (x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1050           x_return_status := l_return_status;
1051        END IF;
1052     END IF;
1053 
1054     validate_bgh_id (
1055       x_return_status => l_return_status,
1056       p_bchv_rec      => p_bchv_rec);
1057 
1058     IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
1059        IF (x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1060           x_return_status := l_return_status;
1061        END IF;
1062     END IF;
1063 
1064     validate_sequence_number (
1065       x_return_status => l_return_status,
1066       p_bchv_rec      => p_bchv_rec);
1067 
1068     IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
1069        IF (x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1070           x_return_status := l_return_status;
1071        END IF;
1072     END IF;
1073 
1074     validate_org_id (
1075       x_return_status => l_return_status,
1076       p_bchv_rec      => p_bchv_rec);
1077 
1078     IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
1079        IF (x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1080           x_return_status := l_return_status;
1081        END IF;
1082     END IF;
1083 
1084     RETURN x_return_status;
1085 
1086   EXCEPTION
1087 
1088     WHEN OTHERS THEN
1089       -- display error message
1090       Okl_Api.set_message(
1091       	p_app_name        => G_APP_NAME,
1092       	p_msg_name        => G_UNEXPECTED_ERROR,
1093       	p_token1          => G_SQLCODE_TOKEN,
1094       	p_token1_value    => SQLCODE,
1095       	p_token2          => G_SQLERRM_TOKEN,
1096       	p_token2_value    => SQLERRM);
1097       -- notify caller of an unexpected error
1098       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1099       -- return status to the caller
1100       RETURN x_return_status;
1101 
1102   END Validate_Attributes;
1103 
1104   ---------------------------------------------------------------------------
1105   -- PROCEDURE Validate_Record
1106   -- Post-Generation Change
1107   -- By RDRAGUIL on 24-APR-2001
1108   ---------------------------------------------------------------------------
1109   -----------------------------------------------
1110   -- Validate_Record for:OKL_BILLING_CHARGES_V --
1111   -----------------------------------------------
1112   FUNCTION Validate_Record (
1113     p_bchv_rec IN bchv_rec_type
1114   ) RETURN VARCHAR2 IS
1115     l_return_status VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1116     x_return_status	VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1117   BEGIN
1118 
1119     -- call each record-level validation
1120     l_return_status := is_unique (p_bchv_rec);
1121 
1122     IF (l_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
1123        IF (x_return_status <> Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1124           x_return_status := l_return_status;
1125        END IF;
1126     END IF;
1127 
1128     RETURN x_return_status;
1129 
1130   EXCEPTION
1131 
1132     WHEN OTHERS THEN
1133       -- display error message
1134       Okl_Api.set_message(
1135       	p_app_name        => G_APP_NAME,
1136       	p_msg_name        => G_UNEXPECTED_ERROR,
1137       	p_token1          => G_SQLCODE_TOKEN,
1138       	p_token1_value    => SQLCODE,
1139       	p_token2          => G_SQLERRM_TOKEN,
1140       	p_token2_value    => SQLERRM);
1141       -- notify caller of an unexpected error
1142       x_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
1146   END Validate_Record;
1143       -- return status to the caller
1144       RETURN x_return_status;
1145 
1147 
1148   ---------------------------------------------------------------------------
1149   -- PROCEDURE Migrate
1150   ---------------------------------------------------------------------------
1151   PROCEDURE migrate (
1152     p_from	IN bchv_rec_type,
1153     p_to	IN OUT NOCOPY bch_rec_type
1154   ) IS
1155   BEGIN
1156     p_to.id := p_from.id;
1157     p_to.sequence_number := p_from.sequence_number;
1158     p_to.bgh_id := p_from.bgh_id;
1159     p_to.object_version_number := p_from.object_version_number;
1160     p_to.contract_id := p_from.contract_id;
1161     p_to.asset_id := p_from.asset_id;
1162     p_to.charge_date := p_from.charge_date;
1163     p_to.amount := p_from.amount;
1164     p_to.currency_code := p_from.currency_code;
1165     p_to.customer_id := p_from.customer_id;
1166     p_to.customer_ref := p_from.customer_ref;
1167     p_to.customer_address_id := p_from.customer_address_id;
1168     p_to.customer_address_ref := p_from.customer_address_ref;
1169     p_to.request_id := p_from.request_id;
1170     p_to.program_application_id := p_from.program_application_id;
1171     p_to.program_id := p_from.program_id;
1172     p_to.program_update_date := p_from.program_update_date;
1173     p_to.org_id := p_from.org_id;
1174     p_to.sty_id := p_from.sty_id;
1175     p_to.sty_name := p_from.sty_name;
1176     p_to.attribute_category := p_from.attribute_category;
1177     p_to.attribute1 := p_from.attribute1;
1178     p_to.attribute2 := p_from.attribute2;
1179     p_to.attribute3 := p_from.attribute3;
1180     p_to.attribute4 := p_from.attribute4;
1181     p_to.attribute5 := p_from.attribute5;
1182     p_to.attribute6 := p_from.attribute6;
1183     p_to.attribute7 := p_from.attribute7;
1184     p_to.attribute8 := p_from.attribute8;
1185     p_to.attribute9 := p_from.attribute9;
1186     p_to.attribute10 := p_from.attribute10;
1187     p_to.attribute11 := p_from.attribute11;
1188     p_to.attribute12 := p_from.attribute12;
1189     p_to.attribute13 := p_from.attribute13;
1190     p_to.attribute14 := p_from.attribute14;
1191     p_to.attribute15 := p_from.attribute15;
1192     p_to.interface_attribute1 := p_from.interface_attribute1;
1193     p_to.interface_attribute2 := p_from.interface_attribute2;
1194     p_to.interface_attribute3 := p_from.interface_attribute3;
1195     p_to.interface_attribute4 := p_from.interface_attribute4;
1196     p_to.interface_attribute5 := p_from.interface_attribute5;
1197     p_to.interface_attribute6 := p_from.interface_attribute6;
1198     p_to.interface_attribute7 := p_from.interface_attribute7;
1199     p_to.interface_attribute8 := p_from.interface_attribute8;
1200     p_to.interface_attribute9 := p_from.interface_attribute9;
1201     p_to.interface_attribute10 := p_from.interface_attribute10;
1202     p_to.interface_attribute11 := p_from.interface_attribute11;
1203     p_to.interface_attribute12 := p_from.interface_attribute12;
1204     p_to.interface_attribute13 := p_from.interface_attribute13;
1205     p_to.interface_attribute14 := p_from.interface_attribute14;
1206     p_to.interface_attribute15 := p_from.interface_attribute15;
1207     p_to.created_by := p_from.created_by;
1208     p_to.creation_date := p_from.creation_date;
1209     p_to.last_updated_by := p_from.last_updated_by;
1210     p_to.last_update_date := p_from.last_update_date;
1211     p_to.last_update_login := p_from.last_update_login;
1212   END migrate;
1213   PROCEDURE migrate (
1214     p_from	IN bch_rec_type,
1215     p_to	IN OUT NOCOPY bchv_rec_type
1216   ) IS
1217   BEGIN
1218     p_to.id := p_from.id;
1219     p_to.sequence_number := p_from.sequence_number;
1220     p_to.bgh_id := p_from.bgh_id;
1221     p_to.object_version_number := p_from.object_version_number;
1222     p_to.contract_id := p_from.contract_id;
1223     p_to.asset_id := p_from.asset_id;
1224     p_to.charge_date := p_from.charge_date;
1225     p_to.amount := p_from.amount;
1226     p_to.currency_code := p_from.currency_code;
1227     p_to.customer_id := p_from.customer_id;
1228     p_to.customer_ref := p_from.customer_ref;
1229     p_to.customer_address_id := p_from.customer_address_id;
1230     p_to.customer_address_ref := p_from.customer_address_ref;
1231     p_to.request_id := p_from.request_id;
1232     p_to.program_application_id := p_from.program_application_id;
1233     p_to.program_id := p_from.program_id;
1234     p_to.program_update_date := p_from.program_update_date;
1235     p_to.org_id := p_from.org_id;
1236     p_to.sty_id := p_from.sty_id;
1237     p_to.sty_name := p_from.sty_name;
1238     p_to.attribute_category := p_from.attribute_category;
1239     p_to.attribute1 := p_from.attribute1;
1240     p_to.attribute2 := p_from.attribute2;
1241     p_to.attribute3 := p_from.attribute3;
1242     p_to.attribute4 := p_from.attribute4;
1243     p_to.attribute5 := p_from.attribute5;
1244     p_to.attribute6 := p_from.attribute6;
1245     p_to.attribute7 := p_from.attribute7;
1246     p_to.attribute8 := p_from.attribute8;
1247     p_to.attribute9 := p_from.attribute9;
1248     p_to.attribute10 := p_from.attribute10;
1249     p_to.attribute11 := p_from.attribute11;
1250     p_to.attribute12 := p_from.attribute12;
1251     p_to.attribute13 := p_from.attribute13;
1252     p_to.attribute14 := p_from.attribute14;
1253     p_to.attribute15 := p_from.attribute15;
1254     p_to.interface_attribute1 := p_from.interface_attribute1;
1255     p_to.interface_attribute2 := p_from.interface_attribute2;
1259     p_to.interface_attribute6 := p_from.interface_attribute6;
1256     p_to.interface_attribute3 := p_from.interface_attribute3;
1257     p_to.interface_attribute4 := p_from.interface_attribute4;
1258     p_to.interface_attribute5 := p_from.interface_attribute5;
1260     p_to.interface_attribute7 := p_from.interface_attribute7;
1261     p_to.interface_attribute8 := p_from.interface_attribute8;
1262     p_to.interface_attribute9 := p_from.interface_attribute9;
1263     p_to.interface_attribute10 := p_from.interface_attribute10;
1264     p_to.interface_attribute11 := p_from.interface_attribute11;
1265     p_to.interface_attribute12 := p_from.interface_attribute12;
1266     p_to.interface_attribute13 := p_from.interface_attribute13;
1267     p_to.interface_attribute14 := p_from.interface_attribute14;
1268     p_to.interface_attribute15 := p_from.interface_attribute15;
1269     p_to.created_by := p_from.created_by;
1270     p_to.creation_date := p_from.creation_date;
1271     p_to.last_updated_by := p_from.last_updated_by;
1272     p_to.last_update_date := p_from.last_update_date;
1273     p_to.last_update_login := p_from.last_update_login;
1274   END migrate;
1275   PROCEDURE migrate (
1276     p_from	IN bchv_rec_type,
1277     p_to	IN OUT NOCOPY OklBillingChargesTlRecType
1278   ) IS
1279   BEGIN
1280     p_to.id := p_from.id;
1281     p_to.sfwt_flag := p_from.sfwt_flag;
1282     p_to.charge_type := p_from.charge_type;
1283     p_to.description := p_from.description;
1284     p_to.created_by := p_from.created_by;
1285     p_to.creation_date := p_from.creation_date;
1286     p_to.last_updated_by := p_from.last_updated_by;
1287     p_to.last_update_date := p_from.last_update_date;
1288     p_to.last_update_login := p_from.last_update_login;
1289   END migrate;
1290   PROCEDURE migrate (
1291     p_from	IN OklBillingChargesTlRecType,
1292     p_to	IN OUT NOCOPY bchv_rec_type
1293   ) IS
1294   BEGIN
1295     p_to.id := p_from.id;
1296     p_to.sfwt_flag := p_from.sfwt_flag;
1297     p_to.charge_type := p_from.charge_type;
1298     p_to.description := p_from.description;
1299     p_to.created_by := p_from.created_by;
1300     p_to.creation_date := p_from.creation_date;
1301     p_to.last_updated_by := p_from.last_updated_by;
1302     p_to.last_update_date := p_from.last_update_date;
1303     p_to.last_update_login := p_from.last_update_login;
1304   END migrate;
1305 
1306   ---------------------------------------------------------------------------
1307   -- PROCEDURE validate_row
1308   ---------------------------------------------------------------------------
1309   --------------------------------------------
1310   -- validate_row for:OKL_BILLING_CHARGES_V --
1311   --------------------------------------------
1312   PROCEDURE validate_row(
1313     p_api_version                  IN NUMBER,
1314     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1315     x_return_status                OUT NOCOPY VARCHAR2,
1316     x_msg_count                    OUT NOCOPY NUMBER,
1317     x_msg_data                     OUT NOCOPY VARCHAR2,
1318     p_bchv_rec                     IN bchv_rec_type) IS
1319 
1320     l_api_version                 CONSTANT NUMBER := 1;
1321     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1322     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1323     l_bchv_rec                     bchv_rec_type := p_bchv_rec;
1324     l_bch_rec                      bch_rec_type;
1325     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType;
1326   BEGIN
1327     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1328                                               G_PKG_NAME,
1329                                               p_init_msg_list,
1330                                               l_api_version,
1331                                               p_api_version,
1332                                               '_PVT',
1333                                               x_return_status);
1334     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1335       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1336     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1337       RAISE Okl_Api.G_EXCEPTION_ERROR;
1338     END IF;
1339     --- Validate all non-missing attributes (Item Level Validation)
1340     l_return_status := Validate_Attributes(l_bchv_rec);
1341     --- If any errors happen abort API
1342     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1343       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1344     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1345       RAISE Okl_Api.G_EXCEPTION_ERROR;
1346     END IF;
1347     l_return_status := Validate_Record(l_bchv_rec);
1348     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1349       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1350     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1351       RAISE Okl_Api.G_EXCEPTION_ERROR;
1352     END IF;
1353     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1354   EXCEPTION
1355     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1356       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1357       (
1358         l_api_name,
1359         G_PKG_NAME,
1360         'OKL_API.G_RET_STS_ERROR',
1361         x_msg_count,
1362         x_msg_data,
1363         '_PVT'
1364       );
1365     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1366       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1367       (
1368         l_api_name,
1369         G_PKG_NAME,
1370         'OKL_API.G_RET_STS_UNEXP_ERROR',
1371         x_msg_count,
1372         x_msg_data,
1373         '_PVT'
1374       );
1375     WHEN OTHERS THEN
1376       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1377       (
1378         l_api_name,
1379         G_PKG_NAME,
1380         'OTHERS',
1381         x_msg_count,
1382         x_msg_data,
1383         '_PVT'
1384       );
1385   END validate_row;
1386   ------------------------------------------
1387   -- PL/SQL TBL validate_row for:BCHV_TBL --
1388   ------------------------------------------
1389   PROCEDURE validate_row(
1390     p_api_version                  IN NUMBER,
1391     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1392     x_return_status                OUT NOCOPY VARCHAR2,
1393     x_msg_count                    OUT NOCOPY NUMBER,
1394     x_msg_data                     OUT NOCOPY VARCHAR2,
1395     p_bchv_tbl                     IN bchv_tbl_type) IS
1396 
1397     l_api_version                 CONSTANT NUMBER := 1;
1398     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
1399     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1400     i                              NUMBER := 0;
1401     -- Begin Post-Generation Change
1402     -- overall error status
1403     l_overall_status               VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1404     -- End Post-Generation Change
1405 
1406   BEGIN
1407     Okl_Api.init_msg_list(p_init_msg_list);
1408     -- Make sure PL/SQL table has records in it before passing
1409     IF (p_bchv_tbl.COUNT > 0) THEN
1410       i := p_bchv_tbl.FIRST;
1411       LOOP
1412         validate_row (
1413           p_api_version                  => p_api_version,
1414           p_init_msg_list                => Okc_Api.G_FALSE,
1415           x_return_status                => x_return_status,
1416           x_msg_count                    => x_msg_count,
1417           x_msg_data                     => x_msg_data,
1418           p_bchv_rec                     => p_bchv_tbl(i));
1419         -- Begin Post-Generation Change
1420         -- store the highest degree of error
1421         IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
1422            IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
1423               l_overall_status := x_return_status;
1424            END IF;
1425         END IF;
1426         -- End Post-Generation Change
1427         EXIT WHEN (i = p_bchv_tbl.LAST);
1428         i := p_bchv_tbl.NEXT(i);
1429       END LOOP;
1430       -- Begin Post-Generation Change
1431       -- return overall status
1432       x_return_status := l_overall_status;
1433       -- End Post-Generation Change
1434     END IF;
1435   EXCEPTION
1436     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1437       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1438       (
1439         l_api_name,
1440         G_PKG_NAME,
1441         'OKL_API.G_RET_STS_ERROR',
1442         x_msg_count,
1443         x_msg_data,
1444         '_PVT'
1445       );
1446     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1447       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1448       (
1449         l_api_name,
1450         G_PKG_NAME,
1451         'OKL_API.G_RET_STS_UNEXP_ERROR',
1452         x_msg_count,
1453         x_msg_data,
1454         '_PVT'
1455       );
1456     WHEN OTHERS THEN
1457       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1458       (
1459         l_api_name,
1460         G_PKG_NAME,
1461         'OTHERS',
1462         x_msg_count,
1463         x_msg_data,
1464         '_PVT'
1465       );
1466   END validate_row;
1467 
1468   ---------------------------------------------------------------------------
1469   -- PROCEDURE insert_row
1470   ---------------------------------------------------------------------------
1471   ------------------------------------------
1472   -- insert_row for:OKL_BILLING_CHARGES_B --
1473   ------------------------------------------
1474   PROCEDURE insert_row(
1475     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1476     x_return_status                OUT NOCOPY VARCHAR2,
1477     x_msg_count                    OUT NOCOPY NUMBER,
1478     x_msg_data                     OUT NOCOPY VARCHAR2,
1479     p_bch_rec                      IN bch_rec_type,
1480     x_bch_rec                      OUT NOCOPY bch_rec_type) IS
1481 
1482     l_api_version                 CONSTANT NUMBER := 1;
1483     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1484     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1485     l_bch_rec                      bch_rec_type := p_bch_rec;
1486     l_def_bch_rec                  bch_rec_type;
1487     ----------------------------------------------
1488     -- Set_Attributes for:OKL_BILLING_CHARGES_B --
1489     ----------------------------------------------
1490     FUNCTION Set_Attributes (
1491       p_bch_rec IN  bch_rec_type,
1492       x_bch_rec OUT NOCOPY bch_rec_type
1493     ) RETURN VARCHAR2 IS
1494       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1498     END Set_Attributes;
1495     BEGIN
1496       x_bch_rec := p_bch_rec;
1497       RETURN(l_return_status);
1499   BEGIN
1500     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1501                                               p_init_msg_list,
1502                                               '_PVT',
1503                                               x_return_status);
1504     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1505       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1506     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1507       RAISE Okl_Api.G_EXCEPTION_ERROR;
1508     END IF;
1509     --- Setting item attributes
1510     l_return_status := Set_Attributes(
1511       p_bch_rec,                         -- IN
1512       l_bch_rec);                        -- OUT
1513     --- If any errors happen abort API
1514     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1515       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1516     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1517       RAISE Okl_Api.G_EXCEPTION_ERROR;
1518     END IF;
1519     INSERT INTO OKL_BILLING_CHARGES_B(
1520         id,
1521         sequence_number,
1522         bgh_id,
1523         object_version_number,
1524         contract_id,
1525         asset_id,
1526         charge_date,
1527         amount,
1528         currency_code,
1529         customer_id,
1530         customer_ref,
1531         customer_address_id,
1532         customer_address_ref,
1533         request_id,
1534         program_application_id,
1535         program_id,
1536         program_update_date,
1537         org_id,
1538         sty_id,
1539         sty_name,
1540         attribute_category,
1541         attribute1,
1542         attribute2,
1543         attribute3,
1544         attribute4,
1545         attribute5,
1546         attribute6,
1547         attribute7,
1548         attribute8,
1549         attribute9,
1550         attribute10,
1551         attribute11,
1552         attribute12,
1553         attribute13,
1554         attribute14,
1555         attribute15,
1556         interface_attribute1,
1557         interface_attribute2,
1558         interface_attribute3,
1559         interface_attribute4,
1560         interface_attribute5,
1561         interface_attribute6,
1562         interface_attribute7,
1563         interface_attribute8,
1564         interface_attribute9,
1565         interface_attribute10,
1566         interface_attribute11,
1567         interface_attribute12,
1568         interface_attribute13,
1569         interface_attribute14,
1570         interface_attribute15,
1571         created_by,
1572         creation_date,
1573         last_updated_by,
1574         last_update_date,
1575         last_update_login)
1576       VALUES (
1577         l_bch_rec.id,
1578         l_bch_rec.sequence_number,
1579         l_bch_rec.bgh_id,
1580         l_bch_rec.object_version_number,
1581         l_bch_rec.contract_id,
1582         l_bch_rec.asset_id,
1583         l_bch_rec.charge_date,
1584         l_bch_rec.amount,
1585         l_bch_rec.currency_code,
1586         l_bch_rec.customer_id,
1587         l_bch_rec.customer_ref,
1588         l_bch_rec.customer_address_id,
1589         l_bch_rec.customer_address_ref,
1590         l_bch_rec.request_id,
1591         l_bch_rec.program_application_id,
1592         l_bch_rec.program_id,
1593         l_bch_rec.program_update_date,
1594         l_bch_rec.org_id,
1595         l_bch_rec.sty_id,
1596         l_bch_rec.sty_name,
1597         l_bch_rec.attribute_category,
1598         l_bch_rec.attribute1,
1599         l_bch_rec.attribute2,
1600         l_bch_rec.attribute3,
1601         l_bch_rec.attribute4,
1602         l_bch_rec.attribute5,
1603         l_bch_rec.attribute6,
1604         l_bch_rec.attribute7,
1605         l_bch_rec.attribute8,
1606         l_bch_rec.attribute9,
1607         l_bch_rec.attribute10,
1608         l_bch_rec.attribute11,
1609         l_bch_rec.attribute12,
1610         l_bch_rec.attribute13,
1611         l_bch_rec.attribute14,
1612         l_bch_rec.attribute15,
1613         l_bch_rec.interface_attribute1,
1614         l_bch_rec.interface_attribute2,
1615         l_bch_rec.interface_attribute3,
1616         l_bch_rec.interface_attribute4,
1617         l_bch_rec.interface_attribute5,
1618         l_bch_rec.interface_attribute6,
1619         l_bch_rec.interface_attribute7,
1620         l_bch_rec.interface_attribute8,
1621         l_bch_rec.interface_attribute9,
1622         l_bch_rec.interface_attribute10,
1623         l_bch_rec.interface_attribute11,
1624         l_bch_rec.interface_attribute12,
1625         l_bch_rec.interface_attribute13,
1626         l_bch_rec.interface_attribute14,
1627         l_bch_rec.interface_attribute15,
1628         l_bch_rec.created_by,
1629         l_bch_rec.creation_date,
1630         l_bch_rec.last_updated_by,
1631         l_bch_rec.last_update_date,
1632         l_bch_rec.last_update_login);
1633     -- Set OUT values
1634     x_bch_rec := l_bch_rec;
1635     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1636   EXCEPTION
1637     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1638       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1639       (
1643         x_msg_count,
1640         l_api_name,
1641         G_PKG_NAME,
1642         'OKL_API.G_RET_STS_ERROR',
1644         x_msg_data,
1645         '_PVT'
1646       );
1647     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1648       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1649       (
1650         l_api_name,
1651         G_PKG_NAME,
1652         'OKL_API.G_RET_STS_UNEXP_ERROR',
1653         x_msg_count,
1654         x_msg_data,
1655         '_PVT'
1656       );
1657     WHEN OTHERS THEN
1658       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1659       (
1660         l_api_name,
1661         G_PKG_NAME,
1662         'OTHERS',
1663         x_msg_count,
1664         x_msg_data,
1665         '_PVT'
1666       );
1667   END insert_row;
1668   -------------------------------------------
1669   -- insert_row for:OKL_BILLING_CHARGES_TL --
1670   -------------------------------------------
1671   PROCEDURE insert_row(
1672     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1673     x_return_status                OUT NOCOPY VARCHAR2,
1674     x_msg_count                    OUT NOCOPY NUMBER,
1675     x_msg_data                     OUT NOCOPY VARCHAR2,
1676     p_okl_billing_charges_tl_rec   IN OklBillingChargesTlRecType,
1677     x_okl_billing_charges_tl_rec   OUT NOCOPY OklBillingChargesTlRecType) IS
1678 
1679     l_api_version                 CONSTANT NUMBER := 1;
1680     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
1681     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1682     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType := p_okl_billing_charges_tl_rec;
1683     ldefoklbillingchargestlrec     OklBillingChargesTlRecType;
1684     CURSOR get_languages IS
1685       SELECT *
1686         FROM FND_LANGUAGES
1687        WHERE INSTALLED_FLAG IN ('I', 'B');
1688     -----------------------------------------------
1689     -- Set_Attributes for:OKL_BILLING_CHARGES_TL --
1690     -----------------------------------------------
1691     FUNCTION Set_Attributes (
1692       p_okl_billing_charges_tl_rec IN  OklBillingChargesTlRecType,
1693       x_okl_billing_charges_tl_rec OUT NOCOPY OklBillingChargesTlRecType
1694     ) RETURN VARCHAR2 IS
1695       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1696     BEGIN
1697       x_okl_billing_charges_tl_rec := p_okl_billing_charges_tl_rec;
1698       x_okl_billing_charges_tl_rec.LANGUAGE := USERENV('LANG');
1699       x_okl_billing_charges_tl_rec.SOURCE_LANG := USERENV('LANG');
1700       RETURN(l_return_status);
1701     END Set_Attributes;
1702   BEGIN
1703     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1704                                               p_init_msg_list,
1705                                               '_PVT',
1706                                               x_return_status);
1707     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1708       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1709     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1710       RAISE Okl_Api.G_EXCEPTION_ERROR;
1711     END IF;
1712     --- Setting item attributes
1713     l_return_status := Set_Attributes(
1714       p_okl_billing_charges_tl_rec,      -- IN
1715       l_okl_billing_charges_tl_rec);     -- OUT
1716     --- If any errors happen abort API
1717     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1718       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1719     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1720       RAISE Okl_Api.G_EXCEPTION_ERROR;
1721     END IF;
1722     FOR l_lang_rec IN get_languages LOOP
1723       l_okl_billing_charges_tl_rec.LANGUAGE := l_lang_rec.language_code;
1724       INSERT INTO OKL_BILLING_CHARGES_TL(
1725           id,
1726           LANGUAGE,
1727           source_lang,
1728           sfwt_flag,
1729           charge_type,
1730           description,
1731           created_by,
1732           creation_date,
1733           last_updated_by,
1734           last_update_date,
1735           last_update_login)
1736         VALUES (
1737           l_okl_billing_charges_tl_rec.id,
1738           l_okl_billing_charges_tl_rec.LANGUAGE,
1739           l_okl_billing_charges_tl_rec.source_lang,
1740           l_okl_billing_charges_tl_rec.sfwt_flag,
1741           l_okl_billing_charges_tl_rec.charge_type,
1742           l_okl_billing_charges_tl_rec.description,
1743           l_okl_billing_charges_tl_rec.created_by,
1744           l_okl_billing_charges_tl_rec.creation_date,
1745           l_okl_billing_charges_tl_rec.last_updated_by,
1746           l_okl_billing_charges_tl_rec.last_update_date,
1747           l_okl_billing_charges_tl_rec.last_update_login);
1748     END LOOP;
1749     -- Set OUT values
1750     x_okl_billing_charges_tl_rec := l_okl_billing_charges_tl_rec;
1751     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1752   EXCEPTION
1753     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1754       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1755       (
1756         l_api_name,
1757         G_PKG_NAME,
1758         'OKL_API.G_RET_STS_ERROR',
1759         x_msg_count,
1760         x_msg_data,
1761         '_PVT'
1762       );
1763     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1764       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1765       (
1766         l_api_name,
1770         x_msg_data,
1767         G_PKG_NAME,
1768         'OKL_API.G_RET_STS_UNEXP_ERROR',
1769         x_msg_count,
1771         '_PVT'
1772       );
1773     WHEN OTHERS THEN
1774       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1775       (
1776         l_api_name,
1777         G_PKG_NAME,
1778         'OTHERS',
1779         x_msg_count,
1780         x_msg_data,
1781         '_PVT'
1782       );
1783   END insert_row;
1784   ------------------------------------------
1785   -- insert_row for:OKL_BILLING_CHARGES_V --
1786   ------------------------------------------
1787   PROCEDURE insert_row(
1788     p_api_version                  IN NUMBER,
1789     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1790     x_return_status                OUT NOCOPY VARCHAR2,
1791     x_msg_count                    OUT NOCOPY NUMBER,
1792     x_msg_data                     OUT NOCOPY VARCHAR2,
1793     p_bchv_rec                     IN bchv_rec_type,
1794     x_bchv_rec                     OUT NOCOPY bchv_rec_type) IS
1795 
1796     l_api_version                 CONSTANT NUMBER := 1;
1797     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1798     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1799     l_bchv_rec                     bchv_rec_type;
1800     l_def_bchv_rec                 bchv_rec_type;
1801     l_bch_rec                      bch_rec_type;
1802     lx_bch_rec                     bch_rec_type;
1803     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType;
1804     lx_okl_billing_charges_tl_rec  OklBillingChargesTlRecType;
1805     -------------------------------
1806     -- FUNCTION fill_who_columns --
1807     -------------------------------
1808     FUNCTION fill_who_columns (
1809       p_bchv_rec	IN bchv_rec_type
1810     ) RETURN bchv_rec_type IS
1811       l_bchv_rec	bchv_rec_type := p_bchv_rec;
1812     BEGIN
1813       l_bchv_rec.CREATION_DATE := SYSDATE;
1814       l_bchv_rec.CREATED_BY := Fnd_Global.USER_ID;
1815       l_bchv_rec.LAST_UPDATE_DATE := l_bchv_rec.CREATION_DATE;
1816       l_bchv_rec.LAST_UPDATED_BY := Fnd_Global.USER_ID;
1817       l_bchv_rec.LAST_UPDATE_LOGIN := Fnd_Global.LOGIN_ID;
1818       RETURN(l_bchv_rec);
1819     END fill_who_columns;
1820     ----------------------------------------------
1821     -- Set_Attributes for:OKL_BILLING_CHARGES_V --
1822     ----------------------------------------------
1823     FUNCTION Set_Attributes (
1824       p_bchv_rec IN  bchv_rec_type,
1825       x_bchv_rec OUT NOCOPY bchv_rec_type
1826     ) RETURN VARCHAR2 IS
1827       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1828     BEGIN
1829       x_bchv_rec := p_bchv_rec;
1830       x_bchv_rec.OBJECT_VERSION_NUMBER := 1;
1831       x_bchv_rec.SFWT_FLAG := 'N';
1832       -- Begin Post-Generation Change
1833       SELECT
1834         DECODE(Fnd_Global.CONC_REQUEST_ID,-1,NULL,Fnd_Global.CONC_REQUEST_ID),
1835         DECODE(Fnd_Global.PROG_APPL_ID,   -1,NULL,Fnd_Global.PROG_APPL_ID),
1836         DECODE(Fnd_Global.CONC_PROGRAM_ID,-1,NULL,Fnd_Global.CONC_PROGRAM_ID),
1837         DECODE(Fnd_Global.CONC_REQUEST_ID,-1,NULL,SYSDATE)
1838       INTO
1839         x_bchv_rec.request_id,
1840         x_bchv_rec.program_application_id,
1841         x_bchv_rec.program_id,
1842         x_bchv_rec.program_update_date
1843       FROM   dual;
1844       -- End Post-Generation Change
1845       RETURN(l_return_status);
1846     END Set_Attributes;
1847   BEGIN
1848     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
1849                                               G_PKG_NAME,
1850                                               p_init_msg_list,
1851                                               l_api_version,
1852                                               p_api_version,
1853                                               '_PVT',
1854                                               x_return_status);
1855     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1856       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1857     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1858       RAISE Okl_Api.G_EXCEPTION_ERROR;
1859     END IF;
1860     l_bchv_rec := null_out_defaults(p_bchv_rec);
1861     -- Set primary key value
1862     l_bchv_rec.ID := get_seq_id;
1863     --- Setting item attributes
1864     l_return_status := Set_Attributes(
1865       l_bchv_rec,                        -- IN
1866       l_def_bchv_rec);                   -- OUT
1867     --- If any errors happen abort API
1868     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1869       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1870     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1871       RAISE Okl_Api.G_EXCEPTION_ERROR;
1872     END IF;
1873     l_def_bchv_rec := fill_who_columns(l_def_bchv_rec);
1874     --- Validate all non-missing attributes (Item Level Validation)
1875     l_return_status := Validate_Attributes(l_def_bchv_rec);
1876     --- If any errors happen abort API
1877     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1878       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1879     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1880       RAISE Okl_Api.G_EXCEPTION_ERROR;
1881     END IF;
1882     l_return_status := Validate_Record(l_def_bchv_rec);
1883     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1887     END IF;
1884       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1885     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1886       RAISE Okl_Api.G_EXCEPTION_ERROR;
1888     --------------------------------------
1889     -- Move VIEW record to "Child" records
1890     --------------------------------------
1891     migrate(l_def_bchv_rec, l_bch_rec);
1892     migrate(l_def_bchv_rec, l_okl_billing_charges_tl_rec);
1893     --------------------------------------------
1894     -- Call the INSERT_ROW for each child record
1895     --------------------------------------------
1896     insert_row(
1897       p_init_msg_list,
1898       x_return_status,
1899       x_msg_count,
1900       x_msg_data,
1901       l_bch_rec,
1902       lx_bch_rec
1903     );
1904     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1905       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1906     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1907       RAISE Okl_Api.G_EXCEPTION_ERROR;
1908     END IF;
1909     migrate(lx_bch_rec, l_def_bchv_rec);
1910     insert_row(
1911       p_init_msg_list,
1912       x_return_status,
1913       x_msg_count,
1914       x_msg_data,
1915       l_okl_billing_charges_tl_rec,
1916       lx_okl_billing_charges_tl_rec
1917     );
1918     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
1919       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
1920     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
1921       RAISE Okl_Api.G_EXCEPTION_ERROR;
1922     END IF;
1923     migrate(lx_okl_billing_charges_tl_rec, l_def_bchv_rec);
1924     -- Set OUT values
1925     x_bchv_rec := l_def_bchv_rec;
1926     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
1927   EXCEPTION
1928     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
1929       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
1930       (
1931         l_api_name,
1932         G_PKG_NAME,
1933         'OKL_API.G_RET_STS_ERROR',
1934         x_msg_count,
1935         x_msg_data,
1936         '_PVT'
1937       );
1938     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
1939       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1940       (
1941         l_api_name,
1942         G_PKG_NAME,
1943         'OKL_API.G_RET_STS_UNEXP_ERROR',
1944         x_msg_count,
1945         x_msg_data,
1946         '_PVT'
1947       );
1948     WHEN OTHERS THEN
1949       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
1950       (
1951         l_api_name,
1952         G_PKG_NAME,
1953         'OTHERS',
1954         x_msg_count,
1955         x_msg_data,
1956         '_PVT'
1957       );
1958   END insert_row;
1959   ----------------------------------------
1960   -- PL/SQL TBL insert_row for:BCHV_TBL --
1961   ----------------------------------------
1962   PROCEDURE insert_row(
1963     p_api_version                  IN NUMBER,
1964     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
1965     x_return_status                OUT NOCOPY VARCHAR2,
1966     x_msg_count                    OUT NOCOPY NUMBER,
1967     x_msg_data                     OUT NOCOPY VARCHAR2,
1968     p_bchv_tbl                     IN bchv_tbl_type,
1969     x_bchv_tbl                     OUT NOCOPY bchv_tbl_type) IS
1970 
1971     l_api_version                 CONSTANT NUMBER := 1;
1972     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
1973     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1974     i                              NUMBER := 0;
1975     -- Begin Post-Generation Change
1976     -- overall error status
1977     l_overall_status               VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
1978     -- End Post-Generation Change
1979 
1980   BEGIN
1981     Okl_Api.init_msg_list(p_init_msg_list);
1982     -- Make sure PL/SQL table has records in it before passing
1983     IF (p_bchv_tbl.COUNT > 0) THEN
1984       i := p_bchv_tbl.FIRST;
1985       LOOP
1986         insert_row (
1987           p_api_version                  => p_api_version,
1988           p_init_msg_list                => Okc_Api.G_FALSE,
1989           x_return_status                => x_return_status,
1990           x_msg_count                    => x_msg_count,
1991           x_msg_data                     => x_msg_data,
1992           p_bchv_rec                     => p_bchv_tbl(i),
1993           x_bchv_rec                     => x_bchv_tbl(i));
1994         -- Begin Post-Generation Change
1995         -- store the highest degree of error
1996         IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
1997            IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
1998               l_overall_status := x_return_status;
1999            END IF;
2000         END IF;
2001         -- End Post-Generation Change
2002         EXIT WHEN (i = p_bchv_tbl.LAST);
2003         i := p_bchv_tbl.NEXT(i);
2004       END LOOP;
2005       -- Begin Post-Generation Change
2006       -- return overall status
2007       x_return_status := l_overall_status;
2008       -- End Post-Generation Change
2009     END IF;
2010   EXCEPTION
2011     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2012       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2013       (
2014         l_api_name,
2015         G_PKG_NAME,
2016         'OKL_API.G_RET_STS_ERROR',
2017         x_msg_count,
2018         x_msg_data,
2022       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2019         '_PVT'
2020       );
2021     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2023       (
2024         l_api_name,
2025         G_PKG_NAME,
2026         'OKL_API.G_RET_STS_UNEXP_ERROR',
2027         x_msg_count,
2028         x_msg_data,
2029         '_PVT'
2030       );
2031     WHEN OTHERS THEN
2032       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2033       (
2034         l_api_name,
2035         G_PKG_NAME,
2036         'OTHERS',
2037         x_msg_count,
2038         x_msg_data,
2039         '_PVT'
2040       );
2041   END insert_row;
2042 
2043   ---------------------------------------------------------------------------
2044   -- PROCEDURE lock_row
2045   ---------------------------------------------------------------------------
2046   ----------------------------------------
2047   -- lock_row for:OKL_BILLING_CHARGES_B --
2048   ----------------------------------------
2049   PROCEDURE lock_row(
2050     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2051     x_return_status                OUT NOCOPY VARCHAR2,
2052     x_msg_count                    OUT NOCOPY NUMBER,
2053     x_msg_data                     OUT NOCOPY VARCHAR2,
2054     p_bch_rec                      IN bch_rec_type) IS
2055 
2056     E_Resource_Busy               EXCEPTION;
2057     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2058     CURSOR lock_csr (p_bch_rec IN bch_rec_type) IS
2059     SELECT OBJECT_VERSION_NUMBER
2060       FROM OKL_BILLING_CHARGES_B
2061      WHERE ID = p_bch_rec.id
2062        AND OBJECT_VERSION_NUMBER = p_bch_rec.object_version_number
2063     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
2064 
2065     CURSOR  lchk_csr (p_bch_rec IN bch_rec_type) IS
2066     SELECT OBJECT_VERSION_NUMBER
2067       FROM OKL_BILLING_CHARGES_B
2068     WHERE ID = p_bch_rec.id;
2069     l_api_version                 CONSTANT NUMBER := 1;
2070     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
2071     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2072     l_object_version_number       OKL_BILLING_CHARGES_B.OBJECT_VERSION_NUMBER%TYPE;
2073     lc_object_version_number      OKL_BILLING_CHARGES_B.OBJECT_VERSION_NUMBER%TYPE;
2074     l_row_notfound                BOOLEAN := FALSE;
2075     lc_row_notfound               BOOLEAN := FALSE;
2076   BEGIN
2077     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2078                                               p_init_msg_list,
2079                                               '_PVT',
2080                                               x_return_status);
2081     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2082       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2083     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2084       RAISE Okl_Api.G_EXCEPTION_ERROR;
2085     END IF;
2086     BEGIN
2087       OPEN lock_csr(p_bch_rec);
2088       FETCH lock_csr INTO l_object_version_number;
2089       l_row_notfound := lock_csr%NOTFOUND;
2090       CLOSE lock_csr;
2091     EXCEPTION
2092       WHEN E_Resource_Busy THEN
2093         IF (lock_csr%ISOPEN) THEN
2094           CLOSE lock_csr;
2095         END IF;
2096         Okl_Api.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2097         RAISE App_Exceptions.RECORD_LOCK_EXCEPTION;
2098     END;
2099 
2100     IF ( l_row_notfound ) THEN
2101       OPEN lchk_csr(p_bch_rec);
2102       FETCH lchk_csr INTO lc_object_version_number;
2103       lc_row_notfound := lchk_csr%NOTFOUND;
2104       CLOSE lchk_csr;
2105     END IF;
2106     IF (lc_row_notfound) THEN
2107       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2108       RAISE Okl_Api.G_EXCEPTION_ERROR;
2109     ELSIF lc_object_version_number > p_bch_rec.object_version_number THEN
2110       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2111       RAISE Okl_Api.G_EXCEPTION_ERROR;
2112     ELSIF lc_object_version_number <> p_bch_rec.object_version_number THEN
2113       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
2114       RAISE Okl_Api.G_EXCEPTION_ERROR;
2115     ELSIF lc_object_version_number = -1 THEN
2116       Okl_Api.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
2117       RAISE Okl_Api.G_EXCEPTION_ERROR;
2118     END IF;
2119     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2120   EXCEPTION
2121     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2122       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2123       (
2124         l_api_name,
2125         G_PKG_NAME,
2126         'OKL_API.G_RET_STS_ERROR',
2127         x_msg_count,
2128         x_msg_data,
2129         '_PVT'
2130       );
2131     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2132       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2133       (
2134         l_api_name,
2135         G_PKG_NAME,
2136         'OKL_API.G_RET_STS_UNEXP_ERROR',
2137         x_msg_count,
2138         x_msg_data,
2139         '_PVT'
2140       );
2141     WHEN OTHERS THEN
2142       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2143       (
2144         l_api_name,
2145         G_PKG_NAME,
2146         'OTHERS',
2147         x_msg_count,
2148         x_msg_data,
2149         '_PVT'
2150       );
2151   END lock_row;
2152   -----------------------------------------
2153   -- lock_row for:OKL_BILLING_CHARGES_TL --
2154   -----------------------------------------
2158     x_msg_count                    OUT NOCOPY NUMBER,
2155   PROCEDURE lock_row(
2156     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2157     x_return_status                OUT NOCOPY VARCHAR2,
2159     x_msg_data                     OUT NOCOPY VARCHAR2,
2160     p_okl_billing_charges_tl_rec   IN OklBillingChargesTlRecType) IS
2161 
2162     E_Resource_Busy               EXCEPTION;
2163     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
2164     CURSOR lock_csr (p_okl_billing_charges_tl_rec IN OklBillingChargesTlRecType) IS
2165     SELECT *
2166       FROM OKL_BILLING_CHARGES_TL
2167      WHERE ID = p_okl_billing_charges_tl_rec.id
2168     FOR UPDATE NOWAIT;
2169 
2170     l_api_version                 CONSTANT NUMBER := 1;
2171     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
2172     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2173     l_lock_var                    lock_csr%ROWTYPE;
2174     l_row_notfound                BOOLEAN := FALSE;
2175     lc_row_notfound               BOOLEAN := FALSE;
2176   BEGIN
2177     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2178                                               p_init_msg_list,
2179                                               '_PVT',
2180                                               x_return_status);
2181     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2182       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2183     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2184       RAISE Okl_Api.G_EXCEPTION_ERROR;
2185     END IF;
2186     BEGIN
2187       OPEN lock_csr(p_okl_billing_charges_tl_rec);
2188       FETCH lock_csr INTO l_lock_var;
2189       l_row_notfound := lock_csr%NOTFOUND;
2190       CLOSE lock_csr;
2191     EXCEPTION
2192       WHEN E_Resource_Busy THEN
2193         IF (lock_csr%ISOPEN) THEN
2194           CLOSE lock_csr;
2195         END IF;
2196         Okl_Api.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
2197         RAISE App_Exceptions.RECORD_LOCK_EXCEPTION;
2198     END;
2199 
2200     IF ( l_row_notfound ) THEN
2201       Okl_Api.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
2202       RAISE Okl_Api.G_EXCEPTION_ERROR;
2203     END IF;
2204     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2205   EXCEPTION
2206     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2207       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2208       (
2209         l_api_name,
2210         G_PKG_NAME,
2211         'OKL_API.G_RET_STS_ERROR',
2212         x_msg_count,
2213         x_msg_data,
2214         '_PVT'
2215       );
2216     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2217       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2218       (
2219         l_api_name,
2220         G_PKG_NAME,
2221         'OKL_API.G_RET_STS_UNEXP_ERROR',
2222         x_msg_count,
2223         x_msg_data,
2224         '_PVT'
2225       );
2226     WHEN OTHERS THEN
2227       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2228       (
2229         l_api_name,
2230         G_PKG_NAME,
2231         'OTHERS',
2232         x_msg_count,
2233         x_msg_data,
2234         '_PVT'
2235       );
2236   END lock_row;
2237   ----------------------------------------
2238   -- lock_row for:OKL_BILLING_CHARGES_V --
2239   ----------------------------------------
2240   PROCEDURE lock_row(
2241     p_api_version                  IN NUMBER,
2242     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2243     x_return_status                OUT NOCOPY VARCHAR2,
2244     x_msg_count                    OUT NOCOPY NUMBER,
2245     x_msg_data                     OUT NOCOPY VARCHAR2,
2246     p_bchv_rec                     IN bchv_rec_type) IS
2247 
2248     l_api_version                 CONSTANT NUMBER := 1;
2249     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
2250     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2251     l_bch_rec                      bch_rec_type;
2252     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType;
2253   BEGIN
2254     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2255                                               G_PKG_NAME,
2256                                               p_init_msg_list,
2257                                               l_api_version,
2258                                               p_api_version,
2259                                               '_PVT',
2260                                               x_return_status);
2261     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2262       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2263     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2264       RAISE Okl_Api.G_EXCEPTION_ERROR;
2265     END IF;
2266     --------------------------------------
2267     -- Move VIEW record to "Child" records
2268     --------------------------------------
2269     migrate(p_bchv_rec, l_bch_rec);
2270     migrate(p_bchv_rec, l_okl_billing_charges_tl_rec);
2271     --------------------------------------------
2272     -- Call the LOCK_ROW for each child record
2273     --------------------------------------------
2274     lock_row(
2275       p_init_msg_list,
2276       x_return_status,
2277       x_msg_count,
2278       x_msg_data,
2279       l_bch_rec
2280     );
2281     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2285     END IF;
2282       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2283     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2284       RAISE Okl_Api.G_EXCEPTION_ERROR;
2286     lock_row(
2287       p_init_msg_list,
2288       x_return_status,
2289       x_msg_count,
2290       x_msg_data,
2291       l_okl_billing_charges_tl_rec
2292     );
2293     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2294       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2295     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2296       RAISE Okl_Api.G_EXCEPTION_ERROR;
2297     END IF;
2298     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2299   EXCEPTION
2300     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2301       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2302       (
2303         l_api_name,
2304         G_PKG_NAME,
2305         'OKL_API.G_RET_STS_ERROR',
2306         x_msg_count,
2307         x_msg_data,
2308         '_PVT'
2309       );
2310     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2311       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2312       (
2313         l_api_name,
2314         G_PKG_NAME,
2315         'OKL_API.G_RET_STS_UNEXP_ERROR',
2316         x_msg_count,
2317         x_msg_data,
2318         '_PVT'
2319       );
2320     WHEN OTHERS THEN
2321       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2322       (
2323         l_api_name,
2324         G_PKG_NAME,
2325         'OTHERS',
2326         x_msg_count,
2327         x_msg_data,
2328         '_PVT'
2329       );
2330   END lock_row;
2331   --------------------------------------
2332   -- PL/SQL TBL lock_row for:BCHV_TBL --
2333   --------------------------------------
2334   PROCEDURE lock_row(
2335     p_api_version                  IN NUMBER,
2336     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2337     x_return_status                OUT NOCOPY VARCHAR2,
2338     x_msg_count                    OUT NOCOPY NUMBER,
2339     x_msg_data                     OUT NOCOPY VARCHAR2,
2340     p_bchv_tbl                     IN bchv_tbl_type) IS
2341 
2342     l_api_version                 CONSTANT NUMBER := 1;
2343     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
2344     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2345     i                              NUMBER := 0;
2346     -- Begin Post-Generation Change
2347     -- overall error status
2348     l_overall_status               VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2349     -- End Post-Generation Change
2350 
2351   BEGIN
2352     Okl_Api.init_msg_list(p_init_msg_list);
2353     -- Make sure PL/SQL table has records in it before passing
2354     IF (p_bchv_tbl.COUNT > 0) THEN
2355       i := p_bchv_tbl.FIRST;
2356       LOOP
2357         lock_row (
2358           p_api_version                  => p_api_version,
2359           p_init_msg_list                => Okc_Api.G_FALSE,
2360           x_return_status                => x_return_status,
2361           x_msg_count                    => x_msg_count,
2362           x_msg_data                     => x_msg_data,
2363           p_bchv_rec                     => p_bchv_tbl(i));
2364         -- Begin Post-Generation Change
2365         -- store the highest degree of error
2366         IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
2367            IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
2368               l_overall_status := x_return_status;
2369            END IF;
2370         END IF;
2371         -- End Post-Generation Change
2372         EXIT WHEN (i = p_bchv_tbl.LAST);
2373         i := p_bchv_tbl.NEXT(i);
2374       END LOOP;
2375       -- Begin Post-Generation Change
2376       -- return overall status
2377       x_return_status := l_overall_status;
2378       -- End Post-Generation Change
2379     END IF;
2380   EXCEPTION
2381     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2382       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2383       (
2384         l_api_name,
2385         G_PKG_NAME,
2386         'OKL_API.G_RET_STS_ERROR',
2387         x_msg_count,
2388         x_msg_data,
2389         '_PVT'
2390       );
2391     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2392       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2393       (
2394         l_api_name,
2395         G_PKG_NAME,
2396         'OKL_API.G_RET_STS_UNEXP_ERROR',
2397         x_msg_count,
2398         x_msg_data,
2399         '_PVT'
2400       );
2401     WHEN OTHERS THEN
2402       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2403       (
2404         l_api_name,
2405         G_PKG_NAME,
2406         'OTHERS',
2407         x_msg_count,
2408         x_msg_data,
2409         '_PVT'
2410       );
2411   END lock_row;
2412 
2413   ---------------------------------------------------------------------------
2414   -- PROCEDURE update_row
2415   ---------------------------------------------------------------------------
2416   ------------------------------------------
2417   -- update_row for:OKL_BILLING_CHARGES_B --
2418   ------------------------------------------
2419   PROCEDURE update_row(
2420     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2421     x_return_status                OUT NOCOPY VARCHAR2,
2425     x_bch_rec                      OUT NOCOPY bch_rec_type) IS
2422     x_msg_count                    OUT NOCOPY NUMBER,
2423     x_msg_data                     OUT NOCOPY VARCHAR2,
2424     p_bch_rec                      IN bch_rec_type,
2426 
2427     l_api_version                 CONSTANT NUMBER := 1;
2428     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
2429     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2430     l_bch_rec                      bch_rec_type := p_bch_rec;
2431     l_def_bch_rec                  bch_rec_type;
2432     l_row_notfound                 BOOLEAN := TRUE;
2433     ----------------------------------
2434     -- FUNCTION populate_new_record --
2435     ----------------------------------
2436     FUNCTION populate_new_record (
2437       p_bch_rec	IN bch_rec_type,
2438       x_bch_rec	OUT NOCOPY bch_rec_type
2439     ) RETURN VARCHAR2 IS
2440       l_bch_rec                      bch_rec_type;
2441       l_row_notfound                 BOOLEAN := TRUE;
2442       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2443     BEGIN
2444       x_bch_rec := p_bch_rec;
2445       -- Get current database values
2446       l_bch_rec := get_rec(p_bch_rec, l_row_notfound);
2447       IF (l_row_notfound) THEN
2448         l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
2449       END IF;
2450       IF (x_bch_rec.id = Okl_Api.G_MISS_NUM)
2451       THEN
2452         x_bch_rec.id := l_bch_rec.id;
2453       END IF;
2454       IF (x_bch_rec.sequence_number = Okl_Api.G_MISS_NUM)
2455       THEN
2456         x_bch_rec.sequence_number := l_bch_rec.sequence_number;
2457       END IF;
2458       IF (x_bch_rec.bgh_id = Okl_Api.G_MISS_NUM)
2459       THEN
2460         x_bch_rec.bgh_id := l_bch_rec.bgh_id;
2461       END IF;
2462       IF (x_bch_rec.object_version_number = Okl_Api.G_MISS_NUM)
2463       THEN
2464         x_bch_rec.object_version_number := l_bch_rec.object_version_number;
2465       END IF;
2466       IF (x_bch_rec.contract_id = Okl_Api.G_MISS_NUM)
2467       THEN
2468         x_bch_rec.contract_id := l_bch_rec.contract_id;
2469       END IF;
2470       IF (x_bch_rec.asset_id = Okl_Api.G_MISS_NUM)
2471       THEN
2472         x_bch_rec.asset_id := l_bch_rec.asset_id;
2473       END IF;
2474       IF (x_bch_rec.charge_date = Okl_Api.G_MISS_DATE)
2475       THEN
2476         x_bch_rec.charge_date := l_bch_rec.charge_date;
2477       END IF;
2478       IF (x_bch_rec.amount = Okl_Api.G_MISS_NUM)
2479       THEN
2480         x_bch_rec.amount := l_bch_rec.amount;
2481       END IF;
2482       IF (x_bch_rec.currency_code = Okl_Api.G_MISS_CHAR)
2483       THEN
2484         x_bch_rec.currency_code := l_bch_rec.currency_code;
2485       END IF;
2486       IF (x_bch_rec.customer_id = Okl_Api.G_MISS_NUM)
2487       THEN
2488         x_bch_rec.customer_id := l_bch_rec.customer_id;
2489       END IF;
2490       IF (x_bch_rec.customer_ref = Okl_Api.G_MISS_CHAR)
2491       THEN
2492         x_bch_rec.customer_ref := l_bch_rec.customer_ref;
2493       END IF;
2494       IF (x_bch_rec.customer_address_id = Okl_Api.G_MISS_NUM)
2495       THEN
2496         x_bch_rec.customer_address_id := l_bch_rec.customer_address_id;
2497       END IF;
2498       IF (x_bch_rec.customer_address_ref = Okl_Api.G_MISS_CHAR)
2499       THEN
2500         x_bch_rec.customer_address_ref := l_bch_rec.customer_address_ref;
2501       END IF;
2502       IF (x_bch_rec.request_id = Okl_Api.G_MISS_NUM)
2503       THEN
2504         x_bch_rec.request_id := l_bch_rec.request_id;
2505       END IF;
2506       IF (x_bch_rec.program_application_id = Okl_Api.G_MISS_NUM)
2507       THEN
2508         x_bch_rec.program_application_id := l_bch_rec.program_application_id;
2509       END IF;
2510       IF (x_bch_rec.program_id = Okl_Api.G_MISS_NUM)
2511       THEN
2512         x_bch_rec.program_id := l_bch_rec.program_id;
2513       END IF;
2514       IF (x_bch_rec.program_update_date = Okl_Api.G_MISS_DATE)
2515       THEN
2516         x_bch_rec.program_update_date := l_bch_rec.program_update_date;
2517       END IF;
2518       IF (x_bch_rec.org_id = Okl_Api.G_MISS_NUM)
2519       THEN
2520         x_bch_rec.org_id := l_bch_rec.org_id;
2521       END IF;
2522       IF (x_bch_rec.sty_id = Okl_Api.G_MISS_NUM)
2523       THEN
2524         x_bch_rec.sty_id := l_bch_rec.sty_id;
2525       END IF;
2526       IF (x_bch_rec.sty_name = Okl_Api.G_MISS_CHAR)
2527       THEN
2528         x_bch_rec.sty_name := l_bch_rec.sty_name;
2529       END IF;
2530       IF (x_bch_rec.attribute_category = Okl_Api.G_MISS_CHAR)
2531       THEN
2532         x_bch_rec.attribute_category := l_bch_rec.attribute_category;
2533       END IF;
2534       IF (x_bch_rec.attribute1 = Okl_Api.G_MISS_CHAR)
2535       THEN
2536         x_bch_rec.attribute1 := l_bch_rec.attribute1;
2537       END IF;
2538       IF (x_bch_rec.attribute2 = Okl_Api.G_MISS_CHAR)
2539       THEN
2540         x_bch_rec.attribute2 := l_bch_rec.attribute2;
2541       END IF;
2542       IF (x_bch_rec.attribute3 = Okl_Api.G_MISS_CHAR)
2543       THEN
2544         x_bch_rec.attribute3 := l_bch_rec.attribute3;
2545       END IF;
2546       IF (x_bch_rec.attribute4 = Okl_Api.G_MISS_CHAR)
2547       THEN
2548         x_bch_rec.attribute4 := l_bch_rec.attribute4;
2549       END IF;
2550       IF (x_bch_rec.attribute5 = Okl_Api.G_MISS_CHAR)
2554       IF (x_bch_rec.attribute6 = Okl_Api.G_MISS_CHAR)
2551       THEN
2552         x_bch_rec.attribute5 := l_bch_rec.attribute5;
2553       END IF;
2555       THEN
2556         x_bch_rec.attribute6 := l_bch_rec.attribute6;
2557       END IF;
2558       IF (x_bch_rec.attribute7 = Okl_Api.G_MISS_CHAR)
2559       THEN
2560         x_bch_rec.attribute7 := l_bch_rec.attribute7;
2561       END IF;
2562       IF (x_bch_rec.attribute8 = Okl_Api.G_MISS_CHAR)
2563       THEN
2564         x_bch_rec.attribute8 := l_bch_rec.attribute8;
2565       END IF;
2566       IF (x_bch_rec.attribute9 = Okl_Api.G_MISS_CHAR)
2567       THEN
2568         x_bch_rec.attribute9 := l_bch_rec.attribute9;
2569       END IF;
2570       IF (x_bch_rec.attribute10 = Okl_Api.G_MISS_CHAR)
2571       THEN
2572         x_bch_rec.attribute10 := l_bch_rec.attribute10;
2573       END IF;
2574       IF (x_bch_rec.attribute11 = Okl_Api.G_MISS_CHAR)
2575       THEN
2576         x_bch_rec.attribute11 := l_bch_rec.attribute11;
2577       END IF;
2578       IF (x_bch_rec.attribute12 = Okl_Api.G_MISS_CHAR)
2579       THEN
2580         x_bch_rec.attribute12 := l_bch_rec.attribute12;
2581       END IF;
2582       IF (x_bch_rec.attribute13 = Okl_Api.G_MISS_CHAR)
2583       THEN
2584         x_bch_rec.attribute13 := l_bch_rec.attribute13;
2585       END IF;
2586       IF (x_bch_rec.attribute14 = Okl_Api.G_MISS_CHAR)
2587       THEN
2588         x_bch_rec.attribute14 := l_bch_rec.attribute14;
2589       END IF;
2590       IF (x_bch_rec.attribute15 = Okl_Api.G_MISS_CHAR)
2591       THEN
2592         x_bch_rec.attribute15 := l_bch_rec.attribute15;
2593       END IF;
2594       IF (x_bch_rec.interface_attribute1 = Okl_Api.G_MISS_CHAR)
2595       THEN
2596         x_bch_rec.interface_attribute1 := l_bch_rec.interface_attribute1;
2597       END IF;
2598       IF (x_bch_rec.interface_attribute2 = Okl_Api.G_MISS_CHAR)
2599       THEN
2600         x_bch_rec.interface_attribute2 := l_bch_rec.interface_attribute2;
2601       END IF;
2602       IF (x_bch_rec.interface_attribute3 = Okl_Api.G_MISS_CHAR)
2603       THEN
2604         x_bch_rec.interface_attribute3 := l_bch_rec.interface_attribute3;
2605       END IF;
2606       IF (x_bch_rec.interface_attribute4 = Okl_Api.G_MISS_CHAR)
2607       THEN
2608         x_bch_rec.interface_attribute4 := l_bch_rec.interface_attribute4;
2609       END IF;
2610       IF (x_bch_rec.interface_attribute5 = Okl_Api.G_MISS_CHAR)
2611       THEN
2612         x_bch_rec.interface_attribute5 := l_bch_rec.interface_attribute5;
2613       END IF;
2614       IF (x_bch_rec.interface_attribute6 = Okl_Api.G_MISS_CHAR)
2615       THEN
2616         x_bch_rec.interface_attribute6 := l_bch_rec.interface_attribute6;
2617       END IF;
2618       IF (x_bch_rec.interface_attribute7 = Okl_Api.G_MISS_CHAR)
2619       THEN
2620         x_bch_rec.interface_attribute7 := l_bch_rec.interface_attribute7;
2621       END IF;
2622       IF (x_bch_rec.interface_attribute8 = Okl_Api.G_MISS_CHAR)
2623       THEN
2624         x_bch_rec.interface_attribute8 := l_bch_rec.interface_attribute8;
2625       END IF;
2626       IF (x_bch_rec.interface_attribute9 = Okl_Api.G_MISS_CHAR)
2627       THEN
2628         x_bch_rec.interface_attribute9 := l_bch_rec.interface_attribute9;
2629       END IF;
2630       IF (x_bch_rec.interface_attribute10 = Okl_Api.G_MISS_CHAR)
2631       THEN
2632         x_bch_rec.interface_attribute10 := l_bch_rec.interface_attribute10;
2633       END IF;
2634       IF (x_bch_rec.interface_attribute11 = Okl_Api.G_MISS_CHAR)
2635       THEN
2636         x_bch_rec.interface_attribute11 := l_bch_rec.interface_attribute11;
2637       END IF;
2638       IF (x_bch_rec.interface_attribute12 = Okl_Api.G_MISS_CHAR)
2639       THEN
2640         x_bch_rec.interface_attribute12 := l_bch_rec.interface_attribute12;
2641       END IF;
2642       IF (x_bch_rec.interface_attribute13 = Okl_Api.G_MISS_CHAR)
2643       THEN
2644         x_bch_rec.interface_attribute13 := l_bch_rec.interface_attribute13;
2645       END IF;
2646       IF (x_bch_rec.interface_attribute14 = Okl_Api.G_MISS_CHAR)
2647       THEN
2648         x_bch_rec.interface_attribute14 := l_bch_rec.interface_attribute14;
2649       END IF;
2650       IF (x_bch_rec.interface_attribute15 = Okl_Api.G_MISS_CHAR)
2651       THEN
2652         x_bch_rec.interface_attribute15 := l_bch_rec.interface_attribute15;
2653       END IF;
2654       IF (x_bch_rec.created_by = Okl_Api.G_MISS_NUM)
2655       THEN
2656         x_bch_rec.created_by := l_bch_rec.created_by;
2657       END IF;
2658       IF (x_bch_rec.creation_date = Okl_Api.G_MISS_DATE)
2659       THEN
2660         x_bch_rec.creation_date := l_bch_rec.creation_date;
2661       END IF;
2662       IF (x_bch_rec.last_updated_by = Okl_Api.G_MISS_NUM)
2663       THEN
2664         x_bch_rec.last_updated_by := l_bch_rec.last_updated_by;
2665       END IF;
2666       IF (x_bch_rec.last_update_date = Okl_Api.G_MISS_DATE)
2667       THEN
2668         x_bch_rec.last_update_date := l_bch_rec.last_update_date;
2669       END IF;
2670       IF (x_bch_rec.last_update_login = Okl_Api.G_MISS_NUM)
2671       THEN
2672         x_bch_rec.last_update_login := l_bch_rec.last_update_login;
2673       END IF;
2674       RETURN(l_return_status);
2675     END populate_new_record;
2676     ----------------------------------------------
2677     -- Set_Attributes for:OKL_BILLING_CHARGES_B --
2678     ----------------------------------------------
2679     FUNCTION Set_Attributes (
2683       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2680       p_bch_rec IN  bch_rec_type,
2681       x_bch_rec OUT NOCOPY bch_rec_type
2682     ) RETURN VARCHAR2 IS
2684     BEGIN
2685       x_bch_rec := p_bch_rec;
2686       RETURN(l_return_status);
2687     END Set_Attributes;
2688   BEGIN
2689     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2690                                               p_init_msg_list,
2691                                               '_PVT',
2692                                               x_return_status);
2693     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2694       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2695     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2696       RAISE Okl_Api.G_EXCEPTION_ERROR;
2697     END IF;
2698     --- Setting item attributes
2699     l_return_status := Set_Attributes(
2700       p_bch_rec,                         -- IN
2701       l_bch_rec);                        -- OUT
2702     --- If any errors happen abort API
2703     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2704       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2705     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2706       RAISE Okl_Api.G_EXCEPTION_ERROR;
2707     END IF;
2708     l_return_status := populate_new_record(l_bch_rec, l_def_bch_rec);
2709     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2710       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2711     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2712       RAISE Okl_Api.G_EXCEPTION_ERROR;
2713     END IF;
2714     UPDATE  OKL_BILLING_CHARGES_B
2715     SET SEQUENCE_NUMBER = l_def_bch_rec.sequence_number,
2716         BGH_ID = l_def_bch_rec.bgh_id,
2717         OBJECT_VERSION_NUMBER = l_def_bch_rec.object_version_number,
2718         CONTRACT_ID = l_def_bch_rec.contract_id,
2719         ASSET_ID = l_def_bch_rec.asset_id,
2720         CHARGE_DATE = l_def_bch_rec.charge_date,
2721         AMOUNT = l_def_bch_rec.amount,
2722         CURRENCY_CODE = l_def_bch_rec.currency_code,
2723         CUSTOMER_ID = l_def_bch_rec.customer_id,
2724         CUSTOMER_REF = l_def_bch_rec.customer_ref,
2725         CUSTOMER_ADDRESS_ID = l_def_bch_rec.customer_address_id,
2726         CUSTOMER_ADDRESS_REF = l_def_bch_rec.customer_address_ref,
2727         REQUEST_ID = l_def_bch_rec.request_id,
2728         PROGRAM_APPLICATION_ID = l_def_bch_rec.program_application_id,
2729         PROGRAM_ID = l_def_bch_rec.program_id,
2730         PROGRAM_UPDATE_DATE = l_def_bch_rec.program_update_date,
2731         ORG_ID = l_def_bch_rec.org_id,
2732         STY_ID = l_def_bch_rec.sty_id,
2733         STY_NAME = l_def_bch_rec.sty_name,
2734         ATTRIBUTE_CATEGORY = l_def_bch_rec.attribute_category,
2735         ATTRIBUTE1 = l_def_bch_rec.attribute1,
2736         ATTRIBUTE2 = l_def_bch_rec.attribute2,
2737         ATTRIBUTE3 = l_def_bch_rec.attribute3,
2738         ATTRIBUTE4 = l_def_bch_rec.attribute4,
2739         ATTRIBUTE5 = l_def_bch_rec.attribute5,
2740         ATTRIBUTE6 = l_def_bch_rec.attribute6,
2741         ATTRIBUTE7 = l_def_bch_rec.attribute7,
2742         ATTRIBUTE8 = l_def_bch_rec.attribute8,
2743         ATTRIBUTE9 = l_def_bch_rec.attribute9,
2744         ATTRIBUTE10 = l_def_bch_rec.attribute10,
2745         ATTRIBUTE11 = l_def_bch_rec.attribute11,
2746         ATTRIBUTE12 = l_def_bch_rec.attribute12,
2747         ATTRIBUTE13 = l_def_bch_rec.attribute13,
2748         ATTRIBUTE14 = l_def_bch_rec.attribute14,
2749         ATTRIBUTE15 = l_def_bch_rec.attribute15,
2750         interface_attribute1 = l_def_bch_rec.interface_attribute1,
2751         interface_attribute2 = l_def_bch_rec.interface_attribute2,
2752         interface_attribute3 = l_def_bch_rec.interface_attribute3,
2753         interface_attribute4 = l_def_bch_rec.interface_attribute4,
2754         interface_attribute5 = l_def_bch_rec.interface_attribute5,
2755         interface_attribute6 = l_def_bch_rec.interface_attribute6,
2756         interface_attribute7 = l_def_bch_rec.interface_attribute7,
2757         interface_attribute8 = l_def_bch_rec.interface_attribute8,
2758         interface_attribute9 = l_def_bch_rec.interface_attribute9,
2759         interface_attribute10 = l_def_bch_rec.interface_attribute10,
2760         interface_attribute11 = l_def_bch_rec.interface_attribute11,
2761         interface_attribute12 = l_def_bch_rec.interface_attribute12,
2762         interface_attribute13 = l_def_bch_rec.interface_attribute13,
2763         interface_attribute14 = l_def_bch_rec.interface_attribute14,
2764         interface_attribute15 = l_def_bch_rec.interface_attribute15,
2765         CREATED_BY = l_def_bch_rec.created_by,
2766         CREATION_DATE = l_def_bch_rec.creation_date,
2767         LAST_UPDATED_BY = l_def_bch_rec.last_updated_by,
2768         LAST_UPDATE_DATE = l_def_bch_rec.last_update_date,
2769         LAST_UPDATE_LOGIN = l_def_bch_rec.last_update_login
2770     WHERE ID = l_def_bch_rec.id;
2771 
2772     x_bch_rec := l_def_bch_rec;
2773     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2774   EXCEPTION
2775     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2776       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2777       (
2778         l_api_name,
2779         G_PKG_NAME,
2780         'OKL_API.G_RET_STS_ERROR',
2781         x_msg_count,
2782         x_msg_data,
2783         '_PVT'
2784       );
2785     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2786       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2787       (
2788         l_api_name,
2789         G_PKG_NAME,
2793         '_PVT'
2790         'OKL_API.G_RET_STS_UNEXP_ERROR',
2791         x_msg_count,
2792         x_msg_data,
2794       );
2795     WHEN OTHERS THEN
2796       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2797       (
2798         l_api_name,
2799         G_PKG_NAME,
2800         'OTHERS',
2801         x_msg_count,
2802         x_msg_data,
2803         '_PVT'
2804       );
2805   END update_row;
2806   -------------------------------------------
2807   -- update_row for:OKL_BILLING_CHARGES_TL --
2808   -------------------------------------------
2809   PROCEDURE update_row(
2810     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2811     x_return_status                OUT NOCOPY VARCHAR2,
2812     x_msg_count                    OUT NOCOPY NUMBER,
2813     x_msg_data                     OUT NOCOPY VARCHAR2,
2814     p_okl_billing_charges_tl_rec   IN OklBillingChargesTlRecType,
2815     x_okl_billing_charges_tl_rec   OUT NOCOPY OklBillingChargesTlRecType) IS
2816 
2817     l_api_version                 CONSTANT NUMBER := 1;
2818     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
2819     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2820     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType := p_okl_billing_charges_tl_rec;
2821     ldefoklbillingchargestlrec     OklBillingChargesTlRecType;
2822     l_row_notfound                 BOOLEAN := TRUE;
2823     ----------------------------------
2824     -- FUNCTION populate_new_record --
2825     ----------------------------------
2826     FUNCTION populate_new_record (
2827       p_okl_billing_charges_tl_rec	IN OklBillingChargesTlRecType,
2828       x_okl_billing_charges_tl_rec	OUT NOCOPY OklBillingChargesTlRecType
2829     ) RETURN VARCHAR2 IS
2830       l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType;
2831       l_row_notfound                 BOOLEAN := TRUE;
2832       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2833     BEGIN
2834       x_okl_billing_charges_tl_rec := p_okl_billing_charges_tl_rec;
2835       -- Get current database values
2836       l_okl_billing_charges_tl_rec := get_rec(p_okl_billing_charges_tl_rec, l_row_notfound);
2837       IF (l_row_notfound) THEN
2838         l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
2839       END IF;
2840       IF (x_okl_billing_charges_tl_rec.id = Okl_Api.G_MISS_NUM)
2841       THEN
2842         x_okl_billing_charges_tl_rec.id := l_okl_billing_charges_tl_rec.id;
2843       END IF;
2844       IF (x_okl_billing_charges_tl_rec.LANGUAGE = Okl_Api.G_MISS_CHAR)
2845       THEN
2846         x_okl_billing_charges_tl_rec.LANGUAGE := l_okl_billing_charges_tl_rec.LANGUAGE;
2847       END IF;
2848       IF (x_okl_billing_charges_tl_rec.source_lang = Okl_Api.G_MISS_CHAR)
2849       THEN
2850         x_okl_billing_charges_tl_rec.source_lang := l_okl_billing_charges_tl_rec.source_lang;
2851       END IF;
2852       IF (x_okl_billing_charges_tl_rec.sfwt_flag = Okl_Api.G_MISS_CHAR)
2853       THEN
2854         x_okl_billing_charges_tl_rec.sfwt_flag := l_okl_billing_charges_tl_rec.sfwt_flag;
2855       END IF;
2856       IF (x_okl_billing_charges_tl_rec.charge_type = Okl_Api.G_MISS_CHAR)
2857       THEN
2858         x_okl_billing_charges_tl_rec.charge_type := l_okl_billing_charges_tl_rec.charge_type;
2859       END IF;
2860       IF (x_okl_billing_charges_tl_rec.description = Okl_Api.G_MISS_CHAR)
2861       THEN
2862         x_okl_billing_charges_tl_rec.description := l_okl_billing_charges_tl_rec.description;
2863       END IF;
2864       IF (x_okl_billing_charges_tl_rec.created_by = Okl_Api.G_MISS_NUM)
2865       THEN
2866         x_okl_billing_charges_tl_rec.created_by := l_okl_billing_charges_tl_rec.created_by;
2867       END IF;
2868       IF (x_okl_billing_charges_tl_rec.creation_date = Okl_Api.G_MISS_DATE)
2869       THEN
2870         x_okl_billing_charges_tl_rec.creation_date := l_okl_billing_charges_tl_rec.creation_date;
2871       END IF;
2872       IF (x_okl_billing_charges_tl_rec.last_updated_by = Okl_Api.G_MISS_NUM)
2873       THEN
2874         x_okl_billing_charges_tl_rec.last_updated_by := l_okl_billing_charges_tl_rec.last_updated_by;
2875       END IF;
2876       IF (x_okl_billing_charges_tl_rec.last_update_date = Okl_Api.G_MISS_DATE)
2877       THEN
2878         x_okl_billing_charges_tl_rec.last_update_date := l_okl_billing_charges_tl_rec.last_update_date;
2879       END IF;
2880       IF (x_okl_billing_charges_tl_rec.last_update_login = Okl_Api.G_MISS_NUM)
2881       THEN
2882         x_okl_billing_charges_tl_rec.last_update_login := l_okl_billing_charges_tl_rec.last_update_login;
2883       END IF;
2884       RETURN(l_return_status);
2885     END populate_new_record;
2886     -----------------------------------------------
2887     -- Set_Attributes for:OKL_BILLING_CHARGES_TL --
2888     -----------------------------------------------
2889     FUNCTION Set_Attributes (
2890       p_okl_billing_charges_tl_rec IN  OklBillingChargesTlRecType,
2891       x_okl_billing_charges_tl_rec OUT NOCOPY OklBillingChargesTlRecType
2892     ) RETURN VARCHAR2 IS
2893       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2894     BEGIN
2895       x_okl_billing_charges_tl_rec := p_okl_billing_charges_tl_rec;
2896       x_okl_billing_charges_tl_rec.LANGUAGE := USERENV('LANG');
2897       x_okl_billing_charges_tl_rec.SOURCE_LANG := USERENV('LANG');
2898       RETURN(l_return_status);
2899     END Set_Attributes;
2903                                               '_PVT',
2900   BEGIN
2901     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
2902                                               p_init_msg_list,
2904                                               x_return_status);
2905     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2906       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2907     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2908       RAISE Okl_Api.G_EXCEPTION_ERROR;
2909     END IF;
2910     --- Setting item attributes
2911     l_return_status := Set_Attributes(
2912       p_okl_billing_charges_tl_rec,      -- IN
2913       l_okl_billing_charges_tl_rec);     -- OUT
2914     --- If any errors happen abort API
2915     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2916       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2917     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2918       RAISE Okl_Api.G_EXCEPTION_ERROR;
2919     END IF;
2920     l_return_status := populate_new_record(l_okl_billing_charges_tl_rec, ldefoklbillingchargestlrec);
2921     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
2922       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
2923     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
2924       RAISE Okl_Api.G_EXCEPTION_ERROR;
2925     END IF;
2926     UPDATE  OKL_BILLING_CHARGES_TL
2927     SET CHARGE_TYPE = ldefoklbillingchargestlrec.charge_type,
2928         DESCRIPTION = ldefoklbillingchargestlrec.description,
2929         CREATED_BY = ldefoklbillingchargestlrec.created_by,
2930         CREATION_DATE = ldefoklbillingchargestlrec.creation_date,
2931         LAST_UPDATED_BY = ldefoklbillingchargestlrec.last_updated_by,
2932         LAST_UPDATE_DATE = ldefoklbillingchargestlrec.last_update_date,
2933         LAST_UPDATE_LOGIN = ldefoklbillingchargestlrec.last_update_login
2934     WHERE ID = ldefoklbillingchargestlrec.id
2935       --AND SOURCE_LANG = USERENV('LANG');
2936     AND USERENV('LANG') in (SOURCE_LANG, LANGUAGE);
2937 
2938     UPDATE  OKL_BILLING_CHARGES_TL
2939     SET SFWT_FLAG = 'Y'
2940     WHERE ID = ldefoklbillingchargestlrec.id
2941       AND SOURCE_LANG <> USERENV('LANG');
2942 
2943     x_okl_billing_charges_tl_rec := ldefoklbillingchargestlrec;
2944     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
2945   EXCEPTION
2946     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
2947       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
2948       (
2949         l_api_name,
2950         G_PKG_NAME,
2951         'OKL_API.G_RET_STS_ERROR',
2952         x_msg_count,
2953         x_msg_data,
2954         '_PVT'
2955       );
2956     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
2957       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2958       (
2959         l_api_name,
2960         G_PKG_NAME,
2961         'OKL_API.G_RET_STS_UNEXP_ERROR',
2962         x_msg_count,
2963         x_msg_data,
2964         '_PVT'
2965       );
2966     WHEN OTHERS THEN
2967       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
2968       (
2969         l_api_name,
2970         G_PKG_NAME,
2971         'OTHERS',
2972         x_msg_count,
2973         x_msg_data,
2974         '_PVT'
2975       );
2976   END update_row;
2977   ------------------------------------------
2978   -- update_row for:OKL_BILLING_CHARGES_V --
2979   ------------------------------------------
2980   PROCEDURE update_row(
2981     p_api_version                  IN NUMBER,
2982     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
2983     x_return_status                OUT NOCOPY VARCHAR2,
2984     x_msg_count                    OUT NOCOPY NUMBER,
2985     x_msg_data                     OUT NOCOPY VARCHAR2,
2986     p_bchv_rec                     IN bchv_rec_type,
2987     x_bchv_rec                     OUT NOCOPY bchv_rec_type) IS
2988 
2989     l_api_version                 CONSTANT NUMBER := 1;
2990     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2991     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
2992     l_bchv_rec                     bchv_rec_type := p_bchv_rec;
2993     l_def_bchv_rec                 bchv_rec_type;
2994     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType;
2995     lx_okl_billing_charges_tl_rec  OklBillingChargesTlRecType;
2996     l_bch_rec                      bch_rec_type;
2997     lx_bch_rec                     bch_rec_type;
2998     -------------------------------
2999     -- FUNCTION fill_who_columns --
3000     -------------------------------
3001     FUNCTION fill_who_columns (
3002       p_bchv_rec	IN bchv_rec_type
3003     ) RETURN bchv_rec_type IS
3004       l_bchv_rec	bchv_rec_type := p_bchv_rec;
3005     BEGIN
3006       l_bchv_rec.LAST_UPDATE_DATE := SYSDATE;
3007       l_bchv_rec.LAST_UPDATED_BY := Fnd_Global.USER_ID;
3008       l_bchv_rec.LAST_UPDATE_LOGIN := Fnd_Global.LOGIN_ID;
3009       RETURN(l_bchv_rec);
3010     END fill_who_columns;
3011     ----------------------------------
3012     -- FUNCTION populate_new_record --
3013     ----------------------------------
3014     FUNCTION populate_new_record (
3015       p_bchv_rec	IN bchv_rec_type,
3016       x_bchv_rec	OUT NOCOPY bchv_rec_type
3017     ) RETURN VARCHAR2 IS
3018       l_bchv_rec                     bchv_rec_type;
3019       l_row_notfound                 BOOLEAN := TRUE;
3020       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3024       l_bchv_rec := get_rec(p_bchv_rec, l_row_notfound);
3021     BEGIN
3022       x_bchv_rec := p_bchv_rec;
3023       -- Get current database values
3025       IF (l_row_notfound) THEN
3026         l_return_status := Okl_Api.G_RET_STS_UNEXP_ERROR;
3027       END IF;
3028       IF (x_bchv_rec.id = Okl_Api.G_MISS_NUM)
3029       THEN
3030         x_bchv_rec.id := l_bchv_rec.id;
3031       END IF;
3032       IF (x_bchv_rec.object_version_number = Okl_Api.G_MISS_NUM)
3033       THEN
3034         x_bchv_rec.object_version_number := l_bchv_rec.object_version_number;
3035       END IF;
3036       IF (x_bchv_rec.sfwt_flag = Okl_Api.G_MISS_CHAR)
3037       THEN
3038         x_bchv_rec.sfwt_flag := l_bchv_rec.sfwt_flag;
3039       END IF;
3040       IF (x_bchv_rec.bgh_id = Okl_Api.G_MISS_NUM)
3041       THEN
3042         x_bchv_rec.bgh_id := l_bchv_rec.bgh_id;
3043       END IF;
3044       IF (x_bchv_rec.sequence_number = Okl_Api.G_MISS_NUM)
3045       THEN
3046         x_bchv_rec.sequence_number := l_bchv_rec.sequence_number;
3047       END IF;
3048       IF (x_bchv_rec.contract_id = Okl_Api.G_MISS_NUM)
3049       THEN
3050         x_bchv_rec.contract_id := l_bchv_rec.contract_id;
3051       END IF;
3052       IF (x_bchv_rec.asset_id = Okl_Api.G_MISS_NUM)
3053       THEN
3054         x_bchv_rec.asset_id := l_bchv_rec.asset_id;
3055       END IF;
3056       IF (x_bchv_rec.charge_type = Okl_Api.G_MISS_CHAR)
3057       THEN
3058         x_bchv_rec.charge_type := l_bchv_rec.charge_type;
3059       END IF;
3060       IF (x_bchv_rec.charge_date = Okl_Api.G_MISS_DATE)
3061       THEN
3062         x_bchv_rec.charge_date := l_bchv_rec.charge_date;
3063       END IF;
3064       IF (x_bchv_rec.amount = Okl_Api.G_MISS_NUM)
3065       THEN
3066         x_bchv_rec.amount := l_bchv_rec.amount;
3067       END IF;
3068       IF (x_bchv_rec.currency_code = Okl_Api.G_MISS_CHAR)
3069       THEN
3070         x_bchv_rec.currency_code := l_bchv_rec.currency_code;
3071       END IF;
3072       IF (x_bchv_rec.description = Okl_Api.G_MISS_CHAR)
3073       THEN
3074         x_bchv_rec.description := l_bchv_rec.description;
3075       END IF;
3076       IF (x_bchv_rec.customer_id = Okl_Api.G_MISS_NUM)
3077       THEN
3078         x_bchv_rec.customer_id := l_bchv_rec.customer_id;
3079       END IF;
3080       IF (x_bchv_rec.customer_ref = Okl_Api.G_MISS_CHAR)
3081       THEN
3082         x_bchv_rec.customer_ref := l_bchv_rec.customer_ref;
3083       END IF;
3084       IF (x_bchv_rec.customer_address_id = Okl_Api.G_MISS_NUM)
3085       THEN
3086         x_bchv_rec.customer_address_id := l_bchv_rec.customer_address_id;
3087       END IF;
3088       IF (x_bchv_rec.customer_address_ref = Okl_Api.G_MISS_CHAR)
3089       THEN
3090         x_bchv_rec.customer_address_ref := l_bchv_rec.customer_address_ref;
3091       END IF;
3092       IF (x_bchv_rec.sty_id = Okl_Api.G_MISS_NUM)
3093       THEN
3094         x_bchv_rec.sty_id := l_bchv_rec.sty_id;
3095       END IF;
3096       IF (x_bchv_rec.sty_name = Okl_Api.G_MISS_CHAR)
3097       THEN
3098         x_bchv_rec.sty_name := l_bchv_rec.sty_name;
3099       END IF;
3100       IF (x_bchv_rec.attribute_category = Okl_Api.G_MISS_CHAR)
3101       THEN
3102         x_bchv_rec.attribute_category := l_bchv_rec.attribute_category;
3103       END IF;
3104       IF (x_bchv_rec.attribute1 = Okl_Api.G_MISS_CHAR)
3105       THEN
3106         x_bchv_rec.attribute1 := l_bchv_rec.attribute1;
3107       END IF;
3108       IF (x_bchv_rec.attribute2 = Okl_Api.G_MISS_CHAR)
3109       THEN
3110         x_bchv_rec.attribute2 := l_bchv_rec.attribute2;
3111       END IF;
3112       IF (x_bchv_rec.attribute3 = Okl_Api.G_MISS_CHAR)
3113       THEN
3114         x_bchv_rec.attribute3 := l_bchv_rec.attribute3;
3115       END IF;
3116       IF (x_bchv_rec.attribute4 = Okl_Api.G_MISS_CHAR)
3117       THEN
3118         x_bchv_rec.attribute4 := l_bchv_rec.attribute4;
3119       END IF;
3120       IF (x_bchv_rec.attribute5 = Okl_Api.G_MISS_CHAR)
3121       THEN
3122         x_bchv_rec.attribute5 := l_bchv_rec.attribute5;
3123       END IF;
3124       IF (x_bchv_rec.attribute6 = Okl_Api.G_MISS_CHAR)
3125       THEN
3126         x_bchv_rec.attribute6 := l_bchv_rec.attribute6;
3127       END IF;
3128       IF (x_bchv_rec.attribute7 = Okl_Api.G_MISS_CHAR)
3129       THEN
3130         x_bchv_rec.attribute7 := l_bchv_rec.attribute7;
3131       END IF;
3132       IF (x_bchv_rec.attribute8 = Okl_Api.G_MISS_CHAR)
3133       THEN
3134         x_bchv_rec.attribute8 := l_bchv_rec.attribute8;
3135       END IF;
3136       IF (x_bchv_rec.attribute9 = Okl_Api.G_MISS_CHAR)
3137       THEN
3138         x_bchv_rec.attribute9 := l_bchv_rec.attribute9;
3139       END IF;
3140       IF (x_bchv_rec.attribute10 = Okl_Api.G_MISS_CHAR)
3141       THEN
3142         x_bchv_rec.attribute10 := l_bchv_rec.attribute10;
3143       END IF;
3144       IF (x_bchv_rec.attribute11 = Okl_Api.G_MISS_CHAR)
3145       THEN
3146         x_bchv_rec.attribute11 := l_bchv_rec.attribute11;
3147       END IF;
3148       IF (x_bchv_rec.attribute12 = Okl_Api.G_MISS_CHAR)
3149       THEN
3150         x_bchv_rec.attribute12 := l_bchv_rec.attribute12;
3151       END IF;
3152       IF (x_bchv_rec.attribute13 = Okl_Api.G_MISS_CHAR)
3153       THEN
3157       THEN
3154         x_bchv_rec.attribute13 := l_bchv_rec.attribute13;
3155       END IF;
3156       IF (x_bchv_rec.attribute14 = Okl_Api.G_MISS_CHAR)
3158         x_bchv_rec.attribute14 := l_bchv_rec.attribute14;
3159       END IF;
3160       IF (x_bchv_rec.attribute15 = Okl_Api.G_MISS_CHAR)
3161       THEN
3162         x_bchv_rec.attribute15 := l_bchv_rec.attribute15;
3163       END IF;
3164       IF (x_bchv_rec.interface_attribute1 = Okl_Api.G_MISS_CHAR)
3165       THEN
3166         x_bchv_rec.interface_attribute1 := l_bchv_rec.interface_attribute1;
3167       END IF;
3168       IF (x_bchv_rec.interface_attribute2 = Okl_Api.G_MISS_CHAR)
3169       THEN
3170         x_bchv_rec.interface_attribute2 := l_bchv_rec.interface_attribute2;
3171       END IF;
3172       IF (x_bchv_rec.interface_attribute3 = Okl_Api.G_MISS_CHAR)
3173       THEN
3174         x_bchv_rec.interface_attribute3 := l_bchv_rec.interface_attribute3;
3175       END IF;
3176       IF (x_bchv_rec.interface_attribute4 = Okl_Api.G_MISS_CHAR)
3177       THEN
3178         x_bchv_rec.interface_attribute4 := l_bchv_rec.interface_attribute4;
3179       END IF;
3180       IF (x_bchv_rec.interface_attribute5 = Okl_Api.G_MISS_CHAR)
3181       THEN
3182         x_bchv_rec.interface_attribute5 := l_bchv_rec.interface_attribute5;
3183       END IF;
3184       IF (x_bchv_rec.interface_attribute6 = Okl_Api.G_MISS_CHAR)
3185       THEN
3186         x_bchv_rec.interface_attribute6 := l_bchv_rec.interface_attribute6;
3187       END IF;
3188       IF (x_bchv_rec.interface_attribute7 = Okl_Api.G_MISS_CHAR)
3189       THEN
3190         x_bchv_rec.interface_attribute7 := l_bchv_rec.interface_attribute7;
3191       END IF;
3192       IF (x_bchv_rec.interface_attribute8 = Okl_Api.G_MISS_CHAR)
3193       THEN
3194         x_bchv_rec.interface_attribute8 := l_bchv_rec.interface_attribute8;
3195       END IF;
3196       IF (x_bchv_rec.interface_attribute9 = Okl_Api.G_MISS_CHAR)
3197       THEN
3198         x_bchv_rec.interface_attribute9 := l_bchv_rec.interface_attribute9;
3199       END IF;
3200       IF (x_bchv_rec.interface_attribute10 = Okl_Api.G_MISS_CHAR)
3201       THEN
3202         x_bchv_rec.interface_attribute10 := l_bchv_rec.interface_attribute10;
3203       END IF;
3204       IF (x_bchv_rec.interface_attribute11 = Okl_Api.G_MISS_CHAR)
3205       THEN
3206         x_bchv_rec.interface_attribute11 := l_bchv_rec.interface_attribute11;
3207       END IF;
3208       IF (x_bchv_rec.interface_attribute12 = Okl_Api.G_MISS_CHAR)
3209       THEN
3210         x_bchv_rec.interface_attribute12 := l_bchv_rec.interface_attribute12;
3211       END IF;
3212       IF (x_bchv_rec.interface_attribute13 = Okl_Api.G_MISS_CHAR)
3213       THEN
3214         x_bchv_rec.interface_attribute13 := l_bchv_rec.interface_attribute13;
3215       END IF;
3216       IF (x_bchv_rec.interface_attribute14 = Okl_Api.G_MISS_CHAR)
3217       THEN
3218         x_bchv_rec.interface_attribute14 := l_bchv_rec.interface_attribute14;
3219       END IF;
3220       IF (x_bchv_rec.interface_attribute15 = Okl_Api.G_MISS_CHAR)
3221       THEN
3222         x_bchv_rec.interface_attribute15 := l_bchv_rec.interface_attribute15;
3223       END IF;
3224       IF (x_bchv_rec.request_id = Okl_Api.G_MISS_NUM)
3225       THEN
3226         x_bchv_rec.request_id := l_bchv_rec.request_id;
3227       END IF;
3228       IF (x_bchv_rec.program_application_id = Okl_Api.G_MISS_NUM)
3229       THEN
3230         x_bchv_rec.program_application_id := l_bchv_rec.program_application_id;
3231       END IF;
3232       IF (x_bchv_rec.program_id = Okl_Api.G_MISS_NUM)
3233       THEN
3234         x_bchv_rec.program_id := l_bchv_rec.program_id;
3235       END IF;
3236       IF (x_bchv_rec.program_update_date = Okl_Api.G_MISS_DATE)
3237       THEN
3238         x_bchv_rec.program_update_date := l_bchv_rec.program_update_date;
3239       END IF;
3240       IF (x_bchv_rec.org_id = Okl_Api.G_MISS_NUM)
3241       THEN
3242         x_bchv_rec.org_id := l_bchv_rec.org_id;
3243       END IF;
3244       IF (x_bchv_rec.created_by = Okl_Api.G_MISS_NUM)
3245       THEN
3246         x_bchv_rec.created_by := l_bchv_rec.created_by;
3247       END IF;
3248       IF (x_bchv_rec.creation_date = Okl_Api.G_MISS_DATE)
3249       THEN
3250         x_bchv_rec.creation_date := l_bchv_rec.creation_date;
3251       END IF;
3252       IF (x_bchv_rec.last_updated_by = Okl_Api.G_MISS_NUM)
3253       THEN
3254         x_bchv_rec.last_updated_by := l_bchv_rec.last_updated_by;
3255       END IF;
3256       IF (x_bchv_rec.last_update_date = Okl_Api.G_MISS_DATE)
3257       THEN
3258         x_bchv_rec.last_update_date := l_bchv_rec.last_update_date;
3259       END IF;
3260       IF (x_bchv_rec.last_update_login = Okl_Api.G_MISS_NUM)
3261       THEN
3262         x_bchv_rec.last_update_login := l_bchv_rec.last_update_login;
3263       END IF;
3264       RETURN(l_return_status);
3265     END populate_new_record;
3266     ----------------------------------------------
3267     -- Set_Attributes for:OKL_BILLING_CHARGES_V --
3268     ----------------------------------------------
3269     FUNCTION Set_Attributes (
3270       p_bchv_rec IN  bchv_rec_type,
3271       x_bchv_rec OUT NOCOPY bchv_rec_type
3272     ) RETURN VARCHAR2 IS
3273       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3274     BEGIN
3275       x_bchv_rec := p_bchv_rec;
3276       x_bchv_rec.OBJECT_VERSION_NUMBER := NVL(x_bchv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
3277       -- Begin Post-Generation Change
3281         NVL(DECODE(Fnd_Global.PROG_APPL_ID,   -1,NULL,Fnd_Global.PROG_APPL_ID),
3278       SELECT
3279         NVL(DECODE(Fnd_Global.CONC_REQUEST_ID,-1,NULL,Fnd_Global.CONC_REQUEST_ID),
3280             x_bchv_rec.request_id),
3282             x_bchv_rec.program_application_id),
3283         NVL(DECODE(Fnd_Global.CONC_PROGRAM_ID,-1,NULL,Fnd_Global.CONC_PROGRAM_ID),
3284             x_bchv_rec.program_id),
3285         DECODE(DECODE(Fnd_Global.CONC_REQUEST_ID,-1,NULL,SYSDATE),
3286             NULL,x_bchv_rec.program_update_date,SYSDATE)
3287       INTO
3288         x_bchv_rec.request_id,
3289         x_bchv_rec.program_application_id,
3290         x_bchv_rec.program_id,
3291         x_bchv_rec.program_update_date
3292       FROM   dual;
3293       -- End Post-Generation Change
3294       RETURN(l_return_status);
3295     END Set_Attributes;
3296   BEGIN
3297     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
3298                                               G_PKG_NAME,
3299                                               p_init_msg_list,
3300                                               l_api_version,
3301                                               p_api_version,
3302                                               '_PVT',
3303                                               x_return_status);
3304     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3305       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3306     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3307       RAISE Okl_Api.G_EXCEPTION_ERROR;
3308     END IF;
3309     --- Setting item attributes
3310     l_return_status := Set_Attributes(
3311       p_bchv_rec,                        -- IN
3312       l_bchv_rec);                       -- OUT
3313     --- If any errors happen abort API
3314     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3315       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3316     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3317       RAISE Okl_Api.G_EXCEPTION_ERROR;
3318     END IF;
3319     l_return_status := populate_new_record(l_bchv_rec, l_def_bchv_rec);
3320     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3321       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3322     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3323       RAISE Okl_Api.G_EXCEPTION_ERROR;
3324     END IF;
3325     l_def_bchv_rec := fill_who_columns(l_def_bchv_rec);
3326     --- Validate all non-missing attributes (Item Level Validation)
3327     l_return_status := Validate_Attributes(l_def_bchv_rec);
3328     --- If any errors happen abort API
3329     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3330       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3331     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3332       RAISE Okl_Api.G_EXCEPTION_ERROR;
3333     END IF;
3334     l_return_status := Validate_Record(l_def_bchv_rec);
3335     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3336       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3337     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3338       RAISE Okl_Api.G_EXCEPTION_ERROR;
3339     END IF;
3340 
3341     --------------------------------------
3342     -- Move VIEW record to "Child" records
3343     --------------------------------------
3344     migrate(l_def_bchv_rec, l_okl_billing_charges_tl_rec);
3345     migrate(l_def_bchv_rec, l_bch_rec);
3346     --------------------------------------------
3347     -- Call the UPDATE_ROW for each child record
3348     --------------------------------------------
3349     update_row(
3350       p_init_msg_list,
3351       x_return_status,
3352       x_msg_count,
3353       x_msg_data,
3354       l_okl_billing_charges_tl_rec,
3355       lx_okl_billing_charges_tl_rec
3356     );
3357     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3358       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3359     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3360       RAISE Okl_Api.G_EXCEPTION_ERROR;
3361     END IF;
3362     migrate(lx_okl_billing_charges_tl_rec, l_def_bchv_rec);
3363     update_row(
3364       p_init_msg_list,
3365       x_return_status,
3366       x_msg_count,
3367       x_msg_data,
3368       l_bch_rec,
3369       lx_bch_rec
3370     );
3371     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3372       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3373     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3374       RAISE Okl_Api.G_EXCEPTION_ERROR;
3375     END IF;
3376     migrate(lx_bch_rec, l_def_bchv_rec);
3377     x_bchv_rec := l_def_bchv_rec;
3378     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
3379   EXCEPTION
3380     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
3381       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
3382       (
3383         l_api_name,
3384         G_PKG_NAME,
3385         'OKL_API.G_RET_STS_ERROR',
3386         x_msg_count,
3387         x_msg_data,
3388         '_PVT'
3389       );
3390     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3391       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3392       (
3393         l_api_name,
3394         G_PKG_NAME,
3395         'OKL_API.G_RET_STS_UNEXP_ERROR',
3396         x_msg_count,
3397         x_msg_data,
3398         '_PVT'
3399       );
3400     WHEN OTHERS THEN
3401       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3402       (
3403         l_api_name,
3404         G_PKG_NAME,
3408         '_PVT'
3405         'OTHERS',
3406         x_msg_count,
3407         x_msg_data,
3409       );
3410   END update_row;
3411   ----------------------------------------
3412   -- PL/SQL TBL update_row for:BCHV_TBL --
3413   ----------------------------------------
3414   PROCEDURE update_row(
3415     p_api_version                  IN NUMBER,
3416     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
3417     x_return_status                OUT NOCOPY VARCHAR2,
3418     x_msg_count                    OUT NOCOPY NUMBER,
3419     x_msg_data                     OUT NOCOPY VARCHAR2,
3420     p_bchv_tbl                     IN bchv_tbl_type,
3421     x_bchv_tbl                     OUT NOCOPY bchv_tbl_type) IS
3422 
3423     l_api_version                 CONSTANT NUMBER := 1;
3424     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
3425     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3426     i                              NUMBER := 0;
3427     -- Begin Post-Generation Change
3428     -- overall error status
3429     l_overall_status               VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3430     -- End Post-Generation Change
3431 
3432   BEGIN
3433     Okl_Api.init_msg_list(p_init_msg_list);
3434     -- Make sure PL/SQL table has records in it before passing
3435     IF (p_bchv_tbl.COUNT > 0) THEN
3436       i := p_bchv_tbl.FIRST;
3437       LOOP
3438         update_row (
3439           p_api_version                  => p_api_version,
3440           p_init_msg_list                => Okc_Api.G_FALSE,
3441           x_return_status                => x_return_status,
3442           x_msg_count                    => x_msg_count,
3443           x_msg_data                     => x_msg_data,
3444           p_bchv_rec                     => p_bchv_tbl(i),
3445           x_bchv_rec                     => x_bchv_tbl(i));
3446         -- Begin Post-Generation Change
3447         -- store the highest degree of error
3448         IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
3449            IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
3450               l_overall_status := x_return_status;
3451            END IF;
3452         END IF;
3453         -- End Post-Generation Change
3454         EXIT WHEN (i = p_bchv_tbl.LAST);
3455         i := p_bchv_tbl.NEXT(i);
3456       END LOOP;
3457       -- Begin Post-Generation Change
3458       -- return overall status
3459       x_return_status := l_overall_status;
3460       -- End Post-Generation Change
3461     END IF;
3462   EXCEPTION
3463     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
3464       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
3465       (
3466         l_api_name,
3467         G_PKG_NAME,
3468         'OKL_API.G_RET_STS_ERROR',
3469         x_msg_count,
3470         x_msg_data,
3471         '_PVT'
3472       );
3473     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3474       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3475       (
3476         l_api_name,
3477         G_PKG_NAME,
3478         'OKL_API.G_RET_STS_UNEXP_ERROR',
3479         x_msg_count,
3480         x_msg_data,
3481         '_PVT'
3482       );
3483     WHEN OTHERS THEN
3484       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3485       (
3486         l_api_name,
3487         G_PKG_NAME,
3488         'OTHERS',
3489         x_msg_count,
3490         x_msg_data,
3491         '_PVT'
3492       );
3493   END update_row;
3494 
3495   ---------------------------------------------------------------------------
3496   -- PROCEDURE delete_row
3497   ---------------------------------------------------------------------------
3498   ------------------------------------------
3499   -- delete_row for:OKL_BILLING_CHARGES_B --
3500   ------------------------------------------
3501   PROCEDURE delete_row(
3502     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
3503     x_return_status                OUT NOCOPY VARCHAR2,
3504     x_msg_count                    OUT NOCOPY NUMBER,
3505     x_msg_data                     OUT NOCOPY VARCHAR2,
3506     p_bch_rec                      IN bch_rec_type) IS
3507 
3508     l_api_version                 CONSTANT NUMBER := 1;
3509     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
3510     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3511     l_bch_rec                      bch_rec_type:= p_bch_rec;
3512     l_row_notfound                 BOOLEAN := TRUE;
3513   BEGIN
3514     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
3515                                               p_init_msg_list,
3516                                               '_PVT',
3517                                               x_return_status);
3518     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3519       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3520     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3521       RAISE Okl_Api.G_EXCEPTION_ERROR;
3522     END IF;
3523     DELETE FROM OKL_BILLING_CHARGES_B
3524      WHERE ID = l_bch_rec.id;
3525 
3526     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
3527   EXCEPTION
3528     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
3529       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
3530       (
3531         l_api_name,
3532         G_PKG_NAME,
3533         'OKL_API.G_RET_STS_ERROR',
3534         x_msg_count,
3538     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3535         x_msg_data,
3536         '_PVT'
3537       );
3539       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3540       (
3541         l_api_name,
3542         G_PKG_NAME,
3543         'OKL_API.G_RET_STS_UNEXP_ERROR',
3544         x_msg_count,
3545         x_msg_data,
3546         '_PVT'
3547       );
3548     WHEN OTHERS THEN
3549       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3550       (
3551         l_api_name,
3552         G_PKG_NAME,
3553         'OTHERS',
3554         x_msg_count,
3555         x_msg_data,
3556         '_PVT'
3557       );
3558   END delete_row;
3559   -------------------------------------------
3560   -- delete_row for:OKL_BILLING_CHARGES_TL --
3561   -------------------------------------------
3562   PROCEDURE delete_row(
3563     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
3564     x_return_status                OUT NOCOPY VARCHAR2,
3565     x_msg_count                    OUT NOCOPY NUMBER,
3566     x_msg_data                     OUT NOCOPY VARCHAR2,
3567     p_okl_billing_charges_tl_rec   IN OklBillingChargesTlRecType) IS
3568 
3569     l_api_version                 CONSTANT NUMBER := 1;
3570     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
3571     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3572     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType:= p_okl_billing_charges_tl_rec;
3573     l_row_notfound                 BOOLEAN := TRUE;
3574     -----------------------------------------------
3575     -- Set_Attributes for:OKL_BILLING_CHARGES_TL --
3576     -----------------------------------------------
3577     FUNCTION Set_Attributes (
3578       p_okl_billing_charges_tl_rec IN  OklBillingChargesTlRecType,
3579       x_okl_billing_charges_tl_rec OUT NOCOPY OklBillingChargesTlRecType
3580     ) RETURN VARCHAR2 IS
3581       l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3582     BEGIN
3583       x_okl_billing_charges_tl_rec := p_okl_billing_charges_tl_rec;
3584       x_okl_billing_charges_tl_rec.LANGUAGE := USERENV('LANG');
3585       RETURN(l_return_status);
3586     END Set_Attributes;
3587   BEGIN
3588     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
3589                                               p_init_msg_list,
3590                                               '_PVT',
3591                                               x_return_status);
3592     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3593       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3594     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3595       RAISE Okl_Api.G_EXCEPTION_ERROR;
3596     END IF;
3597     --- Setting item attributes
3598     l_return_status := Set_Attributes(
3599       p_okl_billing_charges_tl_rec,      -- IN
3600       l_okl_billing_charges_tl_rec);     -- OUT
3601     --- If any errors happen abort API
3602     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3603       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3604     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3605       RAISE Okl_Api.G_EXCEPTION_ERROR;
3606     END IF;
3607     DELETE FROM OKL_BILLING_CHARGES_TL
3608      WHERE ID = l_okl_billing_charges_tl_rec.id;
3609 
3610     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
3611   EXCEPTION
3612     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
3613       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
3614       (
3615         l_api_name,
3616         G_PKG_NAME,
3617         'OKL_API.G_RET_STS_ERROR',
3618         x_msg_count,
3619         x_msg_data,
3620         '_PVT'
3621       );
3622     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3623       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3624       (
3625         l_api_name,
3626         G_PKG_NAME,
3627         'OKL_API.G_RET_STS_UNEXP_ERROR',
3628         x_msg_count,
3629         x_msg_data,
3630         '_PVT'
3631       );
3632     WHEN OTHERS THEN
3633       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3634       (
3635         l_api_name,
3636         G_PKG_NAME,
3637         'OTHERS',
3638         x_msg_count,
3639         x_msg_data,
3640         '_PVT'
3641       );
3642   END delete_row;
3643   ------------------------------------------
3644   -- delete_row for:OKL_BILLING_CHARGES_V --
3645   ------------------------------------------
3646   PROCEDURE delete_row(
3647     p_api_version                  IN NUMBER,
3648     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
3649     x_return_status                OUT NOCOPY VARCHAR2,
3650     x_msg_count                    OUT NOCOPY NUMBER,
3651     x_msg_data                     OUT NOCOPY VARCHAR2,
3652     p_bchv_rec                     IN bchv_rec_type) IS
3653 
3654     l_api_version                 CONSTANT NUMBER := 1;
3655     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
3656     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3657     l_bchv_rec                     bchv_rec_type := p_bchv_rec;
3658     l_okl_billing_charges_tl_rec   OklBillingChargesTlRecType;
3659     l_bch_rec                      bch_rec_type;
3660   BEGIN
3661     l_return_status := Okl_Api.START_ACTIVITY(l_api_name,
3662                                               G_PKG_NAME,
3666                                               '_PVT',
3663                                               p_init_msg_list,
3664                                               l_api_version,
3665                                               p_api_version,
3667                                               x_return_status);
3668     IF (l_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3669       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3670     ELSIF (l_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3671       RAISE Okl_Api.G_EXCEPTION_ERROR;
3672     END IF;
3673     --------------------------------------
3674     -- Move VIEW record to "Child" records
3675     --------------------------------------
3676     migrate(l_bchv_rec, l_okl_billing_charges_tl_rec);
3677     migrate(l_bchv_rec, l_bch_rec);
3678     --------------------------------------------
3679     -- Call the DELETE_ROW for each child record
3680     --------------------------------------------
3681     delete_row(
3682       p_init_msg_list,
3683       x_return_status,
3684       x_msg_count,
3685       x_msg_data,
3686       l_okl_billing_charges_tl_rec
3687     );
3688     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3689       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3690     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3691       RAISE Okl_Api.G_EXCEPTION_ERROR;
3692     END IF;
3693     delete_row(
3694       p_init_msg_list,
3695       x_return_status,
3696       x_msg_count,
3697       x_msg_data,
3698       l_bch_rec
3699     );
3700     IF (x_return_status = Okl_Api.G_RET_STS_UNEXP_ERROR) THEN
3701       RAISE Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR;
3702     ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
3703       RAISE Okl_Api.G_EXCEPTION_ERROR;
3704     END IF;
3705     Okl_Api.END_ACTIVITY(x_msg_count, x_msg_data);
3706   EXCEPTION
3707     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
3708       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
3709       (
3710         l_api_name,
3711         G_PKG_NAME,
3712         'OKL_API.G_RET_STS_ERROR',
3713         x_msg_count,
3714         x_msg_data,
3715         '_PVT'
3716       );
3717     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3718       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3719       (
3720         l_api_name,
3721         G_PKG_NAME,
3722         'OKL_API.G_RET_STS_UNEXP_ERROR',
3723         x_msg_count,
3724         x_msg_data,
3725         '_PVT'
3726       );
3727     WHEN OTHERS THEN
3728       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3729       (
3730         l_api_name,
3731         G_PKG_NAME,
3732         'OTHERS',
3733         x_msg_count,
3734         x_msg_data,
3735         '_PVT'
3736       );
3737   END delete_row;
3738   ----------------------------------------
3739   -- PL/SQL TBL delete_row for:BCHV_TBL --
3740   ----------------------------------------
3741   PROCEDURE delete_row(
3742     p_api_version                  IN NUMBER,
3743     p_init_msg_list                IN VARCHAR2 DEFAULT Okc_Api.G_FALSE,
3744     x_return_status                OUT NOCOPY VARCHAR2,
3745     x_msg_count                    OUT NOCOPY NUMBER,
3746     x_msg_data                     OUT NOCOPY VARCHAR2,
3747     p_bchv_tbl                     IN bchv_tbl_type) IS
3748 
3749     l_api_version                 CONSTANT NUMBER := 1;
3750     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
3751     l_return_status                VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3752     i                              NUMBER := 0;
3753     -- Begin Post-Generation Change
3754     -- overall error status
3755     l_overall_status               VARCHAR2(1) := Okl_Api.G_RET_STS_SUCCESS;
3756     -- End Post-Generation Change
3757 
3758   BEGIN
3759     Okl_Api.init_msg_list(p_init_msg_list);
3760     -- Make sure PL/SQL table has records in it before passing
3761     IF (p_bchv_tbl.COUNT > 0) THEN
3762       i := p_bchv_tbl.FIRST;
3763       LOOP
3764         delete_row (
3765           p_api_version                  => p_api_version,
3766           p_init_msg_list                => Okc_Api.G_FALSE,
3767           x_return_status                => x_return_status,
3768           x_msg_count                    => x_msg_count,
3769           x_msg_data                     => x_msg_data,
3770           p_bchv_rec                     => p_bchv_tbl(i));
3771         -- Begin Post-Generation Change
3772         -- store the highest degree of error
3773         IF x_return_status <> Okl_Api.G_RET_STS_SUCCESS THEN
3774            IF l_overall_status <> Okl_Api.G_RET_STS_UNEXP_ERROR THEN
3775               l_overall_status := x_return_status;
3776            END IF;
3777         END IF;
3778         -- End Post-Generation Change
3779         EXIT WHEN (i = p_bchv_tbl.LAST);
3780         i := p_bchv_tbl.NEXT(i);
3781       END LOOP;
3782       -- Begin Post-Generation Change
3783       -- return overall status
3784       x_return_status := l_overall_status;
3785       -- End Post-Generation Change
3786     END IF;
3787   EXCEPTION
3788     WHEN Okl_Api.G_EXCEPTION_ERROR THEN
3789       x_return_status := Okl_Api.HANDLE_EXCEPTIONS
3790       (
3791         l_api_name,
3792         G_PKG_NAME,
3793         'OKL_API.G_RET_STS_ERROR',
3794         x_msg_count,
3795         x_msg_data,
3796         '_PVT'
3797       );
3798     WHEN Okl_Api.G_EXCEPTION_UNEXPECTED_ERROR THEN
3799       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3800       (
3801         l_api_name,
3802         G_PKG_NAME,
3803         'OKL_API.G_RET_STS_UNEXP_ERROR',
3804         x_msg_count,
3805         x_msg_data,
3806         '_PVT'
3807       );
3808     WHEN OTHERS THEN
3809       x_return_status :=Okl_Api.HANDLE_EXCEPTIONS
3810       (
3811         l_api_name,
3812         G_PKG_NAME,
3813         'OTHERS',
3814         x_msg_count,
3815         x_msg_data,
3816         '_PVT'
3817       );
3818   END delete_row;
3819 END Okl_Bch_Pvt;