diff --git a/pytrustnfe/nfe/templates/NfeAutorizacao.xml b/pytrustnfe/nfe/templates/NfeAutorizacao.xml index 3f988af..e3e20f8 100644 --- a/pytrustnfe/nfe/templates/NfeAutorizacao.xml +++ b/pytrustnfe/nfe/templates/NfeAutorizacao.xml @@ -14,9 +14,9 @@ {{ ide.serie }} {{ ide.nNF }} {{ ide.dhEmi }} - {% if ide.mod != '65' %} - {{ ide.dhSaiEnt }} - {% endif %} + {% if ide.mod != '65' %} + {{ ide.dhSaiEnt }} + {% endif %} {{ ide.tpNF }} {{ ide.idDest }} {{ ide.cMunFG }} @@ -78,14 +78,14 @@ {% if emit.tipo == 'company' -%} {{ emit.cnpj_cpf }} {% endif %} - {{ emit.xNome }} - {{ emit.xFant }} + {{ emit.xNome|normalize }} + {{ emit.xFant|normalize }} - {{ emit.enderEmit.xLgr }} + {{ emit.enderEmit.xLgr|normalize }} {{ emit.enderEmit.nro }} - {{ emit.enderEmit.xBairro }} + {{ emit.enderEmit.xBairro|normalize }} {{ emit.enderEmit.cMun }} - {{ emit.enderEmit.xMun }} + {{ emit.enderEmit.xMun|normalize }} {{ emit.enderEmit.UF }} {{ emit.enderEmit.CEP }} {{ emit.enderEmit.cPais }} @@ -113,13 +113,13 @@ {{ dest.cnpj_cpf }} {% endif %} {% endif %} - {{ dest.xNome }} + {{ dest.xNome|normalize }} - {{ dest.enderDest.xLgr }} + {{ dest.enderDest.xLgr|normalize }} {{ dest.enderDest.nro }} - {{ dest.enderDest.xBairro }} + {{ dest.enderDest.xBairro|normalize }} {{ dest.enderDest.cMun }} - {{ dest.enderDest.xMun }} + {{ dest.enderDest.xMun|normalize }} {{ dest.enderDest.UF }} {{ dest.enderDest.CEP }} {{ dest.enderDest.cPais }} @@ -175,7 +175,7 @@ {% with prod = det.prod %} {{ prod.cProd }} {{ prod.cEAN }} - {{ prod.xProd }} + {{ prod.xProd|normalize }} {{ prod.NCM }} {{ prod.NVE }} {{ prod.CEST }} @@ -235,7 +235,7 @@ {% endfor %} {% endif %} - + {% endfor %} {% endif %} {{ prod.xPed }} @@ -465,7 +465,7 @@ {% endif %} - {% if NFe.infNFe.ide.mod != '65' %} + {% if NFe.infNFe.ide.mod != '65' %} {{ imposto.IPI.clEnq }} {{ imposto.IPI.CNPJProd }} @@ -488,7 +488,7 @@ {% endif %} - {% endif %} + {% endif %} {% if imposto.II is defined %} {{ imposto.II.vBC }} @@ -623,7 +623,7 @@ {% endif %} {% if det.infAdProd %} - {{ det.infAdProd }} + {{ det.infAdProd|normalize }} {% endif %} {% set count = count + 1 %} @@ -722,7 +722,7 @@ {% endif %} {% if NFe.infNFe.cobr is defined %} - {% if NFe.infNFe.ide.mod != '65' %} + {% if NFe.infNFe.ide.mod != '65' %} {% if NFe.infNFe.cobr.fat is defined %} @@ -742,7 +742,7 @@ {% endfor %} {% endif %} - {% endif %} + {% endif %} {% endif %} {% if NFe.infNFe.pag is defined %} {% for pag in NFe.infNFe.pag %} @@ -760,21 +760,21 @@ {% endfor %} {% endif %} - {{ NFe.infNFe.infAdic.infAdFisco }} - {{ NFe.infNFe.infAdic.infCpl }} + {{ NFe.infNFe.infAdic.infAdFisco|normalize }} + {{ NFe.infNFe.infAdic.infCpl|normalize }} {% if NFe.infNFe.infAdic.obsCont is defined %} {% for obs in NFe.infNFe.infAdic.obsCont %} - {{ obs.xCampo }} - {{ obs.xTexto }} + {{ obs.xCampo|normalize }} + {{ obs.xTexto|normalize }} {% endfor %} {% endif %} {% if NFe.infNFe.infAdic.obsFisco is defined %} {% for obs in NFe.infNFe.infAdic.obsFisco %} - {{ obs.xCampo }} - {{ obs.xTexto }} + {{ obs.xCampo|normalize }} + {{ obs.xTexto|normalize }} {% endfor %} {% endif %} diff --git a/pytrustnfe/nfe/templates/NfeInutilizacao.xml b/pytrustnfe/nfe/templates/NfeInutilizacao.xml index c655721..19c24da 100644 --- a/pytrustnfe/nfe/templates/NfeInutilizacao.xml +++ b/pytrustnfe/nfe/templates/NfeInutilizacao.xml @@ -10,6 +10,6 @@ {{ obj.serie }} {{ obj.numero_inicio}} {{ obj.numero_fim }} - {{ obj.justificativa }} + {{ obj.justificativa|normalize }} - \ No newline at end of file + diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml b/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml index 9b4b993..4757cac 100644 --- a/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml +++ b/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml @@ -14,7 +14,7 @@ Cancelamento {{ evento.nProt }} - {{ evento.xJust }} + {{ evento.xJust|normalize }} diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml b/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml index 6aec141..d1d3308 100644 --- a/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml +++ b/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml @@ -12,7 +12,7 @@ Carta de Correção - {{ xCorrecao }} + {{ xCorrecao|normalize }} A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída. diff --git a/pytrustnfe/test/test_xml.py b/pytrustnfe/test/test_xml.py index eb1b2a4..ad5162f 100644 --- a/pytrustnfe/test/test_xml.py +++ b/pytrustnfe/test/test_xml.py @@ -7,6 +7,7 @@ Created on Jun 14, 2015 import unittest from datetime import datetime from pytrustnfe.xml.filters import normalize_str +from pytrustnfe.xml.filters import strip_line_feed from pytrustnfe.xml.filters import format_percent from pytrustnfe.xml.filters import format_date from pytrustnfe.xml.filters import format_datetime @@ -24,3 +25,6 @@ class test_xmlfilters(unittest.TestCase): dt = datetime(2016, 9, 17, 12, 12, 12) self.assertEqual('2016-09-17', format_date(dt.date())) self.assertEqual('2016-09-17T12:12:12', format_datetime(dt)) + + word = strip_line_feed(u"olá\ncomo vai\r senhor ") + self.assertEqual(word, u"olá como vai senhor") diff --git a/pytrustnfe/xml/__init__.py b/pytrustnfe/xml/__init__.py index b85f4b7..12cab8f 100644 --- a/pytrustnfe/xml/__init__.py +++ b/pytrustnfe/xml/__init__.py @@ -20,7 +20,8 @@ def render_xml(path, template_name, remove_empty, **nfe): env = Environment( loader=FileSystemLoader(path), extensions=['jinja2.ext.with_']) - env.filters["normalize"] = filters.normalize_str + env.filters["normalize"] = filters.strip_line_feed + env.filters["normalize_str"] = filters.normalize_str env.filters["format_percent"] = filters.format_percent env.filters["format_datetime"] = filters.format_datetime env.filters["format_date"] = filters.format_date diff --git a/pytrustnfe/xml/filters.py b/pytrustnfe/xml/filters.py index b65d98d..f18e94b 100644 --- a/pytrustnfe/xml/filters.py +++ b/pytrustnfe/xml/filters.py @@ -10,7 +10,7 @@ from unicodedata import normalize def normalize_str(string): """ - Remove special characters and return the ascii string + Remove special characters and strip spaces """ if string: if not isinstance(string, unicode): @@ -22,6 +22,18 @@ def normalize_str(string): return '' +def strip_line_feed(string): + if string: + remap = { + ord(u'\t'): u' ', + ord(u'\n'): u' ', + ord(u'\f'): u' ', + ord(u'\r'): None, # Delete + } + return string.translate(remap).strip() + return string + + def format_percent(value): if value: return Decimal(value) / 100 diff --git a/pytrustnfe/xml/nfeEnv.xml b/pytrustnfe/xml/nfeEnv.xml deleted file mode 100644 index 2ca11ad..0000000 --- a/pytrustnfe/xml/nfeEnv.xml +++ /dev/null @@ -1,183 +0,0 @@ - - {{ idLote }} - {{ indSinc }} - {% for NFe in NFes %} - - - - {% with ide = NFe.infNFe.ide %} - {{ ide.cUF }} - {{ ide.cNF }} - {{ ide.natOp }} - {{ ide.indPag }} - {{ ide.mod }} - {{ ide.serie }} - {{ ide.nNF }} - {{ ide.dhEmi }} - {{ ide.dhSaiEnt }} - {{ ide.tpNF }} - {{ ide.idDest }} - {{ ide.cMunFG }} - {{ ide.tpImp }} - {{ ide.tpEmis }} - {{ ide.cDV }} - {{ ide.tpAmb }} - {{ ide.finNFe }} - {{ ide.indFinal }} - {{ ide.indPres }} - {{ ide.procEmi }} - Odoo Brasil 9.0 - {% endwith %} - - - {% with emit = NFe.infNFe.emit %} - {% if emit.tipo == 'person' -%} - {{ emit.cnpj_cpf }} - {% endif %} - {% if emit.tipo == 'company' -%} - {{ emit.cnpj_cpf }} - {% endif %} - {{ emit.xNome }} - {{ emit.xFant }} - - {{ emit.enderEmit.xLgr }} - {{ emit.enderEmit.nro }} - {{ emit.enderEmit.xBairro }} - {{ emit.enderEmit.cMun }} - {{ emit.enderEmit.xMun }} - {{ emit.enderEmit.UF }} - {{ emit.enderEmit.CEP }} - {{ emit.enderEmit.cPais }} - {{ emit.enderEmit.xPais }} - {{ emit.enderEmit.fone }} - - {{ emit.IE }} - {{ emit.CRT }} - {% endwith %} - - - {% with dest = NFe.infNFe.dest %} - {% if dest.tipo == 'person' -%} - {{ dest.cnpj_cpf }} - {% endif %} - {% if dest.tipo == 'company' -%} - {{ dest.cnpj_cpf }} - {% endif %} - {{ dest.xNome }} - - {{ dest.enderDest.xLgr }} - {{ dest.enderDest.nro }} - {{ dest.enderDest.xBairro }} - {{ dest.enderDest.cMun }} - {{ dest.enderDest.xMun }} - {{ dest.enderDest.UF }} - {{ dest.enderDest.CEP }} - {{ dest.enderDest.cPais }} - {{ dest.enderDest.xPais }} - {{ dest.enderDest.fone }} - - {{ dest.indIEDest }} - {% if dest.IE != '' -%}{{ dest.IE }}{% endif %} - {% endwith %} - - {% for det in NFe.infNFe.detalhes %} - - - {% with prod = det.prod %} - {{ prod.cProd }} - {{ prod.cEAN }} - {{ prod.xProd }} - {{ prod.NCM }} - {{ prod.CFOP }} - {{ prod.uCom }} - {{ prod.qCom }} - {{ prod.vUnCom }} - {{ prod.vProd }} - {{ prod.cEANTrib }} - {{ prod.uTrib }} - {{ prod.qTrib }} - {{ prod.vUnTrib }} - {{ prod.indTot }} - {% endwith %} - - - {% with imposto = det.imposto %} - {{ imposto.vTotTrib }} - - - {{ imposto.ICMS.ICMS00.orig }} - {{ imposto.ICMS.ICMS00.CST }} - {{ imposto.ICMS.ICMS00.modBC }} - {{ imposto.ICMS.ICMS00.vBC }} - {{ imposto.ICMS.ICMS00.pICMS }} - {{ imposto.ICMS.ICMS00.vICMS }} - - - - {{ imposto.IPI.cEnq }} - - {{ imposto.IPI.IPITrib.CST }} - {{ imposto.IPI.IPITrib.vBC }} - {{ imposto.IPI.IPITrib.pIPI }} - {{ imposto.IPI.IPITrib.vIPI }} - - - - - {{ imposto.PIS.PISAliq.CST }} - {{ imposto.PIS.PISAliq.vBC }} - {{ imposto.PIS.PISAliq.pPIS }} - {{ imposto.PIS.PISAliq.vPIS }} - - - - - {{ imposto.COFINS.COFINSAliq.CST }} - {{ imposto.COFINS.COFINSAliq.vBC }} - {{ imposto.COFINS.COFINSAliq.pCOFINS }} - {{ imposto.COFINS.COFINSAliq.vCOFINS }} - - - {% endwith %} - - - {% endfor %} - - {% with total = NFe.infNFe.total %} - - {{ total.vBC }} - {{ total.vICMS }} - {{ total.vICMSDeson }} - {{ total.vBCST }} - {{ total.vST }} - {{ total.vProd }} - {{ total.vFrete }} - {{ total.vSeg }} - {{ total.vDesc }} - {{ total.vII }} - {{ total.vIPI }} - {{ total.vPIS }} - {{ total.vCOFINS }} - {{ total.vOutro }} - {{ total.vNF }} - {{ total.vTotTrib }} - - {% endwith %} - - - {{ NFe.infNFe.transp.modFrete }} - - - - 339/1 - 2016-06-02 - 8611.76 - - - - {{ NFe.infNFe.infAdic.infCpl }} - - - - {% endfor %} - diff --git a/setup.py b/setup.py index 37da539..2d59454 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,8 @@ from setuptools import setup, find_packages long_description = open('README.md').read() -VERSION = "0.2.0", +VERSION = "0.1.10" + setup( name="PyTrustNFe", version=VERSION,