Utilizando la funcionalidad de avisos del ERP, la cual podemos ver en la entrada Avisos - Introducción, podemos definir alertas personalizadas para que aparezcan de la misma forma que los avisos estándar.
Vamos a plantear el siguiente caso:
- El cliente necesita que aparezca un aviso en el sistema cuando se da de alta un artículo de una determinada familia en la base de datos.
Para poder definir que avisos tienen que aparecer y cuando, necesitamos revisar los siguiente puntos:
- Dar de alta una configuración para los avisos
- Crear un proceso para insertar los avisos en el ERP
- Definir como y cuando queremos que se generen estos avisos
Lo primero sería añadir esta configuración, para ello tenemos que ejecutar la siguiente consulta personalizando mínimo los siguiente valores:
- idProcesoAviso: Indicar un id a partir del 1000
- Descrip: Una breve descripción del aviso
- Activado: Para que se marque como activo
- Store: Stored procedure que será la encargada de insertar el aviso
- Habilitado: Para habilitar el aviso
-- idProcesoAviso tiene que ser a partir del 1000 para los personalizados INSERT INTO Avisos_Procesos (IdProcesoAviso,Descrip,Activado,IdEmpleado,Store,Habilitado,GeneraAviso,Clave,IdPlantillaFlujo,Script) SELECT 1001,'Artículo de la familia Geralt insertado',1,0,'PPers_AVISOS_Articulo',1,1,NULL,NULL,NULL
Creamos la stored procedure, en este caso 'PPers_AVISOS_Articulo' que será la encargada de añadir los registros sobre la tabla 'Avisos' llamando a la stored 'Avisos_Insertar', como podemos ver definimos los parámetros de entrada que vayamos a necesitar, en este caso voy a utilizar el idArtículo, la familia, la descripción y las observaciones, ya que estos valores me van a servir para indicar el mensaje que contiene el aviso:
CREATE PROCEDURE [dbo].[PPers_AVISOS_Articulo]
@IdArticulo T_Id_Articulo OUTPUT,
@idFamilia T_Id_Fami_Art OUTPUT,
@Descrip VARCHAR(800) OUTPUT,
@Observaciones T_Descripcion_Larga OUTPUT
AS
DECLARE @idArt T_Id_Articulo
DECLARE @Fecha DATE
DECLARE @VRet BIT
SET @Fecha=GetDate()
EXEC @Vret=Avisos_Insertar 1001, @Descrip, @Observaciones, @Fecha, @Fecha, 0
RETURN @Vret
GO
zpermisos PPers_AVISOS_Articulo --Damos permisos a la stored
Una vez tenemos el proceso y el aviso configurado, tenemos que definir donde queremos que se realice la inserción del aviso, en este caso sería cuando el usuario inserta un artículo de la familia 'Geralt', como podemos ver en la siguiente imagen tengo un trigger de actualización sobre la tabla 'Artículos'.
CREATE TRIGGER [dbo].[Pers_Articulos_ITrig_AvisosArticulos]
ON [dbo].[Articulos]
FOR INSERT
AS
IF EXISTS(SELECT 1 FROM inserted) BEGIN
DECLARE @Ins INT
DECLARE @prt nvarchar(2000)
DECLARE @idArticulo T_Id_Articulo
DECLARE @idFamilia T_Id_Fami_Art
DECLARE @Descrip VARCHAR(800)
DECLARE @Observaciones T_Descripcion_Larga
IF OBJECT_ID('tempdb..#Articulos') IS NOT NULL
DROP TABLE #Articulos
SELECT IdArticulo,IdFamilia,Descrip,Observaciones INTO #Articulos
FROM inserted WHERE IdFamilia = 'Geralt'
WHILE EXISTS(
SELECT IdArticulo,IdFamilia,Descrip,Observaciones FROM #Articulos
) BEGIN
SELECT TOP 1 @IdArticulo = IdArticulo, @idFamilia = idFamilia, @Descrip ='Artículo ( ' +ISNULL(IdArticulo,'') +' - ' +ISNULL(Descrip,'') +' )', @Observaciones = Observaciones
FROM #Articulos
EXEC @Ins=PPers_AVISOS_Articulo @IdArticulo, @idFamilia, @Descrip, @Observaciones
IF @Ins=0 BEGIN
RAISERROR('Error en el proceso de inserción de avisos para artículos de la familia Geralt.',12,1)
END
DELETE FROM #Articulos WHERE IdArticulo = @idArticulo
END
END
GO
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo