Ir para conteúdo
  • Cadastre-se

Daniel Simoes

Fundadores
  • Total de ítens

    27.047
  • Registro em

  • Última visita

  • Days Won

    759

Tudo que Daniel Simoes postou

  1. Perfeito, isso mesmo... Use sempre a mesma chave, que você deve informar ao EAD no evento... Salve-as em um lugar seguro... Nunca distribua a chave Privada, apenas a chave Pública ou o XML Você pode usar o Demo do EAD para gerar o par de chaves, e tb o XML com a chave pública, requerido pelo eECFC
  2. A mensagem GP não inicializado só deve aparecer quando o ATV não obtém resposta do GP... Veja o LOG gerado pelo TEFD para uma maior compreensão... Quando vc instalou o Pay&Go verifique se ele se instalou com o mesmo diretorio e nome do GP do discado
  3. Alguns ECFs usam Letras como Indice dos totalizadores... ou ainda valores não lineares (contínuos) como -2, 28, etc... cada um será um caso diferente... Acho que dificilmente teremos um ECF com as mesmas condições de problema, ou seja, com os índices programados de forma não linear como é o caso dessa sua Bematech atual...
  4. Não nada de errado com o método CHQ A mensagem de erro indica que há algum problema com o seu G.P. - O G.P. Está realmente instalado ? - Está com o mesmo path e nome da propriedade no componente ? - Já está rodando e preso em alguma tela ?
  5. Alguma teoria sobre assinatura é pré-requisito... http://pt.wikipedia.org/wiki/Assinatura_digital Depois disso abra e estude os fontes do Demo do componente ACBrEAD
  6. Bobeira minha... modifiquei os fontes para gerar a lista de modelos dinamicamente... Já subi uma nova versão... por favor baixe novamente
  7. Sim... mas a versão do loop que está acima, deve resolver, pois ele usará valor o Indice "I" quando a conversão para Inteiro falhar... A única linha que mudou foi: P := StrToIntDef(CNFZ.Indice,I+1)-1
  8. Até onde lembro... acho que só no ECF da Epson isso seria possível... pois o comando de recuperação de dados da Z implementado no Sw.Básico dele, pode receber um numero de CRZ como entrada... Entretanto o método DadosUltimaReducaoZ do ACBrECF não prevê esse tipo de parâmetro de entrada...
  9. Acredito que estamos próximo agora... Tente essa nova versão.. for I := 0 to fpComprovantesNaoFiscais.Count - 1 do begin CNFZ := TACBrECFComprovanteNaoFiscal.Create ; CNFZ.Assign( fpComprovantesNaoFiscais[I] ); P := StrToIntDef(CNFZ.Indice,I+1)-1 CNFZ.Total := RoundTo( StrToFloatDef( copy(S,(P*14)+1,14),0) / 100, -2) ; CNFZ.Contador := StrToIntDef( copy(SS,(P*4)+1,4), 0); TotalizadoresNaoFiscais.Add( CNFZ ) ; end;
  10. Você sabe como é o processo de assinatura ?? Veja que o EAD já está na linha final... Aconselho você a ler um pouco mais sobre assinatura digital e chaves pública e privada
  11. Por favor teste e estude em detalhes o demo TEFDDemo, antes de tentar iniciar o seu desenvolvimento... Você não passou informações suficientes... não dá pra ter a mínima ideia do que seja "tef(15,'06',ecf.numcoo)" (não existe esse método no ACBrTEFD)
  12. Se vc usa o ACBrTEFD, então ACBrECF.Retentar DEVE ser igual a False
  13. Parece ser um BUG da DLL da Bematech... por favor entre em contato com o suporte deles, e nos comunique se houver necessidades de mudanças nos fontes do ACBr... Como vc está gerando os arquivos ? o ACBrECF já assina todos os arquivos que são gerados pelos métodos: PAFMF_* Observe se no final dos arquivos gerados existe o registro EAD
  14. Devemos subir para o SVN na semana que vem..
  15. ACBrSerial
  16. Você testou o código que lhe sugerir no post: ?
  17. Veja o exemplo no Demo... TEFDDemo, no evento OnDepoisConfirmarTransacoes
  18. Parece que vc está focado em resolver o seu problema apenas... a minha preocupação é fazer com que a classe funcione sempre, mesmo no caso de ECFs que não estão programados corretamente... A sua sugestão não corrige o problema de preenchimento dos valores dos registradores específicos...
  19. Experimente modificar a propriedade AutoAdvance para: aaNone
  20. Obrigado pelo post... agora compreendi.. e realmente concordo que deve ser um problema em relação a posição de programação do Registrador não iniciar em 1... Observe por favor se no Indice do REgistrados está a posição correta... Se estiver talvez o loop abaixo funcione: for I := 0 to fpComprovantesNaoFiscais.Count - 1 do begin CNFZ := TACBrECFComprovanteNaoFiscal.Create ; CNFZ.Assign( fpComprovantesNaoFiscais[I] ); P := StrToIntDef(CNFZ.Indice,0)-1 CNFZ.Total := RoundTo( StrToFloatDef( copy(S,(P*14)+1,14),0) / 100, -2) ; CNFZ.Contador := StrToIntDef( copy(SS,(P*4)+1,4), 0); TotalizadoresNaoFiscais.Add( CNFZ ) ; end;
  21. O que quis dizer é que a maneira que está implementado, pesquisando por uma String "Hard Coded", pode quebrar para outros modelos de ECF Bematech... infelizmente não posso subir a modificação para o SVN da maneira que está...
  22. As elgins antigas (matriciais) usavam ou o protocolo ecfMecaf ou ainda ecfSchalter As novas (com MFD) sempre usam o ecfFiscNet O protocolo Logger era das antigas Uranos (matriciais)
  23. Use o emulador da Urano.. ambas usam o protocolo FiscNET...
  24. Experimente apagar os fontes com sinal de exclamação em vermelho no Explorer..antes de atualizar
  25. provavelmente seus fontes estão desatualizados... Veja que nos fontes atuais há tratamento para ajustar a hora informada, em relação a tolerância máxima permitida pelo ECF... e também há um tratamento para chamar o método sem a DataHora quando ocorre o erro "0503" Procedure TACBrECFEpson.ReducaoZ(DataHora: TDateTime) ; var DtHrECF : TDateTime ; begin if DataHora <> 0 then begin DtHrECF := GetDataHora; DataHora := max( IncMinute(DtHrECF,-5), min( IncMinute(DtHrECF,5), DataHora)) ; end ; EpsonComando.Comando := '0801' ; EpsonComando.TimeOut := TempoInicioMsg + 30 ; // apenas para o bloqueio de teclado funcionar if DataHora <> 0 then begin EpsonComando.Extensao := '0001' ; EpsonComando.AddParamDateTime( DataHora, 'D' ) ; EpsonComando.AddParamDateTime( DataHora, 'T' ) ; end else begin EpsonComando.AddParamString( '' ) ; EpsonComando.AddParamString( '' ) ; end ; try EnviaComando ; except on E : Exception do begin if (pos('0107',E.Message) > 0) or // Erro de Hora fora da faixa ? (pos('0503',E.Message) > 0) then // Data em intervalo inválido. ReducaoZ(0) // Tenta sem DataHora else if (pos('0102',E.Message) > 0) then // Comando inválido para o documento atual. begin // Ficou algum Cupom aberto ? CancelaCupom ; ReducaoZ(DataHora); end else raise ; end ; end ; ZeraCache; end;
×
×
  • 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.