This is an automated email from the git hooks/post-receive script. New commit to branch feature/1293-addAccountViewerTab in repository lima. See http://git.chorem.org/lima.git commit 27350cb95bc35003e593a4b87bc826fbaaf8783e Author: dcosse <cosse@codelutin.com> Date: Thu Sep 24 12:54:04 2015 +0200 refs #1293 corrections et refactoring --- .../ui/accountViewer/AccountViewerViewHandler.java | 137 ++++++++++++--------- .../resources/i18n/lima-swing_en_GB.properties | 3 + .../resources/i18n/lima-swing_fr_FR.properties | 3 + 3 files changed, 87 insertions(+), 56 deletions(-) diff --git a/lima-swing/src/main/java/org/chorem/lima/ui/accountViewer/AccountViewerViewHandler.java b/lima-swing/src/main/java/org/chorem/lima/ui/accountViewer/AccountViewerViewHandler.java index 2c120dd..fd53279 100644 --- a/lima-swing/src/main/java/org/chorem/lima/ui/accountViewer/AccountViewerViewHandler.java +++ b/lima-swing/src/main/java/org/chorem/lima/ui/accountViewer/AccountViewerViewHandler.java @@ -53,6 +53,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.math.BigDecimal; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Iterator; @@ -92,6 +93,7 @@ public class AccountViewerViewHandler { private static final Log log = LogFactory.getLog(AccountViewerViewHandler.class); protected boolean initializationComplete; + public static final SimpleDateFormat YYYY = new SimpleDateFormat("yyyy"); public AccountViewerViewHandler(AccountViewerView view) { @@ -114,7 +116,7 @@ public class AccountViewerViewHandler { public void init() { filter = new AccountViewerFilter(); editModel = view.getEditModel(); - updateFinancialPeriodView(null); + updateFinancialPeriodView(); initSoldPeriodView(); editModel.addPropertyChangeListener(AccountViewerEditModel.PROPERTY_DEBIT, new PropertyChangeListener() { @@ -224,7 +226,7 @@ public class AccountViewerViewHandler { } private void updateAllEntriesForFinancialPeriodChoice() { - updateFinancialPeriodView(filter.getFiscalPeriod()); + updateFinancialPeriodView(); updateAllEntries(); } @@ -266,25 +268,23 @@ public class AccountViewerViewHandler { protected void onFiscalPeriodChange(ItemEvent event) { FiscalPeriod selectedFiscalPeriod = event != null && event.getItem() != null ? (FiscalPeriod) event.getItem() : null; if (initializationComplete && selectedFiscalPeriod != null && !selectedFiscalPeriod.equals(filter.getFiscalPeriod())) { - - List<FinancialPeriod> periods = financialPeriodService.getFinancialPeriodsWithBeginDateWithin(selectedFiscalPeriod.getBeginDate(), selectedFiscalPeriod.getEndDate()); - FinancialPeriod selectedFinancialPeriod = periods.get(0); - view.getFinancialPeriodComboBoxModel().setObjects(periods); - view.getFinancialPeriodComboBoxModel().setSelectedItem(selectedFinancialPeriod); - - filter.setDateStart(selectedFinancialPeriod.getBeginDate()); - filter.setDateEnd(selectedFinancialPeriod.getEndDate()); - filter.setFiscalPeriod(selectedFiscalPeriod); - filter.setFinancialPeriod(selectedFinancialPeriod); - filter.setPeriodChoice(PeriodChoice.FINANCIAL_PERIOD); + if (PeriodChoice.FINANCIAL_PERIOD.equals(filter.getPeriodChoice())) { + List<FinancialPeriod> periods = financialPeriodService.getFinancialPeriodsWithBeginDateWithin(selectedFiscalPeriod.getBeginDate(), selectedFiscalPeriod.getEndDate()); + FinancialPeriod selectedFinancialPeriod = periods.get(0); + view.getFinancialPeriodComboBoxModel().setObjects(periods); + view.getFinancialPeriodComboBoxModel().setSelectedItem(selectedFinancialPeriod); + + setFilter(selectedFiscalPeriod, selectedFinancialPeriod, selectedFinancialPeriod.getBeginDate(), selectedFinancialPeriod.getEndDate(), PeriodChoice.FINANCIAL_PERIOD); + } else { + setFilter(selectedFiscalPeriod, null, selectedFiscalPeriod.getBeginDate(), selectedFiscalPeriod.getEndDate(), PeriodChoice.FISCAL_PERIOD); + } updateAllEntries(); } } protected void onFinancialPeriodChange(java.awt.event.ItemEvent event) { FinancialPeriod financialPeriod = (FinancialPeriod) event.getItem(); - if (initializationComplete && !filter.getFinancialPeriod().equals(financialPeriod)) { - filter.setFinancialPeriod(financialPeriod); + if (initializationComplete && filter.getFinancialPeriod() == null || !filter.getFinancialPeriod().equals(financialPeriod)) { updateAllEntriesForFinancialPeriodChoice(financialPeriod); } } @@ -341,24 +341,25 @@ public class AccountViewerViewHandler { public void updateAllEntriesForFiscalPeriodChoice(FiscalPeriod fiscalPeriod) { - filter.setFiscalPeriod(fiscalPeriod); - filter.setDateStart(fiscalPeriod.getBeginDate()); - filter.setDateEnd(fiscalPeriod.getEndDate()); - filter.setPeriodChoice(PeriodChoice.FISCAL_PERIOD); + setFilter(fiscalPeriod, null, fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate(), PeriodChoice.FISCAL_PERIOD); updateAllEntries(); } public void updateAllEntriesForFinancialPeriodChoice(FinancialPeriod financialPeriod) { - filter.setDateStart(financialPeriod.getBeginDate()); - filter.setDateEnd(financialPeriod.getEndDate()); - filter.setPeriodChoice(PeriodChoice.FINANCIAL_PERIOD); + setFilter(null, financialPeriod, financialPeriod.getBeginDate(), financialPeriod.getEndDate(), PeriodChoice.FINANCIAL_PERIOD); updateAllEntries(); + } + protected void setFilter(FiscalPeriod fiscalPeriod, FinancialPeriod financialPeriod, Date dateStart, Date dateEnd, PeriodChoice periodChoice) { + filter.setFiscalPeriod(fiscalPeriod); + filter.setFinancialPeriod(financialPeriod); + filter.setDateStart(dateStart); + filter.setDateEnd(dateEnd); + filter.setPeriodChoice(periodChoice); } public void updateAllEntriesForDateChange() { filter.setPeriodChoice(PeriodChoice.DATE); - filter.setFiscalPeriod(fiscalPeriodService.getFiscalPeriodForDate(filter.getDateStart())); updateAllEntries(); } @@ -377,22 +378,26 @@ public class AccountViewerViewHandler { } protected void updateSummary() { - PeriodChoice periodChoice = filter.getPeriodChoice(); - LetteringFilter previousPeriodFilter = computePreviousPeriodFilter(periodChoice); - LetteringFilter actualPeriodFilter = computeActualPeriodFilter(periodChoice); + LetteringFilter previousPeriodFilter = computePreviousPeriodFilter(); + LetteringFilter actualPeriodFilter = computeActualPeriodFilter(); setViewPreviousSold(previousPeriodFilter); setViewActualSold(actualPeriodFilter); } - protected LetteringFilter computePreviousPeriodFilter(PeriodChoice periodChoice) { + protected LetteringFilter computePreviousPeriodFilter() { LetteringFilter previousPeriodFilter = null; FiscalPeriod previousFiscalPeriod; Date dateStart = null, dateEnd = null; - switch (periodChoice) { + switch (filter.getPeriodChoice()) { case FINANCIAL_PERIOD: Date financialPeriodDate = filter.getFinancialPeriod().getBeginDate(); FiscalPeriod fiscalPeriodFiscalPeriod = fiscalPeriodService.getFiscalPeriodForDate(financialPeriodDate); - dateStart = fiscalPeriodFiscalPeriod.getBeginDate(); + + if (DateUtils.isSameDay(financialPeriodDate, fiscalPeriodFiscalPeriod.getBeginDate())) { + fiscalPeriodFiscalPeriod = fiscalPeriodService.getFiscalPeriodForDate(getDayMinus1Calendar(financialPeriodDate).getTime()); + } + + dateStart = fiscalPeriodFiscalPeriod != null ? fiscalPeriodFiscalPeriod.getBeginDate() : null; dateEnd = getDayMinus1Calendar(financialPeriodDate).getTime(); break; case FISCAL_PERIOD: @@ -403,12 +408,14 @@ public class AccountViewerViewHandler { } break; case DATE: - previousFiscalPeriod = filter.getFiscalPeriod(); + previousFiscalPeriod = fiscalPeriodService.getFiscalPeriodForDate(filter.getDateStart()); + // case of starting date is same as current fiscal period one, so we look for previous fiscal period if (previousFiscalPeriod != null && DateUtils.isSameDay(previousFiscalPeriod.getBeginDate(), filter.getDateStart())) { previousFiscalPeriod = fiscalPeriodService.getFiscalPeriodForDate(getDayMinus1Calendar(filter.getDateStart()).getTime()); } + // case of selected date is upper the last fiscal period we look for the last fiscal period if (previousFiscalPeriod == null) { FiscalPeriod lastFiscalPeriod = fiscalPeriodService.getLastFiscalPeriod(); previousFiscalPeriod = lastFiscalPeriod != null && lastFiscalPeriod.getEndDate().before(filter.getDateStart()) ? lastFiscalPeriod : null; @@ -431,10 +438,10 @@ public class AccountViewerViewHandler { return previousPeriodFilter; } - private LetteringFilter computeActualPeriodFilter(PeriodChoice choice) { + private LetteringFilter computeActualPeriodFilter() { LetteringFilter actualPeriodFilter = null; Date dateStart = null, dateEnd = null; - switch (choice) { + switch (filter.getPeriodChoice()) { case FINANCIAL_PERIOD: if (filter.getFinancialPeriod() != null) { Date financialPeriodDate = filter.getFinancialPeriod().getBeginDate(); @@ -465,13 +472,10 @@ public class AccountViewerViewHandler { List<FiscalPeriod> fiscalPeriods = fiscalPeriodService.getAllFiscalPeriods(); view.getFiscalPeriodComboBoxModel().setObjects(fiscalPeriods); - filter.setPeriodChoice(PeriodChoice.FISCAL_PERIOD); FiscalPeriod fiscalPeriod = fiscalPeriodService.getLastFiscalPeriod(); if (fiscalPeriod != null) { - filter.setFiscalPeriod(fiscalPeriod); - filter.setDateStart(fiscalPeriod.getBeginDate()); - filter.setDateEnd(fiscalPeriod.getEndDate()); - view.getFiscalPeriodComboBox().setSelectedItem(fiscalPeriod); + setFilter(fiscalPeriod, null, fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate(), PeriodChoice.FINANCIAL_PERIOD); + view.getFiscalPeriodComboBoxModel().setSelectedItem(fiscalPeriod); view.getFiscalPeriodComboBox().setVisible(true); } } @@ -486,31 +490,30 @@ public class AccountViewerViewHandler { if (defaultFinancialPeriod == null) { defaultFinancialPeriod = financialPeriodService.getFinancialForDate(fiscalPeriod.getEndDate()); } - filter.setDateStart(defaultFinancialPeriod.getBeginDate()); - filter.setDateEnd(defaultFinancialPeriod.getEndDate()); + setFilter(null, null, defaultFinancialPeriod.getBeginDate(), defaultFinancialPeriod.getEndDate(), PeriodChoice.DATE); view.getBeginPeriodPicker().setDate(defaultFinancialPeriod.getBeginDate()); view.getEndPeriodPicker().setDate(defaultFinancialPeriod.getEndDate()); } } - public void updateFinancialPeriodView(FiscalPeriod fiscalPeriodO) { - FiscalPeriod fiscalPeriod = fiscalPeriodO == null ? fiscalPeriodService.getLastFiscalPeriod() : fiscalPeriodO; - + public void updateFinancialPeriodView() { + FiscalPeriod fiscalPeriod = fiscalPeriodService.getLastFiscalPeriod(); FinancialPeriod defaultFinancialPeriod = null; + List<FinancialPeriod> financialPeriods = null; if (fiscalPeriod != null) { - List<FinancialPeriod> financialPeriods = financialPeriodService.getFinancialPeriodsWithBeginDateWithin(fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate()); - view.getFinancialPeriodComboBoxModel().setObjects(financialPeriods); - Date today = new Date(); + view.getFinancialPeriodComboBoxModel().removeAllElements(); + + financialPeriods = financialPeriodService.getFinancialPeriodsWithBeginDateWithin(fiscalPeriod.getBeginDate(), fiscalPeriod.getEndDate()); + Date today = new Date(); Iterator<FinancialPeriod> financialPeriodIterator = financialPeriods.iterator(); while (financialPeriodIterator.hasNext() && defaultFinancialPeriod == null) { FinancialPeriod financialPeriod = financialPeriodIterator.next(); defaultFinancialPeriod = financialPeriod.getBeginDate().before(today) && financialPeriod.getEndDate().after(today) ? financialPeriod : null; } + defaultFinancialPeriod = defaultFinancialPeriod != null ? defaultFinancialPeriod : financialPeriods.get(financialPeriods.size() - 1); - view.getFinancialPeriodComboBoxModel().setSelectedItem(defaultFinancialPeriod); - initFiscalPeriodCombo(); } Date defaultDateBegin, defaultDateEnd; @@ -520,17 +523,24 @@ public class AccountViewerViewHandler { defaultDateBegin = defaultFinancialPeriod == null ? DateUtils.setDays(new Date(), firstCurrentMonthDay) : defaultFinancialPeriod.getBeginDate(); defaultDateEnd = defaultFinancialPeriod == null ? DateUtils.setDays(new Date(), lastCurrentMonthDay) : defaultFinancialPeriod.getEndDate(); - filter.setDateStart(defaultDateBegin); - filter.setDateEnd(defaultDateEnd); - filter.setFiscalPeriod(fiscalPeriod); - filter.setFinancialPeriod(defaultFinancialPeriod); - filter.setPeriodChoice(PeriodChoice.FINANCIAL_PERIOD); + setFilter(fiscalPeriod, defaultFinancialPeriod, defaultDateBegin, defaultDateEnd, PeriodChoice.FINANCIAL_PERIOD); + + initFiscalPeriodCombo(); + updateFinancialPeriodCombo(defaultFinancialPeriod, financialPeriods); + + } + + protected void updateFinancialPeriodCombo(FinancialPeriod defaultFinancialPeriod, List<FinancialPeriod> financialPeriods) { + view.getFinancialPeriodComboBoxModel().setObjects(financialPeriods); + if (defaultFinancialPeriod != null) { + view.getFinancialPeriodComboBoxModel().setSelectedItem(defaultFinancialPeriod); + } } protected void initFiscalPeriodCombo() { List<FiscalPeriod> fiscalPeriods = fiscalPeriodService.getAllFiscalPeriods(); view.getFiscalPeriodComboBoxModel().setObjects(fiscalPeriods); - view.getFiscalPeriodComboBox().setSelectedItem(fiscalPeriods.get(fiscalPeriods.size()-1)); + view.getFiscalPeriodComboBoxModel().setSelectedItem(fiscalPeriods.get(fiscalPeriods.size() - 1)); view.getFiscalPeriodComboBox().setVisible(true); } @@ -547,14 +557,22 @@ public class AccountViewerViewHandler { protected void setViewPreviousSold(LetteringFilter previousPeriodFilter) { if (previousPeriodFilter != null) { + if (filter.getPeriodChoice().equals(PeriodChoice.FISCAL_PERIOD)) { + String summaryLabel = t("lima.accountingView.summaryFiscalPeriodLabel"); + view.getBeginPeriodSummary().setText(String.format(t(summaryLabel), YYYY.format(previousPeriodFilter.getDateStart()))); + } else { + String summaryLabel = t("lima.accountingView.summaryLabel"); + view.getBeginPeriodSummary().setText(String.format(t(summaryLabel), getDateFormat().format(previousPeriodFilter.getDateStart()), getDateFormat().format(getDayMinus1Calendar(previousPeriodFilter.getDateEnd()).getTime()))); + } + List<Object[]> initialDebitCredit = financialTransactionService.getAccountEntriesDebitCreditFromIncludingToExcludingPeriod(previousPeriodFilter); DebitCreditSold debitCreditSold = new DebitCreditSold().invoke(initialDebitCredit); - view.getBeginPeriodSummary().setText(String.format(t("lima.accountingView.summaryLabel"), getDateFormat().format(previousPeriodFilter.getDateStart()), getDateFormat().format(previousPeriodFilter.getDateEnd()))); view.getBeginDebit().setText(BigDecimalToString.format(debitCreditSold.getDebit())); view.getBeginCredit().setText(BigDecimalToString.format(debitCreditSold.getCredit())); view.getBeginSold().setText(BigDecimalToString.format(debitCreditSold.getSold())); } else { - view.getBeginPeriodSummary().setText("Pas de période précédente,"); + String summaryLabel = filter.getPeriodChoice().equals(PeriodChoice.FISCAL_PERIOD) ? t("lima.accountingView.summaryNoFiscalPeriodLabel") : t("lima.accountingView.summaryNoPeriodLabel"); + view.getBeginPeriodSummary().setText(summaryLabel); view.getBeginDebit().setText(BigDecimalToString.format(BigDecimal.ZERO)); view.getBeginCredit().setText(BigDecimalToString.format(BigDecimal.ZERO)); view.getBeginSold().setText(BigDecimalToString.format(BigDecimal.ZERO)); @@ -563,9 +581,16 @@ public class AccountViewerViewHandler { } protected void setViewActualSold(LetteringFilter actualPeriodFilter) { + if (filter.getPeriodChoice().equals(PeriodChoice.FISCAL_PERIOD)) { + String summaryLabel = t("lima.accountingView.summaryFiscalPeriodLabel"); + view.getEndPeriodSummary().setText(String.format(t(summaryLabel), YYYY.format(actualPeriodFilter.getDateEnd()))); + } else { + String summaryLabel = t("lima.accountingView.summaryLabel"); + view.getEndPeriodSummary().setText(String.format(t(summaryLabel), getDateFormat().format(actualPeriodFilter.getDateStart()), getDateFormat().format(actualPeriodFilter.getDateEnd()))); + } + List<Object[]> initialDebitCredit = financialTransactionService.getAccountEntriesDebitCreditFromIncludingToIncludingPeriod(actualPeriodFilter); DebitCreditSold debitCreditSold = new DebitCreditSold().invoke(initialDebitCredit); - view.getEndPeriodSummary().setText(String.format(t("lima.accountingView.summaryLabel"), getDateFormat().format(actualPeriodFilter.getDateStart()), getDateFormat().format(actualPeriodFilter.getDateEnd()))); view.getEndDebit().setText(BigDecimalToString.format(debitCreditSold.getDebit())); view.getEndCredit().setText(BigDecimalToString.format(debitCreditSold.getCredit())); view.getEndSold().setText(BigDecimalToString.format(debitCreditSold.getSold())); diff --git a/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties b/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties index 3e2bafa..bef1571 100644 --- a/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties +++ b/lima-swing/src/main/resources/i18n/lima-swing_en_GB.properties @@ -16,7 +16,10 @@ lima.account.update.error.invalidAccountNumber=Invalid account number\: %1$s lima.account.update.form=Update account lima.accountViewer.previousSold=<html><b>On %s the sold was</b></html> lima.accountViewer.selectionDescription=For selected entries, +lima.accountingView.summaryFiscalPeriodLabel=For %s fiscal period, lima.accountingView.summaryLabel=Period from %s to %s, +lima.accountingView.summaryNoFiscalPeriodLabel=No previous fiscal period, +lima.accountingView.summaryNoPeriodLabel=No previous period, lima.accounts=Accounts lima.action.commandline.help=Show help in console lima.balance=Balance diff --git a/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties b/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties index 4a87599..d714e7c 100644 --- a/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties +++ b/lima-swing/src/main/resources/i18n/lima-swing_fr_FR.properties @@ -19,7 +19,10 @@ lima.account.update.error.invalidAccountNumber=Le numéro du compte %1$s n'est p lima.account.update.form=Modification d'un compte lima.accountViewer.previousSold=<html><b>Solde au %s</b></html> lima.accountViewer.selectionDescription=Pour la sélection, +lima.accountingView.summaryFiscalPeriodLabel=Pour l'exercice %s, lima.accountingView.summaryLabel=Pour la période du %s au %s, +lima.accountingView.summaryNoFiscalPeriodLabel=Pas d'exercice précédent, +lima.accountingView.summaryNoPeriodLabel=Pas de période précédente, lima.accounts=Comptes lima.action.commandline.help=Afficher l'aide en console lima.balance=Équilibrer -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.