240 lines
7.9 KiB
Transact-SQL
240 lines
7.9 KiB
Transact-SQL
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
|