DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_SFE_PVT

Source


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