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",