diff --git a/pynfe/processamento/mdfe.py b/pynfe/processamento/mdfe.py
index 7e2a87c..b5449d0 100644
--- a/pynfe/processamento/mdfe.py
+++ b/pynfe/processamento/mdfe.py
@@ -69,7 +69,6 @@ class ComunicacaoMDFe(Comunicacao):
# Monta XML do corpo da requisição
raiz = etree.Element('enviMDFe', xmlns=NAMESPACE_MDFE, versao=VERSAO_MDFE)
etree.SubElement(raiz, 'idLote').text = str(id_lote) # numero autoincremental gerado pelo sistema
- etree.SubElement(raiz, 'indSinc').text = str(ind_sinc) # 0 para assincrono, 1 para sincrono
raiz.append(manifesto)
# Monta XML para envio da requisição
@@ -96,13 +95,9 @@ class ComunicacaoMDFe(Comunicacao):
if ind_sinc == 1:
try:
# Protocolo com envio OK
- try:
- inf_prot = prot[0][0] # root protMDFe
- except IndexError:
- # Estados como GO vem com a tag header
- inf_prot = prot[1][0]
-
+ inf_prot = prot[1][0]
lote_status = inf_prot.xpath("ns:retEnviMDFe/ns:cStat", namespaces=ns)[0].text
+
# Lote processado
if lote_status == self._edoc_situacao_lote_processado:
prot_mdfe = inf_prot.xpath("ns:retEnviMDFe/ns:protMDFe", namespaces=ns)[0]
@@ -120,7 +115,7 @@ class ComunicacaoMDFe(Comunicacao):
return 1, retorno, manifesto
else:
# Retorna id do protocolo para posterior consulta em caso de sucesso.
- rec = prot[0][0]
+ rec = prot[1][0]
status = rec.xpath("ns:retEnviMDFe/ns:cStat", namespaces=ns)[0].text
# Lote Recebido com Sucesso!
if status == self._edoc_situacao_arquivo_recebido_com_sucesso:
@@ -195,9 +190,9 @@ class ComunicacaoMDFe(Comunicacao):
raiz = etree.Element(
'{%s}Envelope' % NAMESPACE_SOAP,
nsmap={
- 'xsi': NAMESPACE_XSI,
- 'xsd': NAMESPACE_XSD,
- 'soap': NAMESPACE_SOAP
+ 'xsi': self._namespace_xsi,
+ 'xsd': self._namespace_xsd,
+ self._soap_version: self._namespace_soap
}
)
@@ -244,16 +239,14 @@ class ComunicacaoMDFe(Comunicacao):
try:
xml_declaration = ''
- # limpa xml com caracteres bugados para infNFeSupl em NFC-e
+ # limpa xml com caracteres bugados para infMDFeSupl em NFC-e
xml = re.sub(
- '(.*?)',
- lambda x: x.group(0).replace('<', '<').replace('>', '>').replace('&', ''),
+ '(.*?)',
+ lambda x: x.group(0).replace('<', '<').replace('>', '>').replace('amp;', ''),
etree.tostring(xml, encoding='unicode').replace('\n', '')
)
xml = xml_declaration + xml
xml = xml.encode('utf8') # necessário para o evento "CONSULTAR NÃO ENCERRADOS"
- # print(xml)
- # print('-' * 20)
# Faz o request com o servidor
result = requests.post(
diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py
index 575b5fe..b7ddc98 100644
--- a/pynfe/processamento/serializacao.py
+++ b/pynfe/processamento/serializacao.py
@@ -938,13 +938,12 @@ class SerializacaoQrcodeMDFe(object):
# adiciona tag infMDFeSupl com qrcode
infMDFeSupl = etree.Element('infMDFeSupl')
etree.SubElement(infMDFeSupl, 'qrCodMDFe').text = f''
-
mdfe.insert(1, infMDFeSupl)
- # correção da tag qrCodMDFe
+ # correção da tag qrCode, retira caracteres pois e CDATA
tmdfe = etree.tostring(mdfe, encoding='unicode')
etree.tostring(mdfe.find('.//qrCodMDFe'), encoding='unicode') \
- .replace('\n','').replace('<','<').replace('>','>').replace('amp;','')
+ .replace('\n', '').replace('<', '<').replace('>', '>').replace('amp;', '')
mdfe = etree.fromstring(tmdfe)
if return_qr:
@@ -1126,7 +1125,7 @@ class SerializacaoMDFe(Serializacao):
etree.SubElement(infANTT, 'RNTRC').text = modal_rodoviario.rntrc
# CIOT
- if len(modal_rodoviario.ciot) > 0:
+ if modal_rodoviario.ciot != None:
for num, item in enumerate(modal_rodoviario.ciot):
infCIOT = etree.SubElement(infANTT, 'infCIOT')
etree.SubElement(infCIOT, 'CIOT').text = item.numero_ciot
@@ -1136,7 +1135,7 @@ class SerializacaoMDFe(Serializacao):
etree.SubElement(infCIOT, 'CNPJ').text = item.cpfcnpj
# Vale Pedágio
- if len(modal_rodoviario.pedagio) > 0:
+ if modal_rodoviario.pedagio != None:
valePed = etree.SubElement(infANTT, 'valePed')
for num, item in enumerate(modal_rodoviario.pedagio):
disp = etree.SubElement(valePed, 'disp')
@@ -1149,7 +1148,7 @@ class SerializacaoMDFe(Serializacao):
etree.SubElement(disp, 'vValePed').text = '{:.2f}'.format(item.valor_pedagio or 0) # Valor do ICMS
# Contratantes
- if len(modal_rodoviario.contratante) > 0:
+ if modal_rodoviario.contratante != None:
for num, item in enumerate(modal_rodoviario.contratante):
infContratante = etree.SubElement(infANTT, 'infContratante')
etree.SubElement(infContratante, 'xNome').text = item.nome
@@ -1185,7 +1184,7 @@ class SerializacaoMDFe(Serializacao):
etree.SubElement(prop, 'tpProp').text = modal_rodoviario.veiculo_tracao.proprietario.tipo
# condutor 1-n
- if len(modal_rodoviario.veiculo_tracao.condutor) > 0:
+ if modal_rodoviario.veiculo_tracao.condutor != None:
for num, item_condutor in enumerate(modal_rodoviario.veiculo_tracao.condutor):
condutor = etree.SubElement(veicTracao, 'condutor')
etree.SubElement(condutor, 'xNome').text = item_condutor.nome_motorista
@@ -1198,7 +1197,7 @@ class SerializacaoMDFe(Serializacao):
# fim-veicTracao
# Veículos reboque 1-n
- if len(modal_rodoviario.veiculo_reboque) > 0:
+ if modal_rodoviario.veiculo_reboque != None:
for num, item_reboque in enumerate(modal_rodoviario.veiculo_reboque):
veicReboque = etree.SubElement(rodo, 'veicReboque')
etree.SubElement(veicReboque, 'cInt').text = item_reboque.cInt
diff --git a/pynfe/utils/webservices.py b/pynfe/utils/webservices.py
index 31f87ae..9e45e80 100644
--- a/pynfe/utils/webservices.py
+++ b/pynfe/utils/webservices.py
@@ -503,8 +503,8 @@ NFSE = {
MDFE = {
# unico autorizador de MDF-e
'SVRS': {
- 'RECEPCAO': 'mdferecepcao/MDFeRecepcao.asmx',
- 'RECEPCAO_SINC': 'mdferecepcao/MDFeRecepcaoSinc.asmx',
+ 'RECEPCAO': 'MDFeRecepcao/MDFeRecepcao.asmx',
+ 'RECEPCAO_SINC': 'MDFeRecepcaoSinc/MDFeRecepcaoSinc.asmx',
'RET_RECEPCAO': 'mdferetrecepcao/MDFeRetRecepcao.asmx',
'EVENTOS': 'mdferecepcaoevento/MDFeRecepcaoEvento.asmx',
'CONSULTA': 'mdfeconsulta/MDFeConsulta.asmx',