r3503 - in trunk: lima-callao/src/main/java/org/chorem/lima/entity lima-swing/src/main/java/org/chorem/lima/ui/lettering
Author: mallon Date: 2012-07-06 18:29:11 +0200 (Fri, 06 Jul 2012) New Revision: 3503 Url: http://chorem.org/repositories/revision/lima/3503 Log: commit #684 : Correction sur les montants, quand la m?\195?\170me ligne est d?\195?\169-/s?\195?\169lectionn?\195?\169e (Ecritures lettr?\195?\169es.). Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryDAOImpl.java trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java Modified: trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryDAOImpl.java =================================================================== --- trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryDAOImpl.java 2012-07-06 14:51:49 UTC (rev 3502) +++ trunk/lima-callao/src/main/java/org/chorem/lima/entity/EntryDAOImpl.java 2012-07-06 16:29:11 UTC (rev 3503) @@ -186,10 +186,6 @@ * */ public List<Entry> findAllEntryByAccountAndLettering(Date beginDate, Date endDate, Account account, Boolean filtreLettre) throws TopiaException { List<Entry> entries = null; - /* String query = "FROM " + FinancialTransaction.class.getName() + " T"+ - " WHERE :beginDate <= T.transactionDate" + - " AND T.transactionDate <= :endDate" + - " ORDER BY T.transactionDate, T." + FinancialTransaction.TOPIA_CREATE_DATE;*/ String query = "Select E from " + Entry.class.getName() + " E, " + FinancialTransaction.class.getName() + " F" + " where E.financialTransaction = F" + @@ -202,7 +198,6 @@ query += " and E.lettering is not null"; } } - System.out.println(query); query += " and :beginDate <= F.transactionDate" + " AND F.transactionDate <= :endDate"+ Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java 2012-07-06 14:51:49 UTC (rev 3502) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/lettering/LetteringModelUI.java 2012-07-06 16:29:11 UTC (rev 3503) @@ -8,6 +8,7 @@ import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; public class LetteringModelUI extends DefaultListSelectionModel{ @@ -42,6 +43,7 @@ protected boolean lettrer; protected boolean delettrer; protected String currentLettring; + protected List<Entry> precedentEntries; protected Entry currentEntry; public LetteringModelUI(LetteringTableModel model) { @@ -146,14 +148,15 @@ public void setSelectionInterval(int row, int column) { setLettrer(false); setDelettrer(false); - Entry entryAt = model.getEntryAt(row); + Entry lastEntrySelected = model.getEntryAt(row); List<Entry> modelEntries = model.getEntries(); - setSelectedEntry(entryAt); + setSelectedEntry(lastEntrySelected); + precedentEntries=new ArrayList<Entry>(); - if (entryAt.getLettering() != null){ + if (lastEntrySelected.getLettering() != null){ // no line selected or line selected different of the current - if (isSelectionEmpty() || currentEntry != null || !currentLettring.equals(entryAt.getLettering())){ + if (isSelectionEmpty() || currentEntry != null || !currentLettring.equals(lastEntrySelected.getLettering())){ if (log.isInfoEnabled()) { log.info("First"); } @@ -169,15 +172,18 @@ soldeTotal = BigDecimal.ZERO; } - currentLettring = entryAt.getLettering(); + currentLettring = lastEntrySelected.getLettering(); super.setSelectionInterval(row, column); //select entries with the same letter of the selected entry for(Entry entry : modelEntries){ if (entry.getLettering() != null && !entry.getLettering().isEmpty()){ - if (entry.getLettering().equals(entryAt.getLettering())){ + if (entry.getLettering().equals(lastEntrySelected.getLettering())){ int entryToSelect = model.getIndexOfEntry(entry); + //Save current entry before changing it to add + // debit / credit / solde with current entry later (Case : multiple selection + //for entries with same letters.) + precedentEntries.add(entry); super.addSelectionInterval(entryToSelect, entryToSelect); - //TODO add debit / credit / balance of entry with same letters } } } @@ -185,7 +191,7 @@ }else{ //no line selected or line selected different of the current //Test null for currentEntry cause of selection before entry with letter - if (isSelectionEmpty() || currentEntry == null || !currentEntry.equals(entryAt)){ + if (isSelectionEmpty() || currentEntry == null || !currentEntry.equals(lastEntrySelected)){ if (log.isInfoEnabled()) { log.info("Second"); } @@ -199,7 +205,7 @@ creditTotal = BigDecimal.ZERO; soldeTotal = BigDecimal.ZERO; } - currentEntry = entryAt; + currentEntry = lastEntrySelected; super.addSelectionInterval(row, column); //remove entry and get precedent entry for currentEntry @@ -212,60 +218,94 @@ /**Managing components when n rows are selected * */ if (!isSelectionEmpty()){ - boolean debitSelected = selectedEntry.getDebit(); - BigDecimal amountSelected = selectedEntry.getAmount(); - BigDecimal debitVal = debitSelected ? amountSelected : BigDecimal.ZERO; - if (log.isInfoEnabled()) { log.info("debit : " + debitTotal + "\n" + "credit : " + creditTotal + "\n" + "solde : " + soldeTotal); } - if (debitVal == BigDecimal.ZERO){ - BigDecimal creditVal = debitSelected ? BigDecimal.ZERO : amountSelected; - if (creditVal != BigDecimal.ZERO){ + //Case of selection of entry not lettered + if (precedentEntries.isEmpty()){ + boolean debitSelected = selectedEntry.getDebit(); + BigDecimal amountSelected = selectedEntry.getAmount(); + + BigDecimal debitVal = debitSelected ? amountSelected : BigDecimal.ZERO; + if (debitVal == BigDecimal.ZERO){ + BigDecimal creditVal = debitSelected ? BigDecimal.ZERO : amountSelected; + if (creditVal != BigDecimal.ZERO){ + if (selectedEntry != currentEntry){ + creditTotal = creditTotal.subtract(creditVal); + soldeTotal = soldeTotal.add(creditVal); + }else{ + creditTotal = creditTotal.add(creditVal); + soldeTotal = soldeTotal.subtract(creditVal); + } + } + }else{ if (selectedEntry != currentEntry){ - creditTotal = creditTotal.subtract(creditVal); - soldeTotal = soldeTotal.add(creditVal); + debitTotal = debitTotal.subtract(debitVal); + soldeTotal = soldeTotal.subtract(debitVal); }else{ - creditTotal = creditTotal.add(creditVal); - soldeTotal = soldeTotal.subtract(creditVal); + debitTotal = debitTotal.add(debitVal); + soldeTotal = soldeTotal.add(debitVal); } } + + if (log.isInfoEnabled()) { + log.info("AFTER / debit : " + debitTotal + "\n" + + "credit : " + creditTotal + "\n" + + "solde : " + soldeTotal); + } }else{ - if (selectedEntry != currentEntry){ - debitTotal = debitTotal.subtract(debitVal); - soldeTotal = soldeTotal.subtract(debitVal); - }else{ - debitTotal = debitTotal.add(debitVal); - soldeTotal = soldeTotal.add(debitVal); - } - } + if (log.isInfoEnabled()) { + log.info("precedentEntries.size() : " + precedentEntries.size()); + } + //In case of multiple selection (Entry with same letters) + //add debit / credit / balance of entries selected + for (Entry precedentEntry : precedentEntries){ + if (precedentEntry != null){ + if (log.isInfoEnabled()) { + log.info("precedentEntries not null"); + } + boolean precedentDebitSelected = precedentEntry.getDebit(); + BigDecimal precedentAmountSelected = precedentEntry.getAmount(); - if (log.isInfoEnabled()) { - log.info("AFTER / debit : " + debitTotal + "\n" + - "credit : " + creditTotal + "\n" + - "solde : " + soldeTotal); - } + BigDecimal precedentDebitVal = precedentDebitSelected ? precedentAmountSelected : BigDecimal.ZERO; + BigDecimal precedentCreditVal = precedentDebitSelected ? BigDecimal.ZERO : precedentAmountSelected; - setDebit(debitTotal); - setCredit(creditTotal); - setSolde(soldeTotal); + if (log.isInfoEnabled()) { + log.info("precedentDebitVal : " + precedentDebitVal + "\n" + + "precedentCreditVal : " + precedentCreditVal); + } - //Managing lettering buttons - String lettering = null; + debitTotal = debitTotal.add(precedentDebitVal); + soldeTotal = soldeTotal.add(precedentDebitVal); - //lettering impossible if one of entries have letter - lettering = entryAt.getLettering(); - if (lettering != null && !lettering.isEmpty()){ - setDelettrer(true); + creditTotal = creditTotal.add(precedentCreditVal); + soldeTotal = soldeTotal.subtract(precedentCreditVal); + + } + } + precedentEntries.clear(); } - if (solde.intValue() == 0 && !delettrer){ - setLettrer(true); - } + setDebit(debitTotal); + setCredit(creditTotal); + setSolde(soldeTotal); + + //Managing lettering buttons + String lettering = null; + + //lettering impossible if one of entries have letter + lettering = lastEntrySelected.getLettering(); + if (lettering != null && !lettering.isEmpty()){ + setDelettrer(true); + } + + if (solde.intValue() == 0 && !delettrer){ + setLettrer(true); + } } else{ debitTotal = BigDecimal.ZERO;
participants (1)
-
mallon@users.chorem.org