spostamento update SQL
This commit is contained in:
@@ -0,0 +1,538 @@
|
||||
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
|
||||
Reference in New Issue
Block a user