summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-01-24 16:33:45 -0800
committerIvan Kohler <ivan@freeside.biz>2013-01-24 16:33:45 -0800
commit62e9ed602776893e9bc45e7b1e2bfef18c254a64 (patch)
treebf65c40e553cbeb40c151d422268d22ce03ed2f2
parenta91e53ba78caa5eb8a3446e9be7a66c230b4c3f6 (diff)
fix spurious errors about money with one decimal place, RT#20224
-rw-r--r--FS/FS/Record.pm17
1 files changed, 12 insertions, 5 deletions
diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm
index 342ee19..16031e1 100644
--- a/FS/FS/Record.pm
+++ b/FS/FS/Record.pm
@@ -2091,11 +2091,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);
+ }
+
'';
}