From 9c225845c2f61dae6e2c448ed5dff10de62c58a4 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Tue, 22 Jul 2025 12:47:15 +0000 Subject: [PATCH] =?UTF-8?q?A=C3=B1adir=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..10d5151 --- /dev/null +++ b/README.md @@ -0,0 +1,190 @@ +# Gestion Integral Web + +**Gestion Integral Web** es un sistema de gestión empresarial completo, diseñado para administrar las operaciones críticas 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:** `Microsoft.ReportingServices.ReportViewerControl.WebForms` (a través de wrappers para .NET Core) +- **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 +```bash +git clone +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: + + ```json + { + "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: + ```bash + 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: + ```bash + 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 +/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 +``` + +--- + +## 📜 Licencia + +Este proyecto está bajo la Licencia [NOMBRE DE LA LICENCIA]. Ver el archivo `LICENSE` para más detalles. +