]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Fix: monetary field with null values
authorshamoon <4887959+shamoon@users.noreply.github.com>
Sun, 21 Apr 2024 04:44:31 +0000 (21:44 -0700)
committershamoon <4887959+shamoon@users.noreply.github.com>
Sun, 21 Apr 2024 04:44:31 +0000 (21:44 -0700)
src-ui/src/app/components/common/input/monetary/monetary.component.spec.ts
src-ui/src/app/components/common/input/monetary/monetary.component.ts

index 60df71742452dbe3df0ade18cd4db5583005d235..f22a3f53d2961a40cc77b4b1296282865e0bde28 100644 (file)
@@ -46,4 +46,32 @@ describe('MonetaryComponent', () => {
     component = new MonetaryComponent('pt-BR')
     expect(component.defaultCurrencyCode).toEqual('BRL')
   })
+
+  it('should parse monetary value correctly', () => {
+    expect(component['parseMonetaryValue']('123.4')).toEqual('123.4')
+    expect(component['parseMonetaryValue']('123.4', true)).toEqual('123.40')
+    expect(component['parseMonetaryValue']('123.4', false)).toEqual('123.4')
+  })
+
+  it('should handle currency change', () => {
+    component.writeValue('USD123.4')
+    component.currency = 'EUR'
+    component.currencyChange()
+    expect(component.currency).toEqual('EUR')
+    expect(component.monetaryValue).toEqual('123.40')
+  })
+
+  it('should handle monetary value change', () => {
+    component.writeValue('USD123.4')
+    component.monetaryValue = '123.4'
+    component.monetaryValueChange()
+    expect(component.monetaryValue).toEqual('123.4')
+    expect(component.value).toEqual('USD123.40')
+  })
+
+  it('should handle null values', () => {
+    component.writeValue(null)
+    expect(component.currency).toEqual('USD')
+    expect(component.monetaryValue).toEqual('')
+  })
 })
index edaad3859e33312431293adc3496fbf2e6bdccab..4ed32e7a15a19723c82d3e93adbdec642df19d41 100644 (file)
@@ -56,6 +56,9 @@ export class MonetaryComponent extends AbstractInputComponent<string> {
   }
 
   private parseMonetaryValue(value: string, fixed: boolean = false): string {
+    if (!value) {
+      return ''
+    }
     const val: number = parseFloat(value.toString().replace(/[^0-9.,-]+/g, ''))
     return fixed ? val.toFixed(2) : val.toString()
   }