This commit is contained in:
2025-10-21 11:41:30 -06:00
parent ed2ef4e01b
commit b1b9e4a77c
49 changed files with 14632 additions and 1736 deletions

83
templates_rapidos.sql Normal file
View File

@@ -0,0 +1,83 @@
-- Tabla para Templates Rápidos Configurables
CREATE TABLE dbo.templates_rapidos (
id INT IDENTITY(1,1) PRIMARY KEY,
nombre VARCHAR(100) NOT NULL,
descripcion VARCHAR(255),
icono VARCHAR(50) DEFAULT '🏢',
activo BIT DEFAULT 1,
-- Configuración del template
config_json NVARCHAR(MAX), -- JSON con la configuración completa
-- Campos específicos más usados (para facilitar consultas)
tipo_moneda VARCHAR(3),
incoterm VARCHAR(10),
vinculacion TINYINT,
pais_proveedor VARCHAR(10),
tasa_preferencial VARCHAR(20),
-- Metadatos
id_agencia INT,
id_usuario_creador INT,
fecha_creacion DATETIME DEFAULT GETDATE(),
fecha_modificacion DATETIME DEFAULT GETDATE(),
-- Estadísticas de uso
veces_usado INT DEFAULT 0,
ultima_vez_usado DATETIME,
-- Índices
INDEX IX_templates_rapidos_agencia (id_agencia, activo),
INDEX IX_templates_rapidos_usuario (id_usuario_creador),
INDEX IX_templates_rapidos_uso (veces_usado DESC)
);
-- Insertar algunos templates por defecto
INSERT INTO dbo.templates_rapidos (nombre, descripcion, icono, config_json, tipo_moneda, incoterm, vinculacion, pais_proveedor, tasa_preferencial, id_agencia, id_usuario_creador) VALUES
('Importación China', 'FOB, CNY, General, Sin vinculación', '🇨🇳', '{"tipo_moneda":"CNY","incoterm":"FOB","vinculacion":"0","pais_proveedor_texto":"China","tasa_preferencial":"General"}', 'CNY', 'FOB', 0, NULL, 'General', NULL, NULL),
('Importación USA', 'FOB, USD, TLC, Sin vinculación', '🇺🇸', '{"tipo_moneda":"USD","incoterm":"FOB","vinculacion":"0","pais_proveedor_texto":"Estados Unidos","tasa_preferencial":"TLC"}', 'USD', 'FOB', 0, NULL, 'TLC', NULL, NULL),
('Comercializadora', 'FOB, USD, COMERCIALIZADORA, Con vinculación', '🏢', '{"tipo_moneda":"USD","incoterm":"FOB","vinculacion":"2","pais_proveedor_texto":"Estados Unidos","tasa_preferencial":"COMERCIALIZADORA"}', 'USD', 'FOB', 2, NULL, 'COMERCIALIZADORA', NULL, NULL),
('Importación Europa', 'FOB, EUR, General, Sin vinculación', '🇪🇺', '{"tipo_moneda":"EUR","incoterm":"FOB","vinculacion":"0","pais_proveedor_texto":"Alemania","tasa_preferencial":"General"}', 'EUR', 'FOB', 0, NULL, 'General', NULL, NULL),
('PROSEC México', 'FOB, USD, PROSEC, Sin vinculación', '🏭', '{"tipo_moneda":"USD","incoterm":"FOB","vinculacion":"0","pais_proveedor_texto":"Estados Unidos","tasa_preferencial":"PROSEC"}', 'USD', 'FOB', 0, NULL, 'PROSEC', NULL, NULL);
-- Crear procedimiento almacenado para obtener templates
GO
CREATE PROCEDURE sp_obtener_templates_rapidos
@id_usuario INT,
@id_agencia INT = NULL
AS
BEGIN
SELECT
id,
nombre,
descripcion,
icono,
config_json,
veces_usado,
ultima_vez_usado
FROM dbo.templates_rapidos
WHERE activo = 1
AND (
id_agencia IS NULL -- Templates globales
OR id_agencia = @id_agencia -- Templates de la agencia
OR id_usuario_creador = @id_usuario -- Templates del usuario
)
ORDER BY veces_usado DESC, nombre ASC;
END
-- Crear procedimiento para incrementar uso de template
GO
CREATE PROCEDURE sp_usar_template_rapido
@id_template INT,
@id_usuario INT
AS
BEGIN
UPDATE dbo.templates_rapidos
SET veces_usado = veces_usado + 1,
ultima_vez_usado = GETDATE()
WHERE id = @id_template;
-- Opcional: Registrar en bitácora de uso
INSERT INTO dbo.bitacoras (id_usuario, accion, tabla_afectada, id_registro, detalles, fecha_accion)
VALUES (@id_usuario, 'USAR_TEMPLATE', 'templates_rapidos', @id_template, 'Template rápido utilizado', GETDATE());
END