PDC_REPORT_CreazioneDB/sql/storedCollaudo/C6MartPeriodico_RP_ST_ClientiPtfNonDiv.sql
2025-06-09 17:09:11 +02:00

98 lines
3.7 KiB
Transact-SQL

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;