implement latest changes to employee payroll process

- Add ContractDaysWeek
- Add Sickness Days to employee export sheet
- Add Gesundheitsbonus value per employee
- Additional fixes
This commit is contained in:
Marcel Arndt
2025-12-12 11:52:03 +01:00
parent 156733f65a
commit 0951282f11
17 changed files with 408 additions and 205 deletions
@@ -5,6 +5,7 @@ SELECT
de.surname,
de."contractStart",
de."contractEnd",
de."contractDaysWeek",
de."contractHoursWeek",
de."contractSalaryHour",
de."contractTypeName",
@@ -119,6 +120,25 @@ SELECT
COUNT(CASE WHEN was_punctual THEN 1 END) AS punctual_days
FROM daily_comparison;
-- name: IsEmployeesDepartmentNotLeitstelle :one
SELECT COALESCE(
(
(
bool_or(department LIKE '%KTW%')
OR bool_or(department LIKE '%BTW%')
OR bool_or(department LIKE '%TSW%')
)
AND
bool_and(department <> 'Leitstelle')
),
false
)::bool as meets_requirements
FROM "PlannedTime"
WHERE
"userId"::int = @employee_id::bigint
AND "startDate" BETWEEN @start_date AND @end_date
AND department IS NOT NULL;
-- name: IsEmployeesDepartmentKTW :one
SELECT COALESCE(
(
@@ -152,16 +172,7 @@ WITH ToursInPeriod AS (
CASE
WHEN "occupiedKm" <= 30 THEN 1.0
ELSE ROUND("occupiedKm" / 30.0)
END AS tour_value,
CASE
WHEN EXTRACT(ISODOW FROM "startDate") = 6 AND "occupiedKm" <= 30 THEN 0.5
ELSE 0.0
END AS weekend_bonus,
"infectionName",
CASE
WHEN "infectionName" = 'Covid-19' THEN 0.5
ELSE 0.0
END AS infection_bonus
END AS tour_value
FROM
"Tour"
WHERE
@@ -193,7 +204,7 @@ WITH ToursInPeriod AS (
DailyCounts AS (
SELECT
day,
SUM(tour_value) + SUM(weekend_bonus) + SUM(infection_bonus) AS tour_amount
SUM(tour_value) AS tour_amount
FROM
ToursInPeriod
GROUP BY
@@ -214,4 +225,15 @@ TourenGeld AS (
)
SELECT
COALESCE(tourengeld, 0.0)
FROM TourenGeld;
FROM TourenGeld;
-- name: ListSickdaysForEmployee :many
SELECT
"start",
"end",
"days",
locked
FROM "Sickdays"
WHERE
"employeeId" = @employee_id
ORDER BY start asc;