set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_getUDC_UnusedOlder
*
* ottiene l'elenco degli UDC pių vecchi in ordine asc TRA QUELLI NON ANCORA PRELEVATI nč proposti nella lista corrente
*
* Steamware, S.E.L.
* mod: 2010.07.06
*
****************************************/
alter PROCEDURE stp_getUDC_UnusedOlder
(	
	@CodLista VARCHAR(12)
)
AS

	-- variabili locali che mi servono
	DECLARE @Figura AS VARCHAR(4)
	DECLARE @Esponente AS VARCHAR(6)
	DECLARE @CodImballo AS VARCHAR(15)
	DECLARE @Particolare AS VARCHAR (50)
	DECLARE @CodTipoLista AS VARCHAR (10)
	--DECLARE @IdxPosizione AS INT
	SET @Figura			= (SELECT Figura FROM ElencoListePrelievo WHERE CodLista = @CodLista)
	SET @Esponente		= (SELECT Esponente FROM ElencoListePrelievo WHERE CodLista = @CodLista)
	SET @CodImballo		= (SELECT CodImballo FROM ElencoListePrelievo WHERE CodLista = @CodLista)
	SET @Particolare	= (SELECT Particolare FROM ElencoListePrelievo WHERE CodLista = @CodLista) 
	SET @CodTipoLista	= (SELECT CodTipoLista FROM ElencoListePrelievo WHERE CodLista = @CodLista) 
	/*
	SET @IdxPosizione	= (SELECT	tt.IdxPosizione
	                 	   FROM     TipoListaPrelievo tlp INNER JOIN TabTranPosizEventi tt ON tlp.CodEvento = tt.CodEvento
	                 	   WHERE	(tlp.CodTipoLista = @CodTipoLista))
	*/

	-- effettuo la selezione
	SELECT		*
	FROM        ElencoCartellini
	WHERE       (Particolare = @Particolare) AND (IdxPosizione IN (SELECT	tt.IdxPosizione
	                 	   FROM     TipoListaPrelievo tlp INNER JOIN TabTranPosizEventi tt ON tlp.CodEvento = tt.CodEvento
	                 	   WHERE	(tlp.CodTipoLista = @CodTipoLista))) AND 
				(Figura		= CASE WHEN @Figura		= '*' THEN Figura		ELSE @Figura	END) AND
				(Esponente	= CASE WHEN @Esponente  = '*' THEN Esponente	ELSE @Esponente END) AND
				(CodImballo	= CASE WHEN @CodImballo	= '*' THEN CodImballo	ELSE @CodImballo END)				
				AND UDC NOT IN (
					SELECT DISTINCT UDC 
					FROM RigheListePrelievo INNER JOIN ElencoListePrelievo
					ON	RigheListePrelievo.CodLista = ElencoListePrelievo.CodLista
					WHERE (ElencoListePrelievo.CodLista = @CodLista) 
					OR (ElencoListePrelievo.CodLista <> @CodLista AND CodStatoLista > 1 AND Prelevato = 1)
					)
	ORDER BY	ElencoCartellini.DataFus

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_ParticolariOverviewPerListaPrelievo
*
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe") x una possibile lista di prelievo
*
* Steamware, S.E.L.
* mod: 2010.05.31
*
****************************************/
alter PROCEDURE stp_ParticolariOverviewPerListaPrelievo
(
	@Particolare VARCHAR(50),
	@CodCS VARCHAR(2),
	@Esponente NVARCHAR(6),
	@Figura NVARCHAR(4),
	@CodImballo NVARCHAR(15),
	@CodTipoLista NVARCHAR (10)
)
AS
	/*
	DECLARE @IdxPosizione AS INT
	SET @IdxPosizione	= (SELECT	tt.IdxPosizione
	                 	   FROM     TipoListaPrelievo tlp INNER JOIN TabTranPosizEventi tt ON tlp.CodEvento = tt.CodEvento
	                 	   WHERE	(tlp.CodTipoLista = @CodTipoLista))
	*/

	SELECT      RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare, ISNULL(COUNT(dbo.ElencoCartellini.UDC), 0) AS NumUDC, 
				ISNULL(SUM(dbo.ElencoCartellini.Qta), 0) AS TotQta, ISNULL(COUNT(dbo.PosizioneUdcCorrente.IdxCella), 0) AS NumInMag
	FROM        RilPro.AnagParticolari LEFT OUTER JOIN
				dbo.ElencoCartellini ON RilPro.AnagParticolari.Particolare = dbo.ElencoCartellini.Particolare LEFT OUTER JOIN
				dbo.PosizioneUdcCorrente ON dbo.ElencoCartellini.UDC = dbo.PosizioneUdcCorrente.UDC
	WHERE		RilPro.AnagParticolari.CodCS = @CodCS AND 
				RilPro.AnagParticolari.Particolare = @Particolare AND 
				(IdxPosizione IN (SELECT	tt.IdxPosizione
	                 	   FROM     TipoListaPrelievo tlp INNER JOIN TabTranPosizEventi tt ON tlp.CodEvento = tt.CodEvento
	                 	   WHERE	(tlp.CodTipoLista = @CodTipoLista))) AND 
				(dbo.ElencoCartellini.Figura		= CASE WHEN @Figura		= '*' THEN dbo.ElencoCartellini.Figura		ELSE @Figura	END) AND
				(dbo.ElencoCartellini.Esponente		= CASE WHEN @Esponente  = '*' THEN dbo.ElencoCartellini.Esponente	ELSE @Esponente END) AND
				(dbo.ElencoCartellini.CodImballo	= CASE WHEN @CodImballo	= '*' THEN dbo.ElencoCartellini.CodImballo	ELSE @CodImballo END)
	GROUP BY	RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare

RETURN
go

commit
go



set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* 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: 2010.11.04
*
****************************************/
alter PROCEDURE stp_riattivaUdc
(
	@UDC VARCHAR(20),
	@CodSoggetto NVARCHAR(17)
)
AS

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

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

BEGIN TRAN
	
	-- faccio update posizione
	UPDATE      ElencoCartellini
	SET         IdxPosizione = ABS(IdxPosizione), ModDate=GETDATE(), 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
	VALUES(@Udc, @IdxCella, @CodCS, GETDATE())

	
COMMIT TRAN

RETURN
go

commit
go



set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_UDC_updateIdxPosizione
*
* aggiorna un cartellino x la sua posizione logica
*
* Steamware, S.E.L.
* mod: 2010.06.12
*
****************************************/
alter PROCEDURE stp_UDC_updateIdxPosizione
(
	@UDC VARCHAR(20),
	@IdxPosizione INT
)
AS


------------------------------------------------------------------------------------------------------
-- Ciclo principale x edit record
------------------------------------------------------------------------------------------------------
BEGIN TRAN	
	
	-- modifico il record 
	UPDATE	ElencoCartellini
	SET		IdxPosizione = @IdxPosizione, ModDate = GETDATE()
	WHERE	UDC = @UDC
	
COMMIT TRAN
------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------
-- restituisco la tab dati con l'udc appena inserito
------------------------------------------------------------------------------------------------------
SELECT * 
FROM ElencoCartellini
WHERE  UDC = @UDC
------------------------------------------------------------------------------------------------------

RETURN
go

commit
go

set xact_abort on
go

begin transaction
go

INSERT INTO dbo.AnagPosizioni
  VALUES (-54, N'AM - FINITI consumati', 0)
go

commit transaction
go



set xact_abort on
go

begin transaction
go

INSERT INTO dbo.AnagTipoEvento
  VALUES (N'UDC_RITER', N'Richiesta UDC Rientro terzista')
go

commit transaction
go



set xact_abort on
go

begin transaction
go

INSERT INTO dbo.TabTranPosizEventi
  VALUES (N'UDC_CONS', 54, -54)
go

commit transaction
go




-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(310, GETDATE())
GO
