Files
Samuele E. Locatelli 2b1479f315 spostamento update SQL
2018-05-03 15:06:47 +02:00

1314 lines
39 KiB
Transact-SQL

create table CalendApertura(
NumGG int not null constraint PK_CalendApertura primary key,
T1 int not null,
T2 int not null,
T3 int not null,
oraInizio int,
oraFine int
)
go
set xact_abort on
go
begin transaction
go
INSERT INTO dbo.CalendApertura
VALUES (1, 8, 8, 8, 0, 24)
INSERT INTO dbo.CalendApertura
VALUES (2, 8, 8, 8, 0, 24)
INSERT INTO dbo.CalendApertura
VALUES (3, 8, 8, 8, 0, 24)
INSERT INTO dbo.CalendApertura
VALUES (4, 8, 8, 8, 0, 24)
INSERT INTO dbo.CalendApertura
VALUES (5, 8, 8, 8, 0, 24)
INSERT INTO dbo.CalendApertura
VALUES (6, 8, 0, 0, 0, 14)
INSERT INTO dbo.CalendApertura
VALUES (7, 0, 0, 8, 22, 24)
go
commit transaction
go
set xact_abort on
go
begin transaction
go
create table DatiProduzione(
IdxConferma int not null identity constraint PK_DatiProduzione primary key,
IdxODL int not null,
DataOraApp datetime not null,
DataRif datetime not null,
TurnoRif int,
CodArticolo nvarchar(50),
IdxMacchina nvarchar(50) not null,
TCAssegnato decimal(18,8),
MatrOpr int,
MatrApp int not null,
DataOraFrom datetime,
DataOraTo datetime,
TotPzProd int,
Tempo decimal(18,8),
ClasseTempo nvarchar(50)
)
go
exec sp_addextendedproperty 'MS_Description', 'matricola dell''operatore che ha lavorato sulla macchina', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'MatrOpr'
go
exec sp_addextendedproperty 'MS_Description', 'matricola dell''approvatore del record', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'MatrApp'
go
exec sp_addextendedproperty 'MS_Description', 'pezzi prodotti in ciclo', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'TotPzProd'
go
exec sp_addextendedproperty 'MS_Description', 'TCAssegnato x num pezzi prodotti', 'SCHEMA', 'dbo', 'TABLE', 'DatiProduzione', 'COLUMN', 'Tempo'
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiConf_conferma
* conferma la produzione per la macchina indicata
*
* modif.: S.E.L.
* il: 2011.03.30
**************************************/
alter PROCEDURE stp_DatiConf_conferma
(
@idxODL INT,
@idxMacchina NVARCHAR(50),
@MatrApp INT,
@dataFrom DATETIME,
@dataTo DATETIME,
@turno INT,
@idxStato INT,
@pezziConf INT
)
AS
BEGIN TRAN
-- calcolo valori
DECLARE @CodArticolo NVARCHAR(50)
SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '')
DECLARE @TCAss DECIMAL(18,8)
SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1)
-- versione semplificata: approva tutto x data e turno INIZIALE del periodo indicato
INSERT INTO DatiConfermati(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, IdxStato, TotPzProd, TempoProdotto)
VALUES (@idxODL, GETDATE(), @dataFrom, @turno, @CodArticolo, @idxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @idxStato, @pezziConf, @pezziConf*@TCAss)
COMMIT TRAN
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insAllPeriodo
* calcola il tempo da diario di bordo x una macchina dato periodo e inserisce in tabella dati prod INSIEME ai pezzi prodotti
*
* modif.: S.E.L.
* il: 2011.06.06
**************************************/
create PROCEDURE stp_DatiProd_insAllPeriodo
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@dataRif DATETIME,
@turnoRif INT,
@MatrApp INT
)
AS
BEGIN TRAN
-- calcolo i pz prod da confermare per l'intero periodo
DECLARE @pzProd AS INT
SET @pzProd = ( SELECT ISNULL(SUM(PzProd),0)
FROM TempiCicloRilevati
WHERE IdxMacchina = @idxMacchina
AND DataOraRif BETWEEN @dataFrom AND @dataTo )
-- calcolo l'ODL, l'articolo ed il TCiclo...
DECLARE @idxODL INT
SET @idxODL = ( SELECT ISNULL(IdxODL, 0) FROM ODL WHERE (@dataFrom BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(d, 1, GETDATE()))) AND NOT (DataInizio IS NULL) )
DECLARE @CodArticolo NVARCHAR(50)
SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '')
DECLARE @TCAss DECIMAL(18,8)
SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1)
-- dichiaro le ore che calcolo man mano...
DECLARE @totOre DECIMAL(18,8)
DECLARE @ClasseTempo NVARCHAR(50)
-- variabili x ricerca gg festivi o aperture/chiusure ND programmate
DECLARE @chiusura INT
DECLARE @apertura INT
DECLARE @ggSett INT
-- verifico se sia giorno di chiusura, in tal caso carico 8 h in T_OFF_ND
SET @chiusura = ( SELECT COUNT(*) FROM CalendFesteFerie WHERE data = @dataRif )
-- verifico che da apertura sia un periodo valido e non di fermo programmato
IF(@chiusura = 0)
BEGIN
-- controllo a seconda della data e turno a che gg di settimana e turno corrisponde...
SET DATEFIRST 1; -- setto al lunedì inizio settimana
SET @ggSett = DATEPART(dw, @dataFrom ) -- calcolo giorno
SET @apertura = ( SELECT CASE @turnoRif WHEN 1 THEN T1 WHEN 2 THEN T2 ELSE T3 END FROM CalendApertura WHERE NumGG = @ggSett ) -- cerco ore apertura...
SET @chiusura = ( SELECT CASE @apertura WHEN 8 THEN 0 ELSE 1 END ) -- e se sia turno valido (8h) o vuoto (0h) nel qual caso chiusura > 0
END
-- se c'è chiusura per turno singolo o per giorno intero...
IF(@chiusura > 0)
BEGIN
SET @ClasseTempo = 'T_OFF_ND'
SET @totOre = 8
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo)
END
ELSE -- normale dichiarazione
BEGIN
-- inserisco i dati di SOLO tempo prodotto e pz prodotti
SET @ClasseTempo = 'T_AutoRun'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo)
END
-- inserisco gli altri tempi, pezzi prod ZERO!!!
SET @ClasseTempo = 'T_Microfermo'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, 0, @totOre, @ClasseTempo)
END
SET @ClasseTempo = 'T_FermoGiallo'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, 0, @totOre, @ClasseTempo)
END
SET @ClasseTempo = 'T_FermoRosso'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, 0, @totOre, @ClasseTempo)
END
SET @ClasseTempo = 'T_OFF'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, 0, @totOre, @ClasseTempo)
END
END
COMMIT TRAN
RETURN
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insert
* dichiara i dati x la machcina indicata x tab DatiProduzione
*
* modif.: S.E.L.
* il: 2011.06.06
**************************************/
create PROCEDURE stp_DatiProd_insert
(
@idxODL INT,
@idxMacchina NVARCHAR(50),
@MatrApp INT,
@dataFrom DATETIME,
@dataTo DATETIME,
@turno INT,
@pezziConf INT,
@Tempo DECIMAL(18,8),
@ClasseTempo NVARCHAR(50)
)
AS
BEGIN TRAN
-- calcolo variabili
DECLARE @CodArticolo NVARCHAR(50)
SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '')
DECLARE @TCAss DECIMAL(18,8)
SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1)
-- versione semplificata: approva tutto x data e turno INIZIALE del periodo indicato
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo)
VALUES (@idxODL, GETDATE(), @dataFrom, @turno, @CodArticolo, @idxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pezziConf, @Tempo, @ClasseTempo)
COMMIT TRAN
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* Function f_calcolaTempoClasse_ByInterv
* calcola il totale del tempo di una classe fermata per un intervallo date
*
* modif.: S.E.L.
* il: 2011.06.07
**************************************/
create FUNCTION f_calcolaTempoClasse_ByInterv
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@classeTempo NVARCHAR(50)
)
RETURNS DECIMAL(18,8)
AS
BEGIN
-- dichiaro out
DECLARE @totOre AS DECIMAL(18,8)
DECLARE @incl AS DECIMAL(18,8)
DECLARE @start AS DECIMAL(18,8)
DECLARE @end AS DECIMAL(18,8)
DECLARE @full AS DECIMAL(18,8)
-- inizio calcolando il tempo degli eventi totalmente inclusi nell'intervallo
SET @incl = (SELECT CAST(ISNULL(SUM(ddb.DurataMinuti),0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo)
AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo)
AND a.ClasseTempo = @classeTempo)
-- ora sommo gli eventi sui bordi: inizio...
SET @start = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, CASE WHEN ddb.FineStato < @dataTo THEN ddb.FineStato ELSE @dataTo END) ,0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato < @dataFrom)
AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo)
AND a.ClasseTempo = @classeTempo)
-- ...e fine...
SET @end = (SELECT CAST(ISNULL(DATEDIFF(n, CASE WHEN ddb.InizioStato < @dataFrom THEN @dataFrom ELSE ddb.InizioStato END, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo)
AND (ddb.FineStato > @dataTo)
AND a.ClasseTempo = @classeTempo)
-- ...e pure eventi totalmente overlapping...
SET @full = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato < @dataFrom)
AND (ddb.FineStato > @dataTo)
AND a.ClasseTempo = @classeTempo)
-- sommo!
SET @totOre = (ISNULL(@incl,0) + ISNULL(@start,0) + ISNULL(@end,0) + ISNULL(@full,0))
RETURN @totOre
END
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_PzProd_getByMacchinaPeriodo
* recupera per la macchina indicata i pezzi prodotti nel periodo
*
* modif.: S.E.L.
* il: 2011.06.06
**************************************/
create PROCEDURE stp_PzProd_getByMacchinaPeriodo
(
@idxMacchina NVARCHAR(50),
@startProd DATETIME,
@endProd DATETIME
)
AS
BEGIN TRAN
SELECT @idxMacchina as idxMacchina, ISNULL(SUM(PzProd),0) as pezziNonConfermati, @startProd AS DataFrom, @endProd AS DataTo
FROM TempiCicloRilevati
WHERE IdxMacchina = @idxMacchina
AND DataOraRif BETWEEN @startProd AND @endProd
COMMIT TRAN
RETURN
go
/*************************************
* STORED PROCEDURE stp_TempoByIdxMaccPeriodClass
* calcola il tempo da diario di bordo x una macchian dato periodo e tipo classe stati
*
* modif.: S.E.L.
* il: 2011.06.06
**************************************/
create PROCEDURE stp_TempoByIdxMaccPeriodClass
(
@IdxMacchina NVARCHAR(50),
@DataFrom DATETIME,
@DataTo DATETIME,
@ClasseTempo NVARCHAR(50)
)
AS
SELECT CAST(ISNULL(SUM(ddb.DurataMinuti),0) AS DECIMAL(18,8)) / 60 AS ore FROM DiarioDiBordo ddb
INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato
WHERE (a.ClasseTempo = @ClasseTempo)
AND (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato >= @DataFrom)
AND (ddb.FineStato <= @DataTo)
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_Microfermo'
WHERE IdxStato=1
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoGiallo'
WHERE IdxStato=2
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoGiallo'
WHERE IdxStato=3
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoRosso'
WHERE IdxStato=4
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoRosso'
WHERE IdxStato=5
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_Microfermo'
WHERE IdxStato=6
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoRosso'
WHERE IdxStato=7
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoRosso'
WHERE IdxStato=8
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoRosso'
WHERE IdxStato=9
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoGiallo'
WHERE IdxStato=10
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_Microfermo'
WHERE IdxStato=12
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoRosso'
WHERE IdxStato=15
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoRosso'
WHERE IdxStato=23
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoGiallo'
WHERE IdxStato=24
UPDATE dbo.AnagraficaStati SET
ClasseTempo=N'T_FermoGiallo'
WHERE IdxStato=25
INSERT INTO dbo.AnagraficaStati
VALUES (26, N'Non Disponibile', N'S', 1, N'T_OFF_ND')
go
commit transaction
go
set xact_abort on
go
begin transaction
go
INSERT INTO dbo.AnagClassiTempo
VALUES (N'T_Microfermo', N'Microfermate')
INSERT INTO dbo.AnagClassiTempo
VALUES (N'T_OFF', N'Macchina spenta')
INSERT INTO dbo.AnagClassiTempo
VALUES (N'T_OFF_ND', N'Macchina in tempo Non Disponibile')
INSERT INTO dbo.AnagClassiTempo
VALUES (N'T_FermoGiallo', N'Macchina in Automatico, ferma per attrezzaggi o fermi a ciclo')
INSERT INTO dbo.AnagClassiTempo
VALUES (N'T_FermoRosso', N'Macchina Ferma in RUN')
go
commit transaction
go
set xact_abort on
go
begin transaction
go
DELETE FROM dbo.AnagClassiTempo WHERE ClasseTempo=N'T_Auto'
DELETE FROM dbo.AnagClassiTempo WHERE ClasseTempo=N'T_Fermo'
DELETE FROM dbo.AnagClassiTempo WHERE ClasseTempo=N'T_ND'
go
commit transaction
go
set xact_abort on
go
begin transaction
go
INSERT INTO dbo.CalendFesteFerie
VALUES ('2011-04-25 00:00:00.000', N'festa della liberazione')
INSERT INTO dbo.CalendFesteFerie
VALUES ('2011-05-01 00:00:00.000', N'festa dei lavoratori')
INSERT INTO dbo.CalendFesteFerie
VALUES ('2011-06-02 00:00:00.000', N'festa della repubblica')
go
commit transaction
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* Function f_calcolaTempoStato_ByInterv
* calcola il totale del tempo di uno stato per un intervallo date
*
* modif.: S.E.L.
* il: 2011.06.23
**************************************/
create FUNCTION f_calcolaTempoStato_ByInterv
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@IdxStato INT
)
RETURNS DECIMAL(18,8)
AS
BEGIN
-- dichiaro out
DECLARE @totOre AS DECIMAL(18,8)
DECLARE @incl AS DECIMAL(18,8)
DECLARE @start AS DECIMAL(18,8)
DECLARE @end AS DECIMAL(18,8)
DECLARE @full AS DECIMAL(18,8)
-- inizio calcolando il tempo degli eventi totalmente inclusi nell'intervallo
SET @incl = (SELECT CAST(ISNULL(SUM(ddb.DurataMinuti),0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo)
AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo)
AND IdxStato = @IdxStato)
-- ora sommo gli eventi sui bordi: inizio...
SET @start = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, CASE WHEN ddb.FineStato < @dataTo THEN ddb.FineStato ELSE @dataTo END) ,0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato < @dataFrom)
AND (ddb.FineStato BETWEEN @dataFrom AND @dataTo)
AND IdxStato = @IdxStato)
-- ...e fine...
SET @end = (SELECT CAST(ISNULL(DATEDIFF(n, CASE WHEN ddb.InizioStato < @dataFrom THEN @dataFrom ELSE ddb.InizioStato END, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato BETWEEN @dataFrom AND @dataTo)
AND (ddb.FineStato > @dataTo)
AND IdxStato = @IdxStato)
-- ...e pure eventi totalmente overlapping...
SET @full = (SELECT CAST(ISNULL(DATEDIFF(n, @dataFrom, @dataTo) ,0) AS DECIMAL(18,8)) / 60 AS Tempo
FROM DiarioDiBordo ddb
WHERE (ddb.IdxMacchina = @IdxMacchina)
AND (ddb.InizioStato < @dataFrom)
AND (ddb.FineStato > @dataTo)
AND IdxStato = @IdxStato)
-- sommo!
SET @totOre = (ISNULL(@incl,0) + ISNULL(@start,0) + ISNULL(@end,0) + ISNULL(@full,0))
RETURN @totOre
END
go
commit
go
set xact_abort on
go
begin transaction
go
alter table DatiProduzione add
Causale nvarchar(50)
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insAllPeriodo
* calcola il tempo da diario di bordo x una macchina dato periodo e inserisce in tabella dati prod INSIEME ai pezzi prodotti
*
* modif.: S.E.L.
* il: 2011.06.06
**************************************/
alter PROCEDURE stp_DatiProd_insAllPeriodo
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@dataRif DATETIME,
@turnoRif INT,
@MatrApp INT
)
AS
BEGIN TRAN
-- calcolo i pz prod da confermare per l'intero periodo
DECLARE @pzProd AS INT
SET @pzProd = ( SELECT ISNULL(SUM(PzProd),0)
FROM TempiCicloRilevati
WHERE IdxMacchina = @idxMacchina
AND DataOraRif BETWEEN @dataFrom AND @dataTo )
-- calcolo l'ODL, l'articolo ed il TCiclo...
DECLARE @idxODL INT
SET @idxODL = ( SELECT ISNULL(IdxODL, 0) FROM ODL WHERE (@dataFrom BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(d, 1, GETDATE()))) AND NOT (DataInizio IS NULL) )
DECLARE @CodArticolo NVARCHAR(50)
SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '')
DECLARE @TCAss DECIMAL(18,8)
SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1)
-- dichiaro le ore che calcolo man mano...
DECLARE @totOre DECIMAL(18,8)
DECLARE @ClasseTempo NVARCHAR(50)
-- variabili x ricerca gg festivi o aperture/chiusure ND programmate
DECLARE @chiusura INT
DECLARE @apertura INT
DECLARE @ggSett INT
-- verifico se sia giorno di chiusura, in tal caso carico 8 h in T_OFF_ND
SET @chiusura = ( SELECT COUNT(*) FROM CalendFesteFerie WHERE data = @dataRif )
-- verifico che da apertura sia un periodo valido e non di fermo programmato
IF(@chiusura = 0)
BEGIN
-- controllo a seconda della data e turno a che gg di settimana e turno corrisponde...
SET DATEFIRST 1; -- setto al lunedì inizio settimana
SET @ggSett = DATEPART(dw, @dataFrom ) -- calcolo giorno
SET @apertura = ( SELECT CASE @turnoRif WHEN 1 THEN T1 WHEN 2 THEN T2 ELSE T3 END FROM CalendApertura WHERE NumGG = @ggSett ) -- cerco ore apertura...
SET @chiusura = ( SELECT CASE @apertura WHEN 8 THEN 0 ELSE 1 END ) -- e se sia turno valido (8h) o vuoto (0h) nel qual caso chiusura > 0
END
-- se c'è chiusura per turno singolo o per giorno intero...
IF(@chiusura > 0)
BEGIN
SET @ClasseTempo = 'T_OFF_ND'
SET @totOre = 8
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo)
END
ELSE -- normale dichiarazione
BEGIN
-- inserisco i dati di SOLO tempo prodotto e pz prodotti
SET @ClasseTempo = 'T_AutoRun'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo)
END
-- inserisco gli altri tempi, pezzi prod ZERO!!!
SET @ClasseTempo = 'T_Microfermo'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
SET @ClasseTempo = 'T_FermoGiallo'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
SET @ClasseTempo = 'T_FermoRosso'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
SET @ClasseTempo = 'T_OFF'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
END
COMMIT TRAN
RETURN
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insert
* dichiara i dati x la machcina indicata x tab DatiProduzione
*
* modif.: S.E.L.
* il: 2011.06.06
**************************************/
alter PROCEDURE stp_DatiProd_insert
(
@idxODL INT,
@idxMacchina NVARCHAR(50),
@MatrApp INT,
@dataFrom DATETIME,
@dataTo DATETIME,
@turno INT,
@pezziConf INT,
@Tempo DECIMAL(18,8),
@ClasseTempo NVARCHAR(50)
)
AS
BEGIN TRAN
-- calcolo variabili
DECLARE @CodArticolo NVARCHAR(50)
SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '')
DECLARE @TCAss DECIMAL(18,8)
SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1)
-- versione semplificata: approva tutto x data e turno INIZIALE del periodo indicato
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
VALUES (@idxODL, GETDATE(), @dataFrom, @turno, @CodArticolo, @idxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom, @dataTo, @pezziConf, @Tempo, @ClasseTempo, @ClasseTempo)
COMMIT TRAN
RETURN
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insClasseTempo
* inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo
*
* modif.: S.E.L.
* il: 2011.06.23
**************************************/
create PROCEDURE stp_DatiProd_insClasseTempo
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@dataRif DATETIME,
@turnoRif INT,
@MatrApp INT,
@idxODL INT,
@CodArticolo NVARCHAR(50),
@TCAss DECIMAL(18,8),
@ClasseTempo NVARCHAR(50)
)
AS
-- creo tab elenco delle fermate raggruppate x classe tempo
WITH cte_stati AS(
SELECT DISTINCT ddb.IdxStato, Descrizione as Causale
FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina)
)
--...e lo inserisco!
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom,
DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
(
SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom,
@dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale
FROM cte_stati
)
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
alter table AnagraficaStati add
ShowArticolo bit
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insClasseTempo
* inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo
*
* modif.: S.E.L.
* il: 2011.06.23
**************************************/
alter PROCEDURE stp_DatiProd_insClasseTempo
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@dataRif DATETIME,
@turnoRif INT,
@MatrApp INT,
@idxODL INT,
@CodArticolo NVARCHAR(50),
@TCAss DECIMAL(18,8),
@ClasseTempo NVARCHAR(50)
)
AS
-- creo tab elenco delle fermate raggruppate x classe tempo
WITH cte_stati AS(
SELECT DISTINCT ddb.IdxStato, Descrizione as Causale, a.ShowArticolo
FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina)
)
--...e lo inserisco!
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom,
DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
(
SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, CASE ShowArticolo WHEN 1 THEN @CodArticolo ELSE '' END AS CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom,
@dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale
FROM cte_stati
)
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=1
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=2
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=3
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=4
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=5
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=6
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=7
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=8
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=9
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=10
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=11
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=12
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=13
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=14
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=15
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=23
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=24
UPDATE dbo.AnagraficaStati SET
ShowArticolo=1
WHERE IdxStato=25
UPDATE dbo.AnagraficaStati SET
ShowArticolo=0
WHERE IdxStato=26
go
commit transaction
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insClasseTempo
* inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo
*
* modif.: S.E.L.
* il: 2011.06.23
**************************************/
alter PROCEDURE stp_DatiProd_insClasseTempo
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@dataRif DATETIME,
@turnoRif INT,
@MatrApp INT,
@idxODL INT,
@CodArticolo NVARCHAR(50),
@TCAss DECIMAL(18,8),
@ClasseTempo NVARCHAR(50)
)
AS
-- creo tab elenco delle fermate raggruppate x classe tempo
WITH cte_stati AS(
SELECT DISTINCT ddb.IdxStato, Descrizione as Causale, a.ShowArticolo
FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina)
)
--...e lo inserisco!
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom,
DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
(
SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, CASE ShowArticolo WHEN 1 THEN @CodArticolo ELSE '' END AS CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp, @dataFrom,
@dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale
FROM cte_stati
)
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insClasseTempo
* inserisce i tempi di tutte le SIONGOLE causali rilevate per un intervallo di tempo ed una data classe tempo
*
* modif.: S.E.L.
* il: 2011.06.23
**************************************/
alter PROCEDURE stp_DatiProd_insClasseTempo
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@dataRif DATETIME,
@turnoRif INT,
@MatrApp INT,
@idxODL INT,
@CodArticolo NVARCHAR(50),
@TCAss DECIMAL(18,8),
@ClasseTempo NVARCHAR(50)
)
AS
-- creo tab elenco delle fermate raggruppate x classe tempo
WITH cte_stati AS(
SELECT DISTINCT ddb.IdxStato, Descrizione as Causale, a.ShowArticolo
FROM DiarioDiBordo AS ddb INNER JOIN AnagraficaStati AS a ON ddb.IdxStato = a.IdxStato
WHERE (ddb.InizioStato BETWEEN @dataFrom AND @dataTo) AND (a.ClasseTempo = @classeTempo) AND (IdxMacchina = @IdxMacchina)
)
--...e lo inserisco!
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp, DataOraFrom,
DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
(
SELECT @idxODL, GETDATE(), @dataRif, @turnoRif, CASE ShowArticolo WHEN 1 THEN @CodArticolo ELSE '' END AS CodArticolo, @IdxMacchina, CASE ShowArticolo WHEN 1 THEN @TCAss ELSE 0 END AS TCAss, @MatrApp, @MatrApp, @dataFrom,
@dataTo, 0, dbo.f_calcolaTempoStato_ByInterv(@IdxMacchina,@dataFrom, @dataTo, IdxStato), @ClasseTempo, Causale
FROM cte_stati
)
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiProd_insAllPeriodo
* calcola il tempo da diario di bordo x una macchina dato periodo e inserisce in tabella dati prod INSIEME ai pezzi prodotti
*
* modif.: S.E.L.
* il: 2011.06.06
**************************************/
alter PROCEDURE stp_DatiProd_insAllPeriodo
(
@IdxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME,
@dataRif DATETIME,
@turnoRif INT,
@MatrApp INT
)
AS
BEGIN TRAN
-- calcolo i pz prod da confermare per l'intero periodo
DECLARE @pzProd AS INT
SET @pzProd = ( SELECT ISNULL(SUM(PzProd),0)
FROM TempiCicloRilevati
WHERE IdxMacchina = @idxMacchina
AND DataOraRif BETWEEN @dataFrom AND @dataTo )
-- calcolo l'ODL, l'articolo ed il TCiclo...
DECLARE @idxODL INT
SET @idxODL = ( SELECT ISNULL(IdxODL, 0) FROM ODL WHERE (@dataFrom BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(d, 1, GETDATE()))) AND NOT (DataInizio IS NULL) )
DECLARE @CodArticolo NVARCHAR(50)
SET @CodArticolo = ISNULL((SELECT ISNULL(CodArticolo,'') FROM ODL WHERE IdxODL = @idxODL), '')
DECLARE @TCAss DECIMAL(18,8)
SET @TCAss = ISNULL((SELECT ISNULL(TCAssegnato, 1) FROM ODL WHERE IdxODL = @idxODL), 1)
-- dichiaro le ore che calcolo man mano...
DECLARE @totOre DECIMAL(18,8)
DECLARE @ClasseTempo NVARCHAR(50)
-- variabili x ricerca gg festivi o aperture/chiusure ND programmate
DECLARE @chiusura INT
DECLARE @apertura INT
DECLARE @ggSett INT
-- verifico se sia giorno di chiusura, in tal caso carico 8 h in T_OFF_ND
SET @chiusura = ( SELECT COUNT(*) FROM CalendFesteFerie WHERE data = @dataRif )
-- verifico che da apertura sia un periodo valido e non di fermo programmato
IF(@chiusura = 0)
BEGIN
-- controllo a seconda della data e turno a che gg di settimana e turno corrisponde...
SET DATEFIRST 1; -- setto al lunedì inizio settimana
SET @ggSett = DATEPART(dw, @dataFrom ) -- calcolo giorno
SET @apertura = ( SELECT CASE @turnoRif WHEN 1 THEN T1 WHEN 2 THEN T2 ELSE T3 END FROM CalendApertura WHERE NumGG = @ggSett ) -- cerco ore apertura...
SET @chiusura = ( SELECT CASE @apertura WHEN 8 THEN 0 ELSE 1 END ) -- e se sia turno valido (8h) o vuoto (0h) nel qual caso chiusura > 0
END
-- se c'è chiusura per turno singolo o per giorno intero...
IF(@chiusura > 0)
BEGIN
SET @ClasseTempo = 'T_OFF_ND'
SET @totOre = 8
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, '', @IdxMacchina, 0, @MatrApp, @MatrApp, -- non metto ne tempo ne cod articolo...
@dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo)
END
ELSE -- normale dichiarazione
BEGIN
-- inserisco i dati di SOLO tempo prodotto e pz prodotti
SET @ClasseTempo = 'T_AutoRun'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
INSERT INTO DatiProduzione(IdxODL, DataOraApp, DataRif, TurnoRif, CodArticolo, IdxMacchina, TCAssegnato, MatrOpr, MatrApp,
DataOraFrom, DataOraTo, TotPzProd, Tempo, ClasseTempo, Causale)
VALUES (@idxODL, GETDATE(), @dataRif, @turnoRif, @CodArticolo, @IdxMacchina, @TCAss, @MatrApp, @MatrApp,
@dataFrom, @dataTo, @pzProd, @totOre, @ClasseTempo, @ClasseTempo)
END
-- inserisco gli altri tempi, pezzi prod ZERO!!!
SET @ClasseTempo = 'T_Microfermo'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
SET @ClasseTempo = 'T_FermoGiallo'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
SET @ClasseTempo = 'T_FermoRosso'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
SET @ClasseTempo = 'T_OFF'
SET @totOre = dbo.f_calcolaTempoClasse_ByInterv(@IdxMacchina, @dataFrom, @dataTo, @ClasseTempo)
IF(@totOre > 0)
BEGIN
-- scrivo tutti gli eventi della classe
EXEC stp_DatiProd_insClasseTempo @IdxMacchina, @dataFrom, @dataTo, @dataRif, @turnoRif, @MatrApp, @idxODL, @CodArticolo, @TCAss, @ClasseTempo
END
END
COMMIT TRAN
RETURN
go
commit
go
set xact_abort on
go
begin transaction
go
set ANSI_NULLS on
go
/*************************************
* STORED PROCEDURE stp_DatiConf_getByPeriodo
*
* recupera i dati confermati x un periodo, ordinati in data DESC
*
* modif.: S.E.L.
* il: 2011.07.04
**************************************/
create PROCEDURE stp_DatiConf_getByPeriodo
(
@dataFrom DATETIME,
@dataTo DATETIME
)
AS
SELECT *
FROM DatiConfermati
WHERE (DataRif >= @dataFrom AND DataRif <= @dataTo)
ORDER BY DataRif DESC
RETURN
go
/*************************************
* STORED PROCEDURE stp_DatiProd_getByMacchPeriodo
*
* recupera i dati confermati x una macchina e periodo, ordinati in data DESC
*
* modif.: S.E.L.
* il: 2011.07.04
**************************************/
create PROCEDURE stp_DatiProd_getByMacchPeriodo
(
@idxMacchina NVARCHAR(50),
@dataFrom DATETIME,
@dataTo DATETIME
)
AS
SELECT *
FROM DatiProduzione
WHERE IdxMacchina = @idxMacchina AND (DataRif >= @dataFrom AND DataRif <= @dataTo)
ORDER BY DataRif DESC
RETURN
go
/*************************************
* STORED PROCEDURE stp_DatiProd_getByPeriodo
*
* recupera i dati confermati x un periodo, ordinati in data DESC
*
* modif.: S.E.L.
* il: 2011.07.04
**************************************/
create PROCEDURE stp_DatiProd_getByPeriodo
(
@dataFrom DATETIME,
@dataTo DATETIME
)
AS
SELECT *
FROM DatiProduzione
WHERE (DataRif >= @dataFrom AND DataRif <= @dataTo)
ORDER BY DataRif DESC
RETURN
go
commit
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(300, GETDATE())
GO