
lucasbelkys
Membros-
Total de ítens
63 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que lucasbelkys postou
-
Automatizar Consulta do CódigoNacionaldoECF
lucasbelkys replied to lucasbelkys's tópico in ACBrSerial
companheiro, isso é o que eu chamo de PRÓ-ATIVIDADE! surpreendeu... vou testar e qualquer mudança, commit nela. flw. -
Automatizar Consulta do CódigoNacionaldoECF
lucasbelkys replied to lucasbelkys's tópico in ACBrSerial
sim, a idéia é consultar por marca e por versão do SB, no resultado final um LOOP tenta chegar no ECF em questão comparando a string retornada pelo ACBr com a string do cadastro nacional de ECF's. Não acha viável companheiro ? -
Automatizar Consulta do CódigoNacionaldoECF
lucasbelkys replied to lucasbelkys's tópico in ACBrSerial
Talvez eu faça a compatibilização de um cadastro, com a string retornada pelo ACBR, vai depender do meu tempo aqui.. caso faça, eu disponibilizo pra todos. Ou entao um algorítimo para encontrar o ECF por probabilidade, ou seja, as strings não são exatas, mas são parecidas. Jogo um LIKE e no resultado final faço mais um filtro. Sacou? Abraço. -
Alguem já implementou a consulta automática do ECF num DB com todos os ECFs ? Por exemplo: no momento da inserção do ECF na tabela de "EcfsAutorizados", consultar seu código nacional automaticamente. Inclusive porque no PAF esse dados é necessário para gerar o arquivo "MovimentoPorECf" após Redução Z. Alguém ? Vlw
-
Obrigado. Seguinte, não sei se essa modificação foi necessária, é necessário que vc entenda o que eu fiz. Mas homologuei com o código como tá abaixo: procedure TACBrTEFDClass.ImprimirRelatorio; Var I,J : Integer; TempoInicio : TDateTime ; ImpressaoOk, RemoverMsg, GerencialAberto : Boolean ; Est : AnsiChar ; ArqBackup : String ; ImagemComprovante : TStringList ; begin VerificarIniciouRequisicao; if Resp.QtdLinhasComprovante < 1 then exit ; GravaLog( Name +' ImprimirRelatorio: '+Req.Header ); CopiarResposta ; ImpressaoOk := False ; RemoverMsg := False ; TempoInicio := now ; J := 0 ; with TACBrTEFD( Owner ) do begin try BloquearMouseTeclado( True ); while not ImpressaoOk do begin try try Est := EstadoECF; if Est <> 'L' then begin { Fecha Vinculado ou Gerencial ou Cupom, se ficou algum aberto por Desligamento } case Est of 'C' : begin ComandarECF( opeFechaVinculado ); Inc(J); //tentativas de impressao //alterado por lucas belkys end; 'G','R' : begin ComandarECF( opeFechaGerencial ); GerencialAberto:=false; //alterado por lucas belkys end; 'V','P','N' : ComandarECF( opeCancelaCupom ); end; if EstadoECF <> 'L' then raise EACBrTEFDECF.Create( ACBrStr('ECF não está LIVRE') ) ; end; GerencialAberto := False ; TempoInicio := now ; if Self.Resp.TextoEspecialOperador <> '' then begin RemoverMsg := True ; DoExibeMsg( opmExibirMsgOperador, Self.Resp.TextoEspecialOperador ) ; end; if Self.Resp.TextoEspecialCliente <> '' then begin RemoverMsg := True ; DoExibeMsg( opmExibirMsgCliente, Self.Resp.TextoEspecialCliente ) ; end; I := 1 ; while I <= self.NumVias do begin if I = 1 then ImagemComprovante := Self.Resp.ImagemComprovante1aVia else ImagemComprovante := Self.Resp.ImagemComprovante2aVia ; if ImagemComprovante.Count > 0 then begin if not GerencialAberto then begin ComandarECF( opeAbreGerencial ) ; if J>0 //se ja houve tentativas anteriores zera o contador "I". then I := 0 ; //alterado por lucas belkys GerencialAberto := True; end else begin if I <> 1 then ComandarECF( opePulaLinhas ) ; DoExibeMsg( opmDestaqueVia, 'Destaque a 1ª Via') ; end ; ECFImprimeVia( trGerencial, I, ImagemComprovante ) end ; Inc( I ) ; end; if GerencialAberto then ComandarECF( opeFechaGerencial ); ImpressaoOk := True ; finally { Removendo a mensagem do Operador } if RemoverMsg then begin { Verifica se Mensagem Ficou pelo menos por 5 segundos } if ImpressaoOk then begin while SecondsBetween(now,TempoInicio) < 5 do begin Sleep(EsperaSleep) ; Application.ProcessMessages; end; end; DoExibeMsg( opmRemoverMsgOperador, '' ) ; DoExibeMsg( opmRemoverMsgCliente, '' ) ; end; end; except on EACBrTEFDECF do ImpressaoOk := False ; else raise ; end; if not ImpressaoOk then begin if DoExibeMsg( opmYesNo, 'Impressora não responde'+sLineBreak+ 'Tentar novamente ?') <> mrYes then break ; end; end; finally { Enviando CNF ou NCN e apagando Arquivo de Backup } ArqBackup := Resp.ArqBackup ; while FileExists( ArqBackup ) do begin try if ImpressaoOk then self.CNF else self.NCN ; except end; DeleteFile( ArqBackup ) ; end ; BloquearMouseTeclado( False ); end ; if not ImpressaoOk then raise EACBrTEFDECF.Create( ACBrStr('Impressão de Relatório Falhou' ) ) ; end; end;
-
na verdade não precisei mudar nada. eu me precipitei ao postar esse código. na verdade eu exclui a pasta ACBR do meu PC, que estava toda mexida, e fiz o download novamente, e ficou tudo beleza.
-
Tive que mudar essa procedure (a inteção foi tratar abertura da tampa por vááárias vezes seguidas): procedure TACBrTEFDClass.ImprimirRelatorio; Var I : Integer; TempoInicio : TDateTime ; ImpressaoOk, RemoverMsg, GerencialAberto : Boolean ; Est : AnsiChar ; ArqBackup : String ; ImagemComprovante : TStringList ; begin VerificarIniciouRequisicao; if Resp.QtdLinhasComprovante < 1 then exit ; GravaLog( Name +' ImprimirRelatorio: '+Req.Header ); CopiarResposta ; ImpressaoOk := False ; RemoverMsg := False ; TempoInicio := now ; with TACBrTEFD( Owner ) do begin try BloquearMouseTeclado( True ); while not ImpressaoOk do begin try try Est := EstadoECF; if Est <> 'L' then begin { Fecha Vinculado ou Gerencial ou Cupom, se ficou algum aberto por Desligamento } case Est of 'C' : ComandarECF( opeFechaVinculado ); 'G','R' : begin ComandarECF( opeFechaGerencial ); [color=#FF0000]GerencialAberto:=false; //alterado por lucas belkys[/color] end; 'V','P','N' : ComandarECF( opeCancelaCupom ); end; if EstadoECF <> 'L' then raise EACBrTEFDECF.Create( ACBrStr('ECF não está LIVRE') ) ; end; GerencialAberto := False ; TempoInicio := now ; if Self.Resp.TextoEspecialOperador <> '' then begin RemoverMsg := True ; DoExibeMsg( opmExibirMsgOperador, Self.Resp.TextoEspecialOperador ) ; end; if Self.Resp.TextoEspecialCliente <> '' then begin RemoverMsg := True ; DoExibeMsg( opmExibirMsgCliente, Self.Resp.TextoEspecialCliente ) ; end; I := 1 ; while I <= self.NumVias do begin if I = 1 then ImagemComprovante := Self.Resp.ImagemComprovante1aVia else ImagemComprovante := Self.Resp.ImagemComprovante2aVia ; if ImagemComprovante.Count > 0 then begin if not GerencialAberto then begin ComandarECF( opeAbreGerencial ) ; [color=#FF0000]I := 0 ; //alterado por lucas belkys[/color] GerencialAberto := True; end else begin if I <> 1 then ComandarECF( opePulaLinhas ) ; DoExibeMsg( opmDestaqueVia, 'Destaque a '+IntToStr(I)+'ª Via') ; end ; ECFImprimeVia( trGerencial, I, ImagemComprovante ) end ; Inc( I ) ; end; if GerencialAberto then ComandarECF( opeFechaGerencial ); [color=#FF0000] if ImagemComprovante.Count=0 //alterado por lucas belkys then ImpressaoOk := True ;[/color] finally { Removendo a mensagem do Operador } if RemoverMsg then begin { Verifica se Mensagem Ficou pelo menos por 5 segundos } if ImpressaoOk then begin while SecondsBetween(now,TempoInicio) < 5 do begin Sleep(EsperaSleep) ; Application.ProcessMessages; end; end; DoExibeMsg( opmRemoverMsgOperador, '' ) ; DoExibeMsg( opmRemoverMsgCliente, '' ) ; end; end; except on EACBrTEFDECF do ImpressaoOk := False ; else raise ; end; if not ImpressaoOk then begin if DoExibeMsg( opmYesNo, 'Impressora não responde'+sLineBreak+ 'Tentar novamente ?') <> mrYes then break ; end; end; finally { Enviando CNF ou NCN e apagando Arquivo de Backup } ArqBackup := Resp.ArqBackup ; while FileExists( ArqBackup ) do begin try if ImpressaoOk then self.CNF else self.NCN ; except end; DeleteFile( ArqBackup ) ; end ; BloquearMouseTeclado( False ); end ; if not ImpressaoOk then raise EACBrTEFDECF.Create( ACBrStr('Impressão de Relatório Falhou' ) ) ; end;
-
Companheiros que passaram por tal processo, é o seguinte: se a homologação é da AC com o GP, pode haver ainda assim, necessidade de mexar no código da AC ? Imagino que pode ser que uma bandeira peça um teste que outra não peça, mas além disso há alguma modificação na AC ? Outra coisa, depois de homologado no Discado, a AC com o ACBRTEFD já fica compatível com o TEF Dedicado VesPague e ClisiTEF ? Grato.
-
VLW companheiro.
-
Nesse TEF tem duas modalidades técnicas: DLL e troca de arquivos, qual é utilizada no ACBRTEFD ? Obrigado
-
Codigo Nacional de Identificação de ECF
lucasbelkys replied to ricardomendes's tópico in ACBrSintegra/ACBrPAF
Continue contrubuindo com a comunidade, parabéns. . -
ROTEIRO DE PRÉ-CERTIFICAÇÃO SEVEN-PDV
lucasbelkys replied to lucasbelkys's tópico in Dúvidas sobre TEF
valeu, desculpa a vergonha que eu passei. haha -
Companheiro, quando citei a expressão "desencontro", me referi a situação onde o ACBrTEFD bloqueia os dispositivos de input e em seguida o componente ACBrECF lança uma pergunta de 'retry' ao usuário, no caso do desligamento do ECF durante a impressao de um CCD por exemplo, impossibilitando o usuário interagir com a máquina. Note que depois do 'retry' do ACBrECF, entra o retry do ACBrTEFD. Isso acontece porque como vc disse, não houve tentativa de encontro (não é uma crítica ao projeto). Depois da minha homologação irei mexer no código e "comitar" essa "tentativa de encontro". Abraço.
-
Você tem razão, mas ambos os componentes acessam a impressora, acesso direto (ACBrECF) e acesso indireto (ECBrTEFD), e ambos possuem "código de retry", o que o nosso companheiro acima está "reclamando" e que não foi muito claro na explicação, eu só entendi porque tive o mesmo problema, é que há um desencontro no bloqueio de mouse/teclado, impossibilitando o usuário interagir com a AC.
-
Companheiro Xispito, Isso estava me acontecendo até 3h atrás, até expus essa dificuldade no fórum, mas nada. O Retentar do ACBrECF é bem interessante deixar TRUE. Eu para não ter que perder essa funcionalidade do componente, fiz o seguinte: em tempo de execução: ACBrECF1.Retentar:=false; //quando você for usar o ACBrTEFD ACBrECF1.Retentar:=true; //quando você não estiver usando. {de repente você pode usar nos eventos do próprio ACBrTEFD} Boa sorte.
-
Diz o roteiro: "Efetuar uma nova venda com valor diferente da transação anterior . Na tela do GP não escolher Administradora. Ir até a pasta Teste e copiar o arquivo Intpos.001 que está nela e colocar na pasta RESP (C:tef_dial\resp). Esse arquivo (Intpos.001) ao ser colado na pasta RESP deve ser apagado, pois a AC deve identificar que o conteúdo do campo 001-000 é diferente do arquivo Intpos.001 que está na pasta REQ (C:\tef_Dial\Req). Após realizar esse procedimento por diversas vezes, abra o arquivo Intpos.001 que a AC gerou na pasta REQ (C:\tef_dial\req) e copie o valor que consta no campo 001-000 dele. Depois abra o arquivo Intpos.001 copiado para a pasta teste e substitua o valor do campo 001-000 copiado do Intpos.001 da REQ. Copie o arquivo Intpos.001 da pasta teste para a para RESP (C:\tef_dial\resp). A AC deverá realizar a impressão normalmente, visto que o valor do campo 001-000 retornado é igual ao que enviou ( Obs.: a AC deverá verificar apenas o campo 001-000 para fazer a impressão do comprovante TEF)." O problema é que feito essa situação a coisa emperra na mensagem do componente "O Gerenciador Padrão não está ativo e será ativado automaticamente!". Daí o fluxo do programa é interrompido, ou seja, nada mais acontece. Alguém ? vlw Roteiro Pré-Certificação_Abril2010.rar
-
Já resolvi. Vlw.
-
Companheiros, No roteiro de pré-certificação, no teste 7 diz: Venda com cartão. Antes de receber a resposta da transação, desligar o ECF no cupom fiscal antes de totalizá-lo. não confirmar a transação. Obs.: AC poderá fazer tratamento de queda de energia apresentando ao operador “Impressora não responde. Tentar novamente? Sim/Não ou poderá cancelar a transação TEF automaticamente, enviando NCN. Sendo que antes da mensagem “Impressora não responde. Tentar novamente?" aparece a mensagem: "A Impressora MFD não está Pronta. Deseja tentar novamente?" Sendo que o problema é que o teclado e o mouse continuam travados, ou seja, o usuário não tem como decidir. Alguém sabe onde é disparada essa mensagem no código fonte do ACBR para eu incluir a linha de "destravateclado" ? Ou então alguma solução? Acho que isso esteja acontecendo pq o controle de bloqueio e desbloqueio está por conta do ACBrTEFD e a mensagem última é do ACBrECF. O que me dizem ? Obrigado.
-
Nesse evento tem a operação opeSubTotalizaCupom, que é disparado depois da primeira requisição, sendo que no meu caso, todo cupom tem um acrescimo de 10% (gorjeta). Daí o TEFD não aceita valor acima do valor do cupom, até entao o cupom não foi totalizado com o acrescimo, pois estou deixando o TEFD controlar tudo. Como faço Companheiros? O jeito seria tirar parte do controle do componente, ou seja, deixar só as impressoes?
-
Agendamento TEF, alguém disposto a negociar troca de datas?
um tópico no fórum postou lucasbelkys Dúvidas sobre TEF
Desculpa fugir tanto do escopo do tópico, mas.. Teria aí algum companheiro que já fez o agendamento, mas não tem tanta pressa na certificação e teria interesse em negociar a data? Estou em apuros. Valeu. [MODERAÇÃO] Título foi ajustado para esclarecer melhor objetivo do tópico. EMBarbosa -
Companheiros, se eu deixar por conta do componente, ele irá conceber todas aquelas regras da certificação? tipo queda de energia, etc... NCN e CNC (em caso de multiplos cartoes). Estou perguntando mas já imaginando que sim. Só para eu não gastar tempo testando. Agradeço por qualquer informação.
-
{ *** Se estiver usando ACBrECF... Lembre-se de configurar *** ACBrECF1.MaxLinhasBuffer := 3; // Os homologadores permitem no máximo // Impressao de 3 em 3 linhas ACBrECF1.LinhasEntreCupons := 7; // (ajuste conforme o seu ECF) NOTA: ACBrECF nao possui comando para imprimir a 2a via do CCD } Companheiros, o ACBrECF não possui comando para imprimir a 2ª via do CCD, ok, nesse caso é só repetir o comando ? ex: ACBrECF1.LinhaCupomVinculado(ImagemComprovante.Text+#13+#10+#13+#10+#13+#10+#13+#10+#13+#10+#13+#10); frmAvisoTEF.lblStatus.Caption:='Destaque a 1ª Via !'; frmAvisoTEF.Refresh; ACBrECF1.CortaPapel(true); Sleep(3000); ACBrECF1.LinhaCupomVinculado(ImagemComprovante.Text); Posso imprimir todos os comprovantes dos cartoes multiplos num mesmo CCD ou todos os modelos de ECF permitem emitar mais de 1 CCD por cupom fiscal ? Obrigado por qualquer esclarecimento. Abraço.
-
Não sei se aqui é o lugar para postar esse tipo de informação, mas.... Na Procedure TACBrEAD.CalcularModuloeExpoente( var Modulo, Expoente : AnsiString ); da erro quando tento compilar o projeto: Record, object or class type required. Foi depois que eu atualizei os fontes via SVN.. resolvi mudando a linha de BN_print( Bio , fsKey.pkey.rsa.e); para BN_print( Bio , fsKey.pkey.rsa);
-
perfeito. aula de delphi inclusive.
-
Alguém sabe como posso fazer para usar as funções da DLL somente quando for conveniente ? Terei que desativar o ACBR para reconectar o aplicativo ao ECF pela DLL ? Tentei isso mas deu erros toscos. Obrigado.