El poryecto Derej Press es un sistema integral para la gestión de préstamos, cobranzas y control de clientes. Centraliza el ciclo de vida de préstamos, pagos, anulaciones, reportes y administración de clientes, permitiendo a financieras y entidades de crédito operar de forma eficiente y segura. Está construido sobre Django 5.2.1 con un backend basado en MySQL y una única app denominada prestamos, que concentra modelos, vistas, plantillas y recursos estáticos propios del negocio.
- Django 5.2.1 como framework web y ORM.
- MySQL como motor relacional principal (configurado mediante variables de entorno en
settings.py). - ReportLab y xhtml2pdf para emisión de comprobantes PDF y reportes impresos.
- WhiteNoise para servir archivos estáticos en despliegues productivos.
- python-dotenv (
load_dotenv) para inyectar secretos y credenciales sin exponerlos en el repositorio. - django-prometheus para métricas y monitoreo.
- App única (
prestamos): concentra los modelos de dominio, vistas y rutas declaradas enurls.py. - Plantillas HTML bajo
templates/prestamos/, organizadas por vistas (clientes, préstamos, pagos, reportes, etc.). - Recursos estáticos ubicados en
static/y recolectados enstaticfiles/para despliegue. - Configuración central en
settings.py, donde se habilitan middlewares, almacenamiento de estáticos y parámetros regionales. - Seguridad: autenticación estándar de Django, decoradores y permisos para operaciones sensibles (por ejemplo, anulación de recibos o edición de clientes).
sistema_pagareses/
│ manage.py
│ requirements.txt
│ manifest.json
│ sw.js
│
├── prestamos/
│ ├── models.py
│ ├── views.py
│ ├── urls.py
│ ├── templates/
│ │ └── prestamos/
│ │ ├── anulacion.html
│ │ ├── anulacionderesivo.html
│ │ ├── cliente_detalle.html
│ │ ├── clientes.html
│ │ ├── despacho.html
│ │ ├── estadosdecuentas.html
│ │ ├── facturas.html
│ │ ├── formulario.html
│ │ ├── index.html
│ │ ├── pagare_pdf.html
│ │ ├── prestamospagados.html
│ │ ├── registrodepago.html
│ │ ├── reimprimir.html
│ │ ├── reporte.html
│ │ ├── vistadecliente.html
│ ├── migrations/
│ ├── static/
│ ├── tests.py
│ ├── admin.py
│ ├── apps.py
│
├── sistema_pagareses/
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ ├── asgi.py
│
├── staticfiles/
│ └── ...
Los modelos residen en models.py y cubren todo el ciclo operativo:
| Modelo | Rol principal | Relacionamientos destacados |
|---|---|---|
Cliente |
Registro de clientes, datos personales, contacto y financieros. | Asociado a Prestamo, Ingreso. |
Prestamo |
Encapsula cada préstamo, cliente, monto, fechas, estado y método de pago. | FK a Cliente, relacionado con Ingreso. |
Ingreso |
Registra pagos realizados a préstamos, métodos, tipo y anulación. | FK a Prestamo, anulación por usuario. |
RecibosAnulados |
Historial de recibos anulados, con trazabilidad y usuario responsable. | FK a Prestamo, usuario. |
- Vista
indexmaneja login utilizandodjango.contrib.auth. Redirige a reportes tras autenticarse. - Decoradores y permisos protegen vistas críticas (anulación, edición, eliminación).
- Vista
reportemuestra métricas: clientes con mayor deuda, métodos de pago más usados, mejores pagadores, historial de pagos. - Gráficas y tablas interactivas con datos agregados.
- Registro, edición, eliminación y consulta de clientes.
- Validación de datos y unicidad de identificación.
- Registro de préstamos, asignación de número de factura único, control de estado y vencimiento.
- Relación directa con clientes y pagos.
- Registro de pagos, generación de recibos únicos, control de abonos y pagos completos.
- Generación de comprobantes PDF listos para impresión térmica.
- Anulación de préstamos y recibos, con registro de motivo, usuario y fecha.
- Restauración de saldos y trazabilidad completa.
- Reportes PDF, exportaciones y consultas especiales para gestión y auditoría.
- Registro de cliente: alta de datos personales y financieros.
- Registro de préstamo: asignación de cliente, monto, fechas y método de pago.
- Registro de pago: abono o pago completo, generación de recibo y actualización de saldo.
- Anulación: reversión de préstamos o recibos, restaurando saldos y dejando trazabilidad.
- Reportes: visualización de métricas, exportación y análisis.
- Rutas: centralizadas en
urls.py. - Plantillas: cada feature tiene su HTML (por ejemplo,
clientes.html,reporte.html,registrodepago.html). - Assets: imágenes y scripts en
static/; archivos compilados enstaticfiles/listos para WhiteNoise.
- Credenciales y llaves se cargan desde
.env(no versionado). - CSRF habilitado globalmente; endpoints críticos usan
@csrf_exemptsolo cuando es imprescindible. - Validaciones server-side para montos, unicidad y consistencia de datos.
- Permisos y autenticación para operaciones sensibles.
- Crear archivo
.envcon las siguientes variables de entorno:
SECRET_KEY="tu_clave_secreta"
DB_NAME="nombre_base_datos"
DB_USER="usuario"
DB_PASSWORD="contraseña"
DB_HOST="localhost"
DB_PORT="3306"
ALLOWED_HOSTS="localhost,127.0.0.1"
CSRF_TRUSTED_ORIGINS="http://localhost,http://127.0.0.1"
DEBUG=True- Instalar dependencias (
requirements.txt). - Ejecutar migraciones (
python manage.py migrate). - Crear superusuario (
python manage.py createsuperuser). - Colectar estáticos (
python manage.py collectstatic). - Configurar servicio WSGI apuntando a
wsgi.pyy habilitar WhiteNoise para estáticos.
- KPI adicionales: aging de cuentas, ranking de clientes, alertas de vencimiento.
- Alertas proactivas: notificaciones por correo o WhatsApp para cuentas vencidas.
- API pública: encapsular endpoints clave en una API REST (Django REST Framework).
- Pruebas automatizadas: ampliar
tests.pycon casos de préstamo, pago y anulación.
- Cliente: Datos personales, contacto y financieros.
- Prestamo: Préstamos, estado, fechas, monto y cliente asociado.
- Ingreso: Pagos, abonos, tipo, método y anulación.
- RecibosAnulados: Historial de anulaciones, motivos y usuario responsable.
La aplicación cuenta con templates personalizados para cada funcionalidad, con diseño moderno y sidebar fijo. Ejemplos:
clientes.html: Gestión y consulta de clientes.prestamospagados.html: Listado de préstamos pagados.registrodepago.html: Registro y control de pagos.reporte.html: Dashboard y métricas.anulacion.html: Anulación de préstamos.anulacionderesivo.html: Anulación de recibos.facturas.htmlypagare_pdf.html: Comprobantes y pagarés para impresión.
-
Requisitos:
- Python 3.10+
- Django 5.2.1
- MySQL
- Paquetes adicionales:
pillow,reportlab,xhtml2pdf,django-prometheus,python-dotenv,whitenoise.
-
Instalación de dependencias:
pip install -r requirements.txt
-
Configuración de base de datos:
- Edita las variables de entorno en
.envpara definirDB_NAME,DB_USER,DB_PASSWORD,DB_HOST,DB_PORT. - El sistema utiliza MySQL con configuración estricta y soporte para zona horaria.
- Edita las variables de entorno en
-
Migraciones:
python manage.py makemigrations python manage.py migrate
-
Creación de superusuario:
python manage.py createsuperuser
-
Ejecución del servidor:
python manage.py runserver
- Accede al sistema desde el navegador en
http://localhost:8000. - Inicia sesión con usuario registrado.
- Utiliza el dashboard para visualizar métricas.
- Gestiona clientes, préstamos, pagos, anulaciones y reportes desde el menú lateral.
- Imprime comprobantes y pagarés desde las vistas correspondientes.
- El sistema implementa autenticación y autorización basada en usuarios y permisos de Django.
- Los roles permiten segmentar el acceso a funcionalidades críticas.
- El archivo
tests.pyestá preparado para pruebas unitarias con Django TestCase. - Se recomienda implementar pruebas para cada modelo y vista crítica.
- Los templates pueden ser adaptados para branding propio.
- El sistema soporta ampliación de modelos y vistas para nuevas funcionalidades.
Ver archivo requirements.txt para la lista completa.
- Variables de entorno para seguridad y base de datos.
- Soporte para archivos estáticos y media.
- Configuración de zona horaria y localización.
Para soporte, contactar al desarrollador o consultar la documentación de Django.
