﻿set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

-- =============================================
-- Author:		Samuele E. Locatelli
-- Create date: 2011-02-20
-- Description:	
-- =============================================
create PROCEDURE stp_zzz_rimuoviDuplicatiConsecutivi 
	-- Add the parameters for the stored procedure here
	@idxMacchina int 
AS
BEGIN
	SET NOCOUNT ON;

	DECLARE @InizioStato DATETIME, @IdxTipo INT, @MatricolaKanban NVARCHAR(50);
	DECLARE @InizioStatoPrec DATETIME, @IdxTipoPrec INT, @MatricolaKanbanPrec NVARCHAR(50);
	DECLARE @messaggio NVARCHAR(500);
	
	-- mostro conteggio eventi
	SELECT count(*), DATEPART(DD,InizioStato) AS inizio FROM EventList
		WHERE IdxMacchina=37 
		GROUP BY DATEPART(DD,InizioStato)
	
	-- inizializzo valori precedenti
	SET @InizioStatoPrec = (SELECT Top 1 InizioStato FROM EventList WHERE idxMacchina = @idxMacchina ORDER BY InizioStato ASC);
	SET @IdxTipoPrec = (SELECT Top 1 IdxTipo FROM EventList WHERE idxMacchina = @idxMacchina ORDER BY InizioStato ASC);
	SET @MatricolaKanbanPrec = (SELECT Top 1 MatricolaKanban FROM EventList WHERE idxMacchina = @idxMacchina ORDER BY InizioStato ASC);
	
	-- uso un cursore x percorrere i dati...
	DECLARE eventiDuplicati CURSOR FOR 
	SELECT InizioStato, IdxTipo, MatricolaKanban
	FROM EventList
	WHERE IdxMacchina = @idxMacchina
	ORDER BY InizioStato;

	OPEN eventiDuplicati;

	FETCH NEXT FROM eventiDuplicati 
	INTO @InizioStato, @IdxTipo,@MatricolaKanban;

	WHILE @@FETCH_STATUS = 0
	BEGIN
		-- controllo: se uguali i valori ai precedenti elimino attuale...
		IF((@InizioStato > @InizioStatoPrec) AND (@IdxTipo = @IdxTipoPrec) AND (@MatricolaKanban = @MatricolaKanbanPrec)) 
			BEGIN
				SELECT @messaggio = '--> Old tipo: ' + CAST(@IdxTipoPrec AS NVARCHAR(50)) + ' - new: ' + CAST(@IdxTipo AS NVARCHAR(50)) + ' | old time: ' + CAST(@InizioStatoPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@InizioStato AS NVARCHAR(250)) + ' | old kanban: ' + CAST(@MatricolaKanbanPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@MatricolaKanban AS NVARCHAR(250));
				PRINT @messaggio;	
				-- elimino riga errata
				DELETE FROM EventList
				WHERE InizioStato=@InizioStato and IdxMacchina=@idxMacchina and IdxTipo=@IdxTipo and MatricolaKanban=@MatricolaKanban;
			END
		ELSE
			BEGIN
				SELECT @messaggio = 'Ok Old tipo: ' + CAST(@IdxTipoPrec AS NVARCHAR(50)) + ' - new: ' + CAST(@IdxTipo AS NVARCHAR(50)) + ' | old time: ' + CAST(@InizioStatoPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@InizioStato AS NVARCHAR(250)) + ' | old kanban: ' + CAST(@MatricolaKanbanPrec AS NVARCHAR(250)) + ' - new: ' +CAST(@MatricolaKanban AS NVARCHAR(250));
				--PRINT @messaggio;	
			END
		
		
		SET @InizioStatoPrec = @InizioStato;
		SET @IdxTipoPrec = @IdxTipo;
		SET @MatricolaKanbanPrec = @MatricolaKanban;
				
		-- Get the next values.
		FETCH NEXT FROM eventiDuplicati 
		INTO @InizioStato, @IdxTipo, @MatricolaKanban;
	END
	CLOSE eventiDuplicati;
	DEALLOCATE eventiDuplicati;
	
	-- mostro conteggio eventi
	SELECT count(*), DATEPART(DD,InizioStato) AS inizio FROM EventList
		WHERE IdxMacchina=37 
		GROUP BY DATEPART(DD,InizioStato)

END
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*************************************
* STORED PROCEDURE stp_TC_getCodArticoliByMacchinaPeriodo
* 	recupera tempi ciclo x machcian e periodo
*
* modif.:	S.E.L. - 2010.12.18
**************************************/
create PROCEDURE stp_TC_getCodArticoliByMacchinaPeriodo
(
	@IdxMacchina NVARCHAR(50),
	@Inizio DATETIME,
	@Fine DATETIME
)
AS

SELECT	DISTINCT(CodArticolo) FROM TempiCicloRilevati
WHERE	IdxMacchina = @IdxMacchina AND
		(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine) 
	

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*************************************
* STORED PROCEDURE stp_TC_getByMacchinaPeriodoArticolo
* 	recupera tempi ciclo x macchina, articolo e periodo
*
* modif.:	S.E.L. - 2010.12.18
**************************************/
create PROCEDURE stp_TC_getByMacchinaPeriodoArticolo
(
	@IdxMacchina NVARCHAR(50),
	@CodArticolo NVARCHAR(50),
	@Inizio DATETIME,
	@Fine DATETIME
)
AS

SELECT	* FROM TempiCicloRilevati
WHERE	IdxMacchina = @IdxMacchina AND CodArticolo = @CodArticolo AND
		(DataOraRif >= @Inizio) AND (DataOraRif <= @Fine) 
ORDER BY DataOraRif		

RETURN
go

commit
go



alter table DatiMacchine add
  constraint PK_DatiMacchine primary key(idxMacchina)
go






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