Files
GMW/GMW_data/SqlScripts/V1.1/GMW_00230.sql
T
Samuele E. Locatelli bdd7b413e8 Riaggiunto GMW_data
2016-11-22 17:58:00 +01:00

164 lines
3.2 KiB
Transact-SQL

set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
-- =============================================
-- Author: Samuele E. Locatelli
-- Create date: 2009-09-13
-- Description: trigger x inserimento valori in archivio storico alla cancellazione/modifica del dato
-- =============================================
create TRIGGER trg_storico
ON PosizioneUdcCorrente
AFTER DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine)
(
SELECT UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine
FROM deleted
)
END
go
commit
go
--
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_spostaUdc
*
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
*
* Steamware, S.E.L.
* mod: 2010.06.11
*
****************************************/
alter PROCEDURE stp_spostaUdc
(
@CodCS VARCHAR(2),
@UDC VARCHAR(50),
@IdxCellaTo INT
)
AS
BEGIN TRAN
/*
-- inizio mettendo in storico la posizione attuale dell'UDC (SE esiste)
INSERT INTO PosizioneUdcStorico(UDC, IdxCella, CodCS, DataInizio, DataFine)
(
SELECT UDC, IdxCella, CodCS, DataRif as DataInizio, GETDATE() as DataFine
FROM PosizioneUdcCorrente
WHERE UDC = @UDC
)
*/
-- libero la posizione attuale dell'UDC (se c'è...)
DELETE
FROM PosizioneUdcCorrente
WHERE UDC = @UDC-- AND IdxCella = @IdxCellaFrom
-- creo una nuova posizione per l'UDC
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
COMMIT TRAN
RETURN
go
commit
go
--
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_UDC_delibera
*
* fa la delibera dell'UDC andando a processare la state machien e quindi eventualmente cambiando la sua posizione
*
* Steamware, S.E.L.
* mod: 2010.09.13
*
************************************/
alter PROCEDURE stp_UDC_delibera
(
@CodTipoDelibera NVARCHAR(50),
@UDC NVARCHAR(50),
@CodSoggetto NVARCHAR(17),
@CodCS VARCHAR(2)
)
AS
BEGIN TRAN
DECLARE @IdxPosizioneTo AS INT
DECLARE @IdxCellaTo AS INT
-- registro delibera
INSERT INTO DELIBERE
VALUES (@CodTipoDelibera, @UDC, GETDATE(), @CodSoggetto)
-- ricavo nuova posizione
SET @IdxPosizioneTo = (SELECT tt.IdxPosizioneTo
FROM TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento
WHERE (atd.CodTipoDelibera = @CodTipoDelibera))
-- calcolo la prima cella della nuova posizione...
SET @IdxCellaTo = (
SELECT TOP 1 IdxCella FROM Celle
WHERE IdxBlocco = (
SELECT IdxBlocco FROM Blocchi
WHERE CodMag=CAST(@IdxPosizioneTo AS VARCHAR(50)))
)
-- faccio update posizione
UPDATE ElencoCartellini
SET IdxPosizione = @IdxPosizioneTo
WHERE UDC = @UDC
-- ora cambio anche la posizione corrente dell'UDC (e tramite trigger storicizza...)
EXEC stp_spostaUdc @CodCS, @UDC, @IdxCellaTo
COMMIT TRAN
RETURN
go
commit
go