This commit is contained in:
@@ -525,46 +525,21 @@ CURRENTLY DOING: PM stuff:
|
|||||||
|
|
||||||
|
|
||||||
PM TODO:
|
PM TODO:
|
||||||
case 3349 implement all possible grandchild collections in PM (same as quote)
|
|
||||||
case 3344 wo to pm generator (was a case, didn't realize had thought of it already)
|
|
||||||
case 3583 ensure sufficient inventory (user want's it to look at all *upcoming* pm's and then alert parts are low or something, might be a notification type in there)
|
case 3583 ensure sufficient inventory (user want's it to look at all *upcoming* pm's and then alert parts are low or something, might be a notification type in there)
|
||||||
decided this is self fulfilling because server will generate wo from pm simulating when client does it and accepting the part requests
|
decided this is self fulfilling because server will generate wo from pm simulating when client does it and accepting the part requests
|
||||||
which will then trigger notification if set up and alert people that parts are required / taken from inventory
|
which will then trigger notification if set up and alert people that parts are required / taken from inventory
|
||||||
up to them the timing of how far in advance to do it to ensure sufficient time
|
up to them the timing of how far in advance to do it to ensure sufficient time
|
||||||
Perhaps change this to a notification v.next case and still implement as planned which will partially solve this problem
|
Perhaps change this to a notification v.next case and still implement as planned which will partially solve this problem
|
||||||
case 3624 / block *out* certain days rather than block IN certain days for pm generation
|
|
||||||
also touches on holidays customer request to block out, for now let's let them figure that part out themselves but I've made a case to add a closed days feature that can tie into this and that other thing Joyce brought up which I forget now
|
|
||||||
|
|
||||||
PM and QUOTE BIZ - all the notifications are probably fucked as copied directly from wo
|
PM and QUOTE BIZ - all the notifications are probably fucked as copied directly from wo
|
||||||
fix and add their own special ones
|
fix and add their own special ones
|
||||||
|
|
||||||
todo: replace "Generate ..." text to "Duplicate to ..." text in trans keys
|
|
||||||
"Generate work order" sounds like the PM automatic generation system, is this confusing?
|
|
||||||
need to disambiguate these things because the word generate is used for pm generation to wo
|
|
||||||
but what we are really doing is creating a work order from something or copy to new WorkOrder / Quote / PM?
|
|
||||||
No, "Copy" sounds like copying to an existing one..hmmm..
|
|
||||||
Maybe "Duplicate to Quote" or etc!!!!
|
|
||||||
|
|
||||||
todo: should be able to directly duplicate to from any *order to any other *order
|
todo: should be able to directly duplicate to from any *order to any other *order
|
||||||
iow no, it's not enough to have wo be the pivot object for a quote to PM, it should be direct
|
iow no, it's not enough to have wo be the pivot object for a quote to PM, it should be direct
|
||||||
|
|
||||||
|
|
||||||
New plan: a way to generate any form of order from any other directly:
|
|
||||||
Generate WO or pm from quote
|
|
||||||
Generate quote or pm from wo
|
|
||||||
Generate PM from wo or quote
|
|
||||||
|
|
||||||
|
|
||||||
Click on generate, dialog pops up querying if want to also copy attachments / wiki as checkboxes
|
|
||||||
Does it's thing
|
|
||||||
|
|
||||||
TODO:
|
|
||||||
X quote to workorder "QuoteGenerateServiceWorkOrder"
|
|
||||||
WO to PM "PMGenerateServiceWorkOrder"
|
|
||||||
WO to Quote
|
|
||||||
PM to WO (manual generation outside automatic)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
todo MISC:
|
todo MISC:
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
<!-- ################################################################################-->
|
<!-- ################################################################################-->
|
||||||
<template>
|
<template>
|
||||||
<v-row justify="center">
|
<v-row justify="center">
|
||||||
<v-dialog persistent max-width="600px" v-model="genDlg">
|
<v-dialog persistent max-width="600px" v-model="genWODlg">
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-card-title>{{ $ay.t("DuplicateToWorkOrder") }}</v-card-title>
|
<v-card-title>{{ $ay.t("DuplicateToWorkOrder") }}</v-card-title>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
></v-checkbox>
|
></v-checkbox>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
<v-card-actions>
|
<v-card-actions>
|
||||||
<v-btn text @click="genDlg = false" color="primary">{{
|
<v-btn text @click="genWODlg = false" color="primary">{{
|
||||||
$ay.t("Cancel")
|
$ay.t("Cancel")
|
||||||
}}</v-btn>
|
}}</v-btn>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
@@ -68,6 +68,39 @@
|
|||||||
</v-dialog>
|
</v-dialog>
|
||||||
</v-row>
|
</v-row>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- ################################################################################-->
|
||||||
|
<!-- ########################## GENERATE QUOTE DIALOG ###############################-->
|
||||||
|
<!-- ################################################################################-->
|
||||||
|
<template>
|
||||||
|
<v-row justify="center">
|
||||||
|
<v-dialog persistent max-width="600px" v-model="genQuoteDlg">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>{{ $ay.t("DuplicateToQuote") }}</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-checkbox
|
||||||
|
v-model="genCopyWiki"
|
||||||
|
:label="$ay.t('CopyWiki')"
|
||||||
|
></v-checkbox>
|
||||||
|
|
||||||
|
<v-checkbox
|
||||||
|
v-model="genCopyAttachments"
|
||||||
|
:label="$ay.t('CopyAttachments')"
|
||||||
|
></v-checkbox>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn text @click="genQuoteDlg = false" color="primary">{{
|
||||||
|
$ay.t("Cancel")
|
||||||
|
}}</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
|
||||||
|
<v-btn color="primary" text @click="generateQuote()">{{
|
||||||
|
$ay.t("OK")
|
||||||
|
}}</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-row>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -270,7 +303,8 @@ export default {
|
|||||||
lastGetContractId: -1, //note: -1 so that a new record updates
|
lastGetContractId: -1, //note: -1 so that a new record updates
|
||||||
lastGetCustomerId: -1,
|
lastGetCustomerId: -1,
|
||||||
goto: null, //{type:ayatype,id:wodescendant id} picked up by woitem when set non-null to trigger navigate to the item in question
|
goto: null, //{type:ayatype,id:wodescendant id} picked up by woitem when set non-null to trigger navigate to the item in question
|
||||||
genDlg: false,
|
genWODlg: false,
|
||||||
|
genQuoteDlg: false,
|
||||||
genCopyWiki: false,
|
genCopyWiki: false,
|
||||||
genCopyAttachments: false
|
genCopyAttachments: false
|
||||||
};
|
};
|
||||||
@@ -626,7 +660,41 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
generateQuote() {
|
||||||
|
let cp = JSON.parse(JSON.stringify(this.obj));
|
||||||
|
if (this.genCopyAttachments) {
|
||||||
|
//this property set will trigger server to copy attachments
|
||||||
|
cp.genCopyAttachmentsFrom = {
|
||||||
|
sAType: window.$gz.type.WorkOrder,
|
||||||
|
sId: this.obj.id
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (!this.genCopyWiki) {
|
||||||
|
cp.wiki = null; //already copied, need to remove it instead
|
||||||
|
}
|
||||||
|
cp.states = [];
|
||||||
|
cp.items.forEach(x => {
|
||||||
|
x.partRequests = [];
|
||||||
|
});
|
||||||
|
cp.id = 0;
|
||||||
|
|
||||||
|
//set quote specific fields
|
||||||
|
cp.preparedById = window.$gz.store.state.userId;
|
||||||
|
cp.introduction = null;
|
||||||
|
cp.requested = window.$gz.locale.nowUTC8601String();
|
||||||
|
cp.validUntil = null;
|
||||||
|
cp.submitted = null;
|
||||||
|
cp.approved = null;
|
||||||
|
|
||||||
|
//Navigate to new record
|
||||||
|
this.$router.push({
|
||||||
|
name: "quote-edit",
|
||||||
|
params: {
|
||||||
|
recordid: 0,
|
||||||
|
obj: cp
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
/////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////
|
||||||
// Clean woitem and children so it's
|
// Clean woitem and children so it's
|
||||||
// savable as a new record
|
// savable as a new record
|
||||||
@@ -1624,7 +1692,10 @@ async function clickHandler(menuItem) {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "genwo":
|
case "genwo":
|
||||||
m.vm.genDlg = true;
|
m.vm.genWODlg = true;
|
||||||
|
break;
|
||||||
|
case "genquote":
|
||||||
|
m.vm.genQuoteDlg = true;
|
||||||
break;
|
break;
|
||||||
case "duplicate":
|
case "duplicate":
|
||||||
m.vm.duplicate();
|
m.vm.duplicate();
|
||||||
@@ -1775,6 +1846,19 @@ function generateMenu(vm) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
vm.rights.change &&
|
||||||
|
vm.$route.params.recordid != 0 &&
|
||||||
|
!vm.obj.userIsRestrictedType
|
||||||
|
) {
|
||||||
|
menuOptions.menuItems.push({
|
||||||
|
title: "Duplicate",
|
||||||
|
icon: "$ayiClone",
|
||||||
|
key: FORM_KEY + ":duplicate",
|
||||||
|
vm: vm
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
vm.rights.change &&
|
vm.rights.change &&
|
||||||
vm.$route.params.recordid != 0 &&
|
vm.$route.params.recordid != 0 &&
|
||||||
@@ -1794,9 +1878,9 @@ function generateMenu(vm) {
|
|||||||
!vm.obj.userIsRestrictedType
|
!vm.obj.userIsRestrictedType
|
||||||
) {
|
) {
|
||||||
menuOptions.menuItems.push({
|
menuOptions.menuItems.push({
|
||||||
title: "Duplicate",
|
title: "DuplicateToQuote",
|
||||||
icon: "$ayiClone",
|
icon: "$ayiPencilAlt",
|
||||||
key: FORM_KEY + ":duplicate",
|
key: FORM_KEY + ":genquote",
|
||||||
vm: vm
|
vm: vm
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1855,6 +1939,7 @@ async function fetchTranslatedText(vm) {
|
|||||||
"PMSerialNumber",
|
"PMSerialNumber",
|
||||||
"WorkOrderSummary",
|
"WorkOrderSummary",
|
||||||
"DuplicateToWorkOrder",
|
"DuplicateToWorkOrder",
|
||||||
|
"DuplicateToQuote",
|
||||||
"Contract",
|
"Contract",
|
||||||
"Project",
|
"Project",
|
||||||
"WorkOrderCustomerContactName",
|
"WorkOrderCustomerContactName",
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
<!-- ################################################################################-->
|
<!-- ################################################################################-->
|
||||||
<template>
|
<template>
|
||||||
<v-row justify="center">
|
<v-row justify="center">
|
||||||
<v-dialog persistent max-width="600px" v-model="genDlg">
|
<v-dialog persistent max-width="600px" v-model="genWODlg">
|
||||||
<v-card>
|
<v-card>
|
||||||
<v-card-title>{{ $ay.t("DuplicateToWorkOrder") }}</v-card-title>
|
<v-card-title>{{ $ay.t("DuplicateToWorkOrder") }}</v-card-title>
|
||||||
<v-card-text>
|
<v-card-text>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
></v-checkbox>
|
></v-checkbox>
|
||||||
</v-card-text>
|
</v-card-text>
|
||||||
<v-card-actions>
|
<v-card-actions>
|
||||||
<v-btn text @click="genDlg = false" color="primary">{{
|
<v-btn text @click="genWODlg = false" color="primary">{{
|
||||||
$ay.t("Cancel")
|
$ay.t("Cancel")
|
||||||
}}</v-btn>
|
}}</v-btn>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
@@ -68,6 +68,39 @@
|
|||||||
</v-dialog>
|
</v-dialog>
|
||||||
</v-row>
|
</v-row>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- ################################################################################-->
|
||||||
|
<!-- ########################## GENERATE PM DIALOG ###############################-->
|
||||||
|
<!-- ################################################################################-->
|
||||||
|
<template>
|
||||||
|
<v-row justify="center">
|
||||||
|
<v-dialog persistent max-width="600px" v-model="genPMDlg">
|
||||||
|
<v-card>
|
||||||
|
<v-card-title>{{ $ay.t("DuplicateToPM") }}</v-card-title>
|
||||||
|
<v-card-text>
|
||||||
|
<v-checkbox
|
||||||
|
v-model="genCopyWiki"
|
||||||
|
:label="$ay.t('CopyWiki')"
|
||||||
|
></v-checkbox>
|
||||||
|
|
||||||
|
<v-checkbox
|
||||||
|
v-model="genCopyAttachments"
|
||||||
|
:label="$ay.t('CopyAttachments')"
|
||||||
|
></v-checkbox>
|
||||||
|
</v-card-text>
|
||||||
|
<v-card-actions>
|
||||||
|
<v-btn text @click="genPMDlg = false" color="primary">{{
|
||||||
|
$ay.t("Cancel")
|
||||||
|
}}</v-btn>
|
||||||
|
<v-spacer></v-spacer>
|
||||||
|
|
||||||
|
<v-btn color="primary" text @click="generatePM()">{{
|
||||||
|
$ay.t("OK")
|
||||||
|
}}</v-btn>
|
||||||
|
</v-card-actions>
|
||||||
|
</v-card>
|
||||||
|
</v-dialog>
|
||||||
|
</v-row>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -268,7 +301,8 @@ export default {
|
|||||||
lastGetContractId: -1, //note: -1 so that a new record updates
|
lastGetContractId: -1, //note: -1 so that a new record updates
|
||||||
lastGetCustomerId: -1,
|
lastGetCustomerId: -1,
|
||||||
goto: null, //{type:ayatype,id:wodescendant id} picked up by woitem when set non-null to trigger navigate to the item in question
|
goto: null, //{type:ayatype,id:wodescendant id} picked up by woitem when set non-null to trigger navigate to the item in question
|
||||||
genDlg: false,
|
genWODlg: false,
|
||||||
|
genPMDlg: false,
|
||||||
genCopyWiki: false,
|
genCopyWiki: false,
|
||||||
genCopyAttachments: false
|
genCopyAttachments: false
|
||||||
};
|
};
|
||||||
@@ -665,7 +699,33 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
generatePM() {
|
||||||
|
let cp = JSON.parse(JSON.stringify(this.obj));
|
||||||
|
if (this.genCopyAttachments) {
|
||||||
|
//this property set will trigger server to copy attachments
|
||||||
|
cp.genCopyAttachmentsFrom = {
|
||||||
|
sAType: window.$gz.type.WorkOrder,
|
||||||
|
sId: this.obj.id
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (!this.genCopyWiki) {
|
||||||
|
cp.wiki = null; //already copied, need to remove it instead
|
||||||
|
}
|
||||||
|
cp.states = [];
|
||||||
|
cp.items.forEach(x => {
|
||||||
|
x.partRequests = [];
|
||||||
|
});
|
||||||
|
cp.id = 0;
|
||||||
|
|
||||||
|
//Navigate to new record
|
||||||
|
this.$router.push({
|
||||||
|
name: "pm-edit",
|
||||||
|
params: {
|
||||||
|
recordid: 0,
|
||||||
|
obj: cp
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
/////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////
|
||||||
// Clean woitem and children so it's
|
// Clean woitem and children so it's
|
||||||
// savable as a new record
|
// savable as a new record
|
||||||
@@ -1697,7 +1757,10 @@ async function clickHandler(menuItem) {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "genwo":
|
case "genwo":
|
||||||
m.vm.genDlg = true;
|
m.vm.genWODlg = true;
|
||||||
|
break;
|
||||||
|
case "genpm":
|
||||||
|
m.vm.genPMDlg = true;
|
||||||
break;
|
break;
|
||||||
case "duplicate":
|
case "duplicate":
|
||||||
m.vm.duplicate();
|
m.vm.duplicate();
|
||||||
@@ -1848,6 +1911,19 @@ function generateMenu(vm) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
vm.rights.change &&
|
||||||
|
vm.$route.params.recordid != 0 &&
|
||||||
|
!vm.obj.userIsRestrictedType
|
||||||
|
) {
|
||||||
|
menuOptions.menuItems.push({
|
||||||
|
title: "Duplicate",
|
||||||
|
icon: "$ayiClone",
|
||||||
|
key: FORM_KEY + ":duplicate",
|
||||||
|
vm: vm
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
vm.rights.change &&
|
vm.rights.change &&
|
||||||
vm.$route.params.recordid != 0 &&
|
vm.$route.params.recordid != 0 &&
|
||||||
@@ -1867,9 +1943,9 @@ function generateMenu(vm) {
|
|||||||
!vm.obj.userIsRestrictedType
|
!vm.obj.userIsRestrictedType
|
||||||
) {
|
) {
|
||||||
menuOptions.menuItems.push({
|
menuOptions.menuItems.push({
|
||||||
title: "Duplicate",
|
title: "DuplicateToPM",
|
||||||
icon: "$ayiClone",
|
icon: "$ayiBusinessTime",
|
||||||
key: FORM_KEY + ":duplicate",
|
key: FORM_KEY + ":genpm",
|
||||||
vm: vm
|
vm: vm
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1934,6 +2010,7 @@ async function fetchTranslatedText(vm) {
|
|||||||
"QuoteSerialNumber",
|
"QuoteSerialNumber",
|
||||||
"WorkOrderSummary",
|
"WorkOrderSummary",
|
||||||
"DuplicateToWorkOrder",
|
"DuplicateToWorkOrder",
|
||||||
|
"DuplicateToPM",
|
||||||
"Contract",
|
"Contract",
|
||||||
"Project",
|
"Project",
|
||||||
"WorkOrderCustomerContactName",
|
"WorkOrderCustomerContactName",
|
||||||
|
|||||||
@@ -102,7 +102,6 @@
|
|||||||
</v-row>
|
</v-row>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<!-- :reset-selections="resetSelections" -->
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -701,6 +700,14 @@ export default {
|
|||||||
});
|
});
|
||||||
cp.id = 0;
|
cp.id = 0;
|
||||||
|
|
||||||
|
//set quote specific fields
|
||||||
|
cp.preparedById = window.$gz.store.state.userId;
|
||||||
|
cp.introduction = null;
|
||||||
|
cp.requested = window.$gz.locale.nowUTC8601String();
|
||||||
|
cp.validUntil = null;
|
||||||
|
cp.submitted = null;
|
||||||
|
cp.approved = null;
|
||||||
|
|
||||||
//Navigate to new record
|
//Navigate to new record
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: "quote-edit",
|
name: "quote-edit",
|
||||||
@@ -1998,6 +2005,19 @@ function generateMenu(vm) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
vm.rights.change &&
|
||||||
|
vm.$route.params.recordid != 0 &&
|
||||||
|
!vm.obj.userIsRestrictedType
|
||||||
|
) {
|
||||||
|
menuOptions.menuItems.push({
|
||||||
|
title: "Duplicate",
|
||||||
|
icon: "$ayiClone",
|
||||||
|
key: FORM_KEY + ":duplicate",
|
||||||
|
vm: vm
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
vm.rights.change &&
|
vm.rights.change &&
|
||||||
vm.$route.params.recordid != 0 &&
|
vm.$route.params.recordid != 0 &&
|
||||||
@@ -2024,19 +2044,6 @@ function generateMenu(vm) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
|
||||||
vm.rights.change &&
|
|
||||||
vm.$route.params.recordid != 0 &&
|
|
||||||
!vm.obj.userIsRestrictedType
|
|
||||||
) {
|
|
||||||
menuOptions.menuItems.push({
|
|
||||||
title: "Duplicate",
|
|
||||||
icon: "$ayiClone",
|
|
||||||
key: FORM_KEY + ":duplicate",
|
|
||||||
vm: vm
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//--- /show all ---
|
//--- /show all ---
|
||||||
|
|
||||||
if (!vm.obj.userIsRestrictedType) {
|
if (!vm.obj.userIsRestrictedType) {
|
||||||
|
|||||||
Reference in New Issue
Block a user