PDA

Ver la Versión Completa : Notas de débito A y B fiscal Hasar SMH/P330


santiago14
30-04-2013, 18:10:22
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.


//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.