Element Tree in xml

di il
2 risposte

Element Tree in xml

Ciao a tutti,

ho un problema con un estratto del mio codice , che riprende le fatture elettroniche.
il programma funziona correttamente, ma dovevo aggiungere l'estrapolazione di un dato dalla fattura, e questo mi fa impazzire.

probabilmente ho fuori luogo logica e sintassi. mi spiego meglio.

      for scadenza in obj.iterfind('FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/DataScadenzaPagamento'):
                            print(scadenza.text) #print thee expiration date
                            if not scadenza.text:
                               for scadenza1 in obj.iterfind('FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/GiorniTerminiPagamento'):
                                    from datetime import timedelta, date
                                    nbr = scadenza1.get()
                                    d1 = datem + timedelta(days=int(scadenza1.text))
                                    print(f'New Expire {d1}')
                                    scadenza.text = d1
                            self.worksheet.write(row, column + 8, scadenza.text)

cerco la scadenza di pagamento con iterfind. se non trova niente allora lancio un altro iterfind per cercare il campo successivo che sono i giorni di pagamento. Da lì poi ci vorrei sommare la data di fattura più i giorni, tutto molto semplcie a parole. ma sbaglio qualcosa, e mi skippa perennemente la seconda paret del codice. e non riesco a comprendere il perchè, cosa sbaglio?

2 Risposte

  • Re: Element Tree in xml

    Probabilmente scadenza.text viene valutato sempre vero, quindi salta il blocco. Prova con:
    if len(scadenza.text) <= 1:
  • Re: Element Tree in xml

    Grazie Andrea,

    avevo già prvoato, ma non mi è andata bene. Ho provato a gestirla con un ottica diversa, e ha funzionato.
    riposto il codice nel caso possa essere di aiuto a qualcuno
    
    if len(obj.findall('FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/DataScadenzaPagamento')):
                                for scadenza in obj.iterfind('FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/DataScadenzaPagamento'):
                                    from datetime import datetime
                                    print(scadenza.text)
                                    self.worksheet.write(row, column + 8, scadenza.text)
                                    newscad = scadenza.text[0:10]
                                    scad1 = datetime.strptime(newscad, "%Y-%m-%d")
                            else:
                                for scadenza1 in obj.iterfind('FatturaElettronicaBody/DatiPagamento/DettaglioPagamento/GiorniTerminiPagamento'):
                                     from datetime import timedelta, date, datetime
                                     scad1= datem + timedelta(days=int(scadenza1.text))
                                     print(f'New Expire {scad1}')
                                     newdate = datetime.strftime(scad1, "%Y-%m-%d")
                                     self.worksheet.write(row, column + 8, newdate)
    
    
Devi accedere o registrarti per scrivere nel forum
2 risposte