Fix False Open State for cancelled Invoices
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user