This commit is contained in:
@@ -729,9 +729,14 @@ async function saveItems(vm) {
|
|||||||
vm.obj.items[i].id = res.data.id;
|
vm.obj.items[i].id = res.data.id;
|
||||||
vm.obj.items[i].workorderId = res.data.workorderId;
|
vm.obj.items[i].workorderId = res.data.workorderId;
|
||||||
//walk all unsaved children and set the workorder id so they can save
|
//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(
|
vm.obj.items[i].scheduledUsers.forEach(
|
||||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||||
);
|
);
|
||||||
|
|
||||||
//todo: other grandchildren
|
//todo: other grandchildren
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -740,6 +745,9 @@ async function saveItems(vm) {
|
|||||||
}
|
}
|
||||||
//------
|
//------
|
||||||
//save grandchildren
|
//save grandchildren
|
||||||
|
if (!vm.saveResult.fatal) {
|
||||||
|
await saveExpenses(vm, i);
|
||||||
|
}
|
||||||
if (!vm.saveResult.fatal) {
|
if (!vm.saveResult.fatal) {
|
||||||
await saveScheduledUsers(vm, i);
|
await saveScheduledUsers(vm, i);
|
||||||
}
|
}
|
||||||
@@ -751,31 +759,27 @@ async function saveItems(vm) {
|
|||||||
//## GRANDCHILDREN
|
//## GRANDCHILDREN
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// SCHEDULED USERS
|
// EXPENSES
|
||||||
//
|
//
|
||||||
async function deleteScheduledUsers(vm, woItemIndex) {
|
async function deleteExpenses(vm, woItemIndex) {
|
||||||
//walk the array backwards as items may be spliced out
|
//walk the array backwards as items may be spliced out
|
||||||
for (
|
for (var i = vm.obj.items[woItemIndex].expenses.length - 1; i >= 0; i--) {
|
||||||
var i = vm.obj.items[woItemIndex].scheduledUsers.length - 1;
|
const d = vm.obj.items[woItemIndex].expenses[i];
|
||||||
i >= 0;
|
|
||||||
i--
|
|
||||||
) {
|
|
||||||
const d = vm.obj.items[woItemIndex].scheduledUsers[i];
|
|
||||||
if (!d.deleted) {
|
if (!d.deleted) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let res = await window.$gz.api.remove(
|
let res = await window.$gz.api.remove(
|
||||||
`${API_BASE_URL}items/scheduledusers/${d.id}`
|
`${API_BASE_URL}items/expenses/${d.id}`
|
||||||
);
|
);
|
||||||
if (res.error) {
|
if (res.error) {
|
||||||
handleSaveError(vm, {
|
handleSaveError(vm, {
|
||||||
error: res.error,
|
error: res.error,
|
||||||
itemUid: vm.obj.items[woItemIndex].uid,
|
itemUid: vm.obj.items[woItemIndex].uid,
|
||||||
childKey: "scheduledUsers",
|
childKey: "expenses",
|
||||||
childUid: d.uid
|
childUid: d.uid
|
||||||
});
|
});
|
||||||
} else {
|
} 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;
|
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) {
|
async function saveScheduledUsers(vm, woItemIndex) {
|
||||||
//DELETE FLAGGED ITEMS FIRST
|
//DELETE FLAGGED ITEMS FIRST
|
||||||
await deleteScheduledUsers(vm, woItemIndex);
|
await deleteScheduledUsers(vm, woItemIndex);
|
||||||
@@ -822,6 +865,39 @@ async function saveScheduledUsers(vm, woItemIndex) {
|
|||||||
return; //made it
|
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
|
//todo: other grandchildren
|
||||||
|
|
||||||
//######################################### UTILITY METHODS ###########################################
|
//######################################### UTILITY METHODS ###########################################
|
||||||
|
|||||||
Reference in New Issue
Block a user