EN · DE · RU · FR · ES

#160 : LiquidityEntryListForm.java

plugins/org.projectforge.plugins.liquidityplanning/src/main/java/org/projectforge/plugins/liquidityplanning/LiquidityEntryListForm.java Type : Java · Rôle : Formulaire · Source : plugins/org.projectforge.plugins.liquidityplanning/src/main/java/org/projectforge/plugins/liquidityplanning/LiquidityEntryListForm.java 194 lignes · 148 code · 34 commentaires · 12 vides
Implémentation du formulaire Wicket pour la liste des écritures de trésorerie. Gère la validation du formulaire, la logique de soumission et la liaison champ-entité.

Structure du code

Paquetage : org.projectforge.plugins.liquidityplanning

Classes : LiquidityEntryListForm

Étend : AbstractListForm

Méthodes (14) : getStats, init, getObject, isVisible, getObject, getObject, getObject, getObject, onOptionsPanelCreate, onUpdate, onUpdate, newSearchFilterInstance, getLogger, getBaseDateProperties

Champs (1) : serialVersionUID

Importations : 16 paquetages

Code source (abrégé)

package org.projectforge.plugins.liquidityplanning;

import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.FormComponentUpdatingBehavior;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.projectforge.business.fibu.AmountType;
import org.projectforge.business.fibu.PaymentStatus;
import org.projectforge.business.utils.CurrencyFormatter;
import org.projectforge.framework.time.PFDay;
import org.projectforge.web.wicket.AbstractListForm;
import org.projectforge.web.wicket.WebConstants;
import org.projectforge.web.wicket.components.LabelValueChoiceRenderer;
import org.projectforge.web.wicket.components.LocalDateModel;
import org.projectforge.web.wicket.components.LocalDatePanel;
import org.projectforge.web.wicket.flowlayout.*;
import org.slf4j.Logger;

import java.time.LocalDate;

/**
 * Le formulaire de liste pour la vue liste (cet exemple n'a pas de paramètres de filtre). Voir ToDoListPage pour
 * un exemple d'utilisation des paramètres de filtre.
 *
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
public class LiquidityEntryListForm extends AbstractListForm<LiquidityFilter, LiquidityEntryListPage> {
  private static final long serialVersionUID = 2040255193023406307L;

  private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LiquidityEntryListForm.class);

  public LiquidityEntryListForm(final LiquidityEntryListPage parentPage) {
    super(parentPage);
  }

  private LiquidityEntriesStatistics getStats() {
    return parentPage.getStatistics();
  }

  @SuppressWarnings("serial")
  @Override
  protected void init() {
    super.init();
    gridBuilder.newGridPanel();
    {
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("plugins.liquidityplanning.forecast.baseDate"));
      final FieldProperties<LocalDate> props = getBaseDateProperties();
      LocalDatePanel baseDatePanel = new LocalDatePanel(fs.newChildId(), new LocalDateModel(props.getModel()));
      baseDatePanel.setRequired(false);
      fs.add(baseDatePanel);
      fs.addHelpIcon(getString("plugins.liquidityplanning.forecast.baseDate.tooltip"));
    }
    gridBuilder.newGridPanel();
    {
      // Statistiques
      final FieldsetPanel fs = gridBuilder.newFieldset(getString("statistics")).suppressLabelForWarning();
      fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
        @Override
        public String getObject() {
          return "*** " + getString("plugins.liquidityplanning.forecast.baseDate") + " : " + PFDay.fromOrNow(getSearchFilter().getBaseDate()).format() + " ***"
                  + WebConstants.HTML_TEXT_DIVIDER;
        }
      }, TextStyle.RED) {
        @Override
        public boolean isVisible() {
          final LocalDate baseDate = getSearchFilter().getBaseDate();
          return baseDate != null && baseDate.isBefore(LocalDate.now());
        }
      });
      fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
        @Override
        public String getObject() {
          return getString("fibu.rechnung.status.bezahlt")
                  + " : "
                  + CurrencyFormatter.format(getStats().getPaid())
                  + WebConstants.HTML_TEXT_DIVIDER;
        }
      }));
      fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
        @Override
        public String getObject() {
          return getString("totalSum") + " : " + CurrencyFormatter.format(getStats().getTotal())
                  + WebConstants.HTML_TEXT_DIVIDER;
        }
      }));
      fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
        @Override
        public String getObject() {
          return getString("fibu.rechnung.offen") + " : " + CurrencyFormatter.format(getStats().getOpen())
                  + WebConstants.HTML_TEXT_DIVIDER;
        }
      }, TextStyle.BLUE));
      fs.add(new DivTextPanel(fs.newChildId(), new Model<String>() {
        @Override
        public String getObject() {
          return getString("fibu.rechnung.filter.ueberfaellig") + " : "
                  + CurrencyFormatter.format(getStats().getOverdue());
        }
      }, TextStyle.RED));
    }
  }

  /**
   * @see org.projectforge.web.wicket.AbstractListForm#onOptionsPanelCreate(org.projectforge.web.wicket.flowlayout.FieldsetPanel,
   * org.projectforge.web.wicket.flowlayout.DivPanel)
   */
  @SuppressWarnings("serial")
  @Override
  protected void onOptionsPanelCreate(final FieldsetPanel optionsFieldsetPanel, final DivPanel optionsCheckBoxesPanel) {
    // DropDownChoice jours suivants
    final LabelValueChoiceRenderer<Integer> nextDaysRenderer = new LabelValueChoiceRenderer<>();
    nextDaysRenderer.addValue(0, getString("filter.all"));
    nextDaysRenderer.addValue(7, getLocalizedMessage("search.nextDays", 7));
    nextDaysRenderer.addValue(10, getLocalizedMessage("search.nextDays", 10));
    nextDaysRenderer.addValue(14, getLocalizedMessage("search.nextDays", 14));
    nextDaysRenderer.addValue(30, getLocalizedMessage("search.nextDays", 30));
    nextDaysRenderer.addValue(60, getLocalizedMessage("search.nextDays", 60));
    nextDaysRenderer.addValue(90, getLocalizedMessage("search.nextDays", 90));
    final DropDownChoice<Integer> nextDaysChoice = new DropDownChoice<>(
// ... (tronqué, total 172 lignes)

Historique Git

868d6abb7 2025 -> 2026
63081666f En-têtes des fichiers source : 2024 -> 2025.
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
4548710df WIP : migration.