# BR-31 Le montant de la remise au niveau du document est requis

Chaque remise au niveau du document (BG-20) doit comporter un montant de remise au niveau du document (BT-92).

## Description du problème

> **ERREUR**: Règle métier de la norme EN 16931 (CEN)

## Contexte et importance

Il s’agit d’une règle de base de la norme EN 16931. L’erreur apparaît lorsqu’une remise globale est exportée avec son motif ou son pourcentage (BT-94) mais sans montant, par exemple quand seul le taux de remise est connu. Sans BT-92, le total des remises au niveau du document (BT-107) et le total hors TVA (BT-109) ne peuvent pas être recalculés. Le schéma UBL impose déjà cbc:Amount : BR-31 apparaît donc surtout sur des factures CII dont la remise ne contient que ram:CalculationPercent ou un motif.

## Solution

Ajoutez cbc:Amount au cac:AllowanceCharge de niveau document dont cbc:ChargeIndicator vaut false (CII : ram:ActualAmount dans ram:SpecifiedTradeAllowanceCharge). Si seul le pourcentage est connu, calculez le montant : montant de base × pourcentage ÷ 100.

- [Valider le XML](/fr/xrechnung-validator?source=resource&rule=BR-31)
- [Convertir la facture](/fr/pdf-to-xrechnung?source=resource&rule=BR-31)

## Exemples valides

- BT-92 = 20.00 sur une remise au niveau du document

## Exemples invalides

- Remise CII au niveau du document avec motif et pourcentage mais sans ram:ActualAmount (BT-92) ; en UBL, un cac:AllowanceCharge sans cbc:Amount est déjà une erreur de schéma XML

## Exemples de code

### XML valide
```
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CalculationPercent>2.00</ram:CalculationPercent>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:ActualAmount>20.00</ram:ActualAmount>
  <ram:Reason>Loyalty discount</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
```

### XML invalide
```
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CalculationPercent>2.00</ram:CalculationPercent>
  <ram:BasisAmount>1000.00</ram:BasisAmount>
  <ram:Reason>Loyalty discount</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
```

## Champs concernés

- [BT-92 Montant de la remise au niveau du document](/resources/xrechnung/bt-92-document-level-allowance-amount)

## Règles associées

- [BR-32](/resources/kosit-validator-errors/br-32-document-allowance-vat-category-required)
- [BR-33](/resources/kosit-validator-errors/br-33-document-allowance-reason-required)
- [BR-36](/resources/kosit-validator-errors/br-36-document-charge-amount-required)

## Outils de validation

- [Validateur KoSIT officiel](https://github.com/itplr-kosit/validator): Exécutez le validateur officiel du KoSIT avec la configuration XRechnung pour contrôler les règles EN 16931 et XRechnung.
- [Convertir un PDF en XRechnung](/pdf-to-xrechnung): Repérez les erreurs de validation pendant la conversion et vérifiez chaque correction.

## Ressources associées

- [Spécification officielle](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Suite de tests](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Toutes les erreurs de validation](/resources/kosit-validator-errors): Vue d’ensemble des règles de validation EN 16931, XRechnung et Peppol expliquées ici.
