-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spaces/pages/vehicles/[mode]/[[id]].vue b/spaces/pages/vehicles/[mode]/[[id]].vue
index cca31f0..2c11493 100644
--- a/spaces/pages/vehicles/[mode]/[[id]].vue
+++ b/spaces/pages/vehicles/[mode]/[[id]].vue
@@ -141,7 +141,7 @@ setupPage()
router.push('/incominginvoices/show/' + row.id)"
+ @select="(row) => router.push('/receipts/show/' + row.id)"
>
{{dataStore.getVendorById(row.vendor) ? dataStore.getVendorById(row.vendor).name : ""}}
diff --git a/spaces/stores/data.ts b/spaces/stores/data.js
similarity index 73%
rename from spaces/stores/data.ts
rename to spaces/stores/data.js
index deaacd0..367c144 100644
--- a/spaces/stores/data.ts
+++ b/spaces/stores/data.js
@@ -1,6 +1,7 @@
import {defineStore} from 'pinia'
import dayjs from "dayjs"
import {typeOf} from "uri-js/dist/esnext/util";
+import {useNumberRange} from "~/composables/useNumberRange.js";
//const supabase = createClient('https://uwppvcxflrcsibuzsbil.supabase.co','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InV3cHB2Y3hmbHJjc2lidXpzYmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDA5MzgxOTQsImV4cCI6MjAxNjUxNDE5NH0.CkxYSQH0uLfwx9GVUlO6AYMU2FMLAxGMrwEKvyPv7Oo')
@@ -21,7 +22,8 @@ export const useDataStore = defineStore('data', () => {
customers: {
label: "Kunden",
labelSingle: "Kunde",
- redirect:true
+ redirect:true,
+ numberRangeHolder: "customerNumber"
},
contacts: {
label: "Kontakte",
@@ -61,7 +63,8 @@ export const useDataStore = defineStore('data', () => {
vendors: {
label: "Lieferanten",
labelSingle: "Lieferant",
- redirect:true
+ redirect:true,
+ numberRangeHolder: "vendorNumber"
},
messages: {
label: "Nachrichten",
@@ -70,29 +73,58 @@ export const useDataStore = defineStore('data', () => {
spaces: {
label: "Lagerplätze",
labelSingle: "Lagerplatz",
- redirect: true
+ redirect: true,
+ numberRangeHolder: "spaceNumber"
},
users: {
label: "Benutzer",
labelSingle: "Benutzer"
+ },
+ createdDocuments: {
+ label: "Dokumente",
+ labelSingle: "Dokument"
+ },
+ incomingInvoices: {
+ label: "Eingangsrechnungen",
+ labelSingle: "Eingangsrechnung"
}
}
+ const documentTypesForCreation = ref({
+ invoices: {
+ label: "Rechnungen",
+ labelSingle: "Rechnung",
+
+ },
+ quotes: {
+ label: "Angebote",
+ labelSingle: "Angebot"
+ },
+ deliveryNotes: {
+ label: "Lieferscheine",
+ labelSingle: "Lieferschein"
+ }
+ })
+
+
const loaded = ref(false)
const ownTenant = ref({
calendarConfig: {
- eventTypes: [] as any[]
+ eventTypes: []
},
timeConfig: {
- timeTypes: [] as any[]
+ timeTypes: []
},
tags: {
- documents: [] as any[],
- products: [] as any[]
+ documents: [] ,
+ products: []
},
- measures: [] as {name:String, short:String}[]
+ measures: []
})
+
+
const profiles = ref([])
+ const currentTenant = ref(null)
const events = ref([])
const customers = ref([])
const tasks = ref([])
@@ -122,11 +154,30 @@ export const useDataStore = defineStore('data', () => {
const inventoryItems = ref([])
const chats = ref([])
const messages = ref([])
+ const createdDocuments = ref([])
+
+ async function initializeData () {
+ await fetchProfiles()
+ currentTenant.value = profiles.value.find(i => i.id === user.value.id).tenants[0].id
+
+ await fetchData()
+
+ }
+
+ async function changeTenant() {
+ loaded.value = false
+ await clearStore()
+ await fetchData()
+ router.push("/")
+ loaded.value = true
+
+ }
async function fetchData () {
+ await fetchProfiles()
+
fetchDocuments()
await fetchOwnTenant()
- await fetchProfiles()
await fetchEvents()
await fetchTasks()
await fetchProjects()
@@ -156,6 +207,7 @@ export const useDataStore = defineStore('data', () => {
await fetchInventoryItems()
await fetchChats()
await fetchMessages()
+ await fetchCreatedDocuments()
loaded.value = true
}
@@ -193,6 +245,7 @@ export const useDataStore = defineStore('data', () => {
inventoryItems.value = []
chats.value = []
messages.value = []
+ createdDocuments.value = []
}
//Realtime Update
@@ -218,7 +271,20 @@ export const useDataStore = defineStore('data', () => {
)
.subscribe()
- async function createNewItem (dataType:string,data:Array){
+ async function createNewItem (dataType,data){
+ console.log(dataType)
+ if(dataTypes[dataType].numberRangeHolder) {
+
+ const numberRange = useNumberRange(dataType)
+ data[dataTypes[dataType].numberRangeHolder] = await numberRange.useNextNumber()
+
+ } else if(dataType === "createdDocuments") {
+ console.log(data.type)
+ const numberRange = useNumberRange(data.type)
+ data.documentNumber = await numberRange.useNextNumber()
+
+ }
+
const {data:supabaseData,error:supabaseError} = await supabase
.from(dataType)
.insert(typeOf(data) === 'Object' ? [data] : data)
@@ -233,7 +299,7 @@ export const useDataStore = defineStore('data', () => {
}
}
- async function updateItem (dataType:string, data:Object) {
+ async function updateItem (dataType, data) {
const {data:supabaseData,error: supabaseError} = await supabase
.from(dataType)
.update(data)
@@ -251,108 +317,116 @@ export const useDataStore = defineStore('data', () => {
}
async function fetchOwnTenant () {
- ownTenant.value = (await supabase.from("tenants").select().eq('id', user.value?.app_metadata.tenant)).data[0]
+ ownTenant.value = (await supabase.from("tenants").select().eq('id', currentTenant.value)).data[0]
}
async function fetchProfiles () {
- profiles.value = (await supabase.from("profiles").select()).data
+ profiles.value = (await supabase.from("profiles").select('* , tenants (id, name)')).data
}
async function fetchBankAccounts () {
- bankAccounts.value = (await supabase.from("bankAccounts").select()).data
+ bankAccounts.value = (await supabase.from("bankaccounts").select().eq('tenant', currentTenant.value)).data
}
async function fetchBankStatements () {
- bankStatements.value = (await supabase.from("bankStatements").select().order("date", {ascending:false})).data
+ bankStatements.value = (await supabase.from("bankstatements").select().eq('tenant', currentTenant.value).order("date", {ascending:false})).data
}
async function fetchEvents () {
- events.value = (await supabase.from("events").select()).data
+ events.value = (await supabase.from("events").select().eq('tenant', currentTenant.value)).data
}
async function fetchContracts () {
- contracts.value = (await supabase.from("contracts").select()).data
+ contracts.value = (await supabase.from("contracts").select().eq('tenant', currentTenant.value)).data
}
async function fetchContacts () {
- contacts.value = (await supabase.from("contacts").select()).data
+ contacts.value = (await supabase.from("contacts").select().eq('tenant', currentTenant.value)).data
}
async function fetchCustomers () {
- customers.value = (await supabase.from("customers").select().order("customerNumber", {ascending:true})).data
+ customers.value = (await supabase.from("customers").select().eq('tenant', currentTenant.value).order("customerNumber", {ascending:true})).data
}
async function fetchTasks () {
- tasks.value = (await supabase.from("tasks").select()).data
+ tasks.value = (await supabase.from("tasks").select().eq('tenant', currentTenant.value)).data
}
async function fetchForms () {
- forms.value = (await supabase.from("forms").select()).data
+ forms.value = (await supabase.from("forms").select().eq('tenant', currentTenant.value)).data
}
async function fetchFormSubmits () {
- formSubmits.value = (await supabase.from("formSubmits").select()).data
+ formSubmits.value = (await supabase.from("formSubmits").select().eq('tenant', currentTenant.value)).data
}
async function fetchProducts () {
- products.value = (await supabase.from("products").select()).data
+ products.value = (await supabase.from("products").select().eq('tenant', currentTenant.value)).data
}
async function fetchUnits () {
units.value = (await supabase.from("units").select()).data
}
async function fetchProjects () {
- projects.value = (await supabase.from("projects").select()).data
+ projects.value = (await supabase.from("projects").select().eq("tenant",currentTenant.value)).data
}
async function fetchSpaces () {
- spaces.value = (await supabase.from("spaces").select().order("spaceNumber", {ascending:true})).data
+ spaces.value = (await supabase.from("spaces").select().eq('tenant', currentTenant.value).order("spaceNumber", {ascending:true})).data
}
async function fetchMovements () {
- movements.value = (await supabase.from("movements").select()).data
+ movements.value = (await supabase.from("movements").select().eq('tenant', currentTenant.value)).data
}
async function fetchVehicles () {
- vehicles.value = (await supabase.from("vehicles").select()).data
+ vehicles.value = (await supabase.from("vehicles").select().eq('tenant', currentTenant.value)).data
}
async function fetchTimes () {
- times.value = (await supabase.from("times").select().order("start", {ascending:false})).data
+ times.value = (await supabase.from("times").select().eq('tenant', currentTenant.value).order("start", {ascending:false})).data
}
async function fetchHistoryItems () {
- historyItems.value = (await supabase.from("historyItems").select()).data
+ historyItems.value = (await supabase.from("historyitems").select().eq('tenant', currentTenant.value)).data
}
async function fetchVendors () {
- vendors.value = (await supabase.from("vendors").select().order("vendorNumber", {ascending:true})).data
+ vendors.value = (await supabase.from("vendors").select().eq('tenant', currentTenant.value).order("vendorNumber", {ascending:true})).data
}
async function fetchIncomingInvoices () {
- incomingInvoices.value = (await supabase.from("incomingInvoices").select()).data
+ incomingInvoices.value = (await supabase.from("incominginvoices").select().eq('tenant', currentTenant.value)).data
}
async function fetchNumberRanges () {
- numberRanges.value = (await supabase.from("numberRanges").select()).data
+ numberRanges.value = (await supabase.from("numberranges").select().eq('tenant', currentTenant.value)).data
}
async function fetchNotifications () {
- notifications.value = (await supabase.from("notifications").select().order("created_at", {ascending: false})).data
+ notifications.value = (await supabase.from("notifications").select().eq('tenant', currentTenant.value).order("created_at", {ascending: false})).data
}
async function fetchAbsenceRequests () {
- absenceRequests.value = (await supabase.from("absenceRequests").select()).data
+ absenceRequests.value = (await supabase.from("absencerequests").select().eq('tenant', currentTenant.value)).data
}
async function fetchAccounts () {
accounts.value = (await supabase.from("accounts").select()).data
}
async function fetchTaxTypes () {
- taxTypes.value = (await supabase.from("taxTypes").select()).data
+ taxTypes.value = (await supabase.from("taxtypes").select()).data
}
async function fetchPlants () {
- plants.value = (await supabase.from("plants").select()).data
+ plants.value = (await supabase.from("plants").select().eq('tenant', currentTenant.value)).data
}
async function fetchInventoryItems () {
- inventoryItems.value = (await supabase.from("inventoryItems").select()).data
+ inventoryItems.value = (await supabase.from("inventoryitems").select().eq('tenant', currentTenant.value)).data
}
async function fetchChats() {
chats.value = (await supabase.from("chats").select()).data
}
async function fetchMessages() {
- messages.value = (await supabase.from("messages").select().order('created_at', {ascending:true})).data
+ messages.value = (await supabase.from("messages").select().eq('tenant', currentTenant.value).order('created_at', {ascending:true})).data
+ }
+ async function fetchCreatedDocuments() {
+ createdDocuments.value = (await supabase.from("createddocuments").select().eq('tenant', currentTenant.value).order('created_at', {ascending:true})).data
}
async function fetchDocuments () {
- documents.value = (await supabase.from("documents").select()).data
+ let tempDocuments = (await supabase.from("documents").select().eq('tenant', currentTenant.value)).data
- for(const [index,doc] of documents.value.entries()){
- // @ts-ignore
- documents.value[index].url = (await supabase.storage.from('files').createSignedUrl(doc.path, 60 * 60)).data.signedUrl
+ if(tempDocuments.length > 0) {
+ for(const [index,doc] of tempDocuments.entries()){
+ // @ts-ignore
+ tempDocuments[index].url = (await supabase.storage.from('files').createSignedUrl(doc.path, 60 * 60)).data.signedUrl
+ }
}
+
+ documents.value = tempDocuments
+
}
- async function addHistoryItem(text: String, user: String, elementId: String, resourceType: String) {
+ async function addHistoryItem(text, user, elementId, resourceType) {
let data = {
user: user,
text: text
@@ -382,55 +456,59 @@ export const useDataStore = defineStore('data', () => {
return tasks.value.filter(task => task.categorie != "Erledigt").length
})
- const getMovementsBySpace = computed(() => (spaceId:string) => {
+ const getOwnProfile = computed(() => {
+ return profiles.value.find(profile => profile.id === user.value.id)
+ })
+
+ const getMovementsBySpace = computed(() => (spaceId) => {
return movements.value.filter(movement => movement.spaceId === spaceId)
})
- const getContactsByCustomerId = computed(() => (customerId:string) => {
+ const getContactsByCustomerId = computed(() => (customerId) => {
return contacts.value.filter(item => item.customer === customerId)
})
- const getContactsByVendorId = computed(() => (vendorId:string) => {
+ const getContactsByVendorId = computed(() => (vendorId) => {
return contacts.value.filter(item => item.vendor === vendorId)
})
- const getDocumentsByProjectId = computed(() => (projectId:string) => {
+ const getDocumentsByProjectId = computed(() => (projectId) => {
return documents.value.filter(item => item.project === projectId)
})
- const getEventsByProjectId = computed(() => (projectId:string) => {
+ const getEventsByProjectId = computed(() => (projectId) => {
return events.value.filter(item => item.project === projectId)
})
- const getTimesByProjectId = computed(() => (projectId:string) => {
+ const getTimesByProjectId = computed(() => (projectId) => {
return times.value.filter(time => time.projectId === projectId)
})
- const getTasksByProjectId = computed(() => (projectId:string) => {
+ const getTasksByProjectId = computed(() => (projectId) => {
return tasks.value.filter(item => item.project === projectId)
})
- const getTasksByPlantId = computed(() => (plantId:string) => {
+ const getTasksByPlantId = computed(() => (plantId) => {
return tasks.value.filter(item => item.plant === plantId)
})
- const getProjectsByPlantId = computed(() => (plantId:string) => {
+ const getProjectsByPlantId = computed(() => (plantId) => {
return projects.value.filter(item => item.plant === plantId)
})
- const getIncomingInvoicesByVehicleId = computed(() => (vehicleId:string) => {
+ const getIncomingInvoicesByVehicleId = computed(() => (vehicleId) => {
return incomingInvoices.value.filter(i => i.accounts.find(a => a.costCentre === vehicleId))
})
- const getMovementsBySpaceId = computed(() => (spaceId:string) => {
+ const getMovementsBySpaceId = computed(() => (spaceId) => {
return movements.value.filter(movement => movement.spaceId === spaceId)
})
- const getMessagesByChatId = computed(() => (chatId:string) => {
+ const getMessagesByChatId = computed(() => (chatId) => {
return messages.value.filter(i => i.destination === chatId)
})
- const getStockByProductId = computed(() => (productId:string) => {
+ const getStockByProductId = computed(() => (productId) => {
let productMovements = movements.value.filter(movement => movement.productId === productId)
let count = 0
@@ -595,63 +673,67 @@ export const useDataStore = defineStore('data', () => {
//Get Item By Id
- const getProductById = computed(() => (itemId:string) => {
+ const getProductById = computed(() => (itemId) => {
return products.value.find(item => item.id === itemId)
})
- const getVendorById = computed(() => (itemId:string) => {
+ const getVendorById = computed(() => (itemId) => {
return vendors.value.find(item => item.id === itemId)
})
- const getIncomingInvoiceById = computed(() => (itemId:string) => {
+ const getIncomingInvoiceById = computed(() => (itemId) => {
return incomingInvoices.value.find(item => item.id === itemId)
})
- const getContractById = computed(() => (itemId:string) => {
+ const getContractById = computed(() => (itemId) => {
return contracts.value.find(item => item.id === itemId)
})
- const getContactById = computed(() => (itemId:string) => {
+ const getContactById = computed(() => (itemId) => {
return contacts.value.find(item => item.id === itemId)
})
- const getVehicleById = computed(() => (itemId:string) => {
+ const getVehicleById = computed(() => (itemId) => {
return vehicles.value.find(item => item.id === itemId)
})
- const getDocumentById = computed(() => (itemId:string) => {
+ const getDocumentById = computed(() => (itemId) => {
return documents.value.find(item => item.id === itemId)
})
- const getSpaceById = computed(() => (itemId:string) => {
+ const getSpaceById = computed(() => (itemId) => {
return spaces.value.find(item => item.id === itemId)
})
- const getCustomerById = computed(() => (itemId:number) => {
+ const getCustomerById = computed(() => (itemId) => {
return customers.value.find(item => item.id === itemId)
})
- const getTaskById = computed(() => (itemId:string) => {
+ const getTaskById = computed(() => (itemId) => {
return tasks.value.find(item => item.id === itemId)
})
- const getAbsenceRequestById = computed(() => (itemId:string) => {
+ const getAbsenceRequestById = computed(() => (itemId) => {
return absenceRequests.value.find(item => item.id === itemId)
})
- const getProfileById = computed(() => (itemId:string) => {
+ const getProfileById = computed(() => (itemId) => {
return profiles.value.find(item => item.id === itemId)
})
- const getAccountById = computed(() => (accountId:string) => {
+ const getAccountById = computed(() => (accountId) => {
return accounts.value.find(item => item.id === accountId)
})
- const getPlantById = computed(() => (plantId:string) => {
+ const getPlantById = computed(() => (plantId) => {
return plants.value.find(item => item.id === plantId)
})
- const getProjectById = computed(() => (itemId:string) => {
+ const getCreatedDocumentById = computed(() => (documentId) => {
+ return createdDocuments.value.find(item => item.id === documentId)
+ })
+
+ const getProjectById = computed(() => (itemId) => {
if(projects.value.find(i => i.id === itemId)) {
let project = projects.value.find(project => project.id === itemId)
@@ -672,8 +754,14 @@ export const useDataStore = defineStore('data', () => {
})
return {
+ //General
+ currentTenant,
loaded,
ownTenant,
+ initializeData,
+ changeTenant,
+
+ //Data
profiles,
events,
customers,
@@ -704,6 +792,8 @@ export const useDataStore = defineStore('data', () => {
inventoryItems,
chats,
messages,
+ createdDocuments,
+ documentTypesForCreation,
//Functions
createNewItem,
updateItem,
@@ -741,6 +831,7 @@ export const useDataStore = defineStore('data', () => {
addHistoryItem,
//Getters
getOpenTasksCount,
+ getOwnProfile,
getMovementsBySpace,
getContactsByCustomerId,
getContactsByVendorId,
@@ -776,7 +867,8 @@ export const useDataStore = defineStore('data', () => {
getProjectById,
getProfileById,
getAccountById,
- getPlantById
+ getPlantById,
+ getCreatedDocumentById
}