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 +