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

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