remove warnings for unused code, formating in savings area.
This commit is contained in:
+2
-9
@@ -24,12 +24,9 @@ import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.UriInfo;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.mifosplatform.commands.domain.CommandWrapper;
|
||||
import org.mifosplatform.commands.service.CommandWrapperBuilder;
|
||||
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
|
||||
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
|
||||
import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
|
||||
import org.mifosplatform.infrastructure.core.exception.UnrecognizedQueryParamException;
|
||||
import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
|
||||
import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer;
|
||||
import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext;
|
||||
@@ -56,7 +53,7 @@ public class GroupsApiResource {
|
||||
"clientMembers", "allowedClients", "allowedOffices"));
|
||||
|
||||
private final PlatformSecurityContext context;
|
||||
private GroupReadPlatformService groupReadPlatformService;
|
||||
private final GroupReadPlatformService groupReadPlatformService;
|
||||
private final GroupWritePlatformService groupWritePlatformService;
|
||||
private final ClientReadPlatformService clientReadPlatformService;
|
||||
private final OfficeReadPlatformService officeReadPlatformService;
|
||||
@@ -240,7 +237,7 @@ public class GroupsApiResource {
|
||||
// 'g.' preffix because of ERROR 1052 (23000): Column 'column_name' in where
|
||||
// clause is ambiguous
|
||||
// caused by the same name of columns in m_office and m_group tables
|
||||
private String getGroupExtraCriteria(String sqlSearch, Long officeId, String externalId, String name, String hierarchy) {
|
||||
private String getGroupExtraCriteria(String sqlSearch, final Long officeId, final String externalId, final String name, final String hierarchy) {
|
||||
|
||||
String extraCriteria = "";
|
||||
|
||||
@@ -272,8 +269,4 @@ public class GroupsApiResource {
|
||||
|
||||
return extraCriteria;
|
||||
}
|
||||
|
||||
private boolean is(final String commandParam, final String commandValue) {
|
||||
return StringUtils.isNotBlank(commandParam) && commandParam.trim().equalsIgnoreCase(commandValue);
|
||||
}
|
||||
}
|
||||
@@ -27,12 +27,10 @@ import org.springframework.data.jpa.domain.AbstractPersistable;
|
||||
@Table(name = "m_group")
|
||||
public class Group extends AbstractPersistable<Long> {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "office_id", nullable = false)
|
||||
private Office office;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "loan_officer_id", nullable = true)
|
||||
private Staff loanOfficer;
|
||||
@@ -56,11 +54,11 @@ public class Group extends AbstractPersistable<Long> {
|
||||
this.clientMembers = new HashSet<Client>();
|
||||
}
|
||||
|
||||
public static Group newGroup(Office office, Staff loanOfficer , String name, String externalId, Set<Client> clientMembers) {
|
||||
public static Group newGroup(final Office office, final Staff loanOfficer , final String name, final String externalId, final Set<Client> clientMembers) {
|
||||
return new Group(office, loanOfficer , name, externalId, clientMembers);
|
||||
}
|
||||
|
||||
public Group(Office office, Staff loanOfficer , String name, String externalId, Set<Client> clientMembers) {
|
||||
public Group(final Office office, final Staff loanOfficer , final String name, final String externalId, final Set<Client> clientMembers) {
|
||||
this.office = office;
|
||||
this.loanOfficer = loanOfficer;
|
||||
if (StringUtils.isNotBlank(name)) {
|
||||
@@ -114,7 +112,7 @@ public class Group extends AbstractPersistable<Long> {
|
||||
}
|
||||
}
|
||||
|
||||
public void unassigLoanOfficer(GroupCommand command) {
|
||||
public void unassigLoanOfficer(final GroupCommand command) {
|
||||
if (command.isLoanOfficerChanged()) {
|
||||
this.loanOfficer = null;
|
||||
}
|
||||
|
||||
+26
-25
@@ -78,16 +78,18 @@ public class SavingAccountData {
|
||||
return new SavingAccountData(clientId, clientDisplayName);
|
||||
}
|
||||
|
||||
public SavingAccountData(Long id, EnumOptionData status, String externalId, Long clientId, String clientName, Long productId,
|
||||
String productName, EnumOptionData productType, CurrencyData currencyData, BigDecimal savingsDepositAmountPerPeriod,
|
||||
EnumOptionData savingsFrequencyType, BigDecimal totalDepositAmount, BigDecimal recurringInterestRate,
|
||||
BigDecimal savingInterestRate, EnumOptionData interestType, EnumOptionData interestCalculationMethod, Integer tenure,
|
||||
EnumOptionData tenureType, LocalDate projectedCommencementDate, LocalDate actualCommencementDate, LocalDate maturesOnDate,
|
||||
BigDecimal projectedInterestAccuredOnMaturity, BigDecimal actualInterestAccured, BigDecimal projectedMaturityAmount,
|
||||
BigDecimal actualMaturityAmount, boolean preClosureAllowed, BigDecimal preClosureInterestRate, LocalDate withdrawnonDate,
|
||||
LocalDate rejectedonDate, LocalDate closedonDate, boolean isLockinPeriodAllowed, Integer lockinPeriod,
|
||||
EnumOptionData lockinPeriodType, Integer depositEvery, BigDecimal outstandingAmount, Integer interestPostEvery,
|
||||
EnumOptionData interestPostFrequency) {
|
||||
public SavingAccountData(final Long id, final EnumOptionData status, final String externalId, final Long clientId,
|
||||
final String clientName, final Long productId, final String productName, final EnumOptionData productType,
|
||||
final CurrencyData currencyData, final BigDecimal savingsDepositAmountPerPeriod, final EnumOptionData savingsFrequencyType,
|
||||
final BigDecimal totalDepositAmount, final BigDecimal recurringInterestRate, final BigDecimal savingInterestRate,
|
||||
final EnumOptionData interestType, final EnumOptionData interestCalculationMethod, final Integer tenure,
|
||||
final EnumOptionData tenureType, final LocalDate projectedCommencementDate, final LocalDate actualCommencementDate,
|
||||
final LocalDate maturesOnDate, final BigDecimal projectedInterestAccuredOnMaturity, final BigDecimal actualInterestAccured,
|
||||
final BigDecimal projectedMaturityAmount, final BigDecimal actualMaturityAmount, final boolean preClosureAllowed,
|
||||
final BigDecimal preClosureInterestRate, final LocalDate withdrawnonDate, final LocalDate rejectedonDate,
|
||||
final LocalDate closedonDate, final boolean isLockinPeriodAllowed, final Integer lockinPeriod,
|
||||
final EnumOptionData lockinPeriodType, final Integer depositEvery, final BigDecimal outstandingAmount,
|
||||
final Integer interestPostEvery, final EnumOptionData interestPostFrequency) {
|
||||
this.id = id;
|
||||
this.status = status;
|
||||
this.externalId = externalId;
|
||||
@@ -140,7 +142,7 @@ public class SavingAccountData {
|
||||
this.interestPostFrequency = interestPostFrequency;
|
||||
}
|
||||
|
||||
public SavingAccountData(Long clientId, String clientName) {
|
||||
public SavingAccountData(final Long clientId, final String clientName) {
|
||||
this.id = null;
|
||||
this.status = null;
|
||||
this.externalId = null;
|
||||
@@ -193,11 +195,11 @@ public class SavingAccountData {
|
||||
this.interestPostFrequency = null;
|
||||
}
|
||||
|
||||
public SavingAccountData(SavingAccountData account, Collection<SavingProductLookup> productOptions,
|
||||
Collection<CurrencyData> currencyOptions, List<EnumOptionData> savingsProductTypeOptions,
|
||||
List<EnumOptionData> tenureTypeOptions, List<EnumOptionData> savingFrequencyOptions,
|
||||
List<EnumOptionData> savingsInterestTypeOptions, List<EnumOptionData> lockinPeriodTypeOptions,
|
||||
List<EnumOptionData> interestCalculationOptions, BigDecimal dueAmount) {
|
||||
public SavingAccountData(final SavingAccountData account, final Collection<SavingProductLookup> productOptions,
|
||||
final Collection<CurrencyData> currencyOptions, final List<EnumOptionData> savingsProductTypeOptions,
|
||||
final List<EnumOptionData> tenureTypeOptions, final List<EnumOptionData> savingFrequencyOptions,
|
||||
final List<EnumOptionData> savingsInterestTypeOptions, final List<EnumOptionData> lockinPeriodTypeOptions,
|
||||
final List<EnumOptionData> interestCalculationOptions, final BigDecimal dueAmount) {
|
||||
this.id = account.id;
|
||||
this.status = account.status;
|
||||
this.externalId = account.externalId;
|
||||
@@ -252,12 +254,11 @@ public class SavingAccountData {
|
||||
this.interestPostFrequency = account.interestPostFrequency;
|
||||
}
|
||||
|
||||
// FIXME - Madhukar - unused variables been passed into construction - why?
|
||||
public SavingAccountData(Long clientId, String clientName, Long productId, String productName, CurrencyData currency,
|
||||
BigDecimal interestRate, BigDecimal savingsDepositAmountPerPeriod, EnumOptionData productType, EnumOptionData tenureType,
|
||||
Integer tenure, EnumOptionData savingsFrequencyType, EnumOptionData interestType, EnumOptionData interestCalculationMethod,
|
||||
BigDecimal minimumBalanceForWithdrawal, boolean partialDepositAllowed, boolean lockinPeriodAllowed, Integer lockinPeriod,
|
||||
EnumOptionData lockinPeriodType, Integer depositEvery) {
|
||||
public SavingAccountData(final Long clientId, final String clientName, final Long productId, final String productName,
|
||||
final CurrencyData currency, final BigDecimal interestRate, final BigDecimal savingsDepositAmountPerPeriod,
|
||||
final EnumOptionData productType, final EnumOptionData tenureType, final Integer tenure,
|
||||
final EnumOptionData savingsFrequencyType, final EnumOptionData interestType, final EnumOptionData interestCalculationMethod,
|
||||
final boolean lockinPeriodAllowed, final Integer lockinPeriod, final EnumOptionData lockinPeriodType, final Integer depositEvery) {
|
||||
this.id = null;
|
||||
this.status = null;
|
||||
this.externalId = null;
|
||||
@@ -310,7 +311,7 @@ public class SavingAccountData {
|
||||
this.interestPostFrequency = savingsFrequencyType;
|
||||
}
|
||||
|
||||
public SavingAccountData(SavingAccountData account, SavingPermissionData permissions) {
|
||||
public SavingAccountData(final SavingAccountData account, final SavingPermissionData permissions) {
|
||||
this.id = account.id;
|
||||
this.status = account.status;
|
||||
this.externalId = account.externalId;
|
||||
@@ -364,7 +365,7 @@ public class SavingAccountData {
|
||||
this.interestPostFrequency = account.interestPostFrequency;
|
||||
}
|
||||
|
||||
public SavingAccountData(SavingAccountData account, SavingScheduleData savingScheduleData) {
|
||||
public SavingAccountData(final SavingAccountData account, final SavingScheduleData savingScheduleData) {
|
||||
this.id = account.id;
|
||||
this.status = account.status;
|
||||
this.externalId = account.externalId;
|
||||
@@ -418,7 +419,7 @@ public class SavingAccountData {
|
||||
this.interestPostFrequency = account.interestPostFrequency;
|
||||
}
|
||||
|
||||
public SavingAccountData(SavingAccountData account, Collection<SavingAccountTransactionsData> transactions) {
|
||||
public SavingAccountData(final SavingAccountData account, final Collection<SavingAccountTransactionsData> transactions) {
|
||||
this.id = account.id;
|
||||
this.status = account.status;
|
||||
this.externalId = account.externalId;
|
||||
|
||||
+20
-20
@@ -9,11 +9,9 @@ import java.math.BigDecimal;
|
||||
import java.math.MathContext;
|
||||
import java.math.RoundingMode;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.mifosplatform.organisation.monetary.domain.Money;
|
||||
import org.mifosplatform.portfolio.savingsaccountproduct.domain.SavingFrequencyType;
|
||||
import org.mifosplatform.portfolio.savingsaccountproduct.domain.SavingInterestCalculationMethod;
|
||||
import org.mifosplatform.portfolio.savingsdepositproduct.domain.TenureTypeEnum;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
@@ -21,30 +19,28 @@ public class ReccuringDepositInterestCalculator {
|
||||
|
||||
private final Integer monthsInYear = 12;
|
||||
|
||||
// FIXME - MADHUKAR - Are the unused field here needed?
|
||||
public Money calculateInterestOnMaturityFor(Money savingsDepositPerPeriod, Integer tenure, BigDecimal reccuringInterestRate,
|
||||
LocalDate commencementDate, TenureTypeEnum tenureTypeEnum, SavingFrequencyType savingFrequencyType,
|
||||
SavingInterestCalculationMethod savingInterestCalculationMethod, Integer depositEvery) {
|
||||
public Money calculateInterestOnMaturityFor(final Money savingsDepositPerPeriod, final Integer tenure,
|
||||
final BigDecimal reccuringInterestRate, final SavingFrequencyType savingFrequencyType,
|
||||
final SavingInterestCalculationMethod savingInterestCalculationMethod, Integer depositEvery) {
|
||||
|
||||
BigDecimal finalAmount = BigDecimal.ZERO;
|
||||
MathContext mc = new MathContext(8, RoundingMode.HALF_EVEN);
|
||||
|
||||
|
||||
BigDecimal interestRateAsFraction = reccuringInterestRate.divide(BigDecimal.valueOf(100), mc);
|
||||
Integer noofTimesInterestCompoundPerYear = determineIntValue(savingFrequencyType);
|
||||
|
||||
BigDecimal interestRatePerPeriod = BigDecimal.valueOf(interestRateAsFraction.doubleValue()
|
||||
/ noofTimesInterestCompoundPerYear.doubleValue());
|
||||
Integer noOfTimestobeCalculated = tenure/depositEvery;
|
||||
Integer noOfTimestobeCalculated = tenure / depositEvery;
|
||||
|
||||
if(savingInterestCalculationMethod.isAverageBalance()){
|
||||
if (savingInterestCalculationMethod.isAverageBalance()) {
|
||||
|
||||
BigDecimal termAmount = BigDecimal.ZERO;
|
||||
BigDecimal totalInterest = BigDecimal.ZERO;
|
||||
BigDecimal closingBalance = BigDecimal.ZERO;
|
||||
BigDecimal amountPerPeriod = savingsDepositPerPeriod.getAmount();
|
||||
Integer depositEveryOriginalValue = depositEvery;
|
||||
BigDecimal amountPermonth = BigDecimal.valueOf(amountPerPeriod.doubleValue()/depositEvery.doubleValue());
|
||||
BigDecimal amountPermonth = BigDecimal.valueOf(amountPerPeriod.doubleValue() / depositEvery.doubleValue());
|
||||
|
||||
while (noOfTimestobeCalculated > 0) {
|
||||
while (depositEvery > 0) {
|
||||
@@ -53,8 +49,9 @@ public class ReccuringDepositInterestCalculator {
|
||||
depositEvery--;
|
||||
}
|
||||
|
||||
BigDecimal averageAmount = BigDecimal.valueOf(termAmount.doubleValue()/depositEveryOriginalValue.doubleValue());
|
||||
BigDecimal interestRatePerTerm = BigDecimal.valueOf(interestRateAsFraction.doubleValue()/monthsInYear.doubleValue()*depositEveryOriginalValue.doubleValue());
|
||||
BigDecimal averageAmount = BigDecimal.valueOf(termAmount.doubleValue() / depositEveryOriginalValue.doubleValue());
|
||||
BigDecimal interestRatePerTerm = BigDecimal.valueOf(interestRateAsFraction.doubleValue() / monthsInYear.doubleValue()
|
||||
* depositEveryOriginalValue.doubleValue());
|
||||
BigDecimal interestperTerm = averageAmount.multiply(interestRatePerTerm);
|
||||
totalInterest = totalInterest.add(interestperTerm);
|
||||
depositEvery = depositEveryOriginalValue;
|
||||
@@ -63,7 +60,7 @@ public class ReccuringDepositInterestCalculator {
|
||||
}
|
||||
finalAmount = closingBalance.add(totalInterest);
|
||||
|
||||
} else if(savingInterestCalculationMethod.isMonthlyCollection()){
|
||||
} else if (savingInterestCalculationMethod.isMonthlyCollection()) {
|
||||
/*
|
||||
* // Assuming tenure in months // see
|
||||
* http://www.onemint.com/2012/04/03/
|
||||
@@ -71,9 +68,10 @@ public class ReccuringDepositInterestCalculator {
|
||||
*
|
||||
* A=P(1+r/n)^nt
|
||||
*
|
||||
* A = final amount P = principal amount (initial investment) r = annual
|
||||
* nominal interest rate (as a decimal, not in percentage) n = number of
|
||||
* times the interest is compounded per year t = number of years
|
||||
* A = final amount P = principal amount (initial investment) r =
|
||||
* annual nominal interest rate (as a decimal, not in percentage) n
|
||||
* = number of times the interest is compounded per year t = number
|
||||
* of years
|
||||
*/
|
||||
|
||||
BigDecimal onePlusInterestRatePerPeriod = BigDecimal.ONE.add(interestRatePerPeriod);
|
||||
@@ -84,17 +82,19 @@ public class ReccuringDepositInterestCalculator {
|
||||
while (noOfTimestobeCalculated > 0) {
|
||||
monthsExpressedInYears = BigDecimal.valueOf(tempTenure.doubleValue() / monthsInYear.doubleValue());
|
||||
timeforOneCalculationPeriod = BigDecimal.valueOf(noofTimesInterestCompoundPerYear * monthsExpressedInYears.doubleValue());
|
||||
amountPerPeriod = savingsDepositPerPeriod.getAmount().multiply(
|
||||
BigDecimal.valueOf(Math.pow(onePlusInterestRatePerPeriod.doubleValue(), timeforOneCalculationPeriod.doubleValue())));
|
||||
amountPerPeriod = savingsDepositPerPeriod.getAmount()
|
||||
.multiply(
|
||||
BigDecimal.valueOf(Math.pow(onePlusInterestRatePerPeriod.doubleValue(),
|
||||
timeforOneCalculationPeriod.doubleValue())));
|
||||
finalAmount = finalAmount.add(amountPerPeriod);
|
||||
noOfTimestobeCalculated--;
|
||||
tempTenure = tempTenure-depositEvery;
|
||||
tempTenure = tempTenure - depositEvery;
|
||||
}
|
||||
}
|
||||
return Money.of(savingsDepositPerPeriod.getCurrency(), finalAmount);
|
||||
}
|
||||
|
||||
private Integer determineIntValue(SavingFrequencyType frequencyType){
|
||||
private Integer determineIntValue(final SavingFrequencyType frequencyType) {
|
||||
Integer noofTimesInterestCompoundPerYear = Integer.valueOf(0);
|
||||
switch (frequencyType) {
|
||||
case MONTHLY:
|
||||
|
||||
+40
-36
@@ -131,7 +131,7 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
private BigDecimal outstandingAmount;
|
||||
|
||||
@Column(name = "is_preclosure_allowed", nullable = false)
|
||||
private boolean preClosureAllowed = false;
|
||||
private final boolean preClosureAllowed = false;
|
||||
|
||||
@Column(name = "is_deleted", nullable = false)
|
||||
private boolean deleted = false;
|
||||
@@ -197,20 +197,20 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
//
|
||||
}
|
||||
|
||||
public static SavingAccount openNew(Client client, SavingProduct product, String externalId, Money savingsDeposit,
|
||||
BigDecimal reccuringInterestRate, BigDecimal savingInterestRate, Integer tenure, LocalDate commencementDate,
|
||||
TenureTypeEnum tenureTypeEnum, SavingProductType savingProductType, SavingFrequencyType savingFrequencyType,
|
||||
SavingsInterestType interestType, SavingInterestCalculationMethod savingInterestCalculationMethod,
|
||||
boolean isLockinPeriodAllowed, Integer lockinPeriod, PeriodFrequencyType lockinPeriodType,
|
||||
ReccuringDepositInterestCalculator reccuringDepositInterestCalculator,
|
||||
final DepositLifecycleStateMachine lifecycleStateMachine, Integer depositEvery, Integer interestPostEvery,
|
||||
Integer interestPostFrequency) {
|
||||
public static SavingAccount openNew(final Client client, final SavingProduct product, final String externalId,
|
||||
final Money savingsDeposit, final BigDecimal reccuringInterestRate, final BigDecimal savingInterestRate, final Integer tenure,
|
||||
final LocalDate commencementDate, final TenureTypeEnum tenureTypeEnum, final SavingProductType savingProductType,
|
||||
final SavingFrequencyType savingFrequencyType, final SavingsInterestType interestType,
|
||||
final SavingInterestCalculationMethod savingInterestCalculationMethod, final boolean isLockinPeriodAllowed,
|
||||
final Integer lockinPeriod, final PeriodFrequencyType lockinPeriodType,
|
||||
final ReccuringDepositInterestCalculator reccuringDepositInterestCalculator,
|
||||
final DepositLifecycleStateMachine lifecycleStateMachine, final Integer depositEvery, final Integer interestPostEvery,
|
||||
final Integer interestPostFrequency) {
|
||||
|
||||
Money futureValueOnMaturity = null;
|
||||
if (savingProductType.isReccuring() && tenureTypeEnum.isFixedPeriod()) {
|
||||
futureValueOnMaturity = reccuringDepositInterestCalculator.calculateInterestOnMaturityFor(savingsDeposit, tenure,
|
||||
reccuringInterestRate, commencementDate, tenureTypeEnum, savingFrequencyType, savingInterestCalculationMethod,
|
||||
depositEvery);
|
||||
reccuringInterestRate, savingFrequencyType, savingInterestCalculationMethod, depositEvery);
|
||||
} else if (savingProductType.isReccuring() && tenureTypeEnum.isPerpetual()) {
|
||||
futureValueOnMaturity = savingsDeposit;
|
||||
} else {
|
||||
@@ -223,12 +223,14 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
interestPostEvery, interestPostFrequency);
|
||||
}
|
||||
|
||||
public SavingAccount(Client client, String externalId, SavingProduct product, Money savingsDeposit, BigDecimal reccuringInterestRate,
|
||||
BigDecimal savingInterestRate, Integer tenure, LocalDate commencementDate, TenureTypeEnum tenureTypeEnum,
|
||||
SavingProductType savingProductType, SavingFrequencyType savingFrequencyType, SavingsInterestType interestType,
|
||||
SavingInterestCalculationMethod savingInterestCalculationMethod, boolean isLockinPeriodAllowed, Integer lockinPeriod,
|
||||
PeriodFrequencyType lockinPeriodType, Money futureValueOnMaturity, final DepositLifecycleStateMachine lifecycleStateMachine,
|
||||
Integer payEvery, Integer interestPostEvery, Integer interestPostFrequency) {
|
||||
public SavingAccount(final Client client, final String externalId, final SavingProduct product, final Money savingsDeposit,
|
||||
final BigDecimal reccuringInterestRate, final BigDecimal savingInterestRate, final Integer tenure,
|
||||
final LocalDate commencementDate, final TenureTypeEnum tenureTypeEnum, final SavingProductType savingProductType,
|
||||
final SavingFrequencyType savingFrequencyType, final SavingsInterestType interestType,
|
||||
final SavingInterestCalculationMethod savingInterestCalculationMethod, final boolean isLockinPeriodAllowed,
|
||||
final Integer lockinPeriod, final PeriodFrequencyType lockinPeriodType, final Money futureValueOnMaturity,
|
||||
final DepositLifecycleStateMachine lifecycleStateMachine, final Integer payEvery, final Integer interestPostEvery,
|
||||
final Integer interestPostFrequency) {
|
||||
|
||||
DepositAccountStatus from = null;
|
||||
if (accountStatus != null) {
|
||||
@@ -274,18 +276,18 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.interestPostFrequency = interestPostFrequency;
|
||||
}
|
||||
|
||||
public void modifyAccount(SavingProduct product, String externalId, Money savingsDeposit, BigDecimal reccuringInterestRate,
|
||||
BigDecimal savingInterestRate, Integer tenure, LocalDate commencementDate, TenureTypeEnum tenureTypeEnum,
|
||||
SavingProductType savingProductType, SavingFrequencyType savingFrequencyType,
|
||||
SavingInterestCalculationMethod savingInterestCalculationMethod, boolean isLockinPeriodAllowed, Integer lockinPeriod,
|
||||
PeriodFrequencyType lockinPeriodType, ReccuringDepositInterestCalculator reccuringDepositInterestCalculator, Integer payEvery,
|
||||
SavingsInterestType interestType, Integer interestPostEvery, Integer interestPostFrequency) {
|
||||
public void modifyAccount(final SavingProduct product, final String externalId, final Money savingsDeposit,
|
||||
final BigDecimal reccuringInterestRate, final BigDecimal savingInterestRate, final Integer tenure,
|
||||
final LocalDate commencementDate, final TenureTypeEnum tenureTypeEnum, final SavingProductType savingProductType,
|
||||
final SavingFrequencyType savingFrequencyType, final SavingInterestCalculationMethod savingInterestCalculationMethod,
|
||||
final boolean isLockinPeriodAllowed, final Integer lockinPeriod, final PeriodFrequencyType lockinPeriodType,
|
||||
final ReccuringDepositInterestCalculator reccuringDepositInterestCalculator, final Integer payEvery,
|
||||
final SavingsInterestType interestType, final Integer interestPostEvery, final Integer interestPostFrequency) {
|
||||
|
||||
Money futureValueOnMaturity = null;
|
||||
if (savingProductType.isReccuring() && tenureTypeEnum.isFixedPeriod()) {
|
||||
futureValueOnMaturity = reccuringDepositInterestCalculator
|
||||
.calculateInterestOnMaturityFor(savingsDeposit, tenure, reccuringInterestRate, commencementDate, tenureTypeEnum,
|
||||
savingFrequencyType, savingInterestCalculationMethod, payEvery);
|
||||
futureValueOnMaturity = reccuringDepositInterestCalculator.calculateInterestOnMaturityFor(savingsDeposit, tenure,
|
||||
reccuringInterestRate, savingFrequencyType, savingInterestCalculationMethod, payEvery);
|
||||
} else if (savingProductType.isReccuring() && tenureTypeEnum.isPerpetual()) {
|
||||
futureValueOnMaturity = savingsDeposit;
|
||||
} else {
|
||||
@@ -432,7 +434,7 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.savingScheduleInstallments.add(installment);
|
||||
}
|
||||
|
||||
public void reject(LocalDate rejectedOn, DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
public void reject(final LocalDate rejectedOn, final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
|
||||
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(DepositAccountEvent.DEPOSIT_REJECTED,
|
||||
DepositAccountStatus.fromInt(this.accountStatus));
|
||||
@@ -467,7 +469,7 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void withdrawnByApplicant(LocalDate withdrawnOn, DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
public void withdrawnByApplicant(final LocalDate withdrawnOn, final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
|
||||
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(DepositAccountEvent.DEPOSIT_WITHDRAWN,
|
||||
DepositAccountStatus.fromInt(this.accountStatus));
|
||||
@@ -493,7 +495,7 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
}
|
||||
}
|
||||
|
||||
public void undoSavingAccountApproval(DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
public void undoSavingAccountApproval(final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(DepositAccountEvent.DEPOSIT_APPROVAL_UNDO,
|
||||
DepositAccountStatus.fromInt(this.accountStatus));
|
||||
this.accountStatus = statusEnum.getValue();
|
||||
@@ -501,10 +503,12 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.closedOnDate = new Date();
|
||||
}
|
||||
|
||||
public void approveSavingAccount(LocalDate approvalDate, BigDecimal savingsDepositAmountPerPeriod, BigDecimal recurringInterestRate,
|
||||
BigDecimal savingInterestRate, Integer interestType, Integer tenure, Integer tenureType, Integer frequency, Integer payEvery,
|
||||
DepositLifecycleStateMachine depositLifecycleStateMachine,
|
||||
ReccuringDepositInterestCalculator reccuringDepositInterestCalculator, Integer interestPostEvery, Integer interestPostFrequency) {
|
||||
public void approveSavingAccount(final LocalDate approvalDate, final BigDecimal savingsDepositAmountPerPeriod,
|
||||
final BigDecimal recurringInterestRate, final BigDecimal savingInterestRate, final Integer interestType, final Integer tenure,
|
||||
final Integer tenureType, final Integer frequency, final Integer payEvery,
|
||||
final DepositLifecycleStateMachine depositLifecycleStateMachine,
|
||||
final ReccuringDepositInterestCalculator reccuringDepositInterestCalculator, final Integer interestPostEvery,
|
||||
final Integer interestPostFrequency) {
|
||||
|
||||
DepositAccountStatus statusEnum = depositLifecycleStateMachine.transition(DepositAccountEvent.DEPOSIT_APPROVED,
|
||||
DepositAccountStatus.fromInt(this.accountStatus));
|
||||
@@ -518,7 +522,7 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
Money futureValueOnMaturity = null;
|
||||
if (SavingProductType.fromInt(this.savingProductType).isReccuring() && tenureTypeEnum.isFixedPeriod()) {
|
||||
futureValueOnMaturity = reccuringDepositInterestCalculator.calculateInterestOnMaturityFor(savingsAmountPerPeriod, tenure,
|
||||
recurringInterestRate, approvalDate, tenureTypeEnum, savingFrequencyType, interestCalculationMethod, payEvery);
|
||||
recurringInterestRate, savingFrequencyType, interestCalculationMethod, payEvery);
|
||||
} else if (SavingProductType.fromInt(this.savingProductType).isReccuring() && tenureTypeEnum.isPerpetual()) {
|
||||
futureValueOnMaturity = savingsAmountPerPeriod;
|
||||
} else {
|
||||
@@ -552,7 +556,7 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.interestPostedAmount = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
public void depositMoney(SavingAccountDepositCommand command) {
|
||||
public void depositMoney(final SavingAccountDepositCommand command) {
|
||||
|
||||
BigDecimal depositAmount = BigDecimal.ZERO;
|
||||
BigDecimal remainAmountToBePaid = BigDecimal.ZERO;
|
||||
@@ -600,7 +604,7 @@ public class SavingAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
return DepositAccountStatus.fromInt(this.accountStatus).isActive();
|
||||
}
|
||||
|
||||
public void withdrawAmount(BigDecimal amount, LocalDate transactionDate) {
|
||||
public void withdrawAmount(final BigDecimal amount, final LocalDate transactionDate) {
|
||||
this.outstandingAmount = this.outstandingAmount.subtract(amount);
|
||||
SavingAccountTransaction savingAccountTransaction = SavingAccountTransaction.withdraw(amount, transactionDate);
|
||||
savingAccountTransaction.updateAccount(this);
|
||||
|
||||
+13
-11
@@ -27,11 +27,11 @@ import org.mifosplatform.useradministration.domain.AppUser;
|
||||
@Table(name = "m_saving_account_transaction")
|
||||
public class SavingAccountTransaction extends AbstractAuditableCustom<AppUser, Long> {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@ManyToOne(optional = false)
|
||||
@JoinColumn(name = "saving_account_id", nullable = false)
|
||||
private SavingAccount savingAccount;
|
||||
|
||||
// @Enumerated(EnumType.ORDINAL)
|
||||
@Column(name = "transaction_type_enum", nullable = false)
|
||||
private Integer typeOf;
|
||||
|
||||
@@ -52,25 +52,28 @@ public class SavingAccountTransaction extends AbstractAuditableCustom<AppUser, L
|
||||
this.amount = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
public SavingAccountTransaction(DepositAccountTransactionType transactionType, BigDecimal amount, LocalDate paymentDate) {
|
||||
public SavingAccountTransaction(final DepositAccountTransactionType transactionType, final BigDecimal amount,
|
||||
final LocalDate paymentDate) {
|
||||
this.typeOf = transactionType.getValue();
|
||||
this.amount = amount;
|
||||
this.transactionDate =paymentDate.toDate();
|
||||
this.transactionDate = paymentDate.toDate();
|
||||
}
|
||||
|
||||
public static SavingAccountTransaction deposit(BigDecimal amount, LocalDate paymentDate) {
|
||||
public static SavingAccountTransaction deposit(final BigDecimal amount, final LocalDate paymentDate) {
|
||||
return new SavingAccountTransaction(DepositAccountTransactionType.DEPOSIT, amount == null ? new BigDecimal(0) : amount, paymentDate);
|
||||
}
|
||||
|
||||
public static SavingAccountTransaction withdraw(BigDecimal amount, LocalDate paymentDate) {
|
||||
return new SavingAccountTransaction(DepositAccountTransactionType.WITHDRAW, amount == null ? new BigDecimal(0) : amount, paymentDate);
|
||||
public static SavingAccountTransaction withdraw(final BigDecimal amount, final LocalDate paymentDate) {
|
||||
return new SavingAccountTransaction(DepositAccountTransactionType.WITHDRAW, amount == null ? new BigDecimal(0) : amount,
|
||||
paymentDate);
|
||||
}
|
||||
|
||||
public static SavingAccountTransaction postInterest(BigDecimal amount, LocalDate paymentDate) {
|
||||
return new SavingAccountTransaction(DepositAccountTransactionType.INTEREST_POSTING, amount == null ? new BigDecimal(0) : amount, paymentDate);
|
||||
public static SavingAccountTransaction postInterest(final BigDecimal amount, final LocalDate paymentDate) {
|
||||
return new SavingAccountTransaction(DepositAccountTransactionType.INTEREST_POSTING, amount == null ? new BigDecimal(0) : amount,
|
||||
paymentDate);
|
||||
}
|
||||
|
||||
public void updateAccount(SavingAccount savingAccount) {
|
||||
public void updateAccount(final SavingAccount savingAccount) {
|
||||
this.savingAccount = savingAccount;
|
||||
}
|
||||
|
||||
@@ -84,11 +87,10 @@ public class SavingAccountTransaction extends AbstractAuditableCustom<AppUser, L
|
||||
|
||||
public LocalDate getTransactionDate() {
|
||||
LocalDate transactionDate = null;
|
||||
if(this.transactionDate != null){
|
||||
if (this.transactionDate != null) {
|
||||
transactionDate = new LocalDate(this.transactionDate);
|
||||
}
|
||||
return transactionDate;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+15
-15
@@ -48,7 +48,8 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
|
||||
@Autowired
|
||||
public SavingAccountReadPlatformServiceImpl(final PlatformSecurityContext context, final TenantAwareRoutingDataSource dataSource,
|
||||
ClientReadPlatformService clientReadPlatformService, SavingProductReadPlatformService savingProductReadPlatformService) {
|
||||
final ClientReadPlatformService clientReadPlatformService,
|
||||
final SavingProductReadPlatformService savingProductReadPlatformService) {
|
||||
this.context = context;
|
||||
this.jdbcTemplate = new JdbcTemplate(dataSource);
|
||||
this.clientReadPlatformService = clientReadPlatformService;
|
||||
@@ -66,7 +67,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingAccountData retrieveSavingsAccount(Long accountId) {
|
||||
public SavingAccountData retrieveSavingsAccount(final Long accountId) {
|
||||
|
||||
this.context.authenticatedUser();
|
||||
SavingAccountMapper mapper = new SavingAccountMapper();
|
||||
@@ -100,7 +101,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingAccountData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException {
|
||||
public SavingAccountData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
|
||||
|
||||
Long id = rs.getLong("id");
|
||||
String externalId = rs.getString("externalId");
|
||||
@@ -174,7 +175,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingAccountData retrieveNewSavingsAccountDetails(Long clientId, Long productId) {
|
||||
public SavingAccountData retrieveNewSavingsAccountDetails(final Long clientId, final Long productId) {
|
||||
|
||||
context.authenticatedUser();
|
||||
ClientData clientAccount = this.clientReadPlatformService.retrieveIndividualClient(clientId);
|
||||
@@ -190,9 +191,8 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
selectedProduct.getName(), currency, selectedProduct.getInterestRate(), selectedProduct.getSavingsDepositAmount(),
|
||||
selectedProduct.getSavingProductType(), selectedProduct.getTenureType(), selectedProduct.getTenure(),
|
||||
selectedProduct.getSavingFrequencyType(), selectedProduct.getInterestType(),
|
||||
selectedProduct.getInterestCalculationMethod(), selectedProduct.getMinimumBalanceForWithdrawal(),
|
||||
selectedProduct.isPartialDepositAllowed(), selectedProduct.isLockinPeriodAllowed(), selectedProduct.getLockinPeriod(),
|
||||
selectedProduct.getLockinPeriodType(), selectedProduct.getDepositEvery());
|
||||
selectedProduct.getInterestCalculationMethod(), selectedProduct.isLockinPeriodAllowed(),
|
||||
selectedProduct.getLockinPeriod(), selectedProduct.getLockinPeriodType(), selectedProduct.getDepositEvery());
|
||||
|
||||
} else {
|
||||
accountData = SavingAccountData.createFrom(clientAccount.id(), clientAccount.displayName());
|
||||
@@ -200,7 +200,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
return accountData;
|
||||
}
|
||||
|
||||
private SavingProductData findSavingProductById(Collection<SavingProductLookup> savingProducts, Long productId) {
|
||||
private SavingProductData findSavingProductById(final Collection<SavingProductLookup> savingProducts, final Long productId) {
|
||||
SavingProductData match = this.savingProductReadPlatformService.retrieveNewSavingProductDetails();
|
||||
for (SavingProductLookup savingProductLookup : savingProducts) {
|
||||
if (savingProductLookup.hasId(productId)) {
|
||||
@@ -212,7 +212,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingPermissionData retrieveSavingAccountPermissions(SavingAccountData savingAccountData) {
|
||||
public SavingPermissionData retrieveSavingAccountPermissions(final SavingAccountData savingAccountData) {
|
||||
boolean pendingApproval = (savingAccountData.getStatus().getId().equals(100L));
|
||||
boolean undoApprovalAllowed = (savingAccountData.getStatus().getId().equals(300L));
|
||||
boolean renewelAllowed = false;
|
||||
@@ -230,7 +230,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Override
|
||||
public BigDecimal deriveSavingDueAmount(SavingAccountData account) {
|
||||
public BigDecimal deriveSavingDueAmount(final SavingAccountData account) {
|
||||
|
||||
BigDecimal dueAmount = BigDecimal.ZERO;
|
||||
EnumOptionData status = account.getStatus();
|
||||
@@ -254,7 +254,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingScheduleData retrieveSavingsAccountSchedule(Long accountId, CurrencyData currency) {
|
||||
public SavingScheduleData retrieveSavingsAccountSchedule(final Long accountId, final CurrencyData currency) {
|
||||
this.context.authenticatedUser();
|
||||
SavingAccountScheduleMapper mapper = new SavingAccountScheduleMapper();
|
||||
String sql = "Select " + mapper.savingScheduleSchema() + " where ss.saving_account_id =? order by ss.installment";
|
||||
@@ -281,7 +281,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingSchedulePeriodData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException {
|
||||
public SavingSchedulePeriodData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
|
||||
|
||||
LocalDate dueDate = JdbcSupport.getLocalDate(rs, "dueDate");
|
||||
Integer installment = JdbcSupport.getInteger(rs, "installment");
|
||||
@@ -308,7 +308,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingAccountForLookup mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException {
|
||||
public SavingAccountForLookup mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
|
||||
Long id = rs.getLong("id");
|
||||
return new SavingAccountForLookup(id);
|
||||
}
|
||||
@@ -316,7 +316,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<SavingAccountTransactionsData> retrieveSavingsAccountTransactions(Long accountId) {
|
||||
public Collection<SavingAccountTransactionsData> retrieveSavingsAccountTransactions(final Long accountId) {
|
||||
this.context.authenticatedUser();
|
||||
SavingAccountTransactionMapper savingAccountTransactionMapper = new SavingAccountTransactionMapper();
|
||||
String sql = "select " + savingAccountTransactionMapper.schema() + " where stxn.saving_account_id = ? ";
|
||||
@@ -330,7 +330,7 @@ public class SavingAccountReadPlatformServiceImpl implements SavingAccountReadPl
|
||||
}
|
||||
|
||||
@Override
|
||||
public SavingAccountTransactionsData mapRow(ResultSet rs, @SuppressWarnings("unused") int rowNum) throws SQLException {
|
||||
public SavingAccountTransactionsData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum) throws SQLException {
|
||||
Long id = rs.getLong("id");
|
||||
LocalDate transactionDate = JdbcSupport.getLocalDate(rs, "transactionDate");
|
||||
Integer transactionTypeValue = JdbcSupport.getInteger(rs, "type");
|
||||
|
||||
+6
-6
@@ -562,14 +562,14 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void updateAccount(DepositAccount account) {
|
||||
public void updateAccount(final DepositAccount account) {
|
||||
|
||||
this.renewdAccount = account;
|
||||
|
||||
}
|
||||
|
||||
public void withdrawDepositAccountMoney(DepositLifecycleStateMachine depositLifecycleStateMachine,
|
||||
FixedTermDepositInterestCalculator fixedTermDepositInterestCalculator, LocalDate eventDate) {
|
||||
public void withdrawDepositAccountMoney(final DepositLifecycleStateMachine depositLifecycleStateMachine,
|
||||
final FixedTermDepositInterestCalculator fixedTermDepositInterestCalculator, final LocalDate eventDate) {
|
||||
|
||||
if (eventDate.isBefore(getLastInterestPostedDate())) {
|
||||
final String errorMessage = "Deposit Account Preclosed date \"" + eventDate + "\"cannot before last interest posted date \""
|
||||
@@ -647,7 +647,7 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
* }
|
||||
*/
|
||||
|
||||
public void withdrawInterest(Money interest) {
|
||||
public void withdrawInterest(final Money interest) {
|
||||
@SuppressWarnings("unused")
|
||||
boolean statustest = isActive();
|
||||
if (isActive()) {
|
||||
@@ -662,7 +662,7 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
|
||||
}
|
||||
|
||||
public void closeDepositAccount(DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
public void closeDepositAccount(final DepositLifecycleStateMachine depositLifecycleStateMachine) {
|
||||
DepositAccountStatus statusEnumForClose = depositLifecycleStateMachine.transition(DepositAccountEvent.DEPOSIT_CLOSED,
|
||||
DepositAccountStatus.fromInt(this.depositStatus));
|
||||
this.depositStatus = statusEnumForClose.getValue();
|
||||
@@ -732,7 +732,7 @@ public class DepositAccount extends AbstractAuditableCustom<AppUser, Long> {
|
||||
return DepositAccountStatus.fromInt(this.depositStatus).isActive();
|
||||
}
|
||||
|
||||
public void postInterestForDepositAccount(DepositAccount account, FixedTermDepositInterestCalculator fixedTermDepositInterestCalculator) {
|
||||
public void postInterestForDepositAccount(final FixedTermDepositInterestCalculator fixedTermDepositInterestCalculator) {
|
||||
|
||||
LocalDate lastInterestPostedDate = getLastInterestPostedDate();
|
||||
LocalDate nextInterestPostingDate = getNextInterestPostedDate();
|
||||
|
||||
+24
-18
@@ -65,16 +65,21 @@ public class DepositAccountAssembler {
|
||||
final Boolean isInterestWithdrawable = fromApiJsonHelper.extractBooleanNamed("isInterestWithdrawable", element);
|
||||
final BigDecimal depositValue = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("deposit", element);
|
||||
final Integer tenureInMonthsCommandValue = fromApiJsonHelper.extractIntegerNamed("tenureInMonths", element, Locale.getDefault());
|
||||
final BigDecimal maturityInterestRateCommandValue = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityInterestRate", element);
|
||||
final BigDecimal preClosureInterestRateCommandValue = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("preClosureInterestRate", element);
|
||||
final Integer interestCompoundedEveryCommandValue = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEvery", element, Locale.getDefault());
|
||||
final Integer interestCompoundedEveryPeriodTypeCommandValue = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEveryPeriodType", element, Locale.getDefault());
|
||||
final BigDecimal maturityInterestRateCommandValue = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("maturityInterestRate",
|
||||
element);
|
||||
final BigDecimal preClosureInterestRateCommandValue = fromApiJsonHelper.extractBigDecimalWithLocaleNamed("preClosureInterestRate",
|
||||
element);
|
||||
final Integer interestCompoundedEveryCommandValue = fromApiJsonHelper.extractIntegerNamed("interestCompoundedEvery", element,
|
||||
Locale.getDefault());
|
||||
final Integer interestCompoundedEveryPeriodTypeCommandValue = fromApiJsonHelper.extractIntegerNamed(
|
||||
"interestCompoundedEveryPeriodType", element, Locale.getDefault());
|
||||
final Boolean renewalAllowedCommandValue = fromApiJsonHelper.extractBooleanNamed("renewalAllowed", element);
|
||||
final Boolean preClosureAllowedCommandValue = fromApiJsonHelper.extractBooleanNamed("preClosureAllowed", element);
|
||||
final Boolean interestCompoundingAllowedCommandValue = fromApiJsonHelper.extractBooleanNamed("interestCompoundingAllowed", element);
|
||||
final Boolean isLockinPeriodAllowedCommandValue = fromApiJsonHelper.extractBooleanNamed("isLockinPeriodAllowed", element);
|
||||
final Integer lockinPeriodCommandValue = fromApiJsonHelper.extractIntegerNamed("lockinPeriod", element, Locale.getDefault());
|
||||
final Integer lockinPeriodTypeCommandValue = fromApiJsonHelper.extractIntegerNamed("lockinPeriodType", element, Locale.getDefault());
|
||||
final Integer lockinPeriodTypeCommandValue = fromApiJsonHelper
|
||||
.extractIntegerNamed("lockinPeriodType", element, Locale.getDefault());
|
||||
final LocalDate commencementDate = fromApiJsonHelper.extractLocalDateNamed("commencementDate", element);
|
||||
|
||||
Client client = this.clientRepository.findOne(clientId);
|
||||
@@ -147,10 +152,9 @@ public class DepositAccountAssembler {
|
||||
// end of details allowed to be overriden from product
|
||||
|
||||
DepositAccount account = new DepositAccount().openNew(client, product, externalId, deposit, maturityInterestRate,
|
||||
preClosureInterestRate, tenureInMonths, compoundingInterestEvery, compoundingInterestFrequency,
|
||||
commencementDate, renewalAllowed, preClosureAllowed, this.fixedTermDepositInterestCalculator,
|
||||
defaultDepositLifecycleStateMachine(), isInterestWithdrawable, interestCompoundingAllowed, isLockinPeriodAllowed,
|
||||
lockinPeriod, lockinPeriodType);
|
||||
preClosureInterestRate, tenureInMonths, compoundingInterestEvery, compoundingInterestFrequency, commencementDate,
|
||||
renewalAllowed, preClosureAllowed, this.fixedTermDepositInterestCalculator, defaultDepositLifecycleStateMachine(),
|
||||
isInterestWithdrawable, interestCompoundingAllowed, isLockinPeriodAllowed, lockinPeriod, lockinPeriodType);
|
||||
|
||||
return account;
|
||||
}
|
||||
@@ -160,7 +164,7 @@ public class DepositAccountAssembler {
|
||||
return new DepositLifecycleStateMachineImpl(allowedDepositStatuses);
|
||||
}
|
||||
|
||||
public DepositAccount assembleFrom(DepositAccount account, JsonCommand command) {
|
||||
public DepositAccount assembleFrom(final DepositAccount account, final JsonCommand command) {
|
||||
|
||||
final Map<String, Object> actualChanges = new LinkedHashMap<String, Object>(20);
|
||||
final String localeAsInput = command.locale();
|
||||
@@ -229,7 +233,8 @@ public class DepositAccountAssembler {
|
||||
|
||||
PeriodFrequencyType interestCompoundedEveryPeriodType = account.getInterestCompoundedFrequencyType();
|
||||
final String interestCompoundedEveryPeriodTypeParamName = "interestCompoundedEveryPeriodType";
|
||||
if (command.isChangeInIntegerParameterNamed(interestCompoundedEveryPeriodTypeParamName, interestCompoundedEveryPeriodType.getValue())) {
|
||||
if (command.isChangeInIntegerParameterNamed(interestCompoundedEveryPeriodTypeParamName,
|
||||
interestCompoundedEveryPeriodType.getValue())) {
|
||||
final Integer newValue = command.integerValueOfParameterNamed(interestCompoundedEveryPeriodTypeParamName);
|
||||
actualChanges.put(interestCompoundedEveryPeriodTypeParamName, newValue);
|
||||
actualChanges.put("locale", localeAsInput);
|
||||
@@ -310,7 +315,7 @@ public class DepositAccountAssembler {
|
||||
return newAccount;
|
||||
}
|
||||
|
||||
public Map<String, Object> assembleUpdatedDepositAccount(DepositAccount account, JsonCommand command) {
|
||||
public Map<String, Object> assembleUpdatedDepositAccount(final DepositAccount account, final JsonCommand command) {
|
||||
|
||||
final Map<String, Object> actualChanges = new LinkedHashMap<String, Object>(20);
|
||||
final String localeAsInput = command.locale();
|
||||
@@ -393,7 +398,8 @@ public class DepositAccountAssembler {
|
||||
|
||||
PeriodFrequencyType interestCompoundedEveryPeriodType = account.getInterestCompoundedFrequencyType();
|
||||
final String interestCompoundedEveryPeriodTypeParamName = "interestCompoundedEveryPeriodType";
|
||||
if (command.isChangeInIntegerParameterNamed(interestCompoundedEveryPeriodTypeParamName, interestCompoundedEveryPeriodType.getValue())) {
|
||||
if (command.isChangeInIntegerParameterNamed(interestCompoundedEveryPeriodTypeParamName,
|
||||
interestCompoundedEveryPeriodType.getValue())) {
|
||||
final Integer newValue = command.integerValueOfParameterNamed(interestCompoundedEveryPeriodTypeParamName);
|
||||
actualChanges.put(interestCompoundedEveryPeriodTypeParamName, newValue);
|
||||
actualChanges.put("locale", localeAsInput);
|
||||
@@ -471,7 +477,7 @@ public class DepositAccountAssembler {
|
||||
return actualChanges;
|
||||
}
|
||||
|
||||
public Map<String, Object> updateApprovedDepositAccount(DepositAccount account, JsonCommand command) {
|
||||
public Map<String, Object> updateApprovedDepositAccount(final DepositAccount account, final JsonCommand command) {
|
||||
|
||||
final Map<String, Object> actualChanges = new LinkedHashMap<String, Object>(20);
|
||||
final String localeAsInput = command.locale();
|
||||
@@ -500,13 +506,13 @@ public class DepositAccountAssembler {
|
||||
|
||||
}
|
||||
|
||||
public void postInterest(DepositAccount account) {
|
||||
account.postInterestForDepositAccount(account, this.fixedTermDepositInterestCalculator);
|
||||
public void postInterest(final DepositAccount account) {
|
||||
account.postInterestForDepositAccount(this.fixedTermDepositInterestCalculator);
|
||||
}
|
||||
|
||||
private Boolean isBooleanValueUpdated(Boolean actualValue) {
|
||||
private Boolean isBooleanValueUpdated(final Boolean actualValue) {
|
||||
Boolean isUpdated = false;
|
||||
if(actualValue != null){
|
||||
if (actualValue != null) {
|
||||
isUpdated = true;
|
||||
}
|
||||
return isUpdated;
|
||||
|
||||
+57
-67
@@ -24,23 +24,20 @@ import org.mifosplatform.portfolio.savingsdepositproduct.exception.DepositProduc
|
||||
import org.mifosplatform.useradministration.domain.AppUser;
|
||||
|
||||
@Entity
|
||||
@Table(name = "m_product_deposit", uniqueConstraints={
|
||||
@UniqueConstraint(columnNames = {"name"}, name="name_deposit_product"),
|
||||
@UniqueConstraint(columnNames = {"external_id"}, name="externalid_deposit_product")
|
||||
})
|
||||
@Table(name = "m_product_deposit", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }, name = "name_deposit_product"),
|
||||
@UniqueConstraint(columnNames = { "external_id" }, name = "externalid_deposit_product") })
|
||||
public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
|
||||
@Column(name = "name", nullable = false)
|
||||
private String name;
|
||||
|
||||
@Column(name = "external_id", length=100)
|
||||
@Column(name = "external_id", length = 100)
|
||||
private String externalId;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@Column(name = "description")
|
||||
private String description;
|
||||
|
||||
@Column(name = "is_deleted", nullable=false)
|
||||
@Column(name = "is_deleted", nullable = false)
|
||||
private boolean deleted = false;
|
||||
|
||||
@Embedded
|
||||
@@ -52,10 +49,10 @@ public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
@Column(name = "maximum_balance", scale = 6, precision = 19, nullable = false)
|
||||
private BigDecimal maximumBalance;
|
||||
|
||||
@Column(name = "interest_compounded_every", nullable=false)
|
||||
@Column(name = "interest_compounded_every", nullable = false)
|
||||
private Integer interestCompoundedEvery;
|
||||
|
||||
@Column(name = "interest_compounded_every_period_enum", nullable=false)
|
||||
@Column(name = "interest_compounded_every_period_enum", nullable = false)
|
||||
private PeriodFrequencyType interestCompoundedEveryPeriodType;
|
||||
|
||||
@Column(name = "maturity_default_interest_rate", scale = 6, precision = 19, nullable = false)
|
||||
@@ -67,50 +64,73 @@ public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
@Column(name = "maturity_max_interest_rate", scale = 6, precision = 19, nullable = false)
|
||||
private BigDecimal maturityMaxInterestRate;
|
||||
|
||||
@Column(name = "tenure_months", nullable=false)
|
||||
@Column(name = "tenure_months", nullable = false)
|
||||
private Integer tenureInMonths;
|
||||
|
||||
@Column(name = "is_renewal_allowed", nullable=false)
|
||||
@Column(name = "is_renewal_allowed", nullable = false)
|
||||
private boolean renewalAllowed = false;
|
||||
|
||||
@Column(name = "is_preclosure_allowed", nullable=false)
|
||||
@Column(name = "is_preclosure_allowed", nullable = false)
|
||||
private boolean preClosureAllowed = false;
|
||||
|
||||
@Column(name = "is_compounding_interest_allowed", nullable=false)
|
||||
@Column(name = "is_compounding_interest_allowed", nullable = false)
|
||||
private boolean interestCompoundingAllowed = false;
|
||||
|
||||
@Column(name = "pre_closure_interest_rate", scale = 6, precision = 19, nullable = false)
|
||||
private BigDecimal preClosureInterestRate;
|
||||
|
||||
@Column(name = "is_lock_in_period_allowed", nullable=false)
|
||||
@Column(name = "is_lock_in_period_allowed", nullable = false)
|
||||
private boolean isLockinPeriodAllowed = false;
|
||||
|
||||
@Column(name = "lock_in_period", nullable=false)
|
||||
@Column(name = "lock_in_period", nullable = false)
|
||||
private Integer lockinPeriod;
|
||||
|
||||
@Column(name = "lock_in_period_type", nullable=false)
|
||||
@Column(name = "lock_in_period_type", nullable = false)
|
||||
private PeriodFrequencyType lockinPeriodType;
|
||||
|
||||
public static DepositProduct assembleFromJson(final JsonCommand command, final PeriodFrequencyType interestCompoundingPeriodType,
|
||||
final PeriodFrequencyType lockinPeriodType) {
|
||||
|
||||
final String name = command.stringValueOfParameterNamed("name");
|
||||
final String externalId = command.stringValueOfParameterNamed("externalId");
|
||||
final String description = command.stringValueOfParameterNamed("description");
|
||||
final String currencyCode = command.stringValueOfParameterNamed("currencyCode");
|
||||
final Integer digitsAfterDecimal = command.integerValueOfParameterNamed("digitsAfterDecimal");
|
||||
|
||||
final MonetaryCurrency currency = new MonetaryCurrency(currencyCode, digitsAfterDecimal);
|
||||
final BigDecimal minimumBalance = command.bigDecimalValueOfParameterNamed("minimumBalance");
|
||||
final BigDecimal maximumBalance = command.bigDecimalValueOfParameterNamed("maximumBalance");
|
||||
|
||||
final Integer tenureMonths = command.integerValueOfParameterNamed("tenureInMonths");
|
||||
final BigDecimal maturityDefaultInterestRate = command.bigDecimalValueOfParameterNamed("maturityDefaultInterestRate");
|
||||
final BigDecimal maturityMinInterestRate = command.bigDecimalValueOfParameterNamed("maturityMinInterestRate");
|
||||
final BigDecimal maturityMaxInterestRate = command.bigDecimalValueOfParameterNamed("maturityMaxInterestRate");
|
||||
final Integer interestCompoundedEvery = command.integerValueOfParameterNamed("interestCompoundedEvery");
|
||||
|
||||
final boolean canRenew = command.booleanPrimitiveValueOfParameterNamed("canRenew");
|
||||
final boolean canPreClose = command.booleanPrimitiveValueOfParameterNamed("canPreClose");
|
||||
final BigDecimal preClosureInterestRate = command.bigDecimalValueOfParameterNamed("preClosureInterestRate");
|
||||
final boolean isInterestCompoundingAllowed = command.booleanPrimitiveValueOfParameterNamed("isInterestCompoundingAllowed");
|
||||
final boolean isLockinPeriodAllowed = command.booleanPrimitiveValueOfParameterNamed("isLockinPeriodAllowed");
|
||||
final Integer lockinPeriod = command.integerValueOfParameterNamed("lockinPeriod");
|
||||
|
||||
return new DepositProduct(name, externalId, description, currency, minimumBalance, maximumBalance, tenureMonths,
|
||||
maturityDefaultInterestRate, maturityMinInterestRate, maturityMaxInterestRate, interestCompoundedEvery,
|
||||
interestCompoundingPeriodType, canRenew, canPreClose, preClosureInterestRate, isInterestCompoundingAllowed,
|
||||
isLockinPeriodAllowed, lockinPeriod, lockinPeriodType);
|
||||
}
|
||||
|
||||
protected DepositProduct() {
|
||||
//
|
||||
}
|
||||
|
||||
public DepositProduct(final String name, final String externalId,
|
||||
final String description,
|
||||
final MonetaryCurrency currency, final BigDecimal minimumBalance,
|
||||
final BigDecimal maximumBalance, final Integer tenureMonths,
|
||||
final BigDecimal maturityDefaultInterestRate,
|
||||
final BigDecimal maturityMinInterestRate,
|
||||
final BigDecimal maturityMaxInterestRate,
|
||||
final Integer interestCompoundedEvery,
|
||||
final PeriodFrequencyType interestCompoundedEveryPeriodType,
|
||||
final boolean canRenew,
|
||||
final boolean canPreClose,
|
||||
final BigDecimal preClosureInterestRate,
|
||||
final boolean isInterestCompoundingAllowed,
|
||||
final boolean isLockinPeriodAllowed,
|
||||
final Integer lockinPeriod,
|
||||
final PeriodFrequencyType lockinPeriodType) {
|
||||
private DepositProduct(final String name, final String externalId, final String description, final MonetaryCurrency currency,
|
||||
final BigDecimal minimumBalance, final BigDecimal maximumBalance, final Integer tenureMonths,
|
||||
final BigDecimal maturityDefaultInterestRate, final BigDecimal maturityMinInterestRate,
|
||||
final BigDecimal maturityMaxInterestRate, final Integer interestCompoundedEvery,
|
||||
final PeriodFrequencyType interestCompoundedEveryPeriodType, final boolean canRenew, final boolean canPreClose,
|
||||
final BigDecimal preClosureInterestRate, final boolean isInterestCompoundingAllowed, final boolean isLockinPeriodAllowed,
|
||||
final Integer lockinPeriod, final PeriodFrequencyType lockinPeriodType) {
|
||||
this.name = name.trim();
|
||||
if (StringUtils.isNotBlank(description)) {
|
||||
this.description = description.trim();
|
||||
@@ -198,7 +218,8 @@ public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete is a <i>soft delete</i>. Updates flag on product so it wont appear in query/report results.
|
||||
* Delete is a <i>soft delete</i>. Updates flag on product so it wont appear
|
||||
* in query/report results.
|
||||
*
|
||||
* Any fields with unique constraints and prepended with id of record.
|
||||
*/
|
||||
@@ -208,7 +229,7 @@ public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.externalId = this.getId() + "_DELETED_" + this.externalId;
|
||||
}
|
||||
|
||||
public Map<String, Object> update(final JsonCommand command){
|
||||
public Map<String, Object> update(final JsonCommand command) {
|
||||
|
||||
final Map<String, Object> actualChanges = new LinkedHashMap<String, Object>(20);
|
||||
|
||||
@@ -312,7 +333,8 @@ public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
}
|
||||
|
||||
final String interestCompoundedEveryPeriodTypeParamName = "interestCompoundedEveryPeriodType";
|
||||
if (command.isChangeInIntegerParameterNamed(interestCompoundedEveryPeriodTypeParamName, this.interestCompoundedEveryPeriodType.getValue())) {
|
||||
if (command.isChangeInIntegerParameterNamed(interestCompoundedEveryPeriodTypeParamName,
|
||||
this.interestCompoundedEveryPeriodType.getValue())) {
|
||||
final Integer newValue = command.integerValueOfParameterNamed(interestCompoundedEveryPeriodTypeParamName);
|
||||
actualChanges.put(interestCompoundedEveryPeriodTypeParamName, newValue);
|
||||
actualChanges.put("locale", localeAsInput);
|
||||
@@ -367,7 +389,6 @@ public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
this.lockinPeriod = newValue;
|
||||
}
|
||||
|
||||
|
||||
final String lockinPeriodTypeParamName = "lockinPeriodType";
|
||||
if (command.isChangeInIntegerParameterNamed(lockinPeriodTypeParamName, this.lockinPeriodType.getValue())) {
|
||||
final Integer newValue = command.integerValueOfParameterNamed(lockinPeriodTypeParamName);
|
||||
@@ -414,35 +435,4 @@ public class DepositProduct extends AbstractAuditableCustom<AppUser, Long> {
|
||||
throw new DepositProductValueOutsideRangeException(actualValue, minValue, maxValue, "deposit.account.deposit.amount");
|
||||
}
|
||||
}
|
||||
|
||||
public static DepositProduct assembleFromJson(JsonCommand command, PeriodFrequencyType interestCompoundingPeriodType,
|
||||
PeriodFrequencyType lockinPeriodType) {
|
||||
|
||||
final String name = command.stringValueOfParameterNamed("name");
|
||||
final String externalId = command.stringValueOfParameterNamed("externalId");
|
||||
final String description = command.stringValueOfParameterNamed("description");
|
||||
final String currencyCode = command.stringValueOfParameterNamed("currencyCode");
|
||||
final Integer digitsAfterDecimal = command.integerValueOfParameterNamed("digitsAfterDecimal");
|
||||
|
||||
final MonetaryCurrency currency = new MonetaryCurrency(currencyCode, digitsAfterDecimal);
|
||||
final BigDecimal minimumBalance = command.bigDecimalValueOfParameterNamed("minimumBalance");
|
||||
final BigDecimal maximumBalance = command.bigDecimalValueOfParameterNamed("maximumBalance");
|
||||
|
||||
final Integer tenureMonths = command.integerValueOfParameterNamed("tenureInMonths");
|
||||
final BigDecimal maturityDefaultInterestRate = command.bigDecimalValueOfParameterNamed("maturityDefaultInterestRate");
|
||||
final BigDecimal maturityMinInterestRate = command.bigDecimalValueOfParameterNamed("maturityMinInterestRate");
|
||||
final BigDecimal maturityMaxInterestRate = command.bigDecimalValueOfParameterNamed("maturityMaxInterestRate");
|
||||
final Integer interestCompoundedEvery = command.integerValueOfParameterNamed("interestCompoundedEvery");
|
||||
|
||||
final boolean canRenew = command.booleanPrimitiveValueOfParameterNamed("canRenew");
|
||||
final boolean canPreClose = command.booleanPrimitiveValueOfParameterNamed("canPreClose");
|
||||
final BigDecimal preClosureInterestRate = command.bigDecimalValueOfParameterNamed("preClosureInterestRate");
|
||||
final boolean isInterestCompoundingAllowed = command.booleanPrimitiveValueOfParameterNamed("isInterestCompoundingAllowed");
|
||||
final boolean isLockinPeriodAllowed = command.booleanPrimitiveValueOfParameterNamed("isLockinPeriodAllowed");
|
||||
final Integer lockinPeriod = command.integerValueOfParameterNamed("lockinPeriod");
|
||||
|
||||
return new DepositProduct(name, externalId, description, currency, minimumBalance, maximumBalance, tenureMonths, maturityDefaultInterestRate,
|
||||
maturityMinInterestRate, maturityMaxInterestRate, interestCompoundedEvery, interestCompoundingPeriodType, canRenew, canPreClose,
|
||||
preClosureInterestRate, isInterestCompoundingAllowed, isLockinPeriodAllowed, lockinPeriod, lockinPeriodType);
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -12,7 +12,8 @@ import org.mifosplatform.infrastructure.core.exception.AbstractPlatformDomainRul
|
||||
*/
|
||||
public class DepositProductValueOutsideRangeException extends AbstractPlatformDomainRuleException {
|
||||
|
||||
public DepositProductValueOutsideRangeException(final String actualValue, final String rangeMin, final String rangeMax, final String fieldCode) {
|
||||
public DepositProductValueOutsideRangeException(final String actualValue, final String rangeMin, final String rangeMax,
|
||||
final String fieldCode) {
|
||||
super("error.msg." + fieldCode + ".outside.of.allowed.range", actualValue + " is outside of allowed range of [" + rangeMin + ", "
|
||||
+ rangeMax + "].", actualValue, rangeMin, rangeMax);
|
||||
}
|
||||
|
||||
+1
-2
@@ -18,8 +18,7 @@ public class CreateDepositProductCommandHandler implements NewCommandSourceHandl
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommandProcessingResult processCommand(JsonCommand command) {
|
||||
public CommandProcessingResult processCommand(final JsonCommand command) {
|
||||
return this.depositProductWritePlatformService.createDepositProduct(command);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-2
@@ -15,9 +15,8 @@ public interface DepositProductWritePlatformService {
|
||||
CommandProcessingResult createDepositProduct(JsonCommand command);
|
||||
|
||||
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'UPDATE_DEPOSITPRODUCT')")
|
||||
CommandProcessingResult updateDepositProduct(Long productId,JsonCommand command);
|
||||
CommandProcessingResult updateDepositProduct(Long productId, JsonCommand command);
|
||||
|
||||
@PreAuthorize(value = "hasAnyRole('ALL_FUNCTIONS', 'DELETE_DEPOSITPRODUCT')")
|
||||
CommandProcessingResult deleteDepositProduct(Long productId);
|
||||
|
||||
}
|
||||
+8
-9
@@ -51,14 +51,14 @@ public class DepositProductWritePlatformServiceJpaRepositoryImpl implements Depo
|
||||
Throwable realCause = dve.getMostSpecificCause();
|
||||
if (realCause.getMessage().contains("name_deposit_product")) {
|
||||
final String name = command.stringValueOfParameterNamed("name");
|
||||
throw new PlatformDataIntegrityException(
|
||||
"error.msg.desposit.product.duplicate.name", "Deposit product with name: " + name + " already exists", "name",
|
||||
name); }
|
||||
throw new PlatformDataIntegrityException("error.msg.desposit.product.duplicate.name", "Deposit product with name: " + name
|
||||
+ " already exists", "name", name);
|
||||
}
|
||||
if (realCause.getMessage().contains("externalid_deposit_product")) {
|
||||
final String externalId = command.stringValueOfParameterNamed("externalId");
|
||||
throw new PlatformDataIntegrityException(
|
||||
"error.msg.desposit.product.duplicate.externalId", "Deposit product with externalId " + externalId
|
||||
+ " already exists", "externalId", externalId); }
|
||||
throw new PlatformDataIntegrityException("error.msg.desposit.product.duplicate.externalId", "Deposit product with externalId "
|
||||
+ externalId + " already exists", "externalId", externalId);
|
||||
}
|
||||
|
||||
logger.error(dve.getMessage(), dve);
|
||||
throw new PlatformDataIntegrityException("error.msg.deposit.product.unknown.data.integrity.issue",
|
||||
@@ -67,7 +67,7 @@ public class DepositProductWritePlatformServiceJpaRepositoryImpl implements Depo
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public CommandProcessingResult createDepositProduct(JsonCommand command) {
|
||||
public CommandProcessingResult createDepositProduct(final JsonCommand command) {
|
||||
try {
|
||||
this.context.authenticatedUser();
|
||||
this.fromApiJsonDeserializer.validateForCreate(command.json());
|
||||
@@ -78,7 +78,7 @@ public class DepositProductWritePlatformServiceJpaRepositoryImpl implements Depo
|
||||
final Integer lockinPeriodTypeIntValue = command.integerValueOfParameterNamed("lockinPeriodType");
|
||||
PeriodFrequencyType lockinPeriodType = PeriodFrequencyType.fromInt(lockinPeriodTypeIntValue);
|
||||
|
||||
DepositProduct product = DepositProduct.assembleFromJson(command,interestCompoundingPeriodType,lockinPeriodType);
|
||||
DepositProduct product = DepositProduct.assembleFromJson(command, interestCompoundingPeriodType, lockinPeriodType);
|
||||
|
||||
this.depositProductRepository.save(product);
|
||||
|
||||
@@ -136,5 +136,4 @@ public class DepositProductWritePlatformServiceJpaRepositoryImpl implements Depo
|
||||
.withEntityId(product.getId()) //
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user