MIFOSX-53 Extended loans template api.

This commit is contained in:
Michal Dudzinski
2012-09-11 14:23:40 +02:00
parent 587cb496b4
commit 14ecbcbb7e
5 changed files with 30 additions and 5 deletions
@@ -130,7 +130,8 @@ public class LoansApiResource {
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
responseParameters.addAll(Arrays.asList("productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions",
"chargeTemplate"));
// tempate related
Collection<LoanProductLookup> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
@@ -146,6 +147,7 @@ public class LoansApiResource {
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges();
ChargeData chargeTemplate = this.chargeReadPlatformService.retrieveLoanChargeTemplate();
LoanBasicDetailsData loanBasicDetails = this.loanReadPlatformService.retrieveClientAndProductDetails(clientId, productId);
if (loanBasicDetails.getCharges() != null) {
@@ -166,7 +168,7 @@ public class LoansApiResource {
final LoanAccountData newLoanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, null, null, null, null, charges,
productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, allowedLoanOfficers);
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers);
return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, newLoanAccount);
}
@@ -240,7 +242,8 @@ public class LoansApiResource {
Collection<EnumOptionData> interestCalculationPeriodTypeOptions = new ArrayList<EnumOptionData>();
Collection<FundData> fundOptions = new ArrayList<FundData>();
Collection<ChargeData> chargeOptions = null;
ChargeData chargeTemplate = null;
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
if(template) {
responseParameters.addAll(Arrays.asList("productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
@@ -274,7 +277,7 @@ public class LoansApiResource {
final LoanAccountData loanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, summary, repaymentSchedule, loanRepayments, permissions, charges,
productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, allowedLoanOfficers);
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers);
return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, loanAccount);
}
@@ -68,6 +68,7 @@ public class LoanAccountData {
private final Collection<EnumOptionData> interestCalculationPeriodTypeOptions;
private final Collection<FundData> fundOptions;
private final Collection<ChargeData> chargeOptions;
private final ChargeData chargeTemplate;
private final Collection<StaffData> loanOfficerOptions;
public LoanAccountData(
@@ -88,6 +89,7 @@ public class LoanAccountData {
final Collection<EnumOptionData> interestCalculationPeriodTypeOptions,
final Collection<FundData> fundOptions,
final Collection<ChargeData> chargeOptions,
final ChargeData chargeTemplate,
final Collection<StaffData> loanOfficerOptions) {
this.summary = summary;
this.repaymentSchedule = repaymentSchedule;
@@ -104,6 +106,7 @@ public class LoanAccountData {
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
this.fundOptions = fundOptions;
this.chargeOptions = chargeOptions;
this.chargeTemplate = chargeTemplate;
this.loanOfficerOptions = loanOfficerOptions;
if (convenienceDataRequired) {
@@ -151,7 +151,7 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ
"loanRepayments", "permissions", "convenienceData", "charges",
"productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions",
"loanOfficerId", "loanOfficerName", "loanOfficerOptions"));
"loanOfficerId", "loanOfficerName", "loanOfficerOptions", "chargeTemplate"));
private static final Set<String> LOAN_TRANSACTION_DATA_PARAMETERS = new HashSet<String>(
Arrays.asList("id", "transactionType", "date", "principal",
@@ -17,4 +17,6 @@ public interface ChargeReadPlatformService {
Collection<ChargeData> retrieveLoanProductCharges(Long loanProductId);
Collection<ChargeData> retrieveLoanCharges(Long loanId);
ChargeData retrieveLoanChargeTemplate();
}
@@ -127,6 +127,23 @@ public class ChargeReadPlatformServiceImpl implements ChargeReadPlatformService
return this.jdbcTemplate.query(sql, rm, new Object[] {ChargeAppliesTo.LOAN.getValue()});
}
@Override
public ChargeData retrieveLoanChargeTemplate() {
this.context.authenticatedUser();
List<EnumOptionData> allowedChargeCalculationTypeOptions = Arrays.asList(
chargeCalculationType(ChargeCalculationType.FLAT),
chargeCalculationType(ChargeCalculationType.PERCENT_OF_AMOUNT),
chargeCalculationType(ChargeCalculationType.PERCENT_OF_AMOUNT_AND_INTEREST),
chargeCalculationType(ChargeCalculationType.PERCENT_OF_INTEREST)
);
List<EnumOptionData> allowedChargeTimeOptions = Arrays.asList(chargeTimeType(ChargeTimeType.DISBURSEMENT));
return ChargeData.template(null, allowedChargeCalculationTypeOptions,
null, allowedChargeTimeOptions);
}
private static final class ChargeMapper implements RowMapper<ChargeData> {
public String chargeSchema(){