r2906 - trunk/lima-business/src/main/java/org/chorem/lima/business/ejb
Author: jpepin Date: 2010-05-25 15:52:22 +0200 (Tue, 25 May 2010) New Revision: 2906 Url: http://chorem.org/repositories/revision/lima/2906 Log: Optimisation requ?\195?\170te calcul totaux des comptes Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java 2010-05-25 10:07:39 UTC (rev 2905) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/FinancialPeriodServiceImpl.java 2010-05-25 13:52:22 UTC (rev 2906) @@ -297,7 +297,7 @@ @Override public List<ClosedPeriodicEntryBook> getAllClosedPeriodicEntryBooksFromUnblockedFiscalPeriod() throws LimaException { - List<ClosedPeriodicEntryBook> result = new ArrayList<ClosedPeriodicEntryBook>(); + List<ClosedPeriodicEntryBook> result = null; TopiaContext transaction = null; try { @@ -315,9 +315,9 @@ "F."+FiscalPeriod.FINANCIAL_PERIOD) .add("F."+FiscalPeriod.LOCKED, Boolean.FALSE) .addOrder(FiscalPeriod.FINANCIAL_PERIOD, FinancialPeriod.BEGIN_DATE); - result. - addAll(closedPeriodicEntryBookDAO.findAllByQuery(query)); + result = closedPeriodicEntryBookDAO.findAllByQuery(query); + // commit transaction.commitTransaction(); } Modified: trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java =================================================================== --- trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java 2010-05-25 10:07:39 UTC (rev 2905) +++ trunk/lima-business/src/main/java/org/chorem/lima/business/ejb/ReportServiceImpl.java 2010-05-25 13:52:22 UTC (rev 2906) @@ -94,12 +94,8 @@ try { EntryDAO entryDAO= LimaCallaoDAOHelper.getEntryDAO(topiaContext); - TopiaQuery query = entryDAO.createQuery(); + TopiaQuery query = entryDAO.createQuery("E"); - if (account != null) { - query - .add(Entry.ACCOUNT, account); - } if (beginDate != null && endDate != null){ String transactionDateProperty = TopiaQuery.getProperty(Entry.FINANCIAL_TRANSACTION, @@ -108,27 +104,33 @@ .addParam("beginDate", beginDate) .addParam("endDate", endDate); } - reportsDatas.setListEntry(entryDAO.findAllByQuery(query)); - - for (Entry entry : reportsDatas.getListEntry()) { + + if (account != null) { + query + .add(Entry.ACCOUNT, account) //IMPORTANT : LOADING ENTRIES AND IS COLUMN FOR NO LAZY EXCEPTION - entry.getEntryBook(); - entry.getFinancialTransaction().getTransactionDate(); - //calulate the amounts - if (entry.getDebit()) { - debit += entry.getAmount(); + .addLoad(Entry.ENTRY_BOOK, Entry.FINANCIAL_TRANSACTION); + reportsDatas.setListEntry(entryDAO.findAllByQuery(query)); + + query.setSelect("E."+Entry.DEBIT, "SUM(E."+Entry.AMOUNT+")"); + query.addGroup("E."+Entry.DEBIT); + List<Object[]> results = query.execute(); + for (Object[] result : results) { + if ((Boolean)result[0]){ + debit += (Double)result[1]; + } + else { + credit += (Double)result[1]; + } } - else { - credit += entry.getAmount(); + // set the amounts and solde + solde = debit - credit; + if (solde > 0){ + reportsDatas.setSoldeDebit(true); } + solde = Math.abs(solde); } - // set the amounts and solde - solde = debit - credit; - if (solde > 0){ - reportsDatas.setSoldeDebit(true); - } - solde = Math.abs(solde); reportsDatas.setAmountCredit(credit); reportsDatas.setAmountDebit(debit); reportsDatas.setAmountSolde(solde);
participants (1)
-
jpepin@users.chorem.org