Jump to content

Assista click.png tectoy.png

C6 chamada_c6.png botao.png

Tecnos - Não retorna Erro - porque não preenche o campo FDataRecebimento - Veranopolis - Nova Prata


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

Recommended Posts

Bom dia,

Depois que eu atualizei para ultima versão os componentes, apos enviar para Veranópolis com o provedor Tecnos,

esta chegando a nota e aparece no Site, mas ocorre um erro no retorno mas a mensagem do erro esta em branco,

não esta funcionando porque a variável FDataRecebimento esta com zero e retornando erro mesmo com a mensagem de sucesso na transmissão.

verifiquei que a lista FRetornoNFSe.ListaNFSe.CompNFSe.Count não esta vindo preenchida e caindo no else

 if FRetornoNFSe.ListaNFSe.CompNFSe.Count > 0 then
  begin
    FDataRecebimento := FRetornoNFSe.ListaNFSe.CompNFSe[0].NFSe.dhRecebimento;
    if FDataRecebimento = 0 then
      FDataRecebimento := FRetornoNFSe.ListaNFSe.CompNFSe[0].NFSe.DataEmissao;
    if (FProvedor = proInfisc) then
      FProtocolo := FRetornoNFSe.ListaNFSe.CompNFSe[0].NFSe.Protocolo;
  end
  else begin
    FDataRecebimento := 0;
  end;

ocasionando o erro. 

poderia me ajudar?

Link to comment
Share on other sites

  • Consultores

Bom dia Paulo,

Primeiramente movi a sua postagem pois você tinha o colocado em Sped que não tem nada haver com NFS-e.

Segundo, Favor atualizar todos os fontes de todas as pastas e note que fiz alterações em diversos arquivos INI dos provedores.

Terceiro, configure o componente para salvar os arquivos Soap.

Quarto, anexa os arquivos soap de envio e de retorno para que possamos analisar.

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Consultores

seu fast é original?

pois o erro não é do acbr e sim do fast report!

 

Borland Delphi for Win32 compiler version 18.0
Copyright (c) 1983,2005 Borland Software Corporation
C:\desenvg5\FastReport v519\FastScript\fs10.dpk(62) Fatal: F1026 File not found: 'fs_iextctrlsrtti.dcu'
Compilation failure

 

 

 

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

Bom dia,

Efetuamos a instalação do componente do FastReport e todos os componentes do ACBR e sua compilação.

1) Estamos tentando utilizar o exemplo Demo ACBrNFSe e não está aparecendo a cidade de Veranópolis/RS e Nova Prata/RS.

[4322806]
Nome=Veranopolis
UF=RS
Provedor=Tecnos
NomeURL_H=ver
NomeURL_P=veranopolis

[4313300]
Nome=Nova Prata
UF=RS
Provedor=Tecnos
NomeURL_H=prata
NomeURL_P=novaprata

2) Tentamos fazer uma consulta de notas já enviadas em homologação e apresentou de requisição

erro de consulta nfs por periodo.jpg

não aparece a cidade cadastrada no cidades.jpg

Link to comment
Share on other sites

  • Consultores

Boa tarde Paulo,

Esse é um programa exemplo, sendo assim no Combo Box não consta todas cidades que o componente reconhece e muito menos todas as cidades brasileiras.

Caso o arquivo Cidades.INI já contem a cidade deseja e o Combo Box não, basta acrescenta-la como foi feito para as outras.

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Consultores

Paulo,

Esse tipo de erro já foi abordado aqui no fórum a um bom tempo e tem haver com o certificado, por favor faça uma pesquisa sobre o erro que você vai achar várias dicas.

Uma delas se não me falha a memória é instalar o certificado em uma maquina XP e depois exporta-lo.

E usar o "exportado" para instalar na maquina que o problema esta ocorrendo.

Verifique também as configurações do Internet Explorer no que diz respeito as configurações avançadas.

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Consultores

Boa tarde Paulo,

A NFS-e que se pretende emitir, o emitente esta cadastrado junto a provedor?

Lembre-se que alguns provedores requerem um cadastro para emitir a NFS-e via site e um outro cadastro para emitir via Web Service.

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

  • Consultores

Paulo,

Abra o arquivo INI do provedor e altere a seguinte linha:

De:

[Geral]
(...)
UseCertificado=0
UseSSL=0

Para:

[Geral]
(...)
UseCertificado=1
UseSSL=0

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

isso eu já está configurado desta forma!

Segue o arquivo Tecnos.ini

Tecnos.ini

antes da atualização do dia 10/03 eu estava conseguindo enviar para a homologação e retornava o erro em branco conforme o tópico em que estamos... mas agora apos atualizar para a versão de hoje nem chega a sair dando o erro:

Erro Interno: 12029
Erro HTTP: 0
Erro: Requisição não enviada.
12029 - Uma conexão com o servidor não pôde ser estabelecida

conforme post anterior

Link to comment
Share on other sites

  • Consultores

Bom dia Paulo,

Dependendo da cidade o provedor é outro e se este provedor já foi testado e corrigido as falhas ele vai funcionar 100%.

É preciso descobrir o problema com o provedor em questão e fazer as devidas correções.

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

Bom dia Italo,

Procuramos o erro, e quando setamos o TECNOS.INI para:

UseCertificado=0
UseSSL=0

O componente gerava um erro de exceção em:

function TDFeSSL.Assinar(const ConteudoXML, docElement, infElement: String;
  SignatureNode: String; SelectionNamespaces: String; IdSignature: String
  ): String;
Var
  XmlAss, xmlHeaderAntes, xmlHeaderDepois: String;
  I: integer;
begin
  if not UseCertificate then
    raise EACBrDFeException.Create('Impossível assinar. Componente configurado para não usar Certificado');

entao setei para:

UseCertificado=1
UseSSL=0

mas então quando envio, a rotina abaixo altera a propriedade UseSSL para True mesmo colocando no .ini para false:

procedure TACBrHTTPReqResp.Execute(Resp: TStream);

...

begin

  if (FUseCertificate) then
    FUseSSL := True;

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

A SOLUÇÃO PALIATIVA QUE TIVEMOS PARA COMEÇAR A ENVIAR NOVAMENTE FOI:

 

1) SETAR O TECNOS.INI PARA

UseCertificado=1
UseSSL=0

 

2) SETAR O (FUseCertificate := false;) E (flags := INTERNET_SERVICE_HTTP;)

procedure TACBrHTTPReqResp.Execute(Resp: TStream);

...

begin

  if (FUseCertificate) then
    FUseSSL := True;

  AProt := '';
  APort := '';
  APath := '';
  HCertContext := 0;

  ParseURL(FUrl, AProt, ANone, ANone, AHost, APort, APath, ANone);

  FUseCertificate := false; // forcar para false pois não esta respeitando o ini

  if (FUseCertificate) then
  begin
    if ((ShowCertStore) or ((FCertSerialNumber = '') and (FCertificate = nil))) then
    begin
      FCertSerialNumber := OpenCertStore;
      if FCertSerialNumber <> '' then
        FCertificate := nil;
    end;

...

   try

{
      if (FUseSSL) then
      begin
        flags := INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_NO_CACHE_WRITE;
        flags := flags or INTERNET_FLAG_SECURE;

        if (FUseCertificate) then
          flags := flags or (INTERNET_FLAG_IGNORE_CERT_CN_INVALID or
                             INTERNET_FLAG_IGNORE_CERT_DATE_INVALID);
      end
      else
}
        flags := INTERNET_SERVICE_HTTP; // forcar para que o envio seja efetuado

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

Apos as alterações o componente voltou a enviar para o provedor a nfs!
OBS: Mas o erro que iniciou este tópico persiste e se encontra na validação abaixo retornando (FDataRecebimento := 0;), criando uma exceção em branco;

function TNFSeWebService.ExtrairNotasRetorno: Boolean;
...

begin

...

  if FRetornoNFSe.ListaNFSe.CompNFSe.Count > 0 then

  begin
    FDataRecebimento := FRetornoNFSe.ListaNFSe.CompNFSe[0].NFSe.dhRecebimento;
    if FDataRecebimento = 0 then
      FDataRecebimento := FRetornoNFSe.ListaNFSe.CompNFSe[0].NFSe.DataEmissao;
    if FProvedor in [proInfisc, proGovDigital] then
      FProtocolo := FRetornoNFSe.ListaNFSe.CompNFSe[0].NFSe.Protocolo;
  end
  else begin
    FDataRecebimento := 0;
// aqui esta populando como zero e retornando erro em branco
  end;

...

 Result := (FDataRecebimento <> 0);

end;

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

(favor avisar quando todos o itens que relatei forem consertado no componente, obrigado)

 

Link to comment
Share on other sites

  • Consultores

Boa tarde Paulo,

Você diz que no Arquivo INI do provedor devemos deixar:

UseCertificado=1

UseSSL=0

Como 0=False e 1=True 

Na Unit ACBrHTTPReqResp.pas, mas precisamente na procedure Execute temos o seguinte código:

  if (FUseCertificate) then
    FUseSSL := True;

Esse código faz com que o UseSSL que foi definido como False no arquivo INI se tornaria True podendo provocar erros na conexão com o provedor.

Pois bem, por que não comentar essas duas linhas, desta forma FUseSSL não terá o seu valor alterado, permanecendo o que foi definido pelo arquivo INI.

Por favor, desfaça as alterações que fez na Unit mencionada e comente as linhas que altera o valor de UseSSL mediante a condição.

Refaça novos testes, acredito que desta forma vai resolver o problema.

Quanto a data de retorno estar valendo zero, faça o seguinte, configure o componente para salvar os arquivos soap e anexo o arquivo de retorno para analise.

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

se eu desabilitar 

  if (FUseCertificate) then
    FUseSSL := True;

ocorre exceção em :

       if (FUseCertificate) then
        begin
          if not InternetSetOption(pRequest, INTERNET_OPTION_CLIENT_CERT_CONTEXT,
            Pointer(HCertContext), SizeOf(CERT_CONTEXT)) then
            raise EACBrHTTPReqResp.Create('Erro: Problema ao inserir o certificado')
 

e não envia!!!

segue o arquivo soap

419-env-lotS-soap.xml

419-env-lotS.xml

Link to comment
Share on other sites

  • Consultores

Paulo,

Estamos em um dilema. O provedor Tecnos requer que o RPS seja assinado, logo devemos utilizar um certificado digital para isso, mas por outro lado ao tentar setar as opções de internet ocorre um erro.

Me diz uma coisa, o certificado não esta sendo removido da leitora pelo simples fato de não precisar dele mais?

Se não for esse o caso vamos ter que comentar as linhas:

  if not UseCertificate then
    raise EACBrDFeException.Create('Impossível assinar. Componente configurado para não usar Certificado');

Que se encontram na function Assinar da unit ACBrDFeSSL.

E no arquivo INI colocar UseCertificado=0

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

se eu setar :

UseCertificado=0

ocorre erro em :

function TDFeCapicom.Assinar(const ConteudoXML, docElement, infElement: String;
  SignatureNode: String; SelectionNamespaces: String; IdSignature: String
  ): String;
var
...

begin

...

     OleCheck(IDispatch(FCertificado.PrivateKey).QueryInterface(IPrivateKey, PrivateKey));
 

e desabilitar:

//  if not UseCertificate then
//    raise EACBrDFeException.Create('Impossível assinar. Componente configurado para não usar Certificado');
 

Link to comment
Share on other sites

  • Consultores

Bom dia Paulo,

Mas a ideia não é atribuir zero a UseCertificado.

O que eu propus foi deixar UseCertificado=1 e comentar as linhas que checam o UseCertificado no método Assinar.

Consultor SAC ACBr Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.