# PEPPOL-EN16931-R046 Il prezzo netto dell’articolo deve essere pari al prezzo lordo meno lo sconto sul prezzo

In base alla regola Peppol PEPPOL-EN16931-R046, quando una riga di fattura indica un prezzo lordo in BT-148 (cbc:BaseAmount) e uno sconto sul prezzo in BT-147 (cbc:Amount), il prezzo netto in BT-146 (cbc:PriceAmount) deve rispettare l’uguaglianza esatta: prezzo netto = prezzo lordo − sconto sul prezzo. La regola si applica solo se il prezzo lordo è presente e confronta valori decimali esatti senza tolleranza di arrotondamento.

## Descrizione del problema

> **ERRORE**: Regola Peppol BIS Billing 3.0 (OpenPeppol)

> **Dove viene controllata PEPPOL-EN16931-R046**
>
> Un validatore controlla una fattura elettronica per fasi. Prima il file deve essere XML ben formato e conforme allo schema UBL o CII (XSD). Poi si applicano le regole di business della EN 16931: regole di base BR, calcoli BR-CO, liste di codici BR-CL, decimali BR-DEC e regole per categoria IVA come BR-S. Seguono le regole nazionali o di rete selezionate da BT-24: BR-DE per XRechnung, PEPPOL-EN16931 per Peppol BIS Billing. Il report elenca ogni regola violata: un errore significa rifiuto, i soli avvisi significano comunque accettazione. PEPPOL-EN16931-R046: regola Peppol BIS Billing, fase «Regole nazionali (CIUS)».

## Contesto e significato

Discrepanze tra prezzo lordo, sconto unitario e prezzo netto attivano PEPPOL-EN16931-R046. Poiché il controllo non ha tolleranza di arrotondamento, fallisce già un prezzo netto arrotondato a 2 decimali quando prezzo lordo e sconto ne hanno 4. L’errore compare anche quando uno sconto viene esportato in cbc:Amount ma il prezzo netto resta uguale al prezzo lordo.

## Soluzione

Nel calcolo prezzi dell’ERP calcola il prezzo unitario netto come prezzo unitario lordo meno lo sconto unitario prima dell’esportazione, con la stessa precisione decimale per i tre valori. In UBL 2.1, dentro <cac:Price>, <cbc:PriceAmount> deve essere esattamente uguale a <cac:AllowanceCharge><cbc:BaseAmount> meno <cbc:Amount>. Se non indichi un prezzo lordo, ometti cbc:BaseAmount: in tal caso R046 non viene valutata.

- [Valida XML](/it/xrechnung-validator?source=resource&rule=PEPPOL-EN16931-R046)
- [Converti fattura](/it/pdf-to-xrechnung?source=resource&rule=PEPPOL-EN16931-R046)

## Esempi validi

- Prezzo lordo BT-148 = 100.00 EUR, Sconto prezzo BT-147 = 20.00 EUR, Prezzo netto BT-146 = 80.00 EUR
- Prezzo lordo BT-148 = 50.00 EUR, Sconto prezzo BT-147 = 5.00 EUR, Prezzo netto BT-146 = 45.00 EUR

## Esempi non validi

- Prezzo lordo 100.00 EUR meno sconto 20.00 EUR esportato con Prezzo netto = 85.00 EUR (Discrepanza di calcolo)
- Sconto dichiarato di 10.00 EUR ma Prezzo netto uguale al Prezzo lordo senza deduzione

## Esempi di codice

### XML valido
```
<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 non valido
```
<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>
```

## Campi interessati

- [BT-146 Prezzo netto dell’articolo](/resources/xrechnung/bt-146-item-net-price)
- [BT-148 Prezzo lordo dell’articolo](/resources/xrechnung/bt-148-item-gross-price)
- [BT-147 Sconto sul prezzo dell’articolo](/resources/xrechnung/bt-147-item-price-discount)
- [BG-29 Dettagli del prezzo](/resources/xrechnung/bt-146-item-net-price)

## Regole correlate

- [BR-24](/resources/kosit-validator-errors/br-24-invoice-line-net-amount-must-be-present)
- [PEPPOL-EN16931-R120](/resources/kosit-validator-errors/peppol-en16931-r120-line-net-amount-formula)

## Strumenti di validazione

- [Validatore KoSIT ufficiale](https://github.com/itplr-kosit/validator): Esegui il validatore ufficiale KoSIT con la configurazione XRechnung per controllare le regole EN 16931 e XRechnung.
- [Converti PDF in XRechnung](/pdf-to-xrechnung): Individua gli errori di validazione durante la conversione e verifica ogni correzione.

## Risorse correlate

- [Specifiche ufficiali](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/)
- [Test suite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Tutti gli errori di validazione](/resources/kosit-validator-errors): Panoramica delle regole di validazione EN 16931, XRechnung e Peppol spiegate qui.
