PDC_REPORT_CreazioneDB/sql/Produzione/procedure/C6Mart_DM_ANAG_CLIENTI.sql
2025-06-10 15:29:00 +02:00

170 lines
4.4 KiB
Transact-SQL

-- =============================================
-- Author: Paolo Giovanetti
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE procedure [C6Mart].[DM_ANAG_CLIENTI]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID_ELAB INT
DECLARE @TIPO_ELAB VARCHAR(1)
SET @ID_ELAB = C6MART.GETIDELAB()
SET @TIPO_ELAB = C6MART.GETTIPOELAB()
-- Log esecuzione
INSERT INTO LOG_ESECUZIONE
(Nome, Inizio, Nota)
VALUES (
'DM_ANAG_CLIENTI',
GETDATE(),
'Elaborazione giornaliera'
)
DELETE C6MART.ANAG_CLIENTI
FROM C6MART.ANAG_CLIENTI
INNER JOIN C6STAGING.ALL_CF_PB
ON ANAG_CLIENTI.RETE = ALL_CF_PB.RETE_PB
AND ANAG_CLIENTI.COD_FISCALE = ALL_CF_PB.CODICEFISCALE
-- Log esecuzione
UPDATE
LOG_ESECUZIONE
SET
Fine = GETDATE(),
Tipo = 'DELETE',
Righe = @@ROWCOUNT
WHERE
Nome = 'DM_ANAG_CLIENTI' AND
Inizio = (
SELECT
MAX(Inizio)
FROM
LOG_ESECUZIONE
WHERE
Nome = 'DM_ANAG_CLIENTI'
)
INSERT INTO LOG_ESECUZIONE
(Nome, Inizio, Nota)
VALUES (
'DM_ANAG_CLIENTI',
GETDATE(),
'Elaborazione giornaliera'
)
INSERT INTO [C6Mart].[ANAG_CLIENTI]
([RETE]
,[COD_FISCALE]
,[NOME]
,[COGNOME]
,[DATA_NASCITA]
,[STATO_CIVILE]
,[NUM_COMPONENTI]
,[NUM_FIGLI]
,[ETA]
,[PARTITA_IVA]
,[CITTADINANZA]
,[PERSONA_FIS_GIUR]
,[INDIRIZZO]
,[LOCALITA]
,[PROVINCIA]
,[CAP]
,[NAZIONE]
,[PRESSO]
,[TEL_RECAPITO]
,[TEL_CELL]
,[E_MAIL]
,[DATA_INIZIO]
,[DATA_FINE]
,[STATO]
,[RAG_SOC]
,[SESSO]
,[ID_PROMOTORE]
,[ID_ELAB]
,[TIPO_ELAB])
SELECT
distinct
CONTRATTOSEI.RETE AS RETE,
CONTRATTOSEI.COD_FISCALE AS COD_FISCALE,
ISNULL(SPB_CLIENTI.NOME,ALL_CF_PB.NOME) AS NOME,
ISNULL(SPB_CLIENTI.COGNOME,ALL_CF_PB.COGNOME) AS COGNOME,
ISNULL(ALL_CF_PB.DATA_NASCITA,SPB_CLIENTI.DATADINASCITA) AS DATA_NASCITA,
CASE
WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40'
AND ALL_CF_PB.MARITALSTATUS = 'Married' THEN 'Coniugato'
WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40'
AND ALL_CF_PB.MARITALSTATUS = 'Divorced' THEN 'Divorziato'
WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40'
AND ALL_CF_PB.MARITALSTATUS = 'Single' THEN 'Libero'
WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) > '40'
AND ALL_CF_PB.MARITALSTATUS = 'Married' THEN 'Coniugata'
WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) > '40'
AND ALL_CF_PB.MARITALSTATUS = 'Divorced' THEN 'Divorziata'
WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) > '40'
AND ALL_CF_PB.MARITALSTATUS = 'Single' THEN 'Libera'
ELSE NULL
END AS STATO_CIVILE,
S25.NUMEROCOMPONENTI AS NUM_COMPONENTI,
S25.NUMEROFIGLI AS NUM_FIGLI,
S25.ETA AS ETA,
NULL AS PARTITA_IVA,
SPB_CLIENTI.CITTADINANZA AS CITTADINANZA,
NULL AS PERSONA_FIS_GIUR,
ISNULL(SPB_INDIRIZZI.INDIRIZZO, '') AS INDIRIZZO,
ISNULL(SPB_INDIRIZZI.CITTA, '') AS LOCALITA,
ISNULL(SPB_INDIRIZZI.PROVINCIA, '') AS PROVINCIA,
ISNULL(SPB_INDIRIZZI.CAP, '') AS CAP,
ISNULL(SPB_INDIRIZZI.NAZIONE, '') AS NAZIONE,
'' AS PRESSO,
NULL AS TEL_RECAPITO,
NULL AS TEL_CELL,
CONTRATTOSEI.EMAIL AS E_MAIL,
SPB_CLIENTI.DATAATTIVAZIONECLIENTE AS DATA_INIZIO,
NULL AS DATA_FINE,
NULL AS STATO,
NULL AS RAG_SOC,
CASE
WHEN SUBSTRING(ALL_CF_PB.CODICE_FISCALE,10,2) < '40' THEN 'M'
ELSE 'F'
END AS SESSO,
ALL_CF_PB.CODICE_PB AS ID_PROMOTORE,
@ID_ELAB AS ID_ELAB,
@TIPO_ELAB AS TIPO_ELAB
FROM
C6MART.CONTRATTOSEI
INNER JOIN
C6STAGING.ALL_CF_PB
ON
CONTRATTOSEI.RETE = ALL_CF_PB.RETE_PB
AND CONTRATTOSEI.COD_FISCALE = ALL_CF_PB.CODICEFISCALE
LEFT OUTER JOIN
C6STAGING.S25_CLI_CLIENTE S25
ON
S25.CODICEFISCALE = CONTRATTOSEI.COD_FISCALE
AND S25.RETE = CONTRATTOSEI.RETE
LEFT OUTER JOIN
C6STAGING.SPB_CLIENTI
ON
C6STAGING.SPB_CLIENTI.CODICERETE = CONTRATTOSEI.RETE
AND C6STAGING.SPB_CLIENTI.CODICEFISCALE = CONTRATTOSEI.COD_FISCALE
LEFT OUTER JOIN
C6STAGING.SPB_INDIRIZZI
ON
C6STAGING.SPB_INDIRIZZI.RETE = CONTRATTOSEI.RETE
AND C6STAGING.SPB_INDIRIZZI.CODICEFISCALE = CONTRATTOSEI.COD_FISCALE
WHERE
CONTRATTOSEI.DATA_FINEAVANZATO IS NULL
-- Log esecuzione
UPDATE
LOG_ESECUZIONE
SET
Fine = GETDATE(),
Tipo = 'INSERT',
Righe = @@ROWCOUNT
WHERE
Nome = 'DM_ANAG_CLIENTI' AND
Inizio = (
SELECT
MAX(Inizio)
FROM
LOG_ESECUZIONE
WHERE
Nome = 'DM_ANAG_CLIENTI'
)
END