Closed HiagoCardos closed 1 year ago
Boa noite @HiagoCardos O que você quer dizer com: "mas quando vou usar a função para gerar XML não tenho sucesso" ? Seria "deszipar" o conteúdo da resposta? Quando você consulta uma DF-e pela chave o conteúdo não vem em formato .zip, somente em lotes de NSU. Outra dúvida, você está consultado DF-e do CNPJ emissor ou destinatário? O documento já teve manifestação do destinatário (ciência da operação)?
Não sabia que pela chave não gerava o XML, quando fui testar pelo NSU não tinha no banco do SEFAZ, pela chave ele encontrava normalmente, mas não me repassava nenhum valor. CNPJ que estou pesquisando é destinatário, se teve manifestação não sei confirmar, é de um cliente meu, mas acredito que sim, estava testando com notas de 3 meses atrás.
@HiagoCardos eu falei que a resposta não vem compactada, mas pode variar de SEFAZ autorizador ou tamanho do xml. Como você sabe que consultando pela chave "pela chave ele encontrava normalmente, mas não me repassava nenhum valo."? Posta a consulta pesquisando pela chave e pelo nsu com conteúdo anonimizado. Como o seu CNPJ é o destinatário da DF-e você precisa manifestar "ciência da operação/confirmação da operação" para o xml ficar disponível para download. Exemplo: https://portal.fazenda.sp.gov.br/servicos/nfe/Paginas/Aplicativo-de-Manifesta%C3%A7%C3%A3o-do-Destinat%C3%A1rio.aspx
Mandei nessa imagem, parte da resposta que tenho, quando eu uso o descompactador que tem aqui, ele da um erro, mas ai provavelmente o motivo é o que você comentou, que não está compactado.
Só um comentário: porque não esse exemplo de fluxo para descompactar?
@leogregianin Esse precisa do NSU, e pelo NSU por algum motivo não encontra a nota no SEFAZ, não sei dizer o porque. Quando eu busco ele diz que o ultimo NSU é 000000000, e quando eu boto pra buscar o NSU 0, ele bloqueia por excesso de notas, mas quando eu mando buscar apenas 1 NSU, "1" mesmo sendo 1 ele não encontra, ou o correto "55789" salvo engano, ele diz que não encontra.
Quando eu busco a pela chave, e chega o NSU da chave, em sequencia busco o NSU dessa chave, não consigo encontrar nada.
E no caso do serviço que estou fazendo para o cliente, pela chave seria o modelo "ideal", pensei em buscar a chave, pegar o NSU dela e depois pesquisar novamente, mas como seria 2 pesquisas por vez, acabaria sendo inviavel, quando forem usadas muitas chaves.
@HiagoCardos na imagem está vindo conteúdo compactado sim (conteúdo dentro da tag doczip). Outra ponto importante se você reparar o schema é um procNFe e não um resNFe (sua dúvida se precisava ou não manifestação do destinatário). Acho que o problema é só seguir corretamente esse fluxo para descompactar. Exemplo:
zip_resposta = resposta.xpath('//ns:retDistDFeInt/ns:loteDistDFeInt/ns:docZip', namespaces=ns)[0].text
resposta_descompactado = DescompactaGzip.descompacta(zip_resposta)
texto_descompactado = etree.tostring(resposta_descompactado).decode('utf-8')
with open(f'{CHAVE}.xml', 'w+', encoding='UTF-8') as f:
f.write(texto_descompactado)
@juniortada Deu certo, eu estava usando o metodo que consta aqui, e por este dava esse erro que comentei, troquei para o que você enviou, só adicionei 2 linhas a mais e funcionou corretamente.
# Gerar XML
resposta = etree.fromstring(xml.text.encode('utf-8'))
ns = {'ns': NAMESPACE_NFE}
zip_resposta = resposta.xpath('//ns:retDistDFeInt/ns:loteDistDFeInt/ns:docZip', namespaces=ns)[0].text
resposta_descompactado = DescompactaGzip.descompacta(zip_resposta)
texto_descompactado = etree.tostring(resposta_descompactado).decode('utf-8')
with open(f'{CHAVE}.xml', 'w+', encoding='UTF-8') as f:
f.write(texto_descompactado)
Muito obrigado pela ajuda, @leogregianin Dentro do fluxo que você enviou, tinha a resposta, mas acabei nem vendo direito pois achei que era o mesmo modo de descompactação que eu estava utilizando, mas só quando o @juniortada enviou o código que vi corretamente, apesar da diferença ser minima, há diferença.
Essa função, "consulta_distribuição", ela realiza o download do XML?
Estava tentando utilizar ela para baixar o XML da chave, mas não obtive sucesso, ele encontra a chave certinho, e me entrega os dados corretos, mas quando vou usar a função para gerar XML não tenho sucesso, não demonstra erro nem nada, apenas não gera nada.
E só como um extra, no caso desse método, é possivel baixar apenas os ultimos 3 meses, correto? Não sei se foi erro meu, ou se é limitação, mas pelos testes que fiz foi possivel dos ultimos 3 meses.