﻿/* Sistemo unique x cod blocco */
set xact_abort on
go

begin transaction
go

update Blocchi set CodBlocco = N'' where CodBlocco is null
go

alter table Blocchi alter column
  CodBlocco nvarchar(3) not null
go

alter table Blocchi add
  constraint i_CodBlocco unique(CodBlocco)
go

commit
go



set xact_abort on
go

begin transaction
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

-- copio la lista (intestazione)
INSERT INTO ElencoListePrelievo_AS
SELECT		*
FROM        ElencoListePrelievo
WHERE       (CodLista = @CodLista)

-- copio le righe lista di dettaglio
INSERT INTO RigheListePrelievo_AS
SELECT		*
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)

-- 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

set ANSI_NULLS on
go

/***************************************
* STORED stp_RLP_sbloccaNonPrelevate
*
* sblocca righe liste di prelievo ATTIVE x UDC non prelevati
*
* Steamware, S.E.L.
* mod: 2010.08.31
*
****************************************/
create PROCEDURE stp_RLP_sbloccaNonPrelevate
(
	@UDC NVARCHAR(50)
)
AS

-- creo una CTE x le righe liste prelievo ATTIVE (escludo bozze e liste scaricate) - candidate per sblocco
WITH	cteUdcRigheAttive	AS (
			SELECT RLP.CodLista, RLP.UDC, RLP.Prelevato
			FROM   RigheListePrelievo AS RLP INNER JOIN ElencoListePrelievo AS ELP
				   ON RLP.CodLista = ELP.CodLista
			WHERE  (ELP.CodStatoLista BETWEEN 1 AND 3) AND RLP.Prelevato = 1
		)
		/*
		,

-- creo una CTE x gli UDC che sono attualmente nella posizione virtuale di VLP (Virtual Lista Prelievo) e quindi VANNO ESCLUSE dallo sblocco
		cteUdcInPrelievo	AS (
			SELECT UDC
            FROM   PosizioneUdcCorrente
            WHERE  (IdxCella IN (
					 SELECT c.IdxCella
                     FROM   Celle AS c INNER JOIN TipoCella AS tc ON c.IdxTipoCella = tc.IdxTipoCella
                     WHERE  (tc.CodMag = 'VMLP')))
		)

-- effettua "sblocco" delle righe liste prelievo che danno UDC prelevati ma che NON risultano
UPDATE  cteUdcRigheAttive
    SET Prelevato = 0
WHERE   (Prelevato = 1)
        AND (UDC NOT IN (select * from cteUdcInPrelievo))
*/

-- effettua "sblocco" delle righe liste prelievo che danno UDC prelevati ma che NON risultano
UPDATE		cteUdcRigheAttive
    SET		Prelevato = 0
	WHERE   UDC = @UDC

RETURN
go

commit
go






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