Commit Graph

158 Commits

Author SHA1 Message Date
899e0a173f Refactor: Mejora la lógica de facturación y la UI
Este commit introduce una refactorización significativa en el módulo de
suscripciones para alinear el sistema con reglas de negocio clave:
facturación consolidada por empresa, cobro a mes adelantado con
imputación de ajustes diferida, y una interfaz de usuario más clara.

Backend:
- **Facturación por Empresa:** Se modifica `FacturacionService` para
  agrupar las suscripciones por cliente y empresa, generando una
  factura consolidada para cada combinación. Esto asegura la correcta
  separación fiscal.
- **Imputación de Ajustes:** Se ajusta la lógica para que la facturación
  de un período (ej. Septiembre) aplique únicamente los ajustes
  pendientes cuya fecha corresponde al período anterior (Agosto).
- **Cierre Secuencial:** Se implementa una validación en
  `GenerarFacturacionMensual` que impide generar la facturación de un
  período si el anterior no ha sido cerrado, garantizando el orden
  cronológico.
- **Emails Consolidados:** El proceso de notificación automática al
  generar el cierre ahora envía un único email consolidado por
  suscriptor, detallando los cargos de todas sus facturas/empresas.
- **Envío de PDF Individual:** Se refactoriza el endpoint de envío manual
  para que opere sobre una `idFactura` individual y adjunte el PDF
  correspondiente si existe.
- **Repositorios Mejorados:** Se optimizan y añaden métodos en
  `FacturaRepository` y `AjusteRepository` para soportar los nuevos
  requisitos de filtrado y consulta de datos consolidados.

Frontend:
- **Separación de Vistas:** La página de "Facturación" se divide en dos:
  - `ProcesosPage`: Para acciones masivas (generar cierre, archivo de
    débito, procesar respuesta).
  - `ConsultaFacturasPage`: Una nueva página dedicada a buscar,
    filtrar y gestionar facturas individuales con una interfaz de doble
    acordeón (Suscriptor -> Empresa).
- **Filtros Avanzados:** La página `ConsultaFacturasPage` ahora incluye
  filtros por nombre de suscriptor, estado de pago y estado de
  facturación.
- **Filtros de Fecha por Defecto:** La página de "Cuenta Corriente"
  ahora filtra por el mes actual por defecto para mejorar el rendimiento
  y la usabilidad.
- **Validación de Fechas:** Se añade lógica en los filtros de fecha para
  impedir la selección de rangos inválidos.
- **Validación de Monto de Pago:** El modal de pago manual ahora impide
  registrar un monto superior al saldo pendiente de la factura.
2025-08-08 09:48:15 -03:00
9cfe9d012e Feat: Implementa ABM y anulación de ajustes manuales
Este commit introduce la funcionalidad completa para la gestión de
ajustes manuales (créditos/débitos) en la cuenta corriente de un
suscriptor, cerrando un requerimiento clave detectado en el análisis
del flujo de trabajo manual.

Backend:
- Se añade la tabla `susc_Ajustes` para registrar movimientos manuales.
- Se crean el Modelo, DTOs, Repositorio y Servicio (`AjusteService`)
  para el ABM completo de los ajustes.
- Se implementa la lógica para anular ajustes que se encuentren en estado
  "Pendiente", registrando el usuario y fecha de anulación para
  mantener la trazabilidad.
- Se integra la lógica de aplicación de ajustes pendientes en el
  `FacturacionService`, afectando el `ImporteFinal` de la factura
  generada.
- Se añaden los nuevos endpoints en `AjustesController` para crear,
  listar y anular ajustes.

Frontend:
- Se crea el componente `CuentaCorrienteSuscriptorTab` para mostrar
  el historial de ajustes de un cliente.
- Se desarrolla el modal `AjusteFormModal` que permite a los usuarios
  registrar nuevos créditos o débitos.
- Se integra una nueva pestaña "Cuenta Corriente / Ajustes" en la
  vista de gestión de un suscriptor.
- Se añade la funcionalidad de "Anular" en la tabla de ajustes,
  permitiendo a los usuarios corregir errores antes del ciclo de
  facturación.
2025-08-01 14:38:15 -03:00
9e248efc84 Fix: CreatePromocionesDto
- Se separa el dto para el update del create.
2025-08-01 13:43:07 -03:00
84187a66df Feat: Implementa flujo completo de facturación y promociones
Este commit introduce la funcionalidad completa para la facturación mensual,
la gestión de promociones y la comunicación con el cliente en el módulo
de suscripciones.

Backend:
- Se añade el servicio de Facturación que calcula automáticamente los importes
  mensuales basándose en las suscripciones activas, días de entrega y precios.
- Se implementa el servicio DebitoAutomaticoService, capaz de generar el
  archivo de texto plano para "Pago Directo Galicia" y de procesar el
  archivo de respuesta para la conciliación de pagos.
- Se desarrolla el ABM completo para Promociones (Servicio, Repositorio,
  Controlador y DTOs), permitiendo la creación de descuentos por porcentaje
  o monto fijo.
- Se implementa la lógica para asignar y desasignar promociones a suscripciones
  específicas.
- Se añade un servicio de envío de email (EmailService) integrado con MailKit
  y un endpoint para notificar facturas a los clientes.
- Se crea la lógica para registrar pagos manuales (efectivo, tarjeta, etc.)
  y actualizar el estado de las facturas.
- Se añaden todos los permisos necesarios a la base de datos para
  segmentar el acceso a las nuevas funcionalidades.

Frontend:
- Se crea la página de Facturación, que permite al usuario seleccionar un
  período, generar la facturación, listar los resultados y generar el archivo
  de débito para el banco.
- Se implementa la funcionalidad para subir y procesar el archivo de
  respuesta del banco, actualizando la UI en consecuencia.
- Se añade la página completa para el ABM de Promociones.
- Se integra un modal en la gestión de suscripciones para asignar y
  desasignar promociones a un cliente.
- Se añade la opción "Enviar Email" en el menú de acciones de las facturas,
  conectada al nuevo endpoint del backend.
- Se completan y corrigen los componentes `PagoManualModal` y `FacturacionPage`
  para incluir la lógica de registro de pagos y solucionar errores de TypeScript.
2025-08-01 12:53:17 -03:00
b14c5de1b4 Feat: Implementación de módulos ABM de suscripciones por cliente 2025-07-31 10:24:26 -03:00
d62ca7feb3 Feat: Tipos de datos y Servicios 2025-07-30 11:14:33 -03:00
f09c795fb0 Feat: Se agregan servicios y controladores para ABM de suscriptores 2025-07-30 09:48:05 -03:00
19e7192a16 Feat: Se añaden las capas de modelos y respositorios para el modulo de Suscripciones 2025-07-29 14:11:50 -03:00
7e4d3282fb feat(Reportes): Refactoriza vista Dist. General y corrige totales PDF
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 5m35s
Frontend:
- Se refactoriza la página `ReporteListadoDistribucionGeneralPage.tsx` para reemplazar la tabla HTML estándar por el componente `DataGrid` de MUI X.
- Se implementa el cálculo y la visualización de una fila de totales para las tablas de "Resumen Diario" y "Promedios por Día", mejorando la legibilidad y consistencia con otros reportes.
- Se actualiza la exportación a Excel para incluir estas nuevas filas de totales.
- Se corrigen errores de tipado (TypeScript) relacionados con la importación de DTOs.

Backend:
- Se ajusta la lógica en `ListadoDistribucionGeneralViewModel.cs` para calcular correctamente la fila "General" de promedios en la exportación a PDF.
- Anteriormente, el promedio se calculaba incorrectamente dividiendo por el total de días del mes. Ahora, se calcula un promedio real basado únicamente en los días con actividad (tirada > 0), asegurando que los datos del PDF coincidan con los de la interfaz.
2025-07-28 11:34:40 -03:00
28c1b88a92 Feat: Implementar modificación de Tiradas y mejorar UX/UI
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 12m54s
**Backend:**
- Se ha añadido el endpoint `PUT /api/tiradas` para manejar la modificación de una Tirada, identificada por su clave única (fecha, idPublicacion, idPlanta).
- Se implementó un mecanismo de actualización granular para las secciones de la tirada (`bob_RegPublicaciones`), reemplazando la estrategia anterior de "eliminar todo y recrear".
  - La nueva lógica reconcilia el estado entrante con el de la base de datos, realizando operaciones individuales de `INSERT`, `UPDATE` y `DELETE` para cada sección.
  - Esto mejora significativamente el rendimiento y proporciona un historial de auditoría mucho más preciso.
- Se añadieron los DTOs `UpdateTiradaRequestDto` y `UpdateDetalleSeccionTiradaDto` para soportar el nuevo payload de modificación.
- Se expandieron los repositorios `IRegPublicacionSeccionRepository` y `IPubliSeccionRepository` con métodos para operaciones granulares (`UpdateAsync`, `DeleteByIdAsync`, `GetByIdsAndPublicacionAsync`).

**Frontend:**
- El componente `TiradaFormModal` ha sido refactorizado para funcionar tanto en modo "Crear" como en modo "Editar", recibiendo una prop `tiradaToEdit`.
- Se implementó una lógica de carga asíncrona robusta que obtiene los datos completos de una tirada antes de abrir el modal en modo edición.

**Mejoras de UI/UX:**
- Se ha rediseñado el layout de la lista de tiradas en `GestionarTiradasPage`:
  - Los botones de acción (Editar, Borrar) y los datos clave (chips de ejemplares y páginas) ahora se encuentran en una cabecera estática.
  - Estos elementos permanecen fijos en la parte superior y no se desplazan al expandir el acordeón, mejorando la consistencia visual.
- Se ha mejorado la tabla de secciones dentro del `TiradaFormModal`:
  - El botón "+ AGREGAR SECCIÓN" ahora está fijo en la parte inferior de la tabla, permaneciendo siempre visible incluso cuando la lista de secciones tiene scroll.
  - Al agregar una nueva sección, la lista se desplaza automáticamente hacia abajo para mostrar la nueva fila.
2025-07-23 14:05:58 -03:00
052141a45b Actualizar README.md
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 2m57s
2025-07-22 12:55:22 +00:00
9e8ccf6cfb Actualizar README.md
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 2m59s
2025-07-22 12:47:38 +00:00
9c225845c2 Añadir README.md
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Has been cancelled
2025-07-22 12:47:15 +00:00
f46dd82e27 Fix: Dropdown Focus
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 6m4s
2025-07-21 13:00:11 -03:00
c251a0adf4 Feat: Solicitudes Contaduría
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 6m57s
- Siglas Días en Reporte Dist. General
- Mostrar Publicaciones Deshabilitadas en Selectores de Reportes
2025-07-21 12:44:21 -03:00
3e1ac6f742 Fix: Cambios solicitados. Parte 1
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 6m18s
2025-07-18 21:46:07 -03:00
a35a3a66ea Fix: Filtro Fecha Tiradas
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 5m10s
2025-07-18 17:04:12 -03:00
c96d259892 Implementación AnomalIA - Fix de dropdowns y permisos.
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 5m17s
2025-06-30 15:26:14 -03:00
95aa09d62a Fix Limpieza de Images y Mensaje de Auditoria NPM
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 4m2s
2025-06-27 18:59:03 -03:00
dc52c9aff2 Auditoria de NPM y Fix de Paquetes
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 5m2s
2025-06-27 18:24:30 -03:00
d60ec7ffd7 Reversión de deploy
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 3m8s
2025-06-25 23:00:56 -03:00
03cda5cdbe Reversión total de JWT Key
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Failing after 1m6s
2025-06-25 22:57:24 -03:00
c6aec21e70 Try escape de variables remotas con \
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Failing after 27s
2025-06-25 22:51:39 -03:00
a1a185c7b6 Edición de Compose y Se quita Https Redirection
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 13m58s
2025-06-25 22:25:58 -03:00
6921effab0 Test Para .Env con Echo
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 8m3s
2025-06-25 22:00:07 -03:00
cea51ee93c Reversión con Indentación y <<- para Cat
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 2m43s
2025-06-25 21:46:36 -03:00
ea225d650e Fix indentación Cat 2025-06-25 21:45:14 -03:00
ff02cef2ca Try de JWT Key en .Env con Secret de Gitea
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 9m24s
2025-06-25 21:23:06 -03:00
3c522a33af Fix Producción IP Nueva
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 3m1s
2025-06-25 20:53:16 -03:00
b553affe7f Cambio de ip de produccion para la API
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 3m21s
2025-06-25 19:43:36 -03:00
ab232c481d Test https redirection
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 6m23s
2025-06-25 19:22:26 -03:00
6a1d935a61 Reversión, se implementa solo tolerancia de Kuma.
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 6m22s
2025-06-24 22:21:11 -03:00
68376291da Retry 2216
Some checks failed
Optimized Build and Deploy with Session Authentication / remote-build-and-deploy (push) Failing after 11s
2025-06-24 22:16:40 -03:00
26856f26bf CAmbio en Secrets (User - Pass)
Some checks failed
Optimized Build and Deploy with Session Authentication / remote-build-and-deploy (push) Failing after 8s
2025-06-24 22:06:09 -03:00
230332568f Fix 2154
Some checks failed
Optimized Build and Deploy with Maintenance Window (Robust) / remote-build-and-deploy (push) Failing after 9s
2025-06-24 21:54:08 -03:00
99d3db68d9 Retry 2151
Some checks failed
Optimized Build and Deploy with Maintenance Window / remote-build-and-deploy (push) Failing after 8s
2025-06-24 21:51:27 -03:00
b5a68d1825 Test con PUT a Kuma
Some checks failed
Optimized Build and Deploy with Maintenance Window / remote-build-and-deploy (push) Failing after 10s
2025-06-24 21:49:15 -03:00
de54e5e200 Test Kuma Api con Endpoints
Some checks failed
Optimized Build and Deploy with Maintenance Window / remote-build-and-deploy (push) Failing after 10s
2025-06-24 21:39:32 -03:00
673fd55037 Fix Deploy 2137
Some checks failed
Optimized Build and Deploy with Maintenance Window / remote-build-and-deploy (push) Failing after 11s
2025-06-24 21:37:45 -03:00
edb8a5e56c Intento de Manejo de "Mantenimiento" de Kuma desde el deploy.
Some checks failed
Optimized Build and Deploy with Maintenance Window / remote-build-and-deploy (push) Failing after 48s
2025-06-24 21:33:49 -03:00
fd11ef9005 Se añade servicio de HealtCheck de SqlServer
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 7m19s
Se pretende utilizar mediante Kuma
2025-06-24 20:51:57 -03:00
229eb937f5 QuestPdf Implementado en la totalidad de reportes.
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 7m55s
2025-06-24 12:52:37 -03:00
a5bcbefa52 Try con QuestPDF
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 7m36s
Se elimina Puppeteer y Chromium. Se utiliza QuestPDF para mayor velocidad y sin Razor.
2025-06-20 19:04:23 -03:00
1373bcf9ca Retry Usando Docker Build Nativo
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 11m48s
2025-06-20 12:02:10 -03:00
3a0f0a4bf8 Fix. Se usa un repositorio de caché ficticio local que no requiere autenticación.
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Failing after 17s
2025-06-20 11:58:39 -03:00
16f991e04b Fix para Build local
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Failing after 17s
2025-06-20 11:54:09 -03:00
26ffc7c0b2 Fix para omitir sudo
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Failing after 38s
2025-06-20 11:48:24 -03:00
35f62c3322 Fix ruta del deploy
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Failing after 12s
2025-06-20 11:46:01 -03:00
a80a6f964f Test de optimización de Pipeline con Cache.
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Failing after 11s
2025-06-20 11:38:26 -03:00
b4b4f8b322 Fix libs
All checks were successful
Build and Deploy / remote-build-and-deploy (push) Successful in 52m31s
2025-06-20 08:21:45 -03:00