Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 59626ee2

Von Bernd Bleßmann vor mehr als 4 Jahren hinzugefügt

  • ID 59626ee231b3487878faea59a2ca325e499ccb63
  • Vorgänger a90b3fb8
  • Nachfolger 4b1666b7

Rose-Attr-Helfer: _as_null_number

von odyn abgeguckt, aber nicht mit SL::Helper::Number implementiert
(gibt es in kivitendo nicht)
siehe auch odyn: commit b4177a76db52e94795314b527774f515fd8ee42f

Unterschiede anzeigen:

SL/DB/Helper/Attr.pm
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 {
......
};
}
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;
t/helper/attr.t
use Test::More tests => 32;
use Test::More tests => 44;
use lib 't';
......
is($p->sellprice_as_number('2,3442'), '2,3442');
is($p->sellprice, 2.3442);
is($p->sellprice_as_number, '2,3442');
is($p->listprice_as_null_number('2,30'), '2,30');
is($p->listprice, 2.30);
is($p->listprice_as_null_number, '2,30');
is($p->listprice_as_null_number('2,3442'), '2,3442');
is($p->listprice, 2.3442);
is($p->listprice_as_null_number, '2,3442');
is($p->listprice_as_null_number(''), '');
is($p->listprice, undef);
is($p->listprice_as_null_number, '');
is($p->listprice_as_null_number('0'), '0,00');
is($p->listprice, 0);
is($p->listprice_as_null_number, '0,00');
my $o = new_ok 'SL::DB::Order';
is($o->reqdate_as_date('11.12.2007'), '11.12.2007');
......
# defaults according to the database
$i->taxincluded(undef);
is $i->taxincluded_as_bool_yn, '', 'bool 3';

Auch abrufbar als: Unified diff