Descarga la nueva versión de MyBusiness POS 2012 ahora!!!
MyBusiness POS 2012, Gratis
El manual de usuario de MyBusinessPOS 2012 puede ser descargado aquí
Fuente: www.mybusinessspos.com
Whats 7222816462. Mejoramos la experiencia en el Punto de Venta de tu NEGOCIO
Descarga la nueva versión de MyBusiness POS 2012 ahora!!!
El manual de usuario de MyBusinessPOS 2012 puede ser descargado aquí
Fuente: www.mybusinessspos.com
Para borrar el saldo del cliente de mostrador, creamos un nuevo procedimiento y le pegamos el siguiente código:
'|----------------------------------------------------------------------------------|
'| 2012-01-17 |
'| JOSE FELIX SANCHEZ (jofelchez@gmail.com) |
'| El siguiente procedimiento borra el saldo al Cliente de Mostrador |
'| (Cliente SYS) |
'|----------------------------------------------------------------------------------|
Sub Main()
Ambiente.Connection.Execute " update clients set SALDO = 0 where CLIENTE = 'sys' "
MyMessage "Proceso terminado"
End Sub
Guardamos y ejecutamos.
Como información adicional, para crear un procedimiento, tiene que ir a la ruta (dentro del sistema): CONFIGURACION–PERSONALIZACION–PROCEDIMIENTOS Y RUTINAS DE USUARIO.
Ahi da clic en Nuevo y pega el código antes mencionado.
Espero que sea de utilidad y me inviten un Pomo.
Información obtenida de www.mybusinesspos.com
Congregar a la comunidad de distribuidores de MyBusiness POS de todo el país, con los más importantes fabricantes y mayoristas de equipo POS, en un evento para la capacitación y potenciación de su capacidad de ventas.
17 al 20 de mayo de 2012
Hotel Great Parnassus. Cancún, Q. Roo.
Conocerás las novedades de los productos de los principales fabricantes de hardware POS.
Convivirás durante tres días con dichos fabricantes para abordar negocios potenciales.
Convivirás con los más importantes mayoristas de POS.
Hasta el 20 de febrero: $2,500.00*
Hasta el 20 de marzo: $2,750.00 *
Hasta el 20 de abril: $3,000.00 *
Hasta el 30 de abril: $3,500.00 *
* Precios netos por persona con base en ocupacion doble.
– Una cama en habitación doble por cuatro días y tres noches en el Hotel Great Parnassus en Cancún, Quintana Roo.
– Conferencias de fabricantes y mayoristas.
– Una licencia de MyBusiness POS para reventa para los que asistan a todas las conferencias y mesas demostrativas.
– 3 desayunos para una persona.
– 3 comidas para una persona.
– 3 cenas para una persona.
El número máximo de asistentes por empresa es de 2. En el caso de que asistan cónyuges tienen que comprobar que laboran en la misma empresa.
EL CUPO ES LIMITADO y está diseñado para distribuidores realmente interesados en generar negocio y asistir a todas las pláticas y talleres.
'código de la forma PRODSEXCEL (utilizado en el Ambiente de Desarrollo)
Sub Form_load
Me.Caption = “Importando desde Excel(tm)”
Archivo.File = Ambiente.Path & “\articulos.xls”
End Sub
Sub Button_Click()
Select Case ControlEvento.Tag
Case “Aceptar”
AplicaInventario
DescargaForma
Case “Cancelar”
DescargaForma
Case “cmdButton2”
ShellRun Parent.hWnd, “Open”, Archivo.File
End Select
End Sub
Sub AplicaInventario
Set excelConnection = CreateObject(“ADODB.Connection”)
excelConnection.ConnectionString = “driver={Microsoft Excel Driver (*.xls)};DBQ=” & Controles(“Archivo”).File
excelConnection.Open
ImportaInventario excelConnection
End Sub
Sub ImportaInventario( excelConnection )
Dim rstProductos
Dim bolAfectaInventario
Dim rstArticulo
Dim rstClaveAdd
Dim Articulos
Dim Ajuste
Dim rstImpuesto
Ambiente.Connection.Execute “UPDATE prods SET etiquetas = 0”
bolAfectaInventario = True
‘——————————————————————————————————————–
‘2011_11_22 Jose Felix jofelchez@gmail.com
‘Agregamos las Lineas a la Importación
Set rstExcel = CreaRecordSet( “SELECT linea FROM [ARTICULOS$] group by linea”, (excelConnection ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
While Not rstExcel.EOF
Set rstLinea = CreaRecordSet( “SELECT * FROM lineas WHERE Linea = ‘” & rstExcel(“Linea”) & “‘”, Ambiente.Connection )
Query.Reset
If rstLinea.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “linea = ‘” & rstExcel(“linea”) & “‘”
End If
Query.AddField “lineas”,”linea”, rstExcel(“Linea”)
Query.AddField “lineas”,”descrip”,rstExcel(“Linea”)
Query.AddField “lineas”,”Usuario”, Ambiente.Uid
Query.AddField “lineas”,”usuFecha”, Date
Query.AddField “lineas”,”usuHora”,Formato( Time, “hh:mm:ss” )
Query.AddField “lineas”,”Numero”, 0
Query.CreateQuery
Query.Execute
Query.Reset
rstExcel.MoveNext
Wend
‘——————————————————————————————————————–
Set rstProductos = CreaRecordSet( “SELECT * FROM [ARTICULOS$]”, (excelConnection ) )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Set Articulos = CreateObject( “MyBArticulos.Articulos” )
Set Articulos.Ambiente = Ambiente
nEntrada = 0
nSalida = 0
While Not rstProductos.EOF
If Not clEmpty( “” & (rstProductos(“Código del producto”)) ) Then
If Not clEmpty( “” & (rstProductos(“Descripción”)) ) Then
Articulos.recalculoDeInventario rstProductos(“Código del producto”), Ambiente, False
Set rstArticulo = CreaRecordSet( “SELECT articulo, existencia FROM prods WHERE articulo = ‘” & rstProductos(“Código del producto”) & “‘”, Ambiente.Connection )
Query.Reset
If rstArticulo.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “articulo = ‘” & rstProductos(“Código del producto”) & “‘”
End If
Query.AddField “prods”,”articulo”, rstProductos(“Código del producto”)
Query.AddField “prods”,”descrip”,rstProductos(“Descripción”)
Query.AddField “prods”,”linea”, rstProductos(“Linea”)
Query.AddField “prods”,”marca”, “SYS”
Query.AddField “prods”,”fabricante”, “SYS”
Query.AddField “prods”,”precio1″, FDec( rstProductos(“Precio de venta”) )
Query.AddField “prods”,”costo_u”, FDec( rstProductos(“Costo ultimo”) )
Query.AddField “prods”,”etiquetas”, Val2( rstProductos(“Existencia”) )
Query.AddField “prods”,”Unidad”, rstProductos(“Unidad”)
Query.AddField “prods”,”precio2″, FDec( rstProductos(“Precio2”) )
Query.AddField “prods”,”precio3″, FDec( rstProductos(“Precio3”) )
Query.AddField “prods”,”precio4″, FDec( rstProductos(“Precio4”) )
Query.AddField “prods”,”precio5″, FDec( rstProductos(“Precio5”) )
If Val2(rstProductos(“Impuesto”)) > 0 Then
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & _
FDec( rstProductos(“Impuesto”) ), Ambiente.Connection )
Else
If ClAt(“0”, Trim(rstProductos(“Impuesto”))) > 0 AND Len(Trim(rstProductos(“Impuesto”))) = 1 Then
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE valor = ” & _
FDec( rstProductos(“Impuesto”) ), Ambiente.Connection )
Else
Set rstImpuesto = CreaRecordSet( “SELECT * FROM impuestos WHERE impuesto = ‘” & _
rstProductos(“Impuesto”) & “‘”, Ambiente.Connection )
End If
End If
If rstImpuesto.EOF Then
cImpuesto = “SYS”
Else
cImpuesto = rstImpuesto( “impuesto” )
End If
Query.AddField “prods”,”impuesto”, cImpuesto
Query.AddField “prods”,”paraventa”, 1
Query.AddField “prods”,”invent”, 1
Query.CreateQuery
Query.Execute
Query.Reset
If Not IsNull( rstProductos(“Existencia”) ) Then
Ajuste = FDec( rstProductos(“Existencia”) )’ – Val2( rstArticulo(“Existencia”) )
AfectandoInventario rstProductos(“Código del producto”), Ajuste
Articulos.recalculoDeInventario rstProductos(“Código del producto”), Ambiente, False
If Ajuste <> 0 Then
If Ajuste > 0 Then
nEntrada = CreaEntrada( nEntrada, rstProductos(“Código del producto”), Ajuste, FDec( rstProductos(“Costo ultimo”) ), rstProductos(“Descripción”) )
Else
nSalida = CreaSalida( nSalida, rstProductos(“Código del producto”), Ajuste, FDec( rstProductos(“Precio de venta”) ), rstProductos(“Descripción”) )
End If
Else
Query.Reset
Query.SQL = “UPDATE prods SET costo_u = ” & FDec( rstProductos(“Costo ultimo”) ) & _
” WHERE articulo = ‘” & rstProductos(“Código del producto”) & “‘”
Query.Execute
End If
End If
If Not clEmpty( “” & rstProductos(“Código de barras”) ) Then
Set rstClaveAdd = CreaRecordSet( “SELECT clave FROM clavesadd WHERE clave = ‘” & rstProductos(“Código de barras”) & “‘”, Ambiente.Connection )
Query.Reset
If rstClaveAdd.EOF Then
Query.strState = “INSERT”
Else
Query.strState = “UPDATE”
Query.Condition = “clave = ‘” & rstProductos(“Código de barras”) & “‘”
End If
Query.AddField “clavesadd”,”Clave”, rstProductos(“Código de barras”)
Query.AddField “clavesadd”,”Dato1″, “”
Query.AddField “clavesadd”,”Usuario”, Ambiente.Uid
Query.AddField “clavesadd”,”usuFecha”, Date
Query.AddField “clavesadd”,”usuHora”, Formato( Time, “hh:mm:ss” )
Query.AddField “clavesadd”,”Dato2″, “”
Query.AddField “clavesadd”,”Articulo”, rstProductos(“Código del producto”)
Query.AddField “clavesadd”,”Cantidad”, 1
Query.AddField “clavesadd”,”Unidad”, “”
If bolAfectaInventario = True Then
Query.AddField “clavesadd”,”Existencia”, 0
End If
Query.AddField “clavesadd”,”Libre”, 0
Query.AddField “clavesadd”,”Exportado”, 0
Query.AddField “clavesadd”,”Precio”, 0
Query.AddField “clavesadd”,”imagen”, “”
Query.AddField “clavesadd”,”etiquetas”, 0
Query.CreateQuery
Query.Execute
End If
End If
End If
Detalle.Caption = “” & rstProductos(“Descripción”)
rstProductos.MoveNext
Wend
MyMessage “Catálogo importado”
If Question( “Desea imprimir etiquetas de codigo de barras”, 1 ) = True Then
Script.RunProcess “ZEBRA2844”, Me, Ambiente
End If
End Sub
Sub AfectandoInventario( strArticulo, Existencia )
Dim rstProd
Dim n
Dim Query
Dim rstInvInicial
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Set rstProd = CreaRecordSet( “SELECT articulo, existencia, costo_u FROM prods WHERE articulo = ‘” & strArticulo & “‘”, Ambiente.Connection )
n = n + 1
If Existencia = 0 Then
Exit Sub
End If
Set MovInv = CreateObject( “MyBInventario.Inventario” )
Set MovInv.Ambiente = Ambiente
MovInv.FechaMov = Date
MovInv.uId = Me.Ambiente.uId
MovInv.EntradaSalida = “S”
MovInv.cMetodo = Me.Ambiente.costeo
MovInv.EstacionSalida = Trim(Ambiente.Estacion)
While Not rstProd.EOF
n = n + 1
Query.Reset
Query.strState = “INSERT”
Query.AddField “movsinv”,”MOVIMIENTO”, 1
If Existencia > 0 Then
MovInv.EntradaSalida = “E”
MovInv.nMovimiento = 1
MovInv.TipoMovim = “EX+”
MovInv.NoMovim = 1
MovInv.TipoOperacion = “EX+”
MovInv.nCantidad = Existencia
MovInv.AfectaCosto = True
Else
MovInv.EntradaSalida = “S”
MovInv.nMovimiento = 1
MovInv.TipoMovim = “EX-”
MovInv.NoMovim = 1
MovInv.TipoOperacion = “EX-”
MovInv.nCantidad = Existencia * -1
End If
MovInv.nPrecio = rstProd(“costo_u”)
MovInv.nAlmacen = 1
MovInv.cArticulo = strArticulo
MovInv.AfectaInventario
Set rstInvInicial = CreaRecordSet( “SELECT * FROM invinicial WHERE articulo = ‘” & rstProd(“articulo”) & “‘”, _
Ambiente.Connection )
If rstInvInicial.EOF Then
Query.Reset
Query.strState = “INSERT”
Query.AddField “invinicial”,”fecha”, DateSerial( 2000, 01, 01 )
Query.AddField “invinicial”,”articulo”, rstProd(“articulo”)
Query.AddField “invinicial”,”existencia”, Existencia
Query.AddField “invinicial”,”costo”, rstProd(“costo_u”)
Query.CreateQuery
Query.Execute
End If
rstProd.MoveNext
Wend
End Sub
Function FDec( Number )
FDec = Replace( “” & Number, “,”, “.” )
End Function
Function CreaEntrada( Entrada, Articulo, Cantidad, Costo, Descripcion )
Dim Query
Dim rstArticulo
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
If Entrada = 0 Then
Query.Reset
Query.strState = “INSERT”
Entrada = TraeSiguiente( “MovEnt”, Ambiente.Connection )
Query.AddField “entradas”, “entrada”, Entrada
Query.AddField “entradas”, “ocupado”, 1
Query.AddField “entradas”, “f_emision”, Date
Query.AddField “entradas”, “tipo_doc”, “EX+”
Query.AddField “entradas”, “importe”, 0
Query.AddField “entradas”, “costo”, 0
Query.AddField “entradas”, “almacen”, 1
Query.AddField “entradas”, “estado”, “CO”
Query.AddField “entradas”, “observ”, vbNullString
Query.AddField “entradas”, “tipo_cam”, 1
Query.AddField “entradas”, “moneda”, Ambiente.Moneda
Query.AddField “entradas”, “datos”, vbNullString
Query.AddField “entradas”, “usuario”, Ambiente.uId
Query.AddField “entradas”, “usufecha”, Date
On Error Resume Next
Query.AddField “entradas”, “usuhora”, Libreria.Formato(Time, “hh:mm:ss”)
On Error GoTo 0
Query.CreateQuery
Query.Execute
End If
Query.Reset
Query.strState = “INSERT”
Query.AddField “entpart”,”ENTRADA”, Entrada
Query.AddField “entpart”,”TIPO_DOC”, “EX+”
Query.AddField “entpart”,”NO_REFEREN”, Entrada
Query.AddField “entpart”,”ARTICULO”, Articulo
Query.AddField “entpart”,”CANTIDAD”, Cantidad
Query.AddField “entpart”,”PRECIO”, Costo
Query.AddField “entpart”,”OBSERV”, Descripcion
Query.AddField “entpart”,”PARTIDA”, 0
Query.AddField “entpart”,”ID_ENTRADA”, TraeSiguiente( “entpart”, Ambiente.Connection )
Query.AddField “entpart”,”Usuario”, Ambiente.Uid
Query.AddField “entpart”,”UsuFecha”, Date
Query.AddField “entpart”,”UsuHora”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “entpart”,”PRCANTIDAD”, 0
Query.AddField “entpart”,”PRDESCRIP”, “”
Query.AddField “entpart”,”CLAVEADD”, “”
Query.CreateQuery
Query.Execute
CreaEntrada = Entrada
End Function
Function CreaSalida( Salida, Articulo, Cantidad, Precio, Descripcion )
Dim Query
Dim rstArticulo
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
If Salida = 0 Then
Query.Reset
Query.strState = “INSERT”
Salida = TraeSiguiente( “MovSal”, Ambiente.Connection )
Query.AddField “salidas”,”Salida”, Salida
Query.AddField “salidas”,”ocupado”, 1
Query.AddField “salidas”,”tipo_doc”, “EX-”
Query.AddField “salidas”,”F_EMISION”, Date
Query.AddField “salidas”,”IMPORTE”, 0
Query.AddField “salidas”,”COSTO”, 0
Query.AddField “salidas”,”ALMACEN”, 1
Query.AddField “salidas”,”ESTADO”, “CO”
Query.AddField “salidas”,”OBSERV”, “Salida automática por excel”
Query.AddField “salidas”,”DATOS”, “”
Query.AddField “salidas”,”USUARIO”, Ambiente.Uid
Query.AddField “salidas”,”USUFECHA”, Date
Query.AddField “salidas”,”USUHORA”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “salidas”,”traspaso”, 0
Query.AddField “salidas”,”almt”, 0
Query.AddField “salidas”,”estraspaso”, 0
Query.AddField “salidas”,”sucursal”, “”
Query.AddField “salidas”,”esparasucursal”, 0
Query.AddField “salidas”,”entsuc”, 0
Query.AddField “salidas”,”folio”, TraeSiguiente(Trim(Ambiente.Estacion) & “salida”, Ambiente.Connection)
Query.AddField “salidas”,”estacion”, Ambiente.Estacion
Query.CreateQuery
Query.Execute
End If
Query.Reset
Query.strState = “INSERT”
Query.AddField “salpart”,”SALIDA”, Salida
Query.AddField “salpart”,”TIPO_DOC”, “EX-”
Query.AddField “salpart”,”NO_REFEREN”, Salida
Query.AddField “salpart”,”ARTICULO”, Articulo
Query.AddField “salpart”,”CANTIDAD”, Cantidad * -1
Query.AddField “salpart”,”PRECIO”, Precio
Query.AddField “salpart”,”OBSERV”, Descripcion
Query.AddField “salpart”,”PARTIDA”, 0
Query.AddField “salpart”,”ID_SALIDA”, TraeSiguiente( “salpart”, Ambiente.Connection )
Query.AddField “salpart”,”Usuario”, Ambiente.Uid
Query.AddField “salpart”,”UsuFecha”, Date
Query.AddField “salpart”,”UsuHora”, Libreria.Formato( Time, “hh:mm:ss” )
Query.AddField “salpart”,”PRCANTIDAD”, 0
Query.AddField “salpart”,”PRDESCRIP”, “”
Query.AddField “salpart”,”CLAVEADD”, “”
Query.AddField “salpart”,”costo”, 0
Query.CreateQuery
Query.Execute
CreaSalida = Salida
End Function
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.
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 = "
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