81 lines
2.4 KiB
Transact-SQL
81 lines
2.4 KiB
Transact-SQL
|
|
|
|
/***************************************
|
|
* 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: 2012.05.30
|
|
*
|
|
************************************/
|
|
CREATE PROCEDURE [dbo].[stp_UDC_delibera]
|
|
(
|
|
@CodTipoDelibera NVARCHAR(50),
|
|
@UDC NVARCHAR(50),
|
|
@CodEvento VARCHAR(10),
|
|
@CodSoggetto NVARCHAR(17),
|
|
@CodCS VARCHAR(2)
|
|
)
|
|
|
|
AS
|
|
|
|
SET @UDC = UPPER(@UDC) -- metto ad Upper nel caso venga passato in minuscolo ( es. smart LDP da terminalino )
|
|
|
|
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()
|
|
,CodEvento = @CodEvento
|
|
,CodSoggetto = @CodSoggetto
|
|
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, 0
|
|
END
|
|
|
|
COMMIT TRAN
|
|
|
|
|
|
RETURN
|
|
|