create table AS400_BatchConsumoMP( ProgUDC char(10) not null constraint PK_AS400_BatchPrelievoMP primary key, UDC nvarchar(50) not null, DataPrelFus numeric(8,0) not null, TurnoPrelFus char(5) not null, DestLega char(3), DestTerz char(6), DataInvioAs datetime ) go set xact_abort on go begin transaction go set ANSI_NULLS on go -- ============================================= -- Author: Samuele E. Locatelli -- Create date: 2009-09-20 -- Description: trigger x inserimento movimenti -- nella coda di trasferimento batch -- verso AS400 x UPDATE UDC -- ============================================= alter TRIGGER trg_updMovAS ON ElencoCartellini AFTER UPDATE AS BEGIN -- setup variabili e verbosità SET NOCOUNT ON; DECLARE @partOk AS BIT DECLARE @IdxPosFrom AS INT DECLARE @IdxPosTo AS INT DECLARE @magFrom AS NVARCHAR(50) DECLARE @magTo AS NVARCHAR(50) DECLARE @qta AS DECIMAL(10,2) DECLARE @qtaOld AS DECIMAL(10,2) -- controllo che CI SIA il particolare (altrimenti non eseguo) SET @partOk = (SELECT CASE WHEN ISNULL(Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END FROM deleted) IF(@partOk = 1) SET @qta = (SELECT Qta FROM inserted) SET @qtaOld = (SELECT Qta FROM deleted) -- se c'è stata modifica di quantità inizio a rettificare quella IF (UPDATE(Qta)) AND(@qta <> @qtaOld) BEGIN INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita) ( SELECT GETDATE(), 'UDC_MOD', Particolare, UDC, CAST(IdxPosizione AS NVARCHAR(50)), @qta-Qta FROM deleted WHERE CAST(IdxPosizione AS NVARCHAR(50)) IN (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1) ) END -- controllo poi se sia cambiato il magazzino, altrimenti non lo inserisco IF UPDATE(IdxPosizione) BEGIN -- Prendo le posizioni di magazzino precedente e nuova SET @IdxPosFrom = (SELECT IdxPosizione FROM deleted) SET @IdxPosTo = (SELECT IdxPosizione FROM inserted) -- Le trasformo nelle equivalenti stringhe del codMag SE attive SET @magFrom = (SELECT ISNULL(CodMagAS,'---') FROM AS400_MagCont WHERE Attivo = 1 AND CodMagAs = CAST(@IdxPosFrom AS NVARCHAR(50))) SET @magTo = (SELECT ISNULL(CodMagAS,'---') FROM AS400_MagCont WHERE Attivo = 1 AND CodMagAs = CAST(@IdxPosTo AS NVARCHAR(50))) -- inserisco un movimento di deposito verso mag nuovo (SE attivo) IF (@magFrom <> '---') BEGIN INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita) ( SELECT GETDATE(), 'UDC_MOV', Particolare, UDC, CAST(IdxPosizione AS NVARCHAR(50)), -@qta FROM deleted WHERE CAST(IdxPosizione AS NVARCHAR(50)) IN (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1) ) END -- inserisco un movimento di prelievo verso mag vecchio (SE attivo) IF (@magTo <> '---') BEGIN INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita) ( SELECT GETDATE(), 'UDC_MOV', Particolare, UDC, CAST(IdxPosizione AS NVARCHAR(50)), @qta FROM inserted WHERE CAST(IdxPosizione AS NVARCHAR(50)) IN (SELECT CodMagAS FROM AS400_MagCont WHERE Attivo = 1) ) END END END go commit go create index i_update on As400.t_CQNOC98L(NumDocRNC,TipoInterv,CodArticolo,MatrPezzo) go set xact_abort on go begin transaction go create index i_update on As400.t_MOMA200F(NumSessione,NumMovimento) go create index i_update on As400.t_MWMV200F(NomeUtente,CodCausale,CodParticolare,CodMagazzino,QtaMovimento,DataMovimento) go create index i_update on As400.t_PACKL00F(CodStabilimento,ProgUDC,CodParticolare,CodContenitore,MatrContenitore) go alter table As400.t_XOGIX00F add XRPQLN numeric(6,0) not null constraint DFX_03434E4C default(0), XRPQLD numeric(8,0) not null constraint DFX_03452060 default(0), XNRETI char(10) not null constraint DFX_03434DA4 default(''), XCDFOR char(6) not null constraint DFX_03463944 default(''), XCDTER char(6) not null constraint DFX_03460E6C default(''), XCDPAR char(15) not null constraint DFX_0345A2BC default(''), XDTPRO numeric(8,0) not null constraint DFX_0345CC28 default(0), XTRPRO char(5) not null constraint DFX_03434DDC default(''), XQTPRO numeric(5,0) not null constraint DFX_034583E0 default(0), XDESMT char(3) not null constraint DFX_037522B8 default(''), XMATSC char(1) not null constraint DFX_03453C08 default(''), XBENQL char(1) not null constraint DFX_03E1D3BC default('') go alter table As400.t_XOGIX00F drop column nRapQual, column DataRapQual, column ProgUDC, column CodFor, column DestTerz, column CodLega, column DataPrelFus, column TurnoPrelFus, column Qta, column DestLega, column LegaScaric, column BenesQual go create index i_update on As400.t_XOGIX00F(XRPQLN,XRPQLD,XNRETI) go alter table As400.t_XOGIX00F drop constraint DFX_03E1D3BC, constraint DFX_03453C08, constraint DFX_037522B8, constraint DFX_034583E0, constraint DFX_03434DDC, constraint DFX_0345CC28, constraint DFX_0345A2BC, constraint DFX_03460E6C, constraint DFX_03463944, constraint DFX_03434DA4, constraint DFX_03452060, constraint DFX_03434E4C go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_accodaConsumoUdcMP * * Accoda alla tab Batch il consumo di un UDC * * Steamware, S.E.L. * mod: 2010.10.10 * ****************************************/ create PROCEDURE stp_accodaConsumoUdcMP ( @UDC NVARCHAR(50), @DataPrelFus DATETIME, @TurnoPrelFus CHAR(5), @DestLega CHAR(3), @DestTerz CHAR(3) ) AS BEGIN TRAN -- registro movimento da riconciliare INSERT INTO AS400_BatchConsumoMP(ProgUDC, UDC, DataPrelFus, TurnoPrelFus, DestLega, DestTerz) SELECT ProgUdc, UDC, dbo.dateToAsFormat(@DataPrelFus), @TurnoPrelFus, @DestLega, @DestTerz FROM RilPro.RapQual WHERE UDC = @UDC -- aggiorno con data e turno di prelievo su tab RilPro (locale) UPDATE RilPro.RapQual SET DataPrelFus = dbo.dateToAsFormat(@DataPrelFus), TurnoPrelFus = @TurnoPrelFus WHERE UDC = @UDC COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_rappQualConsumabili * * Ottiene l'elenco dei record di rapp qualità (e quindi degli UDC) di AS non ancora consumati per range di data di approvazione * * Steamware, S.E.L. * mod: 2010.10.05 * ****************************************/ alter PROCEDURE stp_rappQualConsumabili ( @dataFrom DATETIME, @dataTo DATETIME ) AS -- restituisce le righe richieste SELECT * FROM RilPro.RapQual WHERE ((DataPrelFus IS NULL) OR (DataPrelFus = 0)) AND -- condizione sul NON aver fatto ancora il prelievo ((DataRapQual > dbo.dateToAsFormat(@dataFrom)) AND (DataRapQual < dbo.dateToAsFormat(@dataTo))) -- cond data RQ AND (ISNULL(UDC,'') <>'') -- non nullo UDC, quindi stampati... RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(276, GETDATE()) GO