mirror of
https://github.com/inventree/InvenTree.git
synced 2025-12-16 17:28:11 +00:00
Add UI support for parameters against orders
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import type { ModelType } from '@lib/enums/ModelType';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { Skeleton } from '@mantine/core';
|
||||
import { IconList } from '@tabler/icons-react';
|
||||
import { IconListDetails } from '@tabler/icons-react';
|
||||
import { ParameterTable } from '../../tables/general/ParameterTable';
|
||||
import type { PanelType } from './Panel';
|
||||
|
||||
@@ -15,7 +15,7 @@ export default function ParametersPanel({
|
||||
return {
|
||||
name: 'parameters',
|
||||
label: t`Parameters`,
|
||||
icon: <IconList />,
|
||||
icon: <IconListDetails />,
|
||||
content:
|
||||
model_type && model_id ? (
|
||||
<ParameterTable modelType={model_type} modelId={model_id} />
|
||||
|
||||
@@ -32,6 +32,7 @@ import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||
import NotesPanel from '../../components/panels/NotesPanel';
|
||||
import type { PanelType } from '../../components/panels/Panel';
|
||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
||||
import { formatCurrency } from '../../defaults/formatters';
|
||||
import { usePurchaseOrderFields } from '../../forms/PurchaseOrderForms';
|
||||
@@ -389,6 +390,10 @@ export default function PurchaseOrderDetail() {
|
||||
/>
|
||||
)
|
||||
},
|
||||
ParametersPanel({
|
||||
model_type: ModelType.purchaseorder,
|
||||
model_id: order.pk
|
||||
}),
|
||||
AttachmentPanel({
|
||||
model_type: ModelType.purchaseorder,
|
||||
model_id: order.pk
|
||||
|
||||
@@ -25,6 +25,7 @@ import { CompanyTable } from '../../tables/company/CompanyTable';
|
||||
import ParametricCompanyTable from '../../tables/company/ParametricCompanyTable';
|
||||
import ManufacturerPartParametricTable from '../../tables/purchasing/ManufacturerPartParametricTable';
|
||||
import { ManufacturerPartTable } from '../../tables/purchasing/ManufacturerPartTable';
|
||||
import PurchaseOrderParametricTable from '../../tables/purchasing/PurchaseOrderParametricTable';
|
||||
import { PurchaseOrderTable } from '../../tables/purchasing/PurchaseOrderTable';
|
||||
import SupplierPartParametricTable from '../../tables/purchasing/SupplierPartParametricTable';
|
||||
import { SupplierPartTable } from '../../tables/purchasing/SupplierPartTable';
|
||||
@@ -85,6 +86,12 @@ export default function PurchasingIndex() {
|
||||
params={{ outstanding: true }}
|
||||
/>
|
||||
)
|
||||
},
|
||||
{
|
||||
value: 'parametric',
|
||||
label: t`Parametric View`,
|
||||
icon: <IconListDetails />,
|
||||
content: <PurchaseOrderParametricTable />
|
||||
}
|
||||
]
|
||||
}),
|
||||
|
||||
@@ -32,6 +32,7 @@ import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||
import NotesPanel from '../../components/panels/NotesPanel';
|
||||
import type { PanelType } from '../../components/panels/Panel';
|
||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||
import { RenderAddress } from '../../components/render/Company';
|
||||
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
||||
import { formatCurrency } from '../../defaults/formatters';
|
||||
@@ -354,6 +355,10 @@ export default function ReturnOrderDetail() {
|
||||
</Accordion>
|
||||
)
|
||||
},
|
||||
ParametersPanel({
|
||||
model_type: ModelType.returnorder,
|
||||
model_id: order.pk
|
||||
}),
|
||||
AttachmentPanel({
|
||||
model_type: ModelType.returnorder,
|
||||
model_id: order.pk
|
||||
|
||||
@@ -22,7 +22,9 @@ import SegmentedControlPanel from '../../components/panels/SegmentedControlPanel
|
||||
import { useUserState } from '../../states/UserState';
|
||||
import { CompanyTable } from '../../tables/company/CompanyTable';
|
||||
import ParametricCompanyTable from '../../tables/company/ParametricCompanyTable';
|
||||
import ReturnOrderParametricTable from '../../tables/sales/ReturnOrderParametricTable';
|
||||
import { ReturnOrderTable } from '../../tables/sales/ReturnOrderTable';
|
||||
import SalesOrderParametricTable from '../../tables/sales/SalesOrderParametricTable';
|
||||
import SalesOrderShipmentTable from '../../tables/sales/SalesOrderShipmentTable';
|
||||
import { SalesOrderTable } from '../../tables/sales/SalesOrderTable';
|
||||
|
||||
@@ -71,6 +73,12 @@ export default function SalesIndex() {
|
||||
params={{ outstanding: true }}
|
||||
/>
|
||||
)
|
||||
},
|
||||
{
|
||||
value: 'parametric',
|
||||
label: t`Parametric View`,
|
||||
icon: <IconListDetails />,
|
||||
content: <SalesOrderParametricTable />
|
||||
}
|
||||
]
|
||||
}),
|
||||
@@ -111,6 +119,12 @@ export default function SalesIndex() {
|
||||
params={{ outstanding: true }}
|
||||
/>
|
||||
)
|
||||
},
|
||||
{
|
||||
value: 'parametric',
|
||||
label: t`Parametric View`,
|
||||
icon: <IconListDetails />,
|
||||
content: <ReturnOrderParametricTable />
|
||||
}
|
||||
]
|
||||
}),
|
||||
|
||||
@@ -38,6 +38,7 @@ import AttachmentPanel from '../../components/panels/AttachmentPanel';
|
||||
import NotesPanel from '../../components/panels/NotesPanel';
|
||||
import type { PanelType } from '../../components/panels/Panel';
|
||||
import { PanelGroup } from '../../components/panels/PanelGroup';
|
||||
import ParametersPanel from '../../components/panels/ParametersPanel';
|
||||
import { RenderAddress } from '../../components/render/Company';
|
||||
import { StatusRenderer } from '../../components/render/StatusRenderer';
|
||||
import { formatCurrency } from '../../defaults/formatters';
|
||||
@@ -427,6 +428,10 @@ export default function SalesOrderDetail() {
|
||||
<Skeleton />
|
||||
)
|
||||
},
|
||||
ParametersPanel({
|
||||
model_type: ModelType.salesorder,
|
||||
model_id: order.pk
|
||||
}),
|
||||
AttachmentPanel({
|
||||
model_type: ModelType.salesorder,
|
||||
model_id: order.pk
|
||||
|
||||
@@ -3,7 +3,6 @@ import {
|
||||
ApiEndpoints,
|
||||
type ApiFormFieldSet,
|
||||
type ModelType,
|
||||
RowViewAction,
|
||||
UserRoles,
|
||||
YesNoButton,
|
||||
apiUrl,
|
||||
@@ -399,14 +398,7 @@ export default function ParametricDataTable({
|
||||
setSelectedTemplate(null);
|
||||
addParameter.open();
|
||||
}
|
||||
},
|
||||
RowViewAction({
|
||||
title: t`View`,
|
||||
modelType: modelType,
|
||||
modelId: record.pk,
|
||||
hidden: !user.hasViewPermission(modelType),
|
||||
navigate: navigate
|
||||
})
|
||||
}
|
||||
];
|
||||
},
|
||||
[modelType, user]
|
||||
@@ -429,6 +421,7 @@ export default function ParametricDataTable({
|
||||
parameters: true,
|
||||
...parametricQueryFilters
|
||||
},
|
||||
modelType: modelType,
|
||||
onCellClick: ({ event, record, index, column, columnIndex }) => {
|
||||
cancelEvent(event);
|
||||
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||
import { ModelType } from '@lib/enums/ModelType';
|
||||
import type { TableFilter } from '@lib/types/Filters';
|
||||
import type { TableColumn } from '@lib/types/Tables';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { type ReactNode, useMemo } from 'react';
|
||||
import { CompanyColumn, ReferenceColumn } from '../ColumnRenderers';
|
||||
import {
|
||||
AssignedToMeFilter,
|
||||
OrderStatusFilter,
|
||||
OutstandingFilter,
|
||||
OverdueFilter,
|
||||
ProjectCodeFilter,
|
||||
ResponsibleFilter
|
||||
} from '../Filter';
|
||||
import ParametricDataTable from '../general/ParametricDataTable';
|
||||
|
||||
export default function PurchaseOrderParametricTable({
|
||||
queryParams
|
||||
}: {
|
||||
queryParams?: Record<string, any>;
|
||||
}): ReactNode {
|
||||
const customColumns: TableColumn[] = useMemo(() => {
|
||||
return [
|
||||
ReferenceColumn({}),
|
||||
{
|
||||
accessor: 'supplier__name',
|
||||
title: t`Supplier`,
|
||||
sortable: true,
|
||||
render: (record: any) => (
|
||||
<CompanyColumn company={record.supplier_detail} />
|
||||
)
|
||||
}
|
||||
];
|
||||
}, []);
|
||||
|
||||
const customFilters: TableFilter[] = useMemo(() => {
|
||||
return [
|
||||
OrderStatusFilter({ model: ModelType.purchaseorder }),
|
||||
OutstandingFilter(),
|
||||
OverdueFilter(),
|
||||
AssignedToMeFilter(),
|
||||
ProjectCodeFilter(),
|
||||
ResponsibleFilter()
|
||||
];
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ParametricDataTable
|
||||
modelType={ModelType.purchaseorder}
|
||||
endpoint={ApiEndpoints.purchase_order_list}
|
||||
customColumns={customColumns}
|
||||
customFilters={customFilters}
|
||||
queryParams={{
|
||||
...queryParams,
|
||||
supplier_detail: true
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
60
src/frontend/src/tables/sales/ReturnOrderParametricTable.tsx
Normal file
60
src/frontend/src/tables/sales/ReturnOrderParametricTable.tsx
Normal file
@@ -0,0 +1,60 @@
|
||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||
import { ModelType } from '@lib/enums/ModelType';
|
||||
import type { TableFilter } from '@lib/types/Filters';
|
||||
import type { TableColumn } from '@lib/types/Tables';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { type ReactNode, useMemo } from 'react';
|
||||
import { CompanyColumn, ReferenceColumn } from '../ColumnRenderers';
|
||||
import {
|
||||
AssignedToMeFilter,
|
||||
OrderStatusFilter,
|
||||
OutstandingFilter,
|
||||
OverdueFilter,
|
||||
ProjectCodeFilter,
|
||||
ResponsibleFilter
|
||||
} from '../Filter';
|
||||
import ParametricDataTable from '../general/ParametricDataTable';
|
||||
|
||||
export default function ReturnOrderParametricTable({
|
||||
queryParams
|
||||
}: {
|
||||
queryParams?: Record<string, any>;
|
||||
}): ReactNode {
|
||||
const customColumns: TableColumn[] = useMemo(() => {
|
||||
return [
|
||||
ReferenceColumn({}),
|
||||
{
|
||||
accessor: 'customer__name',
|
||||
title: t`Customer`,
|
||||
sortable: true,
|
||||
render: (record: any) => (
|
||||
<CompanyColumn company={record.customer_detail} />
|
||||
)
|
||||
}
|
||||
];
|
||||
}, []);
|
||||
|
||||
const customFilters: TableFilter[] = useMemo(() => {
|
||||
return [
|
||||
OrderStatusFilter({ model: ModelType.returnorder }),
|
||||
OutstandingFilter(),
|
||||
OverdueFilter(),
|
||||
AssignedToMeFilter(),
|
||||
ProjectCodeFilter(),
|
||||
ResponsibleFilter()
|
||||
];
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ParametricDataTable
|
||||
modelType={ModelType.returnorder}
|
||||
endpoint={ApiEndpoints.return_order_list}
|
||||
customColumns={customColumns}
|
||||
customFilters={customFilters}
|
||||
queryParams={{
|
||||
...queryParams,
|
||||
customer_detail: true
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
60
src/frontend/src/tables/sales/SalesOrderParametricTable.tsx
Normal file
60
src/frontend/src/tables/sales/SalesOrderParametricTable.tsx
Normal file
@@ -0,0 +1,60 @@
|
||||
import { ApiEndpoints } from '@lib/enums/ApiEndpoints';
|
||||
import { ModelType } from '@lib/enums/ModelType';
|
||||
import type { TableFilter } from '@lib/types/Filters';
|
||||
import type { TableColumn } from '@lib/types/Tables';
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { type ReactNode, useMemo } from 'react';
|
||||
import { CompanyColumn, ReferenceColumn } from '../ColumnRenderers';
|
||||
import {
|
||||
AssignedToMeFilter,
|
||||
OrderStatusFilter,
|
||||
OutstandingFilter,
|
||||
OverdueFilter,
|
||||
ProjectCodeFilter,
|
||||
ResponsibleFilter
|
||||
} from '../Filter';
|
||||
import ParametricDataTable from '../general/ParametricDataTable';
|
||||
|
||||
export default function SalesOrderParametricTable({
|
||||
queryParams
|
||||
}: {
|
||||
queryParams?: Record<string, any>;
|
||||
}): ReactNode {
|
||||
const customColumns: TableColumn[] = useMemo(() => {
|
||||
return [
|
||||
ReferenceColumn({}),
|
||||
{
|
||||
accessor: 'customer__name',
|
||||
title: t`Customer`,
|
||||
sortable: true,
|
||||
render: (record: any) => (
|
||||
<CompanyColumn company={record.customer_detail} />
|
||||
)
|
||||
}
|
||||
];
|
||||
}, []);
|
||||
|
||||
const customFilters: TableFilter[] = useMemo(() => {
|
||||
return [
|
||||
OrderStatusFilter({ model: ModelType.salesorder }),
|
||||
OutstandingFilter(),
|
||||
OverdueFilter(),
|
||||
AssignedToMeFilter(),
|
||||
ProjectCodeFilter(),
|
||||
ResponsibleFilter()
|
||||
];
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ParametricDataTable
|
||||
modelType={ModelType.salesorder}
|
||||
endpoint={ApiEndpoints.sales_order_list}
|
||||
customColumns={customColumns}
|
||||
customFilters={customFilters}
|
||||
queryParams={{
|
||||
...queryParams,
|
||||
customer_detail: true
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user