Este directorio contiene todos los scripts SQL necesarios para configurar y poblar la base de datos de PoliMarket con datos de prueba.
| Archivo | Descripción | Orden |
|---|---|---|
RecreateDatabase.sql |
Elimina y recrea la base de datos desde cero | - |
AddMissingColumns.sql |
Agrega columnas faltantes (si es necesario) | - |
SeedData.sql |
Datos de prueba para Security (usuarios y roles) | 1️⃣ |
SeedData_Inventory.sql |
Datos de prueba para Inventory (productos y proveedores) | 2️⃣ |
SeedData_Sales.sql |
Datos de prueba para Sales (clientes) | 3️⃣ |
SeedData_Logistics.sql |
Datos de prueba para Logistics (facturas y órdenes) | 4️⃣ |
LoadAllSeedData.sql |
Script maestro que ejecuta todos los anteriores | ⭐ |
Ejecuta el script maestro que carga todos los módulos en el orden correcto:
sqlcmd -S .\SQLEXPRESS -d PoliMarketDb -i Database\LoadAllSeedData.sql✅ Ventajas:
- Un solo comando
- Orden correcto garantizado
- Resumen completo al final
- Verifica integridad de datos
Si necesitas cargar solo módulos específicos:
sqlcmd -S .\SQLEXPRESS -d PoliMarketDb -i Database\SeedData.sqlDatos creados:
- 5 roles (Administrador, Vendedor Activo, etc.)
- 4 usuarios de prueba
- Credenciales predeterminadas
sqlcmd -S .\SQLEXPRESS -d PoliMarketDb -i Database\SeedData_Inventory.sqlDatos creados:
- 10 productos con stock
- 5 proveedores
- Relaciones productos-proveedores
sqlcmd -S .\SQLEXPRESS -d PoliMarketDb -i Database\SeedData_Sales.sqlDatos creados:
- 10 clientes con direcciones completas
- Emails únicos
- Diferentes perfiles (empresarial, comercial, retail)
sqlcmd -S .\SQLEXPRESS -d PoliMarketDb -i Database\SeedData_Logistics.sqlDatos creados:
- 5 facturas con detalles
- 5 órdenes de entrega (estado: Pending)
- 10 movimientos de inventario
- Stock actualizado según ventas
| Usuario | Contraseña | Rol | Estado |
|---|---|---|---|
| admin | admin123 | Administrador | ✅ Activo |
| jperez | password123 | Vendedor Activo | ✅ Activo |
| mlopez | password123 | Vendedor Activo | ✅ Activo |
| lgomez | password123 | Vendedor Inactivo | ❌ Inactivo |
- 10 Productos: Laptops, teclados, mouses, monitores, impresoras, etc.
- 5 Proveedores: Dell, HP, Logitech, Samsung, Epson
- Stock Inicial: Cada producto con cantidad disponible
- 10 Clientes: Empresas, comerciales y retail
- Todos con direcciones completas para entregas
- Emails únicos para identificación
- 5 Facturas con ventas reales
- 5 Órdenes de Entrega (todas en estado "Pending")
- 10 Movimientos de Inventario registrados
- Stock actualizado reflejando las ventas
Los scripts DEBEN ejecutarse en este orden debido a las dependencias de Foreign Keys:
1. SeedData.sql (Security - usuarios y roles)
↓
2. SeedData_Inventory.sql (Inventory - productos y proveedores)
↓
3. SeedData_Sales.sql (Sales - clientes)
↓
4. SeedData_Logistics.sql (Logistics - facturas y órdenes)
Los datos de prueba permiten testear todos los RF implementados:
# Usuario activo puede vender
Vendedor: jperez / password123
# Usuario inactivo no puede vender
Vendedor inactivo: lgomez / password123POST /api/Security/login
{
"username": "jperez",
"password": "password123"
}# Consultar stock de Laptop Dell XPS 13
GET /api/Inventory/products/1/stock# Las facturas ya creadas tienen movimientos registrados
SELECT * FROM Inventory.InventoryMovements WHERE EntityName = 'Invoice';# Ver órdenes pendientes generadas automáticamente
GET /api/Logistics/delivery-orders/pending
# Todas las 5 facturas tienen órdenes asociadas
GET /api/Logistics/delivery-orders-- Contar registros por módulo
SELECT 'Users' AS Tabla, COUNT(*) AS Total FROM Security.Users
UNION ALL
SELECT 'Products', COUNT(*) FROM Inventory.Products
UNION ALL
SELECT 'Customers', COUNT(*) FROM Sales.Customers
UNION ALL
SELECT 'Invoices', COUNT(*) FROM Sales.Invoices
UNION ALL
SELECT 'DeliveryOrders', COUNT(*) FROM Logistics.DeliveryOrders;SELECT
do.Id,
i.Id AS InvoiceId,
c.Name AS Customer,
do.DeliveryAddress,
do.DeliveryStatus,
i.TotalAmount
FROM Logistics.DeliveryOrders do
INNER JOIN Sales.Invoices i ON do.InvoiceId = i.Id
INNER JOIN Sales.Customers c ON i.CustomerId = c.Id
WHERE do.DeliveryStatus = 'Pending';SELECT
Code,
Name,
QuantityAvailable,
MinStockLevel
FROM Inventory.Products
ORDER BY QuantityAvailable;Si necesitas reiniciar los datos de prueba:
- Los scripts incluyen secciones de limpieza automática
- Ejecuta
LoadAllSeedData.sqlnuevamente - Los datos anteriores serán eliminados y reemplazados
-
Prerequisitos:
- Base de datos
PoliMarketDbdebe existir - Migraciones de EF Core deben estar aplicadas
- SQL Server debe estar ejecutándose
- Base de datos
-
Conexión:
- Ajusta el servidor según tu configuración
- Ejemplo:
.\SQLEXPRESS,localhost,(local)
-
Permisos:
- El usuario debe tener permisos de INSERT, UPDATE, DELETE
- Se requiere acceso a todos los esquemas (Security, Inventory, Sales, Logistics)
-
Integridad:
- Todos los scripts respetan Foreign Keys
- Los datos son coherentes entre módulos
- Las cantidades y montos son realistas
Causa: Ya existen datos con los mismos IDs
Solución: Ejecutar la sección de limpieza del script o eliminar datos manualmente
Causa: Orden de ejecución incorrecto
Solución: Ejecutar scripts en el orden especificado (1→2→3→4)
Causa: Migraciones no aplicadas
Solución: Ejecutar dotnet ef database update primero
Causa: Base de datos no existe
Solución: Crear base de datos o ejecutar migraciones
Para más información, consultar:
Última actualización: Noviembre 2024
Versión: 1.1.0
Estado: ✅ Completado para todos los RF (RF01-RF05)