CREATE procedure [C6StagingPeriodicoImmobiliare].[RP_CREA_POSITIONID_CONSULENZA]  
AS  
BEGIN  
  -- Log esecuzione  
 INSERT INTO LOG_ESECUZIONE_PERIODICO_immobiliare 
  (Nome, Inizio, Nota)  
 VALUES (  
  'RP_CREA_POSITIONID_CONSULENZA',  
  GETDATE(),  
  'Elaborazione Trimestrale Immobiliare'  
 )  
truncate table TAB1  
insert into TAB1  
SELECT distinct  
  TIPOPRODOTTO,  
  CODINTERNO,  
  CODMAF,  
			CASE WHEN TIPOPRODOTTO in ('ASU2','GP') OR CODINTERNO in ('RV','RM', 'RS','RB','RE','RF','IE') THEN ISNULL(CODISIN,'')   
    ELSE '' END AS CODISIN,  
  CODSOTTOPRODOTTO,  
  position_id  
--INTO TAB1  
FROM C6StagingPeriodicoImmobiliare.RP_CONSULENZA   
UPDATE  TAB1  
 SET position_id =      
       C6STAGINGPERIODICOIMMOBILIARE.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  C6StagingPeriodicoImmobiliare.RP_CONSULENZA  
   SET POSITION_ID = t.POSITION_ID + DBO.CREA_POSITIONID (  
        c.TIPOPRODOTTO,   
        c.CODINTERNO,   
        c.CODMAF,  
				CASE WHEN C.CODINTERNO in ('RV','RM', 'RS','RB','RE','RF','IE') THEN ISNULL(c.CODISIN,'') 
        ELSE '' END,  
        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   C6StagingPeriodicoImmobiliare.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,'')  
			AND t.CODISIN= CASE WHEN c.TIPOPRODOTTO in ('ASU2','GP') OR c.CODINTERNO in ('RV','RM', 'RS','RB','RE','RF','IE')
   THEN ISNULL(c.CODISIN,'')   
   ELSE '' END   
   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 C6StagingPeriodicoImmobiliare.RP_CONSULENZA WHERE isnull(position_id,'') <> ''  
-- Log esecuzione  
UPDATE  
 LOG_ESECUZIONE_PERIODICO_IMMOBILIARE 
SET  
 Fine = GETDATE(),  
 Tipo = 'UPDATE',  
 Righe = @CNT  
WHERE  
 Nome = 'RP_CREA_POSITIONID_CONSULENZA' AND  
 Inizio = (  
  SELECT  
   MAX(Inizio)  
  FROM  
   LOG_ESECUZIONE_PERIODICO_IMMOBILIARE 
  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