Update
This commit is contained in:
1 parent
39690b1d2b
commit
35cb578a96
8 files changed
+1091
-46
No files matched your search
@@ -433,7 +433,7 @@ function formatChangeValue(field: string, value: unknown) {
|
||||
return formatMinutes(value);
|
||||
}
|
||||
|
||||
if (field === "Teamspace-Projekte" || field === "Teamspace-Prüfung") {
|
||||
if (field === "Teamspace-Projekte" || field === "Teamspace-Prüfung" || field === "Merge-Projektdaten") {
|
||||
return formatTeamspaceProjectList(value) || "-";
|
||||
}
|
||||
|
||||
@@ -493,6 +493,10 @@ function changeAllowedByFields(item: ZammadSyncItem, change: ZammadSyncChange, f
|
||||
return fields.projectName && consultingProjectCanBeTouched;
|
||||
}
|
||||
|
||||
if (change.field === "Merge-Projektdaten" || change.field === "Merge-Prüfung") {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (change.field === "Teamspace-Budget") {
|
||||
return fields.budget && consultingProjectCanBeTouched;
|
||||
}
|
||||
@@ -578,6 +582,10 @@ function addCachedTeamspaceProjectChanges(changes: ZammadSyncChange[], localProj
|
||||
}
|
||||
}
|
||||
|
||||
function mergeReviewMatchesCachedZammad(localTeamspaceProjects: unknown, zammadTeamspaceProjects: unknown) {
|
||||
return !cachedValueChanged("Teamspace-Projekte", localTeamspaceProjects, zammadTeamspaceProjects);
|
||||
}
|
||||
|
||||
function zammadPendingTodoPreview(zammad: Record<string, unknown>) {
|
||||
const stateId = numericValue(cachedValue(zammad, "stateId"));
|
||||
const pendingTime = cachedValue(zammad, "pendingTime");
|
||||
@@ -666,6 +674,11 @@ function changesFromExistingPreviewCache(item: ZammadSyncItem, fields: ZammadSyn
|
||||
const localWorkType = cachedValue(local, "workType");
|
||||
const zammadWorkType = cachedValue(zammad, "workType");
|
||||
const zammadStateId = numericValue(cachedValue(zammad, "stateId"));
|
||||
const mergeProtected = Boolean(
|
||||
cachedValue(local, "zammadMergedFromTicketId")
|
||||
|| cachedValue(zammad, "mergedFromTicketId")
|
||||
|| (cachedValue(project, "closeReviewRequired") === true && zammadStateId !== 4)
|
||||
);
|
||||
const pendingTodoExists = cachedValue(local, "zammadPendingTodoExists");
|
||||
const localTeamspaceProjects = cachedStringList(project, "teamspaceProjects");
|
||||
const zammadTeamspaceProjects = cachedStringList(zammad, "teamspaceProjects");
|
||||
@@ -694,15 +707,15 @@ function changesFromExistingPreviewCache(item: ZammadSyncItem, fields: ZammadSyn
|
||||
addCachedChange(changes, "Organisation", cachedValue(local, "organizationId"), cachedValue(zammad, "organizationId"));
|
||||
}
|
||||
|
||||
if (fields.type) {
|
||||
if (fields.type && !mergeProtected) {
|
||||
addCachedChange(changes, "Typ", localWorkType, zammadWorkType);
|
||||
}
|
||||
|
||||
if (fields.type && zammadWorkType === "support" && project) {
|
||||
if (!mergeProtected && fields.type && zammadWorkType === "support" && project) {
|
||||
changes.push({ field: "Projekt/Teamspace-Daten", from: "vorhanden", to: "werden gelöscht" });
|
||||
}
|
||||
|
||||
const consultingProjectCanBeTouched = zammadWorkType === "consulting" && (fields.type || localWorkType === "consulting");
|
||||
const consultingProjectCanBeTouched = !mergeProtected && zammadWorkType === "consulting" && (fields.type || localWorkType === "consulting");
|
||||
|
||||
if (consultingProjectCanBeTouched) {
|
||||
if (fields.type && !project) {
|
||||
@@ -722,6 +735,27 @@ function changesFromExistingPreviewCache(item: ZammadSyncItem, fields: ZammadSyn
|
||||
}
|
||||
}
|
||||
|
||||
if (mergeProtected && project && cachedValue(project, "closeReviewRequired") === true && zammadStateId !== 4) {
|
||||
if (mergeReviewMatchesCachedZammad(localTeamspaceProjectList, zammadTeamspaceProjectList)) {
|
||||
changes.push({ field: "Merge-Prüfung", from: true, to: false });
|
||||
} else {
|
||||
if (localTeamspaceProjectList.length > 0 && zammadTeamspaceProjectList.length === 0) {
|
||||
changes.push({
|
||||
field: "Merge-Projektdaten",
|
||||
from: normalizedTeamspaceProjectList(localTeamspaceProjectList),
|
||||
to: "in Zammad fehlen; lokale Projektdaten bleiben erhalten und muessen dort nachgetragen werden"
|
||||
});
|
||||
} else if (cachedValueChanged("Teamspace-Projekte", localTeamspaceProjectList, zammadTeamspaceProjectList)) {
|
||||
changes.push({
|
||||
field: "Merge-Projektdaten",
|
||||
from: normalizedTeamspaceProjectList(localTeamspaceProjectList),
|
||||
to: normalizedTeamspaceProjectList(zammadTeamspaceProjectList)
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return changes;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user