DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_XPI_PVT

Source


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