diff --git a/src/frontend/src/components/forms/fields/RelatedModelField.tsx b/src/frontend/src/components/forms/fields/RelatedModelField.tsx index bc74b6c5e2..dc2ef145bd 100644 --- a/src/frontend/src/components/forms/fields/RelatedModelField.tsx +++ b/src/frontend/src/components/forms/fields/RelatedModelField.tsx @@ -62,6 +62,13 @@ export function RelatedModelField({ const [isOpen, setIsOpen] = useState(false); + const [autoFilled, setAutoFilled] = useState(false); + + useEffect(() => { + // Reset auto-fill status when the form is reconstructed + setAutoFilled(false); + }, []); + // Auto-fill the field with data from the API useEffect(() => { // If there is *no value defined*, and autoFill is enabled, then fetch data from the API @@ -69,10 +76,17 @@ export function RelatedModelField({ return; } + // Return if the autofill has already been performed + if (autoFilled) { + return; + } + if (field.value != undefined) { return; } + setAutoFilled(true); + // Construct parameters for auto-filling the field const params = { ...(definition?.filters ?? {}), @@ -114,6 +128,7 @@ export function RelatedModelField({ } }); }, [ + autoFilled, definition.autoFill, definition.api_url, definition.filters, diff --git a/src/frontend/src/components/render/Instance.tsx b/src/frontend/src/components/render/Instance.tsx index 33285dde17..09a7c33e2d 100644 --- a/src/frontend/src/components/render/Instance.tsx +++ b/src/frontend/src/components/render/Instance.tsx @@ -215,7 +215,7 @@ export function RenderInlineModel({ return ( - + {prefix} {image && } {url ? ( diff --git a/src/frontend/src/forms/BuildForms.tsx b/src/frontend/src/forms/BuildForms.tsx index 644040bceb..5d77f50f76 100644 --- a/src/frontend/src/forms/BuildForms.tsx +++ b/src/frontend/src/forms/BuildForms.tsx @@ -517,7 +517,7 @@ function BuildAllocateLineRow({ field_type: 'related field', api_url: apiUrl(ApiEndpoints.stock_item_list), model: ModelType.stockitem, - autoFill: !!output?.serial, + autoFill: !output || !!output?.serial, autoFillFilters: { serial: output?.serial }, diff --git a/src/frontend/src/forms/SalesOrderForms.tsx b/src/frontend/src/forms/SalesOrderForms.tsx index f696a731d3..cf75e50069 100644 --- a/src/frontend/src/forms/SalesOrderForms.tsx +++ b/src/frontend/src/forms/SalesOrderForms.tsx @@ -184,6 +184,7 @@ function SalesOrderAllocateLineRow({ field_type: 'related field', api_url: apiUrl(ApiEndpoints.stock_item_list), model: ModelType.stockitem, + autoFill: true, filters: { available: true, part_detail: true,