O número de horas trabalhadas está disponível no relatório único (Anexo D - o valor do n.º de horas trabalhadas do quadro I, ponto 4).
Em alternativa pode utilizar a seguinte query para criar uma SP no SQL e adicionar como lista no ERP:
DECLARE @DataI AS DATETIME
, @DataF AS DATETIME
, @DiasUteis AS INT
SET @DataI = '01-01-2020'
SET @DataF = '12-31-2020'
SELECT NumFuncs = SUM(ISNULL(NumFuncs,0))
FROM (
--Funcionários presentes durante TODO o ano
SELECT NumFuncs = SUM( ISNULL(P.DiasUteis,0) * CASE CAST(NumHorasSemInstrumentos AS INT)
WHEN 1 THEN HorasSemana/5
ELSE NumHoras/5
END)
FROM Funcionarios F (NoLock)
LEFT JOIN PeriodoDetalhado P (NoLock) ON P.Periodo = F.Periodo
INNER JOIN Instrumentos I (NoLock) ON I.Instrumento = F.Instrumento
WHERE (DataFimContrato >= @DataF OR DataFimContrato IS NULL)
AND (DataAdmissao <= @DataI)
AND (DataDemissao >= @DataF OR DataDemissao IS NULL)
AND P.Ano = 2020
UNION ALL
--Funcionários com data de fim de contrato no ano e com data de demissão nula ou no mesmo ano
SELECT NumFuncs = SUM( ISNULL(P.DiasUteis,0) * CASE CAST(NumHorasSemInstrumentos AS INT)
WHEN 1 THEN HorasSemana/5
ELSE NumHoras/5
END)
FROM Funcionarios F (NoLock)
LEFT JOIN PeriodoDetalhado P (NoLock) ON P.Periodo = F.Periodo
INNER JOIN Instrumentos I (NoLock) ON I.Instrumento = F.Instrumento
WHERE (DataFimContrato > @DataI AND DataFimContrato < @DataF)
AND (DataDemissao IS NULL)
AND (DataAdmissao <= @DataI)
AND P.Ano = 2020 AND P.MesFiscal <= Month(DataFimContrato)
UNION ALL
--Funcionários com data de demissão no ano
SELECT NumFuncs = SUM( ISNULL(P.DiasUteis,0) * CASE CAST(NumHorasSemInstrumentos AS INT)
WHEN 1 THEN HorasSemana/5
ELSE NumHoras/5
END)
FROM Funcionarios F (NoLock)
LEFT JOIN PeriodoDetalhado P (NoLock) ON P.Periodo = F.Periodo
INNER JOIN Instrumentos I (NoLock) ON I.Instrumento = F.Instrumento
WHERE (DataDemissao > @DataI AND DataDemissao < @DataF)
AND (DataAdmissao <= @DataI)
AND P.Ano = 2020 AND P.MesFiscal <= Month(DataDemissao)
UNION ALL
--Funcionários admitidos durante o ano
SELECT NumFuncs = SUM( ISNULL(P.DiasUteis,0) * CASE CAST(NumHorasSemInstrumentos AS INT)
WHEN 1 THEN HorasSemana/5
ELSE NumHoras/5
END)
FROM Funcionarios F (NoLock)
LEFT JOIN PeriodoDetalhado P (NoLock) ON P.Periodo = F.Periodo
INNER JOIN Instrumentos I (NoLock) ON I.Instrumento = F.Instrumento
WHERE (DataFimContrato >= @DataF OR DataFimContrato IS NULL)
AND (DataAdmissao > @DataI AND DataAdmissao <= @DataF)
AND (DataDemissao >= @DataF OR DataDemissao IS NULL)
AND P.Ano = 2020 AND P.MesFiscal >= Month(DataAdmissao)
UNION ALL
--Funcionários admitidos e demitidos no ano
SELECT NumFuncs = SUM( ISNULL(P.DiasUteis,0) * CASE CAST(NumHorasSemInstrumentos AS INT)
WHEN 1 THEN HorasSemana/5
ELSE NumHoras/5
END)
FROM Funcionarios F (NoLock)
LEFT JOIN PeriodoDetalhado P (NoLock) ON P.Periodo = F.Periodo
INNER JOIN Instrumentos I (NoLock) ON I.Instrumento = F.Instrumento
WHERE ((DataFimContrato > @DataI AND DataFimContrato < @DataF)
OR (DataDemissao > @DataI AND DataDemissao < @DataF))
AND (DataAdmissao > @DataI) AND (DataAdmissao < @DataF)
AND P.Ano = 2020 AND (P.MesFiscal >= Month(DataAdmissao) AND (P.MesFiscal <= month(DataFimContrato) OR P.MesFiscal <= month(DataDemissao)))
) TEMP
--Deverá subtrair o resultado desta segunda query que diz respeito aos tempos de férias.
SELECT SUM((IsNull(Ferias.TotalDias,0) - IsNull(Ferias.DiasAnoAnterior,0)) *
CASE CAST(F.NumHorasSemInstrumentos AS INT)
WHEN 1
THEN F.HorasSemana/5
ELSE I.NumHoras/5
END ) AS Ferias
FROM FuncinfFerias ferias (NoLock)
INNER JOIN funcionarios F (NoLock) ON F.codigo = ferias.Funcionario
INNER JOIN Instrumentos I (NoLock) ON I.Instrumento = F.Instrumento
WHERE ferias.Ano = 2020