Impressora Fiscal em Sistema Web

Pergunta conceitual:É possivel uma aplicação rodando num servidor web instanciar uma dll que está instalada na máquina cliente a qual a ECF está conectada?

não sou programador web mas creio que se da pela mesma forma. Teu navegador irá invocar a dll e comunicar com a impressora, agora não sei como é a conexão serial do navegador…

Mas a dll não está na mesma máquina do servidor de aplicação,está no cliente.

Acredito que a aplicação WEB deva ter um aplicativo específico para isso rodando no cliente, seja ele em Flash, Applet, Silverlight. Este aplicativo daria POST para o server e você pegar as informações.
Agora, a aplicação que está rodando no SERVER, não teria como instanciar uma dll do cliente, a menos que de alguma forma você faria isso com Javascript…

Abs
Rodrigo

perfeito, deverá ser assim, a dll no cliente, será invocada na máquina local, mas eu não sei como o navegador lida com essa situação, se ele irá gerenciar, no java convencional existem API’s de ligação, mas como disse, não sei nada de web, mas creio que será da mesma maneira

É então você vai ter que criar uma aplicaçãozinha separada, talvez em Applet, JavaFX, Silverlight, Flash ou até mesmo Windows Forms ou Java Swing. Dessa forma você vai conseguir instanciar a DLL, depois disso procura na WEB como fazer POST na WEB através da tecnologia citadas acima.

Você também pode fazer isso criando um WebService na sua aplicação WEB e consumindo esse WEB Service através das tecnologias citadas acima, essa seria a melhor solução!

Abs
Rodrigo

O pessoal já citou algumas formas de fazer isso…

Dependendo, Applet pode ser a melhor opção, pois pode-se carregar um DLL em Windows e uma SO em Linux por exemplo e ter esta parte do programa também multiplataforma.

No final é um app que acaba rodando, somente com web pura não tem como fazer isso.

Outro jeito é criar uma extensão para o navegador especifico que irá suportar esta funcionalidade.

A pergunta que deixo é. Qual a melhor opção??? A resposta… depende… se tem 2 usuários que vão fazer isso talvez seja melhor fazer um pequeno app que faça essa comunicação e funcione como serviço nas estações, sendo acionado via Http por javascript…
Se tem muito usuário talvez applet seja a melhor opção.
Talvez ActiveX seja a melhor opção…

Eu creio que irei optar por uma aplicação Swing rodando em cada cliente,o ponto é que são dois itens os quais não domino muito (Swing e ECF).

Tecnicamente é possível.
Legalmente, não.
O convêni PAF/ECF diz que uma impressora fiscal ou um equipamento emissor de cupons fiscais deve ser gerenciado por um sistema que dependa, única e exclusivamente, do próprio hardware onde o equipamento é conectado.
Isso significa que nem banco de dados pode ser 100% remoto (pode haver centralização, mas o sistema deve ser capaz de “se virar” caso a comunicação em rede seja interrompida).

Quanto a ECF, acredito que você irá ter uma dorzinha de cabeça, entre no site do fabricante e verifique a documentação da DLL ou JAR que eles disponibilizam.
Quanto ao Java Swing, acredito que se você tiver uma base em Java, não vai ser problema.

[quote=drsmachado]Tecnicamente é possível.
Legalmente, não.
O convêni PAF/ECF diz que uma impressora fiscal ou um equipamento emissor de cupons fiscais deve ser gerenciado por um sistema que dependa, única e exclusivamente, do próprio hardware onde o equipamento é conectado.
Isso significa que nem banco de dados pode ser 100% remoto (pode haver centralização, mas o sistema deve ser capaz de “se virar” caso a comunicação em rede seja interrompida).[/quote]

Estranho… isso me gerou uma duvida, pois na apresentação que fui do Maker (que o antigo gerente aqui tinha comprado, mas ainda bem que nos livramos deles, do gerente e do maker… rs rs rs), eles tinham uma impressora fiscal bematech e o sistema era Web! Só não lembro se era applet ou se o próprio servidor que mandava para a impressora! Neste segundo caso, acho que também não poderia ? E tem um monte de lugar na bahia que usa a solução deles!

[quote=drsmachado]Tecnicamente é possível.
Legalmente, não.
O convêni PAF/ECF diz que uma impressora fiscal ou um equipamento emissor de cupons fiscais deve ser gerenciado por um sistema que dependa, única e exclusivamente, do próprio hardware onde o equipamento é conectado.
Isso significa que nem banco de dados pode ser 100% remoto (pode haver centralização, mas o sistema deve ser capaz de “se virar” caso a comunicação em rede seja interrompida).[/quote]

@drsmachado,2 perguntas:

  • Tecnicamente,como seria possivel?
  • Legalmente,quais as implicações práticas que isso poderia trazer?

Onde eu poderia achar a referência na lei sobre esse ponto que vc citou?

[quote=drsmachado]Tecnicamente é possível.
Legalmente, não.
O convêni PAF/ECF diz que uma impressora fiscal ou um equipamento emissor de cupons fiscais deve ser gerenciado por um sistema que dependa, única e exclusivamente, do próprio hardware onde o equipamento é conectado.
Isso significa que nem banco de dados pode ser 100% remoto (pode haver centralização, mas o sistema deve ser capaz de “se virar” caso a comunicação em rede seja interrompida).[/quote]

Eu queria que alguém me mostrasse uma maneira de uma aplicação web mandar e receber dados com a impressora fiscal sem um client fixo no cliente. Na minha concepção é tecnicamente impossível. Você precisaria de pelo menos um windows forms, java swing, applet, flash ou silverlight rodando no cliente.
O Browser faria isso por Javascript? rs!

Abs
Rodrigo

Bem,vou expor o contexto atual e a solução que estou pensando:

  • Já tenho feito a parte cadastral da venda(cadastro da venda,formas de pagto etc)

A app Swing no cliente vai buscar os dados da venda via REST(http://aplicacao/venda/id) e fazer a comunicação com a DLL pra emitir o ECF.

Seria isso?

[quote=raf4ever]Bem,vou expor o contexto atual e a solução que estou pensando:

  • Já tenho feito a parte cadastral da venda(cadastro da venda,formas de pagto etc)

A app Swing no cliente vai buscar os dados da venda via REST(http://aplicacao/venda/id) e fazer a comunicação com a DLL pra emitir o ECF.

Seria isso?[/quote]
Técnicamente é uma solução possível. Se acha que é a melhor pro seu problema. Funcionar funciona!

Agora to na duvida quanto a questão “legalmente” enviada pelo drsmachado…

Bom galera,a implementação será a seguinte:

  • Aplicação Swing manda o ID da venda via JAX-RS e recebe os dados da venda do servidor.

Me veio a seguinte duvida:as libs que a aplicação Swing vai usar terão que ser instaladas na JRE da máquina cliente,correto??

[quote=raf4ever]Bom galera,a implementação será a seguinte:

  • Aplicação Swing manda o ID da venda via JAX-RS e recebe os dados da venda do servidor.

Me veio a seguinte duvida:as libs que a aplicação Swing vai usar terão que ser instaladas na JRE da máquina cliente,correto??[/quote]

Sim.

Você pode dar uma olhada no Java Web Start para distribuir a aplicação.

Ele já tem uma parte para atualizar automaticamente as dependências no cliente.
( O que pode ser um terror para o Administrador da Rede, consulte-o primeiro)

Outra coisa, com um Applet assinado você poderia fazer isso e manter tudo num único sistema.
(Você já vai depender do serviço para receber os dados da venda mesmo).

O problema é que assinar applets parece gerar muitos problemas.

O Eclipse tem a opção ‘Runnable Jar File’ que empacota a aplicação junto com todos os .jar necessarios e funcionou blz pra mim.

Pessoal estava lendo esse tópico aqui, e estou interessado em desenvolver uma aplicação para impressora fiscal, como não conheço muito java, tem algum exemplo na web, ou em qualquer outro lugar para, ter uma noção de como isso funciona ?

quando eu digo uma aplicação que funcionar seria, mostra mesmo como comunicaria com a DLL,

obrigado valeu.