This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository lima. See https://gitlab.nuiton.org/chorem/lima.git commit 60b17c7dd8e3d36c14036ca3768febd96b67e701 Author: David Cossé <cosse@codelutin.com> Date: Mon Oct 23 16:35:01 2017 +0200 refs #1394 Revue du mécanisme de création/peristance des transactions et de leur entrées --- .../org/chorem/lima/business/api/EntryService.java | 5 + .../business/api/FinancialTransactionService.java | 16 +- .../org/chorem/lima/business/AccountingRules.java | 3 + .../accountingrules/DefaultAccountingRules.java | 15 +- .../chorem/lima/business/ejb/EntryServiceImpl.java | 6 + .../ejb/FinancialTransactionServiceImpl.java | 91 +++++++- .../lima/business/ejb/FiscalPeriodServiceImpl.java | 28 +-- .../lima/business/ejb/ImportServiceImpl.java | 37 ++-- .../org/chorem/lima/business/AbstractLimaTest.java | 39 ++-- .../FinancialTransactionServiceImplTest.java | 243 ++++++++++++--------- .../lima/business/FiscalPeriodServiceImplTest.java | 6 +- .../lima/business/ReportServiceImplTest.java | 2 +- .../ui/common/FinancialTransactionTableModel.java | 27 +-- 13 files changed, 320 insertions(+), 198 deletions(-) diff --git a/lima-business-api/src/main/java/org/chorem/lima/business/api/EntryService.java b/lima-business-api/src/main/java/org/chorem/lima/business/api/EntryService.java index 01a023e1..eadf18b9 100644 --- a/lima-business-api/src/main/java/org/chorem/lima/business/api/EntryService.java +++ b/lima-business-api/src/main/java/org/chorem/lima/business/api/EntryService.java @@ -45,4 +45,9 @@ public interface EntryService { List<Entry> findAllEntriesByDatesForEntryBook(EntryBook entryBook, Date beginDate, Date endDate); + + /** + * Persist all given entries without any rules checked + */ + void saveAllEntries(List<Entry> entries); } diff --git a/lima-business-api/src/main/java/org/chorem/lima/business/api/FinancialTransactionService.java b/lima-business-api/src/main/java/org/chorem/lima/business/api/FinancialTransactionService.java index ab609caf..97f79ef9 100644 --- a/lima-business-api/src/main/java/org/chorem/lima/business/api/FinancialTransactionService.java +++ b/lima-business-api/src/main/java/org/chorem/lima/business/api/FinancialTransactionService.java @@ -65,10 +65,18 @@ public interface FinancialTransactionService { Iterable<FinancialTransaction> persistImportedFinancialTransactions(Collection<FinancialTransaction> financialtransactions); - FinancialTransaction createFinancialTransaction(FinancialTransaction financialtransaction) + FinancialTransaction createFinancialTransactionWithEntries(FinancialTransaction financialtransaction, Collection<Entry> financialtransactionEntries) throws AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException, LockedFinancialPeriodException, LockedEntryBookException; - FinancialTransaction createFinancialTransaction(FinancialTransaction financialtransaction, Boolean validAccountingRules) + /** + * Persist transaction without any entry + * + * @throws AfterLastFiscalPeriodException + * @throws BeforeFirstFiscalPeriodException + * @throws LockedFinancialPeriodException + * @throws LockedEntryBookException + */ + FinancialTransaction createFinancialTransactionSkeleton(FinancialTransaction financialtransaction, Boolean validAccountingRules) throws AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException, LockedFinancialPeriodException, LockedEntryBookException; void updateFinancialTransaction(FinancialTransaction financialtransaction) @@ -95,6 +103,8 @@ public interface FinancialTransactionService { void createdImportedEntry(Entry entry); + Iterable<Entry> createAllEntries(Collection<Entry> entries, Boolean checkRules) throws LockedFinancialPeriodException, LockedEntryBookException; + Entry createEntry(Entry entry) throws LockedFinancialPeriodException, LockedEntryBookException; void updateEntry(Entry entry) throws LockedEntryBookException, LockedFinancialPeriodException; @@ -171,4 +181,6 @@ public interface FinancialTransactionService { List<Entry> removeLetter(String letter); void persistImportedEntries(Collection<Entry> values); + + Iterable<FinancialTransaction> updateAllImportedFinancialTransactions(Iterable<FinancialTransaction> savedTransactions); } diff --git a/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java b/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java index a319a229..5b490437 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java +++ b/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java @@ -48,6 +48,7 @@ import org.chorem.lima.entity.FinancialPeriod; import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.entity.FiscalPeriod; +import java.util.Collection; import java.util.List; /** @@ -103,6 +104,8 @@ public interface AccountingRules { void deleteFinancialTransactionRules(FinancialTransaction financialTransaction) throws LockedFinancialPeriodException, LockedEntryBookException; + void createEntriesRules(Collection<Entry> entries) throws LockedFinancialPeriodException, LockedEntryBookException; + void createEntryRules(Entry entry) throws LockedFinancialPeriodException, LockedEntryBookException; void updateEntryRules(Entry entry, Entry entryOld) throws LockedFinancialPeriodException, LockedEntryBookException; diff --git a/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java b/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java index 9c2fafbf..534514f4 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java +++ b/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java @@ -60,9 +60,11 @@ import org.chorem.lima.entity.FiscalPeriodTopiaDao; import org.chorem.lima.entity.LimaCallaoTopiaDaoSupplier; import java.math.BigDecimal; +import java.util.Collection; import java.util.Date; +import java.util.HashSet; import java.util.List; - +import java.util.Set; /** @@ -362,7 +364,16 @@ public class DefaultAccountingRules implements AccountingRules { } - + @Override + public void createEntriesRules(Collection<Entry> entries) throws LockedFinancialPeriodException, LockedEntryBookException { + Set<FinancialTransaction> transactions = new HashSet<>(); + for (Entry entry : entries) { + transactions.add(entry.getFinancialTransaction()); + } + for (FinancialTransaction transaction : transactions) { + checkTransactionBlock(transaction); + } + } @Override public void createEntryRules(Entry entry) throws LockedFinancialPeriodException, LockedEntryBookException { diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryServiceImpl.java index e32cb48d..ca0df5fa 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/EntryServiceImpl.java @@ -69,4 +69,10 @@ public class EntryServiceImpl extends AbstractLimaService implements EntryServic return result; } + @Override + public void saveAllEntries(List<Entry> entries) { + EntryTopiaDao entryTopiaDao = getDaoHelper().getEntryDao(); + entryTopiaDao.createAll(entries); + } + } diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java index e1c153c0..a3417cbc 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialTransactionServiceImpl.java @@ -48,6 +48,7 @@ import org.chorem.lima.entity.EntryImpl; import org.chorem.lima.entity.EntryTopiaDao; import org.chorem.lima.entity.FinancialPeriod; import org.chorem.lima.entity.FinancialTransaction; +import org.chorem.lima.entity.FinancialTransactionImpl; import org.chorem.lima.entity.FinancialTransactionTopiaDao; import org.chorem.lima.entity.FiscalPeriod; import org.chorem.lima.filter.FilterGenerator; @@ -149,14 +150,66 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme } @Override - public FinancialTransaction createFinancialTransaction(FinancialTransaction financialtransaction) - throws LockedFinancialPeriodException, LockedEntryBookException, BeforeFirstFiscalPeriodException, AfterLastFiscalPeriodException { - FinancialTransaction financialTransaction = createFinancialTransaction(financialtransaction, true); - return financialTransaction; + public FinancialTransaction createFinancialTransactionWithEntries(FinancialTransaction transaction, Collection<Entry> financialTransactionEntries) throws AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException, LockedFinancialPeriodException, LockedEntryBookException { + + checkTransactionIsValid(transaction); + + FinancialTransactionTopiaDao financialtransactionTopiaDao = getDaoHelper().getFinancialTransactionDao(); + + FinancialTransaction newTransaction = getNewFinancialTransaction(transaction); + + FinancialTransaction result = financialtransactionTopiaDao.create(newTransaction); + + addNewFinancialTransactionEntries(financialTransactionEntries, result); + + result = financialtransactionTopiaDao.update(result); + + return result; + } + + protected void checkTransactionIsValid(FinancialTransaction transaction) throws BeforeFirstFiscalPeriodException, AfterLastFiscalPeriodException, LockedFinancialPeriodException, LockedEntryBookException { + AccountingRules accountingRules = LimaBusinessConfig.getInstance().getAccountingRules(); + //check if the financial period is blocked + accountingRules.createFinancialTransactionRules(transaction); + } + + protected FinancialTransaction getNewFinancialTransaction(FinancialTransaction transaction) { + FinancialTransaction newTransaction = new FinancialTransactionImpl(); + newTransaction.setEntryBook(transaction.getEntryBook()); + newTransaction.setTransactionDate(transaction.getTransactionDate()); + newTransaction.setEntry(Lists.newArrayList()); + return newTransaction; + } + + protected void addNewFinancialTransactionEntries(Collection<Entry> financialTransactionEntries, FinancialTransaction result) { + if (financialTransactionEntries == null || financialTransactionEntries.isEmpty()) { + // Default One + Entry newEntry = new EntryImpl(); + newEntry.setFinancialTransaction(result); + + List<Entry> savedEntry = new ArrayList<>(); + savedEntry.add(newEntry); + result.addAllEntry(savedEntry); + + } else { + + List<Entry> newEntries = new ArrayList<>(); + for (Entry entry : financialTransactionEntries) { + Entry newEntry = new EntryImpl(); + newEntry.setFinancialTransaction(result); + newEntry.setVoucher(entry.getVoucher()); + newEntry.setAccount(entry.getAccount()); + newEntry.setDescription(entry.getDescription()); + newEntry.setAmount(entry.getAmount()); + newEntry.setDebit(entry.isDebit()); + newEntries.add(newEntry); + } + result.addAllEntry(newEntries); + } } @Override - public FinancialTransaction createFinancialTransaction(FinancialTransaction financialtransaction, Boolean validAccountingRules) + public FinancialTransaction createFinancialTransactionSkeleton(FinancialTransaction financialtransaction, Boolean validAccountingRules) throws LockedFinancialPeriodException, LockedEntryBookException, BeforeFirstFiscalPeriodException, AfterLastFiscalPeriodException { AccountingRules accountingRules = LimaBusinessConfig.getInstance().getAccountingRules(); @@ -275,7 +328,7 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme } protected FinancialTransaction createNewExtourneFinantialTransaction(Entry firstEntrySelected, Entry secondEntrySelected) throws AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException, LockedFinancialPeriodException, LockedEntryBookException { - FinancialTransaction newFinancialTransaction = financialTransactionService.createNewFinancialTransaction(); + FinancialTransaction newFinancialTransaction = new FinancialTransactionImpl(); EntryBook entryBook = entryBookService.getEntryBookByCode(EXTOURNE); if (entryBook == null) { entryBook = firstEntrySelected.getFinancialTransaction().getEntryBook(); @@ -285,7 +338,7 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme Date lastTransactionDate = secondEntrySelected.getFinancialTransaction().getTransactionDate().after(firstEntrySelected.getFinancialTransaction().getTransactionDate()) ? secondEntrySelected.getFinancialTransaction().getTransactionDate() : firstEntrySelected.getFinancialTransaction().getTransactionDate(); newFinancialTransaction.setTransactionDate(lastTransactionDate); - newFinancialTransaction = financialTransactionService.createFinancialTransaction(newFinancialTransaction); + newFinancialTransaction = financialTransactionService.createFinancialTransactionWithEntries(newFinancialTransaction, newFinancialTransaction.getEntry()); return newFinancialTransaction; } @@ -408,6 +461,13 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme entryTopiaDao.createAll(entries); } + @Override + public Iterable<FinancialTransaction> updateAllImportedFinancialTransactions(Iterable<FinancialTransaction> savedTransactions) { + FinancialTransactionTopiaDao transactionDao = getDaoHelper().getFinancialTransactionDao(); + Iterable<FinancialTransaction> result = transactionDao.updateAll(savedTransactions); + return result; + } + public String findLastLetter(List<String> letters) { String result; @@ -602,6 +662,23 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme } @Override + public Iterable<Entry> createAllEntries(Collection<Entry> entries, Boolean checkRules) throws LockedFinancialPeriodException, LockedEntryBookException { + if (checkRules) { + AccountingRules accountingRules = LimaBusinessConfig.getInstance().getAccountingRules(); + //check if the financial period is blocked + accountingRules.createEntriesRules(entries); + } + + EntryTopiaDao entryTopiaDao = getDaoHelper().getEntryDao(); + Iterable<Entry> newEntries = entryTopiaDao.createAll(entries); + + if (log.isDebugEnabled()) { + log.debug("Nex "); + } + return newEntries; + } + + @Override public Entry createEntry(Entry entry) throws LockedFinancialPeriodException, LockedEntryBookException { AccountingRules accountingRules = LimaBusinessConfig.getInstance().getAccountingRules(); diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java index 529158f6..f85356cf 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java @@ -351,7 +351,6 @@ public class FiscalPeriodServiceImpl extends AbstractLimaService implements Fisc //Sets the endfinancialTransaction endFinancialTransaction.setEntryBook(entryBook); endFinancialTransaction.setTransactionDate(localFiscalPeriod.getEndDate()); - endFinancialTransaction = financialTransactionService.createFinancialTransaction(endFinancialTransaction); } //holds entries of all opening transactions @@ -360,8 +359,6 @@ public class FiscalPeriodServiceImpl extends AbstractLimaService implements Fisc //Sets the endfinancialTransaction beginfinancialTransaction.setEntryBook(entryBook); beginfinancialTransaction.setTransactionDate(beginFinancialPeriod.getBeginDate()); - beginfinancialTransaction = financialTransactionService.createFinancialTransaction(beginfinancialTransaction); - //Sets date for description, e.g: Report à nouveau (DATE) Calendar calendar = Calendar.getInstance(); @@ -375,6 +372,9 @@ public class FiscalPeriodServiceImpl extends AbstractLimaService implements Fisc for (ReportsDatas report : reportsDatasList) { processReport(endRetainedAccount, endFinancialTransaction, beginfinancialTransaction, calendar, report); } + // persist + financialTransactionService.createFinancialTransactionWithEntries(beginfinancialTransaction, beginfinancialTransaction.getEntry()); + financialTransactionService.createFinancialTransactionWithEntries(endFinancialTransaction, endFinancialTransaction.getEntry()); } /*block the antepenultimate fiscalPeriod */ @@ -391,53 +391,41 @@ public class FiscalPeriodServiceImpl extends AbstractLimaService implements Fisc Entry beginEntry = new EntryImpl(); beginEntry.setDescription(t("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); beginEntry.setVoucher(t("lima-business.financialtransaction.retainedearnings.voucher")); - beginEntry.setFinancialTransaction(endFinancialTransaction); beginEntry.setAccount(report.getAccount()); beginEntry.setAmount(report.getAmountSolde().abs()); beginEntry.setDebit(!report.isSoldeDebit()); - financialTransactionService.createEntry(beginEntry); + endFinancialTransaction.addEntry(beginEntry); //save amounts inside account number 891 beginEntry = new EntryImpl(); beginEntry.setDescription(t("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); beginEntry.setVoucher(t("lima-business.financialtransaction.retainedearnings.voucher")); - beginEntry.setFinancialTransaction(endFinancialTransaction); beginEntry.setAccount(endRetainedAccount); beginEntry.setAmount(report.getAmountSolde().abs()); beginEntry.setDebit(report.isSoldeDebit()); - financialTransactionService.createEntry(beginEntry); + endFinancialTransaction.addEntry(beginEntry); //open new year accounts if new year exists and a date has been found for the transaction //give back amounts from class 1 to 5 accounts beginEntry = new EntryImpl(); beginEntry.setDescription(t("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); beginEntry.setVoucher(t("lima-business.financialtransaction.retainedearnings.voucher")); - beginEntry.setFinancialTransaction(beginfinancialTransaction); beginEntry.setAccount(report.getAccount()); beginEntry.setAmount(report.getAmountSolde().abs()); beginEntry.setDebit(report.isSoldeDebit()); - financialTransactionService.createEntry(beginEntry); + beginfinancialTransaction.addEntry(beginEntry); + //close account by removing amount from account number 890 beginEntry = new EntryImpl(); beginEntry.setDescription(t("lima-business.financialtransaction.retainedearnings.description") + " (" + calendar.get(Calendar.YEAR) + ")"); beginEntry.setVoucher(t("lima-business.financialtransaction.retainedearnings.voucher")); - beginEntry.setFinancialTransaction(beginfinancialTransaction); beginEntry.setAccount(endRetainedAccount); beginEntry.setAmount(report.getAmountSolde().abs()); beginEntry.setDebit(!report.isSoldeDebit()); - financialTransactionService.createEntry(beginEntry); + beginfinancialTransaction.addEntry(beginEntry); } } - protected FinancialTransaction createFinancialTransaction(EntryBook entryBook, Date transactionDate) throws LockedFinancialPeriodException, LockedEntryBookException, AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException { - FinancialTransaction endFinancialTransaction = financialTransactionService.createNewFinancialTransaction(); - //Sets the endfinancialTransaction - endFinancialTransaction.setEntryBook(entryBook); - endFinancialTransaction.setTransactionDate(transactionDate); - endFinancialTransaction = financialTransactionService.createFinancialTransaction(endFinancialTransaction); - - return endFinancialTransaction; - } protected void validClosedPeriodicEntryBookNotLocked(EntryBook entryBook, FinancialPeriod beginFinancialPeriod) throws LockedEntryBookException { ClosedPeriodicEntryBookTopiaDao closedPeriodicEntryBookDao = getDaoHelper().getClosedPeriodicEntryBookDao(); diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java index 5afc4c78..919df983 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java @@ -276,10 +276,9 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ /** * * @param contents financial transaction to import - * @param validAccountingRule True: Account rule validation is done otherwise it is not. (useful to restore backup) * @return */ - protected ImportExportResults importFinancialTransactionsAsCSV(String contents, Boolean validAccountingRule) { + protected ImportExportResults importFinancialTransactionsAsCSV(String contents) { ImportExportResults results = new ImportExportResults(); ImportResult result = results.createAddAndGetImportResult(FinancialTransaction.class); @@ -296,7 +295,7 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ for (FinancialTransaction financialTransaction : financialTransactions) { try { // from backup don't check fiscal period close - financialTransactionService.createFinancialTransaction(financialTransaction, validAccountingRule); + financialTransactionService.createFinancialTransactionSkeleton(financialTransaction, false); result.increaseCreated(); } catch (LockedFinancialPeriodException | LockedEntryBookException | BeforeFirstFiscalPeriodException | AfterLastFiscalPeriodException e) { result.addException(e); @@ -328,6 +327,7 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ ImportModel<Entry> model = new EntryModel(accountService, entryBookService, financialTransactionService, true); Import<Entry> entries = Import.newImport(model, contentStream); Set<FinancialTransaction> financialTransactions = Sets.newHashSet(); + for (Entry entry : entries) { FinancialTransaction financialTransaction = entry.getFinancialTransaction(); financialTransaction.addEntry(entry); @@ -335,7 +335,7 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ result.increaseCreated(); } for (FinancialTransaction financialTransaction : financialTransactions) { - financialTransactionService.createFinancialTransaction(financialTransaction); + financialTransactionService.createFinancialTransactionWithEntries(financialTransaction, financialTransaction.getEntry()); } } catch (Exception e) { if (e instanceof LimaException) { @@ -364,16 +364,14 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ try { ImportModel<Entry> model = new EntryModel(accountService, entryBookService, financialTransactionService, false); Import<Entry> entries = Import.newImport(model, contentStream); - for (Entry entry : entries) { - entryService.createEntry(entry); + List<Entry> entiesToSave = Lists.newArrayList(entries); + for (int i = 0; i < entiesToSave.size(); i++) { result.increaseCreated(); + } + entryService.saveAllEntries(entiesToSave); } catch (Exception e) { - if (e instanceof LimaException) { - result.addInitException((LimaException) e); - } else { - result.addInitException(new ImportFileException(e.getMessage())); - } + result.addInitException(new ImportFileException(e.getMessage())); results.setErrors(true); } finally { IOUtils.closeQuietly(contentStream); @@ -818,7 +816,7 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ return globalResult; } - subReport = importFinancialTransactionsAsCSV(financialTransactions, false); + subReport = importFinancialTransactionsAsCSV(financialTransactions); globalResult.pushImportResults(subReport); if (subReport.isErrors()){ return globalResult; @@ -1002,6 +1000,7 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ List<FinancialPeriod> financialPeriods = financialPeriodTopiaDao.forProperties(FinancialPeriod.PROPERTY_LOCKED, false).findAll(); Map<FinancialTransaction, List<Entry>> financialTransactionsToSave = new HashMap<>(); + Map<FinancialTransaction, List<Entry>> financialTransactionsToUpdate = new HashMap<>(); for (EntryEBP entryEBP : entryEBPs) { Date dateEcr = entryEBP.getDatEcr(); @@ -1021,8 +1020,13 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ try { // find financial transactions for entry period and entrybook FinancialTransaction transaction = getOrCreateImportEntryFinancialTransaction(entryEBP.getJournal(), indexedEntryBooks, entryBookFinancialTransactionByDate, dateEcr, financialPeriods); - List<Entry> transactionEntriesToSave = financialTransactionsToSave.computeIfAbsent(transaction, k -> new ArrayList<>()); - transactionEntriesToSave.add(entry); + if (transaction.isPersisted()) { + List<Entry> transactionEntriesToSave = financialTransactionsToUpdate.computeIfAbsent(transaction, k -> new ArrayList<>()); + transactionEntriesToSave.add(entry); + } else { + List<Entry> transactionEntriesToSave = financialTransactionsToSave.computeIfAbsent(transaction, k -> new ArrayList<>()); + transactionEntriesToSave.add(entry); + } } catch (LockedFinancialPeriodException | LockedEntryBookException | AlreadyExistEntryBookException | AfterLastFiscalPeriodException | BeforeFirstFiscalPeriodException e) { result.addException(e); @@ -1032,11 +1036,12 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ } result.increaseCreated(); } - List<FinancialTransaction> transactions = Lists.newArrayList(financialTransactionsToSave.keySet()); - Iterable<FinancialTransaction> savedTransactions = financialTransactionService.persistImportedFinancialTransactions(transactions); + Iterable<FinancialTransaction> savedTransactions = financialTransactionService.persistImportedFinancialTransactions(Lists.newArrayList(financialTransactionsToSave.keySet())); addEntriesToTransactions(entryBookFinancialTransactionByDate, financialTransactionsToSave, savedTransactions); + addEntriesToTransactions(entryBookFinancialTransactionByDate, financialTransactionsToUpdate, Lists.newArrayList(financialTransactionsToUpdate.keySet())); + if (log.isInfoEnabled()) { long after = System.currentTimeMillis(); log.info("Imported form EBP : " + entryEBPs.size() + " entries in " diff --git a/lima-business/src/test/java/org/chorem/lima/business/AbstractLimaTest.java b/lima-business/src/test/java/org/chorem/lima/business/AbstractLimaTest.java index 118646d1..a42dc57e 100644 --- a/lima-business/src/test/java/org/chorem/lima/business/AbstractLimaTest.java +++ b/lima-business/src/test/java/org/chorem/lima/business/AbstractLimaTest.java @@ -291,7 +291,7 @@ public abstract class AbstractLimaTest { FinancialTransaction transaction1 = new FinancialTransactionImpl(); transaction1.setTransactionDate(df.parse("April 4, 2012")); transaction1.setEntryBook(journalDesVentes); - transaction1 = financialTransactionService.createFinancialTransaction(transaction1); + //transaction1 = financialTransactionService.createFinancialTransactionSkeleton(transaction1); Entry tr1Entry1 = new EntryImpl(); tr1Entry1.setAmount(BigDecimal.valueOf(42.0)); @@ -299,7 +299,7 @@ public abstract class AbstractLimaTest { tr1Entry1.setFinancialTransaction(transaction1); tr1Entry1.setDescription("test desc"); tr1Entry1.setVoucher("voucher"); - tr1Entry1 = financialTransactionService.createEntry(tr1Entry1); + //tr1Entry1 = financialTransactionService.createEntry(tr1Entry1); Entry tr1Entry2 = new EntryImpl(); tr1Entry2.setAmount(BigDecimal.valueOf(42.0)); @@ -308,10 +308,10 @@ public abstract class AbstractLimaTest { tr1Entry2.setFinancialTransaction(transaction1); tr1Entry2.setDescription("test desc"); tr1Entry2.setVoucher("voucher"); - tr1Entry2 = financialTransactionService.createEntry(tr1Entry2); + //tr1Entry2 = financialTransactionService.createEntry(tr1Entry2); - transaction1.setEntry(Lists.newArrayList(tr1Entry1, tr1Entry2)); - financialTransactionService.updateFinancialTransaction(transaction1); + //transaction1.setEntry(Lists.newArrayList(tr1Entry1, tr1Entry2)); + financialTransactionService.createFinancialTransactionWithEntries(transaction1, Lists.newArrayList(tr1Entry1, tr1Entry2)); } @@ -323,7 +323,7 @@ public abstract class AbstractLimaTest { FinancialTransaction transaction1 = new FinancialTransactionImpl(); transaction1.setTransactionDate(df.parse("April 4, 2012")); transaction1.setEntryBook(journalDesVentes); - transaction1 = financialTransactionService.createFinancialTransaction(transaction1); + //transaction1 = financialTransactionService.createFinancialTransactionSkeleton(transaction1); Entry tr1Entry1 = new EntryImpl(); tr1Entry1.setAmount(BigDecimal.valueOf(42.0)); @@ -331,7 +331,7 @@ public abstract class AbstractLimaTest { tr1Entry1.setFinancialTransaction(transaction1); tr1Entry1.setDescription("test desc"); tr1Entry1.setVoucher("voucherA"); - tr1Entry1 = financialTransactionService.createEntry(tr1Entry1); +// tr1Entry1 = financialTransactionService.createEntry(tr1Entry1); Entry tr1Entry2 = new EntryImpl(); tr1Entry2.setAmount(BigDecimal.valueOf(42.0)); @@ -340,15 +340,14 @@ public abstract class AbstractLimaTest { tr1Entry2.setFinancialTransaction(transaction1); tr1Entry2.setDescription("test desc"); tr1Entry2.setVoucher("voucherA"); - tr1Entry2 = financialTransactionService.createEntry(tr1Entry2); +// tr1Entry2 = financialTransactionService.createEntry(tr1Entry2); - transaction1.setEntry(Lists.newArrayList(tr1Entry1, tr1Entry2)); - financialTransactionService.updateFinancialTransaction(transaction1); + financialTransactionService.createFinancialTransactionWithEntries(transaction1, Lists.newArrayList(tr1Entry1, tr1Entry2)); FinancialTransaction transaction2 = new FinancialTransactionImpl(); transaction2.setTransactionDate(df.parse("April 4, 2012")); transaction2.setEntryBook(journalDesVentes); - transaction2 = financialTransactionService.createFinancialTransaction(transaction2); + //transaction2 = financialTransactionService.createFinancialTransactionSkeleton(transaction2); Entry tr1Entry1b = new EntryImpl(); tr1Entry1b.setAmount(BigDecimal.valueOf(12.0)); @@ -356,7 +355,7 @@ public abstract class AbstractLimaTest { tr1Entry1b.setFinancialTransaction(transaction2); tr1Entry1b.setDescription("test desc"); tr1Entry1b.setVoucher("voucherB"); - financialTransactionService.createEntry(tr1Entry1b); +// financialTransactionService.createEntry(tr1Entry1b); Entry tr1Entry2b = new EntryImpl(); tr1Entry2b.setAmount(BigDecimal.valueOf(6.0)); @@ -365,7 +364,7 @@ public abstract class AbstractLimaTest { tr1Entry2b.setFinancialTransaction(transaction2); tr1Entry2b.setDescription("test desc"); tr1Entry2b.setVoucher("voucherB"); - financialTransactionService.createEntry(tr1Entry2b); +// financialTransactionService.createEntry(tr1Entry2b); Entry tr1Entry3b = new EntryImpl(); tr1Entry3b.setAmount(BigDecimal.valueOf(6.0)); @@ -374,9 +373,11 @@ public abstract class AbstractLimaTest { tr1Entry3b.setFinancialTransaction(transaction2); tr1Entry3b.setDescription("test desc"); tr1Entry3b.setVoucher("voucherB"); - financialTransactionService.createEntry(tr1Entry3b); +// financialTransactionService.createEntry(tr1Entry3b); + financialTransactionService.createFinancialTransactionWithEntries(transaction1, Lists.newArrayList(tr1Entry1b, tr1Entry2b, tr1Entry3b)); } + protected FinancialTransaction createFinancialTransaction(String entryBookCode, Date date, String accountDebitNumber, String accountCreditNumber, BigDecimal amount) throws Exception { @@ -388,28 +389,24 @@ public abstract class AbstractLimaTest { FinancialTransaction transaction = new FinancialTransactionImpl(); transaction.setTransactionDate(date); transaction.setEntryBook(entryBook); - transaction = financialTransactionService.createFinancialTransaction(transaction); Entry entry1 = new EntryImpl(); entry1.setAmount(amount); entry1.setDebit(true); entry1.setAccount(accountDebit); - entry1.setFinancialTransaction(transaction); entry1.setDescription("test desc"); entry1.setVoucher("voucher"); - entry1 = financialTransactionService.createEntry(entry1); + transaction.addEntry(entry1); Entry entry2 = new EntryImpl(); entry2.setAmount(amount); entry2.setDebit(false); entry2.setAccount(accountCredit); - entry2.setFinancialTransaction(transaction); entry2.setDescription("test desc"); entry2.setVoucher("voucher"); - entry2 = financialTransactionService.createEntry(entry2); + transaction.addEntry(entry2); - transaction.setEntry(Lists.newArrayList(entry1, entry2)); - financialTransactionService.updateFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); return transaction; } diff --git a/lima-business/src/test/java/org/chorem/lima/business/FinancialTransactionServiceImplTest.java b/lima-business/src/test/java/org/chorem/lima/business/FinancialTransactionServiceImplTest.java index e4a9e166..945df443 100644 --- a/lima-business/src/test/java/org/chorem/lima/business/FinancialTransactionServiceImplTest.java +++ b/lima-business/src/test/java/org/chorem/lima/business/FinancialTransactionServiceImplTest.java @@ -22,6 +22,7 @@ package org.chorem.lima.business; +import com.google.common.collect.Lists; import org.chorem.lima.business.ejb.FinancialTransactionServiceImpl; import org.chorem.lima.business.exceptions.AfterLastFiscalPeriodException; import org.chorem.lima.business.exceptions.BeforeFirstFiscalPeriodException; @@ -76,7 +77,7 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { Assert.assertNotNull(transaction); Assert.assertNull(transaction.getEntryBook()); Assert.assertNull(transaction.getTransactionDate()); - Assert.assertNull(transaction.getEntry()); + Assert.assertEquals(0, transaction.getEntry().size()); } @@ -104,14 +105,13 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBookService.getEntryBookByCode("jdv")); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - FinancialTransaction transactionSave = financialTransactionService.createFinancialTransaction(transaction); + FinancialTransaction transactionSave = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); Assert.assertNotNull(transactionSave); Assert.assertEquals(transaction.getEntryBook(), transactionSave.getEntryBook()); Assert.assertEquals(transaction.getTransactionDate(), transactionSave.getTransactionDate()); - Assert.assertTrue(transactionSave.getEntry().isEmpty()); Assert.assertTrue(transactionSave.isPersisted()); } @@ -121,7 +121,7 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); FiscalPeriod nextFiscalPeriod = new FiscalPeriodImpl(); - nextFiscalPeriod.setBeginDate(DateUtil.createDate(01, 01, 2013)); + nextFiscalPeriod.setBeginDate(DateUtil.createDate(1, 1, 2013)); nextFiscalPeriod.setEndDate(DateUtil.createDate(31, 12, 2013)); fiscalPeriodService.createFiscalPeriod(nextFiscalPeriod); @@ -130,9 +130,9 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBookService.getEntryBookByCode("jdv")); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - financialTransactionService.createFinancialTransaction(transaction); + financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); } @@ -149,9 +149,9 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - financialTransactionService.createFinancialTransaction(transaction); + financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); } @@ -163,9 +163,9 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2014)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2014)); - financialTransactionService.createFinancialTransaction(transaction); + financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); } @@ -177,9 +177,9 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2010)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2010)); - financialTransactionService.createFinancialTransaction(transaction); + financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); } @@ -191,14 +191,14 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); entryBook = entryBookService.getEntryBookByCode("jda"); transaction.setEntryBook(entryBook); - Date date = DateUtil.createDate(15, 01, 2012); + Date date = DateUtil.createDate(15, 1, 2012); transaction.setTransactionDate(date); financialTransactionService.updateFinancialTransaction(transaction); @@ -217,11 +217,11 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); - Date date = DateUtil.createDate(15, 01, 2014); + Date date = DateUtil.createDate(15, 1, 2014); transaction.setTransactionDate(date); financialTransactionService.updateFinancialTransaction(transaction); @@ -235,11 +235,11 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); - Date date = DateUtil.createDate(15, 01, 2010); + Date date = DateUtil.createDate(15, 1, 2010); transaction.setTransactionDate(date); financialTransactionService.updateFinancialTransaction(transaction); @@ -249,24 +249,31 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { public void updateFinancialTransactionFailLockedFinancialPeriodTest() throws Exception { EntryBook entryBook = entryBookService.getEntryBookByCode("jdv"); + Account accountVmpVae = accountService.getAccountByNumber("511"); FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); - transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); + + Entry tr1Entry1 = new EntryImpl(); + tr1Entry1.setAmount(BigDecimal.valueOf(54.0)); + tr1Entry1.setAccount(accountVmpVae); + tr1Entry1.setDescription("test desc"); + tr1Entry1.setVoucher("voucher"); + transaction.addEntry(tr1Entry1); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); FiscalPeriod nextFiscalPeriod = new FiscalPeriodImpl(); - nextFiscalPeriod.setBeginDate(DateUtil.createDate(01, 01, 2013)); + nextFiscalPeriod.setBeginDate(DateUtil.createDate(1, 1, 2013)); nextFiscalPeriod.setEndDate(DateUtil.createDate(31, 12, 2013)); fiscalPeriodService.createFiscalPeriod(nextFiscalPeriod); fiscalPeriodService.blockFiscalPeriod(fiscalPeriod); - Date date = DateUtil.createDate(15, 01, 2012); + Date date = DateUtil.createDate(15, 1, 2012); transaction.setTransactionDate(date); financialTransactionService.updateFinancialTransaction(transaction); @@ -276,13 +283,21 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { public void updateFinancialTransactionFailLockedEntryBookOrigTest() throws Exception { EntryBook entryBook = entryBookService.getEntryBookByCode("jdv"); + Account accountVmpVae = accountService.getAccountByNumber("511"); FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); + + Entry tr1Entry1 = new EntryImpl(); + tr1Entry1.setAmount(BigDecimal.valueOf(54.0)); + tr1Entry1.setAccount(accountVmpVae); + tr1Entry1.setDescription("test desc"); + tr1Entry1.setVoucher("voucher"); + transaction.addEntry(tr1Entry1); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); List<FinancialPeriod> financialPeriods = financialPeriodService.getAllFinancialPeriods(); @@ -304,10 +319,10 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - Date date = DateUtil.createDate(12, 01, 2012); + Date date = DateUtil.createDate(12, 1, 2012); transaction.setTransactionDate(date); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); financialTransactionService.removeFinancialTransaction(transaction); @@ -320,18 +335,25 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { public void removeFinancialTransactionFailLockedFinancialPeriodTest() throws Exception { EntryBook entryBook = entryBookService.getEntryBookByCode("jdv"); + Account accountVmpVae = accountService.getAccountByNumber("511"); FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); - transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); + + Entry tr1Entry1 = new EntryImpl(); + tr1Entry1.setAmount(BigDecimal.valueOf(54.0)); + tr1Entry1.setAccount(accountVmpVae); + tr1Entry1.setDescription("test desc"); + tr1Entry1.setVoucher("voucher"); + transaction.addEntry(tr1Entry1); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); FiscalPeriod nextFiscalPeriod = new FiscalPeriodImpl(); - nextFiscalPeriod.setBeginDate(DateUtil.createDate(01, 01, 2013)); + nextFiscalPeriod.setBeginDate(DateUtil.createDate(1, 1, 2013)); nextFiscalPeriod.setEndDate(DateUtil.createDate(31, 12, 2013)); fiscalPeriodService.createFiscalPeriod(nextFiscalPeriod); @@ -344,13 +366,20 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { public void removeFinancialTransactionFailLockedEntryBookTest() throws Exception { EntryBook entryBook = entryBookService.getEntryBookByCode("jdv"); + Account accountVmpVae = accountService.getAccountByNumber("511"); FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); - transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); + + Entry tr1Entry1 = new EntryImpl(); + tr1Entry1.setAmount(BigDecimal.valueOf(54.0)); + tr1Entry1.setAccount(accountVmpVae); + tr1Entry1.setDescription("test desc"); + tr1Entry1.setVoucher("voucher"); + transaction.addEntry(tr1Entry1); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); List<FinancialPeriod> financialPeriods = financialPeriodService.getAllFinancialPeriods(); @@ -369,9 +398,9 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); Entry entry = new EntryImpl(); entry.setAccount(accountService.getAccountByNumber("511")); @@ -394,28 +423,36 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); - transaction = financialTransactionService.createFinancialTransaction(transaction); + Entry entry = new EntryImpl(); + entry.setAccount(accountService.getAccountByNumber("511")); + entry.setVoucher("Voucher"); + entry.setDebit(true); + entry.setDescription("Test"); + entry.setAmount(BigDecimal.valueOf(14.36)); + transaction.addEntry(entry); + + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); FiscalPeriod nextFiscalPeriod = new FiscalPeriodImpl(); - nextFiscalPeriod.setBeginDate(DateUtil.createDate(01, 01, 2013)); + nextFiscalPeriod.setBeginDate(DateUtil.createDate(1, 1, 2013)); nextFiscalPeriod.setEndDate(DateUtil.createDate(31, 12, 2013)); fiscalPeriodService.createFiscalPeriod(nextFiscalPeriod); fiscalPeriodService.blockFiscalPeriod(fiscalPeriod); + Entry entry1 = new EntryImpl(); + entry1.setAccount(accountService.getAccountByNumber("511")); + entry1.setVoucher("Voucher"); + entry1.setDebit(false); + entry.setDescription("Test2"); + entry1.setAmount(BigDecimal.valueOf(15.36)); + transaction.addEntry(entry1); - Entry entry = new EntryImpl(); - entry.setAccount(accountService.getAccountByNumber("511")); - entry.setVoucher("Voucher"); - entry.setDebit(true); - entry.setAmount(BigDecimal.valueOf(14.36)); - transaction.addEntry(entry); - - financialTransactionService.createEntry(entry); + financialTransactionService.createEntry(entry1); } @@ -427,9 +464,17 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); + + Entry entry = new EntryImpl(); + entry.setAccount(accountService.getAccountByNumber("511")); + entry.setVoucher("Voucher"); + entry.setDebit(true); + entry.setAmount(BigDecimal.valueOf(14.36)); + entry.setDescription("Test"); + transaction.addEntry(entry); - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); List<FinancialPeriod> financialPeriods = financialPeriodService.getAllFinancialPeriods(); @@ -437,14 +482,14 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { financialPeriodService.blockClosedPeriodicEntryBook(closedPeriodicEntryBook); - Entry entry = new EntryImpl(); - entry.setAccount(accountService.getAccountByNumber("511")); - entry.setVoucher("Voucher"); - entry.setDebit(true); - entry.setAmount(BigDecimal.valueOf(14.36)); - transaction.addEntry(entry); + Entry entry2 = new EntryImpl(); + entry2.setAccount(accountService.getAccountByNumber("511")); + entry2.setVoucher("Voucher"); + entry2.setDebit(true); + entry2.setAmount(BigDecimal.valueOf(14.36)); + transaction.addEntry(entry2); - financialTransactionService.createEntry(entry); + financialTransactionService.createEntry(entry2); } @@ -456,21 +501,19 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - Date date = DateUtil.createDate(12, 01, 2012); + Date date = DateUtil.createDate(12, 1, 2012); transaction.setTransactionDate(date); - - transaction = financialTransactionService.createFinancialTransaction(transaction); - Entry entry = new EntryImpl(); entry.setAccount(accountService.getAccountByNumber("511")); entry.setVoucher("Voucher"); entry.setDebit(true); + entry.setDescription("Test"); entry.setAmount(BigDecimal.valueOf(14.36)); transaction.addEntry(entry); - Entry entry1 = financialTransactionService.createEntry(entry); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); - financialTransactionService.updateFinancialTransaction(transaction); + Entry entry1 = Lists.newArrayList(transaction.getEntry()).get(0); entry1.setAccount(accountService.getAccountByNumber("501")); entry1.setVoucher("VoucherBis"); @@ -499,9 +542,7 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); - - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); Entry entry = new EntryImpl(); entry.setAccount(accountService.getAccountByNumber("511")); @@ -511,14 +552,15 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { entry.setAmount(BigDecimal.valueOf(14.36)); transaction.addEntry(entry); - Entry entry1 = financialTransactionService.createEntry(entry); - financialTransactionService.updateFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); + Entry entry1 = Lists.newArrayList(transaction.getEntry()).get(0); + financialTransactionService.updateFinancialTransaction(transaction); FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); FiscalPeriod nextFiscalPeriod = new FiscalPeriodImpl(); - nextFiscalPeriod.setBeginDate(DateUtil.createDate(01, 01, 2013)); + nextFiscalPeriod.setBeginDate(DateUtil.createDate(1, 1, 2013)); nextFiscalPeriod.setEndDate(DateUtil.createDate(31, 12, 2013)); fiscalPeriodService.createFiscalPeriod(nextFiscalPeriod); @@ -542,9 +584,7 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); - - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); Entry entry1 = new EntryImpl(); entry1.setAccount(accountService.getAccountByNumber("511")); @@ -562,8 +602,10 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { entry2.setDescription("Description"); transaction.addEntry(entry2); - Entry entrySave1 = financialTransactionService.createEntry(entry1); - Entry entrySave2 = financialTransactionService.createEntry(entry2); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); + + Entry entrySave1 = Lists.newArrayList(transaction.getEntry()).get(0); + financialTransactionService.updateFinancialTransaction(transaction); List<FinancialPeriod> financialPeriods = financialPeriodService.getAllFinancialPeriods(); @@ -589,11 +631,9 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - Date date = DateUtil.createDate(12, 01, 2012); + Date date = DateUtil.createDate(12, 1, 2012); transaction.setTransactionDate(date); - transaction = financialTransactionService.createFinancialTransaction(transaction); - Entry entry = new EntryImpl(); entry.setAccount(accountService.getAccountByNumber("511")); entry.setVoucher("Voucher"); @@ -601,11 +641,13 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { entry.setAmount(BigDecimal.valueOf(14.36)); transaction.addEntry(entry); - Entry entry1 = financialTransactionService.createEntry(entry); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); + + Entry entrySave1 = Lists.newArrayList(transaction.getEntry()).get(0); financialTransactionService.updateFinancialTransaction(transaction); - financialTransactionService.removeEntry(entry1); + financialTransactionService.removeEntry(entrySave1); FinancialTransaction transactionSave = financialTransactionService.getAllFinancialTransactions(date, date).get(0); @@ -621,9 +663,7 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); - - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); Entry entry = new EntryImpl(); entry.setAccount(accountService.getAccountByNumber("511")); @@ -633,14 +673,14 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { entry.setAmount(BigDecimal.valueOf(14.36)); transaction.addEntry(entry); - Entry entry1 = financialTransactionService.createEntry(entry); - financialTransactionService.updateFinancialTransaction(transaction); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); + Entry entry1 = Lists.newArrayList(transaction.getEntry()).get(0); FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); FiscalPeriod nextFiscalPeriod = new FiscalPeriodImpl(); - nextFiscalPeriod.setBeginDate(DateUtil.createDate(01, 01, 2013)); + nextFiscalPeriod.setBeginDate(DateUtil.createDate(1, 1, 2013)); nextFiscalPeriod.setEndDate(DateUtil.createDate(31, 12, 2013)); fiscalPeriodService.createFiscalPeriod(nextFiscalPeriod); @@ -658,9 +698,7 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction = financialTransactionService.createNewFinancialTransaction(); transaction.setEntryBook(entryBook); - transaction.setTransactionDate(DateUtil.createDate(12, 01, 2012)); - - transaction = financialTransactionService.createFinancialTransaction(transaction); + transaction.setTransactionDate(DateUtil.createDate(12, 1, 2012)); Entry entry1 = new EntryImpl(); entry1.setAccount(accountService.getAccountByNumber("511")); @@ -678,8 +716,10 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { entry2.setDescription("Description"); transaction.addEntry(entry2); - Entry entrySave1 = financialTransactionService.createEntry(entry1); - Entry entrySave2 = financialTransactionService.createEntry(entry2); + transaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); + + Entry entrySave1 = Lists.newArrayList(transaction.getEntry()).get(0); + financialTransactionService.updateFinancialTransaction(transaction); List<FinancialPeriod> financialPeriods = financialPeriodService.getAllFinancialPeriods(); @@ -724,8 +764,6 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction1 = new FinancialTransactionImpl(); transaction1.setTransactionDate(df.parse("April 5, 2012")); transaction1.setEntryBook(journalDesVentes); - transaction1 = financialTransactionService.createFinancialTransaction(transaction1); - Entry tr1Entry1 = new EntryImpl(); tr1Entry1.setAmount(BigDecimal.valueOf(42.0)); @@ -733,8 +771,8 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { tr1Entry1.setFinancialTransaction(transaction1); //tr1Entry1.setDescription("test desc"); tr1Entry1.setVoucher("voucher"); - financialTransactionService.createEntry(tr1Entry1); - + transaction1.addEntry(tr1Entry1); + Entry tr1Entry2 = new EntryImpl(); tr1Entry2.setAmount(BigDecimal.valueOf(42.0)); tr1Entry2.setDebit(true); @@ -742,8 +780,10 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { tr1Entry2.setFinancialTransaction(transaction1); tr1Entry2.setDescription("test desc"); tr1Entry2.setVoucher("voucher"); - financialTransactionService.createEntry(tr1Entry2); - + transaction1.addEntry(tr1Entry2); + + transaction1 = financialTransactionService.createFinancialTransactionWithEntries(transaction1, transaction1.getEntry()); + // one in period FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); List<FinancialTransaction> transactions = financialTransactionService.getAllInexactFinancialTransactions(fiscalPeriod); @@ -767,7 +807,6 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction1 = new FinancialTransactionImpl(); transaction1.setTransactionDate(df.parse("April 5, 2012")); transaction1.setEntryBook(journalDesVentes); - transaction1 = financialTransactionService.createFinancialTransaction(transaction1); Entry tr1Entry1 = new EntryImpl(); tr1Entry1.setAmount(BigDecimal.valueOf(54.0)); @@ -775,7 +814,9 @@ public class FinancialTransactionServiceImplTest extends AbstractLimaTest { tr1Entry1.setFinancialTransaction(transaction1); tr1Entry1.setDescription("test desc"); tr1Entry1.setVoucher("voucher"); - financialTransactionService.createEntry(tr1Entry1); + transaction1.addEntry(tr1Entry1); + + financialTransactionService.createFinancialTransactionWithEntries(transaction1, transaction1.getEntry()); // one in period FiscalPeriod fiscalPeriod = fiscalPeriodService.getAllFiscalPeriods().get(0); diff --git a/lima-business/src/test/java/org/chorem/lima/business/FiscalPeriodServiceImplTest.java b/lima-business/src/test/java/org/chorem/lima/business/FiscalPeriodServiceImplTest.java index 8f5f9ed6..a0193848 100644 --- a/lima-business/src/test/java/org/chorem/lima/business/FiscalPeriodServiceImplTest.java +++ b/lima-business/src/test/java/org/chorem/lima/business/FiscalPeriodServiceImplTest.java @@ -474,7 +474,7 @@ public class FiscalPeriodServiceImplTest extends AbstractLimaTest { FiscalPeriod period1 = new FiscalPeriodImpl(); - Date bedingDate1 = DateUtil.createDate(01, 01, 2012); + Date bedingDate1 = DateUtil.createDate(1, 1, 2012); period1.setBeginDate(bedingDate1); Date endDate1 = DateUtil.createDate(31, 12, 2012); period1.setEndDate(endDate1); @@ -482,7 +482,7 @@ public class FiscalPeriodServiceImplTest extends AbstractLimaTest { FiscalPeriod periodSave1 = fiscalPeriodService.createFiscalPeriod(period1); FiscalPeriod period2 = new FiscalPeriodImpl(); - Date bedingDate2 = DateUtil.createDate(01, 01, 2013); + Date bedingDate2 = DateUtil.createDate(1, 1, 2013); period2.setBeginDate(bedingDate2); Date endDate2 = DateUtil.createDate(31, 12, 2013); period2.setEndDate(endDate2); @@ -490,7 +490,7 @@ public class FiscalPeriodServiceImplTest extends AbstractLimaTest { fiscalPeriodService.createFiscalPeriod(period2); BigDecimal amount = BigDecimal.valueOf(42.14); - createFinancialTransaction("jdv", DateUtil.createDate(04, 04, 2012), "511", "501", amount); + createFinancialTransaction("jdv", DateUtil.createDate(4, 4, 2012), "511", "501", amount); fiscalPeriodService.retainedEarningsAndBlockFiscalPeriod(periodSave1, atNew); diff --git a/lima-business/src/test/java/org/chorem/lima/business/ReportServiceImplTest.java b/lima-business/src/test/java/org/chorem/lima/business/ReportServiceImplTest.java index a3e05e0d..1907fdba 100644 --- a/lima-business/src/test/java/org/chorem/lima/business/ReportServiceImplTest.java +++ b/lima-business/src/test/java/org/chorem/lima/business/ReportServiceImplTest.java @@ -91,7 +91,7 @@ public class ReportServiceImplTest extends AbstractLimaTest { FinancialTransaction transaction1 = new FinancialTransactionImpl(); transaction1.setTransactionDate(df.parse("April 5, 2012")); transaction1.setEntryBook(journalDesVentes); - transaction1 = financialTransactionService.createFinancialTransaction(transaction1); + transaction1 = financialTransactionService.createFinancialTransactionWithEntries(transaction1, transaction1.getEntry()); Entry tr1Entry1 = new EntryImpl(); tr1Entry1.setAmount(BigDecimal.valueOf(54.0)); diff --git a/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java b/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java index 859cbf95..8105232f 100644 --- a/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java +++ b/lima-swing/src/main/java/org/chorem/lima/ui/common/FinancialTransactionTableModel.java @@ -41,7 +41,6 @@ import org.chorem.lima.entity.ClosedPeriodicEntryBook; import org.chorem.lima.entity.Entry; import org.chorem.lima.entity.EntryImpl; import org.chorem.lima.entity.FinancialTransaction; -import org.chorem.lima.entity.FinancialTransactionImpl; import org.chorem.lima.ui.financialtransaction.AccountColumn; import org.chorem.lima.ui.financialtransaction.CreditColumn; import org.chorem.lima.ui.financialtransaction.DayColumn; @@ -255,32 +254,10 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> i } public FinancialTransaction addTransaction(FinancialTransaction transaction) throws LockedFinancialPeriodException, LockedEntryBookException, AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException { - FinancialTransaction newTransaction = new FinancialTransactionImpl(); - newTransaction.setEntryBook(transaction.getEntryBook()); - newTransaction.setTransactionDate(transaction.getTransactionDate()); - newTransaction = financialTransactionService.createFinancialTransaction(newTransaction); - - if (transaction.getEntry() == null || transaction.getEntry().isEmpty()) { - Entry newEntry = new EntryImpl(); - newEntry.setFinancialTransaction(newTransaction); - newEntry = financialTransactionService.createEntry(newEntry); - newTransaction.addEntry(newEntry); - } else { - for (Entry entry : transaction.getEntry()) { - Entry newEntry = new EntryImpl(); - newEntry.setFinancialTransaction(newTransaction); - newEntry.setVoucher(entry.getVoucher()); - newEntry.setAccount(entry.getAccount()); - newEntry.setDescription(entry.getDescription()); - newEntry.setAmount(entry.getAmount()); - newEntry.setDebit(entry.isDebit()); - newEntry = financialTransactionService.createEntry(newEntry); - newTransaction.addEntry(newEntry); - } - financialTransactionService.updateFinancialTransaction(newTransaction); - } + FinancialTransaction newTransaction = financialTransactionService.createFinancialTransactionWithEntries(transaction, transaction.getEntry()); addAll(newTransaction.getEntry()); + return newTransaction; } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.