You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ju...@apache.org on 2019/10/09 07:39:31 UTC
[fineract-cn-cheques] 17/41: added ability to handle legacy account
numbers
This is an automated email from the ASF dual-hosted git repository.
juhan pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract-cn-cheques.git
commit b0bb0e8269578f3e9f6dfe7d883d7d6f1f03d4da
Author: mgeiss <mg...@mifos.org>
AuthorDate: Tue Oct 3 11:15:45 2017 +0200
added ability to handle legacy account numbers
---
api/src/main/java/io/mifos/cheque/api/v1/domain/Cheque.java | 1 -
.../io/mifos/cheque/api/v1/domain/ChequeTransaction.java | 1 -
.../src/main/java/io/mifos/cheque/TestCheques.java | 12 ++++++++----
component-test/src/main/java/io/mifos/cheque/TestMICR.java | 7 +++++++
.../service/internal/command/handler/ChequeAggregate.java | 4 ++--
.../service/internal/service/helper/AccountingService.java | 13 ++++++++++---
6 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/api/src/main/java/io/mifos/cheque/api/v1/domain/Cheque.java b/api/src/main/java/io/mifos/cheque/api/v1/domain/Cheque.java
index a14a968..e50172b 100644
--- a/api/src/main/java/io/mifos/cheque/api/v1/domain/Cheque.java
+++ b/api/src/main/java/io/mifos/cheque/api/v1/domain/Cheque.java
@@ -18,7 +18,6 @@ package io.mifos.cheque.api.v1.domain;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
public class Cheque {
diff --git a/api/src/main/java/io/mifos/cheque/api/v1/domain/ChequeTransaction.java b/api/src/main/java/io/mifos/cheque/api/v1/domain/ChequeTransaction.java
index 43507bb..1129613 100644
--- a/api/src/main/java/io/mifos/cheque/api/v1/domain/ChequeTransaction.java
+++ b/api/src/main/java/io/mifos/cheque/api/v1/domain/ChequeTransaction.java
@@ -16,7 +16,6 @@
package io.mifos.cheque.api.v1.domain;
import io.mifos.core.lang.validation.constraints.ValidIdentifier;
-import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
diff --git a/component-test/src/main/java/io/mifos/cheque/TestCheques.java b/component-test/src/main/java/io/mifos/cheque/TestCheques.java
index 0acbd3b..f0b8183 100644
--- a/component-test/src/main/java/io/mifos/cheque/TestCheques.java
+++ b/component-test/src/main/java/io/mifos/cheque/TestCheques.java
@@ -16,6 +16,7 @@
package io.mifos.cheque;
import com.google.common.collect.Sets;
+import io.mifos.accounting.api.v1.domain.Account;
import io.mifos.accounting.api.v1.domain.Creditor;
import io.mifos.accounting.api.v1.domain.Debtor;
import io.mifos.accounting.api.v1.domain.JournalEntry;
@@ -37,14 +38,11 @@ import org.mockito.Matchers;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.validation.AbstractErrors;
import org.springframework.validation.BeanPropertyBindingResult;
-import org.springframework.validation.BindingResult;
-import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
-import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import java.util.Collections;
+import java.util.Optional;
import java.util.UUID;
public class TestCheques extends AbstractChequeTest {
@@ -91,6 +89,12 @@ public class TestCheques extends AbstractChequeTest {
.doAnswer(invocation -> true)
.when(this.accountingServiceSpy).accountExists(randomCheque.getMicr().getAccountNumber());
+ final Account mockedAccount = new Account();
+ mockedAccount.setIdentifier(randomCheque.getMicr().getAccountNumber());
+ Mockito
+ .doAnswer(invocation -> Optional.of(mockedAccount))
+ .when(this.accountingServiceSpy).findAccount(randomCheque.getMicr().getAccountNumber());
+
final ChequeTransaction chequeTransaction = new ChequeTransaction();
chequeTransaction.setCheque(randomCheque);
chequeTransaction.setChequesReceivableAccount(RandomStringUtils.randomAlphabetic(34));
diff --git a/component-test/src/main/java/io/mifos/cheque/TestMICR.java b/component-test/src/main/java/io/mifos/cheque/TestMICR.java
index 197c235..ea96c7b 100644
--- a/component-test/src/main/java/io/mifos/cheque/TestMICR.java
+++ b/component-test/src/main/java/io/mifos/cheque/TestMICR.java
@@ -15,6 +15,7 @@
*/
package io.mifos.cheque;
+import io.mifos.accounting.api.v1.domain.Account;
import io.mifos.cheque.api.v1.EventConstants;
import io.mifos.cheque.api.v1.client.DependingResourceNotValidException;
import io.mifos.cheque.api.v1.client.InvalidChequeNumberException;
@@ -150,6 +151,12 @@ public class TestMICR extends AbstractChequeTest {
.doAnswer(invocation -> true)
.when(this.accountingServiceSpy).accountExists(randomCheque.getMicr().getAccountNumber());
+ final Account mockedAccount = new Account();
+ mockedAccount.setIdentifier(randomCheque.getMicr().getAccountNumber());
+ Mockito
+ .doAnswer(invocation -> Optional.of(mockedAccount))
+ .when(this.accountingServiceSpy).findAccount(randomCheque.getMicr().getAccountNumber());
+
final ChequeTransaction chequeTransaction = new ChequeTransaction();
chequeTransaction.setCheque(randomCheque);
chequeTransaction.setCreditorAccountNumber(RandomStringUtils.randomAlphanumeric(34));
diff --git a/service/src/main/java/io/mifos/cheque/service/internal/command/handler/ChequeAggregate.java b/service/src/main/java/io/mifos/cheque/service/internal/command/handler/ChequeAggregate.java
index 3bb746a..666742f 100644
--- a/service/src/main/java/io/mifos/cheque/service/internal/command/handler/ChequeAggregate.java
+++ b/service/src/main/java/io/mifos/cheque/service/internal/command/handler/ChequeAggregate.java
@@ -158,8 +158,8 @@ public class ChequeAggregate {
} else {
throw ServiceException.conflict("Account {0} never issued cheques.", micr.getAccountNumber());
}
-
- debtor.setAccountNumber(micr.getAccountNumber());
+ this.accountingService.findAccount(micr.getAccountNumber())
+ .ifPresent(account -> debtor.setAccountNumber(account.getIdentifier()));
chequeEntity.setState(State.PROCESSED.name());
} else {
debtor.setAccountNumber(chequeTransactionCommand.chequesReceivableAccount());
diff --git a/service/src/main/java/io/mifos/cheque/service/internal/service/helper/AccountingService.java b/service/src/main/java/io/mifos/cheque/service/internal/service/helper/AccountingService.java
index 4667c04..46bb20a 100644
--- a/service/src/main/java/io/mifos/cheque/service/internal/service/helper/AccountingService.java
+++ b/service/src/main/java/io/mifos/cheque/service/internal/service/helper/AccountingService.java
@@ -19,6 +19,7 @@ import com.google.common.collect.Sets;
import io.mifos.accounting.api.v1.client.AccountNotFoundException;
import io.mifos.accounting.api.v1.client.LedgerManager;
import io.mifos.accounting.api.v1.domain.Account;
+import io.mifos.accounting.api.v1.domain.AccountPage;
import io.mifos.accounting.api.v1.domain.Creditor;
import io.mifos.accounting.api.v1.domain.Debtor;
import io.mifos.accounting.api.v1.domain.JournalEntry;
@@ -67,7 +68,7 @@ public class AccountingService {
return;
}
- final Account account = this.ledgerManager.findAccount(sourceAccount);
+ final Account account = this.findAccount(sourceAccount).orElseThrow(AccountNotFoundException::new);
if (account.getBalance() < totalCharges) {
throw ServiceException.conflict("Insufficient account balance.");
}
@@ -80,7 +81,7 @@ public class AccountingService {
journalEntry.setClerk(UserContextHolder.checkedGetUser());
final Debtor debtor = new Debtor();
- debtor.setAccountNumber(sourceAccount);
+ debtor.setAccountNumber(account.getIdentifier());
debtor.setAmount(totalCharges.toString());
journalEntry.setDebtors(Sets.newHashSet(debtor));
@@ -115,7 +116,13 @@ public class AccountingService {
try {
return Optional.of(this.ledgerManager.findAccount(accountNumber));
} catch (final AccountNotFoundException anfex) {
- return Optional.empty();
+ final AccountPage accountPage = this.ledgerManager.fetchAccounts(true, accountNumber, null, true,
+ 0, 10, null, null);
+
+ return accountPage.getAccounts()
+ .stream()
+ .filter(account -> account.getAlternativeAccountNumber().equals(accountNumber))
+ .findFirst();
}
}
}