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,