From 112cbb5ce8cdcbf76420bfad9af72b1c333cc6a3 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sat, 7 Mar 2026 13:37:26 +0000 Subject: [PATCH] Implemented product stocks. --- .../Dashboard/Inventory/ProductStocks.jsx | 107 ++++++++ .../ProductStocks/NewProductStock.jsx | 77 ++++++ .../ProductStocks/ProductStockInfo.jsx | 237 ++++++++++++++++++ .../Dashboard/common/ObjectChildTable.jsx | 138 +++++----- .../Dashboard/common/ObjectProperty.jsx | 6 +- .../Dashboard/common/ObjectSelect.jsx | 5 + src/database/models/ProductStock.js | 105 +++++++- src/routes/InventoryRoutes.jsx | 19 ++ 8 files changed, 625 insertions(+), 69 deletions(-) create mode 100644 src/components/Dashboard/Inventory/ProductStocks.jsx create mode 100644 src/components/Dashboard/Inventory/ProductStocks/NewProductStock.jsx create mode 100644 src/components/Dashboard/Inventory/ProductStocks/ProductStockInfo.jsx diff --git a/src/components/Dashboard/Inventory/ProductStocks.jsx b/src/components/Dashboard/Inventory/ProductStocks.jsx new file mode 100644 index 0000000..974f8ff --- /dev/null +++ b/src/components/Dashboard/Inventory/ProductStocks.jsx @@ -0,0 +1,107 @@ +// src/components/Dashboard/Inventory/ProductStocks.jsx +// ProductStocks - tracks assembled products consisting of part stocks + +import { useState, useRef } from 'react' + +import { Button, Flex, Space, Modal, Dropdown } from 'antd' + +import NewProductStock from './ProductStocks/NewProductStock' +import PlusIcon from '../../Icons/PlusIcon' +import ReloadIcon from '../../Icons/ReloadIcon' +import useColumnVisibility from '../hooks/useColumnVisibility' +import ObjectTable from '../common/ObjectTable' +import ListIcon from '../../Icons/ListIcon' +import GridIcon from '../../Icons/GridIcon' +import useViewMode from '../hooks/useViewMode' +import ColumnViewButton from '../common/ColumnViewButton' +import ExportListButton from '../common/ExportListButton' + +const ProductStocks = () => { + const tableRef = useRef() + + const [newProductStockOpen, setNewProductStockOpen] = useState(false) + + const [viewMode, setViewMode] = useViewMode('productStocks') + + const [columnVisibility, setColumnVisibility] = + useColumnVisibility('productStock') + + const actionItems = { + items: [ + { + label: 'New Product Stock', + key: 'newProductStock', + icon: + }, + { type: 'divider' }, + { + label: 'Reload List', + key: 'reloadList', + icon: + } + ], + onClick: ({ key }) => { + if (key === 'reloadList') { + tableRef.current?.reload() + } else if (key === 'newProductStock') { + setNewProductStockOpen(true) + } + } + } + + return ( + <> + + + + + + + + + + + -