set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_paretoDettMagByParticolare
*
* restituisce elenco giacenze a magazzino in logica pareto (quantità) per un dato particolare
*
* Steamware, S.E.L.
* mod: 2010.06.04
*
****************************************/
create PROCEDURE stp_paretoDettMagByParticolare
(
	@CodCS VARCHAR(2),
	@Particolare VARCHAR(20)
)
AS

	SELECT	TOP (100) PERCENT AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, ElencoCartellini.Particolare, 
				ElencoCartellini.Esponente, COUNT(PosizioneUdcCorrente.UDC) AS NumUDC, ISNULL(MIN(PosizioneUdcCorrente.DataRif), 
				GETDATE()) AS Oldest, ISNULL(MAX(PosizioneUdcCorrente.DataRif), GETDATE()) AS Newest, SUM(ElencoCartellini.Qta) AS QtaTotPz, 
				AnagStatiProdotto.DescStato
	FROM		AnagMag INNER JOIN
				Blocchi ON AnagMag.CodMag = Blocchi.CodMag AND AnagMag.CodCS = Blocchi.CodCS INNER JOIN
				Celle INNER JOIN
				ElencoCartellini INNER JOIN
				PosizioneUdcCorrente ON ElencoCartellini.UDC = PosizioneUdcCorrente.UDC ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella ON 
				Blocchi.IdxBlocco = Celle.IdxBlocco INNER JOIN
				AnagStatiProdotto ON ElencoCartellini.CodStato = AnagStatiProdotto.CodStato
	WHERE		(Celle.Attiva = 1) AND (AnagMag.CodCS = @CodCS) AND (ElencoCartellini.Particolare = @Particolare)
	GROUP BY	AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, Blocchi.NumX, Blocchi.NumY, Blocchi.NumZ, 
	            ElencoCartellini.Particolare, ElencoCartellini.Esponente, AnagStatiProdotto.DescStato
	ORDER BY	QtaTotPz DESC

	
RETURN
go

/***************************************
* STORED stp_paretoDettPartByFullSpec
*
* restituisce elenco particolari in logica pareto (quantità) per un dato blocco di magazzino e il particolare
*
* Steamware, S.E.L.
* mod: 2010.06.04
*
****************************************/
create PROCEDURE stp_paretoDettPartByFullSpec
(
	@CodCS VARCHAR(2),
	@CodMag VARCHAR(50),
	@IdxBlocco INT,
	@Particolare VARCHAR(20)
)
AS

	SELECT	TOP (100) PERCENT AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, ElencoCartellini.Particolare, 
				ElencoCartellini.Esponente, COUNT(PosizioneUdcCorrente.UDC) AS NumUDC, ISNULL(MIN(PosizioneUdcCorrente.DataRif), 
				GETDATE()) AS Oldest, ISNULL(MAX(PosizioneUdcCorrente.DataRif), GETDATE()) AS Newest, SUM(ElencoCartellini.Qta) AS QtaTotPz, 
				AnagStatiProdotto.DescStato
	FROM		AnagMag INNER JOIN
				Blocchi ON AnagMag.CodMag = Blocchi.CodMag AND AnagMag.CodCS = Blocchi.CodCS INNER JOIN
				Celle INNER JOIN
				ElencoCartellini INNER JOIN
				PosizioneUdcCorrente ON ElencoCartellini.UDC = PosizioneUdcCorrente.UDC ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella ON 
				Blocchi.IdxBlocco = Celle.IdxBlocco INNER JOIN
				AnagStatiProdotto ON ElencoCartellini.CodStato = AnagStatiProdotto.CodStato
	WHERE		(Celle.Attiva = 1) AND (AnagMag.CodCS = @CodCS) AND (AnagMag.CodMag = @CodMag) AND (Blocchi.IdxBlocco = @IdxBlocco) AND 
				(ElencoCartellini.Particolare = @Particolare)
	GROUP BY	AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, Blocchi.NumX, Blocchi.NumY, Blocchi.NumZ, 
	            ElencoCartellini.Particolare, ElencoCartellini.Esponente, AnagStatiProdotto.DescStato
	ORDER BY	QtaTotPz DESC

	
RETURN
go

/***************************************
* STORED stp_paretoPartByMagBlocco
*
* restituisce elenco particolari in logica pareto (quantità) per un dato blocco di magazzino, aggregati (no stato)
*
* Steamware, S.E.L.
* mod: 2010.06.03
*
****************************************/
create PROCEDURE stp_paretoPartByMagBlocco
(
	@CodCS VARCHAR(2),
	@CodMag VARCHAR(50),
	@IdxBlocco INT
)
AS

	SELECT TOP (100) PERCENT 
			dbo.AnagMag.CodCS, dbo.AnagMag.CodMag, dbo.AnagMag.DescMag, dbo.Blocchi.IdxBlocco, dbo.Blocchi.CodBlocco, 
            dbo.ElencoCartellini.Particolare, '' as Esponente, COUNT(dbo.PosizioneUdcCorrente.UDC) AS NumUDC, ISNULL(MIN(dbo.PosizioneUdcCorrente.DataRif), 
            GETDATE()) AS Oldest, ISNULL(MAX(dbo.PosizioneUdcCorrente.DataRif), GETDATE()) AS Newest, SUM(dbo.ElencoCartellini.Qta) AS QtaTotPz,
            '' AS DescStato
	FROM	dbo.AnagMag INNER JOIN
            dbo.Blocchi ON dbo.AnagMag.CodMag = dbo.Blocchi.CodMag AND dbo.AnagMag.CodCS = dbo.Blocchi.CodCS INNER JOIN
            dbo.Celle INNER JOIN
            dbo.ElencoCartellini INNER JOIN
            dbo.PosizioneUdcCorrente ON dbo.ElencoCartellini.UDC = dbo.PosizioneUdcCorrente.UDC 
            ON dbo.Celle.IdxCella = dbo.PosizioneUdcCorrente.IdxCella 
            ON dbo.Blocchi.IdxBlocco = dbo.Celle.IdxBlocco INNER JOIN
            dbo.AnagStatiProdotto ON dbo.ElencoCartellini.CodStato = dbo.AnagStatiProdotto.CodStato
WHERE       (dbo.Celle.Attiva = 1) AND (AnagMag.CodCS = @CodCS) AND AnagMag.CodMag = @CodMag AND Blocchi.IdxBlocco = @IdxBlocco
GROUP BY	dbo.AnagMag.CodCS, dbo.AnagMag.CodMag, dbo.AnagMag.DescMag, dbo.Blocchi.IdxBlocco, dbo.Blocchi.CodBlocco, 
			dbo.Blocchi.NumX, dbo.Blocchi.NumY, dbo.Blocchi.NumZ, dbo.ElencoCartellini.Particolare
ORDER BY	QtaTotPz DESC

	
RETURN
go

/***************************************
* STORED stp_ParticolariOverview
*
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe")
*
* Steamware, S.E.L.
* mod: 2010.05.31
*
****************************************/
create PROCEDURE stp_ParticolariOverview
(
	@searchVal VARCHAR(50),
	@CodCS VARCHAR(2)
)
AS

	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 = @searchVal
	GROUP BY	RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare

RETURN
go

/***************************************
* STORED stp_ParticolariOverviewLike
*
* elenco di overview sull'impiego dei particolari (dettaglio a "maglie larghe") - modalità LIKE
*
* Steamware, S.E.L.
* mod: 2010.05.31
*
****************************************/
create PROCEDURE stp_ParticolariOverviewLike
(
	@searchVal VARCHAR(50),
	@CodCS VARCHAR(2)
)
AS

	SELECT		RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare, ISNULL(COUNT(ElencoCartellini.UDC), 0) AS NumUDC, 
				SUM(ISNULL(ElencoCartellini.Qta, 0)) AS TotQta, ISNULL(COUNT(PosizioneUdcCorrente.IdxCella), 0) AS NumInMag
	FROM        RilPro.AnagParticolari LEFT OUTER JOIN
	            ElencoCartellini ON RilPro.AnagParticolari.Particolare = ElencoCartellini.Particolare LEFT OUTER JOIN
	            PosizioneUdcCorrente ON ElencoCartellini.UDC = PosizioneUdcCorrente.UDC
	WHERE       (RilPro.AnagParticolari.CodCS = @CodCS) AND (RilPro.AnagParticolari.Particolare LIKE '%' + @searchVal + '%')
	GROUP BY	RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare

RETURN
go

/***************************************
* STORED stp_posizioniGetByIdxBlocco
*
* ottiene l'elenco delle posizioni UDC associate ad un dato blocco
*
* Steamware, S.E.L.
* mod: 2010.06.02
*
****************************************/
create PROCEDURE stp_posizioniGetByIdxBlocco
(
	@IdxBlocco INT
)
AS

	SELECT		PosizioneUdcCorrente.UDC, PosizioneUdcCorrente.IdxCella, PosizioneUdcCorrente.CodCS, PosizioneUdcCorrente.DataRif
	FROM        Celle INNER JOIN
	            PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella
	WHERE       (Celle.IdxBlocco = @IdxBlocco)
RETURN
go

/***************************************
* STORED stp_posizioniGetByIdxCella
*
* ottiene una singola posizione data la cella richiesta
*
* Steamware, S.E.L.
* mod: 2010.06.03
*
****************************************/
create PROCEDURE stp_posizioniGetByIdxCella
(
	@IdxCella INT
)
AS

	SELECT		UDC, IdxCella, CodCS, DataRif
	FROM        PosizioneUdcCorrente
	WHERE       (IdxCella = @IdxCella)
RETURN
go

/***************************************
* STORED stp_UdcDetailGetByIdxBlocco
*
* ottiene l'elenco degli UDC con dettaglio posizioni OCCUPATE associati ad un dato blocco di magazzino
*
* Steamware, S.E.L.
* mod: 2010.06.03
*
****************************************/
create PROCEDURE stp_UdcDetailGetByIdxBlocco
(
	@IdxBlocco INT
)
AS

SELECT		ElencoCartellini.UDC, ElencoCartellini.RagSociale, ElencoCartellini.Particolare, ElencoCartellini.DescParticolare, 
			ElencoCartellini.DisegnoGrezzo, ElencoCartellini.Esponente, ElencoCartellini.DescImpianto, ElencoCartellini.DataFus,
			ElencoCartellini.TurnoFus, ElencoCartellini.CodImballo, ElencoCartellini.Qta, AnagStatiProdotto.DescStato, ElencoCartellini.ModDate,
			ISNULL(Blocchi.CodMag, N'') AS CodMag, ISNULL(Blocchi.CodBlocco, N'') AS CodBlocco, ISNULL(Celle.CodCella, N'') AS CodCella,
			ISNULL(Celle.X, 0) AS X, ISNULL(Celle.Y, 0) AS Y, ISNULL(Celle.Z, 0) AS Z
FROM        AnagStatiProdotto RIGHT OUTER JOIN ElencoCartellini 
			ON AnagStatiProdotto.CodStato = ElencoCartellini.CodStato AND AnagStatiProdotto.CodStato = ElencoCartellini.CodStato 
			LEFT OUTER JOIN Celle INNER JOIN PosizioneUdcCorrente 
			ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella AND Celle.IdxCella = PosizioneUdcCorrente.IdxCella AND 
            Celle.IdxCella = PosizioneUdcCorrente.IdxCella INNER JOIN
            Blocchi ON Celle.IdxBlocco = Blocchi.IdxBlocco INNER JOIN
            AnagMag ON Blocchi.CodMag = AnagMag.CodMag AND Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag AND 
            Blocchi.CodCS = AnagMag.CodCS AND Blocchi.CodMag = AnagMag.CodMag AND Blocchi.CodCS = AnagMag.CodCS ON 
            ElencoCartellini.UDC = PosizioneUdcCorrente.UDC
WHERE       (Celle.IdxBlocco = @IdxBlocco)

RETURN
go

commit
go









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