Référence
Export MarkdownPEPPOL-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
<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><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>