Allow undoing Teamspace acknowledgements

This commit is contained in:
2026-08-05 15:27:45 +02:00
parent 20bc04778d
commit 84057771fe
3 changed files with 79 additions and 30 deletions
+28 -2
View File
@@ -702,7 +702,8 @@ async function getStatisticsOverview(period: ParsedPeriod, userId: string) {
td.tracked_minutes,
COALESCE(tdb.billed_minutes, 0)::int AS crm_billed_minutes,
tdb.billed_minutes IS NOT NULL AS has_crm_value,
ack.acknowledged_at IS NOT NULL AS missing_crm_acknowledged
ack.acknowledged_at IS NOT NULL AS missing_crm_acknowledged,
ack.acknowledged_at AS missing_crm_acknowledged_at
FROM ticket_day td
LEFT JOIN ticket_day_billings tdb
ON tdb.ticket_id = td.ticket_id
@@ -753,6 +754,7 @@ async function getStatisticsOverview(period: ParsedPeriod, userId: string) {
ticketResult,
openResult,
missingCrmResult,
acknowledgedMissingCrmResult,
mismatchResult,
closureResult
] = await Promise.all([
@@ -917,7 +919,9 @@ async function getStatisticsOverview(period: ParsedPeriod, userId: string) {
MIN(sb.organization_name) AS organization_name,
tdb.day::text AS day,
tdb.tracked_minutes,
tdb.crm_billed_minutes
tdb.crm_billed_minutes,
false AS acknowledged,
NULL::text AS acknowledged_at
FROM ticket_day_billing tdb
JOIN session_base sb ON sb.ticket_id = tdb.ticket_id AND sb.day = tdb.day
WHERE NOT tdb.has_crm_value
@@ -927,6 +931,27 @@ async function getStatisticsOverview(period: ParsedPeriod, userId: string) {
`,
[period.startIso, period.endIso, userId]
),
query(
`
${baseCte}
SELECT
tdb.ticket_id::text AS ticket_id,
tdb.ticket_number,
MIN(sb.organization_name) AS organization_name,
tdb.day::text AS day,
tdb.tracked_minutes,
tdb.crm_billed_minutes,
true AS acknowledged,
MAX(tdb.missing_crm_acknowledged_at)::text AS acknowledged_at
FROM ticket_day_billing tdb
JOIN session_base sb ON sb.ticket_id = tdb.ticket_id AND sb.day = tdb.day
WHERE NOT tdb.has_crm_value
AND tdb.missing_crm_acknowledged
GROUP BY tdb.ticket_id, tdb.ticket_number, tdb.day, tdb.tracked_minutes, tdb.crm_billed_minutes
ORDER BY tdb.day ASC, tdb.ticket_number ASC;
`,
[period.startIso, period.endIso, userId]
),
query(
`
${baseCte}
@@ -1009,6 +1034,7 @@ async function getStatisticsOverview(period: ParsedPeriod, userId: string) {
attention: {
openSessions: openResult.rows,
missingCrmDays: missingCrmResult.rows,
acknowledgedMissingCrmDays: acknowledgedMissingCrmResult.rows,
crmMismatches: mismatchResult.rows
}
};