Imprimir Cupom Fiscal
Salve galera ...
Um de meus clientes disse que daqui um tempo ele vai querer emitir cupom fiscal na empresa dele e me perguntou se tinha como meu sistema fazer isso. (delphi + firebird)
Bom, dando uma garimpada no forum achei varios topicos relacionados e aproveitei muita coisa deles, a primeira coisa que fiz foi entrar no site da bematech e baixar o exemplo, a DLL e o emulador da impressora (pra não gastar dinheiro comprando uma :lol: ).
Do exemplo tirei algumas conclusões e aqui está o ponto G ... hehehe ... me corrijam se eu estiver errado por favor.
Para impressão de um cupom fiscal percebi os seguintes passos:
1º - Abre o cupom fiscal
2º - Vende Itens
3º - Inicia fechamento do cupom
4º - Efetua forma de pagamento do cupom
5º - Finaliza o cupom
Notei tb que existem alguns relatórios como:
Leitura X
Redução Z
Queria saber de vcs que tem experiência na área quais os processos que uma empresa que emite cupom fiscal deve seguir, por ex:
A impressão do cupom é naquela ordem mesmo ou tem mais algum passo?
No final do dia é necessário tirar a Redução Z?
Quando se emite a Leitura X?
Vi tb que o sistema deve ser homologado pela receita estadual, como é feita essa homologação? Eles verificam o sistema pra ver se tudo está correto?
Agradeço antecipadamente
Um de meus clientes disse que daqui um tempo ele vai querer emitir cupom fiscal na empresa dele e me perguntou se tinha como meu sistema fazer isso. (delphi + firebird)
Bom, dando uma garimpada no forum achei varios topicos relacionados e aproveitei muita coisa deles, a primeira coisa que fiz foi entrar no site da bematech e baixar o exemplo, a DLL e o emulador da impressora (pra não gastar dinheiro comprando uma :lol: ).
Do exemplo tirei algumas conclusões e aqui está o ponto G ... hehehe ... me corrijam se eu estiver errado por favor.
Para impressão de um cupom fiscal percebi os seguintes passos:
1º - Abre o cupom fiscal
2º - Vende Itens
3º - Inicia fechamento do cupom
4º - Efetua forma de pagamento do cupom
5º - Finaliza o cupom
Notei tb que existem alguns relatórios como:
Leitura X
Redução Z
Queria saber de vcs que tem experiência na área quais os processos que uma empresa que emite cupom fiscal deve seguir, por ex:
A impressão do cupom é naquela ordem mesmo ou tem mais algum passo?
No final do dia é necessário tirar a Redução Z?
Quando se emite a Leitura X?
Vi tb que o sistema deve ser homologado pela receita estadual, como é feita essa homologação? Eles verificam o sistema pra ver se tudo está correto?
Agradeço antecipadamente
Armando.boza
Curtidas 0
Respostas
Dopi
14/02/2006
Ola,
Permita-me indicar esse forum específico sobre [url=http://www.forumweb.com.br/foruns/index.php?showforum=416]Automação Comercial[/url]
No forum acima posso recomendar os seguinte tópicos:
http://www.forumweb.com.br/foruns/index.php?showtopic=38345
http://www.forumweb.com.br/foruns/index.php?showtopic=38700
Permita-me indicar esse forum específico sobre [url=http://www.forumweb.com.br/foruns/index.php?showforum=416]Automação Comercial[/url]
No forum acima posso recomendar os seguinte tópicos:
http://www.forumweb.com.br/foruns/index.php?showtopic=38345
http://www.forumweb.com.br/foruns/index.php?showtopic=38700
GOSTEI 0
Marcosrodias
14/02/2006
Ola
Eu tenho uma aplicacao em dephi 7 e firebird. E roda tudo bem.
Vc deve estar atento ao seguinte.
1) A sequencia de venda que vc colocou esta correta. Só lembre que pode dar desconto ou acrescimo e pode ter mais de uma forma de pagamentol Por exemplo voce pode pagar o cupom com dinheiro e cheque por exemplo.
2) Leitura x geralmente é usado para tirar relatorios voce tem até 10 minutos para a impressao. Caso passe deste tempo a impressora fecha o relatorio automaticamente.
3) A reduzao é obrigatario. No caso da bematech se voce nao tirar a reducao no dia quando voce ligar a ecf no proximo dia ele vair tirar a reducao sozinha.
4) Leve em conta os status da impressora. Se esta ligada se tem papel, se tem erro na memoria fiscal. Voce tem que monitorar essas informações.
5) Se quiser colocar tef tem os comando espcificos para isso mas voce vai ter que homologar junto a adminitradores de cartao de credito e ai vc vai ter que ter ter uma impressora e ir para sao paulo, caso voce seja de outra localidade e ainda vai pagar pela homologacao. Entçao pense nisso
6) Por causa do sintegra voce tem que gerar as vendas corretamente. Aqui em salvador/ba o fisco exigiu que todos os softwares fossem certificados por ela. Se voce quiser vender seu software aquie me salvaodr por exemplo vai ter que viar aqui para certificar. Mais uma vez voce paga para isso.
7) Geralmente as empressas fabricantes da ecf tem um driver para comunicação com a ecf e um exemplo em varias linguagems que vai lhe auxilir. Só é baixar e ver.
Qualquer coisa estout a disposicao.
Marcos Roberto / SSA BA
Eu tenho uma aplicacao em dephi 7 e firebird. E roda tudo bem.
Vc deve estar atento ao seguinte.
1) A sequencia de venda que vc colocou esta correta. Só lembre que pode dar desconto ou acrescimo e pode ter mais de uma forma de pagamentol Por exemplo voce pode pagar o cupom com dinheiro e cheque por exemplo.
2) Leitura x geralmente é usado para tirar relatorios voce tem até 10 minutos para a impressao. Caso passe deste tempo a impressora fecha o relatorio automaticamente.
3) A reduzao é obrigatario. No caso da bematech se voce nao tirar a reducao no dia quando voce ligar a ecf no proximo dia ele vair tirar a reducao sozinha.
4) Leve em conta os status da impressora. Se esta ligada se tem papel, se tem erro na memoria fiscal. Voce tem que monitorar essas informações.
5) Se quiser colocar tef tem os comando espcificos para isso mas voce vai ter que homologar junto a adminitradores de cartao de credito e ai vc vai ter que ter ter uma impressora e ir para sao paulo, caso voce seja de outra localidade e ainda vai pagar pela homologacao. Entçao pense nisso
6) Por causa do sintegra voce tem que gerar as vendas corretamente. Aqui em salvador/ba o fisco exigiu que todos os softwares fossem certificados por ela. Se voce quiser vender seu software aquie me salvaodr por exemplo vai ter que viar aqui para certificar. Mais uma vez voce paga para isso.
7) Geralmente as empressas fabricantes da ecf tem um driver para comunicação com a ecf e um exemplo em varias linguagems que vai lhe auxilir. Só é baixar e ver.
Qualquer coisa estout a disposicao.
Marcos Roberto / SSA BA
GOSTEI 0
Marcosrodias
14/02/2006
Mas uma coisa. Use as dlls de cada fabricante. Eu usei um dias desses uma dll da afreac e nao tive suporte.
Agora só uso das proprias ecfs;
Agora só uso das proprias ecfs;
GOSTEI 0
Dopi
14/02/2006
Marcos,
Se vc quer uma opção que seja Multi-ECF experimente conhecer o componente ACBrECF do [URL=http://acbr.sf.net]Projeto ACBr[/url]... Veja [url=http://acbr.sourceforge.net/wiki/index.php/ECF]aqui os modelos suportados[/url] (mais de 10)
- Não usa nenhuma DLL, apenas a comunicação direta com o ECF via Serial
- É multi-plataforma (Delphi / Kylix)
- É OpenSource
- Suporte á vários outros equipamentos, como Impressoras de Cheques, Balanças, Display de Msgs, Gavetas, Micro-Terminais, etc...
- Componente para válidar CPF, CNPJ, I.E. (todos Estados do Brasil), Cheque, Cartao, PIS, CEP
Se vc quer uma opção que seja Multi-ECF experimente conhecer o componente ACBrECF do [URL=http://acbr.sf.net]Projeto ACBr[/url]... Veja [url=http://acbr.sourceforge.net/wiki/index.php/ECF]aqui os modelos suportados[/url] (mais de 10)
- Não usa nenhuma DLL, apenas a comunicação direta com o ECF via Serial
- É multi-plataforma (Delphi / Kylix)
- É OpenSource
- Suporte á vários outros equipamentos, como Impressoras de Cheques, Balanças, Display de Msgs, Gavetas, Micro-Terminais, etc...
- Componente para válidar CPF, CNPJ, I.E. (todos Estados do Brasil), Cheque, Cartao, PIS, CEP
GOSTEI 0
Armando.boza
14/02/2006
Ola
Eu tenho uma aplicacao em dephi 7 e firebird. E roda tudo bem.
Vc deve estar atento ao seguinte.
1) A sequencia de venda que vc colocou esta correta. Só lembre que pode dar desconto ou acrescimo e pode ter mais de uma forma de pagamentol Por exemplo voce pode pagar o cupom com dinheiro e cheque por exemplo.
2) Leitura x geralmente é usado para tirar relatorios voce tem até 10 minutos para a impressao. Caso passe deste tempo a impressora fecha o relatorio automaticamente.
3) A reduzao é obrigatario. No caso da bematech se voce nao tirar a reducao no dia quando voce ligar a ecf no proximo dia ele vair tirar a reducao sozinha.
4) Leve em conta os status da impressora. Se esta ligada se tem papel, se tem erro na memoria fiscal. Voce tem que monitorar essas informações.
5) Se quiser colocar tef tem os comando espcificos para isso mas voce vai ter que homologar junto a adminitradores de cartao de credito e ai vc vai ter que ter ter uma impressora e ir para sao paulo, caso voce seja de outra localidade e ainda vai pagar pela homologacao. Entçao pense nisso
6) Por causa do sintegra voce tem que gerar as vendas corretamente. Aqui em salvador/ba o fisco exigiu que todos os softwares fossem certificados por ela. Se voce quiser vender seu software aquie me salvaodr por exemplo vai ter que viar aqui para certificar. Mais uma vez voce paga para isso.
7) Geralmente as empressas fabricantes da ecf tem um driver para comunicação com a ecf e um exemplo em varias linguagems que vai lhe auxilir. Só é baixar e ver.
Qualquer coisa estout a disposicao.
Marcos Roberto / SSA BA
Valew .. ja me clareou bastante ...
O que seria esse SINTEGRA ???
GOSTEI 0
Dberlese
14/02/2006
Para impressão de um cupom fiscal percebi os seguintes passos:
1º - Abre o cupom fiscal
2º - Vende Itens
3º - Inicia fechamento do cupom
4º - Efetua forma de pagamento do cupom
5º - Finaliza o cupom
Notei tb que existem alguns relatórios como:
Leitura X
Redução Z
Agradeço antecipadamente
Estou tentando utilizar os componentes da ACBr, assim como disse nosso amigo acima tem uma ´regra´ a ser seguida, no meu caso tenho uma impressora mecaf IM113I, é uma impressora não fiscal, gostaria apenas de imprimir um cupom com os itens da venda, nome do cliente e nada mais, porem nao estou conseguindo fazer isso, pois é registrado itens vendidos, tem q abir cupom, leiturax, reducao Z... fazer uma serie de coisas q sera desnecesario no meu caso.
Alguem sugere uma ideia?
Obrigado
GOSTEI 0
Edilcimar
14/02/2006
para impressora não fiscal vc não pode usar os comandos de uma impressora fiscal, use o writeln()
GOSTEI 0
Andremuller
14/02/2006
estava tentando utilizar os componentes da ACBr e eles se mostraram bem complicados no controle de excessão e com execussão muito lenta se comparado a utilização das interfaces disponibilizadas pelos fabricantes.
Voltei atrás e estou utilizando as interfaces dos fabricantes, onde algumas vem com exemplos e até aplicações que captam as saídas enviadas pelo teu programa e simulam a existência de um impressora, o que facilita pra quem não tem a impressora no local.
Basta organização, eu criei um pattern factory que instancia a classe da impressora a partir do modelo utilizado. Então numa Custom criei os métodos abstratos necessários para manipulação da impressora. Aí é só especializar a Custom de acordo com os modelos que vou disponibilizando de acordo com a necessidade dos clientes.
Essa é uma idéia de diversas possíveis
Voltei atrás e estou utilizando as interfaces dos fabricantes, onde algumas vem com exemplos e até aplicações que captam as saídas enviadas pelo teu programa e simulam a existência de um impressora, o que facilita pra quem não tem a impressora no local.
Basta organização, eu criei um pattern factory que instancia a classe da impressora a partir do modelo utilizado. Então numa Custom criei os métodos abstratos necessários para manipulação da impressora. Aí é só especializar a Custom de acordo com os modelos que vou disponibilizando de acordo com a necessidade dos clientes.
Essa é uma idéia de diversas possíveis
GOSTEI 0
Edilcimar
14/02/2006
eu não tenho nada contra a afrac ou a acbr, mas também prefiro usar as dll do próprio fabricante, faço uma configuração sobre qual a máquina que está instalada e depois faço a chamada da dll desejada
GOSTEI 0
Kitsystem
14/02/2006
Se o software for apenas para Bematech como são a grande maioria pode embarcar na Dll do Fabricante, mas se for para outros voos nada de DLL amarrada a um fabricante e um monte de Case no software
ACbr faz isto para vc
ACbr faz isto para vc
GOSTEI 0
Andremuller
14/02/2006
não precisa de um monte de cases.
É só criar uma Abstact Factory. Media dúzia de linhas e foi.
É só criar uma Abstact Factory. Media dúzia de linhas e foi.
GOSTEI 0
Zumbi
14/02/2006
teria como postar ou me enviar um exemplo dessa classe eu gostaria de tentar implementa-la tb..
vlw..
vlw..
GOSTEI 0
Dopi
14/02/2006
não precisa de um monte de cases.
É só criar uma Abstact Factory. Media dúzia de linhas e foi.
Acredito que o amigo não tenha conhecimento da diversidade de ´linguagens´ e maneiras de funcionamento entre os diversos ECFs utilizados no Brasil... Suportar 2 ou 3 ECFs até é possível com um monte de IFs e ELSEs, mas para suportar vários fabricantes e modelos acredito que o mais indicado seja usar os recursos da O.O. (herança e polimorfismo)
GOSTEI 0
Dopi
14/02/2006
estava tentando utilizar os componentes da ACBr e eles se mostraram bem complicados no controle de excessão e com execussão muito lenta se comparado a utilização das interfaces disponibilizadas pelos fabricantes.
Estranho, pois tenho e-mails de usuários que tiveram um ganho real de performance usando o ACBr... Mas é claro que tudo depende da Marca, Modelo de ECF e do teste que vc fez... Gostaria de mais informações se possível.. No projeto: [i:472778e008]\ACBr\Source\Pascal\Demo\VCL\[b:472778e008]ECFTeste.dpr[/b:472778e008][/i:472778e008], existe a opção CupomFiscal, Teste de Velocidade, que cronometra a impressão de um cupom completo de 1 a n itens
No Inicio do tópico vc citou que está usando uma Mecaf [b:472778e008]NAO FISCAL[/b:472778e008], ou seja, uma impressora comum, e não um ECF... O ACBr possui um [b:472778e008]Emulador de ECF[/b:472778e008] interno, que é o modelo [b:472778e008]ecfNaoFiscal[/b:472778e008]... Ele é um programa em Delphi que imita um ECF em todas as operações, até mesmo com necessidade de Redu.Z e Leit.X... é muito útil para escrever um programa com suporte a ECFs para quem não tem um ECF para testes... se vc reparar no código fonte, verá que ele usa [b:472778e008]writeln[/b:472778e008] para imprimir...
Voltei atrás e estou utilizando as interfaces dos fabricantes, onde algumas vem com exemplos e até aplicações que captam as saídas enviadas pelo teu programa e simulam a existência de um impressora, o que facilita pra quem não tem a impressora no local.
O ACBr apenas cresce graças a coperação de usuários que estão dispostos a ajudar... ainda não temos manual dos componentes... Mas se vc procurasse um pouco mais, veria que todos os componentes possuem excelentes Demos na pasta
[i:472778e008]\ACBr\Source\Pascal\Demo\VCL\[/i:472778e008]
GOSTEI 0
Andremuller
14/02/2006
Suportar 2 ou 3 ECFs até é possível com um monte de IFs e ELSEs, mas para suportar vários fabricantes e modelos acredito que o mais indicado seja usar os recursos da O.O. (herança e polimorfismo)
Trabalhar com design patterns é a coisa mais OO que existe. E Abstract Factory é implementação pura de herança e polimorfismo.
Então o que você faz. Cria uma classe abstrata com os principais métodos de uma ECF. Depois cria uma classe concreta para cada ECF. Então cria uma ClassControl que instancie a classe concreta dentro de um objeto declarado como com o tipo da classe abstrata, pronto, esta aí a interface com a ECF.
Tipo assim:
TCustomECF = class(TObject) public AvancarLinha; abstract virtual; end;
TECFShalter = class(TCustomECF) public AvancarLinha; override; //aqui você coloca a Dll do fabricante end;
TControlECF = class(TObject) public property ECF: TCustomECF read FECF write FECF; constructor Create; reintroduce; end; TControlECF.Create; begin //aqui vai o único case de todo código, nada de monte de ifs e elses case GetModeloECF do ECF := TECFShalter.Create; end; end;
o que acontece então, em toda tua aplicação tu acessa o oControl.ECF.AvancarLinha que ele vai executar o método na classe concreta onde consta o real comando com a DLL.
Tá aí, esse é um pattern, porém existem diversos patterns que deixam o código mais limpo, organizado e OO. Pra quem tem interece procurar sobre o assunto, os principais autores são GOMS (The Gang of Four)
GOSTEI 0
Andremuller
14/02/2006
só mais uma coisa, então tu cria uma classe concreta pra cada tipo de ECF que tu vai dando suporte aos poucos. Também o código que postei escrevi direto aqui na mensagem, então desculpem-me erros de sintaxe.
GOSTEI 0
Dopi
14/02/2006
É exatamente assim que o ACBrECF trabalha...
A unit ACBrECFClass é praticamente toda abstrata, cada classe especifica para modelo/marca de um ECF é filha de ACBrECFClass, e implementa os métodos abstratos da classe mãe, que sejam compatíveis com a marca/modelo do ECF em questão... O componente ACBrECF possui uma proriedade que é do tipo ACBrECFClass... Essa propriedade é destruida/criada a cada mudança de modelo de ECF com o mesmo case que vc citou.
Portanto ACBrECF.LeituraX irá emitir uma Leitura X em qualquer modelo de ECF suportado pelo ACBr, basta apenas especificar o modelo no componente...
O problema de fazer uma interface generica baseada em DLLs para mais de 10 ECFs pode ser justamente as DLLs... pois:
- DLLs apenas rodam no Windows e nem todos fabricantes possuem DLLs para Linux (.SO) ( O ACBr é multiplataforma, rodando no Delphi, Kylix e Lazarus)
- O Inferno das DLLs... Se o usuário instalar outro programa que sobreponha a sua DLL no SYSTEM32 vc poderá ter problemas de dificil diagnóstico
- Numero extenso de DLLs... Acredito que atualmente, para suportar todos os equipamentos que o ACBr suporta (entre ECFs, Balanças, Impres.Cheques, Leitores, etc) seriam necessárias mais 30 DLLs diferentes !!!
- Falta de controle da aplicação. Sempre que vc chama a DLL não é o seu programa que está no comando... E nem todas as DLLs são bem escritas... Já vi empresas terem problemas na homologação TEF por causa de DLLs que não detectavam que o ECF foi desligado no meio da operação
Por fim, assim que vc estudar um pouco mais outros modelos de ECFs vc notará que existem diferenças enormes para executar a mesma tarefa...
Exemplo: O ECF DataRegis não possui uma função para abrir o cupom, ele é aberto automaticamente assim que a Venda de Item é comandada.. Ele tb não tem comando para Fechar o cupom, ele é fechado assim que o Pagamento atingiu o Total a pagar
A unit ACBrECFClass é praticamente toda abstrata, cada classe especifica para modelo/marca de um ECF é filha de ACBrECFClass, e implementa os métodos abstratos da classe mãe, que sejam compatíveis com a marca/modelo do ECF em questão... O componente ACBrECF possui uma proriedade que é do tipo ACBrECFClass... Essa propriedade é destruida/criada a cada mudança de modelo de ECF com o mesmo case que vc citou.
Portanto ACBrECF.LeituraX irá emitir uma Leitura X em qualquer modelo de ECF suportado pelo ACBr, basta apenas especificar o modelo no componente...
O problema de fazer uma interface generica baseada em DLLs para mais de 10 ECFs pode ser justamente as DLLs... pois:
- DLLs apenas rodam no Windows e nem todos fabricantes possuem DLLs para Linux (.SO) ( O ACBr é multiplataforma, rodando no Delphi, Kylix e Lazarus)
- O Inferno das DLLs... Se o usuário instalar outro programa que sobreponha a sua DLL no SYSTEM32 vc poderá ter problemas de dificil diagnóstico
- Numero extenso de DLLs... Acredito que atualmente, para suportar todos os equipamentos que o ACBr suporta (entre ECFs, Balanças, Impres.Cheques, Leitores, etc) seriam necessárias mais 30 DLLs diferentes !!!
- Falta de controle da aplicação. Sempre que vc chama a DLL não é o seu programa que está no comando... E nem todas as DLLs são bem escritas... Já vi empresas terem problemas na homologação TEF por causa de DLLs que não detectavam que o ECF foi desligado no meio da operação
Por fim, assim que vc estudar um pouco mais outros modelos de ECFs vc notará que existem diferenças enormes para executar a mesma tarefa...
Exemplo: O ECF DataRegis não possui uma função para abrir o cupom, ele é aberto automaticamente assim que a Venda de Item é comandada.. Ele tb não tem comando para Fechar o cupom, ele é fechado assim que o Pagamento atingiu o Total a pagar
GOSTEI 0
Andremuller
14/02/2006
Daniel obrigado pela informação. Concordo com boa parte do que foi por ti dito. Porém:
1. Uma coisa não é empecilho: a diferença para executar uma tarefa. Nas minhas classes me confrontei com isso. O que acontece se ele não abre cupom? Na classe concreta a função devolve result True, sem fazer mais nada. Tem mais, se isso for empecilho pra mim vai ser pra ACBr também, pois no caso do componente eu também vou executar um AbrirCupom indiferente de saber ou não se o modelo suporta. Dessa forma é só tratar, da mesma forma como a ACBr fez.
2. Utilizando as DLLs do fabricante (minha aplicação só roda em windows, isso é uma restrição e um pré-requisito) a impressão é mais rápida, isso é fato, testei no mesmo equipamento das duas formas. Ocorre que meus clientes não emitem ítem a ítem no cupom conforme vão passando, eles querem emitir todo cupom ao final da compra, dessa forma pra mim é muito mais requisito a impressão ser rápida do que ser multi plataforma.
3. As DLLs não ficam no System32 e sim na pasta da minha aplicação.
1. Uma coisa não é empecilho: a diferença para executar uma tarefa. Nas minhas classes me confrontei com isso. O que acontece se ele não abre cupom? Na classe concreta a função devolve result True, sem fazer mais nada. Tem mais, se isso for empecilho pra mim vai ser pra ACBr também, pois no caso do componente eu também vou executar um AbrirCupom indiferente de saber ou não se o modelo suporta. Dessa forma é só tratar, da mesma forma como a ACBr fez.
2. Utilizando as DLLs do fabricante (minha aplicação só roda em windows, isso é uma restrição e um pré-requisito) a impressão é mais rápida, isso é fato, testei no mesmo equipamento das duas formas. Ocorre que meus clientes não emitem ítem a ítem no cupom conforme vão passando, eles querem emitir todo cupom ao final da compra, dessa forma pra mim é muito mais requisito a impressão ser rápida do que ser multi plataforma.
3. As DLLs não ficam no System32 e sim na pasta da minha aplicação.
GOSTEI 0
Andremuller
14/02/2006
complementando:
Achei a iniciativa da ACBr louvável. Também achei os componentes muito simples de serem utilizados e bons. Para as pessoas que não possuem como uns dos principais requisitos imprimir cupons com 200 ítens com vários terminais enviando solicitações, quer dizer, o mais rápido possível, não desaconselho a utilização dos componentes.
Achei a iniciativa da ACBr louvável. Também achei os componentes muito simples de serem utilizados e bons. Para as pessoas que não possuem como uns dos principais requisitos imprimir cupons com 200 ítens com vários terminais enviando solicitações, quer dizer, o mais rápido possível, não desaconselho a utilização dos componentes.
GOSTEI 0
Dopi
14/02/2006
No ACBr prefiri usar o mecanismo de exceções do Delphi ao invez de retornar True / False como nas DLLs... Optei dessa maneira pois, é o ´jeitão´ do Delphi tratar erros... mas concordo que esse ponto é um dos que mais causa ´estranheza´ para quem está migrando das DLLs para o ACBrECF...
Também temos preocupação quanto a performance no ACBr... e procuramos otimiza-lo ao máximo, sempre que possível... Como disse antes, gostaria de fazer um comparativo...
Se não for muito trabalhoso, gostaria de saber o tempo que vc tem para a execução de um cupom completo com 50 itens e apenas 1 pagamento... Qual a Marca, Modelo e versão do ECF ?
Também temos preocupação quanto a performance no ACBr... e procuramos otimiza-lo ao máximo, sempre que possível... Como disse antes, gostaria de fazer um comparativo...
Se não for muito trabalhoso, gostaria de saber o tempo que vc tem para a execução de um cupom completo com 50 itens e apenas 1 pagamento... Qual a Marca, Modelo e versão do ECF ?
GOSTEI 0
Andremuller
14/02/2006
Não tenho um tempo específico para a impressão do cupom. Tenho o mínimo tempo possível porque o cliente estará esperando o cupom e o terminal estará ´bloqueado´ enquanto a impressão não termina, e outro cliente estará esperando para passar os ítens nesse terminal momentaneamente bloqueado.
Então porque não imprimir os ítens enquanto vão passando? Para o empresário poder cancelar tudo e dar baixa no estoque sem pagar imposto.
O modelo que usei para o teste de rapidez foi uma Shalter SPrint 3.01
Então porque não imprimir os ítens enquanto vão passando? Para o empresário poder cancelar tudo e dar baixa no estoque sem pagar imposto.
O modelo que usei para o teste de rapidez foi uma Shalter SPrint 3.01
GOSTEI 0
Dopi
14/02/2006
Ok Andre, entendo... em alguns tipos de comercio a impressão concomitânte (imprimir item a item durante a venda) realmente não é possível... Como por exemplo em materiais de construção... não dá pra passar sacos de cimento pelo CAIXA... :)
Mas a lei que normatiza o ECF e o seu uso é clara em exigir a concomitância. Para imprimir sem concomitância é necessária uma autorização do posto fiscal...
Mas quanto ao tempo eu realmene me referia a impressão sem concomitância... No [b:e36d608f8f]ECFTeste.exe[/b:e36d608f8f] temos uma rotina que imprime um cupom completo, e cronometra... Veja o código dela:
Mas a lei que normatiza o ECF e o seu uso é clara em exigir a concomitância. Para imprimir sem concomitância é necessária uma autorização do posto fiscal...
Mas quanto ao tempo eu realmene me referia a impressão sem concomitância... No [b:e36d608f8f]ECFTeste.exe[/b:e36d608f8f] temos uma rotina que imprime um cupom completo, e cronometra... Veja o código dela:
procedure TForm1.TestedeVelocidade1Click(Sender: TObject); Var cItens : String ; nItens, I : Integer ; tIni,tFim : TDateTime ; Parcela : Double ; begin ACBrECF1.CarregaFormasPagamento ; if ACBrECF1.FormasPagamento.Count < 1 then raise Exception.Create(´Nenhuma Forma de Pagamento programada no ECF´); cItens := ´10´ ; if not InputQuery(´Teste de Velocidade´, ´Numero de Itens a imprimir:´, cItens ) then exit ; nItens := StrToIntDef(cItens,0) ; if nItens < 1 then exit ; tIni := Now ; mResp.Lines.Add(´Iniciando Cupom: ´+DateTimeToStr(tIni)) ; ACBrECF1.AbreCupom(); For i := 1 to nItens do ACBrECF1.VendeItem( IntToStrZero(i,6), ´DESCRICAO NUM.: ´+IntToStrZero(i,6), ´NN´,i,i/100,0,´UN´) ; ACBrECF1.SubtotalizaCupom(); ACBrECF1.EfetuaPagamento(ACBrECF1.FormasPagamento[0].Indice, (ACBrECF1.Subtotal - ACBrECF1.TotalPago), ´ZERANDO SALDO A PAGAR RESTANTE´); ACBrECF1.FechaCupom(´TESTE DE CUPOM´); tFim := Now ; mResp.Lines.Add(´Finalizado em: ´+DateTimeToStr(tFim)) ; mResp.Lines.Add(´Diferença: ´+ FloatToStr(SecondSpan(tIni,tFim))+´ segundos´ ) ; mResp.Lines.Add(´---------------------------------´);
GOSTEI 0
Dopi
14/02/2006
Ola Andre
aproveitei que apareceu uma Schalter por aqui e rodei o teste de velocidade nela... O desempenho foi muito bom para um ECF tão antigo...
Modelo: S Print ECF Ver. 3.01 (antiga)
Imprimindo 10 items
aproveitei que apareceu uma Schalter por aqui e rodei o teste de velocidade nela... O desempenho foi muito bom para um ECF tão antigo...
Modelo: S Print ECF Ver. 3.01 (antiga)
Imprimindo 10 items
+ - + - + - + - + - + - + - + - + - + - + - Iniciando Cupom: 7/3/2006 11:08:11 Finalizado em: 7/3/2006 11:08:24 Diferença: 13,3279999019578 segundos ---------------------------------
GOSTEI 0
Andremuller
14/02/2006
Ok Daniel, obrigado pelo retorno.
O modelo de impressora que um cliente meu tem é esse mesmo. Vou fazer um teste e retorno assim que possível.
O modelo de impressora que um cliente meu tem é esse mesmo. Vou fazer um teste e retorno assim que possível.
GOSTEI 0
M@gnun
14/02/2006
Fiz alguns sistemas com a seguinte estrutura: (nada fiscal)
Tab Vendas
Cod_Venda, Cod_Item, Valor, Dt_Pag, Forma_Pag, etc ...
Tabela Intens
Cod_Iten, Cod_Produto, Qtde, Valor_Unit, Valor, Total, etc ...
Não uso uma tabela para caixa. Apenas faço uma pesquisa nessas tabelas, (e em algumas outras como poe ex: Contas a pagar, Receber, Manutenções, etc ...)com o usuario digitando algum periodo.
Aí monto um layout com Credito, Debito, etc ... com opções para ver os detalhes, vendas, despesas escritório, manutenções em equipamentos, etc ..
Gostaria de saber se esta forma é correta, e caso não for, gostaria de saber +- a estrutura de um caixa.
Obrigado.
Tab Vendas
Cod_Venda, Cod_Item, Valor, Dt_Pag, Forma_Pag, etc ...
Tabela Intens
Cod_Iten, Cod_Produto, Qtde, Valor_Unit, Valor, Total, etc ...
Não uso uma tabela para caixa. Apenas faço uma pesquisa nessas tabelas, (e em algumas outras como poe ex: Contas a pagar, Receber, Manutenções, etc ...)com o usuario digitando algum periodo.
Aí monto um layout com Credito, Debito, etc ... com opções para ver os detalhes, vendas, despesas escritório, manutenções em equipamentos, etc ..
Gostaria de saber se esta forma é correta, e caso não for, gostaria de saber +- a estrutura de um caixa.
Obrigado.
GOSTEI 0
M@gnun
14/02/2006
ops, desculpa ae, cliquei no botao responder ao inves de novo tópico.
algum admim, por favor apague este post.
Desculpa.
algum admim, por favor apague este post.
Desculpa.
GOSTEI 0
Alexandre
14/02/2006
Por que consigo emitir a redução z, a leitura x e até ler dados do Sintegra na impressora mas o cupom fiscal não abre e não dá erro algum? Alguém sabe? Talvez seja algo simples.Com o emulador tudo funciona.
Bematech MP-4000 TH FI.
Obrigado.
Bematech MP-4000 TH FI.
Obrigado.
GOSTEI 0
José Curdo
14/02/2006
Uma boa dica, entre tantas apresentadas aqui, é ver os artigos do Wuillian Duarte no site www.activedelphi.com.br.
sds.
sds.
GOSTEI 0
Francisco Aurino
14/02/2006
Bom Dia Pessoal
Alguém sabe dizer se existe um simulador de impressora fiscal que imprime os comprovantes direto em uma impressora não fiscal!?
Alguém sabe dizer se existe um simulador de impressora fiscal que imprime os comprovantes direto em uma impressora não fiscal!?
GOSTEI 0