Browse Source

Correção no envio de NFe para o estado do Ceará

pull/131/head
Danimar Ribeiro 8 years ago
parent
commit
9a1f406c62
  1. 8
      pytrustnfe/Servidores.py
  2. 9
      pytrustnfe/client.py
  3. 26
      pytrustnfe/nfe/__init__.py
  4. 4
      pytrustnfe/nfe/comunicacao.py
  5. 1
      pytrustnfe/utils.py
  6. 2
      setup.py

8
pytrustnfe/Servidores.py

@ -352,8 +352,8 @@ UFBA = {
UFCE = { UFCE = {
NFE_AMBIENTE_PRODUCAO: { NFE_AMBIENTE_PRODUCAO: {
'servidor': 'nfe.sefaz.ce.gov.br', 'servidor': 'nfe.sefaz.ce.gov.br',
WS_NFE_AUTORIZACAO: 'nfe2/services/NfeRecepcao2',
WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetRecepcao2',
WS_NFE_AUTORIZACAO: 'nfe2/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2', WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2',
WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2', WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2',
WS_NFE_SITUACAO: 'nfe2/services/NfeStatusServico2', WS_NFE_SITUACAO: 'nfe2/services/NfeStatusServico2',
@ -363,8 +363,8 @@ UFCE = {
}, },
NFE_AMBIENTE_HOMOLOGACAO: { NFE_AMBIENTE_HOMOLOGACAO: {
'servidor': 'nfeh.sefaz.ce.gov.br', 'servidor': 'nfeh.sefaz.ce.gov.br',
WS_NFE_AUTORIZACAO: 'nfe2/services/NfeRecepcao2',
WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetRecepcao2',
WS_NFE_AUTORIZACAO: 'nfe2/services/NfeAutorizacao',
WS_NFE_RET_AUTORIZACAO: 'nfe2/services/NfeRetAutorizacao',
WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2', WS_NFE_INUTILIZACAO: 'nfe2/services/NfeInutilizacao2',
WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2', WS_NFE_CONSULTA: 'nfe2/services/NfeConsulta2',
WS_NFE_SITUACAO: 'nfe2/services/NfeStatusServico2', WS_NFE_SITUACAO: 'nfe2/services/NfeStatusServico2',

9
pytrustnfe/client.py

@ -45,19 +45,20 @@ class HttpClient(object):
def _headers(self, action, send_raw): def _headers(self, action, send_raw):
if send_raw: if send_raw:
return { return {
'Content-type': 'text/xml; charset=utf-8; action="http://www.portalfiscal.inf.br/nfe/wsdl/%s"' % action,
'Content-type': 'text/xml; charset=utf-8;',
'SOAPAction': "http://www.portalfiscal.inf.br/nfe/wsdl/%s" % action,
'Accept': 'application/soap+xml; charset=utf-8', 'Accept': 'application/soap+xml; charset=utf-8',
} }
return { return {
'Content-type': 'application/soap+xml; charset=utf-8; action="http://www.portalfiscal.inf.br/nfe/wsdl/%s"' % action,
'Accept': 'application/soap+xml; charset=utf-8',
'Content-type': 'application/soap+xml; charset=utf-8;',
'SOAPAction': 'http://www.portalfiscal.inf.br/nfe/wsdl/%s' % action,
} }
def post_soap(self, xml_soap, cabecalho, send_raw): def post_soap(self, xml_soap, cabecalho, send_raw):
header = self._headers(cabecalho.soap_action, send_raw) header = self._headers(cabecalho.soap_action, send_raw)
urllib3.disable_warnings(category=InsecureRequestWarning) urllib3.disable_warnings(category=InsecureRequestWarning)
res = requests.post(self.url, data=xml_soap,
res = requests.post(self.url, data=xml_soap.encode('utf-8'),
cert=(self.cert_path, self.key_path), cert=(self.cert_path, self.key_path),
verify=False, headers=header) verify=False, headers=header)
return res.text return res.text

26
pytrustnfe/nfe/__init__.py

@ -19,19 +19,21 @@ from pytrustnfe.exceptions import NFeValidationException
def _build_header(method, **kwargs): def _build_header(method, **kwargs):
action = { action = {
'NfeAutorizacao': ('NfeAutorizacao', '3.10'),
'NfeRetAutorizacao': ('NfeRetAutorizacao', '3.10'),
'NfeConsultaCadastro': ('CadConsultaCadastro2', '2.00'),
'NfeInutilizacao': ('NfeInutilizacao2', '3.10'),
'RecepcaoEventoCancelamento': ('RecepcaoEvento', '1.00'),
'RecepcaoEventoCarta': ('RecepcaoEvento', '1.00'),
'NFeDistribuicaoDFe': ('NFeDistribuicaoDFe/nfeDistDFeInteresse',
'1.00'),
'RecepcaoEventoManifesto': ('RecepcaoEvento', '1.00'),
'NfeAutorizacao': ('NfeAutorizacao', '3.10', 'NfeAutorizacao/nfeAutorizacaoLote'),
'NfeRetAutorizacao': ('NfeRetAutorizacao', '3.10', 'NfeRetAutorizacao/nfeRetAutorizacaoLote'),
'NfeConsultaCadastro': ('CadConsultaCadastro2', '2.00', 'CadConsultaCadastro2/consultaCadastro2'),
'NfeInutilizacao': ('NfeInutilizacao2', '3.10', 'NfeInutilizacao2/nfeInutilizacaoNF2'),
'RecepcaoEventoCancelamento': ('RecepcaoEvento', '1.00', 'RecepcaoEvento/nfeRecepcaoEvento'),
'RecepcaoEventoCarta': ('RecepcaoEvento', '1.00', 'RecepcaoEvento/nfeRecepcaoEvento'),
'NFeDistribuicaoDFe': ('NFeDistribuicaoDFe/nfeDistDFeInteresse', '1.00', 'NFeDistribuicaoDFe/nfeDistDFeInteresse'),
'RecepcaoEventoManifesto': ('RecepcaoEvento', '1.00', 'RecepcaoEvento/nfeRecepcaoEvento'),
}
vals = {
'estado': kwargs['estado'],
'method': action[method][0],
'soap_action': action[method][2],
'versao': action[method][1]
} }
vals = {'estado': kwargs['estado'],
'soap_action': action[method][0],
'versao': action[method][1]}
return CabecalhoSoap(**vals) return CabecalhoSoap(**vals)

4
pytrustnfe/nfe/comunicacao.py

@ -12,9 +12,9 @@ from ..xml import sanitize_response
def _soap_xml(body, cabecalho): def _soap_xml(body, cabecalho):
xml = '<?xml version="1.0" encoding="utf-8"?>' xml = '<?xml version="1.0" encoding="utf-8"?>'
xml += '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header>' xml += '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><soap:Header>'
xml += '<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/' + cabecalho.soap_action + '">'
xml += '<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/' + cabecalho.method + '">'
xml += '<cUF>' + cabecalho.estado + '</cUF><versaoDados>' + cabecalho.versao + '</versaoDados></nfeCabecMsg></soap:Header><soap:Body>' xml += '<cUF>' + cabecalho.estado + '</cUF><versaoDados>' + cabecalho.versao + '</versaoDados></nfeCabecMsg></soap:Header><soap:Body>'
xml += '<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/' + cabecalho.soap_action + '">'
xml += '<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/' + cabecalho.method + '">'
xml += body xml += body
xml += '</nfeDadosMsg></soap:Body></soap:Envelope>' xml += '</nfeDadosMsg></soap:Body></soap:Envelope>'
return xml.rstrip('\n') return xml.rstrip('\n')

1
pytrustnfe/utils.py

@ -13,6 +13,7 @@ class CabecalhoSoap(object):
def __init__(self, **kwargs): def __init__(self, **kwargs):
self.versao = kwargs.pop('versao', '') self.versao = kwargs.pop('versao', '')
self.estado = kwargs.pop('estado', '') self.estado = kwargs.pop('estado', '')
self.method = kwargs.pop('method', '')
self.soap_action = kwargs.pop('soap_action', '') self.soap_action = kwargs.pop('soap_action', '')

2
setup.py

@ -2,7 +2,7 @@
from setuptools import setup, find_packages from setuptools import setup, find_packages
VERSION = "0.9.18"
VERSION = "0.9.19"
setup( setup(

Loading…
Cancel
Save