r3844 - in trunk: lima-business/src/main/java/org/chorem/lima/business lima-business/src/main/java/org/chorem/lima/business/accountingrules lima-business/src/main/java/org/chorem/lima/business/ejb lima-business/src/main/resources/i18n lima-business/src/test/java/org/chorem/lima/business/accountingrules lima-business-api/src/main/java/org/chorem/lima/business lima-business-api/src/main/java/org/chorem/lima/business/api lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod lima-swing/src/mai
Author: sbavencoff Date: 2014-07-10 11:15:31 +0200 (Thu, 10 Jul 2014) New Revision: 3844 Url: http://forge.chorem.org/projects/lima/repository/revisions/3844 Log: refs #557 : fix fiscal period exception Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/AlreadyLockedFiscalPeriodException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/BeginAfterEndFiscalPeriodException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/LastUnlockedFiscalPeriodException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/MoreOneUnlockFiscalPeriodException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoEmptyFiscalPeriodException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoFoundFinancialPeriodException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/NotBeginNextDayOfLastFiscalPeriodException.java Modified: trunk/lima-business-api/src/main/java/org/chorem/lima/business/DateException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/FiscalPeriodException.java trunk/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java trunk/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java trunk/lima-business/src/main/resources/i18n/lima-business_en_GB.properties trunk/lima-business/src/main/resources/i18n/lima-business_fr_FR.properties trunk/lima-business/src/test/java/org/chorem/lima/business/accountingrules/TestAccountingRules.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties trunk/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/AccountingRules.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -68,11 +68,14 @@ * @param fiscalPeriod * @throws LimaException */ - List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException; + List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) + throws BeginAfterEndFiscalPeriodException, + NotBeginNextDayOfLastFiscalPeriodException, + MoreOneUnlockFiscalPeriodException; - void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException; + void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws LastUnlockedFiscalPeriodException; - void deleteFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException; + void deleteFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws NoEmptyFiscalPeriodException; /** * Entry rules Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -31,11 +31,15 @@ import org.chorem.lima.business.AccountingRules; import org.chorem.lima.business.AfterLastFiscalPeriodException; import org.chorem.lima.business.BeforeFirstFiscalPeriodException; -import org.chorem.lima.business.FiscalPeriodException; +import org.chorem.lima.business.BeginAfterEndFiscalPeriodException; import org.chorem.lima.business.InvalidAccountNumberException; +import org.chorem.lima.business.LastUnlockedFiscalPeriodException; import org.chorem.lima.business.LimaInterceptor; import org.chorem.lima.business.LockedEntryBookException; import org.chorem.lima.business.LockedFinancialPeriodException; +import org.chorem.lima.business.MoreOneUnlockFiscalPeriodException; +import org.chorem.lima.business.NoEmptyFiscalPeriodException; +import org.chorem.lima.business.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.business.NotLockedClosedPeriodicEntryBooksException; import org.chorem.lima.business.UnbalancedFinancialTransactionsException; import org.chorem.lima.business.UnfilledEntriesException; @@ -106,24 +110,27 @@ /** Rules to check before create fiscals periods */ @Override - public List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) + throws BeginAfterEndFiscalPeriodException, + NotBeginNextDayOfLastFiscalPeriodException, + MoreOneUnlockFiscalPeriodException { //check if the enddate period is after the begindate period if (fiscalPeriod.getEndDate().before(fiscalPeriod.getBeginDate())) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.defaultaccountingrules.enddateerror"); + throw new BeginAfterEndFiscalPeriodException(fiscalPeriod); } return null; } /** Rules to check before block fiscals periods */ @Override - public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException{ + public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws LastUnlockedFiscalPeriodException { } /** Rules to check before delete fiscals periods */ @Override public void deleteFiscalPeriodRules(FiscalPeriod fiscalPeriod) - throws FiscalPeriodException { + throws NoEmptyFiscalPeriodException { } /** Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -29,8 +29,12 @@ import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.chorem.lima.business.FiscalPeriodException; +import org.chorem.lima.business.BeginAfterEndFiscalPeriodException; import org.chorem.lima.business.InvalidAccountNumberException; +import org.chorem.lima.business.LastUnlockedFiscalPeriodException; +import org.chorem.lima.business.MoreOneUnlockFiscalPeriodException; +import org.chorem.lima.business.NoEmptyFiscalPeriodException; +import org.chorem.lima.business.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.business.NotLockedClosedPeriodicEntryBooksException; import org.chorem.lima.business.UnbalancedFinancialTransactionsException; import org.chorem.lima.business.UnfilledEntriesException; @@ -40,6 +44,7 @@ import org.chorem.lima.entity.ClosedPeriodicEntryBookTopiaDao; import org.chorem.lima.entity.FinancialPeriod; import org.chorem.lima.entity.FinancialPeriodImpl; +import org.chorem.lima.entity.FinancialTransaction; import org.chorem.lima.entity.FinancialTransactionTopiaDao; import org.chorem.lima.entity.FiscalPeriod; import org.chorem.lima.entity.FiscalPeriodTopiaDao; @@ -113,7 +118,11 @@ * Pas plus de deux exercices fiscaux ne peuvent-être ouvert en même temps */ @Override - public List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) + throws NotBeginNextDayOfLastFiscalPeriodException, + MoreOneUnlockFiscalPeriodException, + BeginAfterEndFiscalPeriodException { + super.createFiscalPeriodRules(fiscalPeriod); List<FinancialPeriod> financialPeriods = new ArrayList<FinancialPeriod>(); @@ -132,15 +141,14 @@ Date dateFiscalPeriod = fiscalPeriod.getBeginDate(); if (dateLastFiscalPeriod.compareTo(dateFiscalPeriod) != 0) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.franceaccountingrules.newfiscalperiodadjoiningerror"); + throw new NotBeginNextDayOfLastFiscalPeriodException(lastFiscalPeriod); } //We can create a new fiscal period meantime the last fiscal period was not locked //But not the ante periodfiscal - int unblockedFiscalPeriod = - fiscalPeriodTopiaDao.findAllByLocked(false).size(); + int unblockedFiscalPeriod = (int) fiscalPeriodTopiaDao.forLockedEquals(false).count(); if (unblockedFiscalPeriod > 1) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.franceaccountingrules.antefiscalperiodnotblocked"); + throw new MoreOneUnlockFiscalPeriodException(unblockedFiscalPeriod); } } @@ -175,7 +183,7 @@ * On ne peut pas clore la dernière periode comptable ouverte. */ @Override - public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public void blockFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws LastUnlockedFiscalPeriodException { FiscalPeriodTopiaDao fiscalPeriodTopiaDao = getDaoHelper().getFiscalPeriodDao(); FiscalPeriod oldestUnBlockedFiscalPeriod = @@ -183,7 +191,7 @@ //Check if the fiscal period to block is the oldest if (oldestUnBlockedFiscalPeriod.equals(fiscalPeriod)) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.franceaccountingrules.lastFiscalPeriodCantBlocked"); + throw new LastUnlockedFiscalPeriodException(fiscalPeriod); } } @@ -193,13 +201,14 @@ * On ne peut supprimer qu'une periode comptable ouverte vide. */ @Override - public void deleteFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public void deleteFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws NoEmptyFiscalPeriodException { FinancialTransactionTopiaDao financialTransactionTopiaDao = getDaoHelper().getFinancialTransactionDao(); //Check if the fiscal period to delete is empty - if (financialTransactionTopiaDao.findAllByDates(fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate()).size() != 0) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.franceaccountingrules.fiscalperiodnotempty"); + List<FinancialTransaction> financialTransactions = financialTransactionTopiaDao.findAllByDates(fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate()); + if (!financialTransactions.isEmpty()) { + throw new NoEmptyFiscalPeriodException(financialTransactions); } } Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FiscalPeriodServiceImpl.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -31,17 +31,22 @@ import org.chorem.lima.beans.ReportsDatas; import org.chorem.lima.business.AccountException; import org.chorem.lima.business.AccountingRules; -import org.chorem.lima.business.FiscalPeriodException; +import org.chorem.lima.business.AlreadyLockedFiscalPeriodException; +import org.chorem.lima.business.BeginAfterEndFiscalPeriodException; +import org.chorem.lima.business.LastUnlockedFiscalPeriodException; import org.chorem.lima.business.LimaConfig; import org.chorem.lima.business.LockedEntryBookException; import org.chorem.lima.business.LockedFinancialPeriodException; +import org.chorem.lima.business.MoreOneUnlockFiscalPeriodException; +import org.chorem.lima.business.NoEmptyFiscalPeriodException; +import org.chorem.lima.business.NoFoundFinancialPeriodException; +import org.chorem.lima.business.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.business.api.AccountService; import org.chorem.lima.business.api.EntryBookService; import org.chorem.lima.business.api.FinancialPeriodService; 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.utils.FinancialPeriodComparator; import org.chorem.lima.entity.Account; import org.chorem.lima.entity.AccountImpl; import org.chorem.lima.entity.ClosedPeriodicEntryBook; @@ -57,16 +62,15 @@ import org.chorem.lima.entity.FinancialTransactionImpl; import org.chorem.lima.entity.FiscalPeriod; import org.chorem.lima.entity.FiscalPeriodTopiaDao; +import org.nuiton.topia.persistence.TopiaNoResultException; import javax.ejb.EJB; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import java.math.BigDecimal; -import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; -import java.util.Collections; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -100,7 +104,10 @@ protected FinancialTransactionService financialTransactionService; @Override - public FiscalPeriod createFiscalPeriod(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public FiscalPeriod createFiscalPeriod(FiscalPeriod fiscalPeriod) + throws BeginAfterEndFiscalPeriodException, + NotBeginNextDayOfLastFiscalPeriodException, + MoreOneUnlockFiscalPeriodException { FiscalPeriodTopiaDao fiscalPeriodTopiaDao = getDaoHelper().getFiscalPeriodDao(); FinancialPeriodTopiaDao financialPeriodTopiaDao = getDaoHelper().getFinancialPeriodDao(); @@ -201,12 +208,13 @@ * check localized rules before block it */ @Override - public FiscalPeriod blockFiscalPeriod(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public FiscalPeriod blockFiscalPeriod(FiscalPeriod fiscalPeriod) + throws AlreadyLockedFiscalPeriodException, LastUnlockedFiscalPeriodException { AccountingRules accountingRules = LimaConfig.getInstance().getAccountingRules(); if (fiscalPeriod.isLocked()) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.fiscalperiod.fiscalperiodalreadyblocked"); + throw new AlreadyLockedFiscalPeriodException(fiscalPeriod); } //check rules accountingRules.blockFiscalPeriodRules(fiscalPeriod); @@ -273,7 +281,12 @@ @Override public FiscalPeriod retainedEarningsAndBlockFiscalPeriod(FiscalPeriod fiscalPeriod, EntryBook entryBook, boolean retainedEarnings) - throws AccountException, LockedFinancialPeriodException, LockedEntryBookException, FiscalPeriodException { + throws AccountException, + LockedFinancialPeriodException, + LockedEntryBookException, + NoFoundFinancialPeriodException, + LastUnlockedFiscalPeriodException, + AlreadyLockedFiscalPeriodException { if (entryBook != null && retainedEarnings) { @@ -330,34 +343,28 @@ lastFPeriod = itr.next(); } - FinancialPeriod beginfinancialPeriod = null; - //look for the first financial period on the new fiscal year which is unlocked - List<ClosedPeriodicEntryBook> resultsArray = - new ArrayList<ClosedPeriodicEntryBook>(); - List<ClosedPeriodicEntryBook> closedPeriodicEntryBook = - financialPeriodService.getAllClosedPeriodicEntryBooksFromUnblockedFiscalPeriod(); - Collections.sort(closedPeriodicEntryBook, new FinancialPeriodComparator()); - resultsArray.addAll(closedPeriodicEntryBook); - for (ClosedPeriodicEntryBook cPeriodicEntryBook : resultsArray) { + Date beginDateNextFiscalPeriod = DateUtils.addDays(localFiscalPeriod.getEndDate(), 1); - //check for - unlocked financial period - // - date after the closing fiscal year - // - unlocked entrybook - // - right code and label - if (!cPeriodicEntryBook.getFinancialPeriod().isLocked() - && cPeriodicEntryBook.getFinancialPeriod().getBeginDate().after(localFiscalPeriod.getEndDate()) - && !cPeriodicEntryBook.isLocked() - && cPeriodicEntryBook.getEntryBook().getCode().equals(entryBook.getCode()) - && cPeriodicEntryBook.getEntryBook().getLabel().equals(entryBook.getLabel())) { - beginfinancialPeriod = cPeriodicEntryBook.getFinancialPeriod(); - break; - } + FinancialPeriodTopiaDao financialPeriodDao = getDaoHelper().getFinancialPeriodDao(); + FinancialPeriod beginfinancialPeriod = null; + try { + beginfinancialPeriod = financialPeriodDao.findByDate(beginDateNextFiscalPeriod); + } catch (TopiaNoResultException e) { + throw new NoFoundFinancialPeriodException(beginDateNextFiscalPeriod, e); } - if (beginfinancialPeriod == null) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.fiscalperiod.newfinancialperioderror"); + + if (beginfinancialPeriod.isLocked()) { + throw new LockedFinancialPeriodException(beginfinancialPeriod); } + ClosedPeriodicEntryBookTopiaDao closedPeriodicEntryBookDao = getDaoHelper().getClosedPeriodicEntryBookDao(); + ClosedPeriodicEntryBook closedPeriodicEntryBook = closedPeriodicEntryBookDao.findByEntryBookAndFinancialPeriod(entryBook, beginfinancialPeriod); + + if (closedPeriodicEntryBook.isLocked()) { + throw new LockedEntryBookException(closedPeriodicEntryBook); + } + //holds entries of all closing transactions FinancialTransaction endfinancialTransaction = new FinancialTransactionImpl(); if (lastFPeriod != null) { @@ -445,7 +452,7 @@ * check localized rules before delete it */ @Override - public void deleteFiscalPeriod(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public void deleteFiscalPeriod(FiscalPeriod fiscalPeriod) throws NoEmptyFiscalPeriodException { AccountingRules accountingRules = LimaConfig.getInstance().getAccountingRules(); //get entities with TopiaDao Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ImportServiceImpl.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -51,11 +51,13 @@ import org.chorem.lima.beans.VatStatementImport; import org.chorem.lima.beans.VatStatementImportImpl; import org.chorem.lima.business.AccountException; -import org.chorem.lima.business.FiscalPeriodException; +import org.chorem.lima.business.BeginAfterEndFiscalPeriodException; import org.chorem.lima.business.ImportEbpException; import org.chorem.lima.business.LimaConfig; import org.chorem.lima.business.LockedEntryBookException; import org.chorem.lima.business.LockedFinancialPeriodException; +import org.chorem.lima.business.MoreOneUnlockFiscalPeriodException; +import org.chorem.lima.business.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.business.NotLockedClosedPeriodicEntryBooksException; import org.chorem.lima.business.UnbalancedFinancialTransactionsException; import org.chorem.lima.business.UnfilledEntriesException; @@ -1228,8 +1230,12 @@ result.append(t("lima-business.import.fiscalperiodadded", fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate())); - } catch (FiscalPeriodException e) { - result.append(t("lima-business.common.failed", e.getMessage())); + } catch (BeginAfterEndFiscalPeriodException e) { + result.append("Can't import " + t("lima-business.import.FiscalPeriod.error.beginAfterEndFiscalPeriod")); + } catch (MoreOneUnlockFiscalPeriodException e) { + result.append("Can't import " + t("lima-business.import.FiscalPeriod.error.moreOneUnlockFiscalPeriod")); + } catch (NotBeginNextDayOfLastFiscalPeriodException e) { + result.append("Can't import " + t("lima-business.import.FiscalPeriod.error.notBeginNextDayOfLastFiscalPeriod")); } } return result.toString(); Modified: trunk/lima-business/src/main/resources/i18n/lima-business_en_GB.properties =================================================================== --- trunk/lima-business/src/main/resources/i18n/lima-business_en_GB.properties 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/main/resources/i18n/lima-business_en_GB.properties 2014-07-10 09:15:31 UTC (rev 3844) @@ -87,6 +87,9 @@ lima-business.franceaccountingrules.newfiscalperiodadjoiningerror=The new fiscal period must adjoining the last lima-business.import.FinancialTransaction.error.LockedEntryBook= lima-business.import.FinancialTransaction.error.LockedFinancialPeriod= +lima-business.import.FiscalPeriod.error.beginAfterEndFiscalPeriod= +lima-business.import.FiscalPeriod.error.moreOneUnlockFiscalPeriod= +lima-business.import.FiscalPeriod.error.notBeginNextDayOfLastFiscalPeriod= lima-business.import.accountadded=SUCCES \: Account %s - %s added\n lima-business.import.accountalreadyexist=FAILED \: Account %s already exist \n lima-business.import.closedperiodicentrybookupdated=SUCCESS \: The blockClosedPeriodicEntryBook %s - %s - %s is updated \! \n Modified: trunk/lima-business/src/main/resources/i18n/lima-business_fr_FR.properties =================================================================== --- trunk/lima-business/src/main/resources/i18n/lima-business_fr_FR.properties 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/main/resources/i18n/lima-business_fr_FR.properties 2014-07-10 09:15:31 UTC (rev 3844) @@ -84,6 +84,9 @@ lima-business.franceaccountingrules.newfiscalperiodadjoiningerror=La nouvelle période fiscale doit suivre la précédente lima-business.import.FinancialTransaction.error.LockedEntryBook=Impossible de mettre à jour la transaction \: la période financière de ce nouveau journal est bloquée lima-business.import.FinancialTransaction.error.LockedFinancialPeriod=La période financière est bloquée +lima-business.import.FiscalPeriod.error.beginAfterEndFiscalPeriod=La date de début doit être avant la date de fin +lima-business.import.FiscalPeriod.error.moreOneUnlockFiscalPeriod=Seul deux exercices non clôturés sont autorisés +lima-business.import.FiscalPeriod.error.notBeginNextDayOfLastFiscalPeriod=la date de début doit suivre la date de fin du précédent exercice lima-business.import.accountadded=Succès \: Compte %s - %s ajouté\n lima-business.import.accountalreadyexist=Échec \: Le compte %s existe déjà \n lima-business.import.closedPeriodicEntryBook.error.NotLockedPreviousEntryBook=Les périodes financières précédentes pour ce journal doivent être bloquées avant Modified: trunk/lima-business/src/test/java/org/chorem/lima/business/accountingrules/TestAccountingRules.java =================================================================== --- trunk/lima-business/src/test/java/org/chorem/lima/business/accountingrules/TestAccountingRules.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business/src/test/java/org/chorem/lima/business/accountingrules/TestAccountingRules.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -24,7 +24,9 @@ package org.chorem.lima.business.accountingrules; import org.apache.commons.lang3.time.DateUtils; -import org.chorem.lima.business.FiscalPeriodException; +import org.chorem.lima.business.BeginAfterEndFiscalPeriodException; +import org.chorem.lima.business.MoreOneUnlockFiscalPeriodException; +import org.chorem.lima.business.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.entity.FinancialPeriod; import org.chorem.lima.entity.FinancialPeriodImpl; import org.chorem.lima.entity.FiscalPeriod; @@ -59,7 +61,10 @@ * Copier/coller de la methode france. * Le probleme ici est que le default n'en creer aucune. */ - public List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) throws FiscalPeriodException { + public List<FinancialPeriod> createFiscalPeriodRules(FiscalPeriod fiscalPeriod) + throws MoreOneUnlockFiscalPeriodException, + NotBeginNextDayOfLastFiscalPeriodException, + BeginAfterEndFiscalPeriodException { super.createFiscalPeriodRules(fiscalPeriod); List<FinancialPeriod> financialPeriods = new ArrayList<FinancialPeriod>(); FiscalPeriodTopiaDao fiscalPeriodDAO = getDaoHelper().getFiscalPeriodDao(); @@ -75,14 +80,14 @@ dateLastFiscalPeriod = DateUtils.truncate(dateLastFiscalPeriod, Calendar.DATE); Date dateFiscalPeriod = fiscalPeriod.getBeginDate(); if (dateLastFiscalPeriod.compareTo(dateFiscalPeriod) != 0) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.franceaccountingrules.newfiscalperiodadjoiningerror"); + throw new NotBeginNextDayOfLastFiscalPeriodException(lastFiscalPeriod); } //We can create a new fiscal period meantime the last fiscal period was not locked //But not the ante periodfiscal int unblockedFiscalPeriod = fiscalPeriodDAO.forLockedEquals(false).findAll().size(); if (unblockedFiscalPeriod > 1) { - throw new FiscalPeriodException(fiscalPeriod, "lima-business.franceaccountingrules.antefiscalperiodnotblocked"); + throw new MoreOneUnlockFiscalPeriodException(unblockedFiscalPeriod); } } Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/AlreadyLockedFiscalPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/AlreadyLockedFiscalPeriodException.java (rev 0) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/AlreadyLockedFiscalPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -0,0 +1,17 @@ +package org.chorem.lima.business; + +import org.chorem.lima.entity.FiscalPeriod; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class AlreadyLockedFiscalPeriodException extends FiscalPeriodException { + + public AlreadyLockedFiscalPeriodException(FiscalPeriod fiscalPeriod) { + super(fiscalPeriod); + } + + public AlreadyLockedFiscalPeriodException(FiscalPeriod fiscalPeriod, Throwable cause) { + super(fiscalPeriod, cause); + } +} Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/BeginAfterEndFiscalPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/BeginAfterEndFiscalPeriodException.java (rev 0) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/BeginAfterEndFiscalPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -0,0 +1,17 @@ +package org.chorem.lima.business; + +import org.chorem.lima.entity.FiscalPeriod; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class BeginAfterEndFiscalPeriodException extends FiscalPeriodException { + + public BeginAfterEndFiscalPeriodException(FiscalPeriod fiscalPeriod) { + super(fiscalPeriod); + } + + public BeginAfterEndFiscalPeriodException(FiscalPeriod fiscalPeriod, Throwable cause) { + super(fiscalPeriod, cause); + } +} Modified: trunk/lima-business-api/src/main/java/org/chorem/lima/business/DateException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/DateException.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/DateException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -5,7 +5,7 @@ /** * @author Sylvain Bavencoff <bavencoff@codelutin.com> */ -public class DateException extends LimaException { +public abstract class DateException extends LimaException { protected Date date; Modified: trunk/lima-business-api/src/main/java/org/chorem/lima/business/FiscalPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/FiscalPeriodException.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/FiscalPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -27,25 +27,17 @@ /** * @author Sylvain Bavencoff <bavencoff@codelutin.com> */ -public class FiscalPeriodException extends LimaException { +public abstract class FiscalPeriodException extends LimaException { protected FiscalPeriod fiscalPeriod; - public FiscalPeriodException(String message) { - super(message); - } - - public FiscalPeriodException(String message, Throwable cause) { - super(message, cause); - } - - public FiscalPeriodException(FiscalPeriod fiscalPeriod, String message) { - super(message); + public FiscalPeriodException(FiscalPeriod fiscalPeriod) { + super(""); this.fiscalPeriod = fiscalPeriod; } - public FiscalPeriodException(FiscalPeriod fiscalPeriod, String message, Throwable cause) { - super(message, cause); + public FiscalPeriodException(FiscalPeriod fiscalPeriod, Throwable cause) { + super("", cause); this.fiscalPeriod = fiscalPeriod; } Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/LastUnlockedFiscalPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/LastUnlockedFiscalPeriodException.java (rev 0) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/LastUnlockedFiscalPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -0,0 +1,17 @@ +package org.chorem.lima.business; + +import org.chorem.lima.entity.FiscalPeriod; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class LastUnlockedFiscalPeriodException extends FiscalPeriodException { + + public LastUnlockedFiscalPeriodException(FiscalPeriod fiscalPeriod) { + super(fiscalPeriod); + } + + public LastUnlockedFiscalPeriodException(FiscalPeriod fiscalPeriod, Throwable cause) { + super(fiscalPeriod, cause); + } +} Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/MoreOneUnlockFiscalPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/MoreOneUnlockFiscalPeriodException.java (rev 0) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/MoreOneUnlockFiscalPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -0,0 +1,23 @@ +package org.chorem.lima.business; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class MoreOneUnlockFiscalPeriodException extends LimaException { + + int countUnlockFiscalPeriod; + + public MoreOneUnlockFiscalPeriodException(int countUnlockFiscalPeriod) { + super(""); + this.countUnlockFiscalPeriod = countUnlockFiscalPeriod; + } + + public MoreOneUnlockFiscalPeriodException(int countUnlockFiscalPeriod, Throwable cause) { + super("", cause); + this.countUnlockFiscalPeriod = countUnlockFiscalPeriod; + } + + public int getCountUnlockFiscalPeriod() { + return countUnlockFiscalPeriod; + } +} Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoEmptyFiscalPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoEmptyFiscalPeriodException.java (rev 0) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoEmptyFiscalPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -0,0 +1,18 @@ +package org.chorem.lima.business; + +import org.chorem.lima.entity.FinancialTransaction; + +import java.util.Collection; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class NoEmptyFiscalPeriodException extends FinancialTransactionsException { + public NoEmptyFiscalPeriodException(Collection<FinancialTransaction> financialTransactions) { + super(financialTransactions); + } + + public NoEmptyFiscalPeriodException(Collection<FinancialTransaction> financialTransactions, Throwable cause) { + super(financialTransactions, cause); + } +} Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoFoundFinancialPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoFoundFinancialPeriodException.java (rev 0) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/NoFoundFinancialPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -0,0 +1,17 @@ +package org.chorem.lima.business; + +import java.util.Date; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class NoFoundFinancialPeriodException extends DateException { + + public NoFoundFinancialPeriodException(Date date) { + super(date); + } + + public NoFoundFinancialPeriodException(Date date, Throwable cause) { + super(date, cause); + } +} Added: trunk/lima-business-api/src/main/java/org/chorem/lima/business/NotBeginNextDayOfLastFiscalPeriodException.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/NotBeginNextDayOfLastFiscalPeriodException.java (rev 0) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/NotBeginNextDayOfLastFiscalPeriodException.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -0,0 +1,17 @@ +package org.chorem.lima.business; + +import org.chorem.lima.entity.FiscalPeriod; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class NotBeginNextDayOfLastFiscalPeriodException extends FiscalPeriodException { + + public NotBeginNextDayOfLastFiscalPeriodException(FiscalPeriod fiscalPeriod) { + super(fiscalPeriod); + } + + public NotBeginNextDayOfLastFiscalPeriodException(FiscalPeriod fiscalPeriod, Throwable cause) { + super(fiscalPeriod, cause); + } +} Modified: trunk/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java =================================================================== --- trunk/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-business-api/src/main/java/org/chorem/lima/business/api/FiscalPeriodService.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -26,9 +26,15 @@ package org.chorem.lima.business.api; import org.chorem.lima.business.AccountException; -import org.chorem.lima.business.FiscalPeriodException; +import org.chorem.lima.business.AlreadyLockedFiscalPeriodException; +import org.chorem.lima.business.BeginAfterEndFiscalPeriodException; +import org.chorem.lima.business.LastUnlockedFiscalPeriodException; import org.chorem.lima.business.LockedEntryBookException; import org.chorem.lima.business.LockedFinancialPeriodException; +import org.chorem.lima.business.MoreOneUnlockFiscalPeriodException; +import org.chorem.lima.business.NoEmptyFiscalPeriodException; +import org.chorem.lima.business.NoFoundFinancialPeriodException; +import org.chorem.lima.business.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.FiscalPeriod; @@ -53,11 +59,15 @@ FiscalPeriod getLastFiscalPeriod(); - FiscalPeriod createFiscalPeriod(FiscalPeriod fiscalPeriod) throws FiscalPeriodException; + FiscalPeriod createFiscalPeriod(FiscalPeriod fiscalPeriod) + throws BeginAfterEndFiscalPeriodException, + NotBeginNextDayOfLastFiscalPeriodException, + MoreOneUnlockFiscalPeriodException; - FiscalPeriod blockFiscalPeriod(FiscalPeriod fiscalPeriod) throws FiscalPeriodException; + FiscalPeriod blockFiscalPeriod(FiscalPeriod fiscalPeriod) + throws AlreadyLockedFiscalPeriodException, LastUnlockedFiscalPeriodException; - void deleteFiscalPeriod(FiscalPeriod fiscalPeriod) throws FiscalPeriodException; + void deleteFiscalPeriod(FiscalPeriod fiscalPeriod) throws NoEmptyFiscalPeriodException; /** * Eventually add retained earnings on last unclosed fiscal period, @@ -69,7 +79,7 @@ * */ FiscalPeriod retainedEarningsAndBlockFiscalPeriod(FiscalPeriod fiscalPeriod, EntryBook entryBook, boolean retainedEarnings) - throws AccountException, FiscalPeriodException, LockedFinancialPeriodException, LockedEntryBookException; + throws AccountException, LockedFinancialPeriodException, LockedEntryBookException, NoFoundFinancialPeriodException, LastUnlockedFiscalPeriodException, AlreadyLockedFiscalPeriodException; /** * Test if we have retained earnings on a fiscal period Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/fiscalperiod/FiscalPeriodViewHandler.java 2014-07-10 09:15:31 UTC (rev 3844) @@ -30,7 +30,12 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.lima.LimaConfig; -import org.chorem.lima.business.FiscalPeriodException; +import org.chorem.lima.business.AlreadyLockedFiscalPeriodException; +import org.chorem.lima.business.BeginAfterEndFiscalPeriodException; +import org.chorem.lima.business.LastUnlockedFiscalPeriodException; +import org.chorem.lima.business.MoreOneUnlockFiscalPeriodException; +import org.chorem.lima.business.NoEmptyFiscalPeriodException; +import org.chorem.lima.business.NotBeginNextDayOfLastFiscalPeriodException; import org.chorem.lima.business.ServiceListener; import org.chorem.lima.business.api.FinancialTransactionService; import org.chorem.lima.business.api.FiscalPeriodService; @@ -196,8 +201,16 @@ fiscalPeriod.setEndDate(addPeriodDialog.getEndDatePicker().getDate()); fiscalPeriod = fiscalPeriodService.createFiscalPeriod(fiscalPeriod); tableModel.addValue(fiscalPeriod); - } catch (FiscalPeriodException e) { - errorHelper.showErrorMessage(t(e.getMessage())); + } catch (BeginAfterEndFiscalPeriodException e) { + errorHelper.showErrorMessage(t("lima.ui.fiscalPeriod.add.error.beginAfterEndFiscalPeriod", + e.getFiscalPeriod().getBeginDate(), + e.getFiscalPeriod().getEndDate())); + } catch (MoreOneUnlockFiscalPeriodException e) { + errorHelper.showErrorMessage(t("lima.ui.fiscalPeriod.add.error.moreOneUnlockFiscalPeriod", + e.getCountUnlockFiscalPeriod())); + } catch (NotBeginNextDayOfLastFiscalPeriodException e) { + errorHelper.showErrorMessage(t("lima.ui.fiscalPeriod.add.error.notBeginNextDayOfLastFiscalPeriod", + e.getFiscalPeriod().getEndDate())); } } } @@ -211,10 +224,9 @@ if (!addPeriodDialog.isValidate()) { return false; } else if (endDate.before(beginDate)) { - JOptionPane.showMessageDialog(view, - t("lima.ui.fiscalperiod.addfiscalperiod.endAfterBegin"), - title, - JOptionPane.ERROR_MESSAGE); + errorHelper.showErrorMessage(t("lima.ui.fiscalPeriod.add.error.beginAfterEndFiscalPeriod", + beginDate, + endDate)); return false; } else { //check if fiscalperiod have 12 months, ask a confirmation @@ -297,8 +309,9 @@ tableModel.remove(selectedFiscalPeriod); view.setBlockEnabled(false); view.setDeleteEnabled(false); - } catch (FiscalPeriodException e) { - errorHelper.showErrorMessage(t(e.getMessage())); + } catch (NoEmptyFiscalPeriodException e) { + errorHelper.showErrorMessage(t("lima.ui.fiscalPeriod.delete.error.noEmptyFiscalPeriod", + e.getFinancialTransactions().size())); } } } @@ -427,8 +440,12 @@ view.setBlockEnabled(false); view.setDeleteEnabled(false); - } catch (FiscalPeriodException e) { - errorHelper.showErrorMessage(t(e.getMessage())); + } catch (LastUnlockedFiscalPeriodException e) { + errorHelper.showErrorMessage(t("lima.ui.fiscalPeriod.block.error.lastUnlockedFiscalPeriod", + e.getFiscalPeriod().getBeginDate(), + e.getFiscalPeriod().getEndDate())); + } catch (AlreadyLockedFiscalPeriodException e) { + errorHelper.showErrorMessage(t("lima.ui.fiscalPeriod.block.error.AlreadyLockedFiscalPeriod")); } } } Modified: trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties =================================================================== --- trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties 2014-07-10 09:15:31 UTC (rev 3844) @@ -440,8 +440,17 @@ lima.ui.financialtransaction.titleremoveentry= lima.ui.financialtransaction.titleremovetransaction= lima.ui.financialtransaction.voucher= +lima.ui.fiscalPeriod.add.beginAfterEndFiscalPeriod= +lima.ui.fiscalPeriod.add.error.beginAfterEndFiscalPeriod= +lima.ui.fiscalPeriod.add.error.moreOneUnlockFiscalPeriod= +lima.ui.fiscalPeriod.add.error.notBeginNextDayOfLastFiscalPeriod= +lima.ui.fiscalPeriod.add.moreOneUnlockFiscalPeriod= +lima.ui.fiscalPeriod.add.notBeginNextDayOfLastFiscalPeriod= +lima.ui.fiscalPeriod.block.error.AlreadyLockedFiscalPeriod= +lima.ui.fiscalPeriod.block.error.lastUnlockedFiscalPeriod= lima.ui.fiscalPeriod.buttonback= lima.ui.fiscalPeriod.buttonnext= +lima.ui.fiscalPeriod.delete.error.noEmptyFiscalPeriod= lima.ui.fiscalperiod.addfiscalperiod.addfiscalperiodtitle= lima.ui.fiscalperiod.addfiscalperiod.endAfterBegin= lima.ui.fiscalperiod.addfiscalperiod.morethan12= Modified: trunk/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties =================================================================== --- trunk/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties 2014-07-10 06:31:00 UTC (rev 3843) +++ trunk/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties 2014-07-10 09:15:31 UTC (rev 3844) @@ -419,9 +419,14 @@ lima.ui.financialtransaction.titleremoveentry=Suppression lima.ui.financialtransaction.titleremovetransaction=Suppression lima.ui.financialtransaction.voucher=Pièce comptable +lima.ui.fiscalPeriod.add.error.beginAfterEndFiscalPeriod=Le date de fin de l'exercice (%2$te/%2$tm/%2$tY) doit être postérieur à la date de début (%1$te/%1$tm/%1$tY) +lima.ui.fiscalPeriod.add.error.moreOneUnlockFiscalPeriod=Il existe déjà %1s exercices non clôturés. +lima.ui.fiscalPeriod.add.error.notBeginNextDayOfLastFiscalPeriod=La date de début de l'exercice doit suivre la date de fin de l'exercice précédent le %1$te/%1$tm/%1$tY +lima.ui.fiscalPeriod.block.error.AlreadyLockedFiscalPeriod=L'exercice est déjà clôturés +lima.ui.fiscalPeriod.block.error.lastUnlockedFiscalPeriod=L'exercice prédent doit être clôturé lima.ui.fiscalPeriod.buttonback= lima.ui.fiscalPeriod.buttonnext= -lima.ui.fiscalperiod.addfiscalperiod.endAfterBegin=Le date de fin de l'exercice doit être postérieur à la date de début +lima.ui.fiscalPeriod.delete.error.noEmptyFiscalPeriod=Impossible de supprimer un exercice avec des transactions (%1$s). lima.ui.fiscalperiod.addfiscalperiod.morethan12=La période sélectionnée n'est pas de 12 mois, voulez-vous continuer ? lima.ui.fiscalperiod.addfiscalperiodtitle=Nouvel exercice lima.ui.fiscalperiod.begin=Début
participants (1)
-
sbavencoff@users.chorem.org