-- struttura alter table Celle add constraint FK_Celle_TipoCella foreign key(IdxTipoCella) references TipoCella(IdxTipoCella) on update cascade go -- set xact_abort on go begin transaction go set ANSI_NULLS on go alter VIEW V_statoCelleCapienzaAssegnati AS SELECT dbo.Celle.IdxCella, dbo.Celle.CodCella, dbo.TipoCella.Capienza, ISNULL(COUNT(dbo.PosizioneUdcCorrente.UDC), 0) AS UdcAssegnati, dbo.Celle.Piena FROM dbo.TipoCella INNER JOIN dbo.Celle ON dbo.TipoCella.IdxTipoCella = dbo.Celle.IdxTipoCella LEFT OUTER JOIN dbo.PosizioneUdcCorrente ON dbo.Celle.IdxCella = dbo.PosizioneUdcCorrente.IdxCella GROUP BY dbo.TipoCella.Capienza, dbo.Celle.IdxCella, dbo.Celle.Piena, dbo.Celle.CodCella go commit go -- set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_celleCreaMancantiBlocco * * crea il numero di celle richeiste e le assegna al blocco con valori default * * Steamware, S.E.L. * mod: 2010.05.18 * ****************************************/ alter PROCEDURE stp_celleCreaMancantiBlocco ( @CodCS VARCHAR(2), @CodMag VARCHAR(50), @IdxBlocco INT, @IdxTipoCellaNew INT ) AS --------------------------------------------------------------------- -- setup iniziale valori XYZ del blocco --------------------------------------------------------------------- DECLARE @CodBlocco VARCHAR(3); SET @CodBlocco = (SELECT CodBlocco FROM Blocchi WHERE IdxBlocco = @IdxBlocco) DECLARE @NumX INT; DECLARE @NumY INT; DECLARE @NumZ INT; SET @NumX = (SELECT NumX FROM Blocchi WHERE IdxBlocco = @IdxBlocco) ; SET @NumY = (SELECT NumY FROM Blocchi WHERE IdxBlocco = @IdxBlocco) ; SET @NumZ = (SELECT NumZ FROM Blocchi WHERE IdxBlocco = @IdxBlocco) ; DECLARE @Index INT ; DECLARE @IdxTipoCella INT; --------------------------------------------------------------------- -- creazione temp table x numeri delle dimensioni XYZ del blocco --------------------------------------------------------------------- DECLARE @DimTable TABLE ( dimensione VARCHAR(1), valore INT ) -- inserisco X SET @Index = 1 ; WHILE @Index <= @NumX BEGIN INSERT @DimTable(dimensione, valore) VALUES ('X', @Index) SET @Index = @Index + 1 ; END -- inserisco Y SET @Index = 1 ; WHILE @Index <= @NumY BEGIN INSERT @DimTable(dimensione, valore) VALUES ('Y', @Index) SET @Index = @Index + 1 ; END -- inserisco Z SET @Index = 1 ; WHILE @Index <= @NumZ BEGIN INSERT @DimTable(dimensione, valore) VALUES ('Z', @Index) SET @Index = @Index + 1 ; END --------------------------------------------------------------------- -- creazione temp table x schema COMPLETO posizioni blocco --------------------------------------------------------------------- DECLARE @SchemaBlocco TABLE ( X INT, Y INT, Z INT ) INSERT INTO @SchemaBlocco SELECT X_val.valore, Y_val.valore, Z_val.valore FROM (SELECT * FROM @DimTable WHERE dimensione='X') AS X_val, (SELECT * FROM @DimTable WHERE dimensione='Y') AS Y_val, (SELECT * FROM @DimTable WHERE dimensione='Z') AS Z_val ---------------------------------------------------------------------------------- -- cerco primo tipo di celle per il mag indicato SE non ce ne è una specificata ---------------------------------------------------------------------------------- IF @IdxTipoCellaNew > 0 BEGIN SET @IdxTipoCella = @IdxTipoCellaNew END ELSE BEGIN SET @IdxTipoCella = (SELECT TOP (1) ISNULL(IdxTipoCella, 0) AS IdxTipoCella FROM TipoCella WHERE (CodCS = @CodCS) AND (CodMag = @CodMag)) END --------------------------------------------------------------------- -- inserisco le celle nelle posizioni LIBERE del blocco --------------------------------------------------------------------- INSERT INTO Celle(CodCS, CodCella, IdxTipoCella, Descrizione, Attiva, Piena, IdxBlocco,X,Y,Z) SELECT @CodCS, @CodBlocco + dbo.f_padLeft(CAST(sb.X AS VARCHAR),2,'0') + dbo.f_padLeft(CAST(sb.Y AS VARCHAR),2,'0') + dbo.f_padLeft(CAST(sb.Z AS VARCHAR),2,'0'), @IdxTipoCella, '-', 1, 0, @IdxBlocco, sb.X, sb.Y, sb.Z FROM @SchemaBlocco sb LEFT OUTER JOIN (SELECT * FROM Celle WHERE IdxBlocco = @IdxBlocco) c ON sb.X = c.X AND sb.Y = c.Y AND sb.Z = c.Z WHERE c.IdxCella IS NULL ORDER BY sb.X,sb.Y,sb.Z ASC RETURN go commit go -- set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_ricercaFullTerminalino * * effettua una ricerca full text da terminalino x codice UDC (su cartellini), x nome particolare (AnagParticolari) o posizione (Celle) * * Steamware, S.E.L. * mod: 2010.09.10 * ****************************************/ create PROCEDURE stp_ricercaFullTerminalino ( @txtSearch VARCHAR(50) ) AS SELECT 'UDC' AS Tipo, UDC AS label, UDC AS valore FROM dbo.ElencoCartellini WHERE UDC LIKE '%'+@txtSearch+'%' UNION SELECT 'Particolare' AS Tipo, Particolare AS label, Particolare AS valore FROM RilPro.AnagParticolari WHERE Particolare LIKE '%'+@txtSearch+'%' UNION SELECT 'Cella' AS Tipo, CodCella AS label, CAST(IdxCella AS NVARCHAR)AS valore FROM dbo.Celle WHERE CodCella LIKE '%'+@txtSearch+'%' RETURN go commit go -- DATI