Ir al contenido



Foto

Programación de impresoras fiscales de segunda generación Hasar


Mejor respuesta santiago14 , 28 marzo 2019 - 04:47

Bueno, después de tanto investigar, y penar y penar parece que le encontré la vuelta.
Paso a explicarlo.
 
Herramientas utilizadas:
Delphi 7
Herramientas de 2da Generación de Hasar: IFH-2G-Distribucion-180914 (Esto se lo consigue con la gente de Hasar, no se bien como porque me lo pasó el cliente dueño de la Fiscal)
Máquina fiscal: SMH250F de 2da Generación, térmica, en este caso está puesta por USB.
 
Lo que hay que instalar en la máquina:
El OCX de 2da Generación, yo lo tengo en :C:\HasarArgentina  Es la Revisión 9, por las dudas. Hasar provee manual para hacerlo.
En Delphi 7 se instala como un ActiveX, pero no pone el componente en la Paleta, no importa.
Instalación de USB Gadget. Driver para la Fiscal. Hasar provee manual para hacerlo.
Instalación de Proxy Fiscal. Es un servicio. Hasar tiene un manual donde lo explica, pero voy a poner algo aquí.
 
El Proxy Fiscal:
Una vez instalado, no se inicia automáticamente. Hacemos unas cuantas modificaciones en el XML asociado. Está en el Directorio "PROXY FISCAL", de las Herramientas de Hasar. Se llama: proxyconfig.xml
Este es el mío.


xml
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <Config>
  3. <SerialPort>COM5</SerialPort>
  4. <BaudRate>9600</BaudRate>
  5. <HttpPort>5000</HttpPort>
  6. <DebugLevel>3</DebugLevel>
  7. <ServiceName>HASAR PROXY FISCAL</ServiceName>
  8. <ServiceDescription>Dialogando con IFH 2G</ServiceDescription>
  9. <AutomaticStart>si</AutomaticStart>
  10. </Config>

El SerialPort lo sabemos cuando enganchamos por usb la Fiscal. Lo modificamos aquí.
HttpPort lo ponemos en 5000, o 6000 aparece a veces.
Guardamos e inciamos el Servicio.
 
Vamos al Código fuente en Delphi:
 


delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, HasarArgentina_TLB, StdCtrls, ExtCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. btnConexion: TButton;
  12. mmoFiscal: TMemo;
  13. edtPuerto: TEdit;
  14. txtDestino: TLabeledEdit;
  15. procedure btnConexionClick(Sender: TObject);
  16. private
  17. { Private declarations }
  18. //Hasar2G:ImpresoraFiscalRG3561;
  19.  
  20. public
  21. { Public declarations }
  22. end;
  23.  
  24. var
  25. Form1: TForm1;
  26.  
  27. implementation
  28.  
  29. {$R *.dfm}
  30.  
  31. uses
  32. ComObj;
  33.  
  34. procedure TForm1.btnConexionClick(Sender: TObject);
  35. var
  36. hsr2gPrueba:ImpresoraFiscalRG3561;
  37. //hsr2gPrueba:Variant;
  38. Puerto:Integer;
  39. Destino:WideString;
  40.  
  41. respabrir: RespuestaAbrirDocumento;
  42. estilo:AtributosDeTexto;
  43. respcierre:RespuestaCerrarDocumento;
  44. begin
  45. hsr2gPrueba := CreateComObject(CLASS_ImpresoraFiscalRG3561) as _ImpresoraFiscalRG3561;
  46. Puerto:=StrToInt(edtPuerto.Text);
  47. Destino:=Trim(txtDestino.Text);
  48. try
  49. hsr2gPrueba.Conectar(Destino, Puerto, 15000, 15000);
  50. mmoFiscal.Lines.Add('Conexión exitosa');
  51.  
  52. hsr2gPrueba.CargarCodigoBarras(CodigoTipoEAN13, '779123456789', ImprimeNumerosCodigo, ProgramaCodigo);
  53. mmoFiscal.Lines.Add('Código de Barras');
  54.  
  55. hsr2gPrueba.CargarDatosCliente('Razón Social Cliente...', '99999999995', ResponsableInscripto,
  56. TipoCUIT, 'Domicilio Cliente...', 'Domicilio extensión 1...', 'Domicilio extensión 2...',
  57. 'Domicilio extensión 3....');
  58. mmoFiscal.Lines.Add('Datos cliente');
  59.  
  60. respabrir:= hsr2gPrueba.AbrirDocumento(PresupuestoX);
  61. //hsr2gPrueba.AbrirDocumento(PresupuestoX);
  62. mmoFiscal.Lines.Add('Abre documento');
  63.  
  64. hsr2gPrueba.ImprimirTextoFiscal(estilo, 'Hasta agotar stock...', DisplayNo);
  65. mmoFiscal.Lines.Add('Imprime texto fiscal');
  66.  
  67. hsr2gPrueba.ImprimirItem('Item a la venta...', 1, 100, Gravado, 21, ModoSumaMonto,
  68. IIVariablePorcentual, 0, DisplayNo, ModoPrecioTotal, 1, '779123456789', '10',Unidad);
  69. mmoFiscal.Lines.Add('Imprime ítem');
  70.  
  71. hsr2gPrueba.ImprimirDescuentoItem('Oferta 10%...', 10, DisplayNo, ModoPrecioTotal);
  72. mmoFiscal.Lines.Add('Imprime descuento');
  73.  
  74. respcierre:=hsr2gPrueba.CerrarDocumento(0, '');
  75. //hsr2gPrueba.CerrarDocumento(0, '');
  76. mmoFiscal.Lines.Add('Cerrar documento');
  77. except
  78. on e:Exception do
  79. begin
  80. mmoFiscal.Lines.Add('Sin conexión');
  81. mmoFiscal.Lines.Add('Error de Fiscal: ' + e.Message);
  82. mmoFiscal.Lines.Add('Error de Fiscal (ClassName): ' + e.ClassName);
  83. end;
  84. end;
  85. mmoFiscal.Lines.Add('Prueba terminada');
  86. end;
  87.  
  88. end.

Como no tenemos componente para arrastrar hacia el Form, ponemos en el uses HasarArgentina_TLB.

hsr2gPrueba := CreateComObject(CLASS_ImpresoraFiscalRG3561) as _ImpresoraFiscalRG3561; Es la forma de crear el Objeto en D7
 
hsr2gPrueba.Conectar(Destino, Puerto, 15000, 15000); Aquí algo importante:
Destino debería ser: 127.0.0.1
Puerto: 5000 o 6000. Es el valor que pusimos en HttpPort
El primer 15000 es el TiempoEsperaConexión, contra la Fiscal claro.
El segundo 15000 es TiempoEsperaComandos, cuando enviamos a la Fiscal.
 
En este caso, hicimos un Presupuesto X.
 
Espero ayude a que podamos manejar de mejor manera estas máquinas. A mí me costó unas tardes hasta que pude hacer que funcionara. Es la idea que ayude y quede documentado para el futuro.
 
Gracias.
Ir al mensaje completo


  • Por favor identifícate para responder
10 respuestas en este tema

#1 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 320 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 14 marzo 2019 - 01:36

Buenas, tengo aquí una Hasar SMH/P 250F de segunda generación.
El tema es que no encuentro nada de cómo se envían datos a ella, entiéndase. Facturas, Notas de crédito, etc.
Al parecer, no se programan de la misma manera que los modelos viejos.
De hecho, en el OCX no está contemplado este modelo.
Alguien sabe como se hace esto?
Cómo se controlan estas máquinas?
Bueno, espero haber sido claro.
Gracias.


Enviado desde mi iPhone utilizando Tapatalk
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.936 mensajes
  • LocationMéxico

Escrito 15 marzo 2019 - 10:35

Me parece que necesitarás estar certificado o registrado como desarrollador de software para que te den los drivers. ¿ Ya contactaste al proveedor para ver como obtienes el SDK ?

 

Saludos


  • 0

#3 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 320 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 15 marzo 2019 - 01:57

Hola. Ya contacté al proveedor y al dueño. 

Al parecer, a ellos le dieron esos SDK. Pero yo no tendría problemas en registrarme como desarrollador. ¿Eso es en Hasar?

 

Gracias.


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.936 mensajes
  • LocationMéxico

Escrito 15 marzo 2019 - 02:55

Hola. Ya contacté al proveedor y al dueño. 

Al parecer, a ellos le dieron esos SDK. Pero yo no tendría problemas en registrarme como desarrollador. ¿Eso es en Hasar?

 

Gracias.

 

Si debe ser Hasar, si ya tienen el SDK es cosa de ver el manual de comandos, por lo que veo (en otros modelos) la comunicación es asíncrona y su protocolo de comunicación serial es interesante. Puedes verlo en el siguiente manual.

 

http://piteo.com.ar/...10/Serifact.pdf

 

Saludos


  • 0

#5 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 598 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 17 marzo 2019 - 09:05

en este link tenes todo lo necesario

 

http://grupohasar.co...cion-170725.zip

 

(y)


  • 0

#6 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 320 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 28 marzo 2019 - 04:47   Mejor respuesta

Bueno, después de tanto investigar, y penar y penar parece que le encontré la vuelta.
Paso a explicarlo.
 
Herramientas utilizadas:
Delphi 7
Herramientas de 2da Generación de Hasar: IFH-2G-Distribucion-180914 (Esto se lo consigue con la gente de Hasar, no se bien como porque me lo pasó el cliente dueño de la Fiscal)
Máquina fiscal: SMH250F de 2da Generación, térmica, en este caso está puesta por USB.
 
Lo que hay que instalar en la máquina:
El OCX de 2da Generación, yo lo tengo en :C:\HasarArgentina  Es la Revisión 9, por las dudas. Hasar provee manual para hacerlo.
En Delphi 7 se instala como un ActiveX, pero no pone el componente en la Paleta, no importa.
Instalación de USB Gadget. Driver para la Fiscal. Hasar provee manual para hacerlo.
Instalación de Proxy Fiscal. Es un servicio. Hasar tiene un manual donde lo explica, pero voy a poner algo aquí.
 
El Proxy Fiscal:
Una vez instalado, no se inicia automáticamente. Hacemos unas cuantas modificaciones en el XML asociado. Está en el Directorio "PROXY FISCAL", de las Herramientas de Hasar. Se llama: proxyconfig.xml
Este es el mío.


xml
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <Config>
  3. <SerialPort>COM5</SerialPort>
  4. <BaudRate>9600</BaudRate>
  5. <HttpPort>5000</HttpPort>
  6. <DebugLevel>3</DebugLevel>
  7. <ServiceName>HASAR PROXY FISCAL</ServiceName>
  8. <ServiceDescription>Dialogando con IFH 2G</ServiceDescription>
  9. <AutomaticStart>si</AutomaticStart>
  10. </Config>

El SerialPort lo sabemos cuando enganchamos por usb la Fiscal. Lo modificamos aquí.
HttpPort lo ponemos en 5000, o 6000 aparece a veces.
Guardamos e inciamos el Servicio.
 
Vamos al Código fuente en Delphi:
 


delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, HasarArgentina_TLB, StdCtrls, ExtCtrls;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11. btnConexion: TButton;
  12. mmoFiscal: TMemo;
  13. edtPuerto: TEdit;
  14. txtDestino: TLabeledEdit;
  15. procedure btnConexionClick(Sender: TObject);
  16. private
  17. { Private declarations }
  18. //Hasar2G:ImpresoraFiscalRG3561;
  19.  
  20. public
  21. { Public declarations }
  22. end;
  23.  
  24. var
  25. Form1: TForm1;
  26.  
  27. implementation
  28.  
  29. {$R *.dfm}
  30.  
  31. uses
  32. ComObj;
  33.  
  34. procedure TForm1.btnConexionClick(Sender: TObject);
  35. var
  36. hsr2gPrueba:ImpresoraFiscalRG3561;
  37. //hsr2gPrueba:Variant;
  38. Puerto:Integer;
  39. Destino:WideString;
  40.  
  41. respabrir: RespuestaAbrirDocumento;
  42. estilo:AtributosDeTexto;
  43. respcierre:RespuestaCerrarDocumento;
  44. begin
  45. hsr2gPrueba := CreateComObject(CLASS_ImpresoraFiscalRG3561) as _ImpresoraFiscalRG3561;
  46. Puerto:=StrToInt(edtPuerto.Text);
  47. Destino:=Trim(txtDestino.Text);
  48. try
  49. hsr2gPrueba.Conectar(Destino, Puerto, 15000, 15000);
  50. mmoFiscal.Lines.Add('Conexión exitosa');
  51.  
  52. hsr2gPrueba.CargarCodigoBarras(CodigoTipoEAN13, '779123456789', ImprimeNumerosCodigo, ProgramaCodigo);
  53. mmoFiscal.Lines.Add('Código de Barras');
  54.  
  55. hsr2gPrueba.CargarDatosCliente('Razón Social Cliente...', '99999999995', ResponsableInscripto,
  56. TipoCUIT, 'Domicilio Cliente...', 'Domicilio extensión 1...', 'Domicilio extensión 2...',
  57. 'Domicilio extensión 3....');
  58. mmoFiscal.Lines.Add('Datos cliente');
  59.  
  60. respabrir:= hsr2gPrueba.AbrirDocumento(PresupuestoX);
  61. //hsr2gPrueba.AbrirDocumento(PresupuestoX);
  62. mmoFiscal.Lines.Add('Abre documento');
  63.  
  64. hsr2gPrueba.ImprimirTextoFiscal(estilo, 'Hasta agotar stock...', DisplayNo);
  65. mmoFiscal.Lines.Add('Imprime texto fiscal');
  66.  
  67. hsr2gPrueba.ImprimirItem('Item a la venta...', 1, 100, Gravado, 21, ModoSumaMonto,
  68. IIVariablePorcentual, 0, DisplayNo, ModoPrecioTotal, 1, '779123456789', '10',Unidad);
  69. mmoFiscal.Lines.Add('Imprime ítem');
  70.  
  71. hsr2gPrueba.ImprimirDescuentoItem('Oferta 10%...', 10, DisplayNo, ModoPrecioTotal);
  72. mmoFiscal.Lines.Add('Imprime descuento');
  73.  
  74. respcierre:=hsr2gPrueba.CerrarDocumento(0, '');
  75. //hsr2gPrueba.CerrarDocumento(0, '');
  76. mmoFiscal.Lines.Add('Cerrar documento');
  77. except
  78. on e:Exception do
  79. begin
  80. mmoFiscal.Lines.Add('Sin conexión');
  81. mmoFiscal.Lines.Add('Error de Fiscal: ' + e.Message);
  82. mmoFiscal.Lines.Add('Error de Fiscal (ClassName): ' + e.ClassName);
  83. end;
  84. end;
  85. mmoFiscal.Lines.Add('Prueba terminada');
  86. end;
  87.  
  88. end.

Como no tenemos componente para arrastrar hacia el Form, ponemos en el uses HasarArgentina_TLB.

hsr2gPrueba := CreateComObject(CLASS_ImpresoraFiscalRG3561) as _ImpresoraFiscalRG3561; Es la forma de crear el Objeto en D7
 
hsr2gPrueba.Conectar(Destino, Puerto, 15000, 15000); Aquí algo importante:
Destino debería ser: 127.0.0.1
Puerto: 5000 o 6000. Es el valor que pusimos en HttpPort
El primer 15000 es el TiempoEsperaConexión, contra la Fiscal claro.
El segundo 15000 es TiempoEsperaComandos, cuando enviamos a la Fiscal.
 
En este caso, hicimos un Presupuesto X.
 
Espero ayude a que podamos manejar de mejor manera estas máquinas. A mí me costó unas tardes hasta que pude hacer que funcionara. Es la idea que ayude y quede documentado para el futuro.
 
Gracias.

  • 1

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.936 mensajes
  • LocationMéxico

Escrito 28 marzo 2019 - 05:41

Gracias por el Update amigo, enhorabuena (y)

 

Saludos


  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.241 mensajes
  • LocationArgentina

Escrito 28 marzo 2019 - 06:15

Quisiera aprovechar para preguntar una cosa relacionado con el tema de las impresoras fiscales, en una de esas tu sabes algo.

¿Hay algún emulador como para probar el funcionamiento de nuestros desarrollos y uso de estos componentes? Había visto uno en esta página, pero nunca he podido hacerlo funcionar.

Y la idea de tener una impresora real para hacer pruebas no es viable económicamente, implican un papelerío burocrático, y hasta quizá sea ilegal tener una si no eres un "comercio".

 

En donde trabajo hemos tenido algunos dolores de cabeza con algunas impresoras nuevas que no reconocen algunos comandos, empleamos una biblioteca de terceros (PHP ya que es el lenguaje que usamos en el trabajo) que fue encargada a un freelance hace buen tiempo.  Tuvimos que meter mano a la biblioteca, y para pruebas no nos queda otra que usar las impresoras de nuestros clientes. Y eso no lo más conveniente.

 

¿Cómo le haces para probar?

 

Saludos,


  • 0

#9 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 320 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 29 marzo 2019 - 05:30

Delphius, buenos días.

Las herramientas de Hasar traen un Emulador Fiscal para impresoras de 2da generación. Estuve intentando durante días y no lo pude hacer funcionar.

Tengo entendido que es muy bueno, pero no tuve suerte durante los días de las pruebas.

Sigo jugando con el Emulador, puesto que es la manera de evitar el uso de la impresora real, y así ahorrarnos un montón de problemas, como comentas.

 

Si alguien tiene la forma de configurar el Emulador, por favor que lo diga.

 

En cuanto al paquete, el que yo uso se puede descargar de aquí: Sitio

 

Santiago.


  • 0

#10 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 320 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 29 marzo 2019 - 05:32

Quisiera aprovechar para preguntar una cosa relacionado con el tema de las impresoras fiscales, en una de esas tu sabes algo.

¿Hay algún emulador como para probar el funcionamiento de nuestros desarrollos y uso de estos componentes? Había visto uno en esta página, pero nunca he podido hacerlo funcionar.

Y la idea de tener una impresora real para hacer pruebas no es viable económicamente, implican un papelerío burocrático, y hasta quizá sea ilegal tener una si no eres un "comercio".

 

En donde trabajo hemos tenido algunos dolores de cabeza con algunas impresoras nuevas que no reconocen algunos comandos, empleamos una biblioteca de terceros (PHP ya que es el lenguaje que usamos en el trabajo) que fue encargada a un freelance hace buen tiempo.  Tuvimos que meter mano a la biblioteca, y para pruebas no nos queda otra que usar las impresoras de nuestros clientes. Y eso no lo más conveniente.

 

¿Cómo le haces para probar?

 

Saludos,

 

El Emulador que mencionas es para impresoras de 1ra Generación. No tengo idea si esa gente lo actualizó. 

 

Santiago.


  • 0

#11 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 320 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 29 marzo 2019 - 05:50

Un agregado más, mi compañero de trabajo logró comunicar la Fiscal y el Software por LAN.

 

Pasos a seguir:

1) Fijar una IP en el Controlador de acuerdo al rango de red. Esto se logra de la siguiente manera. Se aclara que esta configuración se debe hacer a través de cable usb.

    Utilizando wpruf (comando proporcionado por Hasar en sus herramientas) Ejemplo: D:\Otros documentos\Impresoras fiscales\SegundaGeneracion\IFH-2G-Distribucion-180914\HERRAMIENTAS\WPRUF\wpruf_611 -p Puerto. Donde "Puerto" es el puerto serial asociado por el S.O. Luego, mediante los comandos correspondientes, fijar IP.

2) Diagnosticar llegada al controlador mediante Ping y la IP fijada.

3) Comunciarse a través del software con el comando: Hasar.Conectar(IP, 80, 15000, 15000);

IP: La IP fijada

Puerto (80) Puerto http a la espera de peticiones por parte del Controlador fiscal.

 

Nota: El proxy fiscal no es necesario mediante esta conexión.


  • 1