From 95c24a50f7359aad000deb122509b05c14196fa9 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Wed, 10 Apr 2024 07:33:13 -0700 Subject: [PATCH] Fix: Allow negative monetary values with a current code (#6358) * Updates the currency validation to allow an optional negative * Update frontend regex --------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- .../app/components/common/input/monetary/monetary.component.ts | 2 +- src/documents/serialisers.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 { 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: