Merge pull request #603 from pramodn02/MIFOSX-689_2
update account transfers with new loan transaction id
This commit is contained in:
+5
@@ -175,4 +175,9 @@ public class AccountTransfer extends AbstractPersistable<Long> {
|
|||||||
public SavingsAccount getFromAccount() {
|
public SavingsAccount getFromAccount() {
|
||||||
return this.fromAccount;
|
return this.fromAccount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void updateToLoanTransaction(LoanTransaction toLoanTransaction) {
|
||||||
|
this.toLoanTransaction = toLoanTransaction;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+3
@@ -19,4 +19,7 @@ public interface AccountTransferRepository extends JpaRepository<AccountTransfer
|
|||||||
|
|
||||||
@Query("from AccountTransfer at where (at.fromLoanAccount.id= :accountNumber or at.toLoanAccount.id=:accountNumber) and at.reversed=false")
|
@Query("from AccountTransfer at where (at.fromLoanAccount.id= :accountNumber or at.toLoanAccount.id=:accountNumber) and at.reversed=false")
|
||||||
List<AccountTransfer> findAllByLoanId(@Param("accountNumber") Long accountNumber);
|
List<AccountTransfer> findAllByLoanId(@Param("accountNumber") Long accountNumber);
|
||||||
|
|
||||||
|
@Query("from AccountTransfer at where at.toLoanTransaction.id= :loanTransactionId and at.reversed=false")
|
||||||
|
AccountTransfer findByToLoanTransactionId(@Param("loanTransactionId") Long loanTransactionId);
|
||||||
}
|
}
|
||||||
+3
@@ -9,6 +9,7 @@ import org.mifosplatform.infrastructure.core.api.JsonCommand;
|
|||||||
import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
|
import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
|
||||||
import org.mifosplatform.portfolio.account.PortfolioAccountType;
|
import org.mifosplatform.portfolio.account.PortfolioAccountType;
|
||||||
import org.mifosplatform.portfolio.account.data.AccountTransferDTO;
|
import org.mifosplatform.portfolio.account.data.AccountTransferDTO;
|
||||||
|
import org.mifosplatform.portfolio.loanaccount.domain.LoanTransaction;
|
||||||
|
|
||||||
public interface AccountTransfersWritePlatformService {
|
public interface AccountTransfersWritePlatformService {
|
||||||
|
|
||||||
@@ -19,4 +20,6 @@ public interface AccountTransfersWritePlatformService {
|
|||||||
Long transferFunds(AccountTransferDTO accountTransferDTO);
|
Long transferFunds(AccountTransferDTO accountTransferDTO);
|
||||||
|
|
||||||
void reverseAllTransactions(Long accountId, PortfolioAccountType accountTypeId);
|
void reverseAllTransactions(Long accountId, PortfolioAccountType accountTypeId);
|
||||||
|
|
||||||
|
void updateLoanTransaction(Long loanTransactionId, LoanTransaction newLoanTransaction);
|
||||||
}
|
}
|
||||||
+10
@@ -239,6 +239,16 @@ public class AccountTransfersWritePlatformServiceImpl implements AccountTransfer
|
|||||||
|
|
||||||
return transferTransactionId;
|
return transferTransactionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void updateLoanTransaction(final Long loanTransactionId,final LoanTransaction newLoanTransaction){
|
||||||
|
final AccountTransfer transferTransaction = this.accountTransferRepository.findByToLoanTransactionId(loanTransactionId);
|
||||||
|
if(transferTransaction!=null){
|
||||||
|
transferTransaction.updateToLoanTransaction(newLoanTransaction);
|
||||||
|
this.accountTransferRepository.save(transferTransaction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isLoanToSavingsAccountTransfer(final PortfolioAccountType fromAccountType, final PortfolioAccountType toAccountType) {
|
private boolean isLoanToSavingsAccountTransfer(final PortfolioAccountType fromAccountType, final PortfolioAccountType toAccountType) {
|
||||||
return fromAccountType.isLoanAccount() && toAccountType.isSavingsAccount();
|
return fromAccountType.isLoanAccount() && toAccountType.isSavingsAccount();
|
||||||
|
|||||||
+5
-11
@@ -5,8 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.mifosplatform.portfolio.loanaccount.domain;
|
package org.mifosplatform.portfolio.loanaccount.domain;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores details of {@link LoanTransaction}'s that were reversed or newly
|
* Stores details of {@link LoanTransaction}'s that were reversed or newly
|
||||||
@@ -16,16 +16,10 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class ChangedTransactionDetail {
|
public class ChangedTransactionDetail {
|
||||||
|
|
||||||
private final List<LoanTransaction> newTransactions = new ArrayList<LoanTransaction>();
|
private final Map<Long,LoanTransaction> newTransactionMappings = new HashMap<Long, LoanTransaction>();
|
||||||
|
|
||||||
private final List<LoanTransaction> reversedTransactions = new ArrayList<LoanTransaction>();
|
public Map<Long, LoanTransaction> getNewTransactionMappings() {
|
||||||
|
return this.newTransactionMappings;
|
||||||
public List<LoanTransaction> getNewTransactions() {
|
|
||||||
return this.newTransactions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<LoanTransaction> getReversedTransactions() {
|
|
||||||
return this.reversedTransactions;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -444,10 +444,10 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
final List<LoanTransaction> allNonContraTransactionsPostDisbursement = retreiveListOfTransactionsPostDisbursement();
|
final List<LoanTransaction> allNonContraTransactionsPostDisbursement = retreiveListOfTransactionsPostDisbursement();
|
||||||
changedTransactionDetail = loanRepaymentScheduleTransactionProcessor.handleTransaction(getDisbursementDate(),
|
changedTransactionDetail = loanRepaymentScheduleTransactionProcessor.handleTransaction(getDisbursementDate(),
|
||||||
allNonContraTransactionsPostDisbursement, getCurrency(), this.repaymentScheduleInstallments, setOfLoanCharges());
|
allNonContraTransactionsPostDisbursement, getCurrency(), this.repaymentScheduleInstallments, setOfLoanCharges());
|
||||||
for (final LoanTransaction transaction : changedTransactionDetail.getNewTransactions()) {
|
for(Map.Entry<Long,LoanTransaction> mapEntry:changedTransactionDetail.getNewTransactionMappings().entrySet()){
|
||||||
transaction.updateLoan(this);
|
mapEntry.getValue().updateLoan(this);
|
||||||
}
|
}
|
||||||
this.loanTransactions.addAll(changedTransactionDetail.getNewTransactions());
|
this.loanTransactions.addAll(changedTransactionDetail.getNewTransactionMappings().values());
|
||||||
} else {
|
} else {
|
||||||
// just reprocess the loan schedule only for now.
|
// just reprocess the loan schedule only for now.
|
||||||
final LoanRepaymentScheduleProcessingWrapper wrapper = new LoanRepaymentScheduleProcessingWrapper();
|
final LoanRepaymentScheduleProcessingWrapper wrapper = new LoanRepaymentScheduleProcessingWrapper();
|
||||||
@@ -1710,10 +1710,10 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
final List<LoanTransaction> allNonContraTransactionsPostDisbursement = retreiveListOfTransactionsPostDisbursement();
|
final List<LoanTransaction> allNonContraTransactionsPostDisbursement = retreiveListOfTransactionsPostDisbursement();
|
||||||
changedTransactionDetail = loanRepaymentScheduleTransactionProcessor.handleTransaction(getDisbursementDate(),
|
changedTransactionDetail = loanRepaymentScheduleTransactionProcessor.handleTransaction(getDisbursementDate(),
|
||||||
allNonContraTransactionsPostDisbursement, getCurrency(), this.repaymentScheduleInstallments, setOfLoanCharges());
|
allNonContraTransactionsPostDisbursement, getCurrency(), this.repaymentScheduleInstallments, setOfLoanCharges());
|
||||||
for (final LoanTransaction newLoanTransaction : changedTransactionDetail.getNewTransactions()) {
|
for(Map.Entry<Long,LoanTransaction> mapEntry:changedTransactionDetail.getNewTransactionMappings().entrySet()){
|
||||||
newLoanTransaction.updateLoan(this);
|
mapEntry.getValue().updateLoan(this);
|
||||||
}
|
}
|
||||||
this.loanTransactions.addAll(changedTransactionDetail.getNewTransactions());
|
this.loanTransactions.addAll(changedTransactionDetail.getNewTransactionMappings().values());
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLoanSummaryDerivedFields();
|
updateLoanSummaryDerivedFields();
|
||||||
|
|||||||
+20
-3
@@ -24,6 +24,8 @@ import org.mifosplatform.organisation.monetary.domain.MonetaryCurrency;
|
|||||||
import org.mifosplatform.organisation.monetary.domain.Money;
|
import org.mifosplatform.organisation.monetary.domain.Money;
|
||||||
import org.mifosplatform.organisation.workingdays.domain.WorkingDays;
|
import org.mifosplatform.organisation.workingdays.domain.WorkingDays;
|
||||||
import org.mifosplatform.organisation.workingdays.domain.WorkingDaysRepositoryWrapper;
|
import org.mifosplatform.organisation.workingdays.domain.WorkingDaysRepositoryWrapper;
|
||||||
|
import org.mifosplatform.portfolio.account.domain.AccountTransfer;
|
||||||
|
import org.mifosplatform.portfolio.account.domain.AccountTransferRepository;
|
||||||
import org.mifosplatform.portfolio.client.domain.Client;
|
import org.mifosplatform.portfolio.client.domain.Client;
|
||||||
import org.mifosplatform.portfolio.client.exception.ClientNotActiveException;
|
import org.mifosplatform.portfolio.client.exception.ClientNotActiveException;
|
||||||
import org.mifosplatform.portfolio.group.domain.Group;
|
import org.mifosplatform.portfolio.group.domain.Group;
|
||||||
@@ -49,6 +51,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService {
|
|||||||
private final ApplicationCurrencyRepositoryWrapper applicationCurrencyRepositoryWrapper;
|
private final ApplicationCurrencyRepositoryWrapper applicationCurrencyRepositoryWrapper;
|
||||||
private final JournalEntryWritePlatformService journalEntryWritePlatformService;
|
private final JournalEntryWritePlatformService journalEntryWritePlatformService;
|
||||||
private final NoteRepository noteRepository;
|
private final NoteRepository noteRepository;
|
||||||
|
private final AccountTransferRepository accountTransferRepository;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public LoanAccountDomainServiceJpa(final LoanAssembler loanAccountAssembler, final LoanRepository loanRepository,
|
public LoanAccountDomainServiceJpa(final LoanAssembler loanAccountAssembler, final LoanRepository loanRepository,
|
||||||
@@ -56,7 +59,8 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService {
|
|||||||
final ConfigurationDomainService configurationDomainService, final HolidayRepository holidayRepository,
|
final ConfigurationDomainService configurationDomainService, final HolidayRepository holidayRepository,
|
||||||
final WorkingDaysRepositoryWrapper workingDaysRepository,
|
final WorkingDaysRepositoryWrapper workingDaysRepository,
|
||||||
final ApplicationCurrencyRepositoryWrapper applicationCurrencyRepositoryWrapper,
|
final ApplicationCurrencyRepositoryWrapper applicationCurrencyRepositoryWrapper,
|
||||||
final JournalEntryWritePlatformService journalEntryWritePlatformService) {
|
final JournalEntryWritePlatformService journalEntryWritePlatformService,
|
||||||
|
final AccountTransferRepository accountTransferRepository) {
|
||||||
this.loanAccountAssembler = loanAccountAssembler;
|
this.loanAccountAssembler = loanAccountAssembler;
|
||||||
this.loanRepository = loanRepository;
|
this.loanRepository = loanRepository;
|
||||||
this.loanTransactionRepository = loanTransactionRepository;
|
this.loanTransactionRepository = loanTransactionRepository;
|
||||||
@@ -66,6 +70,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService {
|
|||||||
this.workingDaysRepository = workingDaysRepository;
|
this.workingDaysRepository = workingDaysRepository;
|
||||||
this.applicationCurrencyRepositoryWrapper = applicationCurrencyRepositoryWrapper;
|
this.applicationCurrencyRepositoryWrapper = applicationCurrencyRepositoryWrapper;
|
||||||
this.journalEntryWritePlatformService = journalEntryWritePlatformService;
|
this.journalEntryWritePlatformService = journalEntryWritePlatformService;
|
||||||
|
this.accountTransferRepository = accountTransferRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
@@ -115,8 +120,9 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService {
|
|||||||
* recorded against the loan)
|
* recorded against the loan)
|
||||||
***/
|
***/
|
||||||
if (changedTransactionDetail != null) {
|
if (changedTransactionDetail != null) {
|
||||||
for (final LoanTransaction loanTransaction : changedTransactionDetail.getNewTransactions()) {
|
for(Map.Entry<Long,LoanTransaction> mapEntry:changedTransactionDetail.getNewTransactionMappings().entrySet()){
|
||||||
this.loanTransactionRepository.save(loanTransaction);
|
this.loanTransactionRepository.save(mapEntry.getValue());
|
||||||
|
updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.loanRepository.save(loan);
|
this.loanRepository.save(loan);
|
||||||
@@ -125,6 +131,8 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService {
|
|||||||
final Note note = Note.loanTransactionNote(loan, newRepaymentTransaction, noteText);
|
final Note note = Note.loanTransactionNote(loan, newRepaymentTransaction, noteText);
|
||||||
this.noteRepository.save(note);
|
this.noteRepository.save(note);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
postJournalEntries(loan, existingTransactionIds, existingReversedTransactionIds);
|
postJournalEntries(loan, existingTransactionIds, existingReversedTransactionIds);
|
||||||
|
|
||||||
@@ -247,4 +255,13 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService {
|
|||||||
loanTransaction.reverse();
|
loanTransaction.reverse();
|
||||||
this.loanTransactionRepository.save(loanTransaction);
|
this.loanTransactionRepository.save(loanTransaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateLoanTransaction(final Long loanTransactionId,final LoanTransaction newLoanTransaction){
|
||||||
|
final AccountTransfer transferTransaction = this.accountTransferRepository.findByToLoanTransactionId(loanTransactionId);
|
||||||
|
if(transferTransaction!=null){
|
||||||
|
transferTransaction.updateToLoanTransaction(newLoanTransaction);
|
||||||
|
this.accountTransferRepository.save(transferTransaction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+1
-2
@@ -118,8 +118,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen
|
|||||||
**/
|
**/
|
||||||
if (!LoanTransaction.transactionAmountsMatch(currency, loanTransaction, newLoanTransaction)) {
|
if (!LoanTransaction.transactionAmountsMatch(currency, loanTransaction, newLoanTransaction)) {
|
||||||
loanTransaction.reverse();
|
loanTransaction.reverse();
|
||||||
changedTransactionDetail.getReversedTransactions().add(loanTransaction);
|
changedTransactionDetail.getNewTransactionMappings().put(loanTransaction.getId(), newLoanTransaction);
|
||||||
changedTransactionDetail.getNewTransactions().add(newLoanTransaction);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-6
@@ -523,8 +523,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
|
|||||||
* payment recorded against the loan)
|
* payment recorded against the loan)
|
||||||
***/
|
***/
|
||||||
if (changedTransactionDetail != null) {
|
if (changedTransactionDetail != null) {
|
||||||
for (final LoanTransaction loanTransaction : changedTransactionDetail.getNewTransactions()) {
|
for(Map.Entry<Long,LoanTransaction> mapEntry:changedTransactionDetail.getNewTransactionMappings().entrySet()){
|
||||||
this.loanTransactionRepository.save(loanTransaction);
|
this.loanTransactionRepository.save(mapEntry.getValue());
|
||||||
|
this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -598,8 +599,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
|
|||||||
* recorded against the loan)
|
* recorded against the loan)
|
||||||
***/
|
***/
|
||||||
if (changedTransactionDetail != null) {
|
if (changedTransactionDetail != null) {
|
||||||
for (final LoanTransaction loanTransaction : changedTransactionDetail.getNewTransactions()) {
|
for(Map.Entry<Long,LoanTransaction> mapEntry:changedTransactionDetail.getNewTransactionMappings().entrySet()){
|
||||||
this.loanTransactionRepository.save(loanTransaction);
|
this.loanTransactionRepository.save(mapEntry.getValue());
|
||||||
|
this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -819,8 +821,9 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf
|
|||||||
* latest payment recorded against the loan)
|
* latest payment recorded against the loan)
|
||||||
***/
|
***/
|
||||||
if (changedTransactionDetail != null) {
|
if (changedTransactionDetail != null) {
|
||||||
for (final LoanTransaction loanTransaction : changedTransactionDetail.getNewTransactions()) {
|
for(Map.Entry<Long,LoanTransaction> mapEntry:changedTransactionDetail.getNewTransactionMappings().entrySet()){
|
||||||
this.loanTransactionRepository.save(loanTransaction);
|
this.loanTransactionRepository.save(mapEntry.getValue());
|
||||||
|
this.accountTransfersWritePlatformService.updateLoanTransaction(mapEntry.getKey(), mapEntry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user