FactureElectronique

📦 TS_NOOA\composants\documents\Facture\FactureElectronique

$invoiceHeader = ['invoiceNumber' => '2025-INV-001', // BT-1 'invoiceType' => 380, // BT-3 - FACTURE d'ACOMPTE : 386, FACTURE 380 ou AVOIR 381 'invoiceDate' => '2025-11-24', 'dueDate' => '2025-12-24', 'currency' => 'EUR', Référence de l'acheteur (souvent obligatoire en B2G / grands comptes) 'buyerReference' => 'SERVICE-ACHATS-75', Référence de commande client (BC) 'orderReference' => ['id' => 'BC-2025-789', 'issueDate' => '2025-11-20' // optionnel], Fournisseur 'supplier' => ['name' => 'Ma Société SARL', 'vatNumber' => 'FR12345678901', 'companyId' => '12345678900011', // SIRET 'street' => '1 Rue de la Paix', 'city' => 'Paris', 'zip' => '75001', 'countryCode' => 'FR'], Client 'customer' => ['name' => 'Client SA', 'vatNumber' => 'FR98765432109', 'companyId' => '98765432100022', 'street' => '10 Avenue des Champs-Élysées', 'city' => 'Paris', 'zip' => '75008', 'countryCode' => 'FR'], Remises globales (document entier) – optionnelles Ici on suppose que la remise est exprimée en montant HT 'allowances' => [['reason' => 'Remise commerciale globale', 'amount' => 10.00, // montant de la remise 'taxPercent' => 20.00 // taux de TVA applicable à cette remise],// tu peux en mettre plusieurs, éventuellement à des taux différents ],]; $FacturX = new FactureElectronique(); $FacturX->setEnteteFacture($invoiceHeader); echo $FacturX->getXml();
function __construct() { // Initilisation du document XML $this->xml = new DOMDocument('1.0', 'UTF-8'); // Ajout du formatage du fichier XML (meilleure lisibilité, à eventuellement desactiver en prod) $this->xml->formatOutput = true; }

🔧 entete

Création de l'entete du fichier XML
function entete() { // Entête XML de la facturX $this->facture = $this->xml->createElement('rsm:CrossIndustryInvoice'); // On ajoute l'entête au document XML $this->xml->appendChild($this->facture); // Bibliothèque de types de données qualifiés (100 = valeur du standard) $this->facture->setAttribute('xmlns:qdt', 'urn:un:unece:uncefact:data:standard:QualifiedDataType:100'); // Bibliothèque de types de données NON qualifiés (100 = valeur du standard) $this->facture->setAttribute('xmlns:udt', 'urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100'); // Bibliothèque standard UN/CEFACT de structures métier réutilisables (RABIE), version 100 $this->facture->setAttribute('xmlns:ram', 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'); // Bibliotheque du standard du de la facture électronique (CII) en version 100 $this->facture->setAttribute('xmlns:rsm', 'urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'); // Déclaration du type XML fourni par la W3C $this->facture->setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); }

↩️ Returns

(void)

🔧 contexteDocument

BG2 - Exchange document contexte
function contexteDocument() { // Création du contexte du document $contexteDocument = $this->xml->createElement('rsm:ExchangedDocumentContext'); // Ajout au XML de la facture $this->facture->appendChild($contexteDocument); // BT 23 - Pour chorus Pro, on déclare un dépot de facture $BusinessProcessSpecifiedDocumentContextParameter = $this->xml->createElement('ram:BusinessProcessSpecifiedDocumentContextParameter'); $contexteDocument->appendChild($BusinessProcessSpecifiedDocumentContextParameter); $BusinessProcessSpecifiedDocumentContextParameter->appendChild( $this->xml->createElement('ram:ID', 'A1') ); // BT-24 - On déclare un format Factur-x Profil conforme à la norme EN 16931 $guidelineParam = $this->xml->createElement('ram:GuidelineSpecifiedDocumentContextParameter'); $contexteDocument->appendChild($guidelineParam); // ... (truncated)

↩️ Returns

(void)

⚠️ Throws


🔧 exchangeDocument

BT-1-00 - Exchange document
function exchangeDocument() { // Création du document $exchangedDocument = $this->xml->createElement('rsm:ExchangedDocument'); // BT-1 - Numéro de la facture $exchangedDocument->appendChild($this->xml->createElement('ram:ID', $this->enteteFacture['invoiceNumber'])); // BT-3 - Type de facture $exchangedDocument->appendChild($this->xml->createElement('ram:TypeCode', $this->enteteFacture['invoiceType'])); // BT-2.00 - Date d'échéance $guidelineParam = $this->xml->createElement('ram:IssueDateTime'); $exchangedDocument->appendChild($guidelineParam); $DateTimeString = $this->xml->createElement('udt:DateTimeString', 'urn:cen.eu:en16931:2017'); $guidelineParam->appendChild($DateTimeString); $DateTimeString->setAttribute('format', 102); // ... (truncated)

↩️ Returns

(void)

🔧 lignesDeFactures

AAI : Information générale SUR : Remarques fournisseur REG : Information réglementaire ABL : Information légale TXD : Information fiscale CUS : Information douanière
function lignesDeFactures() { // Création du bloc $lignesFactures = $this->xml->createElement('rsm:SupplyChainTradeTransaction'); $this->facture->appendChild($lignesFactures); $this->headerTradeAgreement($lignesFactures); }

🔧 lignesDeFactures

BG25-BG131 - lignes de facture (Supply Chain Trade Transaction)
function lignesDeFactures() { // Création du bloc $lignesFactures = $this->xml->createElement('rsm:SupplyChainTradeTransaction'); $this->facture->appendChild($lignesFactures); $this->headerTradeAgreement($lignesFactures); }