From 59f93ca4134454eb23b3017735a48e1e03f5c628 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 17 Jan 2026 15:53:34 +1100 Subject: [PATCH] [UI] Default supplier fix (#11142) * [UI] Fix "default supplier" form - Select the supplier part instance * Hide field if part is not purchaseable * Fix supplier part display --- src/frontend/src/forms/PartForms.tsx | 11 +++++++---- src/frontend/src/pages/part/PartDetail.tsx | 15 +++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/frontend/src/forms/PartForms.tsx b/src/frontend/src/forms/PartForms.tsx index bdb3e25b74..e561614e8c 100644 --- a/src/frontend/src/forms/PartForms.tsx +++ b/src/frontend/src/forms/PartForms.tsx @@ -1,4 +1,3 @@ -import { ApiEndpoints, ModelType, apiUrl } from '@lib/index'; import type { ApiFormFieldSet } from '@lib/types/Forms'; import { t } from '@lingui/core/macro'; import { IconBuildingStore, IconCopy, IconPackages } from '@tabler/icons-react'; @@ -10,8 +9,10 @@ import { useGlobalSettingsState } from '../states/SettingsStates'; */ export function usePartFields({ create = false, + partId, duplicatePartInstance }: { + partId?: number; duplicatePartInstance?: any; create?: boolean; }): ApiFormFieldSet { @@ -55,10 +56,11 @@ export function usePartFields({ } }, default_supplier: { - model: ModelType.company, - api_url: apiUrl(ApiEndpoints.company_list), + hidden: !partId || !purchaseable, filters: { - is_supplier: true + part: partId, + part_detail: true, + supplier_detail: true } }, default_expiry: {}, @@ -199,6 +201,7 @@ export function usePartFields({ return fields; }, [ + partId, virtual, purchaseable, create, diff --git a/src/frontend/src/pages/part/PartDetail.tsx b/src/frontend/src/pages/part/PartDetail.tsx index e5f97edfa6..67b942b46c 100644 --- a/src/frontend/src/pages/part/PartDetail.tsx +++ b/src/frontend/src/pages/part/PartDetail.tsx @@ -501,13 +501,6 @@ export default function PartDetail() { model: ModelType.stocklocation, hidden: part.default_location || !part.category_default_location }, - { - type: 'link', - name: 'default_supplier', - label: t`Default Supplier`, - model: ModelType.company, - hidden: !part.default_supplier - }, { type: 'string', name: 'units', @@ -704,6 +697,9 @@ export default function PartDetail() { name: 'default_supplier', label: t`Default Supplier`, model: ModelType.supplierpart, + model_formatter: (model: any) => { + return model.SKU; + }, hidden: !part.default_supplier }, { @@ -1066,7 +1062,10 @@ export default function PartDetail() { ]; }, [partRequirements, partRequirementsQuery.isFetching, part]); - const partFields = usePartFields({ create: false }); + const partFields = usePartFields({ + create: false, + partId: part.pk + }); const editPart = useEditApiFormModal({ url: ApiEndpoints.part_list,