From 5e3a5f952b7b7f5f86dc08a5dfd221eafad14b85 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 9 Nov 2022 23:22:54 +0000 Subject: [PATCH] case 4237 --- ayanova/src/views/cust-customer.vue | 28 +++++++++++++- ayanova/src/views/svc-unit.vue | 25 +++++++++++++ ayanova/src/views/svc-workorder.vue | 57 ++++++++++++++++++++++++++++- 3 files changed, 107 insertions(+), 3 deletions(-) diff --git a/ayanova/src/views/cust-customer.vue b/ayanova/src/views/cust-customer.vue index 73d870e1..ce7a4cb1 100644 --- a/ayanova/src/views/cust-customer.vue +++ b/ayanova/src/views/cust-customer.vue @@ -1353,6 +1353,19 @@ async function clickHandler(menuItem) { } }); break; + + case "newwo": + m.vm.$router.push({ + name: "workorder-edit", + params: { + recordid: 0, + customerId: m.vm.obj.id, + add: { + type: 0 + } + } + }); + break; //v.next // case "Schedule": // m.vm.$router.push({ @@ -1449,6 +1462,18 @@ function generateMenu(vm) { menuOptions.menuItems.push({ divider: true, inset: false }); + if ( + vm.$route.params.recordid != 0 && + window.$gz.role.canChange(window.$gz.type.WorkOrder) + ) { + menuOptions.menuItems.push({ + title: "NewWorkOrder", + icon: "$ayiTools", + key: FORM_KEY + ":newwo", + vm: vm + }); + } + menuOptions.menuItems.push({ title: "CustomerNoteList", icon: "$ayiClipboard", @@ -1571,7 +1596,8 @@ async function fetchTranslatedText() { "LastLogin", "CustomerNoteList", "CustomerNoteNotes", - "CustomerNoteNoteDate" + "CustomerNoteNoteDate", + "NewWorkOrder" ]); } diff --git a/ayanova/src/views/svc-unit.vue b/ayanova/src/views/svc-unit.vue index 0d556e70..cabfa957 100644 --- a/ayanova/src/views/svc-unit.vue +++ b/ayanova/src/views/svc-unit.vue @@ -1207,6 +1207,19 @@ async function clickHandler(menuItem) { } }); break; + case "newwo": + m.vm.$router.push({ + name: "workorder-edit", + params: { + recordid: 0, + customerId: m.vm.obj.customerId, + add: { + type: m.vm.$ay.ayt().WorkOrderItemUnit, + unitId: m.vm.obj.id + } + } + }); + break; default: window.$gz.eventBus.$emit( "notify-warning", @@ -1293,6 +1306,18 @@ function generateMenu(vm) { menuOptions.menuItems.push({ divider: true, inset: false }); + if ( + vm.$route.params.recordid != 0 && + vm.obj.customerId != 0 && + window.$gz.role.canChange(window.$gz.type.WorkOrder) + ) { + menuOptions.menuItems.push({ + title: "NewWorkOrder", + icon: "$ayiTools", + key: FORM_KEY + ":newwo", + vm: vm + }); + } menuOptions.menuItems.push({ title: "UnitModels", icon: "$ayiDiceD20", diff --git a/ayanova/src/views/svc-workorder.vue b/ayanova/src/views/svc-workorder.vue index 335574b8..9b756206 100644 --- a/ayanova/src/views/svc-workorder.vue +++ b/ayanova/src/views/svc-workorder.vue @@ -290,8 +290,19 @@ export default { //sometimes we're here with some data to fill in (e.g. schedule creates new wo itemscheduled user, if so there will be a add property on the params) if (this.$route.params.add) { + //case 4237 + if (this.$route.params.customerId) { + //new work order with provided customer id + this.obj.customerId = Number.parseInt( + this.$route.params.customerId + ); + setDirty = true; + } const n = this.$route.params.add; switch (n.type) { + case this.$ay.ayt().NoType: + //this is for cases where we want to specify a Customer for example but nothing further + break; case this.$ay.ayt().WorkOrderItemScheduledUser: this.obj.items.push({ id: 0, @@ -339,6 +350,46 @@ export default { uid: Date.now() //used for error tracking / display }); + this.obj.serviceDate = n.start; + break; + case this.$ay.ayt().WorkOrderItemUnit: + this.obj.items.push({ + id: 0, + concurrency: 0, + notes: "-", //todo: default here at some point or just leave this TTM + wiki: null, + customFields: "{}", + tags: [], + workOrderId: null, + techNotes: null, + workOrderItemStatusId: null, + workOrderItemPriorityId: null, + requestDate: null, + warrantyService: false, + sequence: 1, //indexes are zero based but sequences are visible to user so 1 based + isDirty: true, + expenses: [], + labors: [], + loans: [], + parts: [], + partRequests: [], + units: [ + { + id: 0, + concurrency: 0, + unitId: n.unitId, + isDirty: true, + workOrderItemId: 0, + uid: Date.now() + } + ], + tasks: [], + travels: [], + scheduledUsers: [], + outsideServices: [], + uid: Date.now() //used for error tracking / display + }); + this.obj.serviceDate = n.start; break; default: @@ -358,8 +409,10 @@ export default { this.formState.ready = true; //trigger rule breaking / validation this.$nextTick(() => { - this.obj.customerId = null; - this.fieldValueChanged(`customerId`); + if (!this.$route.params.customerId) { + this.obj.customerId = null; + this.fieldValueChanged(`customerId`); + } }); } }