Ir para conteúdo
  • Cadastre-se

Smaili Amorim

Membros
  • Total de ítens

    15
  • Registro em

  • Última visita

2 Seguidores

Contact Methods

  • Website URL
    https://smartinform.com.br/

Últimos Visitantes

357 visualizações

Smaili Amorim's Achievements

Apprentice

Apprentice (3/14)

  • Collaborator Rare
  • First Post
  • Conversation Starter
  • Reacting Well Rare
  • Dedicated Rare

Recent Badges

1

Reputação

  1. Eu fiz uma modificação no arquivo ACBrTEFAPICliSiTef.pas que está em anexo, somente para terminar a homologação. Só que dessa forma que eu fiz acho que não vai funcionar se estiver ativado a opção de FinalizarTransacaoIndividual Mas eles tbm não aceitaram homologar com essa opção ativado porque ela tbm está enviando o FinalizaTransacaoSiTefInterativo para cada transação, e no roteiro de homologação pede somente um FinalizaTransacaoSiTefInterativo. ACBrTEFAPICliSiTef.pas
  2. Esse exemplo é de múltiplos pagamentos 09:46:16:745 - *** IniciaFuncaoSiTefInterativo. Modalidade: 3 Valor: 40,00 Documento: 3133 Data: 20250527 Hora: 094616 Operador: ParamAdic: 09:46:45:314 - *** IniciaFuncaoSiTefInterativo. Modalidade: 2 Valor: 60,00 Documento: 3133 Data: 20250527 Hora: 094645 Operador: ParamAdic: 09:47:07:501 - *** FinalizaTransacaoSiTefInterativo. Confirma: SIM, Documento: 3133, Data: 20250527, Hora: 094633, ParametrosAdicionais: 1º Ele envia o primeiro pagamento com a hora 094616 2º Recupera a transação com a DataHora, que dá alguns segundos de diferença 094633 3º Ele envia o segundo pagamento com a hora 094645 4º Finaliza a função enviando a hora recuperada 094633 E eles querem que vá sempre o horário do primeiro pagamento que nesse exemplo seria o 094616
  3. Ele falou que no exemplo a hora é a mesma e teria que seguir o que esta no exemplo https://dev.softwareexpress.com.br/docs/clisitef/clisitef_documento_principal
  4. Ao homologar o Sitef com o ACBrTEFAPI foi retornado que o parâmetro hora deve ser o mesmo da primeira IniciaFuncaoSiTefInterativo para todas as transações tef 15:51:35:275 - *** IniciaFuncaoSiTefInterativo. Modalidade: 110 Valor: 0,00 Documento: 20250527155135 Data: 20250527 Hora: 155135 Operador: ParamAdic: 15:52:09:002 - *** FinalizaTransacaoSiTefInterativo. Confirma: SIM, Documento: 20250527155135, Data: 20250527, Hora: 155204, ParametrosAdicionais:
  5. Adicionado a propriedade EstornarPagamentoIndividual para ligar o novo comportamento ACBrTEFAPICliSiTef.pas ACBrTEFAPIComum.pas
  6. Só que o componente TEFD com o SiTef estorna os pagamentos individuais. Eu acho mais fácil ter pessoas que estão usando o componente achando que está estornando os pagamentos individualmente do que estornando todos, pq se alguém olha o comportamento no TEFAPIDemo vai achar que estorna os pagamentos individualmente
  7. Pequeno ajuste para validar se variavel NumeroPagamentoCupom esta vazia procedure TACBrTEFAPIClassCliSiTef.FinalizarTransacao(const Rede, NSU, CodigoFinalizacao: String; AStatus: TACBrTEFStatusTransacao); var Confirma: Boolean; i: Integer; DocumentoVinculado: String; DataHora: TDateTime; NumeroPagamentoCupom: String; begin // CliSiTEF não usa Rede, NSU e Finalizacao DocumentoVinculado := ''; DataHora := 0; Confirma := (AStatus in [tefstsSucessoAutomatico, tefstsSucessoManual]); if (NSU = '') and (CodigoFinalizacao <> '') then // capturado por 130 em CarregarRespostasPendentes ? begin DocumentoVinculado := CodigoFinalizacao; for i := 0 to fpACBrTEFAPI.RespostasTEF.Count-1 do begin if fpACBrTEFAPI.RespostasTEF[i].DocumentoVinculado = DocumentoVinculado then begin DataHora := fpACBrTEFAPI.RespostasTEF[i].DataHoraTransacaoComprovante; Break; end; end; end else begin i := fpACBrTEFAPI.RespostasTEF.AcharTransacao(Rede, NSU, CodigoFinalizacao); if (i >= 0) then begin DocumentoVinculado := fpACBrTEFAPI.RespostasTEF[i].DocumentoVinculado; DataHora := fpACBrTEFAPI.RespostasTEF[i].DataHoraTransacaoComprovante; if not Confirma then begin NumeroPagamentoCupom := '{NumeroPagamentoCupom='+IntToStr(fpACBrTEFAPI.RespostasTEF[i].IdPagamento)+'}'; ParamAdicFinalizacao.Add(NumeroPagamentoCupom); end; end; end; FinalizarTransacaoSiTef(Confirma, DocumentoVinculado, DataHora); if not Confirma and (NumeroPagamentoCupom <> '') then ParamAdicFinalizacao.Delete(ParamAdicFinalizacao.IndexOf(NumeroPagamentoCupom)); end;
  8. Alterar direto na classe TACBrTEFAPIClassCliSiTef procedure TACBrTEFAPIClassCliSiTef.FinalizarTransacao(const Rede, NSU, CodigoFinalizacao: String; AStatus: TACBrTEFStatusTransacao); var Confirma: Boolean; i: Integer; DocumentoVinculado: String; DataHora: TDateTime; NumeroPagamentoCupom: String; begin // CliSiTEF não usa Rede, NSU e Finalizacao DocumentoVinculado := ''; DataHora := 0; Confirma := (AStatus in [tefstsSucessoAutomatico, tefstsSucessoManual]); if (NSU = '') and (CodigoFinalizacao <> '') then // capturado por 130 em CarregarRespostasPendentes ? begin DocumentoVinculado := CodigoFinalizacao; for i := 0 to fpACBrTEFAPI.RespostasTEF.Count-1 do begin if fpACBrTEFAPI.RespostasTEF[i].DocumentoVinculado = DocumentoVinculado then begin DataHora := fpACBrTEFAPI.RespostasTEF[i].DataHoraTransacaoComprovante; Break; end; end; end else begin i := fpACBrTEFAPI.RespostasTEF.AcharTransacao(Rede, NSU, CodigoFinalizacao); if (i >= 0) then begin DocumentoVinculado := fpACBrTEFAPI.RespostasTEF[i].DocumentoVinculado; DataHora := fpACBrTEFAPI.RespostasTEF[i].DataHoraTransacaoComprovante; if not Confirma then begin NumeroPagamentoCupom := '{NumeroPagamentoCupom='+IntToStr(fpACBrTEFAPI.RespostasTEF[i].IdPagamento)+'}'; ParamAdicFinalizacao.Add(NumeroPagamentoCupom); end; end; end; FinalizarTransacaoSiTef(Confirma, DocumentoVinculado, DataHora); if not Confirma then ParamAdicFinalizacao.Delete(ParamAdicFinalizacao.IndexOf(NumeroPagamentoCupom)); end; E verificar se pode remover essa validação na função TACBrTEFAPIClassCliSiTef.FinalizarTransacaoSiTef if (pos(DoctoStr, fDocumentosFinalizados) > 0) then Exit; Pois ela não deixa estornar mais que um pagamento por venda
  9. Deu certo fazendo dessa forma TACBrTEFAPIClassCliSiTef(ACBrTEFAPI1.TEF).ParamAdicFinalizacao.add('{NumeroPagamentoCupom='+IntToStr(AResp.IdPagamento)+'}'); ACBrTEFAPI1.FinalizarTransacao(); Mas o componente já tem essas duas funções para cancelar ou estornar todas as transações ACBrTEFAPI1.FinalizarTransacoesPendentes(); ACBrTEFAPI1.CancelarOuEstornarTransacoesDiretorioTrabalho; Acho que a função ACBrTEFAPI1.FinalizarTransacao() está com o comportamento errado
  10. Sim, mas digamos que a venda 1 tenha 3 pagamentos, quando o atendente tentar estornar um, o componente vai estornar todos os pagamentos da venda 1 Depois na venda 2 tem dois pagamentos e o atendente tentar estornar um pagamento o componente vai estornar os dois.
  11. No componente TEFD o documento vinculado a transação era um número aleatório gerado por FormatDateTime('hhmmss',Now), com isso todo pagamento tinha um DocumentoVinculado único. No componente TEFAPI é passado no início do pagamento o parâmetro IdentificadorTransacao(que no TEFAPIdemo é passado o Venda.NumOperacao que é sempre 1). A função de FinalizarTransacao do SiTef estorna o pagamento filtrando pelo DocumentoVinculado, no TEFD como o identificador é único ele estorna somente o pagamento enviado na função de FinalizarTransacao, mas no caso TEFAPI é o 1 para todos os pagamentos então ele estorna todos.
  12. Teria como você colocar um exemplo? pq eu não entendi como eu sinalizo que o pagamento não deve ser confirmado. Utilizando o exemplo com o componente ACBrTEFD eu faço o mesmo procedimento e só é cancela o pagamento selecionado os outros continuam pendente.
  13. No caso eu não mandei cancelar, eu mandei o comando de FinalizarTransacao ACBrTEFAPI1.FinalizarTransacao( AResp.Rede, AResp.NSU, AResp.Finalizacao, tefstsErroDiverso ); Mas também testei o comando de CancelarTransacao ACBrTEFAPI1.CancelarTransacao( AResp.NSU, AResp.CodigoAutorizacaoTransacao, AResp.DataHoraTransacaoHost, AResp.ValorTotal, AResp.Finalizacao, AResp.Rede ); O comportamento foi o seguinte... Ele cancelou a transação que eu mandei cancelar, confirmou as outras transações pendentes e imprimiu todos os comprovantes seria esse mesmo o comportamento? ou seria outro comando para estorna?
  14. Bom dia, ao excluir um pagamento de uma venda, com múltiplos pagamentos utilizando o TACBrTEFAPI . O componente está cancelando todos os pagamentos pendentes.
×
×
  • 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...