Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Moderadores
Postado

Bom vamos ao começo

hoje o cancelamento é feito através de um evento

então o xml que foi autorizado vai sempre ser sempre autorizado 

e terá eventos vinculados a essa nf-e

e o xml não é mais alterado para que o formato antigo que modificava adicionando a parte de cancelamento

no componente veja que possui a propriedade NFeCancelada uma propriedade booleana

então é só verificar no seu sistema se tem o evento de cancelamento vinculado a nf-e e informar a propriedade antes de imprimir

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • 6 meses depois ...
Postado

Para saber se a nota fiscal cancelada:

==============================================

var sXML : string;
begin
  if tbl_vendas.active = false then exit;
  if tbl_vendas.recordcount = 0 then exit;
  sXML := tbl_vendas.fieldbyname('nfe_end_xml').asstring;
  if sxml = '' then
  BEGIN
    MESSAGEERRO('ARQUIVO XML AINDA NÃO FOI GERADO.');
    exit;
  END;
  try
    ACBrNFe1.Configuracoes.WebServices.Visualizar:=true;
    if FileExists(sxml) then
    begin
      bMensagem := true;
      ACBrNFe1.NotasFiscais.Clear;
      ACBrNFe1.NotasFiscais.LoadFromFile(sXML);
      ACBrNFe1.Consultar;

      if ACBrNFe1.NotasFiscais.Items[0].Confirmada then
      begin
        TBL_VENDAS.edit;
        TBL_VENDAS.FieldByName('nfe_end_xml').asstring := sXML;
        TBL_VENDAS.FieldByName('nfe_situacao').asinteger := 6;
        TBL_VENDAS.FieldByName('nfe_motivo').asstring := 'Autorizado o uso da NF-e';
        TBL_VENDAS.FieldByName('NFE_chave').AsString := copy(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID, (length(ACBrNFe1.NotasFiscais.Items[0].NFe.infNFe.ID)-44)+1, 44);
        TBL_VENDAS.FieldByName('nfe_data').asdatetime:=ACBrNFe1.WebServices.Consulta.DhRecbto;
        TBL_VENDAS.FieldByName('nfe_hora').asstring:=timetostr(ACBrNFe1.WebServices.Consulta.DhRecbto);
        TBL_VENDAS.FieldByName('nfe_protocolo').asstring:=ACBrNFe1.WebServices.Consulta.protocolo;
        TBL_VENDAS.post;
      end;
      if ACBrNFe1.WebServices.Consulta.cStat = 101 then //cancelada
      begin
        TBL_VENDAS.edit;
        TBL_VENDAS.FieldByName('nfe_end_xml').asstring := sXML;
        TBL_VENDAS.FieldByName('nfe_situacao').asinteger := 8;
        TBL_VENDAS.FieldByName('nfe_motivo').asstring := 'Cancelamento de NF-e homologado';
        TBL_VENDAS.FieldByName('nfe_data').asdatetime:=ACBrNFe1.WebServices.Consulta.DhRecbto;
        TBL_VENDAS.FieldByName('nfe_hora').asstring:=timetostr(ACBrNFe1.WebServices.Consulta.DhRecbto);
        TBL_VENDAS.FieldByName('nfe_protocolo').asstring:=ACBrNFe1.WebServices.Consulta.protocolo;
        TBL_VENDAS.post;
      end;

    end
    else
    begin
      application.messagebox('Arquivo XML não encontraddo!','Erro',mb_ok+mb_iconerror);
    end;

  except
    on E:exception do
    begin
      ACBrNFe1.Configuracoes.WebServices.Visualizar:=false;
      application.MessageBox(PAnsiChar('Erro ao consultar a NFe!'+#13+
                                       'Mensagem: '+E.message),'Erro',
                                       mb_ok+mb_iconerror);
    end;
  end;

 

======================================================================================================

Veja bem, se o cStat = 101 quer dizer que a nota foi cancelada na sefaz

 

uma vez que você detectou isto, basta colocar o comando:

      ACBrNFe1.danfe.nfecancelada:=true

antes do procedimento de imprimir o DANFE.

 

Espero que ajude.
 

Conectiva Soft - Automação Comercial - Visite nosso site: www.conectivasoft.com.br

Skype: [email protected]

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