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.