import { PureComponent } from 'react'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import WarehouseIcon from '@mui/icons-material/Warehouse'; import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; import Tooltip from '@mui/material/Tooltip'; import { PanelTile } from 'dashgui/panels'; import { formatStock } from '../../../pages/artikel/searchFormat'; import ArticleStockAdjustDialog from '../ArticleStockAdjustDialog'; const SECOND_ROW_MIN_HEIGHT = 220; export default class ArticleViewStock extends PureComponent { constructor(props) { super(props); this.state = { adjustOpen: false, }; this.handleOpenAdjust = this.handleOpenAdjust.bind(this); this.handleCloseAdjust = this.handleCloseAdjust.bind(this); } handleOpenAdjust() { this.setState({ adjustOpen: true }); } handleCloseAdjust() { this.setState({ adjustOpen: false }); } render() { const { article: articleData } = this.props; const { adjustOpen } = this.state; const isTrackStock = articleData?.track_stock !== false && articleData?.track_stock !== 0; const rawWarehouses = Array.isArray(articleData?.warehouses) ? articleData.warehouses : []; const warehouses = rawWarehouses.filter((wh) => (Number(wh.stock) || 0) > 0); const hasWarehouses = warehouses.length > 0; const totalStock = rawWarehouses.length > 0 ? rawWarehouses.reduce((sum, wh) => sum + (Number(wh.stock) || 0), 0) : articleData?.stock != null ? Number(articleData.stock) : 0; const rawUnit = articleData?.unit?.symbol || articleData?.unit?.name || ''; const unit = rawUnit && !['stk', 'stück', 'pc', 'stk.'].includes(rawUnit.trim().toLowerCase()) ? rawUnit : ''; return ( <> {/* Top section: Headline and Total Stock */} Bestand {isTrackStock ? ( 0 ? 'text.primary' : 'text.secondary', }} > {formatStock(totalStock)} {unit ? ( {unit} ) : null} ) : ( Keine Erfassung Bestand wird nicht überwacht )} {/* Bottom section: Per-warehouse breakdown */} {isTrackStock && hasWarehouses ? ( {warehouses.map((wh) => ( {wh.name} 0 ? 'text.primary' : 'text.secondary', }} > {formatStock(wh.stock)} ))} ) : null} ); } }