r3822 - in trunk: . lima-business/src/main/java/org/chorem/lima/business/accountingrules lima-business/src/test/java/org/chorem/lima/entity lima-callao/src/main/java/org/chorem/lima/entity
Author: sbavencoff Date: 2014-05-28 14:30:23 +0200 (Wed, 28 May 2014) New Revision: 3822 Url: http://forge.chorem.org/projects/lima/repository/revisions/3822 Log: refs #934 : used Topia3 API and refractor code Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java trunk/lima-business/src/test/java/org/chorem/lima/entity/FinancialTransactionDAOTest.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/AccountTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java trunk/pom.xml 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-05-28 11:53:32 UTC (rev 3821) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/accountingrules/DefaultAccountingRules.java 2014-05-28 12:30:23 UTC (rev 3822) @@ -48,7 +48,6 @@ import org.chorem.lima.entity.LimaCallaoTopiaDaoSupplier; import org.nuiton.topia.persistence.TopiaException; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -216,37 +215,33 @@ try { FinancialTransactionTopiaDao financialTransactionTopiaDao = getDaoHelper().getFinancialTransactionDao(); + EntryTopiaDao entryDao = getDaoHelper().getEntryDao(); ClosedPeriodicEntryBookTopiaDao closedPeriodicEntryBookTopiaDao = getDaoHelper().getClosedPeriodicEntryBookDao(); // reload object in current transaction closedPeriodicEntryBook = closedPeriodicEntryBookTopiaDao.findByTopiaId(closedPeriodicEntryBook.getTopiaId()); // Check if all financial transactions of closedperiodicentrybook are equilibrate - // FIXME echatellier 20120504 unutile de recuperer une liste - // entiere juste pour tester l'existence FinancialPeriod period = closedPeriodicEntryBook.getFinancialPeriod(); - List<FinancialTransaction> result = financialTransactionTopiaDao.getAllUnbalancedTransaction(period.getBeginDate(), - period.getEndDate(), closedPeriodicEntryBook.getEntryBook()); - if (result.size() > 0) { + if (financialTransactionTopiaDao.isExistUnbalancedTransaction( + period.getBeginDate(), + period.getEndDate(), + closedPeriodicEntryBook.getEntryBook())) { throw new LimaBusinessException(t("lima-business.defaultaccountingrules.blockerrorequillibrate")); } // Check if all financial transactions of this closedperiodicentrybook/financialPeriod are well filled in - result = financialTransactionTopiaDao.getAllUnfilledTransaction(period.getBeginDate(), - period.getEndDate(), closedPeriodicEntryBook.getEntryBook()); - // FIXME echatellier 20120504 unutile de recuperer une liste - // entiere juste pour tester l'existence - if (result.size() > 0) { + if (entryDao.isExistUnfilledEntry( + period.getBeginDate(), + period.getEndDate(), + closedPeriodicEntryBook.getEntryBook())) { throw new LimaBusinessException(t("lima-business.defaultaccountingrules.missingelements")); } // Check if all financial transactions have EntryBooks - result = financialTransactionTopiaDao.getAllTransactionWithoutEntryBook(period.getBeginDate(), - period.getEndDate()); - // FIXME echatellier 20120504 unutile de recuperer une liste - // entiere juste pour tester l'existence - if (result.size() > 0) { - FinancialTransaction transaction = result.get(0); - throw new LimaBusinessException(t("lima-business.defaultaccountingrules.missingentrybook", transaction.getTransactionDate())); + if (financialTransactionTopiaDao.isExistTransactionWithoutEntryBook( + period.getBeginDate(), + period.getEndDate())) { + throw new LimaBusinessException(t("lima-business.defaultaccountingrules.missingentrybook")); } } catch (TopiaException ex) { Modified: trunk/lima-business/src/test/java/org/chorem/lima/entity/FinancialTransactionDAOTest.java =================================================================== --- trunk/lima-business/src/test/java/org/chorem/lima/entity/FinancialTransactionDAOTest.java 2014-05-28 11:53:32 UTC (rev 3821) +++ trunk/lima-business/src/test/java/org/chorem/lima/entity/FinancialTransactionDAOTest.java 2014-05-28 12:30:23 UTC (rev 3822) @@ -23,8 +23,6 @@ package org.chorem.lima.entity; -import java.util.List; - import org.chorem.lima.business.AbstractLimaTest; import org.chorem.lima.business.LimaException; import org.junit.Assert; @@ -62,8 +60,9 @@ LimaCallaoTopiaPersistenceContext context = getTestContext().newPersistenceContext(); FinancialTransactionTopiaDao ftDAO = context.getFinancialTransactionDao(); - List<FinancialTransaction> fTransactions = ftDAO.getAllUnbalancedTransaction(financialPeriod.getBeginDate(), - financialPeriod.getEndDate(), journalDesVentes); - Assert.assertNotNull(fTransactions); + Assert.assertFalse(ftDAO.isExistUnbalancedTransaction( + financialPeriod.getBeginDate(), + financialPeriod.getEndDate(), + journalDesVentes)); } } Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/AccountTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/AccountTopiaDao.java 2014-05-28 11:53:32 UTC (rev 3821) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/AccountTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) @@ -25,6 +25,11 @@ package org.chorem.lima.entity; +import com.google.common.collect.Maps; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.topia.persistence.HqlAndParametersBuilder; +import org.nuiton.topia.persistence.TopiaException; + import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; @@ -33,10 +38,6 @@ import java.util.Set; import java.util.StringTokenizer; -import com.google.common.collect.Maps; -import org.apache.commons.lang3.StringUtils; -import org.nuiton.topia.persistence.TopiaException; - public class AccountTopiaDao extends AbstractAccountTopiaDao<Account> { /** @@ -89,11 +90,11 @@ */ protected List<Account> findIntervalAccountByNumber(String accountNumberLow, String accountNumberHigh) throws TopiaException { - String query = "FROM " + Account.class.getName() + " WHERE :accountNumberLow <= accountNumber AND accountNumber <= :accountNumberHigh"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("accountNumberLow", accountNumberLow); - args.put("accountNumberHigh", accountNumberHigh); - return findAll(query, args); + HqlAndParametersBuilder<Account> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(Account.PROPERTY_ACCOUNT_NUMBER, accountNumberLow); + builder.addLowerOrEquals(Account.PROPERTY_ACCOUNT_NUMBER, accountNumberHigh); + List<Account> accounts = forHql(builder.getHql(), builder.getHqlParameters()).findAll(); + return accounts; } /** @@ -104,12 +105,10 @@ * @throws TopiaException */ public List<Account> findAllSubAccounts(Account account) throws TopiaException { - - String query = "FROM " + Account.class.getName() + " a WHERE a.accountNumber LIKE concat(:accountNumber, '_%')"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("accountNumber", account.getAccountNumber()); - List<Account> accounts = findAll(query, args); + HqlAndParametersBuilder<Account> builder = newHqlAndParametersBuilder(); + builder.addLike(Account.PROPERTY_ACCOUNT_NUMBER, account.getAccountNumber() + "_%"); + List<Account> accounts = forHql(builder.getHql(), builder.getHqlParameters()).findAll(); return accounts; } @@ -154,7 +153,7 @@ if (leafAccountsMode) { account = findLeafAccountByNumber(s); } else { - account = findByAccountNumber(s); + account = forAccountNumberEquals(s).findUniqueOrNull(); } //if exist if (account != null) { 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-05-28 11:53:32 UTC (rev 3821) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/ClosedPeriodicEntryBookTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) @@ -25,16 +25,20 @@ package org.chorem.lima.entity; +import org.nuiton.topia.persistence.HqlAndParametersBuilder; +import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep; + import java.util.Date; import java.util.List; -import java.util.Map; -import com.google.common.collect.Maps; -import org.hibernate.HibernateException; -import org.nuiton.topia.persistence.TopiaException; - public class ClosedPeriodicEntryBookTopiaDao extends AbstractClosedPeriodicEntryBookTopiaDao<ClosedPeriodicEntryBook> { + protected static final String PROPERTY_BEGIN_DATE = ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD + "." + FinancialPeriod.PROPERTY_BEGIN_DATE; + + protected static final String PROPERTY_END_DATE = ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD + "." + FinancialPeriod.PROPERTY_END_DATE; + + /** * Find all ClosedPeriodicEntryBook with common EntryBook. * @@ -58,31 +62,19 @@ EntryBook entryBook, FinancialPeriod financialPeriod) throws TopiaException { - String query = "FROM " + ClosedPeriodicEntryBook.class.getName(); + TopiaQueryBuilderAddCriteriaOrRunQueryStep<ClosedPeriodicEntryBook> queryStep = newQueryBuilder(); - Map<String, Object> args = Maps.newLinkedHashMap(); - ClosedPeriodicEntryBook result = null; if (entryBook != null) { - args.put("entryBook", entryBook); - query += " WHERE entryBook = :entryBook"; - if (financialPeriod != null) { - args.put("financialPeriod", financialPeriod); - query += " AND financialPeriod = :financialPeriod"; - result = findUniqueOrNull(query, args); + queryStep = queryStep.addEquals(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK, entryBook); + } - } else { - result = findAnyOrNull(query, args); - } - } else { - if (financialPeriod != null) { - args.put("financialPeriod", financialPeriod); - query += " WHERE financialPeriod = :financialPeriod"; - } - - result = findAnyOrNull(query, args); + if (financialPeriod != null) { + queryStep = queryStep.addEquals(ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD, financialPeriod); } - return result; + ClosedPeriodicEntryBook closedPeriodicEntryBook = queryStep.findFirstOrNull(); + + return closedPeriodicEntryBook; } /** @@ -97,16 +89,13 @@ public List<ClosedPeriodicEntryBook> findAllByDates(Date beginDate, Date endDate) throws TopiaException { - String query = "FROM " + ClosedPeriodicEntryBook.class.getName() + - " WHERE :beginDate <= financialPeriod.beginDate " + - " AND financialPeriod.beginDate <= :endDate" + - " ORDER BY entryBook.code"; + HqlAndParametersBuilder<ClosedPeriodicEntryBook> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(PROPERTY_BEGIN_DATE, beginDate); + builder.addGreaterOrEquals(PROPERTY_END_DATE, endDate); + builder.setOrderByArguments(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK + "." + EntryBook.PROPERTY_CODE); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - - return findAll(query, args); + List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = findAll(builder.getHql(), builder.getHqlParameters()); + return closedPeriodicEntryBooks; } /** @@ -122,16 +111,13 @@ public List<ClosedPeriodicEntryBook> findAllByEntryBookAndDates(EntryBook entryBook, Date beginDate, Date endDate) throws TopiaException { - String query = "FROM " + ClosedPeriodicEntryBook.class.getName() + - " WHERE :beginDate <= financialPeriod.beginDate " + - " AND financialPeriod.beginDate <= :endDate" + - " AND entryBook = :entryBook"; + HqlAndParametersBuilder<ClosedPeriodicEntryBook> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(PROPERTY_BEGIN_DATE, beginDate); + builder.addGreaterOrEquals(PROPERTY_END_DATE, endDate); + builder.addEquals(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK, entryBook); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); - return findAll(query, args); + List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = findAll(builder.getHql(), builder.getHqlParameters()); + return closedPeriodicEntryBooks; } /** @@ -147,17 +133,14 @@ public List<ClosedPeriodicEntryBook> findAllByEntryBookAndDatesLocked(EntryBook entryBook, Date beginDate, Date endDate) throws TopiaException { - String query = "FROM " + ClosedPeriodicEntryBook.class.getName() + - " WHERE :beginDate <= financialPeriod.beginDate " + - " AND financialPeriod.beginDate <= :endDate" + - " AND entryBook = :entryBook" + - " AND locked = true"; + HqlAndParametersBuilder<ClosedPeriodicEntryBook> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(PROPERTY_BEGIN_DATE, beginDate); + builder.addGreaterOrEquals(PROPERTY_END_DATE, endDate); + builder.addEquals(ClosedPeriodicEntryBook.PROPERTY_ENTRY_BOOK, entryBook); + builder.addEquals(ClosedPeriodicEntryBook.PROPERTY_LOCKED, true); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate", beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); - return findAll(query, args); + List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = findAll(builder.getHql(), builder.getHqlParameters()); + return closedPeriodicEntryBooks; } /** @@ -167,14 +150,13 @@ * @throws TopiaException */ public List<ClosedPeriodicEntryBook> findAllClosedPeriodicEntryBooksFromUnblockedFiscalPeriod() throws TopiaException { - String query = "SELECT C FROM " + ClosedPeriodicEntryBook.class.getName() + " C" + - ", " + FiscalPeriod.class.getName() + " F" + - " WHERE C.financialPeriod IN ELEMENTS (F.financialPeriod)" + - " AND F.locked = false" + - " ORDER BY C.financialPeriod.beginDate"; - - List<ClosedPeriodicEntryBook> result = findAll(query); - return result; + + List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = + forEquals(ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD + "." + FinancialPeriod.PROPERTY_LOCKED, false) + .setOrderByArguments(PROPERTY_BEGIN_DATE) + .findAll(); + + return closedPeriodicEntryBooks; } /** @@ -184,18 +166,12 @@ * @throws TopiaException */ public List<ClosedPeriodicEntryBook> findAllClosedPeriodicEntryBooksFromFiscalPeriod(FiscalPeriod fiscalPeriod) throws TopiaException { - String query = "SELECT C FROM " + ClosedPeriodicEntryBook.class.getName() + " C" + - ", " + FiscalPeriod.class.getName() + " F" + - " WHERE C.financialPeriod IN ELEMENTS (F.financialPeriod)" + - " AND F = :fiscalPeriod" + - " ORDER BY C.financialPeriod.beginDate"; + List<ClosedPeriodicEntryBook> closedPeriodicEntryBooks = + forEquals(ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD, fiscalPeriod) + .setOrderByArguments(PROPERTY_BEGIN_DATE) + .findAll(); - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("fiscalPeriod", fiscalPeriod); - - List<ClosedPeriodicEntryBook> result = findAll(query, args); - - return result; + return closedPeriodicEntryBooks; } } Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java 2014-05-28 11:53:32 UTC (rev 3821) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) @@ -29,6 +29,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.lima.beans.LetteringFilter; +import org.nuiton.topia.persistence.HqlAndParametersBuilder; import java.util.ArrayList; import java.util.Date; @@ -318,4 +319,30 @@ List<Object[]> result = findAll(query, args); return result; } + + /** + * if exist entry where some field are not filled in. + * + * @param beginDate begin date + * @param endDate end date + * @param entryBook entry book + * @return has entry where some field are not filled in + */ + public boolean isExistUnfilledEntry(Date beginDate, Date endDate, EntryBook entryBook) { + + HqlAndParametersBuilder<Entry> builder = newHqlAndParametersBuilder(); + builder.addEquals(Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_ENTRY_BOOK, entryBook); + builder.addGreaterOrEquals(Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(Entry.PROPERTY_FINANCIAL_TRANSACTION + "." + FinancialTransaction.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 + " = ''" ); + + boolean exists = exists(builder.getHql(), builder.getHqlParameters()); + + return exists; + } + } Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java 2014-05-28 11:53:32 UTC (rev 3821) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/FinancialTransactionTopiaDao.java 2014-05-28 12:30:23 UTC (rev 3822) @@ -29,8 +29,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.lima.Filter.Filter; -import org.hibernate.HibernateException; -import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.HqlAndParametersBuilder; import java.util.Date; import java.util.List; @@ -50,6 +49,18 @@ private static final Log log = LogFactory.getLog(FinancialTransactionTopiaDao.class); + protected String getBalancedClause(String alias, boolean balanced) { + String hql = "(SELECT sum(" + Entry.PROPERTY_AMOUNT + ") FROM " + Entry.class.getName() + + " WHERE " + Entry.PROPERTY_DEBIT + " = true " + + " AND " + Entry.PROPERTY_FINANCIAL_TRANSACTION + " = " + alias + ") " + + (balanced ? "=" : "!=") + " " + + "(SELECT sum(" + Entry.PROPERTY_AMOUNT + ") FROM " + Entry.class.getName() + + " WHERE " + Entry.PROPERTY_DEBIT + " = false " + + " AND " + Entry.PROPERTY_FINANCIAL_TRANSACTION + " = " + alias + ")"; + + return hql; + } + /** * Return how many transaction are found with specified entryBook. * @@ -57,11 +68,8 @@ * @return transaction referencing entry book */ public long getCountByEntryBook(EntryBook entryBook) { - String query = "SELECT count(*) FROM " + FinancialTransaction.class.getName() + " t WHERE t.entryBook = :entryBook"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("entryBook", entryBook); - Number count = (Number)findAll(query, args).get(0); - return count.longValue(); + long count = forEquals(FinancialTransaction.PROPERTY_ENTRY_BOOK, entryBook).count(); + return count; } /** @@ -72,15 +80,13 @@ * @return unbalanced transactions */ public List<FinancialTransaction> findAllByDates(Date beginDate, Date endDate) { - String query = "FROM " + FinancialTransaction.class.getName() + " T"+ - " WHERE :beginDate <= T.transactionDate" + - " AND T.transactionDate <= :endDate" + - " ORDER BY T.transactionDate, T." + FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate",beginDate); - args.put("endDate", endDate); - List<FinancialTransaction> result = findAll(query,args); - return result; + + HqlAndParametersBuilder<FinancialTransaction> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, endDate); + builder.setOrderByArguments(FinancialTransaction.PROPERTY_TRANSACTION_DATE, FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE); + List<FinancialTransaction> transactions = findAll(builder.getHql(), builder.getHqlParameters()); + return transactions; } /** @@ -92,49 +98,38 @@ * @return unbalanced transactions */ public List<FinancialTransaction> findAllByDates(Date beginDate, Date endDate, EntryBook entryBook) { - String query = "FROM " + FinancialTransaction.class.getName() + " T"+ - " WHERE :beginDate <= T.transactionDate" + - " AND T.transactionDate <= :endDate" + - " AND T.entryBook = :entryBook" + - " ORDER BY T.transactionDate, T." + FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate",beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); - List<FinancialTransaction> result = findAll(query, args); - return result; + + HqlAndParametersBuilder<FinancialTransaction> builder = newHqlAndParametersBuilder(); + 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; + } - + /** - * Find all unbalanced transactions. + * Find if has unbalanced transactions. * * @param beginDate beginDate * @param endDate endDate * @param entryBook entry book (can be null) - * @return unbalanced transactions + * @return if exist unbalanced transactions */ - public List<FinancialTransaction> getAllUnbalancedTransaction(Date beginDate, Date endDate, + public boolean isExistUnbalancedTransaction(Date beginDate, Date endDate, EntryBook entryBook) { - String query = "FROM " + FinancialTransaction.class.getName() + " T"+ - " WHERE (SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = true AND financialTransaction = T) != " + - " (SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = false AND financialTransaction = T)" + - " AND :beginDate <= T.transactionDate" + - " AND T.transactionDate <= :endDate"; - List<FinancialTransaction> result; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate",beginDate); - args.put("endDate", endDate); + + HqlAndParametersBuilder<FinancialTransaction> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, endDate); if (entryBook != null) { - args.put("entryBook", entryBook); - query += " AND T.entryBook = :entryBook"; - result = findAll(query, args); - } else { - result = findAll(query, args); + builder.addEquals(FinancialTransaction.PROPERTY_ENTRY_BOOK, entryBook); } - - return result; + builder.addWhereClause(getBalancedClause(builder.getAlias(), false)); + builder.setOrderByArguments(FinancialTransaction.PROPERTY_TRANSACTION_DATE, FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE); + boolean exists = exists(builder.getHql(), builder.getHqlParameters()); + return exists; } /** @@ -147,27 +142,17 @@ */ public List<FinancialTransaction> getAllBalancedTransaction(Date beginDate, Date endDate, EntryBook entryBook) { - String query = "FROM " + FinancialTransaction.class.getName() + " T"+ - " WHERE (SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = true AND financialTransaction = T) = " + - " (SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = false AND financialTransaction = T)" + - " AND :beginDate <= T.transactionDate" + - " AND T.transactionDate <= :endDate"; - List<FinancialTransaction> result; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate",beginDate); - args.put("endDate", endDate); + HqlAndParametersBuilder<FinancialTransaction> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, endDate); if (entryBook != null) { - args.put("entryBook", entryBook); - query += " AND T.entryBook = :entryBook"; - result = findAll(query, args); - } else { - result = findAll(query, args); + builder.addEquals(FinancialTransaction.PROPERTY_ENTRY_BOOK, entryBook); } - - return result; + builder.addWhereClause(getBalancedClause(builder.getAlias(), true)); + builder.setOrderByArguments(FinancialTransaction.PROPERTY_TRANSACTION_DATE, FinancialTransaction.PROPERTY_TOPIA_CREATE_DATE); + List<FinancialTransaction> transactions = findAll(builder.getHql(), builder.getHqlParameters()); + return transactions; } /** @@ -182,10 +167,8 @@ EntryBook entryBook) { String query = "SELECT distinct T FROM " + FinancialTransaction.class.getName() + " T"+ " LEFT JOIN T.entry AS E" + - " WHERE ((SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = true AND financialTransaction = T) != " + - " (SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = false AND financialTransaction = T)" + + " WHERE (" + + getBalancedClause("T", false) + " OR (SELECT sum(amount) FROM " + Entry.class.getName() + " WHERE debit = true AND financialTransaction = T) IS NULL" + " OR (SELECT sum(amount) FROM " + Entry.class.getName() + @@ -214,61 +197,21 @@ } /** - * Find all transaction where some field are not filled in. + * if exist transaction without entry book. * * @param beginDate begin date * @param endDate end date - * @param entryBook entry book - * @return unfilled transaction + * @return exist transaction without entry books */ - public List<FinancialTransaction> getAllUnfilledTransaction(Date beginDate, - Date endDate, EntryBook entryBook) { - String query = "SELECT T FROM " + FinancialTransaction.class.getName() + " T"+ - " LEFT JOIN T.entry AS E" + - " WHERE ((SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = true AND financialTransaction = T) != " + - " (SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = false AND financialTransaction = T) OR E.account = null" + - " OR E.voucher = null OR E.voucher = '' OR E.description = null OR E.description = '')" + - " AND T.entryBook = :entryBook" + - " AND :beginDate <= T.transactionDate" + - " AND T.transactionDate <= :endDate"; + public boolean isExistTransactionWithoutEntryBook(Date beginDate, Date endDate) { - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate",beginDate); - args.put("endDate", endDate); - args.put("entryBook", entryBook); - List<FinancialTransaction> result = findAll(query, args); - return result; - } + HqlAndParametersBuilder<FinancialTransaction> builder = newHqlAndParametersBuilder(); + builder.addGreaterOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, beginDate); + builder.addLowerOrEquals(FinancialTransaction.PROPERTY_TRANSACTION_DATE, endDate); + builder.addNull(FinancialTransaction.PROPERTY_ENTRY_BOOK); + boolean exists = exists(builder.getHql(), builder.getHqlParameters()); + return exists; - /** - * Find all transaction without entry book. - * - * @param beginDate begin date - * @param endDate end date - * @return transaction without entry books - */ - public List<FinancialTransaction> getAllTransactionWithoutEntryBook(Date beginDate, - Date endDate) { - - String query = "SELECT T FROM " + FinancialTransaction.class.getName() + " T"+ - " LEFT JOIN T.entry AS E" + - " WHERE ((SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = true AND financialTransaction = T) != " + - " (SELECT sum(amount) FROM " + Entry.class.getName() + - " WHERE debit = false AND financialTransaction = T) OR E.account = null" + - " OR E.voucher = null OR E.voucher = '' OR E.description = null OR E.description = '')" + - " AND entryBook = null" + - " AND :beginDate <= T.transactionDate" + - " AND T.transactionDate <= :endDate"; - Map<String, Object> args = Maps.newLinkedHashMap(); - args.put("beginDate",beginDate); - args.put("endDate", endDate); - - List<FinancialTransaction> result = findAll(query, args); - - return result; } /** Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-05-28 11:53:32 UTC (rev 3821) +++ trunk/pom.xml 2014-05-28 12:30:23 UTC (rev 3822) @@ -163,13 +163,13 @@ <!-- customized libs version --> <jettyVersion>${jettyPluginVersion}</jettyVersion> - <nuitonUtilsVersion>3.0-rc-2</nuitonUtilsVersion> + <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion> <nuitonConfigVersion>3.0-alpha-2</nuitonConfigVersion> <nuitonDecoratorVersion>3.0-alpha-3</nuitonDecoratorVersion> <nuitonProfilingVersion>2.7.1</nuitonProfilingVersion> <eugeneVersion>2.9</eugeneVersion> <nuitonI18nVersion>3.1</nuitonI18nVersion> - <topiaVersion>3.0-beta-4</topiaVersion> + <topiaVersion>3.0-SNAPSHOT</topiaVersion> <swinglabsVersion>3.0.4</swinglabsVersion> <h2Version>1.3.176</h2Version>
participants (1)
-
sbavencoffļ¼ users.chorem.org