-- svuoto tab x procedere... delete from AS400_BatchMovimenti GO set xact_abort on go begin transaction go alter table AS400_BatchMovimenti drop constraint FK_AS400_BatchMovimenti_AS400_MagCont , constraint FK_AS400_BatchMovimenti_AnagTipoEvento go exec sp_rename 'PK_AS400_BatchMovimenti', 'tmp__PK_AS400_BatchMovimenti', 'OBJECT' go exec sp_rename 'AS400_BatchMovimenti', 'tmp__AS400_BatchMovimenti_1', 'OBJECT' go create table AS400_BatchMovimenti( DataIns datetime not null, CodEvento nvarchar(10) not null, Particolare nvarchar(15) not null, UDC nvarchar(50) not null, CodMagAS nvarchar(50) not null, Quantita decimal(10,2) not null, DataBatch datetime, DataVerifica datetime, constraint PK_AS400_BatchMovimenti primary key(DataIns,CodEvento,Particolare,UDC,CodMagAS) ) go alter table AS400_BatchMovimenti add constraint FK_AS400_BatchMovimenti_AnagTipoEvento foreign key(CodEvento) references AnagTipoEvento(CodEvento) on update cascade, constraint FK_AS400_BatchMovimenti_AS400_MagCont foreign key(CodMagAS) references AS400_MagCont(CodMagAS) on update cascade go exec sp_addextendedproperty 'MS_Description', 'dataora inserimento in coda caricamento', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataIns' go exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'CodEvento' go exec sp_addextendedproperty 'MS_Description', 'dataora di caricamento batch verso AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataBatch' go exec sp_addextendedproperty 'MS_Description', N'dataora in cui è stato verificato il caricamento su AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataVerifica' go insert into AS400_BatchMovimenti(DataIns,CodEvento,Particolare,UDC,CodMagAS,Quantita,DataBatch,DataVerifica) select DataIns,CodEvento,Particolare,N'',CodMagAS,Quantita,DataBatch,DataVerifica from tmp__AS400_BatchMovimenti_1 go drop table tmp__AS400_BatchMovimenti_1 go commit 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) -- 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) -- se c'è stata modifica di quantità inizio a rettificare quella IF UPDATE(Qta) 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 -- ============================================= -- Author: Samuele E. Locatelli -- Create date: 2009-09-20 -- Description: trigger x inserimento movimenti -- nella coda di trasferimento batch -- verso AS400 x INSERT UDC -- ============================================= alter TRIGGER trg_InsMovAS ON ElencoCartellini AFTER INSERT AS BEGIN -- setup variabili e verbosità SET NOCOUNT ON; DECLARE @partOk AS BIT -- controllo che CI SIA il particoalre (altrimenti non eseguo) SET @partOk = (SELECT CASE WHEN ISNULL(Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END FROM inserted) IF(@partOk = 1) BEGIN -- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita) ( SELECT GETDATE(), 'UDC_NEW', 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 go -- ============================================= -- Author: Samuele E. Locatelli -- Create date: 2009-09-20 -- Description: trigger x inserimento movimenti -- nella coda di trasferimento batch -- verso AS400 x DELETE UDC -- ============================================= alter TRIGGER trg_DelMovAS ON ElencoCartellini AFTER DELETE AS BEGIN -- setup variabili e verbosità SET NOCOUNT ON; -- inserisco movimenti AS INSERT INTO AS400_BatchMovimenti(DataIns, CodEvento, Particolare, UDC, CodMagAS, Quantita) ( SELECT GETDATE(), 'UDC_DEL', 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) AND ((CASE WHEN ISNULL(Particolare,'n.d.') = 'n.d.' THEN 0 ELSE 1 END) = 1) ) END go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_batch_RapQual_S01 * * Esegue lo step 1 (caricamento dati RAW da AS400) per la tab dei rapporti di qualità * * Steamware, S.E.L. * mod: 2010.09.23 * ****************************************/ alter PROCEDURE BatchQueue.stp_batch_RapQual_S01 ( @minData DATETIME ) AS -- BOZZA DA COMPLETARE A CURA MAZZUCCONI!!! DECLARE @SQL AS NVARCHAR(1000) DECLARE @dataAs400 AS VARCHAR(8) SET @dataAs400 = (SELECT dbo.dateToAsFormat(@minData)) -- svuoto tab raw attuale /* DELETE FROM RawData.XOGIX00F */ -- INSERISCO DA AS400 /* INSERT INTO RawData.XOGIX00F ( SET @SQL = N'SELECT XRPQLN ,XRPQLD ,XNRETI ,XCDFOR ,XCDTER ,XCDPAR ,XDTPRO ,XTRPRO ,XQTPRO ,XDESMT ,XMATSC ,XBENQL FROM OPENQUERY( P65220DC, ''SELECT * FROM MAZZT_DTV3.XOGIX00F WHERE XRPQLD >= ' SET @SQL = @SQL + @dataAs400 + ''' )' EXEC sp_executesql @SQL ) */ RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_rappQualSuntoGetByDataRange * * Ottiene l'elenco dei record di rapp qualità di AS dato il range delle date * * Steamware, S.E.L. * mod: 2010.09.29 * ****************************************/ create PROCEDURE stp_rappQualSuntoGetByDataRange ( @dataFrom DATETIME, @dataTo DATETIME ) AS -- restituisce le righe richieste SELECT * FROM v_RapQualSunto WHERE (DataRapQual > dbo.dateToAsFormat(@dataFrom)) AND (DataRapQual < dbo.dateToAsFormat(@dataTo)) ORDER BY nRapQual RETURN go /*************************************** * STORED stp_rappQualSuntoGetByNumRap * * Ottiene il record di rapp qualità di AS dato il numero del rapporto di qualità * * Steamware, S.E.L. * mod: 2010.09.29 * ****************************************/ create PROCEDURE stp_rappQualSuntoGetByNumRap ( @nRapQual NVARCHAR(20) ) AS -- restituisce le righe richieste SELECT * FROM v_RapQualSunto WHERE (nRapQual = @nRapQual) RETURN go commit go 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 ) 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) -- 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 = @IdxCellaFrom ) SET @numUdc = (SELECT COUNT(*) FROM PosizioneUdcCorrente WHERE IdxCella = @IdxCellaFrom) -- se capienza raggiunta aggiorno... IF(@numUdc -1 < @capienza) BEGIN EXEC stp_celle_updPiena @IdxCellaFrom, 0 END -- cancello posizione occupata DELETE FROM PosizioneUdcCorrente WHERE UDC = @UDC -- 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 COMMIT TRAN RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(270, GETDATE()) GO