DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_VFA_PVT

Source


1 PACKAGE BODY OKL_VFA_PVT AS
2 /* $Header: OKLSVFAB.pls 120.3 2006/11/13 07:37:41 dpsingh noship $ */
3 
4 /************************ HAND-CODED *********************************/
5   G_NO_MATCHING_RECORD         CONSTANT VARCHAR2(200) := 'OKL_LLA_NO_MATCHING_RECORD';
6   G_TABLE_TOKEN                CONSTANT VARCHAR2(200) := 'OKL_API.G_CHILD_TABLE_TOKEN';
7   G_FIN_LINE_LTY_CODE                   OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'FREE_FORM1';
8   G_MODEL_LINE_LTY_CODE                 OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'ITEM';
9   G_ADDON_LINE_LTY_CODE                 OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'ADD_ITEM';
10   G_FA_LINE_LTY_CODE                    OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'FIXED_ASSET';
11   G_INST_LINE_LTY_CODE                  OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'FREE_FORM2';
12   G_IB_LINE_LTY_CODE                    OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'INST_ITEM';
13   G_EXCEPTION_STOP_VALIDATION            EXCEPTION;
14 ---------------------------------------------------------------------------------
15 -- Start of Commnets
16 -- Badrinath Kuchibholta
17 -- Procedure Name       : Validate_dnz_chr_id
18 -- Description          : FK validation with OKL_K_HEADERS_V
19 -- Business Rules       :
20 -- Parameters           : OUT Return Status, IN Rec Info
21 -- Version              : 1.0
22 -- End of Commnets
23 
24   PROCEDURE validate_dnz_chr_id(x_return_status OUT NOCOPY VARCHAR2,
25                                 p_dnz_chr_id    IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
26 
27     ln_dummy number := 0;
28 
29     CURSOR c_dnz_chr_id_validate(p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
30     SELECT 1
31     FROM DUAL
32     WHERE EXISTS (SELECT id
33                   FROM okc_k_headers_b
34                   WHERE id = p_dnz_chr_id);
35   BEGIN
36     -- initialize return status
37     x_return_status := OKL_API.G_RET_STS_SUCCESS;
38     -- data is required
39     IF (p_dnz_chr_id = OKL_API.G_MISS_NUM) OR
40        (p_dnz_chr_id IS NULL) THEN
41        -- halt validation as it is a required field
42        RAISE G_EXCEPTION_STOP_VALIDATION;
43     END IF;
44     OPEN  c_dnz_chr_id_validate(p_dnz_chr_id);
45     IF c_dnz_chr_id_validate%NOTFOUND THEN
46        -- halt validation as it has no parent record
47        RAISE G_EXCEPTION_HALT_VALIDATION;
48     END IF;
49     FETCH c_dnz_chr_id_validate into ln_dummy;
50     CLOSE c_dnz_chr_id_validate;
51     IF (ln_dummy = 0) then
52        -- halt validation as it has no parent record
53        RAISE G_EXCEPTION_HALT_VALIDATION;
54     END IF;
55   EXCEPTION
56     WHEN G_EXCEPTION_STOP_VALIDATION then
57     -- We are here since the field is required
58     -- store SQL error message on message stack
59     OKL_API.set_message(p_app_name     => G_APP_NAME,
60                         p_msg_name     => G_REQUIRED_VALUE,
61                         p_token1       => G_COL_NAME_TOKEN,
62                         p_token1_value => 'dnz_chr_id');
63     -- Notify Error
64     x_return_status := OKL_API.G_RET_STS_ERROR;
65     WHEN G_EXCEPTION_HALT_VALIDATION then
66     -- We are here b'cause we have no parent record
67     -- store SQL error message on message stack
68     OKL_API.set_message(p_app_name     => G_APP_NAME,
69                         p_msg_name     => G_NO_MATCHING_RECORD,
70                         p_token1       => G_COL_NAME_TOKEN,
71                         p_token1_value => 'dnz_chr_id');
72     -- If the cursor is open then it has to be closed
73     IF c_dnz_chr_id_validate%ISOPEN THEN
74        CLOSE c_dnz_chr_id_validate;
75     END IF;
76     -- notify caller of an error
77     x_return_status := OKL_API.G_RET_STS_ERROR;
78     WHEN OTHERS THEN
79     -- store SQL error message on message stack
80     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
81                         p_msg_name     => G_UNEXPECTED_ERROR,
82                         p_token1       => G_SQLCODE_TOKEN,
83                         p_token1_value => SQLCODE,
84                         p_token2       => G_SQLERRM_TOKEN,
85                         p_token2_value => SQLERRM);
86     -- If the cursor is open then it has to be closed
87     IF c_dnz_chr_id_validate%ISOPEN THEN
88        CLOSE c_dnz_chr_id_validate;
89     END IF;
90     -- notify caller of an error as UNEXPETED error
91     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
92   END validate_dnz_chr_id;
93 ---------------------------------------------------------------------------------
94 -- Start of Commnets
95 -- Badrinath Kuchibholta
96 -- Procedure Name       : Validate_fa_cle_id
97 -- Description          : FK validation with OKL_K_LINES_V
98 -- Business Rules       :
99 -- Parameters           : OUT Return Status, IN Rec Info
100 -- Version              : 1.0
101 -- End of Commnets
102 
103   PROCEDURE validate_fa_cle_id(x_return_status OUT NOCOPY VARCHAR2,
104                                p_id IN  OKC_K_LINES_V.ID%TYPE) IS
105 
106     ln_dummy number := 0;
107     l_lty_code              OKC_LINE_STYLES_V.LTY_CODE%TYPE;
108 
109     CURSOR get_lty_code(p_cle_id IN OKC_K_LINES_V.ID%TYPE) IS
110     SELECT lse.lty_code
111     FROM okc_k_lines_b cle,
112          okc_line_styles_b lse
113     WHERE cle.id = p_cle_id
114     AND cle.lse_id = lse.id;
115 
116     CURSOR c_cle_id_validate1(p_cle_id IN OKC_K_LINES_V.ID%TYPE,
117                               p_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
118     SELECT 1
119     FROM DUAL
120     WHERE EXISTS (SELECT t1.id
121                   FROM okc_line_styles_b t1
122                        ,okc_line_styles_b t2
123                        ,okc_subclass_top_line t3
124                        ,okc_k_lines_b cle
125                   WHERE t1.lty_code = p_code
126                   AND cle.id = p_cle_id
127                   AND cle.lse_id = t1.id
128                   AND t2.lty_code = G_FIN_LINE_LTY_CODE
129                   AND t1.lse_parent_id = t2.id
130                   AND t3.lse_id = t2.id
131                   AND t3.scs_code = 'LEASE');
132 
133 
134   BEGIN
135     -- initialize return status
136     x_return_status := OKL_API.G_RET_STS_SUCCESS;
137     -- data is required
138     IF (p_id = OKL_API.G_MISS_NUM) OR
139        (p_id IS NULL) THEN
140        -- halt validation as it is a required field
141        RAISE G_EXCEPTION_STOP_VALIDATION;
142     END IF;
143 
144     OPEN get_lty_code(p_id);
145     IF get_lty_code%NOTFOUND THEN
146        -- halt validation as it has no parent record
147        RAISE G_EXCEPTION_HALT_VALIDATION;
148     END IF;
149     FETCH get_lty_code into l_lty_code;
150     CLOSE get_lty_code;
151 
152     IF l_lty_code = G_FA_LINE_LTY_CODE THEN
153       OPEN  c_cle_id_validate1(p_id,
154                                l_lty_code);
155       IF c_cle_id_validate1%NOTFOUND THEN
156          -- halt validation as it has no parent record
157          RAISE G_EXCEPTION_HALT_VALIDATION;
158       END IF;
159       FETCH c_cle_id_validate1 into ln_dummy;
160       CLOSE c_cle_id_validate1;
161       IF (ln_dummy = 0) then
162          -- halt validation as it has no parent record
163          RAISE G_EXCEPTION_HALT_VALIDATION;
164       END IF;
165     ELSE
166       -- halt validation as it has no parent record
167       RAISE G_EXCEPTION_HALT_VALIDATION;
168     END IF;
169   EXCEPTION
170     WHEN G_EXCEPTION_STOP_VALIDATION then
171     -- We are here since the field is required
172     -- store SQL error message on message stack
173     OKL_API.set_message(p_app_name     => G_APP_NAME,
174                         p_msg_name     => G_REQUIRED_VALUE,
175                         p_token1       => G_COL_NAME_TOKEN,
176                         p_token1_value => 'fa_cle_id');
177     -- Notify Error
178     x_return_status := OKL_API.G_RET_STS_ERROR;
179     WHEN G_EXCEPTION_HALT_VALIDATION then
180     -- We are here b'cause we have no parent record
181     -- store SQL error message on message stack
182     OKL_API.set_message(p_app_name     => G_APP_NAME,
183                         p_msg_name     => G_NO_MATCHING_RECORD,
184                         p_token1       => G_COL_NAME_TOKEN,
185                         p_token1_value => 'fa_cle_id');
186     -- If the cursor is open then it has to be closed
187     IF get_lty_code%ISOPEN THEN
188        CLOSE get_lty_code;
189     END IF;
190     IF c_cle_id_validate1%ISOPEN THEN
191        CLOSE c_cle_id_validate1;
192     END IF;
193     -- notify caller of an error
194     x_return_status := OKL_API.G_RET_STS_ERROR;
195     WHEN OTHERS THEN
196     -- store SQL error message on message stack
197     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
198                         p_msg_name     => G_UNEXPECTED_ERROR,
199                         p_token1       => G_SQLCODE_TOKEN,
200                         p_token1_value => SQLCODE,
201                         p_token2       => G_SQLERRM_TOKEN,
202                         p_token2_value => SQLERRM);
203     -- If the cursor is open then it has to be closed
204     IF get_lty_code%ISOPEN THEN
205        CLOSE get_lty_code;
206     END IF;
207     IF c_cle_id_validate1%ISOPEN THEN
208        CLOSE c_cle_id_validate1;
209     END IF;
210     -- notify caller of an error as UNEXPETED error
211     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
212   END validate_fa_cle_id;
213 
214   -- Added by dpsingh
215 ---------------------------------------------------------------------------
216   -- PROCEDURE Validate_LE_Id
217   ---------------------------------------------------------------------------
218   -- Start of comments
219   --
220   -- Procedure Name   : Validate_LE_Id
221   -- Description      :
222   -- Business Rules   :
223   -- Parameters       :
224   -- Version          : 1.0
225   -- End of comments
226   ---------------------------------------------------------------------------
227   PROCEDURE Validate_LE_Id(p_legal_entity_id IN  NUMBER
228                             ,x_return_status OUT NOCOPY VARCHAR2)
229   IS
230   l_exists                       NUMBER(1);
231   item_not_found_error   EXCEPTION;
232 
233   BEGIN
234 
235     x_return_status := Okc_Api.G_RET_STS_SUCCESS;
236     IF (p_legal_entity_id = OKL_API.G_MISS_NUM OR
237          p_legal_entity_id IS NULL)
238      THEN
239        OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'legal_entity_id');
240        x_return_status := OKL_API.G_RET_STS_ERROR;
241     ELSIF (p_legal_entity_id IS NOT NULL) AND
242        (p_legal_entity_id <> Okl_Api.G_MISS_NUM) THEN
243            l_exists  := OKL_LEGAL_ENTITY_UTIL.check_le_id_exists(p_legal_entity_id) ;
244            IF (l_exists<>1) THEN
245               Okl_Api.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'LEGAL_ENTITY_ID');
246               RAISE item_not_found_error;
247            END IF;
248      END IF;
249 
250   EXCEPTION
251     WHEN item_not_found_error THEN
252       x_return_status := Okc_Api.G_RET_STS_ERROR;
253 
254     WHEN OTHERS THEN
255       -- store SQL error message on message stack for caller
256       Okc_Api.SET_MESSAGE(p_app_name       => g_app_name
257                           ,p_msg_name      => g_unexpected_error
258                           ,p_token1        => g_sqlcode_token
259                           ,p_token1_value  => SQLCODE
260                           ,p_token2        => g_sqlerrm_token
261                           ,p_token2_value  => SQLERRM);
262 
263        -- notify caller of an UNEXPECTED error
264        x_return_status := Okc_Api.G_RET_STS_UNEXP_ERROR;
265 
266   END Validate_LE_Id;
267 
268 ------------------------------------------------------------------------------------------------
269   ---------------------------------------------------------------------------
270   -- FUNCTION get_seq_id
271   ---------------------------------------------------------------------------
272   FUNCTION get_seq_id RETURN NUMBER IS
273   BEGIN
274     RETURN(okc_p_util.raw_to_number(sys_guid()));
275   END get_seq_id;
276 
277   ---------------------------------------------------------------------------
278   -- PROCEDURE qc
279   ---------------------------------------------------------------------------
280   PROCEDURE qc IS
281   BEGIN
282     null;
283   END qc;
284 
285   ---------------------------------------------------------------------------
286   -- PROCEDURE change_version
287   ---------------------------------------------------------------------------
288   PROCEDURE change_version IS
289   BEGIN
290     null;
291   END change_version;
292 
293   ---------------------------------------------------------------------------
294   -- PROCEDURE api_copy
295   ---------------------------------------------------------------------------
296   PROCEDURE api_copy IS
297   BEGIN
298     null;
299   END api_copy;
300 
301   ---------------------------------------------------------------------------
302   -- FUNCTION get_rec for: OKL_CONTRACT_ASSET_HV
303   ---------------------------------------------------------------------------
304   FUNCTION get_rec (
305     p_vfav_rec                     IN vfav_rec_type,
306     x_no_data_found                OUT NOCOPY BOOLEAN
307   ) RETURN vfav_rec_type IS
308     CURSOR okl_contract_asset_hv_pk_csr (p_id IN NUMBER) IS
309     SELECT ID,
310            MAJOR_VERSION,
311            OBJECT_VERSION_NUMBER,
312            DNZ_CHR_ID,
313            FA_CLE_ID,
314            NAME,
315            DESCRIPTION,
316            ASSET_ID,
317            ASSET_NUMBER,
318            CORPORATE_BOOK,
319            LIFE_IN_MONTHS,
320            ORIGINAL_COST,
321            COST,
322            ADJUSTED_COST,
323            CURRENT_UNITS,
324            NEW_USED,
325            IN_SERVICE_DATE,
326            MODEL_NUMBER,
327            ASSET_TYPE,
328            SALVAGE_VALUE,
329            PERCENT_SALVAGE_VALUE,
330            DEPRECIATION_CATEGORY,
331            DEPRN_START_DATE,
332            DEPRN_METHOD_CODE,
333            RATE_ADJUSTMENT_FACTOR,
334            BASIC_RATE,
335            ADJUSTED_RATE,
336            START_DATE_ACTIVE,
337            END_DATE_ACTIVE,
338            STATUS,
339            PRIMARY_UOM_CODE,
340            RECOVERABLE_COST,
341 --Bug# 2981308 :
342            ASSET_KEY_ID,
343            ATTRIBUTE_CATEGORY,
344            ATTRIBUTE1,
345            ATTRIBUTE2,
346            ATTRIBUTE3,
347            ATTRIBUTE4,
348            ATTRIBUTE5,
349            ATTRIBUTE6,
350            ATTRIBUTE7,
351            ATTRIBUTE8,
352            ATTRIBUTE9,
353            ATTRIBUTE10,
354            ATTRIBUTE11,
355            ATTRIBUTE12,
356            ATTRIBUTE13,
357            ATTRIBUTE14,
358            ATTRIBUTE15,
359            CREATED_BY,
360            CREATION_DATE,
361            LAST_UPDATED_BY,
362            LAST_UPDATE_DATE,
363            LAST_UPDATE_LOGIN,
364 	   --Added by dpsingh for LE uptake
365            LEGAL_ENTITY_ID
366       FROM Okl_Contract_Asset_Hv
367       WHERE Okl_Contract_Asset_Hv.ID = p_id;
368     l_okl_contract_asset_hv_pk     okl_contract_asset_hv_pk_csr%ROWTYPE;
369     l_vfav_rec                     vfav_rec_type;
370   BEGIN
371     x_no_data_found := TRUE;
372     -- Get current database values
373     OPEN okl_contract_asset_hv_pk_csr(p_vfav_rec.id);
374     FETCH okl_contract_asset_hv_pk_csr INTO
375               l_vfav_rec.id,
376               l_vfav_rec.major_version,
377               l_vfav_rec.object_version_number,
378               l_vfav_rec.dnz_chr_id,
379               l_vfav_rec.fa_cle_id,
380               l_vfav_rec.name,
381               l_vfav_rec.description,
382               l_vfav_rec.asset_id,
383               l_vfav_rec.asset_number,
384               l_vfav_rec.corporate_book,
385               l_vfav_rec.life_in_months,
386               l_vfav_rec.original_cost,
387               l_vfav_rec.cost,
388               l_vfav_rec.adjusted_cost,
389               l_vfav_rec.current_units,
390               l_vfav_rec.new_used,
391               l_vfav_rec.in_service_date,
392               l_vfav_rec.model_number,
393               l_vfav_rec.asset_type,
394               l_vfav_rec.salvage_value,
395               l_vfav_rec.percent_salvage_value,
396               l_vfav_rec.depreciation_category,
397               l_vfav_rec.deprn_start_date,
398               l_vfav_rec.deprn_method_code,
399               l_vfav_rec.rate_adjustment_factor,
400               l_vfav_rec.basic_rate,
401               l_vfav_rec.adjusted_rate,
402               l_vfav_rec.start_date_active,
403               l_vfav_rec.end_date_active,
404               l_vfav_rec.status,
405               l_vfav_rec.primary_uom_code,
406               l_vfav_rec.recoverable_cost,
407 --Bug# 2981308 :
408               l_vfav_rec.asset_key_id,
409               l_vfav_rec.attribute_category,
410               l_vfav_rec.attribute1,
411               l_vfav_rec.attribute2,
412               l_vfav_rec.attribute3,
413               l_vfav_rec.attribute4,
414               l_vfav_rec.attribute5,
415               l_vfav_rec.attribute6,
416               l_vfav_rec.attribute7,
417               l_vfav_rec.attribute8,
418               l_vfav_rec.attribute9,
419               l_vfav_rec.attribute10,
420               l_vfav_rec.attribute11,
421               l_vfav_rec.attribute12,
422               l_vfav_rec.attribute13,
423               l_vfav_rec.attribute14,
424               l_vfav_rec.attribute15,
425               l_vfav_rec.created_by,
426               l_vfav_rec.creation_date,
427               l_vfav_rec.last_updated_by,
428               l_vfav_rec.last_update_date,
429               l_vfav_rec.last_update_login,
430 	      --Added by dpsingh for LE uptake
431                l_vfav_rec.legal_entity_id;
432     x_no_data_found := okl_contract_asset_hv_pk_csr%NOTFOUND;
433     CLOSE okl_contract_asset_hv_pk_csr;
434     RETURN(l_vfav_rec);
435   END get_rec;
436   ------------------------------------------------------------------
437   -- This version of get_rec sets error messages if no data found --
438   ------------------------------------------------------------------
439   FUNCTION get_rec (
440     p_vfav_rec                     IN vfav_rec_type,
441     x_return_status                OUT NOCOPY VARCHAR2
442   ) RETURN vfav_rec_type IS
443     l_vfav_rec                     vfav_rec_type;
444     l_row_notfound                 BOOLEAN := TRUE;
445     l_return_status       VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
446   BEGIN
447     l_vfav_rec := get_rec(p_vfav_rec, l_row_notfound);
448     IF (l_row_notfound) THEN
449       x_return_status := OKL_API.G_RET_STS_ERROR;
450     END IF;
451     x_return_status:= l_return_status;
452     RETURN(l_vfav_rec);
453   END get_rec;
454   -----------------------------------------------------------
455   -- So we don't have to pass an "l_row_notfound" variable --
456   -----------------------------------------------------------
457   FUNCTION get_rec (
458     p_vfav_rec                     IN vfav_rec_type
459   ) RETURN vfav_rec_type IS
460     l_row_not_found                BOOLEAN := TRUE;
461   BEGIN
462     RETURN(get_rec(p_vfav_rec, l_row_not_found));
463   END get_rec;
464   ---------------------------------------------------------------------------
465   -- FUNCTION get_rec for: OKL_CONTRACT_ASSET_H
466   ---------------------------------------------------------------------------
467   FUNCTION get_rec (
468     p_vfa_rec                     IN vfa_rec_type,
469     x_no_data_found                OUT NOCOPY BOOLEAN
470   ) RETURN vfa_rec_type IS
471     CURSOR okl_contract_asset_h_pk_csr (p_id IN NUMBER) IS
472     SELECT ID,
473            MAJOR_VERSION,
474            OBJECT_VERSION_NUMBER,
475            DNZ_CHR_ID,
476            FA_CLE_ID,
477            NAME,
478            DESCRIPTION,
479            ASSET_ID,
480            ASSET_NUMBER,
481            CORPORATE_BOOK,
482            LIFE_IN_MONTHS,
483            ORIGINAL_COST,
484            COST,
485            ADJUSTED_COST,
486            CURRENT_UNITS,
487            NEW_USED,
488            IN_SERVICE_DATE,
489            MODEL_NUMBER,
490            ASSET_TYPE,
491            SALVAGE_VALUE,
492            PERCENT_SALVAGE_VALUE,
493            DEPRECIATION_CATEGORY,
494            DEPRN_START_DATE,
495            DEPRN_METHOD_CODE,
496            RATE_ADJUSTMENT_FACTOR,
497            BASIC_RATE,
498            ADJUSTED_RATE,
499            START_DATE_ACTIVE,
500            END_DATE_ACTIVE,
501            STATUS,
502            PRIMARY_UOM_CODE,
503            RECOVERABLE_COST,
504 --Bug# 2981308 :
505            ASSET_KEY_ID,
506            ATTRIBUTE_CATEGORY,
507            ATTRIBUTE1,
508            ATTRIBUTE2,
509            ATTRIBUTE3,
510            ATTRIBUTE4,
511            ATTRIBUTE5,
512            ATTRIBUTE6,
513            ATTRIBUTE7,
514            ATTRIBUTE8,
515            ATTRIBUTE9,
516            ATTRIBUTE10,
517            ATTRIBUTE11,
518            ATTRIBUTE12,
519            ATTRIBUTE13,
520            ATTRIBUTE14,
521            ATTRIBUTE15,
522            CREATED_BY,
523            CREATION_DATE,
524            LAST_UPDATED_BY,
525            LAST_UPDATE_DATE,
526            LAST_UPDATE_LOGIN,
527            --Added by dpsingh for LE uptake
528            LEGAL_ENTITY_ID
529       FROM Okl_Contract_Asset_H
530       WHERE Okl_Contract_Asset_H.ID = p_id;
531     l_okl_contract_asset_h_pk     okl_contract_asset_h_pk_csr%ROWTYPE;
532     l_vfa_rec                     vfa_rec_type;
533   BEGIN
534     x_no_data_found := TRUE;
535     -- Get current database values
536     OPEN okl_contract_asset_h_pk_csr(p_vfa_rec.id);
537     FETCH okl_contract_asset_h_pk_csr INTO
538               l_vfa_rec.id,
539               l_vfa_rec.major_version,
540               l_vfa_rec.object_version_number,
541               l_vfa_rec.dnz_chr_id,
542               l_vfa_rec.fa_cle_id,
543               l_vfa_rec.name,
544               l_vfa_rec.description,
545               l_vfa_rec.asset_id,
546               l_vfa_rec.asset_number,
547               l_vfa_rec.corporate_book,
548               l_vfa_rec.life_in_months,
549               l_vfa_rec.original_cost,
550               l_vfa_rec.cost,
551               l_vfa_rec.adjusted_cost,
552               l_vfa_rec.current_units,
553               l_vfa_rec.new_used,
554               l_vfa_rec.in_service_date,
555               l_vfa_rec.model_number,
556               l_vfa_rec.asset_type,
557               l_vfa_rec.salvage_value,
558               l_vfa_rec.percent_salvage_value,
559               l_vfa_rec.depreciation_category,
560               l_vfa_rec.deprn_start_date,
561               l_vfa_rec.deprn_method_code,
562               l_vfa_rec.rate_adjustment_factor,
563               l_vfa_rec.basic_rate,
564               l_vfa_rec.adjusted_rate,
565               l_vfa_rec.start_date_active,
566               l_vfa_rec.end_date_active,
567               l_vfa_rec.status,
568               l_vfa_rec.primary_uom_code,
569               l_vfa_rec.recoverable_cost,
570 --Bug# 2981308
571               l_vfa_rec.asset_key_id,
572               l_vfa_rec.attribute_category,
573               l_vfa_rec.attribute1,
574               l_vfa_rec.attribute2,
575               l_vfa_rec.attribute3,
576               l_vfa_rec.attribute4,
577               l_vfa_rec.attribute5,
578               l_vfa_rec.attribute6,
579               l_vfa_rec.attribute7,
580               l_vfa_rec.attribute8,
581               l_vfa_rec.attribute9,
582               l_vfa_rec.attribute10,
583               l_vfa_rec.attribute11,
584               l_vfa_rec.attribute12,
585               l_vfa_rec.attribute13,
586               l_vfa_rec.attribute14,
587               l_vfa_rec.attribute15,
588               l_vfa_rec.created_by,
589               l_vfa_rec.creation_date,
590               l_vfa_rec.last_updated_by,
591               l_vfa_rec.last_update_date,
592               l_vfa_rec.last_update_login,
593 	      --Added by dpsingh for LE uptake
594                l_vfa_rec.legal_entity_id;
595     x_no_data_found := okl_contract_asset_h_pk_csr%NOTFOUND;
596     CLOSE okl_contract_asset_h_pk_csr;
597     RETURN(l_vfa_rec);
598   END get_rec;
599   ------------------------------------------------------------------
600   -- This version of get_rec sets error messages if no data found --
601   ------------------------------------------------------------------
602   FUNCTION get_rec (
603     p_vfa_rec                     IN vfa_rec_type,
604     x_return_status                OUT NOCOPY VARCHAR2
605   ) RETURN vfa_rec_type IS
606     l_vfa_rec                     vfa_rec_type;
607     l_row_notfound                 BOOLEAN := TRUE;
608     l_return_status       VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
609   BEGIN
610     l_vfa_rec := get_rec(p_vfa_rec, l_row_notfound);
611     IF (l_row_notfound) THEN
612       x_return_status := OKL_API.G_RET_STS_ERROR;
613     END IF;
614     x_return_status := l_return_status;
615     RETURN(l_vfa_rec);
616   END get_rec;
617   -----------------------------------------------------------
618   -- So we don't have to pass an "l_row_notfound" variable --
619   -----------------------------------------------------------
620   FUNCTION get_rec (
621     p_vfa_rec                     IN vfa_rec_type
622   ) RETURN vfa_rec_type IS
623     l_row_not_found                BOOLEAN := TRUE;
624   BEGIN
625     RETURN(get_rec(p_vfa_rec, l_row_not_found));
626   END get_rec;
627   ---------------------------------------------------------------------------
628   -- FUNCTION null_out_defaults for: OKL_CONTRACT_ASSET_HV
629   ---------------------------------------------------------------------------
630   FUNCTION null_out_defaults (
631     p_vfav_rec   IN vfav_rec_type
632   ) RETURN vfav_rec_type IS
633     l_vfav_rec                     vfav_rec_type := p_vfav_rec;
634   BEGIN
635     IF (l_vfav_rec.id = OKL_API.G_MISS_NUM ) THEN
636       l_vfav_rec.id := NULL;
637     END IF;
638     IF (l_vfav_rec.major_version = OKL_API.G_MISS_NUM ) THEN
639       l_vfav_rec.major_version := NULL;
640     END IF;
641     IF (l_vfav_rec.object_version_number = OKL_API.G_MISS_NUM ) THEN
642       l_vfav_rec.object_version_number := NULL;
643     END IF;
644     IF (l_vfav_rec.dnz_chr_id = OKL_API.G_MISS_NUM ) THEN
645       l_vfav_rec.dnz_chr_id := NULL;
646     END IF;
647     IF (l_vfav_rec.fa_cle_id = OKL_API.G_MISS_NUM ) THEN
648       l_vfav_rec.fa_cle_id := NULL;
649     END IF;
650     IF (l_vfav_rec.name = OKL_API.G_MISS_CHAR ) THEN
651       l_vfav_rec.name := NULL;
652     END IF;
653     IF (l_vfav_rec.description = OKL_API.G_MISS_CHAR ) THEN
654       l_vfav_rec.description := NULL;
655     END IF;
656     IF (l_vfav_rec.asset_id = OKL_API.G_MISS_NUM ) THEN
657       l_vfav_rec.asset_id := NULL;
658     END IF;
659     IF (l_vfav_rec.asset_number = OKL_API.G_MISS_CHAR ) THEN
660       l_vfav_rec.asset_number := NULL;
661     END IF;
662     IF (l_vfav_rec.corporate_book = OKL_API.G_MISS_CHAR ) THEN
663       l_vfav_rec.corporate_book := NULL;
664     END IF;
665     IF (l_vfav_rec.life_in_months = OKL_API.G_MISS_NUM ) THEN
666       l_vfav_rec.life_in_months := NULL;
667     END IF;
668     IF (l_vfav_rec.original_cost = OKL_API.G_MISS_NUM ) THEN
669       l_vfav_rec.original_cost := NULL;
670     END IF;
671     IF (l_vfav_rec.cost = OKL_API.G_MISS_NUM ) THEN
672       l_vfav_rec.cost := NULL;
673     END IF;
674     IF (l_vfav_rec.adjusted_cost = OKL_API.G_MISS_NUM ) THEN
675       l_vfav_rec.adjusted_cost := NULL;
676     END IF;
677     IF (l_vfav_rec.current_units = OKL_API.G_MISS_NUM ) THEN
678       l_vfav_rec.current_units := NULL;
679     END IF;
680     IF (l_vfav_rec.new_used = OKL_API.G_MISS_CHAR ) THEN
681       l_vfav_rec.new_used := NULL;
682     END IF;
683     IF (l_vfav_rec.in_service_date = OKL_API.G_MISS_DATE ) THEN
684       l_vfav_rec.in_service_date := NULL;
685     END IF;
686     IF (l_vfav_rec.model_number = OKL_API.G_MISS_CHAR ) THEN
687       l_vfav_rec.model_number := NULL;
688     END IF;
689     IF (l_vfav_rec.asset_type = OKL_API.G_MISS_CHAR ) THEN
690       l_vfav_rec.asset_type := NULL;
691     END IF;
692     IF (l_vfav_rec.salvage_value = OKL_API.G_MISS_NUM ) THEN
693       l_vfav_rec.salvage_value := NULL;
694     END IF;
695     IF (l_vfav_rec.percent_salvage_value = OKL_API.G_MISS_NUM ) THEN
696       l_vfav_rec.percent_salvage_value := NULL;
697     END IF;
698     IF (l_vfav_rec.depreciation_category = OKL_API.G_MISS_NUM ) THEN
699       l_vfav_rec.depreciation_category := NULL;
700     END IF;
701     IF (l_vfav_rec.deprn_start_date = OKL_API.G_MISS_DATE ) THEN
702       l_vfav_rec.deprn_start_date := NULL;
703     END IF;
704     IF (l_vfav_rec.deprn_method_code = OKL_API.G_MISS_CHAR ) THEN
705       l_vfav_rec.deprn_method_code := NULL;
706     END IF;
707     IF (l_vfav_rec.rate_adjustment_factor = OKL_API.G_MISS_NUM ) THEN
708       l_vfav_rec.rate_adjustment_factor := NULL;
709     END IF;
710     IF (l_vfav_rec.basic_rate = OKL_API.G_MISS_NUM ) THEN
711       l_vfav_rec.basic_rate := NULL;
712     END IF;
713     IF (l_vfav_rec.adjusted_rate = OKL_API.G_MISS_NUM ) THEN
714       l_vfav_rec.adjusted_rate := NULL;
715     END IF;
716     IF (l_vfav_rec.start_date_active = OKL_API.G_MISS_DATE ) THEN
717       l_vfav_rec.start_date_active := NULL;
718     END IF;
719     IF (l_vfav_rec.end_date_active = OKL_API.G_MISS_DATE ) THEN
720       l_vfav_rec.end_date_active := NULL;
721     END IF;
722     IF (l_vfav_rec.status = OKL_API.G_MISS_CHAR ) THEN
723       l_vfav_rec.status := NULL;
724     END IF;
725     IF (l_vfav_rec.primary_uom_code = OKL_API.G_MISS_CHAR ) THEN
726       l_vfav_rec.primary_uom_code := NULL;
727     END IF;
728     IF (l_vfav_rec.recoverable_cost = OKL_API.G_MISS_NUM ) THEN
729       l_vfav_rec.recoverable_cost := NULL;
730     END IF;
731 --Bug# 2981308:
732     IF (l_vfav_rec.asset_key_id = OKL_API.G_MISS_NUM ) THEN
733       l_vfav_rec.asset_key_id := NULL;
734     END IF;
735     IF (l_vfav_rec.attribute_category = OKL_API.G_MISS_CHAR ) THEN
736       l_vfav_rec.attribute_category := NULL;
737     END IF;
738     IF (l_vfav_rec.attribute1 = OKL_API.G_MISS_CHAR ) THEN
739       l_vfav_rec.attribute1 := NULL;
740     END IF;
741     IF (l_vfav_rec.attribute2 = OKL_API.G_MISS_CHAR ) THEN
742       l_vfav_rec.attribute2 := NULL;
743     END IF;
744     IF (l_vfav_rec.attribute3 = OKL_API.G_MISS_CHAR ) THEN
745       l_vfav_rec.attribute3 := NULL;
746     END IF;
747     IF (l_vfav_rec.attribute4 = OKL_API.G_MISS_CHAR ) THEN
748       l_vfav_rec.attribute4 := NULL;
749     END IF;
750     IF (l_vfav_rec.attribute5 = OKL_API.G_MISS_CHAR ) THEN
751       l_vfav_rec.attribute5 := NULL;
752     END IF;
753     IF (l_vfav_rec.attribute6 = OKL_API.G_MISS_CHAR ) THEN
754       l_vfav_rec.attribute6 := NULL;
755     END IF;
756     IF (l_vfav_rec.attribute7 = OKL_API.G_MISS_CHAR ) THEN
757       l_vfav_rec.attribute7 := NULL;
758     END IF;
759     IF (l_vfav_rec.attribute8 = OKL_API.G_MISS_CHAR ) THEN
760       l_vfav_rec.attribute8 := NULL;
761     END IF;
762     IF (l_vfav_rec.attribute9 = OKL_API.G_MISS_CHAR ) THEN
763       l_vfav_rec.attribute9 := NULL;
764     END IF;
765     IF (l_vfav_rec.attribute10 = OKL_API.G_MISS_CHAR ) THEN
766       l_vfav_rec.attribute10 := NULL;
767     END IF;
768     IF (l_vfav_rec.attribute11 = OKL_API.G_MISS_CHAR ) THEN
769       l_vfav_rec.attribute11 := NULL;
770     END IF;
771     IF (l_vfav_rec.attribute12 = OKL_API.G_MISS_CHAR ) THEN
772       l_vfav_rec.attribute12 := NULL;
773     END IF;
774     IF (l_vfav_rec.attribute13 = OKL_API.G_MISS_CHAR ) THEN
775       l_vfav_rec.attribute13 := NULL;
776     END IF;
777     IF (l_vfav_rec.attribute14 = OKL_API.G_MISS_CHAR ) THEN
778       l_vfav_rec.attribute14 := NULL;
779     END IF;
780     IF (l_vfav_rec.attribute15 = OKL_API.G_MISS_CHAR ) THEN
781       l_vfav_rec.attribute15 := NULL;
782     END IF;
783     IF (l_vfav_rec.created_by = OKL_API.G_MISS_NUM ) THEN
784       l_vfav_rec.created_by := NULL;
785     END IF;
786     IF (l_vfav_rec.creation_date = OKL_API.G_MISS_DATE ) THEN
787       l_vfav_rec.creation_date := NULL;
788     END IF;
789     IF (l_vfav_rec.last_updated_by = OKL_API.G_MISS_NUM ) THEN
790       l_vfav_rec.last_updated_by := NULL;
791     END IF;
792     IF (l_vfav_rec.last_update_date = OKL_API.G_MISS_DATE ) THEN
793       l_vfav_rec.last_update_date := NULL;
794     END IF;
795     IF (l_vfav_rec.last_update_login = OKL_API.G_MISS_NUM ) THEN
796       l_vfav_rec.last_update_login := NULL;
797     END IF;
798     --Added by dpsingh for LE uptake
799      IF (l_vfav_rec.legal_entity_id = OKL_API.G_MISS_NUM ) THEN
800       l_vfav_rec.legal_entity_id := NULL;
801     END IF;
802     RETURN(l_vfav_rec);
803   END null_out_defaults;
804   ---------------------------------------------------------------------------
805   -- FUNCTION Validate_Attributes
806   ---------------------------------------------------------------------------
807   ---------------------------------------------------
808   -- Validate_Attributes for:OKL_CONTRACT_ASSET_HV --
809   ---------------------------------------------------
810   FUNCTION Validate_Attributes (
811     p_vfav_rec                     IN vfav_rec_type
812   ) RETURN VARCHAR2 IS
813     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
814     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
815   BEGIN
816     -- Call OKC_UTIL.ADD_VIEW to prepare the PL/SQL table to hold columns of view
817     OKC_UTIL.ADD_VIEW('OKL_CONTRACT_ASSET_HV', x_return_status);
818     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
819       l_return_status := x_return_status;
820     END IF;
821     IF p_vfav_rec.id = OKL_API.G_MISS_NUM OR
822        p_vfav_rec.id IS NULL THEN
823       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'id');
824       x_return_status := OKL_API.G_RET_STS_ERROR;
825       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
826         l_return_status := x_return_status;
827       END IF;
828     ELSIF p_vfav_rec.major_version = OKL_API.G_MISS_NUM OR
829        p_vfav_rec.major_version IS NULL THEN
830       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'major_version');
831       x_return_status := OKL_API.G_RET_STS_ERROR;
832       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
833         l_return_status := x_return_status;
834       END IF;
835     ELSIF p_vfav_rec.object_version_number = OKL_API.G_MISS_NUM OR
836        p_vfav_rec.object_version_number IS NULL THEN
837       OKL_API.set_message(G_APP_NAME, G_REQUIRED_VALUE,G_COL_NAME_TOKEN,'object_version_number');
838       x_return_status := OKL_API.G_RET_STS_ERROR;
839       IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
840         l_return_status := x_return_status;
841       END IF;
842     END IF;
843 --*******************************Hand Code ***********************************--
844     validate_dnz_chr_id(x_return_status, p_vfav_rec.dnz_chr_id);
845     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
846       l_return_status := x_return_status;
847     END IF;
848     validate_fa_cle_id(x_return_status, p_vfav_rec.fa_cle_id);
849     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
850       l_return_status := x_return_status;
851     END IF;
852 
853     --Added by dpsingh
854 
855 -- Validate_LE_Id
856     Validate_LE_Id(p_vfav_rec.legal_entity_id, x_return_status);
857     IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
858       l_return_status := x_return_status;
859     END IF;
860 --*******************************Hand Code ***********************************--
861     RETURN(l_return_status);
862   EXCEPTION
863     WHEN OTHERS THEN
864       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
865                           ,p_msg_name     => G_UNEXPECTED_ERROR
866                           ,p_token1       => G_SQLCODE_TOKEN
867                           ,p_token1_value => SQLCODE
868                           ,p_token2       => G_SQLERRM_TOKEN
869                           ,p_token2_value => SQLERRM);
870       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
871       RETURN(l_return_status);
872   END Validate_Attributes;
873   ---------------------------------------------------------------------------
874   -- PROCEDURE Validate_Record
875   ---------------------------------------------------------------------------
876   -----------------------------------------------
877   -- Validate Record for:OKL_CONTRACT_ASSET_HV --
878   -----------------------------------------------
879   FUNCTION Validate_Record (p_vfav_rec IN vfav_rec_type)
880   RETURN VARCHAR2 IS
881     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
882     x_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
883   BEGIN
884     RETURN (l_return_status);
885   EXCEPTION
886     WHEN G_EXCEPTION_HALT_VALIDATION THEN
887       RETURN(l_return_status);
888     WHEN OTHERS THEN
889       OKL_API.SET_MESSAGE( p_app_name     => G_APP_NAME
890                           ,p_msg_name     => G_UNEXPECTED_ERROR
891                           ,p_token1       => G_SQLCODE_TOKEN
892                           ,p_token1_value => SQLCODE
893                           ,p_token2       => G_SQLERRM_TOKEN
894                           ,p_token2_value => SQLERRM);
895       l_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
896       RETURN(l_return_status);
897   END Validate_Record;
898   ---------------------------------------------------------------------------
899   -- PROCEDURE Migrate
900   ---------------------------------------------------------------------------
901   PROCEDURE migrate (
902     p_from IN vfav_rec_type,
903     p_to   IN OUT NOCOPY vfa_rec_type
904   ) IS
905   BEGIN
906     p_to.id := p_from.id;
907     p_to.major_version := p_from.major_version;
908     p_to.object_version_number := p_from.object_version_number;
909     p_to.dnz_chr_id := p_from.dnz_chr_id;
910     p_to.fa_cle_id := p_from.fa_cle_id;
911     p_to.name := p_from.name;
912     p_to.description := p_from.description;
913     p_to.asset_id := p_from.asset_id;
914     p_to.asset_number := p_from.asset_number;
915     p_to.corporate_book := p_from.corporate_book;
916     p_to.life_in_months := p_from.life_in_months;
917     p_to.original_cost := p_from.original_cost;
918     p_to.cost := p_from.cost;
919     p_to.adjusted_cost := p_from.adjusted_cost;
920     p_to.current_units := p_from.current_units;
921     p_to.new_used := p_from.new_used;
922     p_to.in_service_date := p_from.in_service_date;
923     p_to.model_number := p_from.model_number;
924     p_to.asset_type := p_from.asset_type;
925     p_to.salvage_value := p_from.salvage_value;
926     p_to.percent_salvage_value := p_from.percent_salvage_value;
927     p_to.depreciation_category := p_from.depreciation_category;
928     p_to.deprn_start_date := p_from.deprn_start_date;
929     p_to.deprn_method_code := p_from.deprn_method_code;
930     p_to.rate_adjustment_factor := p_from.rate_adjustment_factor;
931     p_to.basic_rate := p_from.basic_rate;
932     p_to.adjusted_rate := p_from.adjusted_rate;
933     p_to.start_date_active := p_from.start_date_active;
934     p_to.end_date_active := p_from.end_date_active;
935     p_to.status := p_from.status;
936     p_to.primary_uom_code := p_from.primary_uom_code;
937     p_to.recoverable_cost := p_from.recoverable_cost;
938 --Bug# 2981308 :
939     p_to.asset_key_id := p_from.asset_key_id;
940     p_to.attribute_category := p_from.attribute_category;
941     p_to.attribute1 := p_from.attribute1;
942     p_to.attribute2 := p_from.attribute2;
943     p_to.attribute3 := p_from.attribute3;
944     p_to.attribute4 := p_from.attribute4;
945     p_to.attribute5 := p_from.attribute5;
946     p_to.attribute6 := p_from.attribute6;
947     p_to.attribute7 := p_from.attribute7;
948     p_to.attribute8 := p_from.attribute8;
949     p_to.attribute9 := p_from.attribute9;
950     p_to.attribute10 := p_from.attribute10;
951     p_to.attribute11 := p_from.attribute11;
952     p_to.attribute12 := p_from.attribute12;
953     p_to.attribute13 := p_from.attribute13;
954     p_to.attribute14 := p_from.attribute14;
955     p_to.attribute15 := p_from.attribute15;
956     p_to.created_by := p_from.created_by;
957     p_to.creation_date := p_from.creation_date;
958     p_to.last_updated_by := p_from.last_updated_by;
959     p_to.last_update_date := p_from.last_update_date;
960     p_to.last_update_login := p_from.last_update_login;
961     --Added by dpsingh for LE uptake
962     p_to.legal_entity_id := p_from.legal_entity_id;
963   END migrate;
964   PROCEDURE migrate (
965     p_from IN vfa_rec_type,
966     p_to   IN OUT NOCOPY vfav_rec_type
967   ) IS
968   BEGIN
969     p_to.id := p_from.id;
970     p_to.major_version := p_from.major_version;
971     p_to.object_version_number := p_from.object_version_number;
972     p_to.dnz_chr_id := p_from.dnz_chr_id;
973     p_to.fa_cle_id := p_from.fa_cle_id;
974     p_to.name := p_from.name;
975     p_to.description := p_from.description;
976     p_to.asset_id := p_from.asset_id;
977     p_to.asset_number := p_from.asset_number;
978     p_to.corporate_book := p_from.corporate_book;
979     p_to.life_in_months := p_from.life_in_months;
980     p_to.original_cost := p_from.original_cost;
981     p_to.cost := p_from.cost;
982     p_to.adjusted_cost := p_from.adjusted_cost;
983     p_to.current_units := p_from.current_units;
984     p_to.new_used := p_from.new_used;
985     p_to.in_service_date := p_from.in_service_date;
986     p_to.model_number := p_from.model_number;
987     p_to.asset_type := p_from.asset_type;
988     p_to.salvage_value := p_from.salvage_value;
989     p_to.percent_salvage_value := p_from.percent_salvage_value;
990     p_to.depreciation_category := p_from.depreciation_category;
991     p_to.deprn_start_date := p_from.deprn_start_date;
992     p_to.deprn_method_code := p_from.deprn_method_code;
993     p_to.rate_adjustment_factor := p_from.rate_adjustment_factor;
994     p_to.basic_rate := p_from.basic_rate;
995     p_to.adjusted_rate := p_from.adjusted_rate;
996     p_to.start_date_active := p_from.start_date_active;
997     p_to.end_date_active := p_from.end_date_active;
998     p_to.status := p_from.status;
999     p_to.primary_uom_code := p_from.primary_uom_code;
1000     p_to.recoverable_cost := p_from.recoverable_cost;
1001 --Bug# 2981308
1002     p_to.asset_key_id := p_from.asset_key_id;
1003     p_to.attribute_category := p_from.attribute_category;
1004     p_to.attribute1 := p_from.attribute1;
1005     p_to.attribute2 := p_from.attribute2;
1006     p_to.attribute3 := p_from.attribute3;
1007     p_to.attribute4 := p_from.attribute4;
1008     p_to.attribute5 := p_from.attribute5;
1009     p_to.attribute6 := p_from.attribute6;
1010     p_to.attribute7 := p_from.attribute7;
1011     p_to.attribute8 := p_from.attribute8;
1012     p_to.attribute9 := p_from.attribute9;
1013     p_to.attribute10 := p_from.attribute10;
1014     p_to.attribute11 := p_from.attribute11;
1015     p_to.attribute12 := p_from.attribute12;
1016     p_to.attribute13 := p_from.attribute13;
1017     p_to.attribute14 := p_from.attribute14;
1018     p_to.attribute15 := p_from.attribute15;
1019     p_to.created_by := p_from.created_by;
1020     p_to.creation_date := p_from.creation_date;
1021     p_to.last_updated_by := p_from.last_updated_by;
1022     p_to.last_update_date := p_from.last_update_date;
1023     p_to.last_update_login := p_from.last_update_login;
1024     --Added by dpsingh for LE uptake
1025     p_to.legal_entity_id := p_from.legal_entity_id;
1026   END migrate;
1027   ---------------------------------------------------------------------------
1028   -- PROCEDURE validate_row
1029   ---------------------------------------------------------------------------
1030   --------------------------------------------
1031   -- validate_row for:OKL_CONTRACT_ASSET_HV --
1032   --------------------------------------------
1033   PROCEDURE validate_row(
1034     p_api_version                  IN NUMBER,
1035     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1036     x_return_status                OUT NOCOPY VARCHAR2,
1037     x_msg_count                    OUT NOCOPY NUMBER,
1038     x_msg_data                     OUT NOCOPY VARCHAR2,
1039     p_vfav_rec                     IN vfav_rec_type) IS
1040 
1041     l_api_version                  CONSTANT NUMBER := 1;
1042     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
1043     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1044     l_vfav_rec                     vfav_rec_type := p_vfav_rec;
1045     l_vfa_rec                      vfa_rec_type;
1046   BEGIN
1047     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1048                                               G_PKG_NAME,
1049                                               p_init_msg_list,
1050                                               l_api_version,
1051                                               p_api_version,
1052                                               '_PVT',
1053                                               x_return_status);
1054     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1055       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1056     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1057       RAISE OKL_API.G_EXCEPTION_ERROR;
1058     END IF;
1059     --- Validate all non-missing attributes (Item Level Validation)
1060     l_return_status := Validate_Attributes(l_vfav_rec);
1061     --- If any errors happen abort API
1062     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1063       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1064     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1065       RAISE OKL_API.G_EXCEPTION_ERROR;
1066     END IF;
1067     l_return_status := Validate_Record(l_vfav_rec);
1068     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1069       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1070     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1071       RAISE OKL_API.G_EXCEPTION_ERROR;
1072     END IF;
1073     x_return_status := l_return_status;
1074   EXCEPTION
1075     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1076       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1077       (
1078         l_api_name,
1079         G_PKG_NAME,
1080         'OKL_API.G_RET_STS_ERROR',
1081         x_msg_count,
1082         x_msg_data,
1083         '_PVT'
1084       );
1085     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1086       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1087       (
1088         l_api_name,
1089         G_PKG_NAME,
1090         'OKL_API.G_RET_STS_UNEXP_ERROR',
1091         x_msg_count,
1092         x_msg_data,
1093         '_PVT'
1094       );
1095     WHEN OTHERS THEN
1096       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1097       (
1098         l_api_name,
1099         G_PKG_NAME,
1100         'OTHERS',
1101         x_msg_count,
1102         x_msg_data,
1103         '_PVT'
1104       );
1105   END validate_row;
1106   -------------------------------------------------------
1107   -- PL/SQL TBL validate_row for:OKL_CONTRACT_ASSET_HV --
1108   -------------------------------------------------------
1109   PROCEDURE validate_row(
1110     p_api_version                  IN NUMBER,
1111     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1112     x_return_status                OUT NOCOPY VARCHAR2,
1113     x_msg_count                    OUT NOCOPY NUMBER,
1114     x_msg_data                     OUT NOCOPY VARCHAR2,
1115     p_vfav_tbl                     IN vfav_tbl_type) IS
1116 
1117     l_api_version                  CONSTANT NUMBER := 1;
1118     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
1119     i                              NUMBER := 0;
1120   BEGIN
1121     OKL_API.init_msg_list(p_init_msg_list);
1122     -- Make sure PL/SQL table has records in it before passing
1123     IF (p_vfav_tbl.COUNT > 0) THEN
1124       i := p_vfav_tbl.FIRST;
1125       LOOP
1126         validate_row (
1127             p_api_version                  => p_api_version,
1128             p_init_msg_list                => p_init_msg_list,
1129             x_return_status                => x_return_status,
1130             x_msg_count                    => x_msg_count,
1131             x_msg_data                     => x_msg_data,
1132             p_vfav_rec                     => p_vfav_tbl(i));
1133         EXIT WHEN (i = p_vfav_tbl.LAST);
1134         i := p_vfav_tbl.NEXT(i);
1135       END LOOP;
1136     END IF;
1137     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1138   EXCEPTION
1139     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1140       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1141       (
1142         l_api_name,
1143         G_PKG_NAME,
1144         'OKL_API.G_RET_STS_ERROR',
1145         x_msg_count,
1146         x_msg_data,
1147         '_PVT'
1148       );
1149     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1150       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1151       (
1152         l_api_name,
1153         G_PKG_NAME,
1154         'OKL_API.G_RET_STS_UNEXP_ERROR',
1155         x_msg_count,
1156         x_msg_data,
1157         '_PVT'
1158       );
1159     WHEN OTHERS THEN
1160       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1161       (
1162         l_api_name,
1163         G_PKG_NAME,
1164         'OTHERS',
1165         x_msg_count,
1166         x_msg_data,
1167         '_PVT'
1168       );
1169   END validate_row;
1170   ---------------------------------------------------------------------------
1171   -- PROCEDURE insert_row
1172   ---------------------------------------------------------------------------
1173   ------------------------------------------
1174   -- insert_row for:OKL_CONTRACT_ASSET_HV --
1175   ------------------------------------------
1176   PROCEDURE insert_row(
1177     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1178     x_return_status                OUT NOCOPY VARCHAR2,
1179     x_msg_count                    OUT NOCOPY NUMBER,
1180     x_msg_data                     OUT NOCOPY VARCHAR2,
1181     p_vfa_rec                     IN vfa_rec_type,
1182     x_vfa_rec                     OUT NOCOPY vfa_rec_type) IS
1183 
1184     l_api_version                  CONSTANT NUMBER := 1;
1185     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
1186     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1187     l_vfa_rec                     vfa_rec_type := p_vfa_rec;
1188     l_def_vfa_rec                 vfa_rec_type;
1189     ----------------------------------------------
1190     -- Set_Attributes for:OKL_CONTRACT_ASSET_HV --
1191     ----------------------------------------------
1192     FUNCTION Set_Attributes (
1193       p_vfa_rec IN vfa_rec_type,
1194       x_vfa_rec OUT NOCOPY vfa_rec_type
1195     ) RETURN VARCHAR2 IS
1196       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1197     BEGIN
1198       x_vfa_rec := p_vfa_rec;
1199       RETURN(l_return_status);
1200     END Set_Attributes;
1201   BEGIN
1202     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1203                                               p_init_msg_list,
1204                                               '_PVT',
1205                                               x_return_status);
1206     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1207       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1208     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1209       RAISE OKL_API.G_EXCEPTION_ERROR;
1210     END IF;
1211     --- Setting item atributes
1212     l_return_status := Set_Attributes(
1213       p_vfa_rec,                        -- IN
1214       l_vfa_rec);                       -- OUT
1215     --- If any errors happen abort API
1216     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1217       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1218     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1219       RAISE OKL_API.G_EXCEPTION_ERROR;
1220     END IF;
1221     INSERT INTO OKL_CONTRACT_ASSET_H(
1222       id,
1223       major_version,
1224       object_version_number,
1225       dnz_chr_id,
1226       fa_cle_id,
1227       name,
1228       description,
1229       asset_id,
1230       asset_number,
1231       corporate_book,
1232       life_in_months,
1233       original_cost,
1234       cost,
1235       adjusted_cost,
1236       current_units,
1237       new_used,
1238       in_service_date,
1239       model_number,
1240       asset_type,
1241       salvage_value,
1242       percent_salvage_value,
1243       depreciation_category,
1244       deprn_start_date,
1245       deprn_method_code,
1246       rate_adjustment_factor,
1247       basic_rate,
1248       adjusted_rate,
1249       start_date_active,
1250       end_date_active,
1251       status,
1252       primary_uom_code,
1253       recoverable_cost,
1254 --Bug# 2981308
1255       asset_key_id,
1256       attribute_category,
1257       attribute1,
1258       attribute2,
1259       attribute3,
1260       attribute4,
1261       attribute5,
1262       attribute6,
1263       attribute7,
1264       attribute8,
1265       attribute9,
1266       attribute10,
1267       attribute11,
1268       attribute12,
1269       attribute13,
1270       attribute14,
1271       attribute15,
1272       created_by,
1273       creation_date,
1274       last_updated_by,
1275       last_update_date,
1276       last_update_login,
1277       --Added by dpsingh for LE uptake
1278       legal_entity_id)
1279     VALUES (
1280       l_vfa_rec.id,
1281       l_vfa_rec.major_version,
1282       l_vfa_rec.object_version_number,
1283       l_vfa_rec.dnz_chr_id,
1284       l_vfa_rec.fa_cle_id,
1285       l_vfa_rec.name,
1286       l_vfa_rec.description,
1287       l_vfa_rec.asset_id,
1288       l_vfa_rec.asset_number,
1289       l_vfa_rec.corporate_book,
1290       l_vfa_rec.life_in_months,
1291       l_vfa_rec.original_cost,
1292       l_vfa_rec.cost,
1293       l_vfa_rec.adjusted_cost,
1294       l_vfa_rec.current_units,
1295       l_vfa_rec.new_used,
1296       l_vfa_rec.in_service_date,
1297       l_vfa_rec.model_number,
1298       l_vfa_rec.asset_type,
1299       l_vfa_rec.salvage_value,
1300       l_vfa_rec.percent_salvage_value,
1301       l_vfa_rec.depreciation_category,
1302       l_vfa_rec.deprn_start_date,
1303       l_vfa_rec.deprn_method_code,
1304       l_vfa_rec.rate_adjustment_factor,
1305       l_vfa_rec.basic_rate,
1306       l_vfa_rec.adjusted_rate,
1307       l_vfa_rec.start_date_active,
1308       l_vfa_rec.end_date_active,
1309       l_vfa_rec.status,
1310       l_vfa_rec.primary_uom_code,
1311       l_vfa_rec.recoverable_cost,
1312 --bug# 2981308
1313       l_vfa_rec.asset_key_id,
1314       l_vfa_rec.attribute_category,
1315       l_vfa_rec.attribute1,
1316       l_vfa_rec.attribute2,
1317       l_vfa_rec.attribute3,
1318       l_vfa_rec.attribute4,
1319       l_vfa_rec.attribute5,
1320       l_vfa_rec.attribute6,
1321       l_vfa_rec.attribute7,
1322       l_vfa_rec.attribute8,
1323       l_vfa_rec.attribute9,
1324       l_vfa_rec.attribute10,
1325       l_vfa_rec.attribute11,
1326       l_vfa_rec.attribute12,
1327       l_vfa_rec.attribute13,
1328       l_vfa_rec.attribute14,
1329       l_vfa_rec.attribute15,
1330       l_vfa_rec.created_by,
1331       l_vfa_rec.creation_date,
1332       l_vfa_rec.last_updated_by,
1333       l_vfa_rec.last_update_date,
1334       l_vfa_rec.last_update_login,
1335      --Added by dpsingh for LE uptake
1336       l_vfa_rec.legal_entity_id);
1337     -- Set OUT values
1338     x_vfa_rec := l_vfa_rec;
1339     x_return_status := l_return_status;
1340     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1341   EXCEPTION
1342     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1343       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1344       (
1345         l_api_name,
1346         G_PKG_NAME,
1347         'OKL_API.G_RET_STS_ERROR',
1348         x_msg_count,
1349         x_msg_data,
1350         '_PVT'
1351       );
1352     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1353       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1354       (
1355         l_api_name,
1356         G_PKG_NAME,
1357         'OKL_API.G_RET_STS_UNEXP_ERROR',
1358         x_msg_count,
1359         x_msg_data,
1360         '_PVT'
1361       );
1362     WHEN OTHERS THEN
1363       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1364       (
1365         l_api_name,
1366         G_PKG_NAME,
1367         'OTHERS',
1368         x_msg_count,
1369         x_msg_data,
1370         '_PVT'
1371       );
1372   END insert_row;
1373   ---------------------------------------------
1374   -- insert_row for :OKL_SUPP_INVOICE_DTLS_V --
1375   ---------------------------------------------
1376   PROCEDURE insert_row(
1377     p_api_version                  IN NUMBER,
1378     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1379     x_return_status                OUT NOCOPY VARCHAR2,
1380     x_msg_count                    OUT NOCOPY NUMBER,
1381     x_msg_data                     OUT NOCOPY VARCHAR2,
1382     p_vfav_rec                     IN vfav_rec_type,
1383     x_vfav_rec                     OUT NOCOPY vfav_rec_type) IS
1384 
1385     l_api_version                  CONSTANT NUMBER := 1;
1386     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
1387     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1388     l_vfav_rec                     vfav_rec_type := p_vfav_rec;
1389     l_def_vfav_rec                 vfav_rec_type;
1390     l_vfa_rec                      vfa_rec_type;
1391     lx_vfa_rec                     vfa_rec_type;
1392     -------------------------------
1393     -- FUNCTION fill_who_columns --
1394     -------------------------------
1395     FUNCTION fill_who_columns (
1396       p_vfav_rec IN vfav_rec_type
1397     ) RETURN vfav_rec_type IS
1398       l_vfav_rec vfav_rec_type := p_vfav_rec;
1399     BEGIN
1400       l_vfav_rec.CREATION_DATE := SYSDATE;
1401       l_vfav_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1402       l_vfav_rec.LAST_UPDATE_DATE := l_vfav_rec.CREATION_DATE;
1403       l_vfav_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1404       l_vfav_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1405       RETURN(l_vfav_rec);
1406     END fill_who_columns;
1407     ------------------------------------------------
1408     -- Set_Attributes for:OKL_CONTRACT_ASSET_HV --
1409     ------------------------------------------------
1410     FUNCTION Set_Attributes (
1411       p_vfav_rec IN vfav_rec_type,
1412       x_vfav_rec OUT NOCOPY vfav_rec_type
1413     ) RETURN VARCHAR2 IS
1414       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1415     BEGIN
1416       x_vfav_rec := p_vfav_rec;
1417       x_vfav_rec.OBJECT_VERSION_NUMBER := 1;
1418       RETURN(l_return_status);
1419     END Set_Attributes;
1420   BEGIN
1421     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1422                                               G_PKG_NAME,
1423                                               p_init_msg_list,
1424                                               l_api_version,
1425                                               p_api_version,
1426                                               '_PVT',
1427                                               x_return_status);
1428     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1429       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1430     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1431       RAISE OKL_API.G_EXCEPTION_ERROR;
1432     END IF;
1433     l_vfav_rec := null_out_defaults(p_vfav_rec);
1434     -- Set primary key value
1435     l_vfav_rec.ID := get_seq_id;
1436     -- Setting item attributes
1437     l_return_Status := Set_Attributes(
1438       l_vfav_rec,                        -- IN
1439       l_def_vfav_rec);                   -- OUT
1440     --- If any errors happen abort API
1441     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1442       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1443     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1444       RAISE OKL_API.G_EXCEPTION_ERROR;
1445     END IF;
1446     l_def_vfav_rec := fill_who_columns(l_def_vfav_rec);
1447     --- Validate all non-missing attributes (Item Level Validation)
1448     l_return_status := Validate_Attributes(l_def_vfav_rec);
1449     --- If any errors happen abort API
1450     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1451       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1452     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1453       RAISE OKL_API.G_EXCEPTION_ERROR;
1454     END IF;
1455     l_return_status := Validate_Record(l_def_vfav_rec);
1456     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1457       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1458     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1459       RAISE OKL_API.G_EXCEPTION_ERROR;
1460     END IF;
1461     -----------------------------------------
1462     -- Move VIEW record to "Child" records --
1463     -----------------------------------------
1464     migrate(l_def_vfav_rec, l_vfa_rec);
1465     -----------------------------------------------
1466     -- Call the INSERT_ROW for each child record --
1467     -----------------------------------------------
1468     insert_row(
1469       p_init_msg_list,
1470       l_return_status,
1471       x_msg_count,
1472       x_msg_data,
1473       l_vfa_rec,
1474       lx_vfa_rec
1475     );
1476     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1477       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1478     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1479       RAISE OKL_API.G_EXCEPTION_ERROR;
1480     END IF;
1481     migrate(lx_vfa_rec, l_def_vfav_rec);
1482     -- Set OUT values
1483     x_vfav_rec := l_def_vfav_rec;
1484     x_return_status := l_return_status;
1485     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1486   EXCEPTION
1487     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1488       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1489       (
1490         l_api_name,
1491         G_PKG_NAME,
1492         'OKL_API.G_RET_STS_ERROR',
1493         x_msg_count,
1494         x_msg_data,
1495         '_PVT'
1496       );
1497     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1498       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1499       (
1500         l_api_name,
1501         G_PKG_NAME,
1502         'OKL_API.G_RET_STS_UNEXP_ERROR',
1503         x_msg_count,
1504         x_msg_data,
1505         '_PVT'
1506       );
1507     WHEN OTHERS THEN
1508       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1509       (
1510         l_api_name,
1511         G_PKG_NAME,
1512         'OTHERS',
1513         x_msg_count,
1514         x_msg_data,
1515         '_PVT'
1516       );
1517   END insert_row;
1518   ----------------------------------------
1519   -- PL/SQL TBL insert_row for:vfaV_TBL --
1520   ----------------------------------------
1521   PROCEDURE insert_row(
1522     p_api_version                  IN NUMBER,
1523     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1524     x_return_status                OUT NOCOPY VARCHAR2,
1525     x_msg_count                    OUT NOCOPY NUMBER,
1526     x_msg_data                     OUT NOCOPY VARCHAR2,
1527     p_vfav_tbl                     IN vfav_tbl_type,
1528     x_vfav_tbl                     OUT NOCOPY vfav_tbl_type) IS
1529 
1530     l_api_version                  CONSTANT NUMBER := 1;
1531     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
1532     i                              NUMBER := 0;
1533   BEGIN
1534     OKL_API.init_msg_list(p_init_msg_list);
1535     -- Make sure PL/SQL table has records in it before passing
1536     IF (p_vfav_tbl.COUNT > 0) THEN
1537       i := p_vfav_tbl.FIRST;
1538       LOOP
1539         insert_row (
1540             p_api_version                  => p_api_version,
1541             p_init_msg_list                => p_init_msg_list,
1542             x_return_status                => x_return_status,
1543             x_msg_count                    => x_msg_count,
1544             x_msg_data                     => x_msg_data,
1545             p_vfav_rec                     => p_vfav_tbl(i),
1546             x_vfav_rec                     => x_vfav_tbl(i));
1547         EXIT WHEN (i = p_vfav_tbl.LAST);
1548         i := p_vfav_tbl.NEXT(i);
1549       END LOOP;
1550     END IF;
1551     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1552   EXCEPTION
1553     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1554       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1555       (
1556         l_api_name,
1557         G_PKG_NAME,
1558         'OKL_API.G_RET_STS_ERROR',
1559         x_msg_count,
1560         x_msg_data,
1561         '_PVT'
1562       );
1563     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1564       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1565       (
1566         l_api_name,
1567         G_PKG_NAME,
1568         'OKL_API.G_RET_STS_UNEXP_ERROR',
1569         x_msg_count,
1570         x_msg_data,
1571         '_PVT'
1572       );
1573     WHEN OTHERS THEN
1574       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1575       (
1576         l_api_name,
1577         G_PKG_NAME,
1578         'OTHERS',
1579         x_msg_count,
1580         x_msg_data,
1581         '_PVT'
1582       );
1583   END insert_row;
1584   ---------------------------------------------------------------------------
1585   -- PROCEDURE lock_row
1586   ---------------------------------------------------------------------------
1587   ----------------------------------------
1588   -- lock_row for:OKL_CONTRACT_ASSET_HV --
1589   ----------------------------------------
1590   PROCEDURE lock_row(
1591     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1592     x_return_status                OUT NOCOPY VARCHAR2,
1593     x_msg_count                    OUT NOCOPY NUMBER,
1594     x_msg_data                     OUT NOCOPY VARCHAR2,
1595     p_vfa_rec                     IN vfa_rec_type) IS
1596 
1597     E_Resource_Busy                EXCEPTION;
1598     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1599     CURSOR lock_csr (p_vfa_rec IN vfa_rec_type) IS
1600     SELECT OBJECT_VERSION_NUMBER
1601     FROM OKL_CONTRACT_ASSET_H
1602     WHERE OBJECT_VERSION_NUMBER = p_vfa_rec.object_version_number
1603     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1604 
1605     CURSOR lchk_csr (p_vfa_rec IN vfa_rec_type) IS
1606     SELECT OBJECT_VERSION_NUMBER
1607     FROM OKL_CONTRACT_ASSET_H
1608     WHERE ID = p_vfa_rec.id;
1609     l_api_version                  CONSTANT NUMBER := 1;
1610     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
1611     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1612     l_object_version_number        OKL_CONTRACT_ASSET_H.OBJECT_VERSION_NUMBER%TYPE;
1613     lc_object_version_number       OKL_CONTRACT_ASSET_H.OBJECT_VERSION_NUMBER%TYPE;
1614     l_row_notfound                 BOOLEAN := FALSE;
1615     lc_row_notfound                BOOLEAN := FALSE;
1616   BEGIN
1617     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1618                                               p_init_msg_list,
1619                                               '_PVT',
1620                                               x_return_status);
1621     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1622       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1623     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1624       RAISE OKL_API.G_EXCEPTION_ERROR;
1625     END IF;
1626     BEGIN
1627       OPEN lock_csr(p_vfa_rec);
1628       FETCH lock_csr INTO l_object_version_number;
1629       l_row_notfound := lock_csr%NOTFOUND;
1630       CLOSE lock_csr;
1631     EXCEPTION
1632       WHEN E_Resource_Busy THEN
1633         IF (lock_csr%ISOPEN) THEN
1634           CLOSE lock_csr;
1635         END IF;
1636         OKL_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1637         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1638     END;
1639 
1640     IF ( l_row_notfound ) THEN
1641       OPEN lchk_csr(p_vfa_rec);
1642       FETCH lchk_csr INTO lc_object_version_number;
1643       lc_row_notfound := lchk_csr%NOTFOUND;
1644       CLOSE lchk_csr;
1645     END IF;
1646     IF (lc_row_notfound) THEN
1647       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1648       RAISE OKL_API.G_EXCEPTION_ERROR;
1649     ELSIF lc_object_version_number > p_vfa_rec.object_version_number THEN
1650       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1651       RAISE OKL_API.G_EXCEPTION_ERROR;
1652     ELSIF lc_object_version_number <> p_vfa_rec.object_version_number THEN
1653       OKL_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1654       RAISE OKL_API.G_EXCEPTION_ERROR;
1655     ELSIF lc_object_version_number = -1 THEN
1656       OKL_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1657       RAISE OKL_API.G_EXCEPTION_ERROR;
1658     END IF;
1659     x_return_status := l_return_status;
1660     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1661   EXCEPTION
1662     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1663       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1664       (
1665         l_api_name,
1666         G_PKG_NAME,
1667         'OKL_API.G_RET_STS_ERROR',
1668         x_msg_count,
1669         x_msg_data,
1670         '_PVT'
1671       );
1672     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1673       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1674       (
1675         l_api_name,
1676         G_PKG_NAME,
1677         'OKL_API.G_RET_STS_UNEXP_ERROR',
1678         x_msg_count,
1679         x_msg_data,
1680         '_PVT'
1681       );
1682     WHEN OTHERS THEN
1683       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1684       (
1685         l_api_name,
1686         G_PKG_NAME,
1687         'OTHERS',
1688         x_msg_count,
1689         x_msg_data,
1690         '_PVT'
1691       );
1692   END lock_row;
1693   -----------------------------------------
1694   -- lock_row for: OKL_CONTRACT_ASSET_HV --
1695   -----------------------------------------
1696   PROCEDURE lock_row(
1697     p_api_version                  IN NUMBER,
1698     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1699     x_return_status                OUT NOCOPY VARCHAR2,
1700     x_msg_count                    OUT NOCOPY NUMBER,
1701     x_msg_data                     OUT NOCOPY VARCHAR2,
1702     p_vfav_rec                     IN vfav_rec_type) IS
1703 
1704     l_api_version                  CONSTANT NUMBER := 1;
1705     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1706     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1707     l_vfav_rec                     vfav_rec_type;
1708     l_vfa_rec                      vfa_rec_type;
1709   BEGIN
1710     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
1711                                               G_PKG_NAME,
1712                                               p_init_msg_list,
1713                                               l_api_version,
1714                                               p_api_version,
1715                                               '_PVT',
1716                                               x_return_status);
1717     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1718       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1719     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1720       RAISE OKL_API.G_EXCEPTION_ERROR;
1721     END IF;
1722     -----------------------------------------
1723     -- Move VIEW record to "Child" records --
1724     -----------------------------------------
1725     migrate(p_vfav_rec, l_vfa_rec);
1726     ---------------------------------------------
1727     -- Call the LOCK_ROW for each child record --
1728     ---------------------------------------------
1729     lock_row(
1730       p_init_msg_list,
1731       l_return_status,
1732       x_msg_count,
1733       x_msg_data,
1734       l_vfa_rec
1735     );
1736     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1737       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1738     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
1739       RAISE OKL_API.G_EXCEPTION_ERROR;
1740     END IF;
1741     x_return_status := l_return_status;
1742     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1743   EXCEPTION
1744     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1745       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1746       (
1747         l_api_name,
1748         G_PKG_NAME,
1749         'OKL_API.G_RET_STS_ERROR',
1750         x_msg_count,
1751         x_msg_data,
1752         '_PVT'
1753       );
1754     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1755       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1756       (
1757         l_api_name,
1758         G_PKG_NAME,
1759         'OKL_API.G_RET_STS_UNEXP_ERROR',
1760         x_msg_count,
1761         x_msg_data,
1762         '_PVT'
1763       );
1764     WHEN OTHERS THEN
1765       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1766       (
1767         l_api_name,
1768         G_PKG_NAME,
1769         'OTHERS',
1770         x_msg_count,
1771         x_msg_data,
1772         '_PVT'
1773       );
1774   END lock_row;
1775   --------------------------------------
1776   -- PL/SQL TBL lock_row for:VFAV_TBL --
1777   --------------------------------------
1778   PROCEDURE lock_row(
1779     p_api_version                  IN NUMBER,
1780     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1781     x_return_status                OUT NOCOPY VARCHAR2,
1782     x_msg_count                    OUT NOCOPY NUMBER,
1783     x_msg_data                     OUT NOCOPY VARCHAR2,
1784     p_vfav_tbl                     IN vfav_tbl_type) IS
1785 
1786     l_api_version                  CONSTANT NUMBER := 1;
1787     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
1788     i                              NUMBER := 0;
1789   BEGIN
1790     OKL_API.init_msg_list(p_init_msg_list);
1791     -- Make sure PL/SQL table has recrods in it before passing
1792     IF (p_vfav_tbl.COUNT > 0) THEN
1793       i := p_vfav_tbl.FIRST;
1794       LOOP
1795         lock_row(
1796            p_api_version                  => p_api_version,
1797            p_init_msg_list                => p_init_msg_list,
1798            x_return_status                => x_return_status,
1799            x_msg_count                    => x_msg_count,
1800            x_msg_data                     => x_msg_data,
1801            p_vfav_rec                     => p_vfav_tbl(i));
1802         EXIT WHEN (i = p_vfav_tbl.LAST);
1803         i := p_vfav_tbl.NEXT(i);
1804       END LOOP;
1805     END IF;
1806     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
1807   EXCEPTION
1808     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1809       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1810       (
1811         l_api_name,
1812         G_PKG_NAME,
1813         'OKL_API.G_RET_STS_ERROR',
1814         x_msg_count,
1815         x_msg_data,
1816         '_PVT'
1817       );
1818     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1819       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1820       (
1821         l_api_name,
1822         G_PKG_NAME,
1823         'OKL_API.G_RET_STS_UNEXP_ERROR',
1824         x_msg_count,
1825         x_msg_data,
1826         '_PVT'
1827       );
1828     WHEN OTHERS THEN
1829       x_return_status := OKL_API.HANDLE_EXCEPTIONS
1830       (
1831         l_api_name,
1832         G_PKG_NAME,
1833         'OTHERS',
1834         x_msg_count,
1835         x_msg_data,
1836         '_PVT'
1837       );
1838   END lock_row;
1839   ---------------------------------------------------------------------------
1840   -- PROCEDURE update_row
1841   ---------------------------------------------------------------------------
1842   ------------------------------------------
1843   -- update_row for:OKL_CONTRACT_ASSET_HV --
1844   ------------------------------------------
1845   PROCEDURE update_row(
1846     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
1847     x_return_status                OUT NOCOPY VARCHAR2,
1848     x_msg_count                    OUT NOCOPY NUMBER,
1849     x_msg_data                     OUT NOCOPY VARCHAR2,
1850     p_vfa_rec                      IN vfa_rec_type,
1851     x_vfa_rec                      OUT NOCOPY vfa_rec_type) IS
1852 
1853     l_api_version                  CONSTANT NUMBER := 1;
1854     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
1855     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1856     l_vfa_rec                      vfa_rec_type := p_vfa_rec;
1857     l_def_vfa_rec                  vfa_rec_type;
1858     l_row_notfound                 BOOLEAN := TRUE;
1859     ----------------------------------
1860     -- FUNCTION populate_new_record --
1861     ----------------------------------
1862     FUNCTION populate_new_record (
1863       p_vfa_rec IN vfa_rec_type,
1864       x_vfa_rec OUT NOCOPY vfa_rec_type
1865     ) RETURN VARCHAR2 IS
1866       l_vfa_rec                     vfa_rec_type;
1867       l_row_notfound                 BOOLEAN := TRUE;
1868       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1869     BEGIN
1870       x_vfa_rec := p_vfa_rec;
1871       -- Get current database values
1872       l_vfa_rec := get_rec(p_vfa_rec, l_return_status);
1873       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
1874         IF (x_vfa_rec.id = OKL_API.G_MISS_NUM)
1875         THEN
1876           x_vfa_rec.id := l_vfa_rec.id;
1877         END IF;
1878         IF (x_vfa_rec.major_version = OKL_API.G_MISS_NUM)
1879         THEN
1880           x_vfa_rec.major_version := l_vfa_rec.major_version;
1881         END IF;
1882         IF (x_vfa_rec.object_version_number = OKL_API.G_MISS_NUM)
1883         THEN
1884           x_vfa_rec.object_version_number := l_vfa_rec.object_version_number;
1885         END IF;
1886         IF (x_vfa_rec.dnz_chr_id = OKL_API.G_MISS_NUM)
1887         THEN
1888           x_vfa_rec.dnz_chr_id := l_vfa_rec.dnz_chr_id;
1889         END IF;
1890         IF (x_vfa_rec.fa_cle_id = OKL_API.G_MISS_NUM)
1891         THEN
1892           x_vfa_rec.fa_cle_id := l_vfa_rec.fa_cle_id;
1893         END IF;
1894         IF (x_vfa_rec.name = OKL_API.G_MISS_CHAR)
1895         THEN
1896           x_vfa_rec.name := l_vfa_rec.name;
1897         END IF;
1898         IF (x_vfa_rec.description = OKL_API.G_MISS_CHAR)
1899         THEN
1900           x_vfa_rec.description := l_vfa_rec.description;
1901         END IF;
1902         IF (x_vfa_rec.asset_id = OKL_API.G_MISS_NUM)
1903         THEN
1904           x_vfa_rec.asset_id := l_vfa_rec.asset_id;
1905         END IF;
1906         IF (x_vfa_rec.asset_number = OKL_API.G_MISS_CHAR)
1907         THEN
1908           x_vfa_rec.asset_number := l_vfa_rec.asset_number;
1909         END IF;
1910         IF (x_vfa_rec.corporate_book = OKL_API.G_MISS_CHAR)
1911         THEN
1912           x_vfa_rec.corporate_book := l_vfa_rec.corporate_book;
1913         END IF;
1914         IF (x_vfa_rec.life_in_months = OKL_API.G_MISS_NUM)
1915         THEN
1916           x_vfa_rec.life_in_months := l_vfa_rec.life_in_months;
1917         END IF;
1918         IF (x_vfa_rec.original_cost = OKL_API.G_MISS_NUM)
1919         THEN
1920           x_vfa_rec.original_cost := l_vfa_rec.original_cost;
1921         END IF;
1922         IF (x_vfa_rec.cost = OKL_API.G_MISS_NUM)
1923         THEN
1924           x_vfa_rec.cost := l_vfa_rec.cost;
1925         END IF;
1926         IF (x_vfa_rec.adjusted_cost = OKL_API.G_MISS_NUM)
1927         THEN
1928           x_vfa_rec.adjusted_cost := l_vfa_rec.adjusted_cost;
1929         END IF;
1930         IF (x_vfa_rec.current_units = OKL_API.G_MISS_NUM)
1931         THEN
1932           x_vfa_rec.current_units := l_vfa_rec.current_units;
1933         END IF;
1934         IF (x_vfa_rec.new_used = OKL_API.G_MISS_CHAR)
1935         THEN
1936           x_vfa_rec.new_used := l_vfa_rec.new_used;
1937         END IF;
1938         IF (x_vfa_rec.in_service_date = OKL_API.G_MISS_DATE)
1939         THEN
1940           x_vfa_rec.in_service_date := l_vfa_rec.in_service_date;
1941         END IF;
1942         IF (x_vfa_rec.model_number = OKL_API.G_MISS_CHAR)
1943         THEN
1944           x_vfa_rec.model_number := l_vfa_rec.model_number;
1945         END IF;
1946         IF (x_vfa_rec.asset_type = OKL_API.G_MISS_CHAR)
1947         THEN
1948           x_vfa_rec.asset_type := l_vfa_rec.asset_type;
1949         END IF;
1950         IF (x_vfa_rec.salvage_value = OKL_API.G_MISS_NUM)
1951         THEN
1952           x_vfa_rec.salvage_value := l_vfa_rec.salvage_value;
1953         END IF;
1954         IF (x_vfa_rec.percent_salvage_value = OKL_API.G_MISS_NUM)
1955         THEN
1956           x_vfa_rec.percent_salvage_value := l_vfa_rec.percent_salvage_value;
1957         END IF;
1958         IF (x_vfa_rec.depreciation_category = OKL_API.G_MISS_NUM)
1959         THEN
1960           x_vfa_rec.depreciation_category := l_vfa_rec.depreciation_category;
1961         END IF;
1962         IF (x_vfa_rec.deprn_start_date = OKL_API.G_MISS_DATE)
1963         THEN
1964           x_vfa_rec.deprn_start_date := l_vfa_rec.deprn_start_date;
1965         END IF;
1966         IF (x_vfa_rec.deprn_method_code = OKL_API.G_MISS_CHAR)
1967         THEN
1968           x_vfa_rec.deprn_method_code := l_vfa_rec.deprn_method_code;
1969         END IF;
1970         IF (x_vfa_rec.rate_adjustment_factor = OKL_API.G_MISS_NUM)
1971         THEN
1972           x_vfa_rec.rate_adjustment_factor := l_vfa_rec.rate_adjustment_factor;
1973         END IF;
1974         IF (x_vfa_rec.basic_rate = OKL_API.G_MISS_NUM)
1975         THEN
1976           x_vfa_rec.basic_rate := l_vfa_rec.basic_rate;
1977         END IF;
1978         IF (x_vfa_rec.adjusted_rate = OKL_API.G_MISS_NUM)
1979         THEN
1980           x_vfa_rec.adjusted_rate := l_vfa_rec.adjusted_rate;
1981         END IF;
1982         IF (x_vfa_rec.start_date_active = OKL_API.G_MISS_DATE)
1983         THEN
1984           x_vfa_rec.start_date_active := l_vfa_rec.start_date_active;
1985         END IF;
1986         IF (x_vfa_rec.end_date_active = OKL_API.G_MISS_DATE)
1987         THEN
1988           x_vfa_rec.end_date_active := l_vfa_rec.end_date_active;
1989         END IF;
1990         IF (x_vfa_rec.status = OKL_API.G_MISS_CHAR)
1991         THEN
1992           x_vfa_rec.status := l_vfa_rec.status;
1993         END IF;
1994         IF (x_vfa_rec.primary_uom_code = OKL_API.G_MISS_CHAR)
1995         THEN
1996           x_vfa_rec.primary_uom_code := l_vfa_rec.primary_uom_code;
1997         END IF;
1998         IF (x_vfa_rec.recoverable_cost = OKL_API.G_MISS_NUM)
1999         THEN
2000           x_vfa_rec.recoverable_cost := l_vfa_rec.recoverable_cost;
2001         END IF;
2002 --Bug# 2981308
2003         IF (x_vfa_rec.asset_key_id = OKL_API.G_MISS_NUM)
2004         THEN
2005           x_vfa_rec.asset_key_id := l_vfa_rec.asset_key_id;
2006         END IF;
2007         IF (x_vfa_rec.attribute_category = OKL_API.G_MISS_CHAR)
2008         THEN
2009           x_vfa_rec.attribute_category := l_vfa_rec.attribute_category;
2010         END IF;
2011         IF (x_vfa_rec.attribute1 = OKL_API.G_MISS_CHAR)
2012         THEN
2013           x_vfa_rec.attribute1 := l_vfa_rec.attribute1;
2014         END IF;
2015         IF (x_vfa_rec.attribute2 = OKL_API.G_MISS_CHAR)
2016         THEN
2017           x_vfa_rec.attribute2 := l_vfa_rec.attribute2;
2018         END IF;
2019         IF (x_vfa_rec.attribute3 = OKL_API.G_MISS_CHAR)
2020         THEN
2021           x_vfa_rec.attribute3 := l_vfa_rec.attribute3;
2022         END IF;
2023         IF (x_vfa_rec.attribute4 = OKL_API.G_MISS_CHAR)
2024         THEN
2025           x_vfa_rec.attribute4 := l_vfa_rec.attribute4;
2026         END IF;
2027         IF (x_vfa_rec.attribute5 = OKL_API.G_MISS_CHAR)
2028         THEN
2029           x_vfa_rec.attribute5 := l_vfa_rec.attribute5;
2030         END IF;
2031         IF (x_vfa_rec.attribute6 = OKL_API.G_MISS_CHAR)
2032         THEN
2033           x_vfa_rec.attribute6 := l_vfa_rec.attribute6;
2034         END IF;
2035         IF (x_vfa_rec.attribute7 = OKL_API.G_MISS_CHAR)
2036         THEN
2037           x_vfa_rec.attribute7 := l_vfa_rec.attribute7;
2038         END IF;
2039         IF (x_vfa_rec.attribute8 = OKL_API.G_MISS_CHAR)
2040         THEN
2041           x_vfa_rec.attribute8 := l_vfa_rec.attribute8;
2042         END IF;
2043         IF (x_vfa_rec.attribute9 = OKL_API.G_MISS_CHAR)
2044         THEN
2045           x_vfa_rec.attribute9 := l_vfa_rec.attribute9;
2046         END IF;
2047         IF (x_vfa_rec.attribute10 = OKL_API.G_MISS_CHAR)
2048         THEN
2049           x_vfa_rec.attribute10 := l_vfa_rec.attribute10;
2050         END IF;
2051         IF (x_vfa_rec.attribute11 = OKL_API.G_MISS_CHAR)
2052         THEN
2053           x_vfa_rec.attribute11 := l_vfa_rec.attribute11;
2054         END IF;
2055         IF (x_vfa_rec.attribute12 = OKL_API.G_MISS_CHAR)
2056         THEN
2057           x_vfa_rec.attribute12 := l_vfa_rec.attribute12;
2058         END IF;
2059         IF (x_vfa_rec.attribute13 = OKL_API.G_MISS_CHAR)
2060         THEN
2061           x_vfa_rec.attribute13 := l_vfa_rec.attribute13;
2062         END IF;
2063         IF (x_vfa_rec.attribute14 = OKL_API.G_MISS_CHAR)
2064         THEN
2065           x_vfa_rec.attribute14 := l_vfa_rec.attribute14;
2066         END IF;
2067         IF (x_vfa_rec.attribute15 = OKL_API.G_MISS_CHAR)
2068         THEN
2069           x_vfa_rec.attribute15 := l_vfa_rec.attribute15;
2070         END IF;
2071         IF (x_vfa_rec.created_by = OKL_API.G_MISS_NUM)
2072         THEN
2073           x_vfa_rec.created_by := l_vfa_rec.created_by;
2074         END IF;
2075         IF (x_vfa_rec.creation_date = OKL_API.G_MISS_DATE)
2076         THEN
2077           x_vfa_rec.creation_date := l_vfa_rec.creation_date;
2078         END IF;
2079         IF (x_vfa_rec.last_updated_by = OKL_API.G_MISS_NUM)
2080         THEN
2081           x_vfa_rec.last_updated_by := l_vfa_rec.last_updated_by;
2082         END IF;
2083         IF (x_vfa_rec.last_update_date = OKL_API.G_MISS_DATE)
2084         THEN
2085           x_vfa_rec.last_update_date := l_vfa_rec.last_update_date;
2086         END IF;
2087         IF (x_vfa_rec.last_update_login = OKL_API.G_MISS_NUM)
2088         THEN
2089           x_vfa_rec.last_update_login := l_vfa_rec.last_update_login;
2090         END IF;
2091 	 --Added by dpsingh for LE uptake
2092 	 IF (x_vfa_rec.legal_entity_id = OKL_API.G_MISS_NUM)
2093         THEN
2094           x_vfa_rec.legal_entity_id := l_vfa_rec.legal_entity_id;
2095         END IF;
2096       END IF;
2097       RETURN(l_return_status);
2098     END populate_new_record;
2099     ----------------------------------------------
2100     -- Set_Attributes for:OKL_CONTRACT_ASSET_HV --
2101     ----------------------------------------------
2102     FUNCTION Set_Attributes (
2103       p_vfa_rec IN vfa_rec_type,
2104       x_vfa_rec OUT NOCOPY vfa_rec_type
2105     ) RETURN VARCHAR2 IS
2106       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2107     BEGIN
2108       x_vfa_rec := p_vfa_rec;
2109       x_vfa_rec.OBJECT_VERSION_NUMBER := p_vfa_rec.OBJECT_VERSION_NUMBER + 1;
2110       RETURN(l_return_status);
2111     END Set_Attributes;
2112   BEGIN
2113     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2114                                               p_init_msg_list,
2115                                               '_PVT',
2116                                               x_return_status);
2117     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2118       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2119     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2120       RAISE OKL_API.G_EXCEPTION_ERROR;
2121     END IF;
2122     --- Setting item attributes
2123     l_return_status := Set_Attributes(
2124       p_vfa_rec,                        -- IN
2125       l_vfa_rec);                       -- OUT
2126     --- If any errors happen abort API
2127     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2128       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2129     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2130       RAISE OKL_API.G_EXCEPTION_ERROR;
2131     END IF;
2132     l_return_status := populate_new_record(l_vfa_rec, l_def_vfa_rec);
2133     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2134       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2135     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2136       RAISE OKL_API.G_EXCEPTION_ERROR;
2137     END IF;
2138     UPDATE OKL_CONTRACT_ASSET_H
2139     SET ID = l_def_vfa_rec.id,
2140         MAJOR_VERSION = l_def_vfa_rec.major_version,
2141         OBJECT_VERSION_NUMBER = l_def_vfa_rec.object_version_number,
2142         DNZ_CHR_ID = l_def_vfa_rec.dnz_chr_id,
2143         FA_CLE_ID = l_def_vfa_rec.fa_cle_id,
2144         NAME = l_def_vfa_rec.name,
2145         DESCRIPTION = l_def_vfa_rec.description,
2146         ASSET_ID = l_def_vfa_rec.asset_id,
2147         ASSET_NUMBER = l_def_vfa_rec.asset_number,
2148         CORPORATE_BOOK = l_def_vfa_rec.corporate_book,
2149         LIFE_IN_MONTHS = l_def_vfa_rec.life_in_months,
2150         ORIGINAL_COST = l_def_vfa_rec.original_cost,
2151         COST = l_def_vfa_rec.cost,
2152         ADJUSTED_COST = l_def_vfa_rec.adjusted_cost,
2153         CURRENT_UNITS = l_def_vfa_rec.current_units,
2154         NEW_USED = l_def_vfa_rec.new_used,
2155         IN_SERVICE_DATE = l_def_vfa_rec.in_service_date,
2156         MODEL_NUMBER = l_def_vfa_rec.model_number,
2157         ASSET_TYPE = l_def_vfa_rec.asset_type,
2158         SALVAGE_VALUE = l_def_vfa_rec.salvage_value,
2159         PERCENT_SALVAGE_VALUE = l_def_vfa_rec.percent_salvage_value,
2160         DEPRECIATION_CATEGORY = l_def_vfa_rec.depreciation_category,
2161         DEPRN_START_DATE = l_def_vfa_rec.deprn_start_date,
2162         DEPRN_METHOD_CODE = l_def_vfa_rec.deprn_method_code,
2163         RATE_ADJUSTMENT_FACTOR = l_def_vfa_rec.rate_adjustment_factor,
2164         BASIC_RATE = l_def_vfa_rec.basic_rate,
2165         ADJUSTED_RATE = l_def_vfa_rec.adjusted_rate,
2166         START_DATE_ACTIVE = l_def_vfa_rec.start_date_active,
2167         END_DATE_ACTIVE = l_def_vfa_rec.end_date_active,
2168         STATUS = l_def_vfa_rec.status,
2169         PRIMARY_UOM_CODE = l_def_vfa_rec.primary_uom_code,
2170         RECOVERABLE_COST = l_def_vfa_rec.recoverable_cost,
2171 --Bug# 2981308:
2172         ASSET_KEY_ID = l_def_vfa_rec.asset_key_id,
2173         ATTRIBUTE_CATEGORY = l_def_vfa_rec.attribute_category,
2174         ATTRIBUTE1 = l_def_vfa_rec.attribute1,
2175         ATTRIBUTE2 = l_def_vfa_rec.attribute2,
2176         ATTRIBUTE3 = l_def_vfa_rec.attribute3,
2177         ATTRIBUTE4 = l_def_vfa_rec.attribute4,
2178         ATTRIBUTE5 = l_def_vfa_rec.attribute5,
2179         ATTRIBUTE6 = l_def_vfa_rec.attribute6,
2180         ATTRIBUTE7 = l_def_vfa_rec.attribute7,
2181         ATTRIBUTE8 = l_def_vfa_rec.attribute8,
2182         ATTRIBUTE9 = l_def_vfa_rec.attribute9,
2183         ATTRIBUTE10 = l_def_vfa_rec.attribute10,
2184         ATTRIBUTE11 = l_def_vfa_rec.attribute11,
2185         ATTRIBUTE12 = l_def_vfa_rec.attribute12,
2186         ATTRIBUTE13 = l_def_vfa_rec.attribute13,
2187         ATTRIBUTE14 = l_def_vfa_rec.attribute14,
2188         ATTRIBUTE15 = l_def_vfa_rec.attribute15,
2189         CREATED_BY = l_def_vfa_rec.created_by,
2190         CREATION_DATE = l_def_vfa_rec.creation_date,
2191         LAST_UPDATED_BY = l_def_vfa_rec.last_updated_by,
2192         LAST_UPDATE_DATE = l_def_vfa_rec.last_update_date,
2193         LAST_UPDATE_LOGIN = l_def_vfa_rec.last_update_login,
2194 	--Added by dpsingh for LE uptake
2195         LEGAL_ENTITY_ID = l_def_vfa_rec.legal_entity_id
2196     WHERE ID = l_def_vfa_rec.id;
2197     x_vfa_rec := l_vfa_rec;
2198     x_return_status := l_return_status;
2199     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2200   EXCEPTION
2201     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2202       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2203       (
2204         l_api_name,
2205         G_PKG_NAME,
2206         'OKL_API.G_RET_STS_ERROR',
2207         x_msg_count,
2208         x_msg_data,
2209         '_PVT'
2210       );
2211     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2212       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2213       (
2214         l_api_name,
2215         G_PKG_NAME,
2216         'OKL_API.G_RET_STS_UNEXP_ERROR',
2217         x_msg_count,
2218         x_msg_data,
2219         '_PVT'
2220       );
2221     WHEN OTHERS THEN
2222       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2223       (
2224         l_api_name,
2225         G_PKG_NAME,
2226         'OTHERS',
2227         x_msg_count,
2228         x_msg_data,
2229         '_PVT'
2230       );
2231   END update_row;
2232   ------------------------------------------
2233   -- update_row for:OKL_CONTRACT_ASSET_HV --
2234   ------------------------------------------
2235   PROCEDURE update_row(
2236     p_api_version                  IN NUMBER,
2237     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2238     x_return_status                OUT NOCOPY VARCHAR2,
2239     x_msg_count                    OUT NOCOPY NUMBER,
2240     x_msg_data                     OUT NOCOPY VARCHAR2,
2241     p_vfav_rec                     IN vfav_rec_type,
2242     x_vfav_rec                     OUT NOCOPY vfav_rec_type) IS
2243 
2244     l_api_version                  CONSTANT NUMBER := 1;
2245     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
2246     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2247     l_vfav_rec                     vfav_rec_type := p_vfav_rec;
2248     l_def_vfav_rec                 vfav_rec_type;
2249     l_db_vfav_rec                  vfav_rec_type;
2250     l_vfa_rec                      vfa_rec_type;
2251     lx_vfa_rec                     vfa_rec_type;
2252     -------------------------------
2253     -- FUNCTION fill_who_columns --
2254     -------------------------------
2255     FUNCTION fill_who_columns (
2256       p_vfav_rec IN vfav_rec_type
2257     ) RETURN vfav_rec_type IS
2258       l_vfav_rec vfav_rec_type := p_vfav_rec;
2259     BEGIN
2260       l_vfav_rec.LAST_UPDATE_DATE := SYSDATE;
2261       l_vfav_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2262       l_vfav_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2263       RETURN(l_vfav_rec);
2264     END fill_who_columns;
2265     ----------------------------------
2266     -- FUNCTION populate_new_record --
2267     ----------------------------------
2268     FUNCTION populate_new_record (
2269       p_vfav_rec IN vfav_rec_type,
2270       x_vfav_rec OUT NOCOPY vfav_rec_type
2271     ) RETURN VARCHAR2 IS
2272       l_row_notfound                 BOOLEAN := TRUE;
2273       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2274     BEGIN
2275       x_vfav_rec := p_vfav_rec;
2276       l_db_vfav_rec := get_rec(p_vfav_rec, l_return_status);
2277       IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
2278         IF (x_vfav_rec.id = OKL_API.G_MISS_NUM)
2279         THEN
2280           x_vfav_rec.id := l_db_vfav_rec.id;
2281         END IF;
2282         IF (x_vfav_rec.object_version_number = OKL_API.G_MISS_NUM)
2283         THEN
2284           x_vfav_rec.object_version_number := l_db_vfav_rec.object_version_number;
2285         END IF;
2286         IF (x_vfav_rec.major_version = OKL_API.G_MISS_NUM)
2287         THEN
2288           x_vfav_rec.major_version := l_db_vfav_rec.major_version;
2289         END IF;
2290         IF (x_vfav_rec.dnz_chr_id = OKL_API.G_MISS_NUM)
2291         THEN
2292           x_vfav_rec.dnz_chr_id := l_db_vfav_rec.dnz_chr_id;
2293         END IF;
2294         IF (x_vfav_rec.fa_cle_id = OKL_API.G_MISS_NUM)
2295         THEN
2296           x_vfav_rec.fa_cle_id := l_db_vfav_rec.fa_cle_id;
2297         END IF;
2298         IF (x_vfav_rec.name = OKL_API.G_MISS_CHAR)
2299         THEN
2300           x_vfav_rec.name := l_db_vfav_rec.name;
2301         END IF;
2302         IF (x_vfav_rec.description = OKL_API.G_MISS_CHAR)
2303         THEN
2304           x_vfav_rec.description := l_db_vfav_rec.description;
2305         END IF;
2306         IF (x_vfav_rec.asset_id = OKL_API.G_MISS_NUM)
2307         THEN
2308           x_vfav_rec.asset_id := l_db_vfav_rec.asset_id;
2309         END IF;
2310         IF (x_vfav_rec.asset_number = OKL_API.G_MISS_CHAR)
2311         THEN
2312           x_vfav_rec.asset_number := l_db_vfav_rec.asset_number;
2313         END IF;
2314         IF (x_vfav_rec.corporate_book = OKL_API.G_MISS_CHAR)
2315         THEN
2316           x_vfav_rec.corporate_book := l_db_vfav_rec.corporate_book;
2317         END IF;
2318         IF (x_vfav_rec.life_in_months = OKL_API.G_MISS_NUM)
2319         THEN
2320           x_vfav_rec.life_in_months := l_db_vfav_rec.life_in_months;
2321         END IF;
2322         IF (x_vfav_rec.original_cost = OKL_API.G_MISS_NUM)
2323         THEN
2324           x_vfav_rec.original_cost := l_db_vfav_rec.original_cost;
2325         END IF;
2326         IF (x_vfav_rec.cost = OKL_API.G_MISS_NUM)
2327         THEN
2328           x_vfav_rec.cost := l_db_vfav_rec.cost;
2329         END IF;
2330         IF (x_vfav_rec.adjusted_cost = OKL_API.G_MISS_NUM)
2331         THEN
2332           x_vfav_rec.adjusted_cost := l_db_vfav_rec.adjusted_cost;
2333         END IF;
2334         IF (x_vfav_rec.current_units = OKL_API.G_MISS_NUM)
2335         THEN
2336           x_vfav_rec.current_units := l_db_vfav_rec.current_units;
2337         END IF;
2338         IF (x_vfav_rec.new_used = OKL_API.G_MISS_CHAR)
2339         THEN
2340           x_vfav_rec.new_used := l_db_vfav_rec.new_used;
2341         END IF;
2342         IF (x_vfav_rec.in_service_date = OKL_API.G_MISS_DATE)
2343         THEN
2344           x_vfav_rec.in_service_date := l_db_vfav_rec.in_service_date;
2345         END IF;
2346         IF (x_vfav_rec.model_number = OKL_API.G_MISS_CHAR)
2347         THEN
2348           x_vfav_rec.model_number := l_db_vfav_rec.model_number;
2349         END IF;
2350         IF (x_vfav_rec.asset_type = OKL_API.G_MISS_CHAR)
2351         THEN
2352           x_vfav_rec.asset_type := l_db_vfav_rec.asset_type;
2353         END IF;
2354         IF (x_vfav_rec.salvage_value = OKL_API.G_MISS_NUM)
2355         THEN
2356           x_vfav_rec.salvage_value := l_db_vfav_rec.salvage_value;
2357         END IF;
2358         IF (x_vfav_rec.percent_salvage_value = OKL_API.G_MISS_NUM)
2359         THEN
2360           x_vfav_rec.percent_salvage_value := l_db_vfav_rec.percent_salvage_value;
2361         END IF;
2362         IF (x_vfav_rec.depreciation_category = OKL_API.G_MISS_NUM)
2363         THEN
2364           x_vfav_rec.depreciation_category := l_db_vfav_rec.depreciation_category;
2365         END IF;
2366         IF (x_vfav_rec.deprn_start_date = OKL_API.G_MISS_DATE)
2367         THEN
2368           x_vfav_rec.deprn_start_date := l_db_vfav_rec.deprn_start_date;
2369         END IF;
2370         IF (x_vfav_rec.deprn_method_code = OKL_API.G_MISS_CHAR)
2371         THEN
2372           x_vfav_rec.deprn_method_code := l_db_vfav_rec.deprn_method_code;
2373         END IF;
2374         IF (x_vfav_rec.rate_adjustment_factor = OKL_API.G_MISS_NUM)
2375         THEN
2376           x_vfav_rec.rate_adjustment_factor := l_db_vfav_rec.rate_adjustment_factor;
2377         END IF;
2378         IF (x_vfav_rec.basic_rate = OKL_API.G_MISS_NUM)
2379         THEN
2380           x_vfav_rec.basic_rate := l_db_vfav_rec.basic_rate;
2381         END IF;
2382         IF (x_vfav_rec.adjusted_rate = OKL_API.G_MISS_NUM)
2383         THEN
2384           x_vfav_rec.adjusted_rate := l_db_vfav_rec.adjusted_rate;
2385         END IF;
2386         IF (x_vfav_rec.start_date_active = OKL_API.G_MISS_DATE)
2387         THEN
2388           x_vfav_rec.start_date_active := l_db_vfav_rec.start_date_active;
2389         END IF;
2390         IF (x_vfav_rec.end_date_active = OKL_API.G_MISS_DATE)
2391         THEN
2392           x_vfav_rec.end_date_active := l_db_vfav_rec.end_date_active;
2393         END IF;
2394         IF (x_vfav_rec.status = OKL_API.G_MISS_CHAR)
2395         THEN
2396           x_vfav_rec.status := l_db_vfav_rec.status;
2397         END IF;
2398         IF (x_vfav_rec.primary_uom_code = OKL_API.G_MISS_CHAR)
2399         THEN
2400           x_vfav_rec.primary_uom_code := l_db_vfav_rec.primary_uom_code;
2401         END IF;
2402         IF (x_vfav_rec.recoverable_cost = OKL_API.G_MISS_NUM)
2403         THEN
2404           x_vfav_rec.recoverable_cost := l_db_vfav_rec.recoverable_cost;
2405         END IF;
2406 --Bug# 2981308:
2407         IF (x_vfav_rec.asset_key_id = OKL_API.G_MISS_NUM)
2408         THEN
2409           x_vfav_rec.asset_key_id := l_db_vfav_rec.asset_key_id;
2410         END IF;
2411         IF (x_vfav_rec.attribute_category = OKL_API.G_MISS_CHAR)
2412         THEN
2413           x_vfav_rec.attribute_category := l_db_vfav_rec.attribute_category;
2414         END IF;
2415         IF (x_vfav_rec.attribute1 = OKL_API.G_MISS_CHAR)
2416         THEN
2417           x_vfav_rec.attribute1 := l_db_vfav_rec.attribute1;
2418         END IF;
2419         IF (x_vfav_rec.attribute2 = OKL_API.G_MISS_CHAR)
2420         THEN
2421           x_vfav_rec.attribute2 := l_db_vfav_rec.attribute2;
2422         END IF;
2423         IF (x_vfav_rec.attribute3 = OKL_API.G_MISS_CHAR)
2424         THEN
2425           x_vfav_rec.attribute3 := l_db_vfav_rec.attribute3;
2426         END IF;
2427         IF (x_vfav_rec.attribute4 = OKL_API.G_MISS_CHAR)
2428         THEN
2429           x_vfav_rec.attribute4 := l_db_vfav_rec.attribute4;
2430         END IF;
2431         IF (x_vfav_rec.attribute5 = OKL_API.G_MISS_CHAR)
2432         THEN
2433           x_vfav_rec.attribute5 := l_db_vfav_rec.attribute5;
2434         END IF;
2435         IF (x_vfav_rec.attribute6 = OKL_API.G_MISS_CHAR)
2436         THEN
2437           x_vfav_rec.attribute6 := l_db_vfav_rec.attribute6;
2438         END IF;
2439         IF (x_vfav_rec.attribute7 = OKL_API.G_MISS_CHAR)
2440         THEN
2441           x_vfav_rec.attribute7 := l_db_vfav_rec.attribute7;
2442         END IF;
2443         IF (x_vfav_rec.attribute8 = OKL_API.G_MISS_CHAR)
2444         THEN
2445           x_vfav_rec.attribute8 := l_db_vfav_rec.attribute8;
2446         END IF;
2447         IF (x_vfav_rec.attribute9 = OKL_API.G_MISS_CHAR)
2448         THEN
2449           x_vfav_rec.attribute9 := l_db_vfav_rec.attribute9;
2450         END IF;
2451         IF (x_vfav_rec.attribute10 = OKL_API.G_MISS_CHAR)
2452         THEN
2453           x_vfav_rec.attribute10 := l_db_vfav_rec.attribute10;
2454         END IF;
2455         IF (x_vfav_rec.attribute11 = OKL_API.G_MISS_CHAR)
2456         THEN
2457           x_vfav_rec.attribute11 := l_db_vfav_rec.attribute11;
2458         END IF;
2459         IF (x_vfav_rec.attribute12 = OKL_API.G_MISS_CHAR)
2460         THEN
2461           x_vfav_rec.attribute12 := l_db_vfav_rec.attribute12;
2462         END IF;
2463         IF (x_vfav_rec.attribute13 = OKL_API.G_MISS_CHAR)
2464         THEN
2465           x_vfav_rec.attribute13 := l_db_vfav_rec.attribute13;
2466         END IF;
2467         IF (x_vfav_rec.attribute14 = OKL_API.G_MISS_CHAR)
2468         THEN
2469           x_vfav_rec.attribute14 := l_db_vfav_rec.attribute14;
2470         END IF;
2471         IF (x_vfav_rec.attribute15 = OKL_API.G_MISS_CHAR)
2472         THEN
2473           x_vfav_rec.attribute15 := l_db_vfav_rec.attribute15;
2474         END IF;
2475         IF (x_vfav_rec.created_by = OKL_API.G_MISS_NUM)
2476         THEN
2477           x_vfav_rec.created_by := l_db_vfav_rec.created_by;
2478         END IF;
2479         IF (x_vfav_rec.creation_date = OKL_API.G_MISS_DATE)
2480         THEN
2481           x_vfav_rec.creation_date := l_db_vfav_rec.creation_date;
2482         END IF;
2483         IF (x_vfav_rec.last_updated_by = OKL_API.G_MISS_NUM)
2484         THEN
2485           x_vfav_rec.last_updated_by := l_db_vfav_rec.last_updated_by;
2486         END IF;
2487         IF (x_vfav_rec.last_update_date = OKL_API.G_MISS_DATE)
2488         THEN
2489           x_vfav_rec.last_update_date := l_db_vfav_rec.last_update_date;
2490         END IF;
2491         IF (x_vfav_rec.last_update_login = OKL_API.G_MISS_NUM)
2492         THEN
2493           x_vfav_rec.last_update_login := l_db_vfav_rec.last_update_login;
2494         END IF;
2495 	--Added by dpsingh for LE uptake
2496 	 IF (x_vfav_rec.legal_entity_id = OKL_API.G_MISS_NUM)
2497         THEN
2498           x_vfav_rec.legal_entity_id := l_db_vfav_rec.legal_entity_id;
2499         END IF;
2500       END IF;
2501       RETURN(l_return_status);
2502     END populate_new_record;
2503     ----------------------------------------------
2504     -- Set_Attributes for:OKL_CONTRACT_ASSET_HV --
2505     ----------------------------------------------
2506     FUNCTION Set_Attributes (
2507       p_vfav_rec IN vfav_rec_type,
2508       x_vfav_rec OUT NOCOPY vfav_rec_type
2509     ) RETURN VARCHAR2 IS
2510       l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2511     BEGIN
2512       x_vfav_rec := p_vfav_rec;
2513       RETURN(l_return_status);
2514     END Set_Attributes;
2515   BEGIN
2516     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2517                                               G_PKG_NAME,
2518                                               p_init_msg_list,
2519                                               l_api_version,
2520                                               p_api_version,
2521                                               '_PVT',
2522                                               x_return_status);
2523     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2524       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2525     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2526       RAISE OKL_API.G_EXCEPTION_ERROR;
2527     END IF;
2528     --- Setting item attributes
2529     l_return_status := Set_Attributes(
2530       p_vfav_rec,                        -- IN
2531       x_vfav_rec);                       -- OUT
2532     --- If any errors happen abort API
2533     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2534       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2535     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2536       RAISE OKL_API.G_EXCEPTION_ERROR;
2537     END IF;
2538     l_return_status := populate_new_record(l_vfav_rec, l_def_vfav_rec);
2539     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2540       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2541     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2542       RAISE OKL_API.G_EXCEPTION_ERROR;
2543     END IF;
2544     l_def_vfav_rec := fill_who_columns(l_def_vfav_rec);
2545     --- Validate all non-missing attributes (Item Level Validation)
2546     l_return_status := Validate_Attributes(l_def_vfav_rec);
2547     --- If any errors happen abort API
2548     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2549       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2550     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2551       RAISE OKL_API.G_EXCEPTION_ERROR;
2552     END IF;
2553     l_return_status := Validate_Record(l_def_vfav_rec);
2554     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2555       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2556     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2557       RAISE OKL_API.G_EXCEPTION_ERROR;
2558     END IF;
2559     -----------------------------------------
2560     -- Move VIEW record to "Child" records --
2561     -----------------------------------------
2562     migrate(l_def_vfav_rec, l_vfa_rec);
2563     -----------------------------------------------
2564     -- Call the UPDATE_ROW for each child record --
2565     -----------------------------------------------
2566 
2567     update_row(
2568       p_init_msg_list,
2569       l_return_status,
2570       x_msg_count,
2571       x_msg_data,
2572       l_vfa_rec,
2573       lx_vfa_rec
2574     );
2575     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2576       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2577     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2578       RAISE OKL_API.G_EXCEPTION_ERROR;
2579     END IF;
2580     migrate(lx_vfa_rec, l_def_vfav_rec);
2581     x_vfav_rec := l_def_vfav_rec;
2582     x_return_status := l_return_status;
2583     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2584   EXCEPTION
2585     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2586       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2587       (
2588         l_api_name,
2589         G_PKG_NAME,
2590         'OKL_API.G_RET_STS_ERROR',
2591         x_msg_count,
2592         x_msg_data,
2593         '_PVT'
2594       );
2595     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2596       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2597       (
2598         l_api_name,
2599         G_PKG_NAME,
2600         'OKL_API.G_RET_STS_UNEXP_ERROR',
2601         x_msg_count,
2602         x_msg_data,
2603         '_PVT'
2604       );
2605     WHEN OTHERS THEN
2606       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2607       (
2608         l_api_name,
2609         G_PKG_NAME,
2610         'OTHERS',
2611         x_msg_count,
2612         x_msg_data,
2613         '_PVT'
2614       );
2615   END update_row;
2616   ----------------------------------------
2617   -- PL/SQL TBL update_row for:vfav_tbl --
2618   ----------------------------------------
2619   PROCEDURE update_row(
2620     p_api_version                  IN NUMBER,
2621     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2622     x_return_status                OUT NOCOPY VARCHAR2,
2623     x_msg_count                    OUT NOCOPY NUMBER,
2624     x_msg_data                     OUT NOCOPY VARCHAR2,
2625     p_vfav_tbl                     IN vfav_tbl_type,
2626     x_vfav_tbl                     OUT NOCOPY vfav_tbl_type) IS
2627 
2628     l_api_version                  CONSTANT NUMBER := 1;
2629     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
2630     i                              NUMBER := 0;
2631   BEGIN
2632     OKL_API.init_msg_list(p_init_msg_list);
2633     -- Make sure PL/SQL table has records in it before passing
2634     IF (p_vfav_tbl.COUNT > 0) THEN
2635       i := p_vfav_tbl.FIRST;
2636       LOOP
2637           update_row (
2638             p_api_version                  => p_api_version,
2639             p_init_msg_list                => p_init_msg_list,
2640             x_return_status                => x_return_status,
2641             x_msg_count                    => x_msg_count,
2642             x_msg_data                     => x_msg_data,
2643             p_vfav_rec                     => p_vfav_tbl(i),
2644             x_vfav_rec                     => x_vfav_tbl(i));
2645         EXIT WHEN (i = p_vfav_tbl.LAST);
2646         i := p_vfav_tbl.NEXT(i);
2647       END LOOP;
2648     END IF;
2649     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2650   EXCEPTION
2651     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2652       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2653       (
2654         l_api_name,
2655         G_PKG_NAME,
2656         'OKL_API.G_RET_STS_ERROR',
2657         x_msg_count,
2658         x_msg_data,
2659         '_PVT'
2660       );
2661     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2662       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2663       (
2664         l_api_name,
2665         G_PKG_NAME,
2666         'OKL_API.G_RET_STS_UNEXP_ERROR',
2667         x_msg_count,
2668         x_msg_data,
2669         '_PVT'
2670       );
2671     WHEN OTHERS THEN
2672       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2673       (
2674         l_api_name,
2675         G_PKG_NAME,
2676         'OTHERS',
2677         x_msg_count,
2678         x_msg_data,
2679         '_PVT'
2680       );
2681   END update_row;
2682   ---------------------------------------------------------------------------
2683   -- PROCEDURE delete_row
2684   ---------------------------------------------------------------------------
2685   ------------------------------------------
2686   -- delete_row for:OKL_CONTRACT_ASSET_HV --
2687   ------------------------------------------
2688   PROCEDURE delete_row(
2689     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2690     x_return_status                OUT NOCOPY VARCHAR2,
2691     x_msg_count                    OUT NOCOPY NUMBER,
2692     x_msg_data                     OUT NOCOPY VARCHAR2,
2693     p_vfa_rec                     IN vfa_rec_type) IS
2694 
2695     l_api_version                  CONSTANT NUMBER := 1;
2696     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
2697     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2698     l_vfa_rec                      vfa_rec_type := p_vfa_rec;
2699     l_row_notfound                 BOOLEAN := TRUE;
2700   BEGIN
2701     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2702                                               p_init_msg_list,
2703                                               '_PVT',
2704                                               x_return_status);
2705     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2706       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2707     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2708       RAISE OKL_API.G_EXCEPTION_ERROR;
2709     END IF;
2710 
2711     DELETE FROM OKL_CONTRACT_ASSET_H
2712     WHERE ID = p_vfa_rec.id;
2713     x_return_status := l_return_status;
2714     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2715   EXCEPTION
2716     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2717       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2718       (
2719         l_api_name,
2720         G_PKG_NAME,
2721         'OKL_API.G_RET_STS_ERROR',
2722         x_msg_count,
2723         x_msg_data,
2724         '_PVT'
2725       );
2726     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2727       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2728       (
2729         l_api_name,
2730         G_PKG_NAME,
2731         'OKL_API.G_RET_STS_UNEXP_ERROR',
2732         x_msg_count,
2733         x_msg_data,
2734         '_PVT'
2735       );
2736     WHEN OTHERS THEN
2737       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2738       (
2739         l_api_name,
2740         G_PKG_NAME,
2741         'OTHERS',
2742         x_msg_count,
2743         x_msg_data,
2744         '_PVT'
2745       );
2746   END delete_row;
2747   ------------------------------------------
2748   -- delete_row for:OKL_CONTRACT_ASSET_HV --
2749   ------------------------------------------
2750   PROCEDURE delete_row(
2751     p_api_version                  IN NUMBER,
2752     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2753     x_return_status                OUT NOCOPY VARCHAR2,
2754     x_msg_count                    OUT NOCOPY NUMBER,
2755     x_msg_data                     OUT NOCOPY VARCHAR2,
2756     p_vfav_rec                     IN vfav_rec_type) IS
2757 
2758     l_api_version                  CONSTANT NUMBER := 1;
2759     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2760     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2761     l_vfav_rec                     vfav_rec_type := p_vfav_rec;
2762     l_vfa_rec                      vfa_rec_type;
2763   BEGIN
2764     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
2765                                               G_PKG_NAME,
2766                                               p_init_msg_list,
2767                                               l_api_version,
2768                                               p_api_version,
2769                                               '_PVT',
2770                                               x_return_status);
2771     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2772       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2773     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2774       RAISE OKL_API.G_EXCEPTION_ERROR;
2775     END IF;
2776     -----------------------------------------
2777     -- Move VIEW record to "Child" records --
2778     -----------------------------------------
2779     migrate(l_vfav_rec, l_vfa_rec);
2780     -----------------------------------------------
2781     -- Call the DELETE_ROW for each child record --
2782     -----------------------------------------------
2783     delete_row(
2784       p_init_msg_list,
2785       l_return_status,
2786       x_msg_count,
2787       x_msg_data,
2788       l_vfa_rec
2789     );
2790     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2791       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2792     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2793       RAISE OKL_API.G_EXCEPTION_ERROR;
2794     END IF;
2795     x_return_status := l_return_status;
2796     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2797   EXCEPTION
2798     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2799       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2800       (
2801         l_api_name,
2802         G_PKG_NAME,
2803         'OKL_API.G_RET_STS_ERROR',
2804         x_msg_count,
2805         x_msg_data,
2806         '_PVT'
2807       );
2808     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2809       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2810       (
2811         l_api_name,
2812         G_PKG_NAME,
2813         'OKL_API.G_RET_STS_UNEXP_ERROR',
2814         x_msg_count,
2815         x_msg_data,
2816         '_PVT'
2817       );
2818     WHEN OTHERS THEN
2819       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2820       (
2821         l_api_name,
2822         G_PKG_NAME,
2823         'OTHERS',
2824         x_msg_count,
2825         x_msg_data,
2826         '_PVT'
2827       );
2828   END delete_row;
2829   -----------------------------------------------------
2830   -- PL/SQL TBL delete_row for:OKL_CONTRACT_ASSET_HV --
2831   -----------------------------------------------------
2832   PROCEDURE delete_row(
2833     p_api_version                  IN NUMBER,
2834     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2835     x_return_status                OUT NOCOPY VARCHAR2,
2836     x_msg_count                    OUT NOCOPY NUMBER,
2837     x_msg_data                     OUT NOCOPY VARCHAR2,
2838     p_vfav_tbl                     IN vfav_tbl_type) IS
2839 
2840     l_api_version                  CONSTANT NUMBER := 1;
2841     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
2842     i                              NUMBER := 0;
2843   BEGIN
2844     OKL_API.init_msg_list(p_init_msg_list);
2845     -- Make sure PL/SQL table has records in it before passing
2846     IF (p_vfav_tbl.COUNT > 0) THEN
2847       i := p_vfav_tbl.FIRST;
2848       LOOP
2849           delete_row (
2850             p_api_version                  => p_api_version,
2851             p_init_msg_list                => p_init_msg_list,
2852             x_return_status                => x_return_status,
2853             x_msg_count                    => x_msg_count,
2854             x_msg_data                     => x_msg_data,
2855             p_vfav_rec                     => p_vfav_tbl(i));
2856         EXIT WHEN (i = p_vfav_tbl.LAST);
2857         i := p_vfav_tbl.NEXT(i);
2858       END LOOP;
2859     END IF;
2860     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
2861   EXCEPTION
2862     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2863       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2864       (
2865         l_api_name,
2866         G_PKG_NAME,
2867         'OKL_API.G_RET_STS_ERROR',
2868         x_msg_count,
2869         x_msg_data,
2870         '_PVT'
2871       );
2872     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2873       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2874       (
2875         l_api_name,
2876         G_PKG_NAME,
2877         'OKL_API.G_RET_STS_UNEXP_ERROR',
2878         x_msg_count,
2879         x_msg_data,
2880         '_PVT'
2881       );
2882     WHEN OTHERS THEN
2883       x_return_status := OKL_API.HANDLE_EXCEPTIONS
2884       (
2885         l_api_name,
2886         G_PKG_NAME,
2887         'OTHERS',
2888         x_msg_count,
2889         x_msg_data,
2890         '_PVT'
2891       );
2892   END delete_row;
2893 END OKL_VFA_PVT;