Limiter les décimales du total de TVA dans la devise comptable

Erreur BR-DEC-15 EN 16931

Le nombre maximal de décimales autorisé pour le montant total de TVA de la facture en devise comptable (BT-111) est de 2.

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 TaxCurrencyCode est indiqué et que TaxTotalAmount est exprimé dans cette devise, le montant comporte plus de deux décimales.

Ce que signifie la règle

Le total de TVA exprimé dans la devise comptable ne peut comporter plus de deux décimales.

Champs concernés BT-111
Veuillez limiter les décimales du total de TVA dans la devise comptable

TaxTotalAmount dans la devise comptable comporte plus de deux décimales. Si TaxCurrencyCode est indiqué, la devise du montant doit lui correspondre et le montant ne peut comporter plus de deux décimales.

Que faire ?
  1. Vérifiez la valeur de TaxTotalAmount dans la devise comptable et le TaxCurrencyCode indiqué.
  2. Faites correspondre la devise de TaxTotalAmount à TaxCurrencyCode et limitez le montant à deux décimales au maximum.
  3. Vérifiez TaxTotalAmountInAccountingCurrency ainsi que les appels à SetTaxTotalInAccountingCurrency(...) ou SetTaxCurrencyExchange(...).
  4. Générez de nouveau la facture et vérifiez-la à nouveau.
À quoi cela ressemble
✗ Déclenche le message
<rsm:CrossIndustryInvoice>
  <rsm:SupplyChainTradeTransaction>
    <ram:ApplicableHeaderTradeSettlement>
      <ram:TaxCurrencyCode>USD</ram:TaxCurrencyCode>
      <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
        <ram:TaxTotalAmount currencyID="USD">12.345</ram:TaxTotalAmount>
      </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>
✓ Correct
<rsm:CrossIndustryInvoice>
  <rsm:SupplyChainTradeTransaction>
    <ram:ApplicableHeaderTradeSettlement>
      <ram:TaxCurrencyCode>USD</ram:TaxCurrencyCode>
      <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
        <ram:TaxTotalAmount currencyID="USD">12.34</ram:TaxTotalAmount>
      </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
    </ram:ApplicableHeaderTradeSettlement>
  </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>
À vérifier dans FactoorSharp
  • FacturXInvoice.TaxTotalAmountInAccountingCurrency (BT-111)
  • FacturXInvoice.SetTaxTotalInAccountingCurrency(taxTotalInAccountingCurrency, accountingCurrency) (BT-111)
  • FacturXInvoice.SetTaxCurrencyExchange(taxTotalInAccountingCurrency, accountingCurrency, conversionRate, conversionRateTimestamp) (taxTotalInAccountingCurrency: BT-111)
Détails techniques

Le XPath autorise l’absence de TaxTotalAmount ou de TaxCurrencyCode. Si TaxCurrencyCode est présent, currencyID de TaxTotalAmount doit lui correspondre et le montant doit être arrondi à deux décimales.

Où la règle s'applique

La règle s’applique à TaxTotalAmount dans SpecifiedTradeSettlementHeaderMonetarySummation. Elle vérifie le montant par rapport à TaxCurrencyCode lorsque la devise comptable est indiquée.

Message d'origine du Schematron
The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.
Contexte (rule/@context)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation
Expression de contrôle (assert/@test)
not(ram:TaxTotalAmount) or ram:TaxTotalAmount[ ( @currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100 ) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:TaxCurrencyCode) ]