diff --git a/app/Domains/CostUnit/Views/Partials/ListInvoices.vue b/app/Domains/CostUnit/Views/Partials/ListInvoices.vue index 00bc03a..efc647e 100644 --- a/app/Domains/CostUnit/Views/Partials/ListInvoices.vue +++ b/app/Domains/CostUnit/Views/Partials/ListInvoices.vue @@ -3,6 +3,7 @@ import InvoiceDetails from "../../../Invoice/Views/Partials/invoiceDetails/InvoiceDetails.vue"; import { useAjax } from "../../../../../resources/js/components/ajaxHandler.js"; import {ref} from "vue"; + import {toast} from "vue3-toastify"; const props = defineProps({ data: Object @@ -12,7 +13,7 @@ const invoice = ref(null) const show_invoice = ref(false) const localData = ref(props.data) - +console.log(props.data) async function openInvoiceDetails(invoiceId) { const url = '/api/v1/invoice/details/' + invoiceId @@ -40,6 +41,50 @@ } } + async function exportPayouts() { + toast.info('Der Export wird nun gestartet. Bitte verlasse diese Seite nicht, bis der Export abgeschlossen ist.') + + const response = await fetch('/api/v1/core/retrieve-global-data'); + const data = await response.json(); + const exportUrl = '/api/v1/cost-unit/' + props.data.costUnit.id + '/export-payouts'; + + try { + if (data.tenant.download_exports) { + const response = await fetch(exportUrl, { + headers: { "Content-Type": "application/json" }, + }); + + if (!response.ok) throw new Error('Fehler beim Export (ZIP)'); + + const blob = await response.blob(); + const downloadUrl = window.URL.createObjectURL(blob); + const a = document.createElement("a"); + a.style.display = "none"; + a.href = downloadUrl; + a.download = "Abrechnungen-Sippenstunden.zip"; + + document.body.appendChild(a); + a.click(); + + setTimeout(() => { + window.URL.revokeObjectURL(downloadUrl); + document.body.removeChild(a); + }, 100); + } else { + const response = await request(exportUrl, { + method: "GET", + }); + + toast.success(response.message); + } + + reload() + + } catch (err) { + toast.error('Beim Export der Abrechnungen ist ein Fehler aufgetreten.'); + } + } +