DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_SAO_PVT

Source


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