From 087ba1126e2ff999c9faf63434d10b291b231749 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Sun, 15 Feb 2026 20:50:52 +0100 Subject: [PATCH] Fix #105 --- frontend/pages/createDocument/index.vue | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/frontend/pages/createDocument/index.vue b/frontend/pages/createDocument/index.vue index 2d81e34..62ab2fd 100644 --- a/frontend/pages/createDocument/index.vue +++ b/frontend/pages/createDocument/index.vue @@ -264,7 +264,18 @@ const clearSearchString = () => { debouncedSearchString.value = '' } -const selectableFilters = ref(dataType.filters.map(i => i.name)) +const openUnpaidInvoicesFilter = { + name: 'Nur offene Rechnungen', + filterFunction: (row) => { + return ['invoices', 'advanceInvoices'].includes(row.type) + && row.state === 'Gebucht' + && !useSum().getIsPaid(row, items.value) + && !items.value.find(i => i.linkedDocument && i.linkedDocument.id === row.id) + } +} + +const availableFilters = computed(() => [...dataType.filters, openUnpaidInvoicesFilter]) +const selectableFilters = computed(() => availableFilters.value.map(i => i.name)) const selectedFilters = ref(dataType.filters.filter(i => i.default).map(i => i.name) || []) const filteredRows = computed(() => { @@ -286,8 +297,10 @@ const filteredRows = computed(() => { if (selectedFilters.value.length > 0) { selectedFilters.value.forEach(filterName => { - let filter = dataType.filters.find(i => i.name === filterName) - tempItems = tempItems.filter(filter.filterFunction) + const filter = availableFilters.value.find(i => i.name === filterName) + if (filter?.filterFunction) { + tempItems = tempItems.filter(filter.filterFunction) + } }) } @@ -310,4 +323,4 @@ const isPaid = (item) => { item.statementallocations.forEach(allocation => amountPaid += allocation.amount) return Number(amountPaid.toFixed(2)) === useSum().getCreatedDocumentSum(item, items.value) } - \ No newline at end of file +