sp4tz / abacus-xml-exporter
PHP library to export timesheet entries to Abacus XML.
Requires
- php: ^8.2
- ext-dom: *
This package is auto-updated.
Last update: 2026-06-19 12:01:56 UTC
README
Librairie PHP pour convertir des entrées de feuille de temps en XML Abacus LOHN FlatPreEntry.
Prérequis
- PHP 8.2+
- Composer
Installation
Dans un projet PHP classique ou Symfony:
composer require sp4tz/abacus-xml-exporter
En développement local:
composer dump-autoload
Compatibilité Abacus
Ce package cible Abacus LOHN FlatPreEntry 2020.00.
Documentation officielle Abacus:
Configuration obligatoire
Avant le premier export, configurez les données de la société dans src/Abacus/Export/AbacusXmlExportConfig.php.
Champs principaux à renseigner :
mandant
Options utiles:
validateEntries: active ou désactive la validation avant exportprettyPrint: XML lisible (dev) ou compact (prod)
Exemple:
$config = new AbacusXmlExportConfig( mandant: '123456', );
Exemples d'utilisation
1) Usage PHP simple hors Symfony
Lancez directement l'exemple autonome :
php examples/plain-php.php
Cet exemple montre le flux complet :
- tableaux bruts
ligne1..ligne8 ArrayTimesheetEntryMapper- export XML en string
- export XML dans
exportedEntries.xml
2) Usage avec un DTO metier / Symfony
La librairie expose un contrat de mapping via AbaConnect\Abacus\Mapper\TimesheetEntryMapperInterface.
Exemple:
use AbaConnect\Abacus\Mapper\TimesheetEntryMapperInterface; use AbaConnect\Abacus\Mapper\ArrayTimesheetEntryMapper; /** @var TimesheetEntryMapperInterface $mapper */ $mapper = new ArrayTimesheetEntryMapper();
Classes principales
src/Abacus/Dto/TimesheetEntry.phpsrc/Abacus/Export/AbacusXmlExporter.phpsrc/Abacus/Export/AbacusXmlExportConfig.phpsrc/Abacus/Exception/AbacusXmlExportException.phpsrc/Abacus/Mapper/TimesheetEntryMapperInterface.phpsrc/Abacus/Mapper/ArrayTimesheetEntryMapper.phpsrc/Abacus/Mapper/ExampleTimesheetEntryMapper.php
Contraintes TimesheetEntry
- Obligatoires:
employeeNumber(int),periodDate(DateTimeInterface),periodNumber(int),payrollType(int) - Optionnels:
amount(?float),factor(?float),costCentre1(?int),textPayrollType(?string) - Validation export:
amount/factor: max 10 caracteres, separateur decimal.requis, max 6 decimalescostCentre1: max 12 caracterestextPayrollType: max 100 caracteres
Namespaces utilises:
AbaConnect\Abacus\DtoAbaConnect\Abacus\ExportAbaConnect\Abacus\ExceptionAbaConnect\Abacus\Mapper
Exemple minimal
<?php declare(strict_types=1); use AbaConnect\Abacus\Dto\TimesheetEntry; use AbaConnect\Abacus\Export\AbacusXmlExportConfig; use AbaConnect\Abacus\Export\AbacusXmlExporter; require __DIR__ . '/vendor/autoload.php'; $entries = [ new TimesheetEntry( employeeNumber: 1, periodDate: new DateTimeImmutable('2026-06-17'), periodNumber: 6, payrollType: 100, amount: 8.5, factor: 1, costCentre1: 200, textPayrollType: 'Texte paie', ), ]; $exporter = new AbacusXmlExporter(); $config = new AbacusXmlExportConfig(); echo $exporter->exportToString($entries, $config);
Gestion d'erreurs
Les erreurs d'export lèvent AbaConnect\Abacus\Exception\AbacusXmlExportException.
try { $xml = $exporter->exportToString($entries, $config); } catch (\AbaConnect\Abacus\Exception\AbacusXmlExportException $e) { // Log / message utilisateur }