Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Olá!

Procurei no fórum e não achei ninguém com esse meu problema. Tenho meu sistema desenvolvido em Delphi 2010 com Firebird 2.5.1 e DBExpress. Um cliente meu tem reclamado seguidamente que ao transmitir uma NFE o sistema retorna uma mensagem de erro em branco, sem nenhuma informação sobre o que houve. Assim que o erro acontece ela precisa fechar a tela de notas e abri-la novamente para conseguir transmitir a nota. Fiz um debug e constatei que a mensagem de erro vem do ACBRNFE e que realmente ela vem em branco, sem código, sem descrição, sem nada. Gostaria de saber o que pode estar havendo quando isso acontece. Segue abaixo o código que utilizo para transmitir a NFE.

procedure TLanNotasSaida.btnTransmitirClick(Sender: TObject);

begin

    try

       case TfrmMsg.Msg('Confirmação', 'Tem certeza que deseja transmitir essa nota?', imPergunta, [mbNao, mbSim]) of

         1: Abort;

       end;


       if not(TemInternet) then

         begin

             TfrmMsg.Msg('Você está SEM INTERNET!', 'Atenção! Seu computador não está conectado com a internet. Entre em contato com o administrador da sua rede de computadores para que o mesmo resolva o problema.', imAviso, [mbOk]);

             Abort;

         end;


       cxProgressBar.Visible := True;

       Application.ProcessMessages;


       if cdsNotasSaidaDATA_EMISSAO.AsDateTime <> Date then

         begin

             if SQLLinha('SELECT EMITE_NFE_DIAS_ANTERIORES FROM EMPRESAS WHERE ID_EMPRESA = ' + cdsNotasSaidaID_EMPRESA.AsString) = 'SIM' then

               begin

                   case TfrmMsg.Msg('Atenção', 'A data de emissão da NFE não coincide com a data de hoje. Deseja atualizar a data de emissão da NFE(Colocar a data de hoje)?', imPergunta, [mbNao, mbSim]) of

                    2: begin

                           cdsNotaSaidaParcelas.First;

                           while not(cdsNotaSaidaParcelas.Eof) do

                            begin

                                if cdsNotasSaidaDATA_EMISSAO.AsDateTime < Date then

                                  begin

                                      cdsNotaSaidaParcelas.Edit;

                                      cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime := cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime + (Date - cdsNotasSaidaDATA_EMISSAO.AsDateTime);

                                      cdsNotaSaidaParcelas.Post;

                                  end

                                else

                                   begin

                                       cdsNotaSaidaParcelas.Edit;

                                       cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime := cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime - (cdsNotasSaidaDATA_EMISSAO.AsDateTime - Date);

                                       cdsNotaSaidaParcelas.Post;

                                   end;


                                cdsNotaSaidaParcelas.Next;

                            end;


                           cdsNotasSaida.Edit;

                           cdsNotasSaidaDATA_EMISSAO.AsDateTime := Date;

                           cdsNotasSaida.Post;

                       end;

                   end;

               end

             else

                begin

                    cdsNotaSaidaParcelas.First;

                    while not(cdsNotaSaidaParcelas.Eof) do

                     begin

                         if cdsNotasSaidaDATA_EMISSAO.AsDateTime < Date then

                           begin

                               cdsNotaSaidaParcelas.Edit;

                               cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime := cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime + (Date - cdsNotasSaidaDATA_EMISSAO.AsDateTime);

                               cdsNotaSaidaParcelas.Post;

                           end

                         else

                            begin

                                cdsNotaSaidaParcelas.Edit;

                                cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime := cdsNotaSaidaParcelasDATA_VENCIMENTO.AsDateTime - (cdsNotasSaidaDATA_EMISSAO.AsDateTime - Date);

                                cdsNotaSaidaParcelas.Post;

                            end;


                         cdsNotaSaidaParcelas.Next;

                     end;


                    cdsNotasSaida.Edit;

                    cdsNotasSaidaDATA_EMISSAO.AsDateTime := Date;

                    cdsNotasSaida.Post;

                end;

         end;


       if ((cdsNotasSaidaDATA_SAIDA_ENTRADA.AsDateTime > 0) and (cdsNotasSaidaDATA_SAIDA_ENTRADA.AsDateTime < Date)) then

         begin

             cdsNotasSaida.Edit;

             cdsNotasSaidaDATA_SAIDA_ENTRADA.AsDateTime := Date;

             cdsNotasSaida.Post;

         end;



       case TfrmMsg.Msg('Confirmação', 'Deseja imprimir a hora de saída na nota?', imPergunta, [mbNao, mbSim]) of

         2: begin

                if cdsNotasSaidaHORA_SAIDA_ENTRADA.IsNull then

                  begin

                      cdsNotasSaida.Edit;

                      cdsNotasSaidaHORA_SAIDA_ENTRADA.AsDateTime := TimeOf(Now);

                      cdsNotasSaida.Post;

                  end;

            end;


         1: begin

                if not(cdsNotasSaidaHORA_SAIDA_ENTRADA.IsNull) then

                  begin

                      cdsNotasSaida.Edit;

                      cdsNotasSaidaHORA_SAIDA_ENTRADA.Clear;

                      cdsNotasSaida.Post;

                  end;

            end;

       end;


       ACBrNFe.NotasFiscais.Clear;


       ConfiguraACBR_NFE;


       AlimentaACBR_NFE;


       try

          ACBrNFe.Enviar(1, False);

       except

          on E: Exception do

            begin

                if Pos('Certificado Digital não encontrado!', E.Message) > 0 then

                  begin

                      TfrmMsg.Msg('Erro no envio', 'Certificado digital não encontrado.', imErro, [mbOk]);

                      Abort;

                  end;


                ACBrNFe.WebServices.Retorno.Executar;


                TfrmMsg.Msg('Erro no envio', E.Message, imErro, [mbOk]);

                TfrmMsg.Msg('Erro no envio', Copy(ACBrNFe.WebServices.Retorno.RetWS, Pos('', ACBrNFe.WebServices.Retorno.RetWS) + 17, Length(ACBrNFe.WebServices.Retorno.RetWS) - 1), imErro, [mbOk]);

                Abort;

            end;

       end;


       TfrmMsg.Msg('Retorno do envio', ACBrNFe.WebServices.Retorno.Msg, imInformacao, [mbOk]);


       if ACBrNFe.WebServices.Retorno.Protocolo > '' then

         begin

             cdsNotasSaida.Edit;

             cdsNotasSaidaNUMERO_PROTOCOLO.AsString := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].nProt;

             cdsNotasSaidaDATA_AUTORIZACAO.AsDateTime := ACBrNFe.WebServices.Retorno.NFeRetorno.ProtNFe.Items[0].dhRecbto;

             cdsNotasSaida.Post;


             ACBrNFe.NotasFiscais.Imprimir;

             ACBrNFe.NotasFiscais.ImprimirPDF;


             EnviarEmailXML;

         end;

    finally

       cxProgressBar.Visible := False;

    end;

end;

Carlos Alexandre Heidrich

Programador e Técnico em Informática

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