This commit is contained in:
2021-05-10 19:24:16 +00:00
parent bc1493ee30
commit 4561e879a7

View File

@@ -729,9 +729,14 @@ async function saveItems(vm) {
vm.obj.items[i].id = res.data.id;
vm.obj.items[i].workorderId = res.data.workorderId;
//walk all unsaved children and set the workorder id so they can save
vm.obj.items[i].expenses.forEach(
z => (z.workorderItemId = vm.obj.items[i].id)
);
vm.obj.items[i].scheduledUsers.forEach(
z => (z.workorderItemId = vm.obj.items[i].id)
);
//todo: other grandchildren
}
}
@@ -740,6 +745,9 @@ async function saveItems(vm) {
}
//------
//save grandchildren
if (!vm.saveResult.fatal) {
await saveExpenses(vm, i);
}
if (!vm.saveResult.fatal) {
await saveScheduledUsers(vm, i);
}
@@ -751,31 +759,27 @@ async function saveItems(vm) {
//## GRANDCHILDREN
/////////////////////////////
// SCHEDULED USERS
// EXPENSES
//
async function deleteScheduledUsers(vm, woItemIndex) {
async function deleteExpenses(vm, woItemIndex) {
//walk the array backwards as items may be spliced out
for (
var i = vm.obj.items[woItemIndex].scheduledUsers.length - 1;
i >= 0;
i--
) {
const d = vm.obj.items[woItemIndex].scheduledUsers[i];
for (var i = vm.obj.items[woItemIndex].expenses.length - 1; i >= 0; i--) {
const d = vm.obj.items[woItemIndex].expenses[i];
if (!d.deleted) {
continue;
}
let res = await window.$gz.api.remove(
`${API_BASE_URL}items/scheduledusers/${d.id}`
`${API_BASE_URL}items/expenses/${d.id}`
);
if (res.error) {
handleSaveError(vm, {
error: res.error,
itemUid: vm.obj.items[woItemIndex].uid,
childKey: "scheduledUsers",
childKey: "expenses",
childUid: d.uid
});
} else {
vm.obj.items[woItemIndex].scheduledUsers.splice(i, 1);
vm.obj.items[woItemIndex].expenses.splice(i, 1);
}
}
@@ -783,6 +787,45 @@ async function deleteScheduledUsers(vm, woItemIndex) {
return;
}
async function saveExpenses(vm, woItemIndex) {
//DELETE FLAGGED ITEMS FIRST
await deleteExpenses(vm, woItemIndex);
if (vm.saveResult.fatal) {
return;
}
for (let i = 0; i < vm.obj.items[woItemIndex].expenses.length; i++) {
let o = vm.obj.items[woItemIndex].expenses[i];
if (o.isDirty) {
const isPost = o.id == 0;
let res = await window.$gz.api.upsert(`${API_BASE_URL}items/expenses`, o);
if (res.error) {
handleSaveError(vm, {
error: res.error,
itemUid: vm.obj.items[woItemIndex].uid,
childKey: "expenses",
childUid: o.uid
});
} else {
//update any server changed fields
//always updated:
o.concurrency = res.data.concurrency;
o.isDirty = false;
//new records only...
if (isPost) {
o.id = res.data.id;
o.workOrderItemId = res.data.workOrderItemId;
}
}
}
}
return; //made it
}
/////////////////////////////
// SCHEDULED USERS
//
async function saveScheduledUsers(vm, woItemIndex) {
//DELETE FLAGGED ITEMS FIRST
await deleteScheduledUsers(vm, woItemIndex);
@@ -822,6 +865,39 @@ async function saveScheduledUsers(vm, woItemIndex) {
return; //made it
}
/////////////////////////////
// SCHEDULED USERS
//
async function deleteScheduledUsers(vm, woItemIndex) {
//walk the array backwards as items may be spliced out
for (
var i = vm.obj.items[woItemIndex].scheduledUsers.length - 1;
i >= 0;
i--
) {
const d = vm.obj.items[woItemIndex].scheduledUsers[i];
if (!d.deleted) {
continue;
}
let res = await window.$gz.api.remove(
`${API_BASE_URL}items/scheduledusers/${d.id}`
);
if (res.error) {
handleSaveError(vm, {
error: res.error,
itemUid: vm.obj.items[woItemIndex].uid,
childKey: "scheduledUsers",
childUid: d.uid
});
} else {
vm.obj.items[woItemIndex].scheduledUsers.splice(i, 1);
}
}
//----
return;
}
//todo: other grandchildren
//######################################### UTILITY METHODS ###########################################