Si te interesa un módulo para Salones de belleza y para estéticas; sin diferenciar si eres niña o niño, puedes contactar a nuestro compañero Eduardo González al correo
cctvsolucion@gmail.com
Eso sí, ten en cuenta que un pomo es motivación para desarrollar más módulos y para dar soporte a los existentes.
Saludos
José Félix
CONTACTO ***** jofelchez@gmail.com *****
Soporte Remoto, helpmybusinesspos.info , TeamViewer, Hamachi, Descarga My Business pos 2012 Gratis, crack activar, keygen activador , FACTURACIÓN ELECTRÓNICA, my business pos 2012, MyCBB, Codigo de Barras BiDimensional, configurar facturas, Migración de la Versión 2006 a la Versión 2011, Delta, Configurar 2011, Manuales de Instalación, Errores, Modificar, Respaldos, Nuevo IVA, Red MyBusiness, Problema, Ambiente path, Migración, Impresora, Descarga 2011, Reportes, Presentaciones, Win7, SQL, Manager, Ticket, Etiquetas, Generador, Corte X Z, Restaurar, Zebra, Logo, recomendaciones, Remisiones, Barras, Inventario, hamachi, Delta y LINUX, code39, como cambiar el iva en my business pos, my business pos blogspot, como instalar my busuness delta, TPV, MyMoney, Concentrador POS, Zebra, Datamax, Mobile Business, Commander, Restaurante, MyBusiness POS 2012, Kardex
Mostrando entradas con la etiqueta desarrollo. Mostrar todas las entradas
Mostrando entradas con la etiqueta desarrollo. Mostrar todas las entradas
sábado, 18 de octubre de 2014
sábado, 6 de septiembre de 2014
Corte Z con Arqueo de Caja
Si necesitas contar el dinero antes de hacer el corte, dejamos este formato
[wpdm_package id='17534']
[wpdm_package id='15049']
[wpdm_package id='17534']
[wpdm_package id='15049']
jueves, 4 de septiembre de 2014
Contamos con Sistema de Apartado: Cómo funciona en MyBusiness POS
En la mayoría de los negocios manejan la modalidad de la venta mediante sistema de apartado, donde es posible retener al cliente y asegura que este liquide su compra antes de que obtenga su producto. MyBusiness POS tiene una función que permite los pagos parciales de la mercancía que se vende mediante el sistema de Apartado.
[wpdm_package id='16789']
[youtube F7JDP6Lm6mI]
Para las situaciones en las que es necesario mantener el control de las existencias y de los productos pendientes por entregar debido a los pedidos, existe llama "Incluir apartados por pedido en disponibilidad"
[youtube eOyJdl0C_H8]
En términos generales, para sus clientes estas son las ventajas y desventajas del sistema de apartado:
Ante la crisis económica que ha afectado el poder adquisitivo y el crédito de millones de familias, el sistema de apartados, conocido en inglés como layaway, ha vuelto a ser un recurso popular.
“Esto puede ser una buena idea, pero debe de fijarse bien en los términos del sistema de apartados porque tiene ventajas y desventajas”, señala Connie Costello, educadora de asuntos del consumidor de Extensión Cooperativa de la Universidad de California. Ella explica los puntos a favor y en contra:
Entre las ventajas están:
- Usted podrá aprovechar las ofertas de la tienda e ir pagando poco a poco su mercancía.Podrá pagar por la mercancía que puso en apartado en determinado plazo, y no tiene que hacer la compra con cargo a su tarjeta de crédito; así se evita el pago de intereses.
- Puede apartar sus regalos con anticipación sin preocupación de que se agote el juguete o aparato electrónico de mayor demanda.
- También tendrá un lugar en donde almacenarlos sin necesidad de esconderlo de sus seres queridos.
Pero también debe tener en cuenta las desventajas del sistema de apartados:
- Tendrá que pagar una cuota que por lo general es de 5 dólares; y si usted cambia de opinión, hay cargos por cancelación que pueden variar entre 10 y 25 dólares.
- Si no recoge su regalo a tiempo o deja de hacer los pagos de acuerdo a lo establecido podría correr en riesgo de perder el dinero ya pagado.
El sistema de apartados se inició en la época de la Gran Depresión, la crisis más larga y profunda en el país y el mundo que tuvo lugar de 1929 hasta principios de la década de los 40. El layaway se estableció para ayudar, especialmente a las personas de bajos ingresos sin acceso al crédito; sin embargo en la actualidad, las tiendas lo promocionan como un sistema práctico de compras para la clase media.
Costello menciona los aspectos a los que hay que poner atención antes de firmar un contrato de sistema de apartado:
- Examine bien todos los términos del acuerdo. El contrato debe contener una descripción de la mercancía, el monto del pago inicial, precio total, fecha de vencimiento de cada pago, plazo de pagos, fecha del último pago y condiciones de devolución.
- Lea la letra pequeñita antes de firmar el contrato.
- Calcule exactamente cuanto pagará en total por la mercancía.
- Guarde todos sus recibos de pago.
- Pregunte de antemano qué cargos podría incurrir si no paga a tiempo o no puede realizar un pago. Pregunta cuánto le devolverán de la suma que ya ha pagado.
- No dé su número de Seguro Social ni de su tarjeta de crédito; estos son datos que el vendedor no necesita.
- Pregunte qué pasaría con su dinero en caso de una cancelación.
- Averigüe cuál es la política de devolución de la mercancía puesta en apartado; puede ser que la tienda tenga normas de devolución diferentes para este programa.
- Compare el costo total de la mercancía si la compra a través del sistema de apartados y con otras opciones de pago. Por ejemplo, cuál sería el costo total si lo compra con una tarjeta de crédito, y puede pagar el precio total cuando le llegue la cuenta.
- Guarde todos sus recibos de pago.
Siempre que firme un contrato, debe investigar bien los términos; le tomará un poquito más de tiempo pero se evitará sorpresas desagradables, cargos onerosos o contratiempos que le impedirán disfrutar sus fiestas y la compañía de sus seres queridos.
Fuente: http://ucanr.edu/sites/Spanish/Noticias/?uid=4894&ds=199
Etiquetas:
apartado,
Código,
desarrollo,
sistema apartado,
Tips,
TPV,
Ventas
miércoles, 3 de septiembre de 2014
MyBusiness POS Gimnasio
Este módulo es desarrollado por Carlos Lozano. Si consideras adquirirlo, envia un correo a carloslozanob@gmail.com
[youtube VCQFIwdwKbo]
sábado, 30 de agosto de 2014
Funciones para impresión de Ticket
Existen varias formas imprimir un ticket de venta tanto en pantalla como en la miniptinter.
El formato de ticket se encuentra en la ruta del business manager: configuración--personalizacion--formatos del sistema--TICKET. Abrir el código con doble clic e ir al final de este hasta identificar esta línea que se refiere a la impresión; ahí es posible aplicar diferentes opciones de impresión:
Si queremos imprimir en USB, colocar:
Si deseamos imprimir en impresora conectada por cable LPT:
Si deseamos ver el texto del ticket en una ventana emergente:
Una segunda opción para visualizar el el texto del ticket en una ventana emergente.
[youtube SzTYpXT_Gdg]
El formato de ticket se encuentra en la ruta del business manager: configuración--personalizacion--formatos del sistema--TICKET. Abrir el código con doble clic e ir al final de este hasta identificar esta línea que se refiere a la impresión; ahí es posible aplicar diferentes opciones de impresión:
Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla
Si queremos imprimir en USB, colocar:
'Código para impresora conectada por cable USB
'o para la impresora predeterminada de Windows).
IniciaDocumento
' EstableceImpresora "Mi Impresora laser" 'esta linea permite elegir impresora USB destino
EstableceFuente "Courier New", 8 'Fuente que tendra el ticket USB
Say 0,.2, cSalida 'Alineación del texto, en pulgadas. cSalida es el texto a imprimir
FinDocumento 'Termina la Impresión USB
'Exit Sub
'Exit Sub es por si deseamos que termine el proceso y saltar las lineas de código que le preceden
'
Si deseamos imprimir en impresora conectada por cable LPT:
'Función para impresora conectada por cable LPT
'Impresión de ticket, corteX y CorteZ _
Enviamos a la impresorade tickets que está configurada en ESTACION01
Script.sendToPrinter Ambiente, (cSalida), prn.Pantalla 'cSalida es el texto que se imprimirá
'
Si deseamos ver el texto del ticket en una ventana emergente:
MsgBox ("" & cSalida) 'cSalida es el texto que se visualizará
'
Una segunda opción para visualizar el el texto del ticket en una ventana emergente.
Mymessage "" & cSalida 'cSalida es el texto que se visualizará
'
[youtube SzTYpXT_Gdg]
Etiquetas:
Ajustes,
Código,
desarrollo,
doble impresion,
Impresora,
programacion,
Ticket,
Tips
martes, 12 de agosto de 2014
Ejemplo de DBMultiCombo.MultiCombo
[wpdm_package id='15039']
A continuación se muestra la lista de consultas que trae el sistema, tal vez alguna te interesa:
- Fabricantes
- Modelos
- CostosAdicionales
- Comisionistas
- Colonia
- Repartidores
- Tutor
- Familias
- Ofertas
- Tallas
- Colores
- Reportes
- Etapas
- Lotes
- Clasificación de inventario
- Estados
- Contactos por cliente
- Clientes por descripcion
- Articulos por descripción
- Remisiones para devolución
- Estaciones
- Ubicación en almacen
- Marcas por clave
- Zonas de clientes
- Ventas sin cancelar
- Ventas pendientes
- Ventas
- Vendedores
- Usuarios
- Tipos de teléfono
- Tipos de proveedores
- Tipos de Polizas
- Tipos de póliza
- Tipos de pendientes
- Tipos de clientes
- Sucursales
- Series disponibles
- Remisiones
- Proveedores por clave
- Proveedores
- Procedimientos y rutinas de usuario
- Pendientes
- Partidas de venta
- Partidas de compra
- Monedas
- Marcas de Artículos
- Líneas de Artículos
- Inventarios físicos
- Inventarios
- Impuestos por porcentaje
- Impuestos
- Grupos de cuentas
- Formatos
- Facturas
- Devoluciones
- Contactos
- Conceptos de salidas de inventario
- Conceptos de ingreso
- Conceptos de gastos
- Conceptos de entrada al inventario
- Conceptos de egresos
- Conceptos de cuentas por pagar
- Conceptos de cobranza
- Conceptos de Cargos
- Conceptos de abonos a proveedores
- Conceptos de Abonos
- Compras confirmadas
- Código de formatos
- Cobradores
- Clientes por clave
- Clientes
- Claves adicionales de articulos
- Centros de costo
- Artículos por clave
- Articulos para venta
- Articulos
- Almacenes
- Direcciones de embarque
- Subfamilia1
- Subfamilia2
- Subfamilia3
- ClientesNC
- Tickets
- SeriesTickets
- UsuariosGB
Si tienes alguna duda al respecto, puedes escribir tu comentario y podemos aclararla
Etiquetas:
Ajustes,
Base de Datos,
Código,
dbcombo,
dbmulticombo,
desarrollo,
Formatos,
multicombo,
programacion,
Tips
martes, 13 de mayo de 2014
jueves, 27 de febrero de 2014
Respaldar y crear nueva empresa en MyBusiness Pos 2012
[wpdm_package id='15033']
domingo, 9 de febrero de 2014
viernes, 4 de octubre de 2013
Cómo modificar la malla de artículos
En MyBusinessPOS en todas sus versiones es posible personalizar la ventana del buscador para que se adapte a nuestras necesidades. Para lograr este cambio es necesario tener conocimientos básicos de programación y base de datos.
Los cambios básicos que se pueden aplicar pueden ser: cambiar el orden de las columnas, el ancho y ocultar datos innecesarios para colocar los que realmente nos importan.
Los cambios básicos que se pueden aplicar pueden ser: cambiar el orden de las columnas, el ancho y ocultar datos innecesarios para colocar los que realmente nos importan.
Etiquetas:
Ajuste,
Código,
desarrollo,
descuento,
fg2,
grid,
llenar malla,
malla,
programacion,
Tips,
TPV,
Ventas
sábado, 21 de septiembre de 2013
Cómo habilitar la venta a Granel
En la ventana de artículo buscamos al pestaña "información adicional" y habilitamos dos casillas:
Vende a granel. Esta casilla permite que las ventas del artículo se puedan efectuar en cantidades decimales (0.250, 0.100, 0.5, etc.). Aplica para los casos como venta de productos pesados.
Solicitud de peso. Esta casilla se habilita para que, al momento de que se realice la venta del artículo, de inmediato aparezca una ventana solicitando la cantidad del producto que se ofrece al cliente. En caso de que tuviese una báscula conectada y configurada al sistema, en ese momento debería colocar el producto en la tara para que la cantidad aparezca en automático en el sistema y se cierre la ventana. En caso contrario, puede colocar la cantidad de forma manual y presionar [enter] para cerrar la ventana. Si usted cuenta con una báscula que genera códigos de barra, no es necesaria esta opción debido a que en el mismo código ya lleva implícito la cantidad de producto a vender.
[youtube GLzHnDLQjUQ]
Vende a granel. Esta casilla permite que las ventas del artículo se puedan efectuar en cantidades decimales (0.250, 0.100, 0.5, etc.). Aplica para los casos como venta de productos pesados.
Solicitud de peso. Esta casilla se habilita para que, al momento de que se realice la venta del artículo, de inmediato aparezca una ventana solicitando la cantidad del producto que se ofrece al cliente. En caso de que tuviese una báscula conectada y configurada al sistema, en ese momento debería colocar el producto en la tara para que la cantidad aparezca en automático en el sistema y se cierre la ventana. En caso contrario, puede colocar la cantidad de forma manual y presionar [enter] para cerrar la ventana. Si usted cuenta con una báscula que genera códigos de barra, no es necesaria esta opción debido a que en el mismo código ya lleva implícito la cantidad de producto a vender.
[youtube GLzHnDLQjUQ]
sábado, 28 de enero de 2012
Reimprimir Corte Z MyBusiness POS
Muchos usuarios han tenido la necesidad de reimprimir su corte Z.
[wpdm_package id='15012']
[wpdm_package id='17534']
[wpdm_package id='15042']
Así que en este post se publica una herramienta que es de utilidad para cubrir dicha necesidad.
[youtube zxma9shdcMM]
Características del parche:
+ Permite la búsqueda de Cortes por rango de Fechas
+ Permite la búsqueda de Cortes por Estación de Trabajo
+ Permite la búsqueda de Cortes por Monto de Caja
Solicita el parche a jofelchez@gmail.com
martes, 17 de enero de 2012
Borra Saldos de Cliente de Mostrador
Para borrar el saldo del cliente de mostrador, creamos un nuevo procedimiento y le pegamos el siguiente código:
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.
'|----------------------------------------------------------------------------------|
'| 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.
Etiquetas:
Ajustes,
ambiente,
borrar saldo,
borrasaldo,
cliente de mostrados,
cliente sys,
Código,
Concentrador POS,
desarrollo,
jose felix sanchez,
saldo
sábado, 31 de diciembre de 2011
Ticket Explicado
[wpdm_package id='15747']
[wpdm_package id='14993']
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 desscripcion, 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 = "" & 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
Etiquetas:
ambiente,
clempty,
Código,
desarrollo,
MyBusiness POS 2012,
programacion,
Tips
jueves, 29 de diciembre de 2011
Formato de etiquetas para zebra 2844
' 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 & "D14" & Chr(13) & Chr(10)
cSalida = cSalida & "A220,15,0,1,1,1,N," & Chr(34) & Formato( Date, "dd-MM-yyyy" ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "A05,11,0,2,1,1,N," & Chr(34) & Mid( cDescrip,1, 12 ) & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "B05,30,0,2,1,6,25,B," & Chr(34) & cArticulo & Chr(34) & Chr(13) & Chr(10)
cSalida = cSalida & "A220,55,0,4,1,1,N," & Chr(34) & "$" & 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
Etiquetas:
Ajustes,
Código,
Codigo Barras,
código de barras,
desarrollo,
Etiquetas,
programacion
Suscribirse a:
Entradas (Atom)