
/***************************************
* STORED stp_ArtiInProd_ByImpData
*
* ottiene l'elenco dei particolari in lavorazione in una certa data/ora (già trasformato data+turno in dataora) su un impianto 
* --> con dettaglio su articoli (da anagrafica)
*
* Steamware, S.E.L.
* mod: 2010.04.29
*
****************************************/
CREATE PROCEDURE [dbo].[stp_ArtiInProd_ByImpData]
  (
   @CodImpianto VARCHAR(50)
  ,@DataRif DATETIME
  )
AS -- iniziamo definendo le varie viste accessorie
WITH  cteUltStampo
        AS (
             SELECT CodStampo
                   ,InizioValidita
                   ,ProgFigure
                   ,FineValidita
                   ,NumCommessa
                   ,NumFigure
                   ,CodCliente
                   ,CodArticolo
                   ,Particolare
             FROM   RilPro.StampoArticolo AS A
             WHERE  (
                      @DataRif >= InizioValidita
                      AND @DataRif <= ISNULL(FineValidita, DATEADD(year, 2, GETDATE()))
                    )
           ),
      cteEspAttivi
        AS (
             SELECT s.CodStampo
                   ,s.Esponente
                   ,s.EspAttivo
                   ,s.DataInserim
                   ,s.DataValidita
             FROM   RilPro.StampoEsponente AS s
             INNER JOIN (
                          SELECT  CodStampo
                                 ,MAX(DataValidita) AS DataValidita
                          FROM    RilPro.StampoEsponente
                          WHERE   ( DataValidita <= @DataRif )
                                  AND ( EspAttivo = 'S' )
                          GROUP BY CodStampo
                        ) AS s2
             ON     s.CodStampo = s2.CodStampo
                    AND s.DataValidita = s2.DataValidita
           ),
      cteLineeAttive
        AS (
             SELECT CodImpianto
                   ,CodStampo
                   ,NumStampate
                   ,CONVERT(DATETIME, DataInizio) AS DataInizio
                   ,DataFine
                   ,TurnoInizio
                   ,TurnoFine
             FROM   RilPro.LineaStampi
             WHERE  ( @DataRif BETWEEN DataInizio AND ISNULL(DataFine, DATEADD(year, 2, GETDATE())) )
                    AND CodImpianto = @CodImpianto
           )
  -- faccio la select principale
SELECT  l.CodImpianto
       ,l.CodStampo
       ,l.NumStampate
       ,l.DataInizio
       ,l.TurnoInizio
       ,g.InizioValidita
       ,g.FineValidita
       ,g.NumFigure
       ,dbo.f_padLeft(CAST(g.CodCliente AS varchar(50)), 5, '0') AS CodCliente
       ,ISNULL(cl.RagSociale, '-') AS RagSociale
       ,CAST(g.CodArticolo AS varchar(50)) AS CodArticolo
       ,g.Particolare
       ,pa.DescParticolare
       ,pa.DisegnoGrezzo
       ,pa.CodFamiglia
       ,fa.DescFamiglia
       ,fi.Figura
       ,es.Esponente
FROM    cteLineeAttive AS l
INNER JOIN cteUltStampo AS g
ON      l.CodStampo = g.CodStampo
LEFT OUTER JOIN RilPro.StampoFigure AS fi
ON      l.CodStampo = fi.CodStampo
LEFT OUTER JOIN cteEspAttivi AS es
ON      g.CodStampo = es.CodStampo
LEFT OUTER JOIN RilPro.AnagParticolari AS pa
ON      g.Particolare = pa.Particolare
LEFT OUTER JOIN RilPro.AnagFamiglie AS fa
ON      pa.CodFamiglia = fa.CodFamiglia
LEFT OUTER JOIN RilPro.AnagClienti AS cl
ON      g.CodCliente = cl.CodCliente
ORDER BY l.CodImpianto

RETURN
