Ir para conteúdo
  • Cadastre-se

dev botao

Dúvidas sobre Manifesto de NF-e


Jhonlenon Ribeiro
Ver Solução Respondido por Jhonlenon Ribeiro,
  • Este tópico foi criado há 2356 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde, estou com dúvidas sobre meu código....estou fazendo a manifestação da NF-e pra poder baixar o XML e dá entrada....depois de muitas falha no processo de baixar o xml sem certificado digital, acabei abandonando esse processo, minha duvidas é o seguinte na minha procedure de baixar o xml....tenho que manifestar a NF-e e depois tenho que aguardar uns 15 segundos pra poder baixar o xml...tentei fazer isso no mesmo processo mais dá documento não encontrando.......eu manifesto pelo chave de acesso...meu Código abaixo..

 

procedure TF_manifesta_nfe.ButBaixarXMLClick(Sender: TObject);
var ChNota: String;
var IDLote : String;
var CaminhoXML : String;
var MES_ANO : String;
begin
  MES_ANO         :='';
  ChNota          :='';
  MES_ANO  :=FormatDateTime('yyyymm',Date);
  if EditChave.Text = '' then
  begin
    if Application.MessageBox('Atenção...não existe chave de acesso para realizar o manifesto',
      'Sistema de Vendas - SYSPDV', MB_OK) = IDOK then
      EditChave.SetFocus;
    Abort;
  end;

  if ContarCaracteres(EditChave.Text) <> 44 then
  begin
       if Application.MessageBox
      ('Atenção...NF-e não tem 44 digitos...verifique a chave de acesso','SYSPDV', MB_OK) = IDOK then
    Abort;
  end;
  if Application.MessageBox('Para realizar o Download do XML da NF-e, será necessário fazer' +
                           ' a manifestação da nota. A SEFAZ entenderá que você recebeu a mercadoria!' +
                           ' Essa é uma operação que não poderá ser desfeita, deseja continuar?',
                           'Atenção!',mb_iconquestion+mb_yesno)=idyes then
  if not (DirectoryExists(ExtractFilePath(ParamStr(0)) +'XML\XML_NFE_DESTINADA\'+MES_ANO)) then
  begin
     forceDirectories(ExtractFilePath(ParamStr(0)) +'XML\XML_NFE_DESTINADA\'+MES_ANO);
  end;

  begin
    ChNota := Trim(EditChave.Text);
    DM.ACBrNFe1.Configuracoes.Arquivos.DownloadNFe.PathDownload  := ExtractFilePath(ParamStr(0)) +'XML\XML_NFE_DESTINADA\'+MES_ANO;
    ManifestaNota(ChNota);
    EnviaEventoDownload(ChNota);
    ProgressBar1.Visible:=False;
  end;
 

//--------Aqui é código da procedure ManifestaNota(ChNota);

procedure TF_manifesta_nfe.ManifestaNota(ChNFE: string);
var
lMsg : String;
var sCNPJ : String;
begin
    sCNPJ :='';
    DM.TB_empresa.Open;
    sCNPJ    :=DM.TB_empresaCNPJ.AsString;
    DM.ACBrNFe1.EventoNFe.Evento.Clear;
    with DM.ACBrNFe1.EventoNFe.Evento.Add do
    begin
        InfEvento.cOrgao       := 91;
        InfEvento.chNFe        := Trim(EditChave.Text);
        InfEvento.CNPJ         := sCNPJ;
        InfEvento.dhEvento     := Now;
        InfEvento.tpEvento     := teManifDestConfirmacao;
        InfEvento.versaoEvento :='1.00';
    end;

    DM.ACBrNFe1.EnviarEvento(1);

    if DM.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo <> '573' then
    begin
       //ShowMessage('Duplicidade de Evento!');
       //Abort;
    end
    else

    if DM.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo <> '135' then
    begin
        with DM.ACBrNFe1.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento do
        begin
            lMsg:=
            'Id: '+Id+#13+
            'tpAmb: '+TpAmbToStr(tpAmb)+#13+
            'verAplic: '+verAplic+#13+
            'cOrgao: '+IntToStr(cOrgao)+#13+
            'cStat: '+IntToStr(cStat)+#13+
            'xMotivo: '+xMotivo+#13+
            'chNFe: '+chNFe+#13+
            'tpEvento: '+TpEventoToStr(tpEvento)+#13+
            'xEvento: '+xEvento+#13+
            'nSeqEvento: '+IntToStr(nSeqEvento)+#13+
            'CNPJDest: '+CNPJDest+#13+
            'emailDest: '+emailDest+#13+
            'dhRegEvento: '+DateTimeToStr(dhRegEvento)+#13+
            'nProt: '+nProt;
        end;
        ShowMessage(lMsg);
    end
end;
 

//-------Aqui Download XML apois manifestar-----------

procedure TF_manifesta_nfe.EnviaEventoDownload(ChNFE: string);
var
Ret : String;
begin
    DM.TB_empresa.Open;
    DM.ACBrNFe1.DistribuicaoDFePorChaveNFe(UFtoCUF(DM.sUF),
                                    DM.TB_empresaCNPJ.AsString,
                                    ChNFE);
    if DM.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat <> 138 then
    begin
      Ret := DM.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.xMotivo;
      ShowMessage(Ret);
    end
    else
    begin

    end;
end;

Link para o comentário
Compartilhar em outros sites

  • Solution

Já resolvi o problema com esse codigo.....

procedure TF_manifesta_nfe.EnviaEventoDownload(ChNFE: string);
var
Ret : String;
begin
    DM.TB_empresa.Open;
    DM.ACBrNFe1.DistribuicaoDFePorChaveNFe(UFtoCUF(DM.sUF),
                                    DM.TB_empresaCNPJ.AsString,
                                    ChNFE);

   sXML     :=ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[0].XML;
    if DM.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.cStat <> 138 then
    begin
      //Ret := DM.ACBrNFe1.WebServices.DistribuicaoDFe.retDistDFeInt.xMotivo;
      //ShowMessage(Ret);
    end
    else
    begin

    end;
end;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Jhonlenon,

Só uma observação, o que você esta fazendo é a Manifestação do Destinatário e não Manifesto de NF-e.

Temos que tomar cuidado, pois existe o Manifesto de Documentos Fiscais Eletrônicos - MDF-e, que se trata de um outro documento fiscal eletrônico que não tem nada haver com o evento de Manifestação do Destinatário.

Fica ai a dica.

  • Obrigado 1
Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Isso Italo...o que preciso é a manifesto do destinatário mesmo....já aproveitando...estou querendo pegar o numero da NF-e pela consulta de NFe....mais não sem onde fica...já consigo a chave de acesso, valor e data emissão...mais falta o numero da NF-e...meu codigo

 j := DM.ACBrNFE1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Count -1;
    for i := 0 to j do
    begin
        //NR_NFE := DM.ACBrNFE1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.      
        VALOR_NFE := DM.ACBrNFE1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.vNF;
        CHAVE := DM.ACBrNFE1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.chNFe;
        DATA := DM.ACBrNFE1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.dhEmi;
        case DM.ACBrNFE1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.cSitNFe of
        snAutorizado : STATUS := 'AUTORIZADA';
        snDenegado   : STATUS := 'DENEGADA';
        snCancelado  : STATUS := 'CANCELADA';
        end;
        if CHAVE <> '' then
        GravaNotaBanco(CHAVE, STATUS,  VALOR_NFE, DATA);
    end;

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
22 minutos atrás, JHONLENON disse:

Isso Italo...o que preciso é a manifesto do destinatário mesmo....já aproveitando...estou querendo pegar o numero da NF-e pela consulta de NFe....mais não sem onde fica...já consigo a chave de acesso, valor e data emissão...mais falta o numero da NF-e...meu codigo

Só evite chamar a Manifestação da NF-e de manifesto, causa confusão com o MDFe como o Italo mencionou.

Se você tem a chave de acesso, tem o número... já que o número compôe a chave.

Dê uma olhada nas funções da unit pcnAuxiliar.pas:

function ExtrairModeloChaveAcesso(AChaveNFE: String): String;
function ExtrairUFChaveAcesso(AChaveNFE: String): Integer;
function ExtrairCNPJChaveAcesso(AChaveNFE: String): String;
function ExtrairSerieChaveAcesso(AChaveNFE: String): Integer;
function ExtrairNumeroChaveAcesso(AChaveNFE: String): Integer;
function ExtraircNFChaveAcesso(AChaveNFE: String): Integer;
function ExtrairTipoEmissaoChaveAcesso(aChaveNFe: String): Integer;

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores
47 minutos atrás, JHONLENON disse:

Não entendi muito essa função......

Basta chamar a função e passar a chave no parâmetro:

uses 
  pcnAuxiliar;        

[..]

CHAVE := DM.ACBrNFE1.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items.resNFe.chNFe;
NUMERO = ExtrairNumeroChaveAcesso(CHAVE);

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

Boa tarde, eu trabalho com uma tabela que armazena todas as notas que tenho disponível para dar manifesto do destinatário e, de tempo em tempo, minha aplicação executa a chamada para ver o que a sefaz disponibilizou de documento eletronico e verifico se possui o XML da nota para importar para o sistema.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2356 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.