DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TPL_PVT

Source


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