DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_XSI_PVT

Source


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