diff --git a/GMW/GMW_data/SqlScripts/GMW_00335.sql b/GMW/GMW_data/SqlScripts/GMW_00335.sql new file mode 100644 index 00000000..260fa419 --- /dev/null +++ b/GMW/GMW_data/SqlScripts/GMW_00335.sql @@ -0,0 +1,138 @@ +set xact_abort on +go + +begin transaction +go + +set ANSI_NULLS on +go + +/*************************************** +* STORED stp_scaricaUdc +* +* elimina dalle posizioni correnti un UDC, salvandone la posizione precedente nella tab storica (per scaricamento / spedizione) +* +* Steamware, S.E.L. +* mod: 2010.09.28 +* +****************************************/ +alter PROCEDURE stp_scaricaUdc +( + @UDC VARCHAR(50), + @IdxCellaFrom INT, + @IdxPosizione INT +) +AS + +BEGIN TRAN + -- libero la posizione attuale dell'UDC (se c'è...) + DELETE + FROM PosizioneUdcCorrente + WHERE UDC = @UDC AND IdxCella = @IdxCellaFrom + + -- aggiorno l'UDC come posizione finale... + UPDATE ElencoCartellini + SET IdxPosizione = @IdxPosizione, ModDate = GETDATE() + WHERE UDC = @UDC + +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 @IdxPosizioneFrom AS INT + DECLARE @IdxPosizionePre AS NVARCHAR(50) + DECLARE @IdxCellaPre AS INT + DECLARE @IdxCellaTo AS INT + + -- ricavo cella ATTUALE + SET @IdxCellaPre = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC) + + -- ricavo posizione ATTUALE + SET @IdxPosizionePre = (SELECT TOP 1 b.CodMag FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco WHERE c.IdxCella = @IdxCellaPre) + + + -- 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)) + + -- ricavo posizione TEORICA VECCHIA + SET @IdxPosizioneFrom = (SELECT tt.IdxPosizione + 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 NVARCHAR(50))) + ) + + -- faccio update posizione + UPDATE ElencoCartellini + SET IdxPosizione = @IdxPosizioneTo, ModDate = GETDATE() + WHERE UDC = @UDC + + -- controllo posizioni actual e from teorica: SE e SOLO SE corrispondono faccio spostamento... + IF(CAST(@IdxPosizioneFrom AS NVARCHAR(50)) = @IdxPosizionePre) + BEGIN + -- ora cambio anche la posizione corrente dell'UDC (e tramite trigger storicizza...) + EXEC stp_spostaUdc @CodCS, @UDC, @IdxCellaTo + END + +COMMIT TRAN + + +RETURN +go + +commit +go + + + + + +-- registro versione... +INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(335, GETDATE()) +GO