dmolinari fc27b4b43e
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 3m58s
feat(Reportes): Ajusta cálculo de promedios en Listado de Distribución
Se modifica la lógica de cálculo para la fila "General" en la tabla de promedios del reporte de Listado de Distribución para distribuidores.

**Motivación:**
Por requerimiento explícito del usuario final, el cálculo de los promedios generales (Llevados, Devueltos, Ventas y % Devolución) debe ser un promedio aritmético simple de los valores de los días de la semana mostrados en la tabla (ej. Viernes, Sábado, Domingo), en lugar del promedio ponderado que se calculaba anteriormente basado en los totales generales.

**Cambios Realizados:**

1.  **Backend (`ListadoDistribucionDistribuidoresViewModel.cs`):**
    *   Se actualizó la propiedad `PromedioGeneral` para que calcule sus valores (Promedio\_Llevados, Promedio\_Devueltos, etc.) promediando directamente los valores de la colección `PromediosPorDia`.

2.  **PDF (`ListadoDistribucionDistribuidoresDocument.cs`):**
    *   Se ajustó la lógica de renderizado de la fila "General" para que el porcentaje de devolución también se calcule como el promedio de los porcentajes de los días individuales, asegurando consistencia con el ViewModel.

3.  **Frontend (`ReporteListadoDistribucionPage.tsx`):**
    *   Se modificó el cálculo del estado `totalesPromedios` dentro de la función `handleGenerarReporte`. Ahora, en lugar de usar los totales de la tabla de detalle, suma los valores de la tabla de promedios y los divide por la cantidad de días para obtener un promedio simple.

**Resultado:**
Tanto la interfaz web como el PDF generado ahora muestran en la fila "General" un promedio simple de las filas de promedios diarios, alineándose con la lógica solicitada por el usuario.
2025-12-05 12:25:18 -03:00
2025-09-10 12:30:07 -03:00
2025-08-14 13:15:23 +00:00

Gestion Integral Web

Gestion Integral Web es un sistema de gestión empresarial, diseñado para administrar las operaciones de una empresa de medios de comunicación. Este proyecto representa la migración y modernización de un sistema de escritorio heredado, desarrollado originalmente en VB.NET, a una arquitectura web moderna y robusta.

El sistema se compone de un backend RESTful API desarrollado en ASP.NET Core y un frontend interactivo de tipo SPA (Single Page Application) construido con React y TypeScript.


Módulos y Funcionalidades Principales

El sistema está organizado en varios módulos clave para cubrir todas las áreas operativas:

🚚 Distribución

  • Gestión de Canillitas y Accionistas: ABM completo, manejo de legajos, zonas, paradas, y estado de baja.
  • Gestión de Distribuidores: ABM de distribuidores, asignación de zonas y datos de contacto.
  • Gestión de Publicaciones: Administración de diarios y revistas, incluyendo:
    • Precios: Definición de precios por día de la semana con historial de vigencia.
    • Recargos: Configuración de recargos por zona geográfica.
    • Porcentajes de Pago: Asignación de porcentajes de pago diferenciados para distribuidores y canillitas/accionistas.
    • Secciones: Administración de las secciones que componen cada publicación (Ej: Deportes, Espectáculos).
  • Movimientos Diarios:
    • Registro de entradas (devoluciones) y salidas (entregas) para distribuidores y canillitas.
    • Carga masiva de movimientos para canillitas.
    • Control de Devoluciones y gestión de sobrantes y ejemplares sin cargo.
    • Gestión de salidas a "Otros Destinos" (ej: canje, protocolo).
  • Liquidaciones: Proceso para marcar movimientos como liquidados y calcular montos a rendir.

🖨️ Impresión

  • Gestión de Stock de Bobinas:
    • Ingreso de bobinas con remito, peso, tipo y planta.
    • Trazabilidad completa del estado de cada bobina (Disponible, En Uso, Dañada).
    • Asignación de bobinas consumidas a una publicación y sección específica.
  • Registro de Tiradas:
    • Definición de tiradas diarias por publicación y planta.
    • Detalle de secciones y cantidad de páginas por cada tirada.
  • Administración de Datos Maestros: ABM de Plantas de Impresión, Tipos de Bobina y Estados de Bobina.

💰 Contabilidad

  • Cuentas Corrientes: Seguimiento de saldos para distribuidores por empresa.
  • Gestión de Pagos: Registro de pagos recibidos y realizados a distribuidores, con múltiples tipos de pago.
  • Notas de Crédito y Débito: Emisión de notas para ajustar las cuentas corrientes de distribuidores y canillitas.
  • Administración de Tipos de Pago.

📻 Radios

  • Gestión de Fonoteca: ABM de canciones, intérpretes, autores, y ritmos.
  • Generador de Listas de Reproducción: Herramienta para generar planillas de programación musical en formato Excel (XLSX) y ZIP para su presentación a entidades como AADI y SADAIC.

📊 Reportes

  • Módulo de Reportes PDF y Excel: Generación de una amplia gama de reportes operativos y de gestión.
    • Impresión: Existencia de Papel, Movimiento de Bobinas, Consumo por Sección/Publicación, Comparativa Mensual de Consumo.
    • Distribución: Listados de Distribución (General y Canillitas), Control de Devoluciones, Comprobantes de Liquidación.
    • Contabilidad: Balances de Cuentas Corrientes de Distribuidores.
    • Ventas: Reportes de Venta Mensual para Secretaría.

👤 Usuarios y Seguridad

  • Gestión de Usuarios: ABM de usuarios del sistema.
  • Control de Acceso Basado en Roles (RBAC):
    • Perfiles: Creación de roles de usuario (ej: Administrador, Operador de Distribución).
    • Permisos: Definición granular de permisos para cada acción del sistema (Ver, Crear, Modificar, Eliminar).
    • Asignación flexible de permisos a perfiles.
  • Autenticación Segura: Mediante JSON Web Tokens (JWT).
  • Auditoría: Todas las modificaciones a los datos maestros y transacciones importantes se registran en tablas de historial (_H).

📨 Suscripciones

  • Gestión de Suscriptores: ABM completo de clientes, incluyendo datos de contacto, dirección de entrega y forma de pago preferida.
  • Ciclo de Vida de la Suscripción: Creación y administración de suscripciones por cliente y publicación, con fechas de inicio, fin, días de entrega y estados (Activa, Pausada, Cancelada).
  • Facturación Proporcional (Pro-rata): El sistema genera automáticamente una "Factura de Alta" por el monto proporcional cuando un cliente se suscribe en un período ya cerrado, evitando cobros excesivos en la primera factura.
  • Gestión de Promociones: ABM de promociones (ej. descuentos porcentuales, bonificación de días) y asignación a suscripciones específicas con vigencia definida.
  • Cuenta Corriente del Suscriptor: Administración de ajustes manuales (Crédito/Débito) para manejar situaciones excepcionales como notas de crédito, devoluciones o cargos especiales.
  • Procesos de Cierre Mensual:
    • Generación de Cierre: Proceso masivo que calcula y genera todas las facturas del período, aplicando promociones y ajustes.
    • Notificaciones Automáticas: Envío automático de resúmenes de cuenta por email a cada suscriptor al generar el cierre.
  • Gestión de Débito Automático:
    • Generación de Archivo: Creación del archivo de texto plano en formato "Pago Directo" para el Banco Galicia. Las "Facturas de Alta" se excluyen automáticamente de este proceso.
    • Procesamiento de Respuesta: Herramienta para procesar el archivo de respuesta del banco, actualizando los estados de pago (Pagada/Rechazada) de forma masiva.
  • Auditoría de Comunicaciones:
    • Log de Envíos: Registro detallado de cada correo electrónico enviado (individual o masivo), incluyendo estado (Enviado/Fallido) y mensajes de error.
    • Historial de Envíos: Interfaz para consultar el historial de notificaciones enviadas por cada factura o por cada lote de cierre mensual.

🛠️ Stack Tecnológico

Backend (GestionIntegral.Api)

  • Framework: ASP.NET Core 9
  • Lenguaje: C# 12
  • Acceso a Datos: Dapper (Micro ORM)
  • Base de Datos: Microsoft SQL Server
  • Autenticación: JWT Bearer Tokens
  • Reportes PDF: QuestPDF C# PDF Generation Library
  • Exportación Excel: NPOI

Frontend

  • Framework: React 18
  • Lenguaje: TypeScript
  • UI Kit: Material-UI (MUI) v5 & MUI X (para DataGrid)
  • Enrutamiento: React Router v6
  • Llamadas API: Axios
  • Gestión de Estado: React Context API (useAuth)
  • Build Tool: Vite

🚀 Puesta en Marcha (Getting Started)

Siga estos pasos para configurar y ejecutar el proyecto en un entorno de desarrollo local.

Prerrequisitos

  • .NET SDK 9.0 o superior.
  • Node.js v18.x o superior (con npm o yarn).
  • Microsoft SQL Server (2019 o superior) y SQL Server Management Studio (SSMS).
  • Un editor de código como Visual Studio Code o Visual Studio 2022.

1. Clonar el Repositorio

git clone <URL_DEL_REPOSITORIO_GITEA>
cd GestionIntegralWeb

2. Configuración de la Base de Datos

  1. Abra SSMS y conecte a su instancia de SQL Server.
  2. Cree una nueva base de datos llamada SistemaGestion.
  3. Restaure la base de datos a partir del archivo .bak proporcionado por el equipo. (Si no lo tiene, solicítelo).
  4. Ejecute los scripts de Stored Procedures y actualizaciones de esquema que se encuentran en el archivo dbSP.sql sobre la base de datos restaurada.

3. Configuración del Backend

  1. Navegue al directorio del backend: cd Backend/GestionIntegral.Api.

  2. Cree un archivo appsettings.Development.json en este directorio si no existe.

  3. Copie y pegue la siguiente estructura y rellene los valores correctos:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "ConnectionStrings": {
        "DefaultConnection": "Data Source=NOMBRE_SU_SERVIDOR;Initial Catalog=SistemaGestion;Integrated Security=False;User ID=su_usuario_sql;Password=su_contraseña;Encrypt=True;TrustServerCertificate=True"
      },
      "Jwt": {
        "Key": "UNA_CLAVE_SECRETA_MUY_LARGA_Y_SEGURA_AQUI_DE_AL_MENOS_32_CARACTERES",
        "Issuer": "http://localhost:5183", // La URL donde corre su backend
        "Audience": "http://localhost:5173", // La URL donde corre su frontend
        "DurationInHours": 8
      }
    }
    
  4. Instale las dependencias y ejecute el backend:

    dotnet restore
    dotnet run
    

    La API estará disponible en la URL especificada (ej. http://localhost:5183).

4. Configuración del Frontend

  1. Navegue al directorio del frontend: cd Frontend (desde la raíz del proyecto).
  2. Cree un archivo .env en este directorio.
  3. Añada la siguiente variable de entorno apuntando a la URL de su backend:
    VITE_API_BASE_URL=http://localhost:5183
    
  4. Instale las dependencias y ejecute el frontend:
    npm install
    npm run dev
    
    La aplicación web estará disponible en http://localhost:5173 (o el puerto que indique Vite).

📂 Estructura del Proyecto

Backend (Backend/GestionIntegral.Api/)

/Controllers/    # Controladores de la API, organizados por módulo
  Reportes/
    PdfTemplates/ # Templates de los reportes utilizados mediante QuestPDF
/Data/
  /Repositories/ # Lógica de acceso a datos con Dapper para cada entidad
  DbConnectionFactory.cs # Clase para crear conexiones a la BD
/Dtos/           # Data Transfer Objects, para comunicación entre capas y con el frontend
/Models/         # Clases que representan las tablas de la base de datos
/Services/       # Lógica de negocio, validaciones y orquestación
/Program.cs      # Configuración de servicios, DI, autenticación y middleware

Frontend (Frontend/)

/src/
  /components/   # Componentes reutilizables (botones, modales, etc.)
  /contexts/     # React Contexts (ej: AuthContext)
  /hooks/        # Hooks personalizados
  /layouts/      # Estructuras de página principales (ej: MainLayout con sidebar y navbar)
  /models/       # Interfaces y tipos de TypeScript para DTOs y modelos del frontend
  /pages/        # Componentes de página principales, organizados por módulo
  /routes/       # Configuración de enrutamiento con React Router
  /services/     # Lógica para realizar llamadas a la API con Axios
  /App.tsx       # Componente raíz de la aplicación
  /main.tsx      # Punto de entrada de la aplicación React
Description
Solución enfocada en el control y gestión de la distribución, impresion, cuentas de distribuidores, etc. de las ediciones impresas de las publicaciones.
Readme 4.9 MiB
Languages
C# 55.7%
TypeScript 43.9%
Python 0.3%