X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FHelper%2FAttr.pm;fp=SL%2FDB%2FHelper%2FAttr.pm;h=21645f4e15f308f6d3c47c98ed53e322de557ec9;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hp=6f2dd55e264ee1c92e05b7a0bf60b819be17daeb;hpb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44;p=kivitendo-erp.git diff --git a/SL/DB/Helper/Attr.pm b/SL/DB/Helper/Attr.pm index 6f2dd55e2..21645f4e1 100644 --- a/SL/DB/Helper/Attr.pm +++ b/SL/DB/Helper/Attr.pm @@ -29,12 +29,14 @@ sub make { sub _make_by_type { my ($package, $name, $type) = @_; - _as_number ($package, $name, places => -2) if $type =~ /numeric | real | float/xi; - _as_percent($package, $name, places => 2) if $type =~ /numeric | real | float/xi; - _as_number ($package, $name, places => 0) if $type =~ /int/xi; - _as_date ($package, $name) if $type =~ /date | timestamp/xi; - _as_timestamp($package, $name) if $type =~ /timestamp/xi; - _as_bool_yn($package, $name) if $type =~ /bool/xi; + _as_number ($package, $name, places => -2) if $type =~ /numeric | real | float/xi; + _as_null_number($package, $name, places => -2) if $type =~ /numeric | real | float/xi; + _as_percent ($package, $name, places => 2) if $type =~ /numeric | real | float/xi; + _as_number ($package, $name, places => 0) if $type =~ /int/xi; + _as_null_number($package, $name, places => 0) if $type =~ /int/xi; + _as_date ($package, $name) if $type =~ /date | timestamp/xi; + _as_timestamp ($package, $name) if $type =~ /timestamp/xi; + _as_bool_yn ($package, $name) if $type =~ /bool/xi; } sub _as_number { @@ -54,6 +56,23 @@ sub _as_number { }; } +sub _as_null_number { + my $package = shift; + my $attribute = shift; + my %params = @_; + + $params{places} = 2 if !defined($params{places}); + + no strict 'refs'; + *{ $package . '::' . $attribute . '_as_null_number' } = sub { + my ($self, $string) = @_; + + $self->$attribute($string eq '' ? undef : $::form->parse_amount(\%::myconfig, $string)) if @_ > 1; + + return defined $self->$attribute ? $::form->format_amount(\%::myconfig, $self->$attribute, $params{places}) : ''; + }; +} + sub _as_percent { my $package = shift; my $attribute = shift;