diff --git a/frontend/src/views/DashboardPage.tsx b/frontend/src/views/DashboardPage.tsx index 85556bc..fab0079 100644 --- a/frontend/src/views/DashboardPage.tsx +++ b/frontend/src/views/DashboardPage.tsx @@ -1696,7 +1696,7 @@ function DayControlWidget({ stats, projects, todos, onNavigate }: WidgetContentP ); const todayTickets = stableSort(stats.todayTickets, (left, right) => compareText(left.ticket_number, right.ticket_number)); const todayOpenRatings = stableSort(stats.todayOpenRatings, (left, right) => compareOptionalDate(left.started_at, right.started_at, "asc") || compareText(left.ticket_number, right.ticket_number)); - const teamspaceReviewTickets = todayTickets.filter((ticket) => ticket.open_count === 0 && teamspaceDeltaMinutes(ticket) !== 0); + const teamspaceReviewTickets = todayTickets.filter((ticket) => ticket.open_count === 0 && teamspaceDeltaMinutes(ticket) > 0); const budgetAttention = stableSort( projects.filter((project) => { const percent = projectConsumptionPercent(project); @@ -1891,11 +1891,7 @@ function dayControlTodaySessionReason(ticket: PeriodOverview["tickets"][number]) return `Teamspace nachtragen: ${formatMinutes(deltaMinutes)} fehlen.`; } - if (deltaMinutes < 0) { - return `Teamspace prüfen: ${formatMinutes(Math.abs(deltaMinutes))} zu viel erfasst.`; - } - - if (ticket.total_minutes > 0) { + if (ticket.total_minutes > 0 && deltaMinutes === 0) { return `Teamspace ok: ${formatMinutes(crmMinutes)} erfasst.`; } @@ -1903,7 +1899,7 @@ function dayControlTodaySessionReason(ticket: PeriodOverview["tickets"][number]) return `Nicht abrechenbar gesetzt: Zammad-Dokumentation kontrollieren.`; } - return "Heute erfasst: Bewertung kontrollieren."; + return ticket.total_minutes > 0 ? "Abgerechnet gesetzt." : "Heute erfasst: Bewertung kontrollieren."; } function teamspaceDeltaMinutes(ticket: PeriodOverview["tickets"][number]) { diff --git a/frontend/src/views/MonthlyClosePage.tsx b/frontend/src/views/MonthlyClosePage.tsx index 5af2b80..dfc6901 100644 --- a/frontend/src/views/MonthlyClosePage.tsx +++ b/frontend/src/views/MonthlyClosePage.tsx @@ -157,7 +157,7 @@ function CrmDayItem({ ); } -function TeamspaceDayItem({ item }: { item: StatisticsTeamspaceDay }) { +function TeamspaceDayItem({ item, onNavigate }: { item: StatisticsTeamspaceDay; onNavigate: (to: string) => void }) { return (
@@ -165,14 +165,20 @@ function TeamspaceDayItem({ item }: { item: StatisticsTeamspaceDay }) {
- {item.ticket_number} + {item.project_teamspace_project ? {item.project_teamspace_project} : null}

{item.organization_name}

- Teamspace {formatMinutes(item.crm_billed_minutes)} + {formatMinutes(item.crm_billed_minutes)}
); @@ -469,7 +475,7 @@ export function MonthlyClosePage({ onNavigate }: MonthlyClosePageProps) { {teamspaceDays.length > 0 ? (
{teamspaceDays.map((item) => ( - + ))}
) : ( diff --git a/frontend/src/views/TicketDetailPage.tsx b/frontend/src/views/TicketDetailPage.tsx index 5c37954..1dcadc3 100644 --- a/frontend/src/views/TicketDetailPage.tsx +++ b/frontend/src/views/TicketDetailPage.tsx @@ -1723,7 +1723,7 @@ export function TicketDetailPage({ periodType, period, ticketId, onNavigate, onO return (
-
+
-
+
{formatMinutes(session.rounded_minutes)} {session.recurring_billing_id ? fix : null} {requiresProjectTeamspaceEntry ? ( session.project_teamspace_entry_id ? ( - {session.project_teamspace_project || "Teamspace"} + {session.project_teamspace_project || "Teamspace"} ) : ( ohne Teamspace )