2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-01-30 01:53:42 +00:00

[UI] Suggested pricing (#10867)

* Refactor NumberField into separate component

* Add helper func to ensure a number is a number

* Use placeholder value for suggested sale price

* Fix for auto-fill

* Tweak price calculation

* Add UI testing for sales order price breaks

* Fix aria label name

* Annotate price breaks to supplier part

* Fetch price break data

* Support price breaks for purchase order pricing

* Fix required to prevent circular imports

* Add playwright tests for purchase order price breaks

* Bump API version

* Re-add output options for SupplierPriceBreakList

* Revert change

* Simplify unit test
This commit is contained in:
Oliver
2025-11-20 22:51:27 +11:00
committed by GitHub
parent 835c7784f9
commit a76ec0a7b8
16 changed files with 465 additions and 201 deletions

View File

@@ -40,3 +40,36 @@ export function identifierString(value: string): string {
return value.toLowerCase().replace(/[^a-z0-9]/g, '-');
}
export function toNumber(
value: any,
defaultValue: number | null = 0
): number | null {
// Convert the provided value into a number (if possible)
if (value == undefined || value == null || value === '') {
return defaultValue;
}
// Case 1: numeric already
if (typeof value === 'number') return value;
// Case 2: react-number-format object
if (typeof value === 'object') {
if ('floatValue' in value && typeof value.floatValue === 'number') {
return value.floatValue;
}
if ('value' in value) {
const parsed = Number(value.value);
return Number.isNaN(parsed) ? Number.NaN : parsed;
}
}
// Case 3: string
if (typeof value === 'string') {
const parsed = Number(value);
return Number.isNaN(parsed) ? Number.NaN : parsed;
}
return Number.NaN;
}