set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_getRigaPrelievoByCodListaPrelevate * restituisce elenco delle SOLE righe prelevate (UDC) * * Steamware, S.E.L. * mod: 2010.12.10 * ************************************/ create PROCEDURE stp_getRigaPrelievoByCodListaPrelevate ( @CodLista NVARCHAR(12) ) AS SELECT * FROM RigheListePrelievo WHERE (CodLista = @CodLista) AND Prelevato = 1 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, 0 END COMMIT TRAN RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(336, GETDATE()) GO