Fix stored creazione note MP

git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@468 365432ac-a1b5-4ffd-bb28-6d3099d32164
This commit is contained in:
samuele
2012-05-30 06:47:10 +00:00
parent 7450e2111d
commit d20909ca54
10 changed files with 317 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2
View File
@@ -318,6 +318,8 @@
<None Include="SqlScripts\V1.2\GMW_410_TEKAL\SincVocabolario_TK_409.sql" />
<None Include="SqlScripts\V1.2\GMW_440_POST Installazione_SP.sql" />
<None Include="SqlScripts\V1.2\GMW_440_POST Installazione_TK.sql" />
<None Include="SqlScripts\V2.0\GMW_00451_eventoGian.sql" />
<None Include="SqlScripts\V2.0\GMW_00451_storedGian.sql" />
<None Include="SqlScripts\V2.0\GMW_00450_dati.sql" />
<None Include="SqlScripts\V2.0\GMW_00449_struttura.sql" />
<None Include="SqlScripts\Vocabolario\vocab_435.sql" />
@@ -0,0 +1,43 @@
set xact_abort on
go
begin transaction
go
INSERT INTO dbo.AnagTipoEvento
VALUES (N'UDC_MPRQ', N'Modifca UDC MP x Modifica RQ')
go
commit transaction
go
set xact_abort on
go
begin transaction
go
UPDATE dbo.TabSyncMovMag SET
codMagExtTo=N'6'
WHERE CodCS=N'SP' and CodStatoFrom=N'MP' and CodStatoTo=N'MP' and IdxPosizioneFrom=-6 and IdxPosizioneTo=6
UPDATE dbo.TabSyncMovMag SET
codMagExtFrom=N'6'
WHERE CodCS=N'SP' and CodStatoFrom=N'MP' and CodStatoTo=N'MP' and IdxPosizioneFrom=6 and IdxPosizioneTo=-6
INSERT INTO dbo.TabSyncMovMag
VALUES (N'SP', N'MP', N'MP-NA', 6, 6, 0, N'6', N'6', NULL, N'Cambio Stato in MP-NA non Accettata')
INSERT INTO dbo.TabSyncMovMag
VALUES (N'SP', N'MP-NA', N'MP', 6, 6, 0, N'6', N'6', NULL, N'Cambio Stato in MP - Accettata')
go
commit transaction
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(451, GETDATE())
GO
@@ -0,0 +1,224 @@
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
@@ -0,0 +1,48 @@
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*****************************************
* STORED stp_UDC_updateNoteByRQ
*
* Aggiorna note UDC dato il rapp di qualità cui sono legate
*
* Steamware, S.E.L.
* mod: 2012.02.14
*
****************************************/
alter PROCEDURE stp_UDC_updateNoteByRQ
(
@nRapQual NUMERIC(6,0),
@note NVARCHAR(500)
)
AS
UPDATE ElencoCartellini
SET note = @note
,ModDate=GETDATE(),
CodEvento = 'UDC_RDQ'
FROM ElencoCartellini AS ec INNER JOIN v_RapQualNote AS rq ON ec.UDC = rq.UDC
WHERE (rq.nRapQual = @nRapQual) AND ec.note <> @note
RETURN
go
commit
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(452, GETDATE())
GO
Binary file not shown.
Binary file not shown.