
/***************************************
* STORED stp_riattivaUdc
*
* riattiva un dato UDC (da mag consumato negativo a corrispettivo positivo) --> se era positivo NON FA NULLA!!! (perchè uso ABS e controllo sia < 0)
*
* Steamware, S.E.L.
* mod: 2012.05.30
*
****************************************/
CREATE PROCEDURE stp_riattivaUdc
(
	@UDC VARCHAR(50),
	@CodSoggetto NVARCHAR(17)
)
AS

DECLARE @CodEvento VARCHAR(10)
DECLARE @CodTipoDichiaraz VARCHAR(1)
DECLARE @IdxCella INT
DECLARE @CodCS NVARCHAR(2)

SET @UDC = UPPER(@UDC)   -- metto ad Upper nel caso venga passato in minuscolo ( es. da terminalino )

SET @CodEvento = 'UDC_RIA'
SET @CodTipoDichiaraz = 'U'

BEGIN TRAN
	
	-- faccio update posizione
	UPDATE      ElencoCartellini
	SET         IdxPosizione = ABS(IdxPosizione)
			   ,ModDate=GETDATE()
			   ,CodEvento	= @CodEvento
			   ,CodSoggetto = @CodSoggetto
	WHERE		UDC = @UDC AND IdxPosizione IN (SELECT IdxPosizione FROM AnagPosizioni WHERE (IsRiattivaEnabled = 1)
)
	
	-- lo elimino da eventuali precedenti liste di prelievo sennò poi non potrei + prelevarlo
	DELETE FROM RigheListePrelievo
	WHERE UDC = @UDC
	
	-- imposto posizione CELLA corrente x l'udc nella prima libera 
	SET @IdxCella = (SELECT c.IdxCella FROM Celle c inner join Blocchi b ON c.IdxBlocco=b.IdxBlocco INNER JOIN ElencoCartellini e ON b.CodMag = CAST(e.IdxPosizione AS NVARCHAR(50)) WHERE e.UDC = @UDC)
	SET @CodCS = (SELECT CodCS FROM ElencoCartellini WHERE UDC = @UDC)
	INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif, CodSoggetto)
	VALUES(@Udc, @IdxCella, @CodCS, GETDATE(), @CodSoggetto)

	
COMMIT TRAN

RETURN
