--  
--select * from c6stagingperiodico.spb_contr_sintesi  
--where positionId is null  
-- =============================================  
-- Author:  <Author,,Name>  
-- Create date: <Create Date,,>  
-- Description: <Description,,>  
-- Aggiunta GESTIONE EligoTitoli L192 (FCianfa, 26/11/2014)  
-- =============================================  
CREATE procedure [C6StagingPeriodico].[RP_ST_CREA_POSITIONID_20190725]  
AS  
BEGIN  
 SET NOCOUNT ON;  
 -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_ST_CREA_POSITIONID_1',  
  GETDATE(),  
  'Elaborazione trimestrale'  
 )  
 --********************************************************************************************  
--select * from c6stagingperiodico.rp_catalogoprodotti  
-- FC 05052014  
-- Interventi :  
    -- Eliminata ( commentata ) where condition spb.positionid is null  
    -- Eliminato ( commentato ) ciclo While @Visible   
update C6StagingPeriodico.SPB_CONTR_SINTESI  
set positionid = null  
 declare @visible int   
 set @visible = 1  
-- while @visible >= 0  
--  begin  
   update C6StagingPeriodico.SPB_CONTR_SINTESI  
   set positionid = catalogueid   
   FROM   
   C6StagingPeriodico.SPB_CONTR_SINTESI SPB inner join   
   (  
   select * from c6stagingperiodico.rp_catalogoprodotti where visibilita = @visible  
   )CAT  
   on    
   --caso 1  
   (SPB.TipProd in ('FI', 'GE', 'ASUL', 'ASU1', 'ASVI', 'ASCM', 'AC','CC')  
   and SPB.subprod not in ('LIQUI', 'VAR5', 'VAR10', 'VAR15', 'L191', 'L192')  
--inizio intervento MIGRAZIONE ASU3   
--inizio INTERVENTO 'RE' - 20161213     
   --and spb.CODINT not in ('RS','RB','RM','RV')  
			--inizio INTERVENTO 'RF/MP' - 20171204
				--and spb.CODINT not in ('RS','RB','RM','RV','RE')  
				and spb.CODINT not in ('RS','RB','RM','RV','RE','RF')  
				--fine INTERVENTO 'RF/MP' - 20171204
--fine INTERVENTO 'RE' - 20161213     
--fine intervento MIGRAZIONE ASU3        
   and isnull(cat.CODINTERNO,'') = isnull(spb.CODINT,'')  
   and isnull(cat.CODSOTTOPRODOTTO,'') = isnull(spb.SUBPROD,''))  
--inizio intervento MIGRAZIONE ASU3     
   or  
   --caso 1a  
--inizio INTERVENTO 'RE' - 20161213     
   --(spb.CODINT in ('RS','RB','RM','RV')  
		--inizio INTERVENTO 'RF/MP' - 20171204     
			-- (spb.CODINT in ('RS','RB','RM','RV','RE')  +
			(spb.CODINT in ('RS','RB','RM','RV','RE','RF')  
			--fine INTERVENTO 'RF/MP' - 20171204
--FINE INTERVENTO 'RE' - 20161213     
   and isnull(cat.CODINTERNO,'') = isnull(spb.CODINT,'')  
   and isnull(cat.CODSOTTOPRODOTTO,'') = isnull(spb.SUBPROD,''))   
   and isnull(cat.codisin,'')  = case when isnull(spb.ISIN,'') = 'NA' then '' else isnull(spb.ISIN,'') end  
--fine intervento MIGRAZIONE ASU3           
   or   
   --else caso 1b   
   (SPB.TipProd in ('FI', 'GE', 'ASUL', 'ASU1', 'ASVI', 'ASCM', 'AC','CC')  
   and SPB.subprod in ('LIQUI', 'VAR5', 'VAR10', 'VAR15', 'L191', 'L192')  
   and isnull(cat.CODINTERNO,'') = isnull(spb.CODINT,'')  
   and isnull(cat.CODSOTTOPRODOTTO,'') = isnull(spb.SUBPROD,'')  
   and cat.TIPOPRODOTTO = SPB.TipProd   
   )  
   or  
   --caso 2  
--   (SPB.TipProd in ('ASU2')  
   (SPB.TipProd in ('ASU2','GP')  
   and isnull(cat.CODINTERNO,'') = isnull(spb.CODINT,'')  
   and isnull(cat.CODSOTTOPRODOTTO,'') = isnull(spb.SUBPROD,'')  
   and isnull(cat.codisin,'')  = case when isnull(spb.ISIN,'') = 'NA' then '' else isnull(spb.ISIN,'') end  
   )  
   or  
   --caso 3  
   (SPB.TipProd in ('DT','ASD')  
   and isnull(cat.CODINTERNO,'') = isnull(spb.CODINT,'')  
   )  
   or  
   --caso 4  
   (SPB.TipProd in ('GES')  
   and isnull(cat.CODINTERNO,'') = isnull(spb.CODINT,'')   
   and isnull(cat.CODMAF,'') = isnull(spb.MAF,'')  
   )  
--   --caso 5  
--   or  
--   (SPB.isin = 'EURO00000009'  
--   and isnull(cat.CODINTERNO,'') = isnull(spb.CODINT,'')  
--   and isnull(cat.CODSOTTOPRODOTTO,'') = isnull(spb.SUBPROD,'')  
--   and isnull(cat.codisin,'')  = case when isnull(spb.ISIN,'') = 'NA' then '' else isnull(spb.ISIN,'') end  
--   )  
--   where spb.positionid is null  
--   set @visible = @visible - 1  
--  end  
 -- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO  
 SET  
  Fine = GETDATE(),  
  Tipo = 'UPDATE',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_ST_CREA_POSITIONID_1' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_ST_CREA_POSITIONID_1'  
  )  
    --********************************************************************************************  
    -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_ST_CREA_POSITIONID_2',  
  GETDATE(),  
  'Elaborazione trimestrale'  
 )  
 -- drop table #TAB1  
 SELECT distinct  
  TIPPROD,  
  CODINT,  
  MAF,  
  CASE WHEN ISIN = 'NA' THEN '' ELSE ISIN END AS CODISIN,  
  SUBPROD,  
  POSITIONID,  
  RETE,  
  codfis  
 INTO #TAB1    
 FROM C6StagingPeriodico.SPB_CONTR_SINTESI where POSITIONID IS NULL   
 UPDATE  #TAB1  
  SET POSITIONID = C6STAGINGPERIODICO.RP_INFO_DAPRODOTTOCSACATALOGO (  
      TIPPROD,   
      CODINT,   
      MAF,      
      CODISIN,  
      SUBPROD  
      )     
 UPDATE  C6StagingPeriodico.SPB_CONTR_SINTESI  
   SET POSITIONID = t.POSITIONID   
  FROM   C6StagingPeriodico.SPB_CONTR_SINTESI c  
   inner join #TAB1 t   
   ON  isnull(t.TIPPROD,'')=isnull(c.TIPPROD,'')  
   AND isnull(t.CODINT,'')=isnull(c.CODINT,'')  
   AND isnull(t.MAF,'')=isnull(c.MAF,'')  
   AND t.CODISIN = CASE WHEN ISIN = 'NA' THEN '' ELSE ISIN END      
   AND isnull(t.SUBPROD,'')=isnull(c.SUBPROD,'')  
 -- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO  
 SET  
  Fine = GETDATE(),  
  Tipo = 'UPDATE',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_ST_CREA_POSITIONID_2' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_ST_CREA_POSITIONID_2'  
  )  
 --**********************************************************************************************  
      -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_ST_CREA_POSITIONID_3',  
  GETDATE(),  
  'Elaborazione trimestrale'  
 )  
      UPDATE  C6StagingPeriodico.SPB_CONTR_SINTESI  
   SET POSITIONID = POSITIONID + dbo.Crea_positionID  
             (  
             TIPPROD,   
             CODINT,   
             MAF,   
             '',   
             SUBPROD,   
             CODCONF, -- VERIFICARNE LA CORRETTEZZA  
             NUMPOL,   
             CONTO,  
             RUBR,   
             CUSTGAR,   
             CASE  
              WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 3))) = '' THEN ''  
              ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 3) AS varchar(8))  
             END,   
             CASE  
              WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 2))) = '' THEN 0  
              ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 2) AS decimal(3, 0))  
             END,   
             CASE  
              WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1))) = '' THEN 0  
              ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1) AS decimal(9, 0))  
             END  
             )  
           WHERE POSITIONID IS NOT NULL  
    INSERT INTO C6MARTPERIODICO.TEST_QUALITY  
   SELECT RETE, codfis, 'SPB_CONTR_SINTESI.POSITIONID IS NULL'   
   FROM C6StagingPeriodico.SPB_CONTR_SINTESI WHERE ISNULL(POSITIONID,'') =''  
   GROUP BY RETE, codfis  
 --SELECT @CNT = COUNT(*) FROM C6StagingPeriodico.SPB_CONTR_SINTESI WHERE isnull(POSITIONID,'') = ''  
 --IF @CNTNULL > 0  
 -- RAISERROR ('SPB_CONTR_SINTESI.POSITIONID IS NULL', 16, 1 )  
-- UPDATE      
--  C6StagingPeriodico.SPB_CONTR_SINTESI  
-- SET         
--  POSITIONID =   
----  CASE   
----   WHEN TIPPROD = 'CC' THEN ''   --MODIFICA TRINGALI  
----   ELSE   
--             [C6StagingPeriodico].[RP_Info_DaProdottoCSaCatalogo] --dbo.Info_DaProdottoCSaCatalogo  
--    (  
--    TIPPROD,   
--    CODINT,   
--    MAF,   
--    --V ISIN per ASU2  
--    CASE WHEN ISIN = 'NA' THEN '' ELSE ISIN END,   
--    SUBPROD  
--    )   
--  --END  
--        +   
--   dbo.Crea_positionID  
--    (  
--    TIPPROD,   
--    CODINT,   
--    MAF,   
--    '',   
--    SUBPROD,   
--    CODCONF, -- VERIFICARNE LA CORRETTEZZA  
--    NUMPOL,   
--    CONTO,  
--                RUBR,   
--    CUSTGAR,   
--    CASE  
--     WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 3))) = '' THEN ''  
--     ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 3) AS varchar(8))  
--    END,   
--    CASE  
--     WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 2))) = '' THEN 0  
--     ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 2) AS decimal(3, 0))  
--    END,   
--    CASE  
--     WHEN PCTKEY IS NULL OR PCTKEY = '' OR LTRIM(RTRIM(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1))) = '' THEN 0  
--     ELSE CAST(PARSENAME(REPLACE(PCTKEY, '/', '.'), 1) AS decimal(9, 0))  
--    END  
--    )  
 -- Log esecuzione  
 UPDATE  
  LOG_ESECUZIONE_PERIODICO  
 SET  
  Fine = GETDATE(),  
  Tipo = 'UPDATE',  
  Righe = @@ROWCOUNT  
 WHERE  
  Nome = 'RP_ST_CREA_POSITIONID_3' AND  
  Inizio = (  
   SELECT  
    MAX(Inizio)  
   FROM  
    LOG_ESECUZIONE_PERIODICO  
   WHERE  
    Nome = 'RP_ST_CREA_POSITIONID_3'  
  )  
END