Imprimir Cupom Fiscal

14/02/2006

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


Armando.boza

Respostas

14/02/2006

Dopi

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


Responder Citar

14/02/2006

Marcosrodias

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


Responder Citar

14/02/2006

Marcosrodias

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;


Responder Citar

14/02/2006

Dopi

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


Responder Citar

14/02/2006

Armando.boza

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 ???


Responder Citar

22/02/2006

Dberlese

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


Responder Citar

22/02/2006

Edilcimar

para impressora não fiscal vc não pode usar os comandos de uma impressora fiscal, use o writeln()


Responder Citar

22/02/2006

Andremuller

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


Responder Citar

22/02/2006

Edilcimar

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


Responder Citar

22/02/2006

Kitsystem

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


Responder Citar

22/02/2006

Andremuller

não precisa de um monte de cases.
É só criar uma Abstact Factory. Media dúzia de linhas e foi.


Responder Citar

28/02/2006

Zumbi

teria como postar ou me enviar um exemplo dessa classe eu gostaria de tentar implementa-la tb..


vlw..


Responder Citar

28/02/2006

Dopi

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)


Responder Citar

28/02/2006

Dopi

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]


Responder Citar

01/03/2006

Andremuller

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)


Responder Citar