Aller au contenu principal

Référence

Export Markdown

PEPPOL-EN16931-R046 Le prix net de l’article doit être égal au prix brut diminué de la remise sur prix

Selon la règle Peppol PEPPOL-EN16931-R046, lorsqu’une ligne de facture indique un prix brut dans BT-148 (cbc:BaseAmount) et une remise sur prix dans BT-147 (cbc:Amount), le prix net dans BT-146 (cbc:PriceAmount) doit respecter l’égalité exacte : prix net = prix brut − remise sur prix. La comparaison se fait sans tolérance d’arrondi : calculez le prix net avec le même nombre de décimales que le prix brut et la remise.

Description du problème

ERREUR

Règle Peppol BIS Billing 3.0 (OpenPeppol)

Contexte et importance

Tout écart entre prix brut, remise unitaire et prix net déclenche PEPPOL-EN16931-R046. Le contrôle n’admet aucune tolérance d’arrondi : un prix net arrondi à 2 décimales échoue déjà lorsque le prix brut et la remise en comptent 4. L’erreur apparaît aussi lorsqu’une remise est exportée dans cbc:Amount mais que le prix net reste égal au prix brut.

Solution

Dans le calcul de prix de votre ERP, calculez le prix net unitaire comme le prix brut diminué de la remise unitaire, avec la même précision décimale pour les trois valeurs. En UBL 2.1, dans <cac:Price>, vérifiez que <cbc:PriceAmount> est exactement égal à <cac:AllowanceCharge><cbc:BaseAmount> diminué de <cbc:Amount>. Si vous n’indiquez pas de prix brut, omettez cbc:BaseAmount : R046 n’est alors pas évaluée.

Actions rapides

Exemples valides

  • Prix brut BT-148 = 100.00 EUR, Remise sur prix BT-147 = 20.00 EUR, Prix net BT-146 = 80.00 EUR
  • Prix brut BT-148 = 50.00 EUR, Remise sur prix BT-147 = 5.00 EUR, Prix net BT-146 = 45.00 EUR

Exemples invalides

  • Prix brut 100.00 EUR moins remise 20.00 EUR exporté avec Prix net = 85.00 EUR (Erreur de calcul)
  • Remise déclarée à 10.00 EUR mais le Prix net est égal au Prix brut sans déduction

Exemples de code

XML valide
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">80.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
XML invalide
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">85.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>

Champs concernés

Outils de validation