Programa para el cajero
Puede hacer clic aquí para ver el programa.
Programa para el cajero es una aplicación educativa de caja registradora desarrollada en Python utilizando Tkinter. El proyecto está diseñado para automatizar las principales operaciones de un cajero: apertura y cierre de turnos, búsqueda de productos mediante código de barras, realización de ventas, control del dinero en el cajón de efectivo y almacenamiento del historial de operaciones.
La información sobre los productos se almacena en el archivo editable codes.ods. Para cada producto se especifican el código de barras, el nombre y el precio. El cajero puede escanear o introducir un código de barras, tras lo cual el programa encuentra el producto correspondiente y lo añade a la venta actual.
La información sobre las ventas completadas y los turnos de caja se almacena en la base de datos orders.db. Cada venta está vinculada al cajero y al turno abierto, mientras que a los pedidos completados se les asignan automáticamente números con el formato ORD-000001.
Trabajo con los turnos de caja
Antes de comenzar a trabajar, el usuario selecciona un cajero y abre un turno de caja. Al abrir el turno, se especifica el saldo inicial de dinero en el cajón de efectivo.
Durante el turno, el programa registra las ventas y permite registrar manualmente ingresos o retiradas de efectivo. Al cerrar la caja, se introduce la cantidad real contada. El programa calcula el saldo esperado y guarda cualquier posible diferencia.
Si la aplicación se cerró antes de finalizar el turno, el turno no cerrado se restaura automáticamente la próxima vez que se inicia el programa.
Almacenamiento y control de datos
Para verificar la integridad de la base de datos financiera se utiliza una suma de comprobación SHA-256. Al iniciar el programa, el contenido de orders.db se compara con la suma de comprobación guardada en orders.db.sha256. Después de una modificación normal de los datos, la suma de comprobación se actualiza automáticamente.
Las principales acciones del programa se registran en el archivo cash_register.log: inicio y cierre de la aplicación, apertura y cierre de turnos, escaneo de productos, realización de ventas, ingresos y retiradas de efectivo, comprobación de la integridad de la base de datos y los errores que se produzcan. El registro puede abrirse directamente desde la interfaz del programa en modo de solo lectura.
Características principales
- selección del cajero antes de comenzar a trabajar;
- apertura y cierre del turno de caja;
- búsqueda de productos mediante código de barras;
- realización y almacenamiento de ventas;
- numeración automática de pedidos;
- control del efectivo en el cajón de caja;
- ingreso y retirada de dinero;
- cálculo del saldo esperado y real de la caja;
- restauración de un turno no cerrado después de reiniciar el programa;
- mantenimiento de un registro de acciones;
- comprobación de la integridad de la base de datos mediante SHA-256;
- creación de una aplicación autónoma para Windows.
Tecnologías
El proyecto está escrito en Python. La interfaz gráfica de usuario está creada utilizando Tkinter. Para almacenar los datos de los productos se utiliza una hoja de cálculo ODS, mientras que las operaciones y la información sobre los turnos de caja se almacenan en una base de datos local.
Para Windows está prevista la creación del programa como un archivo independiente CashRegister.exe mediante PyInstaller. La aplicación puede iniciarse sin una ventana de consola, mientras que los archivos de trabajo se crean y almacenan junto al archivo ejecutable.
Objetivo del proyecto
El objetivo principal del proyecto es desarrollar una aplicación de escritorio independiente que simule el funcionamiento de un puesto de trabajo de caja y poner en práctica el trabajo con una interfaz gráfica de usuario, el almacenamiento local de datos, los turnos de caja, el registro de operaciones y el control de la integridad de los datos.