diff --git a/src/frontend/src/components/panels/ParametersPanel.tsx b/src/frontend/src/components/panels/ParametersPanel.tsx
index 5cc5782c84..14a0afa593 100644
--- a/src/frontend/src/components/panels/ParametersPanel.tsx
+++ b/src/frontend/src/components/panels/ParametersPanel.tsx
@@ -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: ,
+ icon: ,
content:
model_type && model_id ? (
diff --git a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx
index 87e1c4cbba..0d0a2fc754 100644
--- a/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx
+++ b/src/frontend/src/pages/purchasing/PurchaseOrderDetail.tsx
@@ -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
diff --git a/src/frontend/src/pages/purchasing/PurchasingIndex.tsx b/src/frontend/src/pages/purchasing/PurchasingIndex.tsx
index c4303ceeb4..706c7e737d 100644
--- a/src/frontend/src/pages/purchasing/PurchasingIndex.tsx
+++ b/src/frontend/src/pages/purchasing/PurchasingIndex.tsx
@@ -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: ,
+ content:
}
]
}),
diff --git a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx
index 2c644c4be1..5bce7c6306 100644
--- a/src/frontend/src/pages/sales/ReturnOrderDetail.tsx
+++ b/src/frontend/src/pages/sales/ReturnOrderDetail.tsx
@@ -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() {
)
},
+ ParametersPanel({
+ model_type: ModelType.returnorder,
+ model_id: order.pk
+ }),
AttachmentPanel({
model_type: ModelType.returnorder,
model_id: order.pk
diff --git a/src/frontend/src/pages/sales/SalesIndex.tsx b/src/frontend/src/pages/sales/SalesIndex.tsx
index 983b06d88e..0fe4b8a31c 100644
--- a/src/frontend/src/pages/sales/SalesIndex.tsx
+++ b/src/frontend/src/pages/sales/SalesIndex.tsx
@@ -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: ,
+ content:
}
]
}),
@@ -111,6 +119,12 @@ export default function SalesIndex() {
params={{ outstanding: true }}
/>
)
+ },
+ {
+ value: 'parametric',
+ label: t`Parametric View`,
+ icon: ,
+ content:
}
]
}),
diff --git a/src/frontend/src/pages/sales/SalesOrderDetail.tsx b/src/frontend/src/pages/sales/SalesOrderDetail.tsx
index bd3178fb3d..15bc26cdda 100644
--- a/src/frontend/src/pages/sales/SalesOrderDetail.tsx
+++ b/src/frontend/src/pages/sales/SalesOrderDetail.tsx
@@ -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() {
)
},
+ ParametersPanel({
+ model_type: ModelType.salesorder,
+ model_id: order.pk
+ }),
AttachmentPanel({
model_type: ModelType.salesorder,
model_id: order.pk
diff --git a/src/frontend/src/tables/general/ParametricDataTable.tsx b/src/frontend/src/tables/general/ParametricDataTable.tsx
index 22339aa613..279f68e90b 100644
--- a/src/frontend/src/tables/general/ParametricDataTable.tsx
+++ b/src/frontend/src/tables/general/ParametricDataTable.tsx
@@ -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);
diff --git a/src/frontend/src/tables/purchasing/PurchaseOrderParametricTable.tsx b/src/frontend/src/tables/purchasing/PurchaseOrderParametricTable.tsx
new file mode 100644
index 0000000000..0beaef6072
--- /dev/null
+++ b/src/frontend/src/tables/purchasing/PurchaseOrderParametricTable.tsx
@@ -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;
+}): ReactNode {
+ const customColumns: TableColumn[] = useMemo(() => {
+ return [
+ ReferenceColumn({}),
+ {
+ accessor: 'supplier__name',
+ title: t`Supplier`,
+ sortable: true,
+ render: (record: any) => (
+
+ )
+ }
+ ];
+ }, []);
+
+ const customFilters: TableFilter[] = useMemo(() => {
+ return [
+ OrderStatusFilter({ model: ModelType.purchaseorder }),
+ OutstandingFilter(),
+ OverdueFilter(),
+ AssignedToMeFilter(),
+ ProjectCodeFilter(),
+ ResponsibleFilter()
+ ];
+ }, []);
+
+ return (
+
+ );
+}
diff --git a/src/frontend/src/tables/sales/ReturnOrderParametricTable.tsx b/src/frontend/src/tables/sales/ReturnOrderParametricTable.tsx
new file mode 100644
index 0000000000..eef91d201e
--- /dev/null
+++ b/src/frontend/src/tables/sales/ReturnOrderParametricTable.tsx
@@ -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;
+}): ReactNode {
+ const customColumns: TableColumn[] = useMemo(() => {
+ return [
+ ReferenceColumn({}),
+ {
+ accessor: 'customer__name',
+ title: t`Customer`,
+ sortable: true,
+ render: (record: any) => (
+
+ )
+ }
+ ];
+ }, []);
+
+ const customFilters: TableFilter[] = useMemo(() => {
+ return [
+ OrderStatusFilter({ model: ModelType.returnorder }),
+ OutstandingFilter(),
+ OverdueFilter(),
+ AssignedToMeFilter(),
+ ProjectCodeFilter(),
+ ResponsibleFilter()
+ ];
+ }, []);
+
+ return (
+
+ );
+}
diff --git a/src/frontend/src/tables/sales/SalesOrderParametricTable.tsx b/src/frontend/src/tables/sales/SalesOrderParametricTable.tsx
new file mode 100644
index 0000000000..fce8aadc28
--- /dev/null
+++ b/src/frontend/src/tables/sales/SalesOrderParametricTable.tsx
@@ -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;
+}): ReactNode {
+ const customColumns: TableColumn[] = useMemo(() => {
+ return [
+ ReferenceColumn({}),
+ {
+ accessor: 'customer__name',
+ title: t`Customer`,
+ sortable: true,
+ render: (record: any) => (
+
+ )
+ }
+ ];
+ }, []);
+
+ const customFilters: TableFilter[] = useMemo(() => {
+ return [
+ OrderStatusFilter({ model: ModelType.salesorder }),
+ OutstandingFilter(),
+ OverdueFilter(),
+ AssignedToMeFilter(),
+ ProjectCodeFilter(),
+ ResponsibleFilter()
+ ];
+ }, []);
+
+ return (
+
+ );
+}