update del delta db...

git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@294 365432ac-a1b5-4ffd-bb28-6d3099d32164
This commit is contained in:
samuele
2010-10-13 16:49:58 +00:00
parent 5996d27142
commit 012387b0ce
+238
View File
@@ -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