branch feature/1232 created (now 1d60b71)
This is an automated email from the git hooks/post-receive script. New change to branch feature/1232 in repository lima. See http://git.chorem.org/lima.git at 1d60b71 fixes #1232 : ne pas clôturer un exercice avec des transactions en erreur This branch includes the following new commits: new 1d60b71 fixes #1232 : ne pas clôturer un exercice avec des transactions en erreur The 1 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 1d60b713868083fb68c4b286b7f97f457b5347ba Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri May 29 17:47:38 2015 +0200 fixes #1232 : ne pas clôturer un exercice avec des transactions en erreur -- 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 feature/1232 in repository lima. See http://git.chorem.org/lima.git commit 1d60b713868083fb68c4b286b7f97f457b5347ba Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri May 29 17:47:38 2015 +0200 fixes #1232 : ne pas clôturer un exercice avec des transactions en erreur --- .../lima/business/api/FiscalPeriodService.java | 8 ++- .../org/chorem/lima/business/AccountingRules.java | 2 +- .../accountingrules/DefaultAccountingRules.java | 39 +++++++++- .../accountingrules/FranceAccountingRules.java | 7 +- .../lima/business/ejb/FiscalPeriodServiceImpl.java | 15 +++- .../java/org/chorem/lima/entity/EntryTopiaDao.java | 23 ++++++ .../lima/entity/FinancialTransactionTopiaDao.java | 1 - .../ui/fiscalperiod/FiscalPeriodViewHandler.java | 82 ++++++++++++++++++++-- .../resources/i18n/lima-swing_en_GB.properties | 9 +++ .../resources/i18n/lima-swing_fr_FR.properties | 9 +++ 10 files changed, 179 insertions(+), 16 deletions(-) diff --git a/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java b/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java index e32e19c..cf35d41 100644 --- a/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java +++ b/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java @@ -28,7 +28,6 @@ import org.chorem.lima.business.exceptions.AlreadyLockedFiscalPeriodException; import org.chorem.lima.business.exceptions.BeginAfterEndFiscalPeriodException; import org.chorem.lima.business.exceptions.InvalidAccountNumberException; import org.chorem.lima.business.exceptions.LastUnlockedFiscalPeriodException; -import org.chorem.lima.business.exceptions.LimaException; import org.chorem.lima.business.exceptions.LockedEntryBookException; import org.chorem.lima.business.exceptions.LockedFinancialPeriodException; import org.chorem.lima.business.exceptions.MoreOneUnlockFiscalPeriodException; @@ -37,6 +36,9 @@ import org.chorem.lima.business.exceptions.NoFoundFinancialPeriodException; import org.chorem.lima.business.exceptions.NotAllowedLabelException; import org.chorem.lima.business.exceptions.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.business.exceptions.NotNumberAccountNumberException; +import org.chorem.lima.business.exceptions.UnbalancedFinancialTransactionsException; +import org.chorem.lima.business.exceptions.UnfilledEntriesException; +import org.chorem.lima.business.exceptions.WithoutEntryBookFinancialTransactionsException; import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.FiscalPeriod; @@ -110,7 +112,7 @@ public interface FiscalPeriodService { * @throws LastUnlockedFiscalPeriodException */ FiscalPeriod blockFiscalPeriod(FiscalPeriod fiscalPeriod) - throws AlreadyLockedFiscalPeriodException, LastUnlockedFiscalPeriodException; + throws AlreadyLockedFiscalPeriodException, LastUnlockedFiscalPeriodException, UnbalancedFinancialTransactionsException, WithoutEntryBookFinancialTransactionsException, UnfilledEntriesException; /** * Remove the given fiscal period @@ -135,7 +137,7 @@ public interface FiscalPeriodService { LastUnlockedFiscalPeriodException, AlreadyLockedFiscalPeriodException, AlreadyExistAccountException, - InvalidAccountNumberException, NotNumberAccountNumberException, NotAllowedLabelException, AlreadyExistEntryBookException, LimaException; + InvalidAccountNumberException, NotNumberAccountNumberException, NotAllowedLabelException, AlreadyExistEntryBookException, UnfilledEntriesException, UnbalancedFinancialTransactionsException, WithoutEntryBookFinancialTransactionsException; /** * Test if we have retained earnings on a fiscal period 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 ac1b443..322e194 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 @@ -89,7 +89,7 @@ public interface AccountingRules { NotBeginNextDayOfLastFiscalPeriodException, MoreOneUnlockFiscalPeriodException; - void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws LastUnlockedFiscalPeriodException; + void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws LastUnlockedFiscalPeriodException, UnbalancedFinancialTransactionsException, UnfilledEntriesException, WithoutEntryBookFinancialTransactionsException; void deleteFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws NoEmptyFiscalPeriodException; 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 b6e2be7..8d75a4c 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 @@ -127,7 +127,44 @@ public class DefaultAccountingRules implements AccountingRules { /** Rules to check before block fiscals periods */ @Override - public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws LastUnlockedFiscalPeriodException { + public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) + throws LastUnlockedFiscalPeriodException, UnbalancedFinancialTransactionsException, + UnfilledEntriesException, WithoutEntryBookFinancialTransactionsException { + + FinancialTransactionTopiaDao financialTransactionTopiaDao = getDaoHelper().getFinancialTransactionDao(); + EntryTopiaDao entryDao = getDaoHelper().getEntryDao(); + FiscalPeriodTopiaDao fiscalPeriodTopiaDao = getDaoHelper().getFiscalPeriodDao(); + + // reload object in current transaction + fiscalPeriod = fiscalPeriodTopiaDao.forTopiaIdEquals(fiscalPeriod.getTopiaId()).findUnique(); + + // Check if all financial transactions of this fiscal period are equilibrate + List<FinancialTransaction> allUnbalancedTransaction = financialTransactionTopiaDao.getAllUnbalancedTransaction( + fiscalPeriod.getBeginDate(), + fiscalPeriod.getEndDate(), + null); + + if (!allUnbalancedTransaction.isEmpty()) { + throw new UnbalancedFinancialTransactionsException(allUnbalancedTransaction); + } + + // Check if all financial transactions of this fiscal period are well filled in + List<Entry> allUnfilledEntry = entryDao.findAllUnfilledEntry( + fiscalPeriod.getBeginDate(), + fiscalPeriod.getEndDate()); + if (!allUnfilledEntry.isEmpty()) { + throw new UnfilledEntriesException(allUnfilledEntry); + } + + // Check if all financial transactions have EntryBooks + List<FinancialTransaction> allTransactionWithoutEntryBook = financialTransactionTopiaDao.findAllTransactionWithoutEntryBook( + fiscalPeriod.getBeginDate(), + fiscalPeriod.getEndDate()); + if (!allTransactionWithoutEntryBook.isEmpty()) { + throw new WithoutEntryBookFinancialTransactionsException(allTransactionWithoutEntryBook); + } + + } diff --git a/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java b/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java index 2b2ae1a..d32a099 100644 --- a/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java +++ b/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java @@ -169,7 +169,12 @@ public class FranceAccountingRules extends DefaultAccountingRules { * On ne peut pas clore la dernière periode comptable ouverte. */ @Override - public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws LastUnlockedFiscalPeriodException { + public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) + throws LastUnlockedFiscalPeriodException, UnbalancedFinancialTransactionsException, + WithoutEntryBookFinancialTransactionsException, UnfilledEntriesException { + + super.blockFiscalPeriodRules(fiscalPeriod); + FiscalPeriodTopiaDao fiscalPeriodTopiaDao = getDaoHelper().getFiscalPeriodDao(); FiscalPeriod lastUnlockedFiscalPeriod = 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 840ff7d..f8dc1da 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 @@ -35,11 +35,11 @@ import org.chorem.lima.business.api.FinancialTransactionService; import org.chorem.lima.business.api.FiscalPeriodService; import org.chorem.lima.business.api.ReportService; import org.chorem.lima.business.exceptions.AlreadyExistAccountException; +import org.chorem.lima.business.exceptions.AlreadyExistEntryBookException; import org.chorem.lima.business.exceptions.AlreadyLockedFiscalPeriodException; import org.chorem.lima.business.exceptions.BeginAfterEndFiscalPeriodException; import org.chorem.lima.business.exceptions.InvalidAccountNumberException; import org.chorem.lima.business.exceptions.LastUnlockedFiscalPeriodException; -import org.chorem.lima.business.exceptions.LimaException; import org.chorem.lima.business.exceptions.LockedEntryBookException; import org.chorem.lima.business.exceptions.LockedFinancialPeriodException; import org.chorem.lima.business.exceptions.MoreOneUnlockFiscalPeriodException; @@ -48,6 +48,9 @@ import org.chorem.lima.business.exceptions.NoFoundFinancialPeriodException; import org.chorem.lima.business.exceptions.NotAllowedLabelException; import org.chorem.lima.business.exceptions.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.business.exceptions.NotNumberAccountNumberException; +import org.chorem.lima.business.exceptions.UnbalancedFinancialTransactionsException; +import org.chorem.lima.business.exceptions.UnfilledEntriesException; +import org.chorem.lima.business.exceptions.WithoutEntryBookFinancialTransactionsException; import org.chorem.lima.entity.Account; import org.chorem.lima.entity.AccountImpl; import org.chorem.lima.entity.ClosedPeriodicEntryBook; @@ -231,7 +234,9 @@ public class FiscalPeriodServiceImpl extends AbstractLimaService implements Fisc */ @Override public FiscalPeriod blockFiscalPeriod(FiscalPeriod fiscalPeriod) - throws AlreadyLockedFiscalPeriodException, LastUnlockedFiscalPeriodException { + throws AlreadyLockedFiscalPeriodException, LastUnlockedFiscalPeriodException, + UnbalancedFinancialTransactionsException, WithoutEntryBookFinancialTransactionsException, + UnfilledEntriesException { AccountingRules accountingRules = LimaBusinessConfig.getInstance().getAccountingRules(); @@ -296,7 +301,11 @@ public class FiscalPeriodServiceImpl extends AbstractLimaService implements Fisc @Override public FiscalPeriod retainedEarningsAndBlockFiscalPeriod(FiscalPeriod fiscalPeriod, EntryBook entryBook, boolean retainedEarnings) - throws LimaException { + throws AlreadyExistEntryBookException, AlreadyExistAccountException, NotAllowedLabelException, + InvalidAccountNumberException, NotNumberAccountNumberException, NoFoundFinancialPeriodException, + LockedFinancialPeriodException, LockedEntryBookException, UnfilledEntriesException, + UnbalancedFinancialTransactionsException, LastUnlockedFiscalPeriodException, + WithoutEntryBookFinancialTransactionsException, AlreadyLockedFiscalPeriodException { if (entryBook != null && retainedEarnings) { diff --git a/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java b/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java index 7369610..4c44ba6 100644 --- a/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java +++ b/lima-business/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java @@ -308,4 +308,27 @@ public class EntryTopiaDao extends AbstractEntryTopiaDao<Entry> { return entries; } + /** + * get all entries where some field are not filled in. + * + * @param beginDate begin date + * @param endDate end date + * @return all entries where some field are not filled in + */ + public List<Entry> findAllUnfilledEntry(Date beginDate, Date endDate) { + + HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(PROPERTY_TRANSACTION_DATE, endDate); + builder.addWhereClause(Entry.PROPERTY_ACCOUNT + " = null " + + "OR " + Entry.PROPERTY_VOUCHER + " = null " + + "OR " + Entry.PROPERTY_VOUCHER + " = ''" + + "OR " + Entry.PROPERTY_DESCRIPTION + " = null " + + "OR " + Entry.PROPERTY_DESCRIPTION + " = ''" ); + + List<Entry> entries = findAll(builder.getHql(), builder.getHqlParameters()); + + return entries; + } + } 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 b7c5bc0..d0e2902 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 @@ -249,5 +249,4 @@ public class FinancialTransactionTopiaDao extends AbstractFinancialTransactionTo return result; } - } //FinancialTransactionDAO diff --git a/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java b/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java index 38d031a..19f6ccd 100644 --- a/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java +++ b/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java @@ -36,12 +36,17 @@ import org.chorem.lima.business.exceptions.LastUnlockedFiscalPeriodException; import org.chorem.lima.business.exceptions.MoreOneUnlockFiscalPeriodException; import org.chorem.lima.business.exceptions.NoEmptyFiscalPeriodException; import org.chorem.lima.business.exceptions.NotBeginNextDayOfLastFiscalPeriodException; +import org.chorem.lima.business.exceptions.UnbalancedFinancialTransactionsException; +import org.chorem.lima.business.exceptions.UnfilledEntriesException; +import org.chorem.lima.business.exceptions.WithoutEntryBookFinancialTransactionsException; +import org.chorem.lima.entity.Entry; import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.EntryBookImpl; import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.entity.FiscalPeriod; import org.chorem.lima.entity.FiscalPeriodImpl; import org.chorem.lima.business.LimaServiceFactory; +import org.chorem.lima.util.BigDecimalToString; import org.chorem.lima.util.ErrorHelper; import org.nuiton.util.DateUtil; @@ -59,6 +64,7 @@ import java.awt.event.KeyEvent; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.concurrent.ExecutionException; import static org.nuiton.i18n.I18n.t; @@ -419,6 +425,15 @@ public class FiscalPeriodViewHandler implements ServiceListener { @Override protected void done() { retainedEarningsWait.setVisible(false); + try { + get(); + } catch (InterruptedException e) { + catchExceptionDuringBlock(e); + } catch (ExecutionException e) { + catchExceptionDuringBlock(e.getCause()); + } + + } }.execute(); retainedEarningsWait.setVisible(true); @@ -448,12 +463,8 @@ public class FiscalPeriodViewHandler implements ServiceListener { view.setBlockEnabled(false); view.setDeleteEnabled(false); - } catch (LastUnlockedFiscalPeriodException e) { - errorHelper.showErrorMessage(t("lima.fiscalPeriod.block.error.lastUnlockedFiscalPeriod", - e.getFiscalPeriod().getBeginDate(), - e.getFiscalPeriod().getEndDate())); - } catch (AlreadyLockedFiscalPeriodException e) { - errorHelper.showErrorMessage(t("lima.fiscalPeriod.block.error.AlreadyLockedFiscalPeriod")); + } catch (Exception e) { + catchExceptionDuringBlock(e); } } } @@ -461,6 +472,65 @@ public class FiscalPeriodViewHandler implements ServiceListener { } } + protected void catchExceptionDuringBlock(Throwable e) { + + if (e instanceof LastUnlockedFiscalPeriodException) { + errorHelper.showErrorMessage(t("lima.fiscalPeriod.block.error.lastUnlockedFiscalPeriod", + ((LastUnlockedFiscalPeriodException) e).getFiscalPeriod().getBeginDate(), + ((LastUnlockedFiscalPeriodException) e).getFiscalPeriod().getEndDate())); + } else if (e instanceof AlreadyLockedFiscalPeriodException) { + errorHelper.showErrorMessage(t("lima.fiscalPeriod.block.error.AlreadyLockedFiscalPeriod")); + } else if (e instanceof UnbalancedFinancialTransactionsException) { + StringBuilder message = new StringBuilder(t("lima.fiscalPeriod.block.error.unbalanced.main")); + for (FinancialTransaction transaction : ((UnbalancedFinancialTransactionsException) e).getFinancialTransactions()) { + message.append("\n - "); + message.append(t("lima.fiscalPeriod.block.error.unbalanced.transaction", + transaction.getTransactionDate(), + BigDecimalToString.format(transaction.getAmountDebit()), + BigDecimalToString.format(transaction.getAmountCredit()))); + } + errorHelper.showErrorMessage(message.toString()); + } else if (e instanceof UnfilledEntriesException) { + StringBuilder message = new StringBuilder(t("lima.fiscalPeriod.block.error.unfilled.main")); + for (Entry entry : ((UnfilledEntriesException) e).getEntries()) { + message.append("\n - "); + message.append(t("lima.fiscalPeriod.block.error.unfilled.entry", + entry.getFinancialTransaction().getTransactionDate(), + BigDecimalToString.format(entry.getAmount()))); + if (entry.getAccount() == null) { + message.append("\n - "); + message.append(t("lima.fiscalPeriod.block.error.unfilled.noAccount")); + } + if (org.apache.commons.lang3.StringUtils.isBlank(entry.getVoucher())) { + message.append("\n - " ); + message.append(t("lima.fiscalPeriod.block.error.unfilled.noVoucher")); + } + if (org.apache.commons.lang3.StringUtils.isBlank(entry.getDescription())) { + message.append("\n - "); + message.append(t("lima.fiscalPeriod.block.error.unfilled.noDescription")); + } + } + errorHelper.showErrorMessage(message.toString()); + } else if (e instanceof WithoutEntryBookFinancialTransactionsException) { + StringBuilder message = new StringBuilder(t("lima.fiscalPeriod.block.error.withoutEntryBook.main")); + for (FinancialTransaction transaction : ((WithoutEntryBookFinancialTransactionsException) e).getFinancialTransactions()) { + message.append("\n - "); + message.append(t("lima.fiscalPeriod.block.error.withoutEntryBook.transaction", + transaction.getTransactionDate(), + BigDecimalToString.format(transaction.getAmountCredit()))); + } + errorHelper.showErrorMessage(message.toString()); + } else { + errorHelper.showErrorMessage(e.getMessage()); + } + + + + + + + } + @Override public void notifyMethod(String serviceName, String methodeName) { //refresh on import datas diff --git a/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties b/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties index 1f21268..81ed04d 100644 --- a/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties +++ b/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties @@ -327,6 +327,15 @@ lima.fiscalPeriod.block.cantBlockNotBalance=Faild, unbalanced fiscal period. lima.fiscalPeriod.block.confirmation=Do you really want to close this fiscal period ? This action can no be reverted \! lima.fiscalPeriod.block.error.AlreadyLockedFiscalPeriod=Fiscal period already closed lima.fiscalPeriod.block.error.lastUnlockedFiscalPeriod=Previous fiscal period must be closed +lima.fiscalPeriod.block.error.unbalanced.main= +lima.fiscalPeriod.block.error.unbalanced.transaction= +lima.fiscalPeriod.block.error.unfilled.entry= +lima.fiscalPeriod.block.error.unfilled.main= +lima.fiscalPeriod.block.error.unfilled.noAccount= +lima.fiscalPeriod.block.error.unfilled.noDescription= +lima.fiscalPeriod.block.error.unfilled.noVoucher= +lima.fiscalPeriod.block.error.withoutEntryBook.main= +lima.fiscalPeriod.block.error.withoutEntryBook.transaction= lima.fiscalPeriod.block.newYear=Do you want to create new fiscal year lima.fiscalPeriod.block.retainedEarnings=Push next lima.fiscalPeriod.block.title=Close fiscal period diff --git a/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties b/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties index 3655f1b..92e242d 100644 --- a/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties +++ b/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties @@ -337,6 +337,15 @@ lima.fiscalPeriod.block.cantBlockNotBalance=Impossible de clôturer un exercice lima.fiscalPeriod.block.confirmation=Ètes vous sûre de vouloir clôturer cette période ? Cette action est irréversible \! lima.fiscalPeriod.block.error.AlreadyLockedFiscalPeriod=L'exercice est déjà clôturés lima.fiscalPeriod.block.error.lastUnlockedFiscalPeriod=L'exercice prédent doit être clôturé +lima.fiscalPeriod.block.error.unbalanced.main=Impossible de clôturer cet exercicie car il contient des transactions non équilibrées \: +lima.fiscalPeriod.block.error.unbalanced.transaction=transaction du %1$te/%1$tm/%1$tY d'un débit de %2$s et d'un crédit de %3$s +lima.fiscalPeriod.block.error.unfilled.entry=entré du %1$te/%1$tm/%1$tY pour un montant de %2$s \: +lima.fiscalPeriod.block.error.unfilled.main=Impossible de clôturer cet exercice car il contient des entrés incomplétes \: +lima.fiscalPeriod.block.error.unfilled.noAccount=n'a pas de compte +lima.fiscalPeriod.block.error.unfilled.noDescription=n'a pas de description +lima.fiscalPeriod.block.error.unfilled.noVoucher=n'a pas de pièce comptable +lima.fiscalPeriod.block.error.withoutEntryBook.main=Impossible de clôturer cet exercice car il contient des transactions sans journal +lima.fiscalPeriod.block.error.withoutEntryBook.transaction=transaction du %1$te/%1$tm/%1$tY d'un montant de %2$s, lima.fiscalPeriod.block.newYear=Voulez vous créer un nouvel exercice? lima.fiscalPeriod.block.retainedEarnings=Report à nouveau lima.fiscalPeriod.block.title=Cloture de l'exercice -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.
participants (1)
-
chorem.org scm