diff --git a/frontend/pages/accounting/tax.vue b/frontend/pages/accounting/tax.vue
index 169efbe..64b5177 100644
--- a/frontend/pages/accounting/tax.vue
+++ b/frontend/pages/accounting/tax.vue
@@ -126,164 +126,162 @@ onMounted(loadData)
-
-
-
-
+
+
+ Aktualisieren
+
+
+
+
+
+
+
+ Aktueller Zeitraum: {{ currentPeriod?.label }}
+
+
+ Intervall: {{ periodType === "monthly" ? "monatlich" : periodType === "quarterly" ? "quartalsweise" : "jährlich" }}.
+ Berücksichtigt werden gebuchte Ausgangsrechnungen, Abschlags- und Stornorechnungen sowie gebuchte Eingangsbelege mit Datum.
+
+
+ {{ currentPeriod.range }}
+
+
+
+
+
+ Berechnete USt
+
+ {{ formatCurrency(currentPeriod.outputTax) }}
+
+
+ 19%: {{ formatCurrency(currentPeriod.output.tax19) }} | 7%: {{ formatCurrency(currentPeriod.output.tax7) }}
+
+
+
+
+ Vorsteuer
+
+ {{ formatCurrency(currentPeriod.inputTax) }}
+
+
+ 19%: {{ formatCurrency(currentPeriod.input.tax19) }} | 7%: {{ formatCurrency(currentPeriod.input.tax7) }}
+
+
+
+
+ Verrechnetes Ergebnis
+
- Aktualisieren
-
-
-
+ {{ formatCurrency(currentPeriod.balance) }}
+
+
+ {{ currentPeriod.outputCount }} Ausgangsbelege | {{ currentPeriod.inputCount }} Eingangsbelege
+
+
+
-
-
-
- Aktueller Zeitraum: {{ currentPeriod?.label }}
-
-
- Intervall: {{ periodType === "monthly" ? "monatlich" : periodType === "quarterly" ? "quartalsweise" : "jährlich" }}.
- Berücksichtigt werden gebuchte Ausgangsrechnungen, Abschlags- und Stornorechnungen sowie gebuchte Eingangsbelege mit Datum.
-
-
- {{ currentPeriod.range }}
-
-
-
-
-
- Berechnete USt
-
- {{ formatCurrency(currentPeriod.outputTax) }}
-
-
- 19%: {{ formatCurrency(currentPeriod.output.tax19) }} | 7%: {{ formatCurrency(currentPeriod.output.tax7) }}
-
-
-
-
- Vorsteuer
-
- {{ formatCurrency(currentPeriod.inputTax) }}
-
-
- 19%: {{ formatCurrency(currentPeriod.input.tax19) }} | 7%: {{ formatCurrency(currentPeriod.input.tax7) }}
-
-
-
-
- Verrechnetes Ergebnis
-
- {{ formatCurrency(currentPeriod.balance) }}
-
-
- {{ currentPeriod.outputCount }} Ausgangsbelege | {{ currentPeriod.inputCount }} Eingangsbelege
-
-
-
-
-
-
-
- Ausgangsrechnungen
-
-
-
- Netto 19%
- {{ formatCurrency(currentPeriod.output.net19) }}
-
-
- USt 19%
- {{ formatCurrency(currentPeriod.output.tax19) }}
-
-
- Netto 7%
- {{ formatCurrency(currentPeriod.output.net7) }}
-
-
- USt 7%
- {{ formatCurrency(currentPeriod.output.tax7) }}
-
-
- Netto 0%
- {{ formatCurrency(currentPeriod.output.net0) }}
-
-
-
-
-
-
- Eingangsbelege
-
-
-
- Netto 19%
- {{ formatCurrency(currentPeriod.input.net19) }}
-
-
- Vorsteuer 19%
- {{ formatCurrency(currentPeriod.input.tax19) }}
-
-
- Netto 7%
- {{ formatCurrency(currentPeriod.input.net7) }}
-
-
- Vorsteuer 7%
- {{ formatCurrency(currentPeriod.input.tax7) }}
-
-
- Netto 0%
- {{ formatCurrency(currentPeriod.input.net0) }}
-
-
-
-
-
-
+
+
- Aktueller und vorherige Zeiträume
+ Ausgangsrechnungen
+
+
+
+ Netto 19%
+ {{ formatCurrency(currentPeriod.output.net19) }}
+
+
+ USt 19%
+ {{ formatCurrency(currentPeriod.output.tax19) }}
+
+
+ Netto 7%
+ {{ formatCurrency(currentPeriod.output.net7) }}
+
+
+ USt 7%
+ {{ formatCurrency(currentPeriod.output.tax7) }}
+
+
+ Netto 0%
+ {{ formatCurrency(currentPeriod.output.net0) }}
+
+
+
+
+
+
+ Eingangsbelege
+
+
+
+ Netto 19%
+ {{ formatCurrency(currentPeriod.input.net19) }}
+
+
+ Vorsteuer 19%
+ {{ formatCurrency(currentPeriod.input.tax19) }}
+
+
+ Netto 7%
+ {{ formatCurrency(currentPeriod.input.net7) }}
+
+
+ Vorsteuer 7%
+ {{ formatCurrency(currentPeriod.input.tax7) }}
+
+
+ Netto 0%
+ {{ formatCurrency(currentPeriod.input.net0) }}
+
+
+
+
+
+
+
+ Aktueller und vorherige Zeiträume
+
+
+
+
+
+ {{ row.original.label }}
+ Aktuell
+
-
-
-
- {{ row.original.label }}
- Aktuell
-
-
+
+ {{ formatCurrency(row.original.outputTax) }}
+
-
- {{ formatCurrency(row.original.outputTax) }}
-
+
+ {{ formatCurrency(row.original.inputTax) }}
+
-
- {{ formatCurrency(row.original.inputTax) }}
-
-
-
+
{{ formatCurrency(row.original.balance) }}
-
+
-
- {{ row.original.outputCount }} / {{ row.original.inputCount }}
-
-
-
-
-
+
+ {{ row.original.outputCount }} / {{ row.original.inputCount }}
+
+
+
+
diff --git a/frontend/pages/createDocument/edit/[[id]].vue b/frontend/pages/createDocument/edit/[[id]].vue
index 94d90ab..43c0b7c 100644
--- a/frontend/pages/createDocument/edit/[[id]].vue
+++ b/frontend/pages/createDocument/edit/[[id]].vue
@@ -86,7 +86,8 @@ const documentTypeItems = computed(() => Object.keys(dataStore.documentTypesForC
const taxTypeItems = [
{ key: 'Standard', label: 'Standard' },
{ key: '13b UStG', label: '13b UStG' },
- { key: '19 UStG', label: '19 UStG Kleinunternehmer' }
+ { key: '19 UStG', label: '19 UStG Kleinunternehmer' },
+ { key: '12.3 UStG', label: '12.3 UStG' }
]
const deliveryDateTypeItems = ['Lieferdatum', 'Lieferzeitraum', 'Leistungsdatum', 'Leistungszeitraum', 'Kein Lieferdatum anzeigen']
const paymentTypeItems = [
@@ -115,6 +116,11 @@ const formatNumberLikeValue = (value) => {
return '-'
}
+const normalizeTaxTypeValue = (value) => {
+ const normalized = typeof value === "string" ? value.trim() : value
+ return taxTypeItems.find((item) => item.key === normalized)?.key || "Standard"
+}
+
const getCalendarValue = (value) => {
if (!value) return undefined
@@ -174,6 +180,7 @@ const setupPage = async () => {
if (route.params.id) {
console.log(route.params)
itemInfo.value = await useEntities("createddocuments").selectSingle(route.params.id,'',false)
+ itemInfo.value.taxType = normalizeTaxTypeValue(itemInfo.value.taxType)
await setContactPersonData()
checkCompatibilityWithInputPrice()
}
@@ -357,7 +364,7 @@ const setupPage = async () => {
console.log(optionsToImport)
console.log(linkedDocument)
- if (optionsToImport.taxType) itemInfo.value.taxType = linkedDocument.taxType
+ if (optionsToImport.taxType) itemInfo.value.taxType = normalizeTaxTypeValue(linkedDocument.taxType)
if (optionsToImport.customer) itemInfo.value.customer = linkedDocument.customer
if (optionsToImport.letterhead) itemInfo.value.letterhead = linkedDocument.letterhead
if (optionsToImport.contact) itemInfo.value.contact = linkedDocument.contact
@@ -382,7 +389,7 @@ const setupPage = async () => {
if (process.dev) console.log(linkedDocument)
- itemInfo.value.taxType = linkedDocument.taxType
+ itemInfo.value.taxType = normalizeTaxTypeValue(linkedDocument.taxType)
itemInfo.value.customer = linkedDocument.customer
await setCustomerData(null, true)
itemInfo.value.letterhead = linkedDocument.letterhead
@@ -545,7 +552,7 @@ const setCustomerData = async (customerId, loadOnlyAdress = false) => {
if (!loadOnlyAdress && customer.customPaymentDays) itemInfo.value.paymentDays = customer.customPaymentDays
if (!loadOnlyAdress && customer.custom_payment_type) itemInfo.value.payment_type = customer.custom_payment_type
if (!loadOnlyAdress) {
- itemInfo.value.taxType = customer.customTaxType || "Standard"
+ itemInfo.value.taxType = normalizeTaxTypeValue(customer.customTaxType)
setTaxType()
}
@@ -1459,7 +1466,7 @@ const saveDocument = async (state, resetup = false) => {
let createData = {
type: itemInfo.value.type,
- taxType: ['invoices', 'cancellationInvoices', 'advanceInvoices', 'qoutes', 'confirmationOrders'].includes(itemInfo.value.type) ? itemInfo.value.taxType : null,
+ taxType: ['invoices', 'cancellationInvoices', 'advanceInvoices', 'quotes', 'confirmationOrders'].includes(itemInfo.value.type) ? normalizeTaxTypeValue(itemInfo.value.taxType) : null,
state: itemInfo.value.state || "Entwurf",
customer: itemInfo.value.customer,
contact: itemInfo.value.contact,
diff --git a/frontend/pages/createDocument/index.vue b/frontend/pages/createDocument/index.vue
index d933c5f..dd0dfb8 100644
--- a/frontend/pages/createDocument/index.vue
+++ b/frontend/pages/createDocument/index.vue
@@ -246,7 +246,15 @@ const types = computed(() => {
return templateTypes.filter((type) => selectedTypes.value.find(i => i.key === type.key))
})
-const selectItem = (item) => {
+const unwrapSelectedRow = (itemLike) => itemLike?.original || itemLike
+
+const selectItem = (itemLike) => {
+ const item = unwrapSelectedRow(itemLike)
+
+ if (!item?.id) {
+ return
+ }
+
if (item.state === "Entwurf") {
router.push(`/createDocument/edit/${item.id}`)
} else {
diff --git a/frontend/pages/index.client.vue b/frontend/pages/index.client.vue
index 551a5d6..344dd96 100644
--- a/frontend/pages/index.client.vue
+++ b/frontend/pages/index.client.vue
@@ -8,6 +8,7 @@ import DisplayBankaccounts from "~/components/displayBankaccounts.vue"
import DisplayProjectsInPhases from "~/components/displayProjectsInPhases.vue"
import DisplayOpenTasks from "~/components/displayOpenTasks.vue"
import DisplayTaxSummary from "~/components/displayTaxSummary.vue"
+import DisplayBWASummary from "~/components/displayBWASummary.vue"
setPageLayout("default")
@@ -78,6 +79,15 @@ const DASHBOARD_WIDGETS = [
defaultLayout: { x: 4, y: 7, w: 4, h: 3 },
minW: 3,
minH: 3
+ },
+ {
+ id: "bwa-summary",
+ title: "BWA aktuell",
+ description: "Einnahmen, Ausgaben und Ergebnis des aktuellen Monats",
+ component: markRaw(DisplayBWASummary),
+ defaultLayout: { x: 8, y: 7, w: 4, h: 3 },
+ minW: 3,
+ minH: 3
}
]
@@ -348,160 +358,158 @@ onBeforeUnmount(() => {
-
-
-
-
-
+
+
+
- {{ isEditMode ? "Bearbeitung beenden" : "Dashboard bearbeiten" }}
-
-
+ {{ isEditMode ? "Bearbeitung beenden" : "Dashboard bearbeiten" }}
+
+
- Karte hinzufügen
-
-
+ Karte hinzufügen
+
+
- Karten verwalten
-
-
-
-
+ >
+ Karten verwalten
+
+
+
+
-