akretion / mdfelib

biblioteca para ler e gerir Manifesto Eletrônico de Documentos Fiscais brasileiros (MDF-e)
MIT License
3 stars 2 forks source link

Erro ao validar datas #4

Open ImplantiSolucoes opened 5 years ago

ImplantiSolucoes commented 5 years ago

Ao tentar validar alguma data ele esta gerando o seguinte erro: UserWarning: Value "b'2019-09-27T15:19:46-03:00'" does not match xsd pattern restrictions:

[['^(((20(([02468][048])$|^([13579][26]))-02-29))$|^(20[0-9][0-9])-((((0[1-9])$|^(1[0-2]))-((0[1-9])$|^(1\d)$|^(2[0-8])))$|^((((0[13578])$|^(1[02]))-31)$|^(((0[1,3-9])$|^(1[0-2]))-(29$|^30)))))T(20$|^21$|^22$|^23$|^[0-1]\d):[0-5]\d:[0-5]\d(\-,\+:00$|^(\+:00))$']]

warnings_.warn('Value "%s" does not match xsd pattern restrictions: %s' % (value.encode('utf-8'), self.validate_TDateTimeUTCpatterns, ))

E ao analisar o regex aplicado verifiquei que existe um erro nessa parte [\\-,\\+]e existe diversas posições que ele não vai validar.

Não fiz um regex para corrigir essa situação pq não sou bom com isso rsrs

rvalyi commented 5 years ago

Ola @ImplantiSolucoes ,

teria que testar de gerir a lib de novo com o generateDS atualizado: https://github.com/akretion/edoc-gen#mdf-e--manifesta%C3%A7%C3%A3o-do-destinat%C3%A1rio-eletr%C3%B4nica

Eu cheguei a fazer uns patches pro generateDS (que foram inclusos), pode ser que resolveu isso. Com a NFe pude validar com umas 10 notas de produção e accredito que tem os mesmos tipos simples então deveria funcionar...

Devo mexer nisso nesses proximos dias (de gerir essa lib de novo). Tb o Luis da KMEE trabalhou sim na transmissao da mdfe nessa lib: https://github.com/erpbrasil/erpbrasil.edoc/blob/master/src/erpbrasil/edoc/mdfe.py

Ai nisso ele precisou que mais classes seja geridas. Mas tb a gente nao poode muito fazer isso cegamente porque se a gente nao presta atencao multiplica o tamanho da lib por 10x com muitos arquivos que a gente usaria so uma parte muito pequena. Enfim isso para dizer que tamos mexendo nisso. Esse tipo de coisa deveria ser solucionado logo, ainda mas se sao ligadas aos patches que eu fiz no generateDS.

Ultimo detalhe, vc ta usando Python 3? Pois com Python 2 tem um bug no generateDS. Fiz um workaround aqui: https://bitbucket.org/dkuhlman/generateds/pull-requests/52 Mas o certo seria usar o unidecode mesmo como comentei.

ImplantiSolucoes commented 4 years ago

Seria Python 3

rvalyi commented 4 years ago

Aqui na Akretion nosso foco eh Python 3, Odoo 12 e talvez depois iremos portar para a a v13 tb mas sem fazer muitos projetos na v13.