Eingangsbelege um offenen Betrag ergänzen

This commit is contained in:
2026-04-23 21:06:44 +02:00
parent 41e5a4021b
commit edec670ee0
2 changed files with 27 additions and 3 deletions

View File

@@ -58,6 +58,7 @@ const isPreparing = ref(false)
const type = "incominginvoices" const type = "incominginvoices"
const dataType = dataStore.dataTypes[type] const dataType = dataStore.dataTypes[type]
const openAmountColumnKey = "openAmount"
const setupPage = async () => { const setupPage = async () => {
items.value = await useEntities(type).select("*, vendor(id,name), statementallocations(id,amount)",sort.value.column,sort.value.direction === "asc") items.value = await useEntities(type).select("*, vendor(id,name), statementallocations(id,amount)",sort.value.column,sort.value.direction === "asc")
@@ -93,7 +94,13 @@ const prepareInvoices = async () => {
setupPage() setupPage()
const selectedColumns = ref(tempStore.columns[type] ? tempStore.columns[type] : dataType.templateColumns.filter(i => !i.disabledInTable)) const selectedColumns = ref(tempStore.columns[type] ? [...tempStore.columns[type]] : dataType.templateColumns.filter(i => !i.disabledInTable))
if (!selectedColumns.value.find((column) => column.key === openAmountColumnKey)) {
const openAmountColumn = dataType.templateColumns.find((column) => column.key === openAmountColumnKey)
if (openAmountColumn) {
selectedColumns.value.splice(5, 0, openAmountColumn)
}
}
const columns = computed(() => dataType.templateColumns.filter((column) => !column.disabledInTable && selectedColumns.value.find(i => i.key === column.key))) const columns = computed(() => dataType.templateColumns.filter((column) => !column.disabledInTable && selectedColumns.value.find(i => i.key === column.key)))
const selectableFilters = ref(dataType.filters.map(i => i.name)) const selectableFilters = ref(dataType.filters.map(i => i.name))
@@ -142,10 +149,18 @@ const getInvoiceSum = (invoice) => {
return sum.toFixed(2) return sum.toFixed(2)
} }
const isPaid = (item) => { const getPaidAmount = (item) => {
let amountPaid = 0 let amountPaid = 0
item.statementallocations.forEach(allocation => amountPaid += allocation.amount) item.statementallocations.forEach(allocation => amountPaid += allocation.amount)
return Math.abs(amountPaid) === Math.abs(Number(getInvoiceSum(item))) return Number(Math.abs(amountPaid).toFixed(2))
}
const isPaid = (item) => {
return getPaidAmount(item) >= Number(Math.abs(Number(getInvoiceSum(item))).toFixed(2))
}
const getOpenAmount = (item) => {
return Number(Math.max(0, Number(getInvoiceSum(item)) - getPaidAmount(item)).toFixed(2))
} }
const unwrapInvoiceRow = (invoiceLike) => invoiceLike?.original || invoiceLike const unwrapInvoiceRow = (invoiceLike) => invoiceLike?.original || invoiceLike
@@ -283,6 +298,11 @@ const selectIncomingInvoice = (invoiceLike) => {
<template #amount-cell="{row}"> <template #amount-cell="{row}">
{{displayCurrency(sum.getIncomingInvoiceSum(row.original))}} {{displayCurrency(sum.getIncomingInvoiceSum(row.original))}}
</template> </template>
<template #openAmount-cell="{row}">
<span v-if="row.original.state === 'Gebucht' && !isPaid(row.original)">
{{ displayCurrency(getOpenAmount(row.original)) }}
</span>
</template>
<template #dueDate-cell="{row}"> <template #dueDate-cell="{row}">
<span v-if="row.original.dueDate">{{dayjs(row.original.dueDate).format("DD.MM.YYYY")}}</span> <span v-if="row.original.dueDate">{{dayjs(row.original.dueDate).format("DD.MM.YYYY")}}</span>
</template> </template>

View File

@@ -2200,6 +2200,10 @@ export const useDataStore = defineStore('data', () => {
key: "amount", key: "amount",
label: "Betrag", label: "Betrag",
}, },
{
key: "openAmount",
label: "Offener Betrag",
},
{ {
key: "dueDate", key: "dueDate",
label: "Fälligkeitsdatum", label: "Fälligkeitsdatum",