﻿set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

-- =============================================
-- TRIGGER trg_kanban4articoloIns 
--
-- Author:		S.E.L.
-- Create date: 2011.05.17
-- Description:	Controlla esistenza etichette kanban per l'articolo creato ed in caso sia necessario le crea
-- =============================================
create TRIGGER trg_kanban4articoloIns 
   ON  AnagArticoli
   AFTER INSERT
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- seleziono il nuovo articolo... 
    DECLARE @kanbanTrovati	INT
    DECLARE @CodArticolo	NVARCHAR(50)
    
    SET		@CodArticolo = ( SELECT CodArticolo FROM inserted )
    -- ...e cerco se ci sia un kanban x tale articolo tabella
    SET		@kanbanTrovati = ( SELECT ISNULL(COUNT(*),0) FROM Kanban WHERE CodArticolo = @CodArticolo )
    
    -- se non ne ho trovati creo articolo!
    IF(@kanbanTrovati = 0) 
		BEGIN
			-- inserisco nuovo articolo!
			INSERT INTO Kanban(MatricolaKanban, KanbanCode, TempoCicloBase, PzPallet, CodArticolo)
			VALUES ('KA'+@CodArticolo, @CodArticolo, 1, 1, @CodArticolo)	
		END 

END
go

-- =============================================
-- TRIGGER trg_kanban4articoloUpd 
--
-- Author:		S.E.L.
-- Create date: 2011.05.17
-- Description:	Controlla esistenza etichette kanban per l'articolo modificato ed in caso sia necessario le modifica
-- =============================================
create TRIGGER trg_kanban4articoloUpd
   ON  AnagArticoli
   AFTER UPDATE
AS 
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	
	-- solo se è stato aggiornato codice articolo...
    IF UPDATE(CodArticolo)
    BEGIN
		-- seleziono l'articolo...
	    DECLARE @kanbanTrovati	INT 
		DECLARE @CodArticoloOld	NVARCHAR(50)
		DECLARE @CodArticoloNew NVARCHAR(50)
	    
		SET		@CodArticoloOld = ( SELECT CodArticolo FROM deleted )
		SET		@CodArticoloNew = ( SELECT CodArticolo FROM inserted )
		-- ...e cerco se ci sia un kanban x tale articolo tabella
		SET		@kanbanTrovati = ( SELECT ISNULL(COUNT(*),0) FROM Kanban WHERE CodArticolo = @CodArticoloOld )
	    
		-- se non ne ho trovati creo articolo!
		IF(@kanbanTrovati = 0) 
			BEGIN
				-- inserisco nuovo articolo!
				INSERT INTO Kanban(MatricolaKanban, KanbanCode, TempoCicloBase, PzPallet, CodArticolo)
				VALUES ('KA'+@CodArticoloNew, @CodArticoloNew, 1, 1, @CodArticoloNew)	
			END 
		ELSE -- altrimenti aggiorno!
			BEGIN
				UPDATE	Kanban
				SET		MatricolaKanban = 'KA'+@CodArticoloNew,
						CodArticolo = @CodArticoloNew,
						KanbanCode	= @CodArticoloNew
				WHERE	CodArticolo = @CodArticoloOld
			END
	END
END
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

create TRIGGER trg_updateKanban
ON EventList
FOR INSERT
AS 	/* dichiarazione variabili */
	DECLARE @IdxTipo INT
	DECLARE @TabAzione NVARCHAR(50)
	DECLARE @Azione NVARCHAR(50)
	DECLARE @IdxMacchina NVARCHAR(50)
	DECLARE @MatricolaKanban NVARCHAR(50)
	DECLARE @MatricolaKanbanOk NVARCHAR(50)
	DECLARE @CodArticolo NVARCHAR(50)
	DECLARE @TCMedio DECIMAL(18,8)
	DECLARE @DataOra DATETIME
	DECLARE @DataOraPrec DATETIME
	DECLARE @NumPz INT

	/* recupero valori dell'INSERT */
	SET @IdxTipo		= ( SELECT i.IdxTipo FROM inserted i )
	SET @IdxMacchina	= ( SELECT i.IdxMacchina FROM inserted i )
	/* recupero altri valori */
	SET @TabAzione	= ( SELECT ISNULL(TabAzione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
	SET @Azione		= ( SELECT ISNULL(Azione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
	/* controllo se l'evento richieda azioni successive */
	IF(@TabAzione <> '' AND @Azione <> '')
		BEGIN
			/* azioni richieste: seconda dei casi eseguo... */		
			IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Insert')
				BEGIN
					/* calcolo valori */
					SET @DataOra			= ( SELECT i.InizioStato FROM inserted i )
					SET @MatricolaKanban	= ( SELECT i.MatricolaKanban FROM inserted i )
					SET @NumPz				= ( SELECT CASE WHEN (ISNUMERIC(value)=1) THEN value ELSE 1 END FROM inserted i )
					SET @CodArticolo		= ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanban )
					/* calcolo tempo tra gli ultimi 2 eventi "contapezzi" */
					SET @DataOraPrec		= ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
					/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
					SET @TCMedio			= ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
					/* inserisco riga di tempo ciclo */
					INSERT INTO TempiCicloRilevati
						VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
				END
			ELSE IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Stop2StartCiclo')
				BEGIN				
					/* calcolo valori */
					SET @DataOra			= ( SELECT i.InizioStato FROM inserted i )
					SET @MatricolaKanban	= ( SELECT i.MatricolaKanban FROM inserted i )
					/* prendo la matricola dall'evento inizio (precedente) */
					SET @MatricolaKanbanOk	= ( SELECT ISNULL((SELECT Top 1 MatricolaKanban FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo - 1 AND InizioStato < @DataOra ORDER BY InizioStato DESC), @MatricolaKanban ) )
					
					-- calcolare num pezzi da codice...
					SET @NumPz				= ( SELECT CASE WHEN (ISNUMERIC(value)=1) THEN value ELSE 1 END FROM inserted i )
					SET @CodArticolo		= ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanbanOk )
					/* calcolo tempo tra eventi "contapezzi" inizio - fine NB: idxEvento per fine è idxEvento inizio + 1 ... HARD CODED!!! */
					SET @DataOraPrec		= ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo - 1 AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
					/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
					SET @TCMedio			= ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
					/* inserisco riga di tempo ciclo */
					INSERT INTO TempiCicloRilevati
						VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
				END
			ELSE IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Stop2StopCiclo')
				BEGIN				
					/* calcolo valori */
					SET @DataOra			= ( SELECT i.InizioStato FROM inserted i )
					SET @MatricolaKanban	= ( SELECT i.MatricolaKanban FROM inserted i )
					/* prendo la matricola dall'evento inizio (precedente) */
					SET @MatricolaKanbanOk	= ( SELECT ISNULL((SELECT Top 1 MatricolaKanban FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @MatricolaKanban ) )
					
					-- calcolare num pezzi da codice...
					SET @NumPz				= ( SELECT PzPallet FROM Kanban WHERE MatricolaKanban = @MatricolaKanbanOk )
					SET @CodArticolo		= ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanbanOk )
					/* calcolo tempo tra eventi "contapezzi" fine - fine NB: idxEvento per fine è idxEvento inizio + 1 ... HARD CODED!!! */
					SET @DataOraPrec		= ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
					/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
					SET @TCMedio			= ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
					/* inserisco riga di tempo ciclo */
					INSERT INTO TempiCicloRilevati
						VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
				END
		END
go

/***************************************************
* Trigger trg_doActions
*
* processa eventuali azioni legate ad un inserimento evento
*
* modificato: S.E.L.
* 2011.05.18
*
***************************************************/
alter TRIGGER trg_doActions
ON EventList
FOR INSERT
AS 	/* dichiarazione variabili */
	DECLARE @IdxTipo INT
	DECLARE @TabAzione NVARCHAR(50)
	DECLARE @Azione NVARCHAR(50)
	DECLARE @IdxMacchina NVARCHAR(50)
	DECLARE @MatricolaKanban NVARCHAR(50)
	DECLARE @MatricolaKanbanOk NVARCHAR(50)
	DECLARE @CodArticolo NVARCHAR(50)
	DECLARE @TCMedio DECIMAL(18,8)
	DECLARE @DataOra DATETIME
	DECLARE @DataOraPrec DATETIME
	DECLARE @NumPz INT

	/* recupero valori dell'INSERT */
	SET @IdxTipo		= ( SELECT i.IdxTipo FROM inserted i )
	SET @IdxMacchina	= ( SELECT i.IdxMacchina FROM inserted i )
	/* recupero altri valori */
	SET @TabAzione	= ( SELECT ISNULL(TabAzione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
	SET @Azione		= ( SELECT ISNULL(Azione,'') FROM AnagraficaEventi WHERE IdxTipo = @IdxTipo )
	/* controllo se l'evento richieda azioni successive */
	IF(@TabAzione <> '' AND @Azione <> '')
		BEGIN
			/* azioni richieste: seconda dei casi eseguo... */
			
			/******************************************
			*
			* Calcolo tempo ciclo per INIZIO
			*
			******************************************/		
			IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Insert')
				BEGIN
					/* calcolo valori */
					SET @DataOra			= ( SELECT i.InizioStato FROM inserted i )
					SET @MatricolaKanban	= ( SELECT i.MatricolaKanban FROM inserted i )
					SET @NumPz				= ( SELECT CASE WHEN (ISNUMERIC(value)=1) THEN value ELSE 1 END FROM inserted i )
					SET @CodArticolo		= ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanban )
					/* calcolo tempo tra gli ultimi 2 eventi "contapezzi" */
					SET @DataOraPrec		= ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
					/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
					SET @TCMedio			= ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
					/* inserisco riga di tempo ciclo */
					INSERT INTO TempiCicloRilevati
						VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
				END
			/******************************************
			*
			* Calcolo tempo ciclo con logica stop/start
			*
			******************************************/
			ELSE IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Stop2StartCiclo')
				BEGIN				
					/* calcolo valori */
					SET @DataOra			= ( SELECT i.InizioStato FROM inserted i )
					SET @MatricolaKanban	= ( SELECT i.MatricolaKanban FROM inserted i )
					/* prendo la matricola dall'evento inizio (precedente) */
					SET @MatricolaKanbanOk	= ( SELECT ISNULL((SELECT Top 1 MatricolaKanban FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo - 1 AND InizioStato < @DataOra ORDER BY InizioStato DESC), @MatricolaKanban ) )
					
					-- calcolare num pezzi da codice...
					SET @NumPz				= ( SELECT CASE WHEN (ISNUMERIC(value)=1) THEN value ELSE 1 END FROM inserted i )
					SET @CodArticolo		= ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanbanOk )
					/* calcolo tempo tra eventi "contapezzi" inizio - fine NB: idxEvento per fine è idxEvento inizio + 1 ... HARD CODED!!! */
					SET @DataOraPrec		= ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo - 1 AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
					/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
					SET @TCMedio			= ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
					/* inserisco riga di tempo ciclo */
					INSERT INTO TempiCicloRilevati
						VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
				END
			/******************************************
			*
			* calcolo tempo ciclo con logica stop/stop
			*
			******************************************/
			ELSE IF(@TabAzione = 'TempiCicloRilevati' AND @Azione = 'Stop2StopCiclo')
				BEGIN				
					/* calcolo valori */
					SET @DataOra			= ( SELECT i.InizioStato FROM inserted i )
					SET @MatricolaKanban	= ( SELECT i.MatricolaKanban FROM inserted i )
					/* prendo la matricola dall'evento inizio (precedente) */
					SET @MatricolaKanbanOk	= ( SELECT ISNULL((SELECT Top 1 MatricolaKanban FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @MatricolaKanban ) )
					
					-- calcolare num pezzi da codice...
					SET @NumPz				= ( SELECT PzPallet FROM Kanban WHERE MatricolaKanban = @MatricolaKanbanOk )
					SET @CodArticolo		= ( SELECT CodArticolo FROM Kanban WHERE MatricolaKanban = @MatricolaKanbanOk )
					/* calcolo tempo tra eventi "contapezzi" fine - fine NB: idxEvento per fine è idxEvento inizio + 1 ... HARD CODED!!! */
					SET @DataOraPrec		= ( SELECT ISNULL((SELECT Top 1 InizioStato FROM EventList WHERE IdxMacchina = @IdxMacchina AND IdxTipo = @IdxTipo AND InizioStato < @DataOra ORDER BY InizioStato DESC), @DataOra ) )
					/* è in millisecondi, divido per 60'000.00 x avere minuti centesimali*/
					SET @TCMedio			= ( SELECT (DATEDIFF(ms, @DataOraPrec, @DataOra) / 60000.00 ) )
					/* inserisco riga di tempo ciclo */
					INSERT INTO TempiCicloRilevati
						VALUES(@IdxMacchina, @CodArticolo, @DataOra, @TCMedio, @NumPz)
				END
			/******************************************
			*
			* Aggiorno kanban in dati macchine per
			* INIZIO ATTREZZAGGIO
			*
			******************************************/
			ELSE IF(@TabAzione = 'DatiMacchine' AND @Azione = 'Inizio')
				BEGIN				
					/* calcolo valori */
					SET @MatricolaKanban	= ( SELECT i.MatricolaKanban FROM inserted i )
					/* aggiorno riga di dati macchina */
					UPDATE DatiMacchine
						SET		kanban_A	= @MatricolaKanban,
								kanban_B	= @MatricolaKanban
						WHERE	idxMacchina = @IdxMacchina
					/* aggiorno stato macchina */
					UPDATE StatoMacchine
						SET		MatricolaKanban	= @MatricolaKanban
						WHERE	idxMacchina = @IdxMacchina
					/* aggiorno dati kanban statoMacchine... 	*/
					UPDATE    StatoMacchine
						SET              KanbanCode = k.KanbanCode, TempoCicloBase = k.TempoCicloBase, PzPalletProd = k.PzPallet
						FROM         Kanban AS k INNER JOIN StatoMacchine ON k.MatricolaKanban = StatoMacchine.MatricolaKanban
						WHERE     (StatoMacchine.idxMacchina = @IdxMacchina)
				END
			/******************************************
			*
			* Aggiorno kanban in dati macchine per
			* FINE PRODUZIONE
			*
			******************************************/
			ELSE IF(@TabAzione = 'DatiMacchine' AND @Azione = 'Fine')
				BEGIN				
					/* calcolo valori */
					SET @MatricolaKanban	= 'KAND' -- kanban non definito !!!HARD CODED!!!
					/* aggiorno riga di dati macchina */
					UPDATE DatiMacchine
						SET		kanban_A	= @MatricolaKanban,
								kanban_B	= @MatricolaKanban
						WHERE	idxMacchina = @IdxMacchina
					/* aggiorno stato macchina */
					UPDATE StatoMacchine
						SET		MatricolaKanban	= @MatricolaKanban
						WHERE	idxMacchina = @IdxMacchina
					/* aggiorno dati kanban statoMacchine... 	*/
					UPDATE    StatoMacchine
						SET              KanbanCode = k.KanbanCode, TempoCicloBase = k.TempoCicloBase, PzPalletProd = k.PzPallet
						FROM         Kanban AS k INNER JOIN StatoMacchine ON k.MatricolaKanban = StatoMacchine.MatricolaKanban
						WHERE     (StatoMacchine.idxMacchina = @IdxMacchina)
					
				END
		END
go

commit
go

set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*************************************
* Function f_turnoByDate
* 	calcola il turno in cui cade una data
*
* modif.:	S.E.L.
* il:		2011.03.30
**************************************/
create FUNCTION f_oreNdPeriodo
(
	@dataFrom	DATETIME,
	@dataTo		DATETIME
)
RETURNS DECIMAL(18,8)
AS
	BEGIN
	/*
	per farlo va reinserito codice come GIM in questo modo...
	- tempo totale iniziale c'è...
	A) va tolto tempo dell'apertura std
	B) vanno tolte le fermate tipo ferie, chiusure...x la loro durata std
	
	
	*/
	
	RETURN 0.0
	END
go

commit
go


set xact_abort on
go

begin transaction
go

set ANSI_NULLS on
go

/*************************************
* STORED PROCEDURE stp_DP_ricalcolaTempi
*
*	calcola i tempi 
* - T_AutoRun (lavorazione in auto)
* - T_Auto (in auto sia lavora che non lavora)
* - T_fermo (tempo fermata)
* - T_ND (tempo ND)
*
*	dato una riga di dichairazione produzione (prendendo come riferimento i tempi from/to)
*
* modif.:	S.E.L. - 2011.04.18
**************************************/
alter PROCEDURE stp_DP_ricalcolaTempi
(
	@idxConferma INT
)
AS

BEGIN TRAN
	-- dichiaro variabili
	DECLARE @DataFrom AS DATETIME
	DECLARE @DataTo AS DATETIME
	DECLARE @IdxMacchina AS NVARCHAR(50)
	
	-- variabili tempo
	DECLARE @TempoCron DECIMAL(18,8)
	DECLARE @TempoND DECIMAL(18,8)
	DECLARE @TempoApertura DECIMAL(18,8)
	DECLARE @TempoOFF DECIMAL(18,8)
	DECLARE @TempoON DECIMAL(18,8)
	DECLARE @TempoFermoON DECIMAL(18,8)
	DECLARE @TempoAuto DECIMAL(18,8)
	DECLARE @TempoFermoAuto DECIMAL(18,8)
	DECLARE @TempoRun DECIMAL(18,8)
	
	-- setto date
	SET		@DataFrom		= (	SELECT	DataOraFrom FROM DatiConfermati WHERE IdxConferma = @idxConferma )
	SET		@DataTo			= (	SELECT	DataOraTo FROM DatiConfermati WHERE IdxConferma = @idxConferma )
	SET		@IdxMacchina	= (	SELECT	IdxMacchina FROM DatiConfermati WHERE IdxConferma = @idxConferma )
	
	-- calcolo i tempi
	SET		@TempoCron		= (	SELECT	CAST(ISNULL(DATEDIFF (n, @DataFrom, @DataTo), 0) AS DECIMAL(18,8)) / 60)	
	SET		@TempoND		= dbo.f_oreNdPeriodo(@DataFrom, @DataTo)-- 0 -- FARE!!! (SELECT DATEDIFF (n, DataOraFrom, DataOraTo) / 60 FROM DatiConfermati WHERE IdxConferma = @idxConferma )
	
	
	
	SET		@TempoApertura	= @TempoCron - @TempoND
	SET		@TempoOFF		= (	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 = 'T_OFF')
								AND		(ddb.IdxMacchina = @IdxMacchina) 
								AND		(ddb.InizioStato >= @DataFrom) 
								AND		(ddb.FineStato <= @DataTo) )-- sistemare eventuali eventi sui bordi inizio/fine
	SET		@TempoON		= @TempoApertura - @TempoOFF
	SET		@TempoFermoON	= (	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 = 'T_FermoOn')
								AND		(ddb.IdxMacchina = @IdxMacchina) 
								AND		(ddb.InizioStato >= @DataFrom) 
								AND		(ddb.FineStato <= @DataTo) )-- sistemare eventuali eventi sui bordi inizio/fine
	SET		@TempoAuto		= @TempoON - @TempoFermoON
	/* -- lo derivo x riportare eventuali "resti" ed errori riclassifica
	SET		@TempoFermoAuto	= (SELECT SUM(ddb.DurataMinuti) / 60 AS ore FROM DiarioDiBordo ddb INNER JOIN AnagraficaStati a ON ddb.IdxStato = a.IdxStato
								WHERE	(a.ClasseTempo = 'T_FermoAuto')
								AND		(ddb.IdxMacchina = @IdxMacchina) 
								AND		(ddb.InizioStato >= @DataFrom) 
								AND		(ddb.FineStato <= @DataTo) )-- sistemare eventuali eventi sui bordi inizio/fine
	*/
	SET		@TempoRun		= (	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 = 'T_Run')
								AND		(ddb.IdxMacchina = @IdxMacchina) 
								AND		(ddb.InizioStato >= @DataFrom) 
								AND		(ddb.FineStato <= @DataTo) )-- sistemare eventuali eventi sui bordi inizio/fine
	SET		@TempoFermoAuto		= @TempoAuto - @TempoRun
	
	-- aggiorno record
	UPDATE	DatiConfermati
	SET		TempoCron		= @TempoCron,
			TempoND			= @TempoND,
			TempoApertura	= @TempoApertura,
			TempoOFF		= @TempoOFF,
			TempoON			= @TempoON,
			TempoFermoON	= @TempoFermoON,
			TempoAuto		= @TempoAuto,
			TempoFermoAuto	= @TempoFermoAuto,
			TempoRun		= @TempoRun
	WHERE	idxConferma = @idxConferma

COMMIT TRAN

RETURN
go

commit
go


set xact_abort on
go

begin transaction
go

UPDATE dbo.AnagraficaEventi SET 
  TabAzione=N'DatiMacchine', Azione=N'Inizio'
  WHERE IdxTipo=2
UPDATE dbo.AnagraficaEventi SET 
  TabAzione=N'DatiMacchine', Azione=N'Fine'
  WHERE IdxTipo=7
go

commit transaction
go


set xact_abort on
go

begin transaction
go

INSERT INTO dbo.Kanban
  VALUES (N'KAND', N'ND', 1, 1, N'ND')
go

commit transaction
go








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