Requerimientos - dstanziola/app16 GitHub Wiki
Requerimientos del Sistema de Gestión de Inventario: vers.6.0
Necesidades del usuario
- Sistema para llevar el control de inventario y ventas.
- Para ser instalada en computadora personal con Windows versiones 10 u 11.
- Uso en una tienda pequeña: promedio 1000 transacciones por día
- Interfase intuitiva y amigable: Pocas opciones por ventana. La aplicación debe ser tan clara y fácil de usar como sea posible, mostrando solo lo necesario en cada pantalla
- Numero de usuarios:maximo 20
- Perfil de usuarios: habilidades informáticas mínimas o nulas
- Roles de usuario: administrador, vendedor
- formularios: principal, clientes, productos, categorias, ventas, ajustes, historial, reportes, código de barras
- Entrada de datos por teclado y lector de código de barras con entrada de datos tipo teclado
- Generacion de reportes:
- Reporte de ventas: petición diaria
- Reporte de stock bajo:petición semanal
- Reporte de analisis de ventas: petición mensual
- este reporte debe contribuir de identificar el estado de ganancias o pérdidas y los productos estrella.
- otros reportes: por demanda
1. Arquitectura del Sistema
- Sistema de escritorio desarrollado en Python con interfaz gráfica en Tkinter
- Base de datos SQLite para almacenamiento local
- Arquitectura modular por capas (UI, Servicios, Base de datos)
- Soporte para lector de códigos de barras USB como dispositivo de entrada opcional
2. Gestión de Datos - Estructura Unificada
2.1 Categorías
- Operaciones CRUD (Crear, leer, actualizar y eliminar)
- Validación para evitar eliminación de categorías con productos asociados
- Campos de categorías:
id_categoria
: INTEGER PRIMARY KEY AUTOINCREMENTnombre
: VARCHAR(60) NOT NULLtipo
: VARCHAR(20) NOT NULL ('MATERIAL' o 'SERVICIO')
2.2 Productos - Tabla Unificada
- Operaciones CRUD para productos
- Tabla única para materiales y servicios
- El ID del producto es también su código de barras
- Campos unificados:
id_producto
: INTEGER PRIMARY KEY AUTOINCREMENTnombre
: VARCHAR(60) NOT NULLid_categoria
: INTEGER FOREIGN KEYstock
: INTEGER DEFAULT 0 (solo relevante para materiales)costo
: DECIMAL(10,4) DEFAULT 0precio
: DECIMAL(10,2) DEFAULT 0tasa_impuesto
: DECIMAL(5,2) DEFAULT 0 (porcentaje, 0 = exento)activo
: BOOLEAN DEFAULT 1
2.3 Clientes
- Operaciones para crear, leer y actualizar clientes
- Creación opcional al momento de generar ventas
- Campos de clientes:
id_cliente
: INTEGER PRIMARY KEY AUTOINCREMENTnombre
: VARCHAR(60) NOT NULLruc
: VARCHAR(20)activo
: BOOLEAN DEFAULT 1
2.4 Sistema de Movimientos Unificado
- Tabla única para todos los movimientos de inventario
- Tipos de movimiento: 'ENTRADA', 'VENTA', 'AJUSTE'
- Entrada de datos manual o por lector de código de barras
- Campos unificados:
id_movimiento
: INTEGER PRIMARY KEY AUTOINCREMENTid_producto
: INTEGER FOREIGN KEYtipo_movimiento
: VARCHAR(20) NOT NULLcantidad
: INTEGER NOT NULL (positivo para entradas, negativo para salidas)fecha_movimiento
: DATETIME DEFAULT CURRENT_TIMESTAMPresponsable
: VARCHAR(60) NOT NULLid_venta
: INTEGER FOREIGN KEY (opcional, para movimientos de venta)observaciones
: TEXT
2.5 Ventas
- Registro de transacciones de venta
- Campos de ventas:
id_venta
: INTEGER PRIMARY KEY AUTOINCREMENTfecha_venta
: DATETIME DEFAULT CURRENT_TIMESTAMPid_cliente
: INTEGER FOREIGN KEY (opcional)subtotal
: DECIMAL(10,2) DEFAULT 0impuestos
: DECIMAL(10,2) DEFAULT 0total
: DECIMAL(10,2) DEFAULT 0responsable
: VARCHAR(60) NOT NULL
2.6 Detalle de Ventas
- Desglose de productos/servicios por venta
- Campos:
id_detalle
: INTEGER PRIMARY KEY AUTOINCREMENTid_venta
: INTEGER FOREIGN KEYid_producto
: INTEGER FOREIGN KEYcantidad
: INTEGER NOT NULLprecio_unitario
: DECIMAL(10,2) NOT NULLsubtotal_item
: DECIMAL(10,2) NOT NULLimpuesto_item
: DECIMAL(10,2) DEFAULT 0
3. Funcionalidades de Códigos de Barras - Simplificadas
- Lectura de códigos de barras 1D estándar
- Lector USB tipo HID sin configuración adicional
- El ID del producto funciona como código de barras
- Procesamiento directo para movimientos rápidos
- Generación opcional de etiquetas con códigos Code128
4. Gestión de Ventas - Optimizada
- Registro de ventas mediante escaneo o entrada manual
- Soporte para múltiples productos en una venta
- Cálculo automático de impuestos basado en
tasa_impuesto
- Discriminación automática de ítems gravados y exentos
- Asociación opcional de clientes para facturación
- Si en 'Categoria',
tipo
= 'SERVICIO' entonces 'Stock' = 0
5. Reportes - Configurables
5.1 Reporte de Movimientos
- Configurable por tipo de movimiento, fechas y categorías
- Incluye entradas, ventas y ajustes de inventario
- Exportación a PDF
5.2 Reporte de Inventario Actual
- Estado actual del inventario por fecha especificada
- Valor total y costo del inventario
- Desglose por categorías
- Solo aplica para productos tipo MATERIAL
5.3 Reporte de Ventas
- Ventas por período con desglose de impuestos
- Detallado por producto o resumido por categoría
- Agrupación por días, meses o años
- Exportación a PDF
5.4 Reporte de Rentabilidad
- Resumen de ingresos, costos y ganancias por período
- Análisis de productos más vendidos
- Exportación a PDF
6. Gestión de Tickets - Simplificada
6.1 Configuración de Empresa
- Copy Point S.A.
- RUC: 888-888-8888
- Dirección: Las Lajas, Las Cumbres, Panamá
- Teléfono: 6666-6666
- E-mail: [email protected]
6.2 Tipos de Tickets
- Ticket de Entrada: fecha, productos, cantidades, responsable, valor total
- Ticket de Venta: fecha, productos, cantidades, cliente (opcional), subtotal, impuestos, total, responsable
- Ticket de ajuste:fecha, producto, cantidad, responsable, observaciones
6.3 Funcionalidades
- Visualización en pantalla
- Generación en formato PDF
- Impresión directa
7. Interfaz de Usuario - Simplificada
- Ventana principal con menú de navegación claro
- Formularios unificados para crear/editar
- Validación de campos en tiempo real
- Gestión de errores con mensajes claros
- Autenticación básica con roles de usuario
8. Control de Usuarios
8.1 Tipos de Usuario
- Administrador: acceso completo al sistema
- Vendedor: acceso solo al módulo de ventas y consultas básicas
8.2 Tabla de Usuarios
id_usuario
: INTEGER PRIMARY KEY AUTOINCREMENTnombre_usuario
: VARCHAR(30) UNIQUE NOT NULLpassword_hash
: VARCHAR(255) NOT NULLrol
: VARCHAR(20) NOT NULL ('ADMIN' o 'VENDEDOR')activo
: BOOLEAN DEFAULT 1
9. Orden de Desarrollo - Optimizado
Fase 1: Base del Sistema
- Configuración de base de datos unificada
- Modelo de datos y conexión SQLite
- Autenticación básica de usuarios
Fase 2: Funcionalidades Core
- CRUD de categorías
- CRUD de productos (tabla unificada)
- CRUD de clientes
- Sistema de movimientos unificado
Fase 3: Operaciones de Negocio
- Módulo de ventas
- Cálculo automático de inventario
- Generación de tickets
Fase 4: Reportes y Optimizaciones
- Reportes configurables
- Interfaz pulida y validaciones
- Integración de códigos de barras
Fase 5: Funcionalidades Avanzadas
- Importación/exportación de datos
- Funcionalidades adicionales según necesidades
10. Requerimientos Técnicos
- Plataforma: Windows (primario)
- Lenguaje: Python 3.8+
- GUI: Tkinter (estándar)
- Base de datos: SQLite3
- Herramientas de desarrollo:
- Black (formateo de código)
- isort (ordenamiento de imports)
- mypy (verificación de tipos)
- Documentación: PEP 8 y formato Google
- Pruebas: unittest para casos críticos
- Logging: registro de errores y operaciones importantes
11. Funcionalidades Opcionales - Fase Posterior
- Importación masiva desde Excel
- Múltiples formatos de exportación
- Integración con impresoras de etiquetas especializadas
- Backup automático de base de datos
- Reportes avanzados de análisis de tendencias
12. Beneficios de esta Optimización
- Desarrollo más rápido: Reducción estimada del 35% en tiempo
- Mantenimiento simplificado: Menos código duplicado
- Escalabilidad: Base sólida para futuras expansiones
- Usabilidad: Interfaz más intuitiva y consistente
- Confiabilidad: Menos puntos de falla potencial
13. Consideraciones de Implementación
- Implementar validaciones robustas en la capa de servicios
- Usar transacciones de base de datos para operaciones críticas
- Implementar sistema de logging detallado
- Crear datos de prueba para desarrollo y testing
- Documentar APIs internas para facilitar mantenimiento
Versión: 5.0 - Optimizado
Fecha: Mayo 2025
Estado: Aprobado para desarrollo
Próxima revisión: Al completar Fase 2