Rapprocher le total des remises au niveau du document

Erreur BR-FXEXT-CO-11 Factur-X

Valeur absolue de (Somme des remises au niveau du document (BT-107) - ∑ Montants de remise au niveau du document (BT-92))<= 0,01 * Nombre de montants de remise au niveau du document (BT-92).

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

Lorsque des remises au niveau du document sont présentes, ram:AllowanceTotalAmount doit correspondre à leur somme. L’écart autorisé est au maximum de 0,01 par remise (BT-92) ; la règle n’est pas respectée si le total manque alors que des remises existent ou si l’écart dépasse cette tolérance.

Ce que signifie la règle

BT-107 est le montant total des remises au niveau du document et doit correspondre aux montants individuels BT-92, sous réserve de la tolérance d’arrondi définie.

Champs concernés BT-107 BT-92
Veuillez rapprocher le total des remises au niveau du document

Le total indiqué pour les remises au niveau du document ne correspond pas suffisamment aux remises individuelles, ou le total manque. Vous pouvez rapprocher les montants des remises enregistrées.

Que faire ?
  1. Comparez ram:AllowanceTotalAmount aux valeurs ram:ActualAmount des remises dans ram:SpecifiedTradeAllowanceCharge.
  2. Vérifiez le total à l’aide de AllowanceTotalAmount et les montants individuels à l’aide de ActualAmount.
  3. Tenez compte de la tolérance autorisée de 0,01 par remise.
  4. Générez à nouveau la facture et vérifiez-la de nouveau.
À vérifier dans FactoorSharp
  • FacturXInvoice.AllowanceTotalAmount (BT-107)
  • AbstractTradeAllowanceCharge.ActualAmount (Document level allowance: BT-92)
Détails techniques

Le test compare ram:AllowanceTotalAmount à la somme arrondie des valeurs ram:ActualAmount de ram:SpecifiedTradeAllowanceCharge pour lesquelles ram:ChargeIndicator/udt:Indicator vaut false. L’écart absolu autorisé est de 0,01 multiplié par le nombre de remises ; le test est également satisfait si aucune remise ni aucun montant total n’est présent.

Où la règle s'applique

S’applique au total des remises dans ram:SpecifiedTradeSettlementHeaderMonetarySummation et aux remises individuelles au niveau du document dans ram:SpecifiedTradeAllowanceCharge.

Message d'origine du Schematron
Absolute Value of (Sum of allowances on document level (BT-107) - Σ Document level allowance amounts (BT-92))<= 0,01 * Number of Document level allowance amounts (BT-92).
Contexte (rule/@context)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation
Expression de contrôle (assert/@test)
( not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']) and not (ram:AllowanceTotalAmount) ) or ( for $calculatedAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']/ ram:ActualAmount)* 10 * 10 ) div 100), $totalAmount in xs:decimal(ram:AllowanceTotalAmount), $nbAllowanceItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/ udt:Indicator='false'])), $tolerance in xs:decimal(0.01), $maxTolerance in $nbAllowanceItems * $tolerance, $diff in xs:decimal($totalAmount - $calculatedAmount), $abs in xs:decimal(abs($diff)) return $abs le $maxTolerance )