Premisas Previas

Una de las informaciones que se echa de menos en A3ERP son las fechas de altas (en algunos sitios) y fechas de última Modificación.

La manera que hemos obtenido para solventarlo, es mediante Triggers, ya que mediante el diccionario de la empresa no es posible al dar errores en los cambios de versión (concrétamente de la 0 a la 10).

Diccionario A3ERP

Si que es imprescindible que via diccionario se añadan los campos “fecha de alta” y “fecha de última modificación” donde queramos guardar esta información.

  • KLS_LASTUPDATE
  • KLS_CREATEDATE

Las tablas que en este caso controlamos son (siempre podéis añadir la tabla que queráis):

  • Artículos
  • Clientes
  • Direcciones
  • Movimientos de Stock
  • Precios Especiales
  • Tarifas

Crear Triggers

Sin más os dejo el script que tenéis que ejecutar en SQL para crear los Triggers
CREATE TRIGGER FECHA_ALTA_ARTICULO
ON ARTICULO AFTER INSERT
AS
SET NOCOUNT ON;
BEGIN
DECLARE @artinsertado varchar(50)

SET @artInsertado= (select codart from inserted)
UPDATE ARTICULO SET ARTICULO.KLS_CREATEDATE=GETDATE() WHERE ARTICULO.CODART=@artInsertado
END

GO

CREATE TRIGGER FECHA_ULTIMA_MODIFICACION_ARTICULO
ON SPACERS.DBO.ARTICULO AFTER UPDATE
AS
SET NOCOUNT ON;
BEGIN
DECLARE @artinsertado varchar(50)

SET @artInsertado= (select codart from inserted)
UPDATE ARTICULO SET ARTICULO.KLS_LASTUPDATE=GETDATE() WHERE ARTICULO.CODART=@artInsertado
END

GO

CREATE TRIGGER FECHA_ALTA_CLIENTE
ON __CLIENTES AFTER INSERT
AS
SET NOCOUNT ON;
BEGIN
DECLARE @clienteInsertado varchar(50)

SET @clienteInsertado = (select codcli from inserted)
UPDATE __CLIENTES SET __CLIENTES.KLS_CREATEDATE=GETDATE() WHERE __CLIENTES.CODCLI=@clienteInsertado
END

GO

CREATE TRIGGER FECHA_ULTIMA_MODIFICACION_CLIENTE
ON __CLIENTES AFTER UPDATE
AS
SET NOCOUNT ON;

BEGIN
DECLARE @clienteInsertado varchar(50)

SET @clienteInsertado =(select codcli from inserted)
UPDATE __CLIENTES SET __CLIENTES.KLS_LASTUPDATE=GETDATE() WHERE __CLIENTES.CODCLI=@clienteInsertado
END

GO

CREATE TRIGGER FECHA_ALTA_DIRENT
ON DIRENT AFTER INSERT
AS
SET NOCOUNT ON;
BEGIN
DECLARE @direccionInsertada varchar(50)

SET @direccionInsertada = (select iddirent from inserted)
UPDATE DIRENT SET DIRENT.KLS_CREATEDATE=GETDATE() WHERE DIRENT.IDDIRENT=@direccionInsertada
END

GO

CREATE TRIGGER FECHA_ULTIMA_MODIFICACION_DIRENT
ON DIRENT AFTER UPDATE
AS
SET NOCOUNT ON;
BEGIN
DECLARE @direccionInsertada varchar(50)

SET @direccionInsertada = (select iddirent from inserted)
UPDATE DIRENT SET DIRENT.KLS_LASTUPDATE=GETDATE() WHERE DIRENT.IDDIRENT=@direccionInsertada
END

GO

CREATE TRIGGER FECHA_ALTA_PRECIOS_ESP_VENTA
ON PRCESP AFTER INSERT
AS
SET NOCOUNT ON;
BEGIN
DECLARE @idPrcEsp varchar(50)

SET @idPrcEsp= (select IDPRCESP from inserted)
UPDATE PRCESP SET PRCESP.KLS_CREATEDATE=GETDATE() WHERE PRCESP.IDPRCESP=@idPrcEsp
END

GO

CREATE TRIGGER FECHA_ULTIMA_MODIFICACION_PRECIOS_ESP_VENTA
ON PRCESP AFTER UPDATE
AS
SET NOCOUNT ON;
BEGIN
DECLARE @idPrcEsp varchar(50)

SET @idPrcEsp= (select IDPRCESP from inserted)
UPDATE PRCESP SET PRCESP.KLS_LASTUPDATE=GETDATE() WHERE PRCESP.IDPRCESP=@idPrcEsp
END

GO

CREATE TRIGGER FECHA_ALTA_MOVIMIENTO_STOCK
ON STOCKALM AFTER INSERT
AS
SET NOCOUNT ON;
BEGIN
DECLARE @idInsertado varchar(50)

SET @idInsertado= (select ID from inserted)
UPDATE STOCKALM SET STOCKALM.KLS_CREATEDATE=GETDATE() WHERE STOCKALM.ID=@idInsertado
END

GO
CREATE TRIGGER FECHA_ULTIMA_MODIFICACION_STOCK
ON STOCKALM AFTER UPDATE
AS
SET NOCOUNT ON;
BEGIN
DECLARE @idInsertado varchar(50)

SET @idInsertado= (select ID from inserted)
UPDATE STOCKALM SET STOCKALM.KLS_LASTUPDATE=GETDATE() WHERE STOCKALM.ID=@idInsertado
END

GO

CREATE TRIGGER FECHA_ALTA_TARIFAS_VENTA
ON TARIFAVE AFTER INSERT
AS
SET NOCOUNT ON;
BEGIN
DECLARE @idTarifaV varchar(50)

SET @idTarifaV= (select IDTARIFAV from inserted)
UPDATE TARIFAVE SET TARIFAVE.KLS_CREATEDATE=GETDATE() WHERE TARIFAVE.IDTARIFAV=@idTarifaV
END

GO

CREATE TRIGGER FECHA_ULTIMA_MODIFICACION_TARIFAS_VENTA
ON TARIFAVE AFTER UPDATE
AS
SET NOCOUNT ON;
BEGIN
DECLARE @idTarifaV varchar(50)

SET @idTarifaV= (select IDTARIFAV from inserted)
UPDATE TARIFAVE SET TARIFAVE.KLS_LASTUPDATE=GETDATE() WHERE TARIFAVE.IDTARIFAV=@idTarifaV
END

GO

Borrar Triggers

Finalmente, antes de hacer cualquier “upgrade” de versión de A3ERP y como medida de precaución, será necesario borrar los Triggers que hemos creado

DROP TRIGGER FECHA_ALTA_ARTICULO
DROP TRIGGER FECHA_ALTA_CLIENTE
DROP TRIGGER FECHA_ALTA_DIRENT
DROP TRIGGER FECHA_ALTA_MOVIMIENTO_STOCK
DROP TRIGGER FECHA_ALTA_PRECIOS_ESP_VENTA
DROP TRIGGER FECHA_ALTA_TARIFAS_VENTA
DROP TRIGGER FECHA_ULTIMA_MODIFICACION_ARTICULO
DROP TRIGGER FECHA_ULTIMA_MODIFICACION_CLIENTE
DROP TRIGGER FECHA_ULTIMA_MODIFICACION_DIRENT
DROP TRIGGER FECHA_ULTIMA_MODIFICACION_PRECIOS_ESP_VENTA
DROP TRIGGER FECHA_ULTIMA_MODIFICACION_STOCK
DROP TRIGGER FECHA_ULTIMA_MODIFICACION_TARIFAS_VENTA