branch develop updated (10064bde -> ac3b63cf)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository lima. See https://gitlab.nuiton.org/chorem/lima.git from 10064bde refs #1394 initialisation des listeners apres modification des la vue initiale new 60b17c7d refs #1394 Revue du mécanisme de création/peristance des transactions et de leur entrées new d993ad81 refs #1394 Ne calculer le status transaction locked que si nécéssaire new ac3b63cf refs #1394 Ajout d'index en base de données The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit ac3b63cf437c52906b66abcd1048d755169804c2 Author: David Cossé <cosse@codelutin.com> Date: Tue Oct 24 11:04:03 2017 +0200 refs #1394 Ajout d'index en base de données commit d993ad81db79cfef011198eddd5963b9f4355a03 Author: David Cossé <cosse@codelutin.com> Date: Tue Oct 24 11:03:41 2017 +0200 refs #1394 Ne calculer le status transaction locked que si nécéssaire 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 Summary of changes: .../api/ClosedPeriodicEntryBookService.java | 3 +- .../org/chorem/lima/business/api/EntryService.java | 5 + .../business/api/FinancialTransactionService.java | 16 +- .../org/chorem/lima/business/AccountingRules.java | 3 + .../chorem/lima/business/LimaBusinessConfig.java | 1 + .../accountingrules/DefaultAccountingRules.java | 15 +- .../ejb/ClosedPeriodicEntryBookServiceImpl.java | 8 + .../chorem/lima/business/ejb/EntryServiceImpl.java | 6 + .../ejb/FinancialTransactionServiceImpl.java | 91 +++++++- .../lima/business/ejb/FiscalPeriodServiceImpl.java | 28 +-- .../lima/business/ejb/ImportServiceImpl.java | 37 ++-- .../entity/ClosedPeriodicEntryBookTopiaDao.java | 18 +- .../lima/entity/FinancialTransactionTopiaDao.java | 2 +- .../org/chorem/lima/business/AbstractLimaTest.java | 39 ++-- .../FinancialTransactionServiceImplTest.java | 243 ++++++++++++--------- .../lima/business/FiscalPeriodServiceImplTest.java | 6 +- .../lima/business/ReportServiceImplTest.java | 2 +- .../db/migration/V0_8_7_0__1394_add_indexes.sql | 2 +- .../ui/common/FinancialTransactionTableModel.java | 112 +++++++--- .../FinancialTransactionViewHandler.java | 6 +- 20 files changed, 432 insertions(+), 211 deletions(-) -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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>.
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 d993ad81db79cfef011198eddd5963b9f4355a03 Author: David Cossé <cosse@codelutin.com> Date: Tue Oct 24 11:03:41 2017 +0200 refs #1394 Ne calculer le status transaction locked que si nécéssaire --- .../api/ClosedPeriodicEntryBookService.java | 3 +- .../chorem/lima/business/LimaBusinessConfig.java | 1 + .../ejb/ClosedPeriodicEntryBookServiceImpl.java | 8 ++ .../entity/ClosedPeriodicEntryBookTopiaDao.java | 18 ++++- .../lima/entity/FinancialTransactionTopiaDao.java | 2 +- .../ui/common/FinancialTransactionTableModel.java | 85 ++++++++++++++++++++-- .../FinancialTransactionViewHandler.java | 6 +- 7 files changed, 111 insertions(+), 12 deletions(-) diff --git a/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java b/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java index 1cb69546..59d6d040 100644 --- a/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java +++ b/lima-business-api/src/main/java/org/chorem/lima/business/api/ClosedPeriodicEntryBookService.java @@ -41,5 +41,6 @@ public interface ClosedPeriodicEntryBookService { List<ClosedPeriodicEntryBook> getAllByEntryBookAndDates(EntryBook entryBook, Date beginDate, Date endDate); ClosedPeriodicEntryBook getByEntryBookAndFinancialPeriod(EntryBook entryBook, Date date); - + + List<ClosedPeriodicEntryBook> getForDates(Date from, Date to); } diff --git a/lima-business/src/main/java/org/chorem/lima/business/LimaBusinessConfig.java b/lima-business/src/main/java/org/chorem/lima/business/LimaBusinessConfig.java index db1561cf..c2d72fc6 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/LimaBusinessConfig.java +++ b/lima-business/src/main/java/org/chorem/lima/business/LimaBusinessConfig.java @@ -341,6 +341,7 @@ public class LimaBusinessConfig { APPLICATION_VERSION("application.version", n("application.version"), null, String.class, false, false), DATA_DIR("lima.data.dir", n("lima.config.data.dir.description"), "${user.home}/.lima", File.class, false, false), + BACKUP_DIR("lima.reports.dir",n("lima.config.reports.dir.description"),"${lima.data.dir}/backups", File.class, false, false), RULES_NATIONALTY("lima.rules", n("lima.config.rulesnationality.description"), FranceAccountingRules.class.getName(), String.class, false, false), HOST_EJB_ADDRESS("lima.host.ejb.address", n("lima.host.address.description"), "localhost", String.class, false, false), diff --git a/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java b/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java index 352d51e3..d9ac2239 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java +++ b/lima-business/src/main/java/org/chorem/lima/business/ejb/ClosedPeriodicEntryBookServiceImpl.java @@ -76,5 +76,13 @@ public class ClosedPeriodicEntryBookServiceImpl extends AbstractLimaService impl return result; } + @Override + public List<ClosedPeriodicEntryBook> getForDates(Date from, Date to) { + + ClosedPeriodicEntryBookTopiaDao accountTopiaDao = getDaoHelper().getClosedPeriodicEntryBookDao(); + List<ClosedPeriodicEntryBook> result = accountTopiaDao.findAllForDate(from, to); + + return result; + } } diff --git a/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java b/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java index e5390435..c8e4d717 100644 --- a/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java +++ b/lima-business/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java @@ -93,6 +93,22 @@ public class ClosedPeriodicEntryBookTopiaDao extends AbstractClosedPeriodicEntry return closedPeriodicEntryBook; } + public List<ClosedPeriodicEntryBook> findAllForDate( + Date from, Date date) { + + HqlAndParametersBuilder<ClosedPeriodicEntryBook> builder = newHqlAndParametersBuilder(); + + builder.addLowerOrEquals(PROPERTY_BEGIN_DATE, date); + + builder.addGreaterOrEquals(PROPERTY_END_DATE, date); + + builder.setOrderByArguments(PROPERTY_BEGIN_DATE); + + List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = findAll(builder.getHql(), builder.getHqlParameters()); + + return closedPeriodicEntryBooks; + } + /** * Retourne toutes les ClosedPeriodicEntryBook par interval de date * sur les periodes sur lequelles elles portent ordonnée par journal. @@ -107,7 +123,7 @@ public class ClosedPeriodicEntryBookTopiaDao extends AbstractClosedPeriodicEntry HqlAndParametersBuilder<ClosedPeriodicEntryBook> builder = newHqlAndParametersBuilder(); builder.addGreaterOrEquals(PROPERTY_BEGIN_DATE, beginDate); builder.addLowerOrEquals(PROPERTY_END_DATE, endDate); - builder.setOrderByArguments(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK + "." + EntryBook.PROPERTY_CODE); + builder.setOrderByArguments(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK + "." + EntryBook.PROPERTY_CODE, ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD + "." + FinancialPeriod.PROPERTY_BEGIN_DATE); List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = findAll(builder.getHql(), builder.getHqlParameters()); return closedPeriodicEntryBooks; diff --git a/lima-business/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java b/lima-business/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java index a62cf981..d3fd795d 100644 --- a/lima-business/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java +++ b/lima-business/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java @@ -97,9 +97,9 @@ public class FinancialTransactionTopiaDao extends AbstractFinancialTransactionTo public List<FinancialTransaction> findAllByDates(Date beginDate, Date endDate, EntryBook entryBook) { HqlAndParametersBuilder<FinancialTransaction> builder = newHqlAndParametersBuilder(); + builder.addEquals(FinancialTransaction.PROPERTY_ENTRY_BOOK, entryBook); builder.addGreaterOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, beginDate); builder.addLowerOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, endDate); - builder.addEquals(FinancialTransaction.PROPERTY_ENTRY_BOOK, entryBook); builder.setOrderByArguments(FinancialTransaction.PROPERTY_TRANSACTION_DATE, FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE); List<FinancialTransaction> transactions = findAll(builder.getHql(), builder.getHqlParameters()); return transactions; 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 8105232f..6a677fb5 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 @@ -25,6 +25,7 @@ package org.chorem.lima.ui.common; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Ordering; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.lima.business.LimaServiceFactory; @@ -39,7 +40,9 @@ import org.chorem.lima.business.exceptions.LockedFinancialPeriodException; import org.chorem.lima.business.utils.EntryComparator; import org.chorem.lima.entity.ClosedPeriodicEntryBook; import org.chorem.lima.entity.Entry; +import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.EntryImpl; +import org.chorem.lima.entity.FinancialPeriod; import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.ui.financialtransaction.AccountColumn; import org.chorem.lima.ui.financialtransaction.CreditColumn; @@ -49,7 +52,10 @@ import org.chorem.lima.ui.financialtransaction.DescriptionColumn; import org.chorem.lima.ui.financialtransaction.VoucherColumn; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Collection; +import java.util.Date; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -73,6 +79,12 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> i protected ClosedPeriodicEntryBookService closedPeriodicEntryBookService; + protected HashMap<FinancialTransaction, ClosedPeriodicEntryBook> closedPeriodicEntryBookForTransaction; + + protected Map<EntryBook, List<ClosedPeriodicEntryBook>> closedPeriodicEntryBookByEntryBook; + + protected Boolean isGlobalyLocked; + public FinancialTransactionTableModel() { setComparator(new EntryComparator()); @@ -96,6 +108,7 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> i public void setTransactions(List<FinancialTransaction> transactions) { clear(); + List<Entry> orderedEntries = new ArrayList<>(); for (FinancialTransaction transaction : transactions) { //addAll(transaction.getEntry()); // Normal entry order is by create date @@ -103,11 +116,11 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> i // and make transaction reading difficult. // The following method keep entries ordered by date but group them by voucher to. List<Entry> result = getOrderedTransactionEntries(transaction); - addAll(result); + orderedEntries.addAll(result); } + addAll(orderedEntries); } - //Entries should be ordered from Model and data base. // FIXME ref #1291 protected List<Entry> getOrderedTransactionEntries(FinancialTransaction transaction) { @@ -136,13 +149,61 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> i } public void addAll(List<Entry> values) { + if (values != null && !values.isEmpty()) { + + setTransactionLocked(values); + int row = this.values.size(); this.values.addAll(values); fireTableRowsInserted(row, row + values.size() - 1); } } + protected void setTransactionLocked(List<Entry> values) { + if (isGlobalyLocked == null) { + + setClosedPeriodicEntryBookByEntryBook(values); + + setClosedPeriodicEntryBookForTransaction(values); + } + } + + protected void setClosedPeriodicEntryBookForTransaction(List<Entry> values) { + closedPeriodicEntryBookForTransaction = new HashMap<>(); + for (Entry value : values) { + FinancialTransaction etr = value.getFinancialTransaction(); + List<ClosedPeriodicEntryBook> cpebs = closedPeriodicEntryBookByEntryBook.get(etr.getEntryBook()); + if (CollectionUtils.isNotEmpty(cpebs)) { + for (ClosedPeriodicEntryBook cpeb : cpebs) { + FinancialPeriod fp = cpeb.getFinancialPeriod(); + if (cpeb.getFinancialPeriod().getBeginDate().compareTo(fp.getBeginDate()) <= 0 && + cpeb.getFinancialPeriod().getEndDate().compareTo(fp.getEndDate()) >= 0) { + closedPeriodicEntryBookForTransaction.put(etr, cpeb); + break; + } + } + } + } + } + + protected void setClosedPeriodicEntryBookByEntryBook(List<Entry> values) { + closedPeriodicEntryBookByEntryBook = new HashMap<>(); + List<Entry> orderedEntries = ordering.sortedCopy(values); + + Entry first = orderedEntries.get(0); + Entry last = orderedEntries.get(orderedEntries.size() - 1); + Date from = first.getFinancialTransaction().getTransactionDate(); + Date to = last.getFinancialTransaction().getTransactionDate(); + Collection<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = closedPeriodicEntryBookService.getForDates(from, to); + + for (ClosedPeriodicEntryBook closedPeriodicEntryBook : closedPeriodicEntryBooks) { + EntryBook entryBook = closedPeriodicEntryBook.getEntryBook(); + List<ClosedPeriodicEntryBook> cpeb = closedPeriodicEntryBookByEntryBook.computeIfAbsent(entryBook, k -> new ArrayList<>()); + cpeb.add(closedPeriodicEntryBook); + } + } + public FinancialTransaction getTransactionAt(int row) { Entry entry = get(row); return entry.getFinancialTransaction(); @@ -152,13 +213,19 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> i FinancialTransaction transaction = getTransactionAt(row); - Boolean locked = lockedByTransaction.get(transaction); + Boolean locked = isGlobalyLocked == null ? lockedByTransaction.get(transaction) : isGlobalyLocked; if (locked == null) { - ClosedPeriodicEntryBook closedPeriodicEntryBook = - closedPeriodicEntryBookService.getByEntryBookAndFinancialPeriod( - transaction.getEntryBook(), - transaction.getTransactionDate()); + ClosedPeriodicEntryBook closedPeriodicEntryBook = closedPeriodicEntryBookForTransaction.get(transaction); + + if (closedPeriodicEntryBook == null) { + closedPeriodicEntryBook = + closedPeriodicEntryBookService.getByEntryBookAndFinancialPeriod( + transaction.getEntryBook(), + transaction.getTransactionDate()); + closedPeriodicEntryBookForTransaction.put(transaction, closedPeriodicEntryBook); + } + if (log.isDebugEnabled()) { log.debug("transaction " + transaction.getTransactionDate() + " : " + closedPeriodicEntryBook.isLocked()); } @@ -340,4 +407,8 @@ public class FinancialTransactionTableModel extends TableModelWithGroup<Entry> i lockedByTransaction.clear(); } } + + public void setGlobalyLocked(Boolean globalyLocked) { + isGlobalyLocked = globalyLocked; + } } diff --git a/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionViewHandler.java b/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionViewHandler.java index 1b73eaed..df8649b0 100644 --- a/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionViewHandler.java +++ b/lima-swing/src/main/java/org/chorem/lima/ui/financialtransaction/FinancialTransactionViewHandler.java @@ -371,11 +371,13 @@ public class FinancialTransactionViewHandler implements ServiceListener, TableMo FinancialTransactionTable table = view.getFinancialTransactionTable(); FinancialTransactionTableModel tableModel = view.getFinancialTransactionTableModel(); - table.exit(); - tableModel.setTransactions(transactions); + table.exit(); boolean isLock = isTableLock(financialPeriod, entryBook); + tableModel.setGlobalyLocked(isLock); + + tableModel.setTransactions(transactions); if (table.isEditable() == isLock) { table.setEditable(!isLock); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
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 ac3b63cf437c52906b66abcd1048d755169804c2 Author: David Cossé <cosse@codelutin.com> Date: Tue Oct 24 11:04:03 2017 +0200 refs #1394 Ajout d'index en base de données --- .../src/main/resources/db/migration/V0_8_7_0__1394_add_indexes.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lima-callao/src/main/resources/db/migration/V0_8_7_0__1394_add_indexes.sql b/lima-callao/src/main/resources/db/migration/V0_8_7_0__1394_add_indexes.sql index fc08ad7c..b005fe3e 100644 --- a/lima-callao/src/main/resources/db/migration/V0_8_7_0__1394_add_indexes.sql +++ b/lima-callao/src/main/resources/db/migration/V0_8_7_0__1394_add_indexes.sql @@ -21,7 +21,7 @@ --- CREATE INDEX idx_FinancialTransaction_transactionDate ON FINANCIALTRANSACTION (transactionDate); -CREATE INDEX idx_FinancialTransaction_transactionDateentryBook ON FINANCIALTRANSACTION (transactionDate, entryBook); +CREATE INDEX idx_FinancialTransaction_EntryBookTransactionDate ON FINANCIALTRANSACTION (entryBook, transactionDate); CREATE INDEX idx_FinancialPeriod_beginDate ON FINANCIALPERIOD (beginDate); CREATE INDEX idx_FinancialPeriod_endDate ON FINANCIALPERIOD (endDate); CREATE INDEX idx_FiscalPeriod_beginDateendDate ON FINANCIALPERIOD (beginDate,endDate); -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm