Merge branch 'dev' into beta
This commit is contained in:
@@ -130,7 +130,7 @@ const calendarOptionsTimeline = ref({
|
||||
const loaded = ref(false)
|
||||
const setupPage = async () => {
|
||||
let tempData = await useSupabaseSelect("events", "*, vehicles(*), inventoryitems(*)")
|
||||
let absencerequests = await useSupabaseSelect("absencerequests", "*")
|
||||
let absencerequests = await useSupabaseSelect("absencerequests", "*, profile(*)")
|
||||
let projects = await useSupabaseSelect("projects", "*")
|
||||
let inventoryitems = await useSupabaseSelect("inventoryitems", "*")
|
||||
let profiles = await useSupabaseSelect("profiles", "*")
|
||||
@@ -198,9 +198,9 @@ const setupPage = async () => {
|
||||
id: absence.id,
|
||||
resourceId: absence.user,
|
||||
resourceType: "person",
|
||||
title: `${absence.reason} - ${absence.name}`,
|
||||
start: dayjs(absence.start).toDate(),
|
||||
end: dayjs(absence.end).add(1, 'day').toDate(),
|
||||
title: `${absence.reason} - ${absence.profile.fullName}`,
|
||||
start: dayjs(absence.startDate).toDate(),
|
||||
end: dayjs(absence.endDate).add(1, 'day').toDate(),
|
||||
allDay: true,
|
||||
absencerequestId: absence.id,
|
||||
entrytype: "absencerequest",
|
||||
@@ -316,11 +316,11 @@ const setupPage = async () => {
|
||||
|
||||
absencerequests.forEach(absencerequest => {
|
||||
let returnData = {
|
||||
title: `${absencerequest.reason} - ${absencerequest.name}`,
|
||||
title: `${absencerequest.reason}`,
|
||||
backgroundColor: "black",
|
||||
start: absencerequest.startDate,
|
||||
end: absencerequest.endDate,
|
||||
resourceIds: [absencerequest.profile],
|
||||
resourceIds: [absencerequest.profile.id],
|
||||
entrytype: "absencerequest",
|
||||
allDay: true,
|
||||
absencerequestId: absencerequest.id
|
||||
|
||||
@@ -457,7 +457,7 @@ const findDocumentErrors = computed(() => {
|
||||
|
||||
if(itemInfo.value.project === null) errors.push({message: "Es ist kein Projekt ausgewählt", type: "info"})
|
||||
|
||||
if(['Lieferzeitraum','Leistungszeitraum'].includes(itemInfo.value.deliveryDateType)) {
|
||||
if(['Lieferzeitraum','Leistungszeitraum'].includes(itemInfo.value.deliveryDateType) && itemInfo.value.type !== "serialInvoices") {
|
||||
if(itemInfo.value.deliveryDateEnd === null) errors.push({message: `Es ist kein Enddatum für den ${itemInfo.value.deliveryDateType} angegeben`, type: "breaking"})
|
||||
}
|
||||
|
||||
@@ -589,13 +589,18 @@ const documentTotal = computed(() => {
|
||||
const processDieselPosition = () => {
|
||||
let agricultureData = {
|
||||
dieselUsageTotal: 0,
|
||||
dieselPriceTotal: 0
|
||||
dieselPriceTotal: 0,
|
||||
adblueUsageTotal: 0,
|
||||
adbluePriceTotal: 0
|
||||
}
|
||||
|
||||
itemInfo.value.rows.forEach(row => {
|
||||
if(row.agriculture && row.agriculture.dieselUsage) {
|
||||
agricultureData.dieselUsageTotal += Number(row.agriculture.dieselUsage)
|
||||
agricultureData.dieselPriceTotal += Number(row.agriculture.dieselPrice) * Number(row.agriculture.dieselUsage)
|
||||
agricultureData.dieselPriceTotal += Number(row.agriculture.dieselPrice || 0) * Number(row.agriculture.dieselUsage)
|
||||
|
||||
agricultureData.adblueUsageTotal += Number(row.agriculture.dieselUsage * 0.04)
|
||||
agricultureData.adbluePriceTotal += Number(row.agriculture.dieselPrice || 0) * Number(row.agriculture.dieselUsage * 0.04)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -610,10 +615,18 @@ const processDieselPosition = () => {
|
||||
text: `${agricultureData.dieselUsageTotal} L Diesel`,
|
||||
}
|
||||
|
||||
let existingAdblueIndex = itemInfo.value.rows.findIndex(i => i.key === "adbluePos")
|
||||
|
||||
itemInfo.value.rows[existingAdblueIndex] = {
|
||||
...itemInfo.value.rows[existingAdblueIndex],
|
||||
price: agricultureData.adbluePriceTotal,
|
||||
text: `${agricultureData.adblueUsageTotal} L Diesel`,
|
||||
}
|
||||
|
||||
} else {
|
||||
itemInfo.value.rows.push({
|
||||
mode: "free",
|
||||
text: `${agricultureData.dieselUsageTotal} L Diesel`,
|
||||
text: `${(agricultureData.dieselUsageTotal).toFixed(2).replace(".",",")} L Diesel`,
|
||||
quantity: 1,
|
||||
unit: 10,
|
||||
price: agricultureData.dieselPriceTotal,
|
||||
@@ -622,6 +635,17 @@ const processDieselPosition = () => {
|
||||
key: "dieselPos"
|
||||
})
|
||||
|
||||
itemInfo.value.rows.push({
|
||||
mode: "free",
|
||||
text: `${(agricultureData.adblueUsageTotal).toFixed(2).replace(".",",")} L AdBlue`,
|
||||
quantity: 1,
|
||||
unit: 10,
|
||||
price: agricultureData.adbluePriceTotal,
|
||||
taxPercent: 19,
|
||||
discountPercent: 0,
|
||||
key: "adbluePos"
|
||||
})
|
||||
|
||||
setPosNumbers()
|
||||
}
|
||||
}
|
||||
@@ -751,11 +775,11 @@ const getDocumentData = () => {
|
||||
content: customerData.customerNumber,
|
||||
},{
|
||||
label: "Belegdatum",
|
||||
content: dayjs(itemInfo.value.documentDate).format("DD.MM.YYYY"),
|
||||
content: itemInfo.value.documentDate ? dayjs(itemInfo.value.documentDate).format("DD.MM.YYYY") : "XXXX",
|
||||
},
|
||||
... itemInfo.value.deliveryDateType !== "Kein Lieferdatum anzeigen" ? [{
|
||||
label: itemInfo.value.deliveryDateType,
|
||||
content: !['Lieferzeitraum','Leistungszeitraum'].includes(itemInfo.value.deliveryDateType) ? dayjs(itemInfo.value.deliveryDate).format("DD.MM.YYYY") : `${dayjs(itemInfo.value.deliveryDate).format("DD.MM.YYYY")} - ${dayjs(itemInfo.value.deliveryDateEnd).format("DD.MM.YYYY")}`,
|
||||
content: !['Lieferzeitraum','Leistungszeitraum'].includes(itemInfo.value.deliveryDateType) ? (itemInfo.value.deliveryDate ? dayjs(itemInfo.value.deliveryDate).format("DD.MM.YYYY") : "XXXX") : `${itemInfo.value.deliveryDate ? dayjs(itemInfo.value.deliveryDate).format("DD.MM.YYYY") : "XXXX"} - ${itemInfo.value.deliveryDateEnd ? dayjs(itemInfo.value.deliveryDateEnd).format("DD.MM.YYYY") : "XXXX"}`,
|
||||
}] : [],
|
||||
/*{
|
||||
label: itemInfo.value.deliveryDateType,
|
||||
|
||||
@@ -69,6 +69,13 @@ const closeTicket = async () => {
|
||||
console.log(error)
|
||||
} else {
|
||||
console.log(data)
|
||||
|
||||
addEntryData.value.type = "Notiz"
|
||||
addEntryData.value.internal = false
|
||||
addEntryData.value.content = `Ticket durch ${profileStore.activeProfile.fullName} geschlossen`
|
||||
|
||||
addEntry()
|
||||
|
||||
}
|
||||
|
||||
setup()
|
||||
@@ -161,7 +168,7 @@ const closeTicket = async () => {
|
||||
v-for="item in itemInfo.ticketmessages.filter(i => !i.internal)"
|
||||
:description="item.content"
|
||||
:avatar="{ alt: item.profile.fullName}"
|
||||
:title="item.profile.fullName"
|
||||
:title="`${item.type} - ${item.profile.fullName}`"
|
||||
class="mb-3"
|
||||
:color="item.profile.tenant === 5 ? 'primary' : 'white'"
|
||||
variant="outline"
|
||||
|
||||
@@ -6,21 +6,33 @@ const router = useRouter()
|
||||
|
||||
const tickets = ref([])
|
||||
|
||||
const showClosedTickets = ref(false)
|
||||
|
||||
const setup = async () => {
|
||||
if(profileStore.currentTenant === 5) {
|
||||
tickets.value = (await supabase.from("tickets").select("*,created_by(*), ticketmessages(*), tenant(*)")).data
|
||||
tickets.value = (await supabase.from("tickets").select("*,created_by(*), ticketmessages(*), tenant(*)").order("created_at", {ascending: false})).data
|
||||
} else {
|
||||
tickets.value = (await supabase.from("tickets").select("*,created_by(*), ticketmessages(*)").eq("tenant",profileStore.currentTenant)).data
|
||||
tickets.value = (await supabase.from("tickets").select("*,created_by(*), ticketmessages(*)").eq("tenant",profileStore.currentTenant).order("created_at", {ascending: false})).data
|
||||
}
|
||||
}
|
||||
|
||||
setup()
|
||||
|
||||
const filteredRows = computed(() => {
|
||||
|
||||
if(showClosedTickets.value) {
|
||||
return tickets.value
|
||||
} else {
|
||||
return tickets.value.filter(i => i.status !== "Geschlossen")
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<UDashboardNavbar
|
||||
title="Suport Tickets"
|
||||
title="Support Tickets"
|
||||
>
|
||||
<template #right>
|
||||
<UButton
|
||||
@@ -30,8 +42,16 @@ setup()
|
||||
</UButton>
|
||||
</template>
|
||||
</UDashboardNavbar>
|
||||
<UDashboardToolbar>
|
||||
<template #left>
|
||||
<UCheckbox
|
||||
label="Geschlossene Tickets anzeigen"
|
||||
v-model="showClosedTickets"
|
||||
/>
|
||||
</template>
|
||||
</UDashboardToolbar>
|
||||
<UTable
|
||||
:rows="tickets"
|
||||
:rows="filteredRows"
|
||||
:empty-state="{ icon: 'i-heroicons-circle-stack-20-solid', label: `Keine Tickets anzuzeigen` }"
|
||||
@select="(i) => router.push(`/support/${i.id}`)"
|
||||
:columns="[{key:'created_at',label:'Datum'}, ...profileStore.currentTenant === 5 ? [{key:'tenant',label:'Tenant'}] : [],{key:'status',label:'Status'},{key:'title',label:'Titel'},{key:'created_by',label:'Ersteller'},{key:'ticketmessages',label:'Nachrichten'}]"
|
||||
|
||||
@@ -599,6 +599,7 @@ export const useDataStore = defineStore('data', () => {
|
||||
{label:"unbezahlter Urlaub"},
|
||||
{label:"Überstundenausgleich"},
|
||||
{label:"Sonderurlaub(bezahlt)"},
|
||||
{label:"Schulung"},
|
||||
{label:"Mutterschutz"},
|
||||
{label:"Krankheit ab 2. Tag (mit Attest)"},
|
||||
{label:"Krankheit 1 Tag (mit Attest)"},
|
||||
|
||||
Reference in New Issue
Block a user