DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_RXL_PVT

Source


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