diff --git a/src-ui/src/app/components/common/input/monetary/monetary.component.ts b/src-ui/src/app/components/common/input/monetary/monetary.component.ts index ebfd9b6bf..6c17b2c76 100644 --- a/src-ui/src/app/components/common/input/monetary/monetary.component.ts +++ b/src-ui/src/app/components/common/input/monetary/monetary.component.ts @@ -51,7 +51,7 @@ export class MonetaryComponent extends AbstractInputComponent<string> { get monetaryValue(): string { if (!this.value) return null const focused = document.activeElement === this.inputField?.nativeElement - const val = parseFloat(this.value.toString().replace(/[^0-9.,]+/g, '')) + const val = parseFloat(this.value.toString().replace(/[^0-9.,-]+/g, '')) return focused ? val.toString() : val.toFixed(2) } diff --git a/src/documents/serialisers.py b/src/documents/serialisers.py index f8537726f..26930ccec 100644 --- a/src/documents/serialisers.py +++ b/src/documents/serialisers.py @@ -546,7 +546,7 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer): except Exception: # If that fails, try to validate as a monetary string RegexValidator( - regex=r"^[A-Z][A-Z][A-Z]\d+(\.\d{2,2})$", + regex=r"^[A-Z]{3}-?\d+(\.\d{2,2})$", message="Must be a two-decimal number with optional currency code e.g. GBP123.45", )(data["value"]) elif field.data_type == CustomField.FieldDataType.STRING: