Closed ThalisonSantos closed 7 years ago
Não esta. Agora você tem que fazer uma manifestação com ciência da operação e depois um distribuição passando a chave. No appTeste tem esse exemplo.
Se quiser remover para nós fique a vontade. Vou colocar sua issue como melhoria para remover isso do componente.
Obrigado.
pensei que era tipo a opção de download do xml no site da sefaz
robertorp, aproveitando sua ilustre presença você saberia dizer que tipo de método posso usar para ver as notas emitidas para um CNPJ especifico?
Melhor criar outra issue para essa pergunta, se misturarmos as coisas fica confuso para uma pessoa que pegar essa issue para resolver
ok vou fechar esse e abrir outra issue
@ThalisonSantos veja a issue https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/issues/472.
Agora deve ser usado o método de Distribuição DF-e.
onde consigo o nsu?
Cada documento possui um NSU (Número Sequencial Único), você pode buscar os documentos por NSU ou pela Chave de Acesso de cada documento. Para descobrir o NSU faça a consulta ao webservice que ele irá retornar os dados e entre eles o número do último NSU disponível, você pode ir baixando um a um.
@samuelrochaoliveira
eu consultei a nota pela chave mais não retornou nenhum NSU vc poderia me explicar pq estou voando
Vamos lá, você está consultando direto no AppTeste? Ou está consultando dentro do seu sistema? A nota pode ser do ambiente de Produção e você pode estar consultando no ambiente de Homologação.
estou consultando pelo AppTeste a nota é de produção
Primeiro manifeste a nota fiscal com Ciência da Operação. Só após você consegui efetuar o download.
Você pode consultar mais informações no FAQ oficial em: http://www.nfe.fazenda.gov.br/portal/perguntasFrequentes.aspx?tipoConteudo=yjOJMwFOkA0=
@ThalisonSantos eu particularmente não uso o NSU.
Pelo que eu entendi sobre ele, quando alguém emite um documento que referência minha NFe (CTe, MDFe, outra nfe para devolução) gera um novo NSU e para controlar a unica forma seria toda vez que foi fazer o download da NFe consultar ela antes para obter o NSU.
Posso estar redondamente enganado, são 7 da manhã e eu ainda to com fome, mas se não me engano é isso, acredito que o @samuelrochaoliveira ou o @robertorp podem te auxiliar melhor sobre o NSU, mas de qualquer forma segue minha rotina para download
using (var servicoNFe = new NFe.Servicos.ServicosNFe(ZeusConfig))
{
var retornoManifestacao = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idlote: 1,
sequenciaEvento: 1,
chavesNFe: lote.ToArray(),
tipoEventoManifestacaoDestinatario: NFe.Classes.Servicos.Tipos.TipoEventoManifestacaoDestinatario.TeMdCienciaDaEmissao,
cpfcnpj: Sessao.EmpresaLogada.Cnpj,
justificativa: null);
//Por algum motivo depois da ciencia da operação deve-se aguardar um pouco ou vai dar erro no download
Thread.Sleep(1500);
foreach (string chaveNFe in lote)
{
try
{
var retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(Sessao.EmpresaLogada.Endereco.Cidade.Uf.ToString(),
Sessao.EmpresaLogada.Cnpj, chNFE: chaveNFe);
if (retornoNFeDistDFe.Retorno.loteDistDFeInt == null)
throw new Exception(retornoNFeDistDFe.Retorno.xMotivo);
if ((retornoNFeDistDFe.Retorno.loteDistDFeInt.Count()) > 0)
{
var xmlBytes = retornoNFeDistDFe.Retorno.loteDistDFeInt[0].XmlNfe;
string xmlStr = NFe.Utils.Compressao.Unzip(xmlBytes);
GArquivos.ExcluirArquivo(GArquivos.CombinarDiretorio(path, $"{chaveNFe}.xml"));
GArquivos.EscreverTexto(GArquivos.CombinarDiretorio(path, $"{chaveNFe}.xml"), xmlStr);
resposta.AppendLine($"{chaveNFe} - OK");
}
}
catch(Exception ex)
{
resposta.AppendLine($"{chaveNFe} - {ex.Message}");
}
}
}
Aonde: "Lotes" é uma List
Repare que não precisei informar o NSU, ultimoNSU e afins pois eu informei a chave.
Abraço
É isso mesmo que o Marcos Gerene falou.. toda vez que um evento é registrado a um DFe, um novo NSU é gerado, quer dizer que para o CNPJ consultado podem ter 500 NSUs disponíveis e só 50 serem notas fiscais. Eu faço da seguinte maneira, PRIMEIRO consulto pelo NSU armazeno e obtenho a chave de acesso SÓ DEPOIS eu faço a consulta pela chave e baixo os documentos, faço isso para manter o histórico das consultas. Espero ter ajudado, abraços.
@marcosgerene e @samuelrochaoliveira entendi obrigado pela dicas
@ThalisonSantos se o seu problema foi resolvido por favor feche a issue
@marcosgerene só para complementar este issue, o Thread.Sleep()
é necessário pois se tentar baixar o documento no mesmo instante que manifestar ele não estará "disponível" para download, seu tempo médio de espera foi menor, fiz testes com 5 segundos enquanto estava desenvolvendo mas realmente o caminho é esse.
Se já tiver manifestado alguma vez não tem problema, mas se for a primeira vez o documento não estará elegível para download ainda, é só aguardar um pouco até o evento "bater" na SEFAZ que já pode baixar.
Abraços.
Boa tarde senhores, sempre que uso essa opção da retorno 109 serviço paralisado sem previsão