r3838 - in trunk: lima-business/src/main/java/org/chorem/lima/business/accountingrules lima-callao/src/main/java/org/chorem/lima/entity
Author: sbavencoff Date: 2014-07-09 09:30:32 +0200 (Wed, 09 Jul 2014) New Revision: 3838 Url: http://forge.chorem.org/projects/lima/repository/revisions/3838 Log: fixes #1042 : Reconstruction de blockClosedPeriodicEntryBookRules Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java 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-08 14:54:17 UTC (rev 3837) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/FranceAccountingRules.java 2014-07-09 07:30:32 UTC (rev 3838) @@ -35,7 +35,6 @@ import org.chorem.lima.entity.Account; import org.chorem.lima.entity.ClosedPeriodicEntryBook; import org.chorem.lima.entity.ClosedPeriodicEntryBookTopiaDao; -import org.chorem.lima.entity.EntryBook; import org.chorem.lima.entity.FinancialPeriod; import org.chorem.lima.entity.FinancialPeriodImpl; import org.chorem.lima.entity.FinancialTransactionTopiaDao; @@ -202,56 +201,19 @@ } /** - * Check if old financialperiod for a an entrybook are closed before bock the asked closedperiodicentrybook - * <p/> - * get all closedperiodicentrybook between the first financial period of fiscalperiod - * and the last financial period of the closedperiodicentrybook in param - * return the number - * <p/> - * get all blocked closedperiodicentrybook while his same period, return the number - * <p/> - * compare there - * - * FIXME echatellier 20120504 a quoi ca sert de recuperer un nombre - * et de le comparer avec un autre, c'est pas plus simple de verifier - * qu'il reste des ClosedPeriodicEntryBook non clos ? + * Check if all previous financial period for a an entrybook are closed before bock the asked closedperiodicentrybook */ @Override public void blockClosedPeriodicEntryBookRules(ClosedPeriodicEntryBook closedPeriodicEntryBook) throws ClosedPeriodicEntryBookException { super.blockClosedPeriodicEntryBookRules(closedPeriodicEntryBook); - FinancialPeriod financialPeriod = closedPeriodicEntryBook.getFinancialPeriod(); + ClosedPeriodicEntryBookTopiaDao closedPeriodicEntryBookDao = getDaoHelper().getClosedPeriodicEntryBookDao(); - // Get all closedperiod between for the period and entrybook - Date endDate = closedPeriodicEntryBook.getFinancialPeriod().getBeginDate(); - // FIXME echatellier 20120502 c'est pas un hack ca ? - // un period peut ne pas durer un mois - endDate = DateUtils.addMonths(endDate, -1); + boolean existPrevousNotClosed = closedPeriodicEntryBookDao + .existPreviousClosedPeriodicEntryBooksNotClosed(closedPeriodicEntryBook); - FiscalPeriodTopiaDao fiscalPeriodTopiaDao = getDaoHelper().getFiscalPeriodDao(); - - //search fiscalperiod have financialperiod - FiscalPeriod fiscalPeriod = fiscalPeriodTopiaDao.findByFinancialPeriod(financialPeriod); - Date beginDate = fiscalPeriod.getBeginDate(); - // FIXME echatellier 20120502 quels est la rapport entre beginDate - // et endDate ? il ne provienent pas du même endroit - EntryBook entryBook = closedPeriodicEntryBook.getEntryBook(); - - ClosedPeriodicEntryBookTopiaDao closedPeriodicEntryBookTopiaDao = getDaoHelper().getClosedPeriodicEntryBookDao(); - - List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = - closedPeriodicEntryBookTopiaDao.findAllByEntryBookAndDates(entryBook, beginDate, endDate); - - // FIXME echatellier 20120504 juste un count suffit - int nbClosedPeriodicEntryBooks = closedPeriodicEntryBooks.size(); - - // Get all closed between for the period, entrybook and are blocked - closedPeriodicEntryBooks = closedPeriodicEntryBookTopiaDao.findAllByEntryBookAndDatesLocked(entryBook, beginDate, endDate); - int nbBlockedClosedPeriodicEntryBooks = - closedPeriodicEntryBooks.size(); - //Check if the fiscal period to block is the oldest - if (nbClosedPeriodicEntryBooks != nbBlockedClosedPeriodicEntryBooks) { + if (existPrevousNotClosed) { throw new ClosedPeriodicEntryBookException(closedPeriodicEntryBook, "lima-business.franceaccountingrules.antefinancialperiodnotblockedentrybook"); } } Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java 2014-07-08 14:54:17 UTC (rev 3837) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java 2014-07-09 07:30:32 UTC (rev 3838) @@ -165,4 +165,22 @@ return closedPeriodicEntryBooks; } + /** + * if exist previous ClosedPeriodicEntryBook not close + * + * @return exist previous ClosedPeriodicEntryBook not close + */ + public boolean existPreviousClosedPeriodicEntryBooksNotClosed(ClosedPeriodicEntryBook closedPeriodicEntryBook) { + HqlAndParametersBuilder<ClosedPeriodicEntryBook> builder = newHqlAndParametersBuilder(); + builder.addEquals(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK, closedPeriodicEntryBook.getEntryBook()); + builder.addEquals(ClosedPeriodicEntryBook.PROPERTY_LOCKED, false); + builder.addLowerThan( + ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD + "." + FinancialPeriod.PROPERTY_END_DATE, + closedPeriodicEntryBook.getFinancialPeriod().getBeginDate()); + + boolean exist = exists(builder.getHql(), builder.getHqlParameters()); + + return exist; + } + }
participants (1)
-
sbavencoff@users.chorem.org