Bueno, después de largo tiempo pude completar el proceso.
Mando el código para poder poner el importe en letras y una observación en la parte de abajo de un comprobante fiscal (Factura A, B, Nota crédito A, B, Nota de débito A, B) La impresora es una Hasar P330.
En este caso es para una Factura B
Código Delphi
[-]
function tfrmPpal.poner_items_comprobante(cod_egreso:Integer; ibconsulta:TIBQuery):double ;
var
total: Double;
begin
total:=0;
Buscar_detalle_factura_A(IBConsulta, cod_egreso);
with IBConsulta do
begin
first;
while not eof do
begin hasar1.ImprimirItem(FieldByName('nombre_existencia').AsString, FieldByName('cantidad_egreso').AsFloat,
FieldByName('precio_final').AsFloat, FieldByName('porcentaje_alicuota').AsFloat, 0);
total:=total + (FieldByName('precio_final').AsFloat * FieldByName('cantidad_egreso').AsFloat);
next;
end;
Result:=total;
end;
end;
procedure TFrmPpal.abrir_fiscal(archivo_ini:string);
var
ini:TIniFile;
puerto:string;
begin
try
ini:=abrirINI(archivo_ini);
puerto:=leerINI(INI, 'fiscal', 'puerto');
cerrarINI(ini);
Hasar1.Puerto:=StrToInt(puerto);
Hasar1.Modelo:=MODELO_P330; hasar1.Baudios:=9600;
except
raise;
end;
end;
function TFrmPpal.Descuento_general(total, porcentaje_dto_recargo: Double;
texto_descuento:string)ouble;
var
en_negativo:Boolean;
dto_recargoouble;
begin
result:=0;
en_negativo:=True;
if Abs(porcentaje_dto_recargo) > 0 then
begin
en_negativo:=porcentaje_dto_recargo < 0;
dto_recargo:=(Abs(porcentaje_dto_recargo) * total) / 100;
Hasar1.DescuentoGeneral(texto_descuento, dto_recargo, en_negativo);
Result:=dto_recargo;
end;
end;
procedure TFrmPpal.borrar_cola_impresion(nro_linea:Integer);
var
snro_linea:string;
fs, comando:WideString;
begin
fs:=#28;
snro_linea:=IntToStr(nro_linea);
comando:=#93 + fs + snro_linea + fs + #127;
Hasar1.Enviar(comando);
end;
procedure TFrmPpal.observaciones_comprobante(texto_observaciones:string; nro_linea:Integer);
var
snro_linea:string;
fs, comando:WideString;
begin
fs:=#28;
snro_linea:=IntToStr(nro_linea);
comando:=#93 + fs + snro_linea + fs + texto_observaciones;
Hasar1.Enviar(comando);
end;
procedure TFrmPpal.importe_letras(total, dto_recargoouble; descuento:Boolean;
nro_linea:integer);
var
snro_linea:string;
fs, comando:WideString;
begin
fs:=#28;
snro_linea:=IntToStr(nro_linea);
total:=total_general(total, dto_recargo, descuento);
comando:=#93 + fs + snro_linea + fs + 'SON PESOS: ' + NumeroToLetras_EstiloMoneda(total);
Hasar1.Enviar(comando);
end;
procedure TFrmPpal.formas_pago(IBConsulta:TIBQuery; cod_egreso:Integer);
begin
Buscar_formas_pago_cliente(IBConsulta, cod_egreso);
with IBConsulta do
begin
First;
while not Eof do
begin
hasar1.ImprimirPago(FieldByName('tipo_forma_cobro').AsString,
FieldByName('monto_forma_cobro').AsFloat);
Next;
end;
end;
end;
Código Delphi
[-]
abrir_fiscal(archivoINI);
Hasar1.PrecioBase:=False; Hasar1.Comenzar;
Hasar1.TratarDeCancelarTodo;
Hasar1.AbrirComprobanteFiscal(FACTURA_B);
total:=poner_items_comprobante(factura.cod_egreso, ibconsulta);
dto_recargo:=Descuento_general(total, porcentaje_dto_recargo, texto_descuento);
hasar1.Subtotal(true);
formas_pago(IBConsulta, cod_egreso);
importe_letras(total, dto_recargo, en_negativo, 11);
observaciones_comprobante(observaciones, 12);
Hasar1.CerrarComprobanteFiscal;
nro_egreso:=StrToInt(Hasar1.Respuesta[3]);
registrar_numero_comprobante_egreso(nro_egreso, cod_egreso, IBConsulta);
borrar_cola_impresion(11);
borrar_cola_impresion(12);
Hasar1.Finalizar;