This commit is contained in:
2021-07-14 23:32:46 +00:00
parent 0c4aa5a92d
commit 9e8b9ad128
13 changed files with 105 additions and 61 deletions

View File

@@ -461,7 +461,7 @@ Subcontractor / tech limited modifications
todo: units on work order are not limited to customer on work order??
todo: looks like wont' need subrights system, need to disentangle and remove it from workorder
todo: Status on work order doesn't seem to be preventing "Who can select" by role properly
Make it not present status that are not supposed to be available
put a back end rule in validation to prevent it as well

View File

@@ -1,14 +1,5 @@
<template>
<div>
{{
{
isRestrictedType: value.userIsRestrictedType,
isTechRestricted: value.userIsTechRestricted,
subfull: value.userIsSubContractorFull,
subRestricted: value.userIsSubContractorRestricted
}
}}
<v-row>
<v-col
cols="12"
@@ -68,16 +59,21 @@
data-cy="customerSignature"
/>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-col
v-if="
pvm.subRights.states.visible &&
form().showMe(this, 'WorkOrderStatus') &&
!(
value.userIsSubContractorFull ||
value.userIsSubContractorRestricted
)
"
cols="12"
sm="6"
lg="4"
xl="3"
>
<GzWoState
v-if="
pvm.subRights.states.visible &&
form().showMe(this, 'WorkOrderStatus') &&
!(
value.userIsSubContractorFull ||
value.userIsSubContractorRestricted
)
"
v-model="value"
:form-key="formCustomTemplateKey"
:readonly="formState.readOnly"
@@ -88,12 +84,16 @@
/>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-col
v-if="
form().showMe(this, 'Address') && !value.userIsSubContractorRestricted
"
cols="12"
sm="6"
lg="4"
xl="3"
>
<GzWoAddress
v-if="
form().showMe(this, 'Address') &&
!value.userIsSubContractorRestricted
"
v-model="value"
:form-key="formCustomTemplateKey"
:readonly="formState.readOnly || value.userIsRestrictedType"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"
@@ -523,7 +523,9 @@ export default {
this.value.items[this.activeWoItemIndex].labors.push({
id: 0,
concurrency: 0,
userId: null,
userId: this.value.userIsRestrictedType
? this.$store.state.userId
: null,
serviceStartDate: null,
serviceStopDate: null,
serviceRateId: null,
@@ -536,7 +538,9 @@ export default {
isDirty: true,
workOrderItemId: this.value.items[this.activeWoItemIndex].id,
uid: Date.now(),
userViz: null,
userViz: this.value.userIsRestrictedType
? this.$store.state.userName
: null,
serviceRateViz: null,
taxCodeViz: null
});

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -3,7 +3,7 @@
<div ref="partrequesttopform" />
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -2,7 +2,7 @@
<div v-if="value != null" class="mt-8">
<v-row>
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h6">
<v-icon large :color="hasData ? 'primary' : null" class="mr-2"

View File

@@ -1,9 +1,27 @@
<template>
<div v-if="value != null" class="mt-8">
<!-- {{
{
isRestrictedType: value.userIsRestrictedType,
isTechRestricted: value.userIsTechRestricted,
subfull: value.userIsSubContractorFull,
subRestricted: value.userIsSubContractorRestricted,
showLabors: showLabors,
showTravels: showTravels,
showExpenses: showExpenses,
showLoans: showLoans,
showOutsideServices: showOutsideServices,
showParts: showParts,
showPartRequests: showPartRequests,
showScheduledUsers: showScheduledUsers,
showTasks: showTasks,
showUnits: showUnits
}
}} -->
<v-row>
<!-- Title and menu -->
<v-col cols="12">
<v-menu offset-y>
<v-menu offset-y max-width="600px">
<template v-slot:activator="{ on, attrs }">
<div class="text-h5">
<v-icon x-large :color="hasData ? 'primary' : null" class="mr-2"
@@ -1202,38 +1220,47 @@ and it's probably not a big list to fill anyway
canAdd: function() {
return (
!this.pvm.formState.readOnly &&
!this.value.userIsRestrictedType &&
this.pvm.rights.change &&
this.pvm.subRights.items.create
);
},
canDelete: function() {
return this.activeItemIndex != null && this.canDeleteAll;
return (
this.activeItemIndex != null &&
this.canDeleteAll &&
!this.value.userIsRestrictedType
);
},
canDeleteAll: function() {
return (
!this.pvm.formState.readOnly &&
this.pvm.rights.change &&
this.pvm.subRights.items.delete &&
this.hasData
this.hasData &&
!this.value.userIsRestrictedType
);
},
canAddUnit: function() {
return (
this.pvm.subRights.units.create &&
this.form().showMe(this, "WorkOrderItemUnitList")
this.form().showMe(this, "WorkOrderItemUnitList") &&
!this.value.userIsRestrictedType
);
},
showUnits: function() {
return (
this.pvm.subRights.units.visible &&
this.form().showMe(this, "WorkOrderItemUnitList") &&
this.value.items[this.activeItemIndex].units.length > 0
this.value.items[this.activeItemIndex].units.length > 0 &&
!this.value.userIsSubContractorRestricted
);
},
canAddScheduledUser: function() {
return (
this.pvm.subRights.scheduledUsers.create &&
this.form().showMe(this, "WorkOrderItemScheduledUserList")
this.form().showMe(this, "WorkOrderItemScheduledUserList") &&
!this.value.userIsRestrictedType
);
},
showScheduledUsers: function() {
@@ -1246,27 +1273,30 @@ and it's probably not a big list to fill anyway
canAddTask: function() {
return (
this.pvm.subRights.tasks.create &&
this.form().showMe(this, "WorkOrderItemTaskList")
this.form().showMe(this, "WorkOrderItemTasks") &&
!this.value.userIsRestrictedType
);
},
showTasks: function() {
return (
this.pvm.subRights.tasks.visible &&
this.form().showMe(this, "WorkOrderItemTaskList") &&
this.form().showMe(this, "WorkOrderItemTasks") &&
this.value.items[this.activeItemIndex].tasks.length > 0
);
},
canAddPart: function() {
return (
this.pvm.subRights.parts.create &&
this.form().showMe(this, "WorkOrderItemUnitList")
this.form().showMe(this, "WorkOrderItemPartList") &&
!this.value.userIsRestrictedType
);
},
showParts: function() {
return (
this.pvm.subRights.parts.visible &&
this.form().showMe(this, "WorkOrderItemUnitList") &&
this.value.items[this.activeItemIndex].parts.length > 0
this.form().showMe(this, "WorkOrderItemPartList") &&
this.value.items[this.activeItemIndex].parts.length > 0 &&
!this.value.userIsSubContractorRestricted
);
},
showPartRequests: function() {
@@ -1274,73 +1304,83 @@ and it's probably not a big list to fill anyway
this.pvm.useInventory &&
this.value.items[this.activeItemIndex].partRequests.length > 0 &&
this.pvm.subRights.partRequests.visible &&
this.form().showMe(this, "WorkOrderItemPartRequestList")
this.form().showMe(this, "WorkOrderItemPartRequestList") &&
!this.value.userIsSubContractorRestricted
);
},
canAddLabor: function() {
return (
this.pvm.subRights.labors.create &&
this.form().showMe(this, "WorkOrderItemUnitList")
this.form().showMe(this, "WorkOrderItemLaborList")
);
},
showLabors: function() {
return (
this.pvm.subRights.labors.visible &&
this.form().showMe(this, "WorkOrderItemUnitList") &&
this.form().showMe(this, "WorkOrderItemLaborList") &&
this.value.items[this.activeItemIndex].labors.length > 0
);
},
canAddTravel: function() {
return (
this.pvm.subRights.travels.create &&
this.form().showMe(this, "WorkOrderItemUnitList")
this.form().showMe(this, "WorkOrderItemTravelList")
);
},
showTravels: function() {
return (
this.pvm.subRights.travels.visible &&
this.form().showMe(this, "WorkOrderItemUnitList") &&
this.form().showMe(this, "WorkOrderItemTravelList") &&
this.value.items[this.activeItemIndex].travels.length > 0
);
},
canAddExpense: function() {
return (
this.pvm.subRights.expenses.create &&
this.form().showMe(this, "WorkOrderItemUnitList")
this.form().showMe(this, "WorkOrderItemExpenseList") &&
!this.value.userIsSubContractorFull &&
!this.value.userIsSubContractorRestricted
);
},
showExpenses: function() {
return (
this.pvm.subRights.expenses.visible &&
this.form().showMe(this, "WorkOrderItemUnitList") &&
this.value.items[this.activeItemIndex].expenses.length > 0
this.form().showMe(this, "WorkOrderItemExpenseList") &&
this.value.items[this.activeItemIndex].expenses.length > 0 &&
!this.value.userIsSubContractorFull &&
!this.value.userIsSubContractorRestricted
);
},
canAddLoan: function() {
return (
this.pvm.subRights.loans.create &&
this.form().showMe(this, "WorkOrderItemUnitList")
this.form().showMe(this, "WorkOrderItemLoanList") &&
!this.value.userIsRestrictedType
);
},
showLoans: function() {
return (
this.pvm.subRights.loans.visible &&
this.form().showMe(this, "WorkOrderItemUnitList") &&
this.value.items[this.activeItemIndex].loans.length > 0
this.form().showMe(this, "WorkOrderItemLoanList") &&
this.value.items[this.activeItemIndex].loans.length > 0 &&
!this.value.userIsSubContractorRestricted
);
},
canAddOutsideService: function() {
return (
this.pvm.subRights.outsideServices.create &&
this.form().showMe(this, "WorkOrderItemUnitList")
this.form().showMe(this, "WorkOrderItemOutsideServiceList") &&
!this.value.userIsRestrictedType
);
},
showOutsideServices: function() {
return (
this.pvm.subRights.outsideServices.visible &&
this.form().showMe(this, "WorkOrderItemUnitList") &&
this.value.items[this.activeItemIndex].outsideServices.length > 0
this.form().showMe(this, "WorkOrderItemOutsideServiceList") &&
this.value.items[this.activeItemIndex].outsideServices.length > 0 &&
!this.value.userIsSubContractorFull &&
!this.value.userIsSubContractorRestricted
);
}
}