PDC_REPORT_CreazioneDB/sql/storedTestbes/C6MartPeriodico_RP_ST_ClientiPtfNonDiv.sql
2025-06-06 19:02:52 +02:00

119 lines
4.9 KiB
Transact-SQL

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;