Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3697 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores
Postado

Quando vc executa ACBrNFe1.ConsultaNFeDest um dos campos retornados é a situação atual de manifestação da nota.

Veja a propriedade AcbrNFe1.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[j].resNFe.cSitConf;

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.xpos.com.br
Postado (editado)

Dei uma olhada no projeto de Exemplo do AcbrNFe2 porém ainda não ficou claro para mim André. Poderia me da uma força?  Vi que a propriedade citada por você é do tipo TpcnSituacaoManifDest. Gostaria de fazer algo do tipo. Caso a nota ainda não tenha sido manifestada o sistema se comportasse de uma maneira, caso ela tenha sido Manifestada o sistema não mostrar uma mensagem na tela e iria fazer o download do XML normalmente. 

 

Estou tentando fazer assim 

  if ImportacaoXMLDTM.ACBRXML.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[0].resNFe.cSitConf <> smdCiencia then

porém essa linha me retorna um erro Argument Out of Range. 

 

Tento fazer o Download apenas de uma XML sempre.

Desde já agradeço a atenção;

 

Editado por Renier Padilha
Postado

Ok. Vi que ele retorna uma String. Estou tentando usar da seguinte maneira 

 SituaçãoXML := SituacaoManifDestToStr( ImportacaoXMLDTM.ACBRXML.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[0].resNFe.cSitConf);

e estou obtendo o seguinte erro = (out of bound) -76 quando Debugo e o seguinte erro 'Argumento Out Of Range'.

 

Desconfio que o erro ocorre por não ter nenhum item na ppropriedate  'ret.Items[0]'

 

Caso ocorra o erro for esse como faço para setar essas propriedades.

  • Consultores
Postado

Bom dia Renier,

 

O que você acha, antes de ler a propriedade que encontra-se dentro de uma lista, checar se essa lista possui pelo menos um elemento?

 

     j := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Count -1;
 
     for i := 0 to j do
      begin
       if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items.resNFe.chNFe <> ''
        then begin
         sChave := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items.resNFe.chNFe;
         (...)
        end; // if
      end; // for 

 

Se a lista tiver apenas um elemento o valor de j será zero desta forma o valor de i vai variar de zero até zero, ou seja vai ler o primeiro e único elemento da lista "ret"

 

Por outro lado se a lista tem 10 elementos o valor de j será 9, sendo assim o valor de i vai variar de zero até 9.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado (editado)

Bom dia e obrigado pela dica Italo.

 

O Problema é exatamente esse. a lista está vazia. Andei procurando e não encontrei como eu vou preenche-la. Preciso verificar se a nota já foi manifestada. Vi que a função SituacaoManifDestToStr retorna uma string do status de manifestação. Caso a nota já tenha sido manifestada o XML será baixado sem passar na função de manifestação. Caso não tenha sido manifestada o sistema vai manifestar a nota primeiro e depois fazer o download. Estou tentando fazer da seguinte maneira

 

Não estou preocupado no tamanho da lista já que irei consultar/baixar UM arquivo XML por vez. Não sei se consegui ser claro.

 

Enfim o Download já consigo fazer desde que a nota já tenha sido manifestada anteriormente. Caso ela não tenha sido manifestada tenho que tentar fazer o download 2 vezes para de fato conseguir baixar o XML. 

 

Anexo Segue o modo que estou tentando fazer

Download XML.txt

Editado por Renier Padilha
  • Consultores
Postado

Renier,

 

Por favor não post código ou fragmento de código como texto, procure anexar o mesmo, o post fica mais curto.

 

Outra coisa, você leu a Nota Técnica que trata sobre a Manifestação do Destinatário?

 

Mais precisamente sobre o Download?

 

Você esta ciente que o empresa que tentar realizar o download da totalidade das notas emitidas contra o seu CNPJ poderá ser bloqueada?

 

Se a sua aplicação obtêm a lista de notas emitidas contra o seu CNPJ e realiza a manifestação, é a sua aplicação que tem que ter esse controle.

Não vejo a necessidade de realizar uma segunda consulta para saber se as notas estão manifestadas ou não.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Ok Italo. Desculpe pelo post enorme. Já corrigi.

 

Enfim! Sim eu li. Estou ciente que a Sefaz tem um controle do download dos arquivos XMLs. Estou ciente também que o dono do comércio deve solicitar imediatamente ao fornecedor que o mesmo o envie o XML. O sistema vai apenas dar a opção para o usuário fazer o download do XML. Queria que o sistema funcionasse de maneira transparente para o cliente. Ou seja o cliente entra com a chave da NFE em um EDIT e clica em baixar XML. O Sistema teria que verificar se aquela Chave já foi manifestada. Caso já tenha sido ela apenas faz o Download da XML caso não tenha sido, ela manifesta e posteriormente ela baixa o XML.

 

Estou com dificuldades de verificar esse status de manifestação de uma determinada nota. 

  • Consultores
Postado

Boa tarde Renier,

 

Ao fazer a consulta das NF-e Destinadas temos como uma das respostas a chave da NF-e.

 

Crie uma tabela no seu banco de dados com o retorno da consulta e um campo que diz se a nota foi manifestada ou não e qual é a manifestação.

 

Dica: esse campo pode ser Integer, ao realizar a consulta atribua o valor zero a esse campo, ao realizar a manifestação atribua a ele o código do evento de manifestação, lembre-se que são 4 manifestações diferentes.

 

Um segundo campo que informa se o download da nota foi realizado ou não.

 

Na tela de Download você apresenta a lista de notas cujo campo de download = N e campo manifestação <> 0.

 

Em vez do usuário digitar a chave ele apenas seleciona a nota desejada da lista.

 

Se a nota deseja não constar dessa lista significa que a mesma não foi manifestada ou já foi feito o seu download.

 

Na lista de nota serem manifestadas se ela não constar significa que deve ser feita uma nova consulta.

 

Como lhe disse, a sua aplicação tem que controlar.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Pelo que vi no projeto de exemplo para consultar as NFE Destinadas tenho que usar a seguinte função

 

      ImportacaoXMLDTM.ACBRXML.ConsultaNFeDest(CNPJ,
                                               StrToIndicadorNFe(ok,IntToStr(0)),                  
                                               StrToIndicadorEmissor(ok,IntToStr(0)),
                                               IntToStr(0));
 
Correto?
 
Caso for como faço para preencher a lista .WebServices.ConsNFeDest.retConsNFeDest.ret com as chaves do retorno da consulta.
 
Faço a consulta mas a lista continua vazia.
 
Obrigado pela atenção.
Postado (editado)

O único trecho de código que encontrei em relação ao exemplo citado é o que postei acima.

 

      ImportacaoXMLDTM.ACBRXML.ConsultaNFeDest(CNPJ,
                                               StrToIndicadorNFe(ok,IntToStr(0)),                  
                                               StrToIndicadorEmissor(ok,IntToStr(0)),
                                               IntToStr(0));
Porém  a lista ImportacaoXMLDTM.ACBRXML.WebServices.ConsNFeDest.retConsNFeDest.ret continua sem ser preenchida por nenhum registro.
Editado por Renier Padilha
  • Consultores
Postado

Renier,

 

Você não analisou o exemplo a fundo.

 

Você notou que o ConsultaNFeDest esta dentro de um Repeat ... Until ?

 

Você notou que ao passar o último parâmetro o mesmo não é sempre zero?

Este parâmetro se refere ao último NSU que é lido e armazenado na variável sUltimoNSU (linha 24) e que depois é passado para o edtUltNSU (linha 38).

 

Exitem relatos no fórum de outros colegas que para começar a receber as primeiras notas foi necessário realizar dezenas de consultas.

 

Outra coisa, o componente esta configurado para o ambiente de produção, pois se estiver como homologação, você não vai retornar nada, a não ser que alguém esteja emitindo nota contra o seu CNPJ no ambiente de homologação.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Italo,

 

Provavelmente meu ACBR deve estar desatualizado. No meu exemplo não existe tal repetição.A única parte do código que o trecho ConsultaNFeDest é na ação do botão btnNfeDestinadasClick que executa apenas uma vez a função.

  • Este tópico foi criado há 3697 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...