Que tal, he estado ocupado haciendo un Recibo X. En este caso es una impresora fiscal Hasar.
Me costó bastante que imprimiera así que lo comparto con uds.
En el caso de un recibo, la impresora no genera el nro automáticamente, sino que acepta el que nosotros le digamos, aquí eso se indica en Hasar1.AbrirDNFH(RECIBO_X, nro_recibo).
Tampoco imprime original y duplicado por defecto, sino solamente original, salvo que le indiquemos lo contrario, esto se hace con Hasar1.CerrarDNFH(2); . Si no indicamos nada, es solo original; si ponemos el 2, es original y duplicado; si ponemos 3 es original, duplicado y triplicado.
Espero que sea de ayuda para los que andan en la pelea contra las fiscales.
Aquí el código está puesto dentro de un evento de un IBEventAlert, pero eso no importa, pueda estar en cualquier lado y va bien.
Código Delphi
[-]
procedure TFrmPpal.evRecibosEventAlert(Sender: TObject; EventName: String;
EventCount: Integer; var CancelAlerts: Boolean);
var
puerto:string;
ini:TIniFile;
recibo:TEnc_cobro;
begin
with DataModule2, IBConsulta, recibo do
try
terminarTransaccion;
IBTransaccion.StartTransaction;
Buscar_cliente_reciboX(IBConsulta);
cod_recibo:=FieldByName('cod_recibo').AsInteger;
nombre_cliente:=FieldByName('nombre_cliente').AsString;
numero_documento:=FieldByName('cuit_cliente').AsString;
tipo_documento:=FieldByName('tipo_documento_cliente').AsString;
responsabilidad_iva:=FieldByName('responsabilidad_iva_cliente').AsString;
domicilio_cliente:=FieldByName('domicilio_cliente').AsString;
pto_vta_recibo:=FieldByName('pto_vta_recibo').AsInteger;
nro_recibo:=FieldByName('nro_recibo').AsInteger;
conceptos_pagados:=FieldByName('conceptos_pagados').AsString;
abrir_fiscal(archivoINI);
Hasar1.PrecioBase:=False;
Hasar1.Comenzar;
Hasar1.TratarDeCancelarTodo;
Hasar1.DatosCliente(nombre_cliente, numero_documento, obtener_tipo_documento(tipo_documento),
obtener_responsabilidad_iva(responsabilidad_iva), domicilio_cliente);
Hasar1.AbrirDNFH(RECIBO_X, nro_recibo);
Buscar_detalle_recibo_X(ibconsulta, cod_recibo);
with ibconsulta do
begin
first;
while not eof do
begin
hasar1.ImprimirItem(FieldByName('valores').AsString, 1, FieldByName('importe_cobro').AsFloat,
0, 0);
next;
end;
end;
hasar1.Subtotal(true);
Hasar1.DetalleRecibo(conceptos_pagados);
Hasar1.CerrarDNFH(2);
Hasar1.Finalizar;
CoolTrayIcon1.ShowBalloonHint('Impresora fiscal', 'Recibo, Nº '
+ LPad(pto_vta_recibo, 4, '0') + ' - ' + LPad(nro_recibo, 8, '0') + ' en la Impresora fiscal...',
bitInfo, 10);
IBTransaccion.Commit;
except
on E:Exception do
begin
terminarTransaccion;
merrores(e, 'Error en la impresión de datos.', 'Impresión Recibo');
end;
end;
end;