DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_SAO_PVT

Source


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