DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TXL_ASSETS_PVT

Source


1 package body OKL_TXL_ASSETS_PVT as
2 /* $Header: OKLCTALB.pls 120.8.12010000.2 2008/10/29 22:11:02 cklee ship $ */
3 
4 ------------------------------------------------------------------------------------
5 -- GLOBAL OKL MESSAGES
6 ------------------------------------------------------------------------------------
7    G_LINE_RECORD             CONSTANT  VARCHAR2(200) := 'OKL_LLA_LINE_RECORD';
8    G_AMOUNT_ROUNDING         CONSTANT  VARCHAR2(200) := 'OKL_LA_ROUNDING_ERROR';
9 
10    /*
11     * sjalasut: aug 18, 04 added constants used in raising business event. BEGIN
12     */
13    G_WF_EVT_ASSETBOOK_DPRN_CRTD CONSTANT VARCHAR2(65)   := 'oracle.apps.okl.la.lease_contract.asset_book_depreciation_created';
14    G_WF_ITM_CONTRACT_ID CONSTANT VARCHAR2(30)        := 'CONTRACT_ID';
15    G_WF_ITM_ASSET_ID CONSTANT VARCHAR2(30)           := 'ASSET_ID';
16    G_WF_ITM_BOOK_CODE CONSTANT VARCHAR2(30)          := 'BOOK_CODE';
17    G_WF_ITM_CONTRACT_PROCESS CONSTANT VARCHAR2(30)   := 'CONTRACT_PROCESS';
18    /*
19     * sjalasut: aug 18, 04 added constants used in raising business event. END
20     */
21 
22    /*
23     * sjalasut: aug 18, 04 added procedure to call private wrapper that raises the business event. BEGIN
24     * the procedure is located at the global level and not at the insert row level as the same procedure
25     * can later be used for capturing other DML logic.
26     */
27    -------------------------------------------------------------------------------
28    -- PROCEDURE raise_business_event
29    -------------------------------------------------------------------------------
30    -- Start of comments
31    --
32    -- Procedure Name  : raise_business_event
33    -- Description     : This procedure is a wrapper that raises a business event
34    --                 : when ever asset book depreciation is created.
35    -- Business Rules  :
36    -- Parameters      : p_chr_id,p_asset_id,p_book_code,p_event_name along with other api params
37    -- Version         : 1.0
38    -- History         : 30-AUG-2004 SJALASUT created
39    -- End of comments
40 
41    PROCEDURE raise_business_event(p_api_version IN NUMBER,
42                                   p_init_msg_list IN VARCHAR2,
43                                   p_chr_id IN okc_k_headers_b.id%TYPE,
44                                   p_asset_id IN okc_k_lines_b.id%TYPE,
45                                   p_book_code IN okl_txl_assets_b.corporate_book%TYPE,
46                                   p_event_name IN VARCHAR2,
47                                   x_return_status OUT NOCOPY VARCHAR2,
48                                   x_msg_count OUT NOCOPY NUMBER,
49                                   x_msg_data OUT NOCOPY VARCHAR2
50                                   ) IS
51      l_new_contract VARCHAR2(10);
52      l_rebook_contract VARCHAR2(10);
53      l_parameter_list wf_parameter_list_t;
54      l_contract_process VARCHAR2(20);
55    BEGIN
56      x_return_status := OKL_API.G_RET_STS_SUCCESS;
57 
58      -- wrapper API to get contract process. this API determines in which status the
59      -- contract in question is.
60      l_contract_process := okl_lla_util_pvt.get_contract_process(p_chr_id => p_chr_id);
61      wf_event.AddParameterToList(G_WF_ITM_CONTRACT_ID, p_chr_id, l_parameter_list);
62      wf_event.AddParameterToList(G_WF_ITM_ASSET_ID, p_asset_id, l_parameter_list);
63      wf_event.AddParameterToList(G_WF_ITM_BOOK_CODE, p_book_code, l_parameter_list);
64      wf_event.AddParameterToList(G_WF_ITM_CONTRACT_PROCESS, l_contract_process, l_parameter_list);
65      OKL_WF_PVT.raise_event(p_api_version    => p_api_version,
66                             p_init_msg_list  => p_init_msg_list,
67                             x_return_status  => x_return_status,
68                             x_msg_count      => x_msg_count,
69                             x_msg_data       => x_msg_data,
70                             p_event_name     => p_event_name,
71                             p_parameters     => l_parameter_list);
72 
73    EXCEPTION
74      WHEN OTHERS THEN
75      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
76      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
77    END raise_business_event;
78 
79    /*
80     * sjalasut: aug 18, 04 added procedure to call private wrapper that raises the business event. END
81     */
82 
83 
84 
85    PROCEDURE Create_txl_asset_def(
86      p_api_version                  IN NUMBER,
87      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
88      x_return_status                OUT NOCOPY VARCHAR2,
89      x_msg_count                    OUT NOCOPY NUMBER,
90      x_msg_data                     OUT NOCOPY VARCHAR2,
91      p_talv_rec                     IN tlvv_rec_type,
92      x_talv_rec                     OUT NOCOPY tlvv_rec_type)
93      IS
94      l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_TRX_ASSETS_LINES';
95      l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
96 
97      CURSOR header_curr_csr(p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
98      SELECT currency_code,
99             currency_conversion_type,
100             currency_conversion_date
101      FROM   okl_k_headers_full_v
102      WHERE  id = p_chr_id;
103 
104 --| start          29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
105 --|                               when create and copy asset can refer to the  |
106 --|                               same source                                  |
107 
108     --Bug# 4186455 : Do not default SV for LOANS
109     --cursor to check deal type of the contract
110     Cursor l_deal_type_csr (p_chr_id in number) is
111     select khr.deal_type,
112            khr.pdt_id,
113            pdt.reporting_pdt_id
114     from   okl_products pdt,
115            okl_k_headers            khr
116     where  pdt.id           =  khr.pdt_id
117     and    khr.id           =  p_chr_id;
118 
119     l_deal_type_rec    l_deal_type_csr%ROWTYPE;
120 
121     --dkagrawa changed cursor to use view OKL_PROD_QLTY_VAL_UV than okl_product_parameters_v
122     --cursor to get deal type corresponding to a product
123     Cursor l_pdt_deal_csr (p_pdt_id in number) is
124     SELECT ppv.quality_val deal_type
125     FROM   okl_prod_qlty_val_uv ppv
126     WHERE  ppv.quality_name IN ('LEASE','INVESTOR')
127     AND    ppv.pdt_id = p_pdt_id;
128 
129     l_pdt_deal_rec l_pdt_deal_csr%ROWTYPE;
130 
131 
132     Cursor l_residual_value_csr (p_kle_id in number) is
133     select kle.residual_value
134     from   okl_k_lines kle
135     where  kle.id           =  p_kle_id;
136 
137     l_residual_value_rec    l_residual_value_csr%ROWTYPE;
138     --End Bug# 4186455 : Do not default SV for LOANS
139 --| end          29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
140 --|                               when create and copy asset can refer to the  |
141 --|                               same source                                  |
142 
143      l_header_curr_code       OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
144      l_header_curr_conv_type  OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_TYPE%TYPE;
145      l_header_curr_conv_date  OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_DATE%TYPE;
146 
147      l_talv_rec tlvv_rec_type;
148 
149      /*
150       * sjalasut: oct 14, 04 added cursor and cursor variable to obtain the asset id against which
151       * the book depreciation is being created. BEGIN
152       */
153      CURSOR c_get_cle_id IS
154      SELECT cle_id
155        FROM okc_k_lines_b
156       WHERE id = p_talv_rec.kle_id;
157 
158      l_cle_id okc_k_lines_b.cle_id%TYPE;
159 
160    BEGIN
161      -- Call start_activity to create savepoint, check compatibility
162      -- and initialize message list
163      l_return_status := OKC_API.START_ACTIVITY (l_api_name
164                                                 ,p_init_msg_list
165                                                 ,'_PVT'
166                                                 ,x_return_status);
167      -- Check if activity started successfully
168      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
169         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
170      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
171         RAISE OKC_API.G_EXCEPTION_ERROR;
172      END IF;
173 
174      l_talv_rec := p_talv_rec;
175      --
176      -- Get Currency from contract header if not provided
177      -- at p_talv_rec record
178      -- Fix Bug# 2737014
179      --
180      IF (p_talv_rec.currency_code IS NULL) THEN
181 
182         l_header_curr_code      := NULL;
183         l_header_curr_conv_type := NULL;
184         l_header_curr_conv_date := NULL;
185 
186         OPEN header_curr_csr (p_talv_rec.dnz_khr_id);
187         FETCH header_curr_csr INTO l_header_curr_code,
188                                    l_header_curr_conv_type,
189                                    l_header_curr_conv_date;
190         CLOSE header_curr_csr;
191 
192         IF (l_header_curr_code IS NOT NULL) THEN
193            l_talv_rec.currency_code            := l_header_curr_code;
194            l_talv_rec.currency_conversion_type := l_header_curr_conv_type;
195            l_talv_rec.currency_conversion_date := l_header_curr_conv_date;
196         END IF;
197      END IF;
198 
199 --| start          29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
200 --|                               when create and copy asset can refer to the  |
201 --|                               same source                                  |
202       --------------
203       --Bug# 4082635
204       -------------
205       OPEN l_residual_value_csr (p_talv_rec.kle_id);
206       FETCH l_residual_value_csr INTO l_residual_value_rec;
207       CLOSE l_residual_value_csr;
208 
209 
210       If nvl(l_talv_rec.salvage_value,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM AND
211          nvl(l_talv_rec.percent_salvage_value, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM  then
212           --Bug# 4186455 : Do not populate salvage value for Loan and loan revolving deal types
213           for l_deal_type_rec in l_deal_type_csr(p_chr_id => l_talv_rec.dnz_khr_id)
214           loop
215               If l_deal_type_rec.deal_type = 'LOAN' then
216                   If nvl(l_deal_type_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
217                       for l_pdt_deal_rec in l_pdt_deal_csr(p_pdt_id => l_deal_type_rec.reporting_pdt_id)
218                       loop
219                           If l_pdt_deal_rec.deal_type = 'LEASEOP' then -- reporting pdt is operating lease
220 
221                                l_talv_rec.salvage_value := nvl(l_residual_value_rec.residual_value,0);
222 
223                           End If;
224                       End loop;
225                   End If;
226               Elsif l_deal_type_rec.deal_type = 'LOAN-REVOLVING' then
227                   null;
228               Else -- for LEASEOP, LEASEDF, LEASEST
229                   l_talv_rec.salvage_value := nvl(l_residual_value_rec.residual_value,0);
230 
231               End If;
232           End Loop;
233       End If;
234       ------------------
235       --End Bug# 4082635
236       ------------------
237 --| end          29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
238 --|                               when create and copy asset can refer to the  |
239 --|                               same source                                  |
240 
241      --Bug# 3657624 : Depreciation Rate should not be divided by 100
242      /*
243      --Bug# 3621663 : To support flat rate methods
244      If nvl(l_talv_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
245         l_talv_rec.deprn_rate := l_talv_rec.deprn_rate/100;
246      End If;
247      --Bug# 3621663
248      */
249      --Bug# 3657624 End
250 
251      -- evaluate conditions, build outcomes for true conditions and
252      -- put them on outcome queue
253      OKL_TAL_PVT.insert_row(p_api_version,
254                             p_init_msg_list,
255                             x_return_status,
256                             x_msg_count,
257                             x_msg_data,
258                             l_talv_rec,
259                             x_talv_rec);
260 
261      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
262         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
263      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
264         RAISE OKC_API.G_EXCEPTION_ERROR;
265      END IF;
266 
267      /*
268       * sjalasut: aug 18, 04 added code to enable business event. BEGIN
269       * raise the event only if the contract in context is a LEASE contract
270       */
271      OPEN c_get_cle_id;
272      FETCH c_get_cle_id INTO l_cle_id;
273      CLOSE c_get_cle_id;
274      IF(OKL_LLA_UTIL_PVT.is_lease_contract(l_talv_rec.dnz_khr_id)= OKL_API.G_TRUE
275         AND (l_talv_rec.corporate_book IS NOT NULL
276              AND l_talv_rec.corporate_book <> OKL_API.G_MISS_CHAR))THEN
277        raise_business_event(p_api_version         => p_api_version,
278                             p_init_msg_list       => p_init_msg_list,
279                             p_chr_id              => l_talv_rec.dnz_khr_id,
280                             p_asset_id            => l_cle_id,
281                             p_book_code           => l_talv_rec.corporate_book,
282                             p_event_name          => G_WF_EVT_ASSETBOOK_DPRN_CRTD,
283                             x_return_status       => x_return_status,
284                             x_msg_count           => x_msg_count,
285                             x_msg_data            => x_msg_data
286                            );
287        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
288           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
289        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
290           RAISE OKL_API.G_EXCEPTION_ERROR;
291        END IF;
292      END IF;
293      /*
294       * sjalasut: aug 18, 04 added code to enable business event. END
295       */
296 
297      OKC_API.END_ACTIVITY (x_msg_count
298                            ,x_msg_data );
299    EXCEPTION
300      WHEN OKC_API.G_EXCEPTION_ERROR THEN
301      x_return_status := OKC_API.HANDLE_EXCEPTIONS
302 					 (l_api_name,
303 					 G_PKG_NAME,
304 					 'OKC_API.G_RET_STS_ERROR',
305 					 x_msg_count,
306 					 x_msg_data,
307 					 '_PVT');
308      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
309      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
310 	                                (l_api_name,
311 					G_PKG_NAME,
312 					'OKC_API.G_RET_STS_UNEXP_ERROR',
313 					x_msg_count,
314 					x_msg_data,
315 					'_PVT');
316      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
317 	                                 (l_api_name,
318 	                                  G_PKG_NAME,
319 					  'OTHERS',
320 					  x_msg_count,
321 					  x_msg_data,
322 					  '_PVT');
323    END Create_txl_asset_def;
324 
325     PROCEDURE Create_txl_asset_def(
326     p_api_version                  IN NUMBER,
327     p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
328     x_return_status                OUT NOCOPY VARCHAR2,
329     x_msg_count                    OUT NOCOPY NUMBER,
330     x_msg_data                     OUT NOCOPY VARCHAR2,
331     p_talv_tbl                     IN tlvv_tbl_type,
332     x_talv_tbl                     OUT NOCOPY tlvv_tbl_type)
333     IS
334     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_TRX_ASSETS_LINES';
335     l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
336 
337     p                      NUMBER := 0;
338     i                      NUMBER := 0;
339     BEGIN
340     -- Call start_activity to create savepoint, check compatibility
341     -- and initialize message list
342     l_return_status := OKC_API.START_ACTIVITY (l_api_name
343 	                                       ,p_init_msg_list
344                                                ,'_PVT'
345                                                , x_return_status);
346     -- Check if activity started successfully
347     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
348        RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
352 
349     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
350        RAISE OKC_API.G_EXCEPTION_ERROR;
351     END IF;
353     IF (p_talv_tbl.COUNT > 0) THEN
354       i := p_talv_tbl.FIRST;
355       LOOP
356         Create_txl_asset_def (
357           p_api_version                  => p_api_version,
358           p_init_msg_list                => OKC_API.G_FALSE,
359           x_return_status                => x_return_status,
360           x_msg_count                    => x_msg_count,
361           x_msg_data                     => x_msg_data,
362           p_talv_rec                     => p_talv_tbl(i),
363           x_talv_rec                     => x_talv_tbl(i));
364         EXIT WHEN (i = p_talv_tbl.LAST);
365         i := p_talv_tbl.NEXT(i);
366       END LOOP;
367     END IF;
368 /*
369     -- evaluate conditions, build outcomes for true conditions and
370     -- put them on outcome queue
371     OKL_TAL_PVT.insert_row(p_api_version,
372                            p_init_msg_list,
373                            x_return_status,
374                            x_msg_count,
375                            x_msg_data,
376                            p_talv_tbl,
377                            x_talv_tbl);
378 */
379 
380     OKC_API.END_ACTIVITY (x_msg_count
381                           ,x_msg_data );
382 
383     EXCEPTION
384 	     WHEN OKC_API.G_EXCEPTION_ERROR THEN
385 			    x_return_status := OKC_API.HANDLE_EXCEPTIONS
386 						 (l_api_name,
387 						 G_PKG_NAME,
388 						 'OKC_API.G_RET_STS_ERROR',
389 						 x_msg_count,
390 						 x_msg_data,
391 						 '_PVT');
392              WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
393 			    x_return_status :=OKC_API.HANDLE_EXCEPTIONS
394 						(l_api_name,
395 						G_PKG_NAME,
396 						'OKC_API.G_RET_STS_UNEXP_ERROR',
397 						x_msg_count,
398 						x_msg_data,
399 						'_PVT');
400              WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
401 	                                          ( l_api_name,
402 						  G_PKG_NAME,
403 						  'OTHERS',
404 						  x_msg_count,
405 						  x_msg_data,
406 						  '_PVT');
407     END Create_txl_asset_def;
408 
409    PROCEDURE lock_txl_asset_def(
410      p_api_version                  IN NUMBER,
411      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
412      x_return_status                OUT NOCOPY VARCHAR2,
413      x_msg_count                    OUT NOCOPY NUMBER,
414      x_msg_data                     OUT NOCOPY VARCHAR2,
415      p_talv_rec                     IN tlvv_rec_type)
416      IS
417      l_api_name          CONSTANT VARCHAR2(30) := 'LOCK_TRX_ASSETS_LINES';
418      l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
419    BEGIN
420      -- Call start_activity to create savepoint, check compatibility
421      -- and initialize message list
422      l_return_status := OKC_API.START_ACTIVITY (l_api_name
423                                                 ,p_init_msg_list
424                                                 ,'_PVT'
425                                                 ,x_return_status);
426      -- Check if activity started successfully
427      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
428         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
429      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
430         RAISE OKC_API.G_EXCEPTION_ERROR;
431      END IF;
432      -- evaluate conditions, build outcomes for true conditions and
433      -- put them on outcome queue
434      OKL_TAL_PVT.lock_row(p_api_version,
435                             p_init_msg_list,
436                             x_return_status,
437                             x_msg_count,
438                             x_msg_data,
439                             p_talv_rec);
440      OKC_API.END_ACTIVITY (x_msg_count
441                            ,x_msg_data );
442    EXCEPTION
443      WHEN OKC_API.G_EXCEPTION_ERROR THEN
444      x_return_status := OKC_API.HANDLE_EXCEPTIONS
445 					 (l_api_name,
446 					 G_PKG_NAME,
447 					 'OKC_API.G_RET_STS_ERROR',
448 					 x_msg_count,
449 					 x_msg_data,
450 					 '_PVT');
451      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
452      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
453 	                                (l_api_name,
454 					G_PKG_NAME,
455 					'OKC_API.G_RET_STS_UNEXP_ERROR',
456 					x_msg_count,
457 					x_msg_data,
458 					'_PVT');
459      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
460 	                                 (l_api_name,
461 	                                  G_PKG_NAME,
462 					  'OTHERS',
463 					  x_msg_count,
464 					  x_msg_data,
465 					  '_PVT');
466    END lock_txl_asset_def;
467 
468    PROCEDURE lock_txl_asset_def(
469      p_api_version                  IN NUMBER,
470      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
471      x_return_status                OUT NOCOPY VARCHAR2,
472      x_msg_count                    OUT NOCOPY NUMBER,
473      x_msg_data                     OUT NOCOPY VARCHAR2,
474      p_talv_tbl                     IN tlvv_tbl_type)
475      IS
476      l_api_name          CONSTANT VARCHAR2(30) := 'LOCK_TRX_ASSETS_LINES';
477      l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
478    BEGIN
482                                                 ,p_init_msg_list
479      -- Call start_activity to create savepoint, check compatibility
480      -- and initialize message list
481      l_return_status := OKC_API.START_ACTIVITY (l_api_name
483                                                 ,'_PVT'
484                                                 ,x_return_status);
485      -- Check if activity started successfully
486      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
487         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
488      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
489         RAISE OKC_API.G_EXCEPTION_ERROR;
490      END IF;
491      -- evaluate conditions, build outcomes for true conditions and
492      -- put them on outcome queue
493      OKL_TAL_PVT.lock_row(p_api_version,
494                             p_init_msg_list,
495                             x_return_status,
496                             x_msg_count,
497                             x_msg_data,
498                             p_talv_tbl);
499      OKC_API.END_ACTIVITY (x_msg_count
500                            ,x_msg_data );
501    EXCEPTION
502      WHEN OKC_API.G_EXCEPTION_ERROR THEN
503      x_return_status := OKC_API.HANDLE_EXCEPTIONS
504 					 (l_api_name,
505 					 G_PKG_NAME,
506 					 'OKC_API.G_RET_STS_ERROR',
507 					 x_msg_count,
508 					 x_msg_data,
509 					 '_PVT');
510      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
511      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
512 	                                (l_api_name,
513 					G_PKG_NAME,
514 					'OKC_API.G_RET_STS_UNEXP_ERROR',
515 					x_msg_count,
516 					x_msg_data,
517 					'_PVT');
518      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
519 	                                 (l_api_name,
520 	                                  G_PKG_NAME,
521 					  'OTHERS',
522 					  x_msg_count,
523 					  x_msg_data,
524 					  '_PVT');
525    END lock_txl_asset_def;
526 
527    PROCEDURE update_txl_asset_def(
528      p_api_version                  IN NUMBER,
529      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
530      x_return_status                OUT NOCOPY VARCHAR2,
531      x_msg_count                    OUT NOCOPY NUMBER,
532      x_msg_data                     OUT NOCOPY VARCHAR2,
533      p_talv_rec                     IN tlvv_rec_type,
534      x_talv_rec                     OUT NOCOPY tlvv_rec_type)
535      IS
536      l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_TRX_ASSETS_LINES';
537      ln_chr_id                    OKC_K_LINES_B.DNZ_CHR_ID%TYPE;
538 
539      -- Temp parameters to store depreciation cost and salvage values.
540      l_deprn_cost           NUMBER;
541      l_salvage_value        NUMBER;
542      l_currency_code        VARCHAR2(15);
543 
544      l_talv_rec        tlvv_rec_type;
545 
546      CURSOR get_chr_id(p_kle_id OKL_TXL_ASSETS_B.KLE_ID%TYPE)
547      IS
548      SELECT cle.dnz_chr_id
549      FROM okc_k_lines_b cle,
550           okl_txl_assets_b tal
551      WHERE tal.kle_id = cle.id
552      AND tal.kle_id = p_kle_id;
553 /*
554      CURSOR c_get_currency_code(p_kle_id OKC_K_LINES_B.ID%TYPE) IS
555      SELECT currency_code
556      FROM OKC_K_LINES_B
557      WHERE id = p_kle_id;
558 */
559      CURSOR header_curr_csr(p_txl_id OKL_TXL_ASSETS_V.ID%TYPE) IS
560      SELECT h.currency_code,
561             h.currency_conversion_type,
562             h.currency_conversion_date
563      FROM   okl_k_headers_full_v h,
564             okl_txl_assets_v asset
565      WHERE  h.id     = asset.dnz_khr_id
566      AND    asset.id = p_txl_id;
567 
568     /*
569      *vthiruva..fix for business events..30-Dec-2004..Start
570      *added cursor to fetch the params to pass to raise business event
571      */
572      CURSOR get_event_params(p_id OKL_TXL_ASSETS_B.ID%TYPE) IS
573      SELECT lines.dnz_chr_id,lines.cle_id,tal.corporate_book
574      FROM okc_k_lines_b lines,
575           okl_txl_assets_b tal
576      WHERE tal.id = p_id
577      AND lines.id = tal.kle_id;
578 
579 --| start          29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
580 --|                               when create and copy asset can refer to the  |
581 --|                               same source                                  |
582 
583     --Bug# 4186455 : Do not default SV for LOANS
584     --cursor to check deal type of the contract
585     Cursor l_deal_type_csr (p_chr_id in number) is
586     select khr.deal_type,
587            khr.pdt_id,
588            pdt.reporting_pdt_id
589     from   okl_products pdt,
590            okl_k_headers            khr
591     where  pdt.id           =  khr.pdt_id
592     and    khr.id           =  p_chr_id;
593 
594     l_deal_type_rec    l_deal_type_csr%ROWTYPE;
595 
596     --dkagrawa changed cursor to use view OKL_PROD_QLTY_VAL_UV than okl_product_parameters_v
597     --cursor to get deal type corresponding to a product
598     Cursor l_pdt_deal_csr (p_pdt_id in number) is
599     SELECT ppv.quality_val deal_type
600     FROM   okl_prod_qlty_val_uv ppv
601     WHERE  ppv.quality_name IN ('LEASE','INVESTOR')
602     AND    ppv.pdt_id = p_pdt_id;
603 
604     l_pdt_deal_rec l_pdt_deal_csr%ROWTYPE;
605 
606 
610     where  kle.id           =  p_kle_id;
607     Cursor l_residual_value_csr (p_kle_id in number) is
608     select kle.residual_value
609     from   okl_k_lines kle
611 
612     l_residual_value_rec    l_residual_value_csr%ROWTYPE;
613     --End Bug# 4186455 : Do not default SV for LOANS
614 --| end          29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
615 --|                               when create and copy asset can refer to the  |
616 --|                               same source                                  |
617 
618      l_contract_id    okc_k_headers_b.id%TYPE;
619      l_asset_id       okc_k_lines_b.id%TYPE;
620      l_old_book_code  okl_txl_assets_b.corporate_book%TYPE;
621      --vthiruva..fix for business events..30-Dec-2004..end
622 
623      l_header_curr_code       OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
624      l_header_curr_conv_type  OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_TYPE%TYPE;
625      l_header_curr_conv_date  OKL_K_HEADERS_FULL_V.CURRENCY_CONVERSION_DATE%TYPE;
626 
627    BEGIN
628      x_return_status  := OKL_API.G_RET_STS_SUCCESS;
629      -- Call start_activity to create savepoint, check compatibility
630      -- and initialize message list
631      x_return_status := OKC_API.START_ACTIVITY (l_api_name
632                                                 ,p_init_msg_list
633                                                 ,'_PVT'
634                                                 ,x_return_status);
635      -- Check if activity started successfully
636      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
637         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
638      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
639         RAISE OKC_API.G_EXCEPTION_ERROR;
640      END IF;
641 
642      --Bug# 4959361
643     OKL_LLA_UTIL_PVT.check_line_update_allowed
644       (p_api_version     => p_api_version,
645        p_init_msg_list   => p_init_msg_list,
646        x_return_status   => x_return_status,
647        x_msg_count       => x_msg_count,
648        x_msg_data        => x_msg_data,
649        p_cle_id          => p_talv_rec.kle_id);
650 
651     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
652        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
653     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
654        RAISE OKL_API.G_EXCEPTION_ERROR;
655     END IF;
656     --Bug# 4959361
657 
658      l_talv_rec := p_talv_rec;
659      --
660      -- Get Currency from contract header if not provided
661      -- at p_talv_rec record
662      -- Fix Bug# 2737014
663      --
664      IF (p_talv_rec.currency_code IS NULL) THEN
665 
666         l_header_curr_code      := NULL;
667         l_header_curr_conv_type := NULL;
668         l_header_curr_conv_date := NULL;
669 
670         OPEN header_curr_csr (p_talv_rec.id);
671         FETCH header_curr_csr INTO l_header_curr_code,
672                                    l_header_curr_conv_type,
673                                    l_header_curr_conv_date;
674         CLOSE header_curr_csr;
675 
676         IF (l_header_curr_code IS NOT NULL) THEN
677            l_talv_rec.currency_code            := l_header_curr_code;
678            l_talv_rec.currency_conversion_type := l_header_curr_conv_type;
679            l_talv_rec.currency_conversion_date := l_header_curr_conv_date;
680         END IF;
681      END IF;
682 
683 /* Rounding is done on corresponding TAPI
684 
685     -- Modified by rravikir
686     -- Call to Accounting Util package to address Multi Currency requirement
687     -- Start
688     -- Copy p_talv_rec to l_talv_rec
689     l_talv_rec := p_talv_rec;
690     OPEN c_get_currency_code(p_kle_id => l_talv_rec.kle_id);
691 
692     IF c_get_currency_code%NOTFOUND THEN
693       OKL_API.set_message(p_app_name => G_APP_NAME,
694                           p_msg_name => G_LINE_RECORD);
695       RAISE OKL_API.G_EXCEPTION_ERROR;
696     END IF;
697     FETCH c_get_currency_code INTO l_currency_code;
698     CLOSE c_get_currency_code;
699 
700     l_deprn_cost := l_talv_rec.depreciation_cost;
701     l_salvage_value := l_talv_rec.salvage_value;
702 
703     l_talv_rec.depreciation_cost :=
704         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_talv_rec.depreciation_cost,
705                                                         l_currency_code);
706 
707     IF (l_deprn_cost <> 0 AND l_talv_rec.depreciation_cost = 0) THEN
708       OKL_API.set_message(p_app_name     => G_APP_NAME,
709                           p_msg_name     => G_AMOUNT_ROUNDING,
710                           p_token1       => 'AMT',
711                           p_token1_value => to_char(l_deprn_cost));
712        RAISE G_EXCEPTION_HALT_VALIDATION;
713     END IF;
714 
715     l_talv_rec.salvage_value :=
716         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_talv_rec.salvage_value,
717                                                         l_currency_code);
718 
719     IF (l_salvage_value <> 0 AND l_talv_rec.salvage_value = 0) THEN
720       OKL_API.set_message(p_app_name     => G_APP_NAME,
721                           p_msg_name     => G_AMOUNT_ROUNDING,
722                           p_token1       => 'AMT',
723                           p_token1_value => to_char(l_salvage_value));
724        RAISE G_EXCEPTION_HALT_VALIDATION;
725     END IF;
726 
727     -- End Modification for Multi Currency
728  */
732      --Bug# 3621663 : To support flat rate methods
729 
730      --Bug# 3657624 : Depreciation Rate should not be divided by 100
731      /*
733      If nvl(l_talv_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
734         l_talv_rec.deprn_rate := l_talv_rec.deprn_rate/100;
735      End If;
736      --Bug# 3621663
737      */
738      --Bug# 3657624 End
739      --vthiruva..fix for business events..30-Dec-2004..Start
740      OPEN get_event_params(l_talv_rec.id);
741      IF get_event_params%NOTFOUND THEN
742        RAISE OKC_API.G_EXCEPTION_ERROR;
743      END IF;
744      FETCH get_event_params INTO l_contract_id, l_asset_id, l_old_book_code;
745      CLOSE get_event_params;
746      --vthiruva..fix for business events..30-Dec-2004..End
747 
748 --| start          29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
749 --|                               when create and copy asset can refer to the  |
750 --|                               same source                                  |
751 
752       --------------
753       --Bug# 4082635
754       -------------
755       OPEN l_residual_value_csr (p_talv_rec.kle_id);
756       FETCH l_residual_value_csr INTO l_residual_value_rec;
757       CLOSE l_residual_value_csr;
758 
759       If nvl(l_talv_rec.salvage_value,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM AND
760          nvl(l_talv_rec.percent_salvage_value, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM  then
761           --Bug# 4186455 : Do not populate salvage value for Loan and loan revolving deal types
762 
763           for l_deal_type_rec in l_deal_type_csr(p_chr_id => l_contract_id)
764           loop
765 
766               If l_deal_type_rec.deal_type = 'LOAN' then
767                   If nvl(l_deal_type_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
768                       for l_pdt_deal_rec in l_pdt_deal_csr(p_pdt_id => l_deal_type_rec.reporting_pdt_id)
769                       loop
770                           If l_pdt_deal_rec.deal_type = 'LEASEOP' then -- reporting pdt is operating lease
771                             IF l_talv_rec.salvage_value is null THEN
772                                l_talv_rec.salvage_value := nvl(l_residual_value_rec.residual_value,0);
773 
774                             END IF;
775                           End If;
776                       End loop;
777                   End If;
778               Elsif l_deal_type_rec.deal_type = 'LOAN-REVOLVING' then
779                   null;
780               Else -- for LEASEOP, LEASEDF, LEASEST
781                 IF l_talv_rec.salvage_value is null THEN
782                   l_talv_rec.salvage_value := nvl(l_residual_value_rec.residual_value,0);
783                 END IF;
784               End If;
785           End Loop;
786       End If;
787       ------------------
788       --End Bug# 4082635
789       ------------------
790 --| end         29-Oct-08 cklee     Bug: 7492324 default salvage in here so that |
791 --|                               when create and copy asset can refer to the  |
792 --|                               same source                                  |
793 
794      -- evaluate conditions, build outcomes for true conditions and
795      -- put them on outcome queue
796      OKL_TAL_PVT.update_row(p_api_version,
797                             p_init_msg_list,
798                             x_return_status,
799                             x_msg_count,
800                             x_msg_data,
801                             l_talv_rec,
802                             x_talv_rec);
803 
804      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
805         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
806      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
807         RAISE OKC_API.G_EXCEPTION_ERROR;
808      END IF;
809 
810      IF x_talv_rec.tal_type in ('CFA','CIB','CRB','CRL','CRV','CSP','ALI') THEN
811        OPEN get_chr_id(x_talv_rec.kle_Id);
812        IF get_chr_id%NOTFOUND THEN
813           RAISE OKC_API.G_EXCEPTION_ERROR;
814        END IF;
815        FETCH get_chr_id INTO ln_chr_id;
816        CLOSE get_chr_id;
817        -- We need to change the status of the header whenever there is updating happening
818        -- after the contract status is approved
819        IF (ln_chr_id is NOT NULL) AND
820           (ln_chr_id <> OKL_API.G_MISS_NUM) THEN
821          --cascade edit status on to lines
822          okl_contract_status_pub.cascade_lease_status_edit
823                   (p_api_version     => p_api_version,
824                    p_init_msg_list   => p_init_msg_list,
825                    x_return_status   => x_return_status,
826                    x_msg_count       => x_msg_count,
827                    x_msg_data        => x_msg_data,
828                    p_chr_id          => ln_chr_id);
829          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
830            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
831          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
832            RAISE OKC_API.G_EXCEPTION_ERROR;
833          END IF;
834        END IF;
835      END IF;
836 
837      --vthiruva..fix for business events..30-Dec-2004..Start
838      IF(OKL_LLA_UTIL_PVT.is_lease_contract(l_contract_id)= OKL_API.G_TRUE
839         AND l_old_book_code IS NULL
840         AND (l_talv_rec.corporate_book IS NOT NULL
841              AND l_talv_rec.corporate_book <> OKL_API.G_MISS_CHAR))THEN
845                             p_asset_id            => l_asset_id,
842        raise_business_event(p_api_version         => p_api_version,
843                             p_init_msg_list       => p_init_msg_list,
844                             p_chr_id              => l_contract_id,
846                             p_book_code           => l_talv_rec.corporate_book,
847                             p_event_name          => G_WF_EVT_ASSETBOOK_DPRN_CRTD,
848                             x_return_status       => x_return_status,
849                             x_msg_count           => x_msg_count,
850                             x_msg_data            => x_msg_data
851                            );
852        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
853          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
854        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
855          RAISE OKL_API.G_EXCEPTION_ERROR;
856        END IF;
857      END IF;
858      --vthiruva..fix for business events..30-Dec-2004..end
859 
860      OKC_API.END_ACTIVITY (x_msg_count
861                            ,x_msg_data );
862    EXCEPTION
863      WHEN OKC_API.G_EXCEPTION_ERROR THEN
864      x_return_status := OKC_API.HANDLE_EXCEPTIONS
865 					 (l_api_name,
866 					 G_PKG_NAME,
867 					 'OKC_API.G_RET_STS_ERROR',
868 					 x_msg_count,
869 					 x_msg_data,
870 					 '_PVT');
871      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
872      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
873 	                                (l_api_name,
874 					G_PKG_NAME,
875 					'OKC_API.G_RET_STS_UNEXP_ERROR',
876 					x_msg_count,
877 					x_msg_data,
878 					'_PVT');
879      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
880 	                                 (l_api_name,
881 	                                  G_PKG_NAME,
882 					  'OTHERS',
883 					  x_msg_count,
884 					  x_msg_data,
885 					  '_PVT');
886    END update_txl_asset_def;
887 
888    PROCEDURE update_txl_asset_def(
889      p_api_version                  IN NUMBER,
890      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
891      x_return_status                OUT NOCOPY VARCHAR2,
892      x_msg_count                    OUT NOCOPY NUMBER,
893      x_msg_data                     OUT NOCOPY VARCHAR2,
894      p_talv_tbl                     IN tlvv_tbl_type,
895      x_talv_tbl                     OUT NOCOPY tlvv_tbl_type)
896      IS
897      l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_TRX_ASSETS_LINES';
898      l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
899 
900      p                      NUMBER := 0;
901 
902    BEGIN
903      -- Call start_activity to create savepoint, check compatibility
904      -- and initialize message list
905      l_return_status := OKC_API.START_ACTIVITY (l_api_name
906                                                 ,p_init_msg_list
907                                                 ,'_PVT'
908                                                 ,x_return_status);
909      -- Check if activity started successfully
910      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
911         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
912      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
913         RAISE OKC_API.G_EXCEPTION_ERROR;
914      END IF;
915 
916     -- Modified by rravikir
917     -- calling update_txl_asset_def record version to update records
918 
919     IF p_talv_tbl.COUNT > 0 THEN
920       p := p_talv_tbl.FIRST;
921       LOOP
922         update_txl_asset_def(p_api_version    => p_api_version,
923                              p_init_msg_list  => p_init_msg_list,
924                              x_return_status  => x_return_status,
925                              x_msg_count      => x_msg_count,
926                              x_msg_data       => x_msg_data,
927                              p_talv_rec       => p_talv_tbl(p),
928                              x_talv_rec       => x_talv_tbl(p));
929 
930         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
931           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
932         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
933           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
934         END IF;
935         EXIT WHEN (p = p_talv_tbl.LAST);
936         p := p_talv_tbl.NEXT(p);
937       END LOOP;
938       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
939         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
940       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
941         RAISE OKL_API.G_EXCEPTION_ERROR;
942       END IF;
943     END IF;
944 
945     -- End Modification
946 
947      -- evaluate conditions, build outcomes for true conditions and
948      -- put them on outcome queue
949 /*     OKL_TAL_PVT.update_row(p_api_version,
950                             p_init_msg_list,
951                             x_return_status,
952                             x_msg_count,
953                             x_msg_data,
954                             p_talv_tbl,
955                             x_talv_tbl);*/
956      OKC_API.END_ACTIVITY (x_msg_count
957                            ,x_msg_data );
958    EXCEPTION
959      WHEN OKC_API.G_EXCEPTION_ERROR THEN
960      x_return_status := OKC_API.HANDLE_EXCEPTIONS
961 					 (l_api_name,
962 					 G_PKG_NAME,
963 					 'OKC_API.G_RET_STS_ERROR',
964 					 x_msg_count,
965 					 x_msg_data,
966 					 '_PVT');
967      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
968      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
969 	                                (l_api_name,
970 					G_PKG_NAME,
971 					'OKC_API.G_RET_STS_UNEXP_ERROR',
972 					x_msg_count,
973 					x_msg_data,
974 					'_PVT');
975      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
976 	                                 (l_api_name,
977 	                                  G_PKG_NAME,
978 					  'OTHERS',
979 					  x_msg_count,
980 					  x_msg_data,
981 					  '_PVT');
982    END update_txl_asset_def;
983 
984    PROCEDURE delete_txl_asset_def(
985      p_api_version                  IN NUMBER,
986      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
987      x_return_status                OUT NOCOPY VARCHAR2,
988      x_msg_count                    OUT NOCOPY NUMBER,
989      x_msg_data                     OUT NOCOPY VARCHAR2,
990      p_talv_rec                     IN tlvv_rec_type)
991      IS
992      l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_TRX_ASSETS_LINES';
993      ln_chr_id                    OKC_K_LINES_B.DNZ_CHR_ID%TYPE;
994      CURSOR get_chr_id(p_kle_id OKL_TXL_ASSETS_B.KLE_ID%TYPE)
995      IS
996      SELECT cle.dnz_chr_id
997      FROM okc_k_lines_b cle,
998           okl_txl_assets_b tal
999      WHERE tal.kle_id = cle.id
1000      AND tal.kle_id = p_kle_id;
1001    BEGIN
1002      x_return_status  := OKC_API.G_RET_STS_SUCCESS;
1003      -- Call start_activity to create savepoint, check compatibility
1004      -- and initialize message list
1005      x_return_status := OKC_API.START_ACTIVITY (l_api_name
1006                                                 ,p_init_msg_list
1007                                                 ,'_PVT'
1008                                                 ,x_return_status);
1009      -- Check if activity started successfully
1010      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1011         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1012      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1013         RAISE OKC_API.G_EXCEPTION_ERROR;
1014      END IF;
1015      -- evaluate conditions, build outcomes for true conditions and
1016      -- put them on outcome queue
1017      OKL_TAL_PVT.delete_row(p_api_version,
1018                             p_init_msg_list,
1019                             x_return_status,
1020                             x_msg_count,
1021                             x_msg_data,
1022                             p_talv_rec);
1023      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1024         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1025      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1026         RAISE OKC_API.G_EXCEPTION_ERROR;
1027      END IF;
1028      IF p_talv_rec.tal_type in ('CFA','CIB','CRB','CRL','CRV','CSP','ALI') THEN
1029        OPEN get_chr_id(p_talv_rec.kle_Id);
1030        IF get_chr_id%NOTFOUND THEN
1031           RAISE OKC_API.G_EXCEPTION_ERROR;
1032        END IF;
1033        FETCH get_chr_id INTO ln_chr_id;
1034        CLOSE get_chr_id;
1035        -- We need to change the status of the header whenever there is updating happening
1036        -- after the contract status is approved
1037        IF (ln_chr_id is NOT NULL) AND
1038           (ln_chr_id <> OKL_API.G_MISS_NUM) THEN
1039          --cascade edit status on to lines
1040          okl_contract_status_pub.cascade_lease_status_edit
1041                   (p_api_version     => p_api_version,
1042                    p_init_msg_list   => p_init_msg_list,
1043                    x_return_status   => x_return_status,
1044                    x_msg_count       => x_msg_count,
1045                    x_msg_data        => x_msg_data,
1046                    p_chr_id          => ln_chr_id);
1047          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1048            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1049          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1050            RAISE OKC_API.G_EXCEPTION_ERROR;
1051          END IF;
1052        END IF;
1053      END IF;
1054      OKC_API.END_ACTIVITY (x_msg_count
1055                            ,x_msg_data );
1056    EXCEPTION
1057      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1058      x_return_status := OKC_API.HANDLE_EXCEPTIONS
1059 					 (l_api_name,
1060 					 G_PKG_NAME,
1061 					 'OKC_API.G_RET_STS_ERROR',
1062 					 x_msg_count,
1063 					 x_msg_data,
1064 					 '_PVT');
1065      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1066      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1067 	                                (l_api_name,
1068 					G_PKG_NAME,
1069 					'OKC_API.G_RET_STS_UNEXP_ERROR',
1070 					x_msg_count,
1071 					x_msg_data,
1072 					'_PVT');
1073      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1074 	                                 (l_api_name,
1075 	                                  G_PKG_NAME,
1076 					  'OTHERS',
1077 					  x_msg_count,
1078 					  x_msg_data,
1079 					  '_PVT');
1080    END delete_txl_asset_def;
1081 
1082    PROCEDURE delete_txl_asset_def(
1083      p_api_version                  IN NUMBER,
1084      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1085      x_return_status                OUT NOCOPY VARCHAR2,
1086      x_msg_count                    OUT NOCOPY NUMBER,
1087      x_msg_data                     OUT NOCOPY VARCHAR2,
1088      p_talv_tbl                     IN tlvv_tbl_type)
1089      IS
1090      l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_TRX_ASSETS_LINES';
1091      l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1092    BEGIN
1093      -- Call start_activity to create savepoint, check compatibility
1094      -- and initialize message list
1095      l_return_status := OKC_API.START_ACTIVITY (l_api_name
1096                                                 ,p_init_msg_list
1097                                                 ,'_PVT'
1098                                                 ,x_return_status);
1099      -- Check if activity started successfully
1100      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1101         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1102      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1103         RAISE OKC_API.G_EXCEPTION_ERROR;
1104      END IF;
1105      -- evaluate conditions, build outcomes for true conditions and
1106      -- put them on outcome queue
1107      OKL_TAL_PVT.delete_row(p_api_version,
1108                             p_init_msg_list,
1109                             x_return_status,
1110                             x_msg_count,
1111                             x_msg_data,
1112                             p_talv_tbl);
1113      OKC_API.END_ACTIVITY (x_msg_count
1114                            ,x_msg_data );
1115    EXCEPTION
1116      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1117      x_return_status := OKC_API.HANDLE_EXCEPTIONS
1118 					 (l_api_name,
1119 					 G_PKG_NAME,
1120 					 'OKC_API.G_RET_STS_ERROR',
1121 					 x_msg_count,
1122 					 x_msg_data,
1123 					 '_PVT');
1124      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1125      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1126 	                                (l_api_name,
1127 					G_PKG_NAME,
1128 					'OKC_API.G_RET_STS_UNEXP_ERROR',
1129 					x_msg_count,
1130 					x_msg_data,
1131 					'_PVT');
1132      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1133 	                                 (l_api_name,
1134 	                                  G_PKG_NAME,
1135 					  'OTHERS',
1136 					  x_msg_count,
1137 					  x_msg_data,
1138 					  '_PVT');
1139    END delete_txl_asset_def;
1140 
1141    PROCEDURE validate_txl_asset_def(
1142      p_api_version                  IN NUMBER,
1143      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1144      x_return_status                OUT NOCOPY VARCHAR2,
1145      x_msg_count                    OUT NOCOPY NUMBER,
1146      x_msg_data                     OUT NOCOPY VARCHAR2,
1147      p_talv_rec                     IN tlvv_rec_type)
1148      IS
1149      l_api_name          CONSTANT VARCHAR2(30) := 'VALIDATE_TRX_ASSETS_LINES';
1150      l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1151    BEGIN
1152      -- Call start_activity to create savepoint, check compatibility
1153      -- and initialize message list
1154      l_return_status := OKC_API.START_ACTIVITY (l_api_name
1155                                                 ,p_init_msg_list
1156                                                 ,'_PVT'
1157                                                 ,x_return_status);
1158      -- Check if activity started successfully
1159      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1160         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1161      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1162         RAISE OKC_API.G_EXCEPTION_ERROR;
1163      END IF;
1164      -- evaluate conditions, build outcomes for true conditions and
1165      -- put them on outcome queue
1166      OKL_TAL_PVT.validate_row(p_api_version,
1167                             p_init_msg_list,
1168                             x_return_status,
1169                             x_msg_count,
1170                             x_msg_data,
1171                             p_talv_rec);
1172      OKC_API.END_ACTIVITY (x_msg_count
1173                            ,x_msg_data );
1174    EXCEPTION
1175      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1176      x_return_status := OKC_API.HANDLE_EXCEPTIONS
1177 					 (l_api_name,
1178 					 G_PKG_NAME,
1179 					 'OKC_API.G_RET_STS_ERROR',
1180 					 x_msg_count,
1181 					 x_msg_data,
1182 					 '_PVT');
1183      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1184      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1185 	                                (l_api_name,
1186 					G_PKG_NAME,
1187 					'OKC_API.G_RET_STS_UNEXP_ERROR',
1188 					x_msg_count,
1189 					x_msg_data,
1190 					'_PVT');
1191      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1192 	                                 (l_api_name,
1193 	                                  G_PKG_NAME,
1194 					  'OTHERS',
1195 					  x_msg_count,
1196 					  x_msg_data,
1197 					  '_PVT');
1198    END validate_txl_asset_def;
1199 
1200    PROCEDURE validate_txl_asset_def(
1201      p_api_version                  IN NUMBER,
1202      p_init_msg_list                IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
1203      x_return_status                OUT NOCOPY VARCHAR2,
1204      x_msg_count                    OUT NOCOPY NUMBER,
1205      x_msg_data                     OUT NOCOPY VARCHAR2,
1206      p_talv_tbl                     IN tlvv_tbl_type)
1207      IS
1208      l_api_name          CONSTANT VARCHAR2(30) := 'VALIDATE_TRX_ASSETS_LINES';
1209      l_return_status              VARCHAR2(1)  := OKC_API.G_RET_STS_SUCCESS;
1210    BEGIN
1211      -- Call start_activity to create savepoint, check compatibility
1212      -- and initialize message list
1213      l_return_status := OKC_API.START_ACTIVITY (l_api_name
1214                                                 ,p_init_msg_list
1215                                                 ,'_PVT'
1216                                                 ,x_return_status);
1217      -- Check if activity started successfully
1218      IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1219         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1220      ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
1221         RAISE OKC_API.G_EXCEPTION_ERROR;
1222      END IF;
1223      -- evaluate conditions, build outcomes for true conditions and
1224      -- put them on outcome queue
1225      OKL_TAL_PVT.validate_row(p_api_version,
1226                             p_init_msg_list,
1227                             x_return_status,
1228                             x_msg_count,
1229                             x_msg_data,
1230                             p_talv_tbl);
1231      OKC_API.END_ACTIVITY (x_msg_count
1232                            ,x_msg_data );
1233    EXCEPTION
1234      WHEN OKC_API.G_EXCEPTION_ERROR THEN
1235      x_return_status := OKC_API.HANDLE_EXCEPTIONS
1236 					 (l_api_name,
1237 					 G_PKG_NAME,
1238 					 'OKC_API.G_RET_STS_ERROR',
1239 					 x_msg_count,
1240 					 x_msg_data,
1241 					 '_PVT');
1242      WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1243      x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1244 	                                (l_api_name,
1245 					G_PKG_NAME,
1246 					'OKC_API.G_RET_STS_UNEXP_ERROR',
1247 					x_msg_count,
1248 					x_msg_data,
1249 					'_PVT');
1250      WHEN OTHERS THEN x_return_status :=OKC_API.HANDLE_EXCEPTIONS
1251 	                                 (l_api_name,
1252 	                                  G_PKG_NAME,
1253 					  'OTHERS',
1254 					  x_msg_count,
1255 					  x_msg_data,
1256 					  '_PVT');
1257    END validate_txl_asset_def;
1258 
1259 END OKL_TXL_ASSETS_PVT;