diff options
| author | Ivan Kohler <ivan@freeside.biz> | 2013-01-24 16:33:46 -0800 |
|---|---|---|
| committer | Ivan Kohler <ivan@freeside.biz> | 2013-01-24 16:33:46 -0800 |
| commit | 0132ddf70f700ecd007da0c506648d70023137f9 (patch) | |
| tree | 51d329c2033cec619c7a48754c4652bd396579f6 | |
| parent | 10c56b979f5dfab72fc8bf7b1f5d01d1e5b1c7ab (diff) | |
fix spurious errors about money with one decimal place, RT#20224
| -rw-r--r-- | FS/FS/Record.pm | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index ab0a33faa..b451086c1 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -2219,11 +2219,18 @@ is an error, returns the error, otherwise returns false. sub ut_money { my($self,$field)=@_; - $self->setfield($field, 0) if $self->getfield($field) eq ''; - $self->getfield($field) =~ /^\s*(\-)?\s*(\d*)(\.\d{2})?\s*$/ - or return "Illegal (money) $field: ". $self->getfield($field); - #$self->setfield($field, "$1$2$3" || 0); - $self->setfield($field, ( ($1||''). ($2||''). ($3||'') ) || 0); + + if ( $self->getfield($field) eq '' ) { + $self->setfield($field, 0); + } elsif ( $self->getfield($field) =~ /^\s*(\-)?\s*(\d*)(\.\d{1})\s*$/ ) { + #handle one decimal place without barfing out + $self->setfield($field, ( ($1||''). ($2||''). ($3.'0') ) || 0); + } elsif ( $self->getfield($field) =~ /^\s*(\-)?\s*(\d*)(\.\d{2})?\s*$/ ) { + $self->setfield($field, ( ($1||''). ($2||''). ($3||'') ) || 0); + } else { + return "Illegal (money) $field: ". $self->getfield($field); + } + ''; } |
