This is an automated email from the ASF dual-hosted git repository.

myrle pushed a commit to branch develop
in repository 
https://gitbox.apache.org/repos/asf/fineract-cn-deposit-account-management.git

commit 7b202a3404bac48ebb942742a50b0678b1d80530
Author: mgeiss <mge...@mifos.org>
AuthorDate: Tue Oct 3 11:02:45 2017 +0200

    added ability to use legacy account numbers
---
 .../main/java/io/mifos/deposit/TestActions.java    |  2 +-
 .../command/handler/ProductInstanceAggregate.java  | 37 +++++++++--------
 .../mapper/DividendDistributionMapper.java         |  1 -
 .../repository/ProductDefinitionCommandEntity.java |  1 -
 .../internal/service/helper/AccountingService.java | 47 +++++++++++-----------
 .../internal/service/helper/RhythmService.java     | 15 +++++++
 .../rest/ProductDefinitionRestController.java      |  1 -
 7 files changed, 58 insertions(+), 46 deletions(-)

diff --git a/component-test/src/main/java/io/mifos/deposit/TestActions.java 
b/component-test/src/main/java/io/mifos/deposit/TestActions.java
index 98fa6c7..680128e 100644
--- a/component-test/src/main/java/io/mifos/deposit/TestActions.java
+++ b/component-test/src/main/java/io/mifos/deposit/TestActions.java
@@ -46,7 +46,7 @@ public class TestActions extends 
AbstractDepositAccountManagementTest {
   }
 
   @Test(expected = ActionAlreadyExistsException.class)
-  public void shouldNoCreateActionAlreadyExists() throws Exception {
+  public void shouldNotCreateActionAlreadyExists() throws Exception {
     final Action action = Fixture.action();
     super.depositAccountManager.create(action);
 
diff --git 
a/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java
 
b/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java
index ac61c42..da6b8d7 100644
--- 
a/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java
+++ 
b/service/src/main/java/io/mifos/deposit/service/internal/command/handler/ProductInstanceAggregate.java
@@ -76,31 +76,30 @@ public class ProductInstanceAggregate {
     final ProductInstanceEntity productInstanceEntity =
         ProductInstanceMapper.map(productInstance, 
this.productDefinitionRepository);
 
-    if (productInstance.getAccountIdentifier() == null) {
-      final Optional<ProductDefinitionEntity> optionalProductDefinition =
-          
productDefinitionRepository.findByIdentifier(productInstance.getProductIdentifier());
+    final Optional<ProductDefinitionEntity> optionalProductDefinition =
+        
productDefinitionRepository.findByIdentifier(productInstance.getProductIdentifier());
 
-      optionalProductDefinition.ifPresent(productDefinitionEntity -> {
+    optionalProductDefinition.ifPresent(productDefinitionEntity -> {
 
-        final List<ProductInstanceEntity> currentProductInstances =
-            
this.productInstanceRepository.findByCustomerIdentifier(productInstance.getCustomerIdentifier());
+      final List<ProductInstanceEntity> currentProductInstances =
+          
this.productInstanceRepository.findByCustomerIdentifier(productInstance.getCustomerIdentifier());
 
-        final int accountSuffix = currentProductInstances.size() + 1;
-
-        final StringBuilder stringBuilder = new StringBuilder();
-        final String accountNumber = stringBuilder
-            .append(productInstance.getCustomerIdentifier())
-            .append(".")
-            .append(productDefinitionEntity.getEquityLedgerIdentifier())
-            .append(".")
-            .append(String.format("%05d", accountSuffix))
-            .toString();
+      final int accountSuffix = currentProductInstances.size() + 1;
+      final String accountNumber =
+          productInstance.getCustomerIdentifier() +
+              "." + productDefinitionEntity.getEquityLedgerIdentifier() +
+              "." + String.format("%05d", accountSuffix);
 
+      if (productInstance.getAccountIdentifier() == null) {
         productInstanceEntity.setAccountIdentifier(accountNumber);
+      } else {
+        
productInstanceEntity.setAccountIdentifier(productInstance.getAccountIdentifier());
+      }
 
-        this.accountingService.createAccount(productDefinitionEntity, 
productInstanceEntity);
-      });
-    }
+      
this.accountingService.createAccount(productDefinitionEntity.getEquityLedgerIdentifier(),
+          productDefinitionEntity.getName(), 
productInstanceEntity.getCustomerIdentifier(),
+          accountNumber, productInstance.getAccountIdentifier());
+    });
 
     productInstanceEntity.setCreatedBy(UserContextHolder.checkedGetUser());
     productInstanceEntity.setCreatedOn(LocalDateTime.now(Clock.systemUTC()));
diff --git 
a/service/src/main/java/io/mifos/deposit/service/internal/mapper/DividendDistributionMapper.java
 
b/service/src/main/java/io/mifos/deposit/service/internal/mapper/DividendDistributionMapper.java
index 6503836..1926606 100644
--- 
a/service/src/main/java/io/mifos/deposit/service/internal/mapper/DividendDistributionMapper.java
+++ 
b/service/src/main/java/io/mifos/deposit/service/internal/mapper/DividendDistributionMapper.java
@@ -16,7 +16,6 @@
 package io.mifos.deposit.service.internal.mapper;
 
 import io.mifos.core.api.util.UserContextHolder;
-import io.mifos.core.lang.DateConverter;
 import io.mifos.core.lang.DateOfBirth;
 import io.mifos.deposit.api.v1.definition.domain.DividendDistribution;
 import io.mifos.deposit.service.internal.repository.DividendDistributionEntity;
diff --git 
a/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
 
b/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
index 42208d7..1021080 100644
--- 
a/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
+++ 
b/service/src/main/java/io/mifos/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
@@ -17,7 +17,6 @@ package io.mifos.deposit.service.internal.repository;
 
 import io.mifos.core.mariadb.util.LocalDateTimeConverter;
 
-import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Convert;
 import javax.persistence.Entity;
diff --git 
a/service/src/main/java/io/mifos/deposit/service/internal/service/helper/AccountingService.java
 
b/service/src/main/java/io/mifos/deposit/service/internal/service/helper/AccountingService.java
index 2229a03..f23c932 100644
--- 
a/service/src/main/java/io/mifos/deposit/service/internal/service/helper/AccountingService.java
+++ 
b/service/src/main/java/io/mifos/deposit/service/internal/service/helper/AccountingService.java
@@ -15,24 +15,22 @@
  */
 package io.mifos.deposit.service.internal.service.helper;
 
+import com.google.common.collect.Lists;
 import io.mifos.accounting.api.v1.client.AccountNotFoundException;
 import io.mifos.accounting.api.v1.client.LedgerManager;
 import io.mifos.accounting.api.v1.client.LedgerNotFoundException;
 import io.mifos.accounting.api.v1.domain.Account;
 import io.mifos.accounting.api.v1.domain.AccountEntry;
+import io.mifos.accounting.api.v1.domain.AccountPage;
 import io.mifos.accounting.api.v1.domain.JournalEntry;
 import io.mifos.accounting.api.v1.domain.Ledger;
 import io.mifos.core.lang.ServiceException;
 import io.mifos.deposit.service.ServiceConstants;
-import io.mifos.deposit.service.internal.repository.ProductDefinitionEntity;
-import io.mifos.deposit.service.internal.repository.ProductInstanceEntity;
-import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 
@@ -50,31 +48,27 @@ public class AccountingService {
     this.ledgerManager = ledgerManager;
   }
 
-  public void createAccount(final ProductDefinitionEntity 
productDefinitionEntity,
-                            final ProductInstanceEntity productInstanceEntity) 
{
-    final String ledgerIdentifier = 
productDefinitionEntity.getEquityLedgerIdentifier();
+  public void createAccount(final String equityLedger,
+                            final String productName,
+                            final String customer,
+                            final String accountNumber,
+                            final String alternativeAccountNumber) {
     try {
-      final Ledger ledger = this.ledgerManager.findLedger(ledgerIdentifier);
+      final Ledger ledger = this.ledgerManager.findLedger(equityLedger);
       final Account account = new Account();
-      account.setIdentifier(productInstanceEntity.getAccountIdentifier());
+      account.setIdentifier(accountNumber);
       account.setType(ledger.getType());
-      account.setLedger(ledgerIdentifier);
-      account.setName(productDefinitionEntity.getName());
-
-      account.setHolders(new HashSet<>(
-          Arrays.asList(productInstanceEntity.getCustomerIdentifier()))
-      );
-
-      if (productInstanceEntity.getBeneficiaries() != null) {
-        account.setSignatureAuthorities(new HashSet<>(
-            
Arrays.asList(StringUtils.split(productInstanceEntity.getBeneficiaries(), ","))
-        ));
+      account.setLedger(equityLedger);
+      account.setName(productName);
+      account.setHolders(new HashSet<>(Lists.newArrayList(customer)));
+      account.setBalance(0.00D);
+      if (alternativeAccountNumber != null && 
!alternativeAccountNumber.equals(accountNumber)) {
+        account.setAlternativeAccountNumber(alternativeAccountNumber);
       }
 
-      account.setBalance(0.00D);
       this.ledgerManager.createAccount(account);
     } catch (final LedgerNotFoundException lnfex) {
-      throw ServiceException.notFound("Ledger {0} not found.", 
ledgerIdentifier);
+      throw ServiceException.notFound("Ledger {0} not found.", equityLedger);
     }
   }
 
@@ -82,7 +76,14 @@ public class AccountingService {
     try {
       return this.ledgerManager.findAccount(identifier);
     } catch (final AccountNotFoundException anfex) {
-      throw ServiceException.notFound("Account {0} not found.", identifier);
+      final AccountPage accountPage = this.ledgerManager.fetchAccounts(true, 
identifier, null, true,
+          0, 10, null, null);
+
+      return accountPage.getAccounts()
+          .stream()
+          .filter(account -> 
account.getAlternativeAccountNumber().equals(identifier))
+          .findFirst()
+          .orElseThrow(() -> ServiceException.notFound("Account {0} not 
found.", identifier));
     }
   }
 
diff --git 
a/service/src/main/java/io/mifos/deposit/service/internal/service/helper/RhythmService.java
 
b/service/src/main/java/io/mifos/deposit/service/internal/service/helper/RhythmService.java
index dfa7d18..67349a0 100644
--- 
a/service/src/main/java/io/mifos/deposit/service/internal/service/helper/RhythmService.java
+++ 
b/service/src/main/java/io/mifos/deposit/service/internal/service/helper/RhythmService.java
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2017 The Mifos Initiative.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package io.mifos.deposit.service.internal.service.helper;
 
 import io.mifos.core.api.util.NotFoundException;
diff --git 
a/service/src/main/java/io/mifos/deposit/service/rest/ProductDefinitionRestController.java
 
b/service/src/main/java/io/mifos/deposit/service/rest/ProductDefinitionRestController.java
index dfd1c1f..c925e43 100644
--- 
a/service/src/main/java/io/mifos/deposit/service/rest/ProductDefinitionRestController.java
+++ 
b/service/src/main/java/io/mifos/deposit/service/rest/ProductDefinitionRestController.java
@@ -18,7 +18,6 @@ package io.mifos.deposit.service.rest;
 import io.mifos.anubis.annotation.AcceptedTokenType;
 import io.mifos.anubis.annotation.Permittable;
 import io.mifos.core.command.gateway.CommandGateway;
-import io.mifos.core.lang.DateConverter;
 import io.mifos.core.lang.ServiceException;
 import io.mifos.deposit.api.v1.PermittableGroupIds;
 import io.mifos.deposit.api.v1.definition.domain.DividendDistribution;

-- 
To stop receiving notification emails like this one, please contact
my...@apache.org.

Reply via email to