Son muy similares a las facturas puesto que contablemente sabemos que estos documentos son análogos.
Hay una sentencia: OutputDebugString(), que me manda un cartel a la ventana de eventos "Event log", la utilizo para ver por donde anda el flujo del código, era por unos problemas que tenía yo. No hay que llevarle mucho el apunte...
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.