This commit is contained in:
@@ -780,7 +780,8 @@ 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(
|
||||
|
||||
vm.obj.items[i].units.forEach(
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
|
||||
@@ -792,6 +793,14 @@ async function saveItems(vm) {
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
|
||||
vm.obj.items[i].parts.forEach(
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
|
||||
vm.obj.items[i].partRequests.forEach(
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
|
||||
vm.obj.items[i].labors.forEach(
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
@@ -800,7 +809,16 @@ async function saveItems(vm) {
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
|
||||
//todo: other grandchildren
|
||||
vm.obj.items[i].expenses.forEach(
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
|
||||
vm.obj.items[i].loans.forEach(
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
vm.obj.items[i].outsideServices.forEach(
|
||||
z => (z.workorderItemId = vm.obj.items[i].id)
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -809,7 +827,7 @@ async function saveItems(vm) {
|
||||
//------
|
||||
//save grandchildren
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveExpenses(vm, i);
|
||||
await saveUnits(vm, i);
|
||||
}
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveScheduledUsers(vm, i);
|
||||
@@ -817,14 +835,27 @@ async function saveItems(vm) {
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveTasks(vm, i);
|
||||
}
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveParts(vm, i);
|
||||
}
|
||||
if (!vm.saveResult.fatal) {
|
||||
await savePartRequests(vm, i);
|
||||
}
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveLabors(vm, i);
|
||||
}
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveTravels(vm, i);
|
||||
}
|
||||
//todo: other grandchildren
|
||||
//------
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveExpenses(vm, i);
|
||||
}
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveLoans(vm, i);
|
||||
}
|
||||
if (!vm.saveResult.fatal) {
|
||||
await saveOutsideServices(vm, i);
|
||||
}
|
||||
}
|
||||
}
|
||||
//####################################################################################
|
||||
@@ -833,25 +864,23 @@ async function saveItems(vm) {
|
||||
/////////////////////////////
|
||||
// EXPENSES
|
||||
//
|
||||
async function deleteExpenses(vm, woItemIndex) {
|
||||
async function deleteUnits(vm, woItemIndex) {
|
||||
//walk the array backwards as items may be spliced out
|
||||
for (var i = vm.obj.items[woItemIndex].expenses.length - 1; i >= 0; i--) {
|
||||
const d = vm.obj.items[woItemIndex].expenses[i];
|
||||
for (var i = vm.obj.items[woItemIndex].units.length - 1; i >= 0; i--) {
|
||||
const d = vm.obj.items[woItemIndex].units[i];
|
||||
if (!d.deleted) {
|
||||
continue;
|
||||
}
|
||||
let res = await window.$gz.api.remove(
|
||||
`${API_BASE_URL}items/expenses/${d.id}`
|
||||
);
|
||||
let res = await window.$gz.api.remove(`${API_BASE_URL}items/units/${d.id}`);
|
||||
if (res.error) {
|
||||
handleSaveError(vm, {
|
||||
error: res.error,
|
||||
itemUid: vm.obj.items[woItemIndex].uid,
|
||||
childKey: "expenses",
|
||||
childKey: "units",
|
||||
childUid: d.uid
|
||||
});
|
||||
} else {
|
||||
vm.obj.items[woItemIndex].expenses.splice(i, 1);
|
||||
vm.obj.items[woItemIndex].units.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -859,28 +888,28 @@ async function deleteExpenses(vm, woItemIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
async function saveExpenses(vm, woItemIndex) {
|
||||
async function saveUnits(vm, woItemIndex) {
|
||||
//DELETE FLAGGED ITEMS FIRST
|
||||
await deleteExpenses(vm, woItemIndex);
|
||||
await deleteUnits(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];
|
||||
for (let i = 0; i < vm.obj.items[woItemIndex].units.length; i++) {
|
||||
let o = vm.obj.items[woItemIndex].units[i];
|
||||
if (o.isDirty) {
|
||||
const isPost = o.id == 0;
|
||||
let res = await window.$gz.api.upsert(`${API_BASE_URL}items/expenses`, o);
|
||||
let res = await window.$gz.api.upsert(`${API_BASE_URL}items/units`, o);
|
||||
if (res.error) {
|
||||
handleSaveError(vm, {
|
||||
error: res.error,
|
||||
itemUid: vm.obj.items[woItemIndex].uid,
|
||||
childKey: "expenses",
|
||||
childKey: "units",
|
||||
childUid: o.uid
|
||||
});
|
||||
} else {
|
||||
//Server will update fields on put or post for most workorder graph objecs so need to update entire object here
|
||||
vm.obj.items[woItemIndex].expenses.splice(i, 1, res.data); //vue needs the splice rather than just setting the value in order to trigger reactivity or else the UI won't update
|
||||
vm.obj.items[woItemIndex].units.splice(i, 1, res.data); //vue needs the splice rather than just setting the value in order to trigger reactivity or else the UI won't update
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -952,7 +981,7 @@ async function deleteScheduledUsers(vm, woItemIndex) {
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
// SCHEDULED USERS
|
||||
// TASKS
|
||||
//
|
||||
async function saveTasks(vm, woItemIndex) {
|
||||
//DELETE FLAGGED ITEMS FIRST
|
||||
@@ -1006,6 +1035,61 @@ async function deleteTasks(vm, woItemIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
// PARTS
|
||||
//
|
||||
async function deleteParts(vm, woItemIndex) {
|
||||
//walk the array backwards as items may be spliced out
|
||||
for (var i = vm.obj.items[woItemIndex].parts.length - 1; i >= 0; i--) {
|
||||
const d = vm.obj.items[woItemIndex].parts[i];
|
||||
if (!d.deleted) {
|
||||
continue;
|
||||
}
|
||||
let res = await window.$gz.api.remove(`${API_BASE_URL}items/parts/${d.id}`);
|
||||
if (res.error) {
|
||||
handleSaveError(vm, {
|
||||
error: res.error,
|
||||
itemUid: vm.obj.items[woItemIndex].uid,
|
||||
childKey: "parts",
|
||||
childUid: d.uid
|
||||
});
|
||||
} else {
|
||||
vm.obj.items[woItemIndex].parts.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
//----
|
||||
return;
|
||||
}
|
||||
|
||||
async function saveParts(vm, woItemIndex) {
|
||||
//DELETE FLAGGED ITEMS FIRST
|
||||
await deleteParts(vm, woItemIndex);
|
||||
if (vm.saveResult.fatal) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (let i = 0; i < vm.obj.items[woItemIndex].parts.length; i++) {
|
||||
let o = vm.obj.items[woItemIndex].parts[i];
|
||||
if (o.isDirty) {
|
||||
const isPost = o.id == 0;
|
||||
let res = await window.$gz.api.upsert(`${API_BASE_URL}items/parts`, o);
|
||||
if (res.error) {
|
||||
handleSaveError(vm, {
|
||||
error: res.error,
|
||||
itemUid: vm.obj.items[woItemIndex].uid,
|
||||
childKey: "parts",
|
||||
childUid: o.uid
|
||||
});
|
||||
} else {
|
||||
//Server will update fields on put or post for most workorder graph objecs so need to update entire object here
|
||||
vm.obj.items[woItemIndex].parts.splice(i, 1, res.data); //vue needs the splice rather than just setting the value in order to trigger reactivity or else the UI won't update
|
||||
}
|
||||
}
|
||||
}
|
||||
return; //made it
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
// LABOR
|
||||
//
|
||||
@@ -1121,6 +1205,63 @@ async function deleteTravels(vm, woItemIndex) {
|
||||
return;
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
// EXPENSES
|
||||
//
|
||||
async function deleteExpenses(vm, woItemIndex) {
|
||||
//walk the array backwards as items may be spliced out
|
||||
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/expenses/${d.id}`
|
||||
);
|
||||
if (res.error) {
|
||||
handleSaveError(vm, {
|
||||
error: res.error,
|
||||
itemUid: vm.obj.items[woItemIndex].uid,
|
||||
childKey: "expenses",
|
||||
childUid: d.uid
|
||||
});
|
||||
} else {
|
||||
vm.obj.items[woItemIndex].expenses.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
//----
|
||||
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 {
|
||||
//Server will update fields on put or post for most workorder graph objecs so need to update entire object here
|
||||
vm.obj.items[woItemIndex].expenses.splice(i, 1, res.data); //vue needs the splice rather than just setting the value in order to trigger reactivity or else the UI won't update
|
||||
}
|
||||
}
|
||||
}
|
||||
return; //made it
|
||||
}
|
||||
|
||||
//todo: other grandchildren
|
||||
|
||||
//######################################### UTILITY METHODS ###########################################
|
||||
|
||||
Reference in New Issue
Block a user