DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_INA_PVT

Source


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