From c94e4c319453628c3a9990da8e0458cd574f4f29 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Sun, 25 May 2025 15:54:08 +0200 Subject: [PATCH] Added Optional and Alternative in Quotes Redesigned the Row Edit Modal Added Errors for Optional and Alternative Rows --- pages/createDocument/edit/[[id]].vue | 93 +++++++++++++++++++++++++--- 1 file changed, 85 insertions(+), 8 deletions(-) diff --git a/pages/createDocument/edit/[[id]].vue b/pages/createDocument/edit/[[id]].vue index 6378b18..15ab604 100644 --- a/pages/createDocument/edit/[[id]].vue +++ b/pages/createDocument/edit/[[id]].vue @@ -577,6 +577,14 @@ const findDocumentErrors = computed(() => { } else { itemInfo.value.rows.forEach(row => { + if(itemInfo.value.type !== "quotes" && row.optional) { + errors.push({message: `Position ${row.pos} ist als Optional markiert. Dies wird nur in Angeboten unterstützt.`, type: "breaking"}) + } + + if(itemInfo.value.type !== "quotes" && row.alternative) { + errors.push({message: `Position ${row.pos} ist als Alternativ markiert. Dies wird nur in Angeboten unterstützt.`, type: "breaking"}) + } + if(row.mode === "normal" && !row.product) errors.push({message: `In Position ${row.pos} ist kein Artikel ausgewählt`, type: "breaking"}) if(row.mode === "service" && !row.service) errors.push({message: `In Position ${row.pos} ist keine Leistung ausgewählt`, type: "breaking"}) if(row.mode === "title" && !row.text) errors.push({message: `In Position ${row.pos} ist kein Titel hinterlegt`, type: "breaking"}) @@ -637,7 +645,7 @@ const documentTotal = computed(() => { let total19 = 0 let total7 = 0 - itemInfo.value.rows.forEach(row => { + itemInfo.value.rows.filter(i => !i.optional && !i.alternative).forEach(row => { if(!['pagebreak','title','text'].includes(row.mode)){ let rowPrice = Number(Number(row.quantity) * Number(row.price) * (1 - Number(row.discountPercent) /100) ).toFixed(3) totalNet = totalNet + Number(rowPrice) @@ -659,7 +667,7 @@ const documentTotal = computed(() => { if(row.mode === 'title'){ titleSums[`${row.pos} - ${row.text}`] = 0 lastTitle = `${row.pos} - ${row.text}` - } else if(!['pagebreak','text'].includes(row.mode) && lastTitle !== ""){ + } else if(!['pagebreak','text'].includes(row.mode) && lastTitle !== "" && !row.optional && !row.alternative){ titleSums[lastTitle] = Number(titleSums[lastTitle]) + Number(Number(row.quantity) * Number(row.price) * (1 - Number(row.discountPercent) /100) ) } }) @@ -2317,7 +2325,7 @@ const setRowData = async (row, service = {sellingPriceComposed: {}}, product = { v-if="!['pagebreak','title','text'].includes(row.mode)" > -