Files
GMW/GMW_DB/BatchQueue/Stored Procedures/stp_processaCodaMovimMag.sql
T
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

104 lines
4.3 KiB
Transact-SQL

/*****************************************************
* STORED sstp_processaCodaMovimMag
*
* Processa la coda dei movimenti di magazzino e chiama procedura x salvataggio dato su AS400
*
* Steamware, S.E.L.
* mod: 2013.11.22
*
****************************************/
CREATE PROCEDURE BatchQueue.stp_processaCodaMovimMag
AS
-- VERIFICARE A CURA MAZZUCCONI!!!
-- campi variabili "globali"
DECLARE @IdxBatch INT
DECLARE @CodSoggetto NVARCHAR(17)
DECLARE @CodMovCarico CHAR(2)
DECLARE @CodMovScarico CHAR(2)
-- campi x cursore e valorizzazione riga a riga
DECLARE @Particolare NVARCHAR(15)
DECLARE @Causale NVARCHAR(2)
DECLARE @CodMag NVARCHAR(50)
DECLARE @Qta INT
DECLARE @Data NVARCHAR(8)
DECLARE @RIFFO NVARCHAR(8)
-- faccio una query con un cursore x processare tutte le righe da inviare ad AS400..
--DECLARE RigaMovMag CURSOR LOCAL FOR
-- SELECT TOP 2000 IdxBatch FROM dbo.AS400_BatchMovimenti WHERE DataBatch IS NULL -- limito a 2000 i movimenti da passare
-- modifica per cambio anagrafica ( blocco i movimenti con particolare vecchio )
IF GETDATE() >= '20140101' -- 22/11/2013 Hard Coded x Modifica Anagrafica Articoli
DECLARE RigaMovMag CURSOR LOCAL FOR
SELECT TOP 2000 IdxBatch FROM dbo.AS400_BatchMovimenti
WHERE DataBatch IS NULL -- limito a 2000 i movimenti da passare
AND LEFT(Particolare ,1) <> 'P' -- Hard Coded 22/11/2013 non passo movimenti con codice vecchio
AND LEFT(Particolare ,1) <> 'A' -- Hard Coded 31/01/2014 non passo movimenti con codice anime vecchio
ORDER BY DataIns
ELSE
DECLARE RigaMovMag CURSOR LOCAL FOR
SELECT TOP 2000 IdxBatch FROM dbo.AS400_BatchMovimenti
WHERE DataBatch IS NULL -- limito a 2000 i movimenti da passare
ORDER BY DataIns
-- utente da inviare ad AS... VERIFICARE!!! su AS400 è un Char(10)
SET @CodSoggetto = 'UTENTEGMW2'
-- carico i 2 valori di default di carico e scarico da AS400
SET @CodMovCarico = (SELECT CauCarico FROM RilPro.AnagCausaliMag WHERE CodElemento = '0001')
SET @CodMovScarico = (SELECT CauScarico FROM RilPro.AnagCausaliMag WHERE CodElemento = '0001')
-- inizio cursore!
OPEN RigaMovMag
FETCH NEXT FROM RigaMovMag
INTO @IdxBatch
WHILE @@FETCH_STATUS = 0
BEGIN
-- controllo ci sia la riga
IF (SELECT COUNT(IdxBatch) FROM dbo.AS400_BatchMovimenti WHERE IdxBatch = @IdxBatch) > 0
BEGIN
/* OLD VERSION
SELECT @Particolare=bm.Particolare,
@Causale=CASE WHEN bm.Quantita>0 THEN @CodMovCarico ELSE @CodMovScarico END,
@CodMag=bm.CodMagAS,
@Qta = ABS(bm.Quantita),
@Data=dbo.dateToAsFormat(bm.DataIns), -- mod. 09/06/2012
@RIFFO=RIGHT( (CONVERT(NVARCHAR(20),bm.IdxBatch)) , 8 ) -- mod. 09/06/2012
*/
-- carico valori che mi servono
-- Lo scarico Anime esterne usa la causale P3 per poterle distinguerle in AS400 ( richiesta da TEKAL ) x il carico
-- non serve visto che non viene mai fatto vs AS400 x le anime esterne
SELECT @Particolare = bm.Particolare,
@Causale = CASE WHEN bm.Quantita < 0 AND (gm.CodStatoTo='AnimExt' OR gm.CodStatoFrom='AnimExt') THEN 'P3' -- Hard Coded 11/06/2013
WHEN bm.Quantita > 0 THEN @CodMovCarico
ELSE @CodMovScarico END,
@CodMag = bm.CodMagAS,
@Qta = ABS(bm.Quantita),
@Data = dbo.dateToAsFormat(bm.DataIns), -- mod. 09/06/2012
@RIFFO = RIGHT( (CONVERT(NVARCHAR(20),bm.IdxBatch)) , 8 ) -- mod. 09/06/2012
-- @Data=dbo.dateToAsFormat(GETDATE()),
-- @RIFFO=dbo.getUdcComp(bm.UDC,8)
FROM dbo.AS400_BatchMovimenti AS bm
INNER JOIN dbo.GiornaleMagazzino AS gm ON bm.numOp = gm.numOp
WHERE IdxBatch = @IdxBatch
-- Eseguo la stored che registra i movimenti magazzino
DECLARE @ScritturaASOK AS INT
EXECUTE @ScritturaASOK = BatchQueue.stp_registraMovMag @CodSoggetto, @Causale, @Particolare, @CodMag, @Qta, @Data, @RIFFO
-- registro la data del movimento BATCH solo se la stp verso AS400 è Ok
IF @ScritturaASOK = 0
UPDATE dbo.AS400_BatchMovimenti SET DataBatch = GETDATE() WHERE IdxBatch = @IdxBatch
FETCH NEXT FROM RigaMovMag INTO @IdxBatch
END
END
CLOSE RigaMovMag
DEALLOCATE RigaMovMag
RETURN