grales
This commit is contained in:
83
templates_rapidos.sql
Normal file
83
templates_rapidos.sql
Normal 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
|
||||
Reference in New Issue
Block a user