Letterhead Change & Minor Changes in Doc Creation

This commit is contained in:
2024-09-16 19:07:51 +02:00
parent d5c2ed86f7
commit 1e4d0153b4

View File

@@ -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