Update
This commit is contained in:
1 parent
c01d747352
commit
235c19e51b
10 files changed
+175
-31
No files matched your search
@@ -34,7 +34,8 @@ const defaultFields: ZammadSyncExistingFields = {
|
||||
type: true,
|
||||
projectName: true,
|
||||
budget: true,
|
||||
overrideBudget: false
|
||||
overrideBudget: false,
|
||||
pendingTodo: false
|
||||
};
|
||||
|
||||
const fieldOptions: Array<{ key: Exclude<keyof ZammadSyncExistingFields, "overrideBudget">; label: string; description: string }> = [
|
||||
@@ -42,7 +43,8 @@ const fieldOptions: Array<{ key: Exclude<keyof ZammadSyncExistingFields, "overri
|
||||
{ key: "organization", label: "Organisation", description: "Lokale Organisation anhand der Zammad-ID setzen." },
|
||||
{ key: "type", label: "Typ", description: "Support/Consulting übernehmen, Projekte anlegen oder entfernen." },
|
||||
{ key: "projectName", label: "Projektbezeichnung", description: "Teamspace-Projekt bei Consulting überschreiben." },
|
||||
{ key: "budget", label: "Budget", description: "Teamspace-Stundenkontingent überschreiben." }
|
||||
{ key: "budget", label: "Budget", description: "Teamspace-Stundenkontingent überschreiben." },
|
||||
{ key: "pendingTodo", label: "Termin-ToDo", description: "Aus Wartend/Abschluss mit Datum ein ToDo erzeugen." }
|
||||
];
|
||||
|
||||
type ZammadSyncPageState = {
|
||||
@@ -264,6 +266,10 @@ function changeAllowedByFields(item: ZammadSyncItem, change: ZammadSyncChange, f
|
||||
return fields.budget && consultingProjectCanBeTouched;
|
||||
}
|
||||
|
||||
if (change.field === "ToDo") {
|
||||
return fields.pendingTodo;
|
||||
}
|
||||
|
||||
if (change.field === "TS/TT-Prüfung") {
|
||||
return consultingProjectCanBeTouched;
|
||||
}
|
||||
@@ -294,7 +300,28 @@ function formatTeamspaceProjectList(value: unknown) {
|
||||
}
|
||||
|
||||
function splitTeamspaceProjects(value: unknown) {
|
||||
return typeof value === "string" ? value.split("+").map((entry) => entry.trim()).filter(Boolean) : [];
|
||||
return typeof value === "string" ? value.match(/[^\s+]+/g) ?? [] : [];
|
||||
}
|
||||
|
||||
function zammadPendingTodoPreview(zammad: Record<string, unknown>) {
|
||||
const stateId = numericValue(cachedValue(zammad, "stateId"));
|
||||
const pendingTime = cachedValue(zammad, "pendingTime");
|
||||
|
||||
if ((stateId !== 3 && stateId !== 7) || typeof pendingTime !== "string") {
|
||||
return null;
|
||||
}
|
||||
|
||||
const date = new Date(pendingTime);
|
||||
|
||||
if (Number.isNaN(date.getTime())) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const kind = stateId === 7 ? "Abschluss" : "Erinnerung";
|
||||
const ticketNumber = cachedValue(zammad, "ticketNumber");
|
||||
const ticketLabel = typeof ticketNumber === "string" ? ticketNumber.replace(/^Ticket#?/i, "").replace(/^#/, "") : "";
|
||||
|
||||
return `${kind} ${ticketLabel ? `Ticket#${ticketLabel}` : "Ticket"} (${date.toISOString().slice(0, 10)})`;
|
||||
}
|
||||
|
||||
function comparablePreviewValue(value: unknown) {
|
||||
@@ -370,6 +397,11 @@ function changesFromExistingPreviewCache(item: ZammadSyncItem, fields: ZammadSyn
|
||||
addCachedChange(changes, "Zammad-Priorität", cachedValue(local, "zammadPriorityId"), cachedValue(zammad, "priorityId"));
|
||||
addCachedChange(changes, "Zammad-Status", cachedValue(local, "zammadStateId"), cachedValue(zammad, "stateId"));
|
||||
|
||||
const pendingTodo = zammadPendingTodoPreview(zammad);
|
||||
if (fields.pendingTodo && pendingTodo) {
|
||||
changes.push({ field: "ToDo", from: null, to: pendingTodo });
|
||||
}
|
||||
|
||||
if (zammadWorkType === "support" && zammadStateId === 4) {
|
||||
return changes;
|
||||
}
|
||||
@@ -532,6 +564,7 @@ function zammadDetails(item: ZammadSyncItem) {
|
||||
`Typ ${formatWorkType(zammad.workType)}`,
|
||||
`Status ${formatZammadState(zammad.stateId)}`,
|
||||
`Priorität ${formatZammadPriority(zammad.priorityId)}`,
|
||||
`Warten ${formatValue(zammad.pendingTime)}`,
|
||||
`Owner ${formatValue(zammad.ownerId)}`,
|
||||
`Org ${formatValue(zammad.organizationId)}`,
|
||||
`Titel ${formatValue(zammad.title)}`,
|
||||
|
||||
Reference in new issue
Block a user