Introducción
IF universal es una libreria de para controlar impresoras fiscales desde lenguajes de programación muy variados. La misma soporta los modelos más comunes del mercado, permitendo unificar un solo protocolo.Para controlar una impresora se necesita partir de la creación de una instancia dela siguiente clase: IDriver
Bloques de código:
Los métodos de la clase que invocan comandos a la impresora fiscal deben ejecutare entre IDriver.Inicializar y IDriver.Finalizar. Ambos métodos producen la apertura y cierre del puerto serial respectivamente. IDriver.Inicializar además ejecua una consulta de estado para comprobar si hay una impresora conectada y encendida en dicho puerto.
Dim Fiscal As Driver Set Fiscal = New Driver Fiscal.Modelo = cMODELO Fiscal.Puerto = cPUERTO Fiscal.Baudios = cBAUDIOS If Fiscal.Inicializar Then .... Fiscal.Finalizar Else MsgBox(Fiscal.ErrorDesc) End If
Manejo de errores:
Los métodos que envian comandos directos a la impresora fiscal y tienene como resultado un valor booleano indican en dicho resultado el éxito de la operación. Si la operación no es exitosa los detalles del error se observan en la propiedad IDriver.ErrorDesc.
Impresoras de nueva generación:
Los modelos de nueva generación requieren del ingreso de parámetros adicionales a los de los de la 1ra generación. Los métodos que requieren estos parámetros tienen el mismo nombre que los de 1ra generación, añadiendose el sufijo 2g al final. Los métodos compatibles con nueva generación son compatibles con los anteriores asi que se recomienda usar estos para programar en todos los casos.
Ejemplo:
ImprimirItem2g(recomendado)
ImprimirItem(Obsoleto. Solo compatible con los de 1ra generación)
Si se intentara usar en un modelo de impresora de nueva generación un método de primera generación el resultado de la operación seria fallido y el error correspondiente indicaría el uso de un método obsoleto.
Ejemplo de cierre X/Z:
Para el caso de cierres X o Z se pueden obtener los resultados del cierre en la propiedad IDriver.CierreZTotales.
Dim Fiscal As Driver Set Fiscal = New Driver Fiscal.Modelo = cMODELO Fiscal.Puerto = cPUERTO Fiscal.Baudios = cBAUDIOS If Fiscal.Inicializar Then Fiscal.CancelarComprobante If Fiscal.CierreZ Then MsgBox ("Cierre realizado exitosamente. No de cierre:" + Str(Fiscal.CierreZTotales.NroCierre)) Else MsgBox (Fiscal.ErrorDesc) End If Fiscal.Finalizar Else MsgBox (Fiscal.ErrorDesc) End If
Ejemplo de impresion Tique:
Dim Fiscal As Driver Set Fiscal = New Driver On Error GoTo DepuraErrores Fiscal.Modelo = cMODELO Fiscal.Puerto = cPUERTO Fiscal.Baudios = cBAUDIOS If Not Fiscal.Inicializar Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CancelarComprobante If Not Fiscal.AbrirComprobante(tcTique) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirItem2g("Item 1", 1, 0.1, 21, 0, IFUniversal.Gravado, "0", 1, "7790001001054", "", IFUniversal.Unidad) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirDescuentoGeneral("Descuento General", 0.01) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirPago2g("Efectivo", 5, "", IFUniversal.Efectivo, 1, "", "") Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CerrarComprobante Fiscal.Finalizar MsgBox ("Comprobante impreso exitosamente") Exit Sub DepuraErrores: Fiscal.Finalizar MsgBox Fiscal.ErrorDesc
Ejemplo de Tique-Factura B/Factura B a Consumidor final:
Dim Fiscal As Driver Set Fiscal = New Driver On Error GoTo DepuraErrores Fiscal.Modelo = cMODELO Fiscal.Puerto = cPUERTO Fiscal.Baudios = cBAUDIOS If Not Fiscal.Inicializar Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CancelarComprobante If Not Fiscal.AbrirComprobante(tcFacturaB) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirItem2g("Item 1", 1, 0.1, 21, 0, IFUniversal.Gravado, "0", 1, "7790001001054", "", IFUniversal.Unidad) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirDescuentoGeneral("Descuento General", 0.01) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirPago2g("Efectivo", 5, "", IFUniversal.Efectivo, 1, "", "") Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CerrarComprobante Fiscal.Finalizar MsgBox ("Comprobante impreso exitosamente") Exit Sub DepuraErrores: Fiscal.Finalizar MsgBox Fiscal.ErrorDesc
Ejemplo de Tique-Factura/Factura a cliente que no es consumidor final:
Para el caso de comprobantes A o B que no sean a consumidor final se debe enviar el documento de referencia asociado de tipo remito.
Dim Fiscal As Driver Set Fiscal = New Driver On Error GoTo DepuraErrores Fiscal.Modelo = cMODELO Fiscal.Puerto = cPUERTO Fiscal.Baudios = cBAUDIOS If Not Fiscal.Inicializar Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CancelarComprobante If Not Fiscal.DatosCliente("Abel Miranda", tdCUIT, 20939802593#, riMonotributo, "Italia, 945, Castelar") Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.DocumentoDeReferencia2g(tcRemito, "0001-00000001") Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.AbrirComprobante(tcFacturaB) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirItem2g("Item 1", 1, 0.1, 21, 0, IFUniversal.Gravado, "0", 1, "7790001001054", "", IFUniversal.Unidad) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirDescuentoGeneral("Descuento General", 0.01) Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If If Not Fiscal.ImprimirPago2g("Efectivo", 5, "", IFUniversal.Efectivo, 1, "", "") Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CerrarComprobante Fiscal.Finalizar MsgBox ("Comprobante impreso exitosamente") Exit Sub DepuraErrores: Fiscal.Finalizar MsgBox Fiscal.ErrorDesc
Ejemplo de descarga de reportes electrónicos
El reporte electrónico debe escargarse semanalmente y luego enviarse a AFIP.
Ejemplo por rango de número de cierre
Dim Fiscal As Driver Set Fiscal = New Driver On Error GoTo DepuraErrores Fiscal.Modelo = cMODELO Fiscal.Puerto = cPUERTO Fiscal.Baudios = cBAUDIOS If Not Fiscal.Inicializar Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CancelarComprobante if Fiscal.ObtenerPrimerBloqueReporteElectronico("1", "9", "c:\Datos\reporte.zip", trNroCierre) then do loop while Fiscal.ObtenerSiguienteBloqueReporteElectronico end if if Fiscal.Error <> 0 then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc end if Fiscal.Finalizar MsgBox ("Reporte descargado exitosamente") Exit Sub DepuraErrores: Fiscal.Finalizar MsgBox Fiscal.ErrorDesc
Ejemplo por rango fecha.
Los formatos de fecha son Epson: ddmmaa; Hasar: aammdd.
Dim Fiscal As Driver Set Fiscal = New Driver On Error GoTo DepuraErrores Fiscal.Modelo = cMODELO Fiscal.Puerto = cPUERTO Fiscal.Baudios = cBAUDIOS If Not Fiscal.Inicializar Then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc End If Fiscal.CancelarComprobante if Fiscal.ObtenerPrimerBloqueReporteElectronico("190101", "190107", "c:\Datos\reporte.zip", trFecha) then do loop while Fiscal.ObtenerSiguienteBloqueReporteElectronico end if if Fiscal.Error <> 0 then Err.Raise Fiscal.Error, "", Fiscal.ErrorDesc end if Fiscal.Finalizar MsgBox ("Reporte descargado exitosamente") Exit Sub DepuraErrores: Fiscal.Finalizar MsgBox Fiscal.ErrorDesc
Generado por PasDoc 0.16.0.