set xact_abort on; go begin transaction; go set ANSI_NULLS on; go create VIEW v_selTipoPart AS SELECT val AS value, CASE WHEN val = 'A' THEN 'Anime' WHEN val = 'P' THEN 'Produzione' ELSE val + ' (n.d.)' END AS label FROM (SELECT DISTINCT ClassifArticolo AS val FROM RilPro.AnagParticolari) AS derivedtbl_1 go exec sp_addextendedproperty 'MS_DiagramPane1', '[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] Begin DesignProperties = Begin PaneConfigurations = Begin PaneConfiguration = 0 NumPanes = 4 Configuration = "(H (1[40] 4[20] 2[20] 3) )" End Begin PaneConfiguration = 1 NumPanes = 3 Configuration = "(H (1 [50] 4 [25] 3))" End Begin PaneConfiguration = 2 NumPanes = 3 Configuration = "(H (1 [50] 2 [25] 3))" End Begin PaneConfiguration = 3 NumPanes = 3 Configuration = "(H (4 [30] 2 [40] 3))" End Begin PaneConfiguration = 4 NumPanes = 2 Configuration = "(H (1 [56] 3))" End Begin PaneConfiguration = 5 NumPanes = 2 Configuration = "(H (2 [66] 3))" End Begin PaneConfiguration = 6 NumPanes = 2 Configuration = "(H (4 [50] 3))" End Begin PaneConfiguration = 7 NumPanes = 1 Configuration = "(V (3))" End Begin PaneConfiguration = 8 NumPanes = 3 Configuration = "(H (1[56] 4[18] 2) )" End Begin PaneConfiguration = 9 NumPanes = 2 Configuration = "(H (1 [75] 4))" End Begin PaneConfiguration = 10 NumPanes = 2 Configuration = "(H (1[66] 2) )" End Begin PaneConfiguration = 11 NumPanes = 2 Configuration = "(H (4 [60] 2))" End Begin PaneConfiguration = 12 NumPanes = 1 Configuration = "(H (1) )" End Begin PaneConfiguration = 13 NumPanes = 1 Configuration = "(V (4))" End Begin PaneConfiguration = 14 NumPanes = 1 Configuration = "(V (2))" End ActivePaneConfig = 0 End Begin DiagramPane = Begin Origin = Top = 0 Left = 0 End Begin Tables = Begin Table = "derivedtbl_1" Begin Extent = Top = 6 Left = 38 Bottom = 85 Right = 208 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End Begin ColumnWidths = 9 Width = 284 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 End End Begin CriteriaPane = Begin ColumnWidths = 11 Column = 1440 Alias = 900 Table = 1170 Output = 720 Append = 1400 NewValue = 1170 SortType = 1350 SortOrder = 1410 GroupBy = 1350 Filter = 1350 Or = 1350 Or = 1350 Or = 1350 End End End ', 'SCHEMA', 'dbo', 'VIEW', 'v_selTipoPart'; go exec sp_addextendedproperty 'MS_DiagramPaneCount', 1, 'SCHEMA', 'dbo', 'VIEW', 'v_selTipoPart'; go commit; go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go /*************************************** * STORED stp_elencoListePrelievoFilt * * restituisce l'elenco delle liste di prelievo secondo criteri di filtraggio * * Steamware, S.E.L. * mod: 2010.07.06 * ****************************************/ alter PROCEDURE stp_elencoListePrelievoFilt ( @DataFrom DATETIME, @DataTo DATETIME, @classifArticolo NCHAR(1) = '*' ) AS -- utilizza la vista righe lista prelievo e quindi solo le prelevate ... SELECT velp.* FROM V_elencoListePrelievo velp INNER JOIN RilPro.AnagParticolari ap ON velp.Particolare = ap.Particolare WHERE (velp.DataCreaz BETWEEN @DataFrom AND @DataTo) AND ap.classifArticolo = CASE WHEN ISNULL(@classifArticolo,'*') = '*' THEN ap.classifArticolo ELSE @classifArticolo END ORDER BY velp.DataCreaz DESC RETURN go commit; go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go /*************************************** * STORED stp_LP_updateDestTipo * * aggiorna destinatario e tipo per una lista di prelievo * * Steamware, S.E.L. * mod: 2012.03.06 * ************************************/ alter PROCEDURE stp_LP_updateDestTipo ( @Original_CodLista NVARCHAR(12), @CodTipoLista VARCHAR(10), @CodCliente NVARCHAR(6), @RagSociale NVARCHAR(50), @CodSoggetto VARCHAR(17), @DataMod DATETIME ) AS --SET XACT_ABORT ON; --BEGIN TRY -- BEGIN TRANSACTION; -- aggiorno lista prelievo con nuovo UDC UPDATE dbo.ElencoListePrelievo SET CodTipoLista = @CodTipoLista, Destinatario = @CodCliente, DestinatarioDescrizione = @RagSociale, CodSoggetto = @CodSoggetto, DataModStato = @DataMod WHERE CodLista = @Original_CodLista AND CodStatoLista = 3 -- memorizzo errore -- IF ( SELECT CodStatoLista FROM ElencoListePrelievo WHERE CodLista = @Original_CodLista ) <> 3 -- INSERT TK_AS400.dbo.TabErrori -- SELECT GETDATE(), 'STORED stp_LP_updateDestTipo Modifica Tipo Lista non Corretto ' + @Original_CodLista + ' New Tipo ' + @CodTipoLista + ' New Cliente ' + @CodCliente -- COMMIT TRANSACTION; --END TRY --BEGIN CATCH -- SELECT -- ERROR_NUMBER() AS ErrorNumber, -- ERROR_MESSAGE() AS ErrorMessage; -- -- Test XACT_STATE for 1 or -1. -- -- XACT_STATE = 0 means there is no transaction and -- -- a commit or rollback operation would generate an error. -- -- Test whether the transaction is uncommittable. -- IF (XACT_STATE()) = -1 -- BEGIN -- PRINT -- N'The transaction is in an uncommittable state. ' + -- 'Rolling back transaction.' -- ROLLBACK TRANSACTION; -- END; -- -- Test whether the transaction is active and valid. -- IF (XACT_STATE()) = 1 -- BEGIN -- PRINT -- N'The transaction is committable. ' + -- 'Committing transaction.' -- COMMIT TRANSACTION; -- END; -- DECLARE @ErrorMessage NVARCHAR(4000); -- DECLARE @ErrorSeverity INT; -- DECLARE @ErrorState INT; -- SELECT -- @ErrorMessage = ERROR_MESSAGE(), -- @ErrorSeverity = ERROR_SEVERITY(), -- @ErrorState = ERROR_STATE(); -- -- Use RAISERROR inside the CATCH block to return error -- -- information about the original error that caused -- -- execution to jump to the CATCH block. -- RAISERROR (@ErrorMessage, -- Message text. -- @ErrorSeverity, -- Severity. -- @ErrorState -- State. -- ) ; -- WITH LOG; --END CATCH; -- /* 18-06-2013 messo blocco anche qui dopo aver trovati liste di prelievo gią scaricate con tipo e destinatario modificati UPDATE ElencoListePrelievo SET CodTipoLista = @CodTipoLista, Destinatario = @CodCliente, DestinatarioDescrizione = @RagSociale WHERE CodLista = @Original_CodLista */ RETURN go commit; go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go /*************************************** * STORED stp_ParticolariOverview * * elenco di overview sullo stato dei magazzini (dettaglio a "maglie larghe") * * Steamware, S.E.L. * mod: 2013.06.17 x Cella Terra Bloccata non visibile * procedura vecchia in fondo ****************************************/ alter PROCEDURE stp_magazzinoOverview ( @CodCS VARCHAR(2), @particolare NVARCHAR(15) = '' ) AS -- controllo se particolare vuoto o '*' mostro tutto... IF(@particolare = '' OR @particolare='*' OR @particolare IS NULL) BEGIN SELECT AnagMag.CodCS , AnagMag.CodMag , AnagMag.DescMag , Blocchi.IdxBlocco , Blocchi.CodBlocco , Blocchi.DescBlocco , TipoCella.Capienza * Blocchi.NumX * Blocchi.NumY * Blocchi.NumZ AS TotCelle, TipoCella.Capienza * COUNT( DISTINCT ( CASE WHEN Celle.Attiva = 1 THEN Celle.IdxCella ELSE NULL END ) ) AS CelleAttive, COUNT( PosizioneUdcCorrente.UDC )AS CelleOccupate, -- COUNT( CASE WHEN Celle.Attiva = 1 THEN PosizioneUdcCorrente.UDC ELSE NULL END ) AS CelleAttiveOccupate, -- CelleLibere = CelleAttive - CelleOccupate ( solo se attive ) ( TipoCella.Capienza * COUNT( DISTINCT ( CASE WHEN Celle.Attiva = 1 THEN Celle.IdxCella ELSE NULL END )) ) - ( COUNT( CASE WHEN Celle.Attiva = 1 THEN PosizioneUdcCorrente.UDC ELSE NULL END ) ) AS CelleLibere, ISNULL( MIN( PosizioneUdcCorrente.DataRif ) , GETDATE( ))AS Oldest , ISNULL( MAX( PosizioneUdcCorrente.DataRif ) , GETDATE( ))AS Newest FROM AnagMag INNER JOIN Blocchi ON AnagMag.CodMag = Blocchi.CodMag AND AnagMag.CodCS = Blocchi.CodCS INNER JOIN TipoCella ON AnagMag.CodMag = TipoCella.CodMag AND AnagMag.CodCS = TipoCella.CodCS INNER JOIN Celle ON TipoCella.IdxTipoCella = Celle.IdxTipoCella AND Blocchi.IdxBlocco = Celle.IdxBlocco LEFT OUTER JOIN PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella WHERE AnagMag.CodCS = @CodCS AND ISNULL( AnagMag.Nascosto , 0 ) = 0 -- escludo mag. nascosti GROUP BY AnagMag.CodCS , AnagMag.CodMag , AnagMag.DescMag , Blocchi.IdxBlocco , Blocchi.CodBlocco , Blocchi.DescBlocco , Blocchi.NumX , Blocchi.NumY , Blocchi.NumZ , TipoCella.Capienza ORDER BY AnagMag.CodMag , Blocchi.CodBlocco; END ELSE BEGIN SELECT AnagMag.CodCS , AnagMag.CodMag , AnagMag.DescMag , Blocchi.IdxBlocco , Blocchi.CodBlocco , Blocchi.DescBlocco , TipoCella.Capienza * Blocchi.NumX * Blocchi.NumY * Blocchi.NumZ AS TotCelle, -- CelleLibere e CelleAttive = 0 altrimenti grafico videata non corretto con selezione particolare CONVERT(INT, 0 ) AS CelleAttive, COUNT( CASE WHEN ec.particolare = @particolare THEN PosizioneUdcCorrente.UDC ELSE NULL END ) AS CelleOccupate, CONVERT(INT, 0 ) AS CelleLibere, -- Calcoli normali x CelleLibere e CelleAttive ( verificare grafico videata - calcoli corretti ) --TipoCella.Capienza * COUNT( DISTINCT ( CASE WHEN Celle.Attiva = 1 THEN Celle.IdxCella -- ELSE NULL END ) ) AS CelleAttive, --COUNT( CASE WHEN ec.particolare = @particolare THEN PosizioneUdcCorrente.UDC ELSE NULL END ) AS CelleOccupate, --( TipoCella.Capienza * COUNT( DISTINCT ( CASE WHEN Celle.Attiva = 1 THEN Celle.IdxCella ELSE NULL END )) ) -- - ( COUNT( CASE WHEN Celle.Attiva = 1 THEN PosizioneUdcCorrente.UDC ELSE NULL END ) ) AS CelleLibere, ISNULL( MIN( CASE WHEN ec.particolare = @particolare THEN PosizioneUdcCorrente.DataRif ELSE NULL END ) , GETDATE( ))AS Oldest , ISNULL( MAX( CASE WHEN ec.particolare = @particolare THEN PosizioneUdcCorrente.DataRif ELSE NULL END ) , GETDATE( ))AS Newest FROM AnagMag INNER JOIN Blocchi ON AnagMag.CodMag = Blocchi.CodMag AND AnagMag.CodCS = Blocchi.CodCS INNER JOIN TipoCella ON AnagMag.CodMag = TipoCella.CodMag AND AnagMag.CodCS = TipoCella.CodCS INNER JOIN Celle ON TipoCella.IdxTipoCella = Celle.IdxTipoCella AND Blocchi.IdxBlocco = Celle.IdxBlocco LEFT OUTER JOIN PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella LEFT OUTER JOIN ElencoCartellini ec ON PosizioneUdcCorrente.UDC = ec.UDC WHERE AnagMag.CodCS = @CodCS AND ISNULL( AnagMag.Nascosto , 0 ) = 0 -- escludo mag. nascosti GROUP BY AnagMag.CodCS , AnagMag.CodMag , AnagMag.DescMag , Blocchi.IdxBlocco , Blocchi.CodBlocco , Blocchi.DescBlocco , Blocchi.NumX , Blocchi.NumY , Blocchi.NumZ , TipoCella.Capienza -- filtro solo i magazzini con il particolare richiesto HAVING COUNT( CASE WHEN ec.particolare = @particolare THEN PosizioneUdcCorrente.UDC ELSE NULL END ) > 0 ORDER BY AnagMag.CodMag , Blocchi.CodBlocco; END /* OLD 17/06/2013 Problema della cella terra bloccata non pił visibile e delle celle bloccate piene SELECT AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, Blocchi.DescBlocco, TipoCella.Capienza * Blocchi.NumX * Blocchi.NumY * Blocchi.NumZ AS TotCelle, TipoCella.Capienza * COUNT(DISTINCT Celle.IdxCella) AS CelleAttive, COUNT(PosizioneUdcCorrente.UDC) AS CelleOccupate, TipoCella.Capienza * COUNT(DISTINCT Celle.IdxCella) - COUNT(PosizioneUdcCorrente.UDC) AS CelleLibere, ISNULL(MIN(PosizioneUdcCorrente.DataRif), GETDATE()) AS Oldest, ISNULL(MAX(PosizioneUdcCorrente.DataRif), GETDATE()) AS Newest FROM TipoCella INNER JOIN AnagMag INNER JOIN Blocchi ON AnagMag.CodMag = Blocchi.CodMag AND AnagMag.CodCS = Blocchi.CodCS ON TipoCella.CodMag = AnagMag.CodMag AND TipoCella.CodCS = AnagMag.CodCS LEFT OUTER JOIN Celle ON TipoCella.IdxTipoCella = Celle.IdxTipoCella AND Blocchi.IdxBlocco = Celle.IdxBlocco LEFT OUTER JOIN PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella WHERE (Celle.Attiva = 1) AND (AnagMag.CodCS = @CodCS) AND (ISNULL(AnagMag.Nascosto, 0) = 0) GROUP BY AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, Blocchi.DescBlocco, Blocchi.NumX, Blocchi.NumY, Blocchi.NumZ, TipoCella.Capienza ORDER BY AnagMag.CodMag, Blocchi.CodBlocco END ELSE BEGIN SELECT AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, Blocchi.DescBlocco, TipoCella.Capienza * Blocchi.NumX * Blocchi.NumY * Blocchi.NumZ AS TotCelle, TipoCella.Capienza * COUNT(DISTINCT Celle.IdxCella) AS CelleAttive, COUNT(PosizioneUdcCorrente.UDC) AS CelleOccupate, TipoCella.Capienza * COUNT(DISTINCT Celle.IdxCella) - COUNT(PosizioneUdcCorrente.UDC) AS CelleLibere, ISNULL(MIN(PosizioneUdcCorrente.DataRif), GETDATE()) AS Oldest, ISNULL(MAX(PosizioneUdcCorrente.DataRif), GETDATE()) AS Newest FROM TipoCella INNER JOIN AnagMag INNER JOIN Blocchi ON AnagMag.CodMag = Blocchi.CodMag AND AnagMag.CodCS = Blocchi.CodCS ON TipoCella.CodMag = AnagMag.CodMag AND TipoCella.CodCS = AnagMag.CodCS LEFT OUTER JOIN Celle ON TipoCella.IdxTipoCella = Celle.IdxTipoCella AND Blocchi.IdxBlocco = Celle.IdxBlocco LEFT OUTER JOIN PosizioneUdcCorrente ON Celle.IdxCella = PosizioneUdcCorrente.IdxCella INNER JOIN ElencoCartellini ec ON PosizioneUdcCorrente.UDC = ec.UDC WHERE (Celle.Attiva = 1) AND (AnagMag.CodCS = @CodCS) AND (ISNULL(AnagMag.Nascosto, 0) = 0) AND ec.particolare = @particolare GROUP BY AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, Blocchi.IdxBlocco, Blocchi.CodBlocco, Blocchi.DescBlocco, Blocchi.NumX, Blocchi.NumY, Blocchi.NumZ, TipoCella.Capienza ORDER BY AnagMag.CodMag, Blocchi.CodBlocco END */ RETURN go commit; go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go /*************************************** * STORED stp_paretoPartByMagBlocco * * restituisce elenco particolari in logica pareto (quantitą) per un dato blocco di magazzino, aggregati (no stato) * * Steamware, S.E.L. * mod: 2010.06.03 * ****************************************/ alter PROCEDURE stp_paretoPartByMagBlocco ( @CodCS VARCHAR(2), @CodMag VARCHAR(50), @IdxBlocco INT ) AS SELECT TOP (100) PERCENT dbo.AnagMag.CodCS, dbo.AnagMag.CodMag, dbo.AnagMag.DescMag, dbo.Blocchi.IdxBlocco, dbo.Blocchi.CodBlocco, dbo.ElencoCartellini.Particolare, '' as Esponente, COUNT(dbo.PosizioneUdcCorrente.UDC) AS NumUDC, ISNULL(MIN(dbo.PosizioneUdcCorrente.DataRif), GETDATE()) AS Oldest, ISNULL(MAX(dbo.PosizioneUdcCorrente.DataRif), GETDATE()) AS Newest, SUM(dbo.ElencoCartellini.Qta) AS QtaTotPz, '' AS DescStato FROM dbo.AnagMag INNER JOIN dbo.Blocchi ON dbo.AnagMag.CodMag = dbo.Blocchi.CodMag AND dbo.AnagMag.CodCS = dbo.Blocchi.CodCS INNER JOIN dbo.Celle INNER JOIN dbo.ElencoCartellini INNER JOIN dbo.PosizioneUdcCorrente ON dbo.ElencoCartellini.UDC = dbo.PosizioneUdcCorrente.UDC ON dbo.Celle.IdxCella = dbo.PosizioneUdcCorrente.IdxCella ON dbo.Blocchi.IdxBlocco = dbo.Celle.IdxBlocco INNER JOIN dbo.AnagStatiProdotto ON dbo.ElencoCartellini.CodStato = dbo.AnagStatiProdotto.CodStato WHERE --(dbo.Celle.Attiva = 1) AND -- disattivata Redmine #46 (AnagMag.CodCS = @CodCS) AND AnagMag.CodMag = @CodMag AND Blocchi.IdxBlocco = @IdxBlocco GROUP BY dbo.AnagMag.CodCS, dbo.AnagMag.CodMag, dbo.AnagMag.DescMag, dbo.Blocchi.IdxBlocco, dbo.Blocchi.CodBlocco, dbo.Blocchi.NumX, dbo.Blocchi.NumY, dbo.Blocchi.NumZ, dbo.ElencoCartellini.Particolare ORDER BY QtaTotPz DESC RETURN go /*************************************** * STORED stp_paretoPartByMagBloccoCodMagLog * * restituisce elenco particolari in logica pareto (quantitą) per un dato blocco di magazzino ed un dato magazzino logico, aggregati (no stato) * * Steamware, S.E.L. * mod: 2010.09.15 * ****************************************/ alter PROCEDURE stp_paretoPartByMagBloccoCodMagLog ( @CodCS VARCHAR(2), @CodMag VARCHAR(50), @IdxBlocco INT, @CodMagLog INT ) AS SELECT TOP (100) PERCENT dbo.AnagMag.CodCS, dbo.AnagMag.CodMag, dbo.AnagMag.DescMag, dbo.Blocchi.IdxBlocco, dbo.Blocchi.CodBlocco, dbo.ElencoCartellini.Particolare, '' as Esponente, COUNT(dbo.PosizioneUdcCorrente.UDC) AS NumUDC, ISNULL(MIN(dbo.PosizioneUdcCorrente.DataRif), GETDATE()) AS Oldest, ISNULL(MAX(dbo.PosizioneUdcCorrente.DataRif), GETDATE()) AS Newest, SUM(dbo.ElencoCartellini.Qta) AS QtaTotPz, '' AS DescStato FROM dbo.AnagMag INNER JOIN dbo.Blocchi ON dbo.AnagMag.CodMag = dbo.Blocchi.CodMag AND dbo.AnagMag.CodCS = dbo.Blocchi.CodCS INNER JOIN dbo.Celle INNER JOIN dbo.ElencoCartellini INNER JOIN dbo.PosizioneUdcCorrente ON dbo.ElencoCartellini.UDC = dbo.PosizioneUdcCorrente.UDC ON dbo.Celle.IdxCella = dbo.PosizioneUdcCorrente.IdxCella ON dbo.Blocchi.IdxBlocco = dbo.Celle.IdxBlocco INNER JOIN dbo.AnagStatiProdotto ON dbo.ElencoCartellini.CodStato = dbo.AnagStatiProdotto.CodStato WHERE --(dbo.Celle.Attiva = 1) AND -- disattivata Redmine #46 (AnagMag.CodCS = @CodCS) AND AnagMag.CodMag = @CodMag AND Blocchi.IdxBlocco = @IdxBlocco AND ElencoCartellini.IdxPosizione = @CodMagLog GROUP BY dbo.AnagMag.CodCS, dbo.AnagMag.CodMag, dbo.AnagMag.DescMag, dbo.Blocchi.IdxBlocco, dbo.Blocchi.CodBlocco, dbo.Blocchi.NumX, dbo.Blocchi.NumY, dbo.Blocchi.NumZ, dbo.ElencoCartellini.Particolare ORDER BY QtaTotPz DESC RETURN go commit; go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go /*************************************** * STORED stp_RLP_eliminaUdc * * elimina eventuali righe dato cod UDC (x scarico diretto) * * Steamware, S.E.L. * mod: 2013.05.07 * ****************************************/ create PROCEDURE stp_RLP_eliminaUdc ( @UDC NVARCHAR(50) ) AS DELETE FROM RigheListePrelievo WHERE UDC = @UDC RETURN go commit; go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(562, GETDATE()) GO SELECT TOP 5 * FROM LogUpdateDb ORDER BY Versione DESC GO