/***************************************
* 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
*
****************************************/
CREATE 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
