Publicado el 4 comentarios

Alinear y Centrar el texto del ticket con PadC, PadL y PadR

Alinear_centrar_texto_mybusinessposEn este ejemplo veremos cómo alinear el texto de un ticket con las funciones

  • PadL(cadenaTexto,Longitud). Rellena de espacios a la izquierda; Alineación a la Derecha
  • PadR(cadenaTexto,Longitud). Rellena de espacios a la derecha; Alineación a la Izquierda
  • PadC(cadenaTexto,Longitud). Rellena de espacios al centro; Alineación Centrado


Para lograrlo, crearemos tres funciones, aunque PadL ya viene por default, aquí la colocaremos.

Sub Main()
'La letra posterior a PAD es el lado que se rellenará de espacios
a = padL ("Frase de prueba",40) 'Relleno IZQUIERDO. Alinea a la derecha
b = PadC ("Frase de prueba",40) 'Ambos lados. Alinear al centro
c = PadR ("Frase de prueba",40) 'Relleno DERECHO. Alineación a la izquierda

mymessage "PadL: '" & a & "'" & vbcrlf & _
"PadC: '" & b & "'" & vbcrlf &_
"PadR: '" & c & "'"

End Sub

'PADL() Alineación a la DERECHA inserta los caracteres de relleno a la Izquierda
Function PadL(cadena,nLongitud)
dim clen
dim temp
dim char
char = " " 'espacio en blanco
on error resume next
'Tomamos la cadena enviada en el parámetro
'eliminando los chares vacios izq-dch
temp = trim(cadena)
clen = len(temp)
for n=1 to nLongitud
char = char & " "
Next

'Analizamos si la nLongitud justificada es menos
'que la propia cadena enviada en parámetro.
if clen < nLongitud then temp = mid(char,1,nLongitud - clen) & temp 'Alineación a la Derecha end if PadL = temp end function 'PADR() Alineación a la IZQUIERDA inserta los caracteres de relleno a la derecha Function PadR(cadena,nLongitud) dim clen dim temp char = " " 'espacio en blanco on error resume next 'Tomamos la cadena enviada en el parámetro 'eliminando los chares vacios izq-dch temp = trim(cadena) clen = len(temp) for n=1 to nLongitud char = char & " " Next 'Analizamos si la nLongitud justificada es menos 'que la propia cadena enviada en parámetro. if clen < nLongitud then temp = temp & mid(char,1,nLongitud - clen) 'Alineación a la Izquierda end if PadR = temp end function 'PADC() Alineación al CENTRO inserta los caracteres de relleno a ambos lados Function PadC(cadena,nLongitud) dim clen dim temp char = " " 'espacio en blanco 'on error resume next 'Tomamos la cadena enviada en el parámetro 'eliminando los chares vacios izq-dch temp = trim(cadena) clen = len(temp) for n = 1 to nLongitud char = char & " " Next 'Espacios al lado Izquierdo nEspaciosA = formato((nLongitud - clen)/2 , "#.0") DondeEstaElPunto = clAt( ".", nEspaciosA ) - 1 'Espacios al lado derecho nEspaciosA = mid(nEspaciosA,1,DondeEstaElPunto) nEspaciosB = nLongitud -clen - nEspaciosA 'Analizamos si la nLongitud justificada es menos 'que la propia cadena enviada en parámetro. if clen < nLongitud then temp = mid(char,1,nEspaciosA) & _ temp & _ mid(char,1,nEspaciosB) 'Alineación a la Izquierda end if PadC = temp end function

Espero sea de utilidad estas funciones que dejo a su disposición en espera de que correspondan con un pomo para seguir inspirados.
Saludos
José Félix

Publicado el 6 comentarios

Colocar descripcion con varias lineas en ticket

En este ejemplo vamos a colocar la descripcion de un producto en varias lineas.
Para aplicarlo, modificaremos el formato TICKET, el cual esta en Configuracion–Personalizacion–formatos del sistema–Ticket

'------------------------------
'asi quedara el resultado
CANT. DESCRIPCION IMPORTE
1.00 TORNILLO CUERDA 15.00
X, CABEZA PLANA
TIPO CRUZ 3/4 PULG
'-------------------------------

'--------------------------------------------------
'Al inicio del código, identificaremos esta linea de consulta
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 )

'Agregaremos el campo partvta.observ y quedaría así
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,partvta.observ FROM partvta INNER JOIN prods ON prods.articulo = partvta.articulo WHERE venta =" & rstEncabezado.fields("Venta"), Ambiente.Connection )
'--------------------------------------------------

'identificaremos esta linea, aproximadamente es la numero 142
'strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & cDescrip & cLineaNueva & " " & cImporte
'agregamos esta linea para que la descripcion sea corta y se complemente con los saltos de linea
strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & PadL( Mid( rstPartidas("observ"),1,16 ),16) & cImporte & cLineaNueva

'Si se necesita multiples lineas para la descripcion, colocar este bloque de codigo
if Len (rstPartidas("observ")) > 16 Then
strSalida = strSalida & " " & Mid( rstPartidas("observ"),17,16) & cLineaNueva
end if
if Len (rstPartidas("observ")) > 32 Then
strSalida = strSalida & " " & Mid( rstPartidas("observ"),33,16) & cLineaNueva
end if
'esta linea agrega la descripcion y los importes al ticket
cSalida = cSalida & strSalida & cLineaNueva

Publicado el 3 comentarios

Cómo alinear números en ticket

Una fuente apropiada para alinear números en el ticket es la Courier New

Para alinear a la derecha un texto o un número existe la función PadL con esta sintaxis:
PadL (número, cantidad_espacios, relleno)

cDescrip = PadL( Mid( rstPartidas(“Descrip”), 1, 15 ), 15 )

Publicado el Dejar un comentario

Cómo quitar espacios y líneas en ticket

Puede descargar de helpmybusinesspos.info el formato “ticket reducido”  y por lo que identifico solo sería necesario quitar a algunas partes el texto que hace los saltos de línea :

& cLineaNueva

Para colocar la línea punteadaidentifique la línea sonde dice


cSalida = cSalida & "CANT.  DESCRIP.  P.U. TOTAL" & cLineaNueva

Y le colocamos este código


cSalida = cSalida & "---------------------------" & cLineaNueva
cSalida = cSalida & "CANT.  DESCRIP.  P.U. TOTAL" & cLineaNueva 
cSalida = cSalida & "---------------------------" & cLineaNueva

Publicado el 11 comentarios

Colocar logo en ticket USB


La ruta donde encontramos el formato de ticket dentro del business manager es: Configuración–Presonalización–Formatos del sistema–Ticket USB
Trataremos de identificar la línea que dice IniciaDocumento y debajo de esta podemos colocar el logo


IniciaDocumento 'tratamos de identificar esta línea, indica el inicio de la impresión

'Ruta del logo: C:\archivos de programa\MyBusiness POS 2012\images\logo.jpg
'El logo debe tener extensión logo.jpg
' Los valores Col(0), Row(0), Col(3),Row(4) son las coordenadas inicio y el tamaño

Picture Ambiente.path & "\Images\logo.jpg", Col(0), Row(0), Col(3),Row(4)
'EstableceImpresora "Mi Impresora laser" 'esta linea permite elegir impresora USB destino
EstableceFuente "Courier New", 8 'Fuente que tendra el ticket USB
Say 0,0.2, cSalida 'Alineación del texto, en pulgadas. cSalida es el texto a imprimir

FinDocumento 'Termina la Impresión USB
'