Membros Pro hetoandrade Posted February 8 Membros Pro Share Posted February 8 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; Link to comment Share on other sites More sharing options...
Consultores Juliomar Marchetti Posted February 8 Consultores Share Posted February 8 Estaria alterando o que retorna do tef e isso está errado ou não? Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to comment Share on other sites More sharing options...
Membros Pro hetoandrade Posted February 8 Author Membros Pro Share Posted February 8 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. Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted February 8 Fundadores Share Posted February 8 Por favor anexe todo o Log, com destaque em uma transação, onde ocorre esse problema Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Membros Pro hetoandrade Posted February 10 Author Membros Pro Share Posted February 10 Segue log da transação CliSiTef.log Link to comment Share on other sites More sharing options...
Fundadores Solution Daniel Simoes Posted February 10 Fundadores Solution Share Posted February 10 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; Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Membros Pro hetoandrade Posted February 10 Author Membros Pro Share Posted February 10 (edited) 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) Edited February 10 by hetoandrade Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted February 10 Fundadores Share Posted February 10 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... Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted February 10 Fundadores Share Posted February 10 Tente com essa Unit, em anexo... ACBrTEFDCliSiTef.pas Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Membros Pro hetoandrade Posted February 10 Author Membros Pro Share Posted February 10 3 minutos atrás, Daniel Simoes disse: Tente com essa Unit, em anexo... ACBrTEFDCliSiTef.pas 52 kB · 0 downloads Acho que fica bom assim, daí é só eu informar a DataHoraFiscal no Componente antes de fazer a chamada né? Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted February 10 Fundadores Share Posted February 10 Sim... por favor faça uns testes, para confirmarmos a correção e enviar ao SVN Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Fundadores Daniel Simoes Posted February 18 Fundadores Share Posted February 18 No SVN... Commit [r24650] Daniel Simões de Almeida O melhor TEF, é com o Projeto ACBr - Clique e Conheça Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to comment Share on other sites More sharing options...
Recommended Posts