a6d7ea0b2f
versione TK 2.4 inclusione schema voc x tabella lingue e vocabolario
104 lines
4.3 KiB
Transact-SQL
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
|