DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_AM_LOAN_TRMNT_PVT

Source


1 PACKAGE BODY OKL_AM_LOAN_TRMNT_PVT AS
2 /* $Header: OKLRLOTB.pls 120.6 2007/12/14 13:59:21 nikshah noship $ */
3 
4 -- GLOBAL VARIABLES
5   G_LEVEL_PROCEDURE            CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
6   G_LEVEL_EXCEPTION            CONSTANT NUMBER := FND_LOG.LEVEL_EXCEPTION;
7   G_LEVEL_STATEMENT            CONSTANT NUMBER := FND_LOG.LEVEL_STATEMENT;
8   G_MODULE_NAME                CONSTANT VARCHAR2(500) := 'okl.am.plsql.okl_am_loan_trmnt_pvt.';
9   -- Start of comments
10   --
11   -- Procedure Name	: validate_loan
12   -- Description	: Validates the loan (Contract) -- Add additional validations
13   --             if needed, most of the validations covered in validate_contract
14   --             of OKL_AM_LEASE_LOAN_TRMNT_PVT api
15   -- Business Rules	:
16   -- Parameters		:
17   -- Version		: 1.0
18   --
19   -- End of comments
20   PROCEDURE validate_loan(
21            p_api_version                 IN  NUMBER,
22            p_init_msg_list               IN  VARCHAR2,
23            x_return_status               OUT NOCOPY VARCHAR2,
24            x_msg_count                   OUT NOCOPY NUMBER,
25            x_msg_data                    OUT NOCOPY VARCHAR2,
26            p_term_rec                    IN  term_rec_type) AS
27   BEGIN
28     x_return_status := OKL_API.G_RET_STS_SUCCESS;
29   END validate_loan;
30 
31   -- Start of comments
32   --
33   -- Procedure Name	: loan_termination
34   -- Desciption     : Main API which does the termination of Lease
35   --                  Always rollback the whole process if processing transaction
36   --                  fails this is done or else we lose information as to
37   --                  the success/failure of different APIs
38   --                  if the process is rolled back, then it will be picked
39   --                  again by the batch_process
40   -- Business Rules	:
41   -- Parameters	    :
42   -- Version		: 1.0
43   -- History        : RMUNJULU 02-JAN-03 2724951 Always do dispose for loans
44   --                : RMUNJULU 04-APR-03 2889694 Changed OR to AND in check for trn exists
45   --                  or else was giving error and rolling back the whole trn
46   --                : RMUNJULU 27-JUN-03 3023206 Removed Process_Close_Streams
47   --                  from this procedure as it is now called from
48   --                  update_k_hdr_and_lines
49   --                : RMUNJULU 3018641 Added code to get and set TMG_RUN on OKL_TRX_MSGS
50   --                : rmunjulu EDAT Added code to get quote eff dates and set them as global
51   --                : PAGARG 4190887 Pass klev_tbl to process_Accounting_entries
52   --                  to do accounting at line level and populate kle_id in
53   --                  OKL_TXL_CNTRCT_LNS
54   --                : rmunjulu LOANS_ENHANCEMENTS
55   -- End of comments
56   PROCEDURE loan_termination(
57            p_api_version                 IN  NUMBER,
58            p_init_msg_list               IN  VARCHAR2,
59            x_return_status               OUT NOCOPY VARCHAR2,
60            x_msg_count                   OUT NOCOPY NUMBER,
61            x_msg_data                    OUT NOCOPY VARCHAR2,
62            p_term_rec                    IN  term_rec_type,
63            p_tcnv_rec                    IN  tcnv_rec_type) IS
64    l_return_status         VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
65    l_overall_status        VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
66    lp_tcnv_rec             tcnv_rec_type;
67    lx_stmv_tbl             stmv_tbl_type;
68    lx_adjv_rec             adjv_rec_type;
69    lx_ajlv_tbl             ajlv_tbl_type;
70    lp_klev_tbl             klev_tbl_type;
71    lx_klev_tbl             klev_tbl_type;
72    lx_chrv_rec             chrv_rec_type;
73    lx_clev_tbl             clev_tbl_type;
74    lx_id                   NUMBER;
75    i                       NUMBER := 1;
76    l_tran_started          VARCHAR2(1)  := OKL_API.G_FALSE;
77    l_evergreen_status      VARCHAR2(1)  := OKL_API.G_FALSE;
78    l_api_name              VARCHAR2(30) := 'loan_termination';
79    l_sys_date              DATE;
80    l_trn_already_set       VARCHAR2(1)  := 'N';
81    lx_contract_status      VARCHAR2(200);
82    l_validate              VARCHAR2(1) := OKC_API.G_RET_STS_ERROR;
83    l_api_version           CONSTANT NUMBER := 1;
84    l_status                VARCHAR2(200);
85 
86    l_term_rec              term_rec_type := p_term_rec;
87    l_module_name VARCHAR2(500) := G_MODULE_NAME || 'loan_termination';
88    is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
89    is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
90    is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
91 
92   BEGIN
93     IF (is_debug_procedure_on) THEN
94       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name  ,'Begin(+)');
95     END IF;
96 	 IF (is_debug_statement_on) THEN
97 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_contract_id: ' || p_term_rec.p_contract_id);
98 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_contract_number: ' || p_term_rec.p_contract_number);
99 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_contract_modifier: ' || p_term_rec.p_contract_modifier);
100 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_orig_end_date: ' || p_term_rec.p_orig_end_date);
101 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_contract_version: ' || p_term_rec.p_contract_version);
102 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_termination_date: ' || p_term_rec.p_termination_date);
103 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_termination_reason: ' || p_term_rec.p_termination_reason);
104 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_quote_id: ' || p_term_rec.p_quote_id);
105 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_quote_type: ' || p_term_rec.p_quote_type);
106 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_quote_reason: ' || p_term_rec.p_quote_reason);
107 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_early_termination_yn: ' || p_term_rec.p_early_termination_yn);
108 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_control_flag: ' || p_term_rec.p_control_flag);
109 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_term_rec.p_recycle_flag: ' || p_term_rec.p_recycle_flag);
110 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.id: ' || p_tcnv_rec.id);
111 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.rbr_code: ' || p_tcnv_rec.rbr_code);
112 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.rpy_code: ' || p_tcnv_rec.rpy_code);
113 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.rvn_code: ' || p_tcnv_rec.rvn_code);
114 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.trn_code: ' || p_tcnv_rec.trn_code);
115 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.khr_id_new: ' || p_tcnv_rec.khr_id_new);
116 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.pvn_id: ' || p_tcnv_rec.pvn_id);
117 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.pdt_id: ' || p_tcnv_rec.pdt_id);
118 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.qte_id: ' || p_tcnv_rec.qte_id);
119 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.aes_id: ' || p_tcnv_rec.aes_id);
120 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.code_combination_id: ' || p_tcnv_rec.code_combination_id);
121 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.date_accrual: ' || p_tcnv_rec.date_accrual);
122 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.accrual_status_yn: ' || p_tcnv_rec.accrual_status_yn);
123 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.update_status_yn: ' || p_tcnv_rec.update_status_yn);
124 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.amount: ' || p_tcnv_rec.amount);
125 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.currency_code: ' || p_tcnv_rec.currency_code);
126 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tcn_type: ' || p_tcnv_rec.tcn_type);
127 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.rjn_code: ' || p_tcnv_rec.rjn_code);
128 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.complete_transfer_yn: ' || p_tcnv_rec.complete_transfer_yn);
129 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.org_id: ' || p_tcnv_rec.org_id);
130 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.khr_id: ' || p_tcnv_rec.khr_id);
131 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.khr_id_old: ' || p_tcnv_rec.khr_id_old);
132 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.try_id: ' || p_tcnv_rec.try_id);
133 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tsu_code: ' || p_tcnv_rec.tsu_code);
134 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.set_of_books_id: ' || p_tcnv_rec.set_of_books_id);
135 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.trx_number: ' || p_tcnv_rec.trx_number);
136 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_evergreen_yn: ' || p_tcnv_rec.tmt_evergreen_yn);
137 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_close_balances_yn: ' || p_tcnv_rec.tmt_close_balances_yn);
138 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_accounting_entries_yn: ' || p_tcnv_rec.tmt_accounting_entries_yn);
139 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_cancel_insurance_yn: ' || p_tcnv_rec.tmt_cancel_insurance_yn);
140 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_asset_disposition_yn: ' || p_tcnv_rec.tmt_asset_disposition_yn);
141 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_amortization_yn: ' || p_tcnv_rec.tmt_amortization_yn);
142 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_asset_return_yn: ' || p_tcnv_rec.tmt_asset_return_yn);
143 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_contract_updated_yn: ' || p_tcnv_rec.tmt_contract_updated_yn);
144 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_recycle_yn: ' || p_tcnv_rec.tmt_recycle_yn);
145 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_validated_yn: ' || p_tcnv_rec.tmt_validated_yn);
146 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_streams_updated_yn: ' || p_tcnv_rec.tmt_streams_updated_yn);
147 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_split_asset_yn: ' || p_tcnv_rec.tmt_split_asset_yn);
148 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.chr_id: ' || p_tcnv_rec.chr_id);
149 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.source_trx_id: ' || p_tcnv_rec.source_trx_id);
150 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.source_trx_type: ' || p_tcnv_rec.source_trx_type);
151 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.legal_entity_id: ' || p_tcnv_rec.legal_entity_id);
152 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.accounting_reversal_yn: ' || p_tcnv_rec.accounting_reversal_yn);
153 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.product_name: ' || p_tcnv_rec.product_name);
154 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.book_classification_code: ' || p_tcnv_rec.book_classification_code);
155 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tax_owner_code: ' || p_tcnv_rec.tax_owner_code);
156 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.tmt_status_code: ' || p_tcnv_rec.tmt_status_code);
157 	   OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.representation_code: ' || p_tcnv_rec.representation_code);
158 	 END IF;
159 
160     -- Set the transaction
161     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
162                                               G_PKG_NAME,
163                                               p_init_msg_list,
164                                               l_api_version,
165                                               p_api_version,
166                                               '_PVT',
167                                               x_return_status);
168 
169     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
170       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
171     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
172       RAISE OKL_API.G_EXCEPTION_ERROR;
173     END IF;
174 
175     -- Set the x return status
176     x_return_status := OKL_API.G_RET_STS_SUCCESS;
177 
178     IF (is_debug_statement_on) THEN
179       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_overall_status');
180     END IF;
181     -- store the highest degree of error
182     OKL_AM_LEASE_TRMNT_PVT.set_overall_status(
183            p_return_status               => l_return_status,
184            px_overall_status             => l_overall_status);
185     IF (is_debug_statement_on) THEN
186       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_overall_status , l_overall_status : ' || l_overall_status);
187       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_database_values');
188     END IF;
189     -- If the termination request is from quote, populate the rest of the quote attributes
190     OKL_AM_LEASE_TRMNT_PVT.set_database_values(
191            px_term_rec                   => l_term_rec);
192     IF (is_debug_statement_on) THEN
193       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_database_values');
194       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_info_messages');
195     END IF;
196     -- Set the info messages intially
197     OKL_AM_LEASE_TRMNT_PVT.set_info_messages(
198            p_term_rec                   => l_term_rec);
199     IF (is_debug_statement_on) THEN
200       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_info_messages');
201     END IF;
202 
203     -- check if transaction already exists
204     -- RMUNJULU 04-APR-03 2889694 Changed OR to AND
205     IF (p_tcnv_rec.id IS NOT NULL AND p_tcnv_rec.id <> OKL_API.G_MISS_NUM) THEN
206       l_trn_already_set := 'Y';
207     END IF;
208 
209     --get sysdate
210     SELECT SYSDATE INTO l_sys_date FROM DUAL;
211 
212     IF l_trn_already_set = 'N' THEN
213 
214       IF (is_debug_statement_on) THEN
215         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.initialize_transaction');
216       END IF;
217       -- initialize the transaction rec
218       OKL_AM_LEASE_TRMNT_PVT.initialize_transaction (
219           px_tcnv_rec                   => lp_tcnv_rec,
220           p_term_rec                    => l_term_rec,
221           p_sys_date                    => l_sys_date,
222           p_control_flag                => 'CREATE',
223          x_return_status               => l_return_status,
224 	  -- akrangan bug 5354501 fix start
225 	  x_msg_count                   => x_msg_count,
226 	  x_msg_data                    => x_msg_data);
227       IF (is_debug_statement_on) THEN
228         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.initialize_transaction , return status: ' || l_return_status);
229       END IF;
230           --akrangan bug 5354501 fix end
231       -- rollback if intialize transaction failed
232       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
233         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
234       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
235         RAISE OKL_API.G_EXCEPTION_ERROR;
236       END IF;
237 
238       IF (is_debug_statement_on) THEN
239         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_transaction');
240       END IF;
241       -- insert the transaction record
242       OKL_AM_LEASE_TRMNT_PVT.process_transaction(
243           p_api_version     	          => p_api_version,
244           p_init_msg_list   	          => OKL_API.G_FALSE,
245           x_return_status   	          => l_return_status,
246           x_msg_count       	          => x_msg_count,
247           x_msg_data        	          => x_msg_data,
248           p_id                          => 0,
249           p_term_rec                    => l_term_rec,
250           p_tcnv_rec                    => lp_tcnv_rec,
251           x_id                          => lx_id,
252           p_trn_mode                    => 'INSERT');
253       IF (is_debug_statement_on) THEN
254         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_transaction , return status: ' || l_return_status);
255       END IF;
256 
257       -- rollback if processing transaction failed
258       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
259         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
260       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
261         RAISE OKL_API.G_EXCEPTION_ERROR;
262       END IF;
263 
264       -- set the trn rec id
265       lp_tcnv_rec.id := lx_id;
266 
267     ELSE -- transaction already set
268 
269       lp_tcnv_rec := p_tcnv_rec;
270 
271       IF (is_debug_statement_on) THEN
272         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.initialize_transaction');
273       END IF;
274       -- initialize the transaction rec
275       OKL_AM_LEASE_TRMNT_PVT.initialize_transaction (
276           px_tcnv_rec                   => lp_tcnv_rec,
277           p_term_rec                    => l_term_rec,
278           p_sys_date                    => l_sys_date,
279           p_control_flag                => 'UPDATE',
280           x_return_status               => l_return_status,
281 	  -- akrangan bug 5354501 fix start
282 	  x_msg_count                   => x_msg_count,
283 	  x_msg_data                    => x_msg_data);
284           --akrangan bug 5354501 fix end
285       IF (is_debug_statement_on) THEN
286         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.initialize_transaction , return status: ' || l_return_status);
287       END IF;
288 
289       -- rollback if intialize transaction failed
290       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
291         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
292       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
293         RAISE OKL_API.G_EXCEPTION_ERROR;
294       END IF;
295 
296     END IF;
297 
298     -- rmunjulu +++++++++ Effective Dated Termination -- start  ++++++++++++++++
299 
300     IF (is_debug_statement_on) THEN
301       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_quote_dates');
302     END IF;
303     -- rmunjulu EDAT Get the quote effectivity date and quote acceptance date
304     -- and store as global variables, will be used later on in other procedures
305     OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_quote_dates(
306           p_qte_id              => l_term_rec.p_quote_id,
307           x_return_status       => l_return_status);
308     IF (is_debug_statement_on) THEN
309       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_quote_dates , return status: ' || l_return_status);
310     END IF;
311 
312     -- Rollback if error setting activity for api
313     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
314       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
315     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
316       RAISE OKL_API.G_EXCEPTION_ERROR;
317     END IF;
318 
319     -- rmunjulu +++++++++ Effective Dated Termination -- end    ++++++++++++++++
320 
321     IF (is_debug_statement_on) THEN
322       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.validate_lease');
323     END IF;
324     -- check if loan valid
325     -- rmunjulu LOANS_ENHANCEMENTS
326     OKL_AM_LEASE_TRMNT_PVT.validate_lease(
327         p_api_version     	            => p_api_version,
328         p_init_msg_list   	            => OKL_API.G_FALSE,
329         x_return_status   	            => l_return_status,
330         x_msg_count       	            => x_msg_count,
331         x_msg_data        	            => x_msg_data,
332         p_sys_date                      => l_sys_date,
333         p_term_rec                      => l_term_rec);
334     IF (is_debug_statement_on) THEN
335       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.validate_lease , return status: ' || l_return_status);
336     END IF;
337 
338     -- Store the validation return status
339     l_validate  := l_return_status;
340 
341     IF (is_debug_statement_on) THEN
342       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_overall_status');
343     END IF;
344     -- store the highest degree of error
345     OKL_AM_LEASE_TRMNT_PVT.set_overall_status(
346         p_return_status                 => l_return_status,
347         px_overall_status               => l_overall_status);
348     IF (is_debug_statement_on) THEN
349       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_overall_status , l_overall_status : ' || l_overall_status);
350     END IF;
351 
352     IF (l_term_rec.p_control_flag = 'BATCH_PROCESS') THEN
353 
354       IF (is_debug_statement_on) THEN
355         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_LOAN_TRMNT_PUB.validate_contract');
356       END IF;
357       -- Since batch process is not checked initially in LLT check here
358       OKL_AM_LEASE_LOAN_TRMNT_PUB.validate_contract(
359            p_api_version                 =>   p_api_version,
360            p_init_msg_list               =>   OKL_API.G_FALSE,
361            x_return_status               =>   l_return_status,
362            x_msg_count                   =>   x_msg_count,
363            x_msg_data                    =>   x_msg_data,
364            p_contract_id                 =>   l_term_rec.p_contract_id,
365            p_control_flag                =>   l_term_rec.p_control_flag,
366            x_contract_status             =>   lx_contract_status);
367       IF (is_debug_statement_on) THEN
368         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_LOAN_TRMNT_PUB.validate_contract , return status: ' || l_return_status);
369       END IF;
370 
371       -- Store the highest validation return status
372       -- To capture the return status of validate lease called above
373       IF (l_validate = OKL_API.G_RET_STS_SUCCESS) THEN
374         l_validate  := l_return_status;
375       END IF;
376 
377       IF (is_debug_statement_on) THEN
378         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_overall_status');
379       END IF;
380       -- store the highest degree of error
381       OKL_AM_LEASE_TRMNT_PVT.set_overall_status(
382         p_return_status                 => l_validate, -- RMUNJULU 3018641 changed from l_return_status
383         px_overall_status               => l_overall_status);
384       IF (is_debug_statement_on) THEN
385         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_overall_status , overall status: ' || l_overall_status);
386         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
387       END IF;
388       -- set the transaction record
389       OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec(
390         p_return_status                 => l_validate, -- RMUNJULU 3018641 changed from l_return_status
391         p_overall_status                => l_overall_status,
392         p_tmt_flag                      => 'TMT_VALIDATED_YN',
393         p_tsu_code                      => 'ENTERED',
394         px_tcnv_rec                     => lp_tcnv_rec);
395       IF (is_debug_statement_on) THEN
396         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
397       END IF;
398 
399       -- if validation failed then insert transaction
400       -- and abort else continue next process
401       IF (l_validate <> OKL_API.G_RET_STS_SUCCESS) THEN
402         -- Validation of contract failed.
403         OKL_API.set_message( p_app_name      => G_APP_NAME,
404                              p_msg_name      => 'OKL_AM_VAL_OF_K_FAILED');
405 
406         IF (is_debug_statement_on) THEN
407           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
408         END IF;
409         -- set the transaction record
410         OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec(
411           p_return_status               => l_validate, -- RMUNJULU 3018641 changed from l_return_statu
412           p_overall_status              => l_overall_status,
413           p_tmt_flag                    => 'TMT_VALIDATED_YN',
414           p_tsu_code                    => 'ERROR',
415           px_tcnv_rec                   => lp_tcnv_rec);
416         IF (is_debug_statement_on) THEN
417           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
418           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_transaction');
419         END IF;
420         -- update the transaction record
421         OKL_AM_LEASE_TRMNT_PVT.process_transaction(
422           p_api_version     	          => p_api_version,
423           p_init_msg_list   	          => OKL_API.G_FALSE,
424           x_return_status   	          => l_return_status,
425           x_msg_count       	          => x_msg_count,
426           x_msg_data        	          => x_msg_data,
427           p_id                            => 0,
428           p_term_rec                      => l_term_rec,
429           p_tcnv_rec                      => lp_tcnv_rec,
430           x_id                            => lx_id,
431           p_trn_mode                      => 'UPDATE');
432           IF (is_debug_statement_on) THEN
433             OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_transaction , return status: ' || l_return_status);
434           END IF;
435 
436         -- rollback if processing transaction failed
437         IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
438           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
439         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
440           RAISE OKL_API.G_EXCEPTION_ERROR;
441         END IF;
442 
443         IF (is_debug_statement_on) THEN
444           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.process_messages');
445         END IF;
446         -- Save messages from stack into transaction message table
447         OKL_AM_UTIL_PVT.process_messages(
448         	p_trx_source_table	           => 'OKL_TRX_CONTRACTS',
449         	p_trx_id		               => lp_tcnv_rec.id,
450         	x_return_status                => l_return_status);
451         IF (is_debug_statement_on) THEN
452           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.process_messages , return status: ' || l_return_status);
453           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run');
454         END IF;
455         -- RMUNJULU 3018641 Added code to get and set TMG_RUN
456         OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run(
457                p_trx_id         => lp_tcnv_rec.id,
458                x_return_status  => l_return_status);
459         IF (is_debug_statement_on) THEN
460           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run , return status: ' || l_return_status);
461         END IF;
462 
463         -- rollback if api failed
464         IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
465           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
466         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
467           RAISE OKL_API.G_EXCEPTION_ERROR;
468         END IF;
469 
470         -- abort since validation failed
471         RAISE G_EXCEPTION_HALT_VALIDATION;
472       END IF;
473     ELSE --( not from batch process) then
474 
475 /*  -- RMUNJULU 3018641 Changed code to do validate step and store messages in trn
476 -- even when request from quote
477 
478       -- rollback if validation failed
479       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
480         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
481       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
482         RAISE OKL_API.G_EXCEPTION_ERROR;
483       END IF;
484 
485       -- set the transaction record
486       OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec(
487         p_return_status                 => l_return_status,
488         p_overall_status                => l_overall_status,
489         p_tmt_flag                      => 'TMT_VALIDATED_YN',
490         p_tsu_code                      => 'ENTERED',
491         px_tcnv_rec                     => lp_tcnv_rec);
492 */
493 
494  -- RMUNJULU 3018641 Changed code to do validate step and store messages in trn
495 
496       -- if validation failed then insert transaction
497       -- and abort else continue next process
498       IF (l_validate <> OKL_API.G_RET_STS_SUCCESS) THEN
499 
500         -- Validation of contract failed.
501         OKL_API.set_message( p_app_name      => G_APP_NAME,
502                              p_msg_name      => 'OKL_AM_VAL_OF_K_FAILED');
503 
504         IF (is_debug_statement_on) THEN
505           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
506         END IF;
507         -- set the transaction record
508         OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec(
509           p_return_status               => l_validate, -- RMUNJULU 3018641 changed from l_return_status
510           p_overall_status              => l_overall_status,
511           p_tmt_flag                    => 'TMT_VALIDATED_YN',
512           p_tsu_code                    => 'ERROR',
513           px_tcnv_rec                   => lp_tcnv_rec);
514         IF (is_debug_statement_on) THEN
515           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
516           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_transaction');
517         END IF;
518         -- update the transaction record
519         OKL_AM_LEASE_TRMNT_PVT.process_transaction(
520           p_api_version     	          => p_api_version,
521           p_init_msg_list   	          => OKL_API.G_FALSE,
522           x_return_status   	          => l_return_status,
523           x_msg_count       	          => x_msg_count,
524           x_msg_data        	          => x_msg_data,
525           p_id                          => 0,
526           p_term_rec                    => l_term_rec,
527           p_tcnv_rec                    => lp_tcnv_rec,
528           x_id                          => lx_id,
529           p_trn_mode                    => 'UPDATE');
530         IF (is_debug_statement_on) THEN
531           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_transaction , return status: ' || l_return_status);
532         END IF;
533 
534         -- rollback if processing transaction failed
535         IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
536           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
537         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
538           RAISE OKL_API.G_EXCEPTION_ERROR;
539         END IF;
540 
541         IF (is_debug_statement_on) THEN
542           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.process_messages');
543         END IF;
544         -- Save messages from stack into transaction message table
545         OKL_AM_UTIL_PVT.process_messages(
546         	p_trx_source_table	           => 'OKL_TRX_CONTRACTS',
547         	p_trx_id		               => lp_tcnv_rec.id,
548         	x_return_status                => l_return_status);
549         IF (is_debug_statement_on) THEN
550           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.process_messages , return status: ' || l_return_status);
551           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run');
552         END IF;
553         -- RMUNJULU 3018641 Added code to get and set TMG_RUN
554         OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run(
555                p_trx_id         => lp_tcnv_rec.id,
556                x_return_status  => l_return_status);
557         IF (is_debug_statement_on) THEN
558           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run , return status: ' || l_return_status);
559         END IF;
560 
561         -- rollback if api failed
562         IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
563           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
564         ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
565           RAISE OKL_API.G_EXCEPTION_ERROR;
566         END IF;
567 
568         -- abort since validation failed
569         RAISE G_EXCEPTION_HALT_VALIDATION;
570       END IF;
571 
572     END IF;
573 
574     IF (is_debug_statement_on) THEN
575       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.get_contract_lines');
576     END IF;
577     -- get the lines
578     OKL_AM_LEASE_TRMNT_PVT.get_contract_lines(
579         p_api_version     	            => p_api_version,
580         p_init_msg_list   	            => OKL_API.G_FALSE,
581         x_return_status   	            => l_return_status,
582         x_msg_count       	            => x_msg_count,
583         x_msg_data        	            => x_msg_data,
584         p_term_rec                      => l_term_rec,
585         x_klev_tbl                      => lx_klev_tbl);
586     IF (is_debug_statement_on) THEN
587       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.get_contract_lines , return status: ' || l_return_status);
588       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_cancel_insurance');
589     END IF;
590     -- process to check and cancel insurance
591     OKL_AM_LEASE_TRMNT_PVT.process_cancel_insurance(
592         p_api_version     	            => p_api_version,
593         p_init_msg_list   	            => OKL_API.G_FALSE,
594         x_return_status   	            => l_return_status,
595         x_msg_count       	            => x_msg_count,
596         x_msg_data        	            => x_msg_data,
597         p_term_rec                      => l_term_rec,
598         px_overall_status               => l_overall_status,
599         px_tcnv_rec                     => lp_tcnv_rec,
600         p_sys_date                      => l_sys_date,
601         p_trn_already_set               => l_trn_already_set);
602     IF (is_debug_statement_on) THEN
603       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_cancel_insurance , return status: ' || l_return_status);
604       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_close_balances');
605     END IF;
606     -- set the balances rec, close small balances, set transaction
607     OKL_AM_LEASE_TRMNT_PVT.process_close_balances(
608         p_api_version     	            => p_api_version,
609         p_init_msg_list   	            => OKL_API.G_FALSE,
610         x_return_status   	            => l_return_status,
611         x_msg_count       	            => x_msg_count,
612         x_msg_data        	            => x_msg_data,
613         p_term_rec                      => l_term_rec,
614         px_overall_status               => l_overall_status,
615         px_tcnv_rec                     => lp_tcnv_rec,
616         x_adjv_rec                      => lx_adjv_rec,
617         x_ajlv_tbl                      => lx_ajlv_tbl,
618         p_sys_date                      => l_sys_date,
619         p_trn_already_set               => l_trn_already_set);
620     IF (is_debug_statement_on) THEN
621       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_close_balances , return status: ' || l_return_status);
622     END IF;
623 
624 
625     -- RMUNJULU BUG # 3023206 Moved Close Streams into update_k_hdr_and_lines
626     -- as accounting uses some CURR streams and so they should not be closed
627     -- before accounting is done
628 
629 /*
630     -- process close streams
631     OKL_AM_LEASE_TRMNT_PVT.process_close_streams(
632         p_api_version     	            => p_api_version,
633         p_init_msg_list   	            => OKL_API.G_FALSE,
634         x_return_status   	            => l_return_status,
635         x_msg_count       	            => x_msg_count,
636         x_msg_data        	            => x_msg_data,
637         p_term_rec                      => l_term_rec,
638         px_overall_status               => l_overall_status,
639         px_tcnv_rec                     => lp_tcnv_rec,
640         x_stmv_tbl                      => lx_stmv_tbl,
641         p_sys_date                      => l_sys_date,
642         p_trn_already_set               => l_trn_already_set);
643 */
644 
645     IF (is_debug_statement_on) THEN
646       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_accounting_entries');
647     END IF;
648     -- do accounting entries
649     OKL_AM_LEASE_TRMNT_PVT.process_accounting_entries(
650          p_api_version     	            => p_api_version,
651          p_init_msg_list   	            => OKL_API.G_FALSE,
652          x_return_status   	            => l_return_status,
653          x_msg_count       	            => x_msg_count,
654          x_msg_data        	            => x_msg_data,
655          p_term_rec                     => l_term_rec,
656          px_overall_status              => l_overall_status,
657          px_tcnv_rec                    => lp_tcnv_rec,
658          p_sys_date                     => l_sys_date,
659          p_klev_tbl                     => lx_klev_tbl, -- PAGARG 4190887 Added
660          p_trn_already_set              => l_trn_already_set);
661     IF (is_debug_statement_on) THEN
662       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_accounting_entries , return status: ' || l_return_status);
663       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_asset_dispose');
664     END IF;
665     -- RMUNJULU 02-JAN-03 2724951 always do dispose for loans
666     -- do asset dispose
667     OKL_AM_LEASE_TRMNT_PVT.process_asset_dispose(
668          p_api_version     	            => p_api_version,
669          p_init_msg_list   	            => OKL_API.G_FALSE,
670          x_return_status   	            => l_return_status,
671          x_msg_count       	            => x_msg_count,
672          x_msg_data        	            => x_msg_data,
673          p_term_rec                     => l_term_rec,
674          px_overall_status              => l_overall_status,
675          px_tcnv_rec                    => lp_tcnv_rec,
676          p_klev_tbl                     => lx_klev_tbl,
677          p_trn_already_set              => l_trn_already_set);
678     IF (is_debug_statement_on) THEN
679       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_asset_dispose , return status: ' || l_return_status);
680     END IF;
681 
682 /*
683     -- Check if termination with purchase
684     IF (l_term_rec.p_quote_type IN('TER_PURCHASE', 'TER_RECOURSE', 'TER_ROLL_PURCHASE')) THEN
685 
686       -- do asset dispose
687       OKL_AM_LEASE_TRMNT_PVT.process_asset_dispose(
688          p_api_version     	            => p_api_version,
689          p_init_msg_list   	            => OKL_API.G_FALSE,
690          x_return_status   	            => l_return_status,
691          x_msg_count       	            => x_msg_count,
692          x_msg_data        	            => x_msg_data,
693          p_term_rec                     => l_term_rec,
694          px_overall_status              => l_overall_status,
695          px_tcnv_rec                    => lp_tcnv_rec,
696          p_klev_tbl                     => lx_klev_tbl,
697          p_trn_already_set              => l_trn_already_set);
698 
699       -- Amortization of assets not needed since termination with purchase
700       OKL_API.set_message( p_app_name   => G_APP_NAME,
701                            p_msg_name   => 'OKL_AM_AMORTIZE_NOT_NEED');
702 
703       -- Return of assets not needed since termination with purchase
704       OKL_API.set_message( p_app_name   => G_APP_NAME,
705                            p_msg_name   => 'OKL_AM_RETURN_NOT_NEED');
706 
707     ELSE -- termination without purchase
708 
709       -- do amortization and asset return
710       OKL_AM_LEASE_TRMNT_PVT.process_amortize_and_return(
711          p_api_version     	            => p_api_version,
712          p_init_msg_list   	            => OKL_API.G_FALSE,
713          x_return_status   	            => l_return_status,
714          x_msg_count       	            => x_msg_count,
715          x_msg_data        	            => x_msg_data,
716          p_term_rec                     => l_term_rec,
717          px_overall_status              => l_overall_status,
718          px_tcnv_rec                    => lp_tcnv_rec,
719          p_sys_date                     => l_sys_date,
720          p_klev_tbl                     => lx_klev_tbl,
721          p_trn_already_set              => l_trn_already_set);
722 
723       -- Disposition of assets not needed since termination without purchase
724       OKL_API.set_message( p_app_name   => G_APP_NAME,
725                            p_msg_name   => 'OKL_AM_DISPOSE_NOT_NEED');
726 
727     END IF;
728 */
729 
730     -- update the contract only if the overall_status is success
731     IF (l_overall_status = OKL_API.G_RET_STS_SUCCESS) THEN
732 
733       -- Set the p_status (which sets the sts_code) for the contract
734       IF  l_term_rec.p_control_flag = 'BATCH_PROCESS'
735       AND (   l_term_rec.p_quote_id IS NULL
736            OR l_term_rec.p_quote_id = OKL_API.G_MISS_NUM) THEN
737          l_status := 'EXPIRED';
738       ELSE
739          l_status := 'TERMINATED';
740       END IF;
741 
742       IF (is_debug_statement_on) THEN
743         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.update_k_hdr_and_lines');
744       END IF;
745       -- set_and_update_contract
746       OKL_AM_LEASE_TRMNT_PVT.update_k_hdr_and_lines(
747         p_api_version     	            => p_api_version,
748         p_init_msg_list   	            => OKL_API.G_FALSE,
749         x_return_status   	            => l_return_status,
750         x_msg_count       	            => x_msg_count,
751         x_msg_data        	            => x_msg_data,
752         p_status        	              => l_status,
753         p_term_rec                      => l_term_rec,
754         p_klev_tbl                      => lx_klev_tbl,
755         p_trn_reason_code               => lp_tcnv_rec.trn_code,
756         px_overall_status               => l_overall_status,
757         px_tcnv_rec                     => lp_tcnv_rec,
758         x_chrv_rec                      => lx_chrv_rec,
759         x_clev_tbl                      => lx_clev_tbl,
760         p_sys_date                      => l_sys_date);
761       IF (is_debug_statement_on) THEN
762         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.update_k_hdr_and_lines , return status: ' || l_return_status);
763       END IF;
764 
765       IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
766 
767         IF (is_debug_statement_on) THEN
768           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
769         END IF;
770         -- set the transaction record
771         OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec(
772           p_return_status               => l_return_status,
773           p_overall_status              => l_overall_status,
774           p_tmt_flag                    => 'TMT_CONTRACT_UPDATED_YN',
775           p_tsu_code                    => 'PROCESSED',
776           px_tcnv_rec                   => lp_tcnv_rec);
777         IF (is_debug_statement_on) THEN
778           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
779         END IF;
780 
781       ELSE -- Update of K hdr and lines failed
782 
783         -- Contract table update failed.
784         OKL_API.set_message( p_app_name      => G_APP_NAME,
785                              p_msg_name      => 'OKL_AM_ERR_K_UPD');
786 
787         IF (is_debug_statement_on) THEN
788           OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
789         END IF;
790         -- set the transaction record
791         OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec(
792           p_return_status               => l_return_status,
793           p_overall_status              => l_overall_status,
794           p_tmt_flag                    => 'TMT_CONTRACT_UPDATED_YN',
795           p_tsu_code                    => 'ERROR',
796           px_tcnv_rec                   => lp_tcnv_rec);
797          IF (is_debug_statement_on) THEN
798            OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.set_transaction_rec');
799          END IF;
800       END IF;
801     END IF;
802 
803     IF (is_debug_statement_on) THEN
804       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.process_transaction');
805     END IF;
806     -- update the transaction record
807     OKL_AM_LEASE_TRMNT_PVT.process_transaction(
808           p_api_version     	          => p_api_version,
809           p_init_msg_list   	          => OKL_API.G_FALSE,
810           x_return_status   	          => l_return_status,
811           x_msg_count       	          => x_msg_count,
812           x_msg_data        	          => x_msg_data,
813           p_id                          => 0,
814           p_term_rec                    => l_term_rec,
815           p_tcnv_rec                    => lp_tcnv_rec,
816           x_id                          => lx_id,
817           p_trn_mode                    => 'UPDATE');
818     IF (is_debug_statement_on) THEN
819       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.process_transaction , return status: ' || l_return_status);
820     END IF;
821 
822     -- rollback if processing transaction failed
823     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
824       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
825     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
826       RAISE OKL_API.G_EXCEPTION_ERROR;
827     END IF;
828 
829     IF (is_debug_statement_on) THEN
830       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.process_messages');
831     END IF;
832     -- Save messages from stack into transaction message table
833     OKL_AM_UTIL_PVT.process_messages(
834     	p_trx_source_table	            => 'OKL_TRX_CONTRACTS',
835     	p_trx_id		                    => lp_tcnv_rec.id,
836     	x_return_status	              	=> l_return_status);
837     IF (is_debug_statement_on) THEN
838       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.process_messages , return status: ' || l_return_status);
839     END IF;
840 
841     IF (is_debug_statement_on) THEN
842       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run');
843     END IF;
844     -- RMUNJULU 3018641 Added code to get and set TMG_RUN
845     OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run(
846                p_trx_id         => lp_tcnv_rec.id,
847                x_return_status  => l_return_status);
848     IF (is_debug_statement_on) THEN
849       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_LOAN_TRMNT_PVT.get_set_tmg_run , return status: ' || l_return_status);
850     END IF;
851 
852     -- rollback if api failed
853     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
854       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
855     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
856       RAISE OKL_API.G_EXCEPTION_ERROR;
857     END IF;
858 
859     -- Set the return status
860     x_return_status  :=  OKL_API.G_RET_STS_SUCCESS;
861 
862     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
863     IF (is_debug_procedure_on) THEN
864       OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name  ,'End(-)');
865     END IF;
866 
867   EXCEPTION
868     WHEN G_EXCEPTION_HALT_VALIDATION THEN
869       IF (is_debug_exception_on) THEN
870         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_HALT_VALIDATION');
871       END IF;
872       x_return_status := OKL_API.G_RET_STS_SUCCESS;
873     WHEN OKL_API.G_EXCEPTION_ERROR THEN
874       IF (is_debug_exception_on) THEN
875         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
876       END IF;
877       x_return_status := OKL_API.HANDLE_EXCEPTIONS
878       (
879         l_api_name,
880         G_PKG_NAME,
881         'OKL_API.G_RET_STS_ERROR',
882         x_msg_count,
883         x_msg_data,
884         '_PVT'
885       );
886     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
887       IF (is_debug_exception_on) THEN
888         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
889       END IF;
890       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
891       (
892         l_api_name,
893         G_PKG_NAME,
894         'OKL_API.G_RET_STS_UNEXP_ERROR',
895         x_msg_count,
896         x_msg_data,
897         '_PVT'
898       );
899     WHEN OTHERS THEN
900       IF (is_debug_exception_on) THEN
901         OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
902  			                || sqlcode || ' , SQLERRM : ' || sqlerrm);
903       END IF;
904       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
905       (
906         l_api_name,
907         G_PKG_NAME,
908         'OTHERS',
909         x_msg_count,
910         x_msg_data,
911         '_PVT'
912       );
913   END loan_termination;
914 
915 END OKL_AM_LOAN_TRMNT_PVT;