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).
🛠️ 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
- Abra SSMS y conecte a su instancia de SQL Server.
- Cree una nueva base de datos llamada
SistemaGestion. - Restaure la base de datos a partir del archivo
.bakproporcionado por el equipo. (Si no lo tiene, solicítelo). - Ejecute los scripts de Stored Procedures y actualizaciones de esquema que se encuentran en el archivo
dbSP.sqlsobre la base de datos restaurada.
3. Configuración del Backend
-
Navegue al directorio del backend:
cd Backend/GestionIntegral.Api. -
Cree un archivo
appsettings.Development.jsonen este directorio si no existe. -
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 } } -
Instale las dependencias y ejecute el backend:
dotnet restore dotnet runLa API estará disponible en la URL especificada (ej.
http://localhost:5183).
4. Configuración del Frontend
- Navegue al directorio del frontend:
cd Frontend(desde la raíz del proyecto). - Cree un archivo
.enven este directorio. - Añada la siguiente variable de entorno apuntando a la URL de su backend:
VITE_API_BASE_URL=http://localhost:5183 - Instale las dependencias y ejecute el frontend:
La aplicación web estará disponible en
npm install npm run devhttp://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