You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ra...@apache.org on 2016/06/17 06:16:55 UTC

[1/3] incubator-fineract git commit: FINERACT-174

Repository: incubator-fineract
Updated Branches:
  refs/heads/develop 7fe50160c -> a89a43a3f


FINERACT-174


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

Branch: refs/heads/develop
Commit: 94ef2b0684bbb03fc5d4f7afa3f1cc0fedcfb86d
Parents: 7fe5016
Author: Nazeer Hussain Shaik <na...@confluxtechnologies.com>
Authored: Thu Jun 16 17:17:32 2016 +0530
Committer: Nazeer Hussain Shaik <na...@confluxtechnologies.com>
Committed: Thu Jun 16 17:17:32 2016 +0530

----------------------------------------------------------------------
 .../ProductToGLAccountMappingHelper.java        | 23 ++++++++++++++++++++
 .../SavingsProductToGLAccountMappingHelper.java | 10 +++++++--
 2 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/94ef2b06/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
index 7e2ee41..b6b93f6 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/ProductToGLAccountMappingHelper.java
@@ -103,6 +103,29 @@ public class ProductToGLAccountMappingHelper {
         }
     }
 
+    public void createOrmergeProductToAccountMappingChanges(final JsonElement element, final String paramName, final Long productId,
+            final int accountTypeId, final Map<String, Object> changes,
+            final GLAccountType expectedAccountType, final PortfolioProductType portfolioProductType) {
+        final Long accountId = this.fromApiJsonHelper.extractLongNamed(paramName, element);
+
+        // get the existing product
+        if (accountId != null) {
+            final ProductToGLAccountMapping accountMapping = this.accountMappingRepository.findCoreProductToFinAccountMapping(productId,
+                    portfolioProductType.getValue(), accountTypeId);
+            if(accountMapping == null) {
+                final GLAccount glAccount = getAccountByIdAndType(paramName, expectedAccountType, accountId);
+                changes.put(paramName, accountId);
+                ProductToGLAccountMapping newAccountMapping  = new ProductToGLAccountMapping(glAccount, productId,
+                portfolioProductType.getValue(), accountTypeId) ;
+                this.accountMappingRepository.save(newAccountMapping);
+            }else if (accountMapping.getGlAccount().getId() != accountId) {
+                final GLAccount glAccount = getAccountByIdAndType(paramName, expectedAccountType, accountId);
+                changes.put(paramName, accountId);
+                accountMapping.setGlAccount(glAccount);
+                this.accountMappingRepository.save(accountMapping);
+            }
+        }
+    }
     /**
      * Saves the payment type to Fund source mappings for a particular
      * product/product type (also populates the changes array if passed in)

http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/94ef2b06/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
index 529fb44..f888e60 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/producttoaccountmapping/service/SavingsProductToGLAccountMappingHelper.java
@@ -98,6 +98,12 @@ public class SavingsProductToGLAccountMappingHelper extends ProductToGLAccountMa
                 GLAccountType.LIABILITY, PortfolioProductType.SAVING);
     }
 
+    public void createOrmergeSavingsToLiabilityAccountMappingChanges(final JsonElement element, final String paramName, final Long productId,
+            final int accountTypeId, final Map<String, Object> changes) {
+        createOrmergeProductToAccountMappingChanges(element, paramName, productId, accountTypeId, changes,
+                GLAccountType.LIABILITY, PortfolioProductType.SAVING);
+    }
+    
     /*** Abstractions for payments channel related to savings products ***/
 
     public void savePaymentChannelToFundSourceMappings(final JsonCommand command, final JsonElement element, final Long productId,
@@ -222,9 +228,9 @@ public class SavingsProductToGLAccountMappingHelper extends ProductToGLAccountMa
                 mergeSavingsToLiabilityAccountMappingChanges(element, SAVINGS_PRODUCT_ACCOUNTING_PARAMS.TRANSFERS_SUSPENSE.getValue(),
                         savingsProductId, CASH_ACCOUNTS_FOR_SAVINGS.TRANSFERS_SUSPENSE.getValue(),
                         CASH_ACCOUNTS_FOR_SAVINGS.TRANSFERS_SUSPENSE.toString(), changes);
-                mergeSavingsToLiabilityAccountMappingChanges(element, SAVINGS_PRODUCT_ACCOUNTING_PARAMS.ESCHEAT_LIABILITY.getValue(),
+                createOrmergeSavingsToLiabilityAccountMappingChanges(element, SAVINGS_PRODUCT_ACCOUNTING_PARAMS.ESCHEAT_LIABILITY.getValue(),
                         savingsProductId, CASH_ACCOUNTS_FOR_SAVINGS.ESCHEAT_LIABILITY.getValue(),
-                        CASH_ACCOUNTS_FOR_SAVINGS.ESCHEAT_LIABILITY.toString(), changes);
+                         changes);
             break;
             case ACCRUAL_PERIODIC:
             break;


[3/3] incubator-fineract git commit: Merge branch 'PR145' into develop

Posted by ra...@apache.org.
Merge branch 'PR145' 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/a89a43a3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/a89a43a3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/a89a43a3

Branch: refs/heads/develop
Commit: a89a43a3f79bdb4d59ed3936a9082c6734b82bcd
Parents: 94ef2b0 6576786
Author: Adi Narayana Raju <ad...@confluxtechnologies.com>
Authored: Fri Jun 17 10:35:44 2016 +0530
Committer: Adi Narayana Raju <ad...@confluxtechnologies.com>
Committed: Fri Jun 17 10:35:44 2016 +0530

----------------------------------------------------------------------
 .../portfolio/loanaccount/domain/Loan.java      | 27 ++++++++++++--------
 1 file changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------



[2/3] incubator-fineract git commit: fineract-170,171

Posted by ra...@apache.org.
fineract-170,171


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

Branch: refs/heads/develop
Commit: 65767869b054c0c4d6ba3aad645359791bd69e20
Parents: 7fe5016
Author: keshav10 <ke...@confluxtechnologies.com>
Authored: Thu Jun 16 18:12:51 2016 +0530
Committer: keshav10 <ke...@confluxtechnologies.com>
Committed: Thu Jun 16 18:34:48 2016 +0530

----------------------------------------------------------------------
 .../portfolio/loanaccount/domain/Loan.java      | 27 ++++++++++++--------
 1 file changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/65767869/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index c5e494b..42427c4 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -40,7 +40,6 @@ import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Embedded;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
@@ -6018,15 +6017,13 @@ public class Loan extends AbstractPersistable<Long> {
         final MonetaryCurrency currency = getCurrency();
         Money interest = Money.zero(currency);
         Money fee = Money.zero(currency);
-        Money penalty = Money.zero(currency);
-        boolean isArrearsPresent = false;
+        Money penalty = Money.zero(currency);        
         for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
             if (installment.isNotFullyPaidOff()) {
-                if (!isArrearsPresent || !installment.getDueDate().isAfter(paymentDate)) {
+                if (!installment.getDueDate().isAfter(paymentDate)) {
                     interest = interest.plus(installment.getInterestOutstanding(currency));
                     fee = fee.plus(installment.getFeeChargesOutstanding(currency));
-                    penalty = penalty.plus(installment.getPenaltyChargesOutstanding(currency));
-                    isArrearsPresent = true;
+                    penalty = penalty.plus(installment.getPenaltyChargesOutstanding(currency));                    
                 } else if (installment.getFromDate().isBefore(paymentDate)) {
                     Money[]  balancesForCurrentPeroid = fetchInterestFeeAndPenalty(paymentDate, currency, installment);
                     interest = interest.plus(balancesForCurrentPeroid[0]);
@@ -6071,6 +6068,7 @@ public class Loan extends AbstractPersistable<Long> {
     public Money[] retriveIncomeForOverlappingPeriod(final LocalDate paymentDate) {
         Money[] balances = new Money[3];
         final MonetaryCurrency currency = getCurrency();
+        balances[0] = balances[1] = balances[2] = Money.zero(currency);        
         for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
             if (installment.getDueDate().isEqual(paymentDate)){
                 Money interest = installment.getInterestOutstanding(currency);
@@ -6202,13 +6200,22 @@ public class Loan extends AbstractPersistable<Long> {
         Money [] balances = retriveIncomeForOverlappingPeriod(transactionDate);
         for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
             if (!installment.getDueDate().isBefore(transactionDate)) {
-                totalPrincipal = totalPrincipal.plus(installment.getPrincipalOutstanding(currency));
-                newInstallments.remove(installment);
-            } 
+                if (!installment.isPartlyPaid() && !installment.isObligationsMet()) {
+                    totalPrincipal = totalPrincipal.plus(installment.getPrincipalOutstanding(currency));
+                    newInstallments.remove(installment);
+                }
+            }
         }
+
+        LocalDate installmentStartDate = getDisbursementDate();
+
+        if (newInstallments.size() > 0) {
+            installmentStartDate = newInstallments.get((newInstallments.size() - 1)).getDueDate();
+        }        
+        
         
         LoanRepaymentScheduleInstallment newInstallment = new LoanRepaymentScheduleInstallment(null, newInstallments.size() + 1,
-                newInstallments.get((newInstallments.size() - 1)).getDueDate(), transactionDate, totalPrincipal.getAmount(),
+                installmentStartDate, transactionDate, totalPrincipal.getAmount(),
                 balances[0].getAmount(), balances[1].getAmount(), balances[2].getAmount(), true, null);
         newInstallment.updateInstallmentNumber(newInstallments.size() + 1);
         newInstallments.add(newInstallment);