Ir para conteúdo
  • Cadastre-se

dev botao

Cancelamento Nfe


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

Recommended Posts

Postado

Bom dia !  Estou tentando cancelar uma nota fiscal e aparece a mensagem "Erro não catalogado - Nao foi possivel obter a versão"

 

 

Eu atualizei os componentes hoje e baixei a pasta schemas. mas continua com a mesma mensagem, o que pode ser ? 

Postado

procedure TFormCad_NFSaida.ImgCancelClick(Sender: TObject);
var
  trs : TTransactionDesc;
  xtexto: String;
  DataSet: TClientDataSet;
begin

  inherited;

  DataSet := CDS_NFSAIDA;

  if DataSet.IsEmpty then
    exit;

  if (DataSet.FieldByName('MODELONOTA').AsString = '55') and (habnfe) then
  begin
    if DataSet.FieldByName('CODSTATUSNFE').AsString = '100' then
    begin
      if InputQuery(Application.Title,'Justificativa',xtexto) then
      begin

        if ((DataSet.FieldByName('SERIENOTA').AsString >= IntToStr(900)) and
           (DataSet.FieldByName('SERIENOTA').AsString <= IntToStr(999))) then
          ACBrNFe1.Configuracoes.Geral.FormaEmissao := teSCAN
        else
          ACBrNFe1.Configuracoes.Geral.FormaEmissao := teNormal;

        TGeraClasse.CancelarNFe(DataSet.FieldByName('IDNF').AsInteger,
        ACBrNFe1,xtexto,DCad.QR_NFe);
        Data.Refresh;
      end;
    end
    else
      raise Exception.Create('Status inválido para cancelamento de nota fiscal.');
  end
  else
    if DataSet.FieldByName('CANC').AsString = 'S' then
    begin
      if MessageBox(Application.Handle,'A nota Fiscal selecionada já está cancelada.'+#13+#13+
      'Deseja reativá-la?',PAnsiChar(Application.Title),MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON2) =  ID_YES then
      begin
        try
          trs.TransactionID := TimeToInteger;
          trs.IsolationLevel := xilREADCOMMITTED;
          DCad.QR_NOTAFISCAL.SQLConnection.StartTransaction(trs);
          with DCad.QR_NOTAFISCAL do
          begin
            Close;
            CommandText := '';
            CommandText := 'UPDATE NF SET CANC = NULL, DATACANC = NULL ' +
            'WHERE IDNF = :cod';
            Params.ParamByName('cod').AsInteger := DataSet.FieldByName('IDNF').AsInteger;
            ExecSQL;
            DCad.QR_NOTAFISCAL.SQLConnection.Commit(trs);
            Close;
            DataSet.Close;
            DataSet.Open;
          end;
        except
          on E:Exception do
          begin
            DCad.QR_NOTAFISCAL.SQLConnection.Rollback(trs);
            raise Exception(E.Message);
          end;
        end;
      end;
    end
    else
      if MessageBox(Application.Handle,'Deseja realmente cancelar a nota fiscal selecionada?',
      PAnsiChar(Application.Title),MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON2) =  ID_YES then
      begin
        try
          trs.TransactionID := TimeToInteger;
          trs.IsolationLevel := xilREADCOMMITTED;
          DCad.QR_NOTAFISCAL.SQLConnection.StartTransaction(trs);
          with DCad.QR_NOTAFISCAL do
          begin
            Close;
            CommandText := '';
            CommandText := 'UPDATE NF SET CANC = :st, DATACANC = :dt ' +
            'WHERE IDNF = :cod';
            Params.ParamByName('cod').AsInteger := DataSet.FieldByName('IDNF').AsInteger;
            Params.ParamByName('st').AsString := 'S';
            Params.ParamByName('dt').AsString := FormatDateTime('mm/dd/yyy',Date);
            ExecSQL;
            DCad.QR_NOTAFISCAL.SQLConnection.Commit(trs);
            Close;
            DataSet.Close;
            DataSet.Open;
          end;
        except
          on E:Exception do
          begin
            DCad.QR_NOTAFISCAL.SQLConnection.Rollback(trs);
            raise Exception(E.Message);
          end;
        end;
      end;

end; 

Postado

Eu questionei na outra pagina mas acho que foi na pagina errada, me desculpem, eu gostaria de saber se quem usa o acbrnfemonitor tbem tem de fazer as alterações no sistema, porque eu uso diretamente o acbrnfemonitor para cancelar, e não via sistema, se for o caso como posso atualizar o meu acbrnfemonitor??? muito obrigado pela atenção...

Postado

Poste o método que realmente faz o cancelamento:

TGeraClasse.CancelarNFe(DataSet.FieldByName('IDNF').AsInteger, ACBrNFe1,xtexto,DCad.QR_NFe);

 

Antes, configure seu componente assim:

ACBrNFe1.Configuracoes.Geral.Salvar := True;
ACBrNFe1.Configuracoes.Geral.PathSalvar := {Pasta}

 

Fazendo isso, o componente vai salvar os pedidos e respostas da Sefaz na pasta informada em "PathSalvar".

Dê uma analisada no arquivo: {número do lote}-ped-evento.xml e compare com a estrutura deste aqui:

 

<?xml version="1.0"?>
-<envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe">
   <idLote>0</idLote>
  -<evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe">
    -<infEvento Id="ID1101113513040726711800012055000000000119153254924401">
       <cOrgao>35</cOrgao>
       <tpAmb>2</tpAmb>
       <CNPJ>07267118000120</CNPJ> 
       <chNFe>35130407267118000120550000000001191532549244</chNFe>
       <dhEvento>2013-04-05T10:54:56-03:00</dhEvento>
       <tpEvento>110111</tpEvento>
       <nSeqEvento>1</nSeqEvento>
       <verEvento>1.00</verEvento>
      -<detEvento versao="1.00">
         <descEvento>Cancelamento</descEvento>
         <nProt>135130002187265</nProt>
         <xJust>TESTE DE CANCELAMENTO POR EVENTO</xJust>
       </detEvento>
     </infEvento>
    -<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      -<SignedInfo>
         <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
         <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
        -<Reference URI="#ID1101113513040726711800012055000000000119153254924401">
          -<Transforms>
             <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
             <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
           </Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
           <DigestValue>h0oTp/oQN7z+HGG2XAx+cDgnv8o=</DigestValue>
         </Reference>
       </SignedInfo>
       <SignatureValue>
         FkpMeg2yryz63eMAHUSFFENETNiMS7fF4TD8odyrZSUYdXglnhoUZF7l3EBDb7FzKdaOWPJVm3AXmzgPkizY/mqBkIBMB/CPC6+Dizw6RtVEOcgoXKoOIUIpmBjNNsNWlztkiRBWY6GAiEh/R3OVTjNA3DrlCmgfBbapubsIsAk=
       </SignatureValue>
        -<KeyInfo>
          -<X509Data>
            <X509Certificate>
              MIIGyzCCBbOgAwIBAgIQcVFxF8/yU13Ey0JPHheXnzANBgkqhkiG9w0BAQUFADB0MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDEtMCsGA1UECxMkQ2VydGlzaWduIENlcnRpZmljYWRvcmEgRGlnaXRhbCBTLkEuMSEwHwYDVQQDExhBQyBDZXJ0aXNpZ24gTXVsdGlwbGEgRzMwHhcNMTAwNjExMDAwMDAwWhcNMTMwNjA5MjM1OTU5WjCCARkxCzAJBgNVBAYTAkJSMRMwEQYDVQQKFApJQ1AtQnJhc2lsMRQwEgYDVQQLFAtJRCAtIDkzMjIwOTE4MDYGA1UECxQvQXV0ZW50aWNhZG8gcG9yIENlcnRpc2lnbiBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwxGzAZBgNVBAsUEkFzc2luYXR1cmEgVGlwbyBBMzEUMBIGA1UECxQLKEVNIEJSQU5DTykxFDASBgNVBAsUCyhFTSBCUkFOQ08pMTQwMgYDVQQDEytSR0IgSU5EVVNUUklBIEUgQ09NRVJDSU8gREUgQ09ORkVDQ09FUyBMVERBMSYwJAYJKoZIhvcNAQkBFhdzaWx2aWFAcmdiYnJhc2lsLmNvbS5icjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxJV/wvD0tylh9KS4f+Yd8YCyq5HjkYQh950znAW9BW1qtlO2X1bHS2scWDbedOfk2yoVceN/Z9+jIhfa8DHeHwB07FiOporPSCVZLESnwNKGxFFuPOGmCi97LwTKLK88RX0gcR2c54tqDPMuUclDnz7zheclCvHoxvopXdQbmnMCAwEAAaOCAzQwggMwMIGvBgNVHREEgacwgaSgOAYFYEwBAwSgLwQtMjcwMjE5NjkxMTg3MzY4NDgyNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwoBsGBWBMAQMCoBIEEFNJTFZBIE1BUklBIExJUkGgGQYFYEwBAwOgEAQOMDcyNjcxMTgwMDAxMjCgFwYFYEwBAwegDgQMMDAwMDAwMDAwMDAwgRdzaWx2aWFAcmdiYnJhc2lsLmNvbS5icjAJBgNVHRMEAjAAMB8GA1UdIwQYMBaAFISwQjM0o0IlpSiXPoPrd/DoT8JUMA4GA1UdDwEB/wQEAwIF4DCCASUGA1UdHwSCARwwggEYMFygWqBYhlZodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0NlcnRpc2lnbk11bHRpcGxhRzMvTGF0ZXN0Q1JMLmNybDBboFmgV4ZVaHR0cDovL2ljcC1icmFzaWwub3V0cmFsY3IuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9BQ0NlcnRpc2lnbk11bHRpcGxhRzMvTGF0ZXN0Q1JMLmNybDBboFmgV4ZVaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5nb3YuYnIvbGNyL0NlcnRpc2lnbi9BQ0NlcnRpc2lnbk11bHRpcGxhRzMvTGF0ZXN0Q1JMLmNybDBVBgNVHSAETjBMMEoGBmBMAQIDBTBAMD4GCCsGAQUFBwIBFjJodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2RwYzAdBgNVHSUEFjAUBggrBgEFBQcDBAYIKwYBBQUHAwIwgaAGCCsGAQUFBwEBBIGTMIGQMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5jZXJ0aXNpZ24uY29tLmJyMGQGCCsGAQUFBzAChlhodHRwOi8vaWNwLWJyYXNpbC5jZXJ0aXNpZ24uY29tLmJyL3JlcG9zaXRvcmlvL2NlcnRpZmljYWRvcy9BQ19DZXJ0aXNpZ25fTXVsdGlwbGFfRzMucDdjMA0GCSqGSIb3DQEBBQUAA4IBAQBXIlNMn8P5qns/cLAVBWB9nk0oopWU2uBJdd02cXHt3KYjWO73zK5HMhXByItBMp3IV7hWtQlloxbo9llA6ON0QJ/5++E6hU/0GzdQfvDYL0A4uKawT/KaEAyAuraPgyFppuzii5wTLy0QAE/gjChkgA9NZpgGM5swpFtYYBbDNS5h5v9sb2I28uHM4AFAb+kUlvjNMuofJhdEbwm6DSqhiQ3vid42K/Mox1ShJKOlB5IO7Wh8jqs8h6HVk729deiS6nKdXCTYB3ZH3WLSj8EZl7MrFOM/WSwbu9n4wuNysavgIYbGBB5Ri4HOvB8ipOAokqW+lDFChdE4GzzMsO3w
           </X509Certificate>
         </X509Data>
       </KeyInfo>
     </Signature>
   </evento>
 </envEvento>

 

Peterson de Cerqueira Matos
[email protected]
Vivo: (11) 97197-1474 / Oi: (11) 98059-4055

Postado

class procedure TGeraClasse.CancelarNFe(ADBID: Integer; ANFe: TACBrNFe;
  AJustificativa: String; DataSet: TDataSet);
var trs: TTransactionDesc;
    sql: TStringList;
    ftrans: TpcnTipoEmissao;
    BlobStream : TStream;
    StrStream: TStringStream;
begin
  try
    sql := TStringList.Create;

    with TSQLDataSet(DataSet) do
    begin
      try
        try
          trs := TConexao.AbreConexao;

          sql.Clear;
          sql.Add('select xmlnfe from nf where idnf = :idnfdb');
          Close;
          CommandText := '' ;
          CommandText := sql.Text ;
          Params.ParamByName('idnfdb').AsInteger := ADBId;
          Open ;

          BlobStream:= TSQLDataSet(DataSet).CreateBlobStream(
            TBlobField(TSQLDataSet(DataSet).FieldByName('xmlnfe')),bmRead);

          StrStream := TStringStream.Create('');

          Close;

          TConexao.FechaConexao(trs,TrType(0));

          BlobStream.Seek(0, soFromBeginning);
          StrStream.CopyFrom(BlobStream,BlobStream.Size);
          StrStream.Seek(0, soFromBeginning);

          ANFe.NotasFiscais.Clear;
          ANFe.NotasFiscais.LoadFromStream(StrStream) ;


          if (Trim(RetornaNumeros(ANFe.NotasFiscais.Items[0].NFe.Dest.CNPJCPF)) = '99999999000191') and
              (Trim(ANFe.NotasFiscais.Items[0].NFe.Dest.xNome) = 'NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL') then
          begin
            Application.MessageBox(
            'Ambiente de envio de nf-e alterado para "Homologação".',
            PAnsiChar(Application.Title),MB_ICONINFORMATION+MB_OK);
            ANFe.Configuracoes.WebServices.Ambiente := taHomologacao;
          end;

          ANFe.Cancelamento(AJustificativa);

          sql.Clear;
          sql.Add('update nf set ');
          sql.Add('statusnfe = :statusnfe,');
          sql.Add('justifcancnfe = :justifcancnfe,');
          sql.Add('canc = :canc,');
          sql.Add('datacanc = :datacanc ');
          sql.Add(' where idnf = :idnfdb');

          trs := TConexao.AbreConexao;

          Close;
          CommandText := '' ;
          CommandText := sql.Text ;

          Params.ParamByName('idnfdb').AsInteger := ADBId;
          Params.ParamByName('statusnfe').AsString :=
              IntToStr(ANFe.WebServices.Cancelamento.cStat);
          Params.ParamByName('justifcancnfe').AsString := AJustificativa;
          Params.ParamByName('canc').AsString := 'S' ;
          Params.ParamByName('datacanc').AsString :=
              FormatDateTime('mm/dd/yyyy',ANFe.WebServices.Cancelamento.DhRecbto) ;

          ExecSQL ;

          TConexao.FechaConexao(trs,TrType(0));
        finally
          FreeAndNil(BlobStream);
          FreeAndNil(StrStream);
          ANFe.Configuracoes.WebServices.Ambiente := TpcnTipoAmbiente(taProducao);
        end;
      except
        Close;
        TConexao.FechaConexao(trs,TrType(1));
        raise;
      end;
    end;
  finally
    sql.Free;
  end;

end;

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

function TACBrNFe.Cancelamento(
  AJustificativa: WideString): Boolean;
var
  i : Integer;
begin
  if Self.NotasFiscais.Count = 0 then
   begin
      if Assigned(Self.OnGerarLog) then
         Self.OnGerarLog('ERRO: Nenhuma Nota Fiscal Eletrônica Informada!');
      raise EACBrNFeException.Create('Nenhuma Nota Fiscal Eletrônica Informada!');
   end;

  for i:= 0 to self.NotasFiscais.Count-1 do
  begin
    WebServices.Cancelamento.NFeChave := copy(self.NotasFiscais.Items.NFe.infNFe.ID, (length(self.NotasFiscais.Items.NFe.infNFe.ID)-44)+1, 44);
    WebServices.Consulta.NFeChave := WebServices.Cancelamento.NFeChave;
    WebServices.Cancela(AJustificativa);
  end;

  Result := true;
end;

Postado

Eu verifiquei que existe um ajuste na norma para o cancelamento http://portalnfe.fazenda.mg.gov.br/, passando o Web Service "NfeCancelamento2" para o Web Web Service "RecepcaoEvento". porem atualizai o componente acbr e no ACBrNFeWebServices continua mandando para a Web Service "NfeCancelamento2" :

 

function TNFeCancelamento.Executar: Boolean;
var
  NFeRetorno: TRetCancNFe;
  aMsg: string;
  i : Integer;
  Texto : String;
  Acao  : TStringList ;
  Stream: TMemoryStream;
  StrStream: TStringStream;
  wPROC: TStringList;
  {$IFDEF ACBrNFeOpenSSL}
     HTTP: THTTPSend;
  {$ELSE}
     ReqResp: THTTPReqResp;
  {$ENDIF}
begin
  inherited Executar;

  Acao := TStringList.Create;
  Stream := TMemoryStream.Create;

  Texto := '<?xml version="1.0" encoding="utf-8"?>';
  Texto := Texto + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">';
  Texto := Texto +   '<soap12:Header>';
  Texto := Texto +     '<nfeCabecMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento2">';
  Texto := Texto +       '<cUF>'+IntToStr(FConfiguracoes.WebServices.UFCodigo)+'</cUF>';
  Texto := Texto +       '<versaoDados>'+NFecancNFe+'</versaoDados>';
  Texto := Texto +     '</nfeCabecMsg>';
  Texto := Texto +   '</soap12:Header>';
  Texto := Texto +   '<soap12:Body>';
  Texto := Texto +     '<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento2">';
  Texto := Texto + FDadosMsg;
  Texto := Texto +     '</nfeDadosMsg>';
  Texto := Texto +   '</soap12:Body>';
  Texto := Texto +'</soap12:Envelope>';

  Acao.Text := Texto;

  {$IFDEF ACBrNFeOpenSSL}
     Acao.SaveToStream(Stream); 
     HTTP := THTTPSend.Create;
  {$ELSE}
     ReqResp := THTTPReqResp.Create(nil);
     ConfiguraReqResp( ReqResp );
     ReqResp.URL := FURL;
     ReqResp.UseUTF8InHeader := True;
     ReqResp.SoapAction := 'http://www.portalfiscal.inf.br/nfe/wsdl/NfeCancelamento2';
  {$ENDIF}

  • Solution
Postado

O componente utilizava essa função quando era no Web Service antigo.

 

Atualmente para cancelamento, é utilizada a função:

function TNFeEnvEvento.Executar: Boolean;

 

Essa função está quase no final da unit ACBrNFeWebServices.pas
 

Peterson de Cerqueira Matos
[email protected]
Vivo: (11) 97197-1474 / Oi: (11) 98059-4055

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