Ver Mensaje Individual
  #8  
Antiguo 10-08-2013
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Reputación: 21
santiago14 Va por buen camino
Post

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 [-]
{-------------------------------------------------------------------------------
  Procedure: tfrmPpal.poner_items_comprobante
  Author:    santiago
  DateTime:  09.08.2013 11:36:04
  Arguments: cod_egreso:Integer; ibconsulta:tmdoquery
  Result:    double. El subtotal del comprobante.
  Comentario: Ponemos los ítems en la impresora fiscal.
-------------------------------------------------------------------------------}
function tfrmPpal.poner_items_comprobante(cod_egreso:Integer; ibconsulta:TIBQuery):double ;
var
  total: Double;
begin
  total:=0;
//Recordar que la transacción se inicia fuera de este módulo
  Buscar_detalle_factura_A(IBConsulta, cod_egreso);
  with IBConsulta do
  begin
    first;
    while not eof do
    begin                //DESCR CANT MONTO IVA IMPUESTOS INTERNOS
      hasar1.ImprimirItem(FieldByName('nombre_existencia').AsString, FieldByName('cantidad_egreso').AsFloat,
        FieldByName('precio_final').AsFloat, FieldByName('porcentaje_alicuota').AsFloat, 0);
    // Added by santiago 10/06/2013 20:12:31 - Sumamos los ítems de las ventas (aquí están con iva)
      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
  //Recuperamos los datos desde el archivo .ini
    ini:=abrirINI(archivo_ini);
    puerto:=leerINI(INI, 'fiscal', 'puerto');
    //pto_vta:=leerINI(ini, 'punto_vta', 'punto');
    //modelo:=leerINI(ini, 'fiscal', 'modelofiscal');
    cerrarINI(ini);
  //Es la parte de impresión
    Hasar1.Puerto:=StrToInt(puerto);
    Hasar1.Modelo:=MODELO_P330; //¿Será número 19?  // StrToInt(modelo);
    hasar1.Baudios:=9600;
  except
    raise;
  end;
end;

{-------------------------------------------------------------------------------
  Procedure: TFrmPpal.Descuento_general
  Author:    santiago
  DateTime:  02.08.2013 18:21:13
  Arguments: total, porcentaje_dto_recargoouble; texto_descuento:string
  Result:    Double. Devuelve el dto/recargo que hubo
  Comentario: Descuento general de los documentos fiscales
-------------------------------------------------------------------------------}
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;
  /// TERCER PARAMETRO IDENTIFICA SI ES DESCUENTO O RECARGO. TRUE: DESCUENTO; FALSE: RECARGO;
    Hasar1.DescuentoGeneral(texto_descuento, dto_recargo, en_negativo);
    Result:=dto_recargo;
  end;
end;

{-------------------------------------------------------------------------------
  Procedure: TFrmPpal.borrar_cola_impresion
  Author:    santiago
  DateTime:  02.08.2013 18:10:15
  Arguments: nro_linea:Integer
  Result:    None
  Comentario: Borra el texto del pie de impresión del compprobante fiscal
-------------------------------------------------------------------------------}
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
  Author:    santiago
  DateTime:  02.08.2013 18:02:01
  Arguments: texto_observaciones:string; nro_linea:Integer
  Result:    None
  Comentario: Mandamos las observaciones al comprobante fiscal
-------------------------------------------------------------------------------}
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
  Author:    santiago
  DateTime:  02.08.2013 17:46:59
  Arguments: total, dto_recargoouble; descuento:Boolean; nro_linea:integer
  Result:    None
  Comentario: Ponemos el importe en letras para los documentos
-------------------------------------------------------------------------------}
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);
  //comando:=#93 + fs + '11' + fs + 'Cien pesos';
  Hasar1.Enviar(comando);
end;

{-------------------------------------------------------------------------------
  Procedure: TFrmPpal.formas_pago
  Author:    santiago
  DateTime:  02.08.2013 17:34:37
  Arguments: 
  Result:    None
  Comentario: Ponemos las formas de pago en la fiscal
-------------------------------------------------------------------------------}
procedure TFrmPpal.formas_pago(IBConsulta:TIBQuery; cod_egreso:Integer);
begin
//Imprimimos las formas de pago del cliente
  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; //TRUE: CON BASE IMPONIBLE; FALSE: CON PRECIO FINAL, IMPUESTOS INCLUIDOS
    Hasar1.Comenzar;
    Hasar1.TratarDeCancelarTodo;
   //.... 
    
    Hasar1.AbrirComprobanteFiscal(FACTURA_B);
  // Modified by santiago 09/08/2013 11:38:46 - Ponemos los ítems en la fiscal, nos
  // devuelve el subtotal
    total:=poner_items_comprobante(factura.cod_egreso, ibconsulta);
  // Added by santiago 10/06/2013 20:12:58 - Mandamos el descuento
    dto_recargo:=Descuento_general(total, porcentaje_dto_recargo, texto_descuento);
    hasar1.Subtotal(true);
  //Imprimimos las formas de pago del cliente
    formas_pago(IBConsulta, cod_egreso);
  // Added by santiago 01/08/2013 19:11:39 - Importe en letras
    importe_letras(total, dto_recargo, en_negativo, 11);
  // Added by santiago 01/08/2013 19:11:45 - Las observaciones
    observaciones_comprobante(observaciones, 12);
    Hasar1.CerrarComprobanteFiscal;
  //Me devuelve el nro de comprobante
    nro_egreso:=StrToInt(Hasar1.Respuesta[3]);
    registrar_numero_comprobante_egreso(nro_egreso, cod_egreso, IBConsulta);
  // Added by santiago 01/08/2013 19:11:53 - Borramos el importe en letras de la memoria fiscal
    borrar_cola_impresion(11);
  // Added by santiago 01/08/2013 19:11:57 - Borramos las observaciones de la memoria fiscal
    borrar_cola_impresion(12);
    Hasar1.Finalizar;
__________________
Uno es responsable de lo que hace y de lo que omite hacer.

Última edición por santiago14 fecha: 10-08-2013 a las 01:50:01.
Responder Con Cita