DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TEH_PVT

Source


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