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
