Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá, semana passada eu fui homologar o SiTef junto à Software Express e Certified. No pré-teste o ACBr atendeu a todos requisitos sem problema, mais chegando lá, foi informado que havia tido alterações no roteiro. E com isso, algumas alterações precisaram ser feitas no componente para atender ao roteiro.

Primeiro problema que eu tive foi: Ao cancelar uma transação pelo ADM, o componente não estava enviando a confirmação do cancelamento. Eu descobri que ele enviava o campo documento vazio, e retornava outro documento, quando ele tentava confirmar esse documento, ele não existia. A solução foi simples: passei um numero qualquer nos parâmetros no comando ADM.

Linha 673:

Antes:


Sts := FazerRequisicao( fOperacaoADM, 'ADM' ) ;

Depois:

Sts := FazerRequisicao( fOperacaoADM, 'ADM', 0, '00666', fRestricoes) ;

Outra era ao cancelar por falha na impressora, ele também deve confirmar a transação de cancelamento. Linha 1214: Antes:
        if HouveImpressao then

           FinalizarTransacao( (ImpressaoOk or fCancelamento),

                               Resp.DocumentoVinculado );
Depois:
        if (HouveImpressao and fCancelamento) then

        begin

           DoExibeMsg( opmOK,

                       Format( CACBrTEFD_CliSiTef_TransacaoEfetuadaReImprimir,

                               [Resp.NSU]) ) ;

           ConfirmarTransacoesPendentes;

        end;
Linha 1290 a 1300: Antes:
  if not Confirma then

  begin

     if fCancelamento  then

        TACBrTEFD(Owner).DoExibeMsg( opmOK,

                    Format( CACBrTEFD_CliSiTef_TransacaoEfetuadaReImprimir,

                            [Resp.NSU]) )

     else

        TACBrTEFD(Owner).DoExibeMsg( opmOK, CACBrTEFD_CliSiTef_TransacaoNaoEfetuada );

  end;
Depois:
  if not Confirma then

  begin

     if fCancelamento  then

     begin

        TACBrTEFD(Owner).DoExibeMsg( opmOK,

                    Format( CACBrTEFD_CliSiTef_TransacaoEfetuadaReImprimir,

                            [Resp.NSU]) ) ;

        TACBrTEFD(Owner).ConfirmarTransacoesPendentes;

     end

     else

        TACBrTEFD(Owner).DoExibeMsg( opmOK, CACBrTEFD_CliSiTef_TransacaoNaoEfetuada );

  end;
Outro problema que eu tive e custei a descobri o problema foi na Certified que o homologador pediu para eu fazer uma reimpressão só do comprovante do lojista. O componente imprimia normalmente o comprovante do cliente e o comprovante completo, mais o do lojista ele não saia. Eu descobri que ele testa se a primeira via tem texto, e se sim, ele imprime, senão passa direto. Como a via do lojista é a segunda via somente, o ACBr não imprimia nada. Linha 380: Antes:
   fpQtdLinhasComprovante := fpImagemComprovante1aVia.Count;
Depois:
   if (fpImagemComprovante1aVia.Count = 0) and (fpImagemComprovante2aVia.Count > 0) then

   begin

     fpImagemComprovante1aVia.Text := fpImagemComprovante2aVia.Text;

     fpImagemComprovante2aVia.Clear;

   end;


   fpQtdLinhasComprovante := fpImagemComprovante1aVia.Count;

Uma coisa engraçada foi que o homologador (gente boa pra caramba por sinal), me disse que é a coisa mais normal o pessoal não imprimir a via do lojista. O que me leva acreditar que muita gente usa o ACBr. Inclusive, enquanto eu estava homologando a primeira parte na SE, um rapaz que estava fazendo homologação também usava o ACBr, e nós nos unimos para resolver esses problemas.

Aqui vai algumas recomendações: Primeira coisa é sempre preencher os dados do software no sistema na propriedade Identificacao. Segundo é sempre conferir (talvez até colocar obrigatório para SiTef), se está enviando a restrição {TipoTratamento=4}. O pessoal usou o DUMP para verificar se estava indo essa restrição. No mais, parabéns ao componente. Atendeu corretamente à todos os requisitos exigidos, inclusive ao Cielo Prêmia.

Postado

A unit que eu mexi, eu rodei um formatador nela, então tá impossível de fazer um merge nela. =S

Mais ali são poucas alterações... dá pra fazer sem problema.

  • Fundadores
Postado

Oi Crash,

Estou tentando fazer um merge...

em relação a mudança proposta em:

Outra era ao cancelar por falha na impressora, ele também deve confirmar a transação de cancelamento.

Linha 1214:

Isso deve ocorrer mesmo que não seja aberto nenhum documento ?

A mudança proposta parece mudar o fluxo das rotinas... por que não fazer apenas:


if HouveImpressao or fCancelamento then
FinalizarTransacao( (ImpressaoOk or fCancelamento),
Resp.DocumentoVinculado );[/code] Isso também dispensaria a modificação seguinte Linhas: 1290 a 1300: Em relação a outra mudança proposta, na Linha 380: Pelo que pode analisar, se modificarmos para:
[code]
fpQtdLinhasComprovante := max( fpImagemComprovante1aVia.Count,
fpImagemComprovante2aVia.Count )

Já seria suficiente...

Você poderia repetir os testes com o código atual do SVN (faça um backup da sua Unit antes)

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.

Postado

Isso deve ocorrer mesmo que não seja aberto nenhum documento ?

o componente não estava enviando o comando de confirmação:

No meio da impressão do comprovante (entre a primeira e segunda via), o homologador desliga a impressora, aparece a mensagem perguntando se deseja tentar novamente sim ou não, quando clica-se em não com a impressora desligada, a automação deve confirmar a transação assim mesmo e pedir para o operador reimprimir. O problema é que essa transação de cancelamento não estava sendo confirmada. Tanto pelo ADM tanto pelo desligamento de máquina... em qualquer caso um comando CNF deve ser enviado. Então é independente de documento aberto na impressora.

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