add billable rate updates for time entries in the past to projects and project members, fixes ST-304

This commit is contained in:
Gregor Vostrak
2024-07-04 18:30:47 +02:00
parent 7fd5d25781
commit e3b4cfd881
13 changed files with 480 additions and 32 deletions

View File

@@ -8,6 +8,8 @@ import { useFocus } from '@vueuse/core';
import { useProjectMembersStore } from '@/utils/useProjectMembers';
import BillableRateInput from '@/Components/Common/BillableRateInput.vue';
import { UserIcon } from '@heroicons/vue/24/solid';
import ProjectMemberBillableRateModal from '@/Components/Common/ProjectMember/ProjectMemberBillableRateModal.vue';
import InputLabel from '@/Components/InputLabel.vue';
const { updateProjectMember } = useProjectMembersStore();
const show = defineModel('show', { default: false });
@@ -21,8 +23,15 @@ const props = defineProps<{
const projectMemberBody = ref<UpdateProjectMemberBody>({
billable_rate: props.projectMember.billable_rate,
});
const showBillableRateModal = ref(false);
async function submit() {
if (
props.projectMember.billable_rate !==
projectMemberBody.value.billable_rate
) {
showBillableRateModal.value = true;
return;
}
await updateProjectMember(props.projectMember.id, projectMemberBody.value);
show.value = false;
projectMemberBody.value = {
@@ -30,6 +39,14 @@ async function submit() {
};
}
async function submitBillableRate(billableRateUpdateTimeEntries: boolean) {
projectMemberBody.value.billable_rate_update_time_entries =
billableRateUpdateTimeEntries;
await updateProjectMember(props.projectMember.id, projectMemberBody.value);
show.value = false;
showBillableRateModal.value = false;
}
watch(
() => show.value,
(value) => {
@@ -55,6 +72,11 @@ useFocus(projectNameInput, { initialValue: true });
</template>
<template #content>
<ProjectMemberBillableRateModal
member-name="props.name"
v-model:show="showBillableRateModal"
@close="showBillableRateModal = false"
@submit="submitBillableRate"></ProjectMemberBillableRateModal>
<div class="grid grid-cols-3 items-center space-x-4">
<div
class="col-span-3 sm:col-span-2 space-x-2 flex items-center">
@@ -62,6 +84,9 @@ useFocus(projectNameInput, { initialValue: true });
<span>{{ props.name }}</span>
</div>
<div class="col-span-3 sm:col-span-1 flex-1">
<InputLabel
for="billable_rate"
value="Billable Rate"></InputLabel>
<BillableRateInput
@keydown.enter="submit"
name="billable_rate"