Montant net requis pour chaque ligne de groupe enfant

Erreur BR-FXEXT-12 Factur-X

Si le « Sous-type de la ligne de facture » (EXT-FR-FE-163 / BT-X-8) a la valeur « GROUP » et si le « Montant net de la ligne de facture » (BT-131) est spécifié, tous les niveaux inférieurs dont le « Sous-type de la ligne de facture » (EXT-FR-FE-163) est égal à « GROUP » DOIVENT contenir une valeur de « Montant net de la ligne de facture » (BT-131).

Règle obligatoire : tant qu'elle n'est pas respectée, la facture est invalide et sera rejetée par les validateurs.
Ce qui ne va pas

Au moins une ligne de groupe enfant directement liée, avec LineStatusReasonCode GROUP, ne contient pas de LineTotalAmount. Le test compare le nombre de lignes de groupe directement liées au nombre de ces lignes qui contiennent un montant net.

Ce que signifie la règle

Lorsqu’une ligne de groupe avec un montant net possède des lignes de groupe enfants, chacune de ces lignes enfants doit également avoir un montant net.

Champs concernés BT-X-8 BT-131
Veuillez renseigner le montant net de chaque ligne de groupe enfant

Il manque le montant net d’au moins une ligne de groupe enfant. Renseignez le montant de chaque ligne de groupe enfant.

Que faire ?
  1. Recherchez les lignes enfants IncludedSupplyChainTradeLineItem avec un ParentLineID et LineStatusReasonCode GROUP.
  2. Ajoutez TradeLineItem.LineTotalAmount à chacune de ces lignes de groupe.
  3. Générez de nouveau la facture et vérifiez-la à nouveau.
À quoi cela ressemble
✗ Déclenche le message
<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID>2</ram:LineID>
    <ram:ParentLineID>1</ram:ParentLineID>
    <ram:LineStatusReasonCode>GROUP</ram:LineStatusReasonCode>
  </ram:AssociatedDocumentLineDocument>
  <ram:SpecifiedLineTradeSettlement>
    <ram:SpecifiedTradeSettlementLineMonetarySummation/>
  </ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
✓ Correct
<ram:IncludedSupplyChainTradeLineItem>
  <ram:AssociatedDocumentLineDocument>
    <ram:LineID>2</ram:LineID>
    <ram:ParentLineID>1</ram:ParentLineID>
    <ram:LineStatusReasonCode>GROUP</ram:LineStatusReasonCode>
  </ram:AssociatedDocumentLineDocument>
  <ram:SpecifiedLineTradeSettlement>
    <ram:SpecifiedTradeSettlementLineMonetarySummation>
      <ram:LineTotalAmount>100.00</ram:LineTotalAmount>
    </ram:SpecifiedTradeSettlementLineMonetarySummation>
  </ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
À vérifier dans FactoorSharp
  • TradeLineItem.LineTotalAmount (BT-131)
  • AssociatedDocument.LineStatusReasonCode (BT-X-8)
  • LineStatusReasonCodes (BT-X-8)
Détails techniques

Pour chaque LineID, le test compte les lignes enfants ayant le ParentLineID correspondant et LineStatusReasonCode GROUP, puis compare ce nombre à celui des lignes contenant LineTotalAmount.

Où la règle s'applique

La règle s’applique à une ligne de groupe IncludedSupplyChainTradeLineItem avec LineStatusReasonCode GROUP lorsque la ligne contient un LineTotalAmount.

Message d'origine du Schematron
If the "Subtype of invoice line item" (EXT-FR-FE-163 / BT-X-8) has the value "GROUP" and if the "Invoice line net amount" (BT-131) is specified, all lower levels which has "Subtype of invoice line item" (EXT-FR-FE-163) equal to "GROUP" MUST contain a "Invoice line net amount" (BT-131) value.
Contexte (rule/@context)
//ram:IncludedSupplyChainTradeLineItem[ ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'GROUP' and exists(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ ram:LineTotalAmount) ]
Expression de contrôle (assert/@test)
( for $lineID in ram:AssociatedDocumentLineDocument/ram:LineID, $numberChildWG in count(//rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:IncludedSupplyChainTradeLineItem[ ram:AssociatedDocumentLineDocument/ram:ParentLineID = $lineID and ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'GROUP' ]), $numberChildWGAndBT131 in count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:IncludedSupplyChainTradeLineItem[ ram:AssociatedDocumentLineDocument/ram:ParentLineID = $lineID and ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'GROUP' ]/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ ram:LineTotalAmount) return ($numberChildWG = $numberChildWGAndBT131) )