Ir para conteúdo
  • Cadastre-se

marcelo_sp

Membros
  • Total de ítens

    579
  • Registro em

  • Última visita

  • Days Won

    7

Tudo que marcelo_sp postou

  1. EscPos vc não instala Driver de Spool do Windows . Verifique na aba VirtualSat / Impressão como esta setado Porta da Impressora e Modelo da Impressora .
  2. No evento ACBrECFVirtualSAT1QuandoEfetuarPagamento : for i := 0 to ACBrSAT1.CFe.Det.Count -1 do begin with ACBrSAT1.CFe.Det.Items do nItem := i + 1 ; // Refaz a sequencia da numeração dos itens end ;
  3. Esta chave [Aliquotas] eu até populo no componente no ACBrECF mas ela é obsoleta para o virtual já que para o Sat não existe este mapeamento FF , T01 ... etc...etc... como no ECF . Repare no Demo que a cada item vendido pelo ACBrECF automaticamente é disparado o Evento ACBrECFVirtualSAT1QuandoVenderItem do ACBRECFVirtualSat e é exatamente neste evento que vc popula os valores gerais do item inclusive os impostos . Uma coisa que vc tem que cuidar é para o caso de descontos com o Virtual , veja que no Evento ACBrECFVirtualSAT1QuandoEfetuarPagamento do ACBRECFVirtualSat vc tem que refazer o calculo caso haja descontos , no meu caso eu populo somente as CST's e alíquotas e no verder item e neste evento de pagamento eu recalculo tudo pra fechar o cupom . No Demo eu coloquei alguns códigos comentado nestes eventos .
  4. Daniel efetuou modificações no ACBrSAT veja : http://www.projetoacbr.com.br/forum/topic/22677-modificações-em-acbrsat-trunk2/ Este Demo não é Oficial ! Novo Demo : ACBrECF.rar
  5. Tudo tranquilo , No ACBrECF vc seta a porta como Cupom.txt ou outro nome mas que seja arquivo.txt , acho que no exemplo deixei como ecf.txt , blz tbm . - Se vc utilizar o Extrato EscPos , vc vai perceber que no proprio Demo na aba VirtualSat tem a porta serial COM... para ser setado no caso para Impressões de Extrato e demais impressões que o ACBrECF manda . ( Não instalar Driver nesta opção ) . - Se Vc Utilizar o Fortes para impressão do Extrato , nesse caso não necessita de informar a porta e ai sim as impressões são via Spool do Windows (Driver) e tem que instalar o Driver da Impressora . Em ambos os métodos de extrato eu sempre seto no ACBrECF o arquivo.txt na porta , mas confesso que estou trabalhando mais com ESCPOS , o fortes eu não tenho feito testes mais a fundo .
  6. Ess boa tarde cara , Vc vai utilizar o ACBrECF1 + ACBrECFVirtualSAT1+ ACBrSAT1 + escolher em utilizar um método de impressão dos extratos como tem no Demo em anexo , ...EscPos ou ...Fortes , particularmente gosto mais do EscPos mas vc pode escolher EscPos ou Fortes . No caso de EscPos não se utiliza Driver nas marcas Epson , Bematech , Daruma , não sei dizer se outras marcas funcionam . A Epson é show a impressão com EscPos . Com muito pouco código vc deixar sua aplicação que hj utiliza ACBrECF pronta para SAT-CFe , colocamos em 2 clientes em produção a 2 dias e por enquanto esta 100% cara , estamos utilizando o Sat da Dimep mas os colegas aqui do forum estão utilizando outras marcas tbm sem problema nenhum . Utilizo Delphi-7 , mas vc pode utilizar outras versões superiores do Delphi normalmente . Trunk2
  7. I ai Daniel blz , Então cara , eu tinha ja visto este tópico seu tbm , vou rever isso hj a tarde , vlw .
  8. Criei duas flag's no meu .ini = 'Inicio_Nome_XML_Cfe' + 'Fim_Nome_XML_Cfe' do nome de montagem do arquivo xml . Eu guardo a imagem do conteúdo do XML no banco juntamente com a chave e demais informações necessitarias do CFe , o nome do arquivo não importa , porque quando dou um while ... com Query....savetofile eu faço o nome do .xml do savetofile do formato do momento baseado no meu ini assim : 'Inicio_Nome_XML_Cfe' + chave_do_banco + 'Fim_Nome_XML_Cfe' Recupero os XML's com o nome que fiscal , contador , dono da loja quizer .
  9. Atualize sua versão para trunk2 ! Se já estiver atualizado sua suite ACBr , verifique se não foi substituída ACBrSAT1GetcodigoDeAtivacao(var Chave: AnsiString); por ACBrSAT1GetcodigoDeAtivacao(var Chave: String); a versão atual esta String .
  10. Teste efetuado com Sat Dimep . Somente ativar o componente e fazer vendas com quantidade = 1,00 e valor item = 1,00 , para outros valores alterar no evento Vende item do componente .
  11. tchuck , Verifique se o certificado vinculado no cadastrado da SH na Sefaz é o mesmo que vc esta tentando gerar a assinatura .
  12. Bom dia meus amigos , Sabemos que existem vários programas geradores de assinatura para o SAT até mesmo espalhado aqui no forum , isso de fabricantes e outros de colegas , até eu me beneficiei deles e temos que agradecer a todos pela cortesia e disponibilidade de ajudarmos reciprocamente e que bom isso tudo para nossa classe . Sempre sonhamos em termos algo com nosso próprio logo certo , pensando nisso ontem a tarde dei um inicio em Delphi 7 e gostaria da ajuda de vcs para prosseguirmos com o projeto em Delphi , afinal um investe um pouquinho de tempo aqui outro investe um pouquinho de tempo ali e vamos somando em grupo assim . Bom , seguindo algumas etapas aqui de um tópico aqui mesmo do forum "com méritos do Daniel Simões (Administrador)" , consegui chegar na assinatura de Base 64 , mas a mesma não teve sucesso de validação ainda ! estou avaliando isso ! um dos primeiros problemas que percebi é que foi gerado alguns delimitadores na assinatura e isso é uma das coisas que tem que resolver . A principio a idéia é para certificados do tipo A1 mas o interessante é expandir tbm para A3 ficando completo em um só EXE , A1 e A3 . Estou disponibilizando o fonte com um ponta pé inicial do projeto e quem se interessar e quiser ajudar com idéias e melhorias seria ótimo , disponibilizando aqui neste tópico "Open Source" pra comunidade com Código Fonte para que todos da comunidade tenham acesso . Projeto em (Delphi 7 x OpenSSL) GeradorAssinaturaSat.rar
  13. Ok , vou fazer isso , Obrigado .
  14. Acho que agora estou entendendo oque vc está entendendo !! Veja , eu abro a aplicação e o ECF esta funcionando perfeitamente trabalhando normal , ai por algum motivo , o cabo desconecta , a energia acaba etc etc... ai acontece o problema , depois da aplicação já aberta !
  15. Atualizei agora e o Looping persiste , vou tentar explicar melhor , vamos la : 1 - Coma a AC ja em execução Desligo o ECF . 2 - Mando o comando AbreRelatorioGerencial... mas ainda não liguei o ECF (Com o ECF Desligado) . 3 - A AC vai me retornando mensagens de falta de comunicação até eu ligar o ECF e estabelecer comunicação , blz isso . 4 - Só que quando estiver comunicando AC x ECF após esta perda de comunicação o Status de RG := AchaRGIndice(FormatFloat('00',Indice)); vai ser sempre = Nil caindo no Raise , ou seja , a função AchaRGIndice vai me retornar sempre Nil e isso acontece porque fpRelatoriosGerenciais de GetRelatoriosGerenciais de ACBrECFClass não é mais Assigned então ele não consegue mais recuperar a lista do objeto fpRelatoriosGerenciais . Considerações ; 1 - Primeiro ele da os retornos normais de comunicação . 2 - Após eu ligar o ECF e a conexão estabelecer ai os Retornos em looping são o da imagem abaixo :
  16. Isso foi eu que coloquei propositalmente no fonte que baixei ontem que vc disponibilizou . procedure TACBrECFSwedaSTX.AbreRelatorioGerencial(Indice: Integer = 2 ); var sDescricao:String; RG:TACBrECFRelatorioGerencial; begin { Não existe indice 0 nessa impressora usando esse protocolo} { O indice 1 é reservado } if ( Indice = 0 ) or ( Indice = 1 ) then begin Indice := 2; CarregaRelatoriosGerenciais ; // Eu tinha colocado dentro de (if RG = nil then) mas cai a primeira vez no raise quando desligando o ECF antes , ai eu mudei para ca . end; RG := AchaRGIndice(FormatFloat('00',Indice)); if RG = nil then raise EACBrECFERRO.create( ACBrStr('Relatório Gerencial: '+IntToStr(Indice)+ ' não foi cadastrado.' )); sDescricao := PadRight(RG.Descricao,15); AguardaImpressao := True; EnviaComando('43|'+sDescricao); end; Testado na Sweda St120 .
  17. Daniel , sim eu realmente alterei o fonte pra recarregar os Relatorios Ger. antes de RG := AchaRGIndice(FormatFloat('00',Indice)); , propositalmente pra não entrar no Raise . Se eu desligar o ECF antes de ...AbreRelatorioGerencial() ; RG := AchaRGIndice(FormatFloat('00',Indice)); // Se não recarregar novamente antes os Relatorios Gerenciais fica retornando sempre (RG = nil) (Indice := 2) looping infinito mesmo religando o ECF .
  18. Segue anexo Correção: - Cancelamento Último Cupom (Após o primeiro cancelamento ficava carregada sempre a penúltima chave) . Tópico do debate : http://www.projetoacbr.com.br/forum/topic/22478-daniel-correção-acbrecfvirtualsat/ Unit Correção : ACBrSAT.zip
  19. Daniel , Atualizei agora e efetuei alguns testes e de momento esta bala , não retornou erros estranhos , desliguei o ECF e religuei varias vezes e mandando diversos comandos e maravilha . Somente a questão do indice de relatório gerencial que não da erro mas ele entra em looping infinito como mencionei acima . Segue a unit atualizada com a correção do Relatório Gerencial . Obrigado e vlw . ACBrECFSwedaSTX.zip
  20. Daniel , em relação ao fonte deixa eu debater mais contigo sobre este caso AV , quando isso tiver tbm resolvido 100% a eu coloco o fonte , pode ser ?
  21. Deixa comigo Daniel
  22. Daniel , referente novamente a questão AV . Pra mapear estes retornos coloquei um try na linha 992 , que é onde esta o AV , assim : ///// meu teste mylist := tstringlist.create ; try PosSTX := PosEx( STX , Result, PosETX); // Acha inicio do proximo Bloco mylist.add( '----------------------' ); mylist.add( 'PosETX = ' + inttostr(PosETX) ); mylist.add( 'Retorno = ' + Retorno ); mylist.add( 'Result = ' + Result ); mylist.add( 'STX = ' + VartoStr(STX) ); mylist.add( '----------------------' ); mylist.SaveToFile( 'c:\TesteSwedaSTX\Normal-' + Formatdatetime('yyyymmdd hhnnss' , now) + '.txt' ); except on e:exception do begin PosSTX := 100 ; mylist.add( '----------------------' ); mylist.add( 'Exception = ' + e.message ); mylist.add( 'PosETX = ' + inttostr(PosETX) ); mylist.add( 'Retorno = ' + Retorno ); mylist.add( 'Result = ' + Result ); mylist.add( 'STX = ' + VartoStr(STX) ); mylist.add( '----------------------' ); mylist.SaveToFile( 'c:\TesteSwedaSTX\Erro-' + Formatdatetime('yyyymmdd hhnnss' , now) + '.txt' ); end; end; mylist.Free ; ///// meu teste
  23. Vamos la em algumas coisa que encontrei referente Classe SwedaSTX , 1 - Na maioria da vezes , não sei ao certo se todas as vezes , sempre é quando se desliga o ECF ou retira o cabo e o componente fica tentado se conectar sem a resposta do ECF . 2 - Uma coisa que ja documento aqui e é um bug desta classe é que se em procedure TACBrECFSwedaSTX.AbreRelatorioGerencial(Indice: Integer = 2 ); o relatório gerencial não for encontrado pelo motivo de falta de comunicação com o ECF a perda de comunicação o componente entra em looping passando indice = 2 e retornando sempre nil na função AchaRGIndice neste caso segue correção ; procedure TACBrECFSwedaSTX.AbreRelatorioGerencial(Indice: Integer = 2 ); var sDescricao:String; RG:TACBrECFRelatorioGerencial; begin { Não existe indice 0 nessa impressora usando esse protocolo} { O indice 1 é reservado } if ( Indice = 0 ) or ( Indice = 1 ) then Indice := 2; RG := AchaRGIndice(FormatFloat('00',Indice)); if RG = nil then begin CarregaRelatoriosGerenciais ; // Se não recarregar fica retornando sempre (RG = nil) (Indice := 2) raise EACBrECFERRO.create( ACBrStr('Relatório Gerencial: '+IntToStr(Indice)+ ' não foi cadastrado.' )); end ; sDescricao := PadRight(RG.Descricao,15); AguardaImpressao := True; EnviaComando('43|'+sDescricao); end;
  24. Daniel bom dia , Este bug vem de alguns meses , como disse eu estava utilizando a classe antiga , mas estou investigando ainda , ta dando uma trabalheira danada , o interessante é que compilando com a Classe antiga não ocorre estes erros , no mesmo Delphi .
×
×
  • 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...