Etiqueta: programacion
2 Herramientas para Programar MyBusiness POS
Esta herramienta 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.
Ingresar al Curso gratis HelpMBP
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)
Herramienta para Programar en MyBusiness POS
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 nombreHost Name: .\SQLEXPRESSAuthentication: Sql Server AuthenticationUser name: saPassword: 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 nombreHost Name:Su_Servidor\SQLEXPRESS, 1400Authentication: Sql Server AuthenticationUser name: saPassword: 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
Alta Rápida de Artículos
Tenemos un desarrollo para que puedas dar de alta los artículos de forma parecida a una hoja de Excel
Alta Rápida de Artículos
Alta Rápida - Inventario v20
Alta rápida - Inventario 2012
Alinear y Centrar el texto del ticket con PadC, PadL y PadR
En este ejemplo veremos cómo alinear el texto de un ticket con las funciones
- PadL(cadenaTexto,Longitud). Rellena de espacios a la izquierda; Alineación a la Derecha
- PadR(cadenaTexto,Longitud). Rellena de espacios a la derecha; Alineación a la Izquierda
- PadC(cadenaTexto,Longitud). Rellena de espacios al centro; Alineación Centrado
Alinear Texto con PadL, PadR y PadC
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
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 |