EN · DE · RU · FR · ES

#421 : OrderExport.java

projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java Classe Java, projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java 382 lignes · 321 code · 35 commentaires · 26 vides
Objectif : Fichier source : projectforge/business/fibu/OrderExport.java. OrderExport.java fait partie de l'application open-source de gestion de projet ProjectForge.

Source (100 premières lignes)

/////////////////////////////////////////////////////////////////////////////
//
// Projet ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Allemagne (www.micromata.com)
//
// ProjectForge est sous double licence.
//
// Cette édition communautaire est un logiciel libre ; vous pouvez la redistribuer et/ou
// la modifier selon les termes de la GNU General Public License telle que publiée
// par la Free Software Foundation ; version 3 de la Licence.
//
// Cette édition communautaire est distribuée dans l'espoir qu'elle sera utile,
// mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
// COMMERCIALISATION ou D'ADÉQUATION À UN USAGE PARTICULIER. Voir la GNU General
// Public License pour plus de détails.
//
// Vous devriez avoir reçu une copie de la GNU General Public License avec
// ce programme ; sinon, consultez http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.business.fibu;

import org.apache.commons.collections4.CollectionUtils;
import org.projectforge.business.excel.*;
import org.projectforge.business.task.TaskDO;
import org.projectforge.business.task.TaskNode;
import org.projectforge.business.task.TaskTree;
import org.projectforge.business.user.UserGroupCache;
import org.projectforge.common.DateFormatType;
import org.projectforge.export.MyXlsContentProvider;
import org.projectforge.framework.access.AccessChecker;
import org.projectforge.framework.persistence.user.api.ThreadLocalUserContext;
import org.projectforge.framework.persistence.user.entities.PFUserDO;
import org.projectforge.framework.time.DateFormats;
import org.projectforge.framework.time.PFDay;
import org.projectforge.framework.utils.NumberHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * Pour l'export Excel.
 *
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
@Service
public class OrderExport {
    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(OrderExport.class);

    @Autowired
    protected AccessChecker accessChecker;

    @Autowired
    private RechnungCache rechnungCache;

    @Autowired
    private AuftragsCache auftragsCache;

    @Autowired
    private TaskTree taskTree;

    private ExportColumn[] createOrderColumns() {
        return new ExportColumn[]{
                new I18nExportColumn(OrderCol.NUMMER, "fibu.auftrag.nummer.short", MyXlsContentProvider.LENGTH_ID),
                new I18nExportColumn(OrderCol.NUMBER_OF_POSITIONS, "fibu.auftrag.positions", MyXlsContentProvider.LENGTH_ID),
                new I18nExportColumn(OrderCol.DATE_OF_OFFER, "fibu.auftrag.angebot.datum", MyXlsContentProvider.LENGTH_DATE),
                new I18nExportColumn(OrderCol.DATE_OF_ENTRY, "fibu.auftrag.erfassung.datum", MyXlsContentProvider.LENGTH_DATE),
                new I18nExportColumn(OrderCol.DATE_OF_DESICION, "fibu.auftrag.entscheidung.datum", MyXlsContentProvider.LENGTH_DATE),
                new I18nExportColumn(OrderCol.ORDER_DATE, "fibu.auftrag.beauftragungsdatum", MyXlsContentProvider.LENGTH_DATE),
                new I18nExportColumn(OrderCol.STATUS, "status", 10),
                new I18nExportColumn(OrderCol.STATUS_COMMENT, "fibu.auftrag.statusBeschreibung", 10),
                new I18nExportColumn(OrderCol.PROJECT, "fibu.projekt", MyXlsContentProvider.LENGTH_STD),
                new I18nExportColumn(OrderCol.PROJECT_CUSTOMER, "fibu.kunde", MyXlsContentProvider.LENGTH_STD),
                new I18nExportColumn(OrderCol.TITLE, "fibu.auftrag.title", MyXlsContentProvider.LENGTH_STD),
                new I18nExportColumn(OrderCol.PROJECTMANAGER, "fibu.projectManager", 30),
                new I18nExportColumn(OrderCol.HEADOFBUSINESSMANAGER, "fibu.headOfBusinessManager", 30),
                new I18nExportColumn(OrderCol.SALESMANAGER, "fibu.salesManager", 30),
                new I18nExportColumn(OrderCol.NETSUM, "fibu.auftrag.nettoSumme", MyXlsContentProvider.LENGTH_CURRENCY),
                new I18nExportColumn(OrderCol.INVOICED, "fibu.fakturiert", MyXlsContentProvider.LENGTH_CURRENCY),
                new I18nExportColumn(OrderCol.TO_BE_INVOICED, "fibu.toBeInvoiced", MyXlsContentProvider.LENGTH_CURRENCY),
                new I18nExportColumn(OrderCol.COMPLETELY_INVOICED, "fibu.auftrag.vollstaendigFakturiert", MyXlsContentProvider.LENGTH_BOOLEAN),
                new I18nExportColumn(OrderCol.INVOICES, "fibu.rechnungen", MyXlsContentProvider.LENGTH_STD),
                new I18nExportColumn(OrderCol.PERIOD_OF_PERFORMANCE_BEGIN, "fibu.periodOfPerformance.from", MyXlsContentProvider.LENGTH_DATE),
                new I18nExportColumn(OrderCol.PERIOD_OF_PERFORMANCE_END, "fibu.periodOfPerformance.to", MyXlsContentProvider.LENGTH_DATE),
                new I18nExportColumn(OrderCol.PROBABILITY_OF_OCCURRENCE, "fibu.probabilityOfOccurrence", MyXlsContentProvider.LENGTH_PERCENT),
                new I18nExportColumn(OrderCol.FORECAST_TYPE, AuftragForecastType.getBaseKey(), MyXlsContentProvider.LENGTH_PERCENT),
                new I18nExportColumn(OrderCol.CONTACT_PERSON, "contactPerson", MyXlsContentProvider.LENGTH_STD),
                new I18nExportColumn(OrderCol.REFERENCE, "fibu.common.reference", MyXlsContentProvider.LENGTH_STD),
                new I18nExportColumn(OrderCol.COMMENT, "comment", MyXlsContentProvider.LENGTH_COMMENT)
        };
    }

    private void addOrderMapping(final PropertyMapping mapping, final AuftragDO order) {

Historique Git

868d6abb7 2025 -> 2026
49b1d6b8d Prévisions et carnet de commandes : type de prévision pour les commandes/positions ajouté (mois en cours ou mois suivant)
63081666f En-têtes des fichiers source : 2024 -> 2025.
a35971f85 Problèmes de la dernière pull request résolus. Grand merci à luzpaz.
ae2c04ee0 Migration en cours... (tous les tests de tous les packages : OK).

868d6abb7

2025 -> 2026
868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
index 7b4c97894..60558a353 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
@@ -3,7 +3,7 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

49b1d6b8d

Prévisions et carnet de commandes : type de prévision pour les commandes/positions ajouté (mois en cours ou mois suivant)
49b1d6b8d73254b8b6f80d7eee11538f976c541b
diff --git a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
index eaf3e62a5..7b4c97894 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
@@ -60,9 +60,6 @@ public class OrderExport {
     @Autowired
     private RechnungCache rechnungCache;
 
-    @Autowired
-    private AuftragDao auftragDao;
-
     @Autowired
     private AuftragsCache auftragsCache;
 
@@ -93,6 +90,7 @@ public class OrderExport {
                 new I18nExportColumn(OrderCol.PERIOD_OF_PERFORMANCE_BEGIN, "fibu.periodOfPerformance.from", MyXlsContentProvider.LENGTH_DATE),
                 new I18nExportColumn(OrderCol.PERIOD_OF_PERFORMANCE_END, "fibu.periodOfPerformance.to", MyXlsContentProvider.LENGTH_DATE),
                 new I18nExportColumn(OrderCol.PROBABILITY_OF_OCCURRENCE, "fibu.probabilityOfOccurrence", MyXlsContentProvider.LENGTH_PERCENT),
+                new I18nExportColumn(OrderCol.FORECAST_TYPE, AuftragForecastType.getBaseKey(), MyXlsContentProvider.LENGTH_PERCENT),
                 new I18nExportColumn(OrderCol.CONTACT_PERSON, "contactPerson", MyXlsContentProvider.LENGTH_STD),
                 new I18nExportColumn(OrderCol.REFERENCE, "fibu.common.reference", MyXlsContentProvider.LENGTH_STD),
                 new I18nExportColumn(OrderCol.COMMENT, "comment", MyXlsContentProvider.LENGTH_COMMENT)
@@ -134,6 +132,7 @@ public class OrderExport {
         mapping.add(OrderCol.PERIOD_OF_PERFORMANCE_BEGIN, order.getPeriodOfPerformanceBegin());
         mapping.add(OrderCol.PERIOD_OF_PERFORMANCE_END, order.getPeriodOfPerformanceEnd());
         mapping.add(OrderCol.PROBABILITY_OF_OCCURRENCE, order.getProbabilityOfOccurrence());
+        mapping.add(OrderCol.FORECAST_TYPE, order.getForecastType());
 
         final PFUserDO contactPerson = UserGroupCache.getInstance().getUserIfNotInitialized(order.getContactPerson());
         mapping.add(OrderCol.CONTACT_PERSON, contactPerson != null ? contactPerson.getFullname() : "");
@@ -164,6 +163,7 @@ public class OrderExport {
                 new I18nExportColumn(PosCol.PERIOD_OF_PERFORMANCE_BEGIN, null, MyXlsContentProvider.LENGTH_DATE),
                 new I18nExportColumn(PosCol.PERIOD_OF_PERFORMANCE_END, null, MyXlsContentProvider.LENGTH_DATE),
                 new I18nExportColumn(OrderCol.PROBABILITY_OF_OCCURRENCE, "fibu.probabilityOfOccurrence", MyXlsContentProvider.LENGTH_PERCENT),
+                new I18nExportColumn(OrderCol.FORECAST_TYPE, AuftragForecastType.getBaseKey(), MyXlsContentProvider.LENGTH_PERCENT),
                 new I18nExportColumn(OrderCol.CONTACT_PERSON, "contactPerson", 30),
                 new I18nExportColumn(PosCol.TASK, "task", MyXlsContentProvider.LENGTH_STD),
                 new I18nExportColumn(PosCol.COMMENT, "comment", MyXlsContentProvider.LENGTH_COMMENT)};
@@ -214,6 +214,7 @@ public class OrderExport {
             mapping.add(PosCol.PERIOD_OF_PERFORMANCE_END, order.getPeriodOfPerformanceEnd());
         }
         mapping.add(OrderCol.PROBABILITY_OF_OCCURRENCE, order.getProbabilityOfOccurrence());
+        mapping.add(OrderCol.FORECAST_TYPE, ForecastUtils.getForecastType(order, pos));
         mapping.add(OrderCol.CONTACT_PERSON, order.getContactPerson() != null ? order.getContactPerson().getFullname() : "");
         final TaskDO task = pos.getTask();
         final TaskNode node = task != null ? taskTree.getTaskNodeById(task.getId()) : null;
@@ -357,7 +358,7 @@ public class OrderExport {
     }
 
     private enum OrderCol {
-        NUMMER, NUMBER_OF_POSITIONS, DATE_OF_OFFER, DATE_OF_ENTRY, DATE_OF_DESICION, ORDER_DATE, STATUS, STATUS_COMMENT, PROJECT, PROJECT_CUSTOMER, TITLE, PROJECTMANAGER, HEADOFBUSINESSMANAGER, SALESMANAGER, NETSUM, INVOICED, TO_BE_INVOICED, COMPLETELY_INVOICED, INVOICES, PERIOD_OF_PERFORMANCE_BEGIN, PERIOD_OF_PERFORMANCE_END, PROBABILITY_OF_OCCURRENCE, CONTACT_PERSON, REFERENCE, COMMENT
+        NUMMER, NUMBER_OF_POSITIONS, DATE_OF_OFFER, DATE_OF_ENTRY, DATE_OF_DESICION, ORDER_DATE, STATUS, STATUS_COMMENT, PROJECT, PROJECT_CUSTOMER, TITLE, PROJECTMANAGER, HEADOFBUSINESSMANAGER, SALESMANAGER, NETSUM, INVOICED, TO_BE_INVOICED, COMPLETELY_INVOICED, INVOICES, PERIOD_OF_PERFORMANCE_BEGIN, PERIOD_OF_PERFORMANCE_END, PROBABILITY_OF_OCCURRENCE, FORECAST_TYPE, CONTACT_PERSON, REFERENCE, COMMENT
     }
 
     private enum PosCol {

63081666f

En-têtes des fichiers source : 2024 -> 2025.
63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
index fc8df3cc4..eaf3e62a5 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
@@ -3,7 +3,7 @@
 // Projet ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Allemagne (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Allemagne (www.micromata.com)
 //
 // ProjectForge est sous double licence.
 //

a35971f85

Problèmes de la dernière pull request résolus. Grand merci à luzpaz.
a35971f85aeb77de5c504292628bc7efd369d60c
diff --git a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
index 50f817986..fc8df3cc4 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
@@ -81,7 +81,7 @@ public class OrderExport {
                 new I18nExportColumn(OrderCol.STATUS_COMMENT, "fibu.auftrag.statusBeschreibung", 10),
                 new I18nExportColumn(OrderCol.PROJECT, "fibu.projekt", MyXlsContentProvider.LENGTH_STD),
                 new I18nExportColumn(OrderCol.PROJECT_CUSTOMER, "fibu.kunde", MyXlsContentProvider.LENGTH_STD),
-                new I18nExportColumn(OrderCol.TITLE, "fibu.auftrag.titel", MyXlsContentProvider.LENGTH_STD),
+                new I18nExportColumn(OrderCol.TITLE, "fibu.auftrag.title", MyXlsContentProvider.LENGTH_STD),
                 new I18nExportColumn(OrderCol.PROJECTMANAGER, "fibu.projectManager", 30),
                 new I18nExportColumn(OrderCol.HEADOFBUSINESSMANAGER, "fibu.headOfBusinessManager", 30),
                 new I18nExportColumn(OrderCol.SALESMANAGER, "fibu.salesManager", 30),
@@ -149,8 +149,8 @@ public class OrderExport {
                 new I18nExportColumn(PosCol.DATE_OF_ENTRY, "fibu.auftrag.erfassung.datum", MyXlsContentProvider.LENGTH_DATE),
                 new I18nExportColumn(PosCol.DATE_OF_DESICION, "fibu.auftrag.entscheidung.datum", MyXlsContentProvider.LENGTH_DATE),
                 new I18nExportColumn(PosCol.PROJECT, "fibu.projekt", MyXlsContentProvider.LENGTH_STD),
-                new I18nExportColumn(PosCol.ORDER_TITLE, "fibu.auftrag.titel", MyXlsContentProvider.LENGTH_STD),
-                new I18nExportColumn(PosCol.TITLE, "fibu.auftrag.titel", MyXlsContentProvider.LENGTH_STD),
+                new I18nExportColumn(PosCol.ORDER_TITLE, "fibu.auftrag.title", MyXlsContentProvider.LENGTH_STD),
+                new I18nExportColumn(PosCol.TITLE, "fibu.auftrag.title", MyXlsContentProvider.LENGTH_STD),
                 new I18nExportColumn(PosCol.TYPE, "fibu.auftrag.position.art", 10),
                 new I18nExportColumn(PosCol.PAYMENTTYPE, "fibu.auftrag.position.paymenttype", 20),
                 new I18nExportColumn(PosCol.STATUS, "status", 10),

ae2c04ee0

Migration en cours... (tous les tests de tous les packages : OK).
ae2c04ee028ee405bf3b8a8b6678637703d1d16f
diff --git a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
index 4a2d6c2f8..50f817986 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/fibu/OrderExport.java
@@ -25,6 +25,7 @@ package org.projectforge.business.fibu;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.projectforge.business.excel.*;
+import org.projectforge.business.task.TaskDO;
 import org.projectforge.business.task.TaskNode;
 import org.projectforge.business.task.TaskTree;
 import org.projectforge.business.user.UserGroupCache;
@@ -108,8 +109,8 @@ public class OrderExport {
         mapping.add(OrderCol.DATE_OF_DESICION, order.getEntscheidungsDatum());
         mapping.add(OrderCol.ORDER_DATE, order.getBeauftragungsDatum());
         mapping.add(OrderCol.STATUS,
-                order.getAuftragsStatus() != null
-                        ? ThreadLocalUserContext.getLocalizedString(order.getAuftragsStatus().getI18nKey()) : "");
+                order.getStatus() != null
+                        ? ThreadLocalUserContext.getLocalizedString(order.getStatus().getI18nKey()) : "");
         mapping.add(OrderCol.STATUS_COMMENT, order.getStatusBeschreibung());
         mapping.add(OrderCol.PROJECT, order.getProjektAsString());
         final ProjektDO project = order.getProjekt();
@@ -183,7 +184,7 @@ public class OrderExport {
                 pos.getPaymentType() != null ? ThreadLocalUserContext.getLocalizedString(pos.getPaymentType().getI18nKey()) : "");
         mapping.add(PosCol.STATUS,
                 pos.getStatus() != null ? ThreadLocalUserContext.getLocalizedString(pos.getStatus().getI18nKey()) :
-                        (order.getAuftragsStatus() != null ? ThreadLocalUserContext.getLocalizedString(order.getAuftragsStatus().getI18nKey()) : ""));
+                        (order.getStatus() != null ? ThreadLocalUserContext.getLocalizedString(order.getStatus().getI18nKey()) : ""));
         mapping.add(PosCol.PERSON_DAYS, pos.getPersonDays());
         var orderInfo = auftragsCache.getOrderInfo(order);
         var posInfo = orderInfo.getInfoPosition(pos.getId());
@@ -214,7 +215,8 @@ public class OrderExport {
         }
         mapping.add(OrderCol.PROBABILITY_OF_OCCURRENCE, order.getProbabilityOfOccurrence());
         mapping.add(OrderCol.CONTACT_PERSON, order.getContactPerson() != null ? order.getContactPerson().getFullname() : "");
-        final TaskNode node = taskTree.getTaskNodeById(pos.getTaskId());
+        final TaskDO task = pos.getTask();
+        final TaskNode node = task != null ? taskTree.getTaskNodeById(task.getId()) : null;
         mapping.add(PosCol.TASK, node != null ? node.getTask().getTitle() : "");
         mapping.add(PosCol.COMMENT, pos.getBemerkung());
     }