Ir para conteúdo
  • Cadastre-se

dev botao

acbrnfe em servidor vcl web


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

Recommended Posts

Postado

Obrigado pela atenção Waldir!

Eu testei a geração da nota diretamente pelo intraweb e dá erro de memória quando vai gravar o arquivo .xml (ACBrNFe1.NotasFiscais.Items[0].GravarXML) realmente não sendo possível usar diretamente no intraweb, como vc disse.

Antes disso já havia construido um servidor vcl datasnapRest que tem algumas funções e todas funcionando perfeitamente enviando e-mail com o acbremail, menos a função que envia a nfce para sefaz veja o código abaixo:

  try
    ACBrNFe1.NotasFiscais.Items[0].GravarXML (****** gera e grava o .xml sem problemas ******
  except
    on E : Exception do
    begin
      ApagaPagamentos;
      vMensagemReturn := '!@#$% ERRO AO GRAVAR O ARQUIVO.XML DA NFC-E' +E.Message;
      exit
    end;
  end;

  Writeln(varq, 'GeraEnviaNFce03' );

  try
    ACBrNFe1.NotasFiscais.Items[0].Assinar; (****** assina o arquivo .xml sem problemas ******
  except
    on E : Exception do
    begin
      ApagaPagamentos;
      vMensagemReturn := '!@#$% ERRO AO ASSINAR O ARQUIVO.XML DA NFC-E' +E.Message;
      exit
    end;
  end;

 

O problema está aqui quando vai enviar a nfce para sefaz:

      try
        ACBrNFe1.Enviar(1,true,true); (****** gera o erro mostrado na imagem abaixo ******)

      except
        on E: Exception do
          begin

            if length(UTF8Encode(ACBrNFe1.WebServices.Enviar.RetornoWS)) <> 0 then
              vMensagemReturn := UTF8Encode(ACBrNFe1.WebServices.Enviar.RetornoWS)
            else
              vMensagemReturn := '!@#$% ERRO NO ENVIO - ' +E.ClassName +E.Message; (****** retorna o erro mostrado na imagem abaixo ******)

            exit;
          end;
***** Essa mensagem de erro é gerada no ACBrDfeWebService.pas e não sei o que realmente está acontecendo:

const
  CErroSemResposta = 'Erro ao obter resposta do webservice.';

procedure TDFeWebService.VerificarSemResposta;
begin
  { Sobrescrever apenas se necessário }
  if EstaVazio(FPRetWS) then
    raise EACBrDFeException.Create( CErroSemResposta +
          ifthen(NaoEstaVazio(FPRetornoWS),sLineBreak+FPRetornoWS,''));
end;

 

Desde já agradeço pela atenção.

image.thumb.png.40c7ad8311f9b2442416bf02cc766d7f.png

  • Moderadores
Postado

Na sua estrutura  o melhor caminho e seguir usando datasnapRest;

Precisa fazer um debug nesse método para chegar no ponto do erro;

Poe um break point no código do servidor nesse ponto e vai seguindo ate chegar no erro.
 

  • Obrigado 1
Postado

boa tarde  Waldir!

DEU CERTO!

sabe o que era!? estava gravando um arguivo txt de  log no evento ontransmit do acbrnfe, o que derrubava a conexão com o servidor da sefaz:

procedure TServerMethods1.ACBrNFe1Transmit(const Dados, URL, SoapAction,
  MimeType: string; var Resposta: string; var HTTPResultCode,
  InternalErrorCode: Integer);
begin

  Writeln(varq, 'ACBrNFe1Transmit01' );

end;

 

Consegui enviar para sefaz e foi recebido normalmente, o acbr é muita ferramenta, vs estão de parabéns.

permite que eu tenha n camadas de aplicação, demais.

obrigado a todos!

21 horas atrás, Waldir Paim disse:

Na sua estrutura  o melhor caminho e seguir usando datasnapRest;

Precisa fazer um debug nesse método para chegar no ponto do erro;

Poe um break point no código do servidor nesse ponto e vai seguindo ate chegar no erro.
 

 


 

 


 

 


 

 


 

 


 

 


 

image.png

image.png

image.png

image.png

image.png

image.png

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