create schema import; go set xact_abort on; go begin transaction; go set ANSI_NULLS on; go /********************************************************** * STORED stp_import_paymoRaw * * importa tracciato dati da paymo x utente e date indicate * * mod: S.E.L. 2012.11.20 * **********************************************************/ create PROCEDURE import.stp_import_PaymoDataRaw ( @inizio DATETIME, @fine DATETIME ) AS /************************************************** * inizio importando eventuali clienti... **************************************************/ ;WITH myCteClienti AS ( SELECT DISTINCT Cliente FROM zzz_RawDataPaymo ) INSERT INTO AnagClienti(RagSociale, nota, Attivo) SELECT cte.Cliente, cte.Cliente, 1 FROM AnagClienti anag RIGHT OUTER JOIN myCteClienti cte ON anag.RagSociale = cte.Cliente WHERE anag.idxCliente IS NULL /************************************************** * importo eventuali progetti **************************************************/ ;WITH myCteProgetti AS ( SELECT DISTINCT Cliente, Progetto FROM zzz_RawDataPaymo ) INSERT INTO AnagProgetti(idxCliente, nomeProj, descrProj, Attivo) SELECT cli.idxCliente, cte.Progetto, cte.Progetto, 1 FROM AnagProgetti anag RIGHT OUTER JOIN myCteProgetti cte ON anag.nomeProj = cte.Progetto INNER JOIN AnagClienti Cli ON Cli.RagSociale = cte.Cliente WHERE anag.idxProgetto IS NULL /************************************************** * importo eventuali fasi **************************************************/ ;WITH myCteFasi AS ( SELECT DISTINCT Cliente, Progetto, TaskList FROM zzz_RawDataPaymo ) INSERT INTO AnagFasi(idxProgetto, codFase, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo) SELECT Pro.idxProgetto, '', cte.TaskList, cte.TaskList, 1, 0, 1 FROM myCteFasi cte INNER JOIN AnagClienti Cli ON cte.Cliente = Cli.RagSociale INNER JOIN AnagProgetti Pro ON cte.Progetto = Pro.nomeProj LEFT OUTER JOIN AnagFasi anag ON anag.nomeFase = cte.TaskList WHERE anag.idxFase IS NULL /************************************************** * importo eventuali sottofasi **************************************************/ ;WITH myCteSubFasi AS ( SELECT DISTINCT Cliente, Progetto, TaskList, Task FROM zzz_RawDataPaymo ) INSERT INTO AnagFasi(idxProgetto, idxFaseAncest, codFase, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo) SELECT Pro.idxProgetto, Fas.idxFase as idxFaseAncest, '', cte.task, cte.task, 1, 0, 1 FROM myCteSubFasi cte INNER JOIN AnagClienti Cli ON cte.Cliente = Cli.RagSociale INNER JOIN AnagProgetti Pro ON cte.Progetto = Pro.nomeProj -- and pro.idxCliente=cli.idxCliente INNER JOIN AnagFasi Fas ON Fas.nomeFase = cte.TaskList AND Fas.idxProgetto = Pro.idxProgetto AND Fas.idxFaseAncest=0 LEFT OUTER JOIN AnagFasi anag ON anag.nomeFase = cte.Task AND anag.idxFaseAncest = Fas.idxFase WHERE anag.idxFaseAncest IS NULL /************************************************** * importo records! **************************************************/ INSERT INTO RegAttivita(idxDipendente, idxFase, inizio, fine, descrizione) SELECT Dip.idxDipendente, Fas.idxFase, cte.Inizio, cte.Fine, cte.Descrizione FROM zzz_RawDataPaymo cte INNER JOIN Dipendenti Dip ON cte.Dipendente = dip.codDipendenteExt INNER JOIN AnagClienti Cli ON cte.Cliente = Cli.RagSociale INNER JOIN AnagProgetti Pro ON cte.Progetto = Pro.nomeProj -- and pro.idxCliente=cli.idxCliente INNER JOIN AnagFasi Fas ON Fas.nomeFase = cte.TaskList AND Fas.idxProgetto = Pro.idxProgetto AND Fas.idxFaseAncest=0 INNER JOIN AnagFasi SFas ON SFas.nomeFase = cte.Task AND SFas.idxProgetto = Pro.idxProgetto AND SFas.idxFaseAncest=fas.idxFase LEFT OUTER JOIN RegAttivita dati ON dati.inizio = cte.Inizio AND dati.fine = cte.Fine AND dati.descrizione = cte.Descrizione AND dati.idxDipendente = Dip.idxDipendente WHERE dati.idxRA IS NULL RETURN go /********************************************************** * STORED stp_import_paymoRaw * * importa tracciato dati da paymo x utente e date indicate * * mod: S.E.L. 2012.11.20 * **********************************************************/ create PROCEDURE import.stp_import_SpsDataRaw ( @inizio DATETIME, @fine DATETIME ) AS /************************************************** * inizio importando eventuali clienti... **************************************************/ ;WITH myCteClienti AS ( SELECT DISTINCT Cliente FROM zzz_RawDataPaymo ) INSERT INTO AnagClienti(RagSociale, nota, Attivo) SELECT cte.Cliente, cte.Cliente, 1 FROM AnagClienti anag RIGHT OUTER JOIN myCteClienti cte ON anag.RagSociale = cte.Cliente WHERE anag.idxCliente IS NULL /************************************************** * importo eventuali progetti **************************************************/ ;WITH myCteProgetti AS ( SELECT DISTINCT Cliente, Progetto FROM zzz_RawDataPaymo ) INSERT INTO AnagProgetti(idxCliente, nomeProj, descrProj, Attivo) SELECT cli.idxCliente, cte.Progetto, cte.Progetto, 1 FROM AnagProgetti anag RIGHT OUTER JOIN myCteProgetti cte ON anag.nomeProj = cte.Progetto INNER JOIN AnagClienti Cli ON Cli.RagSociale = cte.Cliente WHERE anag.idxProgetto IS NULL /************************************************** * importo eventuali fasi **************************************************/ ;WITH myCteFasi AS ( SELECT DISTINCT Cliente, Progetto, TaskList FROM zzz_RawDataPaymo ) INSERT INTO AnagFasi(idxProgetto, codFase, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo) SELECT Pro.idxProgetto, '', cte.TaskList, cte.TaskList, 1, 0, 1 FROM myCteFasi cte INNER JOIN AnagClienti Cli ON cte.Cliente = Cli.RagSociale INNER JOIN AnagProgetti Pro ON cte.Progetto = Pro.nomeProj LEFT OUTER JOIN AnagFasi anag ON anag.nomeFase = cte.TaskList WHERE anag.idxFase IS NULL /************************************************** * importo eventuali sottofasi **************************************************/ ;WITH myCteSubFasi AS ( SELECT DISTINCT Cliente, Progetto, TaskList, Task FROM zzz_RawDataPaymo ) INSERT INTO AnagFasi(idxProgetto, idxFaseAncest, codFase, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo) SELECT Pro.idxProgetto, Fas.idxFase as idxFaseAncest, '', cte.task, cte.task, 1, 0, 1 FROM myCteSubFasi cte INNER JOIN AnagClienti Cli ON cte.Cliente = Cli.RagSociale INNER JOIN AnagProgetti Pro ON cte.Progetto = Pro.nomeProj -- and pro.idxCliente=cli.idxCliente INNER JOIN AnagFasi Fas ON Fas.nomeFase = cte.TaskList AND Fas.idxProgetto = Pro.idxProgetto AND Fas.idxFaseAncest=0 LEFT OUTER JOIN AnagFasi anag ON anag.nomeFase = cte.Task AND anag.idxFaseAncest = Fas.idxFase WHERE anag.idxFaseAncest IS NULL /************************************************** * importo records! **************************************************/ INSERT INTO RegAttivita(idxDipendente, idxFase, inizio, fine, descrizione) SELECT Dip.idxDipendente, Fas.idxFase, cte.Inizio, cte.Fine, cte.Descrizione FROM zzz_RawDataPaymo cte INNER JOIN Dipendenti Dip ON cte.Dipendente = dip.codDipendenteExt INNER JOIN AnagClienti Cli ON cte.Cliente = Cli.RagSociale INNER JOIN AnagProgetti Pro ON cte.Progetto = Pro.nomeProj -- and pro.idxCliente=cli.idxCliente INNER JOIN AnagFasi Fas ON Fas.nomeFase = cte.TaskList AND Fas.idxProgetto = Pro.idxProgetto AND Fas.idxFaseAncest=0 INNER JOIN AnagFasi SFas ON SFas.nomeFase = cte.Task AND SFas.idxProgetto = Pro.idxProgetto AND SFas.idxFaseAncest=fas.idxFase LEFT OUTER JOIN RegAttivita dati ON dati.inizio = cte.Inizio AND dati.fine = cte.Fine AND dati.descrizione = cte.Descrizione AND dati.idxDipendente = Dip.idxDipendente WHERE dati.idxRA IS NULL RETURN go commit; go drop procedure stp_import_paymoRaw; go set xact_abort on; go begin transaction; go alter table AnagClienti add codExt nvarchar(50); go exec sp_addextendedproperty 'MS_Description', 'codice esterno', 'SCHEMA', 'dbo', 'TABLE', 'AnagClienti', 'COLUMN', 'codExt'; go set ANSI_NULLS on; go commit; go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(251, GETDATE()) GO SELECT * FROM LogUpdateDb ORDER BY Versione DESC