﻿CREATE  PROCEDURE [C6MartPeriodico].[RP_ST_ClientiPtfNonDiv]    
AS    
BEGIN     
exec [dbo].[CreaTabellaBackUp] 'RP_ClientiPtfNonDiv','C6MartPeriodico'    
    -- Drop the #temp table if it exists    
    IF OBJECT_ID('tempdb..#temp') IS NOT NULL    
        DROP TABLE #temp;    
    -- Log esecuzione    
    INSERT INTO LOG_ESECUZIONE_PERIODICO    
        (Nome, Inizio, Nota)    
    VALUES (    
        'RP_ST_ClientiPtfNonDiv',    
        GETDATE(),    
        'Elaborazione Trimestrale'    
    );    
    DECLARE @appo_contratti_l INT;    
    SELECT @appo_contratti_l = ISNULL(COUNT(*), 0) FROM [C6StagingPeriodico].[APPO_CONTRATTI_LIMITER];    
    DECLARE @DataFineTrim VARCHAR(8);    
    SET @DataFineTrim = c6martperiodico.getTrimestre2(GETDATE(), 0);    
    DECLARE @DataClientiPtf VARCHAR(8);    
    select @DataClientiPtf = MAX(DTTrim) from [C6MartPeriodico].[RP_ClientiPtfNonDiv]    
 if(@DataFineTrim<>@DataClientiPtf or @appo_contratti_l = 0)     
 begin    
 truncate table [C6MartPeriodico].[RP_ClientiPtfNonDiv]    
 end    
 drop table if exists #temp    
 CREATE TABLE #temp (    
    Rete VARCHAR(3),    
    COD_FISCALE VARCHAR(50),    
    Somma_credito [decimal](9, 4) NULL    
);    
    IF (@appo_contratti_l = 0)    
    BEGIN    
  insert into #temp    
        SELECT Rete, COD_FISCALE AS Cod_Fiscale, 0.0000 AS Somma_credito     
        FROM C6StagingPeriodico.APPO_CONTRATTI     
        EXCEPT    
        SELECT rete, cod_fiscale, 0.0000 FROM C6MartPeriodico.PATRIMONIO_BF    
        UNION    
        SELECT rete, cod_fiscale, SUM(credito) AS Somma_credito     
        FROM C6MartPeriodico.PATRIMONIO_BF bf     
        INNER JOIN [C6StagingPeriodico].[RP_CatDivPtf] c ON bf.COD_PRODOTTO = c.CatalogueID    
        GROUP BY rete, cod_fiscale    
        HAVING SUM(credito) < 3.00;    
    END    
    ELSE    
   BEGIN    
  insert into #temp    
        SELECT rete, COD_FISCALE AS Cod_Fiscale, 0.0000 AS Somma_credito    
        FROM C6StagingPeriodico.APPO_CONTRATTI_LIMITER     
        EXCEPT    
        SELECT rete, cod_fiscale, 0.0000 FROM C6MartPeriodico.PATRIMONIO_BF    
        UNION    
        SELECT rete, cod_fiscale, SUM(credito) AS Somma_credito     
        FROM C6MartPeriodico.PATRIMONIO_BF bf     
        INNER JOIN [C6StagingPeriodico].[RP_CatDivPtf] c ON bf.COD_PRODOTTO = c.CatalogueID    
        GROUP BY rete, cod_fiscale    
        HAVING SUM(credito) < 3.00;    
    END;    
 --select * from [C6MartPeriodico].[RP_ClientiPtfNonDiv]    
 -- FerAcu 20250509
 --delete from [C6MartPeriodico].[RP_ClientiPtfNonDiv] where RETE+Chiave_Acn in (select RETE+COD_FISCALE from #temp )    
 IF (@appo_contratti_l != 0)  
 Begin
	delete from [C6MartPeriodico].[RP_ClientiPtfNonDiv] where RETE+Chiave_Acn in (select RETE+COD_FISCALE from C6StagingPeriodico.APPO_CONTRATTI_LIMITER  )  
 End
 INSERT INTO [C6MartPeriodico].[RP_ClientiPtfNonDiv]    
           ([Rete]    
           ,[Chiave_Acn]    
           ,[Codfis]    
           ,[Codman]    
           ,[Dttrim]    
           ,[Credito]    
           ,[Flg_NonDiv])    
    SELECT t.RETE,    
           t.Cod_Fiscale AS Chiave_ACN,    
           CASE WHEN LEN(t.COD_FISCALE) = 16 THEN t.Cod_Fiscale ELSE '' END AS Codfis,    
           a.COD_MANDATO AS Codman,    
     @DataFineTrim as Dttrim,    
           t.Somma_credito as Credito,    
           'S' AS Flg_NonDiv    
    FROM #temp t     
    INNER JOIN C6StagingPeriodico.APPO_CONTRATTI a ON t.RETE = a.rete AND t.Cod_Fiscale = a.COD_FISCALE;    
-- rimozione duplicati    
drop table if exists #noDup    
select distinct *     
into #noDup    
from [C6MartPeriodico].[RP_ClientiPtfNonDiv]    
truncate table [C6MartPeriodico].[RP_ClientiPtfNonDiv]    
insert into [C6MartPeriodico].[RP_ClientiPtfNonDiv]    
select * from #noDup    
-- fine rimozione duplicati    
-- -- Utilizziamo il comando MERGE per sincronizzare i dati tra le due tabelle    
--MERGE INTO [C6MartPeriodico].[RP_ClientiPtfNonDiv] AS dest    
--USING #nuovatab AS src    
--ON dest.rete = src.rete and dest.chiave_ACN= src.chiave_ACN and dest.dttrim=src.dttrim    
--WHEN MATCHED THEN    
--    UPDATE SET dest.credito = src.credito, dest.flg_NonDiv = src.flg_NonDiv, dest.AzioneMerge='UPDATE/NO VAR'    
--WHEN NOT MATCHED BY TARGET THEN    
--    INSERT (AzioneMerge,Rete, Chiave_ACN, Codfis, Codman, Dttrim, Credito, Flg_NonDiv) VALUES     
-- ('INSERT',src.Rete, src.Chiave_ACN, src.Codfis, src.Codman, src.Dttrim, src.Credito, src.Flg_NonDiv);    
    -- Log esecuzione    
    UPDATE    
        LOG_ESECUZIONE_PERIODICO    
    SET    
        Fine = GETDATE(),    
        Tipo = 'INSERT',    
        Righe = @@ROWCOUNT    
    WHERE    
        Nome = 'RP_ST_ClientiPtfNonDiv' AND    
        Inizio = (    
            SELECT    
                MAX(Inizio)    
            FROM    
                LOG_ESECUZIONE_PERIODICO    
            WHERE    
                Nome = 'RP_ST_ClientiPtfNonDiv'    
        );    
END;