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.
Código:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Config>
<SerialPort>COM5</SerialPort>
<BaudRate>9600</BaudRate>
<HttpPort>5000</HttpPort>
<DebugLevel>3</DebugLevel>
<ServiceName>HASAR PROXY FISCAL</ServiceName>
<ServiceDescription>Dialogando con IFH 2G</ServiceDescription>
<AutomaticStart>si</AutomaticStart>
</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:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, HasarArgentina_TLB, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
btnConexion: TButton;
mmoFiscal: TMemo;
edtPuerto: TEdit;
txtDestino: TLabeledEdit;
procedure btnConexionClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
ComObj;
procedure TForm1.btnConexionClick(Sender: TObject);
var
hsr2gPrueba:ImpresoraFiscalRG3561;
Puerto:Integer;
Destino:WideString;
respabrir: RespuestaAbrirDocumento;
estilo:AtributosDeTexto;
respcierre:RespuestaCerrarDocumento;
begin
hsr2gPrueba := CreateComObject(CLASS_ImpresoraFiscalRG3561) as _ImpresoraFiscalRG3561;
Puerto:=StrToInt(edtPuerto.Text);
Destino:=Trim(txtDestino.Text);
try
hsr2gPrueba.Conectar(Destino, Puerto, 15000, 15000);
mmoFiscal.Lines.Add('Conexión exitosa');
hsr2gPrueba.CargarCodigoBarras(CodigoTipoEAN13, '779123456789', ImprimeNumerosCodigo, ProgramaCodigo);
mmoFiscal.Lines.Add('Código de Barras');
hsr2gPrueba.CargarDatosCliente('Razón Social Cliente...', '99999999995', ResponsableInscripto,
TipoCUIT, 'Domicilio Cliente...', 'Domicilio extensión 1...', 'Domicilio extensión 2...',
'Domicilio extensión 3....');
mmoFiscal.Lines.Add('Datos cliente');
respabrir:= hsr2gPrueba.AbrirDocumento(PresupuestoX);
mmoFiscal.Lines.Add('Abre documento');
hsr2gPrueba.ImprimirTextoFiscal(estilo, 'Hasta agotar stock...', DisplayNo);
mmoFiscal.Lines.Add('Imprime texto fiscal');
hsr2gPrueba.ImprimirItem('Item a la venta...', 1, 100, Gravado, 21, ModoSumaMonto,
IIVariablePorcentual, 0, DisplayNo, ModoPrecioTotal, 1, '779123456789', '10',Unidad);
mmoFiscal.Lines.Add('Imprime ítem');
hsr2gPrueba.ImprimirDescuentoItem('Oferta 10%...', 10, DisplayNo, ModoPrecioTotal);
mmoFiscal.Lines.Add('Imprime descuento');
respcierre:=hsr2gPrueba.CerrarDocumento(0, '');
mmoFiscal.Lines.Add('Cerrar documento');
except
on e:Exception do
begin
mmoFiscal.Lines.Add('Sin conexión');
mmoFiscal.Lines.Add('Error de Fiscal: ' + e.Message);
mmoFiscal.Lines.Add('Error de Fiscal (ClassName): ' + e.ClassName);
end;
end;
mmoFiscal.Lines.Add('Prueba terminada');
end;
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.