Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fattura PA - vincolo data >= 1970-01-01 errore se nell'xml c'è il timezone --> pyxb 1.2.6 #879

Closed
2 of 4 tasks
sherpya opened this issue Jan 21, 2019 · 24 comments · Fixed by #1050
Closed
2 of 4 tasks
Labels
help wanted stale PR/Issue without recent activity, it'll be soon closed automatically. tracking

Comments

@sherpya
Copy link
Member

sherpya commented Jan 21, 2019

Secondo specifica la data deve essere nel formato 8601:2004, il vincolo inserito da fatturapa_v_1_2 produce una data senza timezone, se nell'xml della fattura la data è espressa con timezone (valida secondo specifica) python fallisce nel confronto delle due date (ho commentato il try per beccare l'errore effettivo):

  File "/home/sherpya/workspace/odoo/fatturapa/venv/local/lib/python2.7/site-packages/pyxb/binding/facets.py", line 660, in _validateConstraint_vx
    return (self.value() is None) or (self.value() <= value)
TypeError: can't compare offset-naive and offset-aware datetimes

purtroppo se in fatturapa_v_1_2 si inserisce la data con il timezone (es. 1970-01-01Z) si verifica il problema nel caso che nella fattura ci sia una data senza timezone

Ho provato a mettere le mani nel pyxb ma la cosa non sembra di facile soluzione, nel frattempo ho disabilitato il controllo sulla data minima, tra l'altra un 1970-01-01 inclusivo è un controllo poco furbo, perché se ho fatto un errore è molto probabile che mi ritrovi proprio quella data essendo ts = 0

fixes

@eLBati
Copy link
Member

eLBati commented Jan 22, 2019

@sherpya potresti descrivere i passi per riprodurre il problema in odoo?

@sherpya
Copy link
Member Author

sherpya commented Jan 22, 2019

prendi una fattura xml, su DatiGeneraliDocumento metti come data 2019-01-11+01:00
poi prova a farla entrare su odoo, per evitare tutta la trafila puoi prendere _ds.py e fatturapa_v_1_2.py
metterli in una directory, cambiare l'import di fatturapa in import _ds as _ImportedBinding__ds
e fare un file main:

from fatturapa_v_1_2 import CreateFromDocument

if __name__ == '__main__':
    xmld = open('out.xml').read().decode('utf-8')
    xml = CreateFromDocument(xmld)

@eLBati
Copy link
Member

eLBati commented Jan 23, 2019

@sherpya grazie.

nel frattempo ho disabilitato il controllo sulla data minima

Cioè come?

@sherpya
Copy link
Member Author

sherpya commented Jan 23, 2019

fattura_v_1_2.py
commento:

DataFatturaType._InitializeFacetMap(DataFatturaType._CF_minInclusive)

@sherpya
Copy link
Member Author

sherpya commented Jan 23, 2019

vorrei sapere in ogni caso da chi ha fatto lo standard che senso ha una data (senza ora) con il timezone

@eLBati
Copy link
Member

eLBati commented Jan 23, 2019

@sherpya potresti proporre la PR?

@eLBati
Copy link
Member

eLBati commented Jan 23, 2019

vorrei sapere in ogni caso da chi ha fatto lo standard che senso ha una data (senza ora) con il timezone

Sì, questo sarebbe da chiedere 😅

@sherpya
Copy link
Member Author

sherpya commented Jan 23, 2019

@sherpya potresti proporre la PR?

nella specifica della fattura PA il controllo c'è (anche se poco utile in effetti), al momento però non è di facile soluzione, bisognerebbe aprire un bug in pyxb, poi rigenerando il py rispunterebbe, secondo te è una buona idea?

@eLBati
Copy link
Member

eLBati commented Jan 23, 2019

@sherpya io intendevo la modifica che hai fatto che ti permette di importare. Almeno da avere un workaround, eventualmente temporaneo.

@sherpya
Copy link
Member Author

sherpya commented Jan 23, 2019

la modifica è disabilitare il controllo sulla data >= 1970-01-01, se vuoi ti faccio PR magari metto un FIXME dentro

@eLBati
Copy link
Member

eLBati commented Jan 23, 2019 via email

@sherpya
Copy link
Member Author

sherpya commented Feb 11, 2019

stavo guardando questa libreria https://pypi.org/project/xmlschema/, sembra funzionare senza problemi, solo il validate ritorna errori strani quando non valida

@sherpya
Copy link
Member Author

sherpya commented Feb 11, 2019

come non detto lxml è capace di farlo ed è già nelle dipendenze di odoo

@sherpya
Copy link
Member Author

sherpya commented Feb 11, 2019

purtroppo il codice è troppo basato su pyxb non sembra facile sostituire il tutto, nel frattempo ho segnalato il problema a pyxb che pare sia in abbandono comunque ;(

@eLBati
Copy link
Member

eLBati commented Feb 14, 2019

Ah leggo ora pabigot/pyxb#100

Allora a lungo termine vedo 2 strade:

  1. Diventiamo maintainers di pyxb
  2. Lo sostituiamo con qualcos'altro

@sherpya
Copy link
Member Author

sherpya commented Feb 14, 2019

lxml andrebbe bene ma va cambiata un po' di roba, per la creazione non so se con lxml si può fare, per il bug della data, la modifica aggiungedo la new è manutenibile

@eLBati
Copy link
Member

eLBati commented Feb 14, 2019

La creazione dell'XML con lxml sicuramente si può fare. Sarebbe forse un po' più scomoda.

In effetti probabilmente conviene liberarsi di pyxb...

@eLBati eLBati changed the title Fattura PA - vincolo data >= 1970-01-01 errore se nell'xml c'è il timezone (pyxb) Fattura PA - vincolo data >= 1970-01-01 errore se nell'xml c'è il timezone --> pyxb 1.2.6 Feb 27, 2019
@eLBati
Copy link
Member

eLBati commented Feb 27, 2019

@OCA/local-italy-developers in descrizione il link alla PR per la 10.
Da revisionare ed eventualmente portare alle altre versioni

@eLBati
Copy link
Member

eLBati commented May 14, 2019

Un revisione per la 12 #1050 ?

@sherpya
Copy link
Member Author

sherpya commented May 14, 2019

Un revisione per la 12 #1050 ?

dovrebbe essere praticamente identica a quella della 10 no? volendo poi si può anche pensare di portare #1218

@eLBati
Copy link
Member

eLBati commented May 15, 2019

dovrebbe essere praticamente identica a quella della 10 no?

Sì. Faccio merge?

volendo poi si può anche pensare di portare #1218

Certo. Il porting alle varie versioni lo tracciamo qui #1172

PS: hai già visto https://github.com/OCA/l10n-italy/wiki/Team-di-sviluppo ?

@sherpya
Copy link
Member Author

sherpya commented May 15, 2019

dovrebbe essere praticamente identica a quella della 10 no?

Sì. Faccio merge?

Ho diffato è identica a parte la compatibiltà con py3, se travis è felice io direi di procedere

volendo poi si può anche pensare di portare #1218

Certo. Il porting alle varie versioni lo tracciamo qui #1172

PS: hai già visto https://github.com/OCA/l10n-italy/wiki/Team-di-sviluppo ?

Avevo visto quei quadratini in effetti ma non sapevo dove stava la documentazione :)

@eLBati eLBati reopened this May 15, 2019
@eLBati
Copy link
Member

eLBati commented Nov 20, 2019

Attenzione che ci sarà da modificare anche il setup.py: #1517

@github-actions
Copy link

There hasn't been any activity on this issue in the past 6 months, so it has been marked as stale and it will be closed automatically if no further activity occurs in the next 30 days.
If you want this issue to never become stale, please ask a PSC member to apply the "no stale" label.

@github-actions github-actions bot added the stale PR/Issue without recent activity, it'll be soon closed automatically. label Oct 31, 2021
@github-actions github-actions bot closed this as completed Dec 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted stale PR/Issue without recent activity, it'll be soon closed automatically. tracking
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants