Fatturazione elettronica B2B: programmeli - xml2pdf

di il
51 risposte

Fatturazione elettronica B2B: programmeli - xml2pdf

Programma per applicazione foglio di stile senza supporto del browser
più tante belel cose

xml2pdf 0.9l
https://ufile.io/93tx

essenzialmente "se ne frega" dell'XSL presente, o meno, nel file, applica il suo.
La versione 0.2 può essere usata a riga di comando con esattamente 3 parametri

xml2pdf.exe "z:\ce\ilbelfile.xml" "s:\ilmiofogliodistile.xsl" "c:\temp\dovevoglioilpdf.pdf"

La versione 0.3 può "iniettare" il PDF dentro l'XML.
In questo demo viene creato un nuovo file (nel caso va rinominato).
Quando OK ovviamente si può sovrascrivere il file iniziale

La versione 0.4, durante la conversione a riga di comando, è "silente"

La versione 0.5 consente di fare l'iniezione a riga di comando, con 4 nomi file
nomexml nomexsl nomepdf nomexmliniettato

La versione 0.6 toglie le firme p7m usando openssl.exe (anche a più file).
"Spacchetta" una PEC EML di una fattura elettronica

La versione 0.7 contiene l'inizio della decodifica fattura, per importazione in db mysql, con creazione di report
(... stile assoinvoice, ma più bello )
Sta insieme davvero con lo "sputo", ho dovuto simulare un server mysql inesistente, e non mi sono impegnato più di tanto, lo scopo è migliorare il decodificatore, non il resto

Versione 0.8 inizia ad avere una vaga interfaccia a riga di comando.
Per ora

Codice: Seleziona tutto
1 filein.xml(.p7m) fileout.pdf
converte filein.xml eventualmente .p7m in fileout.pdf, applicando XSL ade

1 filein.xml(.p7m) template.xsl fileout.pdf
converte filein in fileout.pdf, applicando un XSL fornito

2 filein.xml(.p7m) template.xsl fileout.pdf scritto.xml
converte filein.xml eventualmente .p7m in fileout.pdf, applicando XSL fornito
inietta in scritto.xml il fileout.pdf

3 filein.eml cartellaoutput
spacchetta EML PEC in cartella output, con file rapporto.txt.
per ora apre la cartella (per comodità)


versione 0.9
innanzitutto c'è una specie di help

Codice: Seleziona tutto
xml2pdf.exe ?


Poi questi sono i comandi correnti.
E sì, rimangono i numerini

versione 0.9a

A riga di comando il 5 (conversione con report).
Inoltre è possibile il drag and drop di
- p7m (li toglie)
- eml (spacchetta PEC, ancora da rifinire)
- xml (converte in PDF col report)

Codice: Seleziona tutto
Xml2pdf.exe 1 c:\filediprova.xml z:\convertito.pdf
Converte un file .xml (o .xml.p7m) in PDF applicando XSL dell’agenzia entrate


Xml2pdf.exe 1 c:\filediprova.xml “c:\lamiafatturastraordinaria.xsl” z:\convertito.pdf
Converte un file .xml (o .xml.p7m) in PDF applicando XSL indicato dall’utente


Xml2pdf.exe 2 c:\filettone.xml.p7m f:\zarc\ihsv\xml2pdf\1.xsl z:\inject.pdf z:\inettato.xml
Converte un file .xml (o .xml.p7m) in PDF applicando XSL indicato dall’utente e inietta nel file xml (ultimo parametro) il PDF codificato come attachment


Xml2pdf.exe 3 c:\lamiapec.eml z:\spacchettata
Spacchetta una PEC EML all’interno di una cartella, convertendo in PDF con XSL e report, mette eventuali allegati (attachment) anche zippati, più crea rapporto.txt con dentro i dati (può essere parsato da terzi)


Xml2pdf.exe 4 c:\*.p7m z:\toltefirme
Toglie le firme digitali CAdES (p7m) da uno o più file in cartella specificata


Xml2pdf.exe 5 c:\prova.xml z:\convertito.pdf
Converte un xml (o .xml.p7m) in PDF con applicazione di un report


Xml2pdf.exe 6
Attiva l’editor del report


Xml2pdf.exe 7 da fare (a breve)
Carica in un db mysql il contenuto di un xml (.p7m)

Trascinamento (drag and drop) nella finestra

p7m => estrazione file contenuti. Se esiste già un file senza estensione p7m non sovrascrive
eml => attiva spacchettamento PEC
xml => converte in PDF con report




versione 0.9c
Consente di iniettare file qualsiasi negli XML.
Attenzione: da GUI sovrascrive il file iniziale senza pietà (dovrei sistemare. ma anche no)
Da riga di comando invece salva in file diverso

Firma massiva con token USB senza chiedere il PIN.
Necessita licenza tfirmo (0.2)

Codice: Seleziona tutto
Xml2pdf.exe 7 c:\filettone.xml.p7m c:\pippo\filedainiettare.zip z:\inettato.xml
Inietta nel file .xml (o .xml.p7m) un file e scrive un xml

Xml2pdf.exe 8 12345678 “COMMON NAME” z:\*.xml
Applica firma CAdES (p7m) a tutti i file z:\*.xml, col PIN indicato (12345678 nell’esempio) col
certificato COMMON NAME”. Tipicamente è COGNOME NOME. Testato con token USB Aruba


versione 0.9
Inizio porting riconoscimento "intelligente" (per modo di dire) dei file EML.
In sostanza discrimina tra
- fatture passive (PEC ricevute)
- fatture attive (PEC inviata)
- fatture attive, ricevuta di accettazione
- fatture attive, ricevuta di consegna
- fatture attive, ricevuta di mancata consegna PEC
- fatture attive, notifiche di scarto (da approfondire)

Tolta la funzionalità "matrioska" (per ora), cioè l'interpretazione dei messaggi inoltrati (già abbastanza complicato così).

Per il riconoscimento dei propri messaggi nell'oggetto va indicato qualcosa fatto così
FEL_INVIO_|ITCDEFGH12B46H234Z_00003|

---
In sostanza se invio una fattura con quell'oggetto, poi caricando gli EML di qualsiasi tipo (almeno una volta terminato) il programma "interpreta" i vari casi, creando un file di testo con dentro il risultato.

Ovviamente il passo successivo sarà caricare gli EML da POP3 o IMAP (o da trascinamento thunderbird), invece che da file, per terminare la gestione dei messaggi.

---
Versione 0.9e.

Comando 9, cerca una partita IVA (IT) e scrive sul file pivaz.txt il risultato

Versione 0.9f
Ri-portato da programma.
Probabilmente non funzionerà più nulla, ma è normale

Versione 0.9g
Aggiunto mini-db grosso modo portabile (forse),
così da poter portare più funzioni man mano

Versione 0.9k
Database più o meno SQL anche senza mysql
Decifrazione codici QR dell'agenzia entrate, anche su PDF
Portate più porzioni programma.
Iniezione 2.1.2.2

tolti (dipendenze)
decodifica sconti
buona parte decodifica PEC e ricevute

Versione 0.9l
Fonde gli eventuali PDF allegati-iniettati nel report.
In sostanza se si lavora un xml(.p7m), esso viene convertito in 3 modalità
1) XSL ministeriale
2) XSL assosoftware
3) Mio report personalizzabile PDF, cui eventuali allegati vengono accodati.
Se sono ZIP=> li estrae e piglia i vari PDF

51 Risposte

  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Sarei lieto se ci fossero dei feedback del tipo

    1) test con indicazione errori
    2) modifiche da apportare

    L'ambiente di test (che poi significa si apre=> va più che bene) è Windows 10 64bit, scheda di rete disconnessa.
    Dovrebbe funzionare su qualsiasi cosa da XP in su (ovviamente non ci ho minimamente guardato)

    Allo stato manca

    * la decodifica degli sconti (davvero troppo complicata, non ho materiale sufficiente)
    * questione dei bolli (non è difficile, ma son pigro)
    * db autonomo con indice sui campi join (non così importante)
    * gestione dei report (ma è voluto, altrimenti ci sarebbe upgrade dal mio sito)
    * command line per riconoscimento QR AdE (c'è solo dalla GUI)
    * cambiamenti basso livello nell'XML (trasmittente, data, numero). Ovviamente c'è l'unico pagato da un cliente, l'ordine d'acquisto
    * rimettere dentro il decodificatore avanzato PEC [c'è, ma vecchia versione]
    * rimettere dentro il decodificatore avanzato notifiche AdE [c'è, ma vecchia versione]
    * futuro remoto: mettere dentro porzione per lettura PEC sia POP che IMAP (parecchie dipendenze)
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Complimenti per l'ottimo lavoro.
    Come da tua richiesta, segnalo 2 anomalie riscontrate già nella 9k:

    1) File xml.p7m il cui cessionario (CLIENTE) è COGNOME e NOME e non DENOMINAZIONE. Il programma lo elabora correttamente, il modello ministeriale e quello assosoftware vengono compilati bene, MA nel tuo archivio e nel tuo report manca completamente il campo CLIENTE o DITTA, sia nella griglia che nella TAB Cliente.

    2) al foglio di stile di assosoftware, ad ogni riquadro dopo l'intestazione, manca il rigo di chiusura, all'unico riquadro completo, quello di IVA, totale imponibile e totale imposta, i valori sono allineati in basso rispetto alla cella e la virgola dei decimali si sovrappone al rigo di chiusura della tabella.
    Assoinvoice invece fa un "allineamento verticale centrato", se ho reso l'idea.

    Ti faccio ancora complimenti per la valanga di contributi che hai fornito a tutta la nostra comunità.
    Buon Lavoro

    webgaldom

    +m2+ ha scritto:


    Sarei lieto se ci fossero dei feedback del tipo

    1) test con indicazione errori
    2) modifiche da apportare
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    (1) ho un campo decodificato, ci devo guardare domani (ha una logica per capire se è una fattura attiva o passiva che probabilmente va migliorata. Per inciso il mio gestionalino è multiazienda quindi non è banale come potrebbe sembrare)

    (2) francamente per me xsl è inutile, è quindi in fondo alle priorità (lo uso per confrontare rapidamente col report per essere sicuro non mi scappi qualche campo importante). Non prometto nulla

    Grazie per le segnalazioni sono utilissime
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Grazie +m2+,
    segnalo anch'io. Da GUI, "import-report XML", dopo aver scelto il file fattura, mi compare il seguente errore: "'151,00' is not a valid floating point value.".
    Il numero 151.00 si trova nel campo <ImponibileImporto> della FEL (per qualche motivo il programma sostituisce il separatore decimale "." con ",").
    errore.png
    errore.png

    Nell'XML la cifra indicata ha il punto come separatore decimale. E anche nelle impostazioni di sistema il separatore è il punto.

    impo.png
    impo.png

    Grazie ancora per questo strumento molto utile.
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    La risposta è semplice : all'interno c'è un convertitore che mette la, invece del punto per consentire di usare le istruzioni SQL di sum.
    Lo fa con una brutalità mostruosa: se il campo è lungo 15 (nella doc.sono tutti così tranne alcuni da 21)
    La segnalazione è strana perché la uso spesso, comunque è da sistemare.
    Suppongo sia dovuto al transconvertitore da mysql ad ABS (in pratica non capisce bene come è fatto il campo, d'altronde il programmello è fatto per mysql ed ho dovuto fare un copiatore di strutture casareccio)

    dopo aver fatto giocare il gatto con l'acqua più tardi mi dedico al fixing (sempre dopo beautiful)

    Se mi passa la pigrizia potrei anche convertire le date nel formato italiano.

    Ovviamente gli idioti sogei potevano codificare il tipo di campo, ma era troppo intelligente come scelta per semplificare la vita
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Qualche suggerimento
    veri aiuti possono essere

    XML con sconti multipli (che non ho messo del tutto)
    xml con bolli (me ne hanno promesso uno ma ancora non visto)
    Notifica ade di scarto per mancata consegna (finora non capitato, ma prima o poi succederà)
    nota di credito (adesso mette sempre fattura, ma è facile discriminata. Il punto sono gli importo eventualmente negativi)
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    +m2+ ha scritto:


    La risposta è semplice : all'interno c'è un convertitore che mette la, invece del punto per consentire di usare le istruzioni SQL di sum.
    Lo fa con una brutalità mostruosa: se il campo è lungo 15 (nella doc.sono tutti così tranne alcuni da 21)
    La segnalazione è strana perché la uso spesso, comunque è da sistemare.
    Suppongo sia dovuto al transconvertitore da mysql ad ABS (in pratica non capisce bene come è fatto il campo, d'altronde il programmello è fatto per mysql ed ho dovuto fare un copiatore di strutture casareccio)
    ...
    SQL sum probabilmente usa il separatore decimale definito nelle impostazioni di windows. Nel mio caso il punto.
    A controprova, se cambio, nelle impostazioni di windows il separatore decimale "." e metto la "," allora la procedura importa senza errori (anche se in realtà viene catalogata come fattura passiva, mentre in realtà è attiva - ma questo è un problema differente...).

    Grazie
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Si hai ragione come accennato brutalmente fa una sostituzione,.
    metterò sostituzione. con separatore

    Per attiva passiva non c'è un vero modo per capirlo, servono i poli (in sostanza anagrafica delle aziende) con rispettiva piva.
    se guardi a sinistra il filtro c'è, ma è vuoto per questo motivo (non ci sono anagrafiche)
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    +m2+ ha scritto:


    Qualche suggerimento
    veri aiuti possono essere

    XML con sconti multipli (che non ho messo del tutto)
    xml con bolli (me ne hanno promesso uno ma ancora non visto)
    Notifica ade di scarto per mancata consegna (finora non capitato, ma prima o poi succederà)
    nota di credito (adesso mette sempre fattura, ma è facile discriminata. Il punto sono gli importo eventualmente negativi)
    Ciao.
    Ti ho mandato un MP con il link per scaricare alcuni files.
    Fammi sapere se ti sono stati d'aiuto.
    Ettore.
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Mi sto dedicando a qualche aggiornamento

    webgaldom ha scritto:


    1) File xml.p7m il cui cessionario (CLIENTE) è COGNOME e NOME e non DENOMINAZIONE. Il programma lo elabora correttamente, il modello ministeriale e quello assosoftware vengono compilati bene, MA nel tuo archivio e nel tuo report manca completamente il campo CLIENTE o DITTA, sia nella griglia che nella TAB Cliente.
    Se qualcuno mi manda un file del genere, vista la mia pigrizia, posso sistemarlo
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Qui metto le varie modifiche

    * Cambia da solo il separatore decimale se per qualche motivo è settato a .
    * Comando 10 per estrarre gli allegati
    * Comando 11 per riconoscimento QR ADE
    * Inizio integrazione parsade (work in progress): scaricamento & decodifica da imap

    A breve
    * Come tposto (spedizione PEC)

    Opzionali
    * Esportazione su mdb dell'XML parsato. E' un po' una rottura di @@ lavorare con archivi microsoft,
    comunque con i vecchi formati e Jet 4.0 dovrebbe richiedere un paio d'ore.
    Dramma principale generatore comando SQL stile microsoft per creare tabelle.
    A qualcuno può interessare questa funzione?
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Nel mentre...
    https://ufile.io/1hlo
    sha1: f74412a8c8b8773e6015ebc078096bdbe4b55986

    m, funzioni 10 e 11
    
    Xml2pdf.exe 10 c:\pippo\prova.xml c:\cartellona
    Estrae l’allegato da un xml (o .xml.p7m) e lo scrive nella cartella specificata.
    Inoltre scrive nel file allegatoz.txt il nome completo del file allegato. Questo poiché non è
    scontato che il file sia necessariamente un PDF: capita di trovare anche degli ZIP.
    
    Xml2pdf.exe 11 c:\ilmiobelqrcode.pdf
    Riconosce i dati presenti nei QR Agenzia Entrate e li scrive nel file qradez.txt
    Funziona (+ o -) con JPG, PNG e soprattutto PDF. In quest’ultimo caso possono esserci problemi di
    rasterizzazione, a seconda risoluzione iniziale, ma sono i casi della vita
    
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Grazie +m2+ per l'ottimo lavoro che stai facendo,
    trovo molto leggibile il pdf ottenuto con fast report però contiene una svista, calcola l'iva sempre al 22% anche nei casi in cui il valore è diverso e quindi il totale iva esposto è sbagliato e di conseguenza anche il totale fattura.
    Esiste qualche problema anche con il pdf ottenuto con il foglio di stile Assosoftware per quanto riguarda in particolare la prima cornice che si sovrappone alle altre.
    Se tu potessi risolvere soprattutto il problema del fast report te ne sarei grato come per tutto il resto
    Grazie !!!!
  • Re: Fatturazione elettronica B2B: programmeli - xml2pdf

    Per (1) non ci sono problemi.
    l'ideale è avere il file in oggetto.
    non mi risulta infatti ci sia dentro un 22 hardcoded.
    va detto che alcuni campi sono ricalcolati, non presi da xml.

    Versione breve: mandate file xml con restituzione errata che correggo
Devi accedere o registrarti per scrivere nel forum
51 risposte