diff --git a/pages/calendar/[mode].vue b/pages/calendar/[mode].vue index c0c2dd4..097cec1 100644 --- a/pages/calendar/[mode].vue +++ b/pages/calendar/[mode].vue @@ -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 diff --git a/pages/createDocument/edit/[[id]].vue b/pages/createDocument/edit/[[id]].vue index c4da825..6b587c3 100644 --- a/pages/createDocument/edit/[[id]].vue +++ b/pages/createDocument/edit/[[id]].vue @@ -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, diff --git a/pages/support/[id].vue b/pages/support/[id].vue index a998a80..517dae4 100644 --- a/pages/support/[id].vue +++ b/pages/support/[id].vue @@ -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" diff --git a/pages/support/index.vue b/pages/support/index.vue index 3c3bb3c..5527d63 100644 --- a/pages/support/index.vue +++ b/pages/support/index.vue @@ -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") + } + +}) +