DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_RXH_PVT

Source


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