[Home] [Help]
PACKAGE BODY: APPS.OKL_AM_RESTRUCTURE_RENTS_PVT
Source
1 PACKAGE BODY OKL_AM_RESTRUCTURE_RENTS_PVT AS
2 /* $Header: OKLRRSRB.pls 120.2 2005/10/30 04:36:28 appldev noship $ */
3
4
5 -- Start of comments
6 --
7 -- Procedure Name : initiate_request
8 -- Description : Initiates the out bound request to super trump after
9 -- getting the contract details that supertrump needs along
10 -- with new restructure details for the contract
11 -- Business Rules :
12 -- Parameters :
13 -- Version : 1.0
14 --
15 -- End of comments
16
17 PROCEDURE initiate_request(
18 p_api_version IN NUMBER,
19 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
20 p_quote_id IN OKL_TRX_QUOTES_B.ID%TYPE,
21 x_return_status OUT NOCOPY VARCHAR2,
22 x_msg_count OUT NOCOPY NUMBER,
23 x_msg_data OUT NOCOPY VARCHAR2,
24 x_request_id OUT NOCOPY NUMBER,
25 x_trans_status OUT NOCOPY VARCHAR2) IS
26
27 CURSOR l_qtev_csr (p_quote_id IN OKL_TRX_QUOTES_B.ID%TYPE) IS
28 SELECT qte.id,
29 qte.khr_id,
30 qte.term,
31 qte.pop_code_end,
32 qte.purchase_amount,
33 qte.purchase_formula,
34 khr.after_tax_yield,
35 khr.term_duration
36 FROM okl_trx_quotes_v qte,
37 okl_k_headers khr
38 WHERE qte.id = p_quote_id
39 AND khr.id = qte.khr_id;
40
41 -- SMODUGA 11-Oct-04 Bug 3925469
42 -- Modified cursor by passing sty_id based on the purspose and
43 -- removed reference to stream type view.
44 CURSOR l_stream_csr (cp_contract_id IN NUMBER,cp_sty_id IN NUMBER) IS
45 SELECT ste.stream_element_date start_date,
46 SUM (ste.amount) amount
47 FROM okl_strm_elements ste,
48 okl_streams stm,
49 okc_k_lines_b kle,
50 okc_statuses_b kls
51 WHERE stm.khr_id = cp_contract_id
52 AND stm.sty_id = cp_sty_id
53 AND stm.active_yn = 'Y'
54 AND stm.say_code = 'CURR'
55 AND kle.id = stm.kle_id
56 AND kls.code = kle.sts_code
57 AND kls.ste_code = 'ACTIVE'
58 AND ste.stm_id = stm.id
59 GROUP BY ste.stream_element_date
60 ORDER BY ste.stream_element_date;
61
62 l_qtev_rec l_qtev_csr%ROWTYPE;
63
64 -- extracted parameters from LA proc for the contract
65 lx_csm_lease_header csm_lease_rec_type;
66 lx_csm_one_off_fee_tbl csm_one_off_fee_tbl_type;
67 lx_csm_periodic_expenses_tbl csm_periodic_expenses_tbl_type;
68 lx_csm_yields_tbl csm_yields_tbl_type;
69 lx_req_stream_types_tbl csm_stream_types_tbl_type;
70 lx_csm_line_details_tbl csm_line_details_tbl_type;
71 lx_rents_tbl csm_periodic_expenses_tbl_type;
72
73 l_skip_prc_engine VARCHAR2(1) := OKL_API.G_FALSE;
74
75 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
76 l_api_name CONSTANT VARCHAR2(30):= 'initiate_request';
77 l_api_version CONSTANT NUMBER := 1;
78 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
79
80 l_chr_id NUMBER;
81 l_ind NUMBER := 0;
82 l_advance_or_arrears OKL_SIF_FEES_V.advance_or_arrears%TYPE;
83 l_structure OKL_SIF_FEES_V.structure%TYPE;
84 l_period OKL_SIF_FEES_V.period%TYPE;
85 l_amount NUMBER := OKC_API.G_MISS_NUM;
86 l_number_of_periods NUMBER;
87 l_new_periods NUMBER;
88 l_next_billing_date DATE := NULL;
89 l_last_billing_date DATE := NULL;
90 l_add_months INTEGER;
91
92 -- SMODUGA added variable for userdefined streams 3925469
93 lx_sty_id NUMBER;
94
95
96 BEGIN
97 --Check API version, initialize message list and create savepoint.
98 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
99 G_PKG_NAME,
100 p_init_msg_list,
101 l_api_version,
102 p_api_version,
103 '_PVT',
104 x_return_status);
105
106 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
107 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
108 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
109 RAISE OKL_API.G_EXCEPTION_ERROR;
110 END IF;
111
112 OPEN l_qtev_csr (p_quote_id);
113 FETCH l_qtev_csr INTO l_qtev_rec;
114
115 IF (l_qtev_csr%NOTFOUND) THEN
116 OKC_API.SET_MESSAGE (
117 p_app_name => 'OKC'
118 ,p_msg_name => G_INVALID_VALUE
119 ,p_token1 => G_COL_NAME_TOKEN
120 ,p_token1_value => 'p_quote_id');
121 RAISE OKL_API.G_EXCEPTION_ERROR;
122 END IF;
123
124 CLOSE l_qtev_csr;
125
126 l_chr_id := l_qtev_rec.khr_id;
127 l_new_periods := l_qtev_rec.term_duration + l_qtev_rec.term;
128
129 -- Call the OKL_LA_STREAM_PUB to get the contract parameters
130 OKL_LA_STREAM_PUB.extract_params_lease(
131 p_api_version => p_api_version,
132 p_init_msg_list => p_init_msg_list,
133 p_chr_id => l_chr_id,
134 x_return_status => l_return_status,
135 x_msg_count => x_msg_count,
136 x_msg_data => x_msg_data,
137 x_csm_lease_header => lx_csm_lease_header,
138 x_csm_one_off_fee_tbl => lx_csm_one_off_fee_tbl,
139 x_csm_periodic_expenses_tbl => lx_csm_periodic_expenses_tbl,
140 x_csm_yields_tbl => lx_csm_yields_tbl,
141 x_req_stream_types_tbl => lx_req_stream_types_tbl,
142 x_csm_line_details_tbl => lx_csm_line_details_tbl,
143 x_rents_tbl => lx_rents_tbl);
144
145 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
146 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
147 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
148 RAISE OKL_API.G_EXCEPTION_ERROR;
149 END IF;
150
151 -- Set the restructure values
152 lx_csm_lease_header.jtot_object1_code := 'OKL_TRX_QUOTES_B';
153 lx_csm_lease_header.object1_id1 := l_qtev_rec.id;
154 lx_csm_lease_header.orp_code :=
155 Okl_Create_Streams_Pub.G_ORP_CODE_RESTRUCTURE_AM;
156 -- Update the original contract term
157 lx_csm_lease_header.term := l_new_periods;
158 -- What to adjust
159 lx_csm_lease_header.adjust :=
160 OKL_CREATE_STREAMS_PUB.G_ADJUST; --'Rent';
161 lx_csm_lease_header.adjustment_method :=
162 OKL_CREATE_STREAMS_PUB.G_ADJUSTMENT_METHOD; --'Proportional';
163
164 -- Delete this table, not required
165 lx_req_stream_types_tbl.DELETE;
166
167 -- Rents
168 l_advance_or_arrears := lx_rents_tbl(1).advance_or_arrears;
169 l_structure := lx_rents_tbl(1).structure;
170 l_period := lx_rents_tbl(1).period;
171 lx_rents_tbl.DELETE;
172
173 -- smoduga +++++++++ User Defined Streams -- start ++++++++++++++++
174 OKL_STREAMS_UTIL.get_primary_stream_type(l_chr_id,
175 'RENT',
176 l_return_status,
177 lx_sty_id);
178 -- smoduga +++++++++ User Defined Streams -- end ++++++++++++++++
179
180 FOR l_str_rec IN l_stream_csr (l_chr_id,lx_sty_id) LOOP
181
182
183 IF l_str_rec.start_date < SYSDATE THEN
184
185 IF l_amount <> l_str_rec.amount THEN
186 l_ind := l_ind + 1;
187 l_amount := l_str_rec.amount;
188 lx_rents_tbl(l_ind).level_index_number := l_ind;
189 lx_rents_tbl(l_ind).advance_or_arrears := l_advance_or_arrears;
190 lx_rents_tbl(l_ind).structure := l_structure;
191 lx_rents_tbl(l_ind).period := l_period;
192 lx_rents_tbl(l_ind).description := 'RENT';
193 lx_rents_tbl(l_ind).level_type := OKL_CREATE_STREAMS_PUB.G_SFE_LEVEL_PAYMENT;
194 lx_rents_tbl(l_ind).income_or_expense := OKL_CREATE_STREAMS_PUB.G_INCOME;
195 lx_rents_tbl(l_ind).query_level_yn := OKL_CREATE_STREAMS_PUB.G_FND_YES;
196 lx_rents_tbl(l_ind).lock_level_step := OKL_CREATE_STREAMS_PUB.G_LOCK_AMOUNT;
197 lx_rents_tbl(l_ind).date_start := l_str_rec.start_date;
198 lx_rents_tbl(l_ind).amount := l_str_rec.amount;
199 lx_rents_tbl(l_ind).number_of_periods := 1;
200 ELSE
201 lx_rents_tbl(l_ind).number_of_periods :=
202 lx_rents_tbl(l_ind).number_of_periods + 1;
203 END IF;
204 l_new_periods := l_new_periods - 1;
205 l_last_billing_date := l_str_rec.start_date;
206
207 ELSE
208 IF l_next_billing_date IS NULL THEN
209 l_next_billing_date := l_str_rec.start_date;
210 END IF;
211 END IF;
212
213 END LOOP;
214
215 IF l_new_periods > 0 THEN
216
217 IF l_next_billing_date IS NULL THEN
218
219 IF l_last_billing_date IS NULL THEN
220 OKL_API.SET_MESSAGE (
221 p_app_name => G_APP_NAME
222 ,p_msg_name => 'OKL_LLA_NO_STREAM_ELEMENT');
223 RAISE OKL_API.G_EXCEPTION_ERROR;
224 ELSE
225
226 IF l_period = 'A' THEN
227 l_add_months := 12;
228 ELSIF l_period = 'S' THEN
229 l_add_months := 6;
230 ELSIF l_period = 'Q' THEN
231 l_add_months := 3;
232 ELSE -- l_period = 'M'
233 l_add_months := 1;
234 END IF;
235
236 LOOP
237 EXIT WHEN l_last_billing_date >= SYSDATE;
238 l_last_billing_date := ADD_MONTHS (l_last_billing_date, l_add_months);
239 END LOOP;
240 l_next_billing_date := l_last_billing_date;
241
242 END IF;
243
244 END IF;
245
246 IF l_next_billing_date IS NOT NULL THEN
247
248 l_ind := l_ind + 1;
249 lx_rents_tbl(l_ind).level_index_number := l_ind;
250 lx_rents_tbl(l_ind).advance_or_arrears := l_advance_or_arrears;
251 lx_rents_tbl(l_ind).structure := l_structure;
252 lx_rents_tbl(l_ind).period := l_period;
253 lx_rents_tbl(l_ind).description := 'RENT';
254 lx_rents_tbl(l_ind).level_type := OKL_CREATE_STREAMS_PUB.G_SFE_LEVEL_PAYMENT;
255 lx_rents_tbl(l_ind).income_or_expense := OKL_CREATE_STREAMS_PUB.G_INCOME;
256 lx_rents_tbl(l_ind).query_level_yn := OKL_CREATE_STREAMS_PUB.G_FND_YES;
257 lx_rents_tbl(l_ind).lock_level_step := NULL;
258 lx_rents_tbl(l_ind).date_start := l_next_billing_date;
259 lx_rents_tbl(l_ind).amount := 0;
260 lx_rents_tbl(l_ind).number_of_periods := l_new_periods;
261
262 ELSE
263 RAISE OKL_API.G_EXCEPTION_ERROR;
264 END IF;
265 ELSE
266 RAISE OKL_API.G_EXCEPTION_ERROR;
267 END IF;
268
269 -- Yields
270 FOR i IN lx_csm_yields_tbl.FIRST..lx_csm_yields_tbl.LAST LOOP
271 IF lx_csm_yields_tbl(i).yield_name = 'Booking' THEN
272 lx_csm_yields_tbl(i).target_value := l_qtev_rec.after_tax_yield;
273 END IF;
274 END LOOP;
275
276 -- Purchase Option
277 FOR i IN lx_csm_line_details_tbl.FIRST..lx_csm_line_details_tbl.LAST LOOP
278
279 lx_csm_line_details_tbl(i).purchase_option := l_qtev_rec.pop_code_end;
280
281 IF l_qtev_rec.purchase_amount IS NOT NULL
282 AND l_qtev_rec.purchase_amount <> OKL_API.G_MISS_NUM THEN
283 lx_csm_line_details_tbl(i).purchase_option_amount := l_qtev_rec.purchase_amount;
284
285 ELSIF l_qtev_rec.purchase_formula IS NOT NULL
286 AND l_qtev_rec.purchase_formula <> OKL_API.G_MISS_CHAR THEN
287
288 okl_am_util_pvt.get_formula_value (
289 p_formula_name => l_qtev_rec.purchase_formula,
290 p_chr_id => l_chr_id,
291 p_cle_id => lx_csm_line_details_tbl(i).kle_asset_id,
292 x_formula_value => lx_csm_line_details_tbl(i).purchase_option_amount,
293 x_return_status => l_return_status);
294
295 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
296 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
297 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
298 RAISE OKL_API.G_EXCEPTION_ERROR;
299 END IF;
300
301 ELSE
302 lx_csm_line_details_tbl(i).purchase_option_amount := 0;
303 END IF;
304
305 END LOOP;
306
307 -- Call OKL_CREATE_STREAMS_PUB with the modified parameters which calls supertrump
308 OKL_CREATE_STREAMS_PUB.create_streams_lease_restr (
309 p_api_version => p_api_version,
310 p_init_msg_list => p_init_msg_list,
311 p_skip_prc_engine => l_skip_prc_engine,
312 p_csm_lease_header => lx_csm_lease_header,
313 p_csm_one_off_fee_tbl => lx_csm_one_off_fee_tbl, --one time fee
314 p_csm_periodic_expenses_tbl => lx_csm_periodic_expenses_tbl, --fee and service
315 p_csm_yields_tbl => lx_csm_yields_tbl,
316 p_csm_stream_types_tbl => lx_req_stream_types_tbl,
317 p_csm_line_details_tbl => lx_csm_line_details_tbl,
318 p_rents_tbl => lx_rents_tbl,
319 x_trans_id => x_request_id, -- correct***
320 x_trans_status => x_trans_status,
321 x_return_status => l_return_status,
322 x_msg_count => x_msg_count,
323 x_msg_data => x_msg_data);
324
325 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
326 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
327 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
328 RAISE OKL_API.G_EXCEPTION_ERROR;
329 END IF;
330
331 -- end the transaction
332 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
333
334 EXCEPTION
335 WHEN OKL_API.G_EXCEPTION_ERROR THEN
336 IF (l_qtev_csr%ISOPEN) THEN
337 CLOSE l_qtev_csr;
338 END IF;
339 IF (l_stream_csr%ISOPEN) THEN
340 CLOSE l_stream_csr;
341 END IF;
342 x_return_status := OKL_API.HANDLE_EXCEPTIONS
343 (
344 l_api_name,
345 G_PKG_NAME,
346 'OKL_API.G_RET_STS_ERROR',
347 x_msg_count,
348 x_msg_data,
349 '_PVT'
350 );
351
352 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
353 IF (l_qtev_csr%ISOPEN) THEN
354 CLOSE l_qtev_csr;
355 END IF;
356 IF (l_stream_csr%ISOPEN) THEN
357 CLOSE l_stream_csr;
358 END IF;
359 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
360 (
361 l_api_name,
362 G_PKG_NAME,
363 'OKL_API.G_RET_STS_UNEXP_ERROR',
364 x_msg_count,
365 x_msg_data,
366 '_PVT'
367 );
368
369 WHEN OTHERS THEN
370 IF (l_qtev_csr%ISOPEN) THEN
371 CLOSE l_qtev_csr;
372 END IF;
373 IF (l_stream_csr%ISOPEN) THEN
374 CLOSE l_stream_csr;
375 END IF;
376 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
377 (
378 l_api_name,
379 G_PKG_NAME,
380 'OTHERS',
381 x_msg_count,
382 x_msg_data,
383 '_PVT'
384 );
385 END initiate_request;
386
387
388 -- Start of comments
389 --
390 -- Procedure Name : populate_rent_levels
391 -- Description : Save stream returns as quote lines
392 -- Business Rules :
393 -- Parameters :
394 -- Version : 1.0
395 --
396 -- End of comments
397
398 PROCEDURE populate_rent_levels (
399 p_quote_id IN NUMBER,
400 p_rent_tbl IN srlv_tbl_type,
401 p_yield_tbl IN yields_tbl_type,
402 x_tqlv_tbl OUT NOCOPY tqlv_tbl_type,
403 x_return_status OUT NOCOPY VARCHAR2) IS
404
405 l_tqlv_rec1 tqlv_rec_type;
406 l_tqlv_rec2 tqlv_rec_type;
407 l_tqlv_tbl tqlv_tbl_type;
408 lx_tqlv_tbl tqlv_tbl_type;
409 l_qtev_rec qtev_rec_type;
410 lx_qtev_rec qtev_rec_type;
411
412 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
413 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
414
415 l_api_version CONSTANT NUMBER := G_API_VERSION;
416 l_msg_count NUMBER := G_MISS_NUM;
417 l_msg_data VARCHAR2(2000);
418
419 l_ind INTEGER;
420 l_seq INTEGER;
421
422 BEGIN
423
424 -- *******************
425 -- Update quote status
426 -- *******************
427
428 l_qtev_rec.id := p_quote_id;
429 l_qtev_rec.qst_code := 'DRAFTED';
430
431 OKL_TRX_QUOTES_PUB.update_trx_quotes (
432 p_api_version => l_api_version,
433 p_init_msg_list => OKL_API.G_FALSE,
434 x_return_status => l_return_status,
435 x_msg_count => l_msg_count,
436 x_msg_data => l_msg_data,
437 p_qtev_rec => l_qtev_rec,
438 x_qtev_rec => lx_qtev_rec);
439
440 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
441 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
442 l_overall_status := l_return_status;
443 END IF;
444 END IF;
445
446 -- ******************************
447 -- Save Rent Stream Return Levels
448 -- ******************************
449
450 IF p_rent_tbl.COUNT > 0 THEN
451
452 l_ind := p_rent_tbl.FIRST;
453
454 LOOP
455
456 l_seq := NVL (l_tqlv_tbl.LAST, 0) + 1;
457
458 l_tqlv_rec1.qte_id := p_quote_id;
459 l_tqlv_rec1.qlt_code := G_RENTS_LINE;
460 l_tqlv_rec1.org_id := lx_qtev_rec.org_id;
461 l_tqlv_rec1.line_number := p_rent_tbl(l_ind).level_index_number;
462 l_tqlv_rec1.amount := p_rent_tbl(l_ind).amount;
463 l_tqlv_rec1.start_date := p_rent_tbl(l_ind).first_payment_date;
464 l_tqlv_rec1.period := p_rent_tbl(l_ind).period;
465 l_tqlv_rec1.number_of_periods := p_rent_tbl(l_ind).number_of_periods;
466 l_tqlv_rec1.lock_level_step := p_rent_tbl(l_ind).lock_level_step;
467 l_tqlv_rec1.advance_or_arrears := p_rent_tbl(l_ind).advance_or_arrears;
468
469 -- Set mandatory TAPI defaults
470 l_tqlv_rec1.modified_yn := G_NO;
471 l_tqlv_rec1.taxed_yn := G_NO;
472
473 l_tqlv_tbl(l_seq) := l_tqlv_rec1;
474
475 EXIT WHEN (l_ind = p_rent_tbl.LAST);
476 l_ind := p_rent_tbl.NEXT (l_ind);
477
478 END LOOP;
479
480 END IF;
481
482 -- ******************************
483 -- Save Rent Stream Return Yields
484 -- ******************************
485
486 IF p_yield_tbl.COUNT > 0 THEN
487
488 l_ind := p_yield_tbl.FIRST;
489
490 LOOP
491
492 l_seq := NVL (l_tqlv_tbl.LAST, 0) + 1;
493
494 l_tqlv_rec2.qte_id := p_quote_id;
495 l_tqlv_rec2.qlt_code := G_YIELDS_LINE;
496 l_tqlv_rec2.org_id := lx_qtev_rec.org_id;
497 l_tqlv_rec2.line_number := l_seq;
498 l_tqlv_rec2.amount := 0;
499 l_tqlv_rec2.yield_name := p_yield_tbl(l_ind).yield_name;
500 l_tqlv_rec2.yield_value := 100 * p_yield_tbl(l_ind).value;
501 l_tqlv_rec2.implicit_interest_rate :=
502 100 * p_yield_tbl(l_ind).implicit_interest_rate;
503
504 -- Set mandatory TAPI defaults
505 l_tqlv_rec2.modified_yn := G_NO;
506 l_tqlv_rec2.taxed_yn := G_NO;
507
508 l_tqlv_tbl(l_seq) := l_tqlv_rec2;
509
510 EXIT WHEN (l_ind = p_yield_tbl.LAST);
511 l_ind := p_yield_tbl.NEXT (l_ind);
512
513 END LOOP;
514
515 END IF;
516
517 -- **********************************
518 -- Save quote lines into the database
519 -- **********************************
520
521 IF l_tqlv_tbl.COUNT > 0 THEN
522
523 OKL_TXL_QUOTE_LINES_PUB.insert_txl_quote_lines (
524 p_api_version => l_api_version,
525 p_init_msg_list => OKL_API.G_FALSE,
526 x_return_status => l_return_status,
527 x_msg_count => l_msg_count,
528 x_msg_data => l_msg_data,
529 p_tqlv_tbl => l_tqlv_tbl,
530 x_tqlv_tbl => lx_tqlv_tbl);
531
532 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
533 IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
534 l_overall_status := l_return_status;
535 END IF;
536 END IF;
537
538 END IF;
539
540 -- **************
541 -- Return results
542 -- **************
543
544 x_tqlv_tbl := lx_tqlv_tbl;
545 x_return_status := l_overall_status;
546
547 EXCEPTION
548
549 WHEN OTHERS THEN
550
551 -- store SQL error message on message stack for caller
552 OKL_API.SET_MESSAGE (
553 p_app_name => G_APP_NAME
554 ,p_msg_name => G_UNEXPECTED_ERROR
555 ,p_token1 => G_SQLCODE_TOKEN
556 ,p_token1_value => sqlcode
557 ,p_token2 => G_SQLERRM_TOKEN
558 ,p_token2_value => sqlerrm);
559
560 -- notify caller of an UNEXPECTED error
561 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
562
563 END;
564
565
566 -- Start of comments
567 --
568 -- Procedure Name : process_results
569 -- Description :
570 -- Business Rules :
571 -- Parameters :
572 -- Version : 1.0
573 --
574 -- End of comments
575
576
577 PROCEDURE process_results(
578 p_api_version IN NUMBER,
579 p_init_msg_list IN VARCHAR2,
580 p_generation_context IN VARCHAR2,
581 p_jtot_object1_code IN VARCHAR2,
582 p_object1_id1 IN VARCHAR2,
583 p_chr_id IN NUMBER,
584 p_rent_tbl IN srlv_tbl_type,
585 p_yield_tbl IN yields_tbl_type,
586 x_return_status OUT NOCOPY VARCHAR2,
587 x_msg_count OUT NOCOPY NUMBER,
588 x_msg_data OUT NOCOPY VARCHAR2) IS
589
590 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
591 l_api_name CONSTANT VARCHAR2(30):= 'process_results';
592 l_api_version CONSTANT NUMBER := 1;
593 l_overall_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
594 l_tqlv_tbl tqlv_tbl_type;
595
596 BEGIN
597
598 --Check API version, initialize message list and create savepoint.
599 l_return_status := OKL_API.START_ACTIVITY(l_api_name,
600 G_PKG_NAME,
601 p_init_msg_list,
602 l_api_version,
603 p_api_version,
604 '_PVT',
605 x_return_status);
606
607 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
608 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
609 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
610 RAISE OKL_API.G_EXCEPTION_ERROR;
611 END IF;
612
613 populate_rent_levels (
614 p_quote_id => p_object1_id1,
615 p_rent_tbl => p_rent_tbl,
616 p_yield_tbl => p_yield_tbl,
617 x_tqlv_tbl => l_tqlv_tbl,
618 x_return_status => l_return_status);
619
620 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
621 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
622 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
623 RAISE OKL_API.G_EXCEPTION_ERROR;
624 END IF;
625
626 x_return_status := l_return_status;
627
628 -- end the transaction
629 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
630
631 EXCEPTION
632 WHEN OKL_API.G_EXCEPTION_ERROR THEN
633 x_return_status := OKL_API.HANDLE_EXCEPTIONS
634 (
635 l_api_name,
636 G_PKG_NAME,
637 'OKL_API.G_RET_STS_ERROR',
638 x_msg_count,
639 x_msg_data,
640 '_PVT'
641 );
642 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
643 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
644 (
645 l_api_name,
646 G_PKG_NAME,
647 'OKL_API.G_RET_STS_UNEXP_ERROR',
648 x_msg_count,
649 x_msg_data,
650 '_PVT'
651 );
652 WHEN OTHERS THEN
653 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
654 (
655 l_api_name,
656 G_PKG_NAME,
657 'OTHERS',
658 x_msg_count,
659 x_msg_data,
660 '_PVT'
661 );
662 END process_results;
663
664 END OKL_AM_RESTRUCTURE_RENTS_PVT;