Browse Source

[FIX] Certifica que vamos usar a operação correta ao enviar a NFE

pull/160/head
Danimar Ribeiro 7 years ago
parent
commit
715ff36de4
  1. 28
      pytrustnfe/nfe/__init__.py
  2. 2
      setup.py

28
pytrustnfe/nfe/__init__.py

@ -38,26 +38,6 @@ def _generate_nfe_id(**kwargs):
item['infNFe']['ide']['cDV'] = chave_nfe[len(chave_nfe) - 1:] item['infNFe']['ide']['cDV'] = chave_nfe[len(chave_nfe) - 1:]
def _add_required_node(elemTree):
ns = elemTree.nsmap
if None in ns:
ns['ns'] = ns[None]
ns.pop(None)
prods = elemTree.findall('ns:NFe/ns:infNFe/ns:det/ns:prod', namespaces=ns)
for prod in prods:
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
def _add_qrCode(xml, **kwargs): def _add_qrCode(xml, **kwargs):
xml = etree.fromstring(xml) xml = etree.fromstring(xml)
inf_nfe = kwargs['NFes'][0]['infNFe'] inf_nfe = kwargs['NFes'][0]['infNFe']
@ -114,11 +94,6 @@ def _render(certificado, method, sign, **kwargs):
modelo = modelo.text if modelo is not None else '55' modelo = modelo.text if modelo is not None else '55'
if sign: if sign:
# Caso for autorização temos que adicionar algumas tags tipo
# cEan, cEANTrib porque o governo sempre complica e não segue padrão
if method == 'NfeAutorizacao':
xmlElem_send = _add_required_node(xmlElem_send)
signer = Assinatura(certificado.pfx, certificado.password) signer = Assinatura(certificado.pfx, certificado.password)
if method == 'NfeInutilizacao': if method == 'NfeInutilizacao':
xml_send = signer.assina_xml(xmlElem_send, kwargs['obj']['id']) xml_send = signer.assina_xml(xmlElem_send, kwargs['obj']['id'])
@ -158,7 +133,8 @@ def _send(certificado, method, **kwargs):
client = Client(base_url, transport=transport) client = Client(base_url, transport=transport)
port = next(iter(client.wsdl.port_types)) port = next(iter(client.wsdl.port_types))
first_operation = next(iter(client.wsdl.port_types[port].operations))
first_operation = [x for x in iter(
client.wsdl.port_types[port].operations) if "Zip" not in x][0]
with client.settings(raw_response=True): with client.settings(raw_response=True):
response = client.service[first_operation](xml) response = client.service[first_operation](xml)
response, obj = sanitize_response(response.text) response, obj = sanitize_response(response.text)

2
setup.py

@ -2,7 +2,7 @@
from setuptools import setup, find_packages from setuptools import setup, find_packages
VERSION = "0.10.3"
VERSION = "0.10.4"
setup( setup(

Loading…
Cancel
Save