539 lines
20 KiB
Transact-SQL
539 lines
20 KiB
Transact-SQL
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
|