En esta publicación se considera que la importancia de conocer cada parte del código que forma el ticket, ya que es necesario para hacer modificaciones. Además, es necesario tener conocimientos básicos de programación. En caso de que no cuente con ello, no se preocupe, podemos ofrecerle una solución que no requiere programación: el Editor de ticket. Este editor tiene un costo de un pomo de 700 pesos.
Ticket deposito pdf
Editor de Tickets, impresión y ahorrar papel
Ticket Explicado
Codigo de ticket explicado
'****************************************************************************************
'Visite http://helpmybusinesspos.info e inviteme un Pomo *
'2011_09_30 jose felix jofelchez@gmail.com. Invita un Pomo para poder subir más tips *
'vamos a configurar el ticket para que se imprima mas pequeño *
'Además se explica cada ina de las líneas de códogo. *
'****************************************************************************************
'los comentarios son de color verde. Los comentarios para esta explicación se encuentran en la parte derecha.
'para descomentar una linea, solo basta con quitar el apostrofo ql inicio de este.
Sub Main() 'iniciar el procedimiento. Main es el bloque principal del programa
Dim rstSeries 'declarar la variable rstSeries, la cual puede ser necesaria para el manejo de series (como en el caso del giro de telefonía)
Dim nDescuento 'declarar la variable nDescuento
'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) ' definir cLineaNueva, es un salto de línea, el cual se usará mas adelante
'If MsgBox( "Desea imprimir el ticket", vbQuestion + vbYesNo + vbDefaultButton2 ) = vbNo Then
' Exit Sub
'End If 'en caso de que solo necesite imprimir algunos tickets, no todos, tendria que descomentar este bloquecito
' Creamos el recordSet del encabezado de la venta ' el recordset "Rst(consulta, Ambiente.Connection)" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstEncabezado". aqui va la Fecha, Observaciones generales, ID del Cliente, Importes Totales, Folio, Vendedor
Set rstEncabezado = Rst("SELECT * FROM ventas WHERE venta = " & prn.Documento, Ambiente.Connection ) '"prn.Documento" es el número de venta actual del Punto de Venta. ", Ambiente.Connection" es la conexion (a base de datos) en la que esta trabajando el sistema en este momento.
' Verificamos que la venta que se desea imprimir exista
if rstEncabezado.EOF Then 'en caso de que la consulta anterior no tenga datos se enviaría un mensaje de error
MsgBox "No existe la venta seleccionada",vbInformation
Exit Sub 'con "Exit Sub" terminamos el proceso y no se imprimirá nada. en este caso, se "mata" el proceso Sub Main(), porque estemos dentro de este.
end if 'Termina la condición den caso de que no arrojara datos el Rst()
' Creamos el recordSet de las partidas que componen la venta '' el recordset "Rst()" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstPartidas". Aqui van los articulos, precio, IVA, Descuentos,
'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 )
Set rstPartidas = Rst("SELECT partvta.prcantidad, partvta.iespecial, partvta.id_salida, partvta.kit, partvta.articulo, prods.precio1, partvta.observ, 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 'el recordset "Rst()" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstCliente". Aqui va el nombre del cliente, RFC, Direcciones, Descuentos, puntos acumulados
Set rstCliente = Rst("SELECT * FROM clients WHERE cliente = '" & rstEncabezado.fields("Cliente") & "'", Ambiente.Connection ) 'la condición de la consulta es que el cliente sea igual al del listado que se extrajo en la busqueda del encabezado del ticket "rstEncabezado.fields("Cliente")"
' Traemos los datos de cobranza si es que existe 'el recordset "Rst()" es la lista de datos que nos interesan (con condiciones) de una determinada tabla y se guardan en la variable "rstCobranza". Aqui van los articulos, precio, IVA, Descuentos,
Set rstCobranza = Rst( "SELECT * FROM cobranza WHERE venta = " & rstEncabezado("venta"), Ambiente.Connection )
cSalida = "" '"cSalida" es la variable que almacena todo el texto que se imprimirá. en este caso "cSalida" se prepara en blanco. es importane ver en las siguientes líneas cómo es que se va alimentando esta variable "cSalida"
'Esto abre el cajon de dinero
if Ambiente.rstEstacion("Cajon") <> 0 Then '"Ambiente.rstEstacion("Cajon")" es el valor de la ESTACION01, cuando se habilita (valor 1) el cajon de dinero en la pertaña de Impresora de Tickets, entonces entra en este bloque de código
cSalida = cSalida & Chr(27) & Chr(112) & Chr(48) & Chr(20) & Chr(20) '"Chr(27) & Chr(112) & Chr(48) & Chr(20) & Chr(20) & Chr(7)" es el código para abrir el cajon de dinero. este funciona solo con impresoras conectadas via LPT. en ocasiones varia este código dependiendo de la marca y modelo de impresora. Consulte el manual avanzado de su impresora para abrir el cajón.
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 ) '"CreaRecordSet()" consulta si el usuario colocó algun mensaje en el encabezado y pie del ticket a traves de la utileria "editar texto del ticket" y lo almacena en "rstTextTicket"
If rstTextTicket.EOF Then 'en caso de que el usuario haya dejado vacio el encabezado y pie de ticket (rstTextTicket Nulo), entrar al bloque para colocar los datos de la Empresa que se colocan con la Configuración "Datos Generales de la Empresa"
cSalida = cSalida & "" & Ambiente.Empresa & cLineaNueva '"Ambiente.Empresa" es el nombre de la Empresa que se coloca con la Configuración "Datos Generales de la Empresa". "cLineaNueva" es un salto de linea en el ticket. en caso de que necesitara un salto mas solo basta agregar " & cLineaNueva" al final de esta liea
cSalida = cSalida & "" & Trim( Ambiente.Direccion1 ) & cLineaNueva ''"Trim( Ambiente.Direccion1 )" es la dirección que se encuentra en la primera linea, que se coloca con la Configuración "Datos Generales de la Empresa". la función "Trim()" elimina los espacios en blanco antes y al final de la dirección1
cSalida = cSalida & "" & Trim( Ambiente.Direccion2 ) & cLineaNueva ''"Trim( Ambiente.Direccion2 )" es la dirección que se encuentra en la segunda linea, que se coloca con la Configuración "Datos Generales de la Empresa". la función "Trim()" elimina los espacios en blanco antes y al final de la dirección2
cSalida = cSalida & "" & Trim( Ambiente.Telefonos ) & cLineaNueva ''"Trim( Ambiente.telefonos )" es el espacio para mostrar algun dato adicional que se coloca con la Configuración "Datos Generales de la Empresa". la función "Trim()" elimina los espacios en blanco antes y al final de la dirección1
Else
cSalida = cSalida & rstTextTicket("textheader") 'en caso de que el usuario haya colocado algun dato en el encabezado y pie de ticket, tomamos el Encabezado de este "rstTextTicket("textheader")" y lo agregamos a la variable "cSalida" con "cSalida = cSalida & "
End If
cSalida = cSalida & Trim( rstEncabezado("caja") ) & " " & Trim( rstEncabezado("Usuario") ) & " Ticket: " & rstEncabezado("No_referen") & cLineaNueva 'Agregamos los datos de la Caja "Trim( rstEncabezado("caja") )" , el usuario que atiende la Venta "Trim( rstEncabezado("Usuario") )" y el Folio del Ticket "rstEncabezado("No_referen")"
cSalida = cSalida & Formato( rstEncabezado("f_emision"),"dd-MM-yyyy" ) & " Hora: " & rstEncabezado("usuHora") & cLineaNueva 'Agregamos la fecha "Formato( rstEncabezado("f_emision"),"dd-MM-yyyy" )" y hora "rstEncabezado("usuHora")" de la Venta.
cDatos = "" & rstEncabezado("datos") '"rstEncabezado("datos")" es el nombre del cliente. en caso de que sea cliente general, aparecerá como "Cliente de Mostrador". el valor se agrega en la veriable "cDatos"
If clAt( ":", Trim(cDatos) ) = 1 Then 'condición especial. en caso de que en el nombre del cliente se encontraran unos puntos, haria un salto de linea y se almacena el valor en la variable "cSalida"
cSalida = cDatos & cLineaNueva
Else 'en caso contrario...
cSalida = cSalida & Trim( rstCliente("cliente") ) & " " & Trim( rstCliente("Nombre") ) & cLineaNueva '"Trim( rstCliente("cliente") )" es el ID del Cliente, "Trim( rstCliente("Nombre") )" es el Nombre del Cliente y se agrega a la variable "cSalida"
cSalida = cSalida & Trim( rstCliente("calle") ) & " " & Trim( rstCliente("colonia") ) & Chr(13) & Chr(10) '"Trim( rstCliente("calle") ) & " " & Trim( rstCliente("colonia") )" es la dirección del cliente. este valor se agrega a la variable "cSalida"
End If
'cSalida = cSalida & Ambiente.rstEstacion("leyendacomodin") & " " & rstEncabezado("comodin") & cLineaNueva 'Ambiente.rstEstacion("leyendacomodin") & " " & rstEncabezado("comodin") es por si deseamos un dato adicional a la venta, el cual se configura en la ESTACION01 como leyenda comodin
'cSalida = cSalida & "Vendedor: " & rstEncabezado("Vend") & cLineaNueva 'Clave del Vendedor "rstEncabezado("Vend")"
'cSalida = cSalida & Ambiente.Var9 & vbCrLf
'Ambiente.Var9 = ""
cSalida = cSalida & "CANT. DESCRIPCION IMPORTE" & cLineaNueva 'Cabecera de los articulos del ticket
nImporteTotal = 0 'Inicializamos las variables. "nImporteTotal" es el Importe Acumulado
nImpuesto = 0 '"nImpuesto" es el impuesto Acumulado
nCantidadTotal = 0 '"nCantidadTotal" es la cantidad total acumulada
nDescuentoTotal = 0 '"nDescuentoTotal" es El descuento Acumulado, en caso de que hubiese
nImporteOrigen = 0
'PrintText cSalida
While Not rstPartidas.EOF 'Mientras haya Partidas en la venta... Este ciclo se repite hasta que llega al final de la lista de artículos que incluye una Venta.
nPrecio = rstPartidas("Precio") * ( 1 - (rstPartidas("Descuento")/100) ) * (1 + ( rstPartidas("impuesto") / 100 ) ) 'Calcular el Precio Neto (quita descuentos al artículo y agrega impuesto) y se almacena en "nPrecio"
nPrecioBase = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 ) ), 2) 'considera el pecio Base (si hubiese) y lo guarda en "nPrecioBase"
nDescuento = (nPrecioBase - nPrecio) * rstPartidas("Cantidad") 'Aplica descuento al precio base, si hubiese y se guarda en "nDescuento"
If nPrecioBase > 0 Then 'en caso de que el precio base fuese mayor que 0, entra al bloque para aplicar un descuento al precio Base (este no es el Precio1, es diferente)
nDescPor = ( nPrecio / nPrecioBase ) * 100
Else
nDescPor = 0
End If
nDescuentoTotal = nDescuentoTotal + nDescuento '"nDescuentoTotal" va acumulando los descuentos
nImporte = nPrecio * rstPartidas("Cantidad") '"nImporte" es el importe del artículo (cantidad X Precio Unitario)
' nDescuento = Formato(rstPartidas("Descuento"))
'nCantidad = PadL(Formato( rstPartidas("cantidad") / rstPartidas("prCantidad"), "##,##0" ),3)
nCantidad = PadL(Formato( rstPartidas("cantidad") / rstPartidas("prCantidad"), "##,##0.00" ),3) '"nCantidad" es la canttdad dividida entre las unidades consideradas en la Presentación "rstPartidas("prCantidad")"
'cDescrip = PadL( Mid( rstPartidas("Descrip"), 1, 20 ), 20 ) '"cDescrip" es la descripción del artículo. en este caso, "PadL( Mid( rstPartidas("Descrip"), 1, 15 ), 15 )" quiere decir que va a considerar la descripción desde la linea 1 hasta la 20, ademas de que lo alineará a la derecha 20 letras.
cDescrip = PadL( Mid( rstPartidas("observ"), 1, 20 ), 20 ) '"cDescrip" es la descripción del artículo. en este caso, "PadL( Mid( rstPartidas("observ"), 1, 15 ), 15 )" quiere decir que va a considerar la descripción desde la linea 1 hasta la 20, ademas de que lo alineará a la derecha 20 letras.
nCantidadTotal = nCantidadTotal + ( rstPartidas("cantidad") / rstPartidas("prcantidad") ) '"nCantidadTotal" acumula la cantidad vendida entre las unidades de la presentación, si hubiese.
nImporteTotal = nImporteTotal + nImporte
nImpuesto = nImpuesto + ( nImporteTotal * ( rstPartidas("impuesto") / 100 ) )
nPrecio = 0 'este bloque es para manejar algun precio con Impuesto especial (como sucede en los cigarros o en las comunicaciones)
nIEspecial = rstPartidas("Precio") * (Val2(rstPartidas("iespecial")) / 100)
nIVa = rstPartidas("Precio") * (rstPartidas("impuesto") / 100)
nPrecio = rstPartidas("Precio") + nIEspecial + nIVa 'Suma el precio1, el Impuesto especial y el IVA. se guarda en "nPrecio"
Set rstArticulo = CreaRecordSet( "SELECT precio5 FROM prods WHERE articulo = '" & rstPartidas("articulo") & "'", Ambiente.Connection ) 'esto lo podemos omitir. es por si deseamos usar un precio especial
'cPrecio5 = PadL(Trim(Formato( rstArticulo("Precio5") + nIEspecial + nIVa, Ambiente.FDinero )),6)
cPrecio5 = PadL(Trim(Formato( nIVa, Ambiente.FDinero )),6) ' ESTE ES UN PRECIO ESPECIAL..POR SI SE LLEGASE A NECESITAR.
cPrecio = PadL(Trim(Formato( nPrecio, Ambiente.FDinero )),8) 'Este es el precio DEL ARTÍCULO que se IMPRIMIRÁ de cada Artículo. Se le da formato al Precio y se guarda en "cPrecio"
cImporte = PadL(Trim(Formato( Round( nPrecio, 2) * rstPartidas("cantidad") * (1 - (rstPartidas("descuento") / 100)), Ambiente.FDinero )),10) 'este es el Importe que se Imprimirá de cada Artículo, se almacena en "cImporte"
nPrecioOrigen = Round( rstPartidas("PrecioBase") * (1 + ( rstPartidas("impuesto") / 100 )),2) * rstPartidas("cantidad")
nImporteOrigen = nImporteOrigen + nPrecioOrigen
'strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & cDescrip & cLineaNueva & cPrecio & " " & cPrecio5 & " " & cImporte
'strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & cDescrip & cLineaNueva & cPrecio & " " & cImporte
'strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & cDescrip & cLineaNueva & " " & cImporte
strSalida = PadL(Formato( nCantidad, "##,##0.00" ),3) & " " & PadL( Mid( rstPartidas("observ"),1,16 ),16) & cImporte & cLineaNueva
'If rstPartidas("Precio1") > rstPartidas("Precio") Then
' nDescuentoPartida = ( rstPartidas("Precio1") - rstPartidas("Precio") ) * nCantidad
' strSalida = strSalida & " Descuento: " & Formato( nDescuentoPartida, "##,##0.00" ) & vbCrLf 'Si necesitamos que aparezca el descuento, descomentamos esta línea
'End If
'Si se necesita multiples lineas para la descripcion, colocaremos 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
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
'Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla
'cSalida = ""
'Dormir 100
rstPartidas.MoveNext
Wend
'PrintText cSalida
cSalida = cSalida & cLineaNueva
cSalida = cSalida & cLineaNueva
cSalida = cSalida & " Importe: " & PadL(Formato( Val2(rstEncabezado("importe")), Ambiente.FDinero ),9) & cLineaNueva
cSalida = cSalida & "Impuesto: " & PadL(Formato( Val2(rstEncabezado("impuesto")), Ambiente.FDinero ),9) & 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 & " Total: " & PadL(Formato( Val2(rstEncabezado("impuesto")) + Val2(rstEncabezado("importe")) + Val2(rstEncabezado("iespecial")), Ambiente.FDinero ),9) & cLineaNueva
'cSalida = cSalida & "Redondeo: " & PadL(Formato( Val2(rstEncabezado("Redondeo")), "##0.00" ),9) & cLineaNueva ' si necesitamos mostrar redondeo, descomentamos esta linea
cSalida = cSalida & cLineaNueva
cSalida = cSalida & PadL(Formato( nCantidadTotal, "###,###.00" ),3) & "--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 ),10) & cLineaNueva
end if
if rstEncabezado("Pago2") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto2") & " " & PadL(Formato( Val2(rstEncabezado("Pago2")), "$" & Ambiente.FDinero ),10) & cLineaNueva
end if
if rstEncabezado("Pago3") > 0 Then
cSalida = cSalida & " Pago en " & rstEncabezado("Concepto3") & " " & PadL(Formato( Val2(rstEncabezado("Pago3")), "$" & Ambiente.FDinero ),10) & 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 Not rstCliente.EOF Then
cSalida = cSalida & cLineaNueva
'cSalida = cSalida & cLineaNueva
If Val2( rstCliente( "saldo" ) ) > 0 Then
cSalida = cSalida & "Su saldo: " & Formato( rstCliente( "saldo" ), "$##,##0.00" ) & cLineaNueva
End If
End If
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
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"
msgbox " " & cSalida
'IniciaDocumento 'este bloque permite imprimir en una impresora USB (imprime en la impresora predeterminada de Windows). En caso de que desee imprimir con la que tiene configurada en ESTACION01, tendra que comentar estas 5 lineas del bloque.
'EstableceFuente "Courier New", 8 'Fuente que tendra el ticket USB
'Say 0,0.2, "" & cSalida 'Alineación del texto en el ticket, en pulgadas
'FinDocumento 'Termina el Ticket
'Exit Sub 'Termina el Procedimiento Main
' DATOS = ""
'
' Ambiente.Parent.OPOSPOSPrinter1.Open("POSPrinter")
' Ambiente.Parent.OPOSPOSPrinter1.ClaimDevice(1000)
' Ambiente.Parent.OPOSPOSPrinter1.DeviceEnabled = True
' rc = Ambiente.Parent.OPOSPOSPrinter1.SetBitmap(1, 2, "c:\lumen.bmp", 512, 0)
' DATOS = Chr(27) + "|1B"
' cSalida = DATOS & cSalida
' Ambiente.Parent.OPOSPOSPrinter1.PrintNormal 2, (cSalida)
' rc = Ambiente.Parent.OPOSPOSPrinter1.PrintBarCode(2, "7501086801046", 104, 70, 400, -2, -13)
' rc = Ambiente.Parent.OPOSPOSPrinter1.PrintNormal(2, Chr(10) + Chr(20) + Chr(10) + Chr(10) + Chr(10))
' rc = Ambiente.Parent.OPOSPOSPrinter1.CutPaper(100)
If Ambiente.Tag = "HTML" Then
Ambiente.Tag = ""
cSalida = Replace( cSalida, cLineaNueva, "
" )
cSalida = "
CreaHtml "", (cSalida)
Else
Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla 'enviamos a la impresorade tickets que esta definida en ESTACION01
'cSalida = cSalida & cLineaNueva & "COPIA PARA EL CLIENTE" 'En caso de que necesitemos un segundo ticket con la frase COPIA PARA EL CLIENTE , descomentamos esta linea
'Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla 'En caso de que necesitemos un segundo ticket, descomentamos esta linea
Script.ImprimeFormato "VALESVENTA", prn.Documento, Ambiente, Me, False ' en caso de ser necesario, imprime el formato de Vale Venta
End If
End Sub
Estimado podrias apoyarme? no se como hacer que en my business 2012 se pueda imprimir 2 tickets, uso una impresora ec line termica, y necesito quedarme una copia de venta, podrias apoyarme de favor? gracias
BUENAS TARDES SI ME PUDIERAS AYUDAR CON ESTE DETALLE.
LA IMPRECION DEL TICKET EN LAS LINEAS DE IMPORTE IMPUESTO Y TOTAL ME SALE MUY ALA DERECHA COMO LOS CENTRO UN POCO MAS LA IMPRESORA QUE SE USA ES EPSON Y COMO PUEDO CAMBIAR DE LETRA Y TAMAÑO YA QUE NO HE PODIDO LO CAMBIO EN LA IMPRESORA PERO AL EJECUTAR ME SALE IGUAL EL TEXTO TE AGRADESCO LA ATENCION GRACIAS
yo tengo el mismo problema de efrain mendoza me pudiera ayudar de como hacerle?
Buen día. Tengo una mini plinter Citizen y quiero economizar papel en el ticket y borrarle el gracias por su compra quitar al principio y al fin el espacio en blanco
Buen día. Si se puede, solo vaya dentro del sistema mybusinesspos en el icono del menu Business Manager: configuracion– personalizacion– formatos del sistema
Ahi busque el formato TICKET y abralo.
Busque el texto
“Gracias por su compra ”
Al inicio de esta linea coloque un apostrofe (‘) y verá que la linea se pone de color verde.
Guarde y haga la prueba de impresion de algun ticket, ya no debe aparecer el mensaje de abajo.
Tambien puede poner apostrofe donde vea solito el texto
LineaNueva
como saber cuantos puntos acumula el cliente por la compra y como puedo modificar eso para que no sea con todos los productos
BUEN DIA, POR QUE CUANDO IMPRIMO UN TICKET, EN EL INICIO DEL ENCABEZADO ME SALEN 5 CARACTERES QUE YO NO INCLUI EN EL NOMBRE DE LA EMPRESA ES UNA FLECHA, LA LETRA P, UN 0 DOS SIMBOLOS QUE SE PARECE A PI, Y UN PUNTO NEGRO, GRACIAS POR SU AYUDA TENGO UNA IMPRESORA ECLINE TERMICA
TENGO POS 2012
Buen día.
Estos caracteres son especiales, algunos son para abrir el cajón de dinero y otros para cortar el papel; sin embargo su impresora lo interpreta diferente y por eso los muestra.
Para quitarlos tendría que fevisar un par de bloquecitos dentro del código en: configuracion — personalizacion — formatos del sistema — ticket.
Ahi revise el bloque que hace referencia a abrir cajon de dinero. Coloque un apóstrofe (‘) al inicio de cada linea y haga la prueba nuevamente de un ticket, o puede intentar reimprimir un ticket para ver cómo aparece ahora.
Saludos
José Félix
Buen dia agrefue el logo al ticket y en barra de tareas formato de ticket le di muchos espacios en blanco para que se viera el ticket como le kito espacios en blanco?
Buen dia
En el formato de ticket presione la tecla FIN o Ctrl+FIN. Depues comienza a borrar los espacios sobrantes.
Otra opcion es que se coloque en el inici y presione muchas veces SUPRIMIR y así irá borrando los saltos de linea en exceso.
Saludos
Jose Felix
que tal
sabras como hacer que las impresiones en la impresoras de tikets no dejen espacio en blanco al inicial la impresion todas dejan aprox 1 cm
saludos…………….
BUEN DIA, PODRIAS AYUDARME CON LA IMPRESION DE MIS TICKETS, NECESITO QUE APAREZCA EN ELLOS LA CANTIDAD EXACTA VENDIDA, ES DECIR, QUE ACTUALMENTE PONGO POR EJEMPLO QUE SE VENDIO 1.2 KG DE HUEVO Y ME SALE EN EL TICKET 1.0, EL IMPRTE TOTAL ESTA BIEN, PERO NO LA CANTIDAD
Buena tardes.
Apóyeme con un pomo de 700. Puede descargar el formato de ticket con cantidad decimal.
Saludos
José felix
En la ventana de artículos, pestaña información adicional, habilitar la opción
Venta a granel
Con esto, el sistema permitirá que sus articulos se vendan con decimales.
Saludos
ola buenas dias
qisiera saber xq al imprimir mi ticket en la linea en dnde me imprime la cantidad en letra se corta y solo sale en una linea no en dos …..
Buen dia, se podría aplicar con dos lineas, con una la función MID aproximadamente asi:
importeLetra = Letra( round(importeTotal)…..)
csalida= cSalida & Mid(importeLetra, 1,32)
cSalida = cSalida & mid(importeLetra,33,32)
oye baje tu formato de ticket explicado, tengo 2 impresoras una mini printer conectada por medio de un convertidor, usb a paralelo y la otra usb normalita.
cuando selecciono el ticket explicado siempre me manda las impresiones a la impresora tamaño carta aun cuanto esta configurado que los tickets deben salir en la mini printer gracias.
Buenas noches señor
El formato de ticket explicado envia la instrucción hacia la impresora predeterminada de windows (inicio-impresoras y dispositivos). Como primera solución, puede especificar su impresora como predeterminada.
Como segunda opción, se puede especificar la impresora con esta línea, la cual debe descomentar y colocar el nombre de su impresora:
EstableceImpresora “EPSON TM-U220D Receipt”
Este bloque se encuentra antes de este código:
IniciaDocumento
Say 0, 0, cSalida
FinDocumento
Exit Sub
Como tercera opción, COMENTE con un apósteofe las cuatro lineas antes mencionadas, incluida la linea que dice “Exit Sub”
Saludos
buena tarde, cuando quiero imprimir aparece este error;
1024:Expected statement in line 2
Sistema: 1024 Expected statement
hola buenas noches, me puedes ayudar con notas de remision, que clasifique los articulos por linea, que aparesca las cantidades por linea y el total de articulos, de antemano muchas gracias
HOLA BUENAS NOCHES,
PODRÍAS AYUDARME NO PUEDO IMPRIMIR EL CORTE X NI EL CORTE Z, DE ECHO NO ME APARECE EN LA PARTE IZQUIERDA LOS DETALLES DE MIS CORTES EN EL PUNTO DE VENTA.
Hola yo te resuelvo tu problema solo mandame un mensaje a mi correo:
fainal_cb-titone.6e@hotmail.com
Muchas gracias por su colaboración señor Servin. Ojalá le contacte también nuevos visitantes.
Saludos
José Félix
Disculpa tengo un problema, por que al generar el ticket de repente me dejaron de aparecer los datos de la empresa?
Algún error de la base de datos?
Hola me puedes ayudar al escanear algun producto que tenga que estar pesado me redondea el kilaje ejemplo 1.675kg me lo redondea a 2.00kg. En el ticket, en la pantalla no pero cobra lo que realmente peso (1.675kg)
Buena tarde. Alguien puede decirme como reiniciar el número de Ticket en el programa 2011
Buenas tardes Edgar. Se puede resolver al colocar seriea sus nuevos tickets, en el business manager–configuracion–Estacion de trabajo. Pestaña punto de venta:
Serie de documento
A
B
C
Necesito apoyo con ticket sale muy largo a la hora de imprimir…mi impresora es una epson tmu220 de matriz usb 80mm