sábado, 29 de noviembre de 2008

OpenbravoPOS y una impresora fiscal Hasar

Un cliente me preguntó si tenía algún programita que lo ayudara a llevar su local de comidas y le permitiera imprimir tickets fiscales con una impresora que tenía arrumbada debajo del mostrador. Enseguida pensé en usar la solución de punto de ventas que ofrece Openbravo (y que tiene un nombre tan original como OpenbravoPOS).

Si bien esta solución es bastante intuitiva a la hora de ser usada por los clientes, su configuración y administración a veces es un poco complicada.
Así me encontré con que adaptarla para usar la impresora fiscal Hasar de mi cliente no era algo muy natural. Si hubiera sido una impresora que respetara el estandar jPos hubiera sido más fácil, pero menos entretenido.

El proceso que me llevó a la solución que voy a comentar incluyó bastantes búsquedas en el código de la aplicación y revisión de la documentación de administración de la misma.

A continuación voy a tratar de explicar cómo hay que configurar el OBPos para hacer que imprima tickets fiscales usando una impresora fiscal Hasar:.

Lo primero que hice fue armarme un ambiente de desarrollo sobre NetBeans, pueden encontrar una documentación detallada para hacer esto aca.

Después, gracias a un post que encontré por ahí, vi que tenía que armar una clase que implemente la interfaz: com.openbravo.pos.printer.DeviceFiscalPrinter (aca está la primera implementación que hice para poder testear la interacción con OBPos, todavía le falta la interacción con la impresora, la clase se llama: com.openbravo.pos.printer.hasar.DeviceFiscalPrinterHasar).

Bueno, ya tenía mi clase de prueba... pero no lograba hacer que se ejecute desde OBPos. Aca es dónde está un poco floja la documentación de OBPos. Para que la aplicación "se dé cuenta" que tiene una impresora fiscal instalada hay que agregar la siguiente línea:

machine.fiscalprinter=hasar

al archivo de configuración openbravopos.properties (vale aclarar que en mi máquina este archivo está en el raíz de mi usuario: C:\Documents and Settings\Marcos).

Bueno, en realidad, además de agregar esta línea hay que tocar un poco el código... En el constructor de la clase com.openbravo.pos.printer.DeviceTicket hay que agregar un if para que la cadena "hasar" sea asociada a la clase que creamos antes (com.openbravo.pos.printer.hasar.DeviceFiscalPrinterHasar):

...
} else if ("hasar".equals(sFiscalType)) {
m_deviceFiscal = new DeviceFiscalPrinterHasar();
...

Aca está la clase ya modificada.

Bueno, finalmente hay que editar desde dentro de OBPos el recurso correspondiente a Printer.Ticket para agregarle la entrada que indica cómo imprimir el ticket fiscal:

<fiscalreceipt>
#foreach ($ticketline in $ticket.getLines())
<line price="${ticketline.getPrice()}" units="${ticketline.getMultiply()}">${ticketline.printName()}</line>
#end
<total paid="${ticket.getTotal()}">Total</total>
</fiscalreceipt>

Con estas modificaciones, cada vez que presionen el botón "Aceptar" en la ventana de Pagos se estará emitiendo el ticket en la impresora fiscal. La ventana de Pagos aparece luego de presionar el botón "=" en la ventana de Ventas.

Para imprimir los reportes "X" y "Z" de la impresora, tienen que ir a la vista de la impresoras (haciendo click en la opción Impresora del menu de la izquierda) y allí a la solapa "Hasar". Hay un botón para cada reporte. Estos botones se definen en el formulario asociado a la clase DeviceFiscalPrinterHasar.

Por ahora es todo lo que tengo, me está faltando agregar la comunicación con la impresora fiscal, pero gracias al trabajo de esta persona, creo que va a ser bastante fácil.

10 comentarios:

Unknown dijo...

Hola buenas tardes soy Benjamin Garcia de Venezuela, aqui tambien se trabaja con fiscales y si no me equivoco las fiscales que se utilizan aqui vienen entre otros paises de Argentina y Brazil.
Me gustaria saber si tal procedimiento que planteas se puede implementar en Openbravo y con una impresora fical Bematech, Bixolon y epson

Saludos
Benjamin Garcia

Omer dijo...

saludos amigo, tambien soy de venezuela y tengo una semana tratando se hacer funcionar una epson lx-300 + II ( con modulo fiscal ), creeme que lo mas cercano que he visto es este post.

me respondio un desarrollador adrian romero del foro de openbravopos que algunas ya tienen soporte con javapos.. pero el estudio que muestra este post indica que siempre hay que modificar un poco la clase que carga las impresoras.. y jamas habia visto ese api..

asi que mi hermano, a seguir trabajando..

Rafael Orozco dijo...

Hola. mi nombre es Rafael y estoy iniciandome en esto del openbravo pos y me gustaria me dieras una mano en decirme como puedo personalizar los reportes y facturas que genera OBpos. pues estos deben incluir datos del negocio asi como datos de los clientes y numero de facturas

Fabian Pineda dijo...

Hola. me llamo FABIAN y estoy iniciandome en esto del openbravo pos y el software libre. Me parecio muy importante tu explicacion, aun no llegue a manipular impresoras fiscales. Saludos!

Unknown dijo...

Hola marcos, me parecio muy buena información, me gustaria ponerme en contacto con vos de alguna otra forma, por mail por ejemplo, para sacrme algunas dudas que me han quedado, saludoscom

Juan Francisco dijo...

Estimado me gustaría ponerme en contacto con usted para que me ayude a implementar esto de las impresoras fiscales con OBpos en Chile.

saludos
Juan Francisco

Salvatore dijo...

Muy buen dias, como puedo obtener una copia del programa con impresora Hasar?
Saludos y gracias
Email:toto3497@hotmail.com
Cel.0416-7060766

carlitos dijo...

hola, quisiera saber como el cliente despues registro el sistema en la afip, al ser de codigo abierto quisiera saber si se lo aceptaron. ya que tranquilamente el cliente una vez que uds como programador se fue opdria llamar a otro modificarlo para realizar maniobras no legales y uds quedar enganchado frente ala afip como el que realizo la adaptación. saludos

Brainhell dijo...

No puede hacerlo, ya que solo se le deja al cliente el ejecutable. Si contrata a otra persona, ésta no tendrá acceso a las modificaciones que tú hiciste, por lo que no hay problema.

Unknown dijo...

Hola Marcos,

Estoy intentando conectar el openbravo a una impresora fiscal EPSON, que funciona por medio de un spooler, el pfbatch, es similar al wspooler de hasar y creo que tu post me puede ayudar pero varios enlaces estan caidos y no hay un ejemplo completo, si se puede me podrías pasar información para poder orientarme en como hacerlo.

Saludos y Muchas Gracias