Gestor de Restos y Bares con panel de control (Dashboard)

En este artículo seguimos con el tema anterior, el objetivo es crear un Gestor de Bares  y Restos, vamos a analizar cómo construir una aplicación que a primera vista parece compleja pero realmente es bastante simple con los conocimientos que ya hemos estado viendo. 
En esta oportunidad vamos a ver cómo pueden construir una especie de software o programa más avanzado, siempre con Excel pero van a ver que queda muy profesional. Y el panel de control o Dashboard es muy similar a los productos comerciales.

Esta especie de software puede ser utilizado también con paneles táctiles o pantallas táctiles, de esos que se ven el los restaurantes. Esta aplicación es para ser utilizada sin el teclado, solo necesitamos el mouse o, en el caso de que sea de pantalla táctil, los dedos.


Click en la imagen para ver el video o en este link.

En internet podemos encontrar que se venden miles de estas aplicaciones. El contenido básico es el mismo y no son tan complejas. Para que comprarlo si lo pueden hacer Uds. mismos, además le pueden dar la estética y configuración que les quedé más cómodo. Generalmente las aplicaciones vienen cerradas, poco versátiles y flexibles. Pueden jugar con los elementos hasta conseguir lo que les guste, al terminar será una creación propia con más valor que cualquiera que puedan comprar.

Para empezar vamos a ver que elementos podemos incluir en la aplicación. Se enumeran algunos, pueden agregarle los que consideren necesarios:

·         Mesas, disponibilidad.
·         Disposición de mesas, de la barra y del parking.
·         Estado de las mesas: libre, ocupado, pagado.
·         Camareros o meseros.
·         Lista de clientes.
·         Lista de pedidos.
·         Lista de platos o artículos disponibles.
·         Familias de artículos, por ejemplo bebidas y platos.
·         Caja, pagar, cobrar, etc.
·         Recuento de caja o arqueo, abrir y cerrar caja.
·         Imprimir cuenta.
·         Estadísticas.
·         Informes, imprimir informe.

Estos elementos ya se habían visto en el artículo anterior.  Vemos también que es algo más complejo en el sentido que tiene mayor funcionalidad y no que es más complicado poder crearlo.

Proceso:
El bar es pequeño, tiene 5 mesas, una barra y un cajero o administrador. Además tenemos una computadora (Desktop, Notebook, Laptop o Netbook) disponible para el administrador. Las mesas estas dispuestas en el bar con un cierto orden que no consideramos para el ejemplo, cada una tiene un nombre,  las ubicaciones son bien conocidas  por los meseros y el administrador. En este tipo de aplicaciones tenemos un dibujo que muestra la distribución de las mesas dentro de un espacio parecido al real, como se ve en el ejemplo.
El procedimiento de trabajo del bar es el siguiente, el mozo o mesero atiende a los clientes. Una vez que el cliente ingresa y se lo acomoda en una ubicación el mozo avisa que la mesa se ocupo. A partir de ese momento puede realizar un pedido hacia la mesa. Los pedidos son anotados por el administrador. Una vez que el cliente termina puede pedir la cuenta, de manera informal verbalmente o en forma de ticket. En ese momento el mozo solicita el ticket o el costo. El cliente paga y el administrador recibe y registra el pago. Para este caso se considera que la propina se paga aparte y se lo queda el mozo.
Ahora vamos a ver como se construyen los elementos utilizados:

·         Mesas: distribución, ubicación y ocupación.
En este caso, como queremos dar una idea espacial de la distribución de las mesas, utilizaremos un dibujo que representa el espacio que ocupa nuestro resto o bar. Es como dibujar el plano del local a escala, dónde ubicamos las mesas de acuerdo a la ubicación real. Para ellos utilizamos un ejemplo, esto puede hacerse de muchas maneras de acuerdo a nuestro criterio.


Como se ve en el ejemplo, utilizamos objetos comunes como rectángulos y líneas para dibujar las paredes. Para las mesas usamos rectángulos redondeados. Nada muy complicado, se pueden utilizar iconos, etc.
También se pueden observar unos círculos de colores, tipo semáforo. Esto es un formato condicional que utilizamos por sus propiedades. Al igual que el artículo anterior, el color rojo significa ocupado, el amarillo que se pidió la cuenta, el verde que se pago la cuenta y un color negreo que la mesa esta libre o vacía.
Cada objeto que representa una mesa tiene asociado una macro, esta macro contiene un código que realiza una serie de acciones pero la principal es mostrar los datos de la mesa seleccionada, es decir poner el numero de mesa en la celda correspondiente a ese dato. Por ejemplo en la imagen siguiente la mesa 2.


La macro del botón para elegir la mesa tiene la siguiente forma básica:

Sub Mesa2()
‘Mesa Macro, suponiendo que la celda es B5.
     Range("B5").FormulaR1C1 = "3"
‘dice 3 porque la barra es considerada como 1.
‘ el resto del código abajo
End Sub

Lo que hace el resto del código se explica mas adelante.

·         Productos
Para poder elegir el producto utilizamos objetos o imágenes. En nuestra aplicación utilizamos un área con varios rectángulos. Hay tantos rectángulos como productos. Pueden escribir dentro de cada rectángulo el producto de que se trata pero para hacerlo más cómodo y representativo del producto seleccionado es que nos conviene usar la imagen del producto como en el ejemplo. Lo que hacemos es buscar una  imagen representativa para cada producto y seleccionarlo como fondo del objeto. Luego para cada objeto se vincula una macro que introduce el código del producto correspondiente.

Por ejemplo para el plato 1, La macro es la siguiente:

Sub Plato1 ()
' Plato1 Macro
Range("B" & 8 + Range("N10").Value).Value = 1
End Sub



·         Lista de pedidos
En todas las aplicaciones tenemos una lista de los ítems o artículos pedidos en la mesa, es algo esencial en este tipo de uso.
Los datos principales que tenemos son, la mesa, el mesero, el estado de la mesa, la lista de ítems.


Por otro lado tenemos varios botones, como se ve en la figura. Tenemos un botón que nos sirve ara eliminar el dato de una fila en particular. Tenemos un botón, con forma de tacho de basura, que vacía los datos de toda la lista y tenemos 3 botones para los diferentes estado de la mesa (ocupado/actualizar pedido, cuenta, pagado).
Estos elementos cumplen varias funciones que explicaremos mas adelante. Básicamente el la columna código se introduce el código del elemento que como lo tenemos en otra hoja utilizando un “BuscarV” podemos rellenar las siguientes columnas. Lo único que debemos introducir es el código y la cantidad. Para no tenerlo que hacer con el teclado se utilizan dos tipos de elementos, para la cantidad se utiliza un teclado virtual, por llamarlo de alguna manera, y para los artículos o ítems utilizamos objetos que veremos más adelante.


El teclado que se ve a la derecha de la figura cumple las siguientes funciones.
·         Introducimos el código que es numérico
·         Puede borrar la cantidad para volver a introducirla.

Utilizamos para ello una macro modificada, la macro básica pone un número en la celda de la columna cantidad. Por ejemplo para el número nueve:

Sub Num9()
' Num1 Macro
If Range("O12").Value = 1 Then
Val1 = Range("D" & 7 + Range("N10").Value).Value
Range("D" & 7 + Range("N10").Value).Value = Val1 & 9
End If
End Sub

Para utilizar esta macro necesitamos datos auxiliares:


Estos datos se toman para la macro, el contar cantidad me dice cuantos ítems ingresados hay con en la columna cantidad y contar productos cuenta los códigos ingresados. Luego se utiliza una celda donde se compara los dos valores para saber en que estado esta la planilla. Los estados son 0, 1 y 2. En el código la celda con ese dato es la “O12”. El rango “N10” nos dice cuantos códigos se introdujeron en la columna código.

En el ejemplo estos datos están a la vista pero es para ponerlos en evidencia, estos datos se pueden obtener de distintas formas.

En síntesis, la macro va rellenando los valores de cantidad de acuerdo a lo introducido en la lista.
La lista también contiene el total de los elementos pedidos. Es una simple SUMA.

·         Caja, Cuentas Activas o transacciones “En Curso”
En este caso, necesitamos que cada vez que se cobra una mesa automáticamente se me guarde el importe en la caja, lo que sería la caja virtual.
En esta aplicación además de guardar el importe total guardamos todos los ítems consumidos así podremos generar estadísticas.
Tenemos una hoja denominada “En curso” donde volcamos el estado temporal para cada mesa ya que en la lista de pedidos no se pueden guardar todos los datos como lo hacíamos en el artículo anterior. Necesitamos guardar los datos y volver a traerlos cuando sea necesario.


Cuando seleccionamos una mesa y presionamos el botón “ocupado” se copia con una macro los datos de la lista de artículos a esta hoja, es decir que tenemos los datos temporalmente en esta hoja. Por eso el nombre ya que se vuelcan los datos de las transacciones en curso.
Cuando se cobra la mesa e ingresa el dinero a la caja se presiona el botón “pagado” que ejecuta otra macro que copia los datos de esta hoja a otra hoja de registro que llamamos “Diario”.


Esta hoja es la que utilizaremos para el arque o recuento de caja y para realizar las estadísticas del día. Por ejemplo números de platos consumidos, mesas más ocupadas, etc. Esta información puede ser útil por ejemplo para presupuestar el consumo diario de insumos, para saber que cambio diario necesito, etc.

Las macros anteriores no se explican ya que podemos utilizar ideas ya vistas, como ser copiar información de una celda a otro, o ingresar información de una celda a otra teniendo en cuenta la agrupación de elementos, es decir que ubica los datos ordenadamente en celdas vacías.

Hay un comentario impórtate acerca de listas largas o base de datos grandes, siempre cuando se trata de una lista de datos apilados tipo base de datos, lo mejor es tratar de usar la menor cantidad de formatos posibles en las celdas ya que de lo contrario la planilla puede pesar mucho con la sucesiva acumulación de datos. Recuerden que cada celda tiene asociada una serie de variables que se guardan como información.

·         Estado de las mesas
Vamos a ver el truco que utilizamos para el estado de las mesas, los semáforos de los que hablamos anteriormente.


Como ven tenemos la distribución de mesas y por otro lado se utiliza el estado de las mesas que se sacan de alguna de las hojas de datos que tenemos. Una vez que logramos el formato condicional en forma de semáforos, movemos las celdas hasta la posición de la mesa correspondiente.

·         Macro de estados: ocupado, cuenta, pagado.
En realidad, lo más importante de lo visto es el concepto pero vamos a hablar de cómo pueden construir las macros que necesitan.
Botón “Ocupado”
Este botón debe copiar la información actual de la lista de pedidos a la hoja “en curso” para la mesa correspondiente. Este botón también actualiza un pedido ya realizado.  Este botón también debe escribir en la celda “estado” que está ocupado, para la mesa correspondiente en la hoja “en curso”.
Hay que tener en cuenta que los datos a copiar están en un rango fijo, sin embargo el rango donde van esos datos para el ejemplo es variable. Es decir para la mesa 1 va en un rango, para la mesa 2 en otro y así sucesivamente. Por lo tanto hay que utilizar un condiciona para que de acuerdo al dato del numero de meza nos copia al rango correspondiente.
Botón “Cuenta”
Este botón cambia el estado de la mesa en la hoja “en curso” a CUENTA.
Botón “Pagado”
La macro para este botón tiene que hacer lo siguiente:
o   Cambiar el estado de la mesa a pagado, en la hoja “en curso”.
o   Copia los datos de la lista de la mesa correspondiente a la hoja Diario. Ya que se supone que una vez pagado lo de me mesa, el dinero entra en la caja. La hoja “diario” representaría el dinero total en la caja.

·         Lista de artículos o platos
En una hoja denominada “Productos”, en este caso pero puede tener cualquier nombre por ejemplo : artículos, etc.


Esta es una lista con los distintos productos, artículos, ítem, platos o como quieran llamarlo. La información mínima que necesitamos es el código o Id, la descripción corta del producto, el precio unitario, etc. La imagen con esta aplicación no es necesaria pero pueden utilizarla. Aquí agregan a la lista los productos que quieran hacia abajo.

·         Imprimir cuenta
Si quieren que su aplicación tenga la posibilidad de imprimir la cuenta, deben seleccionar el “área de impresión” correcta. En este caso el área del listado de mesas. Y pueden crear una macro, si quieren, para que mediante un botón puedan imprimir directamente la cuenta.

Con todos los elementos vistos podemos construir una aplicación interesante para gestionar nos vares y restos, u otra cosa.  Se intento explicar todos los elementos de la aplicación y cómo interactúan de una manera un tanto resumida ya que de otra manera se vuelve algo muy largo y poco llevadero. Esperamos que les sirvan las ideas.

Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas. Si tienen alguna duda o consulta pueden hacerlo a través del formulario de contacto.

Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.
¡Éxitos!

Keys:
·         Gestión de Bares, Restos, Restoranes o Restaurantes.
·         Administración de Bares, Restos, Restoranes o Restaurantes.
·         Manager of Bar and Restaurant with Excel. Bar and Restaurant Management.
·         Descargar Gratis Gestión Bares y Restaurantes.
·         Programa para Gestión de Bares y Restaurantes.

29 comentarios:

Giovanni Luis Barrantes L dijo...

Gracias.

Diego Mauricio Posada Martinez dijo...

Gracias por el proyecto esta muy bueno...
Estoy tratando de montarlo y ya voy muy avanzado por favor me explicas para que caso especificos se usarian los botones refrescar/guardar y el boton (*)asterisco.

gracias

Juan Pablo Torres dijo...

Hola Diego, cómo estas! Gracias por tus comentarios!
Recuerda que es una idea, no tiene que ser exactamente igual. Cada uno lo puede utilizar según sus necesidades y de acuerdo a su imaginación. En este caso estos botones están físicamente, se puede usar para otra cosa pero no cumplen ninguna función específica. También nos puedes escribir directamente desde el formulario de contacto. Saludos

Wasausky dijo...

Estimados tendran para descargar este Dashboard ya que no lo vi en su lista de descargas, y pregunta, esta listo para usar no? es solo confirgurar a la medida del rest? Gracias! Vlad.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Ese contenido no esta disponible para descargar aún. Esto se debe al hecho de que la intensión es que lo intenten y aprendan en el proceso. Además es solo una idea de cómo poder hacerlo, es limitativo en cuanto a su alcance ya que mostramos una plantilla ejemplo. En realidad se puede hacer algo totalmente customizado y a medida.
Con el blog y el video este artículo es bastante completo.
Esperamos tus comentarios! Recuerda que puedes escribir directamente con el formulario de contacto.
Saludos

Daniel Teruelo dijo...

Hola me interesa este tema,ya que tengo un restaurante y me hace falta, ahora les pido me ayuden a como tengo que hacer pra crearlo pues no tengo idea, sepan disculparme

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por tus comentarios!

Este artículo en particular esta bastante completo como para que puedes intentar hacerlo sin embargo a veces es necesario mayor o menos conocimiento de Excel. Puedes empezar con el artículo anterior, el de gestor de bares simple. Incluso si deseas ver los elementos y el código puedes descargarlo. Espero te hayan servido nuestros comentarios. Saludos

Ezequiel Perri dijo...

hola como estas? muy buena la aplicacion, una pregunta si tengo una impresora termica, puedo imprimir el ticket? como se hace? muchas gracias

Juan Pablo Torres dijo...

Hola, cómo estas amigo! Gracias por comentar!
Se puede hacer, claro, solo tendrás que configurar el modo de impresión para adaptarlo a la forma en que necesitas. Saludos

Ezequiel Perri dijo...

hola! gracias por responder, intento configurar la pagina pero no me sale la opcion de ponerle medidas manualmente, solo me salen hojas por defecto A4 A3 etc, te agradezco si me ayudas, muchas gracias!

Juan Pablo Torres dijo...

Hola Ezequiel, cómo estas!
La impresora térmica a la cual te refieres es de las que usan toner u otra?
- Hay impresoras que permiten imprimir diferentes tamaños, las de inyección de tinta en general. Si es de toner no estamos seguros, probablemente no.
Esperamos tus comentarios.
Sds

Gerardo Medina dijo...

Donde lo puedo descargar??

Juan Pablo Torres dijo...

Hola amigo, gracias por comentar! La puedes descargar de la tienda de aplcaciones. El banner a la derecha. Saludos

Unknown dijo...

Hola, estoy intentando realizar este Dashboard. pero me quedé estancado en la parte de OCUPADO, CUENTA Y PAGADO. No puedo codificar las macros y los formatos condicionales. Me preguntaba si se puede descargar aún esta plantilla. Mi correo es adrianzen712@gmail.com. Te agradecería que puedas compartir tu plantilla.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
Te sugerimos que empieces por la versión simple que es más fácil y puedes entender el procedimiento. Por otro lado, una vez que lo entiendes bien, se utilizan macros muy sencillas para poder hacerlo y ten en cuenta que es un ejemplo, lo puedes hacer de otra forma más simple o que te sirva a ti. Esto no es algo absoluto. La plantilla la puedes descargar de la zona de descargas. Además recuerda que nos puedes escribir directamente desde el formulario del blog. Saludos

Jhovanny Lopez Insuasti dijo...

Hola acabe de ller el articulo y me parece excelente hay alguna forma de descargar el app, soy propietario de un restaurante recientemente lo abri y me me parece un excelente aplicativo para implantarlo aqui muchas gracias. le dejo mi e-mail si me puede colaborar con eso jalinal99@gmail.com muchas gracias

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
Este artículo intenta mostrar la versatilidad que puede tener Excel para crear nuestras mini aplicaciones y también muestra una forma de hacerlo en cuanto a los elementos, etc. Es decir, que pretendemos que la gente lo tome e intente crearlo según sus necesidades, expectativas y su nivel de conocimiento.
Por otro lado hemos dejado la versión simple en la zona de descargas para que puedan ver los elementos, la otra versión la puedes ver en la tienda de aplicaciones donde hay una versión beta.
Saludos

fede casal dijo...

Estaría necesitando las formulas para las condiciones del teclado numérico, podrías ayudarme? Graciad

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por tus comentarios!
En el artículo están las condiciones, son 3. Debes crear la formulita de comparación. Si esta vacía la celda, escribe un 2. Si la cantidad de ítems cargado coincide con la cantidades introducidas escribe 2 y si tenemos un ítem sin cantidad escribe 1.
Veamos un ejemplo: si no hay ítems introducidos escribe 2.
Si se introducen dos ítems y para esos dos ítems se introdujeron las cantidades para cada ítem, esto daría 2.
Por último , si se introdujeron dos ítems pero solo la cantidad para el primero, es decir que la cantidad del segundo esta esperando ser cargada.
Espero se entienda, esa es la lógica que utilizamos. Quizás no es la única manera. Esperamos tus comentarios. Saludos

fede casal dijo...

Mil gracias, gracias, lo logre, no se si bien pero me sirve, ahora solo me estaria faltando como guardar cada mesa en su rango, puesto a que la macro es fija, necesitaria utilizar un condicional para que de acuerdo al dato del numero de meza me copie al rango correspondiente. Si puedes pasarme la info al mail con un ejemplo. Muchas gracias, muy bueno la verdad el sistema que usas.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En cuanto a tu consulta, nosotros mostramos una forma de guardar esos datos temporales. En realidad no tiene porque ser así, es solo una forma en este ejemeplo. Sin embargo te decimos que es cierto que debes usar un condicional, en este caso puede ser un "Select Case". Puedes investigar esa función, de otro modo te la puedes arreglar con "If..then..else..end". También recuerda que nos puedes escribir directamente mediante el formulario de contacto. Saludos

anderson forero dijo...

hola llevo haciendo este proyecto para mi bar y no e podido saber como hago para que cuando yo seleccione un producto baje de casilla al momento de seleccionar otro producto sin que me borre nada y la parte del teclado tactil tampoco lo entendi de reto ya llevo todo muy bien muchas gracias

Juan Pablo Torres dijo...

Hola Amigo Anderson, cómo estas! Gracias por tus comentarios.
Como utilizamos una macro para introducir la cantidad en cada fila del listado, necesitamos una vez introducida una cantidad en una fila "ir a la siguiente", lo que se hace es mediante un "contar" verificamos la cantidad de ítems ingresados y le decimos a la macro dónde tiene que ingresar el nuevo valor. Esto ya lo habíamos utilizados en otros artículos. En cuanto al teclado táctil es para que se use en el caso que tengas un monitor táctil sino directamente usas el mouse. Esto se hace así porque así esta en los programas que hay de este tipo de cosas pero lo puedes hacer como te sea más cómodo y obviarlo. Esperamos tus comentarios y también recuerda que nos puedes escribir directamente mediante el formulario de contacto del blog. Saludos

anderson forero dijo...

hola juan pablo muchas gracias por el aporte ya pude que la fila pase a la siguiente pero ahora tengo 2 problemas que me faltan para acabar mi proyecto los problemas son:
1) al momento de haber seleccionado el producto a la siguiente fila con contar todos los datos pasan PERO SIN formulas lo que me impide subir o bajar la cantidad de ventas por producto para que me sume o me reste el resultado final

2) agregue un boton eliminar y funciona lo unico malo es que me elimina las formulas

Juan Pablo Torres dijo...

Hola amigo, cómo estas!
En cuanto a tu consulta, para eso se utiliza en otra hoja los datos de la mesa. Es decir que la información que tienes ahí se vuelca temporalmente en la hoja de mesas, cuando cambias algo en la hoja de pedido en realidad lo que haces es actualizar la info de la hoja de mesas. No sé si se entiende. Es por eso que puedes tener formulas o lo que quieras, ya que al actualizar solo lleva el dato.
Esperamos tus comentarios.
Saludos

Olatz Sánchez dijo...

Hola, muy buena tu app y todo tu blog. Estoy trabajando en un proyecto similar a este para un laboratorio con control de usuarios por contraseña como en tu otro artículo y tablas dinámicas para que unos usuarios las manipulen y otros tengan acceso de sólo lectura, el caso es que como está ubicado el archivo en una carpeta compartida no pueden ingresar simultáneamente 2 o más usuarios. ¿Existe alguna forma de resolver esta situación?

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por tus comentarios!
En excel tienes la posibilidad de usar los archivos en forma colaborativa. Es decir que dos o más personas pueden manipularlo. Esta en la solapa "Revisar". Puedes consultar nuestro artículo de "Monitor de Cocina". Luego hay opciones más complejas por supuesto, una de ellas usar una base de datos "aparte" donde se vuelquen únicamente los datos y tenga acceso restringido. De ahí tomas los datos según el nivel de acceso de cada usuario. Revisa también el artículo de "Control de Acceso". Tenemos muchas más ideas que no están aun publicadas.
Esperamos tus comentarios.
Saludos

Olatz Sánchez dijo...

Gracias, ya encontré el problema, es cuestión del departamento de IT de la empresa donde trabajo. Pero en la computadora de mi casa si funcionó. Muchas gracias.

Juan Pablo Torres dijo...

Gracias por tus comentarios amigo. Saludos