Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: pedroesca en Septiembre 12, 2012, 05:18:24 pm

Título: Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 12, 2012, 05:18:24 pm
Buenas y santas a todos! alguien podría orientarme respecto al código a utilizar para utilizar una impresora fiscal EPSON TM-U220 ??? respecto a los comandos para tickets, facturas, notas de débito, etc.
Desde ya muchas gracias.
Título: Re:Epson Fiscal TM-U220
Publicado por: ssccaann43 en Septiembre 12, 2012, 05:56:04 pm
Hola, los comandos son simples.

Lo primero que necesito saber es si estas en venezuela o en argentina?
Título: Re:Epson Fiscal TM-U220
Publicado por: seba123neo en Septiembre 12, 2012, 06:33:55 pm
todas las impresoras vienen con su manual de referencia con los comandos para enviarle.

TM-U220
Technical Reference (http://www.posguys.com/download/TM-U220/TMU220_TRG_RevD.pdf)

tambien ya vienen los SDK con todo programado para usar hasta con telefonos moviles.

OPOS ADK  (https://download.epson-biz.com/modules/pos/index.php?page=prod&pcat=5&scat=38&pid=42)

los comandos se llaman ESC/POS, busca en internet eso.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 12, 2012, 06:43:50 pm
Muchas gracias @seba123neo, y estoy en Argentina @scaannn43.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 13, 2012, 12:40:56 am
Hoy estoy fundido y me voy a dormir ya, pero mañana te escribo. Hace poquito tuve que incorporar justamente una de esas (bah, en realidad, la TM-U220II) a un sistema que hice (también en Argentina).
Decime si tenés dudas en particular y, dentro de lo que sepa, te doy una mano.
Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 13, 2012, 04:58:11 pm
Hay dos OCX que la gente de Epson te da gratuitamente para trabajar con el equipo. Uno de ellos es de más bajo nivel y más completo que el otro. Yo tengo el más básico, pero sirve para todo lo que se necesita hacer con este controlador fiscal.
También te dan un archivo donde figuran las instrucciones que se deben emplear para cada función y están bien detalladas, incluso con la respuesta que entrega el controlador. Y te dan un ejemplo de código en VB6.
Una cosa importante: no sé si ya adquirieron el equipo, pero si no lo hicieron, que lo pidan expresa y claramente en modo entrenamiento. Esto te da 30 días para hacer cualquier tipo de pruebas. Luego de eso el proveedor del controlador limpia la memoria y lo pone en modo fiscalizado (creo que se llama así). Te aclaro esto, porque a mi cliente le dieron el equipo en modo fiscalizado, con lo cual cualquier prueba que yo hiciera tendría impacto en la memoria fiscal y en los libros contables, con lo cual pude hacer muy pocas y con precios ridículos ($0,02, por ejemplo, lo cual no te permite hacer cálculos de IVA, etc.).
No sé qué más decirte. Si tenés dudas puntuales decime y a lo mejor puedo ayudarte.
Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 13, 2012, 10:16:00 pm
Hola Jeronimo, gracias por responder, y si, la impresora está en modo entrenamiento; y tengo los ocx que provee Epson, pero lo que no tengo es algún ejemplo o modelo en vb6. De todas formas he logrado la impresión del "ticket", mas no así del "ticke-factura", ni mucho menos la nota de débito.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 14, 2012, 01:25:11 am
¿Cuál de los OCX estás usando? Si querés, te puedo mandar a tu mail el ejemplo que me mandaron, pero es para el OCX más básico. O tal vez pueda ponerlo acá, para compartirlo con todos quienes lo necesiten (no sé si eso infringe alguna norma del foro).
Asimismo, decime cómo enviás los datos del tique y te digo cómo debiera ser el del tique-factura.
Título: Re:Epson Fiscal TM-U220
Publicado por: E N T E R en Septiembre 14, 2012, 10:12:04 am
A mi me interesa ver el codigo, si pudieras compartir por favor.

Saludos
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 14, 2012, 10:43:48 am
¡Claro!
Este código es el que da Epson para mostrar el funcionamiento del controlador. Yo le hice algunos agregados para probar ciertas cosas.
Command1 es una array de botones con las distintas funciones inherentes a la emisión de comprobantes.
Command2 es una array de botones para efectuar cerres X y Z.
Command3 es un botón para establecer los parámetros de conexión.
Lo que sigue va en un form, con los botones y el OCX que corresponan:
Código: [Seleccionar]
' **************************************************************************
' Propiedad intelectual EPSON ARGENTINA S.A.
' Programador: Gomez Guillermo
' Este software se entrega con fines didácticos y sin garantia alguna.
' EPSON NO ASUME responsabilidad legal alguna. El programador usa esta información
' bajo su propio riesgo y responsabilidad.
' **************************************************************************
Dim Funciones() As String
Dim AyudaFunciones() As String
Dim Parametros() As String


Private Sub Command1_Click(Index As Integer)
' **************************************************************************
' Propiedad intelectual EPSON ARGENTINA S.A.
' Programador: Gomez Guillermo
' Este software se entrega con fines didácticos y sin garantia alguna.
' EPSON NO ASUME responsabilidad legal alguna. El programador usa esta información
' bajo su propio riesgo y responsabilidad.
' **************************************************************************
Dim respuesta As Boolean

Screen.MousePointer = 11

    Select Case Index
   
        Case 0
            'Tique
            respuesta = Me.IF1.OpenTicket("G")
            If respuesta Then respuesta = Me.IF1.SendTicketItem("ARTICULO 1", "1000", "10", "2100", "M", "0", "0")
            If respuesta Then respuesta = Me.IF1.SendTicketItem("ARTICULO 2", "1000", "20", "2100", "M", "0", "0")
            If respuesta Then respuesta = Me.IF1.SendTicketItem("ARTICULO 3", "1000", "30", "2100", "M", "0", "0")
            If respuesta Then respuesta = Me.IF1.GetTicketSubtotal("P", "LINDO SUB")
            If respuesta Then respuesta = Me.IF1.SendTicketPayment("PAGO1", "200", "T")
            If respuesta Then respuesta = Me.IF1.CloseTicket
           
       
        Case 1
            'Tique Factura
            respuesta = True
            respuesta = Me.IF1.OpenInvoice("T", "C", "A", "1", "P", "12", "I", "F", "PEPE", "LE BOU", "CUIT", "30614104712", "N", "LA", "PAMPA", "98", "REM 1", "REM 2", "G")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 1", "1000", "10", "2100", "M", "0", "0", "", "", "", "1050", "0")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 2", "1000", "20", "2100", "M", "0", "0", "", "", "", "1050", "0")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 3", "1000", "30", "2100", "M", "0", "0", "", "", "", "1050", "0")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 4", "1000", "40", "2100", "M", "0", "0", "", "", "", "1050", "0")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 5", "1000", "50", "2100", "M", "0", "0", "", "", "", "1050", "0")
            If respuesta Then respuesta = Me.IF1.GetInvoiceSubtotal("P")
            If respuesta Then respuesta = Me.IF1.SendInvoicePayment("PAGO1", "1", "T")
            If respuesta Then respuesta = Me.IF1.CloseInvoice("T", "A", "")
       
        Case 2
            'dnf
            respuesta = Me.IF1.OpenNoFiscal
            If respuesta Then respuesta = Me.IF1.SendNoFiscalText("á12345678à")
            If respuesta Then respuesta = Me.IF1.CloseNoFiscal
           
        Case 3
            'DNFH TC Y OS
            respuesta = Me.IF1.DNFHCreditCard("VISA", "12", "PEPE", "991231", "23", "46", "57", "89", "CONTA", "100", "2", "PESOS", "2", "4", "5", "7", "8", "44", "P", "P", "P")
            If respuesta Then respuesta = Me.IF1.DNFHDrugstore("MEDICUS", "CO 1", "CO 2", "CO 3", "123", "PEP", "991030", "ADRESS", "ADDRESS 2", "NADA", "12", "EXTRA 1", "EXTRA 2", "P", "P", "P", "P", "P")
           
        Case 4
            'Hora y Fecha
            respuesta = Me.IF1.SetGetDateTime("S", Format(Date, "YYMMDD"), Format(Time, "HHMMSS"))
            If respuesta Then respuesta = Me.IF1.SetGetDateTime("G")
            If respuesta Then MsgBox "La fecha y la hora actuales de la impresora son: " & Me.IF1.AnswerField_3
           
        Case 5
            'cajon
            respuesta = Me.IF1.OpenCashDrawer("1")
            If respuesta Then respuesta = Me.IF1.OpenCashDrawer("2")
           
        Case 6
            'header /trailer
            respuesta = Me.IF1.SetGetHeaderTrailer("S", "1", "PRUEBA HEADER")
            If respuesta Then respuesta = Me.IF1.SetGetHeaderTrailer("G", "1")
            If respuesta Then MsgBox "El header obtenido es : " & Me.IF1.AnswerField_4
           
        Case 7
            respuesta = Me.IF1.Status
       
        Case 8
            'dnf por Slip
            respuesta = Me.IF1.SelectSlip
            If respuesta Then respuesta = Me.IF1.SetPaperSize(50, 88)
            If respuesta Then MsgBox "Inserte una hoja en la entrada de Slip", vbInformation, "ATENCION"
            If respuesta Then respuesta = Me.IF1.PrepareSlip
            If respuesta Then MsgBox "Se imprimirá un documento no fiscal por slip", vbInformation, "ATENCION"
            If respuesta Then respuesta = Me.IF1.OpenSlipNoFiscal
            If respuesta Then respuesta = Me.IF1.SendNoFiscalText("       E J E M P L O")
            If respuesta Then respuesta = Me.IF1.SendNoFiscalText("S L I P   N O   F I S C A L")
            If respuesta Then respuesta = Me.IF1.SendNoFiscalText(" P O R   O C X F I S C A L")
            If respuesta Then respuesta = Me.IF1.CloseNoFiscal
       
        Case 9
            'Factura
            respuesta = Me.IF1.OpenInvoice("F", "C", "A", "1", "P", "12", "I", "I", "PEPE", "LE BOU", "CUIT", "30614104712", "N", "LA", "PAMPA", "98", "REM 1", "REM 2", "C")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 1", "1000", "100", "2100", "M", "0", "0", "EXTRA", "EXTRA", "EXTRA", "1050", "0")
            'If respuesta Then respuesta = Me.if1.GetInvoiceSubtotal("P", "LINDO SUB")
            If respuesta Then respuesta = Me.IF1.SendInvoicePayment("PAGO1", "200", "T")
            If respuesta Then respuesta = Me.IF1.CloseInvoice("F", "A", "HOLA")
        Case 10
'            respuesta = Me.IF1.OpenInvoice("F", "C", "A", "1", "P", "12", "I", "I", "PEPE", "LE BOU", "CUIT", "30614104712", "N", "LA", "PAMPA", "98", "REM 1", "REM 2", "C")
'            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 1", "1000", "100", "2100", "M", "0", "0", "EXTRA", "EXTRA", "EXTRA", "1050", "0")
'            'If respuesta Then respuesta = Me.if1.GetInvoiceSubtotal("P", "LINDO SUB")
'            If respuesta Then respuesta = Me.IF1.SendInvoicePayment("PAGO1", "200", "T")
'            If respuesta Then respuesta = Me.IF1.CloseInvoice("F", "A", "HOLA")
       
        Case 11 'setea diseño de factura
            respuesta = SeteoFactura(Me.IF1)
        Case 12 'Factura con transporte
            respuesta = Me.IF1.OpenInvoice("F", "C", "A", "1", "P", "12", "I", "I", "PEPE", "LE BOU", "CUIT", "30614104712", "N", "LA", "PAMPA", "98", "REM 1", "REM 2", "C")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 1", "1000", "100", "2100", "M", "0", "0", "EXTRA", "EXTRA", "EXTRA", "1050", "0")
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 2", "1000", "1200", "2100", "M", "0", "0", "", "", "", "1050", "0")
            If respuesta Then respuesta = Me.IF1.TransportClose
            If respuesta Then MsgBox "Coloque la siguiente hoja"
            If respuesta Then respuesta = Me.IF1.TransportOpen
            If respuesta Then respuesta = Me.IF1.SendInvoiceItem("ARTICULO 3", "1000", "1000", "2100", "M", "0", "0", "", "", "", "1050", "0")
            'If respuesta Then respuesta = Me.if1.GetInvoiceSubtotal("P", "LINDO SUB")
            If respuesta Then respuesta = Me.IF1.SendInvoicePayment("PAGO1", "3000", "T")
            If respuesta Then respuesta = Me.IF1.CloseInvoice("F", "A", "HOLA")

    End Select

Screen.MousePointer = 1

    'Las dos líneas que siguen creo que las agregué yo.
    MsgBox "respuesta = " & respuesta & Chr$(13) & "FiscalStatus = " & Me.IF1.FiscalStatus & Chr$(13) & "PrinterStatus = " & Me.IF1.PrinterStatus
    MsgBox "AnswerField_3: " & Me.IF1.AnswerField_3 & vbCrLf & "AnswerField_4: " & Me.IF1.AnswerField_4 & vbCrLf & "AnswerField_5: " & Me.IF1.AnswerField_5 & vbCrLf & "AnswerField_6: " & Me.IF1.AnswerField_6 & vbCrLf & "AnswerField_7: " & Me.IF1.AnswerField_7 & vbCrLf & "AnswerField_8: " & Me.IF1.AnswerField_8 & vbCrLf & "AnswerField_9: " & Me.IF1.AnswerField_9 & vbCrLf & "AnswerField_10: " & Me.IF1.AnswerField_10 & vbCrLf & "AnswerField_11: " & Me.IF1.AnswerField_11 & vbCrLf & "AnswerField_12: " & Me.IF1.AnswerField_12 & vbCrLf & "AnswerField_13: " & Me.IF1.AnswerField_13 & vbCrLf & "AnswerField_14: " & Me.IF1.AnswerField_14 & vbCrLf & "AnswerField_15: " & Me.IF1.AnswerField_15 & vbCrLf & "AnswerField_16: " & Me.IF1.AnswerField_16 & vbCrLf & "AnswerField_17: " & Me.IF1.AnswerField_17 & vbCrLf & "AnswerField_18: " & Me.IF1.AnswerField_18

End Sub

Private Sub Command2_Click(Index As Integer)
' **************************************************************************
' Propiedad intelectual EPSON ARGENTINA S.A.
' Programador: Gomez Guillermo
' Este software se entrega con fines didácticos y sin garantia alguna.
' EPSON NO ASUME responsabilidad legal alguna. El programador usa esta información
' bajo su propio riesgo y responsabilidad.
' **************************************************************************

Select Case Index

    Case 0
        respuesta = Me.IF1.CloseJournal("X", "P")
       
    Case 1
        respuesta = Me.IF1.CloseJournal("Z")
       
       
End Select
    MsgBox respuesta & Chr$(13) & Me.IF1.FiscalStatus & Chr$(13) & Me.IF1.PrinterStatus
   
End Sub


Private Sub Command3_Click()
    If Combo1.ListIndex > 0 Then
        IF1.PortNumber = Combo1.ListIndex
    End If
    If Combo2.ListIndex > 0 Then
        IF1.BaudRate = Combo2.Text
    End If
   
End Sub

Private Sub Form_Load()
' **************************************************************************
' Propiedad intelectual EPSON ARGENTINA S.A.
' Programador: Gomez Guillermo
' Este software se entrega con fines didácticos y sin garantia alguna.
' EPSON NO ASUME responsabilidad legal alguna. El programador usa esta información
' bajo su propio riesgo y responsabilidad.
' **************************************************************************
Dim i As Integer
Dim Nombre As String
Dim Ayuda As String

ReDim Funciones(1)
ReDim AyudaFunciones(1)

    Combo1.Clear
    Combo1.AddItem "Puerto"
    Combo1.AddItem "COM 1"
    Combo1.AddItem "COM 2"
    Combo1.AddItem "COM 3"
    Combo1.AddItem "COM 4"
    Combo1.AddItem "COM 5"
    Combo1.ListIndex = 0

    Combo2.Clear
    Combo2.AddItem "Velocidad"
    Combo2.AddItem "9600"
    Combo2.AddItem "19200"
    Combo2.AddItem "38400"
    Combo2.ListIndex = 0
   
End Sub

Function AddParam(NewParam As String, Optional Reset = False) As Integer
' **************************************************************************
' Propiedad intelectual EPSON ARGENTINA S.A.
' Programador: Gomez Guillermo
' Este software se entrega con fines didácticos y sin garantia alguna.
' EPSON NO ASUME responsabilidad legal alguna. El programador usa esta información
' bajo su propio riesgo y responsabilidad.
' **************************************************************************

'Agrega un parametro a la lista
Dim i As Integer
If Reset Then
    i = 0
    ReDim Parametros(i)
    Parametros(i) = NewParam
Else
    i = UBound(Parametros) + 1
   
    ReDim Preserve Parametros(i)
    Parametros(i) = NewParam
End If



End Function


Espero que les sirva.
Cualquier duda, me chiflan.
Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 14, 2012, 10:48:02 am
Me olvidé de algo.
Lo que sigue va en un módulo:
Código: [Seleccionar]
Option Explicit

Function SeteoFactura(PrinterOCX As PrinterFiscal) As Boolean
' **************************************************************************
' Propiedad intelectual EPSON ARGENTINA S.A.
' Programador: Gomez Guillermo
' Este software se entrega con fines didácticos y sin garantia alguna.
' EPSON NO ASUME responsabilidad legal alguna. El programador usa esta información
' bajo su propio riesgo y responsabilidad.
' **************************************************************************

'Ejemplo de seteo de Zona, Headers y Trailers para una factura
'TAMAÑO  : Form.continuo 12'' x 10''
'IMPRESOR: LX-300 Fiscal, FX-880 Fiscal

'PrinterOCX : es el objeto PrinterFiscal (OCX) a travez del cual
'             se accede a la impresora fiscal

Dim Continuar As Boolean

'** DEFINICION GENERAL DEL FORMULARIO

    '** Configura el tamaño de la hoja, calculando las líneas para 1/6 de pulgada y
    '** las columnas en 12 caracteres por pulgada
    Continuar = PrinterOCX.SetPaperSize(90, 72)

    '** Esta instruccion configura la estacion para la emision Facturas A por Main Sheet
    '** no se debe eliminar
    If Continuar Then
        Continuar = PrinterOCX.SetPreference("P", "D", "M", "F", "A", "N")
    End If
    '** Esta instruccion configura la estacion para la emision de documento no fiscal
    '** no debe eliminarse, si es necesario se puede modificar
    If Continuar Then
        Continuar = PrinterOCX.SetPreference("P", "P", "R", "S", "U", "90", "72")
    End If
'** DEFINICION DE ZONAS
    '
    '** ZONA(010) Letra Comprobante
    If Continuar Then
        Continuar = PrinterOCX.SetZone(10, 43, 4, 44, 4)
    End If
    '** ZONA(022) Logo
    If Continuar Then
        Continuar = PrinterOCX.SetZone(22, 1, 4, 40, 4)
    End If
    '** ZONA(024) Fantasía y Razon social
    If Continuar Then
        Continuar = PrinterOCX.SetZone(24, 1, 5, 40, 7)
    End If
    '** ZONA(026) Datos Vendedor
    If Continuar Then
        Continuar = PrinterOCX.SetZone(26, 1, 9, 40, 14)
    End If
    '** ZONA(034) Nro Factura y fecha
    If Continuar Then
        Continuar = PrinterOCX.SetZone(34, 49, 5, 87, 7)
    End If
    '** ZONA(036) Cuit e impuestos
    If Continuar Then
        Continuar = PrinterOCX.SetZone(36, 45, 9, 87, 14)
    End If
    '** ZONA(042) Datos del comprador
    If Continuar Then
        Continuar = PrinterOCX.SetZone(42, 1, 16, 40, 20)
    End If
    '** ZONA(044) IVA Comprador
    If Continuar Then
        Continuar = PrinterOCX.SetZone(44, 1, 21, 40, 22)
    End If
    '** ZONA(052) CUIT Comprador
    If Continuar Then
        Continuar = PrinterOCX.SetZone(52, 45, 16, 87, 20)
    End If
    '** ZONA(054) Nro remitos
    If Continuar Then
        Continuar = PrinterOCX.SetZone(54, 45, 21, 87, 22)
    End If
    '** ZONA(060) Zona de detalle de venta
    If Continuar Then
        Continuar = PrinterOCX.SetZone(60, 1, 23, 87, 42)
    End If
    '** ZONA(061) Cantidad Item
    If Continuar Then
        Continuar = PrinterOCX.SetZone(61, 1, 23, 12, 42)
    End If
    '** ZONA(062) Descripción Item
    If Continuar Then
        Continuar = PrinterOCX.SetZone(62, 14, 23, 34, 42)
    End If
    '** ZONA(063) Precio Unitario Item
    If Continuar Then
        Continuar = PrinterOCX.SetZone(63, 36, 23, 48, 42)
    End If
    '** ZONA(064) Tasa de IVA Item
    If Continuar Then
        Continuar = PrinterOCX.SetZone(64, 50, 23, 59, 42)
    End If
    '** ZONA(065) Tasa Ajuste Variable Item
    If Continuar Then
        Continuar = PrinterOCX.SetZone(65, 61, 23, 70, 42)
    End If
    '** ZONA(066) Precio total Item
    If Continuar Then
        Continuar = PrinterOCX.SetZone(66, 72, 23, 87, 42)
    End If
    '** Esta instruccion configura el offset que se usará para imprimir los subtotales
    '** debe ser menor o igual a las filas de la zona 60, por omisión se toma
    '** las filas de la zona 60
    If Continuar Then
        Continuar = PrinterOCX.SetPreference("P", "C", "O", "901", "0", "20")
    End If
    '** ZONA(070) Mensajes de advertencia fiscal
    If Continuar Then
        Continuar = PrinterOCX.SetZone(70, 1, 23, 87, 42)
    End If
    '** ZONA(081) Descripción Percepcion de IVA RI
    If Continuar Then
        Continuar = PrinterOCX.SetZone(81, 33, 23, 41, 49)
    End If
    '** ZONA(082) Monto Percepcion de IVA RI
    If Continuar Then
        Continuar = PrinterOCX.SetZone(82, 43, 23, 54, 49)
    End If
    '** ZONA(083) Tasa de acrecentamiento RNI
    If Continuar Then
        Continuar = PrinterOCX.SetZone(83, 33, 23, 41, 49)
    End If
    '** ZONA(084) Monto de acrecentamiento RNI
    If Continuar Then
        Continuar = PrinterOCX.SetZone(84, 43, 23, 54, 49)
    End If
    '** ZONA(085) Descr.otras percep.
    If Continuar Then
        Continuar = PrinterOCX.SetZone(85, 56, 23, 62, 49)
    End If
    '** ZONA(086) Monto otras percep.
    If Continuar Then
        Continuar = PrinterOCX.SetZone(86, 64, 23, 75, 49)
    End If
    '** ZONA(090) Zona de subtotal y cierre
    If Continuar Then
        Continuar = PrinterOCX.SetZone(90, 1, 23, 87, 49)
    End If
    '** ZONA(091) Conceptos no gravados
    If Continuar Then
        Continuar = PrinterOCX.SetZone(91, 1, 23, 10, 49)
    End If
    '** ZONA(092) Tasa de IVA
    If Continuar Then
        Continuar = PrinterOCX.SetZone(92, 12, 23, 17, 49)
    End If
    '** ZONA(093) Monto de IVA
    If Continuar Then
        Continuar = PrinterOCX.SetZone(93, 19, 23, 31, 49)
    End If
    '** ZONA(094) Percepciones de IVA
    If Continuar Then
        Continuar = PrinterOCX.SetZone(94, 33, 23, 54, 49)
    End If
    '** ZONA(095) Otras percepciones
    If Continuar Then
        Continuar = PrinterOCX.SetZone(95, 56, 23, 75, 49)
    End If
    '** ZONA(097) Subtotal
    If Continuar Then
        Continuar = PrinterOCX.SetZone(97, 77, 23, 87, 49)
    End If
    '** ZONA(100) Zona de total documento
    If Continuar Then
        Continuar = PrinterOCX.SetZone(100, 1, 50, 87, 50)
    End If
    '** ZONA(101) Título de Total documento
    If Continuar Then
        Continuar = PrinterOCX.SetZone(101, 1, 50, 55, 50)
    End If
    '** ZONA(102) Monto de Total documento
    If Continuar Then
        Continuar = PrinterOCX.SetZone(102, 56, 50, 87, 50)
    End If
    '** ZONA(110) Zona de detalle de pagos
    If Continuar Then
        Continuar = PrinterOCX.SetZone(110, 1, 51, 87, 55)
    End If
    '** ZONA(111) Descripción de Pagos
    If Continuar Then
        Continuar = PrinterOCX.SetZone(111, 1, 51, 39, 55)
    End If
    '** ZONA(112) Monto de Pagos
    If Continuar Then
        Continuar = PrinterOCX.SetZone(112, 41, 51, 87, 55)
    End If
    '** ZONA(120) Leyendas de Pie de Factura
    If Continuar Then
        Continuar = PrinterOCX.SetZone(120, 1, 56, 87, 58)
    End If
    '** ZONA(142) Logo Fiscal
    If Continuar Then
        Continuar = PrinterOCX.SetZone(142, 1, 59, 40, 63)
    End If
    '** ZONA(144) Original / Copia
    If Continuar Then
        Continuar = PrinterOCX.SetZone(144, 45, 59, 87, 63)
    End If
'** DEFINICION DE HEADERS y TRAILERS
    '
    '** HEADER/TRAILER (01) Nombre de Fantasía - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 1, Chr(127))
    End If
    '** HEADER/TRAILER (02) Nombre de Fantasía - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 2, Chr(127))
    End If
    '** HEADER/TRAILER (03) Nombre de Fantasía - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 3, Chr(127))
    End If
    '** HEADER/TRAILER (04) Nombre de Fantasía - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 4, Chr(127))
    End If
    '** HEADER/TRAILER (05) Nombre de Fantasía - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 5, Chr(127))
    End If
    '** HEADER/TRAILER (11) Leyenda de pie 11
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 11, "Gracias por su compra")
    End If
    '** HEADER/TRAILER (12) Leyenda de pie 12 - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 12, Chr(127))
    End If
    '** HEADER/TRAILER (13) Leyenda de pie 13 - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 13, Chr(127))
    End If
    '** HEADER/TRAILER (14) Leyenda de pie 14 - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 14, Chr(127))
    End If
    '** HEADER/TRAILER (50) Domicilio Comercial
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 50, "Dato fijo")
    End If
    '** HEADER/TRAILER (51) Domicilio Comercial
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 51, "Capital Federal")
    End If
    '** HEADER/TRAILER (52) Domicilio Comercial - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 52, Chr(127))
    End If
    '** HEADER/TRAILER (53) Domicilio Fiscal
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 53, "Belgrano 951")
    End If
    '** HEADER/TRAILER (54) Domicilio Fiscal
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 54, "Capital Federal")
    End If
    '** HEADER/TRAILER (55) Domicilio Fiscal - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 55, Chr(127))
    End If
    '** HEADER/TRAILER (57) Impuestos Vendedor
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 57, "Ingresos Brutos")
    End If
    '** HEADER/TRAILER (58) Impuestos Vendedor - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 58, Chr(127))
    End If
    '** HEADER/TRAILER (59) Impuestos Vendedor - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 59, Chr(127))
    End If
    '** HEADER/TRAILER (60) Impuestos Vendedor - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 60, Chr(127))
    End If
    '** HEADER/TRAILER (61) Impuestos Vendedor - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 61, Chr(127))
    End If
    '** HEADER/TRAILER (62) Fecha de inicio de actividades
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 62, "Inicio de actividades 01/01/2000")
    End If
    '** HEADER/TRAILER (63) Leyendas Comerciales - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 63, Chr(127))
    End If
    '** HEADER/TRAILER (64) Leyendas Comerciales - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 64, Chr(127))
    End If
    '** HEADER/TRAILER (65) Leyendas Comerciales - Vacio
    If Continuar Then
        Continuar = PrinterOCX.SetGetHeaderTrailer("S", 65, Chr(127))
    End If
   
SeteoFactura = Continuar

' **************************************************************************
' Este software se entrega con fines didácticos y sin garantia alguna.
' EPSON NO ASUME responsabilidad legal alguna. El programador usa esta información
' bajo su propio riesgo y responsabilidad.
' **************************************************************************

End Function

Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 14, 2012, 01:13:33 pm
Gracias Jeronimo, pero esa impresión es para la EPSON LX-300F, la cual imprime en formularios contínuos. En cambio, el modelo de impresora al que me refiero, es la TM-U220, cual código es casi o totalmente diferente y utiliza otro OCX, por tratarse de una "ticketeadora". El problema que tengo es el la impresión de "tiquet-factura".
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 14, 2012, 01:21:59 pm
Como te comenté en un post anterior, usé ese código con un controlador fiscal Epson TM-U220II. Funciona, por más que ahí diga que es para otra impresora. Lo que puede puede pasar es que tengas el OCX que es de más bajo nivel y por eso no funcione. El que va con este código es el IFEpson.OCX. Si es este el que tenés, no te dejes guiar por lo que dice el código en cuanto a las impresoras soportadas; probalo y después decime cómo te fue.
Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 14, 2012, 01:48:55 pm
Mmmmmmmmmm, voy a probarlo urgente y te comento como me fue, la verdad jamás se me había ocurrido, pero probemos..... Te comento luego los resultados. Gracias Jeronimo.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 14, 2012, 03:03:25 pm
Quedate tranquilo que seguro funciona (siempre que tengas el mismo OCX).
Contame las novedades.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 14, 2012, 05:37:29 pm
JERONIMO, genial!!!!!! perfecto! solo me falta "descifrar" ciertos parámetros que se envían. Gracias nuevamente! Cuando tenga algo sólido lo subo aquí al foro.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 14, 2012, 05:49:38 pm
Si tenés dudas para descifrar los parámetros, avisame; a lo mejor puedo clarificarte algo.
Me alegro por que haya funcionado.
Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: E N T E R en Septiembre 14, 2012, 06:18:03 pm
Comparti el code porfa Pedro, yo estoy muy interesado tambien en eso.

Saludos....
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 14, 2012, 06:35:50 pm
E N T E R: si tenés el OCX y ese ejemplo de código no vas a tener problema.
Hay un archivo que se llama "X Manual_Protocolo_Compatible_RevC.pdf" (no recuerdo de dónde lo saqué) en el que vienen bien detallados los procedimientos para cada operación, con los parámetros explicados. Incluso ahí se detallan las respuestas que envía el controlador en cada caso.

Título: Re:Epson Fiscal TM-U220
Publicado por: Albertomi en Septiembre 15, 2012, 03:10:22 pm
Hola a todos
 
Jeronimo, sera este el documento al que te refieres:
http://jpfbatch.sourceforge.net/Manual_Protocolo_Compatible_RevC_Epson_Fiscal_TNU-220AF.pdf (http://jpfbatch.sourceforge.net/Manual_Protocolo_Compatible_RevC_Epson_Fiscal_TNU-220AF.pdf)
 
NOTA: Si no va contra las normativas del foro pueden compartir los controles que mencionan. Gracias.
 
Saludos, desde algun lugar de Lima-Perú
Título: Re:Epson Fiscal TM-U220
Publicado por: Albertomi en Septiembre 15, 2012, 03:16:06 pm
En esta URL http://www.mmnt.net/db/0/0/ftp.epson.com/latin/drivers/Impresoras/FiscalEASA/ (http://www.mmnt.net/db/0/0/ftp.epson.com/latin/drivers/Impresoras/FiscalEASA/)
 
Encontraran más informacion, como:
- Demo
- Driver
- Manulaes
- Utilitarios
 
Saludos desde algún lugar de Lima-Perú
Título: Re:Epson Fiscal TM-U220
Publicado por: Albertomi en Septiembre 15, 2012, 03:45:20 pm
Desde el servidor FTP de EPSON
 
07/27/2005 12:00a.m.      1,259,516  ARGENTINA_FISCALPRINTER_DESARROLLO.pdf
11/04/2008 12:00a.m.      1,879,043  ARGENTINA_FISCALPRINTER_DESARROLLO_RevB_Hera.pdf
09/24/2010 12:00a.m.        959,061  ARGENTINA_FISCALPRINTER_DESARROLLO_RevD.pdf
07/27/2005 12:00a.m.        482,389  Manual Biprotocolo.pdf
09/24/2010 12:00a.m.        350,460  Manual_Protocolo_Compatible_220AFII_Hera_RevD.pdf
06/14/2006 12:00a.m.        344,193  Manual_Protocolo_Compatible_RevB.pdf
09/10/2009 12:00a.m.        829,625  Manual_Protocolo_Compatible_RevC.pdf
11/10/2008 12:00a.m.         69,460   Modificaciones Athena-Hera_RevB.pdf
09/24/2010 12:00a.m.      1,294,915 TM-U220A_Argentina_eng_spc_revA.pdf
09/24/2010 12:00a.m.        607,199  umTMU220AFII_RevA.pdf
07/27/2005 12:00a.m.        676,818  umTMU220AFrevA1104.pdf
 
ftp://ftp.epson.com/latin/drivers/Impresoras/FiscalEASA/Manual (ftp://ftp.epson.com/latin/drivers/Impresoras/FiscalEASA/Manual)
 
Saludos desde algun lugar de Lima-Peru
 
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 15, 2012, 04:55:54 pm
Jeronimo, sera este el documento al que te refieres:
http://jpfbatch.sourceforge.net/Manual_Protocolo_Compatible_RevC_Epson_Fiscal_TNU-220AF.pdf (http://jpfbatch.sourceforge.net/Manual_Protocolo_Compatible_RevC_Epson_Fiscal_TNU-220AF.pdf)
Sí, Albertomi, a ese mismo.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 15, 2012, 06:55:30 pm
Antes de comenzar a desglosar y consolidar algo, una consulta, para el caso de la NOTA DE CRÉDITO???
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 15, 2012, 07:10:13 pm
Ya lo encontré: para el caso de la NOTA DE CRÉDITO, el procedimiento es similiar al de "tique-factura", solo que reemplazando el valor T por el N, es decir:
Código: [Seleccionar]
IFiscal.OpenInvoice("[b]N[/b]"......)
Obviamente al cerrar el comprobante, se debe indicar también el parámetro N.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 15, 2012, 08:30:07 pm
Además de eso debés proporcionar el número de tique que dio lugar a la nota de crédito. Hasta donde sé, el controlador no valida el número, pero lo pide sin excepción.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 15, 2012, 08:43:01 pm
Pero donde habría que colocar ese parámetro????????
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 16, 2012, 08:28:59 pm
Es el campo número 17 (Remit1) que debés pasar cuando abrís el tipo de comprobante "nota de crédito" o "tique nota de crédito". El procedimiento está descripto en el punto 2.23.1 del documento que publicó Albertomi.

Ya lo encontré: para el caso de la NOTA DE CRÉDITO, el procedimiento es similiar al de "tique-factura", solo que reemplazando el valor T por el N, es decir:
Código: [Seleccionar]
IFiscal.OpenInvoice("[b]N[/b]"......)Obviamente al cerrar el comprobante, se debe indicar también el parámetro N.
Exactamente. Pero ojo que "N" es para "nota de crédito" y "M" es para "tique nota de crédito".
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Septiembre 17, 2012, 08:05:39 am
Si, tenés razón, es M. Pero estuve leyendo otros documentos de EPSON, y respecto a la Nota de Crédito, se refiere a que la memoria fiscal es de DÉBITO, no de crédito, como sería eso????
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 17, 2012, 08:23:10 am
Mirá, hasta donde sé, un comprobante (tique o tique-factura) puede cancelarse mientras no se haya impreso ningún pago. Una vez impreso algún pago, el comprobante se termina de emitir y no se puede cancelar. La manera de contrarrestarlo (por devolución de mercadería, por ejemplo) es con una nota de crédito (o tique nota de crédito).
Creo recordar (no estoy seguro) que la gente de Epson me dijo que el controlador no maneja notas de débito.
Fijate que el documento del que hablé en otros posts no dice nada acerca de notas de débito.
Título: Re:Epson Fiscal TM-U220
Publicado por: ssccaann43 en Septiembre 17, 2012, 04:52:17 pm
Buenas tardes perdon por lo tarde en responder... A ver explico un poco...

Todo documento de venta llamese FACTURA tiene la posibilidad de reversarse con un documento que emite la impresora fiscal llamese Nota de Credito.

Tienes 2 opciones, puedes ir imprimiendo por partes como lo hacen en un supermercado que imprimes  a medidas que vas cargando en el sistema, con esta opcion puedes anular un articulo solo indicando el comando correspondiente.

O puedes mandar a imprimir todo y realizas el reverso con una Nota de Credito. Recuerden que las notas de Creditos pueden ser TOTAL para anular toda la factura o Parcial para reversar ciertos articulos. En ambos casos los articulos deben regresar al Stock o inventario hasta que se emita otra factura que le de salida.

Los ocx o controles de usuarios que da la EPSON pueden modificarse totalmente y adaptarse para el uso propio, más sin embargo es recomendable solo realizar ajustes básicos.

Todos los ocx o controles de usuarios de la EPSON pueden usarse en cualquier modelo de la impresora fiscal sea 80 columnas o 40 columnas mientras las mismas sean EPSON.

Saludos,
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Septiembre 17, 2012, 05:08:59 pm
Los ocx o controles de usuarios que da la EPSON pueden modificarse totalmente y adaptarse para el uso propio, más sin embargo es recomendable solo realizar ajustes básicos.

Todos los ocx o controles de usuarios de la EPSON pueden usarse en cualquier modelo de la impresora fiscal sea 80 columnas o 40 columnas mientras las mismas sean EPSON.

Saludos,
Eso no lo sabía. Buen dato, ssccaann43. Gracias.
Título: Re:Epson Fiscal TM-U220
Publicado por: ssccaann43 en Septiembre 17, 2012, 05:29:13 pm
Hasta donde se en Argentina usan las HASAR y EPSON, no estoy seguro si ya les llego al mercado la gente de BEMATECH que sus impresoras fiscalizadas son rapidas y buenas, al menos aca en venezuela lo son... Otros duros de las impresoras fiscales son los de la (Okidata, Bixolon, Aclas)...

Estoy pendiente en preparar un ejemplo sencillo para imprimir Facturas, Notas de Creditos y Documentos no fiscales... A ver cuando saco un tiempo y me siento en eso...!


Desde la misma web de Epson se bajan los ocx y los ejemplos, están bien detallados, creo que todo lo que necesitan esta aquí... Este es el el listado para los de Argentina....  http://www.impresoras-fiscales.com.ar/argentina.html

Saludos a todos...
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Octubre 26, 2012, 03:46:16 pm
Buenas de vuelta a todos! Perdón por revivir nuevamente este post, pero pareciera ser que estas cuestiones de Impresoras Fiscales no terminan nunca!  En este caso, me da una "especie" de error, mas bien de fórmula, ya que en el caso del "TIQUE-FACTURA A", hay que pasar los precios de artículos SIN IVA, ES DECIR, solo la base imponible (BI), por ende, resto el importe de IVA y le paso ese valor a la impresora, pero resulta que la misma VUELVE A CALCULAR EL IVA SOBRE ESE PRECIO QUE SUPUESTAMENTE YA NO TIENE IVA. Alguien tiene idea del motivo de esto????

Saludos.

P/D: al finalizar esto, armaré un "mini" facturador y lo subiré. También estoy con una impresora HASAR (fiscal) por si a alguien le interesa.

Título: Re:Epson Fiscal TM-U220
Publicado por: E N T E R en Octubre 26, 2012, 03:59:23 pm
Si todo un tema es el tema de impresora fiscal, esperando por el facturador a ver como es
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Octubre 26, 2012, 04:02:15 pm
Me falta esa cuestión del IVA que acabo de mencionar y CREO (creo) que está listo.
Título: Re:Epson Fiscal TM-U220
Publicado por: YAcosta en Octubre 26, 2012, 04:22:21 pm
Buenas de vuelta a todos! Perdón por revivir nuevamente este post, pero pareciera ser que estas cuestiones de Impresoras Fiscales no terminan nunca!  En este caso, me da una "especie" de error, mas bien de fórmula, ya que en el caso del "TIQUE-FACTURA A", hay que pasar los precios de artículos SIN IVA, ES DECIR, solo la base imponible (BI), por ende, resto el importe de IVA y le paso ese valor a la impresora, pero resulta que la misma VUELVE A CALCULAR EL IVA SOBRE ESE PRECIO QUE SUPUESTAMENTE YA NO TIENE IVA. Alguien tiene idea del motivo de esto????

Saludos.

P/D: al finalizar esto, armaré un "mini" facturador y lo subiré. También estoy con una impresora HASAR (fiscal) por si a alguien le interesa.

Oye amigo?? nunca he usado esas impresoras llamdas Fiscales, las facturas y/o boletas de venta de por aqui las emitimos en las clasicas EPSON LX-300 y las impresoras pequeñas (que llamamos ticketeras) pues en ella no imprimimos documentos contables, no sabia que esas impresoras llamadas fiscales te generen el IVA ¿es asi o me estoy confundiendo?
¿Como es la nuez?

Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Octubre 26, 2012, 04:38:13 pm
Pues si querido Yvan, estas benditas impresoras poseen tanto una memoria, como la responsabilidad de efectuar dichos cálculos y demás yerbas! y como mencioné anteriormente, al enviar una línea de producto, se debe enviar DESCRIPCION, PRECIO UNITARIO y CANTIDAD, ah, y la TASA de IVA  a utilizarse. También tiene una peculiar característica (las de marca EPSON), NO RECIBEN PARÁMETROS NÚMERICOS, es decir, hay que convertir los montos y cantidades en STRING, previo multiplicarlos por 100 o 10000.
Título: Re:Epson Fiscal TM-U220
Publicado por: YAcosta en Octubre 26, 2012, 05:35:52 pm
Ok, buen dato Pedro, gracias.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Octubre 26, 2012, 10:10:17 pm
¡Hola!
En este orden es como yo paso los datos de un artículo en el caso del tique factura A en esa misma impresora:
DESCRIPCIÓN, 1000, 975, 2100, M, 0, 0, , , , 0, 0
Es un artículo que se está facturando en cantidad 1, con un precio de 9,75 más IVA del 21% (11,8 en total), sin impuestos internos y con una sola línea de descripción.
Cualquier otra cosa, chiflá.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Octubre 26, 2012, 10:17:03 pm
Agrego algo: vos pasás el precio sin IVA, pero si mal no recuerdo el controlador fiscal lo imprime con IVA y aclara cuánto hay de cada tipo de iva (21% y 10,5%) en el comprobante. Esto es porque al cobrar, por más que se emite un tique factura A se recibe el importe con IVA.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Octubre 27, 2012, 01:06:49 pm
Jeronimo, le pase el monto que le pase, le deduce el IVA y le suma en el total. Ahí está mi duda.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Octubre 27, 2012, 01:17:28 pm
¿Corroboraste que al abrir el comprobante se envíe la información inherente al tique factura A y no B?
¿Podés poner aquí el código con el que abrís el comprobante y el que contiene los datos del artículo que enviás?
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Octubre 27, 2012, 07:20:54 pm
Si si, está perfecto, imprime TIQUE-FACTURA A, pero el tema es la discriminación de IVA  nada mas:
Código: [Seleccionar]
PrecioUnit = .TextMatrix(i, 2):
                '' el precio que se envía es 100, con iva incluido
                PrecioSINiva = (PrecioUnit * (1 + (21 / 100))) 'imprime como precio unitario 121 a ese precio le saca el IVA (25.41)
                PU = CStr(CCur((PrecioSINiva)) * 100)
            If respuesta Then respuesta = IFepson.SendInvoiceItem(CStr(DESC), CStr(CANT), CStr(PU), "2100", "M", "0", "0", "", "", "", "1050", "0")

El asunto está es que si anteriormente le descuento a 100 el IVA, le deduce el IVA  nuevamente el iva a ese precio (79)
Título: Re:Epson Fiscal TM-U220
Publicado por: YAcosta en Octubre 27, 2012, 08:21:13 pm
No se si te sirva... pero precio sin iva no es con multiplicación sino con división... en esta parte pones:
Dices: '' el precio que se envía es 100, con iva incluido"

osea que a PrecioUnit le cargas con 100, luego haces:
PrecioSINiva = (PrecioUnit * (1 + (21 / 100))) 'imprime como precio unitario 121 a ese precio le saca el IVA (25.41)

Cuando la formula debiera ser:
PrecioSINiva = (PrecioUnit / (1 + (21 / 100))) 'imprime como precio unitario 121 a ese precio le saca el IVA (25.41)

Precio con Iva= 100
Precio sin Iva= 82.64

Cuando tu printer le cargue IVA al 82.64, obtendras 100 nuevamente ya que el IVA de 82.64 es 17.36
En lo personal me acuerdo de esto porque cuando nos dan un precio con IVA (IGV en Peru) y queremos saber su Base Imponible chapamos una calculadora y lo dividimos ese valor con 1.18 (en Peru el IGV es 18%)

Espero haber acertado. Saludos
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Octubre 27, 2012, 10:02:18 pm
Eso mismo iba a decir.
Otra cosa: ¿el artículo tiene impuestos internos y por eso enviás "1050" en el anteúltimo argumento?
Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Octubre 29, 2012, 06:45:39 am
JERONIMO: No tiene impuestos internos, el parámetro "1050" (Tasa de Acrecentamiento) lo dejé nada mas, ya que es ignorado actualmente por la impresora, pues hacía referencia cuando un Responsable Inscripto vende a un Responsable NO INSCRIPTO, y dicha categoría ya no existe (según RG1697 / ley 25865).
IVAN: GROSERO Y AVERGONZANTE error de mi parte, no se en que estaba pensando, y para colmo de males, no veía el error. Ya lo sé, soy un boludo a cuerdas, y ya me produje el correspondiente "autoflagelo", aunque se lo pedí a mi novia que lo ejecute ;)


La BASE IMPONIBLE se obtiene tal como lo definiste:

B.I.= P.V.P / (1 + (Tasa_IVA)) ' Asumiendo que la tasa ya está dividida sobre 100

Nota: P.V.P.: Precio de Venta al Público.

Cuando vuelva a mi casa, lo primero que haré será conectar la impresora fiscal e imprimir aproximadamente 100 facturas A para cerciorarme. Creo con eso estaría definida esa cuestión.

Gracias a todos por sus respuestas.
Título: Re:Epson Fiscal TM-U220
Publicado por: Jeronimo en Octubre 29, 2012, 10:49:43 am
Cuando vuelva a mi casa, lo primero que haré será conectar la impresora fiscal e imprimir aproximadamente 100 facturas A para cerciorarme. Creo con eso estaría definida esa cuestión...
Este post ya tiene más de un mes. Ojo porque el período de prueba de los controladores fiscales es de 30 días.
Saludos.
Título: Re:Epson Fiscal TM-U220
Publicado por: pedroesca en Octubre 29, 2012, 11:04:23 am
Si si! Esta ya es otra impresora, ya que la anterior la devolví justamente por ese motivo!
Título: Re:Epson Fiscal TM-U220
Publicado por: greinoso en Abril 01, 2016, 11:10:58 am
Hola gente! Interesante post... sólo que no consigo que me funcione la emisión de un Tique-Factura. Les comento mi problema:

Soy de Argentina y estoy desarrollando una aplicación en Visual Studio 2012 con C#. La misma consiste en un sistema de ventas de productos de un comercio, el cual debe permitir la emisión de comprobantes fiscales a través de una controladora fiscal EPSON TM-u220 AFII.

El detalle de una venta es registrado en la base de datos y se muestra a través de un DataGridView (grdDetalleVenta) presente en un formulario (frmDetalleVenta).

Al finalizar la carga del detalle de una determinada venta, la aplicación permite seleccionar el tipo de comprobante que se precisa emitir utilizando la controladora fiscal, a saber:

1. El vendedor puede elegir emitir un TIQUE (el cual consiste en una "Factura B" dirigido a algún "Consumidor Final")

2. El vendedor también podría elegir emitir un TIQUE FACTURA (el cual consiste en una "Factura A" dirigido a algún Responsable Inscripto).

En el proyecto he incorporado la referencia correspondiente del control IFEpson (EPSON_Impresora_Fiscal) y he arrastrado dicho control (de nombre axPrinterFiscal2) al formulario desde el cual deseo emitir los tique (tanto el "B" como el "A").

Ahora bien, para el primer caso, donde debo emitir un tique "B", no tengo inconvenientes en generar el comprobante de pago e imprimirlo desde la controladora Fiscal, para ello, el código utilizado es el siguiente:

                    if (Convert.ToInt16(cboTipoComprobante.SelectedValue) == 2) //TIQUE B
                    {
                        iva = "2100";
                        venta = "M";
                        bultos = "0";
                        ImpuestosInternos = "0";
                        printer = "P";
                        texto = "SUB";
                        pago = "Efectivo";
                        calculoMonto = Convert.ToDouble(txtTotal.Text);             //TextBox que tiene el Total de la Venta
                        calculoMonto = calculoMonto * 100;
                        monto = (calculoMonto).ToString();
                        descripcion = "T";
                        //Incorporo en el formulario un control IFEpson Fiscal, llamado "axPrinterFiscal2" (El cual esta disponible luego de agregar a mi proyecto el OCX Epson Fiscal)
                        axPrinterFiscal2.PortNumber = 3;  //Numero de Puerto al cual se encuentra conectado la controladora fiscal a mi PC
                        axPrinterFiscal2.BaudRate = "9600";
                        axPrinterFiscal2.OpenTicket(); //Abro un Tique, ya que el comprobante, para este caso, será del tipo "B"
                        //Recorro el DataGridView que contiene el detalle de la venta (Cantidad, Descripcion, Precio Unitario y Subtotal) para ir enviando los ítems de la venta al ticket (mediante la función axPrinterFiscal2.SendTicketItem)
                        for (int i = 0; i < grdDetalleVenta.Rows.Count; i++)
                        {
                            string sqlArticulo = "SELECT ISNULL(P.codigo + ' - ' + PE.nombre,'') FROM Producto P, Peso PE, DetalleVenta DV WHERE DV.idProducto=P.idProducto AND P.idPeso=PE.idPeso AND DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string articulo = producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlArticulo, "Error al conocer el nombre del Artículo");
                            string sqlCantidad = "SELECT ISNULL(DV.cantidad,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string cantidad = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlCantidad, "Error al conocer el nombre del Artículo")) * 1000).ToString();
                            string sqlPrecioUnitario = "SELECT ISNULL(DV.precioUnitario,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string precioUnitario = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlPrecioUnitario, "Error al conocer el precio unitario del Artículo")) * 100).ToString();
                            string sqlSubtotal = "SELECT ISNULL(DV.subtotal,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[ i ].Cells[0].Value);
                            string subtotal = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlSubtotal, "Error al conocer el subtotal del Detalle")) * 100).ToString();
                            axPrinterFiscal2.SendTicketItem(ref articulo, ref cantidad, ref precioUnitario, ref iva, ref venta, ref bultos, ref ImpuestosInternos);
                        }
                        //Una vez cargados todos los ítem que conforman la VENTA, agrego los subtotales del Tique y cierro el mismo
                        axPrinterFiscal2.GetTicketSubtotal(ref printer, ref texto);
                        axPrinterFiscal2.SendTicketPayment(ref pago, ref monto, ref descripcion);
                        axPrinterFiscal2.CloseTicket();
                    }
Para el segundo caso, donde debo emitir un tique factura "A", he intentado con el siguiente código, pero no consigo que la controladora imprima el tique factura:

                    //Declaro las variables que luego pasaré por referencia a las funciones de la Controladora Fiscal
                   
                        iva = "2100";
                        venta = "M";
                        bultos = "0";
                        ImpuestosInternos = "0";
                        printer = "P";
                        texto = "SUB";
                        pago = "PAGO";
                        calculoMonto = Convert.ToDouble(txtTotal.Text);
                        calculoMonto = calculoMonto * 100;
                        monto = (calculoMonto).ToString();
                        descripcion = "T";

                        string tipoDocumentoFiscal = "T";
                        string salidaImpresora = "C";
                        string letraFactura = "A";
                        string cantidadCopias = "1";
                        string tipoFormulario = "P";
                        string tipoLetra = "12";
                        string IVA_Emisor = "I";
                        string IVA_Comprador = "F";
                        string nombreCliente1 = nombreCliente; //Variable que contiene el nombre del cliente
                        string nombreCliente2 = razonSocialCliente; //Variable que contiene la razon social del cliente
                        string tipoDocumento = "CUIT";
                        string numeroDocumento = ClienteCUIT; //Variable que contiene el CUIT del cliente
                        string bienDeUso = "N";
                        string domicilioComprador1 = domicilioCliente; //Variable que contiene el Domicilio del cliente
                        string domicilioComprador2 = "";
                        string domicilioComprador3 = "";
                        string remito1 = "REM 1";
                        string remito2 = "REM 2";
                        string tipoTablaItem = "C";
                        axPrinterFiscal2.PortNumber = 2; //Nuevamente, el numero de puerto al cual se encuentra conectada la Controladora Fiscal
                        axPrinterFiscal2.BaudRate = "9600";

                        //Función que debería dar apertura a una factura A, la cual recibe los siguientes parámetros por referencia                       
                        axPrinterFiscal2.OpenInvoice(ref tipoDocumentoFiscal, ref salidaImpresora, ref letraFactura, ref cantidadCopias, ref tipoFormulario, ref tipoLetra, ref IVA_Emisor, ref IVA_Comprador, ref nombreCliente1, ref nombreCliente2, ref tipoDocumento, ref numeroDocumento, ref bienDeUso, ref domicilioComprador1, ref domicilioComprador2, ref domicilioComprador3, ref remito1, ref remito2, ref tipoTablaItem);
                        //LUEGO DE ESTA INSTRUCCIÓN NO HAY ACTIVDAD EN LA CONTROLADORA FISCAL

Alguna observación para hacerme y/o sugerencia acerca de cuál puede ser el error? O bien, alguna mejor forma de hacer lo que necesito? Entiendo que el numero de puerto indicado para la impresión del comprobante "A" es correcto, ya que utilizo el mismo para la impresión de los comprobantes "B", por lo que la comunicación con la Controladora Fiscal se realiza correctamente!
Desde ya, muchísimas gracias por su tiempo!!
Título: Re:Epson Fiscal TM-U220
Publicado por: victorjrp en Abril 19, 2016, 09:12:46 am
Hola Atodos !!!
Consulto si alguien me puede ayudar en: EPSON TM U220AFII 
Necesito generar notas de Debito y No puedo hacerlo, alguien me puede
indicar los comandos con las librerisas extendidas, en Epson el codigo ejemplo de Ticket Factura es
el siguiente
      '---------------------------
        ' Ticket-Factura
        '---------------------------
            'Open
            sCmd = Chr$(&HB) + Chr$(&H1)
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField(sCmd)
            ' sCmdExt = Chr$(&H0) + Chr$(&H0)
            ' NOTA DE DEBITO
            sCmdExt = Chr$(&H0) + Chr$(&H0)
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField(sCmdExt)
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("Nombre Comprador #1")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("Nombre Comprador #2")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("Domicilio Comprador #1")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("Domicilio Comprador #2")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("Domicilio Comprador #3")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("T")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("30614104712")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("I")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("L¡nea de Remitos #1")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("L¡nea de Remitos #2")
            If bAnswer Then bAnswer = Me.EpsonFP.AddDataField("")
            If bAnswer Then bAnswer = Me.EpsonFP.SendCommand
            Call FPDelay
            If Me.EpsonFP.ReturnCode <> 0 Then ShowMsg
   
pero no se como usarlo para Ticket Debito, aun con las Extensiones no me responde nada...
Gracias a todos y Saludos
 
Título: Re:Epson Fiscal TM-U220
Publicado por: greinoso en Abril 29, 2016, 02:47:17 pm
Hola Gente! Soy de Argentina y los contacto en busca de resolver un problema que se me presentó. Estoy desarrollando una aplicación en Visual Studio con C#. La misma permite la facturación de ventas de un determinado comercio implementando una controladora fiscal EPSON TM-U220 AFII. Dichos comprobantes de pago, pueden ser de dos tipos:
-Tique (o Comprobante B a algún consumidor final), o
-Tique-Factura (o Comprobante A a algún Responsable Inscripto)

La cuestión a tener en cuenta, es que los precios unitarios de cada artículo que comercializa el dueño del comercio YA TIENEN INCLUIDO EL IVA.
Suponiendo el siguiente ejemplo de una Venta Total de $75,00 debería poder obtener ambos comprobantes. Los cuales entiendo que tendrían que tener la siguiente forma:

1) COMPROBANTE B (o Tique)

---------------------------------------------------------------
Encabezado de Tique (Datos del Comercio)

A Consumidor Final
P:V: Nro.: 0001
Nro. T.                                            xxxxxxxx
Fecha xx/xx/xx                      Hora: xx:xx:xx

50,0000 x 1,5000
ARTICULO1                                        75,00

TOTAL                                    75,00
Su pago                                             75,00
Su vuelto                                             0,00
---------------------------------------------------------------






2) COMPROBANTE A (o Tique-Factura)


---------------------------------------------------------------
Encabezado de Tique-Factura (Datos del Comercio)

---------------------------------------------------------------
TIQUE FACTURA A                              Nro. T. xxxx-xxxxxxxx
                                                           Fecha xx/xx/xx
                                                           Hora: xx:xx:xx
---------------------------------------------------------------
Datos del Comprador
IVA Responsable Inscripto
---------------------------------------------------------------
Cant./Precio Unit. /
Descripcion
---------------------------------------------------------------
50.000x1.50
ARTICULO1                               (21.00)              75,00

NETO SIN IVA                                                      61,98                     

SUBTOT. IVA 21.00%                                          61,98                     
IVA  21.00%                                                        13,02                     

TOTAL de Ventas:                                        75,00

Suma de sus pagos                                             75,00
Su vuelto                                                               0,00
---------------------------------------------------------------

La pregunta es: ¿Cómo pasar los valores de la venta para obtener un Tique-Factura A como el mencionado en el ejemplo (recuerden que los articulos ya poseen el IVA incorporado en sus Precios Unitarios)?

Yo lo he intentado con el siguiente código:

Código: [Seleccionar]
 
            string iva = "2100";
            string venta = "M";
            string bultos = "0";
            string parametroVacio = "";
            string incremetoTasa = "1050";
            string ImpuestosInternos = "0";
            string printer = "P";
            string texto = "SUB";
            string pago = "PAGO";
            string articulo = "ARTICULO1";
            string cantidad = "50000";
            string precioUnitario = "150";
            axPrinterFiscal2.PortNumber = 1; //El numero de puerto al cual se encuentra conectada la Controladora Fiscal
            axPrinterFiscal2.BaudRate = "9600";

            axPrinterFiscal2.SendInvoiceItem(ref articulo, ref cantidad, ref precioUnitario, ref iva, ref venta, ref bultos, ref bultos, ref parametroVacio, ref parametroVacio, ref parametroVacio, ref incremetoTasa, ref ImpuestosInternos);
            axPrinterFiscal2.GetInvoiceSubtotal(ref printer);
            double divisor=1.21;
            calculoMonto = ((Convert.ToDouble(cantidad) / 1000) * (Convert.ToDouble(precioUnitario) / 100));
            double netoIVA = calculoMonto / divisor;

            string monto = netoIVA.ToString();
            axPrinterFiscal2.SendInvoicePayment(ref pago, ref monto, ref tipoDocumentoFiscal);
            axPrinterFiscal2.CloseInvoice(ref tipoDocumentoFiscal, ref letraFactura, ref parametroVacio);

pero observarán que no obtengo los resultados esperados, ya que :
 
(http://www.subirimagenes.com/otros-ejemotiquefactura-9573004.html)

ya que no me discrimina el valor del IVA al monto total de la venta, sino que lo suma a dicho monto, por lo que el TOTAL termina siendo otro, y no los $75,00 de la venta que propuse como ejemplo.
Desde ya, se agradece cualquier aporte!! Saludos.-
Título: Re:Epson Fiscal TM-U220
Publicado por: falken0001 en Diciembre 01, 2016, 02:17:45 pm
Hola, tengo problemas al enviar un ticket desde vb6, el comando que uso es el siguiente:
printerfiscal1.sendticketitem("text2","text3","text4","2100","M","0","0","0")
el error me dice que no es un valor declarado y me marca sendticketitem, pero cuando uso:
printerfiscal1.sendnofiscaltext("text2","text3","text4","2100","M","0","0","0") imprime sin ningun problema, obviamente que abro el ticket de la forma que corresponde dependiendo del caso, osea, printerfiscal1.openticket("G) para el ticket fiscal y printerfiscal1.opennofiscal para el otro caso. en que le estoy errando?
Título: Re:Epson Fiscal TM-U220
Publicado por: derman en Agosto 12, 2019, 04:41:25 pm
Buenos dias amigo,
estoy trabajando exactamente esta casuística con la componente OCX de Epson con una tickeadora fiscal Epson TM-U220.

El problema que tengo es que al enviar en un Ticket "A" en el metodo SendInvoiceItem un importe fijo de impuestos internos, la libreria OCX me arroja un error B640, que no puedo encontrar en ningun lado que significa. Si en el campo de impuestos internos fijo envio un cero, entonces se imprime normal el ticket pero no salen los impuestos iternos (sale CONCEPTOS NO GRAVADOS 0,00)

Como deben enviarse los impuestos internos fijos que ya tengo previamente calculado en la operacion que quiero imprimir??

Me podran dar una mano?


PrinterFiscal1.SendInvoiceItem("ARTICULO 1", "1000", "5000", "2100", "M", "2", "", "", "", "", "0", "3400")

Si en lugar de 3400 ($34,00) envio un 0, el ticket sale impreso, aunque sin impuestos internos.
Si lo envio tal como figura el codigo que puse arriba, la librería arroja un error B640 que no se que significa pero que hace abortar la operación (tengo que apagar y encender la impresora porque queda una operación inconclusa)


Desde ya muchas gracias!!

Diego
diego.roque@gmail.com