diff --git a/components/MainNav.vue b/components/MainNav.vue index ec84260..0910382 100644 --- a/components/MainNav.vue +++ b/components/MainNav.vue @@ -234,6 +234,11 @@ const links = computed(() => { to: "/profiles", icon: "i-heroicons-user-group" }, + { + label: "Stundensätze", + to: "/standardEntity/hourrates", + icon: "i-heroicons-user-group" + }, ... role.checkRight("vehicles") ? [{ label: "Fahrzeuge", to: "/standardEntity/vehicles", diff --git a/composables/useRole.js b/composables/useRole.js index 7f17605..9548a13 100644 --- a/composables/useRole.js +++ b/composables/useRole.js @@ -258,6 +258,18 @@ export const useRole = () => { label: "Dokuemntenboxen erstellen", parent: "documentboxes" }, + hourrates: { + label: "Stundensätze", + showToAllUsers: false + }, + "hourrates-viewAll": { + label: "Alle Stundensätze einsehen", + parent: "hourrates" + }, + "hourrates-create": { + label: "Stundensätze erstellen", + parent: "hourrates" + }, "inventory": { label: "Lager", }, diff --git a/stores/data.js b/stores/data.js index d071fb5..b35b8f9 100644 --- a/stores/data.js +++ b/stores/data.js @@ -1719,6 +1719,52 @@ export const useDataStore = defineStore('data', () => { } ] }, + hourrates: { + isArchivable: true, + label: "Stundensätze", + labelSingle: "Stundensatz", + isStandardEntity: true, + redirect: true, + supabaseSelectWithInformation: "*", + historyItemHolder: "hourrate", + filters: [{ + name: "Archivierte ausblenden", + default: true, + "filterFunction": function (row) { + if(!row.archived) { + return true + } else { + return false + } + } + }], + templateColumns: [ + { + key: "name", + label: "Name", + required: true, + title: true, + inputType: "text" + }, + { + key: "purchasePrice", + label: "Einkauspreis", + inputType: "number", + component: purchasePrice, + }, + { + key: "sellingPrice", + label: "Verkaufspreis", + inputType: "number", + component: sellingPrice, + }, + ], + showTabs: [ + { + label: 'Informationen', + } + ] + }, events: { isArchivable: true, label: "Termine",