Ir para conteúdo
  • Cadastre-se

dev botao

DataHora Finalizacao de Transacao CliSiTef


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

Recommended Posts

  • Membros Pro
Postado

Bom dia.

 

Estamos tendo problema com os relatórios de transações com clientes que são de fuso horário diferente do de Brasília.

As transações efetuadas entre as 23:00:00 e 23:59:59 são sempre finalizadas com o próximo dia, mesmo eu definindo a propriedade "ACBrTEFD1.TEFCliSiTef.DataHoraFiscal :=" antes de iniciar a transação.

Acontece que ao Finalizar a transação, existe uma validacao que obtem a DataHora do Comprovante de Transação (que sempre está no horário de Brasília), causando esse problema.

Seria possível adicionar uma propriedade ou outra ferramenta para usar sempre o "Now" como DataHora da finalização? Segue abaixo o trecho do código em questão:

unit ACBrTEFDCliSiTef;

linha: 1162
  if Assigned(Resp) and (Resp.DataHoraTransacaoComprovante > (date - 3)) then
  begin
     // Leu com sucesso o arquivo pendente.
     // Transações com mais de três dias são finalizadas automaticamente pela SiTef
     DataStr := FormatDateTime('YYYYMMDD',Resp.DataHoraTransacaoComprovante);
     HoraStr := FormatDateTime('HHNNSS',Resp.DataHoraTransacaoComprovante);
  end
  else
  begin
     DataStr := FormatDateTime('YYYYMMDD',Now);
     HoraStr := FormatDateTime('HHNNSS',Now);
  end;

  • Membros Pro
Postado
1 hora atrás, Juliomar Marchetti disse:

Estaria alterando o que retorna do tef e isso está errado ou não?

Então, o suporte do CliSitef (Oclesio Marcilho) nos disse que a "responsabilidade" da DataHora é da SoftwareHouse. Que deveríamos informar a DataHora no Fuso -03:00 na "fSiTefAPI.FinalizaFuncaoSiTefInterativo( )", assim como fazemos na  "fSiTefAPI.IniciaFuncaoSiTefInterativo()".

O componente tem a propriedade DataHoraFiscal que é respeitada na IniciaFuncao, mas não é usada na FinalizaFuncao. No Log fica assim:
-- 02/02 15:49:59:711 - *** IniciaFuncaoSiTefInterativo. Modalidade: 0 Valor: 9,85 Documento: 1200734 Data: 20220202 Hora: 154959 Operador:  Restricoes: [10]{TipoTratamento=4}
-- 02/02 15:51:14:062 - *** FinalizaTransacaoSiTefInterativo. Confirma: SIM Documento: 1200734 Data: 20220202 Hora: 165058

 

Toda transação fica como se tivesse levado 1 hora entre o início e o fim da transação.

  • Fundadores
  • Solution
Postado

Olá @hetoandrade.. eu acho que a correção necessária, é justamente remover do IF a verificação de date-3

De acordo com o manual do SiTef, o valor de  DataFiscal, e HoraFiscal, informados no método FinalizaFuncaoSiTefInterativo, deve ser o mesmo valor usado em IniciaFuncaoSiTefInterativo

Citar

Exemplo: Uma venda realizada pela função IniciaFuncaoSiTefInterativo, passando como parâmetros Funcao 0, Valor 10,00, Cupom Fiscal 12345, Data Fiscal 20150101, Hora Fiscal 121500. Na confirmação da transação, a função FinalizaFuncaoSiTefInterativo deve ser chamada utilizando os seguintes parâmetros: Confirma 1, Cupom Fiscal 12345, Data Fiscal 20150101, Hora Fiscal 121500, ParamAdic como vazio/NULL, já que não há dados adicionais.

Experimente comentar a segunda parte do IF

 if Assigned(Resp) {and (Resp.DataHoraTransacaoComprovante > (date - 3))} then
  begin
     // Leu com sucesso o arquivo pendente.
     // Transações com mais de três dias são finalizadas automaticamente pela SiTef
     DataStr := FormatDateTime('YYYYMMDD',Resp.DataHoraTransacaoComprovante);
     HoraStr := FormatDateTime('HHNNSS',Resp.DataHoraTransacaoComprovante);
  end
  else
  begin
     DataStr := FormatDateTime('YYYYMMDD',Now);
     HoraStr := FormatDateTime('HHNNSS',Now);
  end; 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado (editado)

Bom dia, obrigado pela resposta.

Então... Nesse caso, Resp tem valor atribuído, então continuaria executando o trecho abaixo:

DataStr := FormatDateTime('YYYYMMDD',Resp.DataHoraTransacaoComprovante);

A propriedade Resp.DataHoraTransacaoComprovante, carrega o valor sempre do horário de Brasília.

Quando a function TACBrTEFDCliSiTef.FazerRequisicao é chamada, ela chama a função da ApiSitef "IniciaFuncaoSiTefInterativo", passando como parametro a DataHoraFiscal (que eu posso definir no componente durante a transação, ou posso deixar sem atribuir valor, que nesse caso retorna Now) com horário de MT. 

Função que define a DataHoraFiscal no "IniciaFuncaoSiTefInterativo"

 function TACBrTEFDCliSiTef.GetDataHoraFiscal: TDateTime;
begin
  if (csDesigning in Owner.ComponentState) then
     Result := fDataHoraFiscal
  else
     if fDataHoraFiscal = 0 then
        Result := Now
     else
        Result := fDataHoraFiscal;
end;

 

Então ao meu ver, no meu caso, eu precisaria na FinalizaTranacaoSitefInterativo informar ou o valor da propriedade DataHoraFiscal (que foi informada na Inicia), ou informar o Now novamente (que vai dar uns segundinhos de diferença)

Editado por hetoandrade
  • Fundadores
Postado

Mas DataHoraTransacaoComprovante, é a informação retornada pelo SiTef, referente a essa transação que acabou de ocorrer... 

Porque não seria correto, usar esse valor ?  Ele está retornando algo diferente dos valores informados na chamada de IniciaFuncaoSiTefInterativo ?

Porém como o "DataHoraFiscal", é sempre opcional.. creio que seria possível, modificar os fontes, para sempre usar ele, preferivelmente, caso esteja informado...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

×
×
  • 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...
The popup will be closed in 10 segundos...