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 cefaabd6b33080a05545e08d4259bb0887b637f9 Author: David Cossé <cosse@codelutin.com> Date: Mon Oct 16 00:51:40 2017 +0200 refs #1396 correction les entrées n'étaient pas sauvegardées --- .../business/api/FinancialTransactionService.java | 4 +-- .../ejb/FinancialTransactionServiceImpl.java | 8 +++-- .../lima/business/ejb/ImportServiceImpl.java | 36 +++++++++++++++------- 3 files changed, 32 insertions(+), 16 deletions(-) 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 254c6928..ab609caf 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 @@ -63,7 +63,7 @@ public interface FinancialTransactionService { */ Entry createNewEntry(); - void createImportedFinancialTransactions(Collection<FinancialTransaction> financialtransactions); + Iterable<FinancialTransaction> persistImportedFinancialTransactions(Collection<FinancialTransaction> financialtransactions); FinancialTransaction createFinancialTransaction(FinancialTransaction financialtransaction) throws AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException, LockedFinancialPeriodException, LockedEntryBookException; @@ -170,5 +170,5 @@ public interface FinancialTransactionService { List<Entry> removeLetter(String letter); - void createdImportedEntries(Collection<Entry> values); + void persistImportedEntries(Collection<Entry> values); } 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 95028251..e1c153c0 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 @@ -140,10 +140,12 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme } @Override - public void createImportedFinancialTransactions(Collection<FinancialTransaction> financialTransactions) { + public Iterable<FinancialTransaction> persistImportedFinancialTransactions(Collection<FinancialTransaction> financialTransactions) { FinancialTransactionTopiaDao financialtransactionTopiaDao = getDaoHelper().getFinancialTransactionDao(); - financialtransactionTopiaDao.createAll(financialTransactions); + Iterable<FinancialTransaction> result = financialtransactionTopiaDao.createAll(financialTransactions); + + return result; } @Override @@ -401,7 +403,7 @@ public class FinancialTransactionServiceImpl extends AbstractLimaService impleme } @Override - public void createdImportedEntries(Collection<Entry> entries) { + public void persistImportedEntries(Collection<Entry> entries) { EntryTopiaDao entryTopiaDao = getDaoHelper().getEntryDao(); entryTopiaDao.createAll(entries); } 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 7aee724a..e7da7a83 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 @@ -1002,7 +1002,7 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ // for all unblocked financialperiod List<FinancialPeriod> financialPeriods = financialPeriodTopiaDao.forProperties(FinancialPeriod.PROPERTY_LOCKED, false).findAll(); - Map<FinancialTransaction, Entry> financialTransactionsToSave = new HashMap<>(); + Map<FinancialTransaction, List<Entry>> financialTransactionsToSave = new HashMap<>(); for (EntryEBP entryEBP : entryEBPs) { Date dateEcr = entryEBP.getDatEcr(); @@ -1021,8 +1021,9 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ try { // find financial transactions for entry period and entrybook - FinancialTransaction transaction = createImportEntryFinancialTransaction(entry, entryEBP.getJournal(), indexedEntryBooks, entryBookFinancialTransactionByDate, dateEcr, financialPeriods); - financialTransactionsToSave.put(transaction, entry); + FinancialTransaction transaction = getOrCreateImportEntryFinancialTransaction(entryEBP.getJournal(), indexedEntryBooks, entryBookFinancialTransactionByDate, dateEcr, financialPeriods); + List<Entry> transactionEntriesToSave = financialTransactionsToSave.computeIfAbsent(transaction, k -> new ArrayList<>()); + transactionEntriesToSave.add(entry); } catch (LockedFinancialPeriodException | LockedEntryBookException | AlreadyExistEntryBookException | AfterLastFiscalPeriodException | BeforeFirstFiscalPeriodException e) { result.addException(e); @@ -1033,9 +1034,9 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ result.increaseCreated(); } List<FinancialTransaction> transactions = Lists.newArrayList(financialTransactionsToSave.keySet()); - financialTransactionService.createImportedFinancialTransactions(transactions); - List<Entry> entries = Lists.newArrayList(financialTransactionsToSave.values()); - financialTransactionService.createdImportedEntries(entries); + Iterable<FinancialTransaction> savedTransactions = financialTransactionService.persistImportedFinancialTransactions(transactions); + + addEntriesToTransactions(entryBookFinancialTransactionByDate, financialTransactionsToSave, savedTransactions); if (log.isInfoEnabled()) { long after = System.currentTimeMillis(); @@ -1049,6 +1050,22 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ return results; } + protected void addEntriesToTransactions(Map<EntryBook, Map<Date, FinancialTransaction>> entryBookFinancialTransactionByDate, Map<FinancialTransaction, List<Entry>> financialTransactionsToSave, Iterable<FinancialTransaction> savedTransactions) { + List<Entry> entriesToSaves = new ArrayList<>(); + for (FinancialTransaction transaction : savedTransactions) { + + Map<Date, FinancialTransaction> financialTransactionsByDate = entryBookFinancialTransactionByDate.get(transaction.getEntryBook()); + + FinancialTransaction financialTransaction = financialTransactionsByDate.get(transaction.getTransactionDate()); + + List<Entry> fEntries = financialTransactionsToSave.get(financialTransaction); + transaction.addAllEntry(fEntries); + entriesToSaves.addAll(fEntries); + } + + financialTransactionService.persistImportedEntries(entriesToSaves); + } + protected Entry createNewEntry(EntryEBP entryEBP, final Account account) { Entry entry; BigDecimal debit; @@ -1071,7 +1088,7 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ return entry; } - protected FinancialTransaction createImportEntryFinancialTransaction(Entry entry, String entryBookCode, Map<String, EntryBook> indexedEntryBooks, Map<EntryBook, Map<Date, FinancialTransaction>> entryBookFinancialTransactionByDate, Date dateEcr, List<FinancialPeriod> financialPeriods) throws LockedFinancialPeriodException, LockedEntryBookException, AlreadyExistEntryBookException, AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException { + protected FinancialTransaction getOrCreateImportEntryFinancialTransaction(String entryBookCode, Map<String, EntryBook> indexedEntryBooks, Map<EntryBook, Map<Date, FinancialTransaction>> entryBookFinancialTransactionByDate, Date dateEcr, List<FinancialPeriod> financialPeriods) throws LockedFinancialPeriodException, LockedEntryBookException, AlreadyExistEntryBookException, AfterLastFiscalPeriodException, BeforeFirstFiscalPeriodException { EntryBook entryBook = getOrCreateEntryBook(indexedEntryBooks, entryBookCode, financialPeriods); Map<Date, FinancialTransaction> financialTransactionsByDate = entryBookFinancialTransactionByDate.computeIfAbsent(entryBook, k -> new HashMap<>()); @@ -1084,15 +1101,12 @@ public class ImportServiceImpl extends AbstractLimaService implements ImportServ .getCode().equals( financialTransaction.getEntryBook() .getCode()))) { - // create financial transaction + // create non persisted financial transaction financialTransaction = financialTransactionService.createNewFinancialTransaction(); financialTransaction.setEntryBook(entryBook); financialTransaction.setTransactionDate(dateEcr); - //financialTransaction = financialTransactionService.createImportedFinancialTransactions(financialTransaction); financialTransactionsByDate.put(financialTransaction.getTransactionDate(), financialTransaction); } -// financialTransaction.addEntry(entry); -// financialTransactionService.createdImportedEntry(entry); return financialTransaction; } -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.