﻿


/*************************************
* STORED PROCEDURE stp_elencoIntByIntervDateUserFiltExtended
* 	Recupera elenco interventi a partire dalle date inizio/fine di ricerca e dall'username ed i relativi filtri di ricerca salvati
*
*   Versione estesa x stampa con Totale Importo Materiali e Ore Operatori Esterni
*   NOTE : Le Ore Operatori Esterni sono TUTTE quelle con UM = MIN ( minuti )
*   
* Steamware
* modif. 2015.10.29
**************************************/
CREATE PROCEDURE [dbo].[stp_elencoIntByIntervDateUserFiltExtended] 
(
     @inizio    DATETIME
    ,@fine      DATETIME
    ,@username  VARCHAR(50)
)
AS

SELECT
     IntervFilt.codImpianto
    ,IntervFilt.codMacchina
    ,IntervFilt.descrCausale
    ,IntervFilt.descrizione
    ,IntervFilt.descrizioneIntervento
    ,IntervFilt.durataMtz
    ,IntervFilt.durataOff
    ,IntervFilt.fineIntervento
    ,IntervFilt.guasto
    ,IntervFilt.idxImpianto
    ,IntervFilt.idxMacchina
    ,IntervFilt.idxStato
    ,IntervFilt.inizioIntervento
    ,IntervFilt.minErogati
    ,IntervFilt.nomeImpianto
    ,IntervFilt.nomeMacchina
    ,IntervFilt.numIntMtz
    ,IntervFilt.richiesta
    ,IntervFilt.isFermo
    ,IntervFilt.scheduled
    -- estraggo TOTALE importo della Risorsa MAT ( Materiali )
    ,( SELECT ISNULL(SUM(TotImport),0) FROM dbo.ImpiegoRisorse AS RisMAT 
       WHERE CodRisorsa = 'MAT' AND RisMAT.numIntMtz = IntervFilt.numIntMtz ) AS totImpMat

    -- estraggo TOTALE Quantità della ORE operatori Esterni - presupposto che tutte causali con UM = ORE siano di opearori esterni
    ,( SELECT ISNULL(SUM(QtaRisorsa),0) FROM dbo.ImpiegoRisorse AS RisMAT 
       INNER JOIN dbo.AnagTipoRisorsa AS AnagRis 
            ON RisMAT.CodRisorsa = AnagRis.CodRisorsa
       WHERE AnagRis.UM = 'MIN' AND RisMAT.numIntMtz = IntervFilt.numIntMtz ) / 60  AS totQtaHR

FROM v_elencoIntervFilt AS IntervFilt
INNER JOIN FiltroImpianti   
    ON IntervFilt.idxImpianto = FiltroImpianti.idxImpianto
INNER JOIN FiltroMacchine   
    ON IntervFilt.idxMacchina = FiltroMacchine.idxMacchina
INNER JOIN FiltroStati      
    ON IntervFilt.idxStato = FiltroStati.idxStato

WHERE (IntervFilt.richiesta BETWEEN @inizio AND @fine) 
    AND (FiltroStati.username       = @username) 
    AND (FiltroMacchine.username    = @username) 
    AND (FiltroImpianti.username    = @username)

RETURN


