164 lines
5.7 KiB
Markdown
164 lines
5.7 KiB
Markdown
## Título
|
|
|
|
Sistema de Gestión de Artículos y Unidades (ProyectoServing)
|
|
|
|
## Descripción
|
|
|
|
Proyecto Django para el registro, asignación y control de artículos por unidades, con comprobantes de movimiento y un módulo de inventario básico.
|
|
|
|
## Stickers
|
|
|
|
Usa estas imágenes como "stickers" en la documentación o UI (ya incluidas en el repo):
|
|
|
|

|
|

|
|

|
|
|
|
Si quieres añadir más stickers, añádelos en `static/imagenes/stickers/` y referencia la ruta relativa desde la raíz del proyecto.
|
|
|
|
## Stack tecnológico
|
|
|
|
- Python (se recomienda 3.11+; los .pyc en el repo sugieren 3.12/3.13)
|
|
- Django 5.0.3
|
|
- Base de datos: configurable (MySQL, PostgreSQL o SQLite), dependencias: `mysqlclient`, `psycopg2`, `PyMySQL`
|
|
- Bibliotecas notables (ver `sistema/requirements.txt`): `django-adminlte3`, `django-select2`, `Pillow`, `reportlab`, `qrcode`, `django-wkhtmltopdf`
|
|
|
|
## Modelos de datos (resumen)
|
|
|
|
Las clases principales están en `serving/models.py`:
|
|
|
|
- Articulo
|
|
- Campos: `articulo`, `description`, `marca`, `modelo`, `serial`, `unidad_medida`, `fecha`, `fecha_registro`, `cantidad`, `precio`
|
|
- Métodos: `__str__`, `total()` (cantidad * precio)
|
|
|
|
- Comprobante
|
|
- Campos: `e_o_s`, `conceptos`, `observaciones`, `concepto_movimiento`, `numero_movimiento`, `grupo`, `subgrupo`
|
|
|
|
- Unidad
|
|
- Campos: `nombreUnidad`, `comandante`, `ubicacion`, `telefono`
|
|
- Relación: `articulos` ManyToMany con `Articulo` a través de `ArticuloUnidad`
|
|
|
|
- ArticuloUnidad (tabla intermedia)
|
|
- Campos: FK a `Articulo` y `Unidad`, FK a `Comprobante` (nullable), `marca`, `modelo`, `serial`, `movimiento`, `description`, `unidad_medida`, `fecha_salida`, `cantidad`, `precio`
|
|
- Métodos: `__str__`, `total()`
|
|
|
|
- PruebaUnidad (registro de prueba similar a ArticuloUnidad)
|
|
|
|
Ejemplo de forma de datos (JSON) para un `Articulo`:
|
|
|
|
{
|
|
"articulo": "Proyector X",
|
|
"marca": "MarcaA",
|
|
"modelo": "MX-100",
|
|
"serial": "SN12345",
|
|
"unidad_medida": "unidad",
|
|
"cantidad": 2,
|
|
"precio": "350.00"
|
|
}
|
|
|
|
## Requisitos previos
|
|
|
|
- Tener Python 3.11+ instalado.
|
|
- Git (opcional).
|
|
- En Windows PowerShell: crear y activar un entorno virtual.
|
|
- Archivo de dependencias: `sistema/requirements.txt` (contiene todas las librerías necesarias).
|
|
|
|
## Instalación y configuración (Windows PowerShell)
|
|
|
|
1) Abrir PowerShell en la carpeta raíz del proyecto (`e:/PROYECTOS/ProyectoServing/sistema`).
|
|
|
|
2) Crear y activar entorno virtual:
|
|
|
|
```powershell
|
|
python -m venv .venv; .\.venv\Scripts\Activate.ps1
|
|
```
|
|
|
|
3) Instalar dependencias:
|
|
|
|
```powershell
|
|
python -m pip install --upgrade pip; pip install -r requirements.txt
|
|
```
|
|
|
|
4) Configurar variables de entorno (recomendado):
|
|
|
|
- `DJANGO_SECRET_KEY` — clave secreta.
|
|
- `DJANGO_DEBUG` — `False` en producción.
|
|
- `DATABASE_URL` o editar `sistema/settings.py` para ajustar `DATABASES`.
|
|
|
|
Puedes exportar variables en PowerShell así (temporalmente):
|
|
|
|
```powershell
|
|
$env:DJANGO_SECRET_KEY = "tu_secret_key"
|
|
$env:DJANGO_DEBUG = "True"
|
|
```
|
|
|
|
5) Migraciones y superusuario:
|
|
|
|
```powershell
|
|
python ..\manage.py migrate; python ..\manage.py createsuperuser
|
|
```
|
|
|
|
6) Ejecutar servidor local:
|
|
|
|
```powershell
|
|
python ..\manage.py runserver
|
|
```
|
|
|
|
## Uso del sistema
|
|
|
|
- Iniciar sesión en `http://127.0.0.1:8000/` con el superusuario.
|
|
- Desde el panel admin o las vistas públicas del app `serving` podrás:
|
|
- Crear/editar `Articulo`.
|
|
- Registrar `Comprobante` y asignar movimientos.
|
|
- Crear `Unidad` y vincular artículos mediante `ArticuloUnidad`.
|
|
- Generar reportes o comprobantes (algunas dependencias dan soporte a PDF/QR).
|
|
|
|
## Módulos del sistema
|
|
|
|
- `serving/` — app principal con modelos, vistas, formularios y templates.
|
|
- `sistema/` — configuración del proyecto Django (`settings.py`, `urls.py`, `wsgi/asgi`).
|
|
- `templates/` — plantillas base y por módulo (ver `templates/` y subcarpetas).
|
|
- `static/` y `staticfiles/` — assets: CSS, JS y `imagenes/` (logos y stickers).
|
|
|
|
## Seguridad
|
|
|
|
- No dejar `DEBUG = True` en producción.
|
|
- Guardar `SECRET_KEY` en variables de entorno, no en el repositorio.
|
|
- Configurar `ALLOWED_HOSTS` en `sistema/settings.py`.
|
|
- Usar conexión segura (HTTPS) y marcar cookies seguras (`SESSION_COOKIE_SECURE`, `CSRF_COOKIE_SECURE`).
|
|
- Restringir accesos en el admin y usar contraseñas fuertes.
|
|
- Revisar dependencias y mantenerlas actualizadas; ejecutar escáneres de seguridad sobre el entorno.
|
|
|
|
## Posibles mejoras
|
|
|
|
- Añadir API REST (Django REST Framework) para integraciones.
|
|
- Implementar tests unitarios y de integración automatizados.
|
|
- Añadir control de permisos más fino (roles/GRANT) para módulos.
|
|
- Mejorar la interfaz con componentes JS modernos o SPA.
|
|
- Soporte de importación/exportación (CSV/Excel) robusto.
|
|
- Auditoría de cambios (historial de movimientos por artículo).
|
|
|
|
## Mapa rápido de archivos relevantes
|
|
|
|
- `serving/models.py` — modelos del dominio.
|
|
- `serving/views.py`, `serving/forms.py`, `serving/urls.py` — lógica y rutas.
|
|
- `sistema/settings.py` — configuración del proyecto.
|
|
- `sistema/requirements.txt` — dependencias (ruta: `sistema/requirements.txt`).
|
|
|
|
## Estado de requisitos del usuario
|
|
|
|
- Título — Hecho
|
|
- Descripción — Hecho
|
|
- Stack tecnológico — Hecho
|
|
- Modelos de datos — Hecho (resumen a partir de `serving/models.py`)
|
|
- Requisitos previos — Hecho (referencia a `sistema/requirements.txt`)
|
|
- Uso del sistema — Hecho
|
|
- Módulos del sistema — Hecho
|
|
- Seguridad — Hecho
|
|
- Instalación y configuración — Hecho (instrucciones PowerShell)
|
|
- Posibles mejoras — Hecho
|
|
|
|
Si quieres, puedo:
|
|
- Añadir badges (build, dependabot) o más imágenes-stickers específicas.
|
|
- Generar un pequeño script `setup.ps1` que automatice los pasos de instalación.
|