Sistemate stored con aggiornamento dataora modifica elenco cartellini in caso di spostamenti/consumi

#fixed 1969

git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@339 365432ac-a1b5-4ffd-bb28-6d3099d32164
This commit is contained in:
samuele
2010-11-30 15:19:52 +00:00
parent 79d71463b7
commit 998646276b
+138
View File
@@ -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