Update
This commit is contained in:
1 parent
39690b1d2b
commit
35cb578a96
8 files changed
+1091
-46
No files matched your search
@@ -15,6 +15,7 @@ import { OrganizationSelect } from "@/components/OrganizationSelect";
|
||||
import { readRichActivityEditorValue, RichActivityEditor } from "@/components/RichActivityEditor";
|
||||
import { TodoPanel } from "@/components/TodoPanel";
|
||||
import {
|
||||
acknowledgeProjectReview,
|
||||
createSession,
|
||||
deleteProject,
|
||||
deleteSession,
|
||||
@@ -1406,6 +1407,32 @@ export function TicketDetailPage({ periodType, period, ticketId, onNavigate, onS
|
||||
}
|
||||
}
|
||||
|
||||
async function acknowledgeProjectReviewCheck() {
|
||||
if (!project) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (project.can_edit === false) {
|
||||
toast.error("Projekt ist geteilt", {
|
||||
description: "Nur der Zammad-Owner kann die Prüfung bestätigen."
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
setSavingProjectStatus(true);
|
||||
try {
|
||||
await acknowledgeProjectReview(project.id);
|
||||
toast.success("Prüfung bestätigt");
|
||||
await load();
|
||||
} catch (error) {
|
||||
toast.error("Prüfung konnte nicht bestätigt werden", {
|
||||
description: error instanceof Error ? error.message : "Unbekannter Fehler"
|
||||
});
|
||||
} finally {
|
||||
setSavingProjectStatus(false);
|
||||
}
|
||||
}
|
||||
|
||||
async function submitTicketSession(event: FormEvent) {
|
||||
event.preventDefault();
|
||||
|
||||
@@ -1879,9 +1906,28 @@ export function TicketDetailPage({ periodType, period, ticketId, onNavigate, onS
|
||||
) : null}
|
||||
{project.close_review_required ? (
|
||||
<Alert variant="warning">
|
||||
<div className="font-medium">Zeiten prüfen</div>
|
||||
<div className="text-sm text-muted-foreground">
|
||||
Zammad meldet dieses Consulting-Ticket als geschlossen. Bitte Zeiten in Teamspace und TicketTracker prüfen und das Projekt danach schließen.
|
||||
<div className="flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
|
||||
<div className="space-y-1">
|
||||
<div className="font-medium">{project.zammad_merged_from_ticket_id || project.zammad_state_id !== "4" ? "Merge prüfen" : "Zeiten prüfen"}</div>
|
||||
<div className="text-sm text-muted-foreground">
|
||||
{project.zammad_merged_from_ticket_id || project.zammad_state_id !== "4"
|
||||
? project.zammad_merged_from_ticket_id
|
||||
? `Dieses Projekt wurde aus ${project.zammad_merged_from_ticket_number ?? `Zammad-ID ${project.zammad_merged_from_ticket_id}`} übernommen. Teamspace-Projekte, Budget und Zuordnungen bleiben lokal erhalten; bitte in Zammad prüfen und nachtragen.`
|
||||
: "Dieses Projekt steht zur TS/TT-Prüfung, obwohl das Zammad-Ticket offen ist. Teamspace-Projekte, Budget und Zuordnungen bleiben lokal erhalten; bitte in Zammad prüfen und nachtragen."
|
||||
: "Zammad meldet dieses Consulting-Ticket als geschlossen. Bitte Zeiten in Teamspace und TicketTracker prüfen und das Projekt danach schließen."}
|
||||
</div>
|
||||
</div>
|
||||
<Button
|
||||
type="button"
|
||||
variant="outline"
|
||||
size="sm"
|
||||
className="shrink-0"
|
||||
disabled={savingProjectStatus || project.can_edit === false}
|
||||
onClick={() => void acknowledgeProjectReviewCheck()}
|
||||
>
|
||||
<CheckCircle2 className="mr-2 h-4 w-4" />
|
||||
Geprüft
|
||||
</Button>
|
||||
</div>
|
||||
</Alert>
|
||||
) : null}
|
||||
|
||||
Reference in new issue
Block a user