Skip to content

Commit 343392a

Browse files
committed
support 0 and undefined prices in bom materials
1 parent 2cfc74a commit 343392a

3 files changed

Lines changed: 10 additions & 11 deletions

File tree

src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/MaterialForm/MaterialForm.tsx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ const schema = yup.object().shape({
2121
manufacturerName: yup.string().optional(),
2222
manufacturerPartNumber: yup.string().optional(),
2323
quantity: yup.number().optional(),
24-
price: yup.number().optional(),
24+
price: yup
25+
.number()
26+
.transform((value, originalValue) => (originalValue === '' ? undefined : value))
27+
.optional(),
2528
unitName: yup.string().optional(),
2629
linkUrl: yup.string().optional(),
2730
notes: yup.string().optional(),
@@ -97,7 +100,7 @@ const MaterialForm: React.FC<MaterialFormProps> = ({
97100
quantity: defaultValues?.quantity ?? 1,
98101
manufacturerName: defaultValues?.manufacturerName ?? '',
99102
pdmFileName: defaultValues?.pdmFileName,
100-
price: defaultValues?.price ?? 0,
103+
price: defaultValues?.price,
101104
unitName: defaultValues?.unitName,
102105
linkUrl: defaultValues?.linkUrl ?? '',
103106
notes: defaultValues?.notes,
@@ -124,12 +127,8 @@ const MaterialForm: React.FC<MaterialFormProps> = ({
124127
}
125128

126129
const onSubmitWrapper = (data: MaterialFormInput): void => {
127-
const price = data.price ? Math.round(data.price * 100) : undefined;
128-
const subtotal = price
129-
? data.quantity != null
130-
? parseFloat((data.quantity * price).toFixed(2))
131-
: undefined
132-
: undefined;
130+
const price = data.price != null ? Math.round(data.price * 100) : undefined;
131+
const subtotal = price != null && data.quantity != null ? parseFloat((data.quantity * price).toFixed(2)) : undefined;
133132
onSubmit({ ...data, subtotal, price, quantity: data.quantity != null ? new Decimal(data.quantity) : undefined });
134133
};
135134

src/frontend/src/pages/ProjectDetailPage/ProjectViewContainer/BOM/MaterialForm/MaterialFormView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ const MaterialFormView: React.FC<MaterialFormViewProps> = ({
281281
/>
282282
)}
283283
/>
284-
<FormHelperText error>{errors.price}</FormHelperText>
284+
<FormHelperText error>{errors.price?.message}</FormHelperText>
285285
</FormControl>
286286
</Grid>
287287
<Grid item xs={3} display="flex" alignItems="center" color="#EF4345">

src/frontend/src/utils/bom.utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ export const materialToRow = (material: Material, idx: number): BomRow => {
3434
manufacturerPN: material.manufacturerPartNumber ?? '',
3535
pdmFileName: material.pdmFileName ?? 'None',
3636
quantity: material.quantity + (material.unitName ? ' ' + material.unitName : ''),
37-
price: material.price ? `$${centsToDollar(material.price)}` : '',
38-
subtotal: material.subtotal ? `$${centsToDollar(material.subtotal)}` : '',
37+
price: material.price !== undefined ? `$${centsToDollar(material.price)}` : '',
38+
subtotal: material.subtotal !== undefined ? `$${centsToDollar(material.subtotal)}` : '',
3939
link: material.linkUrl,
4040
notes: material.notes,
4141
assemblyId: material.assemblyId ?? 'assembly-misc'

0 commit comments

Comments
 (0)