diff --git a/pynfe/processamento/comunicacao.py b/pynfe/processamento/comunicacao.py index c56549b..a3260b5 100644 --- a/pynfe/processamento/comunicacao.py +++ b/pynfe/processamento/comunicacao.py @@ -44,6 +44,7 @@ class ComunicacaoSefaz(Comunicacao): _versao = VERSAO_PADRAO _assinatura = AssinaturaA1 _namespace = NAMESPACE_NFE + _header = False def autorizacao(self, modelo, nota_fiscal, id_lote=1, ind_sinc=1): """ @@ -462,10 +463,33 @@ class ComunicacaoSefaz(Comunicacao): pass return self.url + def _cabecalho_soap(self, metodo): + """Monta o XML do cabeçalho da requisição SOAP""" + + raiz = etree.Element('nfeCabecMsg', xmlns=NAMESPACE_METODO+metodo) + if metodo == 'RecepcaoEvento': + etree.SubElement(raiz, 'versaoDados').text = '1.00' + elif metodo == 'NfeConsultaDest': + etree.SubElement(raiz, 'versaoDados').text = '1.01' + elif metodo == 'NfeDownloadNF': + etree.SubElement(raiz, 'versaoDados').text = '1.00' + elif metodo == 'CadConsultaCadastro2': + etree.SubElement(raiz, 'versaoDados').text = '2.00' + else: + etree.SubElement(raiz, 'versaoDados').text = VERSAO_PADRAO + etree.SubElement(raiz, 'cUF').text = CODIGOS_ESTADOS[self.uf.upper()] + return raiz + def _construir_xml_soap(self, metodo, dados): """Mota o XML para o envio via SOAP""" raiz = etree.Element('{%s}Envelope' % NAMESPACE_SOAP, nsmap={ 'xsi': NAMESPACE_XSI, 'xsd': NAMESPACE_XSD,'soap': NAMESPACE_SOAP}) + + if self._header: + cabecalho = self._cabecalho_soap(metodo) + c = etree.SubElement(raiz, '{%s}Header' % NAMESPACE_SOAP) + c.append(cabecalho) + body = etree.SubElement(raiz, '{%s}Body' % NAMESPACE_SOAP) a = etree.SubElement(body, 'nfeDadosMsg', xmlns=NAMESPACE_METODO+metodo) a.append(dados)