XSDHub

BR-21 : Identifiant de ligne absent

Attribuez un identifiant de ligne et transmettez-le dans le XML. L’exemple erroné conserve ID avec une valeur vide.

Champs : BT-126.

L’exemple conserve l’élément ID de la ligne et remplace seulement son contenu par une chaîne vide. La normalisation des espaces ne laisse donc aucune valeur exploitable. Le numéro de facture au niveau du document est un identifiant différent et ne remplace pas celui de la ligne. En CII, ce champ est LineID dans AssociatedDocumentLineDocument. Comparez chaque identifiant des données sources au nœud produit par l’exporteur. La présence du nom de l’article, de la quantité ou du montant ne satisfait pas cette condition portant sur l’identifiant.

Conditions sources et champs

UBL en16931 : le contexte cac:InvoiceLine | cac:CreditNoteLine sélectionne les nœuds contrôlés ; la condition porte sur ID.

context: cac:InvoiceLine | cac:CreditNoteLine
test: normalize-space(cbc:ID) != ''

CII en16931 : le contexte //ram:IncludedSupplyChainTradeLineItem sélectionne les nœuds contrôlés ; la condition porte sur AssociatedDocumentLineDocument, LineID.

context: //ram:IncludedSupplyChainTradeLineItem
test: normalize-space(ram:AssociatedDocumentLineDocument/ram:LineID) != ''

CII facturx : le contexte //ram:IncludedSupplyChainTradeLineItem sélectionne les nœuds contrôlés ; la condition porte sur AssociatedDocumentLineDocument, LineID.

context: //ram:IncludedSupplyChainTradeLineItem
test: (ram:AssociatedDocumentLineDocument/ram:LineID!='')

Les champs sont localisés par contexte source → sélecteur ; les alternatives et conditions de syntaxe restent explicites.

BT/BGUBLCIISource
BG-25Invoice/CreditNote → cac:InvoiceLine | cac:CreditNoteLine/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ → ram:IncludedSupplyChainTradeLineItemBR-21
BT-126cac:InvoiceLine | cac:CreditNoteLine → normalize-space(cbc:ID) != ''//ram:IncludedSupplyChainTradeLineItem → normalize-space(ram:AssociatedDocumentLineDocument/ram:LineID) != ''BR-21

Cette condition vient des artefacts européens EN 16931 ; XRechnung ajoute des contraintes nationales et Factur-X dispose de ses propres règles CII par profil.

Exemple contrôlé

La modification value porte directement sur /*/cac:InvoiceLine[1]/cbc:ID : valeur erronée '', valeur restaurée 'Zeitschrift [...]'. Le document UBL erroné passe XSD et produit BR-21 ; sa correction passe EN 16931 rules 1.3.16. Autres codes déclenchés : 0.

Fragment erroné

<cac:InvoiceLine xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
        <cbc:ID></cbc:ID>
        <cbc:Note>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</cbc:Note>
        <cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
        <cac:OrderLineReference>
            <cbc:LineID>6171175.1</cbc:LineID>
        </cac:OrderLineReference>
        <cac:Item>
            <cbc:Description>Zeitschrift Inland</cbc:Description>
            <cbc:Name>Zeitschrift [...]</cbc:Name>
            <cac:SellersItemIdentification>
                <cbc:ID>246</cbc:ID>
            </cac:SellersItemIdentification>
            <cac:CommodityClassification>
                <cbc:ItemClassificationCode listID="IB">0721-880X</cbc:ItemClassificationCode>
            </cac:CommodityClassification>
            <cac:ClassifiedTaxCategory>
                <cbc:ID>S</cbc:ID>
                <cbc:Percent>21</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:ClassifiedTaxCategory>
        </cac:Item>
        <cac:Price>
            <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
    

Fragment corrigé

<cac:InvoiceLine xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
        <cbc:ID>Zeitschrift [...]</cbc:ID>
        <cbc:Note>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</cbc:Note>
        <cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
        <cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
        <cac:OrderLineReference>
            <cbc:LineID>6171175.1</cbc:LineID>
        </cac:OrderLineReference>
        <cac:Item>
            <cbc:Description>Zeitschrift Inland</cbc:Description>
            <cbc:Name>Zeitschrift [...]</cbc:Name>
            <cac:SellersItemIdentification>
                <cbc:ID>246</cbc:ID>
            </cac:SellersItemIdentification>
            <cac:CommodityClassification>
                <cbc:ItemClassificationCode listID="IB">0721-880X</cbc:ItemClassificationCode>
            </cac:CommodityClassification>
            <cac:ClassifiedTaxCategory>
                <cbc:ID>S</cbc:ID>
                <cbc:Percent>21</cbc:Percent>
                <cac:TaxScheme>
                    <cbc:ID>VAT</cbc:ID>
                </cac:TaxScheme>
            </cac:ClassifiedTaxCategory>
        </cac:Item>
        <cac:Price>
            <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
        </cac:Price>
    </cac:InvoiceLine>
    

XML erroné complet · XML corrigé complet

Messages communs dans nos mutations

Dans les 1 338 mutations synthétiques enregistrées, BR-21 apparaît dans 51 essais (ubl/en16931 17, ubl/xrechnung 2, cii/en16931 28, cii/xrechnung 4). Les mêmes essais produisent aussi : PEPPOL-EN16931-R008: 5.

Protocole synthétique, groupes et comptage

Champs et règles associés

Diagnostic et emplacement dans le rapport

[BR-21]-Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).

/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]/*:InvoiceLine[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2'][1]

Le rapport JSON expose ce message dans errors[] ou warnings[] avec ce code et ce chemin ; l’interface l’affiche dans le rapport des règles métier.

Sources primaires fixes · EUPL / Apache sources