DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_XLP_PVT

Source


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