mirror of
https://github.com/inventree/InvenTree.git
synced 2025-10-18 23:17:41 +00:00
Plugin stock forms (#10584)
* Expose stock adjustment forms to plugins * Update changelog * Expand type exports * Update CHANGELOG.md
This commit is contained in:
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Added much more detailed status information for machines to the API endpoint (including backend and frontend changes) in [#10381](https://github.com/inventree/InvenTree/pull/10381)
|
- Added much more detailed status information for machines to the API endpoint (including backend and frontend changes) in [#10381](https://github.com/inventree/InvenTree/pull/10381)
|
||||||
- Added ability to partially complete and partially scrap build outputs in [#10499](https://github.com/inventree/InvenTree/pull/10499)
|
- Added ability to partially complete and partially scrap build outputs in [#10499](https://github.com/inventree/InvenTree/pull/10499)
|
||||||
- Added support for Redis ACL user-based authentication in [#10551](https://github.com/inventree/InvenTree/pull/10551)
|
- Added support for Redis ACL user-based authentication in [#10551](https://github.com/inventree/InvenTree/pull/10551)
|
||||||
|
- Expose stock adjustment forms to the UI plugin context in [#10584](https://github.com/inventree/InvenTree/pull/10584)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
@@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
This file contains historical changelog information for the InvenTree UI components library.
|
This file contains historical changelog information for the InvenTree UI components library.
|
||||||
|
|
||||||
|
### 0.7.0 - October 2025
|
||||||
|
|
||||||
|
Exposes stock adjustment forms to plugins, allowing plugins to adjust stock adjustments using the common InvenTree UI form components.
|
||||||
|
|
||||||
|
### 0.6.0 - September 2025
|
||||||
|
|
||||||
|
Updated underlying Mantine library versions.
|
||||||
|
|
||||||
### 0.5.0 - August 2025
|
### 0.5.0 - August 2025
|
||||||
|
|
||||||
This release updates the base `react` major version from `18.3.1` to `19.1.1`. This change may introduce breaking changes for plugins that rely on the InvenTree UI components library (plugin developers should test their plugins against this new version).
|
This release updates the base `react` major version from `18.3.1` to `19.1.1`. This change may introduce breaking changes for plugins that rely on the InvenTree UI components library (plugin developers should test their plugins against this new version).
|
||||||
|
@@ -12,7 +12,12 @@ export { ModelType } from './enums/ModelType';
|
|||||||
export type { ModelDict } from './enums/ModelInformation';
|
export type { ModelDict } from './enums/ModelInformation';
|
||||||
export { UserRoles, UserPermissions } from './enums/Roles';
|
export { UserRoles, UserPermissions } from './enums/Roles';
|
||||||
|
|
||||||
export type { InvenTreePluginContext } from './types/Plugins';
|
export type {
|
||||||
|
InvenTreePluginContext,
|
||||||
|
InvenTreeFormsContext,
|
||||||
|
PluginVersion,
|
||||||
|
StockAdjustmentFormsContext
|
||||||
|
} from './types/Plugins';
|
||||||
export type { RowAction, RowViewProps } from './types/Tables';
|
export type { RowAction, RowViewProps } from './types/Tables';
|
||||||
|
|
||||||
export type {
|
export type {
|
||||||
@@ -25,6 +30,11 @@ export type {
|
|||||||
BulkEditApiFormModalProps
|
BulkEditApiFormModalProps
|
||||||
} from './types/Forms';
|
} from './types/Forms';
|
||||||
|
|
||||||
|
export type {
|
||||||
|
UseModalProps,
|
||||||
|
UseModalReturn
|
||||||
|
} from './types/Modals';
|
||||||
|
|
||||||
// Common utility functions
|
// Common utility functions
|
||||||
export { apiUrl } from './functions/Api';
|
export { apiUrl } from './functions/Api';
|
||||||
export {
|
export {
|
||||||
|
@@ -191,3 +191,11 @@ export interface ApiFormModalProps extends ApiFormProps {
|
|||||||
export interface BulkEditApiFormModalProps extends ApiFormModalProps {
|
export interface BulkEditApiFormModalProps extends ApiFormModalProps {
|
||||||
items: number[];
|
items: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type StockOperationProps = {
|
||||||
|
items?: any[];
|
||||||
|
pk?: number;
|
||||||
|
filters?: any;
|
||||||
|
model: ModelType.stockitem | 'location' | ModelType.part;
|
||||||
|
refresh: () => void;
|
||||||
|
};
|
||||||
|
@@ -5,7 +5,11 @@ import type { AxiosInstance } from 'axios';
|
|||||||
import type { NavigateFunction } from 'react-router-dom';
|
import type { NavigateFunction } from 'react-router-dom';
|
||||||
import type { ModelDict } from '../enums/ModelInformation';
|
import type { ModelDict } from '../enums/ModelInformation';
|
||||||
import type { ModelType } from '../enums/ModelType';
|
import type { ModelType } from '../enums/ModelType';
|
||||||
import type { ApiFormModalProps, BulkEditApiFormModalProps } from './Forms';
|
import type {
|
||||||
|
ApiFormModalProps,
|
||||||
|
BulkEditApiFormModalProps,
|
||||||
|
StockOperationProps
|
||||||
|
} from './Forms';
|
||||||
import type { UseModalReturn } from './Modals';
|
import type { UseModalReturn } from './Modals';
|
||||||
import type { RenderInstanceProps } from './Rendering';
|
import type { RenderInstanceProps } from './Rendering';
|
||||||
import type { SettingsStateProps } from './Settings';
|
import type { SettingsStateProps } from './Settings';
|
||||||
@@ -24,11 +28,24 @@ export interface PluginVersion {
|
|||||||
mantine: string;
|
mantine: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type StockAdjustmentFormsContext = {
|
||||||
|
addStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
assignStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
changeStatus: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
countStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
deleteStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
mergeStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
removeStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
transferStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
returnStock: (props: StockOperationProps) => UseModalReturn;
|
||||||
|
};
|
||||||
|
|
||||||
export type InvenTreeFormsContext = {
|
export type InvenTreeFormsContext = {
|
||||||
bulkEdit: (props: BulkEditApiFormModalProps) => UseModalReturn;
|
bulkEdit: (props: BulkEditApiFormModalProps) => UseModalReturn;
|
||||||
create: (props: ApiFormModalProps) => UseModalReturn;
|
create: (props: ApiFormModalProps) => UseModalReturn;
|
||||||
delete: (props: ApiFormModalProps) => UseModalReturn;
|
delete: (props: ApiFormModalProps) => UseModalReturn;
|
||||||
edit: (props: ApiFormModalProps) => UseModalReturn;
|
edit: (props: ApiFormModalProps) => UseModalReturn;
|
||||||
|
stockActions: StockAdjustmentFormsContext;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@inventreedb/ui",
|
"name": "@inventreedb/ui",
|
||||||
"description": "UI components for the InvenTree project",
|
"description": "UI components for the InvenTree project",
|
||||||
"version": "0.6.0",
|
"version": "0.7.0",
|
||||||
"private": false,
|
"private": false,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
@@ -18,6 +18,17 @@ import {
|
|||||||
type InvenTreePluginContext
|
type InvenTreePluginContext
|
||||||
} from '@lib/types/Plugins';
|
} from '@lib/types/Plugins';
|
||||||
import { i18n } from '@lingui/core';
|
import { i18n } from '@lingui/core';
|
||||||
|
import {
|
||||||
|
useAddStockItem,
|
||||||
|
useAssignStockItem,
|
||||||
|
useChangeStockStatus,
|
||||||
|
useCountStockItem,
|
||||||
|
useDeleteStockItem,
|
||||||
|
useMergeStockItem,
|
||||||
|
useRemoveStockItem,
|
||||||
|
useReturnStockItem,
|
||||||
|
useTransferStockItem
|
||||||
|
} from '../../forms/StockForms';
|
||||||
import {
|
import {
|
||||||
useBulkEditApiFormModal,
|
useBulkEditApiFormModal,
|
||||||
useCreateApiFormModal,
|
useCreateApiFormModal,
|
||||||
@@ -60,7 +71,18 @@ export const useInvenTreeContext = () => {
|
|||||||
bulkEdit: useBulkEditApiFormModal,
|
bulkEdit: useBulkEditApiFormModal,
|
||||||
create: useCreateApiFormModal,
|
create: useCreateApiFormModal,
|
||||||
delete: useDeleteApiFormModal,
|
delete: useDeleteApiFormModal,
|
||||||
edit: useEditApiFormModal
|
edit: useEditApiFormModal,
|
||||||
|
stockActions: {
|
||||||
|
addStock: useAddStockItem,
|
||||||
|
assignStock: useAssignStockItem,
|
||||||
|
changeStatus: useChangeStockStatus,
|
||||||
|
countStock: useCountStockItem,
|
||||||
|
deleteStock: useDeleteStockItem,
|
||||||
|
mergeStock: useMergeStockItem,
|
||||||
|
removeStock: useRemoveStockItem,
|
||||||
|
transferStock: useTransferStockItem,
|
||||||
|
returnStock: useReturnStockItem
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}, [
|
}, [
|
||||||
|
@@ -37,7 +37,8 @@ import type {
|
|||||||
ApiFormAdjustFilterType,
|
ApiFormAdjustFilterType,
|
||||||
ApiFormFieldChoice,
|
ApiFormFieldChoice,
|
||||||
ApiFormFieldSet,
|
ApiFormFieldSet,
|
||||||
ApiFormModalProps
|
ApiFormModalProps,
|
||||||
|
StockOperationProps
|
||||||
} from '@lib/types/Forms';
|
} from '@lib/types/Forms';
|
||||||
import {
|
import {
|
||||||
TableFieldExtraRow,
|
TableFieldExtraRow,
|
||||||
@@ -1172,14 +1173,6 @@ function useStockOperationModal({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export type StockOperationProps = {
|
|
||||||
items?: any[];
|
|
||||||
pk?: number;
|
|
||||||
filters?: any;
|
|
||||||
model: ModelType.stockitem | 'location' | ModelType.part;
|
|
||||||
refresh: () => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
export function useAddStockItem(props: StockOperationProps) {
|
export function useAddStockItem(props: StockOperationProps) {
|
||||||
return useStockOperationModal({
|
return useStockOperationModal({
|
||||||
...props,
|
...props,
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
import { UserRoles } from '@lib/index';
|
import { UserRoles } from '@lib/index';
|
||||||
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import type { UseModalReturn } from '@lib/types/Modals';
|
import type { UseModalReturn } from '@lib/types/Modals';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { type ReactNode, useMemo } from 'react';
|
import { type ReactNode, useMemo } from 'react';
|
||||||
import type { ActionDropdownItem } from '../components/items/ActionDropdown';
|
import type { ActionDropdownItem } from '../components/items/ActionDropdown';
|
||||||
import { ActionDropdown } from '../components/items/ActionDropdown';
|
import { ActionDropdown } from '../components/items/ActionDropdown';
|
||||||
import {
|
import {
|
||||||
type StockOperationProps,
|
|
||||||
useAddStockItem,
|
useAddStockItem,
|
||||||
useAssignStockItem,
|
useAssignStockItem,
|
||||||
useChangeStockStatus,
|
useChangeStockStatus,
|
||||||
@@ -54,8 +54,8 @@ export function useStockAdjustActions(
|
|||||||
// The available modals for stock adjustment actions
|
// The available modals for stock adjustment actions
|
||||||
const addStock = useAddStockItem(props.formProps);
|
const addStock = useAddStockItem(props.formProps);
|
||||||
const assignStock = useAssignStockItem(props.formProps);
|
const assignStock = useAssignStockItem(props.formProps);
|
||||||
const countStock = useCountStockItem(props.formProps);
|
|
||||||
const changeStatus = useChangeStockStatus(props.formProps);
|
const changeStatus = useChangeStockStatus(props.formProps);
|
||||||
|
const countStock = useCountStockItem(props.formProps);
|
||||||
const deleteStock = useDeleteStockItem(props.formProps);
|
const deleteStock = useDeleteStockItem(props.formProps);
|
||||||
const mergeStock = useMergeStockItem(props.formProps);
|
const mergeStock = useMergeStockItem(props.formProps);
|
||||||
const removeStock = useRemoveStockItem(props.formProps);
|
const removeStock = useRemoveStockItem(props.formProps);
|
||||||
|
@@ -47,7 +47,7 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
import { ActionButton } from '@lib/index';
|
import { ActionButton } from '@lib/index';
|
||||||
import type { ApiFormFieldSet } from '@lib/types/Forms';
|
import type { ApiFormFieldSet, StockOperationProps } from '@lib/types/Forms';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
import { PrintingActions } from '../../components/buttons/PrintingActions';
|
||||||
import StarredToggleButton from '../../components/buttons/StarredToggleButton';
|
import StarredToggleButton from '../../components/buttons/StarredToggleButton';
|
||||||
@@ -80,10 +80,7 @@ import OrderPartsWizard from '../../components/wizards/OrderPartsWizard';
|
|||||||
import { useApi } from '../../contexts/ApiContext';
|
import { useApi } from '../../contexts/ApiContext';
|
||||||
import { formatDecimal, formatPriceRange } from '../../defaults/formatters';
|
import { formatDecimal, formatPriceRange } from '../../defaults/formatters';
|
||||||
import { usePartFields } from '../../forms/PartForms';
|
import { usePartFields } from '../../forms/PartForms';
|
||||||
import {
|
import { useFindSerialNumberForm } from '../../forms/StockForms';
|
||||||
type StockOperationProps,
|
|
||||||
useFindSerialNumberForm
|
|
||||||
} from '../../forms/StockForms';
|
|
||||||
import {
|
import {
|
||||||
useApiFormModal,
|
useApiFormModal,
|
||||||
useCreateApiFormModal,
|
useCreateApiFormModal,
|
||||||
|
@@ -3,6 +3,7 @@ import { ModelType } from '@lib/enums/ModelType';
|
|||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import { t } from '@lingui/core/macro';
|
import { t } from '@lingui/core/macro';
|
||||||
import { Group, Skeleton, Stack, Text } from '@mantine/core';
|
import { Group, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { IconInfoCircle, IconPackages, IconSitemap } from '@tabler/icons-react';
|
import { IconInfoCircle, IconPackages, IconSitemap } from '@tabler/icons-react';
|
||||||
@@ -30,10 +31,7 @@ import { PageDetail } from '../../components/nav/PageDetail';
|
|||||||
import type { PanelType } from '../../components/panels/Panel';
|
import type { PanelType } from '../../components/panels/Panel';
|
||||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||||
import LocateItemButton from '../../components/plugins/LocateItemButton';
|
import LocateItemButton from '../../components/plugins/LocateItemButton';
|
||||||
import {
|
import { stockLocationFields } from '../../forms/StockForms';
|
||||||
type StockOperationProps,
|
|
||||||
stockLocationFields
|
|
||||||
} from '../../forms/StockForms';
|
|
||||||
import { InvenTreeIcon } from '../../functions/icons';
|
import { InvenTreeIcon } from '../../functions/icons';
|
||||||
import {
|
import {
|
||||||
useDeleteApiFormModal,
|
useDeleteApiFormModal,
|
||||||
|
@@ -33,6 +33,7 @@ import { ModelType } from '@lib/enums/ModelType';
|
|||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import { notifications } from '@mantine/notifications';
|
import { notifications } from '@mantine/notifications';
|
||||||
import { useBarcodeScanDialog } from '../../components/barcodes/BarcodeScanDialog';
|
import { useBarcodeScanDialog } from '../../components/barcodes/BarcodeScanDialog';
|
||||||
import AdminButton from '../../components/buttons/AdminButton';
|
import AdminButton from '../../components/buttons/AdminButton';
|
||||||
@@ -66,7 +67,6 @@ import OrderPartsWizard from '../../components/wizards/OrderPartsWizard';
|
|||||||
import { useApi } from '../../contexts/ApiContext';
|
import { useApi } from '../../contexts/ApiContext';
|
||||||
import { formatCurrency, formatDecimal } from '../../defaults/formatters';
|
import { formatCurrency, formatDecimal } from '../../defaults/formatters';
|
||||||
import {
|
import {
|
||||||
type StockOperationProps,
|
|
||||||
useFindSerialNumberForm,
|
useFindSerialNumberForm,
|
||||||
useStockFields,
|
useStockFields,
|
||||||
useStockItemSerializeFields
|
useStockItemSerializeFields
|
||||||
|
@@ -12,10 +12,10 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { ActionButton } from '@lib/index';
|
import { ActionButton } from '@lib/index';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { IconCircleDashedCheck } from '@tabler/icons-react';
|
import { IconCircleDashedCheck } from '@tabler/icons-react';
|
||||||
import { useConsumeBuildItemsForm } from '../../forms/BuildForms';
|
import { useConsumeBuildItemsForm } from '../../forms/BuildForms';
|
||||||
import type { StockOperationProps } from '../../forms/StockForms';
|
|
||||||
import {
|
import {
|
||||||
useDeleteApiFormModal,
|
useDeleteApiFormModal,
|
||||||
useEditApiFormModal
|
useEditApiFormModal
|
||||||
|
@@ -33,6 +33,7 @@ import { ModelType } from '@lib/enums/ModelType';
|
|||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { StylishText } from '../../components/items/StylishText';
|
import { StylishText } from '../../components/items/StylishText';
|
||||||
import { useApi } from '../../contexts/ApiContext';
|
import { useApi } from '../../contexts/ApiContext';
|
||||||
@@ -43,7 +44,6 @@ import {
|
|||||||
useScrapBuildOutputsForm
|
useScrapBuildOutputsForm
|
||||||
} from '../../forms/BuildForms';
|
} from '../../forms/BuildForms';
|
||||||
import {
|
import {
|
||||||
type StockOperationProps,
|
|
||||||
useStockFields,
|
useStockFields,
|
||||||
useStockItemSerializeFields
|
useStockItemSerializeFields
|
||||||
} from '../../forms/StockForms';
|
} from '../../forms/StockForms';
|
||||||
|
@@ -12,11 +12,11 @@ import { ModelType } from '@lib/enums/ModelType';
|
|||||||
import { UserRoles } from '@lib/enums/Roles';
|
import { UserRoles } from '@lib/enums/Roles';
|
||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import { IconTruckDelivery } from '@tabler/icons-react';
|
import { IconTruckDelivery } from '@tabler/icons-react';
|
||||||
import { formatDate } from '../../defaults/formatters';
|
import { formatDate } from '../../defaults/formatters';
|
||||||
import { useSalesOrderAllocationFields } from '../../forms/SalesOrderForms';
|
import { useSalesOrderAllocationFields } from '../../forms/SalesOrderForms';
|
||||||
import type { StockOperationProps } from '../../forms/StockForms';
|
|
||||||
import {
|
import {
|
||||||
useBulkEditApiFormModal,
|
useBulkEditApiFormModal,
|
||||||
useDeleteApiFormModal,
|
useDeleteApiFormModal,
|
||||||
|
@@ -11,6 +11,7 @@ import { UserRoles } from '@lib/enums/Roles';
|
|||||||
import { apiUrl } from '@lib/functions/Api';
|
import { apiUrl } from '@lib/functions/Api';
|
||||||
import { getDetailUrl } from '@lib/functions/Navigation';
|
import { getDetailUrl } from '@lib/functions/Navigation';
|
||||||
import type { TableFilter } from '@lib/types/Filters';
|
import type { TableFilter } from '@lib/types/Filters';
|
||||||
|
import type { StockOperationProps } from '@lib/types/Forms';
|
||||||
import type { TableColumn } from '@lib/types/Tables';
|
import type { TableColumn } from '@lib/types/Tables';
|
||||||
import OrderPartsWizard from '../../components/wizards/OrderPartsWizard';
|
import OrderPartsWizard from '../../components/wizards/OrderPartsWizard';
|
||||||
import {
|
import {
|
||||||
@@ -18,10 +19,7 @@ import {
|
|||||||
formatDecimal,
|
formatDecimal,
|
||||||
formatPriceRange
|
formatPriceRange
|
||||||
} from '../../defaults/formatters';
|
} from '../../defaults/formatters';
|
||||||
import {
|
import { useStockFields } from '../../forms/StockForms';
|
||||||
type StockOperationProps,
|
|
||||||
useStockFields
|
|
||||||
} from '../../forms/StockForms';
|
|
||||||
import { InvenTreeIcon } from '../../functions/icons';
|
import { InvenTreeIcon } from '../../functions/icons';
|
||||||
import { useCreateApiFormModal } from '../../hooks/UseForm';
|
import { useCreateApiFormModal } from '../../hooks/UseForm';
|
||||||
import { useStockAdjustActions } from '../../hooks/UseStockAdjustActions';
|
import { useStockAdjustActions } from '../../hooks/UseStockAdjustActions';
|
||||||
|
Reference in New Issue
Block a user