Files
GMW/GMW_DB/dbo/Stored Procedures/stp_LP_exportToAs400.sql
Samuele Locatelli a6d7ea0b2f Import iniziale DB, GMW
versione TK 2.4
inclusione schema voc x tabella lingue e vocabolario
2014-02-20 09:54:57 +01:00

62 lines
2.2 KiB
Transact-SQL

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