1f7b3ff79f
git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@483 365432ac-a1b5-4ffd-bb28-6d3099d32164
491 lines
17 KiB
PL/PgSQL
491 lines
17 KiB
PL/PgSQL
set xact_abort on;
|
|
go
|
|
|
|
begin transaction;
|
|
go
|
|
|
|
set ANSI_NULLS on;
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_spostaUdc
|
|
*
|
|
* sposta un UDC, salvandone la posizione precedente (se esiste) nella tab storica
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.06.11
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_spostaUdc
|
|
(
|
|
@CodCS VARCHAR(2),
|
|
@UDC VARCHAR(50),
|
|
@IdxCellaTo INT,
|
|
@resetRLP BIT
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
|
|
-- DICHIARAZIONI iniziali variabili
|
|
DECLARE @IdxCellaFrom INT
|
|
DECLARE @capienza INT
|
|
DECLARE @numUdc INT
|
|
|
|
-- controllo cella di partenza
|
|
SET @IdxCellaFrom = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC)
|
|
SET @IdxCellaFrom = ISNULL(@IdxCellaFrom,0) -- controllo x cella null...
|
|
-- controllo se cella di destinazione e di partenza coincidono NON FACCIO NULLA... altrimenti procedo
|
|
IF (@IdxCellaTo <> @IdxCellaFrom)
|
|
BEGIN
|
|
|
|
-- controllo se la cella di partenza vada indicata come piena o meno
|
|
SET @capienza = (
|
|
SELECT tc.Capienza
|
|
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
|
WHERE c.IdxCella = @IdxCellaFrom
|
|
)
|
|
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom)
|
|
-- se capienza cella di partenza NON raggiunta aggiorno NON Piena
|
|
IF(@numUdc -1 < @capienza)
|
|
BEGIN
|
|
EXEC stp_celle_updPiena @IdxCellaFrom, 0
|
|
END
|
|
|
|
-- cancello posizione occupata
|
|
DELETE
|
|
FROM PosizioneUdcCorrente
|
|
WHERE UDC = @UDC
|
|
|
|
-- SE RICHIESTO cancello eventuali righe liste di prelievo FUSI per l'UDC
|
|
IF(@resetRLP = 1)
|
|
BEGIN
|
|
DELETE FROM RigheListePrelievo
|
|
WHERE UDC = @UDC AND CodLista IN (
|
|
SELECT CodLista FROM ElencoListePrelievo
|
|
--WHERE CodTipoLista='01-PreFus'
|
|
WHERE CodStatoLista < 4
|
|
)
|
|
END
|
|
|
|
|
|
|
|
-- creo una nuova posizione per l'UDC
|
|
INSERT INTO PosizioneUdcCorrente(UDC, IdxCella, CodCS, DataRif)
|
|
VALUES(@UDC, @IdxCellaTo, @CodCS, GETDATE())
|
|
|
|
-- controllo se la cella di dest vada indicata come piena
|
|
SET @capienza = (
|
|
SELECT tc.Capienza
|
|
FROM TipoCella TC INNER JOIN Celle c ON TC.IdxTipoCella=c.IdxTipoCella
|
|
WHERE c.IdxCella = @IdxCellaTo
|
|
)
|
|
SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaTo)
|
|
-- se capienza raggiunta aggiorno...
|
|
IF(@numUdc >= @capienza)
|
|
BEGIN
|
|
EXEC stp_celle_updPiena @IdxCellaTo, 1
|
|
END
|
|
|
|
END -- cellaFrom e cellaTo non coincidono...
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit;
|
|
go
|
|
|
|
|
|
set xact_abort on;
|
|
go
|
|
|
|
begin transaction;
|
|
go
|
|
|
|
set ANSI_NULLS on;
|
|
go
|
|
|
|
/*****************************************
|
|
* STORED stp_UDC_delete_byRdQ
|
|
*
|
|
* Elimina gli UDC associati ad un rapporto di qualità dato rapporto qualità
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2012.02.14
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_UDC_delete_byRdQ
|
|
(
|
|
@nRapQual NUMERIC(6,0),
|
|
@ExecBatchInter BIT = 0 -- 0 Eseguita in Batch , 1 in Interattivo
|
|
)
|
|
AS
|
|
|
|
-- Attenzione!!! Cancella tutti i cartellini degli UDC materia prima del rapporto qualità anche se sono scaricati
|
|
-- comunque sono presenti nello StoricoCartellini
|
|
|
|
|
|
SET NOCOUNT ON;
|
|
SET ANSI_NULLS OFF;
|
|
SET XACT_ABORT ON; -- Se c'è un errore fa il rollback di tutta la transazione e non solo quella in errore
|
|
SET LOCK_TIMEOUT 600000; -- 10 min - Setto il tempo massimo di attesa del lock della tabella che è valido solo per la durata
|
|
-- della connessione e di default è settato a -1 (infinito). ATTENZIONE che se viene dato un errore
|
|
-- di lock deve essere controllato
|
|
|
|
IF @ExecBatchInter = 1 -- Se interattiva diminuisco il tempo di lock massimo a 15 sec
|
|
SET LOCK_TIMEOUT 15000;
|
|
|
|
-- Se per il rapporto qualità esiste almeno un cartellino UDC ( se nullo non lo conta )
|
|
IF ( SELECT COUNT(UDC) FROM RilPro.RapQual WHERE nRapQual = @nRapQual ) > 0
|
|
BEGIN
|
|
BEGIN TRY;
|
|
BEGIN TRANSACTION;
|
|
|
|
-- =========================================================
|
|
-- Cancella tutti gli UDC Materia Prima di un Rapp. Qualità
|
|
-- =========================================================
|
|
SELECT ROW_NUMBER() OVER (ORDER BY UDC) AS Riga,UDC
|
|
INTO #Temp
|
|
FROM RilPro.RapQual
|
|
WHERE nRapQual = @nRapQual AND UDC IS NOT NULL; -- Rapporto di qualità da cancellare
|
|
|
|
DECLARE @Riga AS INT = 1
|
|
,@Fine AS INT = 0
|
|
,@UDC nVarchar(50);
|
|
|
|
SELECT @Fine = MAX(Riga) FROM #Temp;
|
|
|
|
WHILE @Riga <= @Fine
|
|
BEGIN
|
|
-- Leggo UDC da cancellare uno alla volta
|
|
SELECT @UDC = UDC FROM #Temp WHERE Riga = @Riga;
|
|
|
|
-- ======================================================
|
|
-- Cancella i dati del singolo UDC
|
|
-- =======================================================
|
|
-- Attenzione che sulle tabelle ci sono dei trigger
|
|
DELETE dbo.PosizioneUdcCorrente WHERE UDC = @UDC
|
|
|
|
-- DELETE dbo.RelazUDC WHERE UDC_child = @UDC -- mod. 2012-03-02 per mantenere la storia UDC AS400-GMW
|
|
-- DELETE dbo.RelazUDC WHERE UDC_parent = @UDC
|
|
DELETE dbo.ElencoCartellini WHERE UDC = @UDC
|
|
|
|
-- sgancio il cartellino AS400 da quello GMW ( cancellato )
|
|
UPDATE RilPro.RapQual SET UDC = NULL WHERE UDC = @UDC
|
|
|
|
--SELECT * FROM dbo.PosizioneUdcCorrente WHERE UDC = @UDC
|
|
--SELECT * FROM dbo.RelazUDC WHERE UDC_child = @UDC
|
|
--SELECT * FROM dbo.ElencoCartellini WHERE UDC = @UDC
|
|
--SELECT * FROM RilPro.RapQual WHERE UDC = @UDC
|
|
|
|
SET @Riga = @Riga + 1 -- Incremento contatore x UDC in tabella Temp
|
|
|
|
END
|
|
|
|
-- Se esiste la tabella #Temp la cancello
|
|
IF OBJECT_ID(N'tempdb..#Temp') IS NOT NULL
|
|
DROP TABLE #Temp;
|
|
|
|
COMMIT TRANSACTION;
|
|
END TRY
|
|
|
|
BEGIN CATCH;
|
|
|
|
--IF (ERROR_NUMBER() = 1222) -- se vi è un lock per troppo tempo posso controllarlo x rieseguire
|
|
-- BEGIN; PRINT 'Tabella Bloccata'; -- Segnalo l'errore specifico di lock
|
|
-- END;
|
|
--ELSE PRINT 'Errore Generico'; -- se l'errore non è un deadlock esco dal WHILE
|
|
|
|
IF XACT_STATE() <> 0 -- solo se vi sono transazioni aperte faccio il rollback ( da verificare nel caso sia richiamato
|
|
ROLLBACK TRANSACTION -- all'interno di un'altra transazione )
|
|
|
|
-- Cancello La Tabella TEMP se esiste ( messo x per sicurezza )
|
|
IF OBJECT_ID(N'tempdb..#Temp') IS NOT NULL
|
|
DROP TABLE #Temp;
|
|
|
|
-- Uso RAISERROR mandare in errore la procedura e x per tornare le info
|
|
-- sull'errore originale che ha portato l'esecuzione nel blocco CATCH
|
|
DECLARE @ErrorNumber INT;
|
|
DECLARE @ErrorMessage NVARCHAR(4000);
|
|
DECLARE @ErrorSeverity INT;
|
|
DECLARE @ErrorState INT;
|
|
SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(), @ErrorNumber = ERROR_NUMBER();
|
|
|
|
IF @ExecBatchInter = 0 -- Sollevo errore solo se richiesto dai parametri ( es. esecuzione da un Job Batch )
|
|
RAISERROR (@ErrorMessage,@ErrorSeverity,@ErrorState); -- Se non uso RAISERROR la procedura non mi da errore es. se schedulata
|
|
|
|
END CATCH;
|
|
|
|
END
|
|
|
|
/*---------------------------------------
|
|
- Query x eliminazione UDC e tab
|
|
- collegate dato un Rapp di Qualità
|
|
---------------------------------------*/
|
|
|
|
/* NON FUNZIONA A CAUSA DEI TRIGGER
|
|
WITH cte AS -- Tutti i cartellini su AS400 annullati che hanno un cartellino in RilPro
|
|
(
|
|
SELECT r.UDC
|
|
FROM RilPro.RapQual AS r
|
|
INNER JOIN dbo.ElencoCartellini AS e
|
|
ON r.UDC = e.UDC
|
|
WHERE r.BenesQual = 'A'
|
|
)
|
|
-- Cancello la posizione degli UDC a magazzino
|
|
DELETE dbo.PosizioneUdcCorrente
|
|
FROM dbo.PosizioneUdcCorrente AS P
|
|
INNER JOIN RilPro.RapQual AS r
|
|
ON p.UDC = r.UDC
|
|
WHERE r.nRapQual = @nRapQual
|
|
-- SELECT * FROM dbo.PosizioneUdcCorrente WHERE r.nRapQual = @nRapQual
|
|
|
|
-- Se non sono ancora scaricati cancello il record movimento di scarico materia prima
|
|
DELETE dbo.AS400_BatchConsumoMP
|
|
FROM dbo.AS400_BatchConsumoMP AS b
|
|
INNER JOIN RilPro.RapQual AS r
|
|
ON b.UDC = r.UDC
|
|
WHERE r.nRapQual = @nRapQual AND b.DataInvioAs IS NULL
|
|
|
|
SELECT * FROM dbo.AS400_BatchConsumoMP
|
|
|
|
-- Cancellazione Cartellini Materia Prima di un Rapporto qualità
|
|
SELECT * FROM dbo.ElencoCartellini
|
|
*/
|
|
go
|
|
|
|
commit;
|
|
go
|
|
|
|
|
|
|
|
|
|
/****** Object: StoredProcedure [BatchQueue].[stp_processaGiornaleMagazzino] Script Date: 06/05/2012 19:24:45 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************
|
|
* STORED stp_processaGiornaleMagazzino
|
|
*
|
|
* processa il giornale del magazzino, in modo da controlalre tutte le righe non processate (o eventualmente solo quelle nuove)
|
|
* e spostare nella coda di trasferimento con AS400 SOLO i movimenti che soddisfano i criteri specificati nella tabella
|
|
* "TabSyncMovMag"
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2012.05.25
|
|
*
|
|
****************************************/
|
|
ALTER PROCEDURE [BatchQueue].[stp_processaGiornaleMagazzino]
|
|
(
|
|
@CodCS NCHAR(2),
|
|
@lastInsDate DATETIME = NULL -- data-ora da cui cercare i record, se non viene passata è l'ultimo movimento registrato
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
|
|
/**********************************************************************************
|
|
*
|
|
* PROCEDURA in 4 step:
|
|
* - STEP 1: registro rettifiche QUANTITA' in FROM
|
|
* - STEP 2: registro prelievi da mag ext "from" (cambio mag)
|
|
* - STEP 3: registro depositi a mag ext "to" (cambio mag)
|
|
* - STEP 4: registro compensazioni: se from e to corrispondono e mag comp è NON NULLO metto in comp!
|
|
**********************************************************************************/
|
|
|
|
-- in primis: se è nulla la data calcolo l'ultim data di processing...
|
|
IF ( @lastInsDate IS NULL )
|
|
BEGIN
|
|
SET @lastInsDate = ( SELECT ISNULL(MAX(DataOra), '19000101') FROM GiornaleMagazzino WHERE NOT (DataOraProc IS NULL) )
|
|
END
|
|
|
|
-- ATTENZIONE!!! DEVE ESSERCI UN PARTICOLARE NON NULLO e != "n.d."
|
|
|
|
-- ora prendo tutte le righe che mi interessano e cerco match sulla tab TabSyncMovMag e le inserisco in batch...
|
|
|
|
-- STEP 1: rettifico quantità!
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_MOD', gm.Particolare, gm.UDC, tsmm.codMagExtFrom , gm.QtaTo - gm.QtaFrom
|
|
FROM GiornaleMagazzino gm
|
|
INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1) -- Se devo fare movimento su Sistema EXT
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtTo IS NOT NULL AND tsmm.codMagExtFrom IS NOT NULL ) -- le righe con magazzini ext NULLI non sono permessi
|
|
AND (tsmm.codMagExtFrom = tsmm.codMagExtTo) -- Solo se NON VARIA MAG ESTERNO...
|
|
AND (tsmm.codMagExtTo > 0 AND codMagExtFrom > 0 ) -- e magazzini non 0 ( usato quando non esiste Mag )
|
|
|
|
|
|
|
|
-- STEP 2: genero ora casi con 2 mag ext che cambiano: tolgo da FROM
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_MOV', gm.Particolare, gm.UDC, tsmm.codMagExtFrom , - gm.QtaFrom
|
|
FROM GiornaleMagazzino gm
|
|
INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1)
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtTo IS NOT NULL AND tsmm.codMagExtFrom IS NOT NULL ) -- le righe con magazzini ext NULLI non sono permessi
|
|
AND (tsmm.codMagExtFrom <> tsmm.codMagExtTo) -- se VARIA MAG ESTERNO...
|
|
AND (tsmm.codMagExtFrom > 0) -- e mag. partenza non 0 ( usato se non esiste Mag di partenza es. NEW UDC )
|
|
-- e non Negativo ( consumo ) non carica nessun magazzino
|
|
|
|
-- STEP 3: genero ora casi con 2 mag ext che cambiano: metto in TO
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_MOV', gm.Particolare, gm.UDC, tsmm.codMagExtTo , gm.QtaTo
|
|
FROM GiornaleMagazzino gm INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1)
|
|
AND (tsmm.codMagExtTo IS NOT NULL AND tsmm.codMagExtFrom IS NOT NULL ) -- le righe con magazzini ext NULLI non sono permessi
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtFrom <> tsmm.codMagExtTo) -- se VARIA MAG ESTERNO...
|
|
AND (tsmm.codMagExtTo > 0) -- e mag. destinazione non 0 ( usato se non esiste Mag di arrivo es. DEL UDC )
|
|
-- e non Negativo ( consumo ) non carica nessun magazzino
|
|
|
|
-- STEP 4: cerco prima casi con magazzini ext origine = destinazione e compensazioni
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_COMP', gm.Particolare, gm.UDC, tsmm.codMagExtComp, gm.QtaFrom - gm.QtaTo
|
|
FROM GiornaleMagazzino gm
|
|
INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1)
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtTo IS NOT NULL AND tsmm.codMagExtFrom IS NOT NULL ) -- le righe con magazzini ext NULLI non sono permessi
|
|
AND (tsmm.codMagExtTo > 0 AND codMagExtFrom > 0 ) -- e magazzini > 0 ( usato quando non esiste Mag )
|
|
AND (tsmm.codMagExtComp IS NOT NULL AND tsmm.codMagExtComp <> 0 ) -- HO compensazioni!!!
|
|
AND (tsmm.codMagExtFrom = tsmm.codMagExtTo) -- E NON VARIA MAG ESTERNO...
|
|
|
|
-- ora aggiorno le stesse righe riportate indicando la data ora di processing...
|
|
UPDATE gm
|
|
SET DataOraProc = GETDATE()
|
|
FROM GiornaleMagazzino gm
|
|
INNER JOIN AS400_BatchMovimenti abm
|
|
ON gm.numOp = abm.numOp
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
|
|
|
|
|
|
|
|
GO
|
|
|
|
|
|
/****** Object: Trigger [dbo].[trg_updMovAS] Script Date: 06/05/2012 19:26:32 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-20 mod. 2012-03-14
|
|
-- Description: trigger x inserimento movimenti
|
|
-- nella tab GiornaleMagazzino
|
|
-- =============================================
|
|
ALTER TRIGGER [dbo].[trg_updMovAS]
|
|
ON [dbo].[ElencoCartellini]
|
|
AFTER UPDATE
|
|
AS
|
|
BEGIN
|
|
|
|
|
|
/*******************************************************************************
|
|
* Gestione UPDATE ElencoCartellini --> GiornaleMagazzino
|
|
*
|
|
* regola1: si fanno registrazioni solo se varia ALMENO UNO tra
|
|
* - quantità
|
|
* - idxPosizione
|
|
* - codStato
|
|
*
|
|
* regola 2:
|
|
* - Particolare deve essere valorizzato ALMENO a '' (blank)
|
|
*
|
|
* regola3: in caso di update SIA di quantità che di posizione/stato
|
|
* - si genera UN PRIMO RECORD di modifica quantità a posizione e stato FISSI sulla vecchia posizione/Stato
|
|
* - si genera UN SECONDO RECORD con variazione posizione/stato
|
|
*
|
|
*******************************************************************************/
|
|
|
|
-- setup variabili e verbosità
|
|
SET NOCOUNT ON;
|
|
DECLARE @dataOra AS DATETIME
|
|
SET @dataOra = GETDATE()
|
|
|
|
-- PRIMO STEP: quantità! ( vedi Note )
|
|
IF( UPDATE(Qta) )
|
|
BEGIN
|
|
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, CodEvento, ModDate, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'U', @dataOra, i.CodEvento, i.ModDate, d.UDC, ISNULL(d.Particolare,''), d.CodStato, d.CodStato, d.IdxPosizione, d.IdxPosizione, d.Qta, i.Qta
|
|
FROM inserted AS i
|
|
INNER JOIN deleted AS d ON i.UDC = d.UDC
|
|
WHERE ( (i.Qta <> d.Qta) )
|
|
)
|
|
|
|
END
|
|
|
|
-- ora controllo in caso di modifica di stato o posizione
|
|
IF(UPDATE(CodStato) OR UPDATE(IdxPosizione))
|
|
BEGIN
|
|
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, CodEvento, ModDate, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'U', @dataOra, i.CodEvento, i.ModDate, i.UDC, ISNULL(d.Particolare,''), d.CodStato, i.CodStato, d.IdxPosizione, i.IdxPosizione, i.Qta, i.Qta
|
|
FROM inserted AS i
|
|
INNER JOIN deleted AS d ON i.UDC = d.UDC
|
|
WHERE ( ( i.IdxPosizione <> d.IdxPosizione) OR (i.CodStato <> d.CodStato) )
|
|
)
|
|
|
|
END
|
|
|
|
END
|
|
|
|
|
|
GO
|
|
|
|
|
|
|
|
|
|
|