92 lines
3.5 KiB
Vue
92 lines
3.5 KiB
Vue
<script setup>
|
|
|
|
import dayjs from "dayjs";
|
|
|
|
const profileStore = useProfileStore();
|
|
const supabase = useSupabaseClient()
|
|
|
|
let unpaidInvoicesSum = ref(0)
|
|
let unpaidInvoicesCount = ref(0)
|
|
let unpaidOverdueInvoicesSum = ref(0)
|
|
let unpaidOverdueInvoicesCount = ref(0)
|
|
let draftInvoicesSum = ref(0)
|
|
let draftInvoicesCount = ref(0)
|
|
|
|
let countUnfinishedOpenIncomingInvoices = ref(0)
|
|
|
|
const setupPage = async () => {
|
|
let documents = (await useSupabaseSelect("createddocuments","*, statementallocations(*), customer(id,name)")).filter(i => i.type === "invoices" ||i.type === "advanceInvoices"||i.type === "cancellationInvoices").filter(i => !i.archived)
|
|
|
|
let draftDocuments = documents.filter(i => i.state === "Entwurf")
|
|
let finalizedDocuments = documents.filter(i => i.state === "Gebucht")
|
|
|
|
finalizedDocuments = finalizedDocuments.filter(i => i.statementallocations.reduce((n,{amount}) => n + amount, 0).toFixed(2) !== useSum().getCreatedDocumentSum(i, documents).toFixed(2))
|
|
|
|
finalizedDocuments.forEach(i => {
|
|
console.log(i)
|
|
if(dayjs().subtract(i.paymentDays,"days").isAfter(i.documentDate)) {
|
|
unpaidOverdueInvoicesSum.value += useSum().getCreatedDocumentSum(i, documents) - i.statementallocations.reduce((n,{amount}) => n + amount, 0)
|
|
unpaidOverdueInvoicesCount.value += 1
|
|
} else {
|
|
unpaidInvoicesSum.value += useSum().getCreatedDocumentSum(i, documents) - i.statementallocations.reduce((n,{amount}) => n + amount, 0)
|
|
unpaidInvoicesCount.value += 1
|
|
}
|
|
})
|
|
//unpaidInvoicesCount.value = finalizedDocuments.length
|
|
|
|
draftDocuments.forEach(i => {
|
|
draftInvoicesSum.value += useSum().getCreatedDocumentSum(i, documents) - i.statementallocations.reduce((n,{amount}) => n + amount, 0)
|
|
})
|
|
draftInvoicesCount.value = draftDocuments.length
|
|
|
|
let filetype = (await supabase.from("filetags").select().eq("tenant",profileStore.currentTenant).eq("incomingDocumentType","invoices").single()).data.id
|
|
countUnfinishedOpenIncomingInvoices.value = (await supabase.from("files").select("id").eq("tenant",profileStore.currentTenant).eq("type", filetype).is("incominginvoice",null)).data.length
|
|
|
|
|
|
}
|
|
|
|
setupPage()
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<table>
|
|
<tr>
|
|
<td>Offene Rechnungen:</td>
|
|
<td
|
|
v-if="unpaidInvoicesSum > 0"
|
|
class="text-orange-500 font-bold text-nowrap"
|
|
>{{unpaidInvoicesCount}} Stk /<br> {{useCurrency(unpaidInvoicesSum)}}</td>
|
|
<td v-else class="text-primary-500 font-bold text-no-wrap">0 Stk / 0,00€</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Überfällige Rechnungen:</td>
|
|
<td
|
|
v-if="unpaidOverdueInvoicesSum > 0"
|
|
class="text-rose-600 font-bold text-nowrap"
|
|
>{{unpaidOverdueInvoicesCount}} Stk /<br> {{useCurrency(unpaidOverdueInvoicesSum)}}</td>
|
|
<td v-else class="text-primary-500 font-bold text-no-wrap">0 Stk / 0,00€</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Angelegte Rechnungsentwürfe:</td>
|
|
<td
|
|
v-if="draftInvoicesSum > 0"
|
|
class="text-orange-500 font-bold text-nowrap"
|
|
>{{draftInvoicesCount}} Stk /<br> {{useCurrency(draftInvoicesSum)}}</td>
|
|
<td v-else class="text-primary-500 font-bold text-no-wrap">0 Stk / 0,00€</td>
|
|
</tr>
|
|
<tr>
|
|
<td>ToDo Eingangsrechnungsrechnungen:</td>
|
|
<td
|
|
v-if="countUnfinishedOpenIncomingInvoices > 0"
|
|
class="text-orange-500 font-bold text-nowrap"
|
|
>{{countUnfinishedOpenIncomingInvoices}} Stk </td>
|
|
<td v-else class="text-primary-500 font-bold text-no-wrap">0 Stk</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</template>
|
|
|
|
<style scoped>
|
|
|
|
</style> |