set xact_abort on
go

begin transaction
go

alter table TipoListaPrelievo add
  toAs400 bit constraint DF_TipoListaPrelievo_toAs400 default (1)
go

update TipoListaPrelievo set toAs400=1
go

set ANSI_NULLS on
go

/***************************************
* STORED stp_LP_exportToAs400
*
* esporta la lista di prelievo (e le relative righe) verso AS400 andando a copaire nelle relative tabelle _AS
*
* Steamware, S.E.L.
* mod: 2010.07.19
*
****************************************/
alter PROCEDURE stp_LP_exportToAs400
(
	@CodLista NVARCHAR(12)
)
AS

BEGIN TRAN

	-- inizio con un controllo se devo processare verso AS400 la lista di prelievo...
	DECLARE	@toAs400 BIT
	SET		@toAs400 = (SELECT     ISNULL(tlp.toAs400, 0) as valore
							FROM   TipoListaPrelievo AS tlp INNER JOIN ElencoListePrelievo AS elp ON tlp.CodTipoLista = elp.CodTipoLista
							WHERE  (elp.CodLista = @CodLista)
						)
	
	IF(@toAs400 > 0)
	BEGIN	
		-- copio la lista (intestazione)
		INSERT INTO ElencoListePrelievo_AS(CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, 
							DisegnoGrezzo, Esponente, Figura, CodImballo,  QtaTot, CodStatoLista, Destinatario)
		SELECT		CodLista, CodTipoLista, CodCS, DataCreaz, CodCliente, RagSociale, CodSoggetto, Particolare, DescParticolare, 
					DisegnoGrezzo, Esponente, Figura, CodImballo,  QtaTot, CodStatoLista, Destinatario
		FROM        ElencoListePrelievo
		WHERE       (CodLista = @CodLista)

		-- copio le righe lista di dettaglio
		INSERT INTO RigheListePrelievo_AS(CodLista, UDC, Qta, Proposto, Prelevato)
		SELECT		CodLista, UDC, Qta, Proposto, Prelevato
		FROM        RigheListePrelievo
		WHERE       (CodLista = @CodLista) AND Prelevato = 1

		-- aggiorno le quantità passate ad AS...
		UPDATE		ElencoListePrelievo_AS 
		SET			QtaTot = ( SELECT SUM(Qta) AS QtaTot FROM RigheListePrelievo WHERE (CodLista = @CodLista) AND Prelevato = 1 )
		WHERE       (CodLista = @CodLista)
	END


COMMIT TRAN

-- IMPORTANTE: in caso siano rimasti riferimenti ad un UDC scaricato in AS in altre liste di prelievo li tolgo in modo da "ripulirle" ed evitare che lo stesso UDC venga prelevato 2 volte...
DELETE		RLP
FROM		RigheListePrelievo RLP
INNER JOIN	ElencoListePrelievo ELP
		ON	RLP.CodLista = ELP.CodLista
WHERE		ELP.CodStatoLista < 4 AND RLP.CodLista <> @CodLista AND RLP.UDC IN (
					SELECT	UDC 
					FROM	RigheListePrelievo
					WHERE   (CodLista = @CodLista) AND Prelevato = 1
					)

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

UPDATE dbo.TipoListaPrelievo SET 
  toAs400=0
  WHERE CodTipoLista=N'01-PreFus'
go

commit transaction
go


set xact_abort on
go

begin transaction
go

INSERT INTO dbo.TabTranPosizEventi
  VALUES (N'MagPreFus', 80, 80)
go

commit transaction
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)
				AND ElencoCartellini.UDC NOT IN (
					SELECT DISTINCT UDC 
					FROM RigheListePrelievo INNER JOIN ElencoListePrelievo
					ON	RigheListePrelievo.CodLista = ElencoListePrelievo.CodLista
					WHERE (CodStatoLista > 1 AND Prelevato = 1)
					)
	GROUP BY	RilPro.AnagParticolari.Particolare, RilPro.AnagParticolari.DescParticolare

RETURN
go

commit
go





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