Newsgroup: it.comp.lang.delphi
Titolo: Visualizzare fattura elettronica

Salve,
            Ho aggiornato un programma di fatturazione con la creazione
del file XML della fattura B2B secondo le specifiche dell' Agenzia delle entrate.
 
Ora vorrei visualizzare il file XML con un  mio foglio di stile XSL.
 
Vorrei farlo con Delphi 7 enterprise e/o con componenti reperibili
su Torry o altro.
 
Esistono programmi simili:
Assoinvoice della infocert
Visfatt di Migg
InChiaro di AdsDoc
 
Consentono di cambiare il foglio di stile a run time in un menu a cascata
come appunto vorrei fare io e alcuni sono fatti con Delphi.
 
Ho fatto qualche prova con XMLdocument e WebBrowser ma non
ho ancora visto quello che mi serve.
 
Qualcuno ha una dritta?
Grazie. :-)

 
 
Ciao Eugenio,
 
io ho trovato questo per delphi 5 ma credo possa andare bene anche per delphi 7, spero che ti sia di aiuto.
 
Ciao da Enrico Giudici c/o anthelios

ops !!! Scusami, dimenticato il link 
http://edn.embarcadero.com/article/27106
 


Ciao da Enrico Giudici c/o anthelios
 
Grazie mille Enrico,
sembra interessante, ora me lo studio un po'.
Ciao :-)

Ciao,
io ho seguito un approccio diverso.
 
Partendo dal fatto che il file xml può contenere un lotto di fatture, ho preferito generalizzare la visualizzazione "estraendo" la fattura che voglio visualizzare e creando un file xml temporaneo.
 
In questo file, inserisco il tag relativo al collegamento con il file xsl che abbiamo realizzato.
(tra l'altro utilizzo se possibile quello online se il collegamento internet è disponibile, altrimenti una copia locale che potrebbe essere meno aggiornata)
 
A questo punto passo la visualizzazione ad una finestra del mio programma con il componente WebBrowser.
 
Potrei in realtà a questo punto lanciare direttamente un browser (chrome, firefox, edge, explorer, ...) ma preferisco al momento far sembrare come visualizzato dall'interno del programma


Per i lotti di fatture mi pare di aver letto che riguardano uno stesso cliente
ed è un caso che non ho preso in considerazione.
(sarebbe stato diverso se si trattava di fatture di clienti diversi)
 
Ho provato ad inserire una riga tipo :
<?xml-stylesheet type="text/xsl" href="fatturaordinaria_v1.2.1.xsl"?> 
e già così facendoci un click sopra parte il browser e la visualizza
con l'xsl ministeriale (se presente nella stessa cartella)
 
Quindi (potendo sostituire quella riga) sarebbe sufficiente il componente WebBrowser.
 
ma come si assegna il nome del file XLM a TwebBrowser?
 
 
 

 ma come si assegna il nome del file XLM a TwebBrowser?
 
Ciao Eugenio,
 
prova a vedere al link 
https://stackoverflow.com/questions/26919603/viewing-xml-like-that-of-ie-on-vista-with-twebbrowser
 mi sembra che dovrebbe andarti bene.
 
Ciao da Enrico Giudici c/o Anthelios
 

A questo punto passo la visualizzazione ad una finestra del mio programma con il componente WebBrowser.
 
Ho capito, pensavo anche io di fare cosě.
mi mancava solo di capire come visualizzare il file xlm con WebBrowser
ho trovato: Navigate
e mi basta questo.
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  url : widestring;
begin
  url:='H:\Program Files (x86)\Borland\Delphi7\Projects\provaXLM4\xml.xml';
  webbrowser1.Navigate(url);
end;
 

Ciao Eugenio,
 
scusa se mi permetto di inserirmi quasi a gamba tesa e forse in OT, spero di non alterare l'ira di qualcuno all'interno di questo ng.
 
Dato che, come al solito mio cognato si è svegliato solo ora riguardo la fatturazione elettronica, volevo chiederti la cortesia se potevi rispondermi alle seguenti domande visto che non mi è mai capitato di gestire file XML.
 
1) Per la creazione dell'XML hai utilizzato il componente nativo di Delphi 7 XMLDocument o qualche altro componente ?
2) Come ti sei trovato con la creazione della fattura ? Io ho scaricato qualcosa dal sito delle entrate ma se tu ti sei trovato bene con uno o più documenti potresti per cortesia indicarmi i link dove poterli scaricare ?
3) Per l'invio dell'XML come lo hai gestito ?
 
Mi scuso ancora con tutti gli altri del ng per questo post praticamente privato ad Eugenio, chiedo eventualmente ad Eugenio ( se è disponibile ) proseguire il thread in privato.
 
Ciao e grazie a tutti, soprattutto ad Eugenio, da Enrico Giudici c/o Anthelios
 

 
 
Io vorrei inviarlo via pec automatizzando la firma con dike (che 
dovrebbe accettare il nome del file da firmare dalla riga di comando) 
utilizzando la shellexecute ma, mon ho ancora implementato questa parte.
 
Ciao.

 utilizzando la shellexecute ma, mon ho ancora implementato questa parte.
 
Infatti c'e' anche il problema della firma che non ho la più pallida idea di come fare.
 
Ciao e grazie da Enrico Giudici c/o Anthelios.
 

 
Il problema della firma c'è se vuoi effettuare tu l'invio, se deleghi la 
trasmissione allo sdi un soggetto terzo, poiché firmerà lui, tu non devi 
firmare il file.
 
Ciao.

 firmare il file.
 
Dal tuo post ho visto che volevi implementare di persona la firma tramite dike, secondo te è fattibile ? Mio cognato a fine mese manda circa una ventina di fatture e sarebbe carino avere un processo automatico.


) dopo aver inserito 
la cns dovrebbe bastare per firmare.
 
Ciao.

 la cns dovrebbe bastare per firmare.
 
grazie 1000, gentilissimo.
 
Ciao da Enrico Giudici c/o Anthelios

Ciao Luigi,
 
ultima cosa, ho installato il componente che mi dicevi per la creazione dell'XML, a parte che in giro non ho trovato esempi su cui lavorare ma continuo a cercare, non riesco a creare la seguente struttura di prova :
 
<data>
<vehicle>
    <type>Car</type>
    <model>2005</model>
    <number>1568</number>
</vehicle>
<vehicle>
    <type>Car</type>
    <model>2009</model>
    <number>1598</number>
</vehicle>
</data>
 
Mi sapresti dire per cortesia che metodo devo usare ?
 
Infine, quando creo l'XML mi crea la seguente riga :
 
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
 
mentre guardando l'esempio di una fattura di prova presa dal sito non esiste, c'e' modo di non farla creare in automatico ?
 
Ciao e grazie da Enrico Giudici c/o Anthelios.
 

 
 
Non ho capito come fare.
Da me manca la parte "standalone="no"?" ma non da fastidio, il file xml 
viene accettato dallo sdi senza problemi.
 
Ciao.

 viene accettato dallo sdi senza problemi.
 
Meno male.
 
Grazie ancora e spero vivamente di non "romperti" più le scatole :-)


 
 
Nessuna "rottura" lo scambio di info è sempre ben accetto sia in 
"entrata" che in "uscita" ;(
 
Ciao.

 
Voleva essere ;)
 

Ciao.
 
Con Dike 6 ho fatto alcune prove e ho provato anche Firmacerta
 
Ho acquistato una CNS (carta nazionale dei servizi) alla camera di commercio,
con quella ho acquistato la licenza d'uso di Dike 6 PRO che consente
la firma massiva delle fatture.
 
Ne ho firmata qualcuna (singola) poi ho provato la simulazione
messa a disposizione dalla Ade e ho inviato un fattura
ad un mio cliente per prova.
 
So arrivato qua, aspetto risposte mentre lavoro ad un
programma che dovrebbe fare tutto :
firma spedizione e conservazione.
 
Ciao  :-)
 
 
 


 
la conservazione preferisco la faccia l'Agenzia delle Entrate (gratis) 
tanto le fatture passando dallo sdi sono già passate dall'ade e allora 
che se la smazzi lei la conservazione sostitutiva :)
 
Ciao.

 wrote:
 

Alessandro scusa
potresti confermarmi se l'indirizzo web del foglio di stile 'ministeriale' è questo?
<?xml-stylesheet type="text/xsl" href="
http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/fatturaordinaria_v1.2.xsl
"
?> 
 
Grazie,
Eugenio

Ciao.
 
Ciao.
 

 
 
Confermo che la faranno, io non sono un programmatore professionista ma 
un consulente del lavoro (i programmi che scrivo generalmente servono a 
me per lavoro anche se uno l'ho messo Online, gratuitamente).
 
Per attivare la conservazione sostitutiva da parte dell'ade il 
contribuente deve registrarsi a FiscoOnLine, accedere a "fatture & 
Corrispettivi" ed attivare la conservazione sostitutiva.
 
 
Ciao.

Ciao.
Ciao.
 

 Eugenio
 
Mi dispiace, non utilizzo il foglio ministeriale, quindi non ti so rispondere...
 
Ho preferito incaricare uno dei miei ragazzi per la realizzazione di un foglio di stile che fosse più consono al formato classico di una fattura.
 
Se dai quella vista ad un "contabile" non ci capisce nulla, anzi non capisce neppure se è una fattura

 che se la smazzi lei la conservazione sostitutiva :)
 
Non voglio intromettermi, ma a me risulta che l'Agenzia delle Entrate faccia la conservazione per 5 anni (obbligo fiscale) e non per 10 anni (obbligo civilistico). Almeno così mi hanno riferito (spero tanto di essere contraddetto)
 
Inoltre se poi si dovesse andare a un contenzioso, l'AdE si troverebbe nella posizione di essere chi richiede i documenti e avrebbe dovuto anche conservarli...
 
Io ho consigliato i miei clienti di seguire strade diverse, anche se ovviamente con dei costi non banali.
 
Non dimenticate poi che anche le fatture passive (ricevute) vanno conservate...
 
Ho provato anche la strada Aruba, ma mi risulta che la gestione sia a singolo file (come anche per l'AdE).
 
Anche questo non aiuta chi deve gestire qualche centinaio di fatture al mese... Se i numeri sono inferiori allora l'invio uno ad uno credo sia percorribile
 
Alessandro

> Infatti c'e' anche il problema della firma che non ho la più pallida idea di come fare.
 
Per il problema della firma, mi sembra che per le fatture tra aziende, non sia più obbligatoria; resta obbligatoria per le fatture verso la pubblica amministrazione.
 
Comunque io preferisco che le fatture che vengono inviate (utilizzo un intermediario) vengano tutte firmate in modo massivo.
 
 

 
Nel frattempo ho trovato un riferimento: 
Provvedimento_89757-30042018.pdf
 
Al punto 2.6 si trova:
"Nel caso in cui il file della fattura sia firmato elettronicamente, il SdI effettua un controllo sulla validità del certificato di firma..."


io ho questo documento :
http://www.fatturapa.gov.it/export/fatturazione/sdi/Specifiche_tecniche_SdI_v1.6.pdf
 
 
sulla firma dice:
 
2.1 FORMATI DI FIRMA ELETTRONICA E RIFERIMENTO TEMPORALE
Il SdI accetta come fattura elettronica un documento informatico che:
- se destinato ad una pubblica amministrazione (art.1, comma 211, legge 24
dicembre 2007 n. 244), sia provvisto di un riferimento temporale e firmato
elettronicamente tramite un certificato di firma elettronica qualificata, non
contenente macroistruzioni o codici eseguibili tali da attivare funzionalità che
possano modificare gli atti, i fatti o i dati nello stesso rappresentati;
- se destinato ad un soggetto diverso da pubblica amministrazione (art. 1,
comma 2, decreto legislativo 127/2015), sia firmato o secondo la modalità
precedente, oppure in formato XAdES con certificato di firma CA Agenzia
delle Entrate.
Nel primo caso, il certificato di firma elettronica qualificata deve essere rilasciato da
un certificatore accreditato, presente nell’elenco pubblico dei certificatori gestito
dall’Agenzia per l’Italia Digitale così come disciplinato dall’art. 29, comma 1, del
DLGS 7 marzo 2005 n. 82 e successive modifiche. I formati ammessi per firmare
elettronicamente la fattura sono i seguenti:
- CAdES-BES (CMS Advanced Electronic Signatures) con struttura aderente
alla specifica pubblica ETSI TS 101 733 V1.7.4, così come previsto dalla
normativa vigente in materia a partire dal 1 settembre 2010;
- XAdES-BES (XML Advanced Electronic Signatures), con struttura aderente alla
specifica pubblica ETSI TS 101 903 versione 1.4.1, così come previsto dalla
normativa vigente in materia a partire dal 1 settembre 2010
------------------------------------------------------------------------------------------------
 
credo sia quello più aggiornato.
 
 

L'allegato tecnico 
   Versione 1.1 del 5 giugno 2018 
 
disponibile al link:
 
https://www.agenziaentrate.gov.it/wps/file/Nsilib/Nsi/Schede/Comunicazioni/Fatture+e+corrispettivi/Fatture+e+corrispettivi+ST/ST+invio+di+fatturazione+elettronica/ST+Fatturazione+elettronica+-+Allegato+A/Allegato+A+-+Specifiche+tecniche+vers+1.1_22062018.pdf
 
 
riporta:
 
1.2.1 FORMATI DI FIRMA ELETTRONICA E RIFERIMENTO TEMPORALE
Il SdI gestisce sia fatture elettroniche prive di firma elettronica che fatture elettroniche alle quali sia apposta firma elettronica.
Nel caso si scelga di apporre la firma elettronica, il SdI verifica che le fatture elettroniche siano...

 
 
Be, puoi sempre iscriverti nuovamente o accedere tramite cns o, meglio, 
con lo spid.
 
Ciao.

 
 
Il problema con i privati è che:
a) se decidi di cambiare devi prima scaricare in locale i documenti, 
conservarli a norma fintanto che non li carichi da qualche altra parte.
b) se il privato "chiude" passi al punto a)
c) se il privato "fallisce" sei fregato :(
 
Ciao.

 
 
Per massivo intendi gruppi di fatture? in questo caso se, per esempio, 
venisse scartata una fattura (caso più frequente partita iva cessata o 
inesistente) viene scartato tutto il file compreso le altre fatture 
corrette.
 
Ciao.

Ciao.
 
Vedrň cosa fare per lo Spid.
 
Ciao, :-)
 
 


Però ci vorrebbe una conferma ufficiale e specifica da parte dell' Ade
su questo argomento.
Io ci ho speso dei soldi e sto per farlo fare anche ai miei clienti.
 
 

 "entrata" che in "uscita" ;(
 
come volevasi dimostrare, spero ti ricorderai delle parole qui sopra :-D
 
Sto diventando matto per cercare di fa funzionare il tuo codice per la creazione dell'XML tramite il componente TJvSimpleXML, qui di seguito il problema :
 
var
   xmlDoc: TJvSimpleXML;
   xmlData,
   xmlVehicle: TJvSimpleXMLElem;
begin
   xmlDoc := TJvSimpleXML.Create(Self);
   xmlDoc.Options := [sxoAutoIndent];
   xmlData := xmlDoc.Root.Items.Add('data');
 
   xmlVehicle := xmlDoc.Items.Add('vehicle'); <--- ERRORE --- >
   mxlVehicle.Items.Add('type', 'Car');
   mxlVehicle.Items.Add('model', '2005');
   mxlVehicle.Items.Add('number', '1568');
 
   xmlVehicle := xmlDoc.Items.Add('vehicle');
   mxlVehicle.Items.Add('type', 'Car');
   mxlVehicle.Items.Add('model', '2009');
   mxlVehicle.Items.Add('number', '1598');
end;
 
A parte che non ci prendo molto, ho provato ad utilizzare altri oggetti ma non riesco ad andare avanti.
 
Potresti per cortesia dirmi se occorre qualcos'altro ?
 
Non esiste da nessuna parte che tu sappia dove trovare degli esempi sull'utilizzo del componente ?


     mxlVehicle.Items.Add('number', '1598');
 
hai ragione, scusa, il codice corretto è questo:
 
var
    xmlDoc: TJvSimpleXML;
    xmlData,
    xmlVehicle: TJvSimpleXMLElem;
begin
    xmlDoc := TJvSimpleXML.Create(Self);
    xmlDoc.Options := [sxoAutoIndent];
    xmlData := xmlDoc.Root.Items.Add('data');
 
    xmlVehicle := xmlData.Items.Add('vehicle');
    xmlVehicle.Items.Add('type', 'Car');
    xmlVehicle.Items.Add('model', '2005');
    xmlVehicle.Items.Add('number', '1568');
 
    xmlVehicle := xmlData.Items.Add('vehicle');
    xmlVehicle.Items.Add('type', 'Car');
    xmlVehicle.Items.Add('model', '2009');
    xmlVehicle.Items.Add('number', '1598');
end;
 
Ciao.

 end;
 
ti ringrazio moltissimo, funziona perfettamente.
 
Mi mandi a quel paese se ti chiedo ancora un paio di cosettine ? :-D
 
1) Ho notato nella documentazione scaricata dal link che mi hai dato che c'e' un campo progressivo invio, se non ho visto male di 10 ct., sai per caso cosa significa "xs:normalizedString" nella colonna "Tipo Info" ?
 
2) Ho letto in rete che esiste la possibilità di allegare all'XML il PDF della fattura in formato "encode base64" ( non so bene esattamente come fare ma lo vedrò più tardi ), nel mio caso potrebbe essere interessante visto che io genero la fattura in PDF.
Domanda : alleghi anche tu il PDF all'XML oppure non è obbligatorio per cui ognuno decide a modo suo cosa fare ?
 
Ciao da Enrico Giudici c/o Anthelios.


Ho mandato un messaggio con una richiesta di chiarimento al servizio assistenza sul sito Ade
la risposta è questa:
 
 
La informiamo che la sua richiesta di assistenza del 14/09/18 11:27, è stata trattata ed ha ricevuto la seguente soluzione:
 
Gentile Utente,
 
in merito alla Sua richiesta La informiamo che le fatture tra privati da luglio 2018  possono essere inviate anche NON
firmate/sigillate. La firma digitale rimane invece obbligatoria per le fatture inviate verso la PA.
 
Cordiali Saluti,
 
Servizio Assistenza.
 
 

 
 
No e, credo di non smentirmi nel dire che, *non lo farò mai!* La fattura 
Elettronica è già complessa di suo per cui più la creo semplice e meglio 
è. :)
 
Ciao.
 

 è. :)
 
un sentito ringraziamento da parte mia, approfitto anche di ringraziare Eugenio per gli approfondimenti.
 
Luigi, avrei un'ultima domandina ma magari te la farò più avanti riguardo al nome del file + progressivo. Adesso ho tanto di quel materiale a disposizione che mi metterò a testa bassa a produrre.
 
Ciao da Enrico c/o Anthelios.
 

Buona sera,
nel caso di una fattura elettronica con ritenuta d'acconto, il dato 2.1.1.5.1 <Tipo Ritenuta> che deve essere compilato con il valori RT01 (ritenuta persone fisiche) o RT02 (ritenuta persone giuridiche).
 
Questo valore deve essere riferito a chi emette la fattura (cedente/prestatore) oppure a chi la riceve (cessionario/committente)?

 Questo valore deve essere riferito a chi emette la fattura (cedente/prestatore) oppure a chi la riceve (cessionario/committente)?
 
Ciao Alessandro,
 
dato che mi sto leggendo il pdf "Suggerimenti per la compilazione della fattura PA 1.2" ho trovato questo :
 
"Il cedente/prestatore è soggetto a ritenuta a titolo di acconto o a titolo definitivo".



Cedente/Prestatore.
 
Ciao.

 Cedente/Prestatore.
 
Ciao Luigi,
 
eccomi qui ancora a chiedere, come ti sei gestito il progressivo nel nome del file che deve essere univoco ? Praticamente il codice di 5 ct dopo il codice fiscale.


 
 
Nel mio database ho un ID (integer) di ogni documento creato.
 
Per il momento trasformo il mio ID in esadecimale così posso lavorare 
più a lungo in tranquillità.
 
Dovrò cambiarlo perché se mi occorre inviare nuovamente lo stesso 
documento per superare un scarto il nome del file sarebbe uguale ad uno 
già trasmesso e mi verrebbe scartato perché duplicato.
 
Credo che la cosa migliore sia un numeratore progressivo, sempre in 
esadecimale, da utilizzare solo per questo.
 
Ciao.


Io ho utilizzato i 5 caratteri per un numero da 1 a 99 999.
Per me il numero del file XML corrisponde al tag del progressivo invio.
Ad ogni nuova creazione avanzo con il progressivo
anche se si tratta di fatture scartate.
Per lo zip ho un altro numero che comincia con la lettera Z
e va da 1 a 9 999.
Non vedo il numero della fattura nel nome del file
ma se fosse in esadecimale non sarebbe immediatamente
comprensibile lo stesso.
Penso che proverò a fare una ricerca per nome cliente
 e per numero fatture cercando nei tag dei files XML
Oppure legherò il numero del file ai movimenti 
contabili della fattura in modo di vedere il numero
del file nella scheda contabile del cliente.
Non ho ancora deciso...
 
 
 

 comprensibile lo stesso.
 
Forse mi sono espresso male, non inserisco il numero della fattura nel 
nome del file ma l'ID del documento (un numero progressivo che distingue 
ogni documento all'interno del mio database.
 
Ciao.

 ogni documento all'interno del mio database.
 
Ciao Luigi,
dato che il nome del file è composto dal codice fiscale + progressivo pensavo di associare un progressivo ad ogni codice fiscale cioè :
XXXZZZ99X88X111X_00001
AAABBB11X22X222X_00002
XXXZZZ99X88X111X_00002
 
e così via, cosa ne pensi ?
 
Molto valida dell'idea dell'esadecimale.
 
Ciao da Enrico Giudici c/o Anthelios

 
 
Consente di ottenere fino a 1048575 (FFFFF) file diversi.
 
Ciao
 
 

 Consente di ottenere fino a 1048575 (FFFFF) file diversi.
Il progressivo è unico per tutti gli anni a venire...
Per non pormi limiti particolari, utilizzo una procedura di conversione che utilizza non solo i caratteri per l'esadecimale (0..F), ma bensì tutti fino alla zeta (non saprei con che nome definirla).
Cosi la base invece che 16 diventa 10+26=36.
Ho visto anche casi in cui differenziano tra minuscole e maiuscole, aumentando ancora il numero di combinazioni (10+26+26).
 
Bisogna poi considerare che nel caso di notifica di scarto della fattura, questa deve essere inviata con un nuovo progressivo.
Quindi non potete utilizzare l'id del documento come suggerito, serve un progressivo separato.

 
 
Corretto. E' proprio per questo che ho detto che dovrò cambiare la mia 
procedura.
 
Interessante la notazione in base 36+26 ;)
 
Ciao.

 Ho visto anche casi in cui differenziano tra minuscole e maiuscole, aumentando ancora il numero di combinazioni (10+26+26).
 
Se non sono troppo sfacciato e se non ti è costato tanto ( non voglio approfittarmene ) potresti postare la routine per il progressivo ? Magari potrebbe interessare anche a Luigi.
 
NB
Chiaramente sempre se non ti è costato tanto lavoro e hai voglia di condividerlo, non mi va di avere la pappa pronta sul lavoro di altri.
 
Ciao e grazie da Enrico Giudici c/o Anthelios.

> ... potresti postare la routine per il progressivo ? Magari potrebbe interessare anche a Luigi.
 
Prima di tutto mi costruisco un stringa con i caratteri da utilizzare, ordinata in modo opportuno: "0123456789ABCDEFGH..."
 
Se la stringa fosse "0123456789ABCDEF" la funzione potrebbe essere utilizzata per convertire il numero a esadecimale.
 
Mi calcolo la lunghezza di questa stringa e questa sarà la mia base.
 
Al momento evito il problema di numeri negativi con un Abs()
 
Poi seguo lo stesso metodo di calcolo dei numeri esadecimali: 
   div e mod del numero corrente per estrarre i valori che mi servono
 
Compongo quindi il risultato estraendo dalla stringa iniziale il carattere nella posizione corrispondente.
 
function  NumToAlf( n: longint ): string;
var h,b: longint;
    s,t: string;
begin
 { --- Stringa Base --- }
  t := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  b := Length(t);
 
 { --- Valore Assoluto del numero --- }
  n := abs(n);
 
 { --- Ciclo Principale --- }
  s := '';
  while n > 0 do begin
    h := n mod b;
    n := n div b;
 
    s := copy( t,h+1,1 ) + s;
  end;
 
 { --- Risultato --- }
  Result := s;
end;
 
 
In realtà la funzione che uso non è proprio questa... utilizzo un insieme come parametro ulteriore di passaggio per definire la base di calcolo...
 
function  NumToAlf( n: longint; Mode: TSetOfAlfToAlf ): string;
begin
 { --- Stringa Base --- }
  t := StrBaseAlf( Mode );
  ...
end;
 
e compongo la stringa base a con l'insieme che preferisco.
 
 
La chiamata effettiva che utilizzo poi è:
 
     { --- Converte a Stringa --- }
      R.ProgXs := NumToAlf( R.ProgId,[_aaNumber,_aaUpper] );
 
     { --- Aggiustamento Dimensione --- }
      /// aggiungo zeri iniziali fino ad avere lunghezza 5
 
 
per comodità mi sono costruito anche la funzione inversa, anche se al momento non la utilizzo (non si sa mai)
 
function  AlfToNum( s: string; Mode: TSetOfAlfToAlf ): longint;
...
 
Al momento utilizzo ancora longint come variabili di passaggio/servizio, anche se sicuramente sarebbe più corretto utilizzare Int64
 

> Al momento utilizzo ancora longint come variabili di passaggio/servizio, anche se sicuramente sarebbe più corretto utilizzare Int64
 
Ciao Alessandro,
 
grazie 1000, la studio e vediamo cosa salta fuori.
 
Approfitto per porre/porti un paio di domandine :
 
1) mio cognato emette una fattura con delle voci tipo :
   Spese Vive    yyy €
   Competenze     zz €
   Imponibile    www €
   Iva            ii €
   Totale        ttt €
 
nella sezione "Dati di Pagamento" cosa devo mettere ? A parte i riferimenti nel footer della fatture delle varie banche dove è possibile pagare mio cognato non sa come pagherà il cliente, es. contanti, bonifico o quant'altro.
Spero di essere stato chiaro.
 
2) Oltre all'emissione della fattura al punto 1 mio cognato emette anche un PDF con le voci che comportano tale fattura, n movimenti, tipo :
    Fotocopie     xxx €
    Impagniazione xxx €
    Etc................
Secondo voi basta l'XML della fattura di riepilogo o devo inserire anche tutti i movimenti, tenete presente che la fattura ufficiale è quella al punto 1 mentre il documento dei movimenti è solo ad uso del cliente per vedere il dettaglio.
 
Un grazie sentito a tutti.


 
Questo pdf non fa parte della fattura elettronica, pertanto puoi farlo 
inviare a parte al cliente oppure allegarlo alla fattura elettronica.
 
Ciao

 
 
Grazie 1000 Luigi sei stato chiarissimo e gentilissimo.


 inviare a parte al cliente oppure allegarlo alla fattura elettronica.
Anche in questo caso concordo.
Aggiungo che il file pdf (o altri analoghi, xls, zip, ...) potrebbero essere inclusi nella fattura elettronica, fino ad un massimo di 5MB.
Quando poi lo porterete in conservazione (non sto parlando di quella dell'Agenzia delle Entrate che non conosco) il peso potrebbe influire nel costo complessivo.
 
Noi stiamo consigliando di non eseguire questa inclusione.
Suggeriamo invece di concordare tra le parti (cliente/fornitore) se sia il caso di inviare anche il "vecchio" documento fattura pdf per via tradizionale (es. mail).
 
Questo perché la fattura elettronica nasce da quella per la pubblica amministrazione e le informazioni che possono essere inserite sono prettamente amministrative e poco o niente operative.
 
Quindi alcune informazioni a cui eravamo abituati non sono presenti.
Ad esempio non è previsto uno tag per la matricola o per il lotto/scadenza (obbligatori in alcuni settori economici)
Si possono includere in modo descrittivo, ma questo non consente poi di "estrarli" e utilizzarli direttamente per l'import in un gestionale.
 
Questa situazione dovrebbe cambiare con l'avvento della fatturazione elettronica Europea (2020?), che a quanto sembra dovrebbe avere un formato simile se non uguale a quello "Peppol" dove molte di queste informazioni sono presenti

Ciao,
 
eccomi ancora qui, sperando ancora nella comprensione di qualcuno.
 
La stesura dell'XML, grazie all'Excel scaricato dal sito dell'Ade prosegue abbastanza bene, sono arrivato al dettaglio della fattura di mio cognato, avendo varie tipologie mi trovo in difficoltà sui punti indicati qui di seguito :
 
1) mio cognato non ha la ritenuta di acconto per cui chiedo conferma che non devo scrivere il tag <DatiRitenuta> [RT01]: ritenuta pers. fisiche
[RT02]: ritenuta pers. giurid." e tutto quello che ne consegue.
2) Avendo una fattura con le seguenti voci :
SPESE ANTICIPATE (art.15 DPR 633/72) (come da elenco analitico allegato) 54,00
IMPONIBILE: 1.050,00
IVA 22% Su Imponibile 231,00
RITENUTA D'ACCONTO 4% Su Imponibile 42,00
Come devo inserire la ritenuta di acconto ? Per caso come riga di dettaglio ? Ed il 4% ?
3) Avendo una fattura con le seguenti voci :
SPESE ANTICIPATE (art.15 DPR 633/72) (come da elenco analitico allegato) 94,72
IMPONIBILE: 100,00
IVA 22% Su Imponibile 22,00
SPLIT PAYMENT -22,00
Marca su Fattura 2,00
Come devo inserire lo Split Payment ?
 
Un sentito ringraziamento a tutti.


 
 
Lo split payment (scissione pagamenti) va inserito solo per le fatture 
nei confronti della pubblica amministrazione e va inserito nel tag: 
EsigibilitaIVA> dove metterai
- "S" se soggetto a split payment (scissione pagamenti)
- "I" se *non* soggetto a split payment (scissione pagamenti)
 
Ciao.

 - "I" se *non* soggetto a split payment (scissione pagamenti)
 
Senza importo ? Basta solo questo TAG ?
 
Ciao e grazie da Enrico Giudici c/o Anthelios
 

 
 
Questo tag è interno al tag <DatiRiepilogo> dove inserisci il dettaglio 
dell'iva.
 
Ciao.

 - Quale regime fiscale adotta?
 
Mio cognato ha una società di grafica ed ha regime fiscale ordinario senza ritenuta di acconto.
 
Le fatture che emette con la ritenuta di acconto sono ai condomini che hanno tale tipologia, infatti nell'anagrafica dei clienti il condominio XXXX ha il campo ritenuta di acconto impostato a S.
 
Ciao e grazie da Enrico Giudici c/o Anthelios.

 
 
Allora, in questo caso devi mettere tutto il blocco dati 2.1.1.5 
<DatiRitenuta> valorizzando il tag <TipoRitenuta> a
- [RT01]: se tuo cognato è pers. fisica
- [RT02]: se tuo cognato è pers. giuridica
 
 
Ciao.

 - [RT02]: se tuo cognato è pers. giuridica
 
ok, grazie 1000, pensavo che, essendo la ritenuta appartenente al cliente ( condominio ), dovevo mettere una riga di dettaglio con la percentuale e l'importo della ritenuta e non a carico di mio cognato.
 
Grazie ancora.
 
Ciao da Enrico Giudici c/o Anthelios
 
 

 
 
La ritenuta non è a carico di qualcuno, è una somma che viene trattenuta 
dal cliente e versata come acconto in favore del fornitore del servizio.
 
  In pratica a tuo cognato viene trattenuto l'importo corrispondente 
alla ritenuta ma l'anno prossimo si ritrova già versati in conto 
IRPEF/IRES l'importo corrispondente come se avesse già versato un 
acconto sulle tasse.
 
Ciao.

 acconto sulle tasse.
 
ok, chiarissimo come sempre.


Ciao,
 
eccomi di nuovo qui, sto impazzendo per creare la fatidica fattura con la ritenuta di acconto, mio cognato fa questa tipologia di fattura ai condomini.
Ho scaricato il programma per simulare la creazione delle fatture dal sito dell'Ade per cui ufficiale ma non si riesce a farla, quando clicco sui dati di riepilogo mi esce il messaggio "Il totale del documento non è compilato automaticamente" e mi da le seguenti opzioni "Ignora - Correggi - Ingora tutti".
Qui di seguito le parti inserite :
 
[DatiGenerali][DocumentoFattura] metto :
Tipo Ritenuta : RT02 ( persone giuridiche )
Importo : 42,00 €
Aliquota : 4%
Causale Pagamento : A ( non sapendo cosa mettere )
 
[LineeDiDettaglio] metto :
Numero Linea : 1
Descrizione : SPESE ANTICIPATE (art.15 DPR 633/72)
Quantità : 1
Prezzo Unitario : 54,00 €
Aliquota Iva : 0
Natura : N1 ( Escluse Ex Art 15 )
Prezzo Totale : 54,00 € ( calcolato dal programma )
---------------------------------------------------
Numero Linea : 2
Descrizione : IMPONIBILE
Quantità : 1
Prezzo Unitario : 1.050,00 €
Aliquota Iva : 22
Prezzo Totale : 1.050,00 € ( calcolato dal programma )
 
Vado nel riepilogo e mi esce il messaggio sopra indicato con il totale documento calcolato dal sistema di 1.335,00 €
 
Qui di seguito la fattura cartacea di come deve uscire :
 
SPESE ANTICIPATE (art.15 DPR 633/72) :    54,00 €
IMPONIBILE                           : 1.050,00 €
IVA 22% Su Imponibile                :   231,00 €
RITENUTA D'ACCONTO 4% Su Imponibile  :    42,00 €
TOTALE FATTURA                       : 1.293,00 €
 
Mi sarei aspettato che il totale documento calcolato dal sistema fosse 1.293,00 €.
 
Un sentito ringraziamento a tutti per l'eventuale supporto.
 
Ciao da Enrico Giudici c/o Anthelios.

 
 
Sbagliato ;) € 1.293,00 *non* *è* *il* *totale* *della* *fattura*
 
il riepilogo, corretto è il seguente:
 
  SPESE ANTICIPATE (art.15 DPR 633/72) :    54,00 € +
  IMPONIBILE                           : 1.050,00 € +
  IVA 22% Su Imponibile                :   231,00 € +
  TOTALE FATTURA                       : 1.335,00 € =
  RITENUTA D'ACCONTO 4% Su Imponibile  :    42,00 € -
  TOTALE NETTO A PAGARE                : 1.293,00 € =
 
Ciao.

 
 
Credo debba essere "W" ma credo sia più corretto chiedere al suo 
commercialista.
 
Ciao.


Ciao Luigi,
 
intanto ti ringrazio per il supporto e la sopportazione nei miei confronti.
 
Allora se non ho capito male, il totale del documento è 1.335,00 € mentre l'importo da pagare nei pagamenti è 1.293,00 €, ma a questo punto mi sorge una domanda, nei thread precedenti la sezione dei pagamenti mi sembrava di aver capito che si poteva omettere, infatti quasi tutti non la mettevano, ma in questo caso, se non metto i pagamenti il cliente come fa a sapere che il totale della fattura da pagare è di 1.293,00 e non 1.335,00 ?


 commercialista.
 
Grazie 1000.


 
 
L'esposizione della r.a. è una cortesia che si fa al proprio cliente per 
ricordargli che deve trattenerla, non è un obbligo: è lui che *deve* 
sapere che *deve* fare la ritenuta.
 
Infatti, l'indicazione della r.a. nella f.e. non serve per la cortesia 
da fare al cliente ma per informare l'a.d.e. che l'imponibile è soggetto 
a ritenuta di acconto.
 
Il cliente, ricostruendo la f.e. capirà (o dovrebbe) che deve trattenere 
la r.a.
 
E' un po come per la p.a. il totale della fattura non corrisponde 
all'importo da corrispondere perché c'è la scissione dei pagamenti e 
l'iva non verrà pagata al proprio fornitore ma l'importo della fattura e 
la scadenza del pagamento è sempre il totale iva compresa.
 
Ciao.

 la scadenza del pagamento è sempre il totale iva compresa.
 
Più che il cliente a trattenere la r.a. secondo me dovrebbe essere mio cognato a trattenerla e a pagarla visto che il cliente ha l'importo pulito senza r.a.
 
Secondo te è sempre meglio inserire il tag dei pagamenti con l'importo corretto per il cliente ? Così potrebbe essere più chiara per il cliente.
 
Inoltre, sulla fattura mio cognato scrive sempre due riferimenti per l'eventuale bonifico da parte del cliente, esempio :
 
Eventuale Vostro Bonifico presso :
BPM, ITXXXXXXXXXXXXXXXXXXXXXXXXX Swift-Bic: AAAAAAAA
BPS, ITYYYYYYYYYYYYYYYYYYYYYYYYY Swift-Bic: BBBBBBBB
 
Secondo te potrebbe essere opportuno inserire nel tag dei pagamenti i 2 riferimenti qui sopra con sempre il totale da pagare ?
 
Ciao e grazie da Enrico Giudici c/o Anthelios.
 

 
 
vedi sopra. Purtroppo finché non ci sono i passaggi dal sdi non avremo 
certezze.
 
Giusto ieri ho chiamato il numero verde per l'assistenza del mef per la 
f.e. per chiarire l'imputazione dei campi Denominazione, Cognome e Nome 
e mi è stato detto che solo dopo che il sdi avrà, eventualmente, 
rilevato degli errori sulla base di questi errori potranno rispondermi 
ma "consulenza" non ne fanno :(
 
Ciao.

 certezze.
 
Ciao Luigi,
 
ho fatto delle prove di convalida tramite il sito dell'ADE e sembra tutto a posto.
 
Ciao e grazie ancora da Enrico Giudici c/o Anthelios.

 viene accettato dallo sdi senza problemi.
 
Ciao Luigi,
 
finalmente dopo varie peripezie e grazie a te e a tutti i componenti del ng sono riuscito a creare il "famigerato" XML di una fattura semplice di mio cognato.
 
Come te mi sono trovato molto bene ad utilizzare il componente TJvSimpleXML, c'e' però una cosa che non so come risolvere e ti chiedo come hai fatto tu.
 
Mi spiego, il componente in questione mi crea in automatico come prima riga questo :
 
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
 
Se cerco di validare l'XML sul sito dell'Ade mi da l'errore 200 con la seguente descrizione :
 
File non conforme al formato (nella descrizione del messaggio Ã¨ riportata lâ¬"indicazione puntuale della non conformitÃ ) - Errore nella parse del file (idSdi 6366126 ): The markup in the document following the root element must be well-formed.
 
Se invece inserisco la seguente riga dopo la mia :
 
<p:FatturaElettronica versione="FPR12" xmlns:p="
http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2
" xmlns:ns2="
http://www.w3.org/2000/09/xmldsig#
">
 
e come ultima riga questa :
 
</p:FatturaElettronica>
 
la convalida va a buon fine.
 
A questo punto ti chiederei la cortesia se puoi dirmi come faccio ad inserire le suddette righe ? Credo solo la prima, la seconda dovrebbe venire in automatico.


 
 
devi utilizzare la proprietà "Properties" del TjvSimpleXMLElem, questo è 
il mio codice:
...
var
   xmlDoc: TJvSimpleXML;
   xmlNodo: TJvSimpleXMLElem;
begin
   xmlNodo := xmlDoc.Root.Items.Add('p:FatturaElettronica');
   xmlNodo.Properties.Add('versione', FormatoTrasmissione);
   xmlNodo.Properties.Add('xmlns:p', 
'
http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2'
);
...
 
Ciao.
 

 '
http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2'
);
 
Ciao Luigi,
 
ti ringrazio tantissimo, stasera ci riprovo, speriamo bene.
 
Ciao da Enrico Giudici c/o Anthelios

 ...
 
Ciao Luigi,
 
scusami tanto ma nonostante il tuo suggerimento non riesco a far scrivere correttamente le righe, qui di seguito il mio codice :
 
Doc := TJvSimpleXML.Create(Self);
Nodo := Doc.Root.Items.Add('p:FatturaElettronica');
Nodo.Properties.Add('versione', 'FPR12');
Nodo.Properties.Add('xmlns:p','
http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2'
);
 
mi crea :
 
<?xml version="1.0" encoding="Windows-1252" standalone="no"?>
  <p:FatturaElettronica versione="FPR12" xmlns:p="
http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2
"/>
 
però non mi crea l'ultima riga e cioè :
 
</p:FatturaElettronica>
 
Ho notato che le righe corrette da inserire sono :
 
<p:FatturaElettronica versione="FPR12" xmlns:p="
http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2
">
 
come seconda riga
 
</p:FatturaElettronica>
 
come ultima riga.
 
Se guardi bene la differenza della seconda riga tra quella errata e quella corretta sta nel penultimo carattere, la /


 
 
Non so dirti il perché, sopratutto per quel "/" alla fine della seconda 
riga :(
 
Che versione della libreria Jedi hai installato? Io ho la versione 3.4.9 
con Delphi 2010 pro, che sia questo il problema?
 
Ciao.

 con Delphi 2010 pro, che sia questo il problema?
 
Stasera verifico, ma non credo di avere l'ultima versione della libreria, la installai tanto tempo fa, come da tanto tempo utilizzo Delphi 7.
 
Intanto un sentito ringraziamento da parte mia.
 
Ciao da Enrico Giudici c/o Anthelios.
 

 
Non penso dipenda da Delphi 7 ma, forse, dalla versione della libreria.
 
Ciao.

> Non penso dipenda da Delphi 7 ma, forse, dalla versione della libreria.
 
Ciao Luigi,
 
non dipende ne da Delphi 7 ne dalla versione della libreria, dipende solamente dal fatto che l'unico neurone che mi è rimasto è andato in ferie ( beato lui ).
 
Ho risolto il problema, era dovuto alla gerarchia di come creavo i nodi, praticamente dopo aver inserito il tuo codice dovevo collegare tutti i nodi sottostanti a quello.
 
Ciao e grazie per l'infinita pazienza che hai nei miei confronti.
 
Enrico Giudici c/o Anthelios
 

Ciao a tutti,
 
stamattina mi sono alzato con un dubbio atroce, ma se una fattura mi viene scartata per qualche dato non corretto la fattura con il dato corretto da re-inviare avrà lo stesso progressivo o uno nuovo ?


 
Meglio con lo stesso progressivo ma nuovo nome del file.
 
Ciao.
 

 Meglio con lo stesso progressivo ma nuovo nome del file.
 
Ciao Luigi,
 
per cui :
 
ITXXXZZZ99A99W999Y_00001.xml ( fattura 2018-01 scartata )
ITXXXZZZ99A99W999Y_00002.xml ( fattura 2018-01 corretta )
 
Se è così devo rivedere il progressivo nel nome del file, adesso mettevo l'anno + numero della fattura, es. 18001
 
Ciao e grazie da Enrico Giudici c/o Anthelios.
 

 
 
E' così, c'è un controllo nel nome del file e non sono accettati 
duplicati neanche se si tratta di ritrasmettere una fattura scartata.
 
Ciao.
 

 Grazie. :-)
 


in uses aggiungi
  MSXML, xmldom, XMLIntf, XMLDoc
 
metti un bottone nella forma e al click aggiungi
 
var
   Modifica: TStringList;
   nuovofile: string;
   ilfile, II: string;
   ilmemo: TMemo;
   xmlfattura, xslStyle : IXMLDOMDocument;
begin
  if  Fatture.IsEmpty then
    exit;
  if scarica.Active then
    scarica.Close;
// cerco la fattura xml e il nome della fattura dal database
  scarica.ParamByName('azienda').asstring := Fatture.FieldByName('azienda').AsString;
  scarica.ParamByName('seriale').AsInteger := Fatture.FieldByName('SERIALE').AsInteger;
  scarica.ParamByName('progressivo').AsInteger := Fatture.FieldByName('PROGRESSIVO').AsInteger;
  scarica.Open;
  nuovofile := scarica.FieldByName('nomefile').asstring;
  // assegno la path
  nuovofile := FMajorDomo.PathMajorDomo + 'xsd\' + nuovofile;
  scarica.FieldByName('FXML').SaveToFile(nuovofile);
  // uso il foglio in stile
  xmlfattura := CoDOMDocument.Create;
  xslStyle := CoDOMDocument.Create;
  xmlfattura.load(nuovofile);
  xslStyle.load(FmajorDomo.PathMajorDomo + 'xsd\FoglioStileTabellare.xsl');  //foglio in stile da usare
  try
    Ilmemo := TMemo.Create(nil);
    ilmemo.Text := xmlfattura.transformNode(xslStyle); // la pagina html che mi necessita
    ilmemo.Lines.SaveToFile(FmajorDomo.PathMajorDomo  + 'msxml.htm');
  finally
    ilmemo.Free;
  end;
  try
    Application.CreateForm(TVisualizza, Visualizza);
    Visualizza.ft := FmajorDomo.PathMajorDomo  + 'msxml.htm'; // ft e una variabile public mentre la form ha un webbrowser con una sola istruzione in formshow   ovvero WebBrowser1.Navigate(ft);
 
    Visualizza.ShowModal;
  finally
    DeleteFile(nuovofile);
    Visualizza.free;
  end;
 
 
 salvi la fatturaelettronica.xml in html utilizzanto il foglio in stile

 wrote:
 
Ti ringrazio, appena posso ci provo.
Eugenio. -)