EN · DE · RU · FR · ES

#785: Buchungssatz.java

projectforge-business/src/main/java/org/projectforge/reporting/Buchungssatz.java Interface Java — contrat d'écriture comptable (enregistrement de réservation) pour la couche de reporting. Source : projectforge-business/src/main/java/org/projectforge/reporting/Buchungssatz.java 86 lignes · 23 code · 43 commentaires · 20 vides
Définit le contrat en lecture seule pour une écriture comptable unique (Buchungssatz) dans les rapports financiers. Implémenté par BuchungssatzDO (entité JPA) et BuchungssatzImpl (adaptateur de reporting). L'interface représente le patron Adaptateur entre la couche de persistance (DO) et la couche de reporting (BWA, rapports Kost) : elle extrait uniquement les champs nécessaires au reporting, masquant les détails internes de JPA aux consommateurs de rapports.

Champs

MéthodeTypeObjectif
getId()LongClé de base de données substitutive
getYear()IntegerAnnée de réservation
getMonth()IntegerMois de réservation (1-12)
getFormattedMonth()StringMois avec zéro non significatif (01-12)
getSatznr()IntegerNuméro de séquence dans le mois
getDatum()LocalDateDate de réservation
getBetrag()BigDecimalMontant monétaire
getSh()SHTypeIndicateur Débit/Crédit (Soll/Haben)

Patron Adaptateur

L'interface se situe entre BuchungssatzDO (l'entité JPA avec annotations Hibernate, chargement paresseux et préoccupations de persistance) et les moteurs de reporting (ReportBwa, KostReportSenior). En définissant une interface purement en lecture seule, la couche de reporting ne touche jamais directement aux entités JPA — elle ne voit que ce contrat. Cela évite le chargement paresseux accidentel lors de la génération de rapports (qui provoquerait une LazyInitializationException en dehors d'une transaction) et découple la logique de reporting des spécificités ORM.

Commit clé : 4c04cfd65 — Migration int→Long

Le type de retour de getId() a été changé de Integer à Long dans le cadre de la migration MAJEURE des identifiants. Cela a nécessité la mise à jour de toutes les implémentations (BuchungssatzDO, BuchungssatzImpl) et de tous les générateurs de rapports qui appelaient getId(). L'interface a agi comme une frontière contractuelle : modifier le type de retour ici a forcé une mise à jour vérifiée par le compilateur de tous les appelants, évitant ainsi des ruptures silencieuses.

Historique Git

868d6abb7 2025→2026 | 63081666f 2024→2025 | 4c04cfd65 MAJEUR : migration int→Long | b6092df09 2023→2024 | a6a7aece4 Optimisation des imports | 57761f2a2 Suppression des mots-clés public inutiles | 9456bbb6c Mois→Integer base 1 | 8c31eba2a Migration lourde Calendar/DateHolder | 9ebb88522 Commit initial

Commit clé : 9456bbb6c — Mois base 1

Changement de la représentation du mois de base 0 (style Calendar) à base 1 (lisible par l'humain). La méthode getFormattedMonth() a été ajoutée pour fournir des chaînes avec zéro non significatif ("01"–"12") pour un affichage et un tri cohérents. Cela faisait partie d'un effort plus large pour éliminer la confusion liée au mois base 0 dans l'ensemble du code (affectant EmployeeSalary, VacationServiceImpl, AccountingRecord et MonthlyEmployeeFilter).