DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_PXL_PVT

Source


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