invoice.currency.exchange
I documenti in valuta estera richiedono un blocco <Currency> completo
Quando un documento dichiara una valuta diversa da EUR, CurrencyCode + CurrencyAmount + ExchangeRate devono essere tutti presenti.
Cosa controlla
Un documento emesso in una valuta diversa dall'euro contiene un blocco <Currency> all'interno di <DocumentTotals>. Il blocco ha tre figli, tutti obbligatori:
CurrencyCode: il codice ISO 4217 della valuta originale (ad esempioUSD,GBP,BRL).CurrencyAmount: il totale lordo del documento in quella valuta.ExchangeRate: il tasso usato per convertire il documento in euro.
SAFTCheck controlla le fatture (Invoice), i documenti di lavoro (WorkDocument) e le ricevute (Payment). La regola scatta quando uno dei tre è mancante o vuoto, oppure quando ExchangeRate non è un numero maggiore di zero.
Un esempio corretto
Una fattura di 1.000,00 USD convertita a 0,92, quindi i totali in euro sono 920,00:
<DocumentTotals>
<TaxPayable>0.00</TaxPayable>
<NetTotal>920.00</NetTotal>
<GrossTotal>920.00</GrossTotal>
<Currency>
<CurrencyCode>USD</CurrencyCode>
<CurrencyAmount>1000.00</CurrencyAmount>
<ExchangeRate>0.92</ExchangeRate>
</Currency>
</DocumentTotals>
Tutti gli altri importi del documento (righe, NetTotal, GrossTotal) restano in euro. Solo CurrencyAmount è nella valuta originale.
Perché è importante
L'AT lavora in euro: l'IVA e i totali del SAF-T sono tutti in EUR, e il tasso è ciò che collega a essi un documento in valuta estera. Lo schema ufficiale richiede già tutti e tre i figli ogni volta che il blocco è presente, quindi un elemento mancante compare anche come errore di schema. Quell'errore però è difficile da leggere, e lo schema accetta un ExchangeRate pari a 0, che non può mai essere corretto. Questa regola indica invece il documento e il campo mancante.
Esempi
| Blocco Currency | Verdetto |
|---|---|
USD / 1000.00 / 0.92 | ✓ |
USD / 1000.00 / 0 | ✗ ExchangeRate dev'essere maggiore di 0 |
USD / 1000.00 / (mancante) | ✗ ExchangeRate mancante |
USD / (vuoto) / 0.92 | ✗ CurrencyAmount mancante |
EUR / 920.00 / 1 | ✗ Errore di schema: EUR non è un codice ammesso, perché i documenti in euro non devono avere un blocco Currency |
| (nessun blocco Currency) | ✓ Documento in euro, la regola non si applica |
Cause comuni
- L'ERP scrive un blocco Currency per ogni documento, compresi quelli in euro, con
EURe un tasso pari a 1. Lo schema qui ammette solo codici di valute estere, quindi il blocco va eliminato. - Il tasso non è stato registrato al momento dell'emissione del documento (spesso per fatture create manualmente o documenti importati da un altro sistema), quindi l'esportazione scrive un tasso vuoto o pari a zero.
- Valuta del cliente confusa con la valuta del documento: un cliente estero fatturato in euro non ha bisogno di un blocco Currency.
Come correggere
- Se il documento è effettivamente in valuta estera, registra il tasso di cambio sul documento nel tuo ERP (il Banco de Portugal pubblica tassi di riferimento giornalieri) ed esporta di nuovo.
- Se il documento è in euro, modifica l'impostazione di esportazione dell'ERP in modo che non scriva un blocco
<Currency>per i documenti in euro.
Nella pagina del risultato, l'anomalia indica di quale documento si tratta (ad esempio Invoice[12].Currency) e quali campi sono mancanti o non validi.
Correlato
- Riconciliazione dei totali: i totali dei blocchi vengono confrontati in euro.
- Messaggi di errore SAF-T dell'AT: "Ficheiro inválido", "Rejeitado" ed errori cvc-