Files
Samuele E. Locatelli bdd7b413e8 Riaggiunto GMW_data
2016-11-22 17:58:00 +01:00

106 lines
2.5 KiB
Transact-SQL

set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/***************************************
* STORED stp_spostaUdc
*
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
*
* Steamware, S.E.L.
* mod: 2010.06.11
*
****************************************/
alter PROCEDURE stp_spostaUdc
(
@CodCS VARCHAR(2),
@UDC VARCHAR(50),
@IdxCellaTo INT,
@resetRLP BIT
)
AS
BEGIN TRAN
-- DICHIARAZIONI iniziali variabili
DECLARE @IdxCellaFrom INT
DECLARE @capienza INT
DECLARE @numUdc INT
-- controllo cella di partenza
SET @IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
SET @IdxCellaFrom = ( SELECT ISNULL(@IdxCellaFrom,0)) -- contorllo x cella null...
-- controllo se cella di destinazione e di aprtenza coincidono NON FACCIO NULLA... altrimenti procedo
IF (@IdxCellaTo <> @IdxCellaFrom)
BEGIN
-- controllo se la cella di dest vada indicata come piena
SET @capienza = (
SELECT tc.Capienza
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
WHERE c.IdxCella = @IdxCellaFrom
)
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom)
-- se capienza raggiunta aggiorno...
IF(@numUdc -1 < @capienza)
BEGIN
EXEC stp_celle_updPiena @IdxCellaFrom, 0
END
-- cancello posizione occupata
DELETE
FROM PosizioneUdcCorrente
WHERE UDC = @UDC
-- SE RICHIESTO cancello eventuali righe liste di prelievo FUSI per l'UDC
IF(@resetRLP = 1)
BEGIN
DELETE FROM RigheListePrelievo
WHERE UDC = @UDC AND CodLista IN (
SELECT CodLista FROM ElencoListePrelievo
--WHERE CodTipoLista='01-PreFus'
WHERE CodStatoLista < 4
)
END
-- creo una nuova posizione per l'UDC
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
-- controllo se la cella di dest vada indicata come piena
SET @capienza = (
SELECT tc.Capienza
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
WHERE c.IdxCella = @IdxCellaTo
)
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
-- se capienza raggiunta aggiorno...
IF(@numUdc >= @capienza)
BEGIN
EXEC stp_celle_updPiena @IdxCellaTo, 1
END
END -- cellaFrom e cellaTo non coincidono...
COMMIT TRAN
RETURN
go
commit
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(440, GETDATE())
GO