Ir para conteúdo
  • Cadastre-se

dev botao

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

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.