Ir para conteúdo
  • Cadastre-se

Smaili Amorim

Membros
  • Total de ítens

    11
  • Registro em

  • Última visita

2 Seguidores

Contact Methods

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

Últimos Visitantes

291 visualizações

Smaili Amorim's Achievements

Rookie

Rookie (2/14)

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

Recent Badges

1

Reputação

  1. Adicionado a propriedade EstornarPagamentoIndividual para ligar o novo comportamento ACBrTEFAPICliSiTef.pas ACBrTEFAPIComum.pas
  2. 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
  3. 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;
  4. 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
  5. 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
  6. 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.
  7. 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.
  8. 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.
  9. 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?
  10. 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...