import { defineComponent, computed, ref } from 'vue'; import { InventoryDashboard } from './InvDashboard'; import { InventoryAdjustments } from './InvAdjustments'; import { InventoryListing } from './InvListing'; import { InventoryTransactions } from './InvTransactions'; import { InventoryOrders } from './InvOrders'; import Drawer from '../../components/Drawer.vue'; import { ADD_STOCK_ORDER } from '../../graphql/inventory.mutations'; import { useApiUtil } from '../../composables'; import { useInventoryStore, useStorageStore, useSetupStore, useUserStore } from '../../stores'; const InventoryHome = defineComponent({ name: 'inventory-home', setup() { const { withClientMutation } = useApiUtil(); // Prefetch data const inventoryStore = useInventoryStore(); const setupStore = useSetupStore(); const storageStore = useStorageStore(); const userStore = useUserStore(); inventoryStore.fetchItems({ first: 10000, after: '', text: '', sortBy: ['-uid'], }); userStore.fetchUsers({}); setupStore.fetchSuppliers(); setupStore.fetchDepartments({}); inventoryStore.fetchCategories(); inventoryStore.fetchHazards(); storageStore.fetchStoreRooms(); inventoryStore.fetchUnits(); inventoryStore.fetchPackages(); inventoryStore.fetchProducts({ first: 50, after: '', text: '', sortBy: ['uid'], }); inventoryStore.fetchStockOrders({ first: 50, after: '', text: '', sortBy: ['uid'], }); inventoryStore.fetchTransactions({ first: 50, after: '', text: '', sortBy: ['uid'], }); inventoryStore.fetchAdjustments({ first: 50, after: '', text: '', sortBy: ['uid'], }); const currentTab = ref('dashboard'); const inventoryTabs = ref(['dashboard', 'orders', 'stock-listing', 'transactions', 'adjustments']); const currentTabComponent = computed(() => 'tab-' + currentTab.value); const viewBasket = ref(false); return { currentTab, inventoryTabs, currentTabComponent, basket: computed(() => inventoryStore.getBasket), viewBasket, inventoryStore, createOrder: () => { const basket = inventoryStore.getBasket; withClientMutation( ADD_STOCK_ORDER, { payload: { orderProducts: basket.map(order => ({ productUid: order.product.uid, quantity: order.quantity, remarks: '', })), departmentUid: undefined, }, }, 'createStockOrder' ).then(result => { inventoryStore.addStockOrder(result?.stockOrder); inventoryStore.clearBasket(); viewBasket.value = false; }); }, }; }, render() { return ( <>
{this.currentTab === 'dashboard' && } {this.currentTab === 'orders' && } {this.currentTab === 'stock-listing' && } {this.currentTab === 'transactions' && } {this.currentTab === 'adjustments' && }
(this.viewBasket = false)}> {{ header: () => 'Your Order Basket', body: () => ( <>
{this.basket.map(item => ( ))}
Product Name Quantity

{item.product.name}


), footer: () => [], }}
); }, }); export { InventoryHome };