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 set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_scaricaUdc * * elimina dalle posizioni correnti un UDC, salvandone la posizione precedente nella tab storica (per scaricamento / spedizione) * * Steamware, S.E.L. * mod: 2010.09.28 * ****************************************/ alter PROCEDURE stp_scaricaUdc ( @UDC VARCHAR(50), @IdxPosizione INT, @CodEvento VARCHAR(10) ) AS BEGIN TRAN -- libero la posizione attuale dell'UDC (se c'è...) DELETE FROM PosizioneUdcCorrente WHERE UDC = @UDC -- aggiorno l'UDC come posizione finale... UPDATE ElencoCartellini SET IdxPosizione = @IdxPosizione, ModDate = GETDATE(), CodEvento = @CodEvento WHERE UDC = @UDC COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_EDM_spostaDataMtx * * Sposta un datamatrix in un nuovo gitterbox * * Steamware, S.E.L. * mod: 2011.05.05 * ****************************************/ alter PROCEDURE stp_EDM_spostaDataMtx ( @CodDataMatrix NUMERIC(23), @CodGitterbox NVARCHAR(10), @CodSoggetto VARCHAR(17) ) AS DECLARE @CodEvento VARCHAR(10) SET @CodEvento = 'SpostaDMtx' -- salvo codice gitterbox di partenza DECLARE @CodGitterboxFrom AS NVARCHAR(10) SET @CodGitterboxFrom = ( SELECT CodGitterbox FROM ElencoDataMatrix WHERE CodDataMatrix = @CodDataMatrix ) UPDATE ElencoDataMatrix SET CodGitterbox = @CodGitterbox WHERE CodDataMatrix = @CodDataMatrix -- aggiorno valori QTA gitterbox di partenza... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom ) ,ModDate=GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @CodGitterboxFrom -- aggiorno valoti QTA gitterbox destinazione e modificatore... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) ,ModDate=GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @CodGitterbox -- aggiorno righe liste di prelievo... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterboxFrom ) WHERE UDC = @CodGitterboxFrom -- aggiorno valoti QTA gitterbox destinazione... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox -- select finale! SELECT * FROM ElencoDataMatrix WHERE CodDataMatrix = @CodDataMatrix RETURN go /***************************************** * STORED stp_EDM_svuotaGitterbox * * Elimina il codice gitterbox dai datamatrix associati (svuotandolo...) * * Steamware, S.E.L. * mod: 2011.05.06 * ****************************************/ alter PROCEDURE stp_EDM_svuotaGitterbox ( @CodGitterbox NVARCHAR(10), @CodSoggetto VARCHAR(17) ) AS DECLARE @CodEvento VARCHAR(10) SET @CodEvento = 'SvuotaGbox' UPDATE ElencoDataMatrix SET CodGitterbox = 'EmptyGBox' WHERE CodGitterbox = @CodGitterbox -- aggiorno valoti QTA gitterbox originale... UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) ,ModDate=GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @CodGitterbox -- aggiorno valoti QTA gitterbox 'EmptyGBox UPDATE ElencoCartellini SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = 'EmptyGBox' ) ,ModDate = GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = 'EmptyGBox' -- aggiorno righe liste di prelievo... UPDATE RigheListePrelievo SET Qta = ( SELECT COUNT(*) FROM ElencoDataMatrix WHERE CodGitterbox = @CodGitterbox ) WHERE UDC = @CodGitterbox RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_processaSpedizTerz * * effettua la spedizione verso i terzisti, se deliberati è ok così, se non deliberati restano in posizione 305 da deliberare * * Steamware, S.E.L. * mod: 2012.05.30 * ****************************************/ alter PROCEDURE stp_processaSpedizTerz ( @CodSoggetto NVARCHAR(17) ) AS -- UDC x cursore DECLARE @UDC NVARCHAR(50) -- UDC SQL -- evento da usare DECLARE @CodEvento AS NVARCHAR(10) SET @CodEvento = 'SpeWipTerz' -- Dichiaro e carico il cursore DECLARE Udc4Ter CURSOR LOCAL FOR SELECT UDC FROM ElencoCartellini WHERE IdxPosizione IN (SELECT IdxPosizione FROM TabTranPosizEventi WHERE CodEvento = @CodEvento) OPEN Udc4Ter FETCH NEXT FROM Udc4Ter INTO @UDC WHILE @@FETCH_STATUS = 0 BEGIN -- processo gli UDC... UPDATE ElencoCartellini SET IdxPosizione = ttpe.IdxPosizioneTo ,ModDate=GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto FROM ElencoCartellini ec INNER JOIN TabTranPosizEventi ttpe ON ec.IdxPosizione=ttpe.IdxPosizione WHERE ec.UDC = @UDC AND ttpe.CodEvento = @CodEvento FETCH NEXT FROM Udc4Ter INTO @UDC END CLOSE Udc4Ter DEALLOCATE Udc4Ter RETURN go /*************************************** * STORED stp_riattivaUdc * * riattiva un dato UDC (da mag consumato negativo a corrispettivo positivo) --> se era positivo NON FA NULLA!!! (perchè uso ABS e controllo sia < 0) * * Steamware, S.E.L. * mod: 2012.05.30 * ****************************************/ alter PROCEDURE stp_riattivaUdc ( @UDC VARCHAR(50), @CodSoggetto NVARCHAR(17) ) AS DECLARE @CodEvento VARCHAR(10) DECLARE @CodTipoDichiaraz VARCHAR(1) DECLARE @IdxCella INT DECLARE @CodCs NVARCHAR(2) SET @CodEvento = 'UDC_RIA' SET @CodTipoDichiaraz = 'U' BEGIN TRAN -- faccio update posizione UPDATE ElencoCartellini SET IdxPosizione = ABS(IdxPosizione) ,ModDate=GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @UDC AND IdxPosizione IN (SELECT IdxPosizione FROM AnagPosizioni WHERE (IsRiattivaEnabled = 1) ) -- lo elimino da eventuali precedenti liste di prelievo sennò poi non potrei + prelevarlo DELETE FROM RigheListePrelievo WHERE UDC = @UDC -- imposto posizione CELLA corrente x l'udc nella prima libera SET @IdxCella = (SELECT c.IdxCella FROM Celle c inner join Blocchi b ON c.IdxBlocco=b.IdxBlocco INNER JOIN ElencoCartellini e ON b.CodMag = CAST(e.IdxPosizione AS NVARCHAR(50)) WHERE e.UDC = @UDC) SET @CodCs = (SELECT CodCs FROM ElencoCartellini WHERE UDC = @UDC) INSERT INTO PosizioneUdcCorrente VALUES(@Udc, @IdxCella, @CodCs, GETDATE()) COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_sbloccaUdc * * sblocca un dato UDC per modifica * * Steamware, S.E.L. * mod: 2012.05.30 * ****************************************/ alter PROCEDURE stp_sbloccaUdc ( @UDC VARCHAR(50), @CodSoggetto NVARCHAR(17) ) AS DECLARE @CodEvento VARCHAR(10) DECLARE @CodTipoDichiaraz VARCHAR(1) SET @CodEvento = 'UDC_SBL' SET @CodTipoDichiaraz = 'U' BEGIN TRAN -- faccio update UPDATE ElencoCartellini SET ModDate = GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @UDC COMMIT TRAN RETURN go /*************************************** * STORED stp_scaricaUdc * * elimina dalle posizioni correnti un UDC, salvandone la posizione precedente nella tab storica (per scaricamento / spedizione) * * Steamware, S.E.L. * mod: 2012.05.30 * ****************************************/ alter PROCEDURE stp_scaricaUdc ( @UDC VARCHAR(50), @IdxPosizione INT, @CodEvento VARCHAR(10), @CodSoggetto NVARCHAR(17) ) AS BEGIN TRAN -- libero la posizione attuale dell'UDC (se c'è...) DELETE FROM PosizioneUdcCorrente WHERE UDC = @UDC -- aggiorno l'UDC come posizione finale... UPDATE ElencoCartellini SET IdxPosizione = @IdxPosizione ,ModDate = GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @UDC COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_UDC_delibera * * fa la delibera dell'UDC andando a processare la state machien e quindi eventualmente cambiando la sua posizione * * Steamware, S.E.L. * mod: 2012.05.30 * ************************************/ alter PROCEDURE stp_UDC_delibera ( @CodTipoDelibera NVARCHAR(50), @UDC NVARCHAR(50), @CodEvento VARCHAR(10), @CodSoggetto NVARCHAR(17), @CodCS VARCHAR(2) ) AS BEGIN TRAN DECLARE @IdxPosizioneTo AS INT DECLARE @IdxPosizioneFrom AS INT DECLARE @IdxPosizionePre AS NVARCHAR(50) DECLARE @IdxCellaPre AS INT DECLARE @IdxCellaTo AS INT -- ricavo cella ATTUALE SET @IdxCellaPre = (SELECT IdxCella FROM PosizioneUdcCorrente WHERE UDC = @UDC) -- ricavo posizione ATTUALE SET @IdxPosizionePre = (SELECT TOP 1 b.CodMag FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco WHERE c.IdxCella = @IdxCellaPre) -- registro delibera INSERT INTO DELIBERE VALUES (@CodTipoDelibera, @UDC, GETDATE(), @CodSoggetto) -- ricavo nuova posizione SET @IdxPosizioneTo = (SELECT tt.IdxPosizioneTo FROM TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento WHERE (atd.CodTipoDelibera = @CodTipoDelibera)) -- ricavo posizione TEORICA VECCHIA SET @IdxPosizioneFrom = (SELECT tt.IdxPosizione FROM TabTranPosizEventi tt INNER JOIN AnagTipoDelibere atd ON tt.CodEvento = atd.CodEvento WHERE (atd.CodTipoDelibera = @CodTipoDelibera)) -- calcolo la prima cella della nuova posizione... SET @IdxCellaTo = ( SELECT TOP 1 IdxCella FROM Celle WHERE IdxBlocco = ( SELECT IdxBlocco FROM Blocchi WHERE CodMag=CAST(@IdxPosizioneTo AS NVARCHAR(50))) ) -- faccio update posizione UPDATE ElencoCartellini SET IdxPosizione = @IdxPosizioneTo ,ModDate = GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @UDC -- controllo posizioni actual e from teorica: SE e SOLO SE corrispondono faccio spostamento... IF(CAST(@IdxPosizioneFrom AS NVARCHAR(50)) = @IdxPosizionePre) BEGIN -- ora cambio anche la posizione corrente dell'UDC (e tramite trigger storicizza...) EXEC stp_spostaUdc @CodCS, @UDC, @IdxCellaTo, 0 END COMMIT TRAN RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_UDC_updateIdxPosizione * * aggiorna un cartellino x la sua posizione logica * * Steamware, S.E.L. * mod: 2012.05.30 * ****************************************/ alter PROCEDURE stp_UDC_updateIdxPosizione ( @UDC VARCHAR(50), @IdxPosizione INT, @CodSoggetto NVARCHAR(17) ) AS ------------------------------------------------------------------------------------------------------ -- Ciclo principale x edit record ------------------------------------------------------------------------------------------------------ BEGIN TRAN -- modifico il record UPDATE ElencoCartellini SET IdxPosizione = @IdxPosizione ,ModDate = GETDATE() ,CodEvento='UDC_MOV' ,CodSoggetto = @CodSoggetto WHERE UDC = @UDC COMMIT TRAN ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- restituisco la tab dati con l'udc appena inserito ------------------------------------------------------------------------------------------------------ SELECT * FROM ElencoCartellini WHERE UDC = @UDC ------------------------------------------------------------------------------------------------------ RETURN go commit go 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), @CodSoggetto NVARCHAR(17) ) AS UPDATE ElencoCartellini SET note = @note ,ModDate = GETDATE() ,CodEvento = 'UDC_RDQ' ,CodSoggetto = @CodSoggetto 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 /*************************************** * STORED stp_UDC_updateQty * * update qta UDC * * Steamware, S.E.L. * mod: 2012.05.30 * ****************************************/ alter PROCEDURE stp_UDC_updateQty ( @UDC VARCHAR(50), @CodSoggetto VARCHAR(17), @CodTipoDichiaraz CHAR(1), @CodEvento VARCHAR(10), @Qta DECIMAL(10,2) ) AS ------------------------------------------------------------------------------------------------------ -- Ciclo principale x edit record ------------------------------------------------------------------------------------------------------ BEGIN TRAN -- modifico il record UPDATE ElencoCartellini SET Qta = @Qta ,ModDate = GETDATE() ,CodEvento = @CodEvento ,CodSoggetto = @CodSoggetto WHERE UDC = @UDC COMMIT TRAN ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ -- restituisco la tab dati con l'udc appena inserito ------------------------------------------------------------------------------------------------------ SELECT * FROM ElencoCartellini WHERE UDC = @UDC ------------------------------------------------------------------------------------------------------ RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_ATD_getByKey * * recupera Tipo Delibera da chiave * * Steamware, S.E.L. * mod: 2012.05.30 * ************************************/ create PROCEDURE stp_ATD_getByKey ( @CodTipoDelibera NVARCHAR(50) ) AS SELECT * FROM AnagTipoDelibere WHERE CodTipoDelibera = @CodTipoDelibera RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(452, GETDATE()) GO