Letterhead Change & Minor Changes in Doc Creation
This commit is contained in:
@@ -14,7 +14,6 @@ definePageMeta({
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const itemInfo = ref({
|
const itemInfo = ref({
|
||||||
type: "invoices",
|
type: "invoices",
|
||||||
customer: null,
|
customer: null,
|
||||||
@@ -54,17 +53,23 @@ const tabItems = computed(() => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Vorschau",
|
label: "Vorschau",
|
||||||
disabled: !itemInfo.value.customer
|
disabled: !itemInfo.value.customer || !itemInfo.value.letterhead
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
const setupPage = () => {
|
const letterheads = ref([])
|
||||||
|
|
||||||
|
const setupPage = async () => {
|
||||||
|
|
||||||
|
letterheads.value = (await useSupabaseSelect("letterheads","*")).filter(i => i.documentTypes.length === 0 || i.documentTypes.includes(itemInfo.value.type))
|
||||||
|
|
||||||
if(route.params) {
|
if(route.params) {
|
||||||
if(route.params.id) itemInfo.value = dataStore.getCreatedDocumentById(Number(route.params.id))
|
if(route.params.id) itemInfo.value = dataStore.getCreatedDocumentById(Number(route.params.id))
|
||||||
|
|
||||||
if(!itemInfo.value.deliveryDateType) itemInfo.value.deliveryDateType = "Lieferdatum"
|
if(!itemInfo.value.deliveryDateType) itemInfo.value.deliveryDateType = "Lieferdatum"
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(route.query) {
|
if(route.query) {
|
||||||
@@ -72,8 +77,7 @@ const setupPage = () => {
|
|||||||
|
|
||||||
setDocumentTypeConfig()
|
setDocumentTypeConfig()
|
||||||
|
|
||||||
itemInfo.value.startText = dataStore.getTextTemplatesByDocumentType(itemInfo.value.type).find(i => i.default && i.pos === "startText").text
|
|
||||||
itemInfo.value.endText = dataStore.getTextTemplatesByDocumentType(itemInfo.value.type).find(i => i.default && i.pos === "endText").text
|
|
||||||
|
|
||||||
setContactPersonData()
|
setContactPersonData()
|
||||||
|
|
||||||
@@ -88,7 +92,7 @@ const setupPage = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const setDocumentTypeConfig = () => {
|
const setDocumentTypeConfig = () => {
|
||||||
if(itemInfo.value.type === "invoices" ||itemInfo.value.type === "advanceInvoices") {
|
if(itemInfo.value.type === "invoices" ||itemInfo.value.type === "advanceInvoices" || itemInfo.value.type === "serialInvoices") {
|
||||||
itemInfo.value.documentNumberTitle = "Rechnungsnummer"
|
itemInfo.value.documentNumberTitle = "Rechnungsnummer"
|
||||||
itemInfo.value.title = `Rechnung-Nr. ${itemInfo.value.documentNumber ? itemInfo.value.documentNumber : "XXXX"}`
|
itemInfo.value.title = `Rechnung-Nr. ${itemInfo.value.documentNumber ? itemInfo.value.documentNumber : "XXXX"}`
|
||||||
} else if(itemInfo.value.type === "quotes") {
|
} else if(itemInfo.value.type === "quotes") {
|
||||||
@@ -102,8 +106,12 @@ const setDocumentTypeConfig = () => {
|
|||||||
itemInfo.value.title = `Auftragsbestätigung-Nr. ${itemInfo.value.documentNumber ? itemInfo.value.documentNumber : "XXXX"}`
|
itemInfo.value.title = `Auftragsbestätigung-Nr. ${itemInfo.value.documentNumber ? itemInfo.value.documentNumber : "XXXX"}`
|
||||||
}
|
}
|
||||||
|
|
||||||
itemInfo.value.startText = dataStore.texttemplates.find(i => i.documentType === itemInfo.value.type && i.default && i.pos === "startText").text
|
itemInfo.value.startText = dataStore.getTextTemplatesByDocumentType(itemInfo.value.type).find(i => i.default && i.pos === "startText").text
|
||||||
itemInfo.value.endText = dataStore.texttemplates.find(i => i.documentType === itemInfo.value.type && i.default && i.pos === "endText").text
|
itemInfo.value.endText = dataStore.getTextTemplatesByDocumentType(itemInfo.value.type).find(i => i.default && i.pos === "endText").text
|
||||||
|
|
||||||
|
|
||||||
|
itemInfo.value.letterhead = letterheads.value[0].id
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,6 +178,10 @@ const getRowAmount = (row) => {
|
|||||||
return String(Number(Number(row.quantity) * Number(row.price) * (1 - Number(row.discountPercent) /100) ).toFixed(2)).replace('.',',')
|
return String(Number(Number(row.quantity) * Number(row.price) * (1 - Number(row.discountPercent) /100) ).toFixed(2)).replace('.',',')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getRowAmountUndiscounted = (row) => {
|
||||||
|
return String(Number(Number(row.quantity) * Number(row.price)).toFixed(2)).replace('.',',')
|
||||||
|
}
|
||||||
|
|
||||||
const addPosition = (mode) => {
|
const addPosition = (mode) => {
|
||||||
|
|
||||||
let lastId = 0
|
let lastId = 0
|
||||||
@@ -365,7 +377,9 @@ const showDocument = ref(false)
|
|||||||
const uri = ref("")
|
const uri = ref("")
|
||||||
const generateDocument = async () => {
|
const generateDocument = async () => {
|
||||||
const ownTenant = dataStore.ownTenant
|
const ownTenant = dataStore.ownTenant
|
||||||
const path = ownTenant.letterheadConfig[itemInfo.value.type]
|
const path = letterheads.value.find(i => i.id === itemInfo.value.letterhead).path
|
||||||
|
|
||||||
|
//ownTenant.letterheadConfig[itemInfo.value.type]
|
||||||
|
|
||||||
const {data,error} = await supabase.storage.from("files").download(path)
|
const {data,error} = await supabase.storage.from("files").download(path)
|
||||||
|
|
||||||
@@ -829,6 +843,25 @@ setupPage()
|
|||||||
</InputGroup>
|
</InputGroup>
|
||||||
|
|
||||||
</UFormGroup>
|
</UFormGroup>
|
||||||
|
<UFormGroup
|
||||||
|
label="Briefpapier:"
|
||||||
|
>
|
||||||
|
<USelectMenu
|
||||||
|
:options="letterheads"
|
||||||
|
v-model="itemInfo.letterhead"
|
||||||
|
value-attribute="id"
|
||||||
|
option-attribute="name"
|
||||||
|
searchable
|
||||||
|
searchable-placeholder="Suche..."
|
||||||
|
:search-attributes="['name']"
|
||||||
|
class="w-full"
|
||||||
|
:color="itemInfo.letterhead ? 'primary' : 'rose'"
|
||||||
|
>
|
||||||
|
<template #label>
|
||||||
|
{{itemInfo.letterhead ? letterheads.find(i => i.id === itemInfo.letterhead).name : "Kein Briefpapier gewählt"}}
|
||||||
|
</template>
|
||||||
|
</USelectMenu>
|
||||||
|
</UFormGroup>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</InputGroup>
|
</InputGroup>
|
||||||
@@ -985,7 +1018,8 @@ setupPage()
|
|||||||
:search-attributes="['name']"
|
:search-attributes="['name']"
|
||||||
v-model="row.service"
|
v-model="row.service"
|
||||||
@change="row.unit = dataStore.getServiceById(row.service).unit,
|
@change="row.unit = dataStore.getServiceById(row.service).unit,
|
||||||
row.price = dataStore.getServiceById(row.service).sellingPrice || 0"
|
row.price = dataStore.getServiceById(row.service).sellingPrice || 0,
|
||||||
|
row.description = dataStore.getServiceById(row.service).description"
|
||||||
>
|
>
|
||||||
<template #label>
|
<template #label>
|
||||||
{{dataStore.getServiceById(row.service) ? dataStore.getServiceById(row.service).name : "Keine Leistung ausgewählt" }}
|
{{dataStore.getServiceById(row.service) ? dataStore.getServiceById(row.service).name : "Keine Leistung ausgewählt" }}
|
||||||
@@ -1099,7 +1133,8 @@ setupPage()
|
|||||||
<td
|
<td
|
||||||
v-if="row.mode !== 'pagebreak' && row.mode !== 'title'"
|
v-if="row.mode !== 'pagebreak' && row.mode !== 'title'"
|
||||||
>
|
>
|
||||||
<p class="text-right font-bold whitespace-nowrap">{{getRowAmount(row)}} €</p>
|
|
||||||
|
<p class="text-right font-bold whitespace-nowrap"><span v-if="row.discountPercent !== 0" class="line-through mr-2 text-rose-500">{{getRowAmountUndiscounted(row)}} €</span>{{getRowAmount(row)}} €</p>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<UButton
|
<UButton
|
||||||
|
|||||||
Reference in New Issue
Block a user