1f7b3ff79f
git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@483 365432ac-a1b5-4ffd-bb28-6d3099d32164
225 lines
11 KiB
Transact-SQL
225 lines
11 KiB
Transact-SQL
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_batch_RapQual_S02
|
|
*
|
|
* Esegue lo step 2 (travaso dati RAW in RilPro) per la tab dei rapporti di qualità
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2011.11.25
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE BatchQueue.stp_batch_RapQual_S02
|
|
(
|
|
@CodMagMpNONacc NVARCHAR(50) = '6666',
|
|
@CodMagMpAcc NVARCHAR(50) = '6',
|
|
@CodStatoMpNONacc NVARCHAR(50) = 'MP-NA',
|
|
@CodStatoMpAcc NVARCHAR(50) = 'MP'
|
|
)
|
|
|
|
AS
|
|
|
|
SET XACT_ABORT ON;
|
|
SET NOCOUNT ON;
|
|
-- eseguo UPSERT x tutti i dati disponibili in tab Raw...
|
|
BEGIN TRAN;
|
|
|
|
-- ===============================================================================================
|
|
-- PRIMA DI AGGIORNARE VERIFICO SE CI SONO MODIFICHE DI MP ACCETTATA / NON ACCETTATA
|
|
-- ===============================================================================================
|
|
--DECLARE @CodMagMpNONacc AS VARCHAR(50) = '6666' -- Setto il Magazzino per MP NON ACCETTATA
|
|
--DECLARE @CodMagMpAcc AS VARCHAR(50) = '6' -- Setto il Magazzino per MP ACCETTATA
|
|
|
|
DECLARE @CellaOK AS INT
|
|
DECLARE @MagAccOK AS INT
|
|
DECLARE @MagNNAccOK AS INT
|
|
DECLARE @CodEven AS NVARCHAR(10) = 'UDC_MPRQ';
|
|
|
|
-- ===============================================================================================
|
|
-- SPOSTAMENTO DI MAGAZZINO DELLA MP che da ACCETTATA diventa NON ACCETTATA
|
|
-- ===============================================================================================
|
|
-- Controllo che il magazzino dest. NON ACCETTATA sia a cella singola( a terra ), attivo e non pieno
|
|
SELECT @MagAccOK = COUNT(*) FROM dbo.Celle AS c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco
|
|
WHERE b.CodMag = @CodMagMpNONacc AND c.Attiva = 1 AND c.Piena = 0
|
|
|
|
IF @MagAccOK = 1 -- Se mag. NON ACCETTATA è OK
|
|
BEGIN
|
|
-- Vado a leggere la cella corretta
|
|
SELECT @CellaOK = c.IdxCella FROM Celle AS c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco
|
|
WHERE b.CodMag = @CodMagMpNONacc AND c.Attiva = 1 AND c.Piena = 0
|
|
|
|
-- Se ci sono cartellini di materia prima che sono passati da accettati a non accettati li sposto
|
|
UPDATE dbo.PosizioneUdcCorrente
|
|
SET IdxCella = @CellaOK,
|
|
DataRif = GETDATE()
|
|
FROM dbo.PosizioneUdcCorrente AS po
|
|
INNER JOIN RilPro.RapQual rq
|
|
ON rq.UDC = po.UDC
|
|
INNER JOIN RawData.XOGIX00F u
|
|
ON u.XNRETI = rq.ProgUDC
|
|
INNER JOIN dbo.ElencoCartellini AS el
|
|
ON rq.UDC = el.UDC
|
|
INNER JOIN Celle c
|
|
ON po.IdxCella=c.IdxCella
|
|
INNER JOIN Blocchi b
|
|
ON c.IdxBlocco=b.IdxBlocco
|
|
WHERE ( rq.BenesQual = 'S' AND u.XBENQL = 'N' ) -- da Accettata a NON accettata
|
|
AND XMATSC = 'N' -- solo Lega non ancora Scaricata
|
|
AND b.CodMag <> @CodMagMpNONacc -- Che non è in Magazzino NON Accettati
|
|
|
|
UPDATE dbo.ElencoCartellini
|
|
SET CodStato = @CodStatoMpNONacc,
|
|
CodEvento= @CodEven,
|
|
ModDate = GETDATE()
|
|
|
|
FROM dbo.ElencoCartellini AS el
|
|
INNER JOIN RilPro.RapQual rq
|
|
ON rq.UDC = el.UDC
|
|
INNER JOIN RawData.XOGIX00F u
|
|
ON u.XNRETI = rq.ProgUDC
|
|
WHERE ( rq.BenesQual = 'S' AND u.XBENQL = 'N' ) -- da Accettata a NON accettata
|
|
AND XMATSC = 'N' -- solo Lega non ancora Scaricata
|
|
AND el.CodStato = @CodStatoMpAcc -- Modifico solo UDC in stato 'MP' (accettata)
|
|
AND el.IdxPosizione = 6 -- Modifico solo se cartellini non scaricati Mod. 2012-05
|
|
END
|
|
|
|
-- ===============================================================================================
|
|
-- SPOSTAMENTO DI MAGAZZINO DELLA MP che da NON ACCETTATA diventa ACCETTATA
|
|
-- ===============================================================================================
|
|
-- Controllo che il magazzino dest. ACCETTATA sia a cella singola( a terra ), attivo e non pieno
|
|
SELECT @MagNNAccOK = COUNT(*) FROM dbo.Celle AS c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco
|
|
WHERE b.CodMag = @CodMagMpAcc AND c.Attiva = 1 AND c.Piena = 0
|
|
|
|
IF @MagNNAccOK = 1 -- Se mag. ACCETTATA è OK
|
|
BEGIN
|
|
-- Vado a leggere la cella corretta
|
|
SELECT @CellaOK = c.IdxCella FROM Celle AS c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco
|
|
WHERE b.CodMag = @CodMagMpAcc AND c.Attiva = 1 AND c.Piena = 0
|
|
|
|
-- Se ci sono cartellini di materia prima che sono passati da accettati a non accettati li sposto
|
|
UPDATE dbo.PosizioneUdcCorrente
|
|
SET IdxCella = @CellaOK,
|
|
DataRif = GETDATE()
|
|
FROM dbo.PosizioneUdcCorrente AS po
|
|
INNER JOIN RilPro.RapQual rq
|
|
ON rq.UDC = po.UDC
|
|
INNER JOIN RawData.XOGIX00F u
|
|
ON u.XNRETI = rq.ProgUDC
|
|
INNER JOIN dbo.ElencoCartellini AS el
|
|
ON rq.UDC = el.UDC
|
|
INNER JOIN Celle c
|
|
ON po.IdxCella=c.IdxCella
|
|
INNER JOIN Blocchi b
|
|
ON c.IdxBlocco=b.IdxBlocco
|
|
WHERE ( rq.BenesQual = 'N' AND u.XBENQL = 'S' ) -- da NON Accettata ad Accettata
|
|
AND XMATSC = 'N' -- solo Lega non ancora Scaricata
|
|
AND b.CodMag <> @CodMagMpAcc -- Modifico solo UDC in stato MP non Accettata
|
|
|
|
UPDATE dbo.ElencoCartellini
|
|
SET CodStato = @CodStatoMpAcc,
|
|
CodEvento= @CodEven,
|
|
ModDate = GETDATE()
|
|
FROM dbo.ElencoCartellini AS el
|
|
INNER JOIN RilPro.RapQual rq
|
|
ON rq.UDC = el.UDC
|
|
INNER JOIN RawData.XOGIX00F u
|
|
ON u.XNRETI = rq.ProgUDC
|
|
WHERE ( rq.BenesQual = 'N' AND u.XBENQL = 'S' ) -- da NON Accettata ad Accettata
|
|
AND XMATSC = 'N' -- solo Lega non ancora Scaricata
|
|
AND el.CodStato = @CodStatoMpNONacc -- Che ha è in stato MP NON accettata
|
|
AND el.IdxPosizione = 6 -- Modifico solo se cartellini non scaricati Mod. 2012-05
|
|
END
|
|
|
|
-- ===============================================================================================
|
|
-- ADESSO POSSO FARE UPDATE DI RilPro.RapQual
|
|
-- ===============================================================================================
|
|
-- se il dato esiste faccio UPDATE!!!
|
|
UPDATE RilPro.RapQual
|
|
SET CodFor = RTRIM(u.XCDFOR),
|
|
DestTerz = RTRIM(u.XCDTER),
|
|
CodLega = RTRIM(u.XCDPAR),
|
|
-- DataPrelFus = u.XDTPRO,
|
|
-- TurnoPrelFus = u.XTRPRO, -- non lo aggiorno perchè in AS400 è blank nel caso di consumo verso terzista e quindi lo perderei
|
|
Qta = u.XQTPRO, -- non lo aggiorno x non perdere il mio dato di scaricamento
|
|
DestLega = RTRIM(u.XDESMT),
|
|
LegaScaric = u.XMATSC,
|
|
BenesQual = u.XBENQL
|
|
FROM RilPro.RapQual rq
|
|
INNER JOIN RawData.XOGIX00F u ON u.XNRETI = rq.ProgUDC; -- AND u.XRPQLN = rq.nRapQual AND u.XRPQLD = rq.DataRapQual; -- se XNRETI è univoco ...
|
|
|
|
-- verifico che non ci siano cartellini scaricati in AS400 e non sul mio sistema...
|
|
UPDATE RilPro.RapQual
|
|
SET CodFor = RTRIM(u.XCDFOR),
|
|
DestTerz = RTRIM(u.XCDTER),
|
|
CodLega = RTRIM(u.XCDPAR),
|
|
DataPrelFus = u.XDTPRO,
|
|
TurnoPrelFus = RTRIM(u.XTRPRO),
|
|
Qta = u.XQTPRO,
|
|
DestLega = RTRIM(u.XDESMT),
|
|
LegaScaric = u.XMATSC,
|
|
BenesQual = u.XBENQL
|
|
FROM RilPro.RapQual rq
|
|
INNER JOIN RawData.XOGIX00F u ON u.XNRETI = rq.ProgUDC
|
|
WHERE rq.DataPrelFus = 0 AND u.XDTPRO > 0;
|
|
|
|
-- creo tab temporanea x i dati inesistenti...
|
|
WITH cteInsert AS
|
|
(SELECT x.*
|
|
FROM RawData.XOGIX00F x LEFT OUTER JOIN RilPro.RapQual rq
|
|
ON x.XNRETI = rq.ProgUDC -- AND u.XRPQLN = rq.nRapQual AND u.XRPQLD = rq.DataRapQual; -- se XNRETI è univoco ...
|
|
WHERE rq.ProgUDC IS NULL )
|
|
|
|
-- se il dato non c'è faccio INSERT!!!
|
|
INSERT INTO RilPro.RapQual(nRapQual, DataRapQual, ProgUDC, CodFor, DestTerz, CodLega, DataPrelFus, TurnoPrelFus, Qta, DestLega, LegaScaric, BenesQual)
|
|
SELECT XRPQLN AS nRapQual,
|
|
XRPQLD AS DataRapQual,
|
|
RTRIM(XNRETI) AS ProgUDC,
|
|
RTRIM(XCDFOR) AS CodFor,
|
|
RTRIM(XCDTER) AS DestTerz,
|
|
RTRIM(XCDPAR) AS CodLega,
|
|
XDTPRO AS DataPrelFus,
|
|
RTRIM(XTRPRO) AS TurnoPrelFus,
|
|
XQTPRO AS Qta,
|
|
RTRIM(XDESMT) AS DestLega,
|
|
XMATSC AS LegaScaric,
|
|
XBENQL AS BenesQual
|
|
FROM cteInsert
|
|
|
|
-- ===============================================================================================
|
|
-- DOPO UPDATE aggiorno la QTA nei Cartellini GMW se diversi da quelli in RilPro.RapQual ( AS400 )
|
|
-- ===============================================================================================
|
|
UPDATE e
|
|
SET
|
|
e.Qta = r.Qta
|
|
,e.PesoTot = r.Qta
|
|
,CodEvento= @CodEven
|
|
,ModDate = GETDATE() -- memorizzo la modifica
|
|
-- OUTPUT deleted.* INTO dbo.ElencoCartellini_Copy -- deve essere già presente
|
|
FROM RilPro.RapQual AS r
|
|
INNER JOIN dbo.ElencoCartellini AS e
|
|
ON e.UDC = r.UDC
|
|
WHERE ( r.Qta <> e.Qta ) -- Solo se la quantità è diversa
|
|
|
|
COMMIT TRAN;
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
-- registro versione...
|
|
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(451, GETDATE())
|
|
GO
|