Ir para conteúdo
  • Cadastre-se

dev botao

NFS-e de Vila Velha, Envio falha sem msg de erro


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

Recommended Posts

Postado

Boa tarde Srs.!

Esta semana as NFS-e enviadas à Prefeitura de Vila Velha - ES estão retornando exceção, mas sem mensagem de erro.

Ao debugar, identifiquei que o erro é gerado no código abaixo da unit ACBrNFSeWebServices, mas não consegui identificar o motivo:

  Result := FEnviarLoteRPS.Executar;

  if not (Result) then
    FEnviarLoteRPS.GerarException( FEnviarLoteRPS.Msg );

Poderiam me dar um "norte" para facilitar o processo de debug?

Postado

Srs., avancei um pouco e cheguei na unit ACBrDFeWinCryp, ao executar o if (em negrito), retorna false e cai no else onde gera a exceção (em negrito), daí pula para o except que não inicia mensagem alguma.

                if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Nil, mBytesLen ) then  // Calcula mBytesLen
                begin
                  Memory := AllocMem(mBytesLen);  // Aloca a memória para receber o Blob
                  try
                    if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Memory, mBytesLen ) then
                    begin
                      if not CryptImportKey(mCryptProvider, Memory, mBytesLen, hSessKey, 0, hExpKey ) then
                        raise Exception.Create('CryptImportKey');
                    end
                    else
                      raise Exception.Create('CryptExportKey');
                  finally
                    Freemem(Memory);
                  end;
                end
                else
                  raise Exception.Create('CryptExportKey - len');
              except
                { Não foi capaz de Exportar/Copiar a Chave para o nosso Provedor
                  de Criptografia, então vamos usar o Provedor de Criptografia do
                  Certificado }

                CryptReleaseContext(mCryptProvider, 0);
                mCryptProvider := mCryptProviderCert;
                pfCallerFreeProv := False;

              end;
 

 

Postado
16 minutos atrás, Sérgio Caldeira Silva disse:

Srs., avancei um pouco e cheguei na unit ACBrDFeWinCryp, ao executar o if (em negrito), retorna false e cai no else onde gera a exceção (em negrito), daí pula para o except que não inicia mensagem alguma.

                if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Nil, mBytesLen ) then  // Calcula mBytesLen
                begin
                  Memory := AllocMem(mBytesLen);  // Aloca a memória para receber o Blob
                  try
                    if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Memory, mBytesLen ) then
                    begin
                      if not CryptImportKey(mCryptProvider, Memory, mBytesLen, hSessKey, 0, hExpKey ) then
                        raise Exception.Create('CryptImportKey');
                    end
                    else
                      raise Exception.Create('CryptExportKey');
                  finally
                    Freemem(Memory);
                  end;
                end
                else
                  raise Exception.Create('CryptExportKey - len');
              except
                { Não foi capaz de Exportar/Copiar a Chave para o nosso Provedor
                  de Criptografia, então vamos usar o Provedor de Criptografia do
                  Certificado }

                CryptReleaseContext(mCryptProvider, 0);
                mCryptProvider := mCryptProviderCert;
                pfCallerFreeProv := False;

              end;
 

 

O if executa o seguinte método: function CryptExportKey; external Advapi32 name 'CryptExportKey';

Dá-se a entender que a AdvApi32.dll está corrompida, porém, o erro ocorreu em dois computadores de desenvolvimento e no computador de produção do cliente. Não acredito que seja dll corrompida.

 

Postado (editado)
26 minutos atrás, Sérgio Caldeira Silva disse:

O if executa o seguinte método: function CryptExportKey; external Advapi32 name 'CryptExportKey';

Dá-se a entender que a AdvApi32.dll está corrompida, porém, o erro ocorreu em dois computadores de desenvolvimento e no computador de produção do cliente. Não acredito que seja dll corrompida.

 

Aos mantenedores do ACBr, segue sugestão de alteração para que a msg apareça para os operadores / desenvolvedores:

 

              except
                { Não foi capaz de Exportar/Copiar a Chave para o nosso Provedor
                  de Criptografia, então vamos usar o Provedor de Criptografia do
                  Certificado }
                on E: Exception do
                   begin
                     CryptReleaseContext(mCryptProvider, 0);
                     mCryptProvider := mCryptProviderCert;
                     pfCallerFreeProv := False;
                     raise;
                   end;

              end;
 

Editado por Sérgio Caldeira Silva
Erro digitação
  • Consultores
  • Solution
Postado

Boa tarde Sérgio,

Lhe convido a iniciar os testes com o novo componente de emissão de NFS-e: ACBrNFSeX
O componente ACBrNFSe não vai mais ter manutenção.

Manual de Migração
https://www.projetoacbr.com.br/forum/topic/63017-manual-de-migração-para-o-novo-componente-de-emissão-de-nfs-e/
 

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

  • 2 semanas depois ...
Postado

Boa noite Ítalo!

Estou fazendo a conversão, mas não encontrei a propriedade abaixo, poderia me ajudar?

                // Para o provedor ISSDigital deve-se informar também:
                Prestador.Senha                                 := NfePrmPreSen;
 

  • Consultores
Postado

Bom dia Sérgio,

Não existe mais esse campo.

A senha deve ser informada nas propriedades de configuração do componente.

Configuracoes.Geral.Emitente.WSSenha := NfePrmPreSen;

Releia o Manual de Migração.

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 Ítalo!

Estou fazendo a conversão, mas não encontrei a propriedade abaixo, poderia me ajudar?

                // Para o provedor ISSDigital deve-se informar também:
                Prestador.Senha                                 := NfePrmPreSen;
 

1 hora atrás, Italo Giurizzato Junior disse:

Bom dia Sérgio,

Não existe mais esse campo.

A senha deve ser informada nas propriedades de configuração do componente.

Configuracoes.Geral.Emitente.WSSenha := NfePrmPreSen;

Releia o Manual de Migração.

Bom dia Ítalo!

Já li o manual, mas como se referia ao campo como WebSenha e não Prestador.Senha, achei que fossem campos diferentes.

Postado

 

Bom dia Ítalo!

No início deste ano, você incluiu um novo servidor para atender a Vila Velha - ES, o proSmarAPDv23 .

No novo componente da NFS este provedor não está mapeado, então, comentei para identificar o type. Contudo, ao executar o sistema, retorna a seguinte mensagem: Código do Município [3205200] não encontrado.

Sabe me informar em qual unit eu posso incluir este tratamento?

 

  • Consultores
Postado

Bom dia Sérgio,

Por favor releia o item 5 do Manual de Migração, nele consta o campo Senha como sendo um campo removido.

No segundo paragrafo desse item diz que alguns campos excluídos se encontram na configuração do componente.

Quanto a cidade de Vilha Velha/ES

Você deve estar com os fontes desatualizados.

No arquivo ACBrNFSeXServicos.ini temos:

[3205200]
; Atualizado em 03/08/2021
Nome=Vila Velha
UF=ES
Provedor=SmarAPD_203
ProRecepcionar=https://tributacao.vilavelha.es.gov.br/tbw/services/Abrasf23
HomRecepcionar=https://tributacao.vilavelha.es.gov.br/tbw/services/Abrasf23

Delete todos as units do ACBr que tenha uma bolinha vermelha em seu ícone.

Atualize todos os fontes de todas as pastas e reinstale a suíte ACBr com a opção de apagar arquivos antigos marcada.

Se certifique de que não tenha copia de fontes do ACBr em alguma pasta que o Delphi tenha acesso, pois isso pode fazer com que o Delphi se utilize de uma unit antiga.

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
23 horas atrás, Italo Giurizzato Junior disse:

Bom dia Sérgio,

Por favor releia o item 5 do Manual de Migração, nele consta o campo Senha como sendo um campo removido.

No segundo paragrafo desse item diz que alguns campos excluídos se encontram na configuração do componente.

Quanto a cidade de Vilha Velha/ES

Você deve estar com os fontes desatualizados.

No arquivo ACBrNFSeXServicos.ini temos:

[3205200]
; Atualizado em 03/08/2021
Nome=Vila Velha
UF=ES
Provedor=SmarAPD_203
ProRecepcionar=https://tributacao.vilavelha.es.gov.br/tbw/services/Abrasf23
HomRecepcionar=https://tributacao.vilavelha.es.gov.br/tbw/services/Abrasf23

Delete todos as units do ACBr que tenha uma bolinha vermelha em seu ícone.

Atualize todos os fontes de todas as pastas e reinstale a suíte ACBr com a opção de apagar arquivos antigos marcada.

Se certifique de que não tenha copia de fontes do ACBr em alguma pasta que o Delphi tenha acesso, pois isso pode fazer com que o Delphi se utilize de uma unit antiga.

Bom dia Ítalo!

Meu ACBr estava atualizado, mas por via das dúvidas exclui a pasta e instalei tudo do zero; mas era um campo novo que passou desapercebido.

Usei o exemplo como referência. Resolveu.

Agora apareceu uma outra mensagem após a conversão, saberia orientar?

nfse.xsd#/schema
The "namespace.provided differs from the schema's
'http://www.abrasf.org.br/nfse.xsd' targetNamespace)

 

Postado

Ítalo, verifiquei no site da abrasf e na lista de erros e alertas da versão 2.03 não encontrei erro. Sobrepus o schema que está na pasta schema da NFSe, porque não tem schema na pasta NFSXe, porém, não resolveu também. Pesquisei em outros fóruns, no entanto, eram cases diferentes pelo que entendi.

Postado
15 minutos atrás, Italo Giurizzato Junior disse:

Bom dia Sérgio,

Para essa cidade tem que usar os schemas da pasta:

...\Exemplos\ACBrDFe\ACBrNFSe\Schemas\SmarAPD\ABRASFv203

Ítalo, foi isto que fiz, copiei os arquivos desta pasta e colei na pasta schemas. Não deu certo, copiei do site da abrasf, não deu certo. Voltei com os arquivos da pasta Abrasfv203.

  • Consultores
Postado

Sérgio,

Você esta fazendo testes com o programa exemplo do componente?

Se não esta, então faça.

Acabei de configurar o programa exemplo para cidade de Vila Velha/ES apontando para a pasta de Schemas mostrada acima e veja o resultado do teste de emissão de um Rps:

Modo de Envio : Enviar Lote
Numero do Lote: 82
Data de Envio : 30/12/1899
Numero do Prot: 
Sucesso       : True
 
Erro(s):
Código  : 1
Mensagem: 
A empresa sem autorização para emissão de nota fiscal eletronica.
O campo Aliquota informado (4.0) não confere com o cadastrado para essa atividade (3.0).
O CCM 20001383 não está ativo.
Correção: Corrija os campos informados.
---------

 

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 (editado)
46 minutos atrás, Italo Giurizzato Junior disse:

Sérgio,

Você esta fazendo testes com o programa exemplo do componente?

Se não esta, então faça.

Acabei de configurar o programa exemplo para cidade de Vila Velha/ES apontando para a pasta de Schemas mostrada acima e veja o resultado do teste de emissão de um Rps:

Modo de Envio : Enviar Lote
Numero do Lote: 82
Data de Envio : 30/12/1899
Numero do Prot: 
Sucesso       : True
 
Erro(s):
Código  : 1
Mensagem: 
A empresa sem autorização para emissão de nota fiscal eletronica.
O campo Aliquota informado (4.0) não confere com o cadastrado para essa atividade (3.0).
O CCM 20001383 não está ativo.
Correção: Corrija os campos informados.
---------

 

Grato Ítalo pela sugestão. Consegui encontrar, era a configuração abaixo:

image.thumb.png.767cd7e5c43f0c314fe9e354f207681d.png

Editado por Sérgio Caldeira Silva
Erro digitação
  • Consultores
Postado

Sérgio,

Sugiro que o valor de SSLType seja LT_TLSv1_2 e não LT_all, pois este faz com que o componente fique tentando qual é a criptografia que o webservice aceita e para alguns deles isso pode ser interpretada como uma tentativa de invasão.

  • Curtir 1
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

Ítalo, qual a configuração que você está usando? Está dando erro com o wincrypt: não consegue carregar. Peguei as DLLs do ACBr, mas a msg abaixo persiste.

Erro(s):
Código  : 1
Mensagem: Signature failed core validation
 Signature failed core validation
Correção: Corrija os campos informados.

Postado (editado)
30 minutos atrás, Italo Giurizzato Junior disse:

Bom dia Sérgio,

É igual a sua, a única diferença é que em vez de LT_all eu informo LT_TLSv1_2 para SSLType.

Esse erro esta ocorrendo em qual método?

Bom dia Ítalo!

No método TACBrNFSeProviderABRASFv2.PrepararEmitir(Response: TNFSeEmiteResponse); ao tentar gerar a NFS no formato meUnitario.

Tentei outras formas de enviar, mas não consegui.

Editado por Sérgio Caldeira Silva
Postado
8 horas atrás, Sérgio Caldeira Silva disse:

Bom dia Ítalo!

No método TACBrNFSeProviderABRASFv2.PrepararEmitir(Response: TNFSeEmiteResponse); ao tentar gerar a NFS no formato meUnitario.

Tentei outras formas de enviar, mas não consegui.

Boa noite Ítalo!

Alterei o formato de envio para meAutomatico e funcinou.

 

Postado
Em 30/08/2021 at 10:10, Italo Giurizzato Junior disse:

Bom dia Sérgio,

É igual a sua, a única diferença é que em vez de LT_all eu informo LT_TLSv1_2 para SSLType.

Esse erro esta ocorrendo em qual método?

Boa tarde Ítalo!

 

Pode encerrar este tópico. Conversão para o novo componente está funcionando para BH - MG e para Vila Velha - ES.

No caso de BH, o erro aleatório que ninguém conseguiu identificar, nem a equipe de TI da prefeitura, está relacionado SSLType. Ao informar LT_TLSv1_2, dá erro na prefeitura de BH, ela somente funciona com LT_All. Para todas as outras prefeituras, o SSLType = LT_TLSv1_2, é a melhor opção. 

O novo componente ficou muito bom. Meus parabéns!

Se me permite, aos leitores deste post, sugiro que usem o programa exemplo que o Ítalo fez para nortear o processo de emissão da NFS-e, visto que todos os erros que encontramos, referiam-se a campos não preenchidos (não eram usados no componente anterior) ou parâmetros - preencham todos os campos primeiro, depois "quebrem a cabeça" com a parametrização que pode variam de provedor para provedor.

Gratidão!

  • Curtir 1
  • Este tópico foi criado há 1177 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...