2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-10-03 15:52:51 +00:00

[UI] Consume tracked (#10422)

* Prevent manual consumption of tracked stock

* Prevent manual consuming of trackable items
This commit is contained in:
Oliver
2025-09-29 13:52:35 +10:00
committed by GitHub
parent fc0ec12afe
commit b0a60ed963
2 changed files with 13 additions and 4 deletions

View File

@@ -183,9 +183,13 @@ export default function BuildAllocatedStockTable({
const [selectedItems, setSelectedItems] = useState<any[]>([]); const [selectedItems, setSelectedItems] = useState<any[]>([]);
const itemsToConsume = useMemo(() => {
return selectedItems.filter((item) => !item.part_detail?.trackable);
}, [selectedItems]);
const consumeStock = useConsumeBuildItemsForm({ const consumeStock = useConsumeBuildItemsForm({
buildId: buildId ?? 0, buildId: buildId ?? 0,
allocatedItems: selectedItems, allocatedItems: itemsToConsume,
onFormSuccess: () => { onFormSuccess: () => {
table.clearSelectedRecords(); table.clearSelectedRecords();
table.refreshTable(); table.refreshTable();
@@ -225,13 +229,16 @@ export default function BuildAllocatedStockTable({
const rowActions = useCallback( const rowActions = useCallback(
(record: any): RowAction[] => { (record: any): RowAction[] => {
const part = record.part_detail ?? {};
const trackable: boolean = part?.trackable ?? false;
return [ return [
{ {
color: 'green', color: 'green',
icon: <IconCircleDashedCheck />, icon: <IconCircleDashedCheck />,
title: t`Consume`, title: t`Consume`,
tooltip: t`Consume Stock`, tooltip: t`Consume Stock`,
hidden: !buildId || !user.hasChangeRole(UserRoles.build), hidden: !buildId || trackable || !user.hasChangeRole(UserRoles.build),
onClick: () => { onClick: () => {
setSelectedItems([record]); setSelectedItems([record]);
consumeStock.open(); consumeStock.open();

View File

@@ -665,9 +665,10 @@ export default function BuildLineTable({
(record: any): RowAction[] => { (record: any): RowAction[] => {
const part = record.part_detail ?? {}; const part = record.part_detail ?? {};
const in_production = build.status == buildStatus.PRODUCTION; const in_production = build.status == buildStatus.PRODUCTION;
const consumable = record.bom_item_detail?.consumable ?? false; const consumable: boolean = record.bom_item_detail?.consumable ?? false;
const trackable: boolean = part?.trackable ?? false;
const hasOutput = !!output?.pk; const hasOutput: boolean = !!output?.pk;
const required = Math.max( const required = Math.max(
0, 0,
@@ -678,6 +679,7 @@ export default function BuildLineTable({
const canConsume = const canConsume =
in_production && in_production &&
!consumable && !consumable &&
!trackable &&
record.allocated > 0 && record.allocated > 0 &&
user.hasChangeRole(UserRoles.build); user.hasChangeRole(UserRoles.build);