diff --git a/pytrustnfe/nfe/__init__.py b/pytrustnfe/nfe/__init__.py index 06cf8c5..89f5a87 100644 --- a/pytrustnfe/nfe/__init__.py +++ b/pytrustnfe/nfe/__init__.py @@ -56,11 +56,15 @@ def _add_required_node(elemTree): prods = elemTree.findall('ns:NFe/ns:infNFe/ns:det/ns:prod', namespaces=ns) for prod in prods: - cEan = etree.Element('cEAN') - cEANTrib = etree.Element('cEANTrib') - prod.insert(1, cEan) - vProd = prod.find('ns:vProd', namespaces=ns) - prod.insert(prod.index(vProd) + 1, cEANTrib) + element = prod.find('ns:cEAN', namespaces=ns) + if element is None: + cEan = etree.Element('cEAN') + prod.insert(1, cEan) + element = prod.find('ns:cEANTrib', namespaces=ns) + if element is None: + cEANTrib = etree.Element('cEANTrib') + vProd = prod.find('ns:vProd', namespaces=ns) + prod.insert(prod.index(vProd) + 1, cEANTrib) return elemTree diff --git a/pytrustnfe/nfe/assinatura.py b/pytrustnfe/nfe/assinatura.py index 7104e9b..d4ef99c 100644 --- a/pytrustnfe/nfe/assinatura.py +++ b/pytrustnfe/nfe/assinatura.py @@ -36,7 +36,8 @@ class Assinatura(object): element_signed = signed_root.find(".//*[@Id='%s']" % reference) signature = signed_root.find( ".//{http://www.w3.org/2000/09/xmldsig#}Signature") - if element_signed and signature: + + if element_signed is not None and signature is not None: parent = element_signed.getparent() parent.append(signature) return etree.tostring(signed_root) diff --git a/pytrustnfe/nfe/templates/NfeAutorizacao.xml b/pytrustnfe/nfe/templates/NfeAutorizacao.xml index ec4d1e5..f3220b1 100644 --- a/pytrustnfe/nfe/templates/NfeAutorizacao.xml +++ b/pytrustnfe/nfe/templates/NfeAutorizacao.xml @@ -35,6 +35,9 @@ {% if ref.refNFe is defined -%} {{ ref.refNFe }} {% endif %} + {% if ref.refCTe is defined -%} + {{ ref.refCTe }} + {% endif %} {% if ref.refNF is defined -%} {{ ref.refNF.cUF }} @@ -55,7 +58,6 @@ {{ ref.refNFP.mod }} {{ ref.refNFP.serie }} {{ ref.refNFP.nNF }} - {{ ref.refNFP.nNF }} {% endif %} {% if ref.refECF is defined -%} @@ -81,9 +83,10 @@ {{ emit.xNome|normalize|escape }} {{ emit.xFant|normalize|escape }} - {{ emit.enderEmit.xLgr|normalize }} + {{ emit.enderEmit.xLgr|normalize|escape }} {{ emit.enderEmit.nro }} - {{ emit.enderEmit.xBairro|normalize }} + {{ emit.enderEmit.xCpl|normalize|escape }} + {{ emit.enderEmit.xBairro|normalize|escape }} {{ emit.enderEmit.cMun }} {{ emit.enderEmit.xMun|normalize }} {{ emit.enderEmit.UF }} @@ -115,9 +118,10 @@ {% endif %} {{ dest.xNome|normalize|escape }} - {{ dest.enderDest.xLgr|normalize }} + {{ dest.enderDest.xLgr|normalize|escape }} {{ dest.enderDest.nro }} - {{ dest.enderDest.xBairro|normalize }} + {{ dest.enderDest.xCpl|normalize|escape }} + {{ dest.enderDest.xBairro|normalize|escape }} {{ dest.enderDest.cMun }} {{ dest.enderDest.xMun|normalize }} {{ dest.enderDest.UF }} @@ -138,12 +142,12 @@ {{ NFe.infNFe.retirada.CNPJ }} {{ NFe.infNFe.retirada.CPF }} - {{ NFe.infNFe.retirada.xLgr }} + {{ NFe.infNFe.retirada.xLgr|normalize|escape }} {{ NFe.infNFe.retirada.nro }} - {{ NFe.infNFe.retirada.xCpl }} - {{ NFe.infNFe.retirada.xBairro }} + {{ NFe.infNFe.retirada.xCpl|normalize|escape }} + {{ NFe.infNFe.retirada.xBairro|normalize|escape }} {{ NFe.infNFe.retirada.cMun }} - {{ NFe.infNFe.retirada.xMun }} + {{ NFe.infNFe.retirada.xMun|normalize }} {{ NFe.infNFe.retirada.UF }} {% endif %} @@ -151,10 +155,10 @@ {{ NFe.infNFe.entrega.CNPJ }} {{ NFe.infNFe.entrega.CPF }} - {{ NFe.infNFe.entrega.xLgr }} + {{ NFe.infNFe.entrega.xLgr|normalize|escape }} {{ NFe.infNFe.entrega.nro }} - {{ NFe.infNFe.entrega.xCpl }} - {{ NFe.infNFe.entrega.xBairro }} + {{ NFe.infNFe.entrega.xCpl|normalize|escape }} + {{ NFe.infNFe.entrega.xBairro|normalize|escape }} {{ NFe.infNFe.entrega.cMun }} {{ NFe.infNFe.entrega.xMun }} {{ NFe.infNFe.entrega.UF }} @@ -168,9 +172,8 @@ {% endfor %} {% endif %} - {% set count = 1 %} {% for det in NFe.infNFe.detalhes %} - + {% with prod = det.prod %} {{ prod.cProd }} @@ -199,7 +202,7 @@ {{ di.nDI }} {{ di.dDI }} - {{ di.xLocDesemb }} + {{ di.xLocDesemb|normalize|escape }} {{ di.UFDesemb }} {{ di.dDesemb }} {{ di.tpViaTransp }} @@ -625,7 +628,6 @@ {% if det.infAdProd %} {{ det.infAdProd|normalize|escape }} {% endif %} - {% set count = count + 1 %} {% endfor %} @@ -687,9 +689,9 @@ {{ NFe.infNFe.transp.transporta.CNPJ }} {{ NFe.infNFe.transp.transporta.CPF }} - {{ NFe.infNFe.transp.transporta.xNome }} + {{ NFe.infNFe.transp.transporta.xNome|normalize|escape }} {{ NFe.infNFe.transp.transporta.IE }} - {{ NFe.infNFe.transp.transporta.xEnder }} + {{ NFe.infNFe.transp.transporta.xEnder|normalize|escape }} {{ NFe.infNFe.transp.transporta.xMun }} {{ NFe.infNFe.transp.transporta.UF }} @@ -782,8 +784,8 @@ {% if NFe.infNFe.exporta is defined %} {{ NFe.infNFe.exporta.UFSaidaPais }} - {{ NFe.infNFe.exporta.xLocExporta }} - {{ NFe.infNFe.exporta.xLocDespacho }} + {{ NFe.infNFe.exporta.xLocExporta|normalize|escape }} + {{ NFe.infNFe.exporta.xLocDespacho|normalize|escape }} {% endif %} {% if NFe.infNFe.compra is defined %} diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml b/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml index 4757cac..35d587e 100644 --- a/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml +++ b/pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml @@ -14,7 +14,7 @@ Cancelamento {{ evento.nProt }} - {{ evento.xJust|normalize }} + {{ evento.xJust|normalize|escape }} diff --git a/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml b/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml index 185097e..377fb96 100644 --- a/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml +++ b/pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml @@ -13,7 +13,7 @@ 1.00 Carta de Correção - {{ xCorrecao|normalize }} + {{ xCorrecao|normalize|escape }} 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/setup.py b/setup.py index cdb3acb..cb4b592 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ # coding=utf-8 from setuptools import setup, find_packages -VERSION = "0.1.17" +VERSION = "0.1.24" setup( name="PyTrustNFe",