FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
El cobro
veamos una imagen En primer lugar pedir disculpas ya que esta pantalla no la tengo terminada e incluso debo corregir algunos componentes, el ancho de la misma al pulsar sobre teclado, etc. Como podemos ver uso nuevamente el sistema de 20 valores de moneda, dejando visible solo las que dispongamos, vemos arriba a la izquierda 5 displays, en diversos colores,creo que quedan claro para que son, luego 4 botones con los tipos de cobros, especificar de estos, simplemente el de banco es para pagarés y talones y el de otros, por si tenemos, vales, cupones, a cuenta(ya creada), descuento de una cantidad ya entregada o a crédito, por poner los más comunes. El botón a devolver se activa de manera automática en cuanto ha superado el total, pero podemos activarlo o desactivarlo a voluntad, por qué es el caso típico de que el ticket sea 5,20 €, y el cliente nos da 10,20 € para que le devolvamos un billete de 5,00 €, al pulsar sobre el billete de 10,00 € ya se nos activaría de manera automática el botón a devolver con lo que al pulsar sobre los 0,20 céntimos los daría como que los hemos devuelto. Dividir pago, esta pantalla no la tengo terminada, pero os pongo una imagen del form y os explico cual será el procedimiento que usare A la izquierda ira el ticket maestro y podremos ir pasando artículos del mismo a la derecha, como veis los botones apuntan todos hacia abajo y realmente debería ir hacia la derecha 1 con una flecha simple y otro con una flecha doble e igualmente dos botones pero hacia la izquierda el uso de estos es bastante simple, los simples pasan una unidad de ese artículo al panel contrario y los dobles todas las unidades que queden de ese artículo, claro esta al quedarse a 0 desaparece de ese listview. En el panel 1 faltan los botones confirmar y cancelar, realmente el confirmar, incluso sobraría ya que seria posible usarlo al darle a cobrar, que estos botones estén visibles dependerá del botón nuevo ticket, os hago un simple análisis del proceso. Al entrar en esta pantalla tenemos el ticket maestro a la derecha y en blanco a la izquierda y el aspecto del form es similar a la imagen puesta. Pulsamos nuevo ticket y aparecerán los botones confirmar y cancelar en panel 1 pasamos los diversos artículos al panel izquierdo que ya tendría su número de ticket. Pulsamos en cobrar (este si ve que la tabla esta en edit o append o insert, pulsa por código el botón confirmar) i nos pasa ala ventana de cobro. Una vez terminado el cobro nos devuelve a la de dividir ticket, hasta que quede vacio a la izquierda. Claro esta el último ticket a crear es lo que quede del maestro. Cada vez que se pulsa confirmar, sea directamente o por código, grabaremos en el nuevo ticket los datos y los descontaremos del maestro. Si pulsamos cobrar sin datos en la derecha iría a cobrar el de la izquierda. El botón restaurar, este es el que más miga tiene, ya que no visible en este fom existirá varios componentes como otro listview y un memo entre otros, este listview tendrá en todo momento los mismo datos que el maestro al llamar por primera vez (de ese ticket), en el memo al darle al botón confirmar introducirá el número del nuevo ticket, así podremos deshacer todo por código, dejando el ticket como estaba al principio, el único problema es en cobros, pero como dije no lo voy a dar todo echo En esta pantalla también falta un display en panel 9 que indicará el total del listview de la derecha. Volviendo a la pantalla de cobros tenemos el botón cobro exacto, este botón no respeta el arqueo ya que al pulsarlo simplemente introduce en entregado la misma cantidad que en total, no respetando el arqueo, dependiendo de la ocasión puede ser útil, de hecho que este visible lo tengo en mi programa puesto desde otro apartado. Del resto de los botones comentare los siguientes ya que el resto son bastante claros en su descripción Borrar Elimina todo lo que hemos introducido hasta este momento, respetando sólo el valor del total que teníamos de entrada, simplemente hago un commitRtaing y refresco los datos y el formulario. Descontar los valores que introduzcamos, pulsando en los valores de monedas o billetes o por el numpad en vez de sumarse se restan. Teclado muestra o oculta el teclado, este aparece si pulsamos en los botones tarjeta, banco o otros, al pulsar este último además aparece un TRadioGroup, con las opciones de otros. Cobrado graba definitivamente los datos y marca el ticket como cobrado, aparte de esto si así lo indicamos en configuración muestra la siguiente pantalla que bloque una cantidad que establecemos en configuración , mediante un timer, como es posible que tengamos prisa, podemos cerrarla antes gracias al botón salir, aparte de este lo lógico es poner una salida aun display por si lo tenemos, en mi caso como no he conseguido ninguno, no se exactamente como se hace, pero ya buscare que me presten uno y lo haré. Pues creo que con esto es todo por hoy, espero como siempre que les queden claro los conceptos y les sea de utilidad.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#22
|
||||
|
||||
Bueno vamos a ir dando un spring final para acabar este tema, para ello voy a comentar varios apartados, por encima, ya que muchos de ellos son apartados más o menos normales en otros programas.
--Mensajes como tratamos con un entorno que debe ser totalmente táctil, debemos tener en cuenta que mensajes tipo showmessage, no son adecuados (esto me lo recordó un compañero y tenia toda la razón), por lo que debemos crear nuestros propios forms con los mensajes que queramos poner, aquí os dejo uno de mis mensajes --El Editor Debemos tener un editor para las diferentes necesidades dentro de nuestro programa, yo si puedo inserto el teclado en el form, pero muchas veces no podemos, por lo que uso un form con los diferentes apartados dentro de un pagecontrol, lo tengo para campos string (texto), memos (Notas), time (Hora), Date (fecha), Integer(Enteros) y double o rela (decimales), este no lo tengo terminado pero pongo un pequeño montaje y el código al activarse y al salir, para que entendáis como funciona
Como podéis ver activo el pagecontrol antes de hacer el show del form, al activase indica que componente tiene el foco, sólo en los dos primeros, la variabledeRetorno esta ubicada en nuestro datamodule, para que tenga acceso, practicamente desde cualquier apartado, esta la debemos dejar con el dato de entrada, por si no cambiamos nada y es un string, así devuelva lo que de vuelva con un try finally, hacemos la conversión a lo que necesitamos y listo, pongo el código de una llamada para que se entienda mejor
Realmente falta un variable más y un botón en el mismo panel que esta el botón salir para poder recuperar el dato de entrada, en cualquier momento, también se podría poner un undo y un redo, pero ya sabéis se puede mejorar y mucho --Cierre z y cierr x o y Primero aclarar que realmente este apartado no he llegado aún y no tengo claro cual es cual, pero si puedo deciros que uno es la impresión de todos los tickets del día y el otro es un resumen del día, en estos debemos incluir datos como formas de pago, en efectivo, tarjetas, talones, pagares, cupones, etc, deberíamos añadir si ha habido invitaciones, o sin pagar, e incluso un pequeño mensaje de si hay productos con poco stock, no hace falta especificar cuales, sólo darnos un aviso para que lo miremos, totalizar , número de tickets vendidos, cobrados y pendientes e incluso ventas y comisiones por camarero. --Cambios del ticket Este apartado debe ser ágil, ya que en un momento determinado, podemos tener múltiples tickets abiertos, yo uso el siguiente form, que me queda que mejorar visualmente, añadir un groupbox y un campo edit para búsquedas, pero esta casi terminado. Como podéis ver esta dividido en varias partes como son: Seleccionado (el ticket elegido) Nº de tickets (la cantidad en ese momento) Los tickets (con un DBCtrlGrid) El contenido del ticket (un dbgrid) El listado de camareros (con listview y un botón, así puedo elegir si de todos los camareros o de uno en especifico) Y por último el panel en la parte baja donde falta el sistema de búsqueda y el debnavigator la opción previsualizar (muestra el contenido del ticket en el dbgrid)los botones salir (selecciona el ticket elegido en ese momento) y salir sin ticket, no opte por salir al pulsar sobre el dbctrlGrid, ya que si quisiéramos desplazarnos, muchas veces saldría directamente. --Visor de clientes, visor de camareros Como podéis ver es muy parecida a la anterior,pero de manera más simplificada, únicamente tiene el dbctrlgrid y los siguientes botones, subir y bajar, dar de alta a uno nuevo y salir y cancelar, con lo que deja el que tuviésemos elegido anteriormente y salir que legi sobre el que hayamos elegido, en este caso si funciona el pulsar sobre el dbctrlgrid, tanto con un click lo elegimos y con un doble click salimos con la elección, no inserte un sistema de búsqueda, ya que esta hecho con un querry y en la tabla tiene el campo activo y camarero, con lo que me muestra sólo los camareros que este en activo y cumpla ambas cualidades en la tabla de personal. El acceder a esta pantalla es posible desde 2 opciones o pulsando el botón para tal fin o directamente sobre la imagen. El de clientes es idéntico, salvo que tiene un panel al final con un sistema de búsqueda y llamada al editor --Apertura del cajón Este es muy simple aprovechamos dando el comando adecuado a nuestra impresora de tickets (yo personalmente grabo en un tabla la fecha la hora y el camarero) --Registro de operaciones Existen apartados que nos interesa registrar su movimiento para esto es esta tabla, básicamente es un log, pero en tabla que debe auto borrarse cada x meses, dejando únicamente un par de meses de información, en esta tiene campos como concepto, fecha, hora y operario --Solicitud del passwords Este apartado debe hacerse accesible desde configuración, teniendo que solicitarse o no, incluso debería ser obligatorio para la apertura del cajón sin ticket, para que no pueda abrirlo cualquier persona, pongo una imagen y no explico más. --Modo consulta Este es una de las cuestiones básicas ala hora de hacer un TPV, debemos saturar nuestro form, como ya explique al principio depende, pero debemos tener todas las opciones posibles en nuestro form de trabajo, yo creo que si, la verdad es que he optado por un sistema que creo es cómodo y simple, para entrar en modo consulta puede existir una de estas opciones, que no exista ticket en ese momento o que lo solicitemos nosotros, como, pulsando en el listview de nuestro ticket, tanto para entrar como para salir, pongo un montaje con lo que he explicado y algo más que detallare a continuación Explico los diferentes apartados númerados [1] Modo normal del ticket [2] modo al pulsar en el ticket en el listview pasa a modo consulta si volvemos a pulsar pasamos a modo normal 1 [3] Opciones que nos da, en este caso de productos, pero alguna de ellas también en familias y subfamilias, esta opciones son Alta nueva de l apartado en que estemos Modificar, en la casilla y el apartado que estemos Consulta ver 5 este nos permite ver cuantas ventas se han hecho de ese producto hoy Asignar, al igual que el botón en el TPV llama al mapa Entrada de productos, permitiendo dar entrada e a mercancías Añadir a "Más usados" lo veremos más adelante --Notas a cocina Debemos tener en cuenta para que funciona esto, cuando hablamos de notas a cocinas no me refiero al ticket, me refiero a anotaciones como "bisteck muy hecho y sin pimienta" o cosas mas serias como "Cliente alérgico al picante" o "Cliente celiaco" por poner unos ejemplos, en mi caso sólo hago una llamada al editor y lo descrito lo meto en la tabla tickets notas y a continuación veréis como lo ven en cocina. --Ver ticket Cocina como podéis ver a la izquierda el dbctrlGrid, en el centro un listview con el contenido del ticket (*) y la derecha el número de tickets pendientes, el ticket que estamos viendo, la notas que puedan existir de este ticket un dbnavigator y el botón salir. Este apartado es específico de cocina por lo que no esta en nuestra pantalla de tpv genérica. (*) marcamos lo que ya hemos servrvido, para evitar errores con un campo en nuestra tabla de tickets detalle, de hecho se me ocurrió despues, en productos, deberíamos añadir el campo cocina, con lo que aqui en el querry podríamos decir que mostrase sólo los productos que van a cocina y no todos los del ticket. --Zona del numpad Como podemos ver en este apartado disponemos de varias opciones, una pequeña descripción de ellas Primero el Numpad, nos permite introducir cantidades, para que, pues según elijamos a su la do derecho, en este lado están -El visor, marca el número que vamos a pasar. -Cobrar, nos pasa al apartado de cobros, dividir pagos, etc -Unidades, que es el apartado por defecto -Precios, permite modificar el precio de un producto en el ticket -Descuentos, permite hacer descuentos en el ticket -Invitación, permite mediante popmenu invitar a el artículo marcado o a todo el ticket, ojo si aplicamos al artículo seleccionado y luego pulsamos sobre este se crea en un linea aparte y o entra en la invitación. -Útiles varios como acceso a configuración, apertura y cierre (X y z), arqueos (0 y real), Compras (una lista de productos a comprar), Pasar nota a cocina (ya lo hemos visto), Cambiar orientación (permite pasar de derecha a izquierda y viceversa las familias, subfamilias y artículos) y número de columnas mínimo (podemos poner el número de columnas mínimo a mostrar en familias, subfamilias y artículos), todo esto en un popmenu -apertura del cajón (ya lo hemos visto) -listview Ticket Bueno he puesto algo más de lo que es el tema pero lo detallo en la parte alta, tenemos datos, como la ubicación, la situación (esta marcado mal como número), el número de comensales, el display del total, el cliente la imagen de este y el número de ticket. Debajo encontramos el listview con los artículos que contiene nuestro ticket, debajo de este esta información como el producto sobre el que esta posicionado, el total de artículos diferentes y el total de unidades. A la derecha se encuentran los botones siguientes, Cambiar de ticket (lo vimos en cambios de ticket), Modificar linea (permite modificar el texto de la linea seleccionada), borrar linea, y los botones que nos permite subir y bajar dentro del listview. Una pista que os doy sobre este listview, no todo lo que veis es todo lo que contiene. --Usar la webcam En este programa he usado la webcam, desde apartados como clientes y personal, para capturar la imagen, pero aparte de esto cree un form, que permite las siguientes opciones, os pongo una imagen y no comento más --Capturar desde internet Esto es una opción útil, que permite al cliente mediante el navegador buscar una imagen del plato copiarla al portapapeles y desde nuestro programa pegarla. --------------------------------------------------Otros apartados que considero interesante ---Vales y cupones permite pagar con vales o cupones de hecho podemos vender un vale de 10 menús y identificarlo con número o código de barras y ir descontando teniendo claro en cada momento que debemos introducir el código de barras o número para controlar su descuento. ---Sinpa (Sin pagar) debemos tener un botón que especifique si ha existido tickets sin pagar, se nos incluye en los cierres ---Mas usados, una cosa que hecho de menos en los programas de TPV, es un apartado para los artículos más usados, de hecho yo tengo una familia por defecto con más usados, dentro de esta crea automáticamente las subfamilias combinados y más usados, en esta última ira todos los artículos que desde el modo consulta designemos como más usados, ejemplo, Café solo, cortado, bocadillo de tortilla, caña, etc. No es recomendable suturarlo y aunque se cree el objeto duplicado, hace referencia a un mismo artículo, así que tendréis que jugar un poco con un campo más en nuestra tabla y hacer una referencia cruzada, al entra en estos apartados. ---Consumo interno, mientras trabajamos, podemos tener autorización y consumir artículos, sin tener que pagarlos, pero de estos hay stock que puede ser controlado (ya lo hemos tratado), de esta manera, mediante un simple botón tendremos este control al día.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#23
|
||||
|
||||
Si veis algo que falta comentármelo, yo doy el tema por terminado, ahora como siempre espero vuestros comentarios, criticas, cambios ideas, comparaciones, etc.
Espero pongáis imágenes de vuestros TPV y como habéis resuelto alguna de las situaciones, que me corrijan, si estoy equivocado o complementen lo que crean necesario, etc. Un TPV, a pesar de su aspecto es un programa duro, se distancia mucho de un programa estándar y debemos acordarnos de que es para pantallas táctil por lo que debemos poder usar todo el programa sin ratón ni teclado, por lo tanto no es lo más adecuado para principiantes, pero con un poco de practica, es posible meterse con el, pero os advierto que son muchos miles de lineas, por lo que deberéis haceros un buen planteamiento de como lo queréis, si me permiten un truco para el diseño de los forms, lo que hago es las partes que quiero dentro de una pantalla las dibujo en trozos de papel, luego pongo un folio como si fuera el form y voy colocando los trozos de papel, para ver como quedaría en varias pociones, cojo el móvil y le saco fotos para poder hacerme una idea y tener varios diseños antes de escribir una linea de código, esto junto con el organigrama de funcionamiento de diversas partes puede ahorrarnos muchas horas de programación. Como ya dije en mi programa tengo unas cuantas opciones más pero me las reservo, claro esta, así como la solución a algunos problemas, espero esta sea una buena guía para el diseño de programas TPV. Bueno pues doy por terminado el tema, a hora os toca a vosotros. P.D. A los señores moderadores, creo que seria una buena opción tener un apartado llamado teoría de y que otros compañeros plantearan el diseño de programas de manera teórica, por poner algunos ejemplos, vídeo club, Control de una pensión, hostal, hotel, renta-car, consulta medica o veterinaria, etc. Creo serían buenas guías de consulta para iniciar programas de cada tipo, haciendo aún más importante el club, se que están los tutoriales, pero aquí hablo de guías no de programas con código, se podría ver la disposición a ello e incluso una votación, pero vosotros seréis los que decidan, yo sólo dejo la idea.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#24
|
||||
|
||||
Señores moderadores y resto de compañeros, que piasen de mi propuesta?
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#25
|
||||
|
||||
Cita:
pd.: el hilo se ha puesto "adherido", así siempre aparece al principio del foro "Varios"
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#26
|
||||
|
||||
Cita:
Cita:
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#27
|
||||
|
||||
Está bien la idea, aunque de momento no hay ninguno más, quizás lo podamos hacer cuando haya algún hilo similar con otra "teoría de..."
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#28
|
||||
|
||||
Cita:
Yo soy uno que participo lo justo, cuando creo que algo entiendo y puedo ayudar, pero si que he dado alguna opinión, bueno no me hagáis mucho caso.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#29
|
||||
|
||||
Sí, tienes razón en que hay menos participación, quizás la "culpa" sea de que hay tanta información en tantos hilos que la gente ya no necesita preguntar tanto , casi todo está escrito y basta una simple búsqueda para encontrar solución a cualquier duda.
En cuanto a la votación/encuesta puedes crearla tú mismo, no se necesita ser moderador, quien quiera puede crear una.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#30
|
|||
|
|||
Cita:
En mi opinión un tpv que quiera acaparar tantas soluciones tendría que ser excesivamente complicada. Mi ideal de tpv es la de mercadona. Es tan simple que da la risa. Yo también estoy en el desarrollo de un tpv, y buscando información me he encontrado este hilo. No pusimos a desarrollar un tpv para nosotros, y al final lo consideramos un proyecto viable al juntarnos con otro programador. Las características son parecidas a las de shopify. Ya os digo que es simple simple. Estamos en fase beta desde hace 1 año y a este paso estaremos otro años más. XD https://catinfog.com/ Partimos de la consideración de que un la gente está pidiendo que su tpv esté conectado con su tienda online, así que usamos como base el cms de código libre opencart. Os digo características: -Imprimir ticket o factura. -Variaciones de producto. -Ilimitadas cajas registradoras. -Ilimitados métodos de pago. -Devoluciones con ticket que vale por el importe devuelto. -Clientes. -Descuentos. -Historial de vendedores. Y lo que más nos ha costado por las puñeteras incompatibilidades de jquery con Bootstrap es la responsividad. Es un infierno que no le deseo a nadie. |
#31
|
||||
|
||||
Pues el que has enlazado es justo lo contrario, parece que no predicas con el ejemplo
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#32
|
||||
|
||||
El servidor de imágenes se ha caído.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#33
|
||||
|
||||
... y una pregunta tonta.... ¿con qué herramienta has desarrollado? porque veo que funciona en la web.
__________________
Be water my friend. |
#34
|
|||
|
|||
Cita:
Hemos intentado usar los estándares actuales para la red: bootstrap y jquery principalmente. Por supuesto php, html5, css, ajax y maridb. Si algún día os metéis en un berenjenal como el nuestro, veréis la cantidad de incompatibilidades que hay entre diferentes frameworks. Un infierno. Hay algo que propone José Luis Garcí y que me encantaría desarrollar, que es el tema de los tickets en espera. ¿Habéis visto como lo hace openbravo? En plan pestañas como si fuera chrome u otro navegador. ¡Me encanta! |
#35
|
||||
|
||||
Cita:
__________________
Be water my friend. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Teoría del Infierno | fidel | Humor | 5 | 28-10-2016 02:00:14 |
Teoria y Practica | jcarteagaf | Humor | 0 | 18-08-2008 17:32:34 |
Teoría sobre Archivos de Recursos | MaMu | OOP | 3 | 15-04-2008 13:36:31 |
Frameworks, Persistencia: ¿Teoria? | Delphius | OOP | 8 | 13-04-2008 00:27:24 |
Teoría del Salario | obiwuan | Humor | 0 | 06-05-2003 23:00:43 |
|