mirror of
https://github.com/inventree/InvenTree.git
synced 2026-07-05 06:32:55 +00:00
Project code active (#12250)
* Add 'active' field to the ProjectCode model - Allows retiring of old project codes without deleting * Update UI table * Refactor ProjectCodeField * Add unit test * Bump API version and CHANGELOG
This commit is contained in:
@@ -5,7 +5,6 @@ import {
|
||||
IconCircleCheck,
|
||||
IconInfoCircle,
|
||||
IconLink,
|
||||
IconList,
|
||||
IconSitemap,
|
||||
IconTruckDelivery,
|
||||
IconUsersGroup
|
||||
@@ -36,7 +35,7 @@ import {
|
||||
} from '../hooks/UseGenerator';
|
||||
import { useGlobalSettingsState } from '../states/SettingsStates';
|
||||
import { RenderPartColumn } from '../tables/ColumnRenderers';
|
||||
import { TagsField } from './CommonFields';
|
||||
import { ProjectCodeField, TagsField } from './CommonFields';
|
||||
|
||||
/**
|
||||
* Field set for BuildOrder forms
|
||||
@@ -93,9 +92,7 @@ export function useBuildOrderFields({
|
||||
},
|
||||
title: {},
|
||||
quantity: {},
|
||||
project_code: {
|
||||
icon: <IconList />
|
||||
},
|
||||
project_code: ProjectCodeField(),
|
||||
priority: {},
|
||||
parent: {
|
||||
icon: <IconSitemap />,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { ApiFormFieldType } from '@lib/types/Forms';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { IconList } from '@tabler/icons-react';
|
||||
|
||||
export function TagsField({
|
||||
label,
|
||||
@@ -17,3 +18,14 @@ export function TagsField({
|
||||
placeholder: placeholder ?? t`Select tags`
|
||||
};
|
||||
}
|
||||
|
||||
export function ProjectCodeField(): ApiFormFieldType {
|
||||
return {
|
||||
filters: {
|
||||
active: true
|
||||
},
|
||||
label: t`Project Code`,
|
||||
description: t`Select project code for this item`,
|
||||
icon: <IconList />
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||
import { ModelType } from '@lib/enums/ModelType';
|
||||
import { apiUrl } from '@lib/functions/Api';
|
||||
import type { ApiFormFieldSet, ApiFormFieldType } from '@lib/types/Forms';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import type {
|
||||
StatusCodeInterface,
|
||||
StatusCodeListInterface
|
||||
@@ -13,6 +12,7 @@ import type {
|
||||
import { useApi } from '../contexts/ApiContext';
|
||||
import { useGlobalStatusState } from '../states/GlobalStatusState';
|
||||
import { useUserState } from '../states/UserState';
|
||||
import { ProjectCodeField } from './CommonFields';
|
||||
|
||||
export function projectCodeFields(): ApiFormFieldSet {
|
||||
return {
|
||||
@@ -20,7 +20,8 @@ export function projectCodeFields(): ApiFormFieldSet {
|
||||
description: {},
|
||||
responsible: {
|
||||
icon: <IconUsers />
|
||||
}
|
||||
},
|
||||
active: {}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -90,9 +91,7 @@ export function extraLineItemFields(): ApiFormFieldSet {
|
||||
quantity: {},
|
||||
price: {},
|
||||
price_currency: {},
|
||||
project_code: {
|
||||
description: t`Select project code for this line item`
|
||||
},
|
||||
project_code: ProjectCodeField(),
|
||||
notes: {},
|
||||
link: {}
|
||||
};
|
||||
|
||||
@@ -20,7 +20,6 @@ import {
|
||||
IconHash,
|
||||
IconInfoCircle,
|
||||
IconLink,
|
||||
IconList,
|
||||
IconNotes,
|
||||
IconSitemap,
|
||||
IconUser,
|
||||
@@ -57,7 +56,7 @@ import {
|
||||
useSerialNumberGenerator
|
||||
} from '../hooks/UseGenerator';
|
||||
import { useGlobalSettingsState } from '../states/SettingsStates';
|
||||
import { TagsField } from './CommonFields';
|
||||
import { ProjectCodeField, TagsField } from './CommonFields';
|
||||
/*
|
||||
* Construct a set of fields for creating / editing a PurchaseOrderLineItem instance
|
||||
*/
|
||||
@@ -191,9 +190,7 @@ export function usePurchaseOrderLineItemFields({
|
||||
value: autoPricing,
|
||||
onValueChange: setAutoPricing
|
||||
},
|
||||
project_code: {
|
||||
description: t`Select project code for this line item`
|
||||
},
|
||||
project_code: ProjectCodeField(),
|
||||
target_date: {
|
||||
icon: <IconCalendar />
|
||||
},
|
||||
@@ -271,9 +268,7 @@ export function usePurchaseOrderFields({
|
||||
}
|
||||
},
|
||||
supplier_reference: {},
|
||||
project_code: {
|
||||
icon: <IconList />
|
||||
},
|
||||
project_code: ProjectCodeField(),
|
||||
order_currency: {
|
||||
icon: <IconCoins />
|
||||
},
|
||||
|
||||
@@ -23,7 +23,7 @@ import { Thumbnail } from '../components/images/Thumbnail';
|
||||
import { useCreateApiFormModal } from '../hooks/UseForm';
|
||||
import { useGlobalSettingsState } from '../states/SettingsStates';
|
||||
import { StatusFilterOptions } from '../tables/Filter';
|
||||
import { TagsField } from './CommonFields';
|
||||
import { ProjectCodeField, TagsField } from './CommonFields';
|
||||
|
||||
export function useReturnOrderFields({
|
||||
duplicateOrderId
|
||||
@@ -44,7 +44,7 @@ export function useReturnOrderFields({
|
||||
}
|
||||
},
|
||||
customer_reference: {},
|
||||
project_code: {},
|
||||
project_code: ProjectCodeField(),
|
||||
order_currency: {},
|
||||
start_date: {
|
||||
icon: <IconCalendar />
|
||||
@@ -138,9 +138,7 @@ export function useReturnOrderLineItemFields({
|
||||
},
|
||||
price: {},
|
||||
price_currency: {},
|
||||
project_code: {
|
||||
description: t`Select project code for this line item`
|
||||
},
|
||||
project_code: ProjectCodeField(),
|
||||
target_date: {},
|
||||
notes: {},
|
||||
link: {}
|
||||
|
||||
@@ -31,7 +31,7 @@ import { useCreateApiFormModal, useEditApiFormModal } from '../hooks/UseForm';
|
||||
import { useGlobalSettingsState } from '../states/SettingsStates';
|
||||
import { useUserState } from '../states/UserState';
|
||||
import { RenderPartColumn } from '../tables/ColumnRenderers';
|
||||
import { TagsField } from './CommonFields';
|
||||
import { ProjectCodeField, TagsField } from './CommonFields';
|
||||
|
||||
export function useSalesOrderFields({
|
||||
duplicateOrderId
|
||||
@@ -57,7 +57,7 @@ export function useSalesOrderFields({
|
||||
}
|
||||
},
|
||||
customer_reference: {},
|
||||
project_code: {},
|
||||
project_code: ProjectCodeField(),
|
||||
order_currency: {},
|
||||
start_date: {
|
||||
icon: <IconCalendar />
|
||||
@@ -194,9 +194,7 @@ export function useSalesOrderLineItemFields({
|
||||
value: partCurrency,
|
||||
onValueChange: setPartCurrency
|
||||
},
|
||||
project_code: {
|
||||
description: t`Select project code for this line item`
|
||||
},
|
||||
project_code: ProjectCodeField(),
|
||||
target_date: {},
|
||||
notes: {},
|
||||
link: {}
|
||||
|
||||
@@ -10,7 +10,7 @@ import type { TableFieldRowProps } from '../components/forms/fields/TableField';
|
||||
import { useCreateApiFormModal } from '../hooks/UseForm';
|
||||
import { useGlobalSettingsState } from '../states/SettingsStates';
|
||||
import { RenderPartColumn } from '../tables/ColumnRenderers';
|
||||
import { TagsField } from './CommonFields';
|
||||
import { ProjectCodeField, TagsField } from './CommonFields';
|
||||
|
||||
export function useTransferOrderFields({
|
||||
duplicateOrderId
|
||||
@@ -23,7 +23,7 @@ export function useTransferOrderFields({
|
||||
const fields: ApiFormFieldSet = {
|
||||
reference: {},
|
||||
description: {},
|
||||
project_code: {},
|
||||
project_code: ProjectCodeField(),
|
||||
start_date: {
|
||||
icon: <IconCalendar />
|
||||
},
|
||||
@@ -91,9 +91,7 @@ export function useTransferOrderLineItemFields({
|
||||
},
|
||||
reference: {},
|
||||
quantity: {},
|
||||
project_code: {
|
||||
description: t`Select project code for this line item`
|
||||
},
|
||||
project_code: ProjectCodeField(),
|
||||
target_date: {},
|
||||
notes: {},
|
||||
link: {}
|
||||
|
||||
@@ -11,6 +11,7 @@ import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||
import { UserRoles } from '@lib/enums/Roles';
|
||||
import { apiUrl } from '@lib/functions/Api';
|
||||
import useTable from '@lib/hooks/UseTable';
|
||||
import type { TableFilter } from '@lib/index';
|
||||
import type { TableColumn } from '@lib/types/Tables';
|
||||
import { projectCodeFields } from '../../forms/CommonForms';
|
||||
import {
|
||||
@@ -19,7 +20,11 @@ import {
|
||||
useEditApiFormModal
|
||||
} from '../../hooks/UseForm';
|
||||
import { useUserState } from '../../states/UserState';
|
||||
import { DescriptionColumn, ResponsibleColumn } from '../ColumnRenderers';
|
||||
import {
|
||||
BooleanColumn,
|
||||
DescriptionColumn,
|
||||
ResponsibleColumn
|
||||
} from '../ColumnRenderers';
|
||||
import { InvenTreeTable } from '../InvenTreeTable';
|
||||
|
||||
/**
|
||||
@@ -37,6 +42,9 @@ export default function ProjectCodeTable() {
|
||||
sortable: true
|
||||
},
|
||||
DescriptionColumn({}),
|
||||
BooleanColumn({
|
||||
accessor: 'active'
|
||||
}),
|
||||
ResponsibleColumn({})
|
||||
];
|
||||
}, []);
|
||||
@@ -89,6 +97,17 @@ export default function ProjectCodeTable() {
|
||||
[user]
|
||||
);
|
||||
|
||||
const tableFilters: TableFilter[] = useMemo(() => {
|
||||
return [
|
||||
{
|
||||
name: 'active',
|
||||
label: t`Active`,
|
||||
description: t`Show active items`,
|
||||
type: 'boolean'
|
||||
}
|
||||
];
|
||||
}, []);
|
||||
|
||||
const tableActions = useMemo(() => {
|
||||
return [
|
||||
<AddItemButton
|
||||
@@ -111,6 +130,7 @@ export default function ProjectCodeTable() {
|
||||
props={{
|
||||
rowActions: rowActions,
|
||||
tableActions: tableActions,
|
||||
tableFilters: tableFilters,
|
||||
enableDownload: true
|
||||
}}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user