<script setup>

let unpaidInvoicesSum = ref(0)
let unpaidInvoicesCount = ref(0)
let draftInvoicesSum = ref(0)
let draftInvoicesCount = ref(0)
let unallocatedStatements = ref(0)
const setupPage = async () => {
  let documents = (await useSupabaseSelect("createddocuments","*, statementallocations(*), customer(id,name)")).filter(i => i.type === "invoices" ||i.type === "advanceInvoices")

  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) !== getDocumentSum(i).toFixed(2))

  finalizedDocuments.forEach(i => {
    unpaidInvoicesSum.value += getDocumentSum(i) - i.statementallocations.reduce((n,{amount}) => n + amount, 0)
  })
  unpaidInvoicesCount.value = finalizedDocuments.length

  draftDocuments.forEach(i => {
    draftInvoicesSum.value += getDocumentSum(i) - i.statementallocations.reduce((n,{amount}) => n + amount, 0)
  })
  draftInvoicesCount.value = draftDocuments.length

  let bankstatements = await useSupabaseSelect("bankstatements","*, statementallocations(*)","date",true)
  unallocatedStatements.value = bankstatements.filter(i => calculateOpenSum(i) !== 0).length
}

setupPage()

const getDocumentSum = (doc) => {
  let sum = 0
  doc.rows.forEach(row => {
    if(row.mode === "normal" || row.mode === "service" || row.mode === "free") {
      sum += row.quantity * row.price * (1 - row.discountPercent / 100) * (1 + row.taxPercent / 100)
    }
  })
  return sum
}

const calculateOpenSum = (statement) => {
  let startingAmount = statement.amount || 0

  statement.statementallocations.forEach(item => {
    if(item.cd_id) {
      startingAmount = startingAmount - item.amount
    } else if(item.ii_id) {
      startingAmount = Number(startingAmount) + item.amount
    }
  })

  return startingAmount.toFixed(2)
}
</script>

<template>
  <table>
    <tr>
      <td>Offene Ausgangsbelege:</td>
      <td
          v-if="unpaidInvoicesSum > 0"
          class="text-rose-600 font-bold text-nowrap"
      >{{unpaidInvoicesCount}} Stk / {{useCurrency(unpaidInvoicesSum)}}</td>
      <td v-else class="text-primary-500 font-bold text-no-wrap">0 Stk / 0,00€</td>
    </tr>
    <tr>
      <td>Angelegte Entwürfe:</td>
      <td
          v-if="draftInvoicesSum > 0"
          class="text-rose-600 font-bold text-nowrap"
      >{{draftInvoicesCount}} Stk / {{useCurrency(draftInvoicesSum)}}</td>
      <td v-else class="text-primary-500 font-bold text-no-wrap">0 Stk / 0,00€</td>
    </tr>
    <tr>
      <td>Nicht zugewiesene Bankbuchungen:</td>
      <td>
        <span v-if="unallocatedStatements > 0" class="text-rose-600 font-bold">{{unallocatedStatements}}</span>
        <span v-else class="text-primary-500 font-bold">0</span>
      </td>
    </tr>
  </table>

</template>

<style scoped>

</style>