﻿/*******************************************************
* GESTIONE NUOVO EVENTO per timeout contapezzo
*******************************************************/

-- tab eventi, nuovo evento 27
set xact_abort on
go

begin transaction
go

INSERT INTO dbo.AnagraficaEventi
  VALUES (27, N'Timer - timeout tempo ciclo', N'', N'')
go

commit transaction
go


-- tab transazioneEventi x andare da lavora a fermoGenerico
set xact_abort on
go

begin transaction
go

INSERT INTO dbo.TransizioneStati
  VALUES (10, 13, 27, 12)
go

commit transaction
go


create table TurniMacchina(
  IdxMacchina nvarchar(50) not null constraint PK_TurniMacchina primary key,
  T1          bit,
  T2          bit,
  T3          bit
);
go


set xact_abort on
go

begin transaction
go

INSERT INTO dbo.TurniMacchina
  VALUES (N'1005', 1, 1, 0)
go

commit transaction
go


set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
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
**************************************/
alter PROCEDURE stp_DatiProd_getByMacchPeriodo
(
	@idxMacchina	NVARCHAR(50),
	@dataFrom		DATETIME,
	@dataTo			DATETIME
)
AS

SELECT		*
FROM		DatiProduzione
WHERE		IdxMacchina = @idxMacchina AND (DataRif >= @dataFrom AND DataRif <= @dataTo)

RETURN
go

commit;
go


set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/*************************************
* STORED PROCEDURE stp_turniMacchineByIdxMacc
* 	elenco turni x macchina
*
* modif.:	S.E.L. - 2012.03.26
**************************************/
create PROCEDURE stp_turniMacchineByIdxMacc
(
	@IdxMacchina NVARCHAR(50)
)
AS

SELECT	*
FROM	TurniMacchina
WHERE	IdxMacchina = @IdxMacchina

RETURN
go

commit;
go


set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/*************************************
* Function f_lastTempoTecnico
* 	calcola il tempo tecnico per un impianto dato idxMacchina e intervallo di tempo x filtraggio
*	utilizza migliori 10 tempi nell'intervallo e fa media
*
* modif.:	S.E.L.
* il:		2011.03.30
**************************************/
alter FUNCTION f_lastTempoTecnico
(
	@idxMacchina NVARCHAR(50),
	@finestraOre INT
)
RETURNS DECIMAL(18,8)
AS

	
BEGIN
	DECLARE @TcTecnico AS DECIMAL (18,8) 
	;WITH LastTempi AS
	(
		SELECT TOP 5 *
		FROM TempiCicloRilevati
		WHERE IdxMacchina = @idxMacchina
		AND		DataOraRif >= DATEADD(HH,-@finestraOre,getdate())
		ORDER BY TCMedio
	)
	
	SELECT @TcTecnico = ISNULL(AVG(TcMedio), 0) FROM LastTempi
	--SELECT @TcTecnico = ISNULL(MIN(TcMedio), 0) FROM LastTempi
	--SELECT @TcTecnico = AVG(TcMedio) FROM LastTempi
	RETURN @TcTecnico
END
go

commit;
go


set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/*************************************
* STORED PROCEDURE stp_turniMacchineUpdateTurno
* 	cambia il turno specificato per la macchina (toggle: attivo/disattivo)
*
* modif.:	S.E.L. - 2012.03.26
**************************************/
create PROCEDURE stp_turniMacchineUpdateTurno
(
	@IdxMacchina	NVARCHAR(50),
	@numTurno		INT
)
AS

-- in base al turno indicato cambio solo uno
	UPDATE	TurniMacchina
		SET		T1 = CASE @numTurno WHEN 1 THEN 1-T1 ELSE T1 END,
				T2 = CASE @numTurno WHEN 2 THEN 1-T2 ELSE T2 END,
				T3 = CASE @numTurno WHEN 3 THEN 1-T3 ELSE T3 END
		WHERE	IdxMacchina = @IdxMacchina

RETURN
go

commit;
go


set xact_abort on
go

begin transaction
go

INSERT INTO dbo.AnagraficaEventi
  VALUES (28, N'Timer - timeout TURNO by tempo ciclo', N'', N'')
go

commit transaction
go

set xact_abort on
go

begin transaction
go

INSERT INTO dbo.TransizioneStati
  VALUES (10, 1, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 2, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 3, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 4, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 5, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 6, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 7, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 8, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 9, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 10, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 12, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 13, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 14, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 15, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 23, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 24, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 25, 28, 26)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 14, 11)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 15, 12)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 16, 13)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 17, 14)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 18, 15)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 20, 14)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 21, 13)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 22, 14)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 23, 23)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 24, 24)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 25, 25)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 26, 26, 27)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 27, 14, 11)
INSERT INTO dbo.TransizioneStati
  VALUES (10, 27, 28, 26)
DELETE FROM dbo.TransizioneStati WHERE IdxFamiglia=10 and IdxStato=11 and IdxTipo=14
go

commit transaction
go






-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(320, GETDATE())
GO
