-
Total de ítens
415 -
Registro em
-
Última visita
-
Days Won
4
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que giulianon postou
-
Eu não alterei Daniel. Estava esperando uma posição do Regys pra ver se essa seria a solução mesmo. Mas se quiser eu faço a alteração sem problemas. Att.
-
ACRbrTEFD (VeSPague) - Correção do cancelamento CNC
giulianon replied to giulianon's tópico in Dúvidas sobre TEF
Opa! Tranquilo então. Obrigado Daniel! Abraço! -
Não Daniel. Só essas mesmo. O evento para passar os parâmetros antes do CRT e a coleta da tag transacao_nsu_rede mapeando a mesma para uma propriedade como as demais. No mais tudo testado e Ok. Att.
-
ACRbrTEFD (VeSPague) - Correção do cancelamento CNC
giulianon replied to giulianon's tópico in Dúvidas sobre TEF
Delphi XE Daniel. -
Teclado especial Gertec
giulianon replied to Daniel Paixão-Cascavel's tópico in Dúvidas Gerais sobre o ACBr
Hehehehehehe. Por isso eu perguntei o que você pretendia fazer, já que sem display o máximo que se pode fazer é programar as teclas. -
Teclado especial Gertec
giulianon replied to Daniel Paixão-Cascavel's tópico in Dúvidas Gerais sobre o ACBr
Bom dia! O componente da ACBr que trabalha com teclados é o ACBrDis. Pode dar mais detalhes do que você que fazer? Att. -
Boa tarde Juliomar! Na verdade já sou homologado. Uso o modelo background. Só estou trocando o processo de transação, coleta, etc, que eu fiz na mão, pelo componente ACBrTEFD que facilita muito as coisas e permite que integração com outros Softwares de TEF seja mais fácil. Os "probleminhas" que por enquanto me impedem de concluir a migração são esses: 1 - Permitir que eu possa passar parâmetros para que certas informações não sejam coletadas junto ao usuário. Discutido nesse tópico. 2 - No cancelamento também encontrei um probleminha, quando o campo é alfanumérico, mas esse já corrigi e postei aqui 3 - E por último um que eu encontrei agora, que na verdade é apenas um campo que uso para conciliação de dados, mas que não está sendo guardado nas propriedades do ACBrTEFD. O campo é o nsu da rede que vem na tag do vespague TRANSACAO_NSU_REDE. Resolvendo o 1 e o 3 a integração está completa Att.
-
Boa tarde Regys! Descobri exatamente onde os parâmetros são "limpos". Quando é chamado o ATV, o mesmo chama o método ServicoIniciar da classe ACBrTEFDVeSPague. procedure TACBrTEFDVeSPague.ServicoIniciar ; begin repeat ReqVS.Servico := 'iniciar' ; /////////////////////////////////////////////// Chama o SetServico ReqVS.AddParamString('aplicacao',fAplicacao); ReqVS.AddParamString('versao',fAplicacaoVersao); TransmiteCmd; if RespVS.Sequencial < ReqVS.Sequencial then ReqVS.Sequencial := RespVS.Sequencial; until (RespVS.Retorno = 1) and (RespVS.Servico = ReqVS.Servico) ; end ; procedure TACBrTEFDVeSPagueCmd.SetServico(const AValue : AnsiString) ; begin fsParams.Clear; ///////////////////////////////////////////////////// Exatamente aqui que os parâmetros são zerados fsIsColeta := False ; Sequencial := fsSequencial + 1; Retorno := 1 ; AddParamString('servico',AValue); end; Acho que o jeito é criar um evento como você sugeriu. O que você acha? Att.
-
ACRbrTEFD (VeSPague) - Correção do cancelamento CNC
um tópico no fórum postou giulianon Dúvidas sobre TEF
Boa noite colegas! Segue correção do cancelamento de uma transação com o VeSPague. O parâmetro Resposta do evento ObtemCampo estava sendo passado ao AddParamString como AnsiString. No caso do cancelamento, quando é solicitado usuário e senha, a informação repassada como resposta era "distorcida", acredito eu que pelo fato do AnsiString se eu não me engano ser menor que o String. Exemplo: Usuario informado na edit do form de coleta = Lojista Senha informada na edit do form de coleta = Lojista O que era enviado ao VeSPague -- 29/03/12 11:43:45 TRANSMITINDO -> automacao_coleta_sequencial="1" automacao_coleta_informacao="L o j i" automacao_coleta_retorno="0" Na verdade esse problema acontecia com qualquer informação alfanúmerica com mais de 1 caracter, o que não acontece no processo de CRT já que a maioria as informações são coletadas via Menu e não campo. Só alterei de AnsiString pra String e funcionou certinho. Em anexo o arquivo com a correção para que o pessoal avalie e atualize no svn se estiver ok. Abraço! ACBrTEFDVeSPague.pas -
Bom dia Regys! Sim está tudo atualizado. Estou com a última versão do ACBr. Só pra ter certeza de que eu não tinha programado nenhum evento incorretamente, fiz os mesmos testes no TEFDemo, incluindo os parâmetros tanto antes do CRT, quanto nos eventos que você sugeriu, mas infelizmente não funcionou. Em algum momento desse método VerificarTransacaoPagamento( Valor ); os parâmetros são "zerados". Achei que fosse no ATV, mas se você disse que não, vou tentar descobrir exatamente onde é ai posto aqui. Obrigado! Att.
-
Então Regys, o métdo que "zera" os parâmetros é o VerificarTransacaoPagamento Function TACBrTEFDVeSPague.CRT( Valor : Double; IndiceFPG_ECF : String; DocumentoVinculado : String = ''; Moeda : Integer = 0 ) : Boolean; var Retorno : Integer ; begin VerificarTransacaoPagamento( Valor ); //////////////////////////// Depois desse métodos os parâmetros ReqVS são zerados Retorno := FazerRequisicao( fTransacaoCRT, 'CRT', Valor, DocumentoVinculado) ; //////////// Método FazerRequisicao foi o que eu alterei if Retorno = 0 then Retorno := ContinuarRequisicao( False ) ; { False = NAO Imprimir Comprovantes agora } Result := ( Retorno in [0,1] ) ; if Result then ProcessarRespostaPagamento( IndiceFPG_ECF, Valor ) else FinalizarRequisicao; end; O método FazerRequisicao que eu alterei na classe ACBrTEFDVeSPague Detalhe é que esse método tem um parâmetro ListaParams que não é utilizado na chamada do mesmo pelo CRT. Function TACBrTEFDVeSPague.FazerRequisicao( Transacao : String; AHeader : AnsiString = ''; Valor : Double = 0; Documento : AnsiString = ''; ListaParams : AnsiString = '') : Integer ; begin if fpAguardandoResposta then raise Exception.Create( ACBrStr( 'Requisição anterior não concluida' ) ) ; fCancelandoTransacao := (AnsiUpperCase(Transacao) = 'ADMINISTRACAO CANCELAR'); ServicoIniciar ; ReqVS.Servico := 'executar' ; ReqVS.AddParamString( 'transacao', Transacao ) ; ///////////////////////////////////////////////////////////////////////////////// Esses foram os que eu inclui para testar ReqVS.AddParamString('transacao_valor_taxa_embarque','0'); ReqVS.AddParamString('transacao_valor_taxa_servico','0'); ReqVS.AddParamString('transacao_valor_saque','0'); ///////////////////////////////////////////////////////////////////////////////// if Valor > 0 then ReqVS.AddParamDouble('transacao_valor', Valor); // V&SPague não coleta o Documento if TransacaoOpcao <> '' then ReqVS.AddParamString( 'transacao_opcao', TransacaoOpcao ) ; if ListaParams <> '' then ReqVS.Params.Add(ListaParams); TransmiteCmd ; Result := RespVS.Retorno; Resp.Clear; if not (Result in [0,1]) then exit ; with TACBrTEFDRespVeSPague( Resp ) do begin if Documento = '' then Documento := IntToStr(fpIDSeq) ; { Adiciona Campos já conhecidos em Resp, para processa-los em métodos que manipulam "RespostasPendentes" (usa códigos do G.P.) } Conteudo.GravaInformacao(899,100, AHeader ) ; Conteudo.GravaInformacao(899,101, IntToStr(ReqVS.Sequencial) ) ; Conteudo.GravaInformacao(899,102, Documento ) ; Conteudo.GravaInformacao(899,103, IntToStr(Trunc(SimpleRoundTo( Valor * 100 ,0))) ); // Grava valor de "Transacao|Sequencia" em 27(Finalizacao) para usar no CNF, NCN Conteudo.GravaInformacao(27,0, Transacao+'|'+IntToStr(ReqVS.Sequencial) ); Resp.TipoGP := fpTipo; end; Req.Clear; Req.Header := AHeader; Req.ID := ReqVS.Sequencial; Req.DocumentoVinculado := Documento; Req.ValorTotal := Valor; end; Bom, fico aguardando você analisar a possível alteração Regys. Mas desde já obrigado!! Abraço! Att.
-
Também não funcionou Regys. O problema é que o CRT manda um comando pra ativar (ATV) o serviço do vespague antes, e nesse momento o ReqVS que já tinha sido "setado" é "zerado" e preenchido com os parâmetros para esse comando. Esses parâmetros teriam que ser passados exatamente no envio do CRT, ou preservados para serem novamente informados no comando CRT propriamente dito. Os eventos pelo que eu pude perceber são disparados depois do comando CRT. Fiz um teste alterando o fonte e enviando os parâmetros exatamente no CRT e funcionou certinho.
-
Tentei Regys. Tanto o OnObtemCampo quanto o OnExibeMenu. Não funcionou Pelo que eu vi aqui a primeira linha do método CRT do VeSPague chama a sequência de métodos VerificarTransacaoPagamento( Valor ) -> VerificaAtivo -> ATV -> IniciarRequisicao que dá um Req.Clear; Acredito que seja ai que os parâmetros sejam "zerados".
-
Boa tarde colegas! Estou tentando passar alguns parâmetros para o tef, para que os mesmos não tenham sua coleta solicitada ao usuário. Estou utilizando o VeSPague e passando os parâmetros das seguinte maneira: tefd.TEFVeSPague.ReqVS.AddParamString('transacao_valor_taxa_embarque','0'); tefd.TEFVeSPague.ReqVS.AddParamString('transacao_valor_taxa_servico','0'); tefd.TEFVeSPague.ReqVS.AddParamString('transacao_valor_saque','0'); if tefd.TEFVeSPague.CRT(valorJvValidateEdit.AsCurrency,'4') then Depurando o processo, eu notei que os parâmetros de fato são adicionados, mas ao chamar método CRT, eles são "zerados" antes do envio do comando. Minha dúvida é se estou incluindo os parâmetros de forma errada, no momento errado ou se realmente tem algum bug na sequência do processo. Alguém já fez esse tipo de processo? Agradeço desde já qualquer ajuda ou dica. Att.
-
Bom dia colegas! Só pra informar que funcionou. Obrigado! Att.
-
Opa! Acho que esse "if ACBrTEFD.CRT(...) then" resolve Regys. O evento não porque só confirmo as transações na outra tela, depois que a impressão foi feita corretamente. Vou testar amanhã cedinho e posto aqui se funcionou. Obrigado mais uma vez! Att.
-
Boa noite colegas! Estou mudando as rotinas (tef com o vespague) que eu tinha feito no "braço" no meu sistema, para utilizar agora o ACBrTEFD. O componente pra não variar é show de bola. Mão na roda total! Com exemplo TEFDemo então, foi rapidinho pra implementar. Mas como sempre, também aparecem dúvidas de como fazer determinada coisa, da maneira correta e não com "gambiarra". Bom, eu não estou utilizando os eventos do componente que tem "ligação" com a ecf, e a tela que faço o processo de transação com o tef, não é na mesma tela onde eu finalizo a venda. O que eu preciso fazer é bem simples. Fechar a tela automaticamente no momento em que eu receber o comprovante e a transação for aprovada, pois a impressão vai ser feita a partir da outra tela. E ai que não to encontrando no compontente o evento ou momento para saber quando a transação foi aprovada. Em resumo, seria mais ou menos como utilizar o TefDemo e quando mostrar ali a mensagem de transação for aprovada fechar a tela. Estudei os fontes e tem uma propriedade "tefd.Resp.TransacaoAprovada" mas a mesma retorna sempre TRUE, que é o padrão da classe abstrata e também da classe do vespague, clisitef, etc. Não sei se alguém tem situação parecida, mas de qualquer forma agradeço qualquer dica sobre alguma propriedade ou evento do componente que eu talvez ainda não tenha identificado para obter essa informação. Vou continuar estudando aqui pra tentar resolver. Att.
-
Automalog Consultoria e Sistemas Ltda Software: AutoPDV 1.20.00 Laudo: UNS0092012 Homologado em 09/03/2012 Especificações Requisito 01.10 Componentes: ACBrECF, ACBrBAL, ACBrEAD, ACBrPAF, ACBrSintegra, ACBrValidador, ACBrLCB, ACBrSped, ACBrNFe2, ACBrExtenso, ACBrETQ. Considerações sobre a homologação: 1 - O paf atualmente tem que emitir NFe, mesmo no meu caso, sendo um software para caixa de supermercado, onde operacionalmente isso não tem como funcionar. 2 - Fiz a homologação com a ECF Daruma FS 700, e a mesma quando é feito o teste de retirar a bobina de papel e tentar abrir uma venda, retorna ECF fora de linha. Segundo o homologador deve retornar SEM PAPEL. Fiz o teste na Sweda e ela retorna corretamente mas a Daruma não. Att.
-
Bom dia Juliomar! Eu faço dessa maneira que o Daniel te sugeriu. Mas realmente se o operador do sistema tiver acesso ao cartão e usá-lo em algum scanner de mão vai saber o código tranquilamente. Pra "aumentar" um pouco a segurança, se o cartão for scaneado utilizando o meu sistema, ex: venda, consulta de produto, etc eu não mostro o código. Mas isso apenas ameniza a situação. O jeito é trocar a senha com certa frequência. Abraço! Att.
-
Boa tarde colegas! Só pra encerrar o tópico, testei o comando da dll que o Elton postou e funcionou perfeitamente. iRetorno := Bematech_FI_AtivaDesativaVendaUmaLinhaMFD( 0 ); // Desabilita venda em uma Linha; A ecf agora imprime todos os itens do cupom com o mesmo tamanho de fonte. Att.
-
Pow galera muito obrigado pelas inúmeras respostas! Vou fazer essa colocação sobre a economia pra ele, e espero que ele entenda, repassando isso para que os clientes entendam também. De qualquer forma vou testar essas opções passadas por vocês, e se ele realmente quiser que tudo saia "bonitinho" na ecf, ai tenho como atende-lo. Mais uma vez muito obrigado a todos!! Att.
-
Na verdade o problema é que a ecf imprime com fontes de diferente tamanho, dependendo do item, e ai ele achou que estéticamente fica ruim O jeito é ver como se configura isso. Assim que conseguir posto aqui. Att.
-
http://partners.bematech.com.br/forum/viewtopic.php?f=2&t=1397&p=5543 Opa! Obrigado Elton! Vou fazer testes com essas quantidades de caracteres e também entrar contato com o suporte da bematech pra ver se isso pode ser configurado. Abraço! Att.
-
É uma MP 2100-TH FI.