From 668d1c3e92a4912387cca1ad4d52a766accf2b2b Mon Sep 17 00:00:00 2001 From: Junior Tada Date: Thu, 13 Aug 2015 15:01:08 -0300 Subject: [PATCH] Normalize xml antes de assinatura. --- pynfe/processamento/assinatura.py | 5 +++-- pynfe/processamento/comunicacao.py | 3 +-- pynfe/processamento/serializacao.py | 4 +++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pynfe/processamento/assinatura.py b/pynfe/processamento/assinatura.py index b000bb4..72233e5 100644 --- a/pynfe/processamento/assinatura.py +++ b/pynfe/processamento/assinatura.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -from pynfe.utils import etree +from pynfe.utils import etree, remover_acentos import subprocess @@ -47,8 +47,9 @@ class AssinaturaA1(Assinatura): xml.append(raiz) + # Escreve no arquivo depois de remover caracteres especiais e parse string with open('testes.xml', 'w') as arquivo: - arquivo.write(etree.tostring(xml, encoding="unicode", pretty_print=False)) + arquivo.write(remover_acentos(etree.tostring(xml, encoding="unicode", pretty_print=False))) subprocess.call(['xmlsec1', '--sign', '--pkcs12', self.certificado, '--pwd', self.senha, '--crypto', 'openssl', '--output', 'funfa.xml', '--id-attr:Id', tag, 'testes.xml']) xml = etree.parse('funfa.xml').getroot() diff --git a/pynfe/processamento/comunicacao.py b/pynfe/processamento/comunicacao.py index d75778d..92b2a9f 100644 --- a/pynfe/processamento/comunicacao.py +++ b/pynfe/processamento/comunicacao.py @@ -2,7 +2,7 @@ import datetime import time import requests -from pynfe.utils import etree, so_numeros, remover_acentos +from pynfe.utils import etree, so_numeros from pynfe.utils.flags import NAMESPACE_NFE, NAMESPACE_SOAP, NAMESPACE_XSI, NAMESPACE_XSD, NAMESPACE_METODO, VERSAO_PADRAO, CODIGOS_ESTADOS from pynfe.utils.webservices import NFCE, NFE from .assinatura import AssinaturaA1 @@ -287,7 +287,6 @@ class ComunicacaoSefaz(Comunicacao): xml_declaration='' xml = etree.tostring(xml, encoding='unicode', pretty_print=False).replace('\n','') xml = xml_declaration + xml - xml = remover_acentos(xml) # Faz o request com o servidor result = requests.post(url, xml, headers=self._post_header(), cert=chave_cert, verify=False) result.encoding='utf-8' diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 94d6895..b804723 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -143,7 +143,9 @@ class SerializacaoXML(Serializacao): # Inscrição Municipal do tomador do serviço if cliente.inscricao_municipal: etree.SubElement(raiz, 'IM').text = cliente.inscricao_municipal - etree.SubElement(raiz, 'email').text = cliente.email + # E-mail + if cliente.email: + etree.SubElement(raiz, 'email').text = cliente.email if retorna_string: return etree.tostring(raiz, encoding="unicode", pretty_print=True) else: