diff --git a/GMW/GMW_data/SqlScripts/GMW_00285.sql b/GMW/GMW_data/SqlScripts/GMW_00285.sql new file mode 100644 index 00000000..8272d09e --- /dev/null +++ b/GMW/GMW_data/SqlScripts/GMW_00285.sql @@ -0,0 +1,238 @@ +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 + + + + + + + + + +-- registro versione... +INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(285, GETDATE()) +GO