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:
@@ -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
|
||||
Reference in New Issue
Block a user