9.3. Fatturazione in valuta estera
Approfondimenti sull' emissione e configurazione fatturazione in valuta estera.
Informazioni generali per la configurazione delle procedure all' emissione e stampa fatture in valuta estera come ad esempio esempio Dollari
Innanzitutto l’Agenzia delle Entrate nelle FAQ ha indicato che la fattura elettronica DEVE ESSERE EMESSA in valuta EURO.
Quindi sia il TAG <Divisa> che tutti gli importi devono essere espressi in EURO
Se l' azienda decide di inserire importi nei movimenti di magazzino direttamente in valuta estera come ad esempio in Dollari.
Il campo valuta con il relativo cambio.
Il campo Tasso di contabilizzazione (anch’esso con il relativo cambio)
Il campo valuta viene utilizzato per eseguire la conversione in valuta in fase di stampa fattura.
La conversione viene effettuata dividendo il valore numerico espresso nei movimenti di magazzino (ad esempio mov_magl.prezzo) con il valore imputato nel campo valuta.
(Questo è inoltre il valore che viene inserito nell’ XML della fattura elettronica)
Il campo Tasso di contabilizzazione viene invece utilizzato, solo in fase di contabilizzazione (la contabilizzazione deve essere effettuata obbligatoriamente in Euro).
Trend utilizza il tasso di contabilizzazione moltiplicandolo con il valore convertito in valuta estera, quindi, in fase di contabilizzazione effettuerà questo calcolo:
(Prezzo inserito in mov_magl \ valuta)*Tasso di contabilizzazione
Qui si aprono 2 scenari:
-
Prezzi inseriti nel movimento di magazzino in Euro ma il report di stampa deve essere effettuato in valuta
-
Prezzi inseriti nel movimento di magazzino in Valuta (esempio Dollari) e report di stampa direttamente in valuta estera.
Prendiamo ora in considerazione solo il secondo caso (quello più articolato):
Le impostazioni che devono essere fatte sono le seguenti
Siccome la fattura elettronica e la relativa contabilizzazione deve essere obbligatoriamente espressa in Euro dobbiamo agire esclusivamente sul campo valuta.
Il campo valuta di contabilizzazione dovrà essere impostato a 1 (se viene lasciata a 0, Trend in fase di contabilizzazione non applica il cambio e quindi i valori di contabilizzazione nei movimenti contabili sarebbero in $ e non in Euro)
- Nella tabella delle valute nel campo “Cod. divisa” occorre inserire il valore EUR (In quanto la valuta della fattura elettronica dovrà essere in Euro)
Se il cambio da Euro a Dollari è (ad esempio) 0.869, dobbiamo ottenere il cambio opposto (da Dollari a Euro) che è dato dalla formula 1/cambio à (1/0.869)=1.150748
Questo è il valore che deve essere inserito nel campo valuta del movimento di magazzino e sarà ereditato dal cambio “Fisso” che dovrà essere inserito nella tabella valute (lo dovranno cambiare solo quando decidono di modificare il cambio fisso).
A questo punto la fattura elettronica sarà emessa in Euro (dollari / cambio)
Anche la contabilizzazione sarà espressa in Euro (il campo valuta di contabilizzazione dovrà quindi avere valore 1)
Occorrerà agire sul report di stampa grafica (nel caso in cui l'azienda decida di stampare gli importi in Dollari) quindi in tutti i campi dove sono contenuti i valori di importo occorrerà inserire in fase di stampa l' istruzione SetCurrencyValue presente nella libreria TrendHelperLibrary.
La firma dell' istruzione SetCurrencyValue è la seguente:
SetCurrencyValue(object senderObject, dynamic report, int? cifreDec = null)
Occorre impostarla negli script del report nell’evento prima di stampare (BeforePrint)
Nota: nel controllo impostare la Mask a più di 2 decimali (anche se si vuole effettuare l’arrotondamento a 2 perché la funzione, internamente, prima di convertire il valore in valuta legge il dato dal controllo stesso)
quindi nel report di stampa, nei controlli dove vengono stampati i prezzi (per tutti i prezzi che l'azienda decide di stamparli in valuta estera)
Nel controllo impostare Mask a Numerica con 4 decimali
Negli script, nel metodo, "Prima di Stampare" impostare queste linee di codice:
TrendHelperLibrary.Functions.SetCurrencyValue(sender,this,2);
TrendHelperLibrary.Functions.BlankIfZero(sender);