santiago14
02-05-2013, 02:30:47
Y para completar van las notas de crédito A y B. ;)
El código es algo diferente, este documento es considerado NO fiscal y supongo que eso le otorga menos importancia que las Facturas y Notas de débito. Habrá que conversar con un Contador para resolver este misterio.
Una particularidad, este documento necesita de "un documento relacionado", normalmente una factura, eso se lo indica con el comando Hasar1.DocumentoDeReferencia[], pero el mismo no funciona del todo bien, así que se reemplaza (algo mas tedioso de hacer) por el comando Hasar1.Enviar() y unas líneas previas mas.
Lo que nos ocupa a nosotros, el código:
//Nota de crédito A
procedure TFrmPpal.evNotaCreditoAEventAlert(Sender: TObject;
EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
var
puerto:string;
ini:TIniFile;
factura:TEnc_egreso;
fs, comando, comprobante_original:WideString;
begin
with DataModule2, IBConsulta, factura do
try
terminarTransaccion;
IBTransaccion.StartTransaction;
buscar_cliente_factura(ibconsulta, 'NOTA_CREDITO_A');
//Recuperamos los datos de la Nota de crédito A
//cod_egreso:=Fields[0].asInteger;
cod_egreso:=FieldByName('cod_egreso').AsInteger;
//Recuperamos el comprobante relacionado
cod_comprobante_relacionado:=FieldByName('cod_comprobante_relacionado').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
//Recuperamos el nro de comprobante relacionado
obtener_nro_comprobante(cod_comprobante_relacionado, IBConsulta);
//Abrimos la fiscal
abrir_fiscal(archivoINI);
Hasar1.PrecioBase:=False; //TRUE: CON BASE IMPONIBLE; FALSE: CON PRECIO FINAL, IMPUESTOS INCLUIDOS
Hasar1.Comenzar;
Hasar1.TratarDeCancelarTodo;
//Este comando no funciona en P-330F, se reemplaza por Enviar()
//Hasar1.DocumentoDeReferencia[1]:=IBConsulta.FieldByName('nro_comprobante').AsString;
fs:=#28;
comprobante_original:=IBConsulta.FieldByName('nro_comprobante').AsString;
comando:=#147 + fs + '1' + fs + comprobante_original;
Hasar1.Enviar(comando);
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.AbrirDNFH(NOTA_CREDITO_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);
// hasar1.ImprimirPago('Efectivo:',strtofloat(txttotal.text));
Hasar1.CerrarDNFH;
//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 crédito 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 crédito A.');
end;
end;
end;
//Nota de crédito B
procedure TFrmPpal.evNotaCreditoBEventAlert(Sender: TObject;
EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
var
puerto:string;
ini:TIniFile;
factura:TEnc_egreso;
fs, comando, comprobante_original:WideString;
begin
with DataModule2, IBConsulta, factura do
try
terminarTransaccion;
IBTransaccion.StartTransaction;
buscar_cliente_factura(ibconsulta, 'NOTA_CREDITO_B');
//Recuperamos los datos del comprobante
//cod_egreso:=Fields[0].asInteger;
cod_comprobante_relacionado:=FieldByName('cod_comprobante_relacionado').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; //
//Recuperamos el nro de comprobante relacionado
obtener_nro_comprobante(cod_comprobante_relacionado, IBConsulta);
//Abrimos la fiscal
abrir_fiscal(archivoINI);
Hasar1.PrecioBase:=False; //TRUE: CON BASE IMPONIBLE; FALSE: CON PRECIO FINAL, IMPUESTOS INCLUIDOS
Hasar1.Comenzar;
Hasar1.TratarDeCancelarTodo;
//Este comando no funciona en P-330F, se reemplaza por Enviar()
//Hasar1.DocumentoDeReferencia[1]:=IBConsulta.FieldByName('nro_comprobante').AsString;
fs:=#28;
comprobante_original:=IBConsulta.FieldByName('nro_comprobante').AsString;
comando:=#147 + fs + '1' + fs + comprobante_original;
Hasar1.Enviar(comando);
if domicilio <> EmptyStr then
begin
Hasar1.DatosCliente(nombre_cliente, numero_documento, obtener_tipo_documento(tipo_documento),
obtener_responsabilidad_iva(responsabilidad_iva), domicilio);
end
else
begin
//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.AbrirDNFH(NOTA_CREDITO_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);
// hasar1.ImprimirPago('Efectivo:',strtofloat(txttotal.text));
Hasar1.CerrarDNFH;
//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 crédito 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 de Crédito B.');
end;
end;
end;
Con esto completamos. :rolleyes:
Tenemos: Facturas A y B, Notas de débito A y B, Notas de crédito A y B, Cierre X, Cierre Z
Saludos.
El código es algo diferente, este documento es considerado NO fiscal y supongo que eso le otorga menos importancia que las Facturas y Notas de débito. Habrá que conversar con un Contador para resolver este misterio.
Una particularidad, este documento necesita de "un documento relacionado", normalmente una factura, eso se lo indica con el comando Hasar1.DocumentoDeReferencia[], pero el mismo no funciona del todo bien, así que se reemplaza (algo mas tedioso de hacer) por el comando Hasar1.Enviar() y unas líneas previas mas.
Lo que nos ocupa a nosotros, el código:
//Nota de crédito A
procedure TFrmPpal.evNotaCreditoAEventAlert(Sender: TObject;
EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
var
puerto:string;
ini:TIniFile;
factura:TEnc_egreso;
fs, comando, comprobante_original:WideString;
begin
with DataModule2, IBConsulta, factura do
try
terminarTransaccion;
IBTransaccion.StartTransaction;
buscar_cliente_factura(ibconsulta, 'NOTA_CREDITO_A');
//Recuperamos los datos de la Nota de crédito A
//cod_egreso:=Fields[0].asInteger;
cod_egreso:=FieldByName('cod_egreso').AsInteger;
//Recuperamos el comprobante relacionado
cod_comprobante_relacionado:=FieldByName('cod_comprobante_relacionado').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
//Recuperamos el nro de comprobante relacionado
obtener_nro_comprobante(cod_comprobante_relacionado, IBConsulta);
//Abrimos la fiscal
abrir_fiscal(archivoINI);
Hasar1.PrecioBase:=False; //TRUE: CON BASE IMPONIBLE; FALSE: CON PRECIO FINAL, IMPUESTOS INCLUIDOS
Hasar1.Comenzar;
Hasar1.TratarDeCancelarTodo;
//Este comando no funciona en P-330F, se reemplaza por Enviar()
//Hasar1.DocumentoDeReferencia[1]:=IBConsulta.FieldByName('nro_comprobante').AsString;
fs:=#28;
comprobante_original:=IBConsulta.FieldByName('nro_comprobante').AsString;
comando:=#147 + fs + '1' + fs + comprobante_original;
Hasar1.Enviar(comando);
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.AbrirDNFH(NOTA_CREDITO_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);
// hasar1.ImprimirPago('Efectivo:',strtofloat(txttotal.text));
Hasar1.CerrarDNFH;
//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 crédito 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 crédito A.');
end;
end;
end;
//Nota de crédito B
procedure TFrmPpal.evNotaCreditoBEventAlert(Sender: TObject;
EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
var
puerto:string;
ini:TIniFile;
factura:TEnc_egreso;
fs, comando, comprobante_original:WideString;
begin
with DataModule2, IBConsulta, factura do
try
terminarTransaccion;
IBTransaccion.StartTransaction;
buscar_cliente_factura(ibconsulta, 'NOTA_CREDITO_B');
//Recuperamos los datos del comprobante
//cod_egreso:=Fields[0].asInteger;
cod_comprobante_relacionado:=FieldByName('cod_comprobante_relacionado').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; //
//Recuperamos el nro de comprobante relacionado
obtener_nro_comprobante(cod_comprobante_relacionado, IBConsulta);
//Abrimos la fiscal
abrir_fiscal(archivoINI);
Hasar1.PrecioBase:=False; //TRUE: CON BASE IMPONIBLE; FALSE: CON PRECIO FINAL, IMPUESTOS INCLUIDOS
Hasar1.Comenzar;
Hasar1.TratarDeCancelarTodo;
//Este comando no funciona en P-330F, se reemplaza por Enviar()
//Hasar1.DocumentoDeReferencia[1]:=IBConsulta.FieldByName('nro_comprobante').AsString;
fs:=#28;
comprobante_original:=IBConsulta.FieldByName('nro_comprobante').AsString;
comando:=#147 + fs + '1' + fs + comprobante_original;
Hasar1.Enviar(comando);
if domicilio <> EmptyStr then
begin
Hasar1.DatosCliente(nombre_cliente, numero_documento, obtener_tipo_documento(tipo_documento),
obtener_responsabilidad_iva(responsabilidad_iva), domicilio);
end
else
begin
//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.AbrirDNFH(NOTA_CREDITO_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);
// hasar1.ImprimirPago('Efectivo:',strtofloat(txttotal.text));
Hasar1.CerrarDNFH;
//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 crédito 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 de Crédito B.');
end;
end;
end;
Con esto completamos. :rolleyes:
Tenemos: Facturas A y B, Notas de débito A y B, Notas de crédito A y B, Cierre X, Cierre Z
Saludos.