Publicado el 6 comentarios

Formato de Tickets

' Mybusiness POS v. 2011
Sub Main()
Dim rstSeries

'Ambiente.Torreta.PortOpen = False
'Ambiente.Torreta.Settings = "9600,N,8,1"
'Ambiente.Torreta.RTSEnable = True
'Ambiente.Torreta.PortOpen = True
'Ambiente.Torreta.CommPort = 1
'Ambiente.Torreta.OutPut = "ABC"
'Eventos
'Ambiente.Torreta.PortOpen = False

'cLineaNueva = Chr(13)
cLineaNueva = Chr(13) & Chr(10)

'If MsgBox( "Desea imprimir el ticket", vbQuestion + vbYesNo + vbDefaultButton2 ) = vbNo Then ' en caso de que la impresión sea opcional, descomentamos las Tres líneas, quitando el apostrofe.
' Exit Sub
'End If

' Creamos el recordSet del encabezado de la venta
Set rstEncabezado = Rst("SELECT * FROM ventas WHERE venta = " & prn.Documento, Ambiente.Connection )

' Verificamos que la venta que se desea imprimir exista
if rstEncabezado.EOF Then
MsgBox "No existe la venta seleccionada",vbInformation
Exit Sub
end if

' Creamos el recordSet de las partidas que componen la venta
Set rstPartidas = Rst("SELECT partvta.prcantidad, partvta.iespecial, partvta.id_salida, partvta.kit, partvta.articulo, prods.precio1,prods.descrip, partvta.precio, partvta.cantidad, partvta.descuento, partvta.impuesto, partvta.preciobase, partvta.prdescrip, prods.serie FROM partvta INNER JOIN prods ON prods.articulo = partvta.articulo WHERE venta =" & rstEncabezado.fields("Venta"), Ambiente.Connection )

' Traemos todos los datos del cliente
Set rstCliente = Rst("SELECT * FROM clients WHERE cliente = '" & rstEncabezado.fields("Cliente") & "'", Ambiente.Connection )

' Traemos los datos de cobranza si es que existe
Set rstCobranza = Rst( "SELECT * FROM cobranza WHERE venta = " & rstEncabezado("venta"), Ambiente.Connection )

cSalida = ""

'Esto abre el cajon de dinero
if Ambiente.rstEstacion("Cajon") <> 0 Then
cSalida = cSalida & Chr(27) & Chr(112) & Chr(48) & Chr(20) & Chr(20)
cSalida = cSalida & Chr(7)
' Sansung de inyección
' cSalida = cSalida & Chr(27) & Chr(112) & Chr(48) & Chr(49)
end if

Set rstTextTicket = CreaRecordSet( "SELECT * FROM tickettext", Ambiente.Connection )

If rstTextTicket.EOF Then
cSalida = cSalida & "" & Ambiente.Empresa & cLineaNueva
cSalida = cSalida & "" & Trim( Ambiente.Direccion1 ) & cLineaNueva
cSalida = cSalida & "" & Trim( Ambiente.Direccion2 ) & cLineaNueva
cSalida = cSalida & "" & Trim( Ambiente.Telefonos ) & cLineaNueva
Else
'cSalida = cSalida & Replace(rstTextTicket("textheader"), Chr(10), "" )
cSalida = cSalida & rstTextTicket("textheader")
End If

'cSalida = cSalida & "" & Trim( rstEncabezado("Usuario") ) & " " & Trim( Ambiente.Estacion ) & " Ticket: " & rstEncabezado("No_referen") & cLineaNueva
cSalida = cSalida & Trim( rstEncabezado("caja") ) & " " & Trim( rstEncabezado("Usuario") ) & " Ticket: " & rstEncabezado("No_referen") & cLineaNueva

cSalida = cSalida & Formato( rstEncabezado("f_emision"),"dd-MM-yyyy" ) & " Hora: " & rstEncabezado("usuHora") & cLineaNueva

cDatos = "" & rstEncabezado("datos")

If clAt( ":", Trim(cDatos) ) = 1 Then
cSalida = cDatos & cLineaNueva
Else
cSalida = cSalida & Trim( rstCliente("cliente") ) & " " & Trim( rstCliente("Nombre") ) & cLineaNueva
cSalida = cSalida & Trim( rstCliente("calle") ) & " " & Trim( rstCliente("colonia") ) & Chr(13) & Chr(10)
End If

cSalida = cSalida & Ambiente.rstEstacion("leyendacomodin") & " " & rstEncabezado("comodin") & cLineaNueva
'cSalida = cSalida & "Vendedor: " & rstEncabezado("Vend") & cLineaNueva
'msgbox Ambiente.Var9
'cSalida = cSalida & Ambiente.Var9 & vbCrLf
'Ambiente.Var9 = ""

cSalida = cSalida & "CANT. DESCRIPCION CODIGO SUBTOTAL" & cLineaNueva

nImporteTotal = 0
nImpuesto = 0
nCantidadTotal = 0
nDescuentoTotal = 0
nImporteOrigen = 0

'PrintText cSalida

While Not rstPartidas.EOF

nPrecio = rstPartidas("Precio") * ( 1 - (rstPartidas("Descuento")/100) ) * (1 + ( rstPartidas("impuesto") / 100 ) )
nPrecioBase = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 ) ), 2)
nDescuento = (nPrecioBase - nPrecio) * rstPartidas("Cantidad")

If nPrecioBase > 0 Then
nDescPor = ( nPrecio / nPrecioBase ) * 100
Else
nDescPor = 0
End If

nDescuentoTotal = nDescuentoTotal + nDescuento
nImporte = nPrecio * rstPartidas("Cantidad")

nCantidad = PadL(Formato( rstPartidas("cantidad") / rstPartidas("prCantidad"), "##,##0" ),3)

cDescrip = PadR( Mid( rstPartidas("Descrip"), 1, 30 ), 30 )
nCantidadTotal = nCantidadTotal + ( rstPartidas("cantidad") / rstPartidas("prcantidad") )

nImporteTotal = nImporteTotal + nImporte
nImpuesto = nImpuesto + ( nImporteTotal * ( rstPartidas("impuesto") / 100 ) )

nPrecio = 0
nIEspecial = rstPartidas("Precio") * (Val2(rstPartidas("iespecial")) / 100)
nIVa = rstPartidas("Precio") * (rstPartidas("impuesto") / 100)
nPrecio = rstPartidas("Precio") + nIEspecial + nIVa

cPrecio = PadL(Trim(Formato( nPrecio, Ambiente.FDinero )),8)
cImporte = PadL(Trim(Formato( Round( nPrecio, 2) * rstPartidas("cantidad") * (1 - (rstPartidas("descuento") / 100)), Ambiente.FDinero )),8)
nPrecioOrigen = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 )),2) * rstPartidas("cantidad")
nImporteOrigen = nImporteOrigen + nPrecioOrigen

strSalida = PadL(Formato( nCantidad, "##,##0" ),2) & " " & Trim( rstPartidas("prdescrip") ) & " " & cDescrip & vbCrLf & " P/Pza. " & cPrecio & " " & rstPartidas("articulo") & " " & cImporte

'If rstPartidas("Precio1") > rstPartidas("Precio") Then
' nDescuentoPartida = ( rstPartidas("Precio1") - rstPartidas("Precio") ) * nCantidad
' strSalida = strSalida & " Descuento: " & Formato( nDescuentoPartida, "##,##0.00" ) & vbCrLf
'End If

cSalida = cSalida & strSalida & cLineaNueva

'If Not clEmpty( cNull( rstPartidas("prdescrip") ) ) Then
' cSalida = cSalida & Trim( rstPartidas("prdescrip") ) & vbCrLf
'End If

If rstPartidas("Kit") <> 0 Then
Set rstOpciones = CreaRecordSet( "SELECT partvtaopciones.articulo, prods.descrip FROM partvtaopciones INNER JOIN prods ON partvtaopciones.articulo = prods.articulo WHERE id_salida = " & rstPartidas("id_salida"), Ambiente.Connection )

While Not rstOpciones.EOF
cSalida = cSalida & "Opcion:" & rstOpciones("descrip") & Chr(13) & Chr(10)
rstOpciones.MoveNext
Wend
End If

If rstPartidas("serie") <> 0 Then

If rstEncabezado("ticket") <> 0 Then
Set rstSeries = CreaRecordSet( _
"SELECT * FROM series WHERE documento = 'TICKET' AND numeroDocumento = " & rstEncabezado( "no_referen" ) & " AND articulo = '" & rstPartidas("articulo") & "'", _
Ambiente.Connection )
Else
Set rstSeries = CreaRecordSet( _
"SELECT * FROM series WHERE documento = 'REMISION' AND numeroDocumento = " & rstEncabezado( "no_referen" ) & " AND articulo = '" & rstPartidas("articulo") & "'", _
Ambiente.Connection )
End If

While Not rstSeries.EOF

Serie = Trim( rstSeries("serie") )
Serie = PadL( Serie, 11 )
Serie = Mid( Serie, Len( Serie ) - 10 )

cSalida = cSalida & "SERIE: " & Serie & vbCrLf
rstSeries.MoveNext
Wend

End If

rstPartidas.MoveNext

Wend

'PrintText cSalida

cSalida = cSalida & cLineaNueva
cSalida = cSalida & cLineaNueva

'cSalida = cSalida & " Importe: " & PadL(Formato( Val2(rstEncabezado("importe")), Ambiente.FDinero ),10) & cLineaNueva
'cSalida = cSalida & " Impuesto: " & PadL(Formato( Val2(rstEncabezado("impuesto")), Ambiente.FDinero ),10) & cLineaNueva

'if Val2(rstEncabezado("iespecial")) > 0 Then
' cSalida = cSalida & " Impuesto 2%: " & PadL(Formato( Val2(rstEncabezado("iespecial")), Ambiente.FDinero ),10) & cLineaNueva
'end if

if nDescuentoTotal > 0 Then
'cSalida = cSalida & " Importe: " & PadL(Formato( nImporteOrigen, Ambiente.FDinero ),10) & cLineaNueva
'cSalida = cSalida & " Descuento: " & PadL(Formato( nDescuentoTotal, Ambiente.FDinero ),10) & cLineaNueva
end if

'cSalida = cSalida & " Importe: " & PadL(Formato( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")), Ambiente.FDinero ),10) & cLineaNueva
'cSalida = cSalida & " Redondeo: " & PadL(Formato( Val2(rstEncabezado("Redondeo")), Ambiente.FDinero ),10) & cLineaNueva
cSalida = cSalida & cLineaNueva
cSalida = cSalida & PadL(Formato( nCantidadTotal, "###,###" ),4) & " ----- TOTALES ---- " & PadL(Formato( (Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("redondeo"))), "$" & Ambiente.FDinero ),10) & cLineaNueva

nPagoTotal = Val2(rstEncabezado("Pago1")) + Val2(rstEncabezado("Pago2")) + Val2(rstEncabezado("Pago3"))

if rstEncabezado("Pago1") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto1") & " " & PadL(Formato( Val2(rstEncabezado("Pago1")), "$" & Ambiente.FDinero ),9) & cLineaNueva
end if

if rstEncabezado("Pago2") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto2") & " " & PadL(Formato( Val2(rstEncabezado("Pago2")), "$" & Ambiente.FDinero ),9) & cLineaNueva
end if

if rstEncabezado("Pago3") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto3") & " " & PadL(Formato( Val2(rstEncabezado("Pago3")), "$" & Ambiente.FDinero ),9) & cLineaNueva
end if

Eventos

If rstEncabezado("Comision") > 0 Then
cSalida = cSalida & " Comisión: " & PadL(Formato( Val2(rstEncabezado("comision")), "$" & Ambiente.FDinero ),10) & cLineaNueva
End If

nComision = rstEncabezado("comision")

if nPagoTotal < (Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("redondeo"))) Then cSalida = cSalida & " Credito: " & PadL(Formato( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("iespecial")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("redondeo")) - nPagoTotal, "$" & Ambiente.FDinero ),9) & cLineaNueva else cSalida = cSalida & " Cambio: " & PadL(Formato( nPagoTotal - nComision - Val2(rstEncabezado("impuesto")) - Val2(rstEncabezado("iespecial")) - Val2(rstEncabezado("importe")) - Val2(rstEncabezado("redondeo")), "$" & Ambiente.FDinero ),9) & cLineaNueva end if Set rstMoneda = CreaRecordSet( "SELECT * FROM monedas WHERE moneda = '" & Ucase(Trim(rstEncabezado("moneda"))) & "'", Ambiente.Connection ) cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & Letra( Round( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")), 2 ), Trim(rstMoneda("Descrip")), True,rstMoneda("Nombre") ) & cLineaNueva If rstTextTicket.EOF Then cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & "***** GRACIAS POR SU COMPRA *****" & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva cSalida = cSalida & cLineaNueva Else cSalida = cSalida & rstTextTicket("textend") End If ' Esto manda un corte de papel if Ambiente.rstEstacion("ticketcorte") <> 0 Then
cSalida = cSalida & Chr(27) & Chr(105)
end if

'EstableceImpresora "EPSON TM-U220D Receipt"
'IniciaDocumento
'EstableceFuente "Courier New",7.5
'Say 0,0, cSalida
'FinDocumento
'Exit Sub

If Ambiente.Tag = "HTML" Then

Ambiente.Tag = ""

cSalida = Replace( cSalida, cLineaNueva, "
" )
cSalida = "

" & cSalida & "
"
CreaHtml "", (cSalida)

Else
'MsgBox cSalida
Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla
' Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla ' si queremos que se imprima dos veces, descomentamos esta linea, solo quitamos el apostrofe al inicio
End If

End Sub

Publicado el 1 comentario

Cómo cambiar la fuente del ticket



Para poder modificar el tamaño de la fuente en el ticket de My Business POS, primero es necesario conocer cómo está conectada la impresora, así como la configuración de la estación de trabajo. 

Existen dos formas de modificar el texto de un ticket:

1. Para las impresoras configuradas por puerto LPT:
Se modifica un procedimiento llamado FORMATOTEXTO (En el Business Manager—Configuración—Personalización—Procedimientos y Rutinas del Usuario)
Ahí está un código como este:

Sub Main()
Dim p, s

On error resume next

Set p = ImpresoraDefault(Ambiente.rstEstacion("pticket"))

' p.ScaleMode = 7 ' Centimetros
'p.PaintPicture LoadPicture(Ambiente.Path & "\images\logo.jpg"), 0, 0, 3, 4
p.Font.Name = "Courier New"
p.Font.Size = 9
p.FontBold True

For n = 1 To 2
s = s & vbCrLf
Next

' pt (print text) imprime el texto indicado (impresora), (texto)
pt (p),(s)

pt (p),(Script.textToFormat)
p.EndDoc

End Sub

Lo que vamos a hacer es identificar p.Font.Name y p.Font.Size. Puede cambiarlo por una fuente legible y que a la vez se ajuste en el ticket. Se recomienda que utilice los tipos de letra Tahoma o Courier New debido a que estos utilizan caracteres con ancho estándar; sin embargo puede hacer pruebas con la fuente Arial.
Para GUARDAR los cambios, presione F2 o de clic en el botón Guardar.

2. Para impresoras configuradas por puerto USB:

Para este caso, es posible modificar el ticket en la parte final del formato TICKET (En el Business Manager—Configuración—Personalización—FORMATOS) y ubicamos el código, el cual está comentado:

'IniciaDocumento
'Say 0,0, cSalida
'FinDocumento
'Exit Sub

Lo descomentamos, agregamos la fuente y debe quedar de la siguiente manera:

IniciaDocumento
EstableceFuente "Courier New", 9
'FontBold True
Say 0,0, cSalida
FinDocumento
Exit Sub

Guardamos (F2) y hacemos la prueba
Para más información por favor visite http://helpmybusinesspos.info/errores-de-mybusiness-pos/como-elegir-la-miniprinter-mas-apropiada-para-su-negocio/ 

Publicado el 3 comentarios

Cómo solucionar el Error de decimales y Reportes en Blanco?

wpid-12921860_959637817437617_1017869236_o.png.jpg

A varios usuarios les ha sucedido que no pueden visualizar los reportes de manera correcta; solo se alcanza a visualizar un poco que se está cargando el reporte, pero al momento de mostrarlo se queda casi en blanco toda la ventana.

La solución que les comparto en esta ocasión tal vez suena muy simple,  sin embargo, estoy seguro que a más de uno le va a ser útil.

Debe configurar su equipo al idioma Español (México).

Esto se logra siguiendo la ruta INICIO — PANEL DE CONTROL — CONFIGURACION REGIONAL Y DE IDIOMA.

Ahí Seleccionamos el idioma Español de México  y también se recomienda la ubicación México.

Esto además soluciona el problema de que los aprecios de los artículos se ven en miles o millones de pesos (cuando en realidad su valor es unos pesos y algunos centavos).

Este tip también soluciona el problema de los decimales con coma (1,500) y muestra los decimales con el punto decimal(1.5) como lo conocemos en México.

Espero haber aportado algo para todos los visitantes del blog. cualquier duda contactarme a jofelchez@gmail.com

Publicado el Dejar un comentario

Código Zebra 2844 y MyBusiness POS 2011

Puedes copiar este código y pegarlo en tu editor de mybusinesspos

' El siguiente procedimiento imprime las etiquetas de cada uno de los articulos
Public Sub Main ()

Set rstPartidas = CreaRecordSet( "SELECT articulo, descrip, etiquetas, precio1, precio2, precio10 FROM prods WHERE etiquetas > 0", Ambiente.Connection )

While Not rstPartidas.EOF

For i = 1 to rstPartidas("etiquetas")
ImprimeEtiqueta "LPT1", rstPartidas("articulo"), "",rstPartidas("descrip") , Formato(rstPartidas("precio1"), "##,##0.00" ), Formato(rstPartidas("precio2"), "##,##0.00" ), Formato(rstPartidas("precio10"), "##,##0.00" )
Next

rstPartidas.MoveNext

Wend

Set rstPartidas = CreaRecordSet( "SELECT clavesadd.clave, prods.descrip, clavesadd.etiquetas, prods.precio1, prods.precio2, prods.precio10 FROM clavesadd INNER JOIN prods ON clavesadd.articulo = prods.articulo WHERE clavesadd.etiquetas > 0", Ambiente.Connection )

While Not rstPartidas.EOF

For i = 1 to rstPartidas("etiquetas")
ImprimeEtiqueta "LPT1", rstPartidas("clave"), "",rstPartidas("descrip") , Formato(rstPartidas("precio1"), "##,##0.00" ), Formato(rstPartidas("precio2"), "##,##0.00" ), Formato(rstPartidas("precio10"), "##,##0.00" )
Next

rstPartidas.MoveNext

Wend

End sub

Public Sub ImprimeEtiqueta( cPuerto, cArticulo, cDato1, cDescrip, cPrecioDeLista, cMayoreo, cSugerido )

cPuerto = Trim( cPuerto )
cArticulo = Trim( cArticulo )
cDescrip = Trim( cDescrip )
cDato1 = Trim( cDato1 )

cSalida = ""

' Aqui se puede modificar la etiqueta utiliza un lenguaje llamado EPL2 le adjunto manual del
' lenguaje, tambien si tienen la información del formato de la etiqueta y quieren que la
' diseñe por favor mandemelo
' Aqui se muestran los comandos basicos
' El comando N inicia la etiqueta
' El comando A muestra un dato de texto en donde el 250 es la posición en el eje de las X
' y el 15 la posición en el eje de las Y
' El comando B muestra el código de barras donde 250 es la posición en el eje de las X y 45
' Es la posición de inicio del eje de las Y
' El comando P Finaliza la etiqueta y el nunero 1 indica cuantas etiquetas se van a imprimir

cSalida = cSalida & "N" & Chr(13) & Chr(10)
cSalida = cSalida & "A250,15,0,1,1,1,N," & Chr(34) & Formato( Date, "dd-MM-yyyy" ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "A250,30,0,2,1,1,N," & Chr(34) & Mid( cDescrip,1, 30)& Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "B250,70,0,1,2,6,80,B," & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "A380,155,0,4,1,1,N," & Chr(34) & "PRECIO $" & cPrecioDeLista & Chr(34) & Chr(13) & Chr(10)
'cSalida = cSalida & "A250,95,0,2,1,1,N," & Chr(34) & cMayoreo & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "P1" & Chr(13) & Chr(10)

if Ambiente.rstEstacion("ietiquetas") <> 0 Then
if clAt( "LPT", Ambiente.rstEstacion("ietiquetaspuerto") ) > 0 Then
Out Trim(Ambiente.rstEstacion("ietiquetaspuerto")), cSalida
else
if Ambiente.ImpresoraDeEtiquetas.PortOpen Then
Ambiente.ImpresoraDeEtiquetas.Output = cSalida
end if
end if
end if

Dormir 100
Eventos

End Sub

Hardware

Muchos de los compañeros distribuidores se han enfrentado con serios problemas relacionados con la impresión de tickets y que, demasiado tarde, se dan cuenta de que la impresora que han comprado no es la más apropiada para el Usuario Final.

Antes que nada, vale la pena mencionar los tipos de impresoras de tickets que existen en el mercado.

  • Impresora Térmica. Esta imprime en un papel especial y a gran velocidad. Funciona con un pequeño fusor que genera un poco de calor y con eso es suficiente para obtener un ticket de excelente calidad.
    Ventajas: Alta velocidad, Imprime imágenes, Diferentes Fuentes y tamaños de letra. Es ideal para negocios donde necesitas expedir  varios tickets al día.
    Desventajas: Papel caro(aprox $15.00 el rollo de 2 m). Costo elevado de la miniprinter, No imprime duplicados de ticket.
  • Impresora de Matriz. Esta impresora funciona con una cinta con tinta que, mediante golpes, va creando los caracteres del ticket.
    Ventajas: Es barato el papel, la impresora es un poco más barata que la térmica. Ideal para los negocios que necesitan duplicado de ticket.
    Desventajas: Necesita cinta para imprimir. La velocidad de impresión es baja.

Otra característica a considerar es la forma en que la iniprinter se conecta al equipo:

  • LPT. Es recomendable cuando solo va a tener una estacion de trabajo en su negocio. Es recomendable si se va a conectar un cajón de dinero o si su impresora tiene cortadora de papel.
  • USB.Es recomendable cuando va a compartir su MiniPrinter en red y varias terminales imprimirán en esta. Es necesario que se especifique en Windows como impresora predeterminada. Este tipo de conexion necesita del driver de la impresora para que la impresion sea correcta. también puede funcionar agregando una impresora Generic Text Only de Windows.
  • COM. Este tipo de conector ya es muy raro, no es tan recomendable utilizarlo.
  • Convertidor USB a LPT: No lo recomiendo, De cada 10 instalaciones, tal vez solo tres le van a funcionar.

Con respecto a la marca de miniprinter, la que he utilizado mucho son las Bixolon de Matriz y OKI POS 407 térmica. ambas funcionan muy bien con el driver apropiado. También están las Epson; sin embargo es difícil conseguir los drivers apropiados y eso genera conflictos en la impresión.

Bueno espero que les sean de utilidad estos pequeños tips.

Algunas MiniPrinters las pueden conseguir a un excelente precio en Mercado Libre.