Calculer correctement le montant dû

Erreur BR-FXEXT-CO-16 Factur-X

Montant dû pour paiement (BT-115) = Montant total de la facture TVA comprise (BT-112) - Montant payé (BT-113) + Montant d’arrondi (BT-114) + Montant de charge perçu pour le compte d’un tiers (BT-179).

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

DuePayableAmount n’est pas égal à GrandTotalAmount moins TotalPrepaidAmount, plus RoundingAmount et la somme des valeurs ActualAmount de SpecifiedFinancialAdjustment.

Ce que signifie la règle

Le montant dû correspond au total de la facture TVA comprise, moins les montants déjà payés. L’arrondi et les charges perçues pour le compte d’un tiers sont ensuite pris en compte.

Champs concernés BT-115 BT-112 BT-113 BT-114 BT-179
Veuillez calculer correctement le montant dû de la facture

Le montant de DuePayableAmount ne correspond pas aux autres totaux du règlement. Le montant dû peut être déterminé à partir des montants fournis.

Que faire ?
  1. Comparez DuePayableAmount à GrandTotalAmount moins TotalPrepaidAmount.
  2. Ajoutez également RoundingAmount et les valeurs ActualAmount de FinancialAdjustment.
  3. Vérifiez les valeurs de DuePayableAmount, GrandTotalAmount, TotalPrepaidAmount, RoundingAmount et FinancialAdjustment.ActualAmount.
  4. Générez de nouveau la facture et vérifiez-la à nouveau.
À quoi cela ressemble
✗ Déclenche le message
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:GrandTotalAmount>100</ram:GrandTotalAmount>
  <ram:TotalPrepaidAmount>20</ram:TotalPrepaidAmount>
  <ram:RoundingAmount>1</ram:RoundingAmount>
  <ram:DuePayableAmount>80</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
✓ Correct
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:GrandTotalAmount>100</ram:GrandTotalAmount>
  <ram:TotalPrepaidAmount>20</ram:TotalPrepaidAmount>
  <ram:RoundingAmount>1</ram:RoundingAmount>
  <ram:DuePayableAmount>81</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
À vérifier dans FactoorSharp
  • FacturXInvoice.DuePayableAmount (BT-115)
  • FacturXInvoice.GrandTotalAmount (BT-112)
  • FacturXInvoice.RoundingAmount (BT-114)
  • FacturXInvoice.TotalPrepaidAmount (BT-113)
  • FinancialAdjustment.ActualAmount (SpecifiedFinancialAdjustment: BT-179)
Détails techniques

Le XPath compare DuePayableAmount à une expression décimale utilisant les sommes des montants indiqués ; les valeurs absentes des sommes comptent pour zéro.

Où la règle s'applique

La règle s’applique aux montants de SpecifiedTradeSettlementHeaderMonetarySummation et à SpecifiedFinancialAdjustment dans le contexte de règlement englobant.

Message d'origine du Schematron
Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) + Rounding amount (BT-114) + Sum of Charge amount collected on behalf of a third party (BT-179).
Contexte (rule/@context)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation
Expression de contrôle (assert/@test)
xs:decimal(ram:DuePayableAmount) = xs:decimal(sum(ram:GrandTotalAmount/xs:decimal(.))) - xs:decimal(sum(ram:TotalPrepaidAmount/ xs:decimal(.))) + xs:decimal(sum(ram:RoundingAmount/xs:decimal(.))) + xs:decimal(sum(../ ram:SpecifiedFinancialAdjustment/ram:ActualAmount/xs:decimal(.)))