Fix False Open State for cancelled Invoices

This commit is contained in:
2026-03-21 17:08:57 +01:00
parent 0aacb18aaa
commit 9dbb194c8a
5 changed files with 79 additions and 32 deletions

View File

@@ -1,5 +1,16 @@
export const useSum = () => {
const unwrapCreatedDocuments = (createddocuments = []) => {
if (Array.isArray(createddocuments)) return createddocuments
if (Array.isArray(createddocuments?.value)) return createddocuments.value
return []
}
const getCreatedDocumentLinkId = (value) => {
if (value && typeof value === "object") return value.id
return value
}
const getIncomingInvoiceSum = (invoice) => {
let sum = 0
invoice.accounts.forEach(account => {
@@ -15,6 +26,7 @@ export const useSum = () => {
}
const getCreatedDocumentSum = (createddocument,createddocuments = []) => {
const availableCreatedDocuments = unwrapCreatedDocuments(createddocuments)
let totalNet = 0
let total19 = 0
let total7 = 0
@@ -44,7 +56,9 @@ export const useSum = () => {
createddocument.usedAdvanceInvoices.forEach(advanceInvoiceId => {
let advanceInvoice = createddocuments.find(i => i.id === advanceInvoiceId)
let advanceInvoice = availableCreatedDocuments.find(i => i.id === advanceInvoiceId)
if (!advanceInvoice) return
let priceNet = advanceInvoice.rows.find(i => i.advanceInvoiceData).price
@@ -59,6 +73,24 @@ export const useSum = () => {
return Number(sumToPay.toFixed(2))
}
const hasCancellationInvoice = (createddocument, createddocuments = []) => {
const availableCreatedDocuments = unwrapCreatedDocuments(createddocuments)
return availableCreatedDocuments.some((document) => {
return document.type === "cancellationInvoices"
&& document.state !== "Entwurf"
&& !document.archived
&& getCreatedDocumentLinkId(document.createddocument) === createddocument.id
})
}
const getCreatedDocumentOpenAmount = (createddocument, createddocuments = []) => {
let amountPaid = 0
createddocument.statementallocations.forEach(allocation => amountPaid += allocation.amount)
return Number((getCreatedDocumentSum(createddocument, createddocuments) - amountPaid).toFixed(2))
}
const getCreatedDocumentSumDetailed = (createddocument) => {
let totalNet = 0
let total19 = 0
@@ -124,12 +156,24 @@ export const useSum = () => {
}
const getIsPaid = (createddocument,createddocuments) => {
let amountPaid = 0
createddocument.statementallocations.forEach(allocation => amountPaid += allocation.amount)
return Number(amountPaid.toFixed(2)) === getCreatedDocumentSum(createddocument,createddocuments)
return getCreatedDocumentOpenAmount(createddocument, createddocuments) === 0
}
return {getIncomingInvoiceSum, getCreatedDocumentSum, getCreatedDocumentSumDetailed, getIsPaid}
const isOpenCreatedDocument = (createddocument, createddocuments = []) => {
return ['invoices', 'advanceInvoices'].includes(createddocument.type)
&& createddocument.state === "Gebucht"
&& !hasCancellationInvoice(createddocument, createddocuments)
&& !getIsPaid(createddocument, createddocuments)
}
return {
getIncomingInvoiceSum,
getCreatedDocumentSum,
getCreatedDocumentSumDetailed,
getCreatedDocumentOpenAmount,
getIsPaid,
hasCancellationInvoice,
isOpenCreatedDocument
}
}