EN · DE · RU · FR · ES

#411: InvoicesExcelExport.java

projectforge-business/src/main/java/org/projectforge/business/fibu/InvoicesExcelExport.java Typ: Java · Rolle: Finanzbuchhaltung · Quelle: projectforge-business/src/main/java/org/projectforge/business/fibu/InvoicesExcelExport.java 108 Zeilen · 75 Code · 24 Kommentare · 9 leer
Excel/CSV-Export-Dienstprogramm für Rechnungsdaten. Konfiguriert Spaltenüberschriften (i18n), Feldformatierer (Währung, Datum) und befüllt Zeilen aus Datensammlungen.

Codestruktur

Paket: org.projectforge.business.fibu

Klassen: InvoicesExcelExport

Methoden (3): addDebitorInvoicesSheet, addCreditorInvoicesSheet, createColumn

Importe: 6 Pakete

Quellcode (gekürzt)

package org.projectforge.business.fibu;

import org.projectforge.business.excel.*;
import org.projectforge.common.anots.PropertyInfo;
import org.projectforge.common.props.PropUtils;
import org.projectforge.export.MyExcelExporter;

import java.lang.reflect.Field;
import java.util.Collection;

public class InvoicesExcelExport
{
  public InvoicesExcelExport()
  {
  }

  public void addDebitorInvoicesSheet(final MyExcelExporter exporter, final String title, final Collection<RechnungDO> list)
  {
    final ExportSheet sheet = exporter.addSheet(title);
    sheet.createFreezePane(0, 1);
    final ContentProvider sheetProvider = sheet.getContentProvider();

    final ExportColumn[] cols = new ExportColumn[6];
    int i = 0;
    cols[i++] = createColumn(exporter, sheet, AbstractRechnungDO.class, "datum");
    cols[i++] = createColumn(exporter, sheet, AbstractRechnungDO.class, "faelligkeit");
    cols[i] = new I18nExportColumn("gross", "fibu.rechnung.bruttoBetrag", 10);
    exporter.putCurrencyFormat(sheetProvider, cols[i++]);
    cols[i++] = new I18nExportColumn("number", "fibu.rechnung.nummer", 6);
    cols[i++] = new I18nExportColumn("debitor", "fibu.common.debitor", 60);
    cols[i++] = new I18nExportColumn("subject", PropUtils.getI18nKey(AbstractRechnungDO.class, "betreff"), 100);
    // Spalteneigenschaftsnamen
    sheet.setColumns(cols);
    final PropertyMapping mapping = new PropertyMapping();
    for (final RechnungDO entry : list) {
      entry.recalculate();
      mapping.add("datum", entry.getDatum());
      mapping.add("faelligkeit", entry.getFaelligkeit());
      mapping.add("gross", entry.info.getGrossSum());
      mapping.add("number", entry.getNummer());
      mapping.add("debitor", entry.getKundeAsString());
      mapping.add("subject", entry.getBetreff());
      sheet.addRow(mapping.getMapping(), 0);
    }
  }

  public void addCreditorInvoicesSheet(final MyExcelExporter exporter, final String title, final Collection<EingangsrechnungDO> list)
  {
    final ExportSheet sheet = exporter.addSheet(title);
    sheet.createFreezePane(0, 1);
    final ContentProvider sheetProvider = sheet.getContentProvider();

    final ExportColumn[] cols = new ExportColumn[5];
    int i = 0;
    cols[i++] = createColumn(exporter, sheet, AbstractRechnungDO.class, "datum");
    cols[i++] = createColumn(exporter, sheet, AbstractRechnungDO.class, "faelligkeit");
    cols[i] = new I18nExportColumn("gross", "fibu.rechnung.bruttoBetrag", 10);
    exporter.putCurrencyFormat(sheetProvider, cols[i++]);
    cols[i++] = new I18nExportColumn("creditor", "fibu.common.creditor", 60);
    cols[i++] = new I18nExportColumn("subject", PropUtils.getI18nKey(AbstractRechnungDO.class, "betreff"), 100);
    // Spalteneigenschaftsnamen
    sheet.setColumns(cols);
    final PropertyMapping mapping = new PropertyMapping();
    if (list != null) {
      for (final EingangsrechnungDO entry : list) {
        entry.recalculate();
        mapping.add("datum", entry.getDatum());
        mapping.add("faelligkeit", entry.getFaelligkeit());
        mapping.add("gross", entry.getInfo().getGrossSum());
        mapping.add("creditor", entry.getKreditor());
        mapping.add("subject", entry.getBetreff());
        sheet.addRow(mapping.getMapping(), 0);
      }
    }
  }

  private I18nExportColumn createColumn(final ExcelExporter exporter, final ExportSheet sheet, final Class<?> clazz, final String property)
  {
    final Field field = PropUtils.getField(clazz, property);
    final PropertyInfo propInfo = PropUtils.get(field);
    final I18nExportColumn exportColumn = new I18nExportColumn(property, propInfo.i18nKey(), 100);
    exporter.putFieldFormat(sheet, field, propInfo, exportColumn);
    return exportColumn;
  }
}

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcode-Dateiköpfe: 2024 -> 2025.
b47c21af6 Überarbeitung der Zwischenspeicherung und Berechnungen bei Rechnungen (noch nicht abgeschlossen)
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.