Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recibo X con impresora Hasar SMH/P-330 (https://www.clubdelphi.com/foros/showthread.php?t=82832)

santiago14 18-04-2013 03:04:33

Recibo X con impresora Hasar SMH/P-330
 
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);

  //Cargamos el registro con los datos del documento

    cod_recibo:=FieldByName('cod_recibo').AsInteger;

    nombre_cliente:=FieldByName('nombre_cliente').AsString;

    numero_documento:=FieldByName('cuit_cliente').AsString; //Sería el cuit

    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; //el pto de venta

    nro_recibo:=FieldByName('nro_recibo').AsInteger; //el nro de recibo

    conceptos_pagados:=FieldByName('conceptos_pagados').AsString; //el concepto que se paga

  //Abrimos la fiscal

    abrir_fiscal(archivoINI);

    Hasar1.PrecioBase:=False; //TRUE: CON BASE IMPONIBLE; FALSE: CON PRECIO FINAL, IMPUESTOS INCLUIDOS

    Hasar1.Comenzar;

    Hasar1.TratarDeCancelarTodo;

    Hasar1.DatosCliente(nombre_cliente, numero_documento, obtener_tipo_documento(tipo_documento),

      obtener_responsabilidad_iva(responsabilidad_iva), domicilio_cliente);

    //Hasar1.DescripcionesLargas:=false; //trunca las descripciones largas

    Hasar1.AbrirDNFH(RECIBO_X, nro_recibo);

    Buscar_detalle_recibo_X(ibconsulta, cod_recibo);

    with ibconsulta do

    begin

      first;

      while not eof do

      begin                //DESCR CANT MONTO IVA IMPUESTOS INTERNOS

        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;

Casimiro Notevi 18-04-2013 03:50:42

^\||/
...........

santiago14 18-04-2013 23:04:12

Para completar, aclaro que es "abrir_fiscal", simplemente junté los comandos para abrir la fiscal combinándolo con un archivo .ini donde tengo algunos datos de la impresora.

Código Delphi [-]
procedure TFrmPpal.abrir_fiscal(archivo_ini:string);
var
  ini:TIniFile;
  puerto:string;
begin
  try
  //Recuperamos los datos desde el archivo .ini
    ini:=abrirINI(archivo_ini);
    puerto:=leerINI(INI, 'fiscal', 'puerto');
    cerrarINI(ini);
  //Es la parte de impresión
    Hasar1.Puerto:=StrToInt(puerto);
    Hasar1.Modelo:=MODELO_P330;
    hasar1.Baudios:=9600;
  except
    raise;
  end;
end;

mbguantay 19-04-2013 02:09:11

Hola Santi, muy buen aporte, gracias! justo tengo que hacer ticket factura en una hasar. Muchas gracias!

santiago14 19-04-2013 02:41:30

Cita:

Empezado por mbguantay (Mensaje 458907)
Hola Santi, muy buen aporte, gracias! justo tengo que hacer ticket factura en una hasar. Muchas gracias!

Por nada, también tengo funcionando módulos para las facturas, notas de débito, notas de crédito A y B.
En estos días las voy a subir para que queden en el Club.

amadis 23-04-2013 14:45:02

De donde descargaste el paquete de drivers y/o componentes para hasar.

el componente hasar1 al que haces mención, es creado por vos o es algun componente que instala el driver.

Yo he descargado unos de http://www.impresoras-fiscales.com.ar/argentina.html
Es un ocx que lo integra al proyecto. Pero el mismo ocx es un driver aparentemente generico para todos los fiscales y no entiendo bien como va el tema.

Será agradecida toda la info y/o ejemplos que puedas aportar sobre el tema.

santiago14 23-04-2013 19:15:44

1 Archivos Adjunto(s)
Cita:

Empezado por amadis (Mensaje 459115)
De donde descargaste el paquete de drivers y/o componentes para hasar.

el componente hasar1 al que haces mención, es creado por vos o es algun componente que instala el driver.

Yo he descargado unos de http://www.impresoras-fiscales.com.ar/argentina.html
Es un ocx que lo integra al proyecto. Pero el mismo ocx es un driver aparentemente generico para todos los fiscales y no entiendo bien como va el tema.

Será agradecida toda la info y/o ejemplos que puedas aportar sobre el tema.

Lo descargué de la página de Hasar, hay que buscar un poco y ahí está. Aquí se los pongo para que lo tengan. Es libre así que no hay drama.

No he visto el OCX de impresoras-fiscales.com.ar pero el que tengo yo es para toda la gama de Hasar hasta el momento de la salida del OCX, la versión es v051122.

Voy a subir otros ejemplos en estos días: Factura A y B, Notas de débito A y B, Cierre Z y X.

Saludos.


La franja horaria es GMT +2. Ahora son las 09:24:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi