340: l_day_convention_year VARCHAR2(30);
341: l_days_in_year NUMBER;
342: BEGIN
343: IF (G_DEBUG_ENABLED = 'Y') THEN
344: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
345: END IF;
346:
347: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
348: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
344: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
345: END IF;
346:
347: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
348: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
349:
350: END IF;
351: x_return_status := OKL_API.G_RET_STS_SUCCESS;
352: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
349:
350: END IF;
351: x_return_status := OKL_API.G_RET_STS_SUCCESS;
352: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
353: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' Investment ' || to_char( p_investment ));
354:
355: END IF;
356: OPEN c_stub;
357: FETCH c_stub INTO l_stub_id;
373: x_days_in_month => l_day_convention_month,
374: x_days_in_year => l_day_convention_year,
375: x_return_status => lx_return_status);
376: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
377: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
378: END IF;
379: IF (lx_return_status = G_RET_STS_UNEXP_ERROR) THEN
380: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
381: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN
382: RAISE OKL_API.G_EXCEPTION_ERROR;
383: END IF;
384:
385: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
386: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'sll start date ' || l_start_date );
387: END IF;
388: FOR l_rent_flow IN c_rent_flows( l_stream_name ) LOOP
389:
390: k := k + 1;
389:
390: k := k + 1;
391:
392: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
393: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'rent flow start date ' || l_rent_flow.se_date );
394: END IF;
395: asset_rents(k).se_days := OKL_PRICING_UTILS_PVT.get_day_count(p_start_date => l_start_date,
396: p_days_in_month => l_day_convention_month,
397: p_days_in_year => l_day_convention_year,
434: RAISE OKL_API.G_EXCEPTION_ERROR;
435: END IF;
436:
437: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
438: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' asset rent count ' || to_char(asset_rents.COUNT));
439: END IF;
440: LOOP
441:
442: i := i + 1;
443:
444: l_interim_interest := p_investment * l_interim_days * l_iir/360;
445:
446: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
447: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || i||' Implicit Rate '||l_iir||' Interim Interest '||l_interim_interest
448: ||' Interim Days = '||l_interim_days);
449:
450: END IF;
451: l_open_book := p_investment;
449:
450: END IF;
451: l_open_book := p_investment;
452: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
453: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' Investment ' || to_char(l_open_book));
454:
455: END IF;
456: FOR k IN 1..asset_rents.COUNT LOOP
457:
461: l_close_book := l_open_book - l_principal;
462: l_open_book := l_close_book;
463:
464: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
465: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||TO_CHAR(asset_rents(k).se_date, 'DD-MON-YYYY')||' DAYS '||asset_rents(k).se_DAYS
466: || ' LOAN PAYMENT '||l_payment|| ' INTEREST '||ROUND(l_interest, 3)
467: || ' PRINCIPAL '||ROUND(l_principal, 3)||' Next OB '||ROUND(l_open_book, 3));
468:
469: END IF;
498:
499: l_open_book := l_close_book;
500:
501: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
502: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || asset_rents(k).se_days || ':' || l_close_book || ':' || l_interest || ':' || l_principal || ':' || l_se_date );
503: END IF;
504: END LOOP;
505:
506: IF l_interim_interest > 0 THEN
572:
573: IF ABS(l_iir) > l_iir_limit THEN
574:
575: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
576: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' irr ' || ABS(l_iir) );
577: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' irr limit ' || l_iir_limit );
578:
579: END IF;
580: If k = 1 then
573: IF ABS(l_iir) > l_iir_limit THEN
574:
575: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
576: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' irr ' || ABS(l_iir) );
577: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' irr limit ' || l_iir_limit );
578:
579: END IF;
580: If k = 1 then
581:
598:
599: END LOOP;
600:
601: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
602: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' done with iir ' );
603:
604: END IF;
605: -------------------------------------------
606: -- PRE-TAX INCOME
628: --asset_rents(asset_rents.LAST).se_amount := asset_rents(asset_rents.LAST).se_amount + p_residual_value;
629: ---
630:
631: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
632: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' start with bkg yld ' );
633: END IF;
634: LOOP
635:
636: --DEBUG
638:
639: i := i + 1;
640:
641: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
642: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
643: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Booking Yield Iteration # '||i||' Guess Value '||l_bk_yield);
644:
645: END IF;
646: l_termination_val := p_investment;
639: i := i + 1;
640:
641: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
642: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
643: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Booking Yield Iteration # '||i||' Guess Value '||l_bk_yield);
644:
645: END IF;
646: l_termination_val := p_investment;
647: k := 1;
659:
660: l_se_date := asset_rents(k).se_date;
661:
662: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
663: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' l_se_date ' || LAST_DAY(l_se_date) || ' l_start_date ' || LAST_DAY(l_start_date) );
664:
665: END IF;
666: IF TRUNC(LAST_DAY(l_se_date)) <> TRUNC(LAST_DAY(l_start_date)) THEN -- NON payment month
667:
684: l_termination_val := l_termination_val*(1 + l_days*l_bk_yield/360);
685: termination_val(j).se_amount := l_termination_val;
686:
687: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
688: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Non Payment Month '||TO_CHAR(l_start_date, 'MON-YYYY')|| ' DAYS '||l_days|| ' Income '
689: ||ROUND(pre_tax_income(j).se_amount, 3)|| ' Month Ending TV '
690: ||ROUND(termination_val(j).se_amount, 3));
691:
692: END IF;
729:
730: pre_tax_income(j).se_amount := l_termination_val*l_days*l_bk_yield/360;
731:
732: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
733: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name ||
734: 'PAY MO. '||TO_CHAR(l_start_date, 'MON-YYYY')||
735: ' Days pre-RENT '||l_days||
736: ' TV for CALC '||ROUND(l_termination_val, 3)||
737: ' ACC INT '||ROUND(pre_tax_income(j).se_amount, 3)||
745:
746: IF k = asset_rents.LAST THEN -- check for last payment
747:
748: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
749: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
750: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Last RENT recieved '||TO_CHAR(asset_rents(k).se_date, 'DD-MON-YYYY'));
751: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
752:
753: END IF;
746: IF k = asset_rents.LAST THEN -- check for last payment
747:
748: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
749: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
750: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Last RENT recieved '||TO_CHAR(asset_rents(k).se_date, 'DD-MON-YYYY'));
751: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
752:
753: END IF;
754: l_start_date := l_se_date;
747:
748: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
749: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
750: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Last RENT recieved '||TO_CHAR(asset_rents(k).se_date, 'DD-MON-YYYY'));
751: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
752:
753: END IF;
754: l_start_date := l_se_date;
755:
805: termination_val(j).se_date := l_se_date;
806: pre_tax_income(j).se_date := l_se_date;
807:
808: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
809: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name ||
810: '('||TO_CHAR(l_start_date, 'DD-MON-YYYY')||
811: ' - '||TO_CHAR(l_end_date, 'DD-MON-YYYY')||
812: ') Days '||l_days||
813: ' Income '||ROUND(pre_tax_income(j).se_amount,3)||
857: END IF;
858:
859:
860: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
861: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name ||
862: 'PAY MO. '||TO_CHAR(l_start_date, 'MON-YYYY')||
863: ' Days stub '||l_days||
864: ' TV for CALC '||ROUND(l_termination_val, 3)||
865: ' INC (stub) '||ROUND(l_termination_val*l_days*l_bk_yield/360, 3)||
967:
968: END IF;
969:
970: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
971: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name ||
972: 'PAY MO. '||TO_CHAR(l_start_date, 'MON-YYYY')||
973: ' Days stub '||l_days||
974: ' TV for CALC '||ROUND(l_termination_val, 3)||
975: ' INC (stub) '||ROUND(l_termination_val*l_days*l_bk_yield/360, 3)||
1064: l_days := l_days + 1;
1065: END IF;
1066:
1067: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1068: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name ||
1069: 'PAY MO. '||TO_CHAR(l_start_date, 'MON-YYYY')||
1070: ' Days post-RENT '||l_days||
1071: ' TV for CALC '||ROUND(l_termination_val, 3)||
1072: ' INC (2nd half) '||ROUND(l_termination_val*l_days*l_bk_yield/360, 3)||
1101:
1102: --l_diff := l_termination_val - p_residual_value;
1103: l_diff := l_termination_val;
1104: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1105: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' L_DIFF ' || l_diff );
1106:
1107: END IF;
1108: IF ROUND(l_diff, 4) = 0 THEN
1109:
1124:
1125: x_termination_tbl(j).se_line_number := j;
1126: x_pre_tax_inc_tbl(j).se_line_number := j;
1127: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1128: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || x_pre_tax_inc_tbl(j).amount || ':' ||
1129: x_termination_tbl(j).amount || ':' || x_termination_tbl(j).stream_element_date );
1130:
1131: END IF;
1132: END LOOP;
1141: x_termination_tbl(x_termination_tbl.LAST).amount := p_residual_value;
1142:
1143: x_booking_yield := l_bk_yield;
1144: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1145: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' Booking yield ' || l_bk_yield );
1146:
1147: END IF;
1148: RETURN;
1149:
1190: END LOOP;
1191:
1192: x_return_status := lx_return_status;
1193: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1194: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'end' );
1195:
1196: END IF;
1197: EXCEPTION
1198:
1563: slope NUMBER := 1;
1564:
1565: BEGIN
1566: IF (G_DEBUG_ENABLED = 'Y') THEN
1567: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
1568: END IF;
1569:
1570: -- print( l_prog_name, 'begin' );
1571:
1597: x_days_in_month => l_day_convention_month,
1598: x_days_in_year => l_day_convention_year,
1599: x_return_status => lx_return_status);
1600: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
1601: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
1602: END IF;
1603: IF (lx_return_status = G_RET_STS_UNEXP_ERROR) THEN
1604: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1605: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN
2395:
2396:
2397: BEGIN
2398: IF (G_DEBUG_ENABLED = 'Y') THEN
2399: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2400: END IF;
2401: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2402: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' begin');
2403: END IF;
2398: IF (G_DEBUG_ENABLED = 'Y') THEN
2399: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
2400: END IF;
2401: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2402: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' begin');
2403: END IF;
2404: x_return_status := OKL_API.G_RET_STS_SUCCESS;
2405: -- Call start_activity to create savepoint, check compatibility
2406: -- and initialize message list
2440: x_days_in_month => l_day_convention_month,
2441: x_days_in_year => l_day_convention_year,
2442: x_return_status => x_return_status);
2443: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2444: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, 'comp_so_bk_yd Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
2445: END IF;
2446: IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
2447: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2448: ELSIF (x_return_status = G_RET_STS_ERROR) THEN
2529: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
2530: RAISE OKL_API.G_EXCEPTION_ERROR;
2531: END IF;
2532: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2533: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' cost ' || l_asset_cost || ' residual value ' || l_residual_value);
2534: END IF;
2535: l_k_end_date := (ADD_MONTHS(ld_asset_start_date, l_rent_sll.term_duration) - 1);
2536: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2537: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' # of payments '||TO_CHAR(asset_rents.COUNT));
2533: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' cost ' || l_asset_cost || ' residual value ' || l_residual_value);
2534: END IF;
2535: l_k_end_date := (ADD_MONTHS(ld_asset_start_date, l_rent_sll.term_duration) - 1);
2536: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2537: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' # of payments '||TO_CHAR(asset_rents.COUNT));
2538: END IF;
2539: LOOP
2540: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2541: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' interation # '||TO_CHAR(i));
2537: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' # of payments '||TO_CHAR(asset_rents.COUNT));
2538: END IF;
2539: LOOP
2540: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2541: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' interation # '||TO_CHAR(i));
2542: END IF;
2543: i := i + 1;
2544: k := 1;
2545: j := 0;
2550: LOOP
2551: j := j + 1;
2552: l_se_date := trunc(asset_rents(k).se_date);
2553: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2554: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_se_date '||TO_CHAR(l_se_date));
2555: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_start_date '||TO_CHAR(l_start_date));
2556: END IF;
2557: IF LAST_DAY(l_se_date) <> LAST_DAY(l_start_date) THEN
2558: l_end_date := LAST_DAY(l_start_date);
2551: j := j + 1;
2552: l_se_date := trunc(asset_rents(k).se_date);
2553: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2554: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_se_date '||TO_CHAR(l_se_date));
2555: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_start_date '||TO_CHAR(l_start_date));
2556: END IF;
2557: IF LAST_DAY(l_se_date) <> LAST_DAY(l_start_date) THEN
2558: l_end_date := LAST_DAY(l_start_date);
2559: l_days := OKL_PRICING_UTILS_PVT.get_day_count(
2563: p_end_date => l_end_date,
2564: p_arrears => 'Y',
2565: x_return_status => x_return_status);
2566: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2567: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' Status 5 '||x_return_status);
2568: END IF;
2569: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
2570: EXIT WHEN(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
2571: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
2577: l_se_date := l_se_date - 1;
2578: END IF;
2579: ELSE
2580: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2581: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' Status 6 '||x_return_status);
2582: END IF;
2583: l_end_date := l_se_date;
2584: l_days := OKL_PRICING_UTILS_PVT.get_day_count(
2585: p_start_date => l_start_date,
2593: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
2594: EXIT WHEN(x_return_status = OKL_API.G_RET_STS_ERROR);
2595: END IF;
2596: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2597: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' Status 7 '||x_return_status);
2598: END IF;
2599: --IF j = 1 THEN
2600: -- l_days := 0;
2601: --END IF;
2603: l_termination_val := l_termination_val - asset_rents(k).se_amount;
2604: IF k = asset_rents.LAST THEN
2605: l_start_date := l_se_date;
2606: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2607: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_start_date::l_k_end_date '||l_start_date||'::'||l_k_end_date);
2608: END IF;
2609: LOOP
2610: m := m + 1;
2611: IF trunc(LAST_DAY(l_start_date)) <> trunc(LAST_DAY(l_k_end_date)) THEN
2620: p_end_date => l_end_date,
2621: p_arrears => 'Y',
2622: x_return_status => x_return_status);
2623: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2624: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' # of days '||to_char(l_days));
2625: END IF;
2626: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
2627: EXIT WHEN(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
2628: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
2641: IF TO_CHAR(LAST_DAY(l_se_date), 'DD') = '31' THEN
2642: l_se_date := l_se_date - 1;
2643: END IF;
2644: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2645: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_end_date::l_k_end_date '||l_end_date||'::'||l_k_end_date);
2646: END IF;
2647: EXIT WHEN TRUNC(l_end_date) = TRUNC(l_k_end_date);
2648: l_start_date := LAST_DAY(l_start_date) + 1;
2649: j := j + 1;
2662: p_end_date => l_end_date,
2663: p_arrears => l_rent_sll.arrears_yn,
2664: x_return_status => x_return_status);
2665: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2666: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' Status 9 '||x_return_status);
2667: END IF;
2668: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
2669: EXIT WHEN(x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
2670: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
2688: IF TO_CHAR(LAST_DAY(l_se_date), 'DD') = '31' THEN
2689: l_se_date := l_se_date - 1;
2690: END IF;
2691: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2692: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' arrears/advanced '|| l_rent_sll.arrears_yn);
2693: END IF;
2694: k := k + 1;
2695: END IF;
2696: EXIT WHEN l_term_complete = 'Y';
2698: l_start_date := LAST_DAY(l_start_date) + 1;
2699: END LOOP;
2700: l_diff := l_termination_val;
2701: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
2702: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' changed precision ' || l_bk_yield || '::' || l_diff );
2703: END IF;
2704: IF ROUND(l_diff, 5) = 0 THEN
2705: x_booking_yield := l_bk_yield;
2706: EXIT;
3215: l_days_in_year NUMBER;
3216:
3217: BEGIN
3218: IF (G_DEBUG_ENABLED = 'Y') THEN
3219: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3220: END IF;
3221:
3222: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3223: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'begin' );
3219: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
3220: END IF;
3221:
3222: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3223: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'begin' );
3224:
3225: END IF;
3226: x_return_status := OKL_API.G_RET_STS_SUCCESS;
3227: -- Call start_activity to create savepoint, check compatibility
3238: RAISE OKL_API.G_EXCEPTION_ERROR;
3239: END IF;
3240: -- check if the target is correctly given
3241: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3242: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'check if the target is correctly given' || ' ' || p_target );
3243:
3244: END IF;
3245: IF p_target NOT IN ('RATE','PMNT') THEN
3246: OKL_API.set_message(p_app_name => G_APP_NAME,
3250: RAISE OKL_API.G_EXCEPTION_ERROR;
3251: END IF;
3252:
3253: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3254: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'check if the target is correctly given - done');
3255: END IF;
3256: -- Fetch the day convention ..
3257: OKL_PRICING_UTILS_PVT.get_day_convention(
3258: p_id => p_khr_id,
3260: x_days_in_month => l_day_convention_month,
3261: x_days_in_year => l_day_convention_year,
3262: x_return_status => x_return_status);
3263: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3264: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, 'comp_so_pre_tax_irr Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
3265: END IF;
3266: IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
3267: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3268: ELSIF (x_return_status = G_RET_STS_ERROR) THEN
3274: RAISE OKL_API.G_EXCEPTION_ERROR;
3275: END IF;
3276: CLOSE get_start_date;
3277: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3278: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'got start date');
3279:
3280: END IF;
3281: -- Summing up Asset cost
3282: -- And since the input is a so_payment line we sum up the asset's cost
3288: x_return_status => x_return_status,
3289: x_asset_oec => l_cost,
3290: x_start_date => ld_asset_start_date);
3291: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3292: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' get_so_asset_oec '|| x_return_status);
3293: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' get_so_asset_oec - again '|| x_return_status);
3294: END IF;
3295: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3296: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3289: x_asset_oec => l_cost,
3290: x_start_date => ld_asset_start_date);
3291: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3292: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' get_so_asset_oec '|| x_return_status);
3293: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' get_so_asset_oec - again '|| x_return_status);
3294: END IF;
3295: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3296: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3297: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3297: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3298: RAISE OKL_API.G_EXCEPTION_ERROR;
3299: END IF;
3300: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3301: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_time_zero '|| x_return_status);
3302: END IF;
3303: l_time_zero_cost := l_time_zero_cost + NVL(l_cost, 0);
3304: -- Summing up Fee cost
3305: -- Here the fee are attached to the contract header
3305: -- Here the fee are attached to the contract header
3306: -- We do not include, security deposit fee, capiatlized fees, Pass through fee
3307: -- and also expense fees.
3308: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3309: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'before fee cost '|| x_return_status);
3310: END IF;
3311: FOR l_fee_cost IN c_fee_cost(p_khr_id => p_khr_id) LOOP
3312: IF l_fee_cost.start_date IS NOT NULL OR
3313: l_fee_cost.start_date <> OKL_API.G_MISS_DATE THEN
3328: -- Collecting the inflow amounts
3329: -- from the strm elements table since where the payment associated to the
3330: -- So_payment lines are broken into stream elements data
3331: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3332: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'before inflows '|| x_return_status);
3333: END IF;
3334: FOR l_inflow IN c_inflows(p_khr_id => p_khr_id,
3335: p_kle_id => p_kle_id,
3336: p_line_type => l_line_type) LOOP
3342: inflow_tbl(n).cf_dpp := l_inflow.days_per_period;
3343: inflow_tbl(n).cf_ppy := l_inflow.periods_per_year;
3344: inflow_tbl(n).rate := l_inflow.rate;
3345: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3346: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' start date::end date ' || l_inflow.start_date || '::' || l_inflow.cf_date|| x_return_status);
3347: END IF;
3348: inflow_tbl(n).cf_days := OKL_PRICING_UTILS_PVT.get_day_count(
3349: p_start_date => l_inflow.start_date,
3350: p_days_in_month => l_day_convention_month,
3380: inflow_tbl(n).cf_dpp := l_inflow.days_per_period;
3381: inflow_tbl(n).cf_ppy := l_inflow.periods_per_year;
3382: inflow_tbl(n).rate := l_inflow.rate;
3383: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3384: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' start date::end date ' || l_inflow.start_date || '::' || l_inflow.cf_date|| x_return_status);
3385: END IF;
3386: inflow_tbl(n).cf_days := OKL_PRICING_UTILS_PVT.get_day_count(
3387: p_start_date => l_inflow.start_date,
3388: p_days_in_month => l_day_convention_month,
3409:
3410: END LOOP;
3411:
3412: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3413: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'after inflows # ' || n|| x_return_status);
3414: END IF;
3415: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3416: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3417: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3473: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3474: END IF;
3475: END LOOP;
3476: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3477: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'after residual values #' || p|| x_return_status);
3478: END IF;
3479: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3480: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3481: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3526: END IF;
3527: END IF;
3528: END LOOP;
3529: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3530: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'after outflows ' || q|| x_return_status);
3531: END IF;
3532: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3533: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3534: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3675: END IF;
3676: END LOOP;
3677: END LOOP;
3678: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3679: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'after expenses '|| x_return_status);
3680: END IF;
3681: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
3682: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3683: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
3720: CLOSE get_curr_code_pre;
3721: -- Setting the IRR limit
3722: l_irr_limit := ROUND(NVL(ABS(fnd_profile.value('OKL_PRE_TAX_IRR_LIMIT')), 1000), 0)/100;
3723: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3724: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_irr_limit ' ||l_irr_limit);
3725: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'b4 getting into the loop '|| x_return_status);
3726: END IF;
3727: LOOP
3728: i := i + 1;
3721: -- Setting the IRR limit
3722: l_irr_limit := ROUND(NVL(ABS(fnd_profile.value('OKL_PRE_TAX_IRR_LIMIT')), 1000), 0)/100;
3723: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3724: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_irr_limit ' ||l_irr_limit);
3725: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'b4 getting into the loop '|| x_return_status);
3726: END IF;
3727: LOOP
3728: i := i + 1;
3729: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3726: END IF;
3727: LOOP
3728: i := i + 1;
3729: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3730: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ### ITERATION ### | ### PVALUE ### | ### IRR ### ');
3731: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || i || ' | ' || l_npv_rate || ' | ' || l_irr);
3732: END IF;
3733: l_npv_rate := -(l_time_zero_cost);
3734: l_npv_pay := -(l_time_zero_cost);
3727: LOOP
3728: i := i + 1;
3729: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3730: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ### ITERATION ### | ### PVALUE ### | ### IRR ### ');
3731: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || i || ' | ' || l_npv_rate || ' | ' || l_irr);
3732: END IF;
3733: l_npv_rate := -(l_time_zero_cost);
3734: l_npv_pay := -(l_time_zero_cost);
3735:
3733: l_npv_rate := -(l_time_zero_cost);
3734: l_npv_pay := -(l_time_zero_cost);
3735:
3736: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3737: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' time zero : ' || l_npv_pay );
3738:
3739: END IF;
3740: -------------------------------------------
3741: -- FEE COST CASH OUTFLOWS
3752: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
3753: p_msg_name => 'OKL_IRR_ZERO_DIV');
3754: x_return_status := OKL_API.G_RET_STS_ERROR;
3755: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3756: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide outflows '|| x_return_status);
3757: END IF;
3758: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3759: END IF;
3760: IF p_target = 'RATE' THEN
3765: END LOOP;
3766: END IF;
3767:
3768: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3769: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' outflow : ' || l_npv_pay );
3770: END IF;
3771: -------------------------------------------
3772: -- PASSTHROUGH CASH INFLOWS
3773: -------------------------------------------
3784: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
3785: p_msg_name => 'OKL_IRR_ZERO_DIV');
3786: x_return_status := OKL_API.G_RET_STS_ERROR;
3787: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3788: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide passthru '|| x_return_status);
3789: END IF;
3790: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3791: END IF;
3792:
3798: END LOOP;
3799: END IF;
3800:
3801: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3802: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' pass thru : ' || l_npv_pay );
3803:
3804: END IF;
3805: -------------------------------------------
3806: -- FEE RECURRING EXPENSE CASH OUTFLOWS
3817: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
3818: p_msg_name => 'OKL_IRR_ZERO_DIV');
3819: x_return_status := OKL_API.G_RET_STS_ERROR;
3820: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3821: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide expenses '|| x_return_status);
3822: END IF;
3823: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3824: END IF;
3825: IF p_target = 'RATE' THEN
3829: END IF;
3830: END LOOP;
3831: END IF;
3832: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3833: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' exp : ' || l_npv_pay );
3834: END IF;
3835: -------------------------------------------
3836: -- RV CASH INFLOWS
3837: -------------------------------------------
3847: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
3848: p_msg_name => 'OKL_IRR_ZERO_DIV');
3849: x_return_status := OKL_API.G_RET_STS_ERROR;
3850: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3851: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide rvs '|| x_return_status);
3852: END IF;
3853: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3854: END IF;
3855: IF p_target = 'RATE' THEN
3859: END IF;
3860: END LOOP;
3861: END IF;
3862: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3863: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' rv : ' || l_npv_pay );
3864: END IF;
3865: ----------------------------------------------
3866: -- SECURITY DEPOSIT
3867: ----------------------------------------------
3916: END If;
3917: CLOSE c_security_deposit;
3918:
3919: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3920: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' sec dep : ' || l_npv_pay );
3921: END IF;
3922: -------------------------------------------
3923: -- LINE LEVEL CASH INFLOWS
3924: -------------------------------------------
3939: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
3940: p_msg_name => 'OKL_IRR_ZERO_DIV');
3941: x_return_status := OKL_API.G_RET_STS_ERROR;
3942: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3943: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide indlows '|| x_return_status);
3944: END IF;
3945: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3946: END IF;
3947: l_npv_pay := l_npv_pay + (l_cf_amount / POWER((1 + inflow_tbl(y).rate/(l_cf_ppy*100)), l_periods));
3948: END IF;
3949: END LOOP;
3950:
3951: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3952: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' inflo : ' || l_npv_pay );
3953: END IF;
3954: If (l_term <> 0 ) Then
3955: l_payment_inflow := (-1 * l_npv_pay ) / l_term;
3956: else
3957: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
3958: p_msg_name => 'OKL_IRR_ZERO_DIV');
3959: x_return_status := OKL_API.G_RET_STS_ERROR;
3960: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3961: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide indlows '|| x_return_status);
3962: END IF;
3963: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3964: end if;
3965:
3963: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3964: end if;
3965:
3966: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3967: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_npv_pay ' || l_npv_pay );
3968: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_term ' || l_term );
3969:
3970: END IF;
3971: l_npv_pay := 0;
3964: end if;
3965:
3966: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3967: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_npv_pay ' || l_npv_pay );
3968: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_term ' || l_term );
3969:
3970: END IF;
3971: l_npv_pay := 0;
3972:
3970: END IF;
3971: l_npv_pay := 0;
3972:
3973: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3974: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_payment_inflow ' || l_payment_inflow );
3975: END IF;
3976: Else
3977:
3978: IF n > 0 THEN
3991: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
3992: p_msg_name => 'OKL_IRR_ZERO_DIV');
3993: x_return_status := OKL_API.G_RET_STS_ERROR;
3994: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
3995: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide indlows '|| x_return_status);
3996: END IF;
3997: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
3998: END IF;
3999: IF p_target = 'RATE' THEN
4086: p_token1 => 'IRR_LIMIT',
4087: p_token1_value => l_irr_limit*100);
4088: x_return_status := OKL_API.G_RET_STS_ERROR;
4089: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4090: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' 100000% '|| x_return_status);
4091: END IF;
4092: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4093: END IF;
4094: l_prev_incr_sign_rate := SIGN(l_increment_rate);
4636: pass_thru_id NUMBER;
4637:
4638: BEGIN
4639: IF (G_DEBUG_ENABLED = 'Y') THEN
4640: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4641: END IF;
4642:
4643: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4644: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
4640: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
4641: END IF;
4642:
4643: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4644: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
4645: END IF;
4646: x_return_status := G_RET_STS_SUCCESS;
4647:
4648: lx_return_status := G_RET_STS_ERROR;
4653: x_days_in_month => l_day_convention_month,
4654: x_days_in_year => l_day_convention_year,
4655: x_return_status => lx_return_status);
4656: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4657: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
4658: END IF;
4659: IF (lx_return_status = G_RET_STS_UNEXP_ERROR) THEN
4660: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4661: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN
4854: --Modified IF clause by rgooty for bug 7577105
4855: IF NVL(l_outflow.date_funding_expected, l_outflow.start_date) > p_start_date
4856: THEN
4857: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4858: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '!!! Handling the Assets who are in effect later than the start date !!!');
4859: END IF;
4860: q := q + 1;
4861: outflow_tbl(q).cf_amount := nvl(l_outflow.capital_amount, 0);
4862: outflow_tbl(q).cf_amount := -(outflow_tbl(q).cf_amount);
4876: ELSIF lx_return_status = OKL_API.G_RET_STS_ERROR THEN
4877: RAISE OKL_API.G_EXCEPTION_ERROR;
4878: END IF;
4879: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4880: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || outflow_tbl(q).cf_date || '| ' || outflow_tbl(q).cf_days || ' | ' ||
4881: outflow_tbl(q).cf_amount ||' | ' || outflow_tbl(q).cf_dpp || ' | ' || outflow_tbl(q).cf_ppy );
4882: END IF;
4883: ELSIF l_outflow.date_funding_expected < p_start_date THEN
4884: --Removed = in the above if clause by RGOOTY for bug 7577105
4882: END IF;
4883: ELSIF l_outflow.date_funding_expected < p_start_date THEN
4884: --Removed = in the above if clause by RGOOTY for bug 7577105
4885: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4886: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '!!!!! Handling the Assets who are in effect earlier than the start date !!!!');
4887: END IF;
4888: q := q + 1;
4889: outflow_tbl(q).cf_amount := nvl(l_outflow.capital_amount, 0);
4890: outflow_tbl(q).cf_amount := -(outflow_tbl(q).cf_amount);
4905: RAISE OKL_API.G_EXCEPTION_ERROR;
4906: END IF;
4907: outflow_tbl(q).cf_days := -1 * outflow_tbl(q).cf_days;
4908: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4909: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || outflow_tbl(q).cf_date || '| ' || outflow_tbl(q).cf_days || ' | ' ||
4910: outflow_tbl(q).cf_amount ||' | ' || outflow_tbl(q).cf_dpp || ' | ' || outflow_tbl(q).cf_ppy );
4911: END IF;
4912: END IF;
4913:
4965: OPEN top_svc_csr( p_khr_id, l_pass_th.cleId );
4966: FETCH top_svc_csr INTO top_svc_rec;
4967: If ( top_svc_csr%FOUND ) Then
4968: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4969: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' found top svc line ' || to_char( l_pass_th.cleId ));
4970: END IF;
4971: pass_thru_id := top_svc_rec.top_svc_id;
4972: l_link_yn := 'Y';
4973: Else
4971: pass_thru_id := top_svc_rec.top_svc_id;
4972: l_link_yn := 'Y';
4973: Else
4974: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
4975: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' not found top svc line ' || to_char( l_pass_th.cleId ));
4976: END IF;
4977: l_link_yn := 'N';
4978: pass_thru_id := l_pass_th.cleId;
4979: End If;
5265: -------------------------------------------
5266:
5267: IF r > 0 THEN
5268: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5269: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'PASSTHROUGH CASH INFLOWS ...');
5270: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5271: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Cash Flow'||' Days in'||' Periods'||' Cash Flow'||' Discounted');
5272: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Date'||' Future'||' (n) '||' Amount'||' Value');
5273: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5266:
5267: IF r > 0 THEN
5268: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5269: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'PASSTHROUGH CASH INFLOWS ...');
5270: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5271: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Cash Flow'||' Days in'||' Periods'||' Cash Flow'||' Discounted');
5272: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Date'||' Future'||' (n) '||' Amount'||' Value');
5273: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5274: END IF;
5267: IF r > 0 THEN
5268: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5269: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'PASSTHROUGH CASH INFLOWS ...');
5270: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5271: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Cash Flow'||' Days in'||' Periods'||' Cash Flow'||' Discounted');
5272: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Date'||' Future'||' (n) '||' Amount'||' Value');
5273: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5274: END IF;
5275: --DEBUG
5268: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5269: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'PASSTHROUGH CASH INFLOWS ...');
5270: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5271: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Cash Flow'||' Days in'||' Periods'||' Cash Flow'||' Discounted');
5272: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Date'||' Future'||' (n) '||' Amount'||' Value');
5273: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5274: END IF;
5275: --DEBUG
5276: a :=0;
5269: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'PASSTHROUGH CASH INFLOWS ...');
5270: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5271: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Cash Flow'||' Days in'||' Periods'||' Cash Flow'||' Discounted');
5272: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||' Date'||' Future'||' (n) '||' Amount'||' Value');
5273: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '');
5274: END IF;
5275: --DEBUG
5276: a :=0;
5277: FOR v IN 1..pass_th_tbl.COUNT LOOP
5958:
5959:
5960: BEGIN
5961: IF (G_DEBUG_ENABLED = 'Y') THEN
5962: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5963: END IF;
5964:
5965: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5966: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
5962: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
5963: END IF;
5964:
5965: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5966: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
5967:
5968: END IF;
5969: -- Fetch the day convention ..
5970: OKL_PRICING_UTILS_PVT.get_day_convention(
5973: x_days_in_month => l_day_convention_month,
5974: x_days_in_year => l_day_convention_year,
5975: x_return_status => lx_return_status);
5976: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
5977: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
5978: END IF;
5979: IF (lx_return_status = G_RET_STS_UNEXP_ERROR) THEN
5980: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5981: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN
6056:
6057: l_additional_parameters.delete;
6058:
6059: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6060: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' cap amount ' || l_investment);
6061:
6062: END IF;
6063: IF lx_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
6064: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6074:
6075: l_interim_interest := l_investment * l_interim_days * p_iir/360;
6076:
6077: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6078: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || i||' Implicit Rate '||p_iir||' Interim Interest '||l_interim_interest
6079: ||' Interim Days = '||l_interim_days);
6080:
6081: END IF;
6082: l_open_book := l_investment;
6094: l_close_book := l_open_book - l_principal;
6095: l_open_book := l_close_book;
6096:
6097: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6098: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' '||TO_CHAR(asset_rents(k).se_date, 'DD-MON-YYYY')||' DAYS '||asset_rents(k).se_DAYS
6099: || ' LOAN PAYMENT '||l_payment|| ' INTEREST '||ROUND(l_interest, 3)
6100: || ' PRINCIPAL '||ROUND(l_principal, 3)||' Next OB '||ROUND(l_open_book, 3));
6101:
6102: END IF;
6213: x_return_status := lx_return_status;
6214: x_payment_amount := l_payment_amount;
6215:
6216: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6217: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'end' );
6218:
6219: END IF;
6220: EXCEPTION
6221:
6429: l_days_in_year NUMBER;
6430:
6431: BEGIN
6432: IF (G_DEBUG_ENABLED = 'Y') THEN
6433: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6434: END IF;
6435:
6436: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6437: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'begin' );
6433: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
6434: END IF;
6435:
6436: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6437: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'begin' );
6438:
6439: END IF;
6440: x_return_status := OKL_API.G_RET_STS_SUCCESS;
6441: -- Call start_activity to create savepoint, check compatibility
6452: RAISE OKL_API.G_EXCEPTION_ERROR;
6453: END IF;
6454: -- check if the target is correctly given
6455: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6456: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'check if the target is correctly given' || ' ' || p_target );
6457:
6458: END IF;
6459: -- Fetch the day convention ..
6460: OKL_PRICING_UTILS_PVT.get_day_convention(
6463: x_days_in_month => l_day_convention_month,
6464: x_days_in_year => l_day_convention_year,
6465: x_return_status => x_return_status);
6466: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6467: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, 'comp_so_iir Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
6468: END IF;
6469: IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
6470: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6471: ELSIF (x_return_status = G_RET_STS_ERROR) THEN
6480: RAISE OKL_API.G_EXCEPTION_ERROR;
6481: END IF;
6482:
6483: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6484: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'check if the target is correctly given - done');
6485:
6486: END IF;
6487: OPEN get_start_date(P_khr_id => p_khr_id);
6488: FETCH get_start_date INTO l_khr_start_date;
6490: RAISE OKL_API.G_EXCEPTION_ERROR;
6491: END IF;
6492: CLOSE get_start_date;
6493: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6494: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'got start date');
6495:
6496: END IF;
6497: -- Summing up Asset cost
6498: -- And since the input is a so_payment line we sum up the asset's cost
6504: x_return_status => x_return_status,
6505: x_asset_oec => l_cost,
6506: x_start_date => ld_asset_start_date);
6507: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6508: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' get_so_asset_oec ' || l_cost|| x_return_status);
6509: END IF;
6510: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
6511: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6512: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
6512: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
6513: RAISE OKL_API.G_EXCEPTION_ERROR;
6514: END IF;
6515: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6516: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_time_zero '|| x_return_status);
6517: END IF;
6518: l_time_zero_cost := l_time_zero_cost + NVL(l_cost, 0);
6519:
6520: OPEN khr_type_csr;
6530: -- Collecting the inflow amounts
6531: -- from the strm elements table since where the payment associated to the
6532: -- So_payment lines are broken into stream elements data
6533: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6534: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'before inflows '|| x_return_status);
6535: END IF;
6536: FOR l_inflow IN c_inflows(p_khr_id => p_khr_id,
6537: p_kle_id => p_kle_id,
6538: p_line_type => l_line_type) LOOP
6625: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6626: END IF;
6627: END LOOP;
6628: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6629: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'after residual values #' || p|| x_return_status);
6630: END IF;
6631: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
6632: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6633: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
6726:
6727: -- Setting the IRR limit
6728: l_irr_limit := ROUND(NVL(ABS(fnd_profile.value('OKL_PRE_TAX_IRR_LIMIT')), 1000), 0)/100;
6729: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6730: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_irr_limit ' || l_irr_limit);
6731: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'b4 getting into the loop '|| x_return_status);
6732: END IF;
6733: LOOP
6734: i := i + 1;
6727: -- Setting the IRR limit
6728: l_irr_limit := ROUND(NVL(ABS(fnd_profile.value('OKL_PRE_TAX_IRR_LIMIT')), 1000), 0)/100;
6729: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6730: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'l_irr_limit ' || l_irr_limit);
6731: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || 'b4 getting into the loop '|| x_return_status);
6732: END IF;
6733: LOOP
6734: i := i + 1;
6735: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6732: END IF;
6733: LOOP
6734: i := i + 1;
6735: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6736: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ### ITERATION ### | ### PVALUE ### | ### IRR ### ');
6737: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || i || ' | ' || l_npv_rate || ' | ' || l_irr);
6738: END IF;
6739: l_npv_rate := -(l_time_zero_cost);
6740: l_npv_pay := -(l_time_zero_cost);
6733: LOOP
6734: i := i + 1;
6735: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6736: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ### ITERATION ### | ### PVALUE ### | ### IRR ### ');
6737: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || i || ' | ' || l_npv_rate || ' | ' || l_irr);
6738: END IF;
6739: l_npv_rate := -(l_time_zero_cost);
6740: l_npv_pay := -(l_time_zero_cost);
6741:
6754: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
6755: p_msg_name => 'OKL_IRR_ZERO_DIV');
6756: x_return_status := OKL_API.G_RET_STS_ERROR;
6757: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6758: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide rvs '|| x_return_status);
6759: END IF;
6760: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6761: END IF;
6762: IF p_target = 'RATE' THEN
6787: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
6788: p_msg_name => 'OKL_IRR_ZERO_DIV');
6789: x_return_status := OKL_API.G_RET_STS_ERROR;
6790: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6791: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide indlows '|| x_return_status);
6792: END IF;
6793: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6794: END IF;
6795: l_npv_pay := l_npv_pay + (l_cf_amount / POWER((1 + inflow_tbl(y).rate/(l_cf_ppy*100)), l_periods));
6802: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
6803: p_msg_name => 'OKL_IRR_ZERO_DIV');
6804: x_return_status := OKL_API.G_RET_STS_ERROR;
6805: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6806: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide indlows '|| x_return_status);
6807: END IF;
6808: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6809: end if;
6810:
6808: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6809: end if;
6810:
6811: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6812: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_npv_pay ' || l_npv_pay );
6813: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_term ' || l_term );
6814:
6815: END IF;
6816: l_npv_pay := 0;
6809: end if;
6810:
6811: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6812: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_npv_pay ' || l_npv_pay );
6813: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' l_term ' || l_term );
6814:
6815: END IF;
6816: l_npv_pay := 0;
6817: Else
6832: OKL_API.SET_MESSAGE (p_app_name => G_APP_NAME,
6833: p_msg_name => 'OKL_IRR_ZERO_DIV');
6834: x_return_status := OKL_API.G_RET_STS_ERROR;
6835: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6836: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' ZERO divide indlows '|| x_return_status);
6837: END IF;
6838: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6839: END IF;
6840: IF p_target = 'RATE' THEN
6927: p_token1 => 'IRR_LIMIT',
6928: p_token1_value => l_irr_limit*100);
6929: x_return_status := OKL_API.G_RET_STS_ERROR;
6930: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
6931: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_api_name || ' 100000% '|| x_return_status);
6932: END IF;
6933: EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6934: END IF;
6935: l_prev_incr_sign_rate := SIGN(l_increment_rate);
7201: -- Bug 4626837 : End
7202:
7203: Begin
7204: IF (G_DEBUG_ENABLED = 'Y') THEN
7205: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
7206: END IF;
7207:
7208: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7209: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
7205: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
7206: END IF;
7207:
7208: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7209: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
7210:
7211: END IF;
7212: x_return_status := G_RET_STS_SUCCESS;
7213:
7219: LOOP
7220: l_pay_tbl(i) := p_pay_tbl(i);
7221: --l_pay_tbl(i).rate := l_pay_tbl(i).rate / 100.0;
7222: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7223: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' date ' || l_pay_tbl(i).start_date || ' amout ' || l_pay_tbl(i).amount );
7224: END IF;
7225: If ( l_pay_tbl(i).periods IS NOT NULL) AND ( l_pay_tbl(i).amount IS NULL ) Then
7226: l_pay_tbl(i).amount := -9999999;
7227: ElsIf ( l_pay_tbl(i).periods IS NULL) AND ( l_pay_tbl(i).stub_amount IS NULL ) Then
7239: x_msg_count => x_msg_count,
7240: x_msg_data => x_msg_data);
7241:
7242: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7243: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'validate payments ' || x_return_status );
7244: END IF;
7245: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7246: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7247: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
7274: x_msg_count => x_msg_count,
7275: x_msg_data => x_msg_data);
7276:
7277: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7278: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'generate_cash_flows ' || x_return_status );
7279:
7280: END IF;
7281: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7282: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7290: CLOSE c_subs;
7291: l_subsidies_yn := nvl( l_subsidies_yn, 'N' );
7292:
7293: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7294: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' subsidy ' || l_subsidies_yn );
7295:
7296: END IF;
7297: okl_la_stream_pvt.get_so_asset_oec(p_khr_id,
7298: p_kle_id,
7301: l_capital_cost,
7302: l_start_date);
7303:
7304: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7305: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' get_asset_oec ' || to_char( l_capital_cost)|| x_return_status);
7306: END IF;
7307: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7308: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7309: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
7317: l_residual_value,
7318: l_start_date);
7319:
7320: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7321: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' get_residual_value ' || to_char( l_residual_value )|| x_return_status);
7322: END IF;
7323: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7324: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7325: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
7473: x_payment => l_payment,
7474: x_rate => l_rate);
7475:
7476: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7477: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_pre_tax_irr ' || x_return_status );
7478: END IF;
7479: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7480: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7481: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
7502: x_payment => l_payment,
7503: x_rate => l_rate);
7504:
7505: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7506: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_iir ' || x_return_status );
7507: END IF;
7508: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7509: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7510: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
7532: x_payment => l_payment,
7533: x_rate => l_rate);
7534:
7535: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7536: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_iir ' || x_return_status );
7537: END IF;
7538: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
7539: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7540: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
7592:
7593: END LOOP;
7594:
7595: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7596: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' #of streams to delete - ' || i );
7597: END IF;
7598: If ( i > 0 ) Then
7599:
7600: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7597: END IF;
7598: If ( i > 0 ) Then
7599:
7600: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7601: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || i || '# of streams are getting deleted ' );
7602: END IF;
7603: Okl_Streams_pub.delete_streams(
7604: p_api_version => p_api_version,
7605: p_init_msg_list => p_init_msg_list,
7614: RAISE OKL_API.G_EXCEPTION_ERROR;
7615: END IF;
7616:
7617: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7618: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' DONE '|| x_return_status);
7619:
7620: END IF;
7621: End If;
7622:
7620: END IF;
7621: End If;
7622:
7623: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7624: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'end' );
7625:
7626: END IF;
7627: EXCEPTION
7628:
7933: l_days_in_year NUMBER;
7934:
7935: BEGIN
7936: IF (G_DEBUG_ENABLED = 'Y') THEN
7937: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
7938: END IF;
7939:
7940: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7941: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
7937: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
7938: END IF;
7939:
7940: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7941: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
7942: END IF;
7943: x_return_status := G_RET_STS_SUCCESS;
7944:
7945: -- Fetch the day convention ..
7949: x_days_in_month => l_day_convention_month,
7950: x_days_in_year => l_day_convention_year,
7951: x_return_status => lx_return_status);
7952: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7953: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
7954: END IF;
7955: IF (lx_return_status = G_RET_STS_UNEXP_ERROR) THEN
7956: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7957: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN
7989: l_advance_arrears := 'ADVANCE';
7990: END if;
7991:
7992: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
7993: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' getting asset cost ' );
7994: END IF;
7995: FOR l_asset_cost IN c_asset_cost LOOP
7996:
7997: l_number_of_assets := l_number_of_assets + 1;
8008: x_msg_count => x_msg_count,
8009: x_msg_data => x_msg_data);
8010:
8011: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8012: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' l_principal_balance ' || l_principal_balance
8013: || ' l_accumulated_int '||l_accumulated_int|| x_return_status);
8014: END IF;
8015: IF lx_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
8016: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8065: -- end djanaswa
8066:
8067:
8068: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8069: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' stream elements ' || lx_selv_tbl.COUNT );
8070:
8071: END IF;
8072: FOR i in lx_selv_tbl.FIRST..lx_selv_tbl.LAST
8073: LOOP
8101:
8102: x_pay_amount := l_pay_amount * l_number_of_assets;
8103:
8104: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8105: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'end' );
8106:
8107: END IF;
8108: EXCEPTION
8109:
8538: l_days_in_year NUMBER;
8539:
8540: BEGIN
8541: IF (G_DEBUG_ENABLED = 'Y') THEN
8542: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
8543: END IF;
8544:
8545: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8546: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
8542: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
8543: END IF;
8544:
8545: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8546: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
8547: END IF;
8548: x_return_status := G_RET_STS_SUCCESS;
8549:
8550: -- Fetch the day convention ..
8554: x_days_in_month => l_day_convention_month,
8555: x_days_in_year => l_day_convention_year,
8556: x_return_status => lx_return_status);
8557: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8558: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
8559: END IF;
8560: IF (lx_return_status = G_RET_STS_UNEXP_ERROR) THEN
8561: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8562: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN
8562: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN
8563: RAISE OKL_API.G_EXCEPTION_ERROR;
8564: END IF;
8565: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8566: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' Computing IIR on the date ' || p_start_Date );
8567: END IF;
8568: FOR l_asset_cost IN c_asset_cost LOOP
8569: --Modified IF clause by RGOOTY for bug 7577105
8570: IF(NVL(l_asset_cost.date_funding_expected, l_asset_cost.start_date) = p_start_date)
8595: END LOOP;
8596:
8597:
8598: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8599: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '1/ TIME ZERO COST = ' || round(nvl(l_time_zero_cost, 0), 2) );
8600: END IF;
8601: FOR l_hdr_inflow IN c_hdr_inflows LOOP
8602: m := m + 1;
8603: hdr_inflow_tbl(m).cf_amount := l_hdr_inflow.cf_amount;
8620: END IF;
8621: END LOOP;
8622: -- Third
8623: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8624: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '2/ Handling the Asset level inflows ' );
8625: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Date | Days | Amount | Purpose | DPP | PPY ' );
8626: END IF;
8627: FOR l_inflow IN c_inflows LOOP
8628: n := n + 1;
8621: END LOOP;
8622: -- Third
8623: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8624: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '2/ Handling the Asset level inflows ' );
8625: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Date | Days | Amount | Purpose | DPP | PPY ' );
8626: END IF;
8627: FOR l_inflow IN c_inflows LOOP
8628: n := n + 1;
8629: inflow_tbl(n).cf_amount := l_inflow.cf_amount;
8643: ELSIF lx_return_status = OKL_API.G_RET_STS_ERROR THEN
8644: RAISE OKL_API.G_EXCEPTION_ERROR;
8645: END IF;
8646: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8647: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || inflow_tbl(n).cf_date || '| ' || inflow_tbl(n).cf_days || ' | ' || inflow_tbl(n).cf_amount ||' | ' ||
8648: inflow_tbl(n).cf_dpp || ' | ' || inflow_tbl(n).cf_ppy );
8649: END IF;
8650: END LOOP;
8651:
8688:
8689:
8690:
8691: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8692: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '2/ Handling the Residual Values ' );
8693: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Date | Days | Amount | Purpose | DPP | PPY ' );
8694: END IF;
8695: FOR l_asset_rv IN c_asset_rvs LOOP
8696: p := p + 1;
8689:
8690:
8691: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8692: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '2/ Handling the Residual Values ' );
8693: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Date | Days | Amount | Purpose | DPP | PPY ' );
8694: END IF;
8695: FOR l_asset_rv IN c_asset_rvs LOOP
8696: p := p + 1;
8697: If l_asset_rv.sts_code = 'TERMINATED' Then
8729: END IF;
8730: rv_tbl(p).cf_dpp := l_asset_rv.days_per_period;
8731: rv_tbl(p).cf_ppy := l_asset_rv.periods_per_year;
8732: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8733: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || rv_tbl(p).cf_date || '| ' || rv_tbl(p).cf_days || ' | ' || rv_tbl(p).cf_amount ||' | ' ||
8734: rv_tbl(p).cf_dpp || ' | ' || rv_tbl(p).cf_ppy );
8735: END IF;
8736: END LOOP;
8737:
8783: --Modified IF clause by bkatraga for bug 7577105
8784: IF NVL(l_outflow.date_funding_expected, l_outflow.start_date) > p_start_date
8785: THEN
8786: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8787: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '!!! Handling the Assets who are in effect later than the start date !!!');
8788: END IF;
8789: q := q + 1;
8790: outflow_tbl(q).cf_amount := nvl(l_outflow.capital_amount, 0);
8791: outflow_tbl(q).cf_amount := -(outflow_tbl(q).cf_amount);
8805: ELSIF lx_return_status = OKL_API.G_RET_STS_ERROR THEN
8806: RAISE OKL_API.G_EXCEPTION_ERROR;
8807: END IF;
8808: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8809: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || outflow_tbl(q).cf_date || '| ' || outflow_tbl(q).cf_days || ' | ' ||
8810: outflow_tbl(q).cf_amount ||' | ' || outflow_tbl(q).cf_dpp || ' | ' || outflow_tbl(q).cf_ppy );
8811: END IF;
8812: ELSIF l_outflow.date_funding_expected < p_start_date THEN
8813: --Removed = in the above if clause by RGOOTY for bug 7577105
8811: END IF;
8812: ELSIF l_outflow.date_funding_expected < p_start_date THEN
8813: --Removed = in the above if clause by RGOOTY for bug 7577105
8814: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8815: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '!!!!! Handling the Assets who are in effect earlier than the start date !!!!');
8816: END IF;
8817: q := q + 1;
8818: outflow_tbl(q).cf_amount := nvl(l_outflow.capital_amount, 0);
8819: outflow_tbl(q).cf_amount := -(outflow_tbl(q).cf_amount);
8834: RAISE OKL_API.G_EXCEPTION_ERROR;
8835: END IF;
8836: outflow_tbl(q).cf_days := -1 * outflow_tbl(q).cf_days;
8837: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
8838: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || outflow_tbl(q).cf_date || '| ' || outflow_tbl(q).cf_days || ' | ' ||
8839: outflow_tbl(q).cf_amount ||' | ' || outflow_tbl(q).cf_dpp || ' | ' || outflow_tbl(q).cf_ppy );
8840: END IF;
8841: END IF;
8842:
9286: -- SUBSIDIES
9287:
9288: -- Handle the outflow_tbl
9289: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9290: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || '!!!!!!!! HANDLING THE OUT FLOWS !!!!!!!! ' );
9291: END IF;
9292: IF outflow_tbl IS NOT NULL AND outflow_tbl.COUNT > 0
9293: THEN
9294: FOR q IN outflow_tbl.FIRST .. outflow_tbl.LAST
9307: RAISE OKL_API.G_EXCEPTION_ERROR;
9308: END IF;
9309: l_npv := l_npv + (l_cf_amount / POWER((1 + l_iir/l_cf_ppy), l_periods));
9310: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9311: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || TO_CHAR(a, '99')||' '|| TO_CHAR(l_cf_date, 'DD-MON-YYYY')||' '||
9312: TO_CHAR(l_days_in_future, '9999')||' '|| TO_CHAR(l_periods, '99.999')||' '||TO_CHAR(l_cf_amount, '9999999.999')||
9313: ' '||TO_CHAR((l_cf_amount / POWER((1 + l_iir/l_cf_ppy), l_periods)), '99999999.999990'));
9314: END IF;
9315: END LOOP; -- FOR q ..
9466: l_iir_decided := 'F';
9467: END IF;
9468:
9469: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9470: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop l_npv ' || l_npv );
9471: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop l_increment ' || l_increment );
9472: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop iir ' || l_iir );
9473:
9474:
9467: END IF;
9468:
9469: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9470: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop l_npv ' || l_npv );
9471: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop l_increment ' || l_increment );
9472: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop iir ' || l_iir );
9473:
9474:
9475: END IF;
9468:
9469: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9470: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop l_npv ' || l_npv );
9471: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop l_increment ' || l_increment );
9472: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE,l_prog_name || i || '-Loop iir ' || l_iir );
9473:
9474:
9475: END IF;
9476: IF ABS(l_iir) > l_iir_limit THEN
9489: l_prev_npv := l_npv;
9490:
9491: END LOOP;
9492: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9493: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'end' );
9494:
9495: END IF;
9496: EXCEPTION
9497:
9748: l_rent_strm_id NUMBER;
9749: -- Bug 4626837 : End
9750: BEGIN
9751: IF (G_DEBUG_ENABLED = 'Y') THEN
9752: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
9753: END IF;
9754: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9755: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
9756:
9751: IF (G_DEBUG_ENABLED = 'Y') THEN
9752: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
9753: END IF;
9754: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9755: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'begin' );
9756:
9757:
9758: END IF;
9759: For i in p_pay_tbl.FIRST..p_pay_tbl.LAST
9769: LOOP
9770: l_pay_tbl(i) := p_pay_tbl(i);
9771: l_pay_tbl(i).rate := l_pay_tbl(i).rate / 100.0;
9772: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9773: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' date ' || l_pay_tbl(i).start_date || ' amout ' || l_pay_tbl(i).amount );
9774: END IF;
9775: IF ( l_pay_tbl(i).periods IS NOT NULL) AND ( l_pay_tbl(i).amount IS NULL ) Then
9776: l_pay_tbl(i).amount := -9999999;
9777: ELSIF ( l_pay_tbl(i).periods IS NULL) AND ( l_pay_tbl(i).stub_amount IS NULL ) Then
9809: x_msg_count => x_msg_count,
9810: x_msg_data => x_msg_data);
9811:
9812: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9813: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'generate_cash_flows ' || x_return_status );
9814:
9815: END IF;
9816: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
9817: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9832: l_capital_cost,
9833: l_start_date);
9834:
9835: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9836: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' get_asset_oec ' || to_char( l_capital_cost)|| x_return_status);
9837: END IF;
9838: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
9839: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9840: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
9848: l_residual_value,
9849: l_start_date);
9850:
9851: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9852: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' get_residual_value ' || to_char( l_residual_value )|| x_return_status);
9853: END IF;
9854: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
9855: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9856: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
9989: x_payment => l_payment,
9990: x_rate => l_rate);
9991:
9992: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
9993: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_pre_tax_irr ' || to_char( l_rate)|| x_return_status);
9994: END IF;
9995: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
9996: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9997: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
10016: x_payment => l_payment,
10017: x_rate => l_rate);
10018:
10019: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10020: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_pre_tax_irr ' || x_return_status );
10021: END IF;
10022: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
10023: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10024: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
10051: x_payment => l_payment,
10052: x_rate => l_rate);
10053:
10054: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10055: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_iir ' || x_return_status );
10056: END IF;
10057: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
10058: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10059: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
10082: x_payment => l_payment,
10083: x_rate => l_rate);
10084:
10085: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10086: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_iir ' || x_return_status );
10087: END IF;
10088: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
10089: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10090: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
10096:
10097: --ElsIf ( p_rate_type = 'PRE_TAX_YIELD' ) Then BKG YLD
10098:
10099: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10100: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' no subsidies comp_so_pre ' || x_return_status );
10101:
10102: END IF;
10103: l_interim_tbl(1).cf_days := l_interim_days;
10104: l_interim_tbl(1).cf_amount := l_interim_interest;
10118: x_payment => l_payment,
10119: x_rate => l_rate);
10120:
10121: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10122: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_iir ' || x_return_status );
10123: END IF;
10124: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
10125: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10126: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
10131:
10132: If ( l_subsidies_yn = 'Y' ) Then
10133:
10134: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10135: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' yes subsidies comp_so_pre '|| x_return_status);
10136: END IF;
10137: l_interim_tbl(1).cf_days := l_interim_days;
10138: l_interim_tbl(1).cf_amount := l_interim_interest;
10139: l_interim_tbl(1).cf_dpp := l_interim_dpp;
10152: x_payment => l_payment,
10153: x_rate => l_rate);
10154:
10155: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10156: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'comp_so_iir ' || x_return_status );
10157: END IF;
10158: IF x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR THEN
10159: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10160: ELSIF x_return_status = OKL_API.G_RET_STS_ERROR THEN
10176:
10177: END LOOP;
10178:
10179: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10180: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' #of streams to delete - ' || i );
10181: END IF;
10182: If ( i > 0 ) Then
10183:
10184: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10181: END IF;
10182: If ( i > 0 ) Then
10183:
10184: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10185: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || i || '# of streams are getting deleted ' );
10186: END IF;
10187: Okl_Streams_pub.delete_streams(
10188: p_api_version => p_api_version,
10189: p_init_msg_list => p_init_msg_list,
10198: RAISE OKL_API.G_EXCEPTION_ERROR;
10199: END IF;
10200:
10201: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10202: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || ' DONE '|| x_return_status);
10203:
10204: END IF;
10205: End If;
10206:
10245: END LOOP;
10246:
10247:
10248: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10249: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'end' );
10250:
10251: END IF;
10252: EXCEPTION
10253:
10438: l_days_in_year NUMBER;
10439:
10440: BEGIN
10441: IF (G_DEBUG_ENABLED = 'Y') THEN
10442: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
10443: END IF;
10444:
10445: x_return_status := OKL_API.G_RET_STS_SUCCESS;
10446: -- Call start_activity to create savepoint, check compatibility
10463: x_days_in_month => l_day_convention_month,
10464: x_days_in_year => l_day_convention_year,
10465: x_return_status => x_return_status);
10466: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10467: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, 'get_payment_after_ppd Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
10468: END IF;
10469: IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
10470: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10471: ELSIF (x_return_status = G_RET_STS_ERROR) THEN
10867: x_msg_data varchar2(256);
10868:
10869: BEGIN
10870: IF (G_DEBUG_ENABLED = 'Y') THEN
10871: G_IS_DEBUG_STATEMENT_ON := OKL_DEBUG_PUB.CHECK_LOG_ON(G_MODULE, FND_LOG.LEVEL_STATEMENT);
10872: END IF;
10873:
10874: -- Get the interest rate for the start date
10875:
10924: x_days_in_year => l_day_convention_year,
10925: x_return_status => lx_return_status);
10926:
10927: IF (G_IS_DEBUG_STATEMENT_ON = true) THEN
10928: OKL_DEBUG_PUB.LOG_DEBUG(FND_LOG.LEVEL_STATEMENT, G_MODULE, l_prog_name || 'Month / Year = ' || l_day_convention_month || '/' || l_day_convention_year );
10929: END IF;
10930: IF (lx_return_status = G_RET_STS_UNEXP_ERROR) THEN
10931: RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10932: ELSIF (lx_return_status = G_RET_STS_ERROR) THEN