From c6354ac656da2650f2f2d05134a192ff91a51402 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Tue, 9 Dec 2025 08:28:41 +0100 Subject: [PATCH 01/22] BETA for new DB --- components/EntityShowSubCreatedDocuments.vue | 1 - components/columnRenderings/purchasePrice.vue | 2 +- components/columnRenderings/sellingPrice.vue | 2 +- pages/createDocument/index.vue | 10 ++----- stores/data.js | 26 +++++++++---------- 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/components/EntityShowSubCreatedDocuments.vue b/components/EntityShowSubCreatedDocuments.vue index 4aba719..3c5d26f 100644 --- a/components/EntityShowSubCreatedDocuments.vue +++ b/components/EntityShowSubCreatedDocuments.vue @@ -107,7 +107,6 @@ const getAvailableQueryStringData = (keys) => { returnString += `${key}=${value}` } else { returnString += `&${key}=${value}` - } } diff --git a/components/columnRenderings/purchasePrice.vue b/components/columnRenderings/purchasePrice.vue index dfb1916..8b81b61 100644 --- a/components/columnRenderings/purchasePrice.vue +++ b/components/columnRenderings/purchasePrice.vue @@ -9,5 +9,5 @@ const props = defineProps({ diff --git a/components/columnRenderings/sellingPrice.vue b/components/columnRenderings/sellingPrice.vue index 6bfeeb1..a11b050 100644 --- a/components/columnRenderings/sellingPrice.vue +++ b/components/columnRenderings/sellingPrice.vue @@ -9,5 +9,5 @@ const props = defineProps({ diff --git a/pages/createDocument/index.vue b/pages/createDocument/index.vue index e16d2d7..81fb7b7 100644 --- a/pages/createDocument/index.vue +++ b/pages/createDocument/index.vue @@ -134,25 +134,19 @@ {{row.documentDate ? dayjs(row.documentDate).format("DD.MM.YY") : ''}} diff --git a/stores/data.js b/stores/data.js index adb5f5e..dd805a7 100644 --- a/stores/data.js +++ b/stores/data.js @@ -956,10 +956,10 @@ export const useDataStore = defineStore('data', () => { inputType: "number", inputTrailing: "EUR", inputChangeFunction: function (row) { - if(row.markupPercentage) { - row.sellingPrice = (row.purchasePrice * (1+row.markupPercentage/100)).toFixed(4) + if(row.markup_percentage) { + row.seling_price = (row.purchase_price * (1+row.markup_percentage/100)).toFixed(4) } else { - row.sellingPrice = row.purchasePrice.toFixed(4) + row.seling_price = row.purchase_price.toFixed(4) } } },{ @@ -968,12 +968,12 @@ export const useDataStore = defineStore('data', () => { inputType: "number", inputTrailing: "%", inputChangeFunction: function (row) { - if(row.purchasePrice && ! row.sellingPrice) { - row.sellingPrice = (row.purchasePrice * (1+row.markupPercentage/100)).toFixed(4) - } else if(row.sellingPrice && !row.purchasePrice) { - row.purchasePrice = (row.sellingPrice / (1+row.markupPercentage/100)).toFixed(4) + if(row.purchase_price && ! row.seling_price) { + row.seling_price = (row.purchase_price * (1+row.markup_percentage/100)).toFixed(4) + } else if(row.seling_price && !row.purchase_price) { + row.purchase_price = (row.seling_price / (1+row.markup_percentage/100)).toFixed(4) } else { - row.sellingPrice = (row.purchasePrice * (1+row.markupPercentage/100)).toFixed(4) + row.seling_price = (row.purchase_price * (1+row.markup_percentage/100)).toFixed(4) } } },{ @@ -984,10 +984,10 @@ export const useDataStore = defineStore('data', () => { inputType: "number", inputTrailing: "EUR", inputChangeFunction: function (row) { - if(row.purchasePrice ) { - row.markupPercentage = ((row.sellingPrice / row.purchasePrice - 1) * 100 ).toFixed(2) + if(row.purchase_price ) { + row.markup_percentage = ((row.selling_price / row.purchase_price - 1) * 100 ).toFixed(2) } else{ - row.purchasePrice = (row.sellingPrice / (1+row.markupPercentage/100)).toFixed(4) + row.purchase_price = (row.selling_price / (1+row.markup_percentage/100)).toFixed(4) } } },{ @@ -1766,7 +1766,7 @@ export const useDataStore = defineStore('data', () => { sortable: true }, { - key: "purchasePrice", + key: "purchase_price", label: "Kaufpreis", inputType: "number", inputStepSize: "0.01", @@ -2108,7 +2108,7 @@ export const useDataStore = defineStore('data', () => { sortable: true }, { - key: "purchasePrice", + key: "purchase_price", label: "Einkauspreis", inputType: "number", component: purchasePrice, From a161306359a31aaf63f66c03eb5ed95d55a3370f Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Tue, 9 Dec 2025 11:05:56 +0100 Subject: [PATCH 02/22] BETA for new DB --- pages/createDocument/edit/[[id]].vue | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pages/createDocument/edit/[[id]].vue b/pages/createDocument/edit/[[id]].vue index 047fa9c..4e761ac 100644 --- a/pages/createDocument/edit/[[id]].vue +++ b/pages/createDocument/edit/[[id]].vue @@ -1506,7 +1506,20 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = { } if (row.service) { - row.unit = service.unit ? service.unit : services.value.find(i => i.id === row.service).unit + console.log(service) + if(service.unit) { + row.unit = service.unit + } else { + let selectedService = services.value.find(i => i.id === row.service) + console.log(selectedService) + if(selectedService.unit?.id) { + row.unit = selectedService.unit.id + } else { + row.unit = selectedService.unit + } + } + + //row.unit = service.unit ? service.unit : services.value.find(i => i.id === row.service).unit row.inputPrice = ((service.sellingPriceComposed.total || service.sellingPrice) ? (service.sellingPriceComposed.total || service.sellingPrice) : (services.value.find(i => i.id === row.service).sellingPriceComposed.total || services.value.find(i => i.id === row.service).sellingPrice)) row.description = service.description ? service.description : (services.value.find(i => i.id === row.service) ? services.value.find(i => i.id === row.service).description : "") @@ -1520,14 +1533,14 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = { if (row.product) { console.log("Product Detected") row.unit = product.unit ? product.unit : products.value.find(i => i.id === row.product).unit - row.inputPrice = (product.sellingPrice ? product.sellingPrice : products.value.find(i => i.id === row.product).sellingPrice) + row.inputPrice = (product.selling_price ? product.selling_price : products.value.find(i => i.id === row.product).selling_price) //row.price = Number((row.originalPrice * (1 + itemInfo.value.customSurchargePercentage /100)).toFixed(2)) row.description = product.description ? product.description : (products.value.find(i => i.id === row.product) ? products.value.find(i => i.id === row.product).description : "") if (['13b UStG', '19 UStG'].includes(itemInfo.value.taxType)) { row.taxPercent = 0 } else { - row.taxPercent = product.taxPercentage ? product.taxPercentage : products.value.find(i => i.id === row.product).taxPercentage + row.taxPercent = product.tax_percentage ? product.tax_percentage : products.value.find(i => i.id === row.product).tax_percentage } } From 76941abbf28a66997550a20a5f4c0adbf3741a68 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Tue, 9 Dec 2025 11:36:12 +0100 Subject: [PATCH 03/22] BETA for new DB --- components/displayOpenBalances.vue | 2 +- pages/createDocument/index.vue | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/displayOpenBalances.vue b/components/displayOpenBalances.vue index e0e6a11..c19dfdf 100644 --- a/components/displayOpenBalances.vue +++ b/components/displayOpenBalances.vue @@ -22,7 +22,7 @@ const setupPage = async () => { finalizedDocuments = finalizedDocuments.filter(i => i.statementallocations.reduce((n,{amount}) => n + amount, 0).toFixed(2) !== useSum().getCreatedDocumentSum(i, documents).toFixed(2)) - finalizedDocuments = finalizedDocuments.filter(x => (x.type === 'invoices' || x.type === 'advanceInvoices') && x.state === 'Gebucht' && !items.find(i => i.linkedDocument && i.linkedDocument.id === x.id)) + finalizedDocuments = finalizedDocuments.filter(x => (x.type === 'invoices' || x.type === 'advanceInvoices') && x.state === 'Gebucht' && !items.find(i => i.createddocument && i.createddocument.id === x.id)) diff --git a/pages/createDocument/index.vue b/pages/createDocument/index.vue index 81fb7b7..65c0e77 100644 --- a/pages/createDocument/index.vue +++ b/pages/createDocument/index.vue @@ -101,16 +101,16 @@ {{row.state}} --> {{row.state}} - Storniert mit {{items.find(i => i.linkedDocument && i.linkedDocument.id === row.id).documentNumber}} + Storniert mit {{items.find(i => i.createddocument && i.createddocument.id === row.id).documentNumber}} Date: Tue, 9 Dec 2025 11:41:21 +0100 Subject: [PATCH 04/22] Added Buttons for all connected Documents --- pages/createDocument/show/[id].vue | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pages/createDocument/show/[id].vue b/pages/createDocument/show/[id].vue index 81ae4dc..d1a61ba 100644 --- a/pages/createDocument/show/[id].vue +++ b/pages/createDocument/show/[id].vue @@ -105,12 +105,21 @@ const openBankstatements = () => { Kunde - {{dataStore.documentTypesForCreation[itemInfo.linkedDocument.type].labelSingle}} - {{itemInfo.linkedDocument.documentNumber}} + {{dataStore.documentTypesForCreation[itemInfo.createddocument.type].labelSingle}} - {{itemInfo.createddocument.documentNumber}} + + + {{dataStore.documentTypesForCreation[item.type].labelSingle}} - {{item.documentNumber}} Date: Tue, 9 Dec 2025 12:07:00 +0100 Subject: [PATCH 05/22] Added Buttons for all connected Documents --- pages/banking/statements/[mode]/[[id]].vue | 16 ++++++++-------- pages/createDocument/show/[id].vue | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pages/banking/statements/[mode]/[[id]].vue b/pages/banking/statements/[mode]/[[id]].vue index 5f90098..97943e8 100644 --- a/pages/banking/statements/[mode]/[[id]].vue +++ b/pages/banking/statements/[mode]/[[id]].vue @@ -509,11 +509,11 @@ const archiveStatement = async () => { @@ -529,11 +529,11 @@ const archiveStatement = async () => { @@ -810,8 +810,8 @@ const archiveStatement = async () => { icon="i-heroicons-check" variant="outline" class="mr-3" - v-if="!itemInfo.statementallocations.find(i => i.cd_id === document.id)" - @click="saveAllocation({cd_id: document.id, bankstatement: itemInfo.id, amount: Number(Number(document.openSum) < manualAllocationSum ? document.openSum : manualAllocationSum), description: allocationDescription})" + v-if="!itemInfo.statementallocations.find(i => i.createddocument === document.id)" + @click="saveAllocation({createddocument: document.id, bankstatement: itemInfo.id, amount: Number(Number(document.openSum) < manualAllocationSum ? document.openSum : manualAllocationSum), description: allocationDescription})" /> { icon="i-heroicons-check" variant="outline" class="mr-3" - v-if="!itemInfo.statementallocations.find(i => i.ii_id === item.id)" - @click="saveAllocation({ii_id: item.id, bankstatement: itemInfo.id, amount: Number(Math.abs(getInvoiceSum(item,true)) > Math.abs(manualAllocationSum) ? manualAllocationSum : getInvoiceSum(item,true)), description: allocationDescription})" + v-if="!itemInfo.statementallocations.find(i => i.incominginvoice === item.id)" + @click="saveAllocation({incominginvoice: item.id, bankstatement: itemInfo.id, amount: Number(Math.abs(getInvoiceSum(item,true)) > Math.abs(manualAllocationSum) ? manualAllocationSum : getInvoiceSum(item,true)), description: allocationDescription})" /> { const openBankstatements = () => { if(itemInfo.value.statementallocations.length > 1) { - navigateTo(`/banking/?filter=${JSON.stringify(itemInfo.value.statementallocations.map(i => i.bs_id))}`) + navigateTo(`/banking/?filter=${JSON.stringify(itemInfo.value.statementallocations.map(i => i.bankstatement))}`) } else { - navigateTo(`/banking/statements/edit/${itemInfo.value.statementallocations[0].bs_id}`) + navigateTo(`/banking/statements/edit/${itemInfo.value.statementallocations[0].bankstatement}`) } } From 7ce5616e65bec8b8b8a6abfc93eeec7b6390cc85 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Tue, 9 Dec 2025 16:00:01 +0100 Subject: [PATCH 06/22] Fix for Copying --- components/copyCreatedDocumentModal.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/copyCreatedDocumentModal.vue b/components/copyCreatedDocumentModal.vue index 1c3038b..56fe961 100644 --- a/components/copyCreatedDocumentModal.vue +++ b/components/copyCreatedDocumentModal.vue @@ -60,7 +60,7 @@ const mappings = ref({ }) const startImport = () => { - router.push(`/createDocument/edit/?linkedDocument=${props.id}&type=${documentTypeToUse.value}&optionsToImport=${encodeURIComponent(JSON.stringify(optionsToImport.value))}`) + router.push(`/createDocument/edit/?createddocument=${props.id}&type=${documentTypeToUse.value}&optionsToImport=${encodeURIComponent(JSON.stringify(optionsToImport.value))}`) modal.close() } From ac2ed79e1008b00b6e8a8c880a8dcab881d27fa4 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Wed, 10 Dec 2025 08:21:59 +0100 Subject: [PATCH 07/22] Fix for Copying --- pages/createDocument/edit/[[id]].vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/createDocument/edit/[[id]].vue b/pages/createDocument/edit/[[id]].vue index 4e761ac..6d5e8aa 100644 --- a/pages/createDocument/edit/[[id]].vue +++ b/pages/createDocument/edit/[[id]].vue @@ -1809,7 +1809,7 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = { > @@ -1818,7 +1818,7 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = { Date: Wed, 10 Dec 2025 08:39:51 +0100 Subject: [PATCH 08/22] Fix for Copying --- composables/useEntities.ts | 4 ++-- pages/createDocument/edit/[[id]].vue | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/composables/useEntities.ts b/composables/useEntities.ts index fbf0459..edbca08 100644 --- a/composables/useEntities.ts +++ b/composables/useEntities.ts @@ -134,11 +134,11 @@ export const useEntities = ( const selectSingle = async ( idToEq: string | number, select: string = "*", - withInformation: boolean = false + withInformation: boolean = true ) => { if (!idToEq) return null - const res = await useNuxtApp().$api(withInformation ? `/api/resource/${relation}/${idToEq}` : `/api/resource/${relation}/${idToEq}`, { + const res = await useNuxtApp().$api(withInformation ? `/api/resource/${relation}/${idToEq}` : `/api/resource/${relation}/${idToEq}/true`, { method: "GET", params: { select } }) diff --git a/pages/createDocument/edit/[[id]].vue b/pages/createDocument/edit/[[id]].vue index 6d5e8aa..1af395e 100644 --- a/pages/createDocument/edit/[[id]].vue +++ b/pages/createDocument/edit/[[id]].vue @@ -109,7 +109,7 @@ const setupPage = async () => { if (route.params) { if (route.params.id) { console.log(route.params) - itemInfo.value = await useEntities("createddocuments").selectSingle(route.params.id) + itemInfo.value = await useEntities("createddocuments").selectSingle(route.params.id,'',false) await setContactPersonData() checkCompatibilityWithInputPrice() } @@ -1597,7 +1597,6 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = {