FattView/fattview.py


Home Back

#!/usr/bin/env python3
from efatt import *
from fpdf.fpdf import FPDF
from utils import *
import sys, subprocess,os,shutil




def openPDF():
        if sys.platform == 'linux':
            subprocess.call(["xdg-open", pdfFile])
        elif sys.platform == 'win32':
            try:
                subprocess.call(["sumatra.exe", pdfFile])
            except :
                os.startfile(pdfFile)






if __name__== '__main__':

    fatturaFileName=''

    if (getFileExt(sys.argv[1])=="p7m"):
        fatturaFileName=getXMLfromP7m(sys.argv[1])
        p7mToXmlDir=os.path.dirname(sys.argv[1])+os.sep+"p7mToXml"
        try:
            os.mkdir(p7mToXmlDir)
        except:
            print("Cartella xml esistente")

        shutil.copyfile(fatturaFileName, p7mToXmlDir+os.sep+os.path.basename(sys.argv[1])+".xml")

        print("File p7m: %s " % fatturaFileName)
    elif (getFileExt(sys.argv[1])=="xml"):
        fatturaFileName= sys.argv[1]




    try:
        myfatt=fatt(fatturaFileName)
    except IndexError:
        myfatt=fatt("esempio_privato_piu_linee_IT01234567890_FPR02.xml")

    fattHeader = {}
    fattHeader['IdPaeseTrasmittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdPaese')
    fattHeader['IdCodiceTrasmittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/DatiTrasmissione/IdTrasmittente/IdCodice')
    fattHeader['ProgressivoInvio']=myfatt.getTextFromNode('./FatturaElettronicaHeader/DatiTrasmissione/ProgressivoInvio')
    fattHeader['FormatoTrasmissione']=myfatt.getTextFromNode('./FatturaElettronicaHeader/DatiTrasmissione/FormatoTrasmissione')
    fattHeader['CodiceDestinatario']=myfatt.getTextFromNode('./FatturaElettronicaHeader/DatiTrasmissione/CodiceDestinatario')
    fattHeader['PECDestinatario']=myfatt.getTextFromNode('./FatturaElettronicaHeader/DatiTrasmissione/PECDestinatario')

    #CedentePrestatore
    fattHeader['IdPaeseCedentePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/IdFiscaleIVA/IdPaese')
    fattHeader['IdCodiceCedentePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/IdFiscaleIVA/IdCodice')
    fattHeader['DenominazioneCedentePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/Anagrafica/Denominazione')
    fattHeader['RegimeFiscaleCedentePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/DatiAnagrafici/RegimeFiscale')
    fattHeader['IndirizzoSedePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/Sede/Indirizzo')
    fattHeader['CAPSedePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/Sede/CAP')
    fattHeader['ComuneSedePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/Sede/Comune')
    fattHeader['ProvinciaSedePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/Sede/Provincia')
    fattHeader['NazioneSedePrestatore']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CedentePrestatore/Sede/Nazione')

    # Cessionario Committente
    fattHeader['CodiceFiscaleCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/CodiceFiscale')
    fattHeader['DenominazioneCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/Anagrafica/Denominazione')
    fattHeader['DenominazioneCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/DatiAnagrafici/Anagrafica/Denominazione')
    fattHeader['IndirizzoSedeCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/Sede/Indirizzo')
    fattHeader['CAPSedeCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/Sede/CAP')
    fattHeader['ComuneSedeCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/Sede/Comune')
    fattHeader['ProvinciaSedeCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/Sede/Provincia')
    fattHeader['NazioneSedeCessionarioCommittente']=myfatt.getTextFromNode('./FatturaElettronicaHeader/CessionarioCommittente/Sede/Nazione')

    # Body fattura elettronica
    fattBody = {}
    fattBody['TipoDocumento']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/TipoDocumento')
    fattBody['Divisa']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Divisa')
    fattBody['Data']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Data')
    fattBody['Numero']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Numero')
    fattBody['Causale0']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Causale',0)
    fattBody['Causale1']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiGeneraliDocumento/Causale',1)
    if fattBody['Causale1']=='VUOTO': fattBody['Causale1']=''

    # DatiOrdineAcquisto

    #Quanti sono
    count = myfatt.countChildElementByName('./FatturaElettronicaBody/DatiGenerali/DatiOrdineAcquisto/RiferimentoNumeroLinea')

    #I dati ordine acquisto saranno contenuti in questa lista nella forma ['1|§|66685|§|1', '2|§|87456893|§|3', '3|§|6540845|§|6'  etc...]
    datiOrdineAcquisto=[]

    for i in range(count):
        RiferimentoNumeroLinea = myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiOrdineAcquisto/RiferimentoNumeroLinea',i)
        IdDocumento = myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiOrdineAcquisto/IdDocumento',i)
        NumItem = myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiOrdineAcquisto/NumItem',i)

        datiOrdineAcquisto.append({
                                    'RiferimentoNumeroLinea':RiferimentoNumeroLinea,
                                    'IdDocumento': IdDocumento,
                                    'NumItem': NumItem
                                    })



    #DatiTrasporto
    fattBody['DatiAnagraficiVettoreIdPaese']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiTrasporto/DatiAnagraficiVettore/IdFiscaleIVA/IdPaese')
    fattBody['DatiAnagraficiVettoreIdCodice']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiTrasporto/DatiAnagraficiVettore/IdFiscaleIVA/IdCodice')
    fattBody['DatiAnagraficiVettoreDenominazione']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiTrasporto/DatiAnagraficiVettore/Anagrafica/Denominazione')
    fattBody['DataOraConsegnaVettore']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiGenerali/DatiTrasporto/DataOraConsegna')


    #Dati linee fattura
    linee=[]
    count = myfatt.countChildElementByName('./FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/NumeroLinea')
    for i in range(count):
        NumeroLinea=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/NumeroLinea',i)
        Descrizione=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/Descrizione',i)
        Quantita=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/Quantita',i)
        PrezzoUnitario=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/PrezzoUnitario',i)
        PrezzoTotale=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/PrezzoTotale',i)
        AliquotaIVA=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DettaglioLinee/AliquotaIVA',i)
        linee.append({
                        'NumeroLinea':NumeroLinea,
                        'Descrizione':Descrizione,
                        'Quantita':Quantita,
                        'PrezzoUnitario':PrezzoUnitario,
                        'PrezzoTotale':PrezzoTotale,
                        'AliquotaIVA':AliquotaIVA
                        })


    #Riepilogo
    fattBody['DatiRiepilogoAliquotaIVA']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo/AliquotaIVA')
    fattBody['DatiRiepilogoImponibileImporto']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo/ImponibileImporto')
    fattBody['DatiRiepilogoImposta']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo/Imposta')
    fattBody['DatiRiepilogoEsigibilitaIVA']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiBeniServizi/DatiRiepilogo/EsigibilitaIVA')

    #Dati Pagamento
    fattBody['DatiPagamentoCondizioniPagamento']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiPagamento/CondizioniPagamento')
    fattBody['DatiPagamentoModalitaPagamento']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/ModalitaPagamento')
    fattBody['DatiPagamentoDataScadenzaPagamento']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/DataScadenzaPagamento')
    fattBody['DatiPagamentoImportoPagamento']=myfatt.getTextFromNode('./FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/ImportoPagamento')


    #Stampo dati su stdout (debug)
    #print(fattHeader)
    print(fattBody)
    #print(datiOrdineAcquisto)
    #print(linee)




    #Scrittura del PDF
    from fpdf.fpdf import FPDF


    try:
        pdfFile=getTempDir()+os.path.basename(sys.argv[1])+'.pdf'
    except:
        pdfFile=getTempDir()+'fattview.pdf'

    class PDF(FPDF):
        def header(self):
            # Arial bold 15
            self.set_font('Arial', '', 8)
            # Move to the right
            self.cell(80)
            # Title
            self.cell(50, 9, 'Fattura elettronica', 0, 0, 'C')
            # Line break
            self.ln(20)

        # Page footer
        def footer(self):
            # Position at 1.5 cm from bottom
            self.set_y(-15)
            # Arial italic 8
            self.set_font('Arial', 'I', 8)
            # Page number
            self.cell(0, 10, 'Pagina ' + str(self.page_no()) + '/{nb}', 0, 0, 'C')


    ###
    pdf = PDF('P', 'mm', 'A4')
    pdf.alias_nb_pages()
    pdf.add_page()

    #Dati relativi alla trasmissione
    pdf.set_font('Arial', 'B', 13)
    pdf.multi_cell(200,14, "Dati relativi alla trasmissione", 0, 'J', False)

    #Header fattura
    pdf.set_font('Arial', '', 12)
    pdf.cell(70, 10, "Identificativo del trasmittente: ", 1, 0, 'C')
    pdf.cell(110, 10, fattHeader['IdPaeseTrasmittente']+fattHeader['IdCodiceTrasmittente'], 1, 1, 'C')

    pdf.cell(70, 10, "Progressivo di invio: ", 1, 0, 'C')
    pdf.cell(110, 10, fattHeader['ProgressivoInvio'], 1, 1, 'C')

    pdf.cell(70, 10, "Formato Trasmissione: ", 1, 0, 'C')
    pdf.cell(110, 10, fattHeader['FormatoTrasmissione'], 1, 1, 'C')

    pdf.cell(70, 10, "Codice identificativo destinatario: ", 1, 0, 'C')
    pdf.cell(110, 10,fattHeader['CodiceDestinatario'], 1, 1, 'C')

    pdf.cell(70, 10, "PEC destinatario: ", 1, 0, 'C')
    pdf.set_font('Arial', '', 9)
    pdf.cell(110, 10,fattHeader['PECDestinatario'], 1, 1, 'C')
    pdf.set_font('Arial', '', 12)

    # Dati del cedente / prestatore
    pdf.multi_cell(200,8, '', 0, 'J', False)
    pdf.set_font('Arial', 'B', 13)
    pdf.multi_cell(200,14, "Dati del cedente / prestatore", 0, 'J', False)
    pdf.set_font('Arial', 'I', 13)
    pdf.multi_cell(200,14, "Dati Anagrafici", 0, 'J', False)

    pdf.set_font('Arial', '', 12)
    pdf.cell(70, 10, "Identificativo fiscale ai fini IVA: ", 1, 0, 'C')
    pdf.cell(110, 10,fattHeader['IdPaeseCedentePrestatore']+fattHeader['IdCodiceCedentePrestatore'], 1, 1, 'C')

    pdf.cell(70, 10, "Denominazione: ", 1, 0, 'C')
    pdf.set_font('Arial', '', 9)
    pdf.cell(110, 10,fattHeader['DenominazioneCedentePrestatore'], 1, 1, 'C')
    pdf.set_font('Arial', '', 12)
    pdf.cell(70, 10, "Regime Fiscale: ", 1, 0, 'C')
    pdf.cell(110, 10,fattHeader['RegimeFiscaleCedentePrestatore'], 1, 1, 'C')

    pdf.set_font('Arial', 'I', 13)
    pdf.multi_cell(200,14, "Dati della sede", 0, 'J', False)

    pdf.set_font('Arial', '', 12)
    pdf.cell(30, 10, "Indirizzo: ", 1, 0, 'C')
    pdf.set_font('Arial', '', 9)
    pdf.cell(150, 10,fattHeader['IndirizzoSedePrestatore'], 1, 1, 'C')
    pdf.set_font('Arial', '', 12)

    pdf.cell(30, 10, "CAP: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['CAPSedePrestatore'], 1, 1, 'C')

    pdf.cell(30, 10, "Comune: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['ComuneSedePrestatore'], 1, 1, 'C')

    pdf.cell(30, 10, "Provincia: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['ProvinciaSedePrestatore'], 1, 1, 'C')

    pdf.cell(30, 10, "Nazione: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['NazioneSedePrestatore'], 1, 1, 'C')

    pdf.add_page()

    #Dati del cessionario / committente
    pdf.set_font('Arial', 'B', 13)
    pdf.multi_cell(200,14, "Dati del cessionario / committente", 0, 'J', False)
    pdf.set_font('Arial', 'I', 13)
    pdf.multi_cell(200,14, "Dati Anagrafici", 0, 'J', False)

    pdf.cell(50, 10, "Codice fiscale: ", 1, 0, 'C')
    pdf.cell(130, 10,fattHeader['CodiceFiscaleCessionarioCommittente'], 1, 1, 'C')
    pdf.cell(50, 10, "Denominazione: ", 1, 0, 'C')
    pdf.set_font('Arial', '', 9)
    pdf.cell(130, 10,fattHeader['DenominazioneCessionarioCommittente'], 1, 1, 'C')
    pdf.set_font('Arial', '', 12)

    pdf.set_font('Arial', 'I', 13)
    pdf.multi_cell(200,14, "Dati della sede", 0, 'J', False)

    pdf.cell(30, 10, "Indirizzo: ", 1, 0, 'C')
    pdf.set_font('Arial', '', 9)
    pdf.cell(150, 10,fattHeader['IndirizzoSedeCessionarioCommittente'], 1, 1, 'C')
    pdf.set_font('Arial', '', 12)

    pdf.cell(30, 10, "CAP: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['CAPSedeCessionarioCommittente'], 1, 1, 'C')

    pdf.cell(30, 10, "Comune: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['ComuneSedeCessionarioCommittente'], 1, 1, 'C')

    pdf.cell(30, 10, "Provincia: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['ProvinciaSedeCessionarioCommittente'], 1, 1, 'C')

    pdf.cell(30, 10, "Nazione: ", 1, 0, 'C')
    pdf.cell(150, 10,fattHeader['NazioneSedeCessionarioCommittente'], 1, 1, 'C')

    #Dati generali Documento
    pdf.multi_cell(200,8, '', 0, 'J', False)
    pdf.set_font('Arial', 'B', 13)
    pdf.multi_cell(200,14, "Dati generali documento", 0, 'J', False)
    pdf.set_font('Arial', '', 12)

    pdf.cell(50, 10, "Tipo Documento: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['TipoDocumento'], 1, 1, 'C')

    pdf.cell(50, 10, "Valuta: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['Divisa'], 1, 1, 'C')

    pdf.cell(50, 10, "Data: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['Data'], 1, 1, 'C')

    pdf.cell(50, 10, "Numero: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['Numero'], 1, 1, 'C')

    pdf.cell(180, 10, "Causale: ", 1, 1, 'C')
    pdf.set_font('Arial', '', 9)
    pdf.multi_cell(180,6, fattBody['Causale0']+'\n'+fattBody['Causale1'], 1, 'J', False)
    pdf.set_font('Arial', '', 12)

    #Dati ordine acquisto
    if len(datiOrdineAcquisto)>0:
        pdf.multi_cell(200,8, '', 0, 'J', False)
        pdf.set_font('Arial', 'B', 13)
        pdf.multi_cell(200,14, "Dati ordine acquisto:", 0, 'J', False)
        pdf.set_font('Arial', '', 12)

        for dati in datiOrdineAcquisto:
                pdf.cell(80, 10, "Numero linea di fattura a cui si riferisce: ", 1, 0, 'C')
                pdf.cell(100, 10,dati['RiferimentoNumeroLinea'], 1, 1, 'C')
                pdf.cell(80, 10, "Identificativo ordine di acquisto: ", 1, 0, 'C')
                pdf.cell(100, 10,dati['IdDocumento'], 1, 1, 'C')
                pdf.cell(80, 10, "Numero linea ordine di acquisto: ", 1, 0, 'C')
                pdf.cell(100, 10,dati['NumItem'], 1, 1, 'C')
                pdf.multi_cell(200,8, '', 0, 'J', False)


    #Dati relativi al trasporto
    if  (fattBody['DatiAnagraficiVettoreIdPaese']!='' and fattBody['DatiAnagraficiVettoreDenominazione']!='') :
        pdf.multi_cell(200,8, '', 0, 'J', False)
        pdf.set_font('Arial', 'B', 13)
        pdf.multi_cell(200,14, "Dati relativi al trasporto:", 0, 'J', False)
        pdf.set_font('Arial', '', 12)
        pdf.set_font('Arial', 'I', 13)
        pdf.multi_cell(200,14, "Dati del vettore:", 0, 'J', False)
        pdf.set_font('Arial', '', 12)

        pdf.cell(80, 10, "Identificativo fiscale ai fini IVA: ", 1, 0, 'C')
        pdf.cell(110, 10, fattBody['DatiAnagraficiVettoreIdPaese']+fattBody['DatiAnagraficiVettoreIdCodice'], 1, 1, 'C')
        pdf.cell(80, 10, "Denominazione: ", 1, 0, 'C')
        pdf.set_font('Arial', '', 9)
        pdf.cell(110, 10, fattBody['DatiAnagraficiVettoreDenominazione'], 1, 1, 'C')
        pdf.set_font('Arial', '', 12)
        pdf.cell(80, 10, "Data/ora consegna: ", 1, 0, 'C')
        pdf.cell(110, 10, fattBody['DataOraConsegnaVettore'], 1, 1, 'C')


    #Dati linee fattura
    pdf.add_page()
    pdf.set_font('Arial', 'B', 13)
    pdf.multi_cell(200,14, "Dati relativi alle linee di dettaglio della fornitura", 0, 'J', False)
    pdf.set_font('Arial', 'B', 9)
    pdf.cell(15, 8, "Nr. Linea", 1, 0, 'C')
    pdf.cell(85, 8, "Descrizione", 1, 0, 'C')
    pdf.cell(15, 8, "Qu.ta'", 1, 0, 'C')
    pdf.cell(25, 8, "Prezzo unitario", 1, 0, 'C')
    pdf.cell(25, 8, "Prezzo totale", 1, 0, 'C')
    pdf.cell(25, 8, "IVA", 1, 1, 'C')
    pdf.set_font('Arial', '', 8)

    for linea in linee:
        x_at_start= pdf.get_x()
        y_at_start= pdf.get_y()

        pdf.cell(15, 8, linea['NumeroLinea'], 1, 0, 'C')
        pdf.multi_cell(85,8, linea['Descrizione'], 1, 'J', False)
        x_after_dscr = pdf.get_x()
        y_after_dscr = pdf.get_y()
        pdf.set_xy(x_at_start+85+15, y_at_start)
        pdf.cell(15, 8, linea['Quantita'], 1, 0, 'C')
        pdf.cell(25, 8, linea['PrezzoUnitario'], 1, 0, 'C')
        pdf.cell(25, 8, linea['PrezzoTotale'], 1, 0, 'C')
        pdf.cell(25, 8, linea['AliquotaIVA'], 1, 1, 'C')
        pdf.set_xy(10,y_after_dscr)

    #Riepilogo
    pdf.multi_cell(200,8, '', 0, 'J', False)
    pdf.set_font('Arial', 'B', 13)
    pdf.multi_cell(200,14, "Dati di riepilogo per aliquota IVA e natura", 0, 'J', False)
    pdf.set_font('Arial', '', 12)
    pdf.cell(45, 8, "AliquotaIVA: "+fattBody['DatiRiepilogoAliquotaIVA'], 1, 0, 'C')
    pdf.cell(77, 8, "Tot. imponibile/importo: "+fattBody['DatiRiepilogoImponibileImporto'], 1, 1, 'C')
    pdf.cell(77, 8, "Tot. imposta: "+fattBody['DatiRiepilogoImposta'], 1, 0, 'C')
    pdf.cell(45, 8, "Esigibilità IVA: "+fattBody['DatiRiepilogoEsigibilitaIVA'], 1, 0, 'C')

    #Dati pagamento
    pdf.multi_cell(200,8, '', 0, 'J', False)
    pdf.set_font('Arial', 'B', 13)
    pdf.multi_cell(200,14, "Dati prelativi al pagamento:", 0, 'J', False)
    pdf.set_font('Arial', '', 12)

    pdf.cell(60, 10, "Condizioni di pagamento: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['DatiPagamentoCondizioniPagamento'], 1, 1, 'C')

    pdf.cell(60, 10, "Modalita' di pagamento: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['DatiPagamentoModalitaPagamento'], 1, 1, 'C')

    pdf.cell(60, 10, "Scadenza pagamento: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['DatiPagamentoDataScadenzaPagamento'], 1, 1, 'C')

    pdf.cell(60, 10, "Importo pagamento: ", 1, 0, 'C')
    pdf.cell(130, 10,fattBody['DatiPagamentoImportoPagamento'], 1, 1, 'C')



    try:
        pdf.output(pdfFile)
        openPDF()
    except:
        print("Qualcosa è andato storto...")

Powered by Code, a simple repository browser by Fabio Di Matteo