From 2177870fc96a95bdca8ee3244db5374cbc1da6ae Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sun, 21 Jun 2026 23:59:21 +0100 Subject: [PATCH] Enhance Filament and FilamentSku models by enforcing required fields for cost-related properties. Update NewFilamentSku and NewFilament components to reflect changes in default values and layout adjustments for better user experience. Modify FilamentInfo to utilize updated object data structure for filament selection. --- .../FilamentSkus/NewFilamentSku.jsx | 31 ++++++++++-------- .../Management/Filaments/FilamentInfo.jsx | 2 +- .../Management/Filaments/NewFilament.jsx | 28 ++++++++++++++++ .../Dashboard/Management/Parts/NewPart.jsx | 3 ++ src/database/models/Filament.js | 15 ++++++--- src/database/models/FilamentSku.js | 32 ++++++++++++------- 6 files changed, 81 insertions(+), 30 deletions(-) diff --git a/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx b/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx index d2d1545..3b13260 100644 --- a/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx +++ b/src/components/Dashboard/Management/FilamentSkus/NewFilamentSku.jsx @@ -8,7 +8,11 @@ const NewFilamentSku = ({ onOk, reset, defaultValues }) => { {({ handleSubmit, submitLoading, objectData, formValid }) => { const steps = [ @@ -19,7 +23,7 @@ const NewFilamentSku = ({ onOk, reset, defaultValues }) => { { cost: false, costWithTax: false, costTaxRate: false, + overrideCost: false, vendor: false }} /> ) }, { - title: 'Color & Cost', - key: 'colorCost', + title: 'Cost', + key: 'cost', content: ( { { _id: false, _reference: false }} - labelWidth={100} bordered={false} isEditing={false} + labelWidth={120} objectData={objectData} /> ) diff --git a/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx b/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx index 8a1a65b..f1a1dad 100644 --- a/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx +++ b/src/components/Dashboard/Management/Filaments/FilamentInfo.jsx @@ -238,7 +238,7 @@ const FilamentInfo = () => { }} reset={newFilamentSkuOpen} defaultValues={{ - filament: filamentId ? { _id: filamentId } : undefined + filament: objectFormState?.objectData || undefined }} /> diff --git a/src/components/Dashboard/Management/Filaments/NewFilament.jsx b/src/components/Dashboard/Management/Filaments/NewFilament.jsx index 0bd6562..ddec6c5 100644 --- a/src/components/Dashboard/Management/Filaments/NewFilament.jsx +++ b/src/components/Dashboard/Management/Filaments/NewFilament.jsx @@ -18,7 +18,33 @@ const NewFilament = ({ onOk }) => { bordered={false} isEditing={true} required={true} + labelWidth={120} objectData={objectData} + visibleProperties={{ + cost: false, + costTaxRate: false, + costWithTax: false + }} + /> + ) + }, + { + title: 'Cost', + key: 'cost', + content: ( + ) }, @@ -32,6 +58,7 @@ const NewFilament = ({ onOk }) => { bordered={false} isEditing={true} required={false} + labelWidth={90} objectData={objectData} /> ) @@ -50,6 +77,7 @@ const NewFilament = ({ onOk }) => { createdAt: false, updatedAt: false }} + labelWidth={120} isEditing={false} objectData={objectData} /> diff --git a/src/components/Dashboard/Management/Parts/NewPart.jsx b/src/components/Dashboard/Management/Parts/NewPart.jsx index 2e125de..8322d06 100644 --- a/src/components/Dashboard/Management/Parts/NewPart.jsx +++ b/src/components/Dashboard/Management/Parts/NewPart.jsx @@ -26,6 +26,7 @@ const NewPart = ({ onOk, defaultValues }) => { isEditing={true} required={true} objectData={objectData} + labelWidth={70} visibleProperties={{ file: false, priceMode: false, @@ -51,6 +52,7 @@ const NewPart = ({ onOk, defaultValues }) => { isEditing={true} required={true} objectData={objectData} + labelWidth={120} visibleProperties={{ priceMode: true, margin: true, @@ -74,6 +76,7 @@ const NewPart = ({ onOk, defaultValues }) => { bordered={false} isEditing={true} required={false} + labelWidth={50} objectData={objectData} /> ) diff --git a/src/database/models/Filament.js b/src/database/models/Filament.js index db7a27e..5211d2c 100644 --- a/src/database/models/Filament.js +++ b/src/database/models/Filament.js @@ -88,7 +88,14 @@ export const Filament = { 'updatedAt' ], filters: ['_id', 'name', 'material', 'cost', 'costWithTax'], - sorters: ['name', 'createdAt', 'material', 'cost', 'costWithTax', 'updatedAt'], + sorters: [ + 'name', + 'createdAt', + 'material', + 'cost', + 'costWithTax', + 'updatedAt' + ], group: ['diameter', 'material'], properties: [ { @@ -168,7 +175,7 @@ export const Filament = { { name: 'cost', label: 'Cost', - required: false, + required: true, columnWidth: 100, type: 'number', prefix: '£', @@ -178,7 +185,7 @@ export const Filament = { { name: 'costWithTax', label: 'Cost w/ Tax', - required: false, + required: true, readOnly: true, type: 'number', prefix: '£', @@ -201,7 +208,7 @@ export const Filament = { { name: 'costTaxRate', label: 'Cost Tax Rate', - required: false, + required: true, type: 'object', objectType: 'taxRate', showHyperlink: true, diff --git a/src/database/models/FilamentSku.js b/src/database/models/FilamentSku.js index 3438359..91c79a3 100644 --- a/src/database/models/FilamentSku.js +++ b/src/database/models/FilamentSku.js @@ -170,36 +170,42 @@ export const FilamentSku = { { name: 'overrideCost', label: 'Override Cost', - required: false, + required: true, type: 'bool', - value: (objectData) => objectData?.overrideCost ?? false, columnWidth: 150 }, { name: 'cost', label: 'Cost', - required: false, + required: true, type: 'number', prefix: '£', min: 0, step: 0.01, - disabled: (objectData) => !objectData?.overrideCost, + visible: (objectData) => { + return objectData?.overrideCost + }, value: (objectData) => - objectData?.overrideCost ? objectData?.cost : undefined, + objectData?.overrideCost + ? objectData?.cost + : objectData?.filament?.cost, columnWidth: 100 }, { name: 'costWithTax', label: 'Cost w/ Tax', - required: false, + required: true, readOnly: true, type: 'number', prefix: '£', min: 0, step: 0.01, - disabled: (objectData) => !objectData?.overrideCost, + visible: (objectData) => { + return objectData?.overrideCost + }, value: (objectData) => { - if (!objectData?.overrideCost) return undefined + if (!objectData?.overrideCost) + return objectData?.filament?.costWithTax || undefined const cost = objectData?.cost const taxRate = objectData?.costTaxRate if (!cost) return 0 @@ -215,13 +221,17 @@ export const FilamentSku = { { name: 'costTaxRate', label: 'Cost Tax Rate', - required: false, + required: true, type: 'object', objectType: 'taxRate', showHyperlink: true, - disabled: (objectData) => !objectData?.overrideCost, + visible: (objectData) => { + return objectData?.overrideCost + }, value: (objectData) => - objectData?.overrideCost ? objectData?.costTaxRate : undefined, + objectData?.overrideCost + ? objectData?.costTaxRate + : objectData?.filament?.costTaxRate, columnWidth: 150 } ]