-- 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