Files
2021-03-26 17:17:28 +01:00

745 lines
20 KiB
Transact-SQL

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
*
**********************************************************/
alter 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 AND anag.idxProgetto=pro.idxProgetto
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, SFas.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
set xact_abort on;
go
begin transaction;
go
alter table AnagFasi add
budgetTime decimal(19,4);
go
exec sp_addextendedproperty 'MS_Description', 'Budget del progetto (in ore)', 'SCHEMA', 'dbo', 'TABLE', 'AnagFasi', 'COLUMN', 'budgetTime';
go
alter table AnagFasi add
budgetMoney decimal(19,4);
go
set ANSI_NULLS on;
go
/**********************************************************
* STORED stp_AF_getByIdxProj
*
* elenco fasi da progetto
*
* mod: S.E.L. 2012.10.31
*
**********************************************************/
alter PROCEDURE stp_AF_getByIdxProj
(
@idxProgetto INT
)
AS
SET NOCOUNT ON;
/*
SELECT idxFase, idxProgetto, codFase, idxFaseAncest, nomeFase, descrizioneFase, enableTime, enableMoney, Attivo, codClasse, codExt
FROM AnagFasi
WHERE (idxProgetto = @idxProgetto)
ORDER BY codFase
*/
-- dichiaro variabili "accessorie"
DECLARE @idxDipendente INT = 0 -- 0 = tutti
DECLARE @dataFrom DATETIME = '19000101'
DECLARE @dataTo DATETIME = '99991231'
-- controllo se date nulle importo a min/max
DECLARE @firstDate DATETIME
DECLARE @lastDate DATETIME
SELECT @firstDate = MIN(inizio), @lastDate=DATEADD(DAY,1,MAX(inizio)) FROM RegAttivita
SELECT @dataFrom = ISNULL(@dataFrom, @firstDate), @dataTo=ISNULL(@dataTo, @lastDate)
;WITH myCTE AS
(
SELECT af.idxFase, SUM(ISNULL(ra.oreTot, 0)) AS totOre
FROM AnagFasi AS af INNER JOIN
RegAttivita AS ra ON af.idxFase = ra.idxFase
WHERE (ra.idxDipendente = @idxDipendente OR @idxDipendente = 0)
AND (ra.inizio >= @dataFrom AND ra.inizio <= @dataTo)
AND (af.idxProgetto = @idxProgetto OR @idxProgetto = 0)
GROUP BY af.idxFase
)
SELECT af.idxFase
, af.idxProgetto
, af.codFase
, af.idxFaseAncest
, af.nomeFase
, af.descrizioneFase
, af.enableTime
, af.enableMoney
, af.Attivo
, ISNULL(af.budgetTime,0) AS budgetTime
, ISNULL(af.budgetMoney,0) AS budgetMoney
, ISNULL(af.codClasse,'') AS codClasse
, ISNULL(af.codExt, '') AS codExt
, ISNULL(cte.totOre, 0) AS totOre
FROM AnagFasi AS af LEFT OUTER JOIN
myCte AS cte ON cte.idxFase = af.idxFase
WHERE (af.idxProgetto = @idxProgetto OR @idxProgetto = 0)
ORDER BY af.nomeFase , af.codFase
go
/**********************************************************
* STORED stp_AF_getByIdxFase
*
* recupera fasi da idx
*
* mod: S.E.L. 2012.11.12
*
**********************************************************/
alter PROCEDURE stp_AF_getByIdxFase
(
@idxFase INT
)
AS
SET NOCOUNT ON;
/*
SELECT *
FROM AnagFasi
WHERE @idxFase = idxFase
*/
-- dichiaro variabili "accessorie"
DECLARE @idxDipendente INT = 0 -- 0 = tutti
DECLARE @dataFrom DATETIME = '19000101'
DECLARE @dataTo DATETIME = '99991231'
-- controllo se date nulle importo a min/max
DECLARE @firstDate DATETIME
DECLARE @lastDate DATETIME
SELECT @firstDate = MIN(inizio), @lastDate=DATEADD(DAY,1,MAX(inizio)) FROM RegAttivita
SELECT @dataFrom = ISNULL(@dataFrom, @firstDate), @dataTo=ISNULL(@dataTo, @lastDate)
;WITH myCTE AS
(
SELECT af.idxFase, SUM(ISNULL(ra.oreTot, 0)) AS totOre
FROM AnagFasi AS af INNER JOIN
RegAttivita AS ra ON af.idxFase = ra.idxFase
WHERE (ra.idxDipendente = @idxDipendente OR @idxDipendente = 0)
AND (ra.inizio >= @dataFrom AND ra.inizio <= @dataTo)
AND (af.idxFase = @idxFase)
GROUP BY af.idxFase
)
SELECT af.idxFase
, af.idxProgetto
, af.codFase
, af.idxFaseAncest
, af.nomeFase
, af.descrizioneFase
, af.enableTime
, af.enableMoney
, af.Attivo
, ISNULL(af.budgetTime,0) AS budgetTime
, ISNULL(af.budgetMoney,0) AS budgetMoney
, ISNULL(af.codClasse,'') AS codClasse
, ISNULL(af.codExt, '') AS codExt
, ISNULL(cte.totOre, 0) AS totOre
FROM AnagFasi AS af LEFT OUTER JOIN
myCte AS cte ON cte.idxFase = af.idxFase
WHERE (af.idxFase = @idxFase)
go
/**********************************************************
* STORED stp_AF_Expl_getData
*
* recupera elenco fasi con filtraggio ore totali per
* - dipendente
* - periodo
*
* mod: S.E.L. 2013.01.31
*
**********************************************************/
create PROCEDURE stp_AF_Expl_getData
(
@idxDipendente INT = 0, -- 0 = tutti
@dataFrom DATETIME = '19000101',
@dataTo DATETIME = '99991231',
@idxProgetto INT = 0
)
AS
-- controllo se date nulle importo a min/max
DECLARE @firstDate DATETIME
DECLARE @lastDate DATETIME
SELECT @firstDate = MIN(inizio), @lastDate=DATEADD(DAY,1,MAX(inizio)) FROM RegAttivita
SELECT @dataFrom = ISNULL(@dataFrom, @firstDate), @dataTo=ISNULL(@dataTo, @lastDate)
;WITH myCTE AS
(
SELECT af.idxFase, SUM(ISNULL(ra.oreTot, 0)) AS totOre
FROM AnagFasi AS af INNER JOIN
RegAttivita AS ra ON af.idxFase = ra.idxFase
WHERE (ra.idxDipendente = @idxDipendente OR @idxDipendente = 0)
AND (ra.inizio >= @dataFrom AND ra.inizio <= @dataTo)
AND (af.idxProgetto = @idxProgetto OR @idxProgetto = 0)
GROUP BY af.idxFase
)
SELECT af.idxFase
, af.idxProgetto
, af.codFase
, af.idxFaseAncest
, af.nomeFase
, af.descrizioneFase
, af.enableTime
, af.enableMoney
, af.Attivo
, ISNULL(af.budgetTime,0) AS budgetTime
, ISNULL(af.budgetMoney,0) AS budgetMoney
, ISNULL(af.codClasse,'') AS codClasse
, ISNULL(af.codExt, '') AS codExt
, ISNULL(cte.totOre, 0) AS totOre
FROM AnagFasi AS af LEFT OUTER JOIN
myCte AS cte ON cte.idxFase = af.idxFase
WHERE (af.idxProgetto = @idxProgetto OR @idxProgetto = 0)
ORDER BY af.nomeFase , af.codFase
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
alter VIEW v_selProgetti
AS
SELECT dbo.AnagProgetti.idxProgetto AS value, dbo.AnagClienti.RagSociale + ' - ' + dbo.AnagProgetti.nomeProj AS label, dbo.AnagClienti.idxCliente AS conditio
FROM dbo.AnagClienti INNER JOIN
dbo.AnagProgetti ON dbo.AnagClienti.idxCliente = dbo.AnagProgetti.idxCliente
WHERE (dbo.AnagProgetti.Attivo = 1)
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/**********************************************************
* STORED stp_AF_getLastByIdxDipendente
*
* elenco ULTIME fasi dato dipendente
*
* mod: S.E.L. 2012.11.09
*
**********************************************************/
alter PROCEDURE stp_AF_getLastByIdxDipendente
(
@idxDipendente INT,
@num2show INT
)
AS
SET NOCOUNT ON;
;WITH myCTE AS(
SELECT TOP(@num2show) *
FROM RegAttivita
WHERE idxDipendente = @idxDipendente
ORDER BY inizio DESC
)
SELECT *, 0 AS totOre
FROM AnagFasi
WHERE idxFase IN (
SELECT DISTINCT idxFase FROM myCTE
UNION
SELECT DISTINCT af.idxFaseAncest FROM AnagFasi af INNER JOIN myCTE ra ON af.idxFase=ra.idxFase
)
ORDER BY codFase
go
/**********************************************************
* STORED stp_AP_Expl_getData
*
* recupera elenco progetti con filtraggio ore totali per
* - dipendente
* - periodo
*
* mod: S.E.L. 2013.01.30
*
**********************************************************/
alter PROCEDURE stp_AP_Expl_getData
(
@idxDipendente INT = 0, -- 0 = tutti
@dataFrom DATETIME = '19000101',
@dataTo DATETIME = '99991231',
@idxCliente INT = 0, -- 0 = tutti
@showPrjArch BIT = 1 -- 1 = mostra tutti
)
AS
-- controllo se date nulle importo a min/max
DECLARE @firstDate DATETIME
DECLARE @lastDate DATETIME
SELECT @firstDate = MIN(inizio), @lastDate=DATEADD(DAY,1,MAX(inizio)) FROM RegAttivita
SELECT @dataFrom=ISNULL(@dataFrom, @firstDate) , @dataTo=ISNULL(@dataTo, @lastDate)
;WITH myCTE AS
(
SELECT ap.idxProgetto, SUM(ISNULL(ra.oreTot, 0)) AS totOre
FROM AnagProgetti AS ap INNER JOIN
AnagClienti AS ac ON ac.idxCliente=ap.idxCliente INNER JOIN
AnagFasi AS af ON ap.idxProgetto = af.idxProgetto INNER JOIN
RegAttivita AS ra ON af.idxFase = ra.idxFase
WHERE (ra.idxDipendente = @idxDipendente OR @idxDipendente = 0)
AND (ra.inizio >= @dataFrom AND ra.inizio <= @dataTo)
AND (ac.idxCliente = @idxCliente OR @idxCliente = 0)
AND (ap.Attivo = CASE WHEN @showPrjArch <> 0 THEN ap.Attivo ELSE 1 END)
GROUP BY ap.idxProgetto
)
SELECT ac.RagSociale
, ap.idxProgetto
, ap.idxCliente
, ap.nomeProj
, ap.descrProj
, ISNULL(ap.budgetTime,0) AS budgetTime
, ISNULL(ap.budgetMoney,0) AS budgetMoney
, ISNULL(ap.OldIdx,-1) AS OldIdx
, ap.Attivo
, ISNULL(ap.codExt,'') AS codExt
, ISNULL(cte.totOre, 0) AS totOre
, ISNULL(ap.avvio,'19000101') AS avvio
, ISNULL(ap.chiusura,'99991231') AS chiusura
FROM AnagClienti AS ac INNER JOIN
AnagProgetti AS ap ON ac.idxCliente = ap.idxCliente LEFT OUTER JOIN
myCte AS cte ON cte.idxProgetto = ap.idxProgetto
WHERE (ac.idxCliente = @idxCliente OR @idxCliente = 0)
AND (ap.Attivo = CASE WHEN @showPrjArch <> 0 THEN ap.Attivo ELSE 1 END)
ORDER BY ac.RagSociale, ap.nomeProj
go
/**********************************************************
* STORED stp_AP_getByIdxCli
*
* recupera elenco progetti da cliente
*
* mod: S.E.L. 2012.10.26
*
**********************************************************/
alter PROCEDURE stp_AP_getByIdxCli
(
@idxCliente INT,
@showPrjArch BIT
)
AS
/*
SELECT *
FROM AnagProgetti
WHERE idxCliente = CASE WHEN @idxCliente > 0 THEN @idxCliente ELSE idxCliente END
AND Attivo = CASE WHEN @showPrjArch <> 0 THEN Attivo ELSE 1 END
ORDER BY nomeProj
*/
;WITH myCTE AS
(
SELECT ap.idxProgetto, SUM(ISNULL(ra.oreTot, 0)) AS totOre
FROM AnagProgetti AS ap INNER JOIN
AnagClienti AS ac ON ac.idxCliente=ap.idxCliente INNER JOIN
AnagFasi AS af ON ap.idxProgetto = af.idxProgetto INNER JOIN
RegAttivita AS ra ON af.idxFase = ra.idxFase
WHERE (ac.idxCliente = @idxCliente OR @idxCliente = 0)
AND (ap.Attivo = CASE WHEN @showPrjArch <> 0 THEN ap.Attivo ELSE 1 END)
GROUP BY ap.idxProgetto
)
SELECT ac.RagSociale
, ap.idxProgetto
, ap.idxCliente
, ap.nomeProj
, ap.descrProj
, ISNULL(ap.budgetTime,0) AS budgetTime
, ISNULL(ap.budgetMoney,0) AS budgetMoney
, ISNULL(ap.OldIdx,-1) AS OldIdx
, ap.Attivo
, ISNULL(ap.codExt,'') AS codExt
, ISNULL(cte.totOre, 0) AS totOre
, ISNULL(ap.avvio,'19000101') AS avvio
, ISNULL(ap.chiusura,'99991231') AS chiusura
FROM AnagClienti AS ac INNER JOIN
AnagProgetti AS ap ON ac.idxCliente = ap.idxCliente LEFT OUTER JOIN
myCte AS cte ON cte.idxProgetto = ap.idxProgetto
WHERE (ac.idxCliente = @idxCliente OR @idxCliente = 0)
AND (ap.Attivo = CASE WHEN @showPrjArch <> 0 THEN ap.Attivo ELSE 1 END)
ORDER BY ac.RagSociale, ap.nomeProj
go
/**********************************************************
* STORED stp_AP_getByIdxPrj
*
* recupera elenco progetti da idx
*
* mod: S.E.L. 2012.11.06
*
**********************************************************/
alter PROCEDURE stp_AP_getByIdxPrj
(
@idxProgetto INT
)
AS
/*
SELECT *
FROM AnagProgetti
WHERE idxProgetto = @idxProgetto
ORDER BY nomeProj
*/
;WITH myCTE AS
(
SELECT ap.idxProgetto, SUM(ISNULL(ra.oreTot, 0)) AS totOre
FROM AnagProgetti AS ap INNER JOIN
AnagClienti AS ac ON ac.idxCliente=ap.idxCliente INNER JOIN
AnagFasi AS af ON ap.idxProgetto = af.idxProgetto INNER JOIN
RegAttivita AS ra ON af.idxFase = ra.idxFase
WHERE ap.idxProgetto = @idxProgetto
GROUP BY ap.idxProgetto
)
SELECT ac.RagSociale
, ap.idxProgetto
, ap.idxCliente
, ap.nomeProj
, ap.descrProj
, ISNULL(ap.budgetTime,0) AS budgetTime
, ISNULL(ap.budgetMoney,0) AS budgetMoney
, ISNULL(ap.OldIdx,-1) AS OldIdx
, ap.Attivo
, ISNULL(ap.codExt,'') AS codExt
, ISNULL(cte.totOre, 0) AS totOre
, ISNULL(ap.avvio,'19000101') AS avvio
, ISNULL(ap.chiusura,'99991231') AS chiusura
FROM AnagClienti AS ac INNER JOIN
AnagProgetti AS ap ON ac.idxCliente = ap.idxCliente INNER JOIN
myCte AS cte ON cte.idxProgetto = ap.idxProgetto
WHERE ap.idxProgetto = @idxProgetto
go
/**********************************************************
* STORED stp_AP_insertQuery
*
* inserisce un progetto in anagrafica
*
* mod: S.E.L. 2013.01.30
*
**********************************************************/
alter PROCEDURE stp_AP_insertQuery
(
@idxCliente int,
@nomeProj nvarchar(50),
@descrProj nvarchar(250),
@budgetTime decimal(19, 4),
@budgetMoney decimal(19, 4),
@avvio DATETIME = '19000101',
@chiusura DATETIME = '99991231'
)
AS
SET NOCOUNT OFF;
INSERT INTO AnagProgetti
(idxCliente, nomeProj, descrProj, budgetTime, budgetMoney, Attivo, avvio, chiusura)
VALUES (@idxCliente,@nomeProj,@descrProj,@budgetTime,@budgetMoney, 1, @avvio, @chiusura);
--SELECT idxProgetto, idxCliente, nomeProj, descrProj, budgetTime, budgetMoney, OldIdx, Attivo FROM AnagProgetti WHERE (idxProgetto = SCOPE_IDENTITY())
DECLARE @idxPrj INT
SELECT @idxPrj = SCOPE_IDENTITY()
EXEC stp_AP_getByIdxPrj @idxPrj
go
/**********************************************************
* STORED stp_AP_update
*
* elimina un progetto da anagrafica
*
* mod: S.E.L. 2013.01.30
*
**********************************************************/
alter PROCEDURE stp_AP_update
(
@idxCliente INT,
@nomeProj NVARCHAR(50),
@descrProj NVARCHAR(250),
@budgetTime DECIMAL(19, 4),
@budgetMoney DECIMAL(19, 4),
@avvio DATETIME = '19000101',
@chiusura DATETIME = '99991231',
@Original_idxProgetto INT
)
AS
SET NOCOUNT OFF;
UPDATE dbo.AnagProgetti
SET idxCliente = @idxCliente,
nomeProj = @nomeProj,
descrProj = @descrProj,
budgetTime = @budgetTime,
budgetMoney = @budgetMoney,
avvio = @avvio,
chiusura = @chiusura
WHERE idxProgetto = @Original_idxProgetto;
/*
SELECT idxProgetto, idxCliente, nomeProj, descrProj, budgetTime, budgetMoney, Attivo
FROM AnagProgetti
WHERE (idxProgetto =@Original_idxProgetto)
*/
EXEC stp_AP_getByIdxPrj @Original_idxProgetto
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/**********************************************************
* STORED stp_AF_updateFaseAncest
*
* cambia la fase ancestor per una fase e le relative sottofasi dell'albero
*
* mod: S.E.L. 2013.01.31
*
**********************************************************/
create PROCEDURE stp_AF_updateFaseAncest
(
@idxFaseAncest INT,
@Original_idxFase INT
)
AS
SET NOCOUNT OFF;
UPDATE AnagFasi
SET idxFaseAncest = @idxFaseAncest
WHERE idxFase = @Original_idxFase;
SELECT * FROM AnagFasi WHERE idxFase = @Original_idxFase
go
/**********************************************************
* STORED stp_AF_updateProegtto
*
* cambia il progetto per una fase e le relative sottofasi dell'albero
*
* mod: S.E.L. 2013.01.31
*
**********************************************************/
create PROCEDURE stp_AF_updateProgetto
(
@idxProgetto INT,
@Original_idxFase INT
)
AS
SET NOCOUNT OFF;
UPDATE AnagFasi
SET idxProgetto = @idxProgetto
WHERE idxFase = @Original_idxFase;
SELECT * FROM AnagFasi WHERE idxFase = @Original_idxFase
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/**********************************************************
* STORED stp_RA_clonaLastRA_Utente
*
* clona un attivit utente: se c' da ultima altrimenti da zero x una certa data
*
* mod: S.E.L. 2013.01.17
*
**********************************************************/
alter PROCEDURE stp_RA_clonaLastRA_Utente
(
@idxDipendente INT,
@dataRif DATETIME -- data x cui creare un record attivit
)
AS
-- variabili
DECLARE @idxFase INT
DECLARE @idxRA INT
-- arrotondo data richiesta solo all'ora...
SELECT @dataRif = DATEADD(HOUR, DATEPART(HOUR,@dataRif), CONVERT(DATETIME,(CONVERT(DATE,@dataRif))))
-- cerco se esista ultima reg attivit utente...
SELECT @idxRA=ISNULL((SELECT TOP 1 idxRA FROM RegAttivita WHERE idxDipendente = @idxDipendente),0)
-- se non ho trovato records, ovvero idxRA = 0, prendo ultima fase da elenco
IF (@idxRA = 0)
BEGIN
-- calcolo ultima fase inserita...
SELECT TOP 1 @idxFase=ISNULL(idxFase,0) FROM AnagFasi ORDER BY idxFase DESC
-- se trovata fase inserisco!
IF(@idxFase > 0)
BEGIN
INSERT INTO RegAttivita(idxDipendente, idxFase, inizio, fine, descrizione, importo)
VALUES (@idxDipendente, @idxFase, @dataRif, DATEADD(HOUR,1,@dataRif), '...',0)
END
END
ELSE
BEGIN
-- inserisco su data richeista duplicazione dell'ultima attivit utente...
INSERT INTO RegAttivita(idxDipendente, idxFase, inizio, fine, descrizione, importo)
SELECT idxDipendente, idxFase, @dataRif, DATEADD(minute, DATEDIFF(MINUTE, inizio, fine), @dataRif), descrizione, importo
FROM RegAttivita
WHERE (idxRA = @idxRA)
END
go
commit;
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(270, GETDATE())
GO
SELECT * FROM LogUpdateDb ORDER BY Versione DESC