Files
Samuele E. Locatelli bdd7b413e8 Riaggiunto GMW_data
2016-11-22 17:58:00 +01:00

292 lines
7.6 KiB
Transact-SQL

--- nuovi eventi x gestione triggers variazioni quantità magazzino AS
set xact_abort on
go
begin transaction
go
INSERT INTO dbo.AnagTipoEvento
VALUES (N'UDC_DEL', N'Eliminato un UDC (per movimento AS400)')
INSERT INTO dbo.AnagTipoEvento
VALUES (N'UDC_MOV', N'Movimentazione contabile tra magazzini UDC')
INSERT INTO dbo.AnagTipoEvento
VALUES (N'UDC_NEW', N'Creato un nuovo UDC (per movimento AS400)')
INSERT INTO dbo.AnagTipoEvento
VALUES (N'UDC_NOQTY', N'Rettifica qta UDC creato se già in AS')
INSERT INTO dbo.AnagTipoEvento
VALUES (N'UDC_POS', N'Spostamento posizilne logica UDC')
go
commit transaction
go
-- tab x gestioen batch AS400
set xact_abort on
go
begin transaction
go
create table AS400_BatchMovimenti(
DataIns datetime not null,
CodEvento nvarchar(10) not null,
Particolare nvarchar(15) not null,
CodMagAS nvarchar(50) not null,
Quantita decimal(10,2) not null,
DataBatch datetime,
DataVerifica datetime,
constraint PK_AS400_BatchMovimenti primary key(DataIns,CodEvento,Particolare,CodMagAS)
)
go
alter table AS400_BatchMovimenti add
constraint FK_AS400_BatchMovimenti_AnagTipoEvento foreign key(CodEvento) references AnagTipoEvento(CodEvento) on update cascade
go
exec sp_addextendedproperty 'MS_Description', 'dataora inserimento in coda caricamento', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataIns'
go
exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'CodEvento'
go
exec sp_addextendedproperty 'MS_Description', 'dataora di caricamento batch verso AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataBatch'
go
exec sp_addextendedproperty 'MS_Description', N'dataora in cui è stato verificato il caricamento su AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataVerifica'
go
create table AS400_MagCont(
CodMagAS nvarchar(50) not null constraint PK_AS400_MagCont primary key,
Descrizione nvarchar(50),
Attivo bit
)
go
alter table AS400_BatchMovimenti add
constraint FK_AS400_BatchMovimenti_AS400_MagCont foreign key(CodMagAS) references AS400_MagCont(CodMagAS) on update cascade
go
commit
go
set xact_abort on
go
begin transaction
go
INSERT INTO dbo.AS400_MagCont
VALUES (N'54', N'Finiti', 1)
INSERT INTO dbo.AS400_MagCont
VALUES (N'56', N'Materia Prima', 1)
INSERT INTO dbo.AS400_MagCont
VALUES (N'80', N'Fusi', 1)
INSERT INTO dbo.AS400_MagCont
VALUES (N'84', N'WIP', 1)
INSERT INTO dbo.AS400_MagCont
VALUES (N'88', N'Rientro da terzista', 1)
go
commit transaction
go
-- triggers!
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
-- =============================================
-- Author: Samuele E. Locatelli
-- Create date: 2009-09-20
-- Description: trigger x inserimento movimenti
-- nella coda di trasferimento batch
-- verso AS400 x UPDATE UDC
-- =============================================
create TRIGGER trg_updMovAS
ON ElencoCartellini
AFTER UPDATE
AS
BEGIN
-- setup variabili e verbosità
SET NOCOUNT ON;
DECLARE @partOk AS BIT
DECLARE @IdxPosFrom AS INT
DECLARE @IdxPosTo AS INT
DECLARE @magFrom AS NVARCHAR(50)
DECLARE @magTo AS NVARCHAR(50)
DECLARE @qta AS DECIMAL(10,2)
-- controllo che CI SIA il particolare (altrimenti non eseguo)
SET @partOk = (SELECT CASE WHEN ISNULL(Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END FROM deleted)
IF(@partOk = 1)
SET @qta = (SELECT Qta FROM inserted)
-- se c'è stata modifica di quantità inizio a rettificare quella
IF UPDATE(Qta)
BEGIN
INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, CodMagAS, Quantita)
(
SELECT GETDATE(), 'UDC_MOD', Particolare, CAST(IdxPosizione AS NVARCHAR(50)), @qta-Qta
FROM deleted
)
END
-- controllo poi se sia cambiato il magazzino, altrimenti non lo inserisco
IF UPDATE(IdxPosizione)
BEGIN
-- Prendo le posizioni di magazzino precedente e nuova
SET @IdxPosFrom = (SELECT IdxPosizione FROM deleted)
SET @IdxPosTo = (SELECT IdxPosizione FROM inserted)
-- Le trasformo nelle equivalenti stringhe del codMag SE attive
SET @magFrom = (SELECT ISNULL(CodMagAS,'---') FROM AS400_MagCont WHERE Attivo = 1 AND CodMagAs = CAST(@IdxPosFrom AS NVARCHAR(50)))
SET @magTo = (SELECT ISNULL(CodMagAS,'---') FROM AS400_MagCont WHERE Attivo = 1 AND CodMagAs = CAST(@IdxPosTo AS NVARCHAR(50)))
-- inserisco un movimento di deposito verso mag nuovo (SE attivo)
IF (@magFrom <> '---')
BEGIN
INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, CodMagAS, Quantita)
(
SELECT GETDATE(), 'UDC_MOV', Particolare, CAST(IdxPosizione AS NVARCHAR(50)), -@qta
FROM deleted
)
END
-- inserisco un movimento di prelievo verso mag vecchio (SE attivo)
IF (@magTo <> '---')
BEGIN
INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, CodMagAS, Quantita)
(
SELECT GETDATE(), 'UDC_MOV', Particolare, CAST(IdxPosizione AS NVARCHAR(50)), @qta
FROM inserted
)
END
END
END
go
-- =============================================
-- Author: Samuele E. Locatelli
-- Create date: 2009-09-20
-- Description: trigger x inserimento movimenti
-- nella coda di trasferimento batch
-- verso AS400 x DELETE UDC
-- =============================================
create TRIGGER trg_DelMovAS
ON ElencoCartellini
AFTER DELETE
AS
BEGIN
-- setup variabili e verbosità
SET NOCOUNT ON;
DECLARE @partOk AS BIT
-- controllo che CI SIA il particoalre (altrimenti non eseguo)
SET @partOk = (SELECT CASE WHEN ISNULL(Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END FROM deleted)
IF(@partOk = 1)
BEGIN
-- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, CodMagAS, Quantita)
(
SELECT GETDATE(), 'UDC_DEL', Particolare, CAST(IdxPosizione AS NVARCHAR(50)), -Qta
FROM deleted
)
END
END
go
-- =============================================
-- Author: Samuele E. Locatelli
-- Create date: 2009-09-20
-- Description: trigger x inserimento movimenti
-- nella coda di trasferimento batch
-- verso AS400 x INSERT UDC
-- =============================================
create TRIGGER trg_InsMovAS
ON ElencoCartellini
AFTER INSERT
AS
BEGIN
-- setup variabili e verbosità
SET NOCOUNT ON;
DECLARE @partOk AS BIT
-- controllo che CI SIA il particoalre (altrimenti non eseguo)
SET @partOk = (SELECT CASE WHEN ISNULL(Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END FROM inserted)
IF(@partOk = 1)
BEGIN
-- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, CodMagAS, Quantita)
(
SELECT GETDATE(), 'UDC_NEW', Particolare, CAST(IdxPosizione AS NVARCHAR(50)), Qta
FROM inserted
)
END
END
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_rettMovAs400
*
* inserisce nella tabella per i trasferimenti batch verso magazzino AS una quantità di rettifica (con segno - )per UDC eventualmente già scaricati a sistema
*
* Steamware, S.E.L.
* mod: 2010.09.20
*
****************************************/
create PROCEDURE stp_rettMovAs400
(
@Particolare NVARCHAR(50),
@CodMagAS NVARCHAR(50),
@Qta DECIMAL(10,2)
)
AS
BEGIN
INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, CodMagAS, Quantita)
VALUES (GETDATE(), 'UDC_NOQTY', @Particolare, @CodMagAS, -@Qta)
END
RETURN
go
commit
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(255, GETDATE())
GO