CREATE procedure [C6StagingPeriodico].[RP_CREA_POSITIONID_CONSULENZA_20190725]  
AS  
BEGIN  
  -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO  
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_CREA_POSITIONID_CONSULENZA',  
  GETDATE(),  
  'Elaborazione Trimestrale'  
 )  
truncate table TAB1  
insert into TAB1  
SELECT distinct  
  TIPOPRODOTTO,  
  CODINTERNO,  
  CODMAF,  
--***INIZIO INTERVENTI OMNIA***    
--  CASE WHEN TIPOPRODOTTO = 'ASU2' THEN ISNULL(CODISIN,'') ELSE '' END AS CODISIN,  
--INIZIO INTERVENTO MIGRAZIONE ASU3  
--  CASE WHEN TIPOPRODOTTO in ('ASU2','GP') THEN ISNULL(CODISIN,'') ELSE '' END AS CODISIN,  
--inizio INTERVENTO 'RE' - 20161213     
  --CASE WHEN TIPOPRODOTTO in ('ASU2','GP') OR CODINTERNO in ('RV','RM', 'RS','RB') THEN ISNULL(CODISIN,'')  
		--inizio INTERVENTO 'RF/MP' - 20171204     
			--CASE WHEN TIPOPRODOTTO in ('ASU2','GP') OR CODINTERNO in ('RV','RM', 'RS','RB','RE') THEN ISNULL(CODISIN,'')   
			CASE WHEN TIPOPRODOTTO in ('ASU2','GP') OR CODINTERNO in ('RV','RM', 'RS','RB','RE','RF') THEN ISNULL(CODISIN,'')   
		--fine INTERVENTO 'RF/MP' - 20171204
    ELSE '' END AS CODISIN,  
--FINE INTERVENTO 'RE' - 20161213     
--FINE INTERVENTO MIGRAZIONE ASU3  
--***FINE INTERVENTI OMNIA***    
  CODSOTTOPRODOTTO,  
  position_id  
--INTO TAB1  
FROM C6StagingPeriodico.RP_CONSULENZA   
UPDATE  TAB1  
 SET position_id =      
     --DBO.INFO_DAPRODOTTOCSACATALOGO (         
       C6STAGINGPERIODICO.RP_INFO_DAPRODOTTOCSACATALOGO (  
      TIPOPRODOTTO,   
      CODINTERNO,   
      CODMAF,      
      CODISIN,  
      CODSOTTOPRODOTTO  
    )   
DECLARE @CNTNULL as int  
SELECT @CNTNULL = COUNT(*) FROM TAB1 WHERE isnull(position_id,'') = ''  
--SET @CNTNULL = 0  
IF @CNTNULL = 0  
 UPDATE  C6StagingPeriodico.RP_CONSULENZA  
   SET POSITION_ID = t.POSITION_ID + DBO.CREA_POSITIONID (  
        c.TIPOPRODOTTO,   
        c.CODINTERNO,   
        c.CODMAF,  
--INIZIO INTERVENTO MIGRAZIONE ASU3  
--        '',   
--inizio INTERVENTO 'RE' - 20161213     
        --CASE WHEN C.CODINTERNO in ('RV','RM', 'RS','RB') THEN ISNULL(c.CODISIN,'')  
				--inizio INTERVENTO 'RF/MP' - 20171204       
				--CASE WHEN C.CODINTERNO in ('RV','RM', 'RS','RB','RE') THEN ISNULL(c.CODISIN,'')   
				CASE WHEN C.CODINTERNO in ('RV','RM', 'RS','RB','RE','RF') THEN ISNULL(c.CODISIN,'') 
				--fine INTERVENTO 'RF/MP' - 20171204    
--FINE INTERVENTO 'RE' - 20161213             
        ELSE '' END,  
--FINE INTERVENTO MIGRAZIONE ASU3     
        c.CODSOTTOPRODOTTO,   
        c.CODCONF,   
        c.NUMPOLIZZA,   
        c.CONTO,  
        c.RUBRICATO,   
        c.CUSTGAR,  
        c.TERMID,  
        cast(c.ANNO as decimal(3,0)),  
        cast(c.PROG as decimal(9,0))  
  )   
  FROM   C6StagingPeriodico.RP_CONSULENZA c  
   left join TAB1 t   
   ON  isnull(t.TIPOPRODOTTO,'')=isnull(c.TIPOPRODOTTO,'')  
   AND isnull(t.CODINTERNO,'')=isnull(c.CODINTERNO,'')  
   AND isnull(t.CODMAF,'')=isnull(c.CODMAF,'')  
--***INIZIO INTERVENTI OMNIA***    
--   AND t.CODISIN= CASE WHEN c.TIPOPRODOTTO = 'ASU2' THEN ISNULL(c.CODISIN,'') ELSE '' END   
--INIZIO INTERVENTO MIGRAZIONE ASU3  
--   AND t.CODISIN= CASE WHEN c.TIPOPRODOTTO in ('ASU2','GP') THEN ISNULL(c.CODISIN,'') ELSE '' END   
--inizio INTERVENTO 'RE' - 20161213      
		--inizio INTERVENTO 'RF/MP' - 20171204     
			--AND t.CODISIN= CASE WHEN c.TIPOPRODOTTO in ('ASU2','GP') OR c.CODINTERNO in ('RV','RM', 'RS','RB','RE')   
			AND t.CODISIN= CASE WHEN c.TIPOPRODOTTO in ('ASU2','GP') OR c.CODINTERNO in ('RV','RM', 'RS','RB','RE','RF')
		--fine INTERVENTO 'RF/MP' - 20171204   
--FINE INTERVENTO 'RE' - 20161213      
   THEN ISNULL(c.CODISIN,'')   
   ELSE '' END   
--FINE INTERVENTO MIGRAZIONE ASU3     
--***FINE INTERVENTI OMNIA***    
   AND isnull(t.CODSOTTOPRODOTTO,'')=isnull(c.CODSOTTOPRODOTTO,'')  
  --WHERE c.position_id = '' and  t.position_id is not null  
DECLARE @CNT as int  
SELECT @CNT = COUNT(*) FROM C6StagingPeriodico.RP_CONSULENZA WHERE isnull(position_id,'') <> ''  
-- Log esecuzione  
UPDATE  
 LOG_ESECUZIONE_PERIODICO  
SET  
 Fine = GETDATE(),  
 Tipo = 'UPDATE',  
 Righe = @CNT  
WHERE  
 Nome = 'RP_CREA_POSITIONID_CONSULENZA' AND  
 Inizio = (  
  SELECT  
   MAX(Inizio)  
  FROM  
   LOG_ESECUZIONE_PERIODICO  
  WHERE  
   Nome = 'RP_CREA_POSITIONID_CONSULENZA'  
 )  
--drop table  TAB1  
IF @CNTNULL = 0  
 SELECT @CNTNULL = COUNT(*) FROM C6StagingPeriodico.RP_CONSULENZA WHERE isnull(position_id,'') = ''  
if @CNTNULL > 0  
  RAISERROR ('Scarti position_id null', 16, 1 )  
END