Añadir README.md
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Has been cancelled
Some checks failed
Optimized Build and Deploy / remote-build-and-deploy (push) Has been cancelled
This commit is contained in:
190
README.md
Normal file
190
README.md
Normal file
@@ -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 <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:
|
||||||
|
|
||||||
|
```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.
|
||||||
|
|
||||||
Reference in New Issue
Block a user