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 programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
sábado, 14 de octubre de 2017
sábado, 29 de agosto de 2015
Programar con Navicat
[wpdm_package id='15398']
Navicat es un administrador gráfico de base de datos y un software de desarrollo producido por PremiumSoft CyberTech Ltd. para MySQL, MariaDB, Oracle, SQLite, PostgreSQL y Microsoft SQL Server. Cuenta con un Explorador como interfaz gráfica de usuario soportando múltiples conexiones para bases de datos locales y remotas. Su diseño está pensado para satisfacer las diferentes necesidades de un amplio sector del public; desde administradores y programadores de bases de datos a diferentes empresas que dan soporte y o comparten información con clientes o socios.
Navicat es una herramienta que permite navegar en la base de datos MyBusiness POS y hacer algunas modificaciones directamente. En esta ocasión voy a mostrar dónde se encuentra el código fuente de MyBusiness POS y algunas funciones que se pueden reutilizar en nuestros desarrollos. La ventaja de navicat es que podemos identificar un código específico con tan solo presionar las teclas (Ctrl + F)
Para comenzar, vamos a mencionar que, dentro de la base de datos "C:\MyBusinessDatabase\myBusinessPOS2012.mdf", el código fuente se almacena en estas dos tablas:
- formatosdelta. Almacena los formatos de impresión, reportes y procedimientos que se ven en el sistema MyBusiness POS (en el Business Manager--Personalización).
- formasdelta. Almacena las ventanas o formas que se identifican en el ambiente de desarrollo (Menu principal--Programación--Ambiente de desarrollo). Las ventanas se integran de dos partes :
- Código: El código fuente se ve de manera similar al de formatos delta
- Diseño: esta parte se ve en forma de caracteres que solo el ambiente de desarrollo interpreta, aunque con un poco de habilidad lo podemos manipular y funciona de la misma manera. Este código se presenta así:
"Forma==13635==5760==-71895==2805====$$-$$ListView==3200==750==9875==0==lista====13$$-$$Grid==12660==4250==375==875==Grid====12$$-$$TextBox"
Bien, para llegar a estas dos tablas se hace lo siguiente:
- Una vez descargado e instalada la aplicación, se crea una nueva conexión hacia SQL Server
- Se abre una ventana que solicita los datos. Si el servidor está de forma local, se colocan de la siguiente manera:
Connection name: Su nombre
Host Name: .\SQLEXPRESS
Authentication: Sql Server Authentication
User name: sa
Password: 12345678 - En caso de que el servidor se encuentre en otro equipo y escucha con el puerto 1400, se configura de la siguiente forma:
Connection name: Su nombre
Host Name:Su_Servidor\SQLEXPRESS, 1400
Authentication: Sql Server Authentication
User name: sa
Password: 12345678 - Presionar el botón "Test Connection" para verificar si todo está en orden. Después presionar OK
- Aparece el listado de base de datos. Seleccionar la base que nos interesa "C:\MyBusinessDatabase\myBusinessPOS2012.mdf" y se muestran las tablas
- En navicat es posible filtrar el nombre de la tabla con solo escribir en la parte superior derecha. en este caso, escribir la palabra "Delta" y aparecen las dos tablas que nos interesan:
- Al seleccionar la tabla FormatosDelta, se pueden ver la lista de códigos fuente
- Para ver el detalle, es necesario seleccionar la vista MEMO
- Al seleccionar MEMO se puede ver el código completo de cada registro
- En el caso de la tabla FormasDelta, se puede ver el código fuente de las ventanas o formas
- De igual manera, al colocar la vista MEMO, se ven las funciones utilizadas por el ambiente de desarrollo
- Dentro de la tabla, en la columna frm se encuentra el diseño de la ventana, pero con muchos símbolos. Ahí se encuentran los controles y botones
miércoles, 8 de abril de 2015
Alta Rápida de Artículos
[wpdm_package id='15635']
[youtube kdaA1unzJFA]
Etiquetas:
Ajustes,
existencia,
existencia negativo,
fillgrid,
grid,
malla,
modifica existencia,
negativo,
negativo existencia,
programacion,
Tips,
validador,
verificador
domingo, 15 de marzo de 2015
Alinear y Centrar el texto del ticket con PadC, PadL y PadR
- PadL(cadenaTexto,Longitud). Rellena de espacios a la izquierda; Alineación a la Derecha
- PadR(cadenaTexto,Longitud). Rellena de espacios a la derecha; Alineación a la Izquierda
- PadC(cadenaTexto,Longitud). Rellena de espacios al centro; Alineación Centrado
[wpdm_package id='15368']
Para lograrlo, crearemos tres funciones, aunque PadL ya viene por default, aquí la colocaremos.
Sub Main()
'La letra posterior a PAD es el lado que se rellenará de espacios
a = padL ("Frase de prueba",40) 'Relleno IZQUIERDO. Alinea a la derecha
b = PadC ("Frase de prueba",40) 'Ambos lados. Alinear al centro
c = PadR ("Frase de prueba",40) 'Relleno DERECHO. Alineación a la izquierda
mymessage "PadL: '" & a & "'" & vbcrlf & _
"PadC: '" & b & "'" & vbcrlf &_
"PadR: '" & c & "'"
End Sub
'PADL() Alineación a la DERECHA inserta los caracteres de relleno a la Izquierda
Function PadL(cadena,nLongitud)
dim clen
dim temp
dim char
char = " " 'espacio en blanco
on error resume next
'Tomamos la cadena enviada en el parámetro
'eliminando los chares vacios izq-dch
temp = trim(cadena)
clen = len(temp)
for n=1 to nLongitud
char = char & " "
Next
'Analizamos si la nLongitud justificada es menos
'que la propia cadena enviada en parámetro.
if clen < nLongitud then
temp = mid(char,1,nLongitud - clen) & temp 'Alineación a la Derecha
end if
PadL = temp
end function
'PADR() Alineación a la IZQUIERDA inserta los caracteres de relleno a la derecha
Function PadR(cadena,nLongitud)
dim clen
dim temp
char = " " 'espacio en blanco
on error resume next
'Tomamos la cadena enviada en el parámetro
'eliminando los chares vacios izq-dch
temp = trim(cadena)
clen = len(temp)
for n=1 to nLongitud
char = char & " "
Next
'Analizamos si la nLongitud justificada es menos
'que la propia cadena enviada en parámetro.
if clen < nLongitud then
temp = temp & mid(char,1,nLongitud - clen) 'Alineación a la Izquierda
end if
PadR = temp
end function
'PADC() Alineación al CENTRO inserta los caracteres de relleno a ambos lados
Function PadC(cadena,nLongitud)
dim clen
dim temp
char = " " 'espacio en blanco
'on error resume next
'Tomamos la cadena enviada en el parámetro
'eliminando los chares vacios izq-dch
temp = trim(cadena)
clen = len(temp)
for n = 1 to nLongitud
char = char & " "
Next
'Espacios al lado Izquierdo
nEspaciosA = formato((nLongitud - clen)/2 , "#.0")
DondeEstaElPunto = clAt( ".", nEspaciosA ) - 1
'Espacios al lado derecho
nEspaciosA = mid(nEspaciosA,1,DondeEstaElPunto)
nEspaciosB = nLongitud -clen - nEspaciosA
'Analizamos si la nLongitud justificada es menos
'que la propia cadena enviada en parámetro.
if clen < nLongitud then
temp = mid(char,1,nEspaciosA) & _
temp & _
mid(char,1,nEspaciosB) 'Alineación a la Izquierda
end if
PadC = temp
end function
Espero sea de utilidad estas funciones que dejo a su disposición en espera de que correspondan con un pomo para seguir inspirados.
Saludos
José Félix
jueves, 29 de enero de 2015
Query para MultiCombo
Estas son las consultas que se hacen desde el objeto DB Multicombo
| Query | SqlColumna | Retorno | Largo1 | Largo2 | Largo3 |
| Almacenes | SELECT almacen , descrip FROM almacen ORDER BY almacen | 0 | 0 | 0 | 0 |
| Articulos | SELECT descrip As descripcion, articulo, linea, existencia, kit, precio1, unidad, costo_u FROM prods ORDER BY descrip | 1 | 3500 | 0 | 7000 |
| Articulos para venta | SELECT descrip As 'DESCRIPCION', articulo, linea, existencia, kit, precio1 FROM prods WHERE paraventa <> 0 order BY descrip | 1 | 4000 | 0 | 7500 |
| Artículos por clave | SELECT prods.articulo, prods.descrip FROM prods ORDER BY prods.articulo | 0 | 1500 | 5000 | 7000 |
| Articulos por descripción | SELECT descrip As descripcion, articulo, linea, existencia, kit, precio1 FROM prods ORDER BY descrip | 0 | 5000 | 0 | 7000 |
| Centros de costo | SELECT * FROM ctocto | 0 | 0 | 0 | 0 |
| Clasificación de inventario | SELECT clasificacion FROM prods GROUP BY clasificacion ORDER BY clasificacion | 0 | 0 | 0 | 0 |
| Claves adicionales de articulos | SELECT clavesadd.articulo , clavesadd.clave , clavesadd.dato1 , clavesadd.dato2 FROM clavesadd ORDER BY clavesadd.articulo | 1 | 0 | 0 | 0 |
| Clientes | SELECT nombre AS 'Nombre', cliente ,telefono, calle, colonia , pobla, estado FROM clients ORDER BY cliente | 1 | 6000 | 0 | 8000 |
| Clientes por clave | SELECT cliente, nombre, telefono FROM clients ORDER BY cliente | 0 | 2000 | 3500 | 7500 |
| Clientes por descripcion | SELECT nombre,cliente AS 'CLAVE' ,telefono, calle, colonia, pobla, estado FROM clients ORDER BY nombre | 0 | 3500 | 0 | 7000 |
| ClientesNC | SELECT clients.nombre, devolucionespocket.cliente FROM clients, devolucionespocket WHERE clients.cliente = devolucionespocket.cliente GROUP BY devolucionespocket.cliente, clients.nombre ORDER BY nombre | 1 | 3500 | 6500 | |
| Cobradores | SELECT nombre, cobrador FROM cobrad ORDER BY nombre | 1 | 0 | 0 | 0 |
| Código de formatos | SELECT descrip , formato , tipo, codigo FROM formatos ORDER BY descrip | 3 | 0 | 0 | 0 |
| Colonia | SELECT colonia FROM clients GROUP BY colonia ORDER BY colonia | 0 | 4000 | 0 | 7000 |
| Colores | SELECT descrip, color FROM colores ORDER BY descrip | 1 | 4000 | 2000 | 7000 |
| Comisionistas | SELECT comisionista FROM auxclients GROUP BY comisionista ORDER BY comisionista | 0 | 4000 | 0 | 7000 |
| Compras confirmadas | SELECT compra, proveedor, f_emision AS 'FECHA' FROM compras WHERE tipo_doc = 'COM' AND estado = 'CO' order BY compra | 0 | 1000 | 2000 | 5000 |
| Conceptos de Abonos | SELECT descrip AS DESCRIPCION, clave_con AS 'CLAVE' FROM concxc WHERE tipo_cxc = 'A' ORDER BY descrip | 1 | 0 | 0 | 0 |
| Conceptos de abonos a proveedores | SELECT descrip, clave_con AS 'CLAVE' FROM concxp WHERE tipo_cxc = 'A' ORDER BY descrip | 1 | 0 | 0 | 0 |
| Conceptos de Cargos | SELECT descrip, clave_con AS 'CLAVE' FROM concxc WHERE tipo_cxc = 'C' ORDER BY descrip | 1 | 0 | 0 | 0 |
| Conceptos de cobranza | SELECT descrip AS 'Descripción', clave_con AS 'Concepto' , tipo_cxc AS 'Cargo/Abono' FROM concxc ORDER BY descrip | 1 | 4000 | 0 | 7000 |
| Conceptos de cuentas por pagar | SELECT descrip, clave_con FROM concxp ORDER BY descrip | 1 | 0 | 0 | 0 |
| Conceptos de egresos | SELECT descrip AS 'DESCRIPCION', concepto FROM conegre ORDER BY descrip | 1 | 3500 | 0 | 7000 |
| Conceptos de entrada al inventario | SELECT descrip, tipo_movim FROM tipominv WHERE ent_sal = 'E' ORDER BY descrip | 1 | 3500 | 500 | 5000 |
| Conceptos de gastos | SELECT descrip AS 'DESCRIPCION' , concepto FROM conpres ORDER BY descrip | 1 | 3000 | 0 | 5000 |
| Conceptos de ingreso | SELECT descrip AS 'DESCRIPCION' , concepto FROM coningre ORDER BY descrip | 1 | 0 | 0 | 0 |
| Conceptos de salidas de inventario | SELECT descrip, tipo_movim FROM tipominv WHERE ent_sal = 'S' ORDER BY descrip | 1 | 3500 | 0 | 6000 |
| Contactos | SELECT clients.nombre, contacto.contacto, contacto.apellidop, contacto.apellidom, contacto.id FROM contacto LEFT JOIN clients ON contacto.cliente = clients.cliente ORDER BY clients.nombre, contacto.contacto | 4 | 0 | 0 | 0 |
| Contactos por cliente | SELECT clients.nombre As 'Nombre' , contacto.contacto , contacto.apellidop , contacto.apellidom, contacto.id FROM contacto LEFT JOIN clients ON contacto.cliente = clients.cliente | 4 | 3500 | 0 | 7000 |
| CostosAdicionales | SELECT costoadicional, descrip AS descripcion FROM costosadic ORDER BY descrip ASC | 0 | 0 | 2500 | 5000 |
| Devoluciones | SELECT * FROM devoluc | 0 | 0 | 0 | 0 |
| Direcciones de embarque | SELECT nombre, cliente FROM clients ORDER BY nombre | 1 | 6000 | 1000 | 7000 |
| Estaciones | SELECT estacion FROM estaciones ORDER BY estacion | 0 | 2000 | 0 | 5000 |
| Estados | SELECT estado FROM clients GROUP BY estado ORDER BY estado | 0 | 4000 | 0 | 5000 |
| Etapas | SELECT etapas.Etapa , etapas.Descrip FROM etapas ORDER BY etapas.Etapa | 0 | 0 | 3000 | 0 |
| Fabricantes | SELECT fabricante, nombre FROM fabricantes ORDER BY fabricante | 0 | 0 | 5000 | 7000 |
| Facturas | SELECT no_referen AS 'Documento', venta, f_emision AS 'Fecha' , cliente FROM ventas WHERE tipo_doc = 'FAC' AND estado = 'CO' | 0 | 0 | 0 | 0 |
| Familias | SELECT familia FROM prods GROUP BY familia ORDER BY familia | 0 | 6000 | 0 | 6000 |
| Formatos | SELECT formato , descrip, usufecha FROM formatosDelta ORDER BY formato | 0 | 0 | 0 | 0 |
| Grupos de cuentas | SELECT * FROM gpocta | 0 | 0 | 0 | 0 |
| Impuestos | SELECT impuesto , descrip FROM impuestos ORDER BY impuesto | 0 | 0 | 0 | 0 |
| Impuestos por porcentaje | SELECT descrip , valor FROM impuestos ORDER BY impuesto | 1 | 0 | 0 | 0 |
| Inventarios | SELECT * FROM invfis | 0 | 0 | 0 | 0 |
| Inventarios físicos | SELECT invfis.inventario, invfis.almacen, invfis.fecha, invfis.estado FROM invfis | 0 | 0 | 0 | 0 |
| Líneas de Artículos | SELECT descrip As 'Descripción', linea FROM lineas ORDER BY descrip | 1 | 4000 | 1000 | 7000 |
| Lotes | SELECT lote, articulo, cantidads AS 'Existencia', numero as 'Pedimento' FROM lotes WHERE cantidads > 0 | 0 | 0 | 0 | 7000 |
| Marcas de Artículos | SELECT descrip As 'Descripción', marca FROM marcas ORDER BY descrip | 1 | 3000 | 0 | 0 |
| Marcas por clave | SELECT marca, descrip FROM marcas | 0 | 1000 | 2000 | 5000 |
| Modelos | SELECT modelo, descrip FROM modelos ORDER BY modelo | 0 | 0 | 0 | 0 |
| Monedas | SELECT moneda,descrip AS 'Descripcion' FROM monedas ORDER BY moneda | 0 | 0 | 0 | 0 |
| NotasCredito | SELECT ventas.no_referen AS 'Documento', clients.nombre AS 'Nombre' FROM ventas, clients WHERE ventas.cliente = clients.cliente AND ventas.tipo_doc = 'DV' AND ventas.estado = 'CO' ORDER BY ventas.no_referen | 0 | 2000 | 5000 | 8000 |
| Ofertas | SELECT formato , descrip, usufecha FROM formatosdelta WHERE grupo = 'Oferta' ORDER BY formato | 0 | 0 | 0 | 0 |
| Partidas de compra | SELECT partcomp.articulo, partcomp.cantidad, partcomp.precio, partcomp.descuento, partcomp.observ FROM partcomp, compras WHERE compras.compra = partcomp.compra ORDER BY articulo | 0 | 0 | 0 | 0 |
| Partidas de venta | SELECT partvta.articulo, prods.descrip, partvta.cantidad, partvta.precio, partvta.descuento FROM partvta, prods, ventas WHERE partvta.articulo = prods.articulo AND ventas.venta = partvta.venta | 0 | 0 | 0 | 0 |
| Pendientes | SELECT * FROM respues | 0 | 0 | 0 | 0 |
| Procedimientos y rutinas de usuario | SELECT formatos.descrip , formatos.formato FROM formatos WHERE formatos.Tipo = 'Programa' | 1 | 0 | 0 | 0 |
| Proveedores | SELECT nombre, proveedor, telefono, calle, colonia, pobla, estado FROM proveed ORDER BY nombre | 1 | 4000 | 0 | 7000 |
| Proveedores por clave | SELECT proveed.proveedor, proveed.nombre FROM proveed ORDER BY proveed.proveedor | 0 | 3500 | 3500 | 8000 |
| Remisiones | SELECT no_referen AS 'Documento', venta, f_emision AS 'Fecha' , cliente FROM ventas WHERE tipo_doc = 'REM' AND estado = 'CO' ORDER BY no_referen | 0 | 0 | 0 | 0 |
| Remisiones para devolución | SELECT no_referen AS 'Documento' , f_emision AS 'Fecha' , cliente, venta FROM ventas WHERE estado = 'CO' | 0 | 1500 | 0 | 5000 |
| Repartidores | SELECT * FROM repartidor | 0 | 1500 | 2500 | 7000 |
| Reportes | SELECT formato, descrip, grupo FROM formatos WHERE tipo = 'Reporte' | 0 | 0 | 0 | 0 |
| Series disponibles | SELECT * FROM series WHERE entregado = 0 | 1 | 0 | 0 | 0 |
| SeriesNC | SELECT serieNC AS 'Serie' FROM estaciones WHERE serieNC <> '' GROUP BY serieNC | 0 | 3000 | 0 | 5000 |
| SeriesTickets | SELECT serieTicket AS 'Serie' FROM estaciones WHERE serieTicket <> '' GROUP BY serieTicket | 0 | 3000 | 0 | 5000 |
| Subfamilia1 | SELECT subfamilia FROM prods GROUP BY subfamilia ORDER BY subfamilia | 0 | 6000 | 0 | 6000 |
| Subfamilia2 | SELECT subfam1 FROM prods GROUP BY subfam1 ORDER BY subfam1 | 0 | 6000 | 0 | 6000 |
| Subfamilia3 | SELECT subfam2 FROM prods GROUP BY subfam2 ORDER BY subfam2 | 0 | 6000 | 0 | 6000 |
| Sucursales | SELECT sucursal.sucursal , sucursal.descrip FROM sucursal ORDER BY sucursal.sucursal | 0 | 0 | 0 | 0 |
| Tallas | SELECT descrip, talla FROM tallas ORDER BY descrip; | 1 | 4000 | 3000 | 7000 |
| Tickets | SELECT no_referen AS 'Ticket' FROM ventas WHERE tipo_doc = 'REM' AND ticket <> 0 AND enfac = 0 | 0 | 3000 | 0 | 5000 |
| Tipos de clientes | SELECT descrip AS 'Descripción', tipo FROM tipos ORDER BY tipo | 1 | 3000 | 1000 | 6000 |
| Tipos de pendientes | SELECT tipopend.descrip, tipopend.tipopend FROM tipopend ORDER BY tipopend.descrip | 1 | 3500 | 0 | 5000 |
| Tipos de póliza | SELECT * FROM tipopol | 0 | 0 | 0 | 0 |
| Tipos de Polizas | SELECT * FROM tipopol | 0 | 0 | 0 | 0 |
| Tipos de proveedores | SELECT tipoprov AS 'Tipo' , descrip AS 'Descripción' FROM tiposprov | 0 | 2000 | 0 | 5000 |
| Tipos de teléfono | SELECT tipotel.descrip , tipotel.tipotel FROM tipotel ORDER BY tipotel.Descrip | 1 | 3500 | 0 | 6000 |
| TTaemontosMulti | SELECT a.articulo, a.descrip Descripción, round(precio1 * (1+( b.valor/100)),0) Monto FROM prods a, impuestos b WHERE a.impuesto = b.impuesto and CHARINDEX('Telcel', articulo)=0 and a.tiempoAire = 1 and a.bloqueado = 0 order by a.DESCRIP | 0 | 1800 | 3100 | |
| TTaemontosTelcel | SELECT a.articulo, a.descrip Descripción, round(precio1 * (1+( b.valor/100)),0) Monto FROM prods a, impuestos b WHERE a.impuesto = b.impuesto and CHARINDEX('Telcel', articulo)>0 and a.tiempoAire = 1 and a.bloqueado = 0 order by a.DESCRIP | 0 | 1800 | 3100 | |
| Tutor | SELECT articulo, descrip FROM prods ORDER BY descrip | 0 | 0 | 0 | 0 |
| Ubicación en almacen | SELECT descrip AS 'descripción', ubicacion FROM ubicacion ORDER BY descrip | 1 | 2500 | 0 | 6000 |
| Usuarios | SELECT usuario, nombre FROM usuarios | 0 | 0 | 0 | 0 |
| UsuariosGB | SELECT usuariosGreenBox.idTeller AS 'Usuario', usuariosGreenBox.name AS 'Nombre' FROM usuariosGreenBox ORDER BY usuariosGreenBox.name | 0 | 1000 | 5000 | 7500 |
| Vendedores | SELECT nombre, vend AS 'Vendedor' FROM vends ORDER BY nombre | 1 | 4000 | 0 | 7500 |
| Ventas | SELECT ventas.venta, ventas.cliente FROM ventas, clients WHERE ventas.cliente = clients.cliente | 1 | 0 | 0 | 0 |
| Ventas pendientes | SELECT venta, f_emision AS 'Fecha' , cliente FROM ventas WHERE estado = 'PE' ORDER BY no_referen | 0 | 0 | 0 | 0 |
| Ventas sin cancelar | SELECT no_referen AS 'Documento' , f_emision AS 'Fecha' , cliente, venta FROM ventas WHERE estado = 'CO' AND tipo_doc = 'FAC' ORDER BY venta | 3 | 0 | 0 | 0 |
| Zonas de clientes | SELECT zona , descrip FROM zonas ORDER BY zona | 0 | 2000 | 3500 | 7000 |
Etiquetas:
Ajustes,
consultas,
flecha abajo,
from,
multicombo,
programacion,
queries,
query,
select,
sql,
Tips
lunes, 19 de enero de 2015
Importar desde texto .txt
Este ejemplo muestra como importar un archivo txt
Esta función podría ser una opción para interconectar mybusiness pos con otras herramientas externas de una forma sencilla. Utilizo la importación para descifrar la respuesta de tiempo aire y funciona bastante bien.
Sub Main()
Dim s, cliente, telefono, dondeEstaEltabulador
Dim Query, rstCliente
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
CloseFile 1
OpenFile "c:\clientes.txt", 1
While Not FileEOF( 1 )
s = ReadLine( 1 )
dondeEstaEltabulador = clAt( Chr(9), s )
cliente = Mid( s, 1, dondeEstaElTabulador - 1 )
cliente = Replace( cliente, Chr(34), "" )
s = Mid( s, dondeEstaElTabulador + 1 )
dondeEstaEltabulador = clAt( Chr(9), s )
nombre = Mid( s, 1, dondeEstaElTabulador - 1 )
nombre = Replace( nombre, Chr(34), "" )
telefono = Mid( s, dondeEstaElTabulador + 1 )
telefono = Replace( telefono, Chr(34), "" )
Set rstCliente = Rst( _
"SELECT cliente FROM clients WHERE cliente = '" & cliente & "'", _
Ambiente.Connection )
Query.Reset
If rstCliente.EOF Then
Query.strState = "INSERT"
Else
Query.strState = "UPDATE"
Query.Condition = "cliente = '" & cliente & "'"
End If
' Tabla, campo, valor
Query.AddField "clients", "cliente", cliente
Query.AddField "clients", "nombre", nombre
Query.AddField "clients", "telefono", telefono
Query.CreateQuery
Query.Execute
Wend
CloseFile 1
End Sub
Esta función podría ser una opción para interconectar mybusiness pos con otras herramientas externas de una forma sencilla. Utilizo la importación para descifrar la respuesta de tiempo aire y funciona bastante bien.
jueves, 15 de enero de 2015
Teclas de Función (F1 hasta F12) y KeyCode
En MyBusiness POS se pueden especificar algunas teclas de función para necesidades específicas. Por default, las teclas que están ocupadas son
Después de esta lista, es posible identificar las teclas de función que se encuentran disponibles:
El procedimiento que permite aplicar la personalización se llama PUNTOV080 (Configuración--Personalización--Procedimientos y rutinas de usuario--PuntoV080).
Es posible usar el KeyCode = Valor
[wpdm_package id='15383']
- F1. Ayuda desde MyBusiness POS.
- F2. Menú de Opciones que muestra los comandos a ejecutar.
- F5. Terminar una venta y abrir la ventana de Cobro rápido.
- F7. Dejar la venta como pendiente. Esto puede ser de utilidad cuando un cliente aun no decide terminar las compras y con ello es posible atender a un segundo cliente en ese lapso de indecisión por parte del primero.
- F8. Recuperar una venta de un cliente en específico.
- F9. Coloca el foco en el textbox de Cliente.
- F11. realiza corte X
- F12. Realiza corte Z
Después de esta lista, es posible identificar las teclas de función que se encuentran disponibles:
- F3. Libre
- F4. Libre
- F6. Libre
- F10. Libre
El procedimiento que permite aplicar la personalización se llama PUNTOV080 (Configuración--Personalización--Procedimientos y rutinas de usuario--PuntoV080).
Es posible usar el KeyCode = Valor
[wpdm_package id='15383']
Teclas de Función (F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12)
| Constante | Valor | Descripción |
| vbKeyF1 | 112 | Tecla F1 |
| vbKeyF2 | 113 | Tecla F2 |
| vbKeyF3 | 114 | Tecla F3 |
| vbKeyF4 | 115 | Tecla F4 |
| vbKeyF5 | 116 | Tecla F5 |
| vbKeyF6 | 117 | Tecla F6 |
| vbKeyF7 | 118 | Tecla F7 |
| vbKeyF8 | 119 | Tecla F8 |
| vbKeyF9 | 120 | Tecla F9 |
| vbKeyF10 | 121 | Tecla F10 |
| vbKeyF11 | 122 | Tecla F11 |
| vbKeyF12 | 123 | Tecla F12 |
| vbKeyF13 | 124 | Tecla F13 |
| vbKeyF14 | 125 | Tecla F14 |
| vbKeyF15 | 126 | Tecla F15 |
| vbKeyF16 | 127 | Tecla F16 |
Constantes de códigos de tecla
| Constante | Valor | Descripción |
| vbKeyLButton | 1 | Botón primario del mouse |
| vbKeyRButton | 2 | Botón secundario del mouse |
| vbKeyCancel | 3 | Tecla CANCEL |
| vbKeyMButton | 4 | Botón central del mouse |
| vbKeyBack | 8 | Tecla RETROCESO |
| vbKeyTab | 9 | Tecla TAB |
| vbKeyClear | 12 | Tecla SUPR |
| vbKeyReturn | 13 | Tecla ENTRAR |
| vbKeyShift | 16 | Tecla MAYÚS |
| vbKeyControl | 17 | Tecla CTRL |
| vbKeyMenu | 18 | Tecla MENÚ |
| vbKeyPause | 19 | Tecla PAUSA |
| vbKeyCapital | 20 | Tecla BLOQ MAYÚS |
| vbKeyEscape | 27 | Tecla ESC |
| vbKeySpace | 32 | Tecla BARRA ESPACIADORA |
| vbKeyPageUp | 33 | Tecla RE PÁG |
| vbKeyPageDown | 34 | Tecla AV PÁG |
| vbKeyEnd | 35 | Tecla FIN |
| vbKeyHome | 36 | Tecla INICIO |
| vbKeyLeft | 37 | Tecla FLECHA IZQUIERDA |
| vbKeyUp | 38 | Tecla FLECHA ARRIBA |
| vbKeyRight | 39 | Tecla FLECHA DERECHA |
| vbKeyDown | 40 | Tecla FLECHA ABAJO |
| vbKeySelect | 41 | Tecla SELECT |
| vbKeyPrint | 42 | Tecla IMPRIMIR PANTALLA |
| vbKeyExecute | 43 | Tecla EXECUTE |
| vbKeySnapshot | 44 | Tecla SNAPSHOT |
| vbKeyInsert | 45 | Tecla INS |
| vbKeyDelete | 46 | Tecla SUPR |
| vbKeyHelp | 47 | Tecla AYUDA |
| vbKeyNumlock | 144 | Tecla BLOQ NUM |
Desde KeyA hasta KeyZ son iguales a sus equivalentes ASCII: 'A' hasta 'Z'
| Constante | Valor | Descripción |
| vbKeyA | 65 | Tecla A |
| vbKeyB | 66 | Tecla B |
| vbKeyC | 67 | Tecla C |
| vbKeyD | 68 | Tecla D |
| vbKeyE | 69 | Tecla E |
| vbKeyF | 70 | Tecla F |
| vbKeyG | 71 | Tecla G |
| vbKeyH | 72 | Tecla H |
| vbKeyI | 73 | Tecla I |
| vbKeyJ | 74 | Tecla J |
| vbKeyK | 75 | Tecla K |
| vbKeyL | 76 | Tecla L |
| vbKeyM | 77 | Tecla M |
| vbKeyN | 78 | Tecla N |
| vbKeyO | 79 | Tecla O |
| vbKeyP | 80 | Tecla P |
| vbKeyQ | 81 | Tecla Q |
| vbKeyR | 82 | Tecla R |
| vbKeyS | 83 | Tecla S |
| vbKeyT | 84 | Tecla T |
| vbKeyU | 85 | Tecla U |
| vbKeyV | 86 | Tecla V |
| vbKeyW | 87 | Tecla W |
| vbKeyX | 88 | Tecla X |
| vbKeyY | 89 | Tecla Y |
| vbKeyZ | 90 | Tecla Z |
Desde Key0 hasta Key9 son iguales a sus equivalentes ASCII: '0' hasta '9'
| Constante | Valor | Descripción |
| vbKey0 | 48 | Tecla 0 |
| vbKey1 | 49 | Tecla 1 |
| vbKey2 | 50 | Tecla 2 |
| vbKey3 | 51 | Tecla 3 |
| vbKey4 | 52 | Tecla 4 |
| vbKey5 | 53 | Tecla 5 |
| vbKey6 | 54 | Tecla 6 |
| vbKey7 | 55 | Tecla 7 |
| vbKey8 | 56 | Tecla 8 |
| vbKey9 | 57 | Tecla 9 |
Teclas del teclado numérico
| Constante | Valor | Descripción |
| vbKeyNumpad0 | 96 | Tecla 0 |
| vbKeyNumpad1 | 97 | Tecla 1 |
| vbKeyNumpad2 | 98 | Tecla 2 |
| vbKeyNumpad3 | 99 | Tecla 3 |
| vbKeyNumpad4 | 100 | Tecla 4 |
| vbKeyNumpad5 | 101 | Tecla 5 |
| vbKeyNumpad6 | 102 | Tecla 6 |
| vbKeyNumpad7 | 103 | Tecla 7 |
| vbKeyNumpad8 | 104 | Tecla 8 |
| vbKeyNumpad9 | 105 | Tecla 9 |
| vbKeyMultiply | 106 | Tecla SIGNO DE MULTIPLICACIÓN (*) |
| vbKeyAdd | 107 | Tecla SIGNO MÁS (+) |
| vbKeySeparator | 108 | Tecla INTRO (teclado numérico) |
| vbKeySubtract | 109 | Tecla SIGNO MENOS (-) |
| vbKeyDecimal | 110 | Tecla PUNTO DECIMAL (.) |
| vbKeyDivide | 111 | Tecla SIGNO DE DIVISIÓN (/) |
Etiquetas:
Ajustes,
Código,
codigo ascii tecla,
código fuente,
codigos teclado,
programacion,
tecla funcion,
tecla venta pendiente,
TPV
viernes, 5 de septiembre de 2014
Colocar logo en ticket USB
[youtube UPYM_iRZbmg]
La ruta donde encontramos el formato de ticket dentro del business manager es: Configuración--Presonalización--Formatos del sistema--Ticket USB
Trataremos de identificar la línea que dice IniciaDocumento y debajo de esta podemos colocar el logo
[youtube SzTYpXT_Gdg]
La ruta donde encontramos el formato de ticket dentro del business manager es: Configuración--Presonalización--Formatos del sistema--Ticket USB
Trataremos de identificar la línea que dice IniciaDocumento y debajo de esta podemos colocar el logo
IniciaDocumento 'tratamos de identificar esta línea, indica el inicio de la impresión
'Ruta del logo: C:\archivos de programa\MyBusiness POS 2012\images\logo.jpg
'El logo debe tener extensión logo.jpg
' Los valores Col(0), Row(0), Col(3),Row(4) son las coordenadas inicio y el tamaño
Picture Ambiente.path & "\Images\logo.jpg", Col(0), Row(0), Col(3),Row(4)
'EstableceImpresora "Mi Impresora laser" 'esta linea permite elegir impresora USB destino
EstableceFuente "Courier New", 8 'Fuente que tendra el ticket USB
Say 0,0.2, cSalida 'Alineación del texto, en pulgadas. cSalida es el texto a imprimir
FinDocumento 'Termina la Impresión USB
'
[youtube SzTYpXT_Gdg]
Etiquetas:
Ajustes,
Ayuda,
Código,
logo ticket,
programacion,
Ticket,
Tips,
TPV,
Ventas
miércoles, 3 de septiembre de 2014
PUNTOV001
En ocasiones necesitamos ajustar las columnas del punto de venta o hacer algunas modificaciones que nos permitan utilizar de manera más cómoda el punto de venta.
A continuación explico un poco sobre un procedimiento que viene en MyBusiness Pos, llamado PUNTOV001. Este se encuentra dentro del business manager, en la ruta configuracion--personalizacion--procedimientos y rutinas de usuario
A continuación explico un poco sobre un procedimiento que viene en MyBusiness Pos, llamado PUNTOV001. Este se encuentra dentro del business manager, en la ruta configuracion--personalizacion--procedimientos y rutinas de usuario
'Este procedimiento se ejecuta al abrir el punto de venta
Sub Main()
' Si la ventana va a aparecer maximizada
'Me.windowsMode = 0
'Titulo que aparece en la parte superior izquierda
Me.Caption = Ambiente.Empresa
'Formato con decimales
Me.formatoDeDinero = "##,##0.00"
Me.formatoDeDineroTotales = "##,##0.00"
Me.formatoDeDescuento = "##,##0"
Version2005 'llama a la función que tiene las dimensiones de algunas columnas
Me.MaxPartidas = 8 ' máximo registros que aparecen en el PV
' Limpiamos los mensajes
txtFields(3) = "" 'Libera el campo inferior izquierdo
' La variable reload si es falsa indica que la ventana del punto de venta
' todavia no realiza una venta
if Reload = False Then
Ambiente.Tag = 2
Script.RunProcess "PUNTOV053", Parent, Ambiente
end if ' invoca un procedimiento llamado puntov053
'txtFields(1) = Ambiente.Uid
fg2.Redraw = False 'desactiva el ajuste de malla
AjustaFlexGrid fg2 ' Toma las dimensiones de la malla a la pantalla
fg2.Redraw = True 'ejecuta el ajuste
' Coloca o quita la columna del impuesto
'fg2.ColWidth(5) = 1000
If Trim("" & Ambiente.rstEstacion("serieRemision")) = "" Then
Me.consecutivoRemisiones = Ambiente.Estacion & "Remision"
Else
Me.consecutivoRemisiones = Trim( "" & Ambiente.rstEstacion("serieRemision") ) & "Remision"
End If
If Trim("" & Ambiente.rstEstacion("serieTicket")) = "" Then
Me.consecutivoTickets = Ambiente.Estacion & "Ticket"
Else
Me.consecutivoTickets = Trim("" & Ambiente.rstEstacion("serieTicket")) & "Ticket"
End If
'Tpma los consecutivos de facruración
Me.serieFactura = Trim("" & Ambiente.rstEstacion("serieFactura"))
Me.serieTicket = Trim("" & Ambiente.rstEstacion("serieTicket"))
Me.serieRemision = Trim("" & Ambiente.rstEstacion("serieRemision"))
If Trim(Me.serieTicket) = "" Then
Me.serieTicket = Ambiente.Estacion
End If
If Trim(Me.serieRemision) = "" Then
Me.serieRemision = Ambiente.Estacion
End If
'Me.modeloScanner = "Scanner"
'Me.ActivaScannerOPOS
Me.usuarioRequerido = 0
fg2.ColWidth(18) = 0 'oculta la columna al dejarla en 0px de ancho
End Sub
Sub Version2005()
'Este bloque de código es el que
'permite ajustar las columnas en el punto de venta
'Me.DevolverEfectivo = True
Me.DevolverEfectivo = False
FormatoCantidad = "##,##0.000"
TimerComodin.Enabled = False
TimerComodin.Interval = 4000
TimerComodin.Enabled = True
fg2.ColWidth(6) = 5000 ' columna de descripción
fg2.ColWidth(9) = 1200 'columna de Precio de Lista (1, 2, 3, 4)
'fg2.ColWidth(1) = 1200 'Columna de Cantidad (QTY)
'fg2.ColWidth(2) = 1200 'Columna de Precio Unitario, sin incluir impuestos
'fg2.ColWidth(3) = 1200 'Columna de Descuento en Porcentaje (%)
'fg2.ColWidth(4) = 1200 'Columna de Importe
'fg2.ColWidth(5) = 1200 'Columna de Impuesto en Porcentaje (%)
'fg2.ColWidth(6) = 1200 'Columna de Descripción de Artículo
'fg2.ColWidth(7) = 1200 'Columna de Número de salida en el Kárdex
'fg2.ColWidth(8) = 1200 'Columna de Almacén del que se toma la mercancía
'columnas de presentaciones
'fg2.ColWidth(11) = 1200 'cantidad por presentación
'fg2.ColWidth(10) = 1200 'descripción de presentación
'fg2.ColWidth(12) = 1200 'Costo de producto
'fg2.ColWidth(13) = 1200 'Columna especial para viaje
'fg2.ColWidth(14) = 1200 'Columna de Impuesto especial
'fg2.ColWidth(15) = 1200 'Columna Precio Unitario, con impuesto
'fg2.ColWidth(16) = 1200 'Columna Importe total, con impuesto
'fg2.ColWidth(17) = 1200 'Columna Donativo
'fg2.ColWidth(18) = 1200 'columna para Incluir en el próximo CorteZ
End Sub
'
Etiquetas:
Código,
fg2,
grid,
llenar malla,
malla,
programacion,
punto de venta,
puntov001,
Soporte,
Tips,
TPV,
Ventas
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
domingo, 24 de agosto de 2014
Cómo importar una ventana o formulario (.bfr) a MyBusiness POS
Los archivos .BFR se actualizan de la siguiente manera:
1. Entramos a MyBusiness POS con una clave de “Supervisor”
2. Nos dirigimos a la barra de tareas_ Programación _Ambiente de desarrollo y damos un clic en ese icono
3. Vamos al menú Archivo, seleccionamos Abrir
4. Seleccionamos el archivo con extensión BFR y aceptamos la actualización
5. Con este proceso ya tenemos actualizado el formulario, solo damos un clic en el icono “guardar” y lo ejecutamos en MyBusiness POS en la operación normal del sistema. Para algunos formatos podemos ejecutar la prueba desde el mismo editor, solo damos clic en el ultimo icono que tiene forma de triángulo (Run)
[youtube uqUpAvcUYfI]
1. Entramos a MyBusiness POS con una clave de “Supervisor”
2. Nos dirigimos a la barra de tareas_ Programación _Ambiente de desarrollo y damos un clic en ese icono
3. Vamos al menú Archivo, seleccionamos Abrir
4. Seleccionamos el archivo con extensión BFR y aceptamos la actualización
5. Con este proceso ya tenemos actualizado el formulario, solo damos un clic en el icono “guardar” y lo ejecutamos en MyBusiness POS en la operación normal del sistema. Para algunos formatos podemos ejecutar la prueba desde el mismo editor, solo damos clic en el ultimo icono que tiene forma de triángulo (Run)
[youtube uqUpAvcUYfI]
Etiquetas:
Formatos,
importar bfr,
programacion,
Respaldos,
Soporte,
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
Cómo hacer una consulta a la tabla de clientes
En esta ocasión mostramos un ejemplo de una ventana que consulta a la tabla de clientes y permite hacer el filtro por nombre.
[wpdm_package id='15038']
Este es el código fuente
[wpdm_package id='15038']
Este es el código fuente
Sub Form_load()
'José Félix 20140812
'jofelchez@gmail.com
'Ejemplo de cómo hacer una consulta a la tabla de clientes
TxtCliente.TabIndex = 0
aceptar.Default = True
'TxtCliente.PasswordChar = "*"
'TxtCliente.BackColor = 0
'TxtCliente.ForeColor = vbGreen
'TxtCliente.font.size = 14
Me.Caption = "Ejemplo de consulta a cliente"
Set mc1 = Me.Controls.Add("DBMultiCombo.MultiCombo","mc1", Me)
With mc1
.Left = TxtCliente.Left
.Top = TxtCliente.Top
.Width = TxtCliente.Width + 450
.Height = TxtCliente.Height
Set .Connection = Ambiente.Connection
Set .txtObject = TxtCliente
.Buscar = "Clientes"
.Visible = True
Set TxtCliente.Container = mc1
End With
End Sub
Sub Button_Click()
Dim cUsuario
Dim cPassword
Dim nPos
Dim s
If ControlEvento.Tag = "cancelar" Then
bolAceptar = False
DescargaForma
Exit Sub
End If
'consulta a la base de datos
Set rstCliente = CreaRecordSet( _
"SELECT * FROM clients WHERE cliente = '" & TxtCliente & "'", _
Ambiente.Connection )
'En caso de que no se encuentre el usuario envía mensaje de error
If rstCliente.EOF Then
'Progress.Destroy
MyMessage "Error:" & vbCrLf & "No existe el cliente indicado"
EstableceFoco
Exit Sub
End If
mymessage " Cliente: " & rstCliente("cliente") & vbCrLf & " Nombre: " & rstCliente("nombre")
End Sub
Sub EstableceFoco()
TxtCliente.Setfocus
TxtCliente.SelStart = 0
TxtCliente.SelLength = Len( TxtCliente )
End Sub
Sub Text_KeyUp()
'Este bloque permite responder a una tecla
'En caso de
If KeyCode = 40 Then
Select Case ControlEvento.Tag
Case "TxtCliente"
TxtCliente.Container.ShowData
End Select
End If
'en caso de
If KeyCode = 27 Then
DescargaForma
'Exit Sub
End If
End Sub
Etiquetas:
Ajustes,
Base de Datos,
bfr,
cliente,
Código,
programacion,
Tips
viernes, 23 de mayo de 2014
BARTICULOS001
https://www.facebook.com/helpmybusinesspos/videos/1656512364448632/
El siguiente bloque de código BARTICULOS001 es el que permite visualizar desde el punto de venta, la ventana de artículos donde se muestra la clave, descripción y precio unitario. Describiremos un poco cada línea de código.
Para abrir y modificar este bloque de código, necesitamo ir a la siguiente ruta, dentro del Business Manager:
CONFIGURACIÓN--PERSONALIZACIÓN--PROCEDIMIENTOS Y RUTINAS DE USUARIO
El siguiente bloque de código BARTICULOS001 es el que permite visualizar desde el punto de venta, la ventana de artículos donde se muestra la clave, descripción y precio unitario. Describiremos un poco cada línea de código.
Para abrir y modificar este bloque de código, necesitamo ir a la siguiente ruta, dentro del Business Manager:
CONFIGURACIÓN--PERSONALIZACIÓN--PROCEDIMIENTOS Y RUTINAS DE USUARIO
Public Sub Main()
Dim strSQL 'Definición de variables
Set rstProds = SQLProdsSQLServer() ' invocamos al procedimiento SQLProdsSQLServer y asignamos el resultado a rstProds
SetSessionValue Ambiente, "CONDICIONDEBUSQUEDA", ""
End Sub
'Funcion SQLProdsSQLServer
Function SQLProdsSQLServer()
Dim s
'evaluamos la variable Var1
If clEmpty( Ambiente.Var1 ) Then
Ambiente.Var1 = " prods.descrip "
End If
'Iniciamos con la consulta, aquí mismo definimos también el nombre de los encabezados de cada columna.
s = ""
s = s & "SELECT "
s = s & "prods.articulo As 'Clave', "
s = s & "prods.descrip AS 'UNIDAD DE CONSUMO', "
s = s & "prods.precio1 * ( 1 + (impuestos.valor / 100) ) As 'Precio', "
s = s & "prods.existencia, "
s = s & "existenciaalmacen.existencia As 'Almacen " & Ambiente.Almacen & "', "
s = s & "prods.articulo "
s = s & "FROM prods "
s = s & "INNER JOIN impuestos ON prods.impuesto = impuestos.impuesto "
s = s & "LEFT JOIN existenciaalmacen ON prods.articulo = existenciaalmacen.articulo AND existenciaalmacen.almacen = " & Ambiente.Almacen
s = s & "WHERE prods.bloqueado = 0 "
s = s & cNull(GetSessionValue(Ambiente, "CONDICIONDEBUSQUEDA"))
'Evaluamos filtros adicionales. aquí es donde considera la condición que aplicamos antes de presionar la flecha hacia abajo
If Not clEmpty(cFiltro) Then
If Not clEmpty(Condition) Then
s = s & " AND (prods.descrip LIKE '%" & Cambia("%", " ", cFiltro) & "%' OR prods.articulo LIKE '%" & Cambia("%", " ", cFiltro) & "%') AND " & Condition & " ORDER BY " & Ambiente.Var1
Else
s = s & " AND (prods.descrip LIKE '%" & Cambia("%", " ", cFiltro) & "%' OR prods.articulo LIKE '%" & Cambia("%", " ", cFiltro) & "%') ORDER BY " & Ambiente.Var1
End If
Else
If Not clEmpty(Condition) Then
s = s & " ORDER BY " & Ambiente.Var1
Else
s = s & " ORDER BY " & Ambiente.Var1
End If
End If
'Ejecutamos la consulta antes estructurada y se guarda el resultado en rstProds
Set rstProds = CreaRecordSetEnCliente( (s), Ambiente.Connection)
Set SQLProdsSQLServer = rstProds 'guardamos el arreglo de datos en la variable SQLProdsSQLServer
'Especificamos el ancho de las columnas, iniciando desde la columna 0 y considerando el orden en que estructura la consulta
Set TDBGrid1.DataSource = rstProds
AnchoColumna 0, 2000
AnchoColumna 1, 6500
AnchoColumna 2, 2000
AnchoColumna 3, 1000
AnchoColumna 4, 1000
AnchoColumna 5, 2500
'Para las columnas de tipo numérico podemos colocar el formato numérico y con la cantidad de decimales apropiada
FormatoColumna 2, 1, "##,##0.00"
FormatoColumna 3, 1, Ambiente.FDinero
FormatoColumna 4, 1, Ambiente.FDinero
'Termina la función
End Function
Etiquetas:
Ajustes,
barticulos001,
buscador inteligente,
Código,
programacion,
Tips
domingo, 9 de febrero de 2014
Cómo poner imagen en ticket de MyBusiness POS
[wpdm_package id='15747']
[youtube UPYM_iRZbmg]
Para todos los usuarios de MyBusiness POS que no quieren que les aparezca el logo de la empresa en el ticket (en primera, ocupa más papel; en segundo lugar, si la impresora es de matriz de puntos, también se gasta la cinta de esta y la calidad no es nada agradable). los pasos son los siguientes:
1. Una vez abierto del sistema como Administrador, en la parte del Business Manager tenemos que encontrar la siguiente ruta:
2. Personalización + Procedimientos del Usuario
3. Dentro de esta carpeta buscamos el procedimiento que se llama "FORMATOTEXTO". lo abrimos para editarlo
4. En alguna parte de este pequeño archivo nos menciona algo parecido a esto:
lo que vamos a hacer es dejar esta linea como comentario (ponemos una apóstrofo al principio de la línea) para que no aparezca la imagen y quedaría así
5. Hacemos una prueba. Ya no aparecerá la imagen; sin embargo, aún se desperdicia la misma cantidad de papel.
6. Para reducir la cantidad de papel, el espacio que ocupaba la imagen, vamos a poner también como comentario las líneas que están dentro de la estructura "For" (nuevamente, colocando un apóstrofo en al principio de cada línea).
También es posible cambiar el Tamaño y la Fuente de los tickets (Propiedades p.Font.Name y p.Font.Size), quedando así.
Guardamos los cambios y listo...Problema solucionado.
[youtube UPYM_iRZbmg]
Para todos los usuarios de MyBusiness POS que no quieren que les aparezca el logo de la empresa en el ticket (en primera, ocupa más papel; en segundo lugar, si la impresora es de matriz de puntos, también se gasta la cinta de esta y la calidad no es nada agradable). los pasos son los siguientes:
1. Una vez abierto del sistema como Administrador, en la parte del Business Manager tenemos que encontrar la siguiente ruta:
2. Personalización + Procedimientos del Usuario
3. Dentro de esta carpeta buscamos el procedimiento que se llama "FORMATOTEXTO". lo abrimos para editarlo
4. En alguna parte de este pequeño archivo nos menciona algo parecido a esto:
Picture Ambiente.path & "\Images\logo.jpg".......
lo que vamos a hacer es dejar esta linea como comentario (ponemos una apóstrofo al principio de la línea) para que no aparezca la imagen y quedaría así
'Picture Ambiente.path & "\Images\logo.jpg"
5. Hacemos una prueba. Ya no aparecerá la imagen; sin embargo, aún se desperdicia la misma cantidad de papel.
6. Para reducir la cantidad de papel, el espacio que ocupaba la imagen, vamos a poner también como comentario las líneas que están dentro de la estructura "For" (nuevamente, colocando un apóstrofo en al principio de cada línea).
También es posible cambiar el Tamaño y la Fuente de los tickets (Propiedades p.Font.Name y p.Font.Size), quedando así.
p.Font.Name = "Arial" 'La recomendable es Courier New
p.Font.Size = 8
Guardamos los cambios y listo...Problema solucionado.
Etiquetas:
Código,
configuración,
formato,
Impresora,
programacion,
Ticket,
tipo imagenes soportada,
Tips
viernes, 4 de octubre de 2013
Cambiar la estructura de las búsquedas
Más adelante explicaré cómo podemos utilizar esta información para hacer nuestras propias consultas y ventanas desde cero en MyBusiness Pos
Etiquetas:
Ajustes,
articulos,
Código,
existencias,
programacion,
Tips,
Ventas
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
jueves, 19 de septiembre de 2013
Dónde guarda el código MyBusiness POS?
Tal vez te has preguntado cómo es que almacena las modificaciones el sistema MyBusiness POS. Los scripts se almacenan e dos tablas:
Cabe destacar que no todo el código es visible por el usuario; aproximadamente un 30% es código duro que no de puede editar. Sin embargo, el código visible es suficiente para crear nuevos desarrollos a la medida.
Espero que esta informaicón sea de utilidad para futuros desarrolladores de módulos.
- FormasDeltaEsta tabla almacena todos los códigos que utiliza el sistema para la mayoría de las ventanas que utilizamos y podemos modificar con el editor gráfico
- FormatosDeltaEsta tabla almacena los procedimientos, formatos de impresión y formatos de reportes que tiene el sistema
Cabe destacar que no todo el código es visible por el usuario; aproximadamente un 30% es código duro que no de puede editar. Sin embargo, el código visible es suficiente para crear nuevos desarrollos a la medida.
Espero que esta informaicón sea de utilidad para futuros desarrolladores de módulos.
Etiquetas:
Ajustes,
Base de Datos,
Código,
delta,
my business pos,
MyBusiness pos 2012,
programacion
viernes, 12 de julio de 2013
Antes de aceptar un código lo dividimos en partes
Código que se ejecuta al presionar la Tecla F2 en el punto de Venta
Sub Main()
If LCase(Articulo) = "_ini" Then
Script.RunProcess "GREENBOXINI", Me, Ambiente
CancelaProceso = True
Exit Sub
End If
If LCase(Articulo) = "_setup" Then
Script.RunProcess "GREENBOXALTA", Me, Ambiente
CancelaProceso = True
Exit Sub
End If
If LCase(Articulo) = "_tellerscatalog" Then
Script.RunProcess "GREENBOXCAJEROS", Me, Ambiente
CancelaProceso = True
Exit Sub
End If
If LCase(Articulo) = "_ta" Then
Script.RunProcess "GREENBOXTIEMPOAIRE", Me, Ambiente
CancelaProceso = True
Exit Sub
End If
If LCase(Articulo) = "_tv" Then
Script.RunProcess "GREENBOXVERIFICAR", Me, Ambiente
CancelaProceso = True
Exit Sub
End If
If Articulo = "CONSULTA EXISTENCIA" Then
Script.RunForm "CC05", Me, Ambiente,, True
CancelaProceso = True
Exit Sub
End If
'Set rstArt = CreaRecordSet( "SELECT peso FROM prods WHERE articulo = '" & Articulo & "'", Ambiente.Connection )
'If Not rstArt.EOF Then
' Me.Descuento = rstArt("peso")
'End If
'Call incrementaProducto()
' Articulo es una variable que entrega el dato que se capturo en
' el punto de venta
If Trim( Ucase(Articulo) ) = "ADMISION" Then
If Me.Venta = 0 Then
MyMessage "Es necesario capturar al menos de un producto"
CancelaProceso = True
Exit Sub
End If
Script.RunForm "MIFORMA", Me, Ambiente, , True
'PlaySound Ambiente.Path & "\sounds\s03.wav"
CancelaProceso = True
End If
Me.usuarioRequerido = 0
If clAt( "VPZ", Articulo ) = 1 Then
Call recuperaVenta()
CancelaProceso = True
End If
If Ucase(Trim(Articulo)) = "EXR" Then
CancelaProceso = True
Script.RunForm "EXISTENCIAREMOTA", Me, Ambiente,, True
End If
Version2005
'Call calculaPrecioDecaja()
End Sub
Sub calculaPrecioDeCaja()
Dim rstClaveAdd
Dim rstArticulo
Set rstClaveAdd = CreaRecordSet( "SELECT articulo, cantidad FROM clavesadd WHERE clave = '" & Me.Articulo & "'", Ambiente.Connection )
If rstClaveAdd.EOF Then
Exit Sub
End If
If rstClaveAdd("cantidad") = 1 Then
Exit Sub
End If
Set rstArticulo = CreaRecordSet( "SELECT precio3 FROM prods WHERE articulo = '" & Trim(rstClaveAdd("articulo")) & "'", Ambiente.Connection )
If Not rstArticulo.EOF Then
Me.PrecioEspecial = rstArticulo("precio3")
End If
End Sub
Sub recuperaVenta()
Dim rstVenta, nVenta
nVenta = Val2( Mid( Articulo, 4 ) )
Set rstVenta = CreaRecordSet( _
"SELECT * FROM ventas WHERE venta = " & nVenta, _
Ambiente.Connection )
If rstVenta.EOF Then
' El campo 3 despliega los mensajes en el punto de venta
txtFields(3) = "Venta no encontrada"
Exit Sub
End If
If rstVenta("estado") <> "PE" Then
txtFields(3) = "Venta no valida"
Exit Sub
End If
Set Me.rstVenta = rstVenta
Set Me.rstPartidas = CreaRecordSet( _
"SELECT * FROM partvta WHERE venta = " & nVenta, _
Ambiente.Connection )
Me.Venta = nVenta
Me.Modo = "MODIFICACION"
Me.Reload = True
Me.ReiniciaVenta
Eventos
Me.CalculaImportes
End Sub
Sub Version2005
Dim rstEmpleado
Dim cEmpleado
Dim Query
Dim nPos
Dim cCodigo
Dim cPeso
Dim rstAsistencia
Dim Contenido
' Articulo es una variable que entrega el punto de venta
' Esto proceso todos los comandos del punto de venta
Call ValidaComando
'validaNumeroDePartidas
If UCase(Trim(Articulo)) = "CENEFASXMARCA" Then
Script.RunForm "CENEFASXMARCA", Me, Ambiente,, True
CancelaProceso = True
End If
If UCase(Trim(Articulo)) = "CENEFAS" Then
Script.RunForm "CENEFAS", Me, Ambiente,, True
CancelaProceso = True
End If
If Ucase(Trim(Articulo)) = "BORDADO" Then
Script.RunForm "BORDADO", Me, Ambiente,, True
End If
If Ucase(Trim(Articulo)) = "LONAS" Then
Script.RunForm "LONAS", Me, Ambiente,, True
End If
If Ucase(Trim(Articulo)) = "ESTAMPADO01" Then
Script.RunForm "ESTAMPADO", Me, Ambiente,, True
End If
If Ucase(Trim(Articulo)) = "ESTAMPADO02" Then
Script.RunForm "ESTAMPADO02", Me, Ambiente,, True
End If
If Ucase(Trim(Articulo)) = "ESTAMPADO03" Then
Script.RunForm "ESTAMPADO03", Me, Ambiente,, True
End If
'SumaCantidades
' Articulo es una variable publica que contiene el dato que leyo el lector
' o que tecleo el usuario hasta el momento de presionar un enter
nPos = clAt( "*", Articulo )
' cantidadDeArticulos es una variable publica que indica la cantidad
' de productos que va a aceptar el punto de venta
If nPos > 0 Then
cantidadDeArticulos = Val2( Mid( Articulo, 1, nPos - 1 ) )
Articulo = Mid( Articulo, nPos + 1 )
End If
' Para articulos con peso
If clAt( "ARTICULOPARAPESO", Articulo ) = 1 Then
cCodigo = Mid( Articulo, 3, 5 )
cPeso = Mid( Articulo, 8 )
Articulo = cCodigo
CantidadDeArticulos = (Val2(cPeso) / 10000)
End if
nPos = clAt( "CLI", Articulo )
' La varable cancelaProceso termina el flujo de programa interno de MyBusiness
' Parecido a Exit Sub
If nPos = 1 Then
txtFields(0) = Mid( Articulo, 4 )
txtFields(4) = ""
CancelaProceso = True
ChecaSaldo txtFields(0)
ColocaFoto txtFields(0)
End If
If clAt( "EMP", Articulo ) = 1 Then
cEmpleado = UCase(Mid( Articulo, 4 ))
Set rstEmpleado = CreaRecordSet( "SELECT * FROM empleados WHERE empleado = '" & cEmpleado & "'", Ambiente.Connection )
If rstEmpleado.EOF Then
txtFields(3) = "Empleado no existe"
cancelaProceso = True
txtFields(4) = ""
PlaySound Ambiente.Path & "\sounds\error.wav"
Exit Sub
End If
'Set rstEmpFecha = CreaRecordSet( "SELECT * FROM asistencia WHERE empleado = '" & cEmpleado & "' AND fecha = " & fechaSQL( Date, Ambiente.Connection ), Ambiente.Connection )
'If Not rstEmpFecha.EOF Then
' txtFields(3) = "Usted ya fue registrado"
' cancelaProceso = True
' txtFields(4) = ""
' PlaySound Ambiente.Path & "\sounds\error.wav"
' Exit Sub
'End If
'PlaySound Ambiente.Path & "\sounds\ready.wav"
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Query.strState = "INSERT"
Query.AddField "asistencia", "id", TraeSiguiente( "asistencia", Ambiente.Connection )
Query.AddField "asistencia", "fechahora", Formato( Date, "dd-MM-yyyy" ) & ":" & Formato( Time, "hh:mm:ss" )
Query.AddField "asistencia", "retardo", Retardo( rstEmpleado("horaentrada") )
Query.AddField "asistencia", "empleado", cEmpleado
Query.AddField "asistencia", "fecha", Date
Query.CreateQuery
Query.Execute
txtFields(3) = rstEmpleado("nombre") & " " & Formato( Date, "dd-MM-yyyy" ) & ":" & Formato( Time, "hh:mm:ss" )
CancelaProceso = True
txtFields(4) = ""
If Not clEmpty( rstEmpleado("imagen") ) Then
CreaHTML "", "
"
End If
End If
If Ucase(Trim(Articulo)) = "ARTICULOS PROMOCIONALES" Then
Script.RunProcess "GALAXIA", Me.Parent, Ambiente
CancelaProceso = True
txtFields(4) = ""
End If
If Mid(UCase(Trim(Articulo)),1,6) = "MONEDA" Then
cambiaMonedaDeLaVenta Trim(Mid( Articulo, 7 ))
cancelaProceso = True
End If
'Call ValidaExistencia()
End Sub
Sub ValidaExistencia()
Dim rstProd
Set rstProd = CreaRecordSet( "SELECT alm" & Ambiente.Almacen & " FROM prods WHERE articulo = '" & articulo & "'", _
Ambiente.Connection )
If Not rstProd.EOF Then
If rstProd(0) <= 0 Then
Me.OperacionBloqueada = True
txtFields(3) = "Existencia insuficiente, operación bloqueada"
CancelaProceso = True
PlaySound Ambiente.Path & "\sounds\Existencia.wav"
End If
End If
End Sub
Sub cambiaMonedaDeLaVenta( cMoneda )
Dim rstVenta, rstMoneda, Query, rstMonedaOriginal
Set rstVenta = CreaRecordSet( _
"SELECT * FROM ventas WHERE venta = " & Me.Venta, Ambiente.Connection )
Set rstMoneda = CreaRecordSet( _
"SELECT * FROM monedas WHERE moneda = '" & cMoneda & "'", Ambiente.Connection )
If Not rstMoneda.EOF Then
Me.Moneda = cMoneda
Me.tipoDeCambio = rstMoneda("tc")
Else
Exit Sub
End If
If rstVenta.EOF Then
Exit Sub
End If
If Ucase(Trim(rstVenta("moneda"))) = UCase(Trim(cMoneda)) Then
Exit Sub
End If
Ambiente.Connection.Execute _
"UPDATE partvta SET precio = precio * " & FormatoDecimal( rstVenta("tipo_cam") ) & ", " & _
"preciobase = preciobase * " & FormatoDecimal( rstVenta("tipo_cam") ) & ", " & _
"donativo = donativo * " & FormatoDecimal( rstVenta("tipo_cam") ) & " " & _
"WHERE venta = " & Me.Venta
Ambiente.Connection.Execute _
"UPDATE partvta SET precio = precio / " & FormatoDecimal( Me.tipoDeCambio ) & ", " & _
"preciobase = preciobase / " & FormatoDecimal( Me.tipoDeCambio ) & ", " & _
"donativo = donativo / " & FormatoDecimal( Me.tipoDeCambio ) & " " & _
"WHERE venta = " & Me.Venta
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
Query.Reset
Query.strState = "UPDATE"
Query.Condition = "venta = " & Me.Venta
Query.AddField "ventas", "moneda", Me.Moneda
Query.AddField "ventas", "tipo_cam", Me.tipoDeCambio
Query.CreateQuery
Query.Execute
Parent.ReLoad = True
ReiniciaVenta
CalculaImportes
End Sub
Sub ChecaSaldo( Cliente )
Dim rstSaldo, rstCobranza, Html
Set rstSaldo = CreaRecordSet( "SELECT * FROM clients WHERE cliente = '" & Cliente & "'", _
Ambiente.Connection )
If rstSaldo.EOF Then
Exit Sub
End If
CreaHTML "",""
If rstSaldo("Saldo") <= 0 Then
Exit Sub
End If
PlaySound "c:\saldo.wav"
Set rstCobranza = CreaRecordSet( _
"SELECT * FROM cobranza WHERE cliente = '" & cliente & "' AND saldo > 0", _
Ambiente.Connection )
html = ""
While Not rstCobranza.EOF
html = html & ""
html = html & "Documento " & rstCobranza("tipo_doc") & _
rstCobranza("no_referen") & " " & rstCobranza("Saldo")
html = html & "
"
rstCobranza.MoveNext
Wend
CreaHTML "",(Html)
End Sub
Function Retardo( strHora )
Dim intMinutos
Dim intMinutosActual
Dim nPos
Dim strHoraActual
Dim tolerancia
tolerancia = 10
nPos = clAt( ":", strHora )
intMinutos = Val2( Mid( strHora, 1, nPos - 1) ) * 60
intMinutos = intMinutos + Val2( Mid( strHora, nPos + 1 ) )
strHoraActual = Formato( Time(), "hh:mm" )
nPos = clAt( ":", strHoraActual )
intMinutosActual = Val2( Mid( strHoraActual, 1, nPos - 1) ) * 60
intMinutosActual = intMinutosActual + Val2( Mid( strHoraActual, nPos + 1 ) )
If intMinutosActual > (intMinutos + tolerancia) Then
Retardo = intMinutosActual - intMinutos
Else
Retardo = 0
End If
End Function
Sub ColocaFoto( cCliente )
Dim cHtml
cHtml = "
"
CreaHTML "", (cHtml)
End Sub
Sub SumaCantidades()
' Buscamos si el artículo ya esta en el GRID
For n = 1 to fg2.Rows - 1
If clEmpty( fg2.TextMatrix( n, 0 ) ) Then
Exit For
End If
Set rstArtAux = Rst("SELECT tiempoaire FROM prods WHERE articulo = '" & Trim(Articulo) & "'", Ambiente.Connection)
If Trim(fg2.TextMatrix( n, 0 )) = Trim(Articulo) AND Val2(rstArtAux("tiempoaire")) <> 0 Then
Ambiente.Connection.Execute "UPDATE partvta SET cantidad = cantidad + 1 WHERE id_salida = " & fg2.TextMatrix( n, 7 )
fg2.TextMatrix( n, 1 ) = Val2( fg2.TextMatrix( n, 1 ) ) + 1
txtFields(4) = ""
CancelaProceso = True
Exit Sub
End If
Next
End Sub
Sub validaNumeroDePartidas
Dim rstPartidas
Set rstPartidas = CreaRecordSet( _
"SELECT COUNT( * ) FROM partvta WHERE venta = " & Me.Venta, _
Ambiente.Connection )
If Val2( rstPartidas(0) ) >= 4 Then
MyMessage "No es posible capturar mas de 4 partidas"
CancelaProceso = True
End If
End Sub
Sub ValidaComando()
If clAt( "/", Articulo ) > 0 And clAt( "//", Articulo ) = 0 Then
Call cantidaporPrecio()
Exit Sub
End If
If Trim(UCase(Articulo)) = "COMPRAS" Then
Set Compras = CreateObject( "MyBCompras.Compras" )
Set Compras.Ambiente = Ambiente
Compras.NuevaCompra True
End If
If Len( Trim( Articulo ) ) <> 4 Then
Exit Sub
End If
If clAt( "Z", UCase(Articulo) ) <> 1 Then
Exit Sub
End If
Select Case UCase(Articulo)
Case "Z001"
Script.RunForm "ALTACLIENTE", Me, Ambiente,, True
Case "Z002"
Me.OperacionBloqueada = False
txtFields(3) = "Operación Reactivada"
Case "Z003"
Me.FinalizaOperacion
Case "Z004"
Script.RunForm "ALTARAPIDA", Me, Ambiente,, True
Case "Z005"
If Question(Mensaje(642, Ambiente)) Then
Me.BorraVenta = True
Me.FinalizaOperacion
End If
Case "Z006"
Me.RecuperaVentaDeCliente
Case "Z007"
If txtFields(0).Enabled Then
txtFields(0).SetFocus
End If
Case "Z008"
AplicaDescuento
Case "Z009"
Script.RunProcess "CORTEX", Me, Ambiente
Case "Z010"
Script.RunProcess "CORTEZ", Me, Ambiente
Case "Z011"
Script.RunForm "PAGOEFECTIVO", Me, Ambiente,, True
Case "Z012"
Script.RunForm "COBROENEFECTIVO", Me, Ambiente,, True
Case "Z013"
Set rstUsuventas = CreaRecordSet( "SELECT * FROM usuventas WHERE usuario = '" & Ambiente.Uid & "'", Ambiente.Connection )
If rstUsuventas.EOF Then
Script.RunForm "DEVOLUCIONES", Me, Ambiente, True
'Exit Sub
End If
If Val2( rstUsuventas("devpunto") ) <> 0 Then
Script.RunForm "DEVOLUCIONES", Me, Ambiente, True
'Exit Sub
Else
MyMessage "No tiene derecho a hacer devoluciones, solicite el permiso con su supervisor"
'Exit Sub
End If
Case "Z014"
Script.RunForm "TICKETAFACTURA", Me, Ambiente,, True
'Case "Z016"
'
' Me.ActivaCobranza
Case "Z015"
Script.RunProcess "PUNTOV063", Me, Me.Ambiente
Case "Z016"
Script.RunForm "RETICKET", Me, Ambiente,, True
'Case "Z019"
'
' MyMessage "CONTROL + F12 Editar datos cliente" & vbCrLf & "CONTROL + F7 Editar guión" & vbCrLf & "SHIFT + F3 Colocar cursor en campo repartidor" & vbCrLf & "SHIFT + F4 Alta de repartidor"
Case "Z017"
Script.RunForm "FCAJA", Me, Ambiente,, True
Case "Z018"
Script.RunForm "CAMBIOUSUARIO", Me, Ambiente,, True
'Case "Z022"
'
' Script.RunProcess "VENTASCOLECTOR", Me, Me.Ambiente
Case "Z019"
Calculadora Ambiente
Case "Z020"
Script.RunProcess "ABRECAJON", Me, Me.Ambiente
Case "Z021"
Script.RunForm "AUXCLIENTS", Parent, Ambiente,, True
Case "Z022"
Script.RunProcess "ELIMINAVENTA", Me, Me.Ambiente
Case "Z023"
Script.RunForm "VENTASOBSERV", Me, Ambiente,, True
Case "Z024"
Script.RunForm "VENTASDESC", Me, Ambiente,, True
Case "Z025"
Script.RunForm "CAMBIOVALEEFECTIVO", Me, Me.Ambiente,, True
Case "Z026"
Script.Runform "FACTURADECIERRE", Me, Ambiente,, False
Case "Z027"
Script.RunHuellaForm "REGISTROACCESO", Me, Ambiente,, True
'Case "Z028"
'Script.Runform "LISTADEPEDIDOS", Me, Ambiente,, True
End Select
CancelaProceso = True
txtFields(4) = ""
End Sub
Sub llenaPuntoDeVenta
Dim cLinea, dondeEstaLaComa, articulo
' CloseFile cierra un manejador de archivo
CloseFile 1
' OpenFile Abre un archivo de texto para lectura
OpenFile "c:\articulos.txt", 1
' FileEOF regresa true en caso de que el archivo
' de texto llegue a su final
While Not FileEOF( 1 )
' ReadLine lee una cadena de texto
' hasta que encuentra un retorno de carro
cLinea = ReadLine( 1 )
dondeEstaLaComa = clAt( ",", (cLinea) )
articulo = Mid(cLinea, 1, dondeEstaLaComa -1 )
' cantidadDeArticulos es una variable que
' entrega el punto de venta e indica la
' cantidad de productos que se va a ingresar
' en el punto de venta
cantidadDeArticulos = _
Mid( cLinea, dondeEstaLaComa + 1 )
' llenaPartidad Es un metodo que ingresa
' producto en el punto de venta
llenaPartida (articulo)
Wend
CloseFile 1
End Sub
Sub calculaPeso()
Dim rstArticulo, cArticulo, nPesos
nPos = clAt( "--", Articulo )
cArticulo = Mid( Articulo, nPos + 2 )
nPesos = Val2(Mid( Articulo, 1, nPos - 1 ))
Set rstArticulo = CreaRecordSet( _
"SELECT * FROM prods WHERE articulo = '" & cArticulo & "'", _
Ambiente.Connection )
If Not rstArticulo.EOF Then
Articulo = cArticulo
cantidadDeArticulos = nPesos / rstArticulo("precio1")
End If
End Sub
Function Permisos( permisoSolicitado )
Set rstUsuario = CreaRecordSet( _
"SELECT * FROM usuarios WHERE usuario = '" & Ambiente.uid & "'", Ambiente.connection )
If rstUsuario("supervisor") Then
cmdZ001.Caption = "Z001 Cambia o da de alta un cliente"
cmdZ002.Caption = "Z002 Quita bloqueo por error código de producto"
cmdZ003.Caption = "Z003 Confirma la venta o muestra ventana de cobro"
cmdZ004.Caption = "Z004 Da de alta o modifica un artículo"
cmdZ005.Caption = "Z005 Deja como pendiente la venta actual"
cmdZ006.Caption = "Z006 Muestra lista de ventas pendientes"
cmdZ007.Caption = "Z007 Posicionar el cursor en el campo de cliente"
cmdZ008.Caption = "Z008 Pantalla de descuentos"
cmdZ009.Caption = "Z009 Corte parcial X"
cmdZ010.Caption = "Z010 Corte total Z"
cmdZ011.Caption = "Z011 Permite capturar un ingreso de dinero a caja"
cmdZ012.Caption = "Z012 Permite capturar una salida de dinero a caja"
cmdZ013.Caption = "Z013 Realiza una devolución de mercancia en caja"
cmdZ014.Caption = "Z014 Convierte un ticket en factura"
cmdZ015.Caption = "Z015 Realiza el pago de la devolucion"
cmdZ016.Caption = "Z016 Cobranza a clientes"
cmdZ017.Caption = "Z017 Muestra información del próducto"
cmdZ018.Caption = "Z018 Re imprimir ticket"
cmdZ019.Caption = "Z019 Functiones ventas por teléfono (Informativo)"
cmdZ020.Caption = "Z020 Arqueo de efectivo"
cmdZ021.Caption = "Z021 Cambio de usuario"
cmdZ022.Caption = "Z022 Recupera ventas del colector"
cmdZ023.Caption = "Z023 Muestra la calculadora"
cmdZ024.Caption = "Z024 Abre el cajón de dinero"
cmdZ025.Caption = "Z025 Datos auxiliares del cliente"
cmdZ026.Caption = "Z026 Elimina la ultima venta"
cmdZ027.Caption = "Z027 Observaciones a la venta"
cmdZ028.Caption = "Z028 Descuento por importe"
Else
cmdZ001.Caption = "Z001 Cambia o da de alta un cliente"
cmdZ002.Caption = "Z002 Quita bloqueo por error código de producto"
cmdZ003.Caption = "Z003 Confirma la venta o muestra ventana de cobro"
cmdZ004.Caption = "Z005 Deja como pendiente la venta actual"
cmdZ005.Caption = "Z006 Muestra lista de ventas pendientes"
cmdZ006.Caption = "Z007 Posicionar el cursor en el campo de cliente"
cmdZ007.Caption = "Z011 Permite capturar un ingreso de dinero a caja"
cmdZ008.Caption = "Z012 Permite capturar una salida de dinero a caja"
cmdZ009.Caption = "Z015 Realiza el pago de la devolucion"
cmdZ010.Caption = "Z020 Arqueo de efectivo"
cmdZ011.Caption = "Z021 Cambio de usuario"
cmdZ012.Caption = "Z024 Abre el cajón de dinero"
cmdZ013.Caption = "Z025 Muestra la calculadora"
cmdZ014.Caption = "Z026 Elimina la ultima venta"
cmdZ015.Caption = "Z027 Observaciones a la venta"
cmdZ016.Caption = "Z028 Descuento por importe"
End If
End Function
Sub cantidaporPrecio()
Dim nPos, cCantidad, cArticulo, rstProd
Dim nPrecio
nPos = clAt( "/", Articulo )
cCantidad = Mid( Articulo,1, nPos - 1 )
cArticulo = Trim( Mid( Articulo, nPos + 1 ) )
Set rstProd = CreaRecordSet( "SELECT * FROM prods WHERE articulo = '" & cArticulo & "'", Ambiente.Connection )
If rstProd.EOF Then
Exit Sub
End If
nCantidad = Round( Val2( cCantidad ) / rstProd("precio1"), 4 )
If Not rstProd.EOF Then
cantidadDeArticulos = nCantidad
llenaPartida rstProd("Articulo")
End If
CancelaProceso = True
End Sub
Sub incrementaProducto()
Dim rstArticulo, Query
Set rstArticulo = CreaRecordSet( _
"SELECT articulo FROM prods WHERE articulo = '" & Me.Articulo & "' AND granel = 0 AND speso = 0", _
Ambiente.Connection )
Set Query = NewQuery()
Set Query.Connection = Ambiente.Connection
If rstArticulo.EOF Then
Exit Sub
End If
For n = 0 To fg2.Rows - 1
If clEmpty( fg2.TextMatrix( n, 0 ) ) Then
Exit For
End If
If Ucase( Trim( fg2.TextMatrix(n,0) ) ) = _
UCase( Trim(Me.Articulo) ) Then
Query.SQL = _
"UPDATE partvta SET cantidad = cantidad + 1 WHERE id_salida = " & _
fg2.TextMatrix(n,7)
Query.Exec
fg2.TextMatrix(n,1) = Val2(fg2.TextMatrix(n,1)) + 1
CancelaProceso = True
Me.CalculaImportes
Exit For
End If
Next
End Sub
Suscribirse a:
Entradas (Atom)
