lunes, 18 de noviembre de 2013

Conexión con Impresoras Fiscales HASAR - El driver es gratuito - No se deje engañar!!

"La verdad que estoy bastante enojado, Resulta que cuando voy a implementar un sistema de gestión de ventas me doy con que la impresora fiscal imprimía en el nombre de los artículos *DEMO, por lo cual el ticket queda inutilizable"

Hay una empresa, bastante conocida, (es más si uno busca "driver fiscal" o "driver hasar" en google es indexada en los primeros resultados) que ofrece drivers de impresoras fiscales de las marcas más conocidas, tales como Hasar y Epson.

Sin embargo el driver que se puede descargar es una versión de prueba! Si se quiere que funcione correctamente (no aparece *DEMO en el ticket) hay que pagarlo. Pagar qué?

Los drivers tanto de Epson como de Hasar están disponibles en sus respectivas páginas web con sus tutoriales y ejemplos!!

Hasta que descubrí esto tuve que volver a programar todo con los nuevos comandos del driver original de Hasar (que en realidad son más fáciles de entender y usar que los que venden en esa página) significando para mí una pérdida de tiempo.

La ida de este tutotorial es que otros no pierdan el tiempo como yo.

El driver de Hasar que estoy usando es: Fiscal051122.Ocx

Lo podemos bajar desde http://www.grupohasar.com/sites/default/files/Tiqueadoras.zip

En el .zip se encuentran ejemplos y descripción de los métodos y además un spooler para poder usar la impresara desde la red (todavía lo estoy investigando, cuando logre hacerlo andar lo posteo)

Simplemente, debemos registrar la ocx para que nuestra herramienta de desarrollo lo detecte como un componente ActiveX

Para ello abrimos la consola de windows y ejecutamos:

regsvr32 c:\pathdelarchivo\Fiscal051122.Ocx

Nos saldrá un cuadro de diálogo afirmando que el registro fue correcto y listo, ya estamos en condiciones de trabajar de manera full.

En mi caso, uso la herramienta WinDev. Les dejo un ejemplo de código actualmente funcionando para imprimir facturas A y B:

PROCEDURE ImprimirTicket()
WHEN EXCEPTION IN
HReadSeek(setup,set_id,1)
AX_Ticketera>>Baudios(setup.set_velserial)
AX_Ticketera>>Puerto(setup.set_serial)
AX_Ticketera>>Comenzar() 
AX_Ticketera>>PrecioBase(False)
//Tipo de factura para abrir comprobante
AX_Ticketera>>TratarDeCancelarTodo
nTipofactura is int
IF STC_Factura="Factura A" THEN
nTipofactura=65
ELSE IF STC_Factura="Factura B" THEN
nTipofactura=66
END
//escribir
HReadSeek(cliente,cli_id,STC_Id_Cliente)
nCondfiscal is int
IF cliente.cli_condfiscal=2 THEN
nCondfiscal=73
ELSE
nCondfiscal=67
END
AX_Ticketera>>DatosCliente(cliente.cli_nombre,cliente.cli_cuit,67,nCondfiscal,"Domicilio")
AX_Ticketera>>AbrirComprobanteFiscal(nTipofactura)
AX_Ticketera>>ImprimirTextoFiscal("Detalle de su compra")
IF SC_Tablero.EDT_PagaConTarjeta>0 THEN
AX_Ticketera>>ImprimirTextoFiscal("Pago con tarjeta")
END
FOR EACH ROW OF TABLE_VentaRepuestos
AX_Ticketera>>ImprimirItem(TABLE_VentaRepuestos.COL_Nombre,TABLE_VentaRepuestos.COL_Cantidad,TABLE_VentaRepuestos.COL_Precio_Venta,21,1)
END
AX_Ticketera>>ImprimirPago("Efectivo",SC_Tablero.EDT_PagaConEfectivo)
AX_Ticketera>>CerrarComprobanteFiscal()
AX_Ticketera>>Finalizar()
DO
Error("Error al conectar con la impresora fiscal")
RETURN
END


Espero que le sirva a alguien, recuerde NO SE DEJE ENGAÑAR. 

Cualquier duda me escriben. Estoy aquí para ayudar, responder y discutir si es que se quiere. Saludos

18 comentarios:

  1. la pagina a la que te referis es http://www.impresoras-fiscales.com.ar/argentina.html ?

    ResponderEliminar
  2. Gracias, tu post fue de mucha utilidad, yo estoy empezando a buscar y me pasó un poco lo que a vos. Yo lo voy a encarar en Java, así que espero que seamos dos los que puedan dar mas información. Saludos

    ResponderEliminar
    Respuestas
    1. Me alegro que te haya servido! Supongo que con Java no debes haber tenido problema alguno con el driver oficial. Saludos!

      Eliminar
    2. hola mecanica costa, yo tambien estoy probando hacerlo en java. Lograste llegar a algo? saludos

      Eliminar
    3. Hola Mecania, Javier, Luciano: Estoy trabajando con Java y los ocx de Hasar y estoy teniendo un problema... Alguno tuvo éxito?

      Eliminar
  3. Muchas gracias por tu aporte.
    Tenés algo similiar para el ocx de Epson?
    Desde ya muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola Eduardo, de nada. No trabajé con Epson. Pero eso es algo que deberías encontrar en la web oficial de la marca. Saludos!

      Eliminar
  4. Hola, como todos caimos por el mismo lado. a mi me esta funcionando a medias, a ver si podes darme una mano por favor.
    Cuando en el ejemplo de impresion que viene en el ZIP (Eb VB6) quiero imprimir una Factura A o B me dice :

    No soportada en version controlador fiscal seleccionada (abrir DF)

    Trato de utilizar HASAR 411

    Gracias !

    Gabriel

    ResponderEliminar

  5. hoy intente usar el wspooler
    la respuesta es la siguiente

    22/03-21:41:25: **START SPOOLER**
    22/03-21:41:25: A abrir COM1
    22/03-21:41:31: Error de comunicaciones con la impresora, Rc -4
    22/03-21:41:37: Error de comunicaciones con la impresora, Rc -4
    22/03-21:41:43: Error de comunicaciones con la impresora, Rc -4

    por otra parte he compilado y ejecutado el programa ejemplo de Hasar hpos para el modelo MODELO_P330 y la respuesta es

    controlador no detectado

    y la siguiente es la respuesta del comando wpruf -p1

    Buscando Controlador Fiscal ................
    El controlador fiscal NO fue encontrado !

    ¿hay alguna sugerencia que me puedas hacer?

    Atte.

    ResponderEliminar
  6. Buenas tardes, trabajo en un sistema con PHP, me sucede lo mismo con el *demo* en la descripción del ítem.
    Estoy utilizando la librería php_h715v52ts.dll, la cual he agregado en el php.ini, implementado en Windows 10.
    En el script donde genero el comprobante fiscal, incluyo el siguiente script H715PhpApi.php, en el cual permite validar previamente los párametros de los comandos específicos del modelo SMH/P 411F.
    FUENTE: http://drivers.impresoras-fiscales.com/drivers/ar/hasar/h715driver.exe el cual descomprime una carpeta con documentación, ejemplos y drivers para diversos lenguajes, entre ellos PHP, pero sólo para la versión 5.2.4

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. Hola Gabriel, pudiste solucionar lo de la impresora? Estoy con el mismo problema y no se como solucionarlo, desde ya te agradezco tu respuesta!

      Eliminar
    3. Hola Nicolás.
      Para PHP (versión 5.5.12).
      He utilizado la librería fiscal150423.ocx, provista en el sitio web de Hasar.
      Para registrar dicho .ocx, en Windows 10, realicé lo siguiente:
      1. Ejecutar cmd.exe como Administrador.

      2. copy c:\RUTA_DEL_INSTALADOR\fiscal150423.ocx c:\Windows\SysWOW64
      EJEMPLO:
      copy C:\Users\TU_NOMBRE_USUARIO\Desktop\TU_CARPETA_LIBRERIA_HASAR\fiscal150423.ocx c:\Windows\SysWOW64

      3. c:\Windows\SysWOW64\regsvr32.exe c:\Windows\SysWOW64\fiscal150423.ocx

      Para utilizar dicha librería en PHP, he utilizado la clase COM.
      Información: http://php.net/manual/es/intro.com.php

      EJEMPLO DE USO:
      //inicio de script PHP

      $imp_hasar = new COM('hasar.fiscal.1') or die(sprintf('El componente %s no se encuentra registrado.', 'hasar.fiscal.1'));

      try {
      $imp_hasar->Transporte = 0;
      $imp_hasar->Puerto = 3;
      $imp_hasar->Modelo = 32;// para Hasar P441
      $imp_hasar->AutodetectarControlador();

      $imp_hasar->ReporteX();// Para un Cierre X

      } catch (Exception $ex) {
      echo sprintf('Ha ocurrido un error: %s', $ex->getMessage());
      } finally {
      $imp_hasar->Finalizar();
      }
      // Fin de script PHP

      Los métodos AutodetectarControlador(),ReporteX() y Finalizar(), son métodos de la propia librería registrada para PHP.
      En la carpeta con los recursos para PHP, provistos en el sitio web de Hasar, se encuentra un manual de dicha librería en formato PDF, allí encontrarás todos los métodos para imprimir diversos documentos.

      Eliminar
    4. Este comentario ha sido eliminado por el autor.

      Eliminar
  7. Buenas, para los que trabajaron con Java... Que programID usaron para crear el Objeto ArctiveX?.
    Tengo una aplicación que usaba la librería de impresoras-fiscales.com.ar y la estoy quitando... pero me da error cuando intento crear el objeto Activex.
    Gracias

    ResponderEliminar
  8. Hola. Gracias por lo que compartis. Al amigo que no le conecta el wspooler puede ser porque le falta el parametro -m330

    ResponderEliminar
  9. Yo estoy usando el wspooler y Access desde 2005 sin problemas. Si aalguien necesita, consultar pancho_martinez_16@hotmail.com

    ResponderEliminar