This commit is contained in:
@@ -410,9 +410,17 @@ CURRENTLY DOING:
|
||||
|
||||
3891 3: Implement a workable duplication system
|
||||
SEE CASE 3891 for duplicate at client idea
|
||||
Also this is a "3" because this idea rocks and I will likely need to remove duplicate route from every biz object at server and replace with dupe at client instead
|
||||
actually should be quick and easy theoretically since it's a slight variation of the technique used to make new objects and then move to their id with data intact
|
||||
and just setting a few values to 0 or null like concurrency/ id etc
|
||||
|
||||
Tested on Project, works perfectly, also found some optimizations to make around new records in create and also found that new: true is unnecessarily being set on route
|
||||
|
||||
todo: duplicate the duplicate stuff in Project on all other forms
|
||||
- remove new: true from all places it currently appears, completely superflous
|
||||
- rejig the formstate setting and object setting code for duplicate based on project
|
||||
- in duplicate menu object creation add code from project to check if id is zero before adding it
|
||||
- replace duplicate code with project version
|
||||
- Remove at server duplicate route and de-document if found anywhere
|
||||
- At server remove any now redundant code that was related to duplication
|
||||
|
||||
|
||||
todo: how to directly open a workorder quickly when you know the wo number??
|
||||
should be supported, otherwise you need to scroll around a list to find it which is fucked
|
||||
|
||||
@@ -562,7 +562,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "service-rate-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
@@ -676,7 +676,7 @@ function generateMenu(vm) {
|
||||
});
|
||||
}
|
||||
|
||||
if (vm.rights.change) {
|
||||
if (vm.rights.change && vm.$route.params.recordid != 0) {
|
||||
menuOptions.menuItems.push({
|
||||
title: "Duplicate",
|
||||
icon: "$ayiClone",
|
||||
|
||||
@@ -519,7 +519,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "tax-code-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
@@ -633,7 +633,7 @@ function generateMenu(vm) {
|
||||
});
|
||||
}
|
||||
|
||||
if (vm.rights.change) {
|
||||
if (vm.rights.change && vm.$route.params.recordid != 0) {
|
||||
menuOptions.menuItems.push({
|
||||
title: "Duplicate",
|
||||
icon: "$ayiClone",
|
||||
|
||||
@@ -560,7 +560,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "travel-rate-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
@@ -674,7 +674,7 @@ function generateMenu(vm) {
|
||||
});
|
||||
}
|
||||
|
||||
if (vm.rights.change) {
|
||||
if (vm.rights.change && vm.$route.params.recordid != 0) {
|
||||
menuOptions.menuItems.push({
|
||||
title: "Duplicate",
|
||||
icon: "$ayiClone",
|
||||
|
||||
@@ -513,7 +513,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "adm-translation",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -926,7 +926,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "adm-user",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -1000,7 +1000,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "ay-report-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
@@ -1075,7 +1075,7 @@ function generateMenu(vm) {
|
||||
});
|
||||
}
|
||||
|
||||
if (vm.rights.change) {
|
||||
if (vm.rights.change && vm.$route.params.recordid != 0) {
|
||||
menuOptions.menuItems.push({
|
||||
title: "Duplicate",
|
||||
icon: "$ayiClone",
|
||||
|
||||
@@ -385,7 +385,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "customer-note-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
|
||||
|
||||
@@ -1357,7 +1357,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "customer-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
@@ -1488,7 +1488,7 @@ function generateMenu(vm) {
|
||||
});
|
||||
}
|
||||
|
||||
if (vm.rights.change) {
|
||||
if (vm.rights.change && vm.$route.params.recordid != 0) {
|
||||
menuOptions.menuItems.push({
|
||||
title: "Duplicate",
|
||||
icon: "$ayiClone",
|
||||
|
||||
@@ -1261,7 +1261,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "head-office-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -931,7 +931,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "adm-user",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -553,7 +553,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "memo-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
|
||||
case "report":
|
||||
|
||||
@@ -627,7 +627,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "home-notify-subscription",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -506,7 +506,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "reminder-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -673,7 +673,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "part-assembly-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -455,7 +455,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "inv-part-warehouse",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -670,7 +670,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "inv-part",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -1621,7 +1621,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "project-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -1831,7 +1831,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "contract-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -798,7 +798,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "loan-unit-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -196,31 +196,34 @@ export default {
|
||||
vm.formState.readOnly = !vm.rights.change;
|
||||
window.$gz.eventBus.$on("menu-click", clickHandler);
|
||||
|
||||
let setDirty = false;
|
||||
let setValid = true;
|
||||
|
||||
//id 0 means create a new record don't load one
|
||||
if (vm.$route.params.recordid != 0) {
|
||||
//is there already an obj from a prior operation?
|
||||
if (this.$route.params.obj) {
|
||||
//yes, no need to fetch it
|
||||
this.obj = this.$route.params.obj;
|
||||
window.$gz.form.setFormState({
|
||||
vm: vm,
|
||||
loading: false
|
||||
});
|
||||
} else {
|
||||
await vm.getDataFromApi(vm.$route.params.recordid); //let getdata handle loading
|
||||
}
|
||||
} else {
|
||||
window.$gz.form.setFormState({
|
||||
vm: vm,
|
||||
loading: false
|
||||
});
|
||||
//Might be a duplicate and contain another record
|
||||
if (this.$route.params.obj) {
|
||||
this.obj = this.$route.params.obj;
|
||||
this.obj.concurrency = undefined;
|
||||
this.obj.id = 0;
|
||||
setDirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
window.$gz.form.setFormState({
|
||||
vm: vm,
|
||||
dirty: false,
|
||||
valid: true
|
||||
loading: false,
|
||||
dirty: setDirty,
|
||||
valid: setValid
|
||||
});
|
||||
|
||||
generateMenu(vm);
|
||||
} catch (error) {
|
||||
window.$gz.errorHandler.handleFormError(error, vm);
|
||||
@@ -477,41 +480,16 @@ export default {
|
||||
}
|
||||
},
|
||||
async duplicate() {
|
||||
let vm = this;
|
||||
if (!vm.canDuplicate || vm.$route.params.recordid == 0) {
|
||||
return;
|
||||
}
|
||||
window.$gz.form.setFormState({
|
||||
vm: vm,
|
||||
loading: true
|
||||
});
|
||||
let url = API_BASE_URL + "duplicate/" + vm.$route.params.recordid;
|
||||
|
||||
try {
|
||||
window.$gz.form.deleteAllErrorBoxErrors(vm);
|
||||
let res = await window.$gz.api.upsert(url);
|
||||
if (res.error) {
|
||||
vm.formState.serverError = res.error;
|
||||
window.$gz.form.setErrorBoxErrors(vm);
|
||||
} else {
|
||||
//Navigate to new record
|
||||
this.$router.push({
|
||||
name: "project-edit",
|
||||
params: {
|
||||
recordid: res.data.id,
|
||||
obj: res.data // Pass data object to new form
|
||||
}
|
||||
});
|
||||
//Navigate to new record
|
||||
this.$router.push({
|
||||
name: "project-edit",
|
||||
params: {
|
||||
recordid: 0,
|
||||
obj: this.obj
|
||||
}
|
||||
} catch (ex) {
|
||||
window.$gz.errorHandler.handleFormError(ex, vm);
|
||||
} finally {
|
||||
window.$gz.form.setFormState({
|
||||
vm: vm,
|
||||
loading: false
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//end methods
|
||||
}
|
||||
};
|
||||
@@ -535,7 +513,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "project-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
@@ -649,7 +627,8 @@ function generateMenu(vm) {
|
||||
});
|
||||
}
|
||||
|
||||
if (vm.rights.change) {
|
||||
if (vm.rights.change && vm.$route.params.recordid != 0) {
|
||||
//dupe do this
|
||||
menuOptions.menuItems.push({
|
||||
title: "Duplicate",
|
||||
icon: "$ayiClone",
|
||||
|
||||
@@ -646,7 +646,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "unit-model-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -1210,7 +1210,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "unit-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -1704,7 +1704,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "workorder-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -1041,7 +1041,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "vendor-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
@@ -601,7 +601,7 @@ async function clickHandler(menuItem) {
|
||||
case "new":
|
||||
m.vm.$router.push({
|
||||
name: "widget-edit",
|
||||
params: { recordid: 0, new: true }
|
||||
params: { recordid: 0 }
|
||||
});
|
||||
break;
|
||||
case "duplicate":
|
||||
|
||||
Reference in New Issue
Block a user