83 lines
3.6 KiB
Transact-SQL
83 lines
3.6 KiB
Transact-SQL
-- 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 |