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()); boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
responseParameters.addAll(Arrays.asList("productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions", responseParameters.addAll(Arrays.asList("productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions")); "repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions",
"chargeTemplate"));
// tempate related // tempate related
Collection<LoanProductLookup> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup(); Collection<LoanProductLookup> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
@@ -146,6 +147,7 @@ public class LoansApiResource {
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies(); Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges(); Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges();
ChargeData chargeTemplate = this.chargeReadPlatformService.retrieveLoanChargeTemplate();
LoanBasicDetailsData loanBasicDetails = this.loanReadPlatformService.retrieveClientAndProductDetails(clientId, productId); LoanBasicDetailsData loanBasicDetails = this.loanReadPlatformService.retrieveClientAndProductDetails(clientId, productId);
if (loanBasicDetails.getCharges() != null) { if (loanBasicDetails.getCharges() != null) {
@@ -166,7 +168,7 @@ public class LoansApiResource {
final LoanAccountData newLoanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, null, null, null, null, charges, final LoanAccountData newLoanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, null, null, null, null, charges,
productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions, transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, allowedLoanOfficers); amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers);
return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, newLoanAccount); return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, newLoanAccount);
} }
@@ -240,6 +242,7 @@ public class LoansApiResource {
Collection<EnumOptionData> interestCalculationPeriodTypeOptions = new ArrayList<EnumOptionData>(); Collection<EnumOptionData> interestCalculationPeriodTypeOptions = new ArrayList<EnumOptionData>();
Collection<FundData> fundOptions = new ArrayList<FundData>(); Collection<FundData> fundOptions = new ArrayList<FundData>();
Collection<ChargeData> chargeOptions = null; Collection<ChargeData> chargeOptions = null;
ChargeData chargeTemplate = null;
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters()); final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
if(template) { if(template) {
@@ -274,7 +277,7 @@ public class LoansApiResource {
final LoanAccountData loanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, summary, repaymentSchedule, loanRepayments, permissions, charges, final LoanAccountData loanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, summary, repaymentSchedule, loanRepayments, permissions, charges,
productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions, productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions, transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, allowedLoanOfficers); amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers);
return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, loanAccount); return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, loanAccount);
} }
@@ -68,6 +68,7 @@ public class LoanAccountData {
private final Collection<EnumOptionData> interestCalculationPeriodTypeOptions; private final Collection<EnumOptionData> interestCalculationPeriodTypeOptions;
private final Collection<FundData> fundOptions; private final Collection<FundData> fundOptions;
private final Collection<ChargeData> chargeOptions; private final Collection<ChargeData> chargeOptions;
private final ChargeData chargeTemplate;
private final Collection<StaffData> loanOfficerOptions; private final Collection<StaffData> loanOfficerOptions;
public LoanAccountData( public LoanAccountData(
@@ -88,6 +89,7 @@ public class LoanAccountData {
final Collection<EnumOptionData> interestCalculationPeriodTypeOptions, final Collection<EnumOptionData> interestCalculationPeriodTypeOptions,
final Collection<FundData> fundOptions, final Collection<FundData> fundOptions,
final Collection<ChargeData> chargeOptions, final Collection<ChargeData> chargeOptions,
final ChargeData chargeTemplate,
final Collection<StaffData> loanOfficerOptions) { final Collection<StaffData> loanOfficerOptions) {
this.summary = summary; this.summary = summary;
this.repaymentSchedule = repaymentSchedule; this.repaymentSchedule = repaymentSchedule;
@@ -104,6 +106,7 @@ public class LoanAccountData {
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions; this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
this.fundOptions = fundOptions; this.fundOptions = fundOptions;
this.chargeOptions = chargeOptions; this.chargeOptions = chargeOptions;
this.chargeTemplate = chargeTemplate;
this.loanOfficerOptions = loanOfficerOptions; this.loanOfficerOptions = loanOfficerOptions;
if (convenienceDataRequired) { if (convenienceDataRequired) {
@@ -151,7 +151,7 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ
"loanRepayments", "permissions", "convenienceData", "charges", "loanRepayments", "permissions", "convenienceData", "charges",
"productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions", "productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions", "repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions",
"loanOfficerId", "loanOfficerName", "loanOfficerOptions")); "loanOfficerId", "loanOfficerName", "loanOfficerOptions", "chargeTemplate"));
private static final Set<String> LOAN_TRANSACTION_DATA_PARAMETERS = new HashSet<String>( private static final Set<String> LOAN_TRANSACTION_DATA_PARAMETERS = new HashSet<String>(
Arrays.asList("id", "transactionType", "date", "principal", Arrays.asList("id", "transactionType", "date", "principal",
@@ -17,4 +17,6 @@ public interface ChargeReadPlatformService {
Collection<ChargeData> retrieveLoanProductCharges(Long loanProductId); Collection<ChargeData> retrieveLoanProductCharges(Long loanProductId);
Collection<ChargeData> retrieveLoanCharges(Long loanId); 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()}); 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> { private static final class ChargeMapper implements RowMapper<ChargeData> {
public String chargeSchema(){ public String chargeSchema(){