You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by na...@apache.org on 2016/05/04 11:59:03 UTC

[1/2] incubator-fineract git commit: Adding validation to check whether savings account is his own account

Repository: incubator-fineract
Updated Branches:
  refs/heads/develop a9f811ca6 -> 92286b391


Adding validation to check whether savings account is his own account


Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/e507d6e2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/e507d6e2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/e507d6e2

Branch: refs/heads/develop
Commit: e507d6e204506f529f08185fd7317ab737e8c7e4
Parents: 2bd3b06
Author: Nazeer Hussain Shaik <na...@confluxtechnologies.com>
Authored: Wed May 4 15:43:16 2016 +0530
Committer: Nazeer Hussain Shaik <na...@confluxtechnologies.com>
Committed: Wed May 4 15:56:13 2016 +0530

----------------------------------------------------------------------
 .../SavingsAccountReadPlatformService.java      |  2 +
 .../SavingsAccountReadPlatformServiceImpl.java  | 14 ++++-
 .../shareaccounts/domain/ShareAccount.java      | 11 ++--
 .../domain/ShareAccountTransaction.java         |  4 +-
 .../ShareAccountDataSerializer.java             | 61 ++++++++++++++------
 .../shareproducts/domain/ShareProduct.java      | 36 ++++--------
 6 files changed, 76 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/e507d6e2/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java
index 0637c46..adac191 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformService.java
@@ -58,4 +58,6 @@ public interface SavingsAccountReadPlatformService {
     List<Long> retrieveSavingsIdsPendingDormant(LocalDate tenantLocalDate);
 
     List<Long> retrieveSavingsIdsPendingEscheat(LocalDate tenantLocalDate);
+    boolean isAccountBelongsToClient(final Long clientId, final Long accountId, final DepositAccountType depositAccountType, final String currencyCode) ;
+    
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/e507d6e2/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
index 8d93f46..f9014a5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java
@@ -24,7 +24,6 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Date;
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
@@ -40,7 +39,6 @@ import org.apache.fineract.organisation.monetary.data.CurrencyData;
 import org.apache.fineract.organisation.staff.data.StaffData;
 import org.apache.fineract.organisation.staff.service.StaffReadPlatformService;
 import org.apache.fineract.portfolio.account.data.AccountTransferData;
-import org.apache.fineract.portfolio.calendar.service.CalendarUtils;
 import org.apache.fineract.portfolio.charge.data.ChargeData;
 import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService;
 import org.apache.fineract.portfolio.client.data.ClientData;
@@ -1156,6 +1154,18 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead
 		return ret;
 	}
 
+    @Override
+    public boolean isAccountBelongsToClient(final Long clientId, final Long accountId, final DepositAccountType depositAccountType,
+            final String currencyCode) {
+        try {
+            final StringBuffer buff = new StringBuffer("select count(*) from m_savings_account sa ") ;
+            buff.append(" where sa.id = ? and sa.client_id = ? and sa.deposit_type_enum = ? and sa.currency_code = ? and sa.status_enum = 300");
+            return this.jdbcTemplate.queryForObject(buff.toString(), 
+                    new Object[] { accountId, clientId, depositAccountType.getValue(), currencyCode }, Integer.class) > 0;
+        } catch (final EmptyResultDataAccessException e) {
+            throw new SavingsAccountNotFoundException(accountId);
+        }
+    }
     /*
      * private static final class SavingsAccountAnnualFeeMapper implements
      * RowMapper<SavingsAccountAnnualFeeData> {

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/e507d6e2/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
index 6494383..d14194a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccount.java
@@ -238,7 +238,7 @@ public class ShareAccount extends AbstractPersistable<Long> {
 
     public boolean setExternalId(final String externalId) {
         boolean toReturn = false;
-        if (!this.externalId.equals(externalId)) {
+        if (this.externalId == null || !this.externalId.equals(externalId)) {
             this.externalId = externalId;
             toReturn = true;
         }
@@ -272,10 +272,7 @@ public class ShareAccount extends AbstractPersistable<Long> {
     
     public boolean setAllowDividendCalculationForInactiveClients(Boolean allowDividendCalculationForInactiveClients) {
         boolean returnValue = false;
-        if (this.allowDividendCalculationForInactiveClients == null) {
-            this.allowDividendCalculationForInactiveClients = allowDividendCalculationForInactiveClients;
-            returnValue = true;
-        } else if (!this.allowDividendCalculationForInactiveClients.equals(allowDividendCalculationForInactiveClients)) {
+        if (this.allowDividendCalculationForInactiveClients == null || !this.allowDividendCalculationForInactiveClients.equals(allowDividendCalculationForInactiveClients)) {
             this.allowDividendCalculationForInactiveClients = allowDividendCalculationForInactiveClients;
             returnValue = true;
         }
@@ -293,7 +290,7 @@ public class ShareAccount extends AbstractPersistable<Long> {
 
     public boolean setLockPeriodFrequencyEnum(final PeriodFrequencyType lockinPeriodFrequencyType) {
         boolean returnValue = false;
-        if (!this.lockinPeriodFrequencyType.getValue().equals(lockinPeriodFrequencyType.getValue())) {
+        if (this.lockinPeriodFrequencyType == null || !this.lockinPeriodFrequencyType.getValue().equals(lockinPeriodFrequencyType.getValue())) {
             this.lockinPeriodFrequencyType = lockinPeriodFrequencyType;
             returnValue = true;
         }
@@ -311,7 +308,7 @@ public class ShareAccount extends AbstractPersistable<Long> {
 
     public boolean setminimumActivePeriodTypeEnum(final PeriodFrequencyType minimumActivePeriodForDividends) {
         boolean returnValue = false;
-        if (!this.minimumActivePeriodFrequencyType.getValue().equals(minimumActivePeriodForDividends.getValue())) {
+        if (this.minimumActivePeriodFrequencyType == null || !this.minimumActivePeriodFrequencyType.getValue().equals(minimumActivePeriodForDividends.getValue())) {
             this.minimumActivePeriodFrequencyType = minimumActivePeriodForDividends;
             returnValue = true;
         }

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/e507d6e2/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
index af2225e..da0d784 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/domain/ShareAccountTransaction.java
@@ -243,5 +243,7 @@ public class ShareAccountTransaction extends AbstractPersistable<Long> {
         return this.active ;
     }
     
-    
+    public BigDecimal shareValue() {
+        return this.shareValue ;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/e507d6e2/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java
index 18411b6..927f6f1 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareaccounts/serialization/ShareAccountDataSerializer.java
@@ -49,8 +49,11 @@ import org.apache.fineract.portfolio.client.domain.Client;
 import org.apache.fineract.portfolio.client.domain.ClientRepositoryWrapper;
 import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType;
 import org.apache.fineract.portfolio.loanproduct.exception.InvalidCurrencyException;
+import org.apache.fineract.portfolio.savings.DepositAccountType;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccount;
 import org.apache.fineract.portfolio.savings.domain.SavingsAccountRepositoryWrapper;
+import org.apache.fineract.portfolio.savings.exception.SavingsAccountNotFoundException;
+import org.apache.fineract.portfolio.savings.service.SavingsAccountReadPlatformService;
 import org.apache.fineract.portfolio.shareaccounts.domain.ShareAccount;
 import org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountCharge;
 import org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountChargePaidBy;
@@ -84,16 +87,20 @@ public class ShareAccountDataSerializer {
 
     private final ShareProductRepositoryWrapper shareProductRepository;
 
+    private final SavingsAccountReadPlatformService savingsAccountReadPlatformService ;
+    
     @Autowired
     public ShareAccountDataSerializer(final PlatformSecurityContext platformSecurityContext, final FromJsonHelper fromApiJsonHelper,
             final ChargeRepositoryWrapper chargeRepository, final SavingsAccountRepositoryWrapper savingsAccountRepositoryWrapper,
-            final ClientRepositoryWrapper clientRepositoryWrapper, final ShareProductRepositoryWrapper shareProductRepository) {
+            final ClientRepositoryWrapper clientRepositoryWrapper, final ShareProductRepositoryWrapper shareProductRepository,
+            final SavingsAccountReadPlatformService savingsAccountReadPlatformService) {
         this.platformSecurityContext = platformSecurityContext;
         this.fromApiJsonHelper = fromApiJsonHelper;
         this.chargeRepository = chargeRepository;
         this.savingsAccountRepositoryWrapper = savingsAccountRepositoryWrapper;
         this.clientRepositoryWrapper = clientRepositoryWrapper;
         this.shareProductRepository = shareProductRepository;
+        this.savingsAccountReadPlatformService = savingsAccountReadPlatformService ;
     }
 
     public ShareAccount validateAndCreate(JsonCommand jsonCommand) {
@@ -120,16 +127,16 @@ public class ShareAccountDataSerializer {
         Long savingsAccountId = this.fromApiJsonHelper.extractLongNamed(ShareAccountApiConstants.savingsaccountid_paramname, element);
         baseDataValidator.reset().parameter(ShareAccountApiConstants.savingsaccountid_paramname).value(savingsAccountId).notNull()
                 .longGreaterThanZero();
-
         final Long requestedShares = this.fromApiJsonHelper.extractLongNamed(ShareAccountApiConstants.requestedshares_paramname, element);
         baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares).notNull()
                 .longGreaterThanZero();
-        if(requestedShares < shareProduct.getMinimumClientShares()) {
+        
+        if(shareProduct.getMinimumClientShares() != null && requestedShares < shareProduct.getMinimumClientShares()) {
             baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares)
             .failWithCode("client.can.not.purchase.shares.lessthan.product.definition", "Client can not purchase shares less than product definition");
         }
         
-        if(requestedShares > shareProduct.getMaximumClientShares()) {
+        if(shareProduct.getMaximumClientShares() != null && requestedShares > shareProduct.getMaximumClientShares()) {
             baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares)
             .failWithCode("client.can.not.purchase.shares.morethan.product.definition", "Client can not purchase shares more than product definition");
         }
@@ -156,7 +163,10 @@ public class ShareAccountDataSerializer {
         if (!dataValidationErrors.isEmpty()) { throw new PlatformApiDataValidationException(dataValidationErrors); }
 
         Client client = this.clientRepositoryWrapper.findOneWithNotFoundDetection(clientId);
-        SavingsAccount savingsAccount = this.savingsAccountRepositoryWrapper.findOneWithNotFoundDetection(savingsAccountId);
+        if(!this.savingsAccountReadPlatformService.isAccountBelongsToClient(clientId, savingsAccountId, DepositAccountType.SAVINGS_DEPOSIT, shareProduct.getCurrency().getCode())) {
+            throw new SavingsAccountNotFoundException(savingsAccountId) ;
+        }
+        SavingsAccount savingsAccount = this.savingsAccountRepositoryWrapper.findOneWithNotFoundDetection(savingsAccountId, DepositAccountType.SAVINGS_DEPOSIT);
         final MonetaryCurrency currency = shareProduct.getCurrency();
         Set<ShareAccountCharge> charges = assembleListOfAccountCharges(element, currency.getCode());
 
@@ -266,6 +276,9 @@ public class ShareAccountDataSerializer {
             baseDataValidator.reset().parameter(ShareAccountApiConstants.savingsaccountid_paramname).value(savingsAccountId).notNull()
             .longGreaterThanZero();
             if(savingsAccountId != null) {
+                if(!this.savingsAccountReadPlatformService.isAccountBelongsToClient(account.getClientId(), savingsAccountId, DepositAccountType.SAVINGS_DEPOSIT, shareProduct.getCurrency().getCode())) {
+                    throw new SavingsAccountNotFoundException(savingsAccountId) ;
+                }
                 SavingsAccount savingsAccount = this.savingsAccountRepositoryWrapper.findOneWithNotFoundDetection(savingsAccountId);
                 if (account.setSavingsAccount(savingsAccount)) {
                     actualChanges.put(ShareAccountApiConstants.savingsaccountid_paramname, savingsAccount.getId());
@@ -273,43 +286,55 @@ public class ShareAccountDataSerializer {
             }
         }
 
+        Date existingApplicationDate = null ;
         if (this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.requestedshares_paramname, element)
                 || this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.charges_paramname, element)) {
             Set<ShareAccountTransaction> transactions = account.getShareAccountTransactions();
             List<Long> reveralIds = new ArrayList<>();
             for (ShareAccountTransaction transaction : transactions) {
+                transaction.setActive(false);
+                if(!transaction.isChargeTransaction()) {
+                    existingApplicationDate = transaction.getPurchasedDate() ;
+                }
                 reveralIds.add(transaction.getId());
             }
+            
             actualChanges.put("reversalIds", reveralIds);
-            account.removeTransactions();
-            account.removeCharges();
+            Set<ShareAccountCharge> charges = account.getCharges() ;
+            for(ShareAccountCharge charge: charges) {
+                charge.setActive(false);
+            }
         }
 
         if (this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.requestedshares_paramname, element)) {
             Long requestedShares = this.fromApiJsonHelper.extractLongNamed(ShareAccountApiConstants.requestedshares_paramname, element);
-            /*
-             * BigDecimal unitPrice =
-             * this.fromApiJsonHelper.extractBigDecimalNamed
-             * (ShareAccountApiConstants.purchasedprice_paramname, element,
-             * locale);
-             */
-            Date applicationDate = this.fromApiJsonHelper.extractLocalDateNamed(ShareAccountApiConstants.applicationdate_param, element)
-                    .toDate();
+            Date applicationDate = null ;
+            if(this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.applicationdate_param, element)) {
+                applicationDate = this.fromApiJsonHelper.extractLocalDateNamed(ShareAccountApiConstants.applicationdate_param, element)
+                        .toDate();    
+            }else {
+                applicationDate = existingApplicationDate ;
+            }
             BigDecimal unitPrice = shareProduct.deriveMarketPrice(applicationDate);
             ShareAccountTransaction transaction = new ShareAccountTransaction(applicationDate, requestedShares, unitPrice);
             account.addTransaction(transaction);
             actualChanges.put(ShareAccountApiConstants.requestedshares_paramname, "Transaction");
             
-            if(requestedShares < shareProduct.getMinimumClientShares()) {
+            if(shareProduct.getMinimumClientShares() != null && requestedShares < shareProduct.getMinimumClientShares()) {
                 baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares)
                 .failWithCode("client.can.not.purchase.shares.lessthan.product.definition", "Client can not purchase shares less than product definition");
             }
             
-            if(requestedShares > shareProduct.getMaximumClientShares()) {
+            if(shareProduct.getMaximumClientShares() != null && requestedShares > shareProduct.getMaximumClientShares()) {
                 baseDataValidator.reset().parameter(ShareAccountApiConstants.requestedshares_paramname).value(requestedShares)
                 .failWithCode("client.can.not.purchase.shares.morethan.product.definition", "Client can not purchase shares more than product definition");
             }
-        }
+        }/*else if(this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.charges_paramname, element)) {
+            //Since we are removing all purchase transactions when either charge param or requestedShares param exists
+            for(ShareAccountTransaction transaction:existingTransactions) {
+                account.addTransaction(transaction);
+            }
+        }*/
 
         if (this.fromApiJsonHelper.parameterExists(ShareAccountApiConstants.allowdividendcalculationforinactiveclients_paramname, element)) {
             Boolean allowdividendsForInactiveClients = this.fromApiJsonHelper.extractBooleanNamed(

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/e507d6e2/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java
index b761d94..f14efd5 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/domain/ShareProduct.java
@@ -196,7 +196,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setDescription(String description) {
         boolean returnValue = false;
-        if (!this.description.equals(description)) {
+        if (this.description == null || !this.description.equals(description)) {
             this.description = description;
             returnValue = true;
         }
@@ -205,7 +205,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setExternalId(String externalId) {
         boolean returnValue = false;
-        if (!this.externalId.equals(externalId)) {
+        if (this.externalId == null || !this.externalId.equals(externalId)) {
             this.externalId = externalId;
             returnValue = true;
         }
@@ -228,10 +228,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setTotalIssuedShares(Long totalSharesIssued) {
         boolean returnValue = false;
-        if(this.totalSharesIssued == null) {
-            this.totalSharesIssued = totalSharesIssued ;
-            returnValue = true ;
-        }else if (!this.totalSharesIssued.equals(totalSharesIssued)) {
+        if (this.totalSharesIssued == null || !this.totalSharesIssued.equals(totalSharesIssued)) {
             this.totalSharesIssued = totalSharesIssued;
             returnValue = true;
         }
@@ -262,7 +259,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setMinimumShares(final Long minimumShares) {
         boolean returnValue = false;
-        if (!this.minimumShares.equals(minimumShares)) {
+        if (this.minimumShares == null || !this.minimumShares.equals(minimumShares)) {
             this.minimumShares = minimumShares;
             returnValue = true;
         }
@@ -280,7 +277,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setMaximumShares(final Long maximumShares) {
         boolean returnValue = false;
-        if (!this.maximumShares.equals(maximumShares)) {
+        if (this.maximumShares == null || !this.maximumShares.equals(maximumShares)) {
             this.maximumShares = maximumShares;
             returnValue = true;
         }
@@ -316,7 +313,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setAllowDividendCalculationForInactiveClients(Boolean allowDividendCalculationForInactiveClients) {
         boolean returnValue = false;
-        if (!this.allowDividendCalculationForInactiveClients.equals(allowDividendCalculationForInactiveClients)) {
+        if (this.allowDividendCalculationForInactiveClients == null || !this.allowDividendCalculationForInactiveClients.equals(allowDividendCalculationForInactiveClients)) {
             this.allowDividendCalculationForInactiveClients = allowDividendCalculationForInactiveClients;
             returnValue = true;
         }
@@ -325,10 +322,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setLockinPeriod(final Integer lockinPeriod) {
         boolean returnValue = false;
-        if (this.lockinPeriod == null) {
-            this.lockinPeriod = lockinPeriod;
-            returnValue = true;
-        } else if (!this.lockinPeriod.equals(lockinPeriod)) {
+        if (this.lockinPeriod == null || !this.lockinPeriod.equals(lockinPeriod)) {
             this.lockinPeriod = lockinPeriod;
             returnValue = true;
         }
@@ -337,7 +331,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setLockPeriodFrequencyType(final PeriodFrequencyType lockPeriod) {
         boolean returnValue = false;
-        if (!this.lockPeriodType.equals(lockPeriod)) {
+        if (this.lockPeriodType == null || !this.lockPeriodType.equals(lockPeriod)) {
             this.lockPeriodType = lockPeriod;
             returnValue = true;
         }
@@ -346,10 +340,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setminimumActivePeriod(final Integer minimumActivePeriod) {
         boolean returnValue = false;
-        if (this.minimumActivePeriod == null) {
-            this.minimumActivePeriod = minimumActivePeriod;
-            returnValue = true;
-        } else if (!this.minimumActivePeriod.equals(minimumActivePeriod)) {
+        if (this.minimumActivePeriod == null || !this.minimumActivePeriod.equals(minimumActivePeriod)) {
             this.minimumActivePeriod = minimumActivePeriod;
             returnValue = true;
         }
@@ -358,7 +349,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setminimumActivePeriodFrequencyType(final PeriodFrequencyType minimumActivePeriodForDividends) {
         boolean returnValue = false;
-        if (!this.minimumActivePeriodType.equals(minimumActivePeriodForDividends)) {
+        if (this.minimumActivePeriodType == null || !this.minimumActivePeriodType.equals(minimumActivePeriodForDividends)) {
             this.minimumActivePeriodType = minimumActivePeriodForDividends;
             returnValue = true;
         }
@@ -371,10 +362,7 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
 
     public boolean setshareCapitalValue(BigDecimal shareCapitalValue) {
         boolean updated = false;
-        if (this.shareCapital == null) {
-            this.shareCapital = shareCapitalValue;
-            updated = true;
-        } else if (!this.shareCapital.equals(shareCapitalValue)) {
+        if (this.shareCapital == null || !this.shareCapital.equals(shareCapitalValue)) {
             this.shareCapital = shareCapitalValue;
             updated = true;
         }
@@ -451,4 +439,4 @@ public class ShareProduct extends AbstractAuditableCustom<AppUser, Long> {
     public Long getDefaultClientShares() {
         return this.nominalShares ;
     }
-}
+}
\ No newline at end of file


[2/2] incubator-fineract git commit: Merge branch 'pullrequest97' into develop

Posted by na...@apache.org.
Merge branch 'pullrequest97' into develop


Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/92286b39
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/92286b39
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/92286b39

Branch: refs/heads/develop
Commit: 92286b3910ef426425e97535ae7fc57912d0e381
Parents: a9f811c e507d6e
Author: Nazeer Hussain Shaik <na...@confluxtechnologies.com>
Authored: Wed May 4 17:25:06 2016 +0530
Committer: Nazeer Hussain Shaik <na...@confluxtechnologies.com>
Committed: Wed May 4 17:25:06 2016 +0530

----------------------------------------------------------------------
 .../SavingsAccountReadPlatformService.java      |  2 +
 .../SavingsAccountReadPlatformServiceImpl.java  | 14 ++++-
 .../shareaccounts/domain/ShareAccount.java      | 11 ++--
 .../domain/ShareAccountTransaction.java         |  4 +-
 .../ShareAccountDataSerializer.java             | 61 ++++++++++++++------
 .../shareproducts/domain/ShareProduct.java      | 36 ++++--------
 6 files changed, 76 insertions(+), 52 deletions(-)
----------------------------------------------------------------------