CREATE  PROCEDURE [C6MartPeriodico].[RP_ST_ClientiPtfNonDiv]
AS
BEGIN 
    -- 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) 
	begin
	truncate table [C6MartPeriodico].[RP_ClientiPtfNonDiv]
	end
  --  IF (@appo_contratti_l = 0)
  --  BEGIN
        SELECT Rete, COD_FISCALE AS Cod_Fiscale, 0.0000 AS Somma_credito 
        INTO #temp
        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
    --    SELECT rete, COD_FISCALE AS Cod_Fiscale, 0.0000 AS Somma_credito
    ----    INTO #temp
    --    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]
	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
		--   into #nuovatab
    FROM #temp t 
    INNER JOIN C6StagingPeriodico.APPO_CONTRATTI a ON t.RETE = a.rete AND t.Cod_Fiscale = a.COD_FISCALE;
--	-- 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;