Files
WebGIM/GimDB/dbo/Stored Procedures/stp_elencoIntByIntervDateUserFiltExtended.sql
2017-01-27 22:26:50 +01:00

69 lines
2.3 KiB
Transact-SQL

/*************************************
* 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