set xact_abort on go begin transaction go create index i_dataFus on ElencoCartellini(DataFus) go create index i_IdxPosizione on ElencoCartellini(IdxPosizione) go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_ArtiInProd_ByImpData * * ottiene l'elenco dei particolari in lavorazione in una certa data/ora (già trasformato data+turno in dataora) su un impianto * --> con dettaglio su articoli (da anagrafica) * * Steamware, S.E.L. * mod: 2010.04.29 * ****************************************/ alter PROCEDURE stp_ArtiInProd_ByImpData ( @CodImpianto VARCHAR(50), @DataRif DATETIME ) AS -- iniziamo definendo le varie viste accessorie WITH cteUltStampo AS (SELECT CodStampo, InizioValidita, ProgFigure, FineValidita, NumCommessa, NumFigure, CodCliente, CodArticolo, Particolare FROM RilPro.StampoArticolo AS A WHERE (@DataRif >= InizioValidita AND @DataRif <= ISNULL(FineValidita, DATEADD(year, 2, GETDATE()))) ), cteEspAttivi AS (SELECT s.CodStampo, s.Esponente, s.EspAttivo, s.DataInserim, s.DataValidita FROM RilPro.StampoEsponente AS s INNER JOIN (SELECT CodStampo, MAX(DataValidita) AS DataValidita FROM RilPro.StampoEsponente WHERE (DataValidita <= @DataRif) AND (EspAttivo = 'S') GROUP BY CodStampo) AS s2 ON s.CodStampo = s2.CodStampo AND s.DataValidita = s2.DataValidita), cteLineeAttive AS (SELECT CodImpianto, CodStampo, NumStampate, CONVERT(DATETIME, DataInizio) AS DataInizio, DataFine, TurnoInizio, TurnoFine FROM RilPro.LineaStampi WHERE (@DataRif BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(year, 2, GETDATE()))) AND CodImpianto = @CodImpianto) -- faccio la select principale SELECT l.CodImpianto, l.CodStampo, l.NumStampate, l.DataInizio, l.TurnoInizio, g.InizioValidita, g.FineValidita, g.NumFigure, dbo.f_padLeft(CAST(g.CodCliente AS varchar(50)), 5, '0') AS CodCliente, ISNULL(cl.RagSociale,'-') AS RagSociale, CAST(g.CodArticolo AS varchar(50)) AS CodArticolo, g.Particolare, pa.DescParticolare, pa.DisegnoGrezzo, pa.CodFamiglia, fa.DescFamiglia, fi.Figura, es.Esponente FROM cteLineeAttive AS l INNER JOIN cteUltStampo AS g ON l.CodStampo = g.CodStampo LEFT OUTER JOIN RilPro.StampoFigure AS fi ON l.CodStampo = fi.CodStampo LEFT OUTER JOIN cteEspAttivi AS es ON g.CodStampo = es.CodStampo LEFT OUTER JOIN RilPro.AnagParticolari AS pa ON g.Particolare = pa.Particolare LEFT OUTER JOIN RilPro.AnagFamiglie AS fa ON pa.CodFamiglia = fa.CodFamiglia LEFT OUTER JOIN RilPro.AnagClienti AS cl ON g.CodCliente = cl.CodCliente ORDER BY l.CodImpianto 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: 2010.09.13 * ************************************/ alter PROCEDURE stp_UDC_delibera ( @CodTipoDelibera NVARCHAR(50), @UDC NVARCHAR(50), @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 WHERE UDC = @UDC -- controllo posizioni act 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 END COMMIT TRAN RETURN go /*************************************** * STORED stp_UDC_getByFlussoDate * * elenco cartellini creati su una data bilancia in un periodo ti tempo indicato * * Steamware, S.E.L. * mod: 2010.10.13 * ****************************************/ create PROCEDURE stp_UDC_getByFlussoDate ( @CodCS NVARCHAR(2), @Flusso NVARCHAR(2), @DataFrom DATETIME, @DataTo DATETIME ) AS SELECT * FROM ElencoCartellini WHERE (UDC LIKE 'U' + @CodCS + @Flusso + '%') AND (DataFus >= @DataFrom) AND (DataFus <= @DataTo) ORDER BY UDC DESC RETURN go /*************************************** * STORED stp_UDC_getLast_ByDataTurnoLineaParticolare * * elenco cartellini ULTIMI creati su una data bilancia dati data, turno, linea e particolare * * Steamware, S.E.L. * mod: 2010.10.13 * ****************************************/ create PROCEDURE stp_UDC_getLast_ByDataTurnoLineaParticolare ( @CodCS VARCHAR(2), @Particolare VARCHAR(15), @CodImpianto AS VARCHAR(50), @DataFus DATETIME, @TurnoFus INT ) AS -- carico l'elenco dei dati "attivi" x il filtraggio richiesto WITH cte_contAttivi AS( SELECT CodCS, Particolare, Esponente, CodImpianto,CodStampo, Figura, DataFus, TurnoFus, MAX(NumCont) AS NumCont FROM ElencoCartellini GROUP BY CodCS, Particolare, Esponente, CodImpianto, CodStampo, Figura, DataFus, TurnoFus HAVING (CodImpianto = @CodImpianto) AND (DataFus = @DataFus) AND (TurnoFus= @TurnoFus) AND (Particolare= @Particolare) AND CodCS = @CodCS ) -- traduco in tab estesa UDC SELECT ec.* FROM ElencoCartellini ec INNER JOIN cte_contAttivi ca ON ec.Particolare = ca.Particolare AND ec.Esponente=ca.Esponente AND ec.CodImpianto=ca.CodImpianto AND ec.CodStampo=ca.CodStampo AND ec.Figura=ca.Figura AND ec.DataFus=ca.DataFus AND ec.TurnoFus=ca.TurnoFus AND ec.NumCont=ca.NumCont AND ec.CodCS=ca.CodCS RETURN go commit go set xact_abort on go begin transaction go INSERT INTO dbo.TabTranPosizEventi VALUES (N'MagPreFus', 84, 84) go commit transaction go drop table AS400_BatchMovimenti go set xact_abort on go begin transaction go create table AS400_BatchMovimenti( IdxBatch int not null identity constraint PK_AS400_BatchMovimenti primary key, 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 ) go alter table AS400_BatchMovimenti add constraint FK_AS400_BatchMovimenti_AS400_MagCont foreign key(CodMagAS) references AS400_MagCont(CodMagAS) on update cascade, constraint FK_AS400_BatchMovimenti_AnagTipoEvento foreign key(CodEvento) references AnagTipoEvento(CodEvento) 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 commit go drop table RigheListePrelievo_AS go create table RigheListePrelievo_AS( IdxRiga int not null identity constraint PK_RigheListePrelievo_AS primary key, CodLista nvarchar(12) not null, UDC nvarchar(50) not null, Qta decimal(10,2) not null, Proposto bit, Prelevato bit ) go drop table ElencoListePrelievo_AS go set xact_abort on go begin transaction go create table ElencoListePrelievo_AS( CodLista nvarchar(12) not null constraint PK_ElencoListePrelievo_AS primary key, CodTipoLista nvarchar(10) not null, CodCS nchar(2) not null, DataCreaz datetime not null, CodCliente nvarchar(6), RagSociale nvarchar(35), CodSoggetto nchar(17) not null, Particolare nvarchar(15) not null, DescParticolare nvarchar(30), DisegnoGrezzo nvarchar(30), Esponente nvarchar(6), Figura nvarchar(4), CodImballo nvarchar(15), QtaTot decimal(10,2) not null, CodStatoLista int not null constraint DF_ElencoListePrelievo_AS_CodStatoLista default (1), Destinatario nvarchar(50), DataBatch datetime, DataVerifica datetime ) go exec sp_addextendedproperty 'MS_Description', 'dataora di caricamento batch verso AS', 'SCHEMA', 'dbo', 'TABLE', 'ElencoListePrelievo_AS', 'COLUMN', 'DataBatch' go exec sp_addextendedproperty 'MS_Description', N'dataora in cui è stato verificato il caricamento su AS', 'SCHEMA', 'dbo', 'TABLE', 'ElencoListePrelievo_AS', 'COLUMN', 'DataVerifica' go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go create VIEW v_datiPackingList AS SELECT dbo.RigheListePrelievo_AS.IdxRiga, dbo.ElencoCartellini.UDC, dbo.ElencoListePrelievo_AS.Particolare, dbo.ElencoCartellini.CodImballo, CAST(RIGHT(dbo.RigheListePrelievo_AS.UDC, 6) AS INT) AS matrUdc, CASE WHEN (dbo.ElencoListePrelievo_AS.CodTipoLista = '03-TerWip') THEN 'FO' ELSE 'CL' END AS tipo, dbo.ElencoListePrelievo_AS.Destinatario, dbo.ElencoCartellini.Qta, dbo.ElencoCartellini.PesoTot - dbo.ElencoCartellini.Tara AS PesoNetto, dbo.ElencoCartellini.PesoTot, 'B' AS Stato, GETDATE() AS data, dbo.ElencoListePrelievo_AS.DataBatch FROM dbo.ElencoListePrelievo_AS INNER JOIN dbo.RigheListePrelievo_AS ON dbo.ElencoListePrelievo_AS.CodLista = dbo.RigheListePrelievo_AS.CodLista INNER JOIN dbo.ElencoCartellini ON dbo.RigheListePrelievo_AS.UDC = dbo.ElencoCartellini.UDC WHERE (dbo.ElencoListePrelievo_AS.DataBatch IS NULL) 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 = "ElencoCartellini" Begin Extent = Top = 14 Left = 658 Bottom = 376 Right = 828 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "ElencoListePrelievo_AS" Begin Extent = Top = 6 Left = 38 Bottom = 367 Right = 208 End DisplayFlags = 280 TopColumn = 0 End Begin Table = "RigheListePrelievo_AS" Begin Extent = Top = 5 Left = 353 Bottom = 200 Right = 523 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End Begin ColumnWidths = 14 Width = 284 Width = 1500 Width = 1500 Width = 1500 Width = 1500 Width = 1500 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_datiPackingList' go exec sp_addextendedproperty 'MS_DiagramPaneCount', 1, 'SCHEMA', 'dbo', 'VIEW', 'v_datiPackingList' go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_consumaMP * * Salva il movimento di consumo dell'UDC di MP indicato * * Steamware, S.E.L. * mod: 2010.10.12 * ****************************************/ alter PROCEDURE BatchQueue.stp_consumaMP ( @XRPQLN INT, --è il num rap qualità @XNRETI NVARCHAR(10), -- è il numUdc prog @XDTPRO INT, -- data 8 cifre aaaammgg @XTRPRO NVARCHAR(5), -- turno @XDESMT NVARCHAR(3), -- destinatario int/terzista @XCDTER NVARCHAR(6) -- cod terzista ) AS -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!! DECLARE @SQL AS NVARCHAR(1000) -- Faccio chiamata su AS400 SET @SQL = N' OPENQUERY( P65220DC, ''UPDATE MAZZT_DTV3.XOGIX00F' SET @SQL = @SQL + 'SET XDTPRO = ' + CAST(@XDTPRO AS NVARCHAR(8)) + ', XTRPRO = ' + @XTRPRO SET @SQL = @SQL + ', XDESMT = ''' + @XDESMT +''', XMATSC=''S'' , XCDTER = ''' + @XCDTER + ''' ' SET @SQL = @SQL + 'WHERE XRPQLN =' + CAST(@XRPQLN AS NVARCHAR(20)) + ' AND XNRETI = ' + @XNRETI + ''' )' EXEC dbo.sp_executesql @SQL RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*stp_processaCodaMovimMag * STORED stp_processaCodaConsumoMP * * Processa la coda dei movimenti di magazzino e chiama procedura x salvataggio dato su AS400 * * Steamware, S.E.L. * mod: 2010.10.15 * ****************************************/ create PROCEDURE BatchQueue.stp_processaCodaMovimMag AS -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!! -- campi x cursore e valorizzazione riga a riga DECLARE @IdxRiga INT DECLARE @CodStab CHAR(2) DECLARE @UDC NVARCHAR(15) DECLARE @Particolare NVARCHAR(15) DECLARE @CodImb NVARCHAR(15) DECLARE @Matr INT DECLARE @Tipo NVARCHAR(2) DECLARE @Dest NVARCHAR(10) DECLARE @Qta INT DECLARE @PesoNet NUMERIC(7,3) DECLARE @PesoLor NUMERIC(7,3) DECLARE @Stato CHAR(1) DECLARE @Data NVARCHAR(8) -- variabile x composizioen query DECLARE @SqlCode NVARCHAR(1000) -- faccio una query con un cursore x processare tutte le righe da inviare ad AS400.. DECLARE RigaPackList CURSOR FOR SELECT IdxRiga FROM v_datiPackingList -- setto il codice stabilimento da inviare ad AS... VERIFICARE!!! SET @CodStab = '05' -- inizio cursore! OPEN RigaPackList FETCH NEXT FROM RigaPackList INTO @IdxRiga WHILE @@FETCH_STATUS = 0 BEGIN -- controllo ci sia la riga IF (SELECT COUNT(IdxRiga) FROM v_datiPackingList WHERE IdxRiga = @IdxRiga) > 0 BEGIN -- carico valori che mi servono SELECT @Particolare=pl.Particolare, @UDC=UDC, @CodImb=pl.CodImballo, @Matr = pl.matrUdc, @Tipo=pl.tipo, @Dest=pl.Destinatario, @Qta=ABS(pl.Qta), @PesoNet=pl.PesoNetto, @PesoLor=pl.PesoTot, @Stato=pl.Stato, @Data=dbo.dateToAsFormat(pl.data) FROM v_datiPackingList pl WHERE IdxRiga = @IdxRiga -- compongo testo x exec SET @SqlCode = N'EXEC BatchQueue.stp_registraPackList ' + @CodStab + ' ' + @UDC + ' ' + @Particolare + ' ' + @CodImb + ' ' + CAST(@Matr AS NVARCHAR(8)) + ' ' + @Tipo + ' ' + @Dest + ' ' + CAST(@Qta AS NVARCHAR(8)) + ' ' + CAST(@PesoNet AS NVARCHAR(8)) + ' ' + CAST(@PesoLor AS NVARCHAR(8)) + ' ' + @Stato + ' ' + @Data -- lo mostro print '%' + LTRIM(RTRIM(@SqlCode)) + '%' -- !!! TESTARE !!! /* -- chiamo la stored ed eseguo invio EXEC dbo.sp_executesql @SqlCode -- decommentare se va bene... -- registro la data del movimento BATCH UPDATE AS400_BatchMovimenti SET DataBatch = GETDATE() WHERE IdxRiga = @IdxRiga */ FETCH NEXT FROM RigaPackList INTO @IdxRiga END END CLOSE RigaPackList DEALLOCATE RigaPackList RETURN go /*************************************** * STORED stp_registraMovMag * * Salva il movimento di magazzino indicato * * Steamware, S.E.L. * mod: 2010.10.15 * ****************************************/ create PROCEDURE BatchQueue.stp_registraMovMag ( @NOMUS NVARCHAR(50), -- è il nome utente @CDCAU NVARCHAR(2), -- è la causale del movimento @CDPAR NVARCHAR(15), -- codice particolare @CDMAG NVARCHAR(2), -- codice magazzino @QTMOV INT, -- quantità movimento @DAMOV NVARCHAR(8), -- data 8 cifre aaaammgg @RIFFO NVARCHAR(8) -- cod UDC compresso ) AS -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!! DECLARE @SQL AS NVARCHAR(1000) -- Faccio chiamata su AS400 SET @SQL = N' OPENQUERY( P65220DC, ''INSERT INTO MAZZT_DTV3.MWMV200F VALUES ' SET @SQL = @SQL + @NOMUS + ', ' + @CDCAU + ', ' + @CDPAR + ', ' + @CDMAG + ', ' SET @SQL = @SQL + CAST(@QTMOV AS NVARCHAR(8)) + ', ' + @DAMOV + ', ' + @RIFFO + ''' )' EXEC dbo.sp_executesql @SQL RETURN go /*************************************** * STORED stp_registraPackList * * Salva i dati di packing list indicati * * Steamware, S.E.L. * mod: 2010.10.15 * ****************************************/ create PROCEDURE BatchQueue.stp_registraPackList ( @PLREPA NVARCHAR(2), -- è il codice reparto/stabilimento (05 pressofusione) @PLCART NVARCHAR(15), -- UDC @PLARTI NVARCHAR(15), -- cod articolo @PLCONT NVARCHAR(15), -- cod contenitore @PLMATR INT, -- matricola contenitore (solo cifre finali INT) @PLTPAN CHAR(2), -- tipo anagrafico CLiente / FOrnitore-terzista @PLCDAN NVARCHAR(6), -- cod terzista / cliente @PLQTA INT, -- quantità @PLPNET NUMERIC(7, 3), -- peso netto @PLPLOR NUMERIC(7, 3), -- peso lordo @PLSTAT CHAR(1), -- stato "P" predisposto per packing list, "B" bolla stampata @PLDTEN INT -- data entrata merce, data di carico dell'UDC 8 cifre aaaammgg ) AS -- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!! DECLARE @SQL AS NVARCHAR(1000) -- Faccio chiamata su AS400 SET @SQL = N' OPENQUERY( P65220DC, ''INSERT INTO MAZZT_DTV3.PACKL00F VALUES ' SET @SQL = @SQL + @PLREPA + ', ' + @PLCART + ', ' + @PLARTI + ', ' + @PLCONT + ', ' SET @SQL = @SQL + CAST(@PLMATR AS NVARCHAR(5)) + ', ' + @PLTPAN + ', ' + @PLCDAN + ', ' + CAST(@PLQTA AS NVARCHAR(10)) + ', ' SET @SQL = @SQL + CAST(@PLPNET AS NVARCHAR(10)) + ', ' + CAST(@PLPLOR AS NVARCHAR(10)) + ', ' + @PLSTAT + ', ' SET @SQL = @SQL + CAST(@PLDTEN AS NVARCHAR(8)) + ''' )' EXEC dbo.sp_executesql @SQL RETURN go commit go set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_ParticolariOverview * * restituisce solo la riga con il num max di celle DI UN DATO magazzino * * Steamware, S.E.L. * mod: 2010.06.02 * ****************************************/ alter PROCEDURE stp_magazzinoOverviewByMag_maxCelle ( @CodCS VARCHAR(2), @CodMag VARCHAR(50) ) AS WITH cte_celle AS( SELECT b.CodBlocco, c.IdxTipoCella, COUNT(c.IdxCella) * t.Capienza AS numCelle FROM Celle AS c INNER JOIN Blocchi AS b ON c.IdxBlocco = b.IdxBlocco INNER JOIN TipoCella AS t ON c.IdxTipoCella = t.IdxTipoCella WHERE (b.CodCS = @CodCS) AND (b.CodMag = @CodMag) GROUP BY b.CodBlocco, c.IdxTipoCella, t.Capienza ) SELECT TOP (1) AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, b.IdxBlocco, b.CodBlocco, ISNULL(c.numCelle,ISNULL(b.NumX * b.NumY * b.NumZ,1)) AS TotCelle, 0 AS CelleAttive, 0 AS CelleOccupate, 0 AS CelleLibere, GETDATE() AS Oldest, GETDATE() AS Newest FROM AnagMag INNER JOIN Blocchi b ON AnagMag.CodMag = b.CodMag AND AnagMag.CodCS = b.CodCS INNER JOIN cte_celle c ON c.CodBlocco = b.CodBlocco WHERE (AnagMag.CodCS = @CodCS) AND AnagMag.CodMag = @CodMag ORDER BY TotCelle DESC RETURN go /*************************************** * STORED stp_ParticolariOverview * * restituisce solo la riga con il num max di celle * * Steamware, S.E.L. * mod: 2010.06.02 * ****************************************/ alter PROCEDURE stp_magazzinoOverview_maxCelle ( @CodCS VARCHAR(2) ) AS WITH cte_celle AS( SELECT b.CodBlocco, c.IdxTipoCella, COUNT(c.IdxCella) * t.Capienza AS numCelle FROM Celle AS c INNER JOIN Blocchi AS b ON c.IdxBlocco = b.IdxBlocco INNER JOIN TipoCella AS t ON c.IdxTipoCella = t.IdxTipoCella WHERE (b.CodCS = @CodCS) GROUP BY b.CodBlocco, c.IdxTipoCella, t.Capienza ) SELECT TOP (1) AnagMag.CodCS, AnagMag.CodMag, AnagMag.DescMag, b.IdxBlocco, b.CodBlocco, ISNULL(c.numCelle,ISNULL(b.NumX * b.NumY * b.NumZ,1)) AS TotCelle, 0 AS CelleAttive, 0 AS CelleOccupate, 0 AS CelleLibere, GETDATE() AS Oldest, GETDATE() AS Newest FROM AnagMag INNER JOIN Blocchi b ON AnagMag.CodMag = b.CodMag AND AnagMag.CodCS = b.CodCS INNER JOIN cte_celle c ON c.CodBlocco = b.CodBlocco WHERE (AnagMag.CodCS = @CodCS) ORDER BY TotCelle DESC RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(285, GETDATE()) GO