[Home] [Help]
PACKAGE BODY: APPS.OKL_AM_LEASE_LOAN_TRMNT_PVT
Source
1 PACKAGE BODY OKL_AM_LEASE_LOAN_TRMNT_PVT AS
2 /* $Header: OKLRLLTB.pls 120.47.12020000.3 2012/07/31 18:56:45 gkadarka ship $ */
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_lease_loan_trmnt_pvt.';
9
10 -- Start of comments
11 --
12 -- Function Name : check_int_calc_done.
13 -- Description : Returns 'Y' if last int calc was after last scheduled calculation
14 -- Business Rules : Called from OKL_AM_CREATE_QUOTE_PVT, OKL_AM_TERMNT_QUOTE_PVT and OKL_AM_LEASE_TRMNT_PVT
15 -- Parameters :
16 -- Version : 1.0
17 -- History : RMUNJULU LOANS_ENHACEMENT
18 -- : SECHAWLA 20-JAN-06 4970009 : Added the interest calculation check for lease contracts
19 -- with int calc basis ('FLOAT_FACTORS','REAMORT')
20 -- SECHAWLA 24-JAN-05 4970009 : Modified check_int_calc_done to compare last_int_calc_till_date
21 -- with termination date instead of last_sch_int_calc_date, to determine if
22 -- variable rate processing has been done completely
23 -- RMUNJULU 20-FEB-06 5050158 : Modified the check based on contract end date
24 --
25 -- End of comments
26 FUNCTION check_int_calc_done(
27 p_contract_id IN NUMBER,
28 p_contract_number IN VARCHAR2,
29 p_quote_number IN NUMBER DEFAULT NULL,
30 p_source IN VARCHAR2,
31 p_trn_date IN DATE) RETURN VARCHAR2 IS
32
33 -- rmunjulu BUG 5050158
34 CURSOR get_contract_end_date_csr (p_contract_id IN NUMBER ) IS
35 SELECT end_date
36 FROM okc_k_headers_b
37 WHERE id = p_contract_id;
38 -- added for bug 14049528
39 CURSOR get_contract_start_date_csr (p_contract_id IN NUMBER ) IS
40 SELECT start_date
41 FROM okc_k_headers_b
42 WHERE id = p_contract_id;
43
44 l_last_int_calc_till_date DATE;
45 l_last_sch_int_calc_date DATE;
46 l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
47 l_deal_type VARCHAR2(300);
48 l_rev_rec_method VARCHAR2(300);
49 l_int_cal_basis VARCHAR2(300);
50 l_tax_owner VARCHAR2(300);
51 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_int_calc_done';
52 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
53 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
54 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
55
56 -- rmunjulu BUG 5050158
57 l_contract_end_date DATE;
58 -- added for bug 14049528
59 l_contract_start_date DATE;
60 l_trn_date DATE;
61
62 BEGIN
63 IF (is_debug_procedure_on) THEN
64 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
65 END IF;
66 IF (is_debug_statement_on) THEN
67 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_id: '|| p_contract_id);
68 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_number: '|| p_contract_number);
69 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_quote_number: '|| p_quote_number);
70 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_source: '|| p_source);
71 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_trn_date: '|| p_trn_date);
72 END IF;
73
74 IF (is_debug_statement_on) THEN
75 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.get_contract_product_details');
76 END IF;
77 -- Get the contract product details
78 OKL_AM_UTIL_PVT.get_contract_product_details(
79 p_khr_id => p_contract_id,
80 x_deal_type => l_deal_type,
81 x_rev_rec_method => l_rev_rec_method,
82 x_int_cal_basis => l_int_cal_basis,
83 x_tax_owner => l_tax_owner,
84 x_return_status => l_return_status);
85 IF (is_debug_statement_on) THEN
86 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.get_contract_product_details , return status: ' || l_return_status);
87 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_deal_type: ' || l_deal_type);
88 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_rev_rec_method: ' || l_rev_rec_method);
89 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_int_cal_basis: ' || l_int_cal_basis);
90 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_tax_owner: ' || l_tax_owner);
91 END IF;
92
93 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
94 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
95 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
96 RAISE OKL_API.G_EXCEPTION_ERROR;
97 END IF;
98
99 -- only for loans check int calc
100 -- rmunjulu LOANS_ENHANCEMENT added condition to check for only some cases
101 IF ( (l_deal_type LIKE 'LOAN%' AND l_int_cal_basis IN ('FLOAT','REAMORT','CATCHUP/CLEANUP'))
102 OR --SECHAWLA 20-JAN-06 4970009 :Added the following condition to cover certain type of leases
103 (l_deal_type LIKE 'LEASE%' AND l_int_cal_basis IN ('FLOAT_FACTORS','REAMORT') ) -- SECHAWLA 20-JAN-06 4970009 : added
104 ) THEN
105
106 IF (is_debug_statement_on) THEN
107 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_VARIABLE_INT_UTIL_PVT.get_last_interim_int_calc_date');
108 END IF;
109 -- get last interest calculation till date
110 l_last_int_calc_till_date := OKL_VARIABLE_INT_UTIL_PVT.get_last_interim_int_calc_date(
111 x_return_status => l_return_status,
112 p_khr_id => p_contract_id);
113 IF (is_debug_statement_on) THEN
114 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_VARIABLE_INT_UTIL_PVT.get_last_interim_int_calc_date , return status: ' || l_return_status);
115 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_last_int_calc_till_date: ' || l_last_int_calc_till_date);
116 END IF;
117
118 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
119 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
120 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
121 RAISE OKL_API.G_EXCEPTION_ERROR;
122 END IF;
123
124 -- SECHAWLA 24-JAN-05 4970009 : comparing l_last_int_calc_till_date with
125 -- l_last_sch_int_calc_date won't work. e.g K1 (15-Jul-04 - 14-Oct-04)
126 -- ran variable rate procesing. It runs for 1 month at a time, starting from
127 -- the begining/last run date.
128 -- At the end of 1st run, l_last_int_calc_till_date = 15-AUG-04, l_last_sch_int_calc_date = 15-SEP-04
129 -- ran variable rate procesing 2nd time
130 -- At the end of 2nd run, l_last_int_calc_till_date = 15-SEP-04, l_last_sch_int_calc_date = 15-SEP-04
131 -- So our check ( l_last_int_calc_till_date < l_last_sch_int_calc_date) will fail and we will
132 -- allow termination. This is wrong. Variable rate processing needs to run for 1 more month (till the
133 -- contract end date). So we should compare l_last_int_calc_till_date with p_trn_date
134 -- Run variable rate processing for the 3rd time.
135 -- At the end of 3rd run, l_last_int_calc_till_date = 15-OCT-04, l_last_sch_int_calc_date = 15-SEP-04
136 -- Now l_last_int_calc_till_date > p_trn_date (termination date) and it is ok to terminate at this point
137
138 -- rmunjulu BUG 5050158 WE NEED THE CHECK FOR LAST SCHEDULED INTEREST CALCULATION OR ELSE
139 -- IF USER TRIES TO DO TERMINATION ON 20-AUG, AND SCHEDULED IS 15-AUG, IT ERRORS.
140
141 -- get last scheduled interest calculation date before termination date
142
143 IF (is_debug_statement_on) THEN
144 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_VARIABLE_INT_UTIL_PVT.get_last_sch_int_calc_date');
145 END IF;
146 -- added for bug 14049528
147 IF (p_trn_date > sysdate) THEN
148 l_trn_date := sysdate;
149 ELSE
150 l_trn_date := p_trn_date;
151 END IF;
152 l_last_sch_int_calc_date := OKL_VARIABLE_INT_UTIL_PVT.get_last_sch_int_calc_date(
153 x_return_status => l_return_status,
154 p_khr_id => p_contract_id,
155 p_effective_date => l_trn_date);
156 IF (is_debug_statement_on) THEN
157 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_VARIABLE_INT_UTIL_PVT.get_last_sch_int_calc_date , return status: ' || l_return_status);
158 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_last_sch_int_calc_date: ' || l_last_sch_int_calc_date);
159 END IF;
160
161 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
162 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
163 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
164 RAISE OKL_API.G_EXCEPTION_ERROR;
165 END IF;
166 -- added for bug 14049528
167 OPEN get_contract_start_date_csr (p_contract_id);
168 FETCH get_contract_start_date_csr INTO l_contract_start_date;
169 CLOSE get_contract_start_date_csr;
170
171 IF l_last_int_calc_till_date IS NULL THEN
172 l_last_int_calc_till_date := l_contract_start_date;
173 END IF;
174
175 -- rmunjulu BUG 5050158 derive contract end date
176 --OPEN get_contract_end_date_csr (p_contract_id);
177 --FETCH get_contract_end_date_csr INTO l_contract_end_date;
178 --CLOSE get_contract_end_date_csr;
179
180 -- rmunjulu BUG 5050158 Final logic
181 -- If last int calc till date is NULL or last int calc till date < last scheduled int calc then
182 -- throw error
183
184 -- rmunjulu BUG 5050158
185 --IF trunc(l_contract_end_date) < trunc(p_trn_date) THEN -- rmunjulu BUG 5050158 termination after contract end date
186
187 -- if last int calc date is less than last scheduled int calculation then throw error
188 IF l_last_int_calc_till_date IS NULL
189 OR (trunc(l_last_int_calc_till_date) < trunc(l_last_sch_int_calc_date)) THEN --SECHAWLA 24-JAN-05 4970009
190 --OR (trunc(l_last_int_calc_till_date) < trunc(p_trn_date) --SECHAWLA 24-JAN-05 4970009
191 --AND trunc(l_last_int_calc_till_date) < trunc(l_contract_end_date)) THEN -- rmunjulu BUG 5050158 Add condition to catch last calc
192
193 -- If quote_number passed then give quote message
194 IF p_source = 'CREATE' THEN
195
196 -- Termination quote cannot be created. Please process interest calculation
197 -- for contract CONTRACT_NUMBER up to the quote effective from date.
198 OKL_API.set_message (
199 p_app_name => 'OKL',
200 p_msg_name => 'OKL_AM_CREATE_TQ_RUN_INT_CALC',
201 p_token1 => 'CONTRACT_NUMBER',
202 p_token1_value => p_contract_number);
203
204 RETURN 'N';
205
206 ELSIF p_quote_number IS NOT NULL AND p_source = 'UPDATE' THEN
207
208 -- Quote QUOTE_NUMBER can not be accepted. Please process interest calculation
209 -- for contract CONTRACT_NUMBER up to the quote effective from date.
210 OKL_API.set_message (
211 p_app_name => 'OKL',
212 p_msg_name => 'OKL_AM_UPD_TQ_RUN_INT_CALC',
213 p_token1 => 'QUOTE_NUMBER',
214 p_token1_value => p_quote_number,
215 p_token2 => 'CONTRACT_NUMBER',
216 p_token2_value => p_contract_number);
217
218 RETURN 'N';
219
220 ELSIF p_source = 'TERMINATE' THEN
221
222 -- Contract CONTRACT_NUMBER can not be terminated. Please process Regular Stream Billing
223 -- for contract up to the termination date TERMINATION_DATE.
224 OKL_API.set_message (
225 p_app_name => 'OKL',
226 p_msg_name => 'OKL_AM_TERMT_RUN_INT_CALC',
227 p_token1 => 'CONTRACT_NUMBER',
228 p_token1_value => p_contract_number,
229 p_token2 => 'TERMINATION_DATE',
230 p_token2_value => p_trn_date);
231
232 RETURN 'N';
233
234 END IF;
235 END IF;
236 /*
237 ELSE -- rmunjulu BUG 5050158 termination before contract end date (use old logic)
238
239 -- if last int calc date is less than last scheduled int calculation then throw error
240 IF l_last_int_calc_till_date IS NULL
241 OR trunc(l_last_int_calc_till_date) < trunc(l_last_sch_int_calc_date) THEN
242
243 -- If quote_number passed then give quote message
244 IF p_source = 'CREATE' THEN
245
246 -- Termination quote cannot be created. Please process interest calculation
247 -- for contract CONTRACT_NUMBER up to the quote effective from date.
248 OKL_API.set_message (
249 p_app_name => 'OKL',
250 p_msg_name => 'OKL_AM_CREATE_TQ_RUN_INT_CALC',
251 p_token1 => 'CONTRACT_NUMBER',
252 p_token1_value => p_contract_number);
253
254 RETURN 'N';
255
256 ELSIF p_quote_number IS NOT NULL AND p_source = 'UPDATE' THEN
257
258 -- Quote QUOTE_NUMBER can not be accepted. Please process interest calculation
259 -- for contract CONTRACT_NUMBER up to the quote effective from date.
260 OKL_API.set_message (
261 p_app_name => 'OKL',
262 p_msg_name => 'OKL_AM_UPD_TQ_RUN_INT_CALC',
263 p_token1 => 'QUOTE_NUMBER',
264 p_token1_value => p_quote_number,
265 p_token2 => 'CONTRACT_NUMBER',
266 p_token2_value => p_contract_number);
267
268 RETURN 'N';
269
270 ELSIF p_source = 'TERMINATE' THEN
271
272 -- Contract CONTRACT_NUMBER can not be terminated. Please process Regular Stream Billing
273 -- for contract up to the termination date TERMINATION_DATE.
274 OKL_API.set_message (
275 p_app_name => 'OKL',
276 p_msg_name => 'OKL_AM_TERMT_RUN_INT_CALC',
277 p_token1 => 'CONTRACT_NUMBER',
278 p_token1_value => p_contract_number,
279 p_token2 => 'TERMINATION_DATE',
280 p_token2_value => p_trn_date);
281
282 RETURN 'N';
283
284 END IF;
285
286 END IF;
287
288 END IF; -- rmunjulu BUG 5050158
289 */
290 END IF;
291 IF (is_debug_statement_on) THEN
292 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning Y');
293 END IF;
294 IF (is_debug_procedure_on) THEN
295 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
296 END IF;
297
298 RETURN 'Y';
299
300 EXCEPTION
301
302 WHEN OKL_API.G_EXCEPTION_ERROR THEN
303 IF (is_debug_exception_on) THEN
304 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
305 END IF;
306 RETURN NULL;
307
308 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
309 IF (is_debug_exception_on) THEN
310 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
311 END IF;
312 RETURN NULL;
313
314 WHEN OTHERS THEN
315 IF (is_debug_exception_on) THEN
316 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
317 || sqlcode || ' , SQLERRM : ' || sqlerrm);
318 END IF;
319
320 OKL_API.set_message(
321 p_app_name => OKC_API.G_APP_NAME,
322 p_msg_name => G_UNEXPECTED_ERROR,
323 p_token1 => G_SQLCODE_TOKEN,
324 p_token1_value => SQLCODE,
325 p_token2 => G_SQLERRM_TOKEN,
326 p_token2_value => SQLERRM);
327
328 RETURN NULL;
329
330 END check_int_calc_done;
331
332 -- Start of Commnets
333 -- Procedure Name : get_last_run
334 -- Description : Gets the last run of TRX_MSGS
335 -- Business Rules :
336 -- Parameters : P_Trx_Id
337 -- Version : 1.0
338 -- History : RMUNJULU 24-SEP-03 3018641 created
339 -- End of Commnets
340 PROCEDURE get_last_run(
341 p_trx_id IN NUMBER,
342 x_last_run OUT NOCOPY NUMBER) IS
343
344 -- Get the last run for TRX_MSGS
345 CURSOR get_last_run_csr ( p_trx_id IN NUMBER) IS
346 SELECT NVL(MAX(TMG.tmg_run),0) last_run
347 FROM OKL_TRX_MSGS TMG
348 WHERE TMG.trx_id = p_trx_id;
349
350 l_last_run NUMBER := 0;
351 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'get_last_run';
352 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
353 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
354 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
355
356
357 BEGIN
358 IF (is_debug_procedure_on) THEN
359 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
360 END IF;
361 IF (is_debug_statement_on) THEN
362 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_trx_id: '|| p_trx_id);
363 END IF;
364
365 -- Get the last run
366 FOR get_last_run_rec IN get_last_run_csr(p_trx_id) LOOP
367
368 l_last_run := get_last_run_rec.last_run;
369
370 END LOOP;
371
372 x_last_run := l_last_run;
373 IF (is_debug_procedure_on) THEN
374 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
375 END IF;
376
377 EXCEPTION
378
379 WHEN OTHERS THEN
380 IF (is_debug_exception_on) THEN
381 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
382 || sqlcode || ' , SQLERRM : ' || sqlerrm);
383 END IF;
384 -- Set the oracle error message
385 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
386 p_msg_name => g_unexpected_error,
387 p_token1 => g_sqlcode_token,
388 p_token1_value => SQLCODE,
389 p_token2 => g_sqlerrm_token,
390 p_token2_value => SQLERRM);
391 x_last_run := NULL;
392
393 END get_last_run;
394
395
396 -- Start of Commnets
397 -- Procedure Name : get_set_tmg_run
398 -- Description : Gets the last run of TRX_MSGS and increments by 1 and sets TMG_RUN
399 -- Business Rules :
400 -- Parameters : P_Trx_Id
401 -- Version : 1.0
402 -- History : RMUNJULU 24-SEP-03 3018641 created
403 -- End of Commnets
404 PROCEDURE get_set_tmg_run(
405 p_trx_id IN NUMBER,
406 x_return_status OUT NOCOPY VARCHAR2) IS
407
408
409 -- Get the unfilled TMG_RUN rows for the trx_id
410 CURSOR get_empty_tmg_run_csr ( p_trx_id IN NUMBER) IS
411 SELECT TMG.id,
412 TMG.object_version_number
413 FROM OKL_TRX_MSGS TMG
414 WHERE TMG.trx_id = p_trx_id
415 AND TMG.tmg_run IS NULL;
416
417 l_last_run NUMBER;
418 lp_tmgv_tbl OKL_TRX_MSGS_PUB.tmgv_tbl_type;
419 lx_tmgv_tbl OKL_TRX_MSGS_PUB.tmgv_tbl_type;
420
421 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
422
423 l_api_version CONSTANT NUMBER := 1;
424 l_msg_count NUMBER := OKL_API.G_MISS_NUM;
425 l_msg_data VARCHAR2(2000);
426 i NUMBER := 1;
427 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'get_set_tmg_run';
428 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
429 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
430 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
431
432
433 BEGIN
434 IF (is_debug_procedure_on) THEN
435 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
436 END IF;
437 IF (is_debug_statement_on) THEN
438 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_trx_id: '|| p_trx_id);
439 END IF;
440
441 -- Get the last run
442 get_last_run(
443 p_trx_id => p_trx_id,
444 x_last_run => l_last_run);
445 IF (is_debug_statement_on) THEN
446 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called get_last_run , l_last_run: ' || l_last_run);
447 END IF;
448
449 -- increment the last run
450 l_last_run := l_last_run + 1;
451
452 -- get the rows which needs to be update with last run
453 FOR get_empty_tmg_run_rec IN get_empty_tmg_run_csr(p_trx_id) LOOP
454
455 lp_tmgv_tbl(i).id := get_empty_tmg_run_rec.id;
456 lp_tmgv_tbl(i).object_version_number := get_empty_tmg_run_rec.object_version_number;
457 lp_tmgv_tbl(i).tmg_run := l_last_run;
458
459 i := i + 1;
460
461 END LOOP;
462
463 -- Update the TMG_RUN of OKL_TRX_MSGS with l_last_run+1 for the TRX_ID with null TMG_RUN
464 IF (lp_tmgv_tbl.COUNT > 0) THEN
465
466 IF (is_debug_statement_on) THEN
467 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_TRX_MSGS_PUB.update_trx_msgs');
468 END IF;
469 OKL_TRX_MSGS_PUB.update_trx_msgs (
470 p_api_version => l_api_version,
471 p_init_msg_list => OKL_API.G_FALSE,
472 x_return_status => l_return_status,
473 x_msg_count => l_msg_count,
474 x_msg_data => l_msg_data,
475 p_tmgv_tbl => lp_tmgv_tbl,
476 x_tmgv_tbl => lx_tmgv_tbl);
477 IF (is_debug_statement_on) THEN
478 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_TRX_MSGS_PUB.update_trx_msgs , return status: ' || l_return_status);
479 END IF;
480
481 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
482 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
483 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
484 RAISE OKL_API.G_EXCEPTION_ERROR;
485 END IF;
486
487 END IF;
488
489 x_return_status := l_return_status;
490 IF (is_debug_procedure_on) THEN
491 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
492 END IF;
493
494 EXCEPTION
495
496 WHEN OKL_API.G_EXCEPTION_ERROR THEN
497 IF (is_debug_exception_on) THEN
498 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
499 END IF;
500 x_return_status := OKL_API.G_RET_STS_ERROR;
501
502 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
503 IF (is_debug_exception_on) THEN
504 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
505 END IF;
506 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
507
508 WHEN OTHERS THEN
509 IF (is_debug_exception_on) THEN
510 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
511 || sqlcode || ' , SQLERRM : ' || sqlerrm);
512 END IF;
513 -- Set the oracle error message
514 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
515 p_msg_name => g_unexpected_error,
516 p_token1 => g_sqlcode_token,
517 p_token1_value => SQLCODE,
518 p_token2 => g_sqlerrm_token,
519 p_token2_value => SQLERRM);
520 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
521
522 END get_set_tmg_run;
523
524
525 -- ++++++++++++++++++++ service contract integration begin ++++++++++++++++++
526
527 -- Start of comments
528 --
529 -- Function Name : check_service_link.
530 -- Description : If a link exists, the service contract information is returned back.
531 -- If no link exists, it returns NULL to service contract out variables.
532 -- Business Rules :
533 -- Parameters :
534 -- Version : 1.0
535 -- History : RMUNJULU 3061751 27-AUG-2003 Created
536 --
537 -- End of comments
538 PROCEDURE check_service_link (
539 p_api_version IN NUMBER,
540 p_init_msg_list IN VARCHAR2,
541 x_return_status OUT NOCOPY VARCHAR2,
542 x_msg_count OUT NOCOPY NUMBER,
543 x_msg_data OUT NOCOPY VARCHAR2,
544 p_lease_asset_id IN OKC_K_LINES_V.ID%TYPE,
545 x_service_contract_id OUT NOCOPY OKC_K_HEADERS_V.ID%TYPE
546 ) IS
547
548 l_api_name VARCHAR2(35) := 'check_service_link';
549 l_proc_name VARCHAR2(35) := 'CHECK_SERVICE_LINK';
550 l_api_version CONSTANT NUMBER := 1;
551 l_okl_chr_id OKC_K_HEADERS_V.ID%TYPE;
552 l_oks_chr_id OKC_K_HEADERS_V.ID%TYPE;
553 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_service_link';
554 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
555 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
556 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
557
558 G_API_TYPE VARCHAR2(20) := '_PVT';
559
560
561 -- Check if the Financial asset is serviced thru OKS - Will return the OKL Contract
562 CURSOR link_csr (p_kle_id OKC_K_LINES_V.ID%TYPE) IS
563 SELECT KREL.chr_id okl_contract_id
564 FROM OKC_K_HEADERS_B OKS_CHRB,
565 OKC_LINE_STYLES_B OKS_COV_PD_LSE,
566 OKC_K_LINES_B OKS_COV_PD_CLEB,
567 OKC_K_REL_OBJS KREL,
568 OKC_LINE_STYLES_B LNK_SRV_LSE,
569 OKC_STATUSES_B LNK_SRV_STS,
570 OKC_K_LINES_B LNK_SRV_CLEB,
571 OKC_K_ITEMS LNK_SRV_CIM
572 WHERE OKS_CHRB.scs_code = 'SERVICE'
573 AND OKS_CHRB.id = OKS_COV_PD_CLEB.dnz_chr_id
574 AND OKS_COV_PD_CLEB.lse_id = OKS_COV_PD_LSE.id
575 AND OKS_COV_PD_LSE.lty_code = 'COVER_PROD'
576 AND '#' = KREL.object1_id2
577 AND OKS_COV_PD_CLEB.id = KREL.object1_id1
578 AND KREL.rty_code = 'OKLSRV'
579 AND KREL.cle_id = LNK_SRV_CLEB.id
580 AND LNK_SRV_CLEB.lse_id = LNK_SRV_LSE.id
581 AND LNK_SRV_LSE.lty_code = 'LINK_SERV_ASSET'
582 AND LNK_SRV_CLEB.sts_code = LNK_SRV_STS.code
583 AND LNK_SRV_CLEB.id = LNK_SRV_CIM.cle_id
584 AND LNK_SRV_CIM.jtot_object1_code = 'OKX_COVASST'
585 AND LNK_SRV_CIM.object1_id2 = '#'
586 AND LNK_SRV_CIM.object1_id1 = p_kle_id;
587
588 BEGIN -- main process begins here
589 IF (is_debug_procedure_on) THEN
590 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
591 END IF;
592 IF (is_debug_statement_on) THEN
593 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_lease_asset_id: '|| p_lease_asset_id);
594 END IF;
595
596 x_return_status := OKL_API.G_RET_STS_SUCCESS;
597
598 -- call START_ACTIVITY to create savepoint, check compatibility
599 -- and initialize message list
600 x_return_status := OKL_API.START_ACTIVITY(
601 p_api_name => l_api_name,
602 p_pkg_name => G_PKG_NAME,
603 p_init_msg_list => p_init_msg_list,
604 l_api_version => l_api_version,
605 p_api_version => p_api_version,
606 p_api_type => G_API_TYPE,
607 x_return_status => x_return_status);
608
609 -- check if activity started successfully
610 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) then
611 raise OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
612 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) then
613 raise OKL_API.G_EXCEPTION_ERROR;
614 END IF;
615
616 -- Check if the Financial Asset is Serviced thru OKS
617 FOR link_rec IN link_csr(p_lease_asset_id) LOOP
618 l_okl_chr_id := link_rec.okl_contract_id;
619 END LOOP;
620
621 IF (is_debug_statement_on) THEN
622 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_SERVICE_INTEGRATION_PVT.check_service_link');
623 END IF;
624 -- Get the Service Contract for the Leased Contract
625 OKL_SERVICE_INTEGRATION_PVT.check_service_link (
626 p_api_version => p_api_version,
627 p_init_msg_list => OKL_API.G_FALSE,
628 x_return_status => x_return_status,
629 x_msg_count => x_msg_count,
630 x_msg_data => x_msg_data,
631 p_lease_contract_id => l_okl_chr_id ,
632 x_service_contract_id => l_oks_chr_id);
633 IF (is_debug_statement_on) THEN
634 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_SERVICE_INTEGRATION_PVT.check_service_link , return status: ' || x_return_status);
635 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_oks_chr_id: ' || l_oks_chr_id);
636 END IF;
637
638 x_service_contract_id := l_oks_chr_id;
639
640 OKL_API.END_ACTIVITY(x_msg_count => x_msg_count,
641 x_msg_data => x_msg_data);
642 IF (is_debug_procedure_on) THEN
643 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
644 END IF;
645
646 EXCEPTION
647 WHEN OKL_API.G_EXCEPTION_ERROR THEN
648 IF (is_debug_exception_on) THEN
649 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
650 END IF;
651 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
652 p_api_name => l_api_name,
653 p_pkg_name => G_PKG_NAME,
654 p_exc_name => 'OKC_API.G_RET_STS_ERROR',
655 x_msg_count => x_msg_count,
656 x_msg_data => x_msg_data,
657 p_api_type => G_API_TYPE);
658
659 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
660 IF (is_debug_exception_on) THEN
661 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
662 END IF;
663 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
664 p_api_name => l_api_name,
665 p_pkg_name => G_PKG_NAME,
666 p_exc_name => 'OKC_API.G_RET_STS_UNEXP_ERROR',
667 x_msg_count => x_msg_count,
668 x_msg_data => x_msg_data,
669 p_api_type => G_API_TYPE);
670
671 WHEN OTHERS THEN
672 IF (is_debug_exception_on) THEN
673 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
674 || sqlcode || ' , SQLERRM : ' || sqlerrm);
675 END IF;
676 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
677 p_api_name => l_api_name,
678 p_pkg_name => G_PKG_NAME,
679 p_exc_name => 'OTHERS',
680 x_msg_count => x_msg_count,
681 x_msg_data => x_msg_data,
682 p_api_type => G_API_TYPE);
683
684 END check_service_link;
685
686 -- Start of comments
687 --
688 -- Function Name : check_true_partial_quote.
689 -- Description : Returns Y if TRUE partial quote(some more assets); else N or NULL
690 -- Business Rules : CALLED FROM OKL_AM_LEASE_LOAN_TRMNT_PVT, OKL_AM_TERMNT_QUOTE_PVT
691 -- Parameters :
692 -- Version : 1.0
693 -- History : RMUNJULU 3061751 27-AUG-2003 Created
694 --
695 -- End of comments
696 FUNCTION check_true_partial_quote(
697 p_quote_id IN NUMBER,
698 p_contract_id IN NUMBER) RETURN VARCHAR2 IS
699
700 -- Get the quote assets count
701 CURSOR get_quote_assets_no_csr (p_qte_id IN NUMBER) IS
702 SELECT COUNT(TQL.id) no_of_quote_assets
703 FROM OKL_TXL_QUOTE_LINES_B TQL
704 WHERE TQL.qlt_code = 'AMCFIA'
705 AND TQL.qte_id = p_qte_id;
706
707 -- Get the contract assets count - All NON Terminated Financial Assets
708 -- rmunjulu INVESTOR_DISB_ADJ
709 -- get assets with same status as contract
710 CURSOR get_contract_assets_no_csr (p_khr_id IN NUMBER) IS
711 SELECT COUNT(CLE.id) no_of_contract_assets
712 FROM OKC_K_LINES_B CLE,
713 OKC_LINE_STYLES_B LSE,
714 --OKC_STATUSES_B STS,
715 OKC_K_HEADERS_B CHR
716 WHERE CLE.lse_id = LSE.id
717 AND LSE.lty_code = 'FREE_FORM1'
718 --AND CLE.sts_code = STS.code
719 AND CLE.sts_code = CHR.sts_code
720 AND CHR.id = CLE.dnz_chr_id
721 --AND STS.ste_code NOT IN ('HOLD','EXPIRED','TERMINATED','CANCELLED') --OKC STATUSES
722 AND CLE.dnz_chr_id = p_khr_id;
723
724 -- Get the quote assets details
725 CURSOR get_asset_qty_csr (p_qte_id IN NUMBER) IS
726 SELECT TQL.kle_id,
727 TQL.asset_quantity,
728 TQL.quote_quantity
729 FROM OKL_TXL_QUOTE_LINES_B TQL
730 WHERE TQL.qlt_code = 'AMCFIA'
731 AND TQL.qte_id = p_qte_id;
732
733 l_quote_assets_no NUMBER;
734 l_contract_assets_no NUMBER;
735 l_true_partial_quote VARCHAR2(1) := 'N';
736 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_true_partial_quote';
737 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
738 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
739 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
740
741 BEGIN
742 IF (is_debug_procedure_on) THEN
743 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
744 END IF;
745 IF (is_debug_statement_on) THEN
746 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_quote_id: '|| p_quote_id);
747 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_id: '|| p_contract_id);
748 END IF;
749
750 -- Get the no of assets in quote
751 FOR get_quote_assets_no_rec
752 IN get_quote_assets_no_csr(p_quote_id) LOOP
753 l_quote_assets_no := get_quote_assets_no_rec.no_of_quote_assets;
754 END LOOP;
755
756 -- Get the no of assets in contract - non terminated
757 FOR get_contract_assets_no_rec
758 IN get_contract_assets_no_csr(p_contract_id) LOOP
759 l_contract_assets_no := get_contract_assets_no_rec.no_of_contract_assets;
760 END LOOP;
761
762 -- If quoted assets no = contract assets no
763 IF l_quote_assets_no = l_contract_assets_no THEN
764
765 -- For Each Quote Asset Check Corresponding contract asset quantity
766 -- If do not match then l_true_partial_quote = 'Y'
767 FOR get_asset_qty_rec
768 IN get_asset_qty_csr(p_quote_id) LOOP
769
770 -- Should not have any upgrade issues (when asset_qty
771 -- and quote_qty are not filled) In those cases its always
772 -- full_termination and wont get inside below IF
773
774 -- If asset_qty > quote_qty then TRUE PARTIAL
775 IF get_asset_qty_rec.asset_quantity > get_asset_qty_rec.quote_quantity THEN
776
777 l_true_partial_quote := 'Y';
778
779 END IF;
780
781 END LOOP;
782
783 ELSE -- assets number for quote and contract do not match -- so TRUE PARTIAL
784
785 l_true_partial_quote := 'Y';
786
787 END IF;
788 IF (is_debug_statement_on) THEN
789 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning l_true_partial_quote: '||l_true_partial_quote);
790 END IF;
791 IF (is_debug_procedure_on) THEN
792 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
793 END IF;
794
795 RETURN l_true_partial_quote;
796
797 EXCEPTION
798
799 WHEN OTHERS THEN
800 IF (is_debug_exception_on) THEN
801 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
802 || sqlcode || ' , SQLERRM : ' || sqlerrm);
803 END IF;
804
805 OKL_API.set_message(
806 p_app_name => OKC_API.G_APP_NAME,
807 p_msg_name => G_UNEXPECTED_ERROR,
808 p_token1 => G_SQLCODE_TOKEN,
809 p_token1_value => SQLCODE,
810 p_token2 => G_SQLERRM_TOKEN,
811 p_token2_value => SQLERRM);
812
813 RETURN NULL;
814
815 END check_true_partial_quote;
816
817 -- Start of comments
818 --
819 -- Function Name : check_true_partial_quote.
820 -- Description : Returns Y if TRUE partial quote(some more assets); else N or NULL
821 -- Business Rules : CALLED FROM OKL_AM_LEASE_LOAN_TRMNT_PVT
822 -- Parameters :
823 -- Version : 1.0
824 -- History : rmunjulu bug 4997075
825 --
826 -- End of comments
827 FUNCTION check_true_partial_quote_yn(
828 p_quote_id IN NUMBER,
829 p_contract_id IN NUMBER) RETURN VARCHAR2 IS
830
831 -- Get the quote assets details
832 CURSOR get_asset_qty_csr (p_qte_id IN NUMBER) IS
833 SELECT TQL.kle_id,
834 TQL.asset_quantity,
835 TQL.quote_quantity
836 FROM OKL_TXL_QUOTE_LINES_B TQL
837 WHERE TQL.qlt_code = 'AMCFIA'
838 AND TQL.qte_id = p_qte_id;
839
840 -- get any additional assets on contract which are non terminated and not in quote
841 CURSOR get_additional_assets_csr (p_khr_id IN NUMBER, p_qte_id IN NUMBER) IS
842 SELECT 1
843 FROM OKC_K_LINES_B CLE,
844 OKC_LINE_STYLES_B LSE,
845 OKC_K_HEADERS_B CHR
846 WHERE CLE.lse_id = LSE.id
847 AND LSE.lty_code = 'FREE_FORM1'
848 AND CLE.sts_code = CHR.sts_code
849 AND CHR.id = CLE.dnz_chr_id
850 AND CLE.dnz_chr_id = p_khr_id
851 AND CLE.id NOT IN
852 (SELECT kle_id
853 FROM OKL_TXL_QUOTE_LINES_B
854 WHERE qte_id = p_qte_id
855 AND qlt_code = 'AMCFIA');
856
857 l_quote_assets_no NUMBER;
858 l_contract_assets_no NUMBER;
859 l_true_partial_quote VARCHAR2(1) := 'N';
860 l_additional_assets_yn VARCHAR2(3);
861 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_true_partial_quote_yn';
862 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
863 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
864 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
865 BEGIN
866 IF (is_debug_procedure_on) THEN
867 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
868 END IF;
869 IF (is_debug_statement_on) THEN
870 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_quote_id: '|| p_quote_id);
871 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_id: '|| p_contract_id);
872 END IF;
873
874 -- Check if any more assets exist in contract which have not been quoted
875 FOR get_additional_assets_rec IN get_additional_assets_csr (p_contract_id,p_quote_id) LOOP
876 l_additional_assets_yn := 'Y';
877 END LOOP;
878
879 IF nvl(l_additional_assets_yn,'N') = 'N' THEN -- no more assets exist in contract which has not been quoted
880
881 -- For Each Quote Asset Check Corresponding contract asset quantity
882 -- If do not match then l_true_partial_quote = 'Y'
883 FOR get_asset_qty_rec
884 IN get_asset_qty_csr(p_quote_id) LOOP
885
886 -- Should not have any upgrade issues (when asset_qty
887 -- and quote_qty are not filled) In those cases its always
888 -- full_termination and wont get inside below IF
889
890 -- If asset_qty > quote_qty then TRUE PARTIAL
891 IF get_asset_qty_rec.asset_quantity > get_asset_qty_rec.quote_quantity THEN
892
893 l_true_partial_quote := 'Y';
894
895 END IF;
896
897 END LOOP;
898
899 ELSE -- some more assets exist for the contract which have not been quoted so - TRUE PARTIAL
900
901 l_true_partial_quote := 'Y';
902
903 END IF;
904 IF (is_debug_procedure_on) THEN
905 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
906 END IF;
907 IF (is_debug_statement_on) THEN
908 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning l_true_partial_quote: '||l_true_partial_quote);
909 END IF;
910
911 RETURN l_true_partial_quote;
912
913 EXCEPTION
914
915 WHEN OTHERS THEN
916 IF (is_debug_exception_on) THEN
917 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
918 || sqlcode || ' , SQLERRM : ' || sqlerrm);
919 END IF;
920
921 OKL_API.set_message(
922 p_app_name => OKC_API.G_APP_NAME,
923 p_msg_name => G_UNEXPECTED_ERROR,
924 p_token1 => G_SQLCODE_TOKEN,
925 p_token1_value => SQLCODE,
926 p_token2 => G_SQLERRM_TOKEN,
927 p_token2_value => SQLERRM);
928
929 RETURN NULL;
930
931 END check_true_partial_quote_yn;
932
933
934 -- Start of comments
935 --
936 -- Function Name : check_service_k_int_needed.
937 -- Description : Returns Y if Service Intergration needed; else N or NULL
938 -- Business Rules : Called from OKL_AM_LEASE_LOAN_TRMNT_PVT
939 -- Parameters :
940 -- Version : 1.0
941 -- History : RMUNJULU 3061751 27-AUG-2003 Created
942 -- RMUNJULU 05-JAN-04 SERVICE K UPDATES
943 --
944 -- End of comments
945 FUNCTION check_service_k_int_needed(
946 p_term_rec IN term_rec_type DEFAULT G_TERM_REC_EMPTY,
947 p_tcnv_rec IN tcnv_rec_type DEFAULT G_TCNV_REC_EMPTY,
948 p_partial_yn IN VARCHAR2 DEFAULT NULL,
949 p_asset_id IN NUMBER DEFAULT NULL,
950 p_source IN VARCHAR2) RETURN VARCHAR2 IS
951
952 l_service_integration_needed VARCHAR2(1) := 'N';
953 l_true_partial_quote VARCHAR2(1) := 'N';
954 l_oks_chr_id NUMBER;
955 l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
956
957 l_api_version CONSTANT NUMBER := 1;
958 l_msg_count NUMBER := OKL_API.G_MISS_NUM;
959 l_msg_data VARCHAR2(2000);
960 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_service_k_int_needed';
961 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
962 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
963 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
964
965 BEGIN
966 IF (is_debug_procedure_on) THEN
967 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
968 END IF;
969 IF (is_debug_statement_on) THEN
970 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_partial_yn: '|| p_partial_yn);
971 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_asset_id: '|| p_asset_id);
972 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_source: '|| p_source);
973 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);
974 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);
975 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);
976 END IF;
977
978 -- IF SOURCE = 'TERMINATION'
979 -- If Recycle YN = 'N' AND Linked Lease AND Full Termination THEN
980 -- RETURN Y
981 -- End if ;
982 -- IF SOURCE = 'DISPOSE'
983 -- If linked lease THEN
984 -- RETURN Y
985 -- IF SOURCE = 'RETURN'
986 -- If linked lease THEN
987 -- RETURN Y
988
989 -- Check Source
990 IF p_source = 'TERMINATION' THEN -- Termination, so p_term_rec, p_tcnv_rec and p_partial_yn will be filled
991
992 -- RMUNJULU 05-JAN-04 Removed condition to check only if non recycle as this can be done in recycle too
993 -- we now check that the contract is terminated to say that service int is needed
994 -- since this procedure is called before the termination we cannot check contract is terminated or not here
995 -- so we will check that in service_k_intergration procedure.
996 -- If Recycle_YN = N
997 -- IF NVL(p_tcnv_rec.tmt_recycle_yn,'N') = 'N'
998 -- OR p_tcnv_rec.tmt_recycle_yn = OKL_API.G_MISS_CHAR THEN
999
1000 -- Get the linked lease details
1001 IF (is_debug_statement_on) THEN
1002 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_SERVICE_INTEGRATION_PVT.check_service_link');
1003 END IF;
1004 OKL_SERVICE_INTEGRATION_PVT.check_service_link (
1005 p_api_version => l_api_version,
1006 p_init_msg_list => OKL_API.G_FALSE,
1007 x_return_status => l_return_status,
1008 x_msg_count => l_msg_count,
1009 x_msg_data => l_msg_data,
1010 p_lease_contract_id => p_term_rec.p_contract_id ,
1011 x_service_contract_id => l_oks_chr_id);
1012
1013 IF (is_debug_statement_on) THEN
1014 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_SERVICE_INTEGRATION_PVT.check_service_link , return status: ' || l_return_status);
1015 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_oks_chr_id: ' || l_oks_chr_id);
1016 END IF;
1017 -- If linked Lease
1018 IF l_return_status = OKL_API.G_RET_STS_SUCCESS
1019 AND l_oks_chr_id IS NOT NULL THEN
1020
1021 -- Find if Full Termination
1022 IF p_partial_yn = 'Y' THEN
1023
1024 -- need to check if no more assets (This case p_quote_id is Always populated)
1025 l_true_partial_quote := check_true_partial_quote_yn( -- rmunjulu 4997075
1026 p_quote_id => p_term_rec.p_quote_id,
1027 p_contract_id => p_term_rec.p_contract_id);
1028 IF (is_debug_statement_on) THEN
1029 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called check_true_partial_quote_yn , l_true_partial_quote: ' || l_true_partial_quote);
1030 END IF;
1031
1032 ELSE -- Partial_YN = 'N'
1033
1034 l_true_partial_quote := 'N';
1035
1036 END IF;
1037
1038 -- If TRUE partial termination then
1039 IF l_true_partial_quote = 'N' THEN
1040
1041 l_service_integration_needed := 'Y';
1042
1043 END IF;
1044 ELSE -- Not Linked Lease
1045
1046 l_service_integration_needed := 'N';
1047
1048 END IF;
1049 -- ELSE -- Recycle YN = Y
1050
1051 -- l_service_integration_needed := 'N';
1052
1053 -- END IF;
1054 ELSIF p_source IN ('DISPOSE','RETURN') THEN -- DISPOSE or RETURN, so p_asset_id will be filled
1055
1056 -- Get the linked lease details -- ***
1057 --OKL_SERVICE_INTEGRATION_PVT.check_service_link (
1058 check_service_link(
1059 p_api_version => l_api_version,
1060 p_init_msg_list => OKL_API.G_FALSE,
1061 x_return_status => l_return_status,
1062 x_msg_count => l_msg_count,
1063 x_msg_data => l_msg_data,
1064 p_lease_asset_id => p_asset_id ,
1065 x_service_contract_id => l_oks_chr_id);
1066 IF (is_debug_statement_on) THEN
1067 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called check_service_link , l_oks_chr_id: ' || l_oks_chr_id);
1068 END IF;
1069
1070 -- If linked Lease
1071 IF l_return_status = OKL_API.G_RET_STS_SUCCESS
1072 AND l_oks_chr_id IS NOT NULL THEN
1073
1074 l_service_integration_needed := 'Y';
1075
1076 ELSE -- Not linked lease -- no integration needed
1077
1078 l_service_integration_needed := 'N';
1079
1080 END IF;
1081
1082 END IF;
1083 IF (is_debug_procedure_on) THEN
1084 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
1085 END IF;
1086
1087 IF (is_debug_statement_on) THEN
1088 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning l_service_integration_needed: '||l_service_integration_needed);
1089 END IF;
1090 -- Set the RETURN value
1091 RETURN l_service_integration_needed;
1092
1093 EXCEPTION
1094
1095 WHEN OTHERS THEN
1096 IF (is_debug_exception_on) THEN
1097 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
1098 || sqlcode || ' , SQLERRM : ' || sqlerrm);
1099 END IF;
1100
1101 OKL_API.set_message(
1102 p_app_name => OKC_API.G_APP_NAME,
1103 p_msg_name => G_UNEXPECTED_ERROR,
1104 p_token1 => G_SQLCODE_TOKEN,
1105 p_token1_value => SQLCODE,
1106 p_token2 => G_SQLERRM_TOKEN,
1107 p_token2_value => SQLERRM);
1108
1109 RETURN NULL;
1110
1111 END check_service_k_int_needed;
1112
1113 -- Start of comments
1114 --
1115 -- Procedure Name : service_k_integration
1116 -- Desciption : Do the service contract integration steps (checks + notifications)
1117 -- Business Rules : Called from OKL_AM_LEASE_LOAN_TRMNT_PVT, OKL_AM_ASSET_DISPOSE_PVT, OKL_AM_ASSET_RETURN_PVT
1118 -- Parameters :
1119 -- Version : 1.0
1120 -- History : RMUNJULU 3061751 27-AUG-2003 Created
1121 -- : RMUNJULU 3061751 14-OCT-2003 Added code to get delink_yn from table
1122 -- : RMUNJULU 3061751 16-OCT-2003 Changed code to get delink_yn from OKL_SYSTEM_PARAMS_ALL_V
1123 -- : RMUNJULU 23-DEC-03 SERVICE K UPDATES
1124 -- : RMUNJULU 05-JAN-04 SERVICE K UPDATES
1125 --
1126 -- End of comments
1127 PROCEDURE service_k_integration(
1128 p_term_rec IN term_rec_type DEFAULT G_TERM_REC_EMPTY,
1129 p_transaction_id IN NUMBER DEFAULT NULL,
1130 p_transaction_date IN DATE DEFAULT NULL,
1131 p_source IN VARCHAR2,
1132 p_service_integration_needed IN VARCHAR2) IS
1133
1134 -- Get the quote acceptance date
1135 CURSOR get_quote_acc_dt_csr (p_qte_id IN NUMBER) IS
1136 SELECT QTE.date_accepted
1137 FROM OKL_TRX_QUOTES_B QTE
1138 WHERE QTE.id = p_qte_id;
1139
1140 -- Get the delink_yn value set for the org
1141 CURSOR get_setup_values_csr IS
1142 SELECT SYP.delink_yn
1143 FROM OKL_SYSTEM_PARAMS SYP;
1144
1145 l_delink_needed VARCHAR2(1) := 'N';
1146 l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1147 l_wf_source VARCHAR2(20);
1148 l_termination_date DATE;
1149 l_quote_id NUMBER := NULL;
1150 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'service_k_integration';
1151 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1152 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1153 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1154
1155 l_api_version CONSTANT NUMBER := 1;
1156 l_msg_count NUMBER := OKL_API.G_MISS_NUM;
1157 l_msg_data VARCHAR2(2000);
1158
1159 -- RMUNJULU 23-DEC-03 SERVICE K UPDATES
1160 l_oks_chr_id NUMBER;
1161
1162 -- RMUNJULU 05-JAN-04 new cursor to get the contract status
1163 -- Get the sts_code for the contract
1164 CURSOR get_k_sts_csr (p_chr_id IN NUMBER) IS
1165 SELECT CHR.sts_code
1166 FROM OKC_K_HEADERS_B CHR
1167 WHERE CHR.id = p_chr_id;
1168
1169 -- RMUNJULU 05-JAN-04 Added variable
1170 l_sts_code OKC_K_HEADERS_B.sts_code%TYPE;
1171
1172 BEGIN
1173 IF (is_debug_procedure_on) THEN
1174 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1175 END IF;
1176 IF (is_debug_statement_on) THEN
1177 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_transaction_id: '|| p_transaction_id);
1178 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_transaction_date: '|| p_transaction_date);
1179 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_source: '|| p_source);
1180 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_service_integration_needed: '|| p_service_integration_needed);
1181 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);
1182 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);
1183 END IF;
1184
1185 -- If Service Integration Needed
1186 IF NVL(p_service_integration_needed,'N') = 'Y' THEN
1187
1188 -- Request from Termination
1189 IF p_source = 'TERMINATION' THEN
1190
1191 -- p_term_rec is passed in this case
1192
1193 -- RMUNJULU 05-JAN-04 get contract status
1194 FOR get_k_sts_rec IN get_k_sts_csr (p_term_rec.p_contract_id) LOOP
1195 l_sts_code := get_k_sts_rec.sts_code;
1196 END LOOP;
1197
1198 -- RMUNJULU 05-JAN-04 added condition that contract is terminated/expired
1199 -- only then do delink (if needed) and notifications
1200 IF l_sts_code IN ('TERMINATED','EXPIRED' ) THEN
1201
1202 -- RMUNJULU 3061751 14-OCT-2003 Added code to get delink_yn value
1203 -- Check from setup if de-link needed
1204 FOR get_setup_values_rec IN get_setup_values_csr LOOP
1205 l_delink_needed := get_setup_values_rec.delink_yn;
1206 END LOOP;
1207
1208 -- If de-link needed
1209 IF NVL(l_delink_needed,'N') = 'Y' THEN
1210
1211 -- RMUNJULU 23-DEC-03 SERVICE K UPDATES
1212 -- Get the OKS contract ID before delink since after delink we loose that info
1213 IF (is_debug_statement_on) THEN
1214 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_SERVICE_INTEGRATION_PVT.check_service_link');
1215 END IF;
1216 OKL_SERVICE_INTEGRATION_PVT.check_service_link (
1217 p_api_version => l_api_version,
1218 p_init_msg_list => OKL_API.G_FALSE,
1219 x_return_status => l_return_status,
1220 x_msg_count => l_msg_count,
1221 x_msg_data => l_msg_data,
1222 p_lease_contract_id => p_term_rec.p_contract_id ,
1223 x_service_contract_id => l_oks_chr_id);
1224 IF (is_debug_statement_on) THEN
1225 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_SERVICE_INTEGRATION_PVT.check_service_link , return status: ' || l_return_status);
1226 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_oks_chr_id: ' || l_oks_chr_id);
1227 END IF;
1228
1229 IF (is_debug_statement_on) THEN
1230 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_SERVICE_INTEGRATION_PVT.delink_service_contract');
1231 END IF;
1232 -- De-link Lease from Service
1233 OKL_SERVICE_INTEGRATION_PVT.delink_service_contract(
1234 p_api_version => l_api_version,
1235 p_init_msg_list => OKL_API.G_FALSE,
1236 x_return_status => l_return_status,
1237 x_msg_count => l_msg_count,
1238 x_msg_data => l_msg_data,
1239 p_okl_chr_id => p_term_rec.p_contract_id);
1240 IF (is_debug_statement_on) THEN
1241 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_SERVICE_INTEGRATION_PVT.delink_service_contract , return status: ' || l_return_status);
1242 END IF;
1243 -- If De-link successful
1244 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN -- SUCCESS
1245 l_wf_source := 'SUCCESS';
1246 ELSE -- De-link error -- ERROR
1247 l_wf_source := 'ERROR';
1248 END IF;
1249 ELSE -- de-link not needed -- TERMINATION
1250 l_wf_source := 'TERMINATION';
1251 END IF;
1252
1253 -- Set the termination date
1254 -- If Quote Exists then Termination date = Acceptance Date
1255 -- Else Termination date = Sysdate (ideal - do this after termination - get trn date)
1256 IF p_term_rec.p_quote_id IS NOT NULL
1257 AND p_term_rec.p_quote_id <> OKL_API.G_MISS_NUM THEN
1258
1259 -- Get the quote acceptance date
1260 FOR get_quote_acc_dt_rec
1261 IN get_quote_acc_dt_csr(p_term_rec.p_quote_id) LOOP
1262
1263 l_termination_date := get_quote_acc_dt_rec.date_accepted;
1264
1265 END LOOP;
1266 ELSE -- No quote get trn date
1267
1268 -- Get the TRN DATE, FOR NOW TRN DATE IS NOT AVAILABLE, SO SYSDATE
1269 l_termination_date := SYSDATE;
1270 END IF;
1271
1272 -- Set the Quote Id if termination request is from Quote
1273 IF p_term_rec.p_quote_id IS NOT NULL
1274 AND p_term_rec.p_quote_id <> OKL_API.G_MISS_NUM THEN
1275
1276 l_quote_id := p_term_rec.p_quote_id;
1277
1278 END IF;
1279
1280 -- Raise event to launch the service k integration workflow
1281 IF (is_debug_statement_on) THEN
1282 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1283 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'p_term_rec.p_contract_id : ' || p_term_rec.p_contract_id);
1284 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_wf_source : ' || l_wf_source);
1285 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_quote_id : ' || l_quote_id);
1286 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_oks_chr_id : ' || l_oks_chr_id);
1287 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_termination_date : ' || l_termination_date);
1288 END IF;
1289 OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event(
1290 p_transaction_id => p_term_rec.p_contract_id,
1291 p_source => l_wf_source,
1292 p_quote_id => l_quote_id,
1293 p_oks_contract => l_oks_chr_id, -- RMUNJULU 23-DEC-03 SERVICE K UPDATES Pass OKS contract to WF
1294 p_transaction_date => l_termination_date);
1295 IF (is_debug_statement_on) THEN
1296 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1297 END IF;
1298
1299 END IF;
1300 ELSIF p_source = 'RETURN' THEN -- Request from Asset Return
1301
1302 -- p_transaction_id and p_transaction_date will be passed
1303 -- p_transaction_id is ASSET_ID in this case
1304 -- p_transaction_date is RETURN DATE in this case
1305
1306 l_wf_source := 'RETURN';
1307
1308 IF (is_debug_statement_on) THEN
1309 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1310 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'p_transaction_id : ' || p_transaction_id);
1311 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_wf_source : ' || l_wf_source);
1312 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'p_transaction_date : ' || p_transaction_date);
1313 END IF;
1314 -- Raise event to launch the service k integration workflow
1315 OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event(
1316 p_transaction_id => p_transaction_id,
1317 p_source => l_wf_source,
1318 p_transaction_date => p_transaction_date);
1319 IF (is_debug_statement_on) THEN
1320 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1321 END IF;
1322
1323
1324 ELSIF p_source = 'DISPOSE_1' THEN -- Request from Asset Dispose_1
1325
1326 -- DISPOSE_1 when request from Term_with_purchase_Qte/Scrapped/Repurchase_Qte
1327 -- procedure of Asset_Dispose API. Asset is Sold/Scrapped/Sold in these cases.
1328
1329 -- p_transaction_id and p_transaction_date will be passed
1330 -- p_transaction_id is ASSET_ID in this case
1331 -- p_transaction_date is DISPOSE DATE in this case
1332
1333 l_wf_source := 'DISPOSE';
1334
1335 IF (is_debug_statement_on) THEN
1336 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1337 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'p_transaction_id : ' || p_transaction_id);
1338 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_wf_source : ' || l_wf_source);
1339 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'p_transaction_date : ' || p_transaction_date);
1340 END IF;
1341 -- Raise event to launch the service k integration workflow
1342 OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event(
1343 p_transaction_id => p_transaction_id,
1344 p_source => l_wf_source,
1345 p_transaction_date => p_transaction_date);
1346 IF (is_debug_statement_on) THEN
1347 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1348 END IF;
1349
1350 ELSIF p_source = 'DISPOSE_2' THEN -- Request from Asset Dispose_2
1351
1352 -- DISPOSE_2 when request from Remarketing Dispose procedure of
1353 -- Asset_Dispose API. Asset is Sold in this case.
1354
1355 -- p_transaction_id and p_transaction_date will be passed
1356 -- p_transaction_id is ASSET_ID in this case
1357 -- p_transaction_date is DISPOSE DATE in this case
1358
1359 l_wf_source := 'DISPOSE';
1360 IF (is_debug_statement_on) THEN
1361 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1362 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'p_transaction_id : ' || p_transaction_id);
1363 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_wf_source : ' || l_wf_source);
1364 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'p_transaction_date : ' || p_transaction_date);
1365 END IF;
1366 -- Raise event to launch the service k integration workflow
1367 OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event(
1368 p_transaction_id => p_transaction_id,
1369 p_source => l_wf_source,
1370 p_transaction_date => p_transaction_date);
1371 IF (is_debug_statement_on) THEN
1372 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_SERVICE_K_INT_WF.raise_service_k_int_event');
1373 END IF;
1374 END IF;
1375 END IF;
1376 IF (is_debug_procedure_on) THEN
1377 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
1378 END IF;
1379
1380 EXCEPTION
1381
1382 WHEN OTHERS THEN
1383 IF (is_debug_exception_on) THEN
1384 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
1385 || sqlcode || ' , SQLERRM : ' || sqlerrm);
1386 END IF;
1387
1388 OKL_API.set_message(
1389 p_app_name => OKC_API.G_APP_NAME,
1390 p_msg_name => G_UNEXPECTED_ERROR,
1391 p_token1 => G_SQLCODE_TOKEN,
1392 p_token1_value => SQLCODE,
1393 p_token2 => G_SQLERRM_TOKEN,
1394 p_token2_value => SQLERRM);
1395
1396 END service_k_integration;
1397
1398 -- Start of comments
1399 --
1400 -- Function Name : check_billing_done.
1401 -- Description : Returns 'Y' if BILLING DONE, Else 'N' or NULL
1402 -- Business Rules : Called from OKL_AM_TERMNT_QUOTE_PVT and OKL_AM_LEASE_TRMNT_PVT
1403 -- Parameters :
1404 -- Version : 1.0
1405 -- History : RMUNJULU 3061751 23-SEP-2003 Created
1406 -- RMUNJULU 05-JAN-04 SERVICE K UPDATES
1407 -- rmunjulu 6795295 modified the signature to pass
1408 -- p_rev_rec_method, p_int_cal_basis, p_oks_chr_id, p_sts_code
1409 --
1410 -- End of comments
1411 FUNCTION check_billing_done(
1412 p_contract_id IN NUMBER DEFAULT NULL,
1413 p_contract_number IN VARCHAR2 DEFAULT NULL,
1414 p_quote_number IN NUMBER DEFAULT NULL,
1415 p_trn_date IN DATE DEFAULT NULL,
1416 p_rev_rec_method IN VARCHAR2 DEFAULT NULL, -- rmunjulu 6795295
1417 p_int_cal_basis IN VARCHAR2 DEFAULT NULL, -- rmunjulu 6795295
1418 p_oks_chr_id IN NUMBER DEFAULT NULL, -- rmunjulu 6795295
1419 p_sts_code IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2 IS -- rmunjulu 6795295
1420
1421 l_service_contract VARCHAR2(300);
1422 l_oks_chr_id NUMBER;
1423 l_api_version NUMBER := 1;
1424 l_msg_count NUMBER := OKL_API.G_MISS_NUM;
1425 l_msg_data VARCHAR2(2000);
1426 l_bill_stat_tbl OKL_BILL_STATUS_PUB.bill_stat_tbl_type; -- RMUNJULU 05-JAN-04 BPD Changed the API name
1427 l_bill_counter NUMBER;
1428 l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1429 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_billing_done';
1430 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1431 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1432 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1433
1434 BEGIN
1435 IF (is_debug_procedure_on) THEN
1436 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1437 END IF;
1438 IF (is_debug_statement_on) THEN
1439 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_id: '|| p_contract_id);
1440 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_number: '|| p_contract_number);
1441 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_quote_number: '|| p_quote_number);
1442 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_trn_date: '|| p_trn_date);
1443 END IF;
1444
1445 -- Process Codes and Types decided on
1446 -- =================================================
1447 -- Process Type Process Code
1448 -- =================================================
1449 --1. RENTAL RENTAL
1450 --2. SERVICE SERVICE
1451 --3. VARIABLE INTEREST VARIABLE_INTEREST
1452 --4. UBB UBB
1453 --5. LATE CHARGES LATE_CHARGES
1454 --6. LATE INTEREST LATE_INTEREST
1455 --7. EVERGREEN EVERGREEN
1456 --=================================================
1457 -- Limitations --
1458 -- For now coded for RENTAL and SERVICE billing. Will need to expand once
1459 -- other billing checks introduced
1460
1461 -- BPD Now provides a API which tells till when the billing was done, use that
1462 -- RMUNJULU 05-JAN-04 BPD Changed the API name
1463 IF (is_debug_statement_on) THEN
1464 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_BILL_STATUS_PUB.billing_status');
1465 END IF;
1466 OKL_BILL_STATUS_PUB.billing_status(
1467 p_api_version => l_api_version,
1468 p_init_msg_list => OKL_API.G_FALSE,
1469 x_return_status => l_return_status,
1470 x_msg_count => l_msg_count,
1471 x_msg_data => l_msg_data,
1472 x_bill_stat_tbl => l_bill_stat_tbl,
1473 p_khr_id => p_contract_id,
1474 p_transaction_date => p_trn_date);
1475 IF (is_debug_statement_on) THEN
1476 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_BILL_STATUS_PUB.billing_status , return status: ' || l_return_status);
1477 END IF;
1478
1479 IF l_bill_stat_tbl.COUNT > 0 THEN -- [1]
1480
1481 -- loop thru the bill_statuses table
1482 FOR l_bill_counter IN l_bill_stat_tbl.FIRST..l_bill_stat_tbl.LAST LOOP
1483
1484 -- For regular stream billing ie RENT billing
1485 IF l_bill_stat_tbl(l_bill_counter).transaction_type = 'RENTAL' THEN --[2]
1486
1487 -- Raise error if the last_bill_date is NULL
1488 -- or if the last scheduled billing date > last billing run date
1489 IF l_bill_stat_tbl(l_bill_counter).last_bill_date IS NULL
1490 OR (TRUNC(l_bill_stat_tbl(l_bill_counter).last_schedule_bill_date) >
1491 TRUNC(l_bill_stat_tbl(l_bill_counter).last_bill_date)) THEN --[3]
1492
1493 -- If quote_number passed then give quote message
1494 IF p_quote_number IS NOT NULL THEN --[4]
1495
1496 IF p_rev_rec_method = 'STREAMS'
1497 AND p_int_cal_basis = 'FIXED'
1498 AND p_oks_chr_id IS NULL
1499 AND p_sts_code = 'BOOKED' THEN -- rmunjulu 6795295
1500
1501 -- message will be set in calling procedure
1502 RETURN 'N';
1503
1504 ELSE -- throw message and return N
1505
1506 -- Quote QUOTE_NUMBER can not be accepted. Please process Regular Stream billing
1507 -- for contract CONTRACT_NUMBER up to the quote effective from date.
1508 OKL_API.set_message (
1509 p_app_name => 'OKL',
1510 p_msg_name => 'OKL_AM_ACCEPT_TQ_RUN_BILLING',
1511 p_token1 => 'QUOTE_NUMBER',
1512 p_token1_value => p_quote_number,
1513 p_token2 => 'CONTRACT_NUMBER',
1514 p_token2_value => p_contract_number);
1515
1516 RETURN 'N';
1517 END IF;
1518 ELSE -- Give contract message
1519
1520 -- Contract CONTRACT_NUMBER can not be terminated. Please process Regular Stream Billing
1521 -- for contract up to the termination date TERMINATION_DATE.
1522 OKL_API.set_message (
1523 p_app_name => 'OKL',
1524 p_msg_name => 'OKL_AM_RUN_BILLING',
1525 p_token1 => 'CONTRACT_NUMBER',
1526 p_token1_value => p_contract_number,
1527 p_token2 => 'TERMINATION_DATE',
1528 p_token2_value => p_trn_date);
1529
1530 RETURN 'N';
1531
1532 END IF; --[-4]
1533 END IF; --[-3]
1534 END IF; --[-2]
1535 END LOOP;
1536 END IF; --[-1]
1537
1538 IF (is_debug_statement_on) THEN
1539 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_SERVICE_INTEGRATION_PVT.check_service_link');
1540 END IF;
1541 -- Check if linked service contract exists for the quoted contract
1542 OKL_SERVICE_INTEGRATION_PVT.check_service_link (
1543 p_api_version => l_api_version,
1544 p_init_msg_list => OKL_API.G_FALSE,
1545 x_return_status => l_return_status,
1546 x_msg_count => l_msg_count,
1547 x_msg_data => l_msg_data,
1548 p_lease_contract_id => p_contract_id,
1549 x_service_contract_id => l_oks_chr_id);
1550 IF (is_debug_statement_on) THEN
1551 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_SERVICE_INTEGRATION_PVT.check_service_link , return status: ' || l_return_status);
1552 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_oks_chr_id : ' || l_oks_chr_id);
1553 END IF;
1554
1555 -- If linked Lease
1556 IF l_return_status = OKL_API.G_RET_STS_SUCCESS
1557 AND l_oks_chr_id IS NOT NULL THEN --[1]
1558
1559 -- Check if OKS Billing Done
1560 IF l_bill_stat_tbl.COUNT > 0 THEN --[2]
1561
1562 -- loop thru the bill_statuses table
1563 FOR l_bill_counter IN l_bill_stat_tbl.FIRST..l_bill_stat_tbl.LAST LOOP
1564
1565 -- For Service billing
1566 IF l_bill_stat_tbl(l_bill_counter).transaction_type = 'SERVICE' THEN --[3]
1567
1568 -- Raise error if the last_bill_date is NULL
1569 -- or if the last scheduled billing date > last billing run date
1570 IF l_bill_stat_tbl(l_bill_counter).last_bill_date IS NULL
1571 OR (TRUNC(l_bill_stat_tbl(l_bill_counter).last_schedule_bill_date) >
1572 TRUNC(l_bill_stat_tbl(l_bill_counter).last_bill_date)) THEN --[4]
1573
1574 -- If quote_number passed then give quote message
1575 IF p_quote_number IS NOT NULL THEN --[5]
1576
1577 -- Quote QUOTE_NUMBER can not be accepted. Please process service billing
1578 -- for contract CONTRACT_NUMBER up to the quote effective from date.
1579 OKL_API.set_message (
1580 p_app_name => 'OKL',
1581 p_msg_name => 'OKL_AM_ACCEPT_TQ_RUN_SRV_BILL',
1582 p_token1 => 'QUOTE_NUMBER',
1583 p_token1_value => p_quote_number,
1584 p_token2 => 'CONTRACT_NUMBER',
1585 p_token2_value => p_contract_number);
1586
1587 RETURN 'N';
1588
1589 ELSE -- Give contract message
1590
1591 -- Contract CONTRACT_NUMBER can not be terminated. Please process
1592 -- service billing for contract up to the termination date TERMINATION_DATE.
1593 OKL_API.set_message (
1594 p_app_name => 'OKL',
1595 p_msg_name => 'OKL_AM_RUN_SRV_BILLING',
1596 p_token1 => 'CONTRACT_NUMBER',
1597 p_token1_value => p_contract_number,
1598 p_token2 => 'TERMINATION_DATE',
1599 p_token2_value => p_trn_date);
1600
1601 RETURN 'N';
1602
1603 END IF; --[-5]
1604 END IF; --[-4]
1605 END IF; --[-3]
1606 END LOOP;
1607 END IF; --[-2]
1608 END IF; --[-1]
1609 IF (is_debug_procedure_on) THEN
1610 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
1611 END IF;
1612 IF (is_debug_statement_on) THEN
1613 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning Y');
1614 END IF;
1615
1616 RETURN 'Y';
1617
1618 EXCEPTION
1619
1620 WHEN OTHERS THEN
1621 IF (is_debug_exception_on) THEN
1622 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
1623 || sqlcode || ' , SQLERRM : ' || sqlerrm);
1624 END IF;
1625
1626 OKL_API.set_message(
1627 p_app_name => OKC_API.G_APP_NAME,
1628 p_msg_name => G_UNEXPECTED_ERROR,
1629 p_token1 => G_SQLCODE_TOKEN,
1630 p_token1_value => SQLCODE,
1631 p_token2 => G_SQLERRM_TOKEN,
1632 p_token2_value => SQLERRM);
1633
1634 RETURN NULL;
1635
1636 END check_billing_done;
1637
1638
1639 -- Start of comments
1640 --
1641 -- Function Name : check_stream_billing_done.
1642 -- Description : Returns 'Y' if STREAM BASED BILLING DONE, Else 'N' or NULL
1643 -- Business Rules : Called from OKL_AM_TERMNT_QUOTE_PVT
1644 -- Parameters :
1645 -- Version : 1.0
1646 -- History : RMUNJULU bug 6736148 09-JAN-2008 Created
1647 --
1648 -- End of comments
1649 FUNCTION check_stream_billing_done(
1650 p_contract_id IN NUMBER DEFAULT NULL,
1651 p_contract_number IN VARCHAR2 DEFAULT NULL,
1652 p_quote_number IN NUMBER DEFAULT NULL,
1653 p_trn_date IN DATE DEFAULT NULL) RETURN VARCHAR2 IS
1654
1655 l_service_contract VARCHAR2(300);
1656 l_oks_chr_id NUMBER;
1657 l_api_version NUMBER := 1;
1658 l_msg_count NUMBER := OKL_API.G_MISS_NUM;
1659 l_msg_data VARCHAR2(2000);
1660 l_bill_stat_tbl OKL_BILL_STATUS_PUB.bill_stat_tbl_type;
1661 l_bill_counter NUMBER;
1662 l_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1663 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_stream_billing_done';
1664 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1665 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1666 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1667
1668 BEGIN
1669 IF (is_debug_procedure_on) THEN
1670 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1671 END IF;
1672 IF (is_debug_statement_on) THEN
1673 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_id: '|| p_contract_id);
1674 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_number: '|| p_contract_number);
1675 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_quote_number: '|| p_quote_number);
1676 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_trn_date: '|| p_trn_date);
1677 END IF;
1678
1679 IF (is_debug_statement_on) THEN
1680 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_BILL_STATUS_PUB.billing_status');
1681 END IF;
1682 OKL_BILL_STATUS_PUB.billing_status(
1683 p_api_version => l_api_version,
1684 p_init_msg_list => OKL_API.G_FALSE,
1685 x_return_status => l_return_status,
1686 x_msg_count => l_msg_count,
1687 x_msg_data => l_msg_data,
1688 x_bill_stat_tbl => l_bill_stat_tbl,
1689 p_khr_id => p_contract_id,
1690 p_transaction_date => p_trn_date);
1691 IF (is_debug_statement_on) THEN
1692 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_BILL_STATUS_PUB.billing_status , return status: ' || l_return_status);
1693 END IF;
1694
1695 IF l_bill_stat_tbl.COUNT > 0 THEN -- [1]
1696
1697 -- loop thru the bill_statuses table
1698 FOR l_bill_counter IN l_bill_stat_tbl.FIRST..l_bill_stat_tbl.LAST LOOP
1699
1700 -- For regular stream billing ie RENT billing
1701 IF l_bill_stat_tbl(l_bill_counter).transaction_type = 'RENTAL' THEN --[2]
1702
1703 -- Raise error if the last_bill_date is NULL
1704 -- or if the last scheduled billing date > last billing run date
1705 IF l_bill_stat_tbl(l_bill_counter).last_bill_date IS NULL
1706 OR (TRUNC(l_bill_stat_tbl(l_bill_counter).last_schedule_bill_date) >
1707 TRUNC(l_bill_stat_tbl(l_bill_counter).last_bill_date)) THEN --[3]
1708
1709 -- If quote_number passed then give quote message
1710 IF p_quote_number IS NOT NULL THEN --[4]
1711
1712 RETURN 'N';
1713
1714 ELSE -- Give contract message
1715
1716 RETURN 'N';
1717
1718 END IF; --[-4]
1719 END IF; --[-3]
1720 END IF; --[-2]
1721 END LOOP;
1722 END IF; --[-1]
1723
1724 IF (is_debug_procedure_on) THEN
1725 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
1726 END IF;
1727 IF (is_debug_statement_on) THEN
1728 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning Y');
1729 END IF;
1730
1731 RETURN 'Y';
1732
1733 EXCEPTION
1734
1735 WHEN OTHERS THEN
1736 IF (is_debug_exception_on) THEN
1737 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
1738 || sqlcode || ' , SQLERRM : ' || sqlerrm);
1739 END IF;
1740
1741 OKL_API.set_message(
1742 p_app_name => OKC_API.G_APP_NAME,
1743 p_msg_name => G_UNEXPECTED_ERROR,
1744 p_token1 => G_SQLCODE_TOKEN,
1745 p_token1_value => SQLCODE,
1746 p_token2 => G_SQLERRM_TOKEN,
1747 p_token2_value => SQLERRM);
1748
1749 RETURN NULL;
1750
1751 END check_stream_billing_done;
1752
1753 -- +++++++++++++++++++++ service contract integration end ++++++++++++++++++
1754
1755 -- Start of comments
1756 --
1757 -- Procedure Name : validate_contract
1758 -- Description : checks the validity of the contract
1759 -- Throws the proper error message if the contract found to be
1760 -- in the wrong status. p_control_flag decides which logic need
1761 -- to be applied for checking contract status
1762 -- The various controls this cater to are
1763 -- ------------------------------------------------------------
1764 -- P_Control_Flag value When Checking from
1765 -- ------------------------------------------------------------
1766 -- 1. CONTRACT_TERMINATE_SCRN -- Request termination screen
1767 -- 2. TRMNT_QUOTE_CREATE -- Termination quote create
1768 -- 3. RESTR_QUOTE_CREATE -- Resturcture quote create
1769 -- 4. REPUR_QUOTE_CREATE -- Repurchase quote create
1770 -- 5. TRMNT_QUOTE_UPDATE -- Termination quote update
1771 -- 6. RESTR_QUOTE_UPDATE -- Resturcture quote update
1772 -- 7. REPUR_QUOTE_UPDATE -- Repurchase quote update
1773 -- 8. BATCH_PROCESS -- Batch process
1774 -- 9. ASSET_RETURN_CREATE -- Asset return create
1775 -- 10.ASSET_RETURN_UPDATE -- Asset return update
1776 -- 11.BATCH_PROCESS_CHR -- Single request from batch
1777 -- Business Rules :
1778 -- Parameters : api version, init msg list, return status, msg count,
1779 -- msg data, contract id, control flag, status code
1780 -- Version : 1.0
1781 -- History : RMUNJULU -- 11-DEC-02: Bug # 2484327 : Added code in
1782 -- TRMNT_QUOTE_CREATE condition to check for termination trns
1783 -- : RMUNJULU 18-DEC-02 2484327. Added code in CONTRACT_TERMINATE_SCRN
1784 -- condition to check for term trn and if no accepted qte
1785 -- : RMUNJULU 2724951 02-JAN-02 Changed the if for checks in
1786 -- condition CONTRACT_TERMINATE_SCRN
1787 -- : RMUNJULU 25-FEB-03 2818866 Changed code for condition
1788 -- BATCH_PROCESS removed contract status check
1789 -- : RMUNJULU 06-MAR-03 Performance Fix Replaced K_HDR_FULL
1790 -- End of comments
1791
1792 PROCEDURE validate_contract(
1793 p_api_version IN NUMBER,
1794 p_init_msg_list IN VARCHAR2,
1795 x_return_status OUT NOCOPY VARCHAR2,
1796 x_msg_count OUT NOCOPY NUMBER,
1797 x_msg_data OUT NOCOPY VARCHAR2,
1798 p_contract_id IN NUMBER,
1799 p_control_flag IN VARCHAR2,
1800 x_contract_status OUT NOCOPY VARCHAR2) IS
1801
1802 -- Cursor to get the contract details
1803 -- RMUNJULU 06-MAR-03 Performance Fix Replaced K_HDR_FULL
1804 CURSOR k_header_csr IS
1805 SELECT chr.id,
1806 chr.contract_number,
1807 chr.template_yn,
1808 chr.end_date,
1809 khr.deal_type,
1810 chr.scs_code,
1811 chr.sts_code,
1812 sts.meaning
1813 FROM OKC_K_HEADERS_V chr,
1814 OKC_STATUSES_V sts,
1815 OKL_K_HEADERS_V khr
1816 WHERE chr.id = p_contract_id
1817 AND chr.sts_code = sts.code
1818 AND chr.id = khr.id;
1819
1820 -- This cursor is used by the Create Asset Return process to make
1821 -- sure that the contract has a logical post
1822 -- booking status.
1823 CURSOR k_contractstatus_csr IS
1824 SELECT khr.contract_number, sts.ste_code, sts.meaning
1825 FROM okc_k_headers_b khr, okc_statuses_v sts
1826 WHERE khr.sts_code = sts.code
1827 AND khr.id = p_contract_id;
1828
1829 -- Cursor to check if contract locked
1830 CURSOR k_locks_csr IS
1831 SELECT 'x'
1832 FROM OKC_K_PROCESSES v
1833 WHERE v.chr_id = p_contract_id
1834 AND v.in_process_yn = 'Y';
1835
1836 -- Cursor to get the service requests of contract
1837 CURSOR k_service_request_csr IS
1838 SELECT 'x'
1839 FROM OKX_INCIDENT_STATUSES_V xis,
1840 OKC_K_LINES_B cle
1841 WHERE cle.id = xis.contract_service_id
1842 AND cle.dnz_chr_id = p_contract_id
1843 AND xis.status_code IN ('OPEN');
1844
1845
1846 -- Cursor to get accepted quotes for contract
1847 CURSOR k_accepted_quote_csr IS
1848 SELECT 'x'
1849 FROM OKL_TRX_QUOTES_V
1850 WHERE khr_id = p_contract_id
1851 AND qst_code = 'ACCEPTED'
1852 AND (qtp_code LIKE 'TER%' OR qtp_code LIKE 'RES%');
1853
1854
1855
1856 k_header_rec k_header_csr%ROWTYPE;
1857 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
1858 l_chg_request_in_process VARCHAR2(1) := '?';
1859 l_service_request VARCHAR2(1) := '?';
1860 l_quotes_exist VARCHAR2(1) := '?';
1861 l_tsu_code VARCHAR2(30) := '?';
1862 l_sys_date DATE;
1863 l_invalid_contract EXCEPTION;
1864 l_ste_code VARCHAR2(30);
1865 l_contract_number VARCHAR2(120);
1866 l_meaning VARCHAR2(90);
1867 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'validate_contract';
1868 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
1869 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
1870 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
1871
1872
1873 -- RMUNJULU -- 11-DEC-02 Bug # 2484327 -- Added variables for checking
1874 -- related to asset level termination
1875 lx_trn_tbl OKL_AM_UTIL_PVT.trn_tbl_type;
1876 i NUMBER;
1877
1878 -- RMUNJULU 18-DEC-02 2484327 -- Added variable for checking
1879 -- related to asset level termination
1880 lx_quote_tbl OKL_AM_UTIL_PVT.quote_tbl_type;
1881
1882
1883
1884 BEGIN
1885 IF (is_debug_procedure_on) THEN
1886 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
1887 END IF;
1888 IF (is_debug_statement_on) THEN
1889 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_contract_id: '|| p_contract_id);
1890 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_control_flag: '|| p_control_flag);
1891 END IF;
1892
1893 x_return_status := OKL_API.G_RET_STS_SUCCESS;
1894
1895 SELECT SYSDATE INTO l_sys_date FROM DUAL;
1896
1897 OPEN k_header_csr;
1898 FETCH k_header_csr INTO k_header_rec;
1899 CLOSE k_header_csr;
1900
1901 OPEN k_contractstatus_csr;
1902 FETCH k_contractstatus_csr INTO l_contract_number,l_ste_code, l_meaning;
1903 CLOSE k_contractstatus_csr;
1904
1905 -- Check contract id passed is valid
1906 IF k_header_rec.id IS NULL OR k_header_rec.contract_number IS NULL THEN
1907
1908 OKL_API.set_message( p_app_name => OKC_API.G_APP_NAME,
1909 p_msg_name => OKC_API.G_INVALID_VALUE,
1910 p_token1 => OKC_API.G_COL_NAME_TOKEN,
1911 p_token1_value => 'contract id');
1912
1913 RAISE l_invalid_contract;
1914 END IF;
1915
1916 -- Check Lease or Loan
1917 IF NOT ( (k_header_rec.scs_code = 'LOAN') -- Loan
1918 OR (k_header_rec.scs_code = 'LEASE'
1919 AND k_header_rec.deal_type LIKE 'LOAN%') -- Loan
1920 OR (k_header_rec.scs_code = 'LEASE'
1921 AND k_header_rec.deal_type LIKE 'LEASE%')-- Lease
1922 ) THEN
1923 -- Contract CONTRACT_NUMBER is neither a Lease nor a Loan.
1924 OKL_API.set_message( p_app_name => G_APP_NAME,
1925 p_msg_name => 'OKL_AM_K_TYPE_ERROR',
1926 p_token1 => 'CONTRACT_NUMBER',
1927 p_token1_value => k_header_rec.contract_number);
1928 RAISE l_invalid_contract;
1929 END IF;
1930
1931
1932 /* -- rmunjulu PERF
1933 OPEN k_locks_csr;
1934 FETCH k_locks_csr INTO l_chg_request_in_process;
1935 CLOSE k_locks_csr;
1936
1937 OPEN k_service_request_csr;
1938 FETCH k_service_request_csr INTO l_service_request;
1939 CLOSE k_service_request_csr;
1940
1941 OPEN k_accepted_quote_csr;
1942 FETCH k_accepted_quote_csr INTO l_quotes_exist;
1943 CLOSE k_accepted_quote_csr;
1944 */
1945
1946
1947 --******************************
1948 -- CONTRACT_TERMINATE_SCRN
1949 --******************************
1950
1951 -- If from contract termination screen
1952 IF (p_control_flag = 'CONTRACT_TERMINATE_SCRN') THEN
1953
1954 -- rmunjulu PERF -- start
1955 OPEN k_locks_csr;
1956 FETCH k_locks_csr INTO l_chg_request_in_process;
1957 CLOSE k_locks_csr;
1958
1959 OPEN k_service_request_csr;
1960 FETCH k_service_request_csr INTO l_service_request;
1961 CLOSE k_service_request_csr;
1962 -- rmunjulu PERF -- End
1963
1964 -- Check if template
1965 IF k_header_rec.template_yn = OKL_API.G_TRUE THEN
1966 -- Message: This operation is not allowed on contract template-(NUMBER).
1967 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
1968 p_msg_name => 'OKC_K_TEMPLATE',
1969 p_token1 => 'NUMBER',
1970 p_token1_value => k_header_rec.contract_number);
1971 RAISE l_invalid_contract;
1972 END IF;
1973
1974 -- Check if locked
1975 IF l_chg_request_in_process = 'x' THEN
1976 -- Message: You cannot modify this contract now because a
1977 -- change request is active. Please try later.
1978 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
1979 p_msg_name => 'OKC_K_LOCKED');
1980 RAISE l_invalid_contract;
1981 END IF;
1982
1983 -- Check if service requests found
1984 IF l_service_request = 'x' THEN
1985 -- Message: You cannot terminate this contract/line because a service
1986 --request is pending against this contract/line. Please try again later.
1987 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
1988 p_msg_name => 'OKC_SR_PENDING');
1989 RAISE l_invalid_contract;
1990 END IF;
1991
1992
1993
1994 -- Check user status
1995 IF (k_header_rec.sts_code NOT IN ('BOOKED', 'EVERGREEN')) THEN
1996 -- Message: Contract (CONTRACT_NUMBER) is (STATUS).
1997 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
1998 p_msg_name => 'OKL_AM_CONTRACT_INACTIVE',
1999 p_token1 => 'CONTRACT_NUMBER',
2000 p_token1_value => k_header_rec.contract_number,
2001 p_token2 => 'STATUS',
2002 p_token2_value => k_header_rec.meaning);
2003 RAISE l_invalid_contract;
2004 END IF;
2005
2006 -- RMUNJULU 18-DEC-02 2484327 -- START --
2007
2008 -- *****************
2009 -- IF unprocessed termination trn exists for the contract then error
2010 -- *****************
2011
2012
2013 IF (is_debug_statement_on) THEN
2014 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.get_contract_transactions');
2015 END IF;
2016 -- Get all the unprocessed transactions for the contract
2017 OKL_AM_UTIL_PVT.get_contract_transactions (
2018 p_khr_id => k_header_rec.id,
2019 x_trn_tbl => lx_trn_tbl,
2020 x_return_status => l_return_status);
2021 IF (is_debug_statement_on) THEN
2022 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.get_contract_transactions , return status: ' || l_return_status);
2023 END IF;
2024
2025
2026 -- Check the return status
2027 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2028
2029 -- Error occured in util proc, message set by util proc raise exp
2030 RAISE l_invalid_contract;
2031
2032 END IF;
2033
2034
2035 -- Check if termination transaction exists for the contract
2036 IF lx_trn_tbl.COUNT > 0 THEN
2037
2038 -- A termination transaction for the contract CONTRACT_NUMBER
2039 -- is already in progress.
2040 OKL_API.set_message (
2041 p_app_name => 'OKL',
2042 p_msg_name => 'OKL_AM_K_PENDING_TRN_ERROR',
2043 p_token1 => 'CONTRACT_NUMBER',
2044 p_token1_value => k_header_rec.contract_number);
2045
2046 RAISE l_invalid_contract;
2047
2048 END IF;
2049
2050
2051 -- *****************
2052 -- IF NO accepted quote with no trn exists for contract then error
2053 -- *****************
2054
2055 IF (is_debug_statement_on) THEN
2056 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.get_non_trn_contract_quotes');
2057 END IF;
2058 -- Get accepted quote for contract with no trn
2059 OKL_AM_UTIL_PVT.get_non_trn_contract_quotes (
2060 p_khr_id => k_header_rec.id,
2061 x_quote_tbl => lx_quote_tbl,
2062 x_return_status => l_return_status);
2063 IF (is_debug_statement_on) THEN
2064 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.get_non_trn_contract_quotes , return status: ' || l_return_status);
2065 END IF;
2066
2067 -- Check the return status
2068 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2069
2070 -- Error occured in util proc, message set by util proc raise exp
2071 RAISE l_invalid_contract;
2072
2073 END IF;
2074
2075 -- Check if accepted quote exists for the contract or contract reached end
2076 -- RMUNJULU 02-JAN-03 2724951 Changed OR to AND in the IF
2077 IF lx_quote_tbl.COUNT = 0
2078 AND k_header_rec.end_date > l_sys_date THEN
2079
2080 -- Cannot terminate contract CONTRACT_NUMBER since no
2081 -- accepted quotes exists nor contract has reached its end date.
2082 OKL_API.set_message (
2083 p_app_name => G_APP_NAME,
2084 p_msg_name => 'OKL_AM_QTE_EXIST_NOT_REACH_END',
2085 p_token1 => 'CONTRACT_NUMBER',
2086 p_token1_value => k_header_rec.contract_number);
2087
2088
2089 RAISE l_invalid_contract;
2090
2091 END IF;
2092
2093 -- RMUNJULU 18-DEC-02 2484327 -- END --
2094
2095 --******************************
2096 -- TRMNT_QUOTE_CREATE
2097 --******************************
2098
2099 -- If from create termination quote
2100 ELSIF (p_control_flag = 'TRMNT_QUOTE_CREATE') THEN
2101
2102 -- Check user status
2103 IF k_header_rec.sts_code NOT IN ('BOOKED', 'EVERGREEN', 'BANKRUPTCY_HOLD',
2104 'LITIGATION_HOLD', 'TERMINATION_HOLD') THEN
2105 -- Message: Contract (CONTRACT_NUMBER) is (STATUS).
2106 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2107 p_msg_name => 'OKL_AM_CONTRACT_INACTIVE',
2108 p_token1 => 'CONTRACT_NUMBER',
2109 p_token1_value => k_header_rec.contract_number,
2110 p_token2 => 'STATUS',
2111 p_token2_value => k_header_rec.meaning);
2112 RAISE l_invalid_contract;
2113 END IF;
2114
2115
2116 -- RMUNJULU -- 11-DEC-02 Bug # 2484327 -- Added code to check based on
2117 -- asset level termination changes
2118
2119 -- *****************
2120 -- IF unprocessed FULL termination trn exists for the contract then error
2121 -- *****************
2122
2123 IF (is_debug_statement_on) THEN
2124 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.get_contract_transactions');
2125 END IF;
2126 -- Get all the unprocessed transactions for the contract
2127 OKL_AM_UTIL_PVT.get_contract_transactions (
2128 p_khr_id => k_header_rec.id,
2129 x_trn_tbl => lx_trn_tbl,
2130 x_return_status => l_return_status);
2131 IF (is_debug_statement_on) THEN
2132 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.get_contract_transactions , return status: ' || l_return_status);
2133 END IF;
2134
2135 -- Check the return status
2136 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2137
2138 -- Error occured in util proc, message set by util proc raise exp
2139 RAISE l_invalid_contract;
2140
2141 END IF;
2142
2143 -- Check if termination transaction exists for the contract
2144 IF lx_trn_tbl.COUNT > 0 THEN
2145
2146 -- Check if unprocessed FULL termination trn exists
2147 i := lx_trn_tbl.FIRST;
2148
2149 LOOP
2150
2151 --IF lx_trn_tbl(i).tcn_type = 'TMT' THEN -- FULL termination
2152 IF lx_trn_tbl(i).tcn_type in ('TMT', 'EVG') THEN -- akrangan bug 5354501 fix added 'EVG'
2153 -- A termination transaction for the contract CONTRACT_NUMBER
2154 -- is already in progress.
2155 OKL_API.set_message (
2156 p_app_name => 'OKL',
2157 p_msg_name => 'OKL_AM_K_PENDING_TRN_ERROR',
2158 p_token1 => 'CONTRACT_NUMBER',
2159 p_token1_value => k_header_rec.contract_number);
2160
2161 RAISE l_invalid_contract;
2162
2163 END IF;
2164
2165 EXIT WHEN (i = lx_trn_tbl.LAST);
2166 i := lx_trn_tbl.NEXT(i);
2167
2168 END LOOP;
2169
2170 END IF;
2171
2172
2173 --******************************
2174 -- RESTR_QUOTE_CREATE
2175 --******************************
2176
2177 -- If from create restructure quote
2178 ELSIF (p_control_flag = 'RESTR_QUOTE_CREATE') THEN
2179
2180 -- Check user status
2181 IF k_header_rec.sts_code NOT IN ( 'BOOKED', 'BANKRUPTCY_HOLD',
2182 'LITIGATION_HOLD') THEN
2183 -- Message: Contract (CONTRACT_NUMBER) is (STATUS).
2184 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2185 p_msg_name => 'OKL_AM_CONTRACT_INACTIVE',
2186 p_token1 => 'CONTRACT_NUMBER',
2187 p_token1_value => k_header_rec.contract_number,
2188 p_token2 => 'STATUS',
2189 p_token2_value => k_header_rec.meaning);
2190 RAISE l_invalid_contract;
2191 END IF;
2192
2193 --******************************
2194 -- REPUR_QUOTE_CREATE
2195 --******************************
2196
2197 -- If from create repurchase quote
2198 ELSIF (p_control_flag = 'REPUR_QUOTE_CREATE') THEN
2199
2200 -- Check user status
2201 IF k_header_rec.sts_code NOT IN ( 'TERMINATED','EXPIRED') THEN
2202 -- Message: Contract CONTRACT_NUMBER is still STATUS.
2203 -- Unable to generate the quote until the contract
2204 -- has been terminated or expired.
2205 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2206 p_msg_name => 'OKL_AM_CONTRACT_STILL_ACTIVE',
2207 p_token1 => 'CONTRACT_NUMBER',
2208 p_token1_value => k_header_rec.contract_number,
2209 p_token2 => 'STATUS',
2210 p_token2_value => k_header_rec.meaning);
2211 RAISE l_invalid_contract;
2212 END IF;
2213
2214 --******************************
2215 -- TRMNT_QUOTE_UPDATE
2216 --******************************
2217
2218 -- If from update termination quote
2219 ELSIF (p_control_flag = 'TRMNT_QUOTE_UPDATE') THEN
2220
2221 -- Check user status
2222 IF k_header_rec.sts_code NOT IN ('BOOKED', 'EVERGREEN', 'BANKRUPTCY_HOLD',
2223 'LITIGATION_HOLD', 'TERMINATION_HOLD') THEN
2224 -- Message: Contract (CONTRACT_NUMBER) is (STATUS).
2225 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2226 p_msg_name => 'OKL_AM_CONTRACT_INACTIVE',
2227 p_token1 => 'CONTRACT_NUMBER',
2228 p_token1_value => k_header_rec.contract_number,
2229 p_token2 => 'STATUS',
2230 p_token2_value => k_header_rec.meaning);
2231 RAISE l_invalid_contract;
2232 END IF;
2233
2234 --******************************
2235 -- RESTR_QUOTE_UPDATE
2236 --******************************
2237
2238 -- If from update restructure quote
2239 ELSIF (p_control_flag = 'RESTR_QUOTE_UPDATE') THEN
2240
2241 -- Check user status
2242 IF k_header_rec.sts_code NOT IN ( 'BOOKED',
2243 'BANKRUPTCY_HOLD',
2244 'LITIGATION_HOLD') THEN
2245 -- Message: Contract (CONTRACT_NUMBER) is (STATUS).
2246 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2247 p_msg_name => 'OKL_AM_CONTRACT_INACTIVE',
2248 p_token1 => 'CONTRACT_NUMBER',
2249 p_token1_value => k_header_rec.contract_number,
2250 p_token2 => 'STATUS',
2251 p_token2_value => k_header_rec.meaning);
2252 RAISE l_invalid_contract;
2253 END IF;
2254
2255 --******************************
2256 -- REPUR_QUOTE_UPDATE
2257 --******************************
2258
2259 -- If from update repurchase quote
2260 ELSIF (p_control_flag = 'REPUR_QUOTE_UPDATE') THEN
2261
2262 -- Check user status
2263 IF k_header_rec.sts_code NOT IN ( 'TERMINATED','EXPIRED') THEN
2264 -- Message: Contract CONTRACT_NUMBER is still STATUS.
2265 -- Unable to generate the quote until the contract
2266 -- has been terminated or expired.
2267 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2268 p_msg_name => 'OKL_AM_CONTRACT_STILL_ACTIVE',
2269 p_token1 => 'CONTRACT_NUMBER',
2270 p_token1_value => k_header_rec.contract_number,
2271 p_token2 => 'STATUS',
2272 p_token2_value => k_header_rec.meaning);
2273 RAISE l_invalid_contract;
2274 END IF;
2275
2276 --******************************
2277 -- BATCH_PROCESS
2278 --******************************
2279
2280 -- If from batch process
2281 ELSIF (p_control_flag = 'BATCH_PROCESS') THEN
2282
2283 -- Check if template
2284 IF k_header_rec.template_yn = OKL_API.G_TRUE THEN
2285 -- Message: This operation is not allowed on contract template-(NUMBER).
2286 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
2287 p_msg_name => 'OKC_K_TEMPLATE',
2288 p_token1 => 'NUMBER',
2289 p_token1_value => k_header_rec.contract_number);
2290 RAISE l_invalid_contract;
2291 END IF;
2292
2293 /*-- rmunjulu PERF -- Not required
2294 -- Check if locked
2295 IF l_chg_request_in_process = 'x' THEN
2296 -- Message: You cannot modify this contract now because a
2297 -- change request is active. Please try later.
2298 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
2299 p_msg_name => 'OKC_K_LOCKED');
2300 RAISE l_invalid_contract;
2301 END IF;
2302
2303 --Check if service requests found
2304 IF l_service_request = 'x' THEN
2305 -- Message: You cannot terminate this contract/line because a service
2306 --request is pending against this contract/line. Please try again later.
2307 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
2308 p_msg_name => 'OKC_SR_PENDING');
2309 RAISE l_invalid_contract;
2310 END IF;
2311 */
2312
2313
2314 --******************************
2315 -- BATCH_PROCESS_CHR
2316 --******************************
2317
2318 -- If from batch process for single contract request
2319 ELSIF (p_control_flag = 'BATCH_PROCESS_CHR') THEN
2320
2321 -- Check if template
2322 IF k_header_rec.template_yn = OKL_API.G_TRUE THEN
2323 -- Message: This operation is not allowed on contract template-(NUMBER).
2324 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
2325 p_msg_name => 'OKC_K_TEMPLATE',
2326 p_token1 => 'NUMBER',
2327 p_token1_value => k_header_rec.contract_number);
2328 RAISE l_invalid_contract;
2329 END IF;
2330
2331 /*-- rmunjulu PERF -- Not required
2332 -- Check if locked
2333 IF l_chg_request_in_process = 'x' THEN
2334 -- Message: You cannot modify this contract now because a
2335 -- change request is active. Please try later.
2336 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
2337 p_msg_name => 'OKC_K_LOCKED');
2338 RAISE l_invalid_contract;
2339 END IF;
2340
2341 --Check if service requests found
2342 IF l_service_request = 'x' THEN
2343 -- Message: You cannot terminate this contract/line because a service
2344 --request is pending against this contract/line. Please try again later.
2345 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
2346 p_msg_name => 'OKC_SR_PENDING');
2347 RAISE l_invalid_contract;
2348 END IF;
2349 */
2350
2351 /*
2352 -- Check user status
2353 IF k_header_rec.sts_code <> 'BOOKED' THEN
2354 -- Message: Contract (CONTRACT_NUMBER) is (STATUS).
2355 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2356 p_msg_name => 'OKL_AM_CONTRACT_INACTIVE',
2357 p_token1 => 'CONTRACT_NUMBER',
2358 p_token1_value => k_header_rec.contract_number,
2359 p_token2 => 'STATUS',
2360 p_token2_value => k_header_rec.meaning);
2361 RAISE l_invalid_contract;
2362 END IF;
2363 */
2364
2365 -- rmunjulu PERF -- Moved cursor open here
2366 OPEN k_accepted_quote_csr;
2367 FETCH k_accepted_quote_csr INTO l_quotes_exist;
2368 CLOSE k_accepted_quote_csr;
2369
2370 -- Check if accepted quote exists
2371 IF (l_quotes_exist = 'x') THEN
2372 -- Message: Cannot terminate contract (CONTRACT_NUMBER) since
2373 -- accepted quote exists.
2374 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2375 p_msg_name => 'OKL_AM_QUOTES_EXIST',
2376 p_token1 => 'CONTRACT_NUMBER',
2377 p_token1_value => k_header_rec.contract_number);
2378 RAISE l_invalid_contract;
2379 END IF;
2380
2381 --******************************
2382 -- ASSET_RETURN_CREATE
2383 --******************************
2384
2385 -- If from create asset return
2386 ELSIF (p_control_flag = 'ASSET_RETURN_CREATE') THEN
2387
2388 -- Check contract status
2389 IF l_ste_code IS NOT NULL AND l_ste_code IN ('ENTERED','SIGNED','CANCELLED') THEN
2390 -- Message: Contract CONTRACT_NUMBER has invalid post-booking status - STATUS.
2391 -- Unable to create asset return for this contract.
2392
2393 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2394 p_msg_name => 'OKL_AM_K_INVALID_STATUS',
2395 p_token1 => 'CONTRACT_NUMBER',
2396 p_token1_value => l_contract_number,
2397 p_token2 => 'STATUS',
2398 p_token2_value => l_meaning);
2399 RAISE l_invalid_contract;
2400 END IF;
2401
2402 --******************************
2403 -- ASSET_RETURN_UPDATE
2404 --******************************
2405
2406 -- If from update asset return
2407 ELSIF (p_control_flag = 'ASSET_RETURN_UPDATE') THEN
2408
2409 -- Check user status
2410 IF k_header_rec.sts_code NOT IN ( 'TERMINATED','EXPIRED') THEN
2411 --Message: Contract CONTRACT_NUMBER is still STATUS.
2412 -- Unable to return assets for this contract.
2413 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2414 p_msg_name => 'OKL_AM_K_INVALID_FOR_ART_ERR',
2415 p_token1 => 'CONTRACT_NUMBER',
2416 p_token1_value => k_header_rec.contract_number,
2417 p_token2 => 'STATUS',
2418 p_token2_value => k_header_rec.meaning);
2419 RAISE l_invalid_contract;
2420 END IF;
2421
2422 --******************************
2423 -- Default checking (Control flag is null)
2424 --******************************
2425
2426 ELSE -- Default checking (Control flag is null)
2427
2428 -- Check user status
2429 IF k_header_rec.sts_code <> 'BOOKED' THEN
2430 -- Message: Contract (CONTRACT_NUMBER) is (STATUS).
2431 OKL_API.set_message(p_app_name => OKL_API.G_APP_NAME,
2432 p_msg_name => 'OKL_AM_CONTRACT_INACTIVE',
2433 p_token1 => 'CONTRACT_NUMBER',
2434 p_token1_value => k_header_rec.contract_number,
2435 p_token2 => 'STATUS',
2436 p_token2_value => k_header_rec.meaning);
2437 RAISE l_invalid_contract;
2438 END IF;
2439 END IF;
2440
2441 -- Set the current contract status
2442 x_contract_status := k_header_rec.sts_code;
2443
2444 -- Set the return status
2445 x_return_status := l_return_status;
2446 IF (is_debug_procedure_on) THEN
2447 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
2448 END IF;
2449 EXCEPTION
2450 WHEN l_invalid_contract THEN
2451 IF (is_debug_exception_on) THEN
2452 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'l_invalid_contract');
2453 END IF;
2454 IF k_header_csr%ISOPEN THEN
2455 CLOSE k_header_csr;
2456 END IF;
2457 IF k_contractstatus_csr%ISOPEN THEN
2458 CLOSE k_contractstatus_csr;
2459 END IF;
2460 IF k_locks_csr%ISOPEN THEN
2461 CLOSE k_locks_csr;
2462 END IF;
2463 IF k_service_request_csr%ISOPEN THEN
2464 CLOSE k_service_request_csr;
2465 END IF;
2466 IF k_accepted_quote_csr%ISOPEN THEN
2467 CLOSE k_accepted_quote_csr;
2468 END IF;
2469
2470
2471 -- notify caller of EXPECTED error
2472 x_return_status := OKL_API.G_RET_STS_ERROR;
2473
2474 WHEN OTHERS THEN
2475 IF (is_debug_exception_on) THEN
2476 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
2477 || sqlcode || ' , SQLERRM : ' || sqlerrm);
2478 END IF;
2479 IF k_header_csr%ISOPEN THEN
2480 CLOSE k_header_csr;
2481 END IF;
2482 IF k_contractstatus_csr%ISOPEN THEN
2483 CLOSE k_contractstatus_csr;
2484 END IF;
2485 IF k_locks_csr%ISOPEN THEN
2486 CLOSE k_locks_csr;
2487 END IF;
2488 IF k_service_request_csr%ISOPEN THEN
2489 CLOSE k_service_request_csr;
2490 END IF;
2491 IF k_accepted_quote_csr%ISOPEN THEN
2492 CLOSE k_accepted_quote_csr;
2493 END IF;
2494
2495 -- store SQL error message on message stack for caller
2496 OKL_API.SET_MESSAGE (
2497 p_app_name => OKC_API.G_APP_NAME
2498 ,p_msg_name => G_UNEXPECTED_ERROR
2499 ,p_token1 => G_SQLCODE_TOKEN
2500 ,p_token1_value => sqlcode
2501 ,p_token2 => G_SQLERRM_TOKEN
2502 ,p_token2_value => sqlerrm);
2503
2504 -- notify caller of an UNEXPECTED error
2505 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2506 END validate_contract;
2507
2508
2509 -- Start of comments
2510 --
2511 -- Procedure Name : check_lease_loan_type
2512 -- Desciption : Checks if contract is lease or loan
2513 -- Business Rules :
2514 -- Parameters :
2515 -- Version : 1.0
2516 -- History : RMUNJULU 06-MAR-03 Performance Fix Replaced K_HDR_FULL
2517 --
2518 -- End of comments
2519 PROCEDURE check_lease_loan_type(
2520 p_api_version IN NUMBER,
2521 p_init_msg_list IN VARCHAR2,
2522 x_return_status OUT NOCOPY VARCHAR2,
2523 x_msg_count OUT NOCOPY NUMBER,
2524 x_msg_data OUT NOCOPY VARCHAR2,
2525 p_term_rec IN term_rec_type,
2526 x_lease_loan_type OUT NOCOPY VARCHAR2) IS
2527
2528 -- Get the K details
2529 CURSOR k_header_csr is
2530 SELECT id,
2531 object_version_number,
2532 sts_code,
2533 scs_code
2534 FROM OKC_K_HEADERS_B
2535 WHERE id = p_term_rec.p_contract_id;
2536
2537 -- Get the K deal_type
2538 -- RMUNJULU 06-MAR-03 Performance Fix Replaced K_HDR_FULL
2539 CURSOR k_deal_type_csr is
2540 SELECT deal_type
2541 FROM OKL_K_HEADERS_V
2542 WHERE id = p_term_rec.p_contract_id;
2543
2544 k_header_rec k_header_csr%ROWTYPE;
2545 l_lease_loan_type VARCHAR2(30) := '$';
2546 l_api_name VARCHAR2(30) := 'check_lease_loan_type';
2547 l_deal_type VARCHAR2(30) := '$';
2548 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'check_lease_loan_type';
2549 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
2550 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
2551 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
2552
2553 BEGIN
2554 IF (is_debug_procedure_on) THEN
2555 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
2556 END IF;
2557 IF (is_debug_statement_on) THEN
2558 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);
2559 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);
2560 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);
2561 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);
2562 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);
2563 END IF;
2564 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2565 x_lease_loan_type := l_lease_loan_type;
2566
2567 OPEN k_header_csr;
2568 FETCH k_header_csr INTO k_header_rec;
2569 IF k_header_csr%NOTFOUND THEN
2570 OKL_API.set_message(p_app_name => OKC_API.G_APP_NAME,
2571 p_msg_name => 'OKC_K_CHANGED',
2572 p_token1 => 'NUMBER',
2573 p_token1_value => p_term_rec.p_contract_number,
2574 p_token2 => 'MODIFIER',
2575 p_token2_value => p_term_rec.p_contract_modifier);
2576 CLOSE k_header_csr;
2577 RAISE OKL_API.G_EXCEPTION_ERROR;
2578 END IF;
2579
2580 OPEN k_deal_type_csr;
2581 FETCH k_deal_type_csr INTO l_deal_type;
2582 CLOSE k_deal_type_csr;
2583
2584 -- Set the lease or loan type
2585 -- (If scs_code = Lease and deal_type = Loan then Loan)
2586 IF k_header_rec.scs_code = 'LEASE'
2587 AND NVL(l_deal_type,'?') LIKE 'LOAN%' THEN
2588 l_lease_loan_type := 'LOAN';
2589 ELSIF k_header_rec.scs_code = 'LEASE'
2590 AND NVL(l_deal_type,'?') LIKE 'LEASE%' THEN
2591 l_lease_loan_type := 'LEASE';
2592 ELSIF k_header_rec.scs_code = 'LOAN' THEN
2593 l_lease_loan_type := 'LOAN';
2594 END IF;
2595 CLOSE k_header_csr;
2596
2597 x_lease_loan_type := l_lease_loan_type;
2598 IF (is_debug_procedure_on) THEN
2599 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
2600 END IF;
2601 EXCEPTION
2602 WHEN OKL_API.G_EXCEPTION_ERROR THEN
2603 IF (is_debug_exception_on) THEN
2604 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
2605 END IF;
2606 IF k_header_csr%ISOPEN THEN
2607 CLOSE k_header_csr;
2608 END IF;
2609 IF k_deal_type_csr%ISOPEN THEN
2610 CLOSE k_deal_type_csr;
2611 END IF;
2612 x_lease_loan_type := '$';
2613 x_return_status := OKL_API.G_RET_STS_ERROR;
2614
2615 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2616 IF (is_debug_exception_on) THEN
2617 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
2618 END IF;
2619 IF k_header_csr%ISOPEN THEN
2620 CLOSE k_header_csr;
2621 END IF;
2622 IF k_deal_type_csr%ISOPEN THEN
2623 CLOSE k_deal_type_csr;
2624 END IF;
2625 x_lease_loan_type := '$';
2626 x_return_status :=OKL_API.G_RET_STS_UNEXP_ERROR;
2627
2628 WHEN OTHERS THEN
2629 IF (is_debug_exception_on) THEN
2630 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
2631 || sqlcode || ' , SQLERRM : ' || sqlerrm);
2632 END IF;
2633 IF k_header_csr%ISOPEN THEN
2634 CLOSE k_header_csr;
2635 END IF;
2636 IF k_deal_type_csr%ISOPEN THEN
2637 CLOSE k_deal_type_csr;
2638 END IF;
2639 x_lease_loan_type := '$';
2640 OKL_API.set_message(p_app_name => okc_api.g_app_name,
2641 p_msg_name => g_unexpected_error,
2642 p_token1 => g_sqlcode_token,
2643 p_token1_value => sqlcode,
2644 p_token2 => g_sqlerrm_token,
2645 p_token2_value => sqlerrm);
2646 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2647 END check_lease_loan_type;
2648
2649 ----------------------------------------------------------------------------
2650 -- PROCEDURE : process_non_batch
2651 ----------------------------------------------------------------------------
2652 PROCEDURE process_non_batch(
2653 p_api_version IN NUMBER,
2654 p_init_msg_list IN VARCHAR2,
2655 x_return_status OUT NOCOPY VARCHAR2,
2656 x_msg_count OUT NOCOPY NUMBER,
2657 x_msg_data OUT NOCOPY VARCHAR2,
2658 p_term_rec IN term_rec_type,
2659 x_tcnv_rec OUT NOCOPY tcnv_rec_type,
2660 x_can_terminate OUT NOCOPY VARCHAR2) IS
2661
2662 l_quote_found VARCHAR2(1) := 'N';
2663 l_trn_exists VARCHAR2(1) := 'N';
2664 l_can_terminate VARCHAR2(1) := 'Y';
2665 lp_tcnv_rec tcnv_rec_type;
2666 lx_tcnv_rec tcnv_rec_type;
2667 lx_contract_status VARCHAR2(200);
2668 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2669 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'process_non_batch';
2670 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
2671 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
2672 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
2673
2674 BEGIN
2675 IF (is_debug_procedure_on) THEN
2676 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
2677 END IF;
2678 IF (is_debug_statement_on) THEN
2679 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);
2680 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);
2681 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);
2682 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);
2683 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);
2684 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);
2685 END IF;
2686
2687 -- Validate the contract
2688 validate_contract(
2689 p_api_version => p_api_version,
2690 p_init_msg_list => p_init_msg_list,
2691 x_return_status => l_return_status,
2692 x_msg_count => x_msg_count,
2693 x_msg_data => x_msg_data,
2694 p_contract_id => p_term_rec.p_contract_id,
2695 p_control_flag => p_term_rec.p_control_flag,
2696 x_contract_status => lx_contract_status);
2697 IF (is_debug_statement_on) THEN
2698 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called validate_contract , return status: ' || l_return_status);
2699 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'lx_contract_status : ' || lx_contract_status);
2700 END IF;
2701
2702 -- If error abort this contract
2703 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2704 RAISE G_EXCEPTION_HALT;
2705 END IF;
2706
2707 -- get transaction if exists
2708 IF (is_debug_statement_on) THEN
2709 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_BTCH_EXP_LEASE_LOAN_PVT.get_trn_rec');
2710 END IF;
2711 OKL_AM_BTCH_EXP_LEASE_LOAN_PVT.get_trn_rec(
2712 p_contract_id => p_term_rec.p_contract_id,
2713 x_return_status => l_return_status,
2714 x_trn_exists => l_trn_exists,
2715 x_tcnv_rec => lp_tcnv_rec);
2716 IF (is_debug_statement_on) THEN
2717 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_BTCH_EXP_LEASE_LOAN_PVT.get_trn_rec , return status: ' || l_return_status);
2718 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_trn_exists : ' || l_trn_exists);
2719 END IF;
2720
2721 -- if error then abort this contract
2722 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2723 RAISE G_EXCEPTION_HALT;
2724 END IF;
2725
2726 -- If trn exists then set the out tcnv_rec
2727 -- (have to do this or else tcnv_rec set wrong)
2728 IF (l_trn_exists = 'Y' ) THEN
2729 lx_tcnv_rec := lp_tcnv_rec;
2730 x_tcnv_rec := lx_tcnv_rec;
2731 END IF;
2732
2733 x_return_status := l_return_status;
2734 x_can_terminate := l_can_terminate;
2735 IF (is_debug_procedure_on) THEN
2736 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
2737 END IF;
2738 EXCEPTION
2739
2740 WHEN G_EXCEPTION_HALT THEN
2741 IF (is_debug_exception_on) THEN
2742 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_HALT');
2743 END IF;
2744 x_return_status := OKL_API.G_RET_STS_ERROR;
2745 x_can_terminate := 'N';
2746
2747 WHEN OTHERS THEN
2748 IF (is_debug_exception_on) THEN
2749 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
2750 || sqlcode || ' , SQLERRM : ' || sqlerrm);
2751 END IF;
2752 x_return_status := OKL_API.G_RET_STS_ERROR;
2753 x_can_terminate := 'N';
2754 END process_non_batch;
2755
2756
2757
2758
2759
2760 -- Start of comments
2761 --
2762 -- Procedure Name : lease_loan_termination
2763 -- Desciption : method to terminate the lease or loan
2764 -- Business Rules :
2765 -- Parameters :
2766 -- Version : 1.0
2767 -- History : RMUNJULU -- 26-NOV-02: Bug # 2484327 : Added call to
2768 -- OKL_AM_CNTRCT_LN_TRMNT_PVT if partial quote, Changed
2769 -- l_accepted_qte_csr cursor.
2770 -- RMUNJULU 18-DEC-02 2484327 Changed IF to get qte_id properly
2771 -- : RMUNJULU 02-JAN-03 2699412 Set the okc context
2772 --
2773 -- End of comments
2774 PROCEDURE lease_loan_termination(
2775 p_api_version IN NUMBER,
2776 p_init_msg_list IN VARCHAR2,
2777 x_return_status OUT NOCOPY VARCHAR2,
2778 x_msg_count OUT NOCOPY NUMBER,
2779 x_msg_data OUT NOCOPY VARCHAR2,
2780 p_term_rec IN term_rec_type,
2781 p_tcnv_rec IN tcnv_rec_type) IS
2782
2783
2784 -- Get the accepted quote if exists for the contract
2785 -- RMUNJULU Bug # 2484327 : Added partial_yn to cursor to get the value
2786 -- of the quote whether partial yn
2787 -- RMUNJULU 18-DEC-02 2484327 commented --
2788
2789
2790 -- RMUNJULU 18-DEC-02 2484327 added cursor
2791 -- Get the quote details
2792 CURSOR l_qte_csr ( p_qte_id IN NUMBER) IS
2793 SELECT QTE.id,
2794 QTE.partial_yn
2795 FROM OKL_TRX_QUOTES_V QTE
2796 WHERE QTE.id = p_qte_id;
2797
2798
2799 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2800 l_api_name CONSTANT VARCHAR2(30) := 'lease_loan_termination';
2801 l_lease_or_loan VARCHAR2(200);
2802 l_tcnv_rec tcnv_rec_type := p_tcnv_rec;
2803 l_trn_exists VARCHAR2(1) := 'N';
2804 l_can_terminate VARCHAR2(1) := 'Y';
2805 lp_term_rec term_rec_type := p_term_rec;
2806 --l_accepted_qte_rec l_accepted_qte_csr%ROWTYPE;
2807 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'lease_loan_termination';
2808 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
2809 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
2810 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
2811
2812 -- RMUNJULU Bug # 2484327 : To get the value of the quote whether partial yn
2813 l_partial_yn VARCHAR2(1) := 'N';
2814
2815 -- RMUNJULU 18-DEC-02 2484327
2816 l_qte_rec l_qte_csr%ROWTYPE;
2817 lx_quote_tbl OKL_AM_UTIL_PVT.quote_tbl_type;
2818
2819 -- RMUNJULU 3061751 27-AUG-2003
2820 l_service_integration_needed VARCHAR2(3) := 'N';
2821
2822 BEGIN
2823 IF (is_debug_procedure_on) THEN
2824 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
2825 END IF;
2826 IF (is_debug_statement_on) THEN
2827 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);
2828 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);
2829 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);
2830 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);
2831 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);
2832 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);
2833 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);
2834 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.qte_id: '||p_tcnv_rec.qte_id);
2835 END IF;
2836
2837 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2838
2839 -- if not batch process then check if can be terminated
2840 IF NVL(lp_term_rec.p_control_flag,'?') NOT IN ('BATCH_PROCESS','BATCH_PROCESS_CHR') THEN
2841
2842
2843 process_non_batch(
2844 p_api_version => p_api_version,
2845 p_init_msg_list => p_init_msg_list,
2846 x_return_status => l_return_status,
2847 x_msg_count => x_msg_count,
2848 x_msg_data => x_msg_data,
2849 p_term_rec => lp_term_rec,
2850 x_tcnv_rec => l_tcnv_rec,
2851 x_can_terminate => l_can_terminate);
2852 IF (is_debug_statement_on) THEN
2853 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called process_non_batch , return status: ' || l_return_status);
2854 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_can_terminate : ' || l_can_terminate);
2855 END IF;
2856
2857
2858 -- If error abort this contract
2859 IF (l_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2860 RAISE OKL_API.G_EXCEPTION_ERROR;
2861 END IF;
2862 IF (l_can_terminate <> 'Y') THEN
2863 RAISE OKL_API.G_EXCEPTION_ERROR;
2864 END IF;
2865
2866 END IF;
2867
2868
2869
2870 -- check if lease/loan exists and type
2871 check_lease_loan_type(
2872 p_api_version => p_api_version,
2873 p_init_msg_list => p_init_msg_list,
2874 x_return_status => l_return_status,
2875 x_msg_count => x_msg_count,
2876 x_msg_data => x_msg_data,
2877 p_term_rec => lp_term_rec,
2878 x_lease_loan_type => l_lease_or_loan);
2879 IF (is_debug_statement_on) THEN
2880 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called check_lease_loan_type , return status: ' || l_return_status);
2881 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_lease_or_loan : ' || l_lease_or_loan);
2882 END IF;
2883
2884
2885
2886 -- If error abort this contract
2887 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2888 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2889 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
2890 RAISE OKL_API.G_EXCEPTION_ERROR;
2891 END IF;
2892
2893
2894
2895 -- Set the quote parameter if accepted quote exists and not already populated
2896 -- RMUNJULU Bug # 2484327 : cannot have the below if since if quote id
2897 -- passed then will not set partial_yn
2898
2899
2900
2901 -- RMUNJULU 18-DEC-02 2484327 -- START --
2902 -- Changed the if logic to get the correct qte_id
2903
2904 -- NOTE: If this IF does not return any quote then the partial_yn is not set to 'Y'
2905 -- and it is a full termination
2906
2907 -- Check if quote id passed to p_term_rec get partial_yn if yes
2908 IF lp_term_rec.p_quote_id IS NOT NULL
2909 AND lp_term_rec.p_quote_id <> OKL_API.G_MISS_NUM THEN
2910
2911
2912 -- This condition is from termination quotes
2913 OPEN l_qte_csr ( lp_term_rec.p_quote_id);
2914 FETCH l_qte_csr INTO l_qte_rec;
2915 IF l_qte_csr%FOUND THEN
2916 l_partial_yn := l_qte_rec.partial_yn;
2917 END IF;
2918 CLOSE l_qte_csr;
2919
2920
2921 -- else check if quote id passed to p_tcnv_rec get partial_yn if yes
2922 ELSIF l_tcnv_rec.qte_id IS NOT NULL
2923 AND l_tcnv_rec.qte_id <> OKL_API.G_MISS_NUM THEN
2924
2925 -- This condition is from batch recycled trns which originated from qte
2926 OPEN l_qte_csr ( l_tcnv_rec.qte_id);
2927 FETCH l_qte_csr INTO l_qte_rec;
2928 IF l_qte_csr%FOUND THEN
2929 l_partial_yn := l_qte_rec.partial_yn;
2930 lp_term_rec.p_quote_id := l_tcnv_rec.qte_id;
2931 END IF;
2932 CLOSE l_qte_csr;
2933
2934
2935 -- else get the accepted quote for contract and get partial_yn
2936 ELSE
2937
2938 -- This condition is from contract term. scrn when quote exists with no trn
2939
2940 -- *****************
2941 -- Get accepted quote with no trn if exists for contract
2942 -- *****************
2943
2944 IF (is_debug_statement_on) THEN
2945 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.get_non_trn_contract_quotes');
2946 END IF;
2947 -- Get accepted quote for contract with no trn
2948 OKL_AM_UTIL_PVT.get_non_trn_contract_quotes (
2949 p_khr_id => lp_term_rec.p_contract_id,
2950 x_quote_tbl => lx_quote_tbl,
2951 x_return_status => l_return_status);
2952 IF (is_debug_statement_on) THEN
2953 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.get_non_trn_contract_quotes , return status: ' || l_return_status);
2954 END IF;
2955
2956 -- Check the return status
2957 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2958
2959 -- Error occured in util proc, message set by util proc raise exp
2960 RAISE OKL_API.G_EXCEPTION_ERROR;
2961
2962 END IF;
2963
2964 -- Check if accepted quote with no trn exists for the contract
2965 IF lx_quote_tbl.COUNT > 0 THEN
2966
2967 lp_term_rec.p_quote_id := lx_quote_tbl(lx_quote_tbl.FIRST).id;
2968 l_partial_yn := lx_quote_tbl(lx_quote_tbl.FIRST).partial_yn;
2969
2970 END IF;
2971
2972 END IF;
2973
2974 -- RMUNJULU 18-DEC-02 2484327 -- END --
2975
2976
2977 IF (is_debug_statement_on) THEN
2978 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'setting okc org context');
2979 END IF;
2980 -- RMUNJULU 02-JAN-03 2699412 Set the okc context
2981 OKL_CONTEXT.set_okc_org_context(p_chr_id => lp_term_rec.p_contract_id);
2982
2983 -- ++++++++++++++++++++ service contract integration begin ++++++++++++++++++
2984
2985 IF (is_debug_statement_on) THEN
2986 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling check_service_k_int_needed');
2987 END IF;
2988 -- RMUNJULU 3061751 27-AUG-2003
2989 -- Checks and sets service_integration_needed flag
2990 -- Need to do this before lines terminated else will not know
2991 -- if TRUE FULL termination or not (FULL Termination or PARTIAL Termination
2992 -- but no more assets)
2993 l_service_integration_needed := check_service_k_int_needed(
2994 p_term_rec => lp_term_rec,
2995 p_tcnv_rec => l_tcnv_rec,
2996 p_partial_yn => l_partial_yn,
2997 p_source => 'TERMINATION');
2998 IF (is_debug_statement_on) THEN
2999 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called check_service_k_int_needed');
3000 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_service_integration_needed : ' || l_service_integration_needed);
3001 END IF;
3002
3003 -- +++++++++++++++++++++ service contract integration end ++++++++++++++++++
3004
3005
3006 -- RMUNJULU Bug # 2484327 -- Will first check if partial termination and call
3007 -- OKL_AM_CONTRACT_LINE_TRMNT_PVT API or else check for lease or loan and
3008 -- call appropriate API.
3009
3010 -- rmunjulu Added condition to check if truely partial
3011 IF (l_partial_yn = 'Y') THEN
3012
3013 -- need to check if no more assets (This case p_quote_id is Always populated)
3014 l_partial_yn := check_true_partial_quote_yn( -- rmunjulu 4997075
3015 p_quote_id => lp_term_rec.p_quote_id,
3016 p_contract_id => lp_term_rec.p_contract_id);
3017 IF (is_debug_statement_on) THEN
3018 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called check_true_partial_quote_yn');
3019 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_partial_yn : ' || l_partial_yn);
3020 END IF;
3021 END IF;
3022
3023 -- Call the lease/loan termination api
3024 IF (l_partial_yn = 'Y') THEN
3025
3026 IF (is_debug_statement_on) THEN
3027 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_CNTRCT_LN_TRMNT_PVT.asset_level_termination');
3028 END IF;
3029
3030 OKL_AM_CNTRCT_LN_TRMNT_PVT.asset_level_termination(
3031 p_api_version => p_api_version,
3032 p_init_msg_list => p_init_msg_list,
3033 p_term_rec => lp_term_rec,
3034 p_tcnv_rec => l_tcnv_rec,
3035 x_msg_count => x_msg_count,
3036 x_msg_data => x_msg_data,
3037 x_return_status => l_return_status);
3038 IF (is_debug_statement_on) THEN
3039 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_CNTRCT_LN_TRMNT_PVT.asset_level_termination , return status: ' || l_return_status);
3040 END IF;
3041
3042 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3043 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3044 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3045 RAISE OKL_API.G_EXCEPTION_ERROR;
3046 END IF;
3047
3048 ELSIF (l_lease_or_loan = 'LEASE') THEN
3049
3050 IF (is_debug_statement_on) THEN
3051 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.lease_termination');
3052 END IF;
3053 OKL_AM_LEASE_TRMNT_PVT.lease_termination(
3054 p_api_version => p_api_version,
3055 p_init_msg_list => p_init_msg_list,
3056 x_return_status => l_return_status,
3057 x_msg_count => x_msg_count,
3058 x_msg_data => x_msg_data,
3059 p_term_rec => lp_term_rec,
3060 p_tcnv_rec => l_tcnv_rec);
3061 IF (is_debug_statement_on) THEN
3062 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LEASE_TRMNT_PVT.lease_termination , return status: ' || l_return_status);
3063 END IF;
3064
3065 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3066 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3067 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3068 RAISE OKL_API.G_EXCEPTION_ERROR;
3069 END IF;
3070
3071 ELSIF (l_lease_or_loan = 'LOAN') THEN
3072
3073 IF (is_debug_statement_on) THEN
3074 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LOAN_TRMNT_PVT.loan_termination');
3075 END IF;
3076 OKL_AM_LOAN_TRMNT_PVT.loan_termination(
3077 p_api_version => p_api_version,
3078 p_init_msg_list => p_init_msg_list,
3079 x_return_status => l_return_status,
3080 x_msg_count => x_msg_count,
3081 x_msg_data => x_msg_data,
3082 p_term_rec => lp_term_rec,
3083 p_tcnv_rec => l_tcnv_rec);
3084 IF (is_debug_statement_on) THEN
3085 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_LOAN_TRMNT_PVT.loan_termination , return status: ' || l_return_status);
3086 END IF;
3087
3088 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3089 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3090 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3091 RAISE OKL_API.G_EXCEPTION_ERROR;
3092 END IF;
3093
3094 ELSIF (l_lease_or_loan = '$') THEN
3095
3096 -- type not found
3097 -- set message and raise exception
3098 -- Contract type, whether Lease or Loan could not be
3099 -- determined for Contract CONTRACT_NUMBER.
3100 OKL_API.set_message(p_app_name => G_APP_NAME,
3101 p_msg_name => 'OKL_AM_K_TYPE_NOT_FOUND',
3102 p_token1 => 'CONTRACT_NUMBER',
3103 p_token1_value => lp_term_rec.p_contract_number);
3104
3105 RAISE OKL_API.G_EXCEPTION_ERROR;
3106
3107 ELSE
3108
3109 -- neither lease or loan
3110 -- set message and raise exception
3111 -- Contract CONTRACT_NUMBER is neither a Lease nor a Loan.
3112 OKL_API.set_message( p_app_name => G_APP_NAME,
3113 p_msg_name => 'OKL_AM_K_TYPE_ERROR',
3114 p_token1 => 'CONTRACT_NUMBER',
3115 p_token1_value => lp_term_rec.p_contract_number);
3116
3117 RAISE OKL_API.G_EXCEPTION_ERROR;
3118
3119 END IF;
3120
3121
3122 -- ++++++++++++++++++++ service contract integration begin ++++++++++++++++++
3123
3124 -- RMUNJULU 3061751 27-AUG-2003 Do the Service_Integration Steps, Launches SERVICE INT WF if needed
3125 service_k_integration(
3126 p_term_rec => lp_term_rec,
3127 p_source => 'TERMINATION',
3128 p_service_integration_needed => l_service_integration_needed);
3129 IF (is_debug_statement_on) THEN
3130 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called service_k_integration');
3131 END IF;
3132
3133 -- +++++++++++++++++++++ service contract integration end ++++++++++++++++++
3134
3135 x_return_status := l_return_status;
3136 IF (is_debug_procedure_on) THEN
3137 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
3138 END IF;
3139
3140 EXCEPTION
3141
3142 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3143 IF (is_debug_exception_on) THEN
3144 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
3145 END IF;
3146
3147 -- RMUNJULU 18-DEC-02 2484327
3148 IF l_qte_csr%ISOPEN THEN
3149 CLOSE l_qte_csr;
3150 END IF;
3151
3152 x_return_status := OKL_API.G_RET_STS_ERROR;
3153
3154 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3155 IF (is_debug_exception_on) THEN
3156 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
3157 END IF;
3158
3159 -- RMUNJULU 18-DEC-02 2484327
3160 IF l_qte_csr%ISOPEN THEN
3161 CLOSE l_qte_csr;
3162 END IF;
3163
3164
3165 x_return_status :=OKL_API.G_RET_STS_UNEXP_ERROR;
3166
3167 WHEN OTHERS THEN
3168 IF (is_debug_exception_on) THEN
3169 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
3170 || sqlcode || ' , SQLERRM : ' || sqlerrm);
3171 END IF;
3172
3173 -- RMUNJULU 18-DEC-02 2484327
3174 IF l_qte_csr%ISOPEN THEN
3175 CLOSE l_qte_csr;
3176 END IF;
3177
3178
3179 OKL_API.set_message(p_app_name => okc_api.g_app_name,
3180 p_msg_name => g_unexpected_error,
3181 p_token1 => g_sqlcode_token,
3182 p_token1_value => sqlcode,
3183 p_token2 => g_sqlerrm_token,
3184 p_token2_value => sqlerrm);
3185
3186 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3187
3188 END lease_loan_termination;
3189
3190 ----------------------------------------------------------------------------
3191 -- PROCEDURE : lease_loan_termination
3192 -- method to terminate multiple leases and loans
3193 -- Call this method from the Contract Termination Screen
3194 ----------------------------------------------------------------------------
3195 PROCEDURE lease_loan_termination(
3196 p_api_version IN NUMBER,
3197 p_init_msg_list IN VARCHAR2,
3198 x_return_status OUT NOCOPY VARCHAR2,
3199 x_msg_count OUT NOCOPY NUMBER,
3200 x_msg_data OUT NOCOPY VARCHAR2,
3201 p_term_tbl IN term_tbl_type,
3202 p_tcnv_tbl IN tcnv_tbl_type) IS
3203
3204 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3205 i NUMBER := 0;
3206 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3207 l_api_version CONSTANT NUMBER := 1;
3208 l_api_name CONSTANT VARCHAR2(30) := 'lease_loan_termination';
3209 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'lease_loan_termination';
3210 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
3211 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
3212 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
3213 BEGIN
3214 IF (is_debug_procedure_on) THEN
3215 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
3216 END IF;
3217
3218 --Check API version, initialize message list and create savepoint.
3219 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3220 G_PKG_NAME,
3221 p_init_msg_list,
3222 l_api_version,
3223 p_api_version,
3224 '_PVT',
3225 x_return_status);
3226 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3227 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3228 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3229 RAISE OKL_API.G_EXCEPTION_ERROR;
3230 END IF;
3231
3232 --OKL_API.init_msg_list(p_init_msg_list);
3233 -- Initialize return_status
3234 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3235 -- Initialize p_init_msg_list to True so that every time the message stack
3236 -- is set or else the messages for the successfull terminated contracts
3237 -- will come here which is not desired
3238 -- This method is called from Contract Termination screen
3239 -- The screen will rollback if even one of the contracts failed to terminate
3240 -- Skip out of the loop as soon as the first contract is failed
3241 IF (p_term_tbl.COUNT > 0) THEN
3242 i := p_term_tbl.FIRST;
3243 LOOP
3244 lease_loan_termination (
3245 p_api_version => p_api_version,
3246 p_init_msg_list => OKL_API.G_TRUE,
3247 x_return_status => l_return_status,
3248 x_msg_count => x_msg_count,
3249 x_msg_data => x_msg_data,
3250 p_term_rec => p_term_tbl(i),
3251 p_tcnv_rec => p_tcnv_tbl(i));
3252 IF (is_debug_statement_on) THEN
3253 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called lease_loan_termination , return status: ' || l_return_status);
3254 END IF;
3255
3256 -- rollback if terminating contract failed
3257 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3258 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3259 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3260 RAISE OKL_API.G_EXCEPTION_ERROR;
3261 END IF;
3262 EXIT WHEN (i = p_term_tbl.LAST);
3263 i := p_term_tbl.NEXT(i);
3264 END LOOP;
3265
3266 END IF;
3267
3268
3269 x_return_status := l_return_status;
3270
3271 -- end the transaction
3272 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3273 IF (is_debug_procedure_on) THEN
3274 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
3275 END IF;
3276 EXCEPTION
3277 WHEN OKL_API.G_EXCEPTION_ERROR THEN
3278 IF (is_debug_exception_on) THEN
3279 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
3280 END IF;
3281
3282 x_return_status := OKL_API.HANDLE_EXCEPTIONS
3283 (
3284 l_api_name,
3285 G_PKG_NAME,
3286 'OKL_API.G_RET_STS_ERROR',
3287 x_msg_count,
3288 x_msg_data,
3289 '_PVT'
3290 );
3291 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3292 IF (is_debug_exception_on) THEN
3293 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
3294 END IF;
3295
3296 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
3297 (
3298 l_api_name,
3299 G_PKG_NAME,
3300 'OKL_API.G_RET_STS_UNEXP_ERROR',
3301 x_msg_count,
3302 x_msg_data,
3303 '_PVT'
3304 );
3305 WHEN OTHERS THEN
3306 IF (is_debug_exception_on) THEN
3307 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
3308 || sqlcode || ' , SQLERRM : ' || sqlerrm);
3309 END IF;
3310
3311 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
3312 (
3313 l_api_name,
3314 G_PKG_NAME,
3315 'OTHERS',
3316 x_msg_count,
3317 x_msg_data,
3318 '_PVT'
3319 );
3320 END lease_loan_termination;
3321
3322 -- Start of comments
3323 --
3324 -- Procedure Name : get_set_quote_dates
3325 -- Desciption : gets the quote eff dates and sets global variables with those
3326 -- Business Rules :
3327 -- Parameters :
3328 -- Version : 1.0
3329 -- History : RMUNJULU EDAT created
3330 --
3331 -- End of comments
3332 PROCEDURE get_set_quote_dates(
3333 p_qte_id IN NUMBER,
3334 p_trn_date IN DATE DEFAULT NULL,
3335 x_return_status OUT NOCOPY VARCHAR2) IS
3336
3337 -- get the quote dates
3338 CURSOR quote_dates_csr (p_quote_id IN NUMBER) IS
3339 SELECT trunc(qte.date_effective_from),
3340 trunc(qte.date_accepted)
3341 FROM okl_trx_quotes_b qte
3342 WHERE qte.id = p_quote_id;
3343
3344 l_eff_from DATE;
3345 l_accpt DATE;
3346
3347 l_trn_date DATE;
3348 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'get_set_quote_dates';
3349 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
3350 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
3351 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
3352
3353 BEGIN
3354 IF (is_debug_procedure_on) THEN
3355 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
3356 END IF;
3357 IF (is_debug_statement_on) THEN
3358 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_qte_id: '|| p_qte_id);
3359 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_trn_date: '|| p_trn_date);
3360 END IF;
3361
3362 x_return_status := OKL_API.g_ret_sts_success;
3363
3364 SELECT SYSDATE INTO l_trn_date FROM DUAL;
3365
3366 -- if quote_id exists then
3367 IF p_qte_id IS NOT NULL
3368 AND p_qte_id <> OKL_API.G_MISS_NUM THEN
3369
3370 -- get quote dates
3371 OPEN quote_dates_csr (p_qte_id);
3372 FETCH quote_dates_csr INTO l_eff_from, l_accpt;
3373 CLOSE quote_dates_csr;
3374
3375 -- set global variables
3376 g_quote_eff_from_date := l_eff_from;
3377 g_quote_accept_date := l_accpt;
3378 g_quote_exists := 'Y';
3379
3380 ELSE -- quote does not exist
3381
3382 g_quote_exists := 'N';
3383
3384 IF p_trn_date IS NOT NULL THEN
3385 g_transaction_date := p_trn_date;
3386 ELSE
3387 g_transaction_date := l_trn_date;
3388 END IF;
3389
3390 END IF;
3391 IF (is_debug_procedure_on) THEN
3392 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
3393 END IF;
3394
3395 EXCEPTION
3396
3397 WHEN OTHERS THEN
3398 IF (is_debug_exception_on) THEN
3399 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
3400 || sqlcode || ' , SQLERRM : ' || sqlerrm);
3401 END IF;
3402
3403 x_return_status := OKL_API.g_ret_sts_error;
3404
3405 -- Set the oracle error message
3406 OKL_API.set_message(
3407 p_app_name => OKC_API.G_APP_NAME,
3408 p_msg_name => g_unexpected_error,
3409 p_token1 => g_sqlcode_token,
3410 p_token1_value => SQLCODE,
3411 p_token2 => g_sqlerrm_token,
3412 p_token2_value => SQLERRM);
3413
3414 END get_set_quote_dates;
3415
3416 -- Start of comments
3417 --
3418 -- Procedure Name : process_discount_subsidy
3419 -- Desciption : method to handle subsidy and discount refund
3420 -- Business Rules :
3421 -- Parameters :
3422 -- Version : 1.0
3423 -- History : RMUNJULU 26-NOV-03 2484327 Added code to get accrual_stream_type_id and pass to accrual_api
3424 -- Added Code to pass set_of_books_id to create AP invoice
3425 -- : RMUNJULU 08-DEC-03 3280473 Changed code to get the subsidy subline amount
3426 -- used for refund, instead of subsidy amount for the whole financial
3427 -- line
3428 -- : rmunjulu EDAT Added code to get the quote eff date and quote accpt date
3429 -- and set the dates accordingly
3430 -- : rmunjulu EDAT Changed code to set quote_eff dates using termination date if no quote
3431 -- : rmunjulu 4399352 changed to get subsidy income accrual sty id from stream generation template
3432 -- :sosharma build R12 replaced the procedure calls to create AP header,lines and accounting with
3433 -- a single call to disbursement API OKL_CREATE_DISB_TRANS_PVT.create_disb_trx
3434 -- End of comments
3435 PROCEDURE process_discount_subsidy(
3436 p_api_version IN NUMBER,
3437 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3438 x_return_status OUT NOCOPY VARCHAR2,
3439 x_msg_count OUT NOCOPY NUMBER,
3440 x_msg_data OUT NOCOPY VARCHAR2,
3441 p_term_rec IN term_rec_type,
3442 p_call_origin IN VARCHAR2 DEFAULT NULL,
3443 p_termination_date IN DATE) IS
3444
3445 p_asset_tbl_k OKL_AM_LEASE_TRMNT_PVT.klev_tbl_type;
3446 l_asset_tbl_l OKL_AM_CNTRCT_LN_TRMNT_PVT.klev_tbl_type;
3447 l_asset_tbl OKL_AM_LEASE_TRMNT_PVT.klev_tbl_type;
3448 l_asbv_tbl okl_subsidy_process_pvt.asbv_tbl_type;
3449 l_sty_id NUMBER;
3450 l_parent_line_id NUMBER;
3451 l_date_accepted DATE;
3452 l_subsidy_end_date DATE;
3453 l_contract_end_date DATE;
3454 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'process_discount_subsidy';
3455 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
3456 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
3457 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
3458 /* sosharma 12-jan-2007
3459 Build: R12
3460 declared table of type okl_tpl_pvt.tplv_tbl_type to be passed as an input to the
3461 OKL_CREATE_DISB_TRANS_PVT. create_disb_trx
3462 Start changes
3463 */
3464 l_tplv_tbl okl_tpl_pvt.tplv_tbl_type;
3465 x_tplv_tbl okl_tpl_pvt.tplv_tbl_type;
3466 /*
3467 sosharma End changes
3468 */
3469 l_sub_sty_id NUMBER; -- SMODUGA for subsidy stream type id
3470 --**SMODUGA added for ap_invoice lines
3471 l_currency_conversion_type okl_k_headers.currency_conversion_type%TYPE;
3472 l_currency_conversion_date okl_k_headers.currency_conversion_date%TYPE;
3473 l_currency_conversion_rate okl_k_headers.currency_conversion_rate%TYPE;
3474 --**SMODUGA added for ap_invoice lines
3475 l_quote_number NUMBER;
3476 l_api_name CONSTANT VARCHAR2(30) := 'process_discount_subsidy';
3477 l_api_version CONSTANT NUMBER := 1;
3478 l_acceleration_rec OKL_GENERATE_ACCRUALS_PVT.acceleration_rec_type;
3479 l_tapv_rec okl_tap_pvt.tapv_rec_type ;
3480 x_tapv_rec okl_tap_pvt.tapv_rec_type ;
3481 --**SMODUGA added for ap_invoice lines
3482 l_tplv_rec okl_tpl_pvt.tplv_rec_type;
3483 x_tplv_rec okl_tpl_pvt.tplv_rec_type;
3484 -- ** END SMODUGA added for ap_invoice lines
3485 lx_subsidy_amount NUMBER;
3486 l_app_id NUMBER;
3487 l_trx_type_ID NUMBER;
3488 l_document_category VARCHAR2(100):= 'OKL Lease Pay Invoices';
3489 lx_dbseqnm VARCHAR2(2000):= '';
3490 lx_dbseqid NUMBER(38):= NULL;
3491 l_formula_name VARCHAR2(150);
3492 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3493 l_msg_count NUMBER := OKL_API.G_MISS_NUM;
3494 l_msg_data VARCHAR2(2000);
3495
3496 --akrangan for Bug 5669097 Fix Start
3497 v_flag varchar2(1) :='N';
3498 indx number :=1;
3499 TYPE l_acceleration_tbl_type IS TABLE OF
3500 OKL_GENERATE_ACCRUALS_PVT.acceleration_rec_type
3501 INDEX BY BINARY_INTEGER;
3502 l_acceleration_tbl l_acceleration_tbl_type;
3503 --akrangan for Bug 5669097 Fix End
3504 -- Get all active subsidies for this contract
3505 -- RMUNJULU *** Added code to get accrual_stream_type_id
3506 -- SMODUGA *** Added code to get subsidy_line_id
3507 CURSOR c_active_subsidies(c_parent_line_id NUMBER,c_contract_id NUMBER)IS
3508 select KLE1.amount,sub.stream_type_id, sub.refund_formula_id,
3509 sub.subsidy_calc_basis, sub.recourse_yn,
3510 sub.termination_refund_basis, sub.receipt_method_code,
3511 sub.accounting_method_code accounting_method_code,sub.effective_to_date,
3512 sub.vendor_id,sub.currency_code,
3513 -- to_number(sgn.VALUE) accrual_stream_type_id, --RMUNJULU *** --rmunjulu bug 4399352
3514 cle1.id subsidy_line_id, -- smoduga ***
3515 nvl(kle1.subsidy_override_amount,nvl(kle1.amount,0)) subsidy_amount -- RMUNJULU 3280473
3516 from OKL_K_LINES KLE1,
3517 OKC_K_LINES_B CLE1,
3518 OKC_LINE_STYLES_B LS1,
3519 okl_subsidies_b SUB,
3520 okl_subsidies_tl subt,
3521 OKC_STATUSES_V STS1
3522 -- ,okl_sgn_translations sgn --RMUNJULU *** --rmunjulu bug 4399352
3523 where KLE1.ID = CLE1.ID
3524 AND CLE1.LSE_ID = LS1.ID
3525 AND LS1.LTY_CODE ='SUBSIDY'
3526 AND cle1.dnz_chr_id = c_contract_id
3527 AND CLE1.STS_CODE = STS1.CODE
3528 AND CLE1.STS_CODE <> 'ABANDONED'
3529 AND cle1.cle_id= c_parent_line_id
3530 AND SUB.ID = KLE1.SUBSIDY_ID
3531 AND SUBT.ID = SUB.ID
3532 And subt.language = userenv('LANG') ;
3533 --AND sgn.jtot_object1_code = 'OKL_STRMTYP' --RMUNJULU *** --rmunjulu bug 4399352
3534 --AND sgn.object1_id1 = to_char(sub.stream_type_id); --RMUNJULU *** --rmunjulu bug 4399352
3535
3536
3537 -- get accepted date for the termination quote
3538 cursor c_term_quote(c_quote_id number) is
3539 select quote_number
3540 from okl_trx_quotes_v
3541 where id = c_quote_id
3542 AND accepted_yn ='Y';
3543
3544 -- get contract_end_date
3545 cursor c_contract_eff_to(c_contract_id number) is
3546 select end_date
3547 from okc_k_headers_b
3548 where id = c_contract_id;
3549
3550 --**SMODUGA added for currency conversion info
3551 -- get currency conversion info
3552 cursor c_currency_conversion (c_contract_id number) is
3553 select CURRENCY_CONVERSION_TYPE,CURRENCY_CONVERSION_RATE,
3554 CURRENCY_CONVERSION_DATE
3555 from okl_k_headers
3556 where id = c_contract_id;
3557 --**END SMODUGA added for currency conversion info
3558
3559 -- getting App ID
3560 CURSOR c_app_info IS
3561 SELECT APPLICATION_ID
3562 FROM FND_APPLICATION
3563 WHERE APPLICATION_SHORT_NAME = 'OKL' ;
3564
3565 -- ***SMODUGA***--
3566 --changed to get vendor_id and vendor site id for generating AP invoice
3567 -- getting vendor site id
3568 CURSOR c_vendor_info (p_subsidy_line_id NUMBER) IS
3569 SELECT pay.vendor_id,
3570 pay.pay_site_id
3571 FROM okl_party_payment_dtls_v pay,
3572 okc_k_party_roles_v party
3573 WHERE pay.cpl_id = party.id
3574 AND party.cle_id = p_subsidy_line_id ;
3575
3576 -- *** END SMODUGA***--
3577
3578 --**SMODUGA added for contract product
3579 --getting contract product id
3580 CURSOR pdt_id_csr ( p_khr_id NUMBER ) IS
3581 SELECT khr.pdt_id
3582 FROM okl_k_headers khr
3583 WHERE khr.id = p_khr_id;
3584 --**END SMODUGA added for contract product
3585
3586 -- Transaction type
3587 CURSOR c_trx_type (c_name VARCHAR2, c_language VARCHAR2) IS
3588 SELECT id
3589 FROM okl_trx_types_tl
3590 WHERE name = c_name
3591 AND language = c_language;
3592
3593 -- GET formula name
3594 CURSOR c_formula (c_refund_formula_id NUMBER) IS
3595 SELECT NAME
3596 FROM OKL_FORMULAE_V
3597 WHERE ID = c_refund_formula_id;
3598
3599 -- SMODUGA added for getting acceleration till date
3600 -- get acceleration till date
3601
3602 CURSOR get_accel_till_csr (c_khr_id IN NUMBER, c_accrual_sty_id IN NUMBER) IS
3603 SELECT max(stream_element_date) accelerate_till_date
3604 FROM okl_strm_elements_v sel,
3605 okl_streams stm
3606 where SEL.STM_ID = STM.ID
3607 and STM.STY_ID = c_accrual_sty_id
3608 and STM.khr_id = c_khr_id
3609 AND STM.active_yn = 'Y'
3610 AND STM.say_code = 'CURR';
3611
3612 -- END SMODUGA --
3613 l_sub_rec c_active_subsidies%ROWTYPE;
3614 l_sob_id number; -- RMUNJULU *** Added
3615
3616 -- rmunjulu EDAT
3617 l_quote_accpt_date DATE;
3618 l_quote_eff_date DATE;
3619 l_valid_gl_date DATE;
3620 --Bug# 3999921: pagarg +++ T and A ++++
3621 l_release_basis VARCHAR2(30);
3622
3623 l_accrual_sty_id NUMBER; -- rmunjulu 4399352
3624 l_accrual_sty_id_rep NUMBER; -- MGAAP 7263041
3625 l_trx_number OKL_TRX_CONTRACTS.TRX_NUMBER%TYPE; -- MGAAP 7263041
3626
3627 -- rmunjulu 4622198
3628 CURSOR khr_dtls_csr ( p_khr_id NUMBER ) IS
3629 SELECT chr.scs_code
3630 FROM okc_k_headers_b chr
3631 WHERE chr.id = p_khr_id;
3632
3633 -- rmunjulu 4622198
3634 l_scs_code OKC_K_HEADERS_B.scs_code%TYPE;
3635 l_fact_synd_code FND_LOOKUPS.lookup_code%TYPE;
3636 l_inv_acct_code OKC_RULES_B.rule_information1%TYPE;
3637 --akrangan Bug 5526955 fix start
3638 CURSOR check_accrual_previous_csr IS
3639 SELECT NVL(CHK_ACCRUAL_PREVIOUS_MNTH_YN,'N')
3640 FROM OKL_SYSTEM_PARAMS;
3641
3642 l_accrual_previous_mnth_yn VARCHAR2(3);
3643 --akrangan Bug 5526955 fix start
3644 FUNCTION get_invoice_number(
3645 p_app_id IN NUMBER,
3646 p_cat_code IN VARCHAR2,
3647 p_sob_id IN NUMBER,
3648 p_met_code IN VARCHAR2,
3649 p_trx_date IN DATE,
3650 p_dbseqnum IN OUT NOCOPY VARCHAR2,
3651 p_dbseqid IN OUT NOCOPY NUMBER
3652 ) RETURN NUMBER IS
3653 l_row_notfound BOOLEAN := TRUE;
3654 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'get_invoice_number';
3655 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
3656 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
3657 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
3658 BEGIN
3659 IF (is_debug_procedure_on) THEN
3660 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
3661 END IF;
3662 IF (is_debug_statement_on) THEN
3663 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_app_id: '|| p_app_id);
3664 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_cat_code: '|| p_cat_code);
3665 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_sob_id: '|| p_sob_id);
3666 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_met_code: '|| p_met_code);
3667 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_trx_date: '|| p_trx_date);
3668 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_dbseqnum: '|| p_dbseqnum);
3669 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_dbseqid: '|| p_dbseqid);
3670 END IF;
3671 l_tapv_rec.Invoice_Number := fnd_seqnum.get_next_sequence
3672 (appid => p_app_id,
3673 cat_code => p_cat_code,
3674 sobid => p_sob_id,
3675 met_code => p_met_code,
3676 trx_date => p_trx_date,
3677 dbseqnm => p_dbseqnum,
3678 dbseqid => p_dbseqid);
3679 IF (is_debug_procedure_on) THEN
3680 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
3681 END IF;
3682 IF (is_debug_statement_on) THEN
3683 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Returning l_tapv_rec.Invoice_Number: '||l_tapv_rec.Invoice_Number);
3684 END IF;
3685 RETURN l_tapv_rec.Invoice_Number;
3686
3687 EXCEPTION
3688 WHEN OTHERS THEN
3689 IF (is_debug_exception_on) THEN
3690 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
3691 || sqlcode || ' , SQLERRM : ' || sqlerrm);
3692 END IF;
3693 OKL_API.Set_Message(p_app_name => OKL_API.G_APP_NAME,
3694 p_msg_name => 'OKL_UNEXPECTED_ERROR',
3695 p_token1 => 'OKL_SQLCODE',
3696 p_token1_value => SQLCODE,
3697 p_token2 => 'OKL_SQLERRM',
3698 p_token2_value => SQLERRM);
3699 END get_invoice_number;
3700 BEGIN
3701 IF (is_debug_procedure_on) THEN
3702 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
3703 END IF;
3704 IF (is_debug_statement_on) THEN
3705 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_call_origin: '|| p_call_origin);
3706 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_termination_date: '|| p_termination_date);
3707 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);
3708 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);
3709 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);
3710 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);
3711 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);
3712 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);
3713 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);
3714 END IF;
3715 --Check API version, initialize message list and create savepoint.
3716 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3717 G_PKG_NAME,
3718 p_init_msg_list,
3719 l_api_version,
3720 p_api_version,
3721 '_PVT',
3722 x_return_status);
3723 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3724 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3725 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3726 RAISE OKL_API.G_EXCEPTION_ERROR;
3727 END IF;
3728
3729
3730 -- Initialize return_status
3731 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3732
3733 -- rmunjulu +++++++++ Effective Dated Termination -- start ++++++++++++++++
3734
3735 -- rmunjulu EDAT
3736 -- If quote exists then accnting date is quote accept date else sysdate
3737 IF nvl(okl_am_lease_loan_trmnt_pvt.g_quote_exists,'N') = 'Y' THEN
3738
3739 l_quote_accpt_date := okl_am_lease_loan_trmnt_pvt.g_quote_accept_date;
3740 l_quote_eff_date := okl_am_lease_loan_trmnt_pvt.g_quote_eff_from_date;
3741
3742 ELSE
3743
3744 l_quote_accpt_date := p_termination_date;
3745 l_quote_eff_date := p_termination_date;
3746
3747 END IF;
3748
3749 -- rmunjulu EDAT
3750 -- get valid GL Date for acceptance date
3751 l_valid_gl_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date( p_gl_date => l_quote_accpt_date);
3752
3753
3754 -- rmunjulu +++++++++ Effective Dated Termination -- end ++++++++++++++++
3755
3756
3757 -- Determine call origin
3758 IF p_call_origin = 'PARTIAL' THEN -- [1]
3759
3760 IF (is_debug_statement_on) THEN
3761 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_CNTRCT_LN_TRMNT_PVT.get_lines');
3762 END IF;
3763 -- get line details from OKL_AM_CNTRCT_LN_TRMNT
3764 OKL_AM_CNTRCT_LN_TRMNT_PVT.get_lines(
3765 p_term_rec => p_term_rec,
3766 x_klev_tbl => l_asset_tbl_l,
3767 x_return_status => l_return_status);
3768 IF (is_debug_statement_on) THEN
3769 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_CNTRCT_LN_TRMNT_PVT.get_lines , return status: ' || l_return_status);
3770 END IF;
3771
3772 IF l_asset_tbl_l.count > 0 THEN --[2]
3773 -- populate local table
3774 FOR i in l_asset_tbl_l.first..l_asset_tbl_l.last LOOP --[ L1 ]
3775 l_asset_tbl(i).p_kle_id := l_asset_tbl_l(i).p_kle_id;
3776 l_asset_tbl(i).p_asset_name := l_asset_tbl_l(i).p_asset_name;
3777 END LOOP; -- [ L1 ]
3778
3779 END IF; -- [2]
3780
3781
3782 ELSE -- Full Termination
3783
3784 IF (is_debug_statement_on) THEN
3785 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.get_contract_lines');
3786 END IF;
3787 -- get line details from OKL_AM_LEASE_TRMNT_PVT
3788 OKL_AM_LEASE_TRMNT_PVT.get_contract_lines(
3789 p_api_version => p_api_version,
3790 p_init_msg_list => OKL_API.G_FALSE,
3791 x_return_status => l_return_status,
3792 x_msg_count => l_msg_count,
3793 x_msg_data => l_msg_data,
3794 p_term_rec => p_term_rec,
3795 x_klev_tbl => l_asset_tbl);
3796 IF (is_debug_statement_on) THEN
3797 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);
3798 END IF;
3799
3800 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3801 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3802 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3803 RAISE OKL_API.G_EXCEPTION_ERROR;
3804 END IF;
3805
3806 END IF; -- [1]
3807
3808 -- rmunjulu 4622198 SPECIAL_ACCNT Get contract details
3809 OPEN khr_dtls_csr (p_term_rec.p_contract_id);
3810 FETCH khr_dtls_csr INTO l_scs_code;
3811 CLOSE khr_dtls_csr;
3812
3813 IF (is_debug_statement_on) THEN
3814 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_SECURITIZATION_PVT.check_khr_ia_associated');
3815 END IF;
3816 -- rmunjulu 4622198 SPECIAL_ACCNT Get special accounting details
3817 OKL_SECURITIZATION_PVT.check_khr_ia_associated(
3818 p_api_version => l_api_version
3819 ,p_init_msg_list => OKL_API.G_FALSE
3820 ,x_return_status => l_return_status
3821 ,x_msg_count => l_msg_count
3822 ,x_msg_data => l_msg_data
3823 ,p_khr_id => p_term_rec.p_contract_id
3824 ,p_scs_code => l_scs_code
3825 ,p_trx_date => l_quote_accpt_date
3826 ,x_fact_synd_code => l_fact_synd_code
3827 ,x_inv_acct_code => l_inv_acct_code
3828 );
3829 IF (is_debug_statement_on) THEN
3830 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_SECURITIZATION_PVT.check_khr_ia_associated , return status: ' || l_return_status);
3831 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_fact_synd_code : ' || l_fact_synd_code);
3832 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_inv_acct_code : ' || l_inv_acct_code);
3833 END IF;
3834
3835 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3836 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3837 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3838 RAISE OKL_API.G_EXCEPTION_ERROR;
3839 END IF;
3840
3841 -- Loop through each asset and process
3842 IF l_asset_tbl.count > 0 THEN
3843 FOR i in l_asset_tbl.FIRST..l_asset_tbl.LAST LOOP --[ L2 ]
3844
3845 -- Get the subsidy lines for the financial asset line sent
3846 -- Check all active subsidies for the asset
3847 FOR l_sub_rec in c_active_subsidies(l_asset_tbl(i).p_kle_id,p_term_rec.p_contract_id) LOOP --[L3]
3848
3849 --Bug# 3999921: pagarg +++ T and A +++++++ Start ++++++++++
3850 --Check for release basis to either accelerate accruals or create AP invoice
3851 --for TER_RELEASE_WO_PURCHASE
3852 IF p_term_rec.p_quote_type = 'TER_RELEASE_WO_PURCHASE'
3853 THEN
3854 IF (is_debug_statement_on) THEN
3855 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_SUBSIDY_PROCESS_PVT.GET_RELK_TERMN_BASIS');
3856 END IF;
3857 OKL_SUBSIDY_PROCESS_PVT.GET_RELK_TERMN_BASIS(
3858 p_api_version => p_api_version,
3859 p_init_msg_list => OKL_API.G_FALSE,
3860 x_return_status => l_return_status,
3861 x_msg_count => l_msg_count,
3862 x_msg_data => l_msg_data,
3863 p_chr_id => p_term_rec.p_contract_id,
3864 p_subsidy_id => l_sub_rec.subsidy_line_id,
3865 x_release_basis => l_release_basis);
3866 IF (is_debug_statement_on) THEN
3867 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_SUBSIDY_PROCESS_PVT.GET_RELK_TERMN_BASIS , return status: ' || l_return_status);
3868 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_release_basis : ' || l_release_basis);
3869 END IF;
3870
3871 IF l_sub_rec.accounting_method_code = 'AMORTIZE'
3872 THEN
3873 IF l_release_basis = 'ACCELERATE'
3874 THEN
3875
3876 IF (is_debug_statement_on) THEN
3877 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_STREAMS_UTIL.get_dependent_stream_type');
3878 END IF;
3879 -- SECHAWLA 29-DEC-05 4911502 : moved from above : begin
3880 -- rmunjulu 4399352 Added the following for bug 4399352 - start
3881 OKL_STREAMS_UTIL.get_dependent_stream_type(
3882 p_khr_id => p_term_rec.p_contract_id,
3883 p_primary_sty_id => l_sub_rec.stream_type_id,
3884 p_dependent_sty_purpose => 'SUBSIDY_INCOME',
3885 x_return_status => l_return_status,
3886 x_dependent_sty_id => l_accrual_sty_id);
3887 IF (is_debug_statement_on) THEN
3888 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_STREAMS_UTIL.get_dependent_stream_type , return status : ' || l_return_status);
3889 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_accrual_sty_id : ' || l_accrual_sty_id);
3890 END IF;
3891
3892 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3893 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3894 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3895 RAISE OKL_API.G_EXCEPTION_ERROR;
3896 END IF;
3897 -- rmunjulu 4399352 Added the following for bug 4399352 - end
3898 -- SECHAWLA 29-DEC-05 4911502 : moved from above : end
3899
3900 -- Fetch stream type id for subsidy and accrual streams
3901 l_sty_id := l_accrual_sty_id; -- rmunjulu 4399352
3902 --akrangan for bug 5669097 fix start
3903 IF l_acceleration_tbl.COUNT>0 THEN
3904 FOR c IN l_acceleration_tbl.first .. l_acceleration_tbl.last
3905 LOOP
3906 IF (l_acceleration_tbl(c).khr_id = p_term_rec.p_contract_id
3907 AND l_acceleration_tbl(c).sty_id =l_sty_id
3908 AND l_acceleration_tbl(c).kle_id =l_asset_tbl(i).p_kle_id )
3909 THEN
3910 v_flag :='Y';
3911 EXIT;
3912 ELSE
3913 v_flag :='N';
3914 END IF;
3915 END LOOP;
3916 END IF;
3917 l_acceleration_tbl(indx).khr_id :=p_term_rec.p_contract_id;
3918 l_acceleration_tbl(indx).sty_id :=l_sty_id;
3919 l_acceleration_tbl(indx).kle_id :=l_asset_tbl(i).p_kle_id ;
3920 indx := indx + 1;
3921 -- akrangan for bug 5669097 fix end
3922 OPEN get_accel_till_csr(p_term_rec.p_contract_id, l_sty_id);
3923 FETCH get_accel_till_csr INTO l_acceleration_rec.accelerate_till_date;
3924 CLOSE get_accel_till_csr ;
3925 --Bug 5852720 by srsreeni starts
3926 -- fix for bug -- 5610960 -- added below condition
3927 -- If quote exists then cancelation date is quote eff from date else sysdate
3928 IF nvl(okl_am_lease_loan_trmnt_pvt.g_quote_exists,'N') = 'Y' THEN
3929 --Bug 5852720 by srsreeni ends
3930 --akrangan Bug 5526955 fix start
3931 --Based on CHK_ACCRUAL_PREVIOUS_MNTH_YN setup
3932 --check accruals till quote eff date OR previous month last date
3933 OPEN check_accrual_previous_csr;
3934 FETCH check_accrual_previous_csr INTO l_accrual_previous_mnth_yn;
3935 CLOSE check_accrual_previous_csr;
3936
3937 IF nvl(l_accrual_previous_mnth_yn,'N') = 'N' THEN
3938 l_acceleration_rec.accelerate_from_date := TRUNC(LAST_DAY(l_quote_eff_date) + 1);
3939 ELSE
3940 l_acceleration_rec.accelerate_from_date := LAST_DAY(TRUNC(l_quote_eff_date, 'MONTH')-1)+1;
3941 END IF;
3942 --akrangan Bug 5526955 fix end
3943 --Bug 5852720 by srsreeni starts
3944 ELSE
3945 l_acceleration_rec.accelerate_from_date := TRUNC(LAST_DAY(l_quote_eff_date) + 1);
3946 END IF;
3947 --Bug 5852720 by srsreeni ends
3948 --pre populate the accrual rec
3949 l_acceleration_rec.khr_id := p_term_rec.p_contract_id; -- Id of the contract whose stream type needs to be accelerated
3950 l_acceleration_rec.sty_id := l_sty_id;-- Id of the stream type which needs to be accelerated
3951 l_acceleration_rec.acceleration_date := l_valid_gl_date; -- Date of acceleration (Transaction date)
3952 l_acceleration_rec.kle_id := l_asset_tbl(i).p_kle_id; --added for handling partial terminations.
3953
3954 -- Termination quote number
3955 OPEN c_term_quote(p_term_rec.p_quote_id);
3956 FETCH c_term_quote INTO l_quote_number;
3957 IF c_term_quote%FOUND
3958 THEN
3959 l_acceleration_rec.description := 'Accrual acceleration for Asset number '
3960 ||l_asset_tbl(i).p_asset_name||
3961 'and Contract number '||p_term_rec.p_contract_number ||
3962 'upon acceptance of ' || l_quote_number;
3963 ELSE
3964 l_acceleration_rec.description := 'Accrual acceleration for Asset number '
3965 ||l_asset_tbl(i).p_asset_name||
3966 'and Contract number '||p_term_rec.p_contract_number;
3967 END IF;
3968 CLOSE c_term_quote;
3969
3970 l_acceleration_rec.accrual_rule_yn := 'N';
3971
3972 --Accelerate Income Recognization
3973 -- akrangan for bug 5669097 start
3974 IF v_flag ='N' THEN
3975 IF (is_debug_statement_on) THEN
3976 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals');
3977 END IF;
3978 -- akrangan for bug 5669097 End
3979 OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals (
3980 p_api_version => p_api_version,
3981 p_init_msg_list => OKL_API.G_FALSE,
3982 x_return_status => l_return_status,
3983 x_msg_count => l_msg_count,
3984 x_msg_data => l_msg_data,
3985 p_acceleration_rec => l_acceleration_rec,
3986 x_trx_number => l_trx_number);
3987 IF (is_debug_statement_on) THEN
3988 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals , return status : ' || l_return_status);
3989 END IF;
3990
3991 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
3992 OKL_API.set_message(
3993 p_app_name => G_APP_NAME,
3994 p_msg_name => 'OKL_AM_SUBSIDY_INC_RECOG',
3995 p_token1 => 'ASSET_NUMBER',
3996 p_token1_value => l_asset_tbl(i).p_asset_name,
3997 p_token2 => 'CONTRACT_NUMBER',
3998 p_token2_value => p_term_rec.p_contract_number);
3999 END IF;
4000
4001 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4002 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4003 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4004 RAISE OKL_API.G_EXCEPTION_ERROR;
4005 END IF;
4006
4007 -- Start MGAAP 7263041
4008 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
4009 OKL_STREAMS_UTIL.get_dependent_stream_type_rep(
4010 p_khr_id => p_term_rec.p_contract_id,
4011 p_primary_sty_id => l_sub_rec.stream_type_id,
4012 p_dependent_sty_purpose => 'SUBSIDY_INCOME',
4013 x_return_status => l_return_status,
4014 x_dependent_sty_id => l_accrual_sty_id_rep);
4015 IF (is_debug_statement_on) THEN
4016 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_STREAMS_UTIL.get_dependent_stream_type , return status : ' || l_return_status);
4017 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_accrual_sty_id_rep : ' || l_accrual_sty_id_rep);
4018 END IF;
4019
4020 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
4021 l_acceleration_rec.sty_id := l_accrual_sty_id_rep;
4022 l_acceleration_rec.trx_number := l_trx_number;
4023
4024 OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals (
4025 p_api_version => p_api_version,
4026 p_init_msg_list => OKL_API.G_FALSE,
4027 x_return_status => l_return_status,
4028 x_msg_count => l_msg_count,
4029 x_msg_data => l_msg_data,
4030 p_acceleration_rec => l_acceleration_rec,
4031 p_representation_type => 'SECONDARY',
4032 x_trx_number => l_trx_number);
4033
4034 IF (is_debug_statement_on) THEN
4035 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals , return status : ' || l_return_status);
4036 END IF;
4037
4038 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4039 OKL_API.set_message(
4040 p_app_name => G_APP_NAME,
4041 p_msg_name => 'OKL_AM_SUBSIDY_INC_RECOG',
4042 p_token1 => 'ASSET_NUMBER',
4043 p_token1_value => l_asset_tbl(i).p_asset_name,
4044 p_token2 => 'CONTRACT_NUMBER',
4045 p_token2_value => p_term_rec.p_contract_number);
4046 END IF;
4047
4048 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4049 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4050 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4051 RAISE OKL_API.G_EXCEPTION_ERROR;
4052 END IF;
4053
4054 END IF;
4055 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; --Added by bkatraga for bug 10032334
4056 -- end MGAAP 7263041
4057
4058 -- akrangan for bug 5669097 start
4059 END IF;
4060 -- akrangan for bug 5669097 End
4061 ELSE -- l_release_basis = 'ACCELERATE'
4062 -------------------------------------------------
4063 --Gathering data for creating Invoice
4064 -------------------------------------------------
4065 l_sub_sty_id := l_sub_rec.stream_type_id;
4066 l_sob_id := okl_accounting_util.get_set_of_books_id;
4067 -- get currency conversion information
4068 OPEN c_currency_conversion(p_term_rec.p_contract_id);
4069 FETCH c_currency_conversion INTO l_currency_conversion_type,
4070 l_currency_conversion_rate,
4071 l_currency_conversion_date;
4072 CLOSE c_currency_conversion ;
4073
4074 -- Get Application Info
4075 OPEN c_app_info ;
4076 FETCH c_app_info INTO l_app_id;
4077 IF(c_app_info%NOTFOUND)
4078 THEN
4079 -- Change Message
4080 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_TRANSACTION',
4081 G_COL_NAME_TOKEN,'Billing');
4082 x_return_status := OKC_API.G_RET_STS_ERROR ;
4083 CLOSE c_app_info ;
4084 RAISE OKC_API.G_EXCEPTION_ERROR;
4085 END if ;
4086 CLOSE c_app_info;
4087
4088 -- get Vendor site Id
4089 OPEN c_vendor_info (l_sub_rec.subsidy_line_id);
4090 FETCH c_vendor_info INTO l_tapv_rec.vendor_id, l_tapv_rec.IPVS_ID;
4091 IF(c_vendor_info%NOTFOUND) THEN
4092 -- Change Message
4093 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_VENDOR_SITE');
4094 x_return_status := OKC_API.G_RET_STS_ERROR ;
4095 CLOSE c_vendor_info ;
4096 RAISE OKC_API.G_EXCEPTION_ERROR;
4097 END if ;
4098 CLOSE c_vendor_info;
4099
4100 l_tapv_rec.sfwt_flag := 'N' ;
4101 l_tapv_rec.TRX_STATUS_CODE := 'ENTERED' ;
4102 l_tapv_rec.currency_code := l_sub_rec.currency_code;
4103
4104 l_tapv_rec.CURRENCY_CONVERSION_TYPE := l_currency_conversion_type;
4105 l_tapv_rec.CURRENCY_CONVERSION_RATE := l_currency_conversion_rate;
4106 l_tapv_rec.CURRENCY_CONVERSION_DATE := l_currency_conversion_date;
4107 l_tapv_rec.SET_OF_BOOKS_ID := l_sob_id;
4108
4109 -- GET TRANSACTION TYPE
4110 OPEN c_trx_type ('Disbursement', 'US');
4111 FETCH c_trx_type INTO l_trx_type_ID;
4112 IF(c_trx_type%NOTFOUND)
4113 THEN
4114 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_TRANSACTION',
4115 G_COL_NAME_TOKEN,'Disbursement');
4116 x_return_status := OKC_API.G_RET_STS_ERROR ;
4117 CLOSE c_trx_type ;
4118 RAISE OKC_API.G_EXCEPTION_ERROR;
4119 END if ;
4120 CLOSE c_trx_type ;
4121 l_tapv_rec.TRY_ID := l_trx_type_ID;
4122 l_tapv_rec.AMOUNT := lx_subsidy_amount;
4123 l_tapv_rec.invoice_type := 'STANDARD';
4124 IF (is_debug_statement_on) THEN
4125 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Getting invoice number');
4126 END IF;
4127 l_tapv_rec.Invoice_number := get_invoice_number(
4128 p_app_id => l_app_id,
4129 p_cat_code =>l_document_category,
4130 p_sob_id =>l_tapv_rec.SET_OF_BOOKS_ID,
4131 p_met_code => 'A',
4132 p_trx_date => SYSDATE,
4133 p_dbseqnum => lx_dbseqnm,
4134 p_dbseqid => lx_dbseqid);
4135
4136 l_tapv_rec.WORKFLOW_YN := 'N';
4137 l_tapv_rec.CONSOLIDATE_YN := 'N';
4138 l_tapv_rec.WAIT_VENDOR_INVOICE_YN := 'N';
4139
4140 -- setting all three dates to termination date instead of SYSDATE
4141 l_tapv_rec.DATE_INVOICED := l_quote_accpt_date;
4142 l_tapv_rec.DATE_GL := l_quote_accpt_date;
4143 l_tapv_rec.DATE_ENTERED := l_quote_accpt_date;
4144 l_tapv_rec.object_version_number := 1;
4145 --20-NOV-2006 ANSETHUR R12B - LEGAL ENTITY UPTAKE PROJECT
4146 l_tapv_rec.legal_entity_id :=OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_term_rec.p_contract_id);
4147
4148 SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
4149 DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
4150 DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
4151 DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
4152 mo_global.get_current_org_id() INTO l_tapv_rec.REQUEST_ID,
4153 l_tapv_rec.PROGRAM_APPLICATION_ID,
4154 l_tapv_rec.PROGRAM_ID,
4155 l_tapv_rec.PROGRAM_UPDATE_DATE,
4156 l_tapv_rec.ORG_ID
4157 FROM dual;
4158
4159
4160 ----------------------------------------------------
4161 -- Populate internal AP invoice Lines Record
4162 ----------------------------------------------------
4163
4164 /* sosharma 17-01-2007,added assignment of khr_id to l_tapv_rec
4165 Start Changes
4166 */
4167 l_tplv_rec.KHR_ID := p_term_rec.p_contract_id;
4168 /* End changes */
4169 l_tplv_rec.amount := l_tapv_rec.amount;
4170 l_tplv_rec.sty_id := l_sub_sty_id;
4171 l_tplv_rec.inv_distr_line_code := 'MANUAL';
4172 l_tplv_rec.line_number := 1;
4173 l_tplv_rec.org_id := l_tapv_rec.org_id;
4174 l_tplv_rec.disbursement_basis_code := 'BILL_DATE';
4175 /* sosharma 16-01-2007
4176 Assigned the record l_tplv_rec to table
4177 Start Changes */
4178 l_tplv_tbl(0):=l_tplv_rec;
4179 /* sosharma
4180 End changes
4181 */
4182 /*sosharma 12-jan-07
4183 Build:R12
4184 Added the call to disbursement procedure ,which is having the consolidated functionality of creating AP lines,header and AP accounting
4185 */
4186 IF (is_debug_statement_on) THEN
4187 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_CREATE_DISB_TRANS_PVT.create_disb_trx');
4188 END IF;
4189 OKL_CREATE_DISB_TRANS_PVT.create_disb_trx(p_api_version => l_api_version
4190 ,p_init_msg_list => OKL_API.G_FALSE
4191 ,x_return_status => l_return_status
4192 ,x_msg_count => x_msg_count
4193 ,x_msg_data => x_msg_data
4194 ,p_tapv_rec => l_tapv_rec
4195 ,p_tplv_tbl => l_tplv_tbl
4196 ,x_tapv_rec => x_tapv_rec
4197 ,x_tplv_tbl => x_tplv_tbl
4198 );
4199 IF (is_debug_statement_on) THEN
4200 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_CREATE_DISB_TRANS_PVT.create_disb_trx , return status : ' || l_return_status);
4201 END IF;
4202 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4203 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4204 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4205 RAISE OKL_API.G_EXCEPTION_ERROR;
4206 END IF;
4207
4208 x_tplv_rec := x_tplv_tbl(x_tplv_tbl.FIRST);
4209
4210 /*End Changes sosharma */
4211
4212 END IF; -- l_release_basis = 'ACCELERATE'
4213 END IF ; -- Accounting method
4214 ELSE -- quote type condition for TER_RELEASE_WO_PURCHASE
4215 --Bug# 3999921: pagarg +++ T and A +++++++ End ++++++++++
4216 --Current processing for quote type other than TER_RELEASE_WO_PURCHASE
4217 -- Fetch stream type id for subsidy and accrual streams
4218 l_sub_sty_id := l_sub_rec.stream_type_id; -- ***SMODUGA Subsidy stream type for invoice generation***
4219
4220 --SECHAWLA 29-DEC-05 4911502 : commenetd out
4221 --l_sty_id := l_accrual_sty_id; --RMUNJULU *** Changed to pass accrual_stream_type_id -- rmunjulu 4399352
4222
4223 l_sob_id := okl_accounting_util.get_set_of_books_id; --RMUNJULU *** Added code to get set of books id
4224
4225 --check accounting method
4226 IF l_sub_rec.accounting_method_code = 'NET' THEN --[3]
4227
4228 null; -- close sub line
4229
4230 ELSIF l_sub_rec.accounting_method_code = 'AMORTIZE'THEN
4231
4232 IF (is_debug_statement_on) THEN
4233 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_STREAMS_UTIL.get_dependent_stream_type');
4234 END IF;
4235 -- SECHAWLA 29-DEC-05 4911502 : added begin
4236 OKL_STREAMS_UTIL.get_dependent_stream_type(
4237 p_khr_id => p_term_rec.p_contract_id,
4238 p_primary_sty_id => l_sub_rec.stream_type_id,
4239 p_dependent_sty_purpose => 'SUBSIDY_INCOME', -- ***** confirm
4240 x_return_status => l_return_status,
4241 x_dependent_sty_id => l_accrual_sty_id);
4242 IF (is_debug_statement_on) THEN
4243 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_STREAMS_UTIL.get_dependent_stream_type , return status : ' || l_return_status);
4244 END IF;
4245
4246 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4247 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4248 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4249 RAISE OKL_API.G_EXCEPTION_ERROR;
4250 END IF;
4251
4252 l_sty_id := l_accrual_sty_id; --l_sub_rec.accrual_stream_type_id; --RMUNJULU *** Changed to pass accrual_stream_type_id
4253 -- SECHAWLA 29-DEC-05 4911502 : added end
4254
4255
4256 --Accelerate Income Recognization
4257 -- get contract_end_date
4258 OPEN c_contract_eff_to(p_term_rec.p_contract_id);
4259 FETCH c_contract_eff_to INTO l_contract_end_date ;
4260 CLOSE c_contract_eff_to ;
4261
4262 -- **SMODUGA added
4263 -- get currency conversion information
4264 OPEN c_currency_conversion(p_term_rec.p_contract_id);
4265 FETCH c_currency_conversion INTO l_currency_conversion_type,
4266 l_currency_conversion_rate,
4267 l_currency_conversion_date;
4268 CLOSE c_currency_conversion ;
4269
4270 -- akrangan for bug 5669097 start
4271 IF l_acceleration_tbl.COUNT>0 THEN
4272 FOR c IN l_acceleration_tbl.first .. l_acceleration_tbl.last
4273 LOOP
4274 IF (l_acceleration_tbl(c).khr_id = p_term_rec.p_contract_id
4275 AND l_acceleration_tbl(c).sty_id =l_sty_id
4276 AND l_acceleration_tbl(c).kle_id =l_asset_tbl(i).p_kle_id )
4277 THEN
4278 v_flag :='Y';
4279 EXIT;
4280 ELSE
4281 v_flag :='N';
4282 END IF;
4283 END LOOP;
4284 END IF;
4285 l_acceleration_tbl(indx).khr_id :=p_term_rec.p_contract_id;
4286 l_acceleration_tbl(indx).sty_id :=l_sty_id;
4287 l_acceleration_tbl(indx).kle_id :=l_asset_tbl(i).p_kle_id ;
4288 indx := indx + 1;
4289 -- akrangan for bug 5669097 End
4290 OPEN get_accel_till_csr(p_term_rec.p_contract_id,l_sty_id);
4291 FETCH get_accel_till_csr INTO l_acceleration_rec.accelerate_till_date;
4292 CLOSE get_accel_till_csr ;
4293
4294 -- **END SMODUGA added
4295 --akrangan Bug 5526955 fix start
4296 --Based on CHK_ACCRUAL_PREVIOUS_MNTH_YN setup check accruals till quote eff date OR previous month last date
4297 OPEN check_accrual_previous_csr;
4298 FETCH check_accrual_previous_csr INTO l_accrual_previous_mnth_yn;
4299 CLOSE check_accrual_previous_csr;
4300 --Bug 5852720 by akrangan starts
4301 -- fix for bug -- 5610960 -- added below condition
4302 -- If quote exists then cancelation date is quote eff from date else sysdate
4303 IF nvl(okl_am_lease_loan_trmnt_pvt.g_quote_exists,'N') = 'Y' THEN
4304 --Bug 5852720 by akrangan ends
4305 IF nvl(l_accrual_previous_mnth_yn,'N') = 'N' THEN
4306 l_acceleration_rec.accelerate_from_date := TRUNC(LAST_DAY(l_quote_eff_date) + 1);
4307 ELSE
4308 l_acceleration_rec.accelerate_from_date := LAST_DAY(TRUNC(l_quote_eff_date, 'MONTH')-1)+1;
4309 END IF;
4310 --akrangan Bug 5526955 fix end
4311 --Bug 5852720 by srsreeni starts
4312 ELSE
4313 l_acceleration_rec.accelerate_from_date := TRUNC(LAST_DAY(l_quote_eff_date) + 1);
4314 END IF;
4315 --Bug 5852720 by srsreeni ends
4316 --pre populate the accraual rec
4317 l_acceleration_rec.khr_id := p_term_rec.p_contract_id; -- Id of the contract whose stream type needs to be accelerated
4318 l_acceleration_rec.sty_id := l_sty_id;-- Id of the stream type which needs to be accelerated
4319 l_acceleration_rec.acceleration_date := l_valid_gl_date; -- Date of acceleration (Transaction date) - -rmunjulu EDAT
4320
4321 l_acceleration_rec.kle_id := l_asset_tbl(i).p_kle_id; --Smoduga added for handling partial terminations.
4322 -- Termination quote number
4323 OPEN c_term_quote(p_term_rec.p_quote_id);
4324 FETCH c_term_quote INTO l_quote_number;
4325 IF c_term_quote%FOUND THEN
4326 l_acceleration_rec.description := 'Accrual acceleration for Asset number '
4327 ||l_asset_tbl(i).p_asset_name||
4328 'and Contract number '||p_term_rec.p_contract_number ||
4329 'upon acceptance of ' || l_quote_number;
4330 ELSE
4331 l_acceleration_rec.description := 'Accrual acceleration for Asset number '
4332 ||l_asset_tbl(i).p_asset_name||
4333 'and Contract number '||p_term_rec.p_contract_number;
4334 END IF;
4335 CLOSE c_term_quote;
4336
4337 l_acceleration_rec.accrual_rule_yn := 'N';
4338
4339 -- check for recourse
4340 IF l_sub_rec.recourse_yn <> 'Y' THEN --[7]
4341 -- akrangan for bug 5669097 start
4342 IF v_flag ='N' THEN
4343 -- akrangan for bug 5669097 End
4344 -- accelerate income recognition
4345 IF (is_debug_statement_on) THEN
4346 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals');
4347 END IF;
4348 OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals (
4349 p_api_version => p_api_version,
4350 p_init_msg_list => OKL_API.G_FALSE,
4351 x_return_status => l_return_status,
4352 x_msg_count => l_msg_count,
4353 x_msg_data => l_msg_data,
4354 p_acceleration_rec => l_acceleration_rec,
4355 x_trx_number => l_trx_number);
4356 IF (is_debug_statement_on) THEN
4357 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals , return status : ' || l_return_status);
4358 END IF;
4359
4360 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4361
4362 OKL_API.set_message(
4363 p_app_name => G_APP_NAME,
4364 p_msg_name => 'OKL_AM_SUBSIDY_INC_RECOG',
4365 p_token1 => 'ASSET_NUMBER',
4366 p_token1_value => l_asset_tbl(i).p_asset_name,
4367 p_token2 => 'CONTRACT_NUMBER',
4368 p_token2_value => p_term_rec.p_contract_number);
4369
4370 END IF;
4371
4372 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4373 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4374 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4375 RAISE OKL_API.G_EXCEPTION_ERROR;
4376 END IF;
4377 -- akrangan for bug 5669097 start
4378 -- Start MGAAP 7263041
4379 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
4380 OKL_STREAMS_UTIL.get_dependent_stream_type_rep(
4381 p_khr_id => p_term_rec.p_contract_id,
4382 p_primary_sty_id => l_sub_rec.stream_type_id,
4383 p_dependent_sty_purpose => 'SUBSIDY_INCOME',
4384 x_return_status => l_return_status,
4385 x_dependent_sty_id => l_accrual_sty_id_rep);
4386 IF (is_debug_statement_on) THEN
4387 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_STREAMS_UTIL.get_dependent_stream_type , return status : ' || l_return_status);
4388 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_accrual_sty_id_rep : ' || l_accrual_sty_id_rep);
4389 END IF;
4390
4391 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
4392 l_acceleration_rec.sty_id := l_accrual_sty_id_rep;
4393 l_acceleration_rec.trx_number := l_trx_number;
4394
4395 OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals (
4396 p_api_version => p_api_version,
4397 p_init_msg_list => OKL_API.G_FALSE,
4398 x_return_status => l_return_status,
4399 x_msg_count => l_msg_count,
4400 x_msg_data => l_msg_data,
4401 p_acceleration_rec => l_acceleration_rec,
4402 p_representation_type => 'SECONDARY',
4403 x_trx_number => l_trx_number);
4404
4405 IF (is_debug_statement_on) THEN
4406 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals , return status : ' || l_return_status);
4407 END IF;
4408
4409 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4410 OKL_API.set_message(
4411 p_app_name => G_APP_NAME,
4412 p_msg_name => 'OKL_AM_SUBSIDY_INC_RECOG',
4413 p_token1 => 'ASSET_NUMBER',
4414 p_token1_value => l_asset_tbl(i).p_asset_name,
4415 p_token2 => 'CONTRACT_NUMBER',
4416 p_token2_value => p_term_rec.p_contract_number);
4417 END IF;
4418
4419 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4420 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4421 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4422 RAISE OKL_API.G_EXCEPTION_ERROR;
4423 END IF;
4424
4425 END IF;
4426 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; --Added by bkatraga for bug 10032334
4427 -- end MGAAP 7263041
4428 END IF;
4429 -- akrangan for bug 5669097 End
4430
4431 ELSE -- Recourse
4432
4433 -- calculation basis FULL
4434 IF l_sub_rec.TERMINATION_REFUND_BASIS = 'ALL' THEN --[9]
4435
4436 -- AMORTIZE = Y ,RECOURSE =Y ,CALC basis = FULL,Billing Method = Invoice
4437 IF l_sub_rec.receipt_method_code = 'BILL'
4438 OR l_sub_rec.receipt_method_code = 'FUND' THEN --[10]
4439
4440 -- RMUNJULU 3280473 Get the subsidy subline amount which should be refunded
4441 lx_subsidy_amount := l_sub_rec.subsidy_amount;
4442
4443 END IF; --[10]
4444 -- adagur for bug 5669097 start
4445 IF v_flag ='N' THEN
4446 -- adagur for bug 5669097 End
4447 IF (is_debug_statement_on) THEN
4448 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_GENERATE_ACCRUALS_PVT.ACCELERATE_ACCRUALS');
4449 END IF;
4450 -- accelerate income recognition
4451 OKL_GENERATE_ACCRUALS_PVT.ACCELERATE_ACCRUALS(
4452 p_api_version => p_api_version,
4453 p_init_msg_list => OKL_API.G_FALSE,
4454 x_return_status => l_return_status,
4455 x_msg_count => l_msg_count,
4456 x_msg_data => l_msg_data,
4457 p_acceleration_rec => l_acceleration_rec,
4458 x_trx_number => l_trx_number);
4459 IF (is_debug_statement_on) THEN
4460 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.ACCELERATE_ACCRUALS , return status : ' || l_return_status);
4461 END IF;
4462
4463 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4464
4465 OKL_API.set_message(
4466 p_app_name => G_APP_NAME,
4467 p_msg_name => 'OKL_AM_SUBSIDY_INC_RECOG',
4468 p_token1 => 'ASSET_NUMBER',
4469 p_token1_value => l_asset_tbl(i).p_asset_name,
4470 p_token2 => 'CONTRACT_NUMBER',
4471 p_token2_value => p_term_rec.p_contract_number);
4472
4473 END IF;
4474
4475 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4476 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4477 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4478 RAISE OKL_API.G_EXCEPTION_ERROR;
4479 END IF;
4480 -- akrangan for bug 5669097 start
4481 -- Start MGAAP 7263041
4482 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS;
4483 OKL_STREAMS_UTIL.get_dependent_stream_type_rep(
4484 p_khr_id => p_term_rec.p_contract_id,
4485 p_primary_sty_id => l_sub_rec.stream_type_id,
4486 p_dependent_sty_purpose => 'SUBSIDY_INCOME',
4487 x_return_status => l_return_status,
4488 x_dependent_sty_id => l_accrual_sty_id_rep);
4489 IF (is_debug_statement_on) THEN
4490 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_STREAMS_UTIL.get_dependent_stream_type , return status : ' || l_return_status);
4491 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_accrual_sty_id_rep : ' || l_accrual_sty_id_rep);
4492 END IF;
4493
4494 IF (l_return_status = OKL_API.G_RET_STS_SUCCESS) THEN
4495 l_acceleration_rec.sty_id := l_accrual_sty_id_rep;
4496 l_acceleration_rec.trx_number := l_trx_number;
4497
4498 OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals (
4499 p_api_version => p_api_version,
4500 p_init_msg_list => OKL_API.G_FALSE,
4501 x_return_status => l_return_status,
4502 x_msg_count => l_msg_count,
4503 x_msg_data => l_msg_data,
4504 p_acceleration_rec => l_acceleration_rec,
4505 p_representation_type => 'SECONDARY',
4506 x_trx_number => l_trx_number);
4507
4508 IF (is_debug_statement_on) THEN
4509 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.accelerate_accruals , return status : ' || l_return_status);
4510 END IF;
4511
4512 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4513 OKL_API.set_message(
4514 p_app_name => G_APP_NAME,
4515 p_msg_name => 'OKL_AM_SUBSIDY_INC_RECOG',
4516 p_token1 => 'ASSET_NUMBER',
4517 p_token1_value => l_asset_tbl(i).p_asset_name,
4518 p_token2 => 'CONTRACT_NUMBER',
4519 p_token2_value => p_term_rec.p_contract_number);
4520 END IF;
4521
4522 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4523 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4524 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4525 RAISE OKL_API.G_EXCEPTION_ERROR;
4526 END IF;
4527
4528 END IF;
4529 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; --Added by bkatraga for bug 10032334
4530 -- end MGAAP 7263041
4531 END IF;
4532 -- akrangan for bug 5669097 End
4533 ELSIF l_sub_rec.TERMINATION_REFUND_BASIS = 'FORMULA' THEN
4534
4535 -- get Formula name
4536 OPEN c_formula(l_sub_rec.refund_formula_id);
4537 FETCH c_formula INTO l_formula_name ;
4538 CLOSE c_formula ;
4539
4540 IF l_sub_rec.receipt_method_code = 'BILL'
4541 OR l_sub_rec.receipt_method_code = 'FUND' THEN --A/P invoice --[13]
4542
4543 IF (is_debug_statement_on) THEN
4544 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_EXECUTE_FORMULA_PUB.execute');
4545 END IF;
4546 -- get subsidy amount
4547 OKL_EXECUTE_FORMULA_PUB.execute(
4548 p_api_version => p_api_version,
4549 p_init_msg_list => OKL_API.G_FALSE,
4550 x_return_status => l_return_status,
4551 x_msg_count => l_msg_count,
4552 x_msg_data => l_msg_data,
4553 p_formula_name => l_formula_name,
4554 p_contract_id => p_term_rec.p_contract_id,
4555 p_line_id => l_asset_tbl(i).p_kle_id,
4556 p_additional_parameters => okl_execute_formula_pub.G_ADDITIONAL_PARAMETERS_NULL,
4557 x_value =>lx_subsidy_amount);
4558 IF (is_debug_statement_on) THEN
4559 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_EXECUTE_FORMULA_PUB.execute , return status : ' || l_return_status);
4560 END IF;
4561
4562 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4563 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4564 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4565 RAISE OKL_API.G_EXCEPTION_ERROR;
4566 END IF;
4567 END IF; -- [13]
4568 END IF; --[9]
4569 -------------------------------------------------
4570 --Gathering data for creating Invoice
4571 -------------------------------------------------
4572 -- Get Application Info
4573 OPEN c_app_info ;
4574 FETCH c_app_info INTO l_app_id;
4575 IF(c_app_info%NOTFOUND) THEN
4576 -- Change Message
4577 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_TRANSACTION',
4578 G_COL_NAME_TOKEN,'Billing');
4579 x_return_status := OKC_API.G_RET_STS_ERROR ;
4580 CLOSE c_app_info ;
4581 RAISE OKC_API.G_EXCEPTION_ERROR;
4582 END if ;
4583
4584 CLOSE c_app_info;
4585
4586 -- **SMODUGA added for AP invoice creation
4587 --l_tapv_rec.vendor_id := l_sub_rec.vendor_id;
4588 -- ** END SMODUGA added for AP invoice creation
4589
4590 -- get Vendor site Id
4591 OPEN c_vendor_info (l_sub_rec.subsidy_line_id);
4592 FETCH c_vendor_info INTO l_tapv_rec.vendor_id,l_tapv_rec.IPVS_ID;
4593 IF(c_vendor_info%NOTFOUND) THEN
4594 -- Change Message
4595 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_VENDOR_SITE');
4596 x_return_status := OKC_API.G_RET_STS_ERROR ;
4597 CLOSE c_vendor_info ;
4598 RAISE OKC_API.G_EXCEPTION_ERROR;
4599 END if ;
4600
4601 CLOSE c_vendor_info;
4602
4603 l_tapv_rec.sfwt_flag := 'N' ;
4604 l_tapv_rec.TRX_STATUS_CODE := 'ENTERED' ;
4605 l_tapv_rec.currency_code := l_sub_rec.currency_code;
4606
4607 -- **SMODUGA added for creation of AP invoice
4608 l_tapv_rec.CURRENCY_CONVERSION_TYPE := l_currency_conversion_type;
4609 l_tapv_rec.CURRENCY_CONVERSION_RATE := l_currency_conversion_rate;
4610 l_tapv_rec.CURRENCY_CONVERSION_DATE := l_currency_conversion_date;
4611 -- ** END SMODUGA added for AP invoice creation
4612
4613 l_tapv_rec.SET_OF_BOOKS_ID := l_sob_id; --RMUNJULU *** Set the set_of_books_id
4614
4615 -- GET TRANSACTION TYPE
4616 OPEN c_trx_type ('Disbursement', 'US');
4617 FETCH c_trx_type INTO l_trx_type_ID;
4618 IF(c_trx_type%NOTFOUND) THEN
4619 Okc_Api.set_message(G_APP_NAME, 'OKL_NO_TRANSACTION',
4620 G_COL_NAME_TOKEN,'Disbursement');
4621 x_return_status := OKC_API.G_RET_STS_ERROR ;
4622 CLOSE c_trx_type ;
4623 RAISE OKC_API.G_EXCEPTION_ERROR;
4624 END if ;
4625 CLOSE c_trx_type ;
4626
4627 l_tapv_rec.TRY_ID := l_trx_type_ID;
4628 l_tapv_rec.AMOUNT := lx_subsidy_amount;
4629 --20-NOV-2006 ANSETHUR R12B - LEGAL ENTITY UPTAKE PROJECT
4630 l_tapv_rec.legal_entity_id :=OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_term_rec.p_contract_id);
4631 --** SMODUGA Added for invoice generation
4632 l_tapv_rec.invoice_type := 'STANDARD';
4633 --** END SMODUGA Added for invoice generation
4634 IF (is_debug_statement_on) THEN
4635 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'Getting invoice number');
4636 END IF;
4637
4638 l_tapv_rec.Invoice_number := get_invoice_number(
4639 p_app_id => l_app_id,
4640 p_cat_code =>l_document_category,
4641 p_sob_id =>l_tapv_rec.SET_OF_BOOKS_ID,
4642 p_met_code => 'A',
4643 p_trx_date => SYSDATE,
4644 p_dbseqnum => lx_dbseqnm,
4645 p_dbseqid => lx_dbseqid
4646 );
4647
4648
4649 l_tapv_rec.WORKFLOW_YN := 'N';
4650 l_tapv_rec.CONSOLIDATE_YN := 'N';
4651 l_tapv_rec.WAIT_VENDOR_INVOICE_YN := 'N';
4652
4653 -- SMODUGA
4654 -- setting all three dates to termination date
4655 -- instead of SYSDATE
4656
4657 l_tapv_rec.DATE_INVOICED := l_quote_accpt_date; -- rmunjulu EDAT
4658 l_tapv_rec.DATE_GL := l_quote_accpt_date; -- rmunjulu EDAT
4659 l_tapv_rec.DATE_ENTERED := l_quote_accpt_date; -- rmunjulu EDAT
4660
4661 -- END SMODUGA
4662
4663 l_tapv_rec.object_version_number := 1;
4664
4665 SELECT DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,FND_GLOBAL.CONC_REQUEST_ID),
4666 DECODE(FND_GLOBAL.PROG_APPL_ID,-1,NULL,FND_GLOBAL.PROG_APPL_ID),
4667 DECODE(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,FND_GLOBAL.CONC_PROGRAM_ID),
4668 DECODE(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,SYSDATE),
4669 mo_global.get_current_org_id() INTO l_tapv_rec.REQUEST_ID,
4670 l_tapv_rec.PROGRAM_APPLICATION_ID,
4671 l_tapv_rec.PROGRAM_ID,
4672 l_tapv_rec.PROGRAM_UPDATE_DATE,
4673 l_tapv_rec.ORG_ID FROM dual;
4674
4675 --**SMODUGA Added for invoice lines ** --
4676 ----------------------------------------------------
4677 -- Populate internal AP invoice Lines Record
4678 ------------------------------------------------------
4679 /* sosharma 17-01-2007,added assignment of khr_id to l_tapv_rec
4680 Start Changes
4681 */
4682 l_tplv_rec.KHR_ID := p_term_rec.p_contract_id;
4683 /* End Changes */
4684 l_tplv_rec.amount := l_tapv_rec.amount;
4685 l_tplv_rec.sty_id := l_sub_sty_id; --smoduga changed to subsidy stream type
4686 l_tplv_rec.inv_distr_line_code := 'MANUAL';
4687 l_tplv_rec.line_number := 1;
4688 l_tplv_rec.org_id := l_tapv_rec.org_id;
4689 l_tplv_rec.disbursement_basis_code := 'BILL_DATE';
4690
4691 /*sosharma 12-jan-07
4692 Build:R12
4693 Added the call to disbursement procedure ,which is having the consolidated functionality of creating AP lines,header and AP accounting
4694 */
4695 l_tplv_tbl(0):=l_tplv_rec;
4696 IF (is_debug_statement_on) THEN
4697 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_CREATE_DISB_TRANS_PVT.create_disb_trx');
4698 END IF;
4699 OKL_CREATE_DISB_TRANS_PVT.create_disb_trx(p_api_version => l_api_version
4700 ,p_init_msg_list => OKL_API.G_FALSE
4701 ,x_return_status => l_return_status
4702 ,x_msg_count => x_msg_count
4703 ,x_msg_data => x_msg_data
4704 ,p_tapv_rec => l_tapv_rec
4705 ,p_tplv_tbl => l_tplv_tbl
4706 ,x_tapv_rec => x_tapv_rec
4707 ,x_tplv_tbl => x_tplv_tbl
4708 );
4709 IF (is_debug_statement_on) THEN
4710 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_CREATE_DISB_TRANS_PVT.create_disb_trx , return status : ' || l_return_status);
4711 END IF;
4712 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4713 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4714 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4715 RAISE OKL_API.G_EXCEPTION_ERROR;
4716 END IF;
4717
4718 x_tplv_rec := x_tplv_tbl(x_tplv_tbl.FIRST);
4719
4720 /*End Changes sosharma */
4721
4722
4723 END IF; -- recourse --[7]
4724 END IF ; -- Accounting method --[3]
4725 -- close sub line
4726 END IF; -- quote type checking for TER_RELEASE_WO_PURCHASE
4727 END LOOP; -- subsidies --[L3]
4728 END LOOP; -- Main --[L2]
4729 END IF;
4730
4731 -- end the transaction
4732 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
4733 IF (is_debug_procedure_on) THEN
4734 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
4735 END IF;
4736 EXCEPTION
4737 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4738 IF (is_debug_exception_on) THEN
4739 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
4740 END IF;
4741
4742 x_return_status := OKL_API.HANDLE_EXCEPTIONS
4743 (
4744 l_api_name,
4745 G_PKG_NAME,
4746 'OKL_API.G_RET_STS_ERROR',
4747 x_msg_count,
4748 x_msg_data,
4749 '_PVT'
4750 );
4751 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4752 IF (is_debug_exception_on) THEN
4753 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
4754 END IF;
4755
4756 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
4757 (
4758 l_api_name,
4759 G_PKG_NAME,
4760 'OKL_API.G_RET_STS_UNEXP_ERROR',
4761 x_msg_count,
4762 x_msg_data,
4763 '_PVT'
4764 );
4765 WHEN OTHERS THEN
4766 IF (is_debug_exception_on) THEN
4767 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
4768 || sqlcode || ' , SQLERRM : ' || sqlerrm);
4769 END IF;
4770
4771 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
4772 (
4773 l_api_name,
4774 G_PKG_NAME,
4775 'OTHERS',
4776 x_msg_count,
4777 x_msg_data,
4778 '_PVT'
4779 );
4780
4781 END process_discount_subsidy;
4782
4783 -- Start of comments
4784 -- Procedure Name : process_adjustments
4785 -- Desciption : method to handle accrual adjustments
4786 -- Business Rules :
4787 -- Parameters :
4788 -- Version : 1.0
4789 -- History : 08 Nov 2004 PAGARG Bug# 3999921 (T and A)created
4790 -- : 14-Dec-04 rmunjulu TNA Modified to set return status properly and other changes
4791 -- : 14-Dec-04 rmunjulu TNA Additional changes as called API signature has changed
4792 -- : 14-Dec-04 rmunjulu TNA Close cursors in exception block
4793 -- : 20-Dec-04 rmunjulu TNA Added p_tcnv_rec since trn_id is needed
4794 -- : 20-Dec-04 rmunjulu TNA Added condition to check if advance_rent present
4795 -- : 10-Feb-05 PAGARG Bug 4177025 Create accounting distributions
4796 -- : after creating invoice lines
4797 -- : 21-Feb-05 rmunjulu Bug 4177025 Handle Return status properly
4798 -- End of comments
4799 PROCEDURE process_adjustments(
4800 p_api_version IN NUMBER,
4801 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4802 x_return_status OUT NOCOPY VARCHAR2,
4803 x_msg_count OUT NOCOPY NUMBER,
4804 x_msg_data OUT NOCOPY VARCHAR2,
4805 p_term_rec IN term_rec_type,
4806 p_tcnv_rec IN tcnv_rec_type, -- rmunjulu TNA Added since trn_id is needed
4807 p_call_origin IN VARCHAR2 DEFAULT NULL,
4808 p_termination_date IN DATE) IS
4809
4810 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'process_adjustments';
4811 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
4812 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
4813 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
4814 l_api_name CONSTANT VARCHAR2(30) := 'process_adjustments';
4815 l_api_version CONSTANT NUMBER := 1;
4816 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS; -- rmunjulu TNA Defaulted
4817 l_msg_count NUMBER;
4818 l_msg_data VARCHAR2(2000);
4819 lx_asset_tbl OKL_AM_LEASE_TRMNT_PVT.klev_tbl_type;
4820 l_taiv_rec taiv_rec_type;
4821 lx_taiv_rec taiv_rec_type;
4822 l_tilv_rec tilv_rec_type;
4823 lx_tilv_rec tilv_rec_type;
4824 l_cm_try_id NUMBER;
4825 l_counter NUMBER;
4826 l_asset_ref_amt NUMBER;
4827
4828 l_quote_accpt_date DATE;
4829 l_quote_eff_date DATE;
4830
4831 CURSOR l_qte_dtls_csr (p_qte_id IN NUMBER) IS
4832 SELECT qte.currency_code currency_code,
4833 qte.currency_conversion_type currency_conversion_type,
4834 qte.currency_conversion_rate currency_conversion_rate,
4835 qte.currency_conversion_date currency_conversion_date
4836 FROM okl_trx_quotes_b qte
4837 WHERE qte.id = p_qte_id;
4838
4839 -- Cursor to obtain refund asset remaining amount
4840 CURSOR l_ref_asset_amt_csr(p_khr_id IN NUMBER, p_kle_id IN NUMBER, p_date IN DATE) IS
4841 SELECT stm.sty_id,
4842 SUM(ste.amount) amount
4843 FROM okl_streams stm
4844 ,okl_strm_type_b sty
4845 ,okc_k_lines_b kle
4846 ,okc_statuses_b kls
4847 ,okl_strm_elements ste
4848 WHERE stm.khr_id = p_khr_id
4849 AND stm.active_yn = 'Y'
4850 AND stm.say_code = 'CURR'
4851 AND ste.stm_id = stm.id
4852 AND sty.id = stm.sty_id
4853 AND sty.billable_yn = 'Y'
4854 AND kle.id = stm.kle_id
4855 AND kls.code = kle.sts_code
4856 AND kls.ste_code = 'ACTIVE'
4857 AND ste.date_billed IS NULL
4858 AND trunc(ste.stream_element_date) > trunc(p_date)
4859 AND kle.id = p_kle_id
4860 AND STY.STREAM_TYPE_PURPOSE = 'ADVANCE_RENT'
4861 GROUP BY stm.sty_id;
4862
4863 -- rmunjulu TNA Get the FEE and SERVICE Top Lines
4864 CURSOR p_chr_lines_csr(p_chr_id IN NUMBER) IS
4865 SELECT CLE.ID
4866 FROM OKC_k_LINES_B CLE,
4867 OKC_LINE_STYLES_B LTY
4868 WHERE CLE.LSE_ID = LTY.ID
4869 AND LTY.LTY_CODE IN ('FEE', 'SOLD_SERVICE') -- rmunjulu TNA Give the proper Alias
4870 AND CLE.CHR_ID = p_chr_id; -- rmunjulu TNA Give the proper Alias
4871
4872 l_sty_id NUMBER;
4873 l_line_id_tbl OKL_ACCRUAL_SEC_PVT.p_line_id_tbl_type;
4874 lx_accrual_adjustment_tbl OKL_ACCRUAL_SEC_PVT.p_accrual_adjustment_tbl_type;
4875 lx_trx_number VARCHAR2(30) := null; -- MGAAP 7263041
4876 l_accrual_rec OKL_GENERATE_ACCRUALS_PVT.adjust_accrual_rec_type; -- rmunjulu TNA additional changes -- Changed
4877 l_stream_tbl OKL_GENERATE_ACCRUALS_PVT.stream_tbl_type;
4878 l_valid_gl_date DATE;
4879 l_trmnt_try_id NUMBER;
4880
4881 -- rmunjulu TNA declared
4882 l_empty_taiv_rec taiv_rec_type;
4883 l_empty_tilv_rec tilv_rec_type;
4884
4885 -- Bug 4177025 PAGARG 10-Feb-2005 declare record for creating accounting distributions
4886 l_bpd_acc_rec okl_acc_call_pub.bpd_acc_rec_type;
4887
4888 --rmunjulu 4769094
4889 CURSOR check_accrual_previous_csr IS
4890 SELECT NVL(CHK_ACCRUAL_PREVIOUS_MNTH_YN,'N')
4891 FROM OKL_SYSTEM_PARAMS;
4892
4893 --rmunjulu 4769094
4894 l_accrual_previous_mnth_yn VARCHAR2(3);
4895 l_accrual_adjst_date DATE;
4896
4897 -- ansethur 27-FEB-07 R12B Added for Billing Enhancement Project Start Changes
4898 l_tldv_tbl okl_tld_pvt.tldv_tbl_type;
4899 lx_tldv_tbl okl_tld_pvt.tldv_tbl_type;
4900
4901 l_tilv_tbl okl_txl_ar_inv_lns_pub.tilv_tbl_type;
4902 lx_tilv_tbl okl_txl_ar_inv_lns_pub.tilv_tbl_type;
4903 -- ansethur 27-FEB-07 R12B Added for Billing Enhancement Project End Changes
4904
4905 -- MGAAP start 7263041
4906 CURSOR check_csr(p_chr_id NUMBER) IS
4907 SELECT A.MULTI_GAAP_YN,
4908 B.REPORTING_PDT_ID
4909 FROM OKL_K_HEADERS A,
4910 OKL_PRODUCTS B
4911 WHERE A.ID = p_chr_id
4912 AND A.PDT_ID = B.ID;
4913 l_multi_gaap_yn okl_k_headers.multi_gaap_yn%TYPE;
4914 l_reporting_pdt_id okl_products.REPORTING_PDT_ID%TYPE;
4915 -- MGAAP end 7263041
4916
4917 -- bug 9191475 .. start
4918 l_trxnum_tbl okl_generate_accruals_pvt.trxnum_tbl_type;
4919 -- bug 9191475 .. end
4920
4921 --Bug# 10091594
4922 CURSOR get_sec_rep_method IS
4923 SELECT secondary_rep_method
4924 FROM okl_sys_acct_opts;
4925
4926 l_sec_rep_method okl_sys_acct_opts.secondary_rep_method%TYPE;
4927 --Bug# 10091594
4928
4929 BEGIN
4930 IF (is_debug_procedure_on) THEN
4931 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
4932 END IF;
4933 IF (is_debug_statement_on) THEN
4934 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_call_origin: '|| p_call_origin);
4935 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_termination_date: '|| p_termination_date);
4936 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);
4937 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);
4938 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);
4939 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);
4940 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);
4941 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);
4942 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);
4943 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.id: '||p_tcnv_rec.id);
4944 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);
4945 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_tcnv_rec.qte_id: '||p_tcnv_rec.qte_id);
4946 END IF;
4947
4948 l_msg_count := x_msg_count;
4949 l_msg_data := x_msg_data;
4950
4951 --Check API version, initialize message list and create savepoint.
4952 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
4953 G_PKG_NAME,
4954 p_init_msg_list,
4955 l_api_version,
4956 p_api_version,
4957 '_PVT',
4958 x_return_status);
4959 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4960 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4961 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
4962 RAISE OKL_API.G_EXCEPTION_ERROR;
4963 END IF;
4964
4965 -- MGAAP start 7263041
4966 OPEN check_csr(p_term_rec.p_contract_id);
4967 FETCH check_csr INTO
4968 l_multi_gaap_yn,
4969 l_reporting_pdt_id;
4970 CLOSE check_csr;
4971 -- MGAAP end 7263041
4972
4973 --Bug# 10091594
4974 l_sec_rep_method := NULL;
4975 OPEN get_sec_rep_method;
4976 FETCH get_sec_rep_method INTO l_sec_rep_method;
4977 CLOSE get_sec_rep_method;
4978 --Bug# 10091594
4979
4980 -- Full Termination for TER_RELEASE_WO_PURCHASE quote
4981 IF p_term_rec.p_quote_type = 'TER_RELEASE_WO_PURCHASE'
4982 AND p_call_origin = 'FULL'
4983 THEN
4984 IF (is_debug_statement_on) THEN
4985 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_LEASE_TRMNT_PVT.get_contract_lines');
4986 END IF;
4987 -- get line details from OKL_AM_LEASE_TRMNT_PVT
4988 OKL_AM_LEASE_TRMNT_PVT.get_contract_lines(
4989 p_api_version => p_api_version,
4990 p_init_msg_list => OKL_API.G_FALSE,
4991 x_return_status => l_return_status,
4992 x_msg_count => l_msg_count,
4993 x_msg_data => l_msg_data,
4994 p_term_rec => p_term_rec,
4995 x_klev_tbl => lx_asset_tbl);
4996 IF (is_debug_statement_on) THEN
4997 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);
4998 END IF;
4999
5000 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR)
5001 THEN
5002 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5003 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR)
5004 THEN
5005 RAISE OKL_API.G_EXCEPTION_ERROR;
5006 END IF;
5007 -- If quote exists then accnting date is quote accept date else sysdate
5008 IF nvl(okl_am_lease_loan_trmnt_pvt.g_quote_exists, 'N') = 'Y'
5009 THEN
5010 l_quote_accpt_date := okl_am_lease_loan_trmnt_pvt.g_quote_accept_date;
5011 l_quote_eff_date := okl_am_lease_loan_trmnt_pvt.g_quote_eff_from_date;
5012 ELSE
5013 l_quote_accpt_date := p_termination_date;
5014 l_quote_eff_date := p_termination_date;
5015 END IF;
5016
5017 IF (is_debug_statement_on) THEN
5018 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_am_util_pvt.get_transaction_id');
5019 END IF;
5020 okl_am_util_pvt.get_transaction_id (
5021 p_try_name => 'CREDIT MEMO',
5022 x_return_status => l_return_status,
5023 x_try_id => l_cm_try_id);
5024 IF (is_debug_statement_on) THEN
5025 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_am_util_pvt.get_transaction_id , return status : ' || l_return_status);
5026 END IF;
5027
5028 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS
5029 OR NVL (l_cm_try_id, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM
5030 THEN
5031 l_return_status := OKL_API.G_RET_STS_ERROR;
5032 OKC_API.SET_MESSAGE (
5033 p_app_name => G_APP_NAME,
5034 p_msg_name => G_INVALID_VALUE,
5035 p_token1 => G_COL_NAME_TOKEN,
5036 p_token1_value => 'Transaction Type');
5037 END IF;
5038
5039 -- rmunjulu TNA Handle return status
5040 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5041 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5042 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5043 RAISE OKL_API.G_EXCEPTION_ERROR;
5044 END IF;
5045
5046
5047 IF lx_asset_tbl.count > 0
5048 THEN
5049 FOR l_counter IN lx_asset_tbl.FIRST..lx_asset_tbl.LAST
5050 LOOP
5051
5052 -- rmunjulu TNA Initialize the variables
5053 l_asset_ref_amt := 0;
5054 l_taiv_rec := l_empty_taiv_rec;
5055 l_tilv_rec := l_empty_tilv_rec;
5056
5057 OPEN l_qte_dtls_csr(p_term_rec.p_quote_id);
5058 FETCH l_qte_dtls_csr INTO l_taiv_rec.currency_code,
5059 l_taiv_rec.currency_conversion_type,
5060 l_taiv_rec.currency_conversion_rate,
5061 l_taiv_rec.currency_conversion_date;
5062 CLOSE l_qte_dtls_csr; -- rmunjulu TNA Close the cursor
5063 OPEN l_ref_asset_amt_csr(p_khr_id => p_term_rec.p_contract_id,
5064 p_kle_id => lx_asset_tbl(l_counter).p_kle_id,
5065 p_date => l_quote_eff_date);
5066 FETCH l_ref_asset_amt_csr INTO l_sty_id, l_asset_ref_amt;
5067 CLOSE l_ref_asset_amt_csr;
5068
5069 l_taiv_rec.try_id := l_cm_try_id;
5070 l_taiv_rec.khr_id := p_term_rec.p_contract_id;
5071 l_taiv_rec.date_invoiced := l_quote_accpt_date;
5072 l_taiv_rec.date_entered := l_quote_accpt_date;
5073 l_taiv_rec.amount := l_asset_ref_amt;
5074
5075 l_taiv_rec.qte_id := p_term_rec.p_quote_id;
5076 l_taiv_rec.description := p_term_rec.p_quote_type;
5077 l_taiv_rec.trx_status_code := 'SUBMITTED'; -- RMUNJULU CHANGED 21-NOV-05
5078 --20-NOV-2006 ANSETHUR R12B - LEGAL ENTITY UPTAKE PROJECT
5079 l_taiv_rec.legal_entity_id :=OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_term_rec.p_contract_id);
5080 -- rmunjulu TNA Added this IF
5081 IF l_asset_ref_amt <> 0 THEN
5082
5083 --ansethur 27-FEB-2007 Added for R12 B Billing Architecture Start Changes
5084 -- Included call to Enhanced Billing API in the place of the calls to Billing Header,Lines and Distributions
5085 l_taiv_rec.okl_source_billing_trx := 'TERMINATION';
5086 l_tilv_rec.line_number := l_counter;
5087 l_tilv_rec.kle_id := lx_asset_tbl(l_counter).p_kle_id;
5088 l_tilv_rec.description := 'Adjustment for Advanced Rent';
5089 l_tilv_rec.sty_id := l_sty_id;
5090 l_tilv_rec.amount := l_asset_ref_amt;
5091 l_tilv_rec.inv_receiv_line_code := 'LINE';
5092
5093 l_tilv_tbl(0) := l_tilv_rec; -- Assign the line record in tilv_tbl structure
5094
5095 IF (is_debug_statement_on) THEN
5096 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_internal_billing_pvt.create_billing_trx');
5097 END IF;
5098 okl_internal_billing_pvt.create_billing_trx(p_api_version => l_api_version,
5099 p_init_msg_list => p_init_msg_list,
5100 x_return_status => x_return_status,
5101 x_msg_count => x_msg_count,
5102 x_msg_data => x_msg_data,
5103 p_taiv_rec => l_taiv_rec,
5104 p_tilv_tbl => l_tilv_tbl,
5105 p_tldv_tbl => l_tldv_tbl,
5106 x_taiv_rec => lx_taiv_rec,
5107 x_tilv_tbl => lx_tilv_tbl,
5108 x_tldv_tbl => lx_tldv_tbl);
5109 IF (is_debug_statement_on) THEN
5110 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_internal_billing_pvt.create_billing_trx , return status : ' || x_return_status);
5111 END IF;
5112
5113 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5114 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5115 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5116 RAISE OKL_API.G_EXCEPTION_ERROR;
5117 END IF;
5118
5119 /* --ansethur 23-FEB-2007 commented for R12 B Billing Architecture Begins
5120
5121 okl_trx_ar_invoices_pub.insert_trx_ar_invoices (
5122 p_api_version => P_api_version,
5123 p_init_msg_list => OKL_API.G_FALSE,
5124 x_return_status => l_return_status,
5125 x_msg_count => l_msg_count,
5126 x_msg_data => l_msg_data,
5127 p_taiv_rec => l_taiv_rec,
5128 x_taiv_rec => lx_taiv_rec);
5129
5130 -- rmunjulu TNA Handle return status
5131 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5132 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5133 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5134 RAISE OKL_API.G_EXCEPTION_ERROR;
5135 END IF;
5136
5137 l_tilv_rec.line_number := l_counter;
5138 l_tilv_rec.kle_id := lx_asset_tbl(l_counter).p_kle_id;
5139 l_tilv_rec.description := 'Adjustment for Advanced Rent';
5140 l_tilv_rec.sty_id := l_sty_id;
5141 l_tilv_rec.amount := l_asset_ref_amt;
5142 l_tilv_rec.tai_id := lx_taiv_rec.id;
5143 l_tilv_rec.inv_receiv_line_code := 'LINE';
5144
5145 -- Create Invoice Line
5146 okl_txl_ar_inv_lns_pub.insert_txl_ar_inv_lns (
5147 p_api_version => l_api_version,
5148 p_init_msg_list => OKL_API.G_FALSE,
5149 x_return_status => l_return_status,
5150 x_msg_count => l_msg_count,
5151 x_msg_data => l_msg_data,
5152 p_tilv_rec => l_tilv_rec,
5153 x_tilv_rec => lx_tilv_rec);
5154
5155 -- rmunjulu TNA Handle return status
5156 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5157 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5158 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5159 RAISE OKL_API.G_EXCEPTION_ERROR;
5160 END IF;
5161
5162 -- Bug 4177025 PAGARG 10-Feb-2005 Fix start
5163 -- Added the call to create accounting distributions for the invoice lines
5164 IF l_return_status = OKL_API.G_RET_STS_SUCCESS THEN
5165 l_bpd_acc_rec.id := lx_tilv_rec.id;
5166 l_bpd_acc_rec.source_table := 'OKL_TXL_AR_INV_LNS_B';
5167
5168 -- Create Accounting Distribution
5169 okl_acc_call_pub.create_acc_trans(
5170 p_api_version => l_api_version,
5171 p_init_msg_list => OKL_API.G_FALSE,
5172 x_return_status => l_return_status,
5173 x_msg_count => l_msg_count,
5174 x_msg_data => l_msg_data,
5175 p_bpd_acc_rec => l_bpd_acc_rec);
5176
5177 -- rmunjulu Bug 4177025 Handle Return status properly
5178 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5179 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5180 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5181 RAISE OKL_API.G_EXCEPTION_ERROR;
5182 END IF;
5183
5184 END IF;
5185
5186 -- Bug 4177025 PAGARG 10-Feb-2005 Fix end
5187 --ansethur 27-FEB-2007 commented for R12 B Billing Architecture Ends
5188 */
5189 --ansethur 27-FEB-2007 Added for R12 B Billing Architecture End Changes
5190
5191 END IF; -- rmunjulu TNA End of New IF to check amt there for invoicing
5192 END LOOP;
5193 END IF; -- asset table count
5194
5195 --Bug# 3999921 14-Dec-2004 PAGARG Fix Start
5196 --Instead of calling create_accrual_adjustments, call get_accrual_adjustments
5197 --and generate accruals.
5198 --Populate lines table with id of contract top line for fee and sold service
5199 l_counter := 0;
5200
5201 -- rmunjulu TNA Get the FEE and SERVICE TOP lines
5202 FOR p_chr_lines_rec in p_chr_lines_csr(p_term_rec.p_contract_id)
5203 LOOP
5204 l_counter := l_counter + 1;
5205 l_line_id_tbl(l_counter).id := p_chr_lines_rec.id;
5206 END LOOP;
5207
5208 -- rmunjulu 4769094 Based on CHK_ACCRUAL_PREVIOUS_MNTH_YN setup check accruals till quote eff date OR previous month last date
5209 OPEN check_accrual_previous_csr;
5210 FETCH check_accrual_previous_csr INTO l_accrual_previous_mnth_yn;
5211 CLOSE check_accrual_previous_csr;
5212
5213 IF nvl(l_accrual_previous_mnth_yn,'N') = 'N' THEN -- rmunjulu 4769094 continue with current adjustment date as quote effective date
5214 l_accrual_adjst_date := l_quote_eff_date;
5215 ELSE -- rmunjulu 4769094 new check adjustment date is quote eff dates previous month last date
5216 l_accrual_adjst_date := LAST_DAY(TRUNC(l_quote_eff_date, 'MONTH')-1);
5217 END IF;
5218
5219 -- rmunjulu TNA Get the accrual adjustment streams and amounts for FEE and SERVICE lines
5220 IF (is_debug_statement_on) THEN
5221 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_ACCRUAL_SEC_PVT.Get_Accrual_Adjustment');
5222 END IF;
5223
5224 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
5225 OKL_ACCRUAL_SEC_PVT.Get_Accrual_Adjustment(
5226 p_api_version => p_api_version,
5227 p_init_msg_list => OKL_API.G_FALSE,
5228 x_return_status => l_return_status,
5229 x_msg_count => l_msg_count,
5230 x_msg_data => l_msg_data,
5231 p_contract_id => p_term_rec.p_contract_id,
5232 p_line_id_tbl => l_line_id_tbl,
5233 p_adjustment_date => l_accrual_adjst_date, -- rmunjulu 4769094
5234 x_accrual_adjustment_tbl => lx_accrual_adjustment_tbl);
5235 IF (is_debug_statement_on) THEN
5236 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_ACCRUAL_SEC_PVT.Get_Accrual_Adjustment , return status : ' || l_return_status);
5237 END IF;
5238
5239 -- rmunjulu TNA Handle return status
5240 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5241 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5242 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5243 RAISE OKL_API.G_EXCEPTION_ERROR;
5244 END IF;
5245
5246 -- rmunjulu TNA check if table has value before looping thru table and calling the other API
5247 IF lx_accrual_adjustment_tbl.COUNT > 0 THEN
5248
5249 -- rmunjulu TNA Brought the below code into this IF
5250 /* -- rmunjulu TNA Not needed
5251 okl_am_util_pvt.get_transaction_id (
5252 p_try_name => 'TERMINATION',
5253 x_return_status => l_return_status,
5254 x_try_id => l_trmnt_try_id);
5255
5256 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS
5257 OR NVL (l_trmnt_try_id, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM THEN
5258
5259 l_return_status := OKL_API.G_RET_STS_ERROR;
5260
5261 OKC_API.SET_MESSAGE (
5262 p_app_name => G_APP_NAME,
5263 p_msg_name => G_INVALID_VALUE,
5264 p_token1 => G_COL_NAME_TOKEN,
5265 p_token1_value => 'Transaction Type');
5266 END IF;
5267
5268 -- rmunjulu TNA Handle return status
5269 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5270 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5271 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5272 RAISE OKL_API.G_EXCEPTION_ERROR;
5273 END IF;
5274 */
5275 --Populate online accrual rec type -- rmunjulu TNA set all the values for p_accrual_rec at one place
5276 l_accrual_rec.contract_id := p_term_rec.p_contract_id;
5277 l_accrual_rec.accrual_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => l_quote_accpt_date);
5278 l_accrual_rec.source_trx_id := p_tcnv_rec.id; -- rmunjulu TNA Changed
5279 l_accrual_rec.source_trx_type := 'TCN';
5280 --l_accrual_rec.ignore_accrual_rule_yn := 'Y'; -- rmunjulu TNA Additional changes -- Removed
5281 --l_accrual_rec.stream_source_value := 'PROVIDED'; -- rmunjulu TNA Additional changes -- Removed
5282
5283 -- rmunjulu TNA Set the p_stream_tbl values
5284 FOR l_counter IN lx_accrual_adjustment_tbl.FIRST..lx_accrual_adjustment_tbl.LAST LOOP
5285
5286 l_stream_tbl(l_counter).stream_type_id := lx_accrual_adjustment_tbl(l_counter).sty_id;
5287 l_stream_tbl(l_counter).stream_amount := lx_accrual_adjustment_tbl(l_counter).amount;
5288 l_stream_tbl(l_counter).kle_id := lx_accrual_adjustment_tbl(l_counter).line_id;
5289 END LOOP;
5290
5291 -- rmunjulu TNA Create the accounting transactions for the accrual adjustments
5292 -- rmunjulu TNA Additional Changes -- Changed the procedure name
5293 IF (is_debug_statement_on) THEN
5294 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_GENERATE_ACCRUALS_PVT.adjust_accruals');
5295 END IF;
5296 OKL_GENERATE_ACCRUALS_PVT.adjust_accruals(
5297 p_api_version => p_api_version,
5298 p_init_msg_list => OKL_API.G_FALSE,
5299 x_return_status => l_return_status,
5300 x_msg_count => l_msg_count,
5301 x_msg_data => l_msg_data,
5302 --x_trx_number => lx_trx_number,-- bug 9191475
5303 x_trx_tbl => l_trxnum_tbl, -- bug 9191475
5304 p_accrual_rec => l_accrual_rec,
5305 p_stream_tbl => l_stream_tbl);
5306 IF (is_debug_statement_on) THEN
5307 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.adjust_accruals , return status : ' || l_return_status);
5308 END IF;
5309
5310 -- rmunjulu TNA Handle return status
5311 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5312 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5313 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5314 RAISE OKL_API.G_EXCEPTION_ERROR;
5315 END IF;
5316
5317 --14-Dec-2004 Bug# 3999921 PAGARG Fix end
5318 END IF; -- Check for tbl has records
5319
5320 -- MGAAP start 7263041
5321 --Bug# 10091594: Added check for Automated Accounting
5322 IF (l_multi_gaap_yn = 'Y') AND (NVL(l_sec_rep_method,'XXX') = 'AUTOMATED') THEN
5323 IF (is_debug_statement_on) THEN
5324 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_ACCRUAL_SEC_PVT.Get_Accrual_Adjustment for SECONDARY');
5325 END IF;
5326
5327 OKL_STREAMS_SEC_PVT.SET_REPO_STREAMS; -- MGAAP 7263041
5328
5329 OKL_ACCRUAL_SEC_PVT.Get_Accrual_Adjustment(
5330 p_api_version => p_api_version,
5331 p_init_msg_list => OKL_API.G_FALSE,
5332 x_return_status => l_return_status,
5333 x_msg_count => l_msg_count,
5334 x_msg_data => l_msg_data,
5335 p_contract_id => p_term_rec.p_contract_id,
5336 p_line_id_tbl => l_line_id_tbl,
5337 p_adjustment_date => l_accrual_adjst_date, -- rmunjulu 4769094
5338 x_accrual_adjustment_tbl => lx_accrual_adjustment_tbl,
5339 p_product_id => l_reporting_pdt_id); -- MGAAP 7263041
5340
5341 OKL_STREAMS_SEC_PVT.RESET_REPO_STREAMS; -- MGAAP 7263041
5342
5343 IF (is_debug_statement_on) THEN
5344 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_ACCRUAL_SEC_PVT.Get_Accrual_Adjustment , return status : ' || l_return_status);
5345 END IF;
5346
5347 -- rmunjulu TNA Handle return status
5348 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5349 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5350 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5351 RAISE OKL_API.G_EXCEPTION_ERROR;
5352 END IF;
5353
5354 -- rmunjulu TNA check if table has value before looping thru table and calling the other API
5355 IF lx_accrual_adjustment_tbl.COUNT > 0 THEN
5356
5357 --Populate online accrual rec type -- rmunjulu TNA set all the values for p_accrual_rec at one place
5358 l_accrual_rec.contract_id := p_term_rec.p_contract_id;
5359 l_accrual_rec.accrual_date := OKL_ACCOUNTING_UTIL.get_valid_gl_date(p_gl_date => l_quote_accpt_date);
5360 l_accrual_rec.source_trx_id := p_tcnv_rec.id; -- rmunjulu TNA Changed
5361 l_accrual_rec.source_trx_type := 'TCN';
5362 --l_accrual_rec.ignore_accrual_rule_yn := 'Y'; -- rmunjulu TNA Additional changes -- Removed
5363 --l_accrual_rec.stream_source_value := 'PROVIDED'; -- rmunjulu TNA Additional changes -- Removed
5364 --l_accrual_rec.trx_number := lx_trx_number; -- MGAAP 726304 --commented for 9191475
5365
5366 -- rmunjulu TNA Set the p_stream_tbl values
5367 FOR l_counter IN lx_accrual_adjustment_tbl.FIRST..lx_accrual_adjustment_tbl.LAST LOOP
5368
5369 l_stream_tbl(l_counter).stream_type_id := lx_accrual_adjustment_tbl(l_counter).sty_id;
5370 l_stream_tbl(l_counter).stream_amount := lx_accrual_adjustment_tbl(l_counter).amount;
5371 l_stream_tbl(l_counter).kle_id := lx_accrual_adjustment_tbl(l_counter).line_id;
5372 END LOOP;
5373
5374 -- rmunjulu TNA Create the accounting transactions for the accrual adjustments
5375 -- rmunjulu TNA Additional Changes -- Changed the procedure name
5376 IF (is_debug_statement_on) THEN
5377 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_GENERATE_ACCRUALS_PVT.adjust_accruals');
5378 END IF;
5379 OKL_GENERATE_ACCRUALS_PVT.adjust_accruals(
5380 p_api_version => p_api_version,
5381 p_init_msg_list => OKL_API.G_FALSE,
5382 x_return_status => l_return_status,
5383 x_msg_count => l_msg_count,
5384 x_msg_data => l_msg_data,
5385 --x_trx_number => lx_trx_number, --bug 9191475
5386 x_trx_tbl => l_trxnum_tbl, -- bug 9191475
5387 p_accrual_rec => l_accrual_rec,
5388 p_stream_tbl => l_stream_tbl,
5389 p_representation_type => 'SECONDARY'); -- MGAAP 7263041
5390 IF (is_debug_statement_on) THEN
5391 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_GENERATE_ACCRUALS_PVT.adjust_accruals , return status : ' || l_return_status);
5392 END IF;
5393
5394 -- rmunjulu TNA Handle return status
5395 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5396 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5397 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5398 RAISE OKL_API.G_EXCEPTION_ERROR;
5399 END IF;
5400
5401 --14-Dec-2004 Bug# 3999921 PAGARG Fix end
5402 END IF; -- Check for tbl has records
5403
5404 END IF;
5405 -- MGAAP end 7263041
5406
5407 END IF;
5408
5409 -- rmunjulu TNA Set the return status properly
5410 x_return_status := l_return_status;
5411
5412 -- end the transaction
5413 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
5414 IF (is_debug_procedure_on) THEN
5415 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
5416 END IF;
5417 EXCEPTION
5418 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5419 IF (is_debug_exception_on) THEN
5420 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
5421 END IF;
5422 -- rmunjulu TNA Close cursors in exception block
5423 IF l_qte_dtls_csr%ISOPEN THEN
5424 CLOSE l_qte_dtls_csr;
5425 END IF;
5426 IF l_ref_asset_amt_csr%ISOPEN THEN
5427 CLOSE l_ref_asset_amt_csr;
5428 END IF;
5429 x_return_status := OKL_API.HANDLE_EXCEPTIONS
5430 (
5431 l_api_name,
5432 G_PKG_NAME,
5433 'OKL_API.G_RET_STS_ERROR',
5434 x_msg_count,
5435 x_msg_data,
5436 '_PVT'
5437 );
5438 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5439 IF (is_debug_exception_on) THEN
5440 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
5441 END IF;
5442 -- rmunjulu TNA Close cursors in exception block
5443 IF l_qte_dtls_csr%ISOPEN THEN
5444 CLOSE l_qte_dtls_csr;
5445 END IF;
5446 IF l_ref_asset_amt_csr%ISOPEN THEN
5447 CLOSE l_ref_asset_amt_csr;
5448 END IF;
5449 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
5450 (
5451 l_api_name,
5452 G_PKG_NAME,
5453 'OKL_API.G_RET_STS_UNEXP_ERROR',
5454 x_msg_count,
5455 x_msg_data,
5456 '_PVT'
5457 );
5458 WHEN OTHERS THEN
5459 IF (is_debug_exception_on) THEN
5460 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
5461 || sqlcode || ' , SQLERRM : ' || sqlerrm);
5462 END IF;
5463 -- rmunjulu TNA Close cursors in exception block
5464 IF l_qte_dtls_csr%ISOPEN THEN
5465 CLOSE l_qte_dtls_csr;
5466 END IF;
5467 IF l_ref_asset_amt_csr%ISOPEN THEN
5468 CLOSE l_ref_asset_amt_csr;
5469 END IF;
5470 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
5471 (
5472 l_api_name,
5473 G_PKG_NAME,
5474 'OTHERS',
5475 x_msg_count,
5476 x_msg_data,
5477 '_PVT'
5478 );
5479 END process_adjustments;
5480
5481 -- Start of comments
5482 -- Procedure Name : process_loan_refunds
5483 -- Desciption : Do refund of loans (additional amount billed but not paid above outstanding balance) if expiration
5484 -- Business Rules :
5485 -- Parameters :
5486 -- Version : 1.0
5487 -- History : rmunjulu LOANS_ENHANCEMENTS
5488 -- End of comments
5489 PROCEDURE process_loan_refunds(
5490 p_api_version IN NUMBER,
5491 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5492 x_return_status OUT NOCOPY VARCHAR2,
5493 x_msg_count OUT NOCOPY NUMBER,
5494 x_msg_data OUT NOCOPY VARCHAR2,
5495 p_term_rec IN term_rec_type,
5496 p_tcnv_rec IN tcnv_rec_type,
5497 p_call_origin IN VARCHAR2 DEFAULT NULL,
5498 p_termination_date IN DATE) IS
5499
5500 l_module_name VARCHAR2(500) := G_MODULE_NAME || 'process_loan_refunds';
5501 is_debug_exception_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_EXCEPTION);
5502 is_debug_procedure_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_PROCEDURE);
5503 is_debug_statement_on boolean := OKL_DEBUG_PUB.Check_Log_On (l_module_name, G_LEVEL_STATEMENT);
5504 l_api_name CONSTANT VARCHAR2(30) := 'process_loan_refunds';
5505 l_api_version CONSTANT NUMBER := 1;
5506 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5507 l_msg_count NUMBER;
5508 l_msg_data VARCHAR2(2000);
5509 l_taiv_rec taiv_rec_type;
5510 lx_taiv_rec taiv_rec_type;
5511 l_tilv_rec tilv_rec_type;
5512 lx_tilv_rec tilv_rec_type;
5513 l_cm_try_id NUMBER;
5514 l_counter NUMBER := 1;
5515 l_quote_accpt_date DATE;
5516 l_quote_eff_date DATE;
5517 l_sty_id NUMBER;
5518 l_bpd_acc_rec OKL_ACC_CALL_PUB.bpd_acc_rec_type;
5519 l_currency_code OKC_K_HEADERS_B.currency_code%TYPE;
5520 l_loan_refund_amount NUMBER;
5521 l_functional_currency_code VARCHAR2(15);
5522 l_contract_currency_code VARCHAR2(15);
5523 l_currency_conversion_type VARCHAR2(30);
5524 l_currency_conversion_rate NUMBER;
5525 l_currency_conversion_date DATE;
5526 l_converted_amount NUMBER;
5527
5528 -- Since we do not use the amount or converted amount
5529 -- set a hardcoded value for the amount (and pass to to
5530 -- OKL_ACCOUNTING_UTIL.convert_to_functional_currency and get back
5531 -- conversion values )
5532 l_hard_coded_amount NUMBER := 100;
5533
5534 -- ansethur 23-FEB-07 R12B Added for Billing Enhancement Project Start Changes
5535 l_tldv_tbl okl_tld_pvt.tldv_tbl_type;
5536 lx_tldv_tbl okl_tld_pvt.tldv_tbl_type;
5537
5538 l_tilv_tbl okl_txl_ar_inv_lns_pub.tilv_tbl_type;
5539 lx_tilv_tbl okl_txl_ar_inv_lns_pub.tilv_tbl_type;
5540 -- ansethur 23-FEB-07 R12B Added for Billing Enhancement Project End Changes
5541
5542 BEGIN
5543 IF (is_debug_procedure_on) THEN
5544 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name ,'Begin(+)');
5545 END IF;
5546 IF (is_debug_statement_on) THEN
5547 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_call_origin: '|| p_call_origin);
5548 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'In param, p_termination_date: '|| p_termination_date);
5549 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);
5550 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);
5551 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);
5552 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);
5553 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);
5554 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);
5555 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);
5556 END IF;
5557
5558 l_msg_count := x_msg_count;
5559 l_msg_data := x_msg_data;
5560
5561 --Check API version, initialize message list and create savepoint.
5562 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
5563 G_PKG_NAME,
5564 p_init_msg_list,
5565 l_api_version,
5566 p_api_version,
5567 '_PVT',
5568 x_return_status);
5569
5570 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5571 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5572 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5573 RAISE OKL_API.G_EXCEPTION_ERROR;
5574 END IF;
5575
5576 -- expiration
5577 IF nvl(okl_am_lease_loan_trmnt_pvt.g_quote_exists, 'N') = 'N' THEN
5578
5579 -- If quote exists then accnting date is quote accept date else sysdate
5580 IF nvl(okl_am_lease_loan_trmnt_pvt.g_quote_exists, 'N') = 'Y'
5581 THEN
5582 l_quote_accpt_date := okl_am_lease_loan_trmnt_pvt.g_quote_accept_date;
5583 l_quote_eff_date := okl_am_lease_loan_trmnt_pvt.g_quote_eff_from_date;
5584 ELSE
5585 l_quote_accpt_date := p_termination_date;
5586 l_quote_eff_date := p_termination_date;
5587 END IF;
5588
5589 -- get excess loan payment amount
5590 IF (is_debug_statement_on) THEN
5591 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.get_excess_loan_payment');
5592 END IF;
5593 l_loan_refund_amount := OKL_AM_UTIL_PVT.get_excess_loan_payment(
5594 x_return_status => l_return_status,
5595 p_khr_id => p_term_rec.p_contract_id);
5596 IF (is_debug_statement_on) THEN
5597 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.get_excess_loan_payment , return status : ' || l_return_status);
5598 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_loan_refund_amount : ' || l_loan_refund_amount);
5599 END IF;
5600
5601 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5602 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5603 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5604 RAISE OKL_API.G_EXCEPTION_ERROR;
5605 END IF;
5606
5607 l_loan_refund_amount := nvl(l_loan_refund_amount,0) * -1;
5608
5609 IF l_loan_refund_amount <> 0 THEN
5610
5611 IF (is_debug_statement_on) THEN
5612 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_AM_UTIL_PVT.get_transaction_id');
5613 END IF;
5614 OKL_AM_UTIL_PVT.get_transaction_id (
5615 p_try_name => 'CREDIT MEMO',
5616 x_return_status => l_return_status,
5617 x_try_id => l_cm_try_id);
5618 IF (is_debug_statement_on) THEN
5619 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_AM_UTIL_PVT.get_transaction_id , return status : ' || l_return_status);
5620 END IF;
5621
5622 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS
5623 OR NVL (l_cm_try_id, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM
5624 THEN
5625
5626 OKC_API.SET_MESSAGE (
5627 p_app_name => G_APP_NAME,
5628 p_msg_name => G_INVALID_VALUE,
5629 p_token1 => G_COL_NAME_TOKEN,
5630 p_token1_value => 'Transaction Type');
5631
5632 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5633 END IF;
5634
5635 l_functional_currency_code := OKL_AM_UTIL_PVT.get_functional_currency();
5636
5637 IF (is_debug_statement_on) THEN
5638 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling OKL_ACCOUNTING_UTIL.convert_to_functional_currency');
5639 END IF;
5640 -- Get the currency conversion details from ACCOUNTING_Util
5641 OKL_ACCOUNTING_UTIL.convert_to_functional_currency(
5642 p_khr_id => p_term_rec.p_contract_id,
5643 p_to_currency => l_functional_currency_code,
5644 p_transaction_date => l_quote_accpt_date,
5645 p_amount => l_hard_coded_amount,
5646 x_return_status => l_return_status,
5647 x_contract_currency => l_contract_currency_code,
5648 x_currency_conversion_type => l_currency_conversion_type,
5649 x_currency_conversion_rate => l_currency_conversion_rate,
5650 x_currency_conversion_date => l_currency_conversion_date,
5651 x_converted_amount => l_converted_amount);
5652 IF (is_debug_statement_on) THEN
5653 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called OKL_ACCOUNTING_UTIL.convert_to_functional_currency , return status : ' || l_return_status);
5654 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_contract_currency_code : ' || l_contract_currency_code);
5655 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_currency_conversion_type : ' || l_currency_conversion_type);
5656 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_currency_conversion_rate : ' || l_currency_conversion_rate);
5657 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_currency_conversion_date : ' || l_currency_conversion_date);
5658 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_converted_amount : ' || l_converted_amount);
5659 END IF;
5660
5661 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5662 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5663 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5664 RAISE OKL_API.G_EXCEPTION_ERROR;
5665 END IF;
5666
5667 IF (is_debug_statement_on) THEN
5668 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_streams_util.get_dependent_stream_type');
5669 END IF;
5670 --Bug 6266134 veramach start
5671 okl_streams_util.get_dependent_stream_type(
5672 p_khr_id => p_term_rec.p_contract_id,
5673 p_primary_sty_purpose => 'RENT',
5674 p_dependent_sty_purpose => 'EXCESS_LOAN_PAYMENT_PAID',
5675 x_return_status => l_return_status,
5676 x_dependent_sty_id => l_sty_id
5677 );
5678 --Bug 6266134 veramach end
5679 IF (is_debug_statement_on) THEN
5680 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_streams_util.get_dependent_stream_type , return status : ' || l_return_status);
5681 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'l_sty_id : ' || l_sty_id);
5682 END IF;
5683
5684 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5685 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5686 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5687 RAISE OKL_API.G_EXCEPTION_ERROR;
5688 END IF;
5689
5690 l_taiv_rec.currency_code := l_contract_currency_code;
5691 l_taiv_rec.currency_conversion_type := l_currency_conversion_type;
5692 l_taiv_rec.currency_conversion_rate := l_currency_conversion_rate;
5693 l_taiv_rec.currency_conversion_date := l_currency_conversion_date;
5694 l_taiv_rec.try_id := l_cm_try_id;
5695 l_taiv_rec.khr_id := p_term_rec.p_contract_id;
5696 l_taiv_rec.date_invoiced := l_quote_accpt_date;
5697 l_taiv_rec.date_entered := l_quote_accpt_date;
5698 l_taiv_rec.amount := l_loan_refund_amount;
5699 l_taiv_rec.description := 'Loan Refund Amount on Expiration';
5700 l_taiv_rec.trx_status_code := 'SUBMITTED'; -- RMUNJULU CHANGED 21-NOV-05
5701
5702 --20-NOV-2006 ANSETHUR R12B - LEGAL ENTITY UPTAKE PROJECT
5703 l_taiv_rec.legal_entity_id :=OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_term_rec.p_contract_id);
5704
5705 --ansethur 27-FEB-2007 Added for R12 B Billing Architecture Start Changes
5706 --Included call to Enhanced Billing API in the place of the calls to Billing Header,Lines and Distributions
5707 l_taiv_rec.okl_source_billing_trx := 'TERMINATION';
5708 l_tilv_rec.line_number := l_counter;
5709 l_tilv_rec.description := 'Loan Refund Amount on Expiration';
5710 l_tilv_rec.sty_id := l_sty_id;
5711 l_tilv_rec.amount := l_loan_refund_amount;
5712 l_tilv_rec.inv_receiv_line_code := 'LINE';
5713
5714 l_tilv_tbl(0) := l_tilv_rec; -- Assign the line record in tilv_tbl structure
5715
5716 IF (is_debug_statement_on) THEN
5717 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'calling okl_internal_billing_pvt.create_billing_trx');
5718 END IF;
5719 okl_internal_billing_pvt.create_billing_trx(p_api_version => l_api_version,
5720 p_init_msg_list => p_init_msg_list,
5721 x_return_status => x_return_status,
5722 x_msg_count => x_msg_count,
5723 x_msg_data => x_msg_data,
5724 p_taiv_rec => l_taiv_rec,
5725 p_tilv_tbl => l_tilv_tbl,
5726 p_tldv_tbl => l_tldv_tbl,
5727 x_taiv_rec => lx_taiv_rec,
5728 x_tilv_tbl => lx_tilv_tbl,
5729 x_tldv_tbl => lx_tldv_tbl);
5730 IF (is_debug_statement_on) THEN
5731 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_STATEMENT,l_module_name,'called okl_internal_billing_pvt.create_billing_trx , return status : ' || x_return_status);
5732 END IF;
5733
5734 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5735 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5736 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5737 RAISE OKL_API.G_EXCEPTION_ERROR;
5738 END IF;
5739
5740 /* --ansethur 27-FEB-2007 commented for R12 B Billing Architecture Begins
5741 -- create invoice header
5742 OKL_TRX_AR_INVOICES_PUB.insert_trx_ar_invoices (
5743 p_api_version => P_api_version,
5744 p_init_msg_list => OKL_API.G_FALSE,
5745 x_return_status => l_return_status,
5746 x_msg_count => l_msg_count,
5747 x_msg_data => l_msg_data,
5748 p_taiv_rec => l_taiv_rec,
5749 x_taiv_rec => lx_taiv_rec);
5750
5751 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5752 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5753 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5754 RAISE OKL_API.G_EXCEPTION_ERROR;
5755 END IF;
5756
5757 l_tilv_rec.line_number := l_counter;
5758 l_tilv_rec.description := 'Loan Refund Amount on Expiration';
5759 l_tilv_rec.sty_id := l_sty_id;
5760 l_tilv_rec.amount := l_loan_refund_amount;
5761 l_tilv_rec.tai_id := lx_taiv_rec.id;
5762 l_tilv_rec.inv_receiv_line_code := 'LINE';
5763
5764 -- Create Invoice Line
5765 OKL_TXL_AR_INV_LNS_PUB.insert_txl_ar_inv_lns (
5766 p_api_version => l_api_version,
5767 p_init_msg_list => OKL_API.G_FALSE,
5768 x_return_status => l_return_status,
5769 x_msg_count => l_msg_count,
5770 x_msg_data => l_msg_data,
5771 p_tilv_rec => l_tilv_rec,
5772 x_tilv_rec => lx_tilv_rec);
5773
5774 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5775 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5776 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5777 RAISE OKL_API.G_EXCEPTION_ERROR;
5778 END IF;
5779
5780 l_bpd_acc_rec.id := lx_tilv_rec.id;
5781 l_bpd_acc_rec.source_table := 'OKL_TXL_AR_INV_LNS_B';
5782
5783 -- Create Accounting Distribution
5784 OKL_ACC_CALL_PUB.create_acc_trans(
5785 p_api_version => l_api_version,
5786 p_init_msg_list => OKL_API.G_FALSE,
5787 x_return_status => l_return_status,
5788 x_msg_count => l_msg_count,
5789 x_msg_data => l_msg_data,
5790 p_bpd_acc_rec => l_bpd_acc_rec);
5791
5792 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5793 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5794 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
5795 RAISE OKL_API.G_EXCEPTION_ERROR;
5796 END IF;
5797
5798 --ansethur 23-FEB-2007 commented for R12 B Billing Architecture Ends
5799 */
5800 --ansethur 27-FEB-2007 Added for R12 B Billing Architecture End Changes
5801 END IF;
5802 END IF;
5803
5804 x_return_status := l_return_status;
5805
5806 -- end the transaction
5807 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
5808 IF (is_debug_procedure_on) THEN
5809 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_PROCEDURE,l_module_name,'End(-)');
5810 END IF;
5811 EXCEPTION
5812 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5813 IF (is_debug_exception_on) THEN
5814 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_ERROR');
5815 END IF;
5816
5817 x_return_status := OKL_API.HANDLE_EXCEPTIONS
5818 (
5819 l_api_name,
5820 G_PKG_NAME,
5821 'OKL_API.G_RET_STS_ERROR',
5822 x_msg_count,
5823 x_msg_data,
5824 '_PVT'
5825 );
5826 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5827 IF (is_debug_exception_on) THEN
5828 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'G_EXCEPTION_UNEXPECTED_ERROR');
5829 END IF;
5830
5831 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
5832 (
5833 l_api_name,
5834 G_PKG_NAME,
5835 'OKL_API.G_RET_STS_UNEXP_ERROR',
5836 x_msg_count,
5837 x_msg_data,
5838 '_PVT'
5839 );
5840 WHEN OTHERS THEN
5841 IF (is_debug_exception_on) THEN
5842 OKL_DEBUG_PUB.LOG_DEBUG(G_LEVEL_EXCEPTION,l_module_name, 'EXCEPTION :'||'OTHERS, SQLCODE: '
5843 || sqlcode || ' , SQLERRM : ' || sqlerrm);
5844 END IF;
5845
5846 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
5847 (
5848 l_api_name,
5849 G_PKG_NAME,
5850 'OTHERS',
5851 x_msg_count,
5852 x_msg_data,
5853 '_PVT'
5854 );
5855 END process_loan_refunds;
5856
5857 END OKL_AM_LEASE_LOAN_TRMNT_PVT;