Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Notas de débito A y B fiscal Hasar SMH/P330 (https://www.clubdelphi.com/foros/showthread.php?t=82989)

santiago14 30-04-2013 18:10:22

Notas de débito A y B fiscal Hasar SMH/P330
 
Bien, ahí van las impresiones de las Notas de débito A y B.
Son muy similares a las facturas puesto que contablemente sabemos que estos documentos son análogos.

Código Delphi [-]
//Nota de débito A
procedure TFrmPpal.evNotaDebitoAEventAlert(Sender: TObject;
  EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
var
  puerto:string;
  ini:TIniFile;
  factura:TEnc_egreso;
begin
  with DataModule2, IBConsulta, factura do
  try
    terminarTransaccion;
    IBTransaccion.StartTransaction;
    buscar_cliente_factura(ibconsulta, 'NOTA_DEBITO_A');
  //Cargamos el registro con los datos del documento
    //cod_egreso:=Fields[0].asInteger;
    cod_egreso:=FieldByName('cod_egreso').AsInteger;
    nombre_cliente:=FieldByName('nombre_cliente').AsString;
    domicilio:=FieldByName('domicilio_cliente').AsString;
    responsabilidad_iva:=FieldByName('responsabilidad_iva_cliente').AsString;
    tipo_documento:=FieldByName('tipo_documento').AsString;
    numero_documento:=FieldByName('numero_documento').AsString; //Sería el cuit
    pto_vta_egreso:=FieldByName('pto_vta_egreso').AsInteger; //el pto de venta
  //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);
    //Hasar1.DescripcionesLargas:=false; //trunca las descripciones largas
    Hasar1.AbrirComprobanteFiscal(NOTA_DEBITO_A);
    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);
        next;
      end;
    end;
    hasar1.Subtotal(true);
  //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;
    Hasar1.CerrarComprobanteFiscal;
  //Me devuelve el nro de comprobante
    nro_egreso:=StrToInt(Hasar1.Respuesta[3]);
    registrar_numero_comprobante_egreso(nro_egreso, cod_egreso, IBConsulta);
    Hasar1.Finalizar;
    IBTransaccion.Commit;
    CoolTrayIcon1.ShowBalloonHint('Impresora fiscal', 'Nota de débito A, Nş '
      + LPad(pto_vta_egreso, 4, '0') + ' - ' + LPad(nro_egreso, 8, '0') + ' en la Impresora fiscal...',
      bitInfo, 10);
  except
    on E:Exception do
    begin
      terminarTransaccion;
      merrores(e, 'Error en la impresión de datos.', 'Impresión Nota de débito A');
    end;
  end;
end;

//Nota de débito B
procedure TFrmPpal.evNotaDebitoBEventAlert(Sender: TObject;
  EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
var
  puerto:string;
  ini:TIniFile;
  factura:TEnc_egreso;
  r:string;
begin
  with DataModule2, IBConsulta, factura do
  begin
    terminarTransaccion;
    try
      IBTransaccion.StartTransaction;
      buscar_cliente_factura(ibconsulta, 'NOTA_DEBITO_B');
    //Recuperamos los datos de la factura
      //cod_egreso:=Fields[0].asInteger;
      cod_egreso:=FieldByName('cod_egreso').AsInteger;
      nombre_cliente:=FieldByName('nombre_cliente').AsString;
      domicilio:=Trim(FieldByName('domicilio_cliente').AsString);
      responsabilidad_iva:=FieldByName('responsabilidad_iva_cliente').AsString;
      tipo_documento:=FieldByName('tipo_documento').AsString;
      numero_documento:=FieldByName('numero_documento').AsString; //Sería el cuit
      pto_vta_egreso:=FieldByName('pto_vta_egreso').AsInteger; //
    //Abrimos la fiscal
      abrir_fiscal(archivoINI);
      Hasar1.PrecioBase:=False; //TRUE: CON BASE IMPONIBLE; FALSE: CON PRECIO FINAL, IMPUESTOS INCLUIDOS

      DateTimeToString(r, 'dd/mm/yyyy hh:nn:ss', Now);
      OutputDebugString(PChar(r + ' - Comenzar.'));
      Hasar1.Comenzar;

      DateTimeToString(r, 'dd/mm/yyyy hh:nn:ss', Now);
      OutputDebugString(PChar(r + ' - Tratar de cancelar todo.'));
      Hasar1.TratarDeCancelarTodo;
      if domicilio <> EmptyStr then
      begin
        DateTimeToString(r, 'dd/mm/yyyy hh:nn:ss', Now);
        OutputDebugString(PChar(r + ' - Domicilio <> vacío.'));

        Hasar1.DatosCliente(nombre_cliente, numero_documento, obtener_tipo_documento(tipo_documento),
          obtener_responsabilidad_iva(responsabilidad_iva), domicilio);
      end
      else
      begin
        DateTimeToString(r, 'dd/mm/yyyy hh:nn:ss', Now);
        OutputDebugString(PChar(r + ' - Domicilio = vacío (por el else).'));
        
      //No acepta una variable con un espacio, así que le mandamos el espacio directamente.
        Hasar1.DatosCliente(nombre_cliente, numero_documento, obtener_tipo_documento(tipo_documento),
          obtener_responsabilidad_iva(responsabilidad_iva), ' ');
      end;
      //Hasar1.DescripcionesLargas:=false; //trunca las descripciones largas
      Hasar1.AbrirComprobanteFiscal(NOTA_DEBITO_B);
      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);
          next;
        end;
      end;
      hasar1.Subtotal(true);
    //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;
      Hasar1.CerrarComprobanteFiscal;
    //Me devuelve el nro de comprobante
      nro_egreso:=StrToInt(Hasar1.Respuesta[3]);
      registrar_numero_comprobante_egreso(nro_egreso, cod_egreso, IBConsulta);
      Hasar1.Finalizar;
      IBTransaccion.Commit;
      CoolTrayIcon1.ShowBalloonHint('Impresora fiscal', 'Nota de débito B, Nş '
        + LPad(pto_vta_egreso, 4, '0') + ' - ' + LPad(nro_egreso, 8, '0') + ' en la Impresora fiscal...',
        bitInfo, 10);
    except
      on E:Exception do
      begin
        terminarTransaccion;
        merrores(e, 'Error en la impresión de datos.', 'Impresión Nota débito B.');
        
      end;
    end;
  end;
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 04:44:18.

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