﻿set xact_abort on;
go

begin transaction;
go

set ANSI_NULLS on;
go

/*************************************
* STORED PROCEDURE stp_repDonati_getDatiProdMacchina
* 	restituisce i dati di produzione di una macchina
*
* modif.:	S.E.L. - 2012.03.08
**************************************/
alter PROCEDURE stp_repDonati_getDatiProdMacchina
(
	@idxMacchina NVARCHAR(50)
)
AS

-- calcolo codice articolo
DECLARE @CodArticolo NVARCHAR (50)
SET @CodArticolo = ( 
					SELECT CodArticolo FROM Kanban k
					INNER JOIN StatoMacchine sm ON k.MatricolaKanban=sm.MatricolaKanban
					WHERE sm.IdxMacchina = @idxMacchina
					)
-- calcolo il codice operatore
DECLARE @CodOperatore INT
SET @CodOperatore = ( 
					SELECT MatrOpr FROM StatoMacchine 
					WHERE IdxMacchina = @idxMacchina
					)
-- calcolo il codice ODL
DECLARE @idxODL INT
SET @idxODL =	( 
					SELECT idxODL FROM ODL
					WHERE CodArticolo = @CodArticolo AND IdxMacchina = @idxMacchina AND (ISNULL(DataFine,DATEADD(hh,1,GETDATE())) > GETDATE())
				)

					
DECLARE @PezziConf INT
SET @PezziConf =	( 
					SELECT ISNULL(SUM(TotPzProd),0) FROM DatiConfermati 
					WHERE idxODL = @idxOdl
					)
										
DECLARE @PezziLanciati INT
SET @PezziLanciati =( 
					SELECT ISNULL(SUM(NumPezzi),0) FROM ODL 
					WHERE idxODL = @idxOdl
					)

DECLARE @TCAss DECIMAL(18,8)
SET @TCAss =		( 
					SELECT ISNULL(SUM(TCAssegnato),0) FROM ODL 
					WHERE idxODL = @idxOdl
					)

-- dato l'ODL calcolo il TC Medio ed i pezzi prodotti per l'ODL
DECLARE @inizioOdl DATETIME
SET @inizioOdl =	( 
					SELECT DataInizio FROM ODL 
					WHERE idxODL = @idxOdl
					)

DECLARE @PezziProd INT
SET @PezziProd =	( 
					SELECT COUNT(*) FROM TempiCicloRilevati
					WHERE DataOraRif >= @inizioOdl
					AND TCMedio < 3 * @TCAss
					)

DECLARE @TCMed DECIMAL(18,8)
SET @TCMed =		( 
					SELECT SUM(TCMedio)/@PezziProd FROM TempiCicloRilevati
					WHERE DataOraRif >= @inizioOdl
					AND TCMedio < 3 * @TCAss
					)
					
					
SELECT @CodArticolo as CodArticolo, @PezziLanciati as PezziLanciati, @PezziProd as PezziProd, @PezziConf as PezziConf, @TCAss AS TCAssegnato, @TCMed AS TCMedio, @CodOperatore AS CodOperatore


RETURN
go

commit;
go







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