173 lines
4.3 KiB
Transact-SQL
173 lines
4.3 KiB
Transact-SQL
set xact_abort on;
|
|
go
|
|
|
|
begin transaction;
|
|
go
|
|
|
|
set ANSI_NULLS on;
|
|
go
|
|
|
|
/*----------------------------------
|
|
* stp_ricalcolaRegAttivitaExpl_byPeriodoUser
|
|
*
|
|
* Ricalcola le RegAttivitaExpl x utente e intervallo date
|
|
* mod: S.E.L. - 2013.01.21
|
|
*----------------------------------*/
|
|
alter PROCEDURE stp_ricalcolaRegAttivitaExpl_byPeriodoUser
|
|
(
|
|
@idxDipendente INT = 0,
|
|
@inizio DATETIME,
|
|
@fine DATETIME
|
|
)
|
|
AS
|
|
|
|
-- dichiaro variabili x calcolo tempo execuzione e num records!
|
|
DECLARE @startProc DATETIME = GETDATE()
|
|
DECLARE @totRecords INT = 0
|
|
|
|
BEGIN
|
|
|
|
|
|
-- faccio una tab temporanea con tallyTable x calcolo periodo intero...
|
|
DECLARE @numD INT
|
|
SET @numD = ( SELECT DATEDIFF(dd, @inizio, @fine ) )
|
|
|
|
-- crea eventuali record mancanti: data, dip, cognome-nome
|
|
INSERT INTO RegAttivitaExpl(dataLav, idxDipendente)
|
|
SELECT ty.Data, ty.idxDipendente
|
|
FROM (
|
|
SELECT CONVERT(DATE,DATEADD(dd, -N, @fine)) as Data, idxDipendente
|
|
FROM Tally, Dipendenti
|
|
WHERE N <= @numD -- solo dati desiderati
|
|
AND (idxDipendente = @idxDipendente OR @idxDipendente = 0) --filtro su dipendenti
|
|
) ty LEFT OUTER JOIN RegAttivitaExpl rae ON ty.Data=rae.dataLav AND ty.idxDipendente=rae.idxDipendente
|
|
WHERE rae.dataLav IS NULL -- righe mancanti!
|
|
|
|
-- resetto a zero le eventuali righe che non hanno attività registrate
|
|
UPDATE rae
|
|
SET minRegAtt = 0
|
|
,descrProj = ''
|
|
FROM RegAttivitaExpl rae
|
|
LEFT OUTER JOIN (
|
|
SELECT DISTINCT idxDipendente, CONVERT(DATE,inizio) AS data
|
|
FROM dbo.RegAttivita
|
|
WHERE (idxDipendente = @idxDipendente OR @idxDipendente = 0) AND (inizio >= DATEADD(DAY,-1,@inizio) AND inizio <= @fine)
|
|
GROUP BY idxDipendente, CONVERT(DATE,inizio)
|
|
|
|
) vra ON rae.dataLav = vra.data AND rae.idxDipendente=vra.idxDipendente
|
|
WHERE vra.data IS NULL -- righe mancanti!
|
|
AND ((rae.idxDipendente = @idxDipendente OR @idxDipendente = 0) AND (rae.dataLav >= @inizio AND rae.dataLav < @fine)) -- solo x dip e periodo selezionati
|
|
|
|
-- tab temp del record date progetti
|
|
;WITH myCteRA AS(
|
|
SELECT idxDipendente, CONVERT(DATE,inizio) AS data, SUM(oreTot) AS oreTot, SUM(dbo.f_minuteInterval(inizio, fine)) as minTot, dbo.f_ProgettiByDate(idxDipendente, CONVERT(DATE,inizio)) AS progetti
|
|
FROM dbo.RegAttivita
|
|
WHERE (idxDipendente = @idxDipendente OR @idxDipendente = 0) AND (inizio >= DATEADD(DAY,-1,@inizio) AND inizio <= @fine)
|
|
GROUP BY idxDipendente, CONVERT(DATE,inizio)
|
|
)
|
|
|
|
-- aggiorno la tab delle RegAttivitaExpl
|
|
UPDATE rae
|
|
SET minRegAtt = minTot
|
|
,descrProj = ISNULL(progetti,'')
|
|
FROM RegAttivitaExpl rae
|
|
INNER JOIN myCteRA vra ON rae.dataLav = vra.data AND rae.idxDipendente=vra.idxDipendente
|
|
|
|
-- aggiorno cognome nome
|
|
BEGIN TRY
|
|
UPDATE rae
|
|
SET CognomeNome = ISNULL(vcn.CognomeNome,'')
|
|
FROM RegAttivitaExpl rae INNER JOIN v_cognomeNome vcn ON rae.idxDipendente = vcn.idxDipendente
|
|
WHERE ISNULL(rae.CognomeNome,'') = ''
|
|
END TRY
|
|
BEGIN CATCH
|
|
-- non faccio nulla
|
|
END CATCH
|
|
END
|
|
|
|
--SELECT @numD = @numD * COUNT(*) FROM Dipendenti WHERE (idxDipendente = @idxDipendente OR @idxDipendente = 0)
|
|
|
|
--SELECT @startProc AS startTime, GETDATE() AS endTime, @numD AS numRec, DATEDIFF(ms, @startProc, GETDATE()) AS totMs, CAST(@numD AS FLOAT) * 1000 / DATEDIFF(ms, @startProc, GETDATE()) AS recPerSec
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit;
|
|
go
|
|
|
|
|
|
|
|
create table RegistroEventi(
|
|
DataOra datetime not null,
|
|
evento nvarchar(50) not null,
|
|
commento nvarchar(250),
|
|
|
|
constraint PK_RegistroEventi primary key(DataOra,evento)
|
|
);
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
INSERT INTO dbo.RegistroEventi
|
|
VALUES ('2013-06-10 12:21:52.250', N'checkAnomalie', N'-')
|
|
INSERT INTO dbo.RegistroEventi
|
|
VALUES ('2013-06-10 12:21:52.250', N'dailyDuties', N'-')
|
|
go
|
|
|
|
commit transaction
|
|
go
|
|
|
|
|
|
set xact_abort on;
|
|
go
|
|
|
|
begin transaction;
|
|
go
|
|
|
|
set ANSI_NULLS on;
|
|
go
|
|
|
|
/**********************************************************
|
|
* STORED stp_RE_GetByDataEv
|
|
*
|
|
* recupera dati da registro eventi x data ed evento
|
|
*
|
|
* mod: S.E.L. 2012.10.29
|
|
*
|
|
**********************************************************/
|
|
create PROCEDURE stp_RE_GetByDataEv
|
|
(
|
|
@evento NVARCHAR(50),
|
|
@data AS DATE
|
|
)
|
|
AS
|
|
|
|
SELECT *
|
|
FROM RegistroEventi
|
|
WHERE (evento = @evento) AND (CAST(ISNULL(DataOra, '1900-01-01') AS DATE) = @data)
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit;
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- registro versione...
|
|
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(345, GETDATE())
|
|
GO
|
|
SELECT * FROM LogUpdateDb ORDER BY Versione DESC |