223: -- Standard Start of API savepoint
224: SAVEPOINT floatingPostProcessor;
225:
226: -- Initialize message list IF p_init_msg_list is set to TRUE.
227: IF FND_API.to_Boolean(p_init_msg_list) THEN
228: FND_MSG_PUB.initialize;
229: END IF;
230:
231: -- Initialize API return status to SUCCESS
228: FND_MSG_PUB.initialize;
229: END IF;
230:
231: -- Initialize API return status to SUCCESS
232: x_return_status := FND_API.G_RET_STS_SUCCESS;
233:
234: --
235: -- Api body
236: -- ----------------------------------------------------------------
352: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
353: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
354:
355: EXCEPTION
356: WHEN FND_API.G_EXC_ERROR THEN
357: ROLLBACK TO floatingPostProcessor;
358: x_return_status := FND_API.G_RET_STS_ERROR;
359: x_msg_count := l_msg_count;
360: x_msg_data := l_msg_data;
354:
355: EXCEPTION
356: WHEN FND_API.G_EXC_ERROR THEN
357: ROLLBACK TO floatingPostProcessor;
358: x_return_status := FND_API.G_RET_STS_ERROR;
359: x_msg_count := l_msg_count;
360: x_msg_data := l_msg_data;
361: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
362: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
360: x_msg_data := l_msg_data;
361: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
362: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
363:
364: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
365: ROLLBACK TO floatingPostProcessor;
366: x_return_status := FND_API.G_RET_STS_ERROR;
367: x_msg_count := l_msg_count;
368: x_msg_data := l_msg_data;
362: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
363:
364: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
365: ROLLBACK TO floatingPostProcessor;
366: x_return_status := FND_API.G_RET_STS_ERROR;
367: x_msg_count := l_msg_count;
368: x_msg_data := l_msg_data;
369: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
370: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
370: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
371:
372: WHEN OTHERS THEN
373: ROLLBACK TO floatingPostProcessor;
374: x_return_status := FND_API.G_RET_STS_ERROR;
375: x_msg_count := l_msg_count;
376: x_msg_data := l_msg_data;
377: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
378: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
438: -- Standard Start of API savepoint
439: SAVEPOINT validateLoan;
440:
441: -- Standard call to check for call compatibility.
442: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
443: l_api_name, G_PKG_NAME)
444: THEN
445: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
446: END IF;
441: -- Standard call to check for call compatibility.
442: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
443: l_api_name, G_PKG_NAME)
444: THEN
445: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
446: END IF;
447:
448: -- Initialize message list IF p_init_msg_list is set to TRUE.
449: IF FND_API.to_Boolean(p_init_msg_list) THEN
445: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
446: END IF;
447:
448: -- Initialize message list IF p_init_msg_list is set to TRUE.
449: IF FND_API.to_Boolean(p_init_msg_list) THEN
450: FND_MSG_PUB.initialize;
451: END IF;
452:
453: -- Initialize API return status to SUCCESS
450: FND_MSG_PUB.initialize;
451: END IF;
452:
453: -- Initialize API return status to SUCCESS
454: x_return_status := FND_API.G_RET_STS_SUCCESS;
455:
456: --
457: -- Api body
458: -- ----------------------------------------------------------------
466: When No_Data_Found then
467: CLOSE c_terms;
468: FND_MESSAGE.Set_Name('LNS', 'LNS_NO_TERMS');
469: FND_MSG_PUB.Add;
470: RAISE FND_API.G_EXC_ERROR;
471: end;
472:
473: -- rate schedules should have one row
474: l_rate_tbl := lns_financials.getRateSchedule(p_loan_id, 'TERM');
475:
476: if l_rate_tbl.count = 0 then
477: FND_MESSAGE.Set_Name('LNS', 'LNS_NO_RATE_SCHEDULE');
478: FND_MSG_PUB.Add;
479: RAISE FND_API.G_EXC_ERROR;
480: end if;
481:
482: Begin
483: l_amount := lns_financials.getRemainingBalance(p_loan_id);
483: l_amount := lns_financials.getRemainingBalance(p_loan_id);
484: if l_amount <= 0 then
485: FND_MESSAGE.Set_Name('LNS', 'LNS_NO_AMOUNT');
486: FND_MSG_PUB.Add;
487: RAISE FND_API.G_EXC_ERROR;
488: end if;
489:
490: end;
491:
497:
498: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
499:
500: EXCEPTION
501: WHEN FND_API.G_EXC_ERROR THEN
502: x_return_status := FND_API.G_RET_STS_ERROR;
503: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
504:
505: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
498: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
499:
500: EXCEPTION
501: WHEN FND_API.G_EXC_ERROR THEN
502: x_return_status := FND_API.G_RET_STS_ERROR;
503: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
504:
505: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
506: x_return_status := FND_API.G_RET_STS_ERROR;
501: WHEN FND_API.G_EXC_ERROR THEN
502: x_return_status := FND_API.G_RET_STS_ERROR;
503: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
504:
505: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
506: x_return_status := FND_API.G_RET_STS_ERROR;
507: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
508:
509: WHEN OTHERS THEN
502: x_return_status := FND_API.G_RET_STS_ERROR;
503: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
504:
505: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
506: x_return_status := FND_API.G_RET_STS_ERROR;
507: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
508:
509: WHEN OTHERS THEN
510: x_return_status := FND_API.G_RET_STS_ERROR;
506: x_return_status := FND_API.G_RET_STS_ERROR;
507: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
508:
509: WHEN OTHERS THEN
510: x_return_status := FND_API.G_RET_STS_ERROR;
511: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
512:
513: END validateLoan;
514:
620: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_loan_ID ' || p_loan_ID);
621: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_based_on_terms ' || p_based_on_terms);
622:
623: -- Standard call to check for call compatibility.
624: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
625: l_api_name, G_PKG_NAME)
626: THEN
627: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
628: END IF;
623: -- Standard call to check for call compatibility.
624: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
625: l_api_name, G_PKG_NAME)
626: THEN
627: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
628: END IF;
629:
630: -- Initialize message list IF p_init_msg_list is set to TRUE.
631: IF FND_API.to_Boolean( p_init_msg_list ) THEN
627: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
628: END IF;
629:
630: -- Initialize message list IF p_init_msg_list is set to TRUE.
631: IF FND_API.to_Boolean( p_init_msg_list ) THEN
632: FND_MSG_PUB.initialize;
633: END IF;
634:
635: -- Initialize API return status to SUCCESS
632: FND_MSG_PUB.initialize;
633: END IF;
634:
635: -- Initialize API return status to SUCCESS
636: x_return_status := FND_API.G_RET_STS_SUCCESS;
637:
638: --
639: -- Api body
640: -- ----------------------------------------------------------------
647: ,p_col_id => p_loan_id
648: ,p_col_name => 'LOAN_ID'
649: ,p_table_name => 'LNS_LOAN_HEADERS_ALL');
650:
651: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
652: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_VALUE');
653: FND_MESSAGE.SET_TOKEN('PARAMETER', 'LOAN_ID');
654: FND_MESSAGE.SET_TOKEN('VALUE', p_loan_ID);
655: FND_MSG_PUB.ADD;
652: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_VALUE');
653: FND_MESSAGE.SET_TOKEN('PARAMETER', 'LOAN_ID');
654: FND_MESSAGE.SET_TOKEN('VALUE', p_loan_ID);
655: FND_MSG_PUB.ADD;
656: RAISE FND_API.G_EXC_ERROR;
657: end if;
658:
659: l_loan_details := lns_financials.getLoanDetails(p_loan_Id => p_loan_id
660: ,p_based_on_terms => p_based_on_terms
691: -- call preProcessInstallment only for current amortization
692: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - preProcess the loan');
693: preProcessInstallment(p_api_version => 1.0
694: ,p_init_msg_list => p_init_msg_list
695: ,p_commit => FND_API.G_FALSE --p_commit
696: ,p_loan_ID => p_loan_id
697: ,p_installment_number => lns_billing_util_pub.last_payment_number(p_loan_id)
698: ,x_amortization_rec => l_amortization_rec
699: ,x_return_status => l_return_status
738: l_fee_basis_tbl(4).fee_basis_name := 'TOTAL_UNDISB_AMT';
739: l_fee_basis_tbl(4).fee_basis_amount := l_loan_details.requested_amount + l_loan_details.ADD_REQUESTED_AMOUNT - l_original_loan_amount;
740:
741: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for 0-th installment...');
742: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
743: ,p_loan_id => p_loan_id
744: ,p_installment => 0
745: ,p_fee_basis_tbl => l_fee_basis_tbl
746: ,p_based_on_terms => p_based_on_terms
751: ,x_msg_data => l_msg_data);
752:
753: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
754: if l_return_status <> 'S' then
755: RAISE FND_API.G_EXC_ERROR;
756: end if;
757:
758: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
759:
807:
808: -- load custom schedule
809: LNS_CUSTOM_PUB.loadCustomSchedule(
810: P_API_VERSION => 1.0,
811: P_INIT_MSG_LIST => FND_API.G_TRUE,
812: P_COMMIT => FND_API.G_FALSE,
813: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
814: P_LOAN_ID => P_LOAN_ID,
815: P_BASED_ON_TERMS => p_based_on_terms,
808: -- load custom schedule
809: LNS_CUSTOM_PUB.loadCustomSchedule(
810: P_API_VERSION => 1.0,
811: P_INIT_MSG_LIST => FND_API.G_TRUE,
812: P_COMMIT => FND_API.G_FALSE,
813: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
814: P_LOAN_ID => P_LOAN_ID,
815: P_BASED_ON_TERMS => p_based_on_terms,
816: X_CUSTOM_SET_REC => l_CUSTOM_SET_REC,
809: LNS_CUSTOM_PUB.loadCustomSchedule(
810: P_API_VERSION => 1.0,
811: P_INIT_MSG_LIST => FND_API.G_TRUE,
812: P_COMMIT => FND_API.G_FALSE,
813: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
814: P_LOAN_ID => P_LOAN_ID,
815: P_BASED_ON_TERMS => p_based_on_terms,
816: X_CUSTOM_SET_REC => l_CUSTOM_SET_REC,
817: X_CUSTOM_TBL => l_custom_tbl,
819: x_msg_count => l_msg_count,
820: x_msg_data => l_msg_data);
821:
822: IF l_return_status <> 'S' THEN
823: RAISE FND_API.G_EXC_ERROR;
824: END IF;
825:
826: for p in 1..l_custom_tbl.count loop
827:
906: -- End of API body
907: --
908:
909: -- Standard check for p_commit
910: IF FND_API.to_Boolean(p_commit) THEN
911: COMMIT WORK;
912: END IF;
913:
914: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
914: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
915: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
916:
917: EXCEPTION
918: WHEN FND_API.G_EXC_ERROR THEN
919: ROLLBACK TO runAmortization_PVT;
920: x_return_status := FND_API.G_RET_STS_ERROR;
921: x_msg_count := l_msg_count;
922: x_msg_data := l_msg_data;
916:
917: EXCEPTION
918: WHEN FND_API.G_EXC_ERROR THEN
919: ROLLBACK TO runAmortization_PVT;
920: x_return_status := FND_API.G_RET_STS_ERROR;
921: x_msg_count := l_msg_count;
922: x_msg_data := l_msg_data;
923: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
924: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
922: x_msg_data := l_msg_data;
923: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
924: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
925:
926: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
927: ROLLBACK TO runAmortization_PVT;
928: x_return_status := FND_API.G_RET_STS_ERROR;
929: x_msg_count := l_msg_count;
930: x_msg_data := l_msg_data;
924: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
925:
926: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
927: ROLLBACK TO runAmortization_PVT;
928: x_return_status := FND_API.G_RET_STS_ERROR;
929: x_msg_count := l_msg_count;
930: x_msg_data := l_msg_data;
931: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
932: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
932: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
933:
934: WHEN OTHERS THEN
935: ROLLBACK TO runAmortization_PVT;
936: x_return_status := FND_API.G_RET_STS_ERROR;
937: x_msg_count := l_msg_count;
938: x_msg_data := l_msg_data;
939: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
940: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1002: -- this will be a loan that will never be paid off
1003: if ( l_periodic_rate * p_loan_amount ) / (p_payments_per_year * p_termly_amount) >= 1 then
1004: FND_MESSAGE.Set_Name('LNS', 'LNS_NEVER_PAYOFF');
1005: FND_MSG_PUB.Add;
1006: RAISE FND_API.G_EXC_ERROR;
1007: end if;
1008:
1009: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_periodic_rate * p_loan_amount :' || l_periodic_rate * p_loan_amount);
1010: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': p_payments_per_year * p_termly_amount : ' || p_payments_per_year * p_termly_amount);
1038: return l_num_periods;
1039:
1040: Exception
1041:
1042: When FND_API.G_EXC_ERROR then
1043: return -1;
1044:
1045: When others then
1046: return -1;
1133: -- Standard Start of API savepoint
1134: SAVEPOINT preProcessInstallment;
1135:
1136: -- Standard call to check for call compatibility.
1137: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
1138: l_api_name, G_PKG_NAME)
1139: THEN
1140: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1141: END IF;
1136: -- Standard call to check for call compatibility.
1137: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
1138: l_api_name, G_PKG_NAME)
1139: THEN
1140: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1141: END IF;
1142:
1143: -- Initialize message list IF p_init_msg_list is set to TRUE.
1144: IF FND_API.to_Boolean(p_init_msg_list) THEN
1140: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1141: END IF;
1142:
1143: -- Initialize message list IF p_init_msg_list is set to TRUE.
1144: IF FND_API.to_Boolean(p_init_msg_list) THEN
1145: FND_MSG_PUB.initialize;
1146: END IF;
1147: -- Initialize API return status to SUCCESS
1148: x_return_status := FND_API.G_RET_STS_SUCCESS;
1144: IF FND_API.to_Boolean(p_init_msg_list) THEN
1145: FND_MSG_PUB.initialize;
1146: END IF;
1147: -- Initialize API return status to SUCCESS
1148: x_return_status := FND_API.G_RET_STS_SUCCESS;
1149:
1150: -- Api body
1151: -- get the loan details
1152: -- compare the actual balance to the theoretical balance
1346: -- End of API body
1347: -- ---------------------------------------------------------------
1348:
1349: -- Standard check for p_commit
1350: IF FND_API.to_Boolean(p_commit) THEN
1351: COMMIT WORK;
1352: END IF;
1353:
1354: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1354: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1355: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
1356:
1357: Exception
1358: WHEN FND_API.G_EXC_ERROR THEN
1359: ROLLBACK TO preProcessInstallment;
1360: x_return_status := FND_API.G_RET_STS_ERROR;
1361: x_msg_count := l_msg_count;
1362: x_msg_data := l_msg_data;
1356:
1357: Exception
1358: WHEN FND_API.G_EXC_ERROR THEN
1359: ROLLBACK TO preProcessInstallment;
1360: x_return_status := FND_API.G_RET_STS_ERROR;
1361: x_msg_count := l_msg_count;
1362: x_msg_data := l_msg_data;
1363: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1364: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1362: x_msg_data := l_msg_data;
1363: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1364: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1365:
1366: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1367: ROLLBACK TO preProcessInstallment;
1368: x_return_status := FND_API.G_RET_STS_ERROR;
1369: x_msg_count := l_msg_count;
1370: x_msg_data := l_msg_data;
1364: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1365:
1366: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1367: ROLLBACK TO preProcessInstallment;
1368: x_return_status := FND_API.G_RET_STS_ERROR;
1369: x_msg_count := l_msg_count;
1370: x_msg_data := l_msg_data;
1371: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1372: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
1372: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
1373:
1374: WHEN OTHERS THEN
1375: ROLLBACK TO preProcessInstallment;
1376: x_return_status := FND_API.G_RET_STS_ERROR;
1377: x_msg_count := l_msg_count;
1378: x_msg_data := l_msg_data;
1379: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1380: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1443: -- Standard Start of API savepoint
1444: SAVEPOINT preProcessOpenInstallment;
1445:
1446: -- Initialize message list IF p_init_msg_list is set to TRUE.
1447: IF FND_API.to_Boolean(p_init_msg_list) THEN
1448: FND_MSG_PUB.initialize;
1449: END IF;
1450:
1451: -- Initialize API return status to SUCCESS
1448: FND_MSG_PUB.initialize;
1449: END IF;
1450:
1451: -- Initialize API return status to SUCCESS
1452: x_return_status := FND_API.G_RET_STS_SUCCESS;
1453:
1454: -- ---------------------------------------------------------------
1455: -- Beginning of API body
1456: --
1468: ,x_return_status => l_return_Status
1469: ,x_msg_count => l_msg_count
1470: ,x_msg_data => l_msg_data);
1471:
1472: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1473: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1474: FND_MSG_PUB.ADD;
1475: RAISE FND_API.G_EXC_ERROR;
1476: end if;
1471:
1472: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1473: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1474: FND_MSG_PUB.ADD;
1475: RAISE FND_API.G_EXC_ERROR;
1476: end if;
1477:
1478: x_amortization_rec := l_amortization_rec;
1479:
1481: -- End of API body
1482: -- ---------------------------------------------------------------
1483:
1484: -- Standard check for p_commit
1485: IF FND_API.to_Boolean(p_commit) THEN
1486: COMMIT WORK;
1487: END IF;
1488:
1489: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1489: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1490: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
1491:
1492: Exception
1493: WHEN FND_API.G_EXC_ERROR THEN
1494: ROLLBACK TO preProcessOpenInstallment;
1495: x_return_status := FND_API.G_RET_STS_ERROR;
1496: x_msg_count := l_msg_count;
1497: x_msg_data := l_msg_data;
1491:
1492: Exception
1493: WHEN FND_API.G_EXC_ERROR THEN
1494: ROLLBACK TO preProcessOpenInstallment;
1495: x_return_status := FND_API.G_RET_STS_ERROR;
1496: x_msg_count := l_msg_count;
1497: x_msg_data := l_msg_data;
1498: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1499: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1497: x_msg_data := l_msg_data;
1498: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1499: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1500:
1501: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1502: ROLLBACK TO preProcessOpenInstallment;
1503: x_return_status := FND_API.G_RET_STS_ERROR;
1504: x_msg_count := l_msg_count;
1505: x_msg_data := l_msg_data;
1499: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1500:
1501: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1502: ROLLBACK TO preProcessOpenInstallment;
1503: x_return_status := FND_API.G_RET_STS_ERROR;
1504: x_msg_count := l_msg_count;
1505: x_msg_data := l_msg_data;
1506: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1507: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
1507: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
1508:
1509: WHEN OTHERS THEN
1510: ROLLBACK TO preProcessOpenInstallment;
1511: x_return_status := FND_API.G_RET_STS_ERROR;
1512: x_msg_count := l_msg_count;
1513: x_msg_data := l_msg_data;
1514: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1515: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1608: -- Standard Start of API savepoint
1609: SAVEPOINT getInstallment;
1610:
1611: -- Standard call to check for call compatibility.
1612: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
1613: l_api_name, G_PKG_NAME)
1614: THEN
1615: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1616: END IF;
1611: -- Standard call to check for call compatibility.
1612: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
1613: l_api_name, G_PKG_NAME)
1614: THEN
1615: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1616: END IF;
1617:
1618: -- Initialize message list IF p_init_msg_list is set to TRUE.
1619: IF FND_API.to_Boolean(p_init_msg_list) THEN
1615: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1616: END IF;
1617:
1618: -- Initialize message list IF p_init_msg_list is set to TRUE.
1619: IF FND_API.to_Boolean(p_init_msg_list) THEN
1620: FND_MSG_PUB.initialize;
1621: END IF;
1622:
1623: -- Initialize API return status to SUCCESS
1620: FND_MSG_PUB.initialize;
1621: END IF;
1622:
1623: -- Initialize API return status to SUCCESS
1624: x_return_status := FND_API.G_RET_STS_SUCCESS;
1625:
1626: -- --------------------------------------------------------------------
1627: -- Api body
1628: -- --------------------------------------------------------------------
1678: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - calling LNS_CUSTOM_PUB.loadCustomSchedule....');
1679: -- load custom schedule
1680: LNS_CUSTOM_PUB.loadCustomSchedule(
1681: P_API_VERSION => 1.0,
1682: P_INIT_MSG_LIST => FND_API.G_TRUE,
1683: P_COMMIT => FND_API.G_FALSE,
1684: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
1685: P_LOAN_ID => p_loan_id,
1686: P_BASED_ON_TERMS => 'CURRENT',
1679: -- load custom schedule
1680: LNS_CUSTOM_PUB.loadCustomSchedule(
1681: P_API_VERSION => 1.0,
1682: P_INIT_MSG_LIST => FND_API.G_TRUE,
1683: P_COMMIT => FND_API.G_FALSE,
1684: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
1685: P_LOAN_ID => p_loan_id,
1686: P_BASED_ON_TERMS => 'CURRENT',
1687: X_CUSTOM_SET_REC => l_CUSTOM_SET_REC,
1680: LNS_CUSTOM_PUB.loadCustomSchedule(
1681: P_API_VERSION => 1.0,
1682: P_INIT_MSG_LIST => FND_API.G_TRUE,
1683: P_COMMIT => FND_API.G_FALSE,
1684: P_VALIDATION_LEVEL => FND_API.G_VALID_LEVEL_FULL,
1685: P_LOAN_ID => p_loan_id,
1686: P_BASED_ON_TERMS => 'CURRENT',
1687: X_CUSTOM_SET_REC => l_CUSTOM_SET_REC,
1688: X_CUSTOM_TBL => l_custom_tbl,
1690: x_msg_count => l_msg_count,
1691: x_msg_data => l_msg_data);
1692:
1693: IF l_return_status <> 'S' THEN
1694: RAISE FND_API.G_EXC_ERROR;
1695: END IF;
1696:
1697: for p in 1..l_custom_tbl.count loop
1698:
1770: else
1771: l_fee_structures(1).FEE_BILLING_OPTION := 'BILL_WITH_INSTALLMENT';
1772: end if;
1773:
1774: lns_fee_engine.processFees(p_init_msg_list => FND_API.G_TRUE
1775: ,p_commit => FND_API.G_FALSE
1776: ,p_loan_id => p_loan_id
1777: ,p_installment_number => p_installment_number
1778: ,p_fee_basis_tbl => l_fee_basis_tbl
1771: l_fee_structures(1).FEE_BILLING_OPTION := 'BILL_WITH_INSTALLMENT';
1772: end if;
1773:
1774: lns_fee_engine.processFees(p_init_msg_list => FND_API.G_TRUE
1775: ,p_commit => FND_API.G_FALSE
1776: ,p_loan_id => p_loan_id
1777: ,p_installment_number => p_installment_number
1778: ,p_fee_basis_tbl => l_fee_basis_tbl
1779: ,p_fee_structures => l_fee_structures
1782: ,x_msg_count => l_msg_count
1783: ,x_msg_data => l_msg_data);
1784:
1785: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_return_status = ' || l_return_status);
1786: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1787: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1788: FND_MSG_PUB.ADD;
1789: RAISE FND_API.G_EXC_ERROR;
1790: end if;
1785: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_return_status = ' || l_return_status);
1786: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1787: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1788: FND_MSG_PUB.ADD;
1789: RAISE FND_API.G_EXC_ERROR;
1790: end if;
1791: end if;
1792:
1793: if p_installment_number > 0 then
1801: ,x_msg_count => l_msg_count
1802: ,x_msg_data => l_msg_data);
1803:
1804: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_return_status = ' || l_return_status);
1805: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1806: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1807: FND_MSG_PUB.ADD;
1808: RAISE FND_API.G_EXC_ERROR;
1809: end if;
1804: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_return_status = ' || l_return_status);
1805: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1806: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1807: FND_MSG_PUB.ADD;
1808: RAISE FND_API.G_EXC_ERROR;
1809: end if;
1810:
1811: l_fee_structures.delete;
1812: l_fees_tbl.delete;
1814: -- add the recurring fees for the installment onto the fee schedule
1815: l_fee_structures(1).fee_category := 'RECUR';
1816: l_fee_structures(1).fee_type := null;
1817:
1818: lns_fee_engine.processFees(p_init_msg_list => FND_API.G_TRUE
1819: ,p_commit => FND_API.G_FALSE
1820: ,p_loan_id => p_loan_id
1821: ,p_installment_number => p_installment_number
1822: ,p_fee_basis_tbl => l_fee_basis_tbl
1815: l_fee_structures(1).fee_category := 'RECUR';
1816: l_fee_structures(1).fee_type := null;
1817:
1818: lns_fee_engine.processFees(p_init_msg_list => FND_API.G_TRUE
1819: ,p_commit => FND_API.G_FALSE
1820: ,p_loan_id => p_loan_id
1821: ,p_installment_number => p_installment_number
1822: ,p_fee_basis_tbl => l_fee_basis_tbl
1823: ,p_fee_structures => l_fee_structures
1826: ,x_msg_count => l_msg_count
1827: ,x_msg_data => l_msg_data);
1828:
1829: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_return_status = ' || l_return_status);
1830: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1831: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1832: FND_MSG_PUB.ADD;
1833: RAISE FND_API.G_EXC_ERROR;
1834: end if;
1829: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_return_status = ' || l_return_status);
1830: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1831: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
1832: FND_MSG_PUB.ADD;
1833: RAISE FND_API.G_EXC_ERROR;
1834: end if;
1835: end if;
1836:
1837: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - calling lns_fee_engine.getFeeSchedule...');
1834: end if;
1835: end if;
1836:
1837: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - calling lns_fee_engine.getFeeSchedule...');
1838: lns_fee_engine.getFeeSchedule(p_init_msg_list => FND_API.G_FALSE
1839: ,p_loan_id => p_loan_id
1840: ,p_installment_number => p_installment_number
1841: ,p_disb_header_id => null
1842: ,p_phase => 'TERM'
1844: ,x_return_status => l_return_status
1845: ,x_msg_count => l_msg_count
1846: ,x_msg_data => l_msg_data);
1847:
1848: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1849: FND_MESSAGE.SET_NAME('LNS', 'LNS_READ_FEE_ERROR');
1850: FND_MSG_PUB.ADD;
1851: RAISE FND_API.G_EXC_ERROR;
1852: end if;
1847:
1848: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
1849: FND_MESSAGE.SET_NAME('LNS', 'LNS_READ_FEE_ERROR');
1850: FND_MSG_PUB.ADD;
1851: RAISE FND_API.G_EXC_ERROR;
1852: end if;
1853:
1854: for k in 1..l_fees_tbl_1.count loop
1855: l_fees_tbl_2(k).FEE_ID := l_fees_tbl_1(k).FEE_ID;
1874: -- End of API body
1875: -- --------------------------------------------------------------------
1876:
1877: -- Standard check for p_commit
1878: IF FND_API.to_Boolean(p_commit) THEN
1879: COMMIT WORK;
1880: END IF;
1881:
1882: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1882: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1883: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
1884:
1885: EXCEPTION
1886: WHEN FND_API.G_EXC_ERROR THEN
1887: ROLLBACK TO getInstallment;
1888: x_return_status := FND_API.G_RET_STS_ERROR;
1889: x_msg_count := l_msg_count;
1890: x_msg_data := l_msg_data;
1884:
1885: EXCEPTION
1886: WHEN FND_API.G_EXC_ERROR THEN
1887: ROLLBACK TO getInstallment;
1888: x_return_status := FND_API.G_RET_STS_ERROR;
1889: x_msg_count := l_msg_count;
1890: x_msg_data := l_msg_data;
1891: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1892: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1890: x_msg_data := l_msg_data;
1891: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1892: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1893:
1894: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1895: ROLLBACK TO getInstallment;
1896: x_return_status := FND_API.G_RET_STS_ERROR;
1897: x_msg_count := l_msg_count;
1898: x_msg_data := l_msg_data;
1892: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1893:
1894: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1895: ROLLBACK TO getInstallment;
1896: x_return_status := FND_API.G_RET_STS_ERROR;
1897: x_msg_count := l_msg_count;
1898: x_msg_data := l_msg_data;
1899: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1900: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1900: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
1901:
1902: WHEN OTHERS THEN
1903: ROLLBACK TO getInstallment;
1904: x_return_status := FND_API.G_RET_STS_ERROR;
1905: x_msg_count := l_msg_count;
1906: x_msg_data := l_msg_data;
1907: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
1908: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
2084: -- Standard Start of API savepoint
2085: SAVEPOINT getOpenInstallment;
2086:
2087: -- Initialize message list IF p_init_msg_list is set to TRUE.
2088: IF FND_API.to_Boolean(p_init_msg_list) THEN
2089: FND_MSG_PUB.initialize;
2090: END IF;
2091:
2092: -- Initialize API return status to SUCCESS
2089: FND_MSG_PUB.initialize;
2090: END IF;
2091:
2092: -- Initialize API return status to SUCCESS
2093: x_return_status := FND_API.G_RET_STS_SUCCESS;
2094:
2095: -- --------------------------------------------------------------------
2096: -- Api body
2097: -- --------------------------------------------------------------------
2119: exit;
2120: end if;
2121: end loop;
2122:
2123: lns_fee_engine.getFeeSchedule(p_init_msg_list => FND_API.G_FALSE
2124: ,p_loan_id => p_loan_id
2125: ,p_installment_number => p_installment_number
2126: ,p_disb_header_id => null
2127: ,p_phase => 'OPEN'
2129: ,x_return_status => l_return_status
2130: ,x_msg_count => l_msg_count
2131: ,x_msg_data => l_msg_data);
2132:
2133: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
2134: FND_MESSAGE.SET_NAME('LNS', 'LNS_READ_FEE_ERROR');
2135: FND_MSG_PUB.ADD;
2136: RAISE FND_API.G_EXC_ERROR;
2137: end if;
2132:
2133: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
2134: FND_MESSAGE.SET_NAME('LNS', 'LNS_READ_FEE_ERROR');
2135: FND_MSG_PUB.ADD;
2136: RAISE FND_API.G_EXC_ERROR;
2137: end if;
2138:
2139: for k in 1..l_fees_tbl_1.count loop
2140: l_fees_tbl_2(k).FEE_ID := l_fees_tbl_1(k).FEE_ID;
2164: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2165: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
2166:
2167: EXCEPTION
2168: WHEN FND_API.G_EXC_ERROR THEN
2169: ROLLBACK TO getOpenInstallment;
2170: x_return_status := FND_API.G_RET_STS_ERROR;
2171: x_msg_count := l_msg_count;
2172: x_msg_data := l_msg_data;
2166:
2167: EXCEPTION
2168: WHEN FND_API.G_EXC_ERROR THEN
2169: ROLLBACK TO getOpenInstallment;
2170: x_return_status := FND_API.G_RET_STS_ERROR;
2171: x_msg_count := l_msg_count;
2172: x_msg_data := l_msg_data;
2173: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2174: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
2172: x_msg_data := l_msg_data;
2173: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2174: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
2175:
2176: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2177: ROLLBACK TO getOpenInstallment;
2178: x_return_status := FND_API.G_RET_STS_ERROR;
2179: x_msg_count := l_msg_count;
2180: x_msg_data := l_msg_data;
2174: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
2175:
2176: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2177: ROLLBACK TO getOpenInstallment;
2178: x_return_status := FND_API.G_RET_STS_ERROR;
2179: x_msg_count := l_msg_count;
2180: x_msg_data := l_msg_data;
2181: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2182: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
2182: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
2183:
2184: WHEN OTHERS THEN
2185: ROLLBACK TO getOpenInstallment;
2186: x_return_status := FND_API.G_RET_STS_ERROR;
2187: x_msg_count := l_msg_count;
2188: x_msg_data := l_msg_data;
2189: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
2190: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
2693: l_fee_basis_tbl(4).fee_basis_name := 'TOTAL_UNDISB_AMT';
2694: l_fee_basis_tbl(4).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT - l_original_loan_amount;
2695:
2696: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for 0-th installment...');
2697: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
2698: ,p_loan_id => l_loan_id
2699: ,p_installment => 0
2700: ,p_fee_basis_tbl => l_fee_basis_tbl
2701: ,p_based_on_terms => p_based_on_terms
2706: ,x_msg_data => l_msg_data);
2707:
2708: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
2709: if l_return_status <> 'S' then
2710: RAISE FND_API.G_EXC_ERROR;
2711: end if;
2712:
2713: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
2714:
3577: l_fee_basis_tbl(9).fee_basis_name := 'CURR_LOAN';
3578: l_fee_basis_tbl(9).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT;
3579:
3580: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for this installment...');
3581: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
3582: ,p_loan_id => l_loan_id
3583: ,p_installment => l_installment_number
3584: ,p_fee_basis_tbl => l_fee_basis_tbl
3585: ,p_based_on_terms => p_based_on_terms
3590: ,x_msg_data => l_msg_data);
3591:
3592: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
3593: if l_return_status <> 'S' then
3594: RAISE FND_API.G_EXC_ERROR;
3595: end if;
3596:
3597: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
3598:
3690:
3691: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
3692:
3693: Exception
3694: WHEN FND_API.G_EXC_ERROR THEN
3695: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
3696:
3697: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3698: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
3693: Exception
3694: WHEN FND_API.G_EXC_ERROR THEN
3695: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
3696:
3697: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3698: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
3699:
3700: WHEN OTHERS THEN
3701: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
4057: l_fee_basis_tbl(4).fee_basis_name := 'TOTAL_UNDISB_AMT';
4058: l_fee_basis_tbl(4).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT - l_original_loan_amount;
4059:
4060: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for 0-th installment...');
4061: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
4062: ,p_loan_id => l_loan_id
4063: ,p_installment => 0
4064: ,p_fee_basis_tbl => l_fee_basis_tbl
4065: ,p_based_on_terms => p_based_on_terms
4070: ,x_msg_data => l_msg_data);
4071:
4072: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
4073: if l_return_status <> 'S' then
4074: RAISE FND_API.G_EXC_ERROR;
4075: end if;
4076:
4077: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
4078:
4790: l_fee_basis_tbl(9).fee_basis_name := 'CURR_LOAN';
4791: l_fee_basis_tbl(9).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT;
4792:
4793: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for this installment...');
4794: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
4795: ,p_loan_id => l_loan_id
4796: ,p_installment => l_installment_number
4797: ,p_fee_basis_tbl => l_fee_basis_tbl
4798: ,p_based_on_terms => p_based_on_terms
4803: ,x_msg_data => l_msg_data);
4804:
4805: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
4806: if l_return_status <> 'S' then
4807: RAISE FND_API.G_EXC_ERROR;
4808: end if;
4809:
4810: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
4811:
4903:
4904: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
4905:
4906: Exception
4907: WHEN FND_API.G_EXC_ERROR THEN
4908: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
4909:
4910: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4911: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
4906: Exception
4907: WHEN FND_API.G_EXC_ERROR THEN
4908: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
4909:
4910: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4911: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
4912:
4913: WHEN OTHERS THEN
4914: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
5314: l_fee_basis_tbl(4).fee_basis_name := 'TOTAL_UNDISB_AMT';
5315: l_fee_basis_tbl(4).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT - l_original_loan_amount;
5316:
5317: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for 0-th installment...');
5318: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
5319: ,p_loan_id => l_loan_id
5320: ,p_installment => 0
5321: ,p_fee_basis_tbl => l_fee_basis_tbl
5322: ,p_based_on_terms => p_based_on_terms
5327: ,x_msg_data => l_msg_data);
5328:
5329: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
5330: if l_return_status <> 'S' then
5331: RAISE FND_API.G_EXC_ERROR;
5332: end if;
5333:
5334: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
5335:
6123: l_fee_basis_tbl(9).fee_basis_name := 'CURR_LOAN';
6124: l_fee_basis_tbl(9).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT;
6125:
6126: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for this installment...');
6127: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
6128: ,p_loan_id => l_loan_id
6129: ,p_installment => l_installment_number
6130: ,p_fee_basis_tbl => l_fee_basis_tbl
6131: ,p_based_on_terms => p_based_on_terms
6136: ,x_msg_data => l_msg_data);
6137:
6138: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
6139: if l_return_status <> 'S' then
6140: RAISE FND_API.G_EXC_ERROR;
6141: end if;
6142:
6143: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
6144:
6236:
6237: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
6238:
6239: Exception
6240: WHEN FND_API.G_EXC_ERROR THEN
6241: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
6242:
6243: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6244: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
6239: Exception
6240: WHEN FND_API.G_EXC_ERROR THEN
6241: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
6242:
6243: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6244: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
6245:
6246: WHEN OTHERS THEN
6247: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
6545: when others then
6546: FND_MESSAGE.SET_NAME('LNS', 'LNS_COMPUTE_BALANCE_ERROR');
6547: FND_MSG_PUB.ADD;
6548: LogMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, l_api_name || FND_MSG_PUB.Get(p_encoded => 'F'));
6549: RAISE FND_API.G_EXC_ERROR;
6550: end;
6551:
6552: l_fees_tbl.delete;
6553: l_fee_amount := 0;
6562: l_fee_basis_tbl(4).fee_basis_name := 'TOTAL_UNDISB_AMT';
6563: l_fee_basis_tbl(4).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT - l_end_balance;
6564:
6565: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for 0-th installment...');
6566: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
6567: ,p_loan_id => l_loan_id
6568: ,p_installment => 0
6569: ,p_fee_basis_tbl => l_fee_basis_tbl
6570: ,p_based_on_terms => p_based_on_terms
6575: ,x_msg_data => l_msg_data);
6576:
6577: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
6578: if l_return_status <> 'S' then
6579: RAISE FND_API.G_EXC_ERROR;
6580: end if;
6581:
6582: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
6583:
6682: when others then
6683: FND_MESSAGE.SET_NAME('LNS', 'LNS_COMPUTE_BALANCE_ERROR');
6684: FND_MSG_PUB.ADD;
6685: LogMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, l_api_name || FND_MSG_PUB.Get(p_encoded => 'F'));
6686: RAISE FND_API.G_EXC_ERROR;
6687: end;
6688:
6689: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ' - l_wtd_balance = ' || l_wtd_balance);
6690:
6807: l_fee_basis_tbl(9).fee_basis_name := 'CURR_LOAN';
6808: l_fee_basis_tbl(9).fee_basis_amount := p_loan_details.requested_amount + p_loan_details.ADD_REQUESTED_AMOUNT;
6809:
6810: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': Calling LNS_FEE_ENGINE.getFeeDetails for this installment...');
6811: LNS_FEE_ENGINE.getFeeDetails(p_init_msg_list => FND_API.G_FALSE
6812: ,p_loan_id => l_loan_id
6813: ,p_installment => l_installment_number
6814: ,p_fee_basis_tbl => l_fee_basis_tbl
6815: ,p_based_on_terms => p_based_on_terms
6820: ,x_msg_data => l_msg_data);
6821:
6822: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_return_status = ' || l_return_status);
6823: if l_return_status <> 'S' then
6824: RAISE FND_API.G_EXC_ERROR;
6825: end if;
6826:
6827: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, l_api_name || ': l_fees_tbl.count = ' || l_fees_tbl.count);
6828:
6874:
6875: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
6876:
6877: Exception
6878: WHEN FND_API.G_EXC_ERROR THEN
6879: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
6880:
6881: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6882: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
6877: Exception
6878: WHEN FND_API.G_EXC_ERROR THEN
6879: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
6880:
6881: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6882: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
6883:
6884: WHEN OTHERS THEN
6885: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
6960:
6961: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - BEGIN');
6962:
6963: -- Initialize message list IF p_init_msg_list is set to TRUE.
6964: IF FND_API.to_Boolean( p_init_msg_list ) THEN
6965: FND_MSG_PUB.initialize;
6966: END IF;
6967:
6968: -- Initialize API return status to SUCCESS
6965: FND_MSG_PUB.initialize;
6966: END IF;
6967:
6968: -- Initialize API return status to SUCCESS
6969: x_return_status := FND_API.G_RET_STS_SUCCESS;
6970:
6971: --
6972: -- Api body
6973: -- ----------------------------------------------------------------
6980: ,p_col_id => p_loan_id
6981: ,p_col_name => 'LOAN_ID'
6982: ,p_table_name => 'LNS_LOAN_HEADERS_ALL');
6983:
6984: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
6985: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_VALUE');
6986: FND_MESSAGE.SET_TOKEN('PARAMETER', 'LOAN_ID');
6987: FND_MESSAGE.SET_TOKEN('VALUE', p_loan_ID);
6988: FND_MSG_PUB.ADD;
6985: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_VALUE');
6986: FND_MESSAGE.SET_TOKEN('PARAMETER', 'LOAN_ID');
6987: FND_MESSAGE.SET_TOKEN('VALUE', p_loan_ID);
6988: FND_MSG_PUB.ADD;
6989: RAISE FND_API.G_EXC_ERROR;
6990: end if;
6991:
6992: -- check if disbursements exist and is amount > 0 as per karthik instructions
6993: open c_disbursements(p_loan_id);
6996:
6997: if l_invalid_disb > 0 then
6998: FND_MESSAGE.SET_NAME('LNS', 'LNS_DISB_REQ_DATE_ERR');
6999: FND_MSG_PUB.ADD;
7000: RAISE FND_API.G_EXC_ERROR;
7001: end if;
7002:
7003: if l_disb_amount > 0 then
7004: l_rate_tbl := lns_financials.getRateSchedule(p_loan_id, 'OPEN');
7052:
7053: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
7054:
7055: EXCEPTION
7056: WHEN FND_API.G_EXC_ERROR THEN
7057: ROLLBACK TO runLoanProjection_PVT;
7058: x_return_status := FND_API.G_RET_STS_ERROR;
7059: x_msg_count := l_msg_count;
7060: x_msg_data := l_msg_data;
7054:
7055: EXCEPTION
7056: WHEN FND_API.G_EXC_ERROR THEN
7057: ROLLBACK TO runLoanProjection_PVT;
7058: x_return_status := FND_API.G_RET_STS_ERROR;
7059: x_msg_count := l_msg_count;
7060: x_msg_data := l_msg_data;
7061: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7062: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7060: x_msg_data := l_msg_data;
7061: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7062: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7063:
7064: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7065: ROLLBACK TO runLoanProjection_PVT;
7066: x_return_status := FND_API.G_RET_STS_ERROR;
7067: x_msg_count := l_msg_count;
7068: x_msg_data := l_msg_data;
7062: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7063:
7064: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7065: ROLLBACK TO runLoanProjection_PVT;
7066: x_return_status := FND_API.G_RET_STS_ERROR;
7067: x_msg_count := l_msg_count;
7068: x_msg_data := l_msg_data;
7069: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7070: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7070: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7071:
7072: WHEN OTHERS THEN
7073: ROLLBACK TO runLoanProjection_PVT;
7074: x_return_status := FND_API.G_RET_STS_ERROR;
7075: x_msg_count := l_msg_count;
7076: x_msg_data := l_msg_data;
7077: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
7078: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7186: Exception
7187: When No_Data_Found then
7188: FND_MESSAGE.Set_Name('LNS', 'LNS_NO_RATES');
7189: FND_MSG_PUB.Add;
7190: RAISE FND_API.G_EXC_ERROR;
7191: End;
7192:
7193: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
7194:
7194:
7195: return l_rate_tbl;
7196:
7197: Exception
7198: WHEN FND_API.G_EXC_ERROR THEN
7199: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7200:
7201: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7202: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
7197: Exception
7198: WHEN FND_API.G_EXC_ERROR THEN
7199: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
7200:
7201: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7202: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, sqlerrm);
7203:
7204: WHEN OTHERS THEN
7205: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8077: When No_Data_Found then
8078: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - LOAN ID: ' || l_loan_id || ' not found');
8079: FND_MESSAGE.Set_Name('LNS', 'LNS_INVALID_LOAN_ID');
8080: FND_MSG_PUB.Add;
8081: RAISE FND_API.G_EXC_ERROR;
8082:
8083: When Others then
8084: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || 'Err: ' || sqlerrm);
8085: RAISE FND_API.G_EXC_ERROR;
8081: RAISE FND_API.G_EXC_ERROR;
8082:
8083: When Others then
8084: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || 'Err: ' || sqlerrm);
8085: RAISE FND_API.G_EXC_ERROR;
8086:
8087: end getLoanDetails;
8088:
8089:
8194: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - BEGIN');
8195: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_loan_id ' || p_loan_id);
8196:
8197: -- Initialize API return status to SUCCESS
8198: x_return_status := FND_API.G_RET_STS_SUCCESS;
8199:
8200: --
8201: -- Api body
8202: -- -----------------------------------------------------------------
8294: l_term_rec.NEXT_PAYMENT_DUE_DATE := l_loan_details.first_payment_Date;
8295: l_loan_header_rec.loan_maturity_date := l_loan_details.maturity_date;
8296: l_loan_header_rec.loan_start_date := l_loan_details.loan_start_date;
8297: lns_terms_pub.update_term(p_object_version_number => l_terms_version_number
8298: ,p_init_msg_list => fnd_api.g_false
8299: ,p_loan_term_rec => l_term_rec
8300: ,x_return_status => l_return_status
8301: ,x_msg_count => l_msg_count
8302: ,x_msg_data => l_msg_data);
8310: l_loan_header_rec.open_loan_term_period := l_new_frequency;
8311:
8312: lns_loan_header_pub.update_loan(p_object_version_number => l_version_number
8313: ,p_loan_header_rec => l_loan_header_rec
8314: ,p_init_msg_list => fnd_api.g_false
8315: ,x_return_status => l_return_status
8316: ,x_msg_count => l_msg_count
8317: ,x_msg_data => l_msg_data);
8318: elsif l_current_phase = 'TERM' then
8323: l_loan_header_rec.loan_term_period := l_new_frequency;
8324:
8325: lns_loan_header_pub.update_loan(p_object_version_number => l_version_number
8326: ,p_loan_header_rec => l_loan_header_rec
8327: ,p_init_msg_list => fnd_api.g_false
8328: ,x_return_status => l_return_status
8329: ,x_msg_count => l_msg_count
8330: ,x_msg_data => l_msg_data);
8331:
8340: -- End of API body
8341: -- ----------------------------------------------------------------
8342: --
8343: -- Standard check for p_commit
8344: IF FND_API.to_Boolean(p_commit) THEN
8345: COMMIT WORK;
8346: END IF;
8347:
8348:
8350:
8351: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
8352:
8353: EXCEPTION
8354: WHEN FND_API.G_EXC_ERROR THEN
8355: ROLLBACK TO shiftLoan;
8356: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8357: x_return_status := FND_API.G_RET_STS_ERROR;
8358: x_msg_count := l_msg_count;
8353: EXCEPTION
8354: WHEN FND_API.G_EXC_ERROR THEN
8355: ROLLBACK TO shiftLoan;
8356: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8357: x_return_status := FND_API.G_RET_STS_ERROR;
8358: x_msg_count := l_msg_count;
8359: x_msg_data := l_msg_data;
8360: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8361:
8358: x_msg_count := l_msg_count;
8359: x_msg_data := l_msg_data;
8360: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8361:
8362: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8363: ROLLBACK TO shiftLoan;
8364: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8365: x_return_status := FND_API.G_RET_STS_ERROR;
8366: x_msg_count := l_msg_count;
8361:
8362: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8363: ROLLBACK TO shiftLoan;
8364: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8365: x_return_status := FND_API.G_RET_STS_ERROR;
8366: x_msg_count := l_msg_count;
8367: x_msg_data := l_msg_data;
8368: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8369:
8369:
8370: WHEN OTHERS THEN
8371: ROLLBACK TO shiftLoan;
8372: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8373: x_return_status := FND_API.G_RET_STS_ERROR;
8374: x_msg_count := l_msg_count;
8375: x_msg_data := l_msg_data;
8376: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8377:
8440: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_new_start_date = ' || p_new_start_date);
8441: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - p_phase = ' || p_phase);
8442:
8443: -- Initialize API return status to SUCCESS
8444: x_return_status := FND_API.G_RET_STS_SUCCESS;
8445: x_dates_shifted_flag := 'N';
8446:
8447: --
8448: -- Api body
8455: ,p_col_id => p_loan_id
8456: ,p_col_name => 'LOAN_ID'
8457: ,p_table_name => 'LNS_LOAN_HEADERS_ALL');
8458:
8459: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
8460: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_VALUE');
8461: FND_MESSAGE.SET_TOKEN('PARAMETER', 'LOAN_ID');
8462: FND_MESSAGE.SET_TOKEN('VALUE', p_loan_ID);
8463: FND_MSG_PUB.ADD;
8460: FND_MESSAGE.SET_NAME('LNS', 'LNS_INVALID_VALUE');
8461: FND_MESSAGE.SET_TOKEN('PARAMETER', 'LOAN_ID');
8462: FND_MESSAGE.SET_TOKEN('VALUE', p_loan_ID);
8463: FND_MSG_PUB.ADD;
8464: RAISE FND_API.G_EXC_ERROR;
8465: end if;
8466:
8467: l_loan_details := lns_financials.getLoanDetails(p_loan_id => p_loan_id
8468: ,p_based_on_terms => 'ORIGINAL'
8511: logMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, 'ERROR: ' || sqlerrm);
8512: FND_MESSAGE.SET_NAME('LNS', 'LNS_API_OTHERS_EXCEP');
8513: FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
8514: FND_MSG_PUB.ADD;
8515: RAISE FND_API.G_EXC_ERROR;
8516: END;
8517:
8518: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_new_int_first_pay_date: ' || l_new_int_first_pay_date);
8519: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - l_new_prin_first_pay_date: ' || l_new_prin_first_pay_date);
8521:
8522: if l_new_int_first_pay_date is null or l_new_int_first_pay_date < p_new_start_date then
8523: FND_MESSAGE.SET_NAME('LNS', 'LNS_PAYMENT_START_DATE_ERROR2');
8524: FND_MSG_PUB.ADD;
8525: RAISE FND_API.G_EXC_ERROR;
8526: end if;
8527:
8528: if l_new_int_first_pay_date > l_new_maturity_date then
8529: FND_MESSAGE.SET_NAME('LNS', 'LNS_PAYMENT_START_DATE_ERROR1');
8527:
8528: if l_new_int_first_pay_date > l_new_maturity_date then
8529: FND_MESSAGE.SET_NAME('LNS', 'LNS_PAYMENT_START_DATE_ERROR1');
8530: FND_MSG_PUB.ADD;
8531: RAISE FND_API.G_EXC_ERROR;
8532: end if;
8533:
8534: if l_loan_details.PRIN_FIRST_PAY_DATE is not null then
8535: if l_new_prin_first_pay_date is null or l_new_prin_first_pay_date < p_new_start_date then
8534: if l_loan_details.PRIN_FIRST_PAY_DATE is not null then
8535: if l_new_prin_first_pay_date is null or l_new_prin_first_pay_date < p_new_start_date then
8536: FND_MESSAGE.SET_NAME('LNS', 'LNS_PRIN_PAY_START_DATE_ERROR2');
8537: FND_MSG_PUB.ADD;
8538: RAISE FND_API.G_EXC_ERROR;
8539: end if;
8540:
8541: if l_new_prin_first_pay_date > l_new_maturity_date then
8542: FND_MESSAGE.SET_NAME('LNS', 'LNS_PRIN_PAY_START_DATE_ERROR1');
8540:
8541: if l_new_prin_first_pay_date > l_new_maturity_date then
8542: FND_MESSAGE.SET_NAME('LNS', 'LNS_PRIN_PAY_START_DATE_ERROR1');
8543: FND_MSG_PUB.ADD;
8544: RAISE FND_API.G_EXC_ERROR;
8545: end if;
8546: end if;
8547:
8548: -- assign the new dates to the loan details record
8560: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8561:
8562: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
8563: EXCEPTION
8564: WHEN FND_API.G_EXC_ERROR THEN
8565: ROLLBACK TO shiftLoanDates;
8566: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8567: x_return_status := FND_API.G_RET_STS_ERROR;
8568: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8563: EXCEPTION
8564: WHEN FND_API.G_EXC_ERROR THEN
8565: ROLLBACK TO shiftLoanDates;
8566: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8567: x_return_status := FND_API.G_RET_STS_ERROR;
8568: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8569:
8570: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8571: ROLLBACK TO shiftLoanDates;
8566: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8567: x_return_status := FND_API.G_RET_STS_ERROR;
8568: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8569:
8570: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8571: ROLLBACK TO shiftLoanDates;
8572: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8573: x_return_status := FND_API.G_RET_STS_ERROR;
8574: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8569:
8570: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8571: ROLLBACK TO shiftLoanDates;
8572: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8573: x_return_status := FND_API.G_RET_STS_ERROR;
8574: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8575:
8576: WHEN OTHERS THEN
8577: ROLLBACK TO shiftLoanDates;
8575:
8576: WHEN OTHERS THEN
8577: ROLLBACK TO shiftLoanDates;
8578: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8579: x_return_status := FND_API.G_RET_STS_ERROR;
8580: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8581: end shiftLoanDates;
8582:
8583:
8876:
8877: begin
8878:
8879: -- Initialize API return status to SUCCESS
8880: x_return_status := FND_API.G_RET_STS_SUCCESS;
8881: l_api_name := 'validatePayoff';
8882: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - BEGIN');
8883: --
8884: -- Api body
8888: -- these dates should be further restricted
8889: if p_loan_details.loan_status = 'PAIDOFF' then
8890: FND_MESSAGE.Set_Name('LNS', 'LNS_PAYOFF_ALREADY');
8891: FND_MSG_PUB.Add;
8892: RAISE FND_API.G_EXC_ERROR;
8893:
8894: --karamach --Bug5295446 --Need to prevent payoff for loans in Approved status as well
8895: --elsif p_loan_details.loan_status = 'INCOMPLETE' or p_loan_details.loan_status = 'DELETED' or
8896: -- p_loan_details.loan_status = 'REJECTED' or p_loan_details.loan_status = 'PENDING' then
8896: -- p_loan_details.loan_status = 'REJECTED' or p_loan_details.loan_status = 'PENDING' then
8897: elsif p_loan_details.loan_status IN ('INCOMPLETE','DELETED','REJECTED','PENDING') then
8898: FND_MESSAGE.Set_Name('LNS', 'LNS_INVOICE_SUMMARY_ERROR');
8899: FND_MSG_PUB.Add;
8900: RAISE FND_API.G_EXC_ERROR;
8901: end if;
8902:
8903: if p_payoff_date < p_loan_details.last_interest_accrual then
8904: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - payoff too early');
8904: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - payoff too early');
8905: FND_MESSAGE.Set_Name('LNS', 'LNS_PAYOFF_TOO_EARLY');
8906: FND_MESSAGE.SET_TOKEN('PAYOFF_DATE', fnd_date.date_to_displaydate(p_loan_details.last_interest_accrual));
8907: FND_MSG_PUB.Add;
8908: RAISE FND_API.G_EXC_ERROR;
8909: end if;
8910:
8911: if p_payoff_date < p_loan_details.last_activity_date then
8912: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - payoff too early');
8913: FND_MESSAGE.Set_Name('LNS', 'LNS_PAYOFF_TOO_EARLY2');
8914: FND_MESSAGE.SET_TOKEN('PARAMETER', 'LAST_ACTIVITY_DATE');
8915: FND_MESSAGE.SET_TOKEN('VALUE', fnd_date.date_to_displaydate(p_loan_details.last_activity_date));
8916: FND_MSG_PUB.Add;
8917: RAISE FND_API.G_EXC_ERROR;
8918: end if;
8919:
8920: if p_reason = 'PAYOFF' then
8921: /* raverma added 12-08-05 */
8920: if p_reason = 'PAYOFF' then
8921: /* raverma added 12-08-05 */
8922: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - calling LNS_FUNDING_PUB.validate_disb_for_payoff returns ');
8923: LNS_FUNDING_PUB.VALIDATE_DISB_FOR_PAYOFF(P_API_VERSION => 1.0
8924: ,P_INIT_MSG_LIST => FND_API.G_FALSE
8925: ,P_COMMIT => FND_API.G_FALSE
8926: ,P_VALIDATION_LEVEL => 100
8927: ,P_LOAN_ID => p_loan_details.loan_id
8928: ,x_return_status => l_return_status
8921: /* raverma added 12-08-05 */
8922: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - calling LNS_FUNDING_PUB.validate_disb_for_payoff returns ');
8923: LNS_FUNDING_PUB.VALIDATE_DISB_FOR_PAYOFF(P_API_VERSION => 1.0
8924: ,P_INIT_MSG_LIST => FND_API.G_FALSE
8925: ,P_COMMIT => FND_API.G_FALSE
8926: ,P_VALIDATION_LEVEL => 100
8927: ,P_LOAN_ID => p_loan_details.loan_id
8928: ,x_return_status => l_return_status
8929: ,x_msg_count => l_msg_count
8927: ,P_LOAN_ID => p_loan_details.loan_id
8928: ,x_return_status => l_return_status
8929: ,x_msg_count => l_msg_count
8930: ,x_msg_data => l_msg_data);
8931: if l_return_Status <> FND_API.G_RET_STS_SUCCESS then
8932: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate_disb_for_payoff returns ' || l_return_Status);
8933: RAISE FND_API.G_EXC_ERROR;
8934: end if;
8935: end if;
8929: ,x_msg_count => l_msg_count
8930: ,x_msg_data => l_msg_data);
8931: if l_return_Status <> FND_API.G_RET_STS_SUCCESS then
8932: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - validate_disb_for_payoff returns ' || l_return_Status);
8933: RAISE FND_API.G_EXC_ERROR;
8934: end if;
8935: end if;
8936:
8937: x_return_status := l_return_Status;
8944: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
8945:
8946: exception
8947:
8948: WHEN FND_API.G_EXC_ERROR THEN
8949: x_return_status := FND_API.G_RET_STS_ERROR;
8950: x_msg_count := l_msg_count;
8951: x_msg_data := l_msg_data;
8952: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8945:
8946: exception
8947:
8948: WHEN FND_API.G_EXC_ERROR THEN
8949: x_return_status := FND_API.G_RET_STS_ERROR;
8950: x_msg_count := l_msg_count;
8951: x_msg_data := l_msg_data;
8952: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8953: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8951: x_msg_data := l_msg_data;
8952: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8953: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8954:
8955: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8956: x_return_status := FND_API.G_RET_STS_ERROR;
8957: x_msg_count := l_msg_count;
8958: x_msg_data := l_msg_data;
8959: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8952: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8953: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8954:
8955: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
8956: x_return_status := FND_API.G_RET_STS_ERROR;
8957: x_msg_count := l_msg_count;
8958: x_msg_data := l_msg_data;
8959: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8960: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8959: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8960: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
8961:
8962: WHEN OTHERS THEN
8963: x_return_status := FND_API.G_RET_STS_ERROR;
8964: x_msg_count := l_msg_count;
8965: x_msg_data := l_msg_data;
8966: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
8967: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
9129: -- Standard Start of API savepoint
9130: SAVEPOINT calculatePayoff;
9131:
9132: -- Standard call to check for call compatibility.
9133: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
9134: l_api_name, G_PKG_NAME)
9135: THEN
9136: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9137: END IF;
9132: -- Standard call to check for call compatibility.
9133: IF NOT FND_API.Compatible_API_Call (l_api_version_number, p_api_version,
9134: l_api_name, G_PKG_NAME)
9135: THEN
9136: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9137: END IF;
9138:
9139: -- Initialize message list IF p_init_msg_list is set to TRUE.
9140: IF FND_API.to_Boolean(p_init_msg_list) THEN
9136: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9137: END IF;
9138:
9139: -- Initialize message list IF p_init_msg_list is set to TRUE.
9140: IF FND_API.to_Boolean(p_init_msg_list) THEN
9141: FND_MSG_PUB.initialize;
9142: END IF;
9143:
9144: -- Initialize API return status to SUCCESS
9141: FND_MSG_PUB.initialize;
9142: END IF;
9143:
9144: -- Initialize API return status to SUCCESS
9145: x_return_status := FND_API.G_RET_STS_SUCCESS;
9146:
9147: --
9148: -- Api body
9149: -- --------------------------------------------------------------------
9165: ,p_reason => p_reason
9166: ,x_return_status => l_return_status
9167: ,x_msg_count => l_msg_count
9168: ,x_msg_data => l_msg_data);
9169: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9170: LogMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, l_api_name || FND_MSG_PUB.Get(p_encoded => 'F'));
9171: RAISE FND_API.G_EXC_ERROR;
9172: END IF;
9173:
9167: ,x_msg_count => l_msg_count
9168: ,x_msg_data => l_msg_data);
9169: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9170: LogMessage(FND_LOG.LEVEL_UNEXPECTED, G_PKG_NAME, l_api_name || FND_MSG_PUB.Get(p_encoded => 'F'));
9171: RAISE FND_API.G_EXC_ERROR;
9172: END IF;
9173:
9174: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - processing late fees');
9175: lns_fee_engine.processLateFees(p_loan_id => p_loan_id
9203: l_fee_basis_tbl(7).fee_basis_amount := l_loan_details.requested_amount + l_loan_details.ADD_REQUESTED_AMOUNT - l_loan_details.funded_amount;
9204: l_fee_basis_tbl(8).fee_basis_name := 'OVERDUE_INT';
9205: l_fee_basis_tbl(8).fee_basis_amount := l_loan_details.UNPAID_INTEREST;
9206:
9207: lns_fee_engine.processFees(p_init_msg_list => FND_API.G_FALSE
9208: ,p_commit => FND_API.G_FALSE
9209: ,p_loan_id => p_loan_id
9210: ,p_installment_number => -1
9211: ,p_fee_basis_tbl => l_fee_basis_tbl
9204: l_fee_basis_tbl(8).fee_basis_name := 'OVERDUE_INT';
9205: l_fee_basis_tbl(8).fee_basis_amount := l_loan_details.UNPAID_INTEREST;
9206:
9207: lns_fee_engine.processFees(p_init_msg_list => FND_API.G_FALSE
9208: ,p_commit => FND_API.G_FALSE
9209: ,p_loan_id => p_loan_id
9210: ,p_installment_number => -1
9211: ,p_fee_basis_tbl => l_fee_basis_tbl
9212: ,p_fee_structures => l_fee_structures
9214: ,x_return_status => l_return_Status
9215: ,x_msg_count => l_msg_count
9216: ,x_msg_data => l_msg_data);
9217:
9218: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
9219: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
9220: FND_MSG_PUB.ADD;
9221: RAISE FND_API.G_EXC_ERROR;
9222: end if;
9217:
9218: if l_return_status <> FND_API.G_RET_STS_SUCCESS then
9219: FND_MESSAGE.SET_NAME('LNS', 'LNS_PROCESS_FEE_ERROR');
9220: FND_MSG_PUB.ADD;
9221: RAISE FND_API.G_EXC_ERROR;
9222: end if;
9223: end if;
9224:
9225: if p_date < l_loan_details.last_interest_accrual then
9437:
9438: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - END');
9439:
9440: EXCEPTION
9441: WHEN FND_API.G_EXC_ERROR THEN
9442: ROLLBACK TO calculatePayoff;
9443: x_return_status := FND_API.G_RET_STS_ERROR;
9444: x_msg_count := l_msg_count;
9445: x_msg_data := l_msg_data;
9439:
9440: EXCEPTION
9441: WHEN FND_API.G_EXC_ERROR THEN
9442: ROLLBACK TO calculatePayoff;
9443: x_return_status := FND_API.G_RET_STS_ERROR;
9444: x_msg_count := l_msg_count;
9445: x_msg_data := l_msg_data;
9446: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
9447: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
9445: x_msg_data := l_msg_data;
9446: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
9447: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
9448:
9449: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9450: ROLLBACK TO calculatePayoff;
9451: x_return_status := FND_API.G_RET_STS_ERROR;
9452: x_msg_count := l_msg_count;
9453: x_msg_data := l_msg_data;
9447: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
9448:
9449: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
9450: ROLLBACK TO calculatePayoff;
9451: x_return_status := FND_API.G_RET_STS_ERROR;
9452: x_msg_count := l_msg_count;
9453: x_msg_data := l_msg_data;
9454: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
9455: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
9455: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
9456:
9457: WHEN OTHERS THEN
9458: ROLLBACK TO calculatePayoff;
9459: x_return_status := FND_API.G_RET_STS_ERROR;
9460: x_msg_count := l_msg_count;
9461: x_msg_data := l_msg_data;
9462: FND_MSG_PUB.Count_And_Get(p_count => x_msg_count, p_data => x_msg_data);
9463: logMessage(FND_LOG.LEVEL_ERROR, G_PKG_NAME, sqlerrm);
9557: else
9558: FND_MESSAGE.Set_Name('LNS', 'LNS_INVALID_INTERVAL');
9559: FND_MESSAGE.SET_TOKEN('INTERVAL',p_frequency);
9560: FND_MSG_PUB.Add;
9561: RAISE FND_API.G_EXC_ERROR;
9562: end if;
9563:
9564: x_days_in_period := p_days_in_year/x_ppy;
9565: logMessage(FND_LOG.LEVEL_STATEMENT, G_PKG_NAME, 'x_ppy = ' || x_ppy);
9978: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - Error: ' || sqlerrm);
9979: --seed this message
9980: -- FND_MESSAGE.Set_Name('LNS', 'LNS_UNABLE_TO_COMPUTE_BALANCE');
9981: -- FND_MSG_PUB.Add;
9982: -- RAISE FND_API.G_EXC_ERROR;
9983:
9984: end getAnnualRate;
9985:
9986: /*=========================================================================
10265: logMessage(FND_LOG.LEVEL_PROCEDURE, G_PKG_NAME, l_api_name || ' - Error: ' || sqlerrm);
10266: --seed this message
10267: FND_MESSAGE.Set_Name('LNS', 'LNS_UNABLE_TO_COMPUTE_BALANCE');
10268: FND_MSG_PUB.Add;
10269: RAISE FND_API.G_EXC_ERROR;
10270: */
10271: end getRemainingBalance;
10272:
10273:
10643: -- validate the from and to Dates
10644: if p_from_date > p_to_date then
10645: FND_MESSAGE.Set_Name('LNS', 'LNS_INVALID_ACTIVE_DATE');
10646: FND_MSG_PUB.Add;
10647: RAISE FND_API.G_EXC_ERROR;
10648: end if;
10649:
10650: l_loan_activities(1).ending_balance := 0;
10651:
10849: -- validate the from and to Dates
10850: if p_from_date > p_to_date then
10851: FND_MESSAGE.Set_Name('LNS', 'LNS_INVALID_ACTIVE_DATE');
10852: FND_MSG_PUB.Add;
10853: RAISE FND_API.G_EXC_ERROR;
10854: end if;
10855:
10856: OPEN c_loan_phase(p_loan_id);
10857: FETCH c_loan_phase INTO l_loan_phase;
10866: -- validate if dates are within the boundaries of loan_start and maturity_dates
10867: if p_to_date > l_loan_details.maturity_date then
10868: FND_MESSAGE.Set_Name('LNS', 'LNS_PAYMENT_START_DATE_ERROR1');
10869: FND_MSG_PUB.Add;
10870: RAISE FND_API.G_EXC_ERROR;
10871: end if;
10872:
10873: if p_from_date < l_loan_details.loan_start_date then
10874: FND_MESSAGE.Set_Name('LNS', 'LNS_PAYMENT_START_DATE_ERROR2');
10872:
10873: if p_from_date < l_loan_details.loan_start_date then
10874: FND_MESSAGE.Set_Name('LNS', 'LNS_PAYMENT_START_DATE_ERROR2');
10875: FND_MSG_PUB.Add;
10876: RAISE FND_API.G_EXC_ERROR;
10877: end if;
10878:
10879: -- get all the balance activities on the loan
10880: OPEN c_balance_history(p_loan_id);