Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia !!

Estou migrando para o componente NFSeX, segui todos os procedimentos na documentação e o envio já está funcionando, porém ao tentar cancelar estou recebendo o seguinte erro:

EACBRDFeException with message 'Não encontrei final do elemento: <ns3:Pedido>'

Adicionei os arquivos fontes do acbr no debug path para identificar o que estava causando e aparentemente ao assinar o documento para o cancelamento a classe Ginfes.Provider.pas prepara o xml da seguinte forma:

procedure TACBrNFSeProviderGinfes.PrepararCancelaNFSe(
  Response: TNFSeCancelaNFSeResponse);
begin
  with ConfigMsgDados do
  begin
    Prefixo := '';
    PrefixoTS := '';
  end;

  inherited PrepararCancelaNFSe(Response);

  //Ao voltar os prefixos aqui o metodo assinar chamado posteriormente falha pois tentar encontrar o prefixo + ':' + Pedido, porem a tag pedido não contem prefixo.
  with ConfigMsgDados do
  begin
    Prefixo := 'ns3';
    PrefixoTS := 'ns4';
  end;
end;

Este comportamento pode ser visto aqui na unit ACBrNFSeXProviderBase.pas

rocedure TACBrNFSeXProvider.AssinarCancelaNFSe(
  Response: TNFSeCancelaNFSeResponse);
var
  IdAttr, Prefixo, IdAttrSig: string;
  AErro: TNFSeEventoCollectionItem;
begin
  if not ConfigAssinar.CancelarNFSe then Exit;

  if ConfigAssinar.IncluirURI then
    IdAttr := ConfigGeral.Identificador
  else
    IdAttr := 'ID';

  //Aqui esta a parte especifica que confere se existe prefixo e atribui ele + os : 
  if ConfigMsgDados.Prefixo = '' then
    Prefixo := ''
  else
    Prefixo := ConfigMsgDados.Prefixo + ':';

  try
    IdAttrSig := SetIdSignatureValue(Response.ArquivoEnvio,
                      ConfigMsgDados.CancelarNFSe.DocElemento, IdAttr);
    
    //E aqui no assinar o prefixo é adicionado ao DocElemento que esta causando o problema.
    Response.ArquivoEnvio := FAOwner.SSL.Assinar(Response.ArquivoEnvio,
      Prefixo + ConfigMsgDados.CancelarNFSe.DocElemento,
      ConfigMsgDados.CancelarNFSe.InfElemento, '', '', '', IdAttr, IdAttrSig);
  except
    on E:Exception do
    begin
      AErro := Response.Erros.New;
      AErro.Codigo := Cod801;
      AErro.Descricao := ACBrStr(Desc801 + E.Message);
    end;
  end;
end;

 

Por acaso alguem mais esta passando por isso com o Ginfes de Santo André? tem algo especifico que não estou vendo? pois segui as configurações iguais as do exemplo de teste, e confirmei que debugando e removendo o prefixo neste momento o cancelamento é realizado corretamente. 

 

Desde já agradeço.

  • Consultores
Postado

Boa tarde @Loki1_11,

Acabei de realizar um teste usando o programa exemplo e não ocorreu esse erro.

Você tem fontes do ACBr com alterações locais?
Verifica se não tem nenhuma unit do ACBr com uma bolinha vermelha em seu ícone, caso afirmativo delete a unit.
Atualize todos os fontes de todas as pastas.
Reinstale o ACBr com a opção de apagar arquivos antigos marcada.
Compile a aplicação com a opção Build.
Por fim repita os testes.
 

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

Obrigado pela rápida resposta Italo, vou reinstalar mandando apagar tudo e testar novamente. 

Porém verifiquei rapidamente aqui e não tem nenhuma modificação feita localmente, segue um print do meu svn. 

Atualizarei aqui após re-instalar e testar novamente. 

Desde já obrigado.

 

image.thumb.png.7ad6d338977744145a98fe2a4ff47069.png

Postado

Acabei de realizar os testes novamente e infelizmente o erro persiste. 

Vou detalhar abaixo passo a passo:

1- Fiz o update dos códigos do Acbr novamente pelo SVN.

2- Verifiquei que nenhum arquivo estivesse com o icone vermelho nele. 

3- Executei o AcbrInsntall_trunk2.exe e marquei a opção de apagar os arquivos antigos, desmarquei a versão do NFSe antigo para nem instalar ele desta vez e deixar apenas o NFSeX. 

4- Fiz um build do meu sistema novamente e tentei cancelar.  

 

image.thumb.png.897885213d3ffb0c1a949ae017035a30.png

 

Alguma outra dica Italo? 

 

 

Postado

Boa noite Italo,  desculpe a demora o dia foi corrido hoje.

Estou usando com msxml da seguinte forma:

  EmissorNFs.SSL.SSLType := LT_TLSv1_2;
  EmissorNFs.Configuracoes.Geral.SSLCryptLib := cryWinCrypt;
  EmissorNFs.Configuracoes.Geral.SSLHttpLib := httpWinHttp;
  EmissorNFs.Configuracoes.Geral.SSLLib := libWinCrypt;
  EmissorNFs.Configuracoes.Geral.SSLXMLSignLib := xsMsXml;

  try
    EmissorNFs.SSL.NumeroSerie := FNumeroCertificado;
    EmissorNFs.Configuracoes.Certificados.NumeroSerie := FNumeroCertificado;
  except
    // Eat the ACBR exception
  end;

  EmissorNFs.Configuracoes.Arquivos.AdicionarLiteral := True;
  EmissorNFs.Configuracoes.Arquivos.EmissaoPathNFSe  := True;
  EmissorNFs.Configuracoes.Arquivos.SepararPorMes    := True;


  EmissorNFs.Configuracoes.Arquivos.PathCan  := FPathCancelamentoNFe;
  EmissorNFs.Configuracoes.Arquivos.PathNFSe := FPathNFe;
  EmissorNFs.Configuracoes.Arquivos.Salvar   := True;

  NFSeDANFSeFR.FastFile := CoreApplication.Path + 'Reports\DANFSE.fr3';
  NFSeDANFSeFR.Logo := CoreApplication.Path + 'Resources\Imagens\PrefeituraSantoAndre.jpg';
  NFSeDANFSeFR.Prefeitura := FEmpresaEmissao.Cidade;
  NFSeDANFSeFR.Prestador.Logo  := FEmpresaEmissao.Logotipo.TempFileName;
  EmissorNFs.Configuracoes.Geral.CodigoMunicipio := FEmpresaEmissao.CodigoMunicipio;
  EmissorNFs.Configuracoes.Arquivos.PathSchemas := FPathEsquemasNFe + '\NFSe\'; //Do not localize
  EmissorNFs.Configuracoes.Geral.Salvar         := True;
  EmissorNFs.Configuracoes.Geral.ConsultaLoteAposEnvio := True;
  EmissorNFs.Configuracoes.Geral.RetirarAcentos := True;
  EmissorNFs.Configuracoes.Geral.Provedor := proGinfes; 

  EmissorNFs.Configuracoes.Arquivos.PathSalvar  := FPathLogNFe;

  EmissorNFs.Configuracoes.Geral.Emitente.CNPJ := FEmpresaEmissao.CNPJ;
  EmissorNFs.Configuracoes.Geral.Emitente.InscMun := FEmpresaEmissao.InscricaoMunicipal;
  EmissorNFs.Configuracoes.Geral.Emitente.RazSocial := FEmpresaEmissao.RazaoSocial;

Desde já muito obrigado.

  • Consultores
Postado

Bom dia @Loki1_11

Mude essa linha:

EmissorNFs.Configuracoes.Geral.SSLXMLSignLib := xsLibXml2;

 

A linha abaixo pode remover ela, não é necessário:

EmissorNFs.Configuracoes.Geral.Provedor := proGinfes; 

 

A linha abaixo tem que ser a ultima da procedure de configuração:

EmissorNFs.Configuracoes.Geral.CodigoMunicipio := FEmpresaEmissao.CodigoMunicipio;

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

Boa noite Italo, 

Fiz as alterações e assim que o cliente me liberar o acesso para testar novamente lhe atualizo.

Muito obrigado.

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