X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/0265c7a85c26f727d2703223d1ff3321c99cb08f..refs/heads/master:/SL/Helper/Number.pm diff --git a/SL/Helper/Number.pm b/SL/Helper/Number.pm index bf3b2b2cf..39a69fc5f 100644 --- a/SL/Helper/Number.pm +++ b/SL/Helper/Number.pm @@ -3,13 +3,13 @@ package SL::Helper::Number; use strict; use Exporter qw(import); use List::Util qw(max min); +use List::UtilsBy qw(rev_nsort_by); use Config; our @EXPORT_OK = qw( _format_number _round_number _format_total _round_total _parse_number - _format_number_units ); our %EXPORT_TAGS = (ALL => \@EXPORT_OK); @@ -51,55 +51,6 @@ sub _format_number { $amount; } -sub _format_number_units { - my ($amount, $places, $unit_from, $unit_to, %params) = @_; - - my $all_units = $params{all_units} //= SL::DB::Manager::Unit->get_all; - - if (!$unit_from || !$unit_to) { - return _format_number($amount, $places, %params); - } - - $amount *= $unit_from->convert_to(1, $unit_to); - - my $conv_units = $unit_from->convertible_units($all_units); - - if (!scalar @{ $conv_units }) { - return _format_number($amount, $places, %params) . " " . $unit_to->name; - } - - my @values; - my $num; - - for my $unit (@$conv_units) { - my $last = $unit->name eq $unit_to->name; - if (!$last) { - $num = int($amount / $unit->factor); - $amount -= $num * $unit->factor; - } - - if ($last ? $amount : $num) { - push @values, { - unit => $unit->name, - amount => $last ? $amount / $unit->factor : $num, - places => $last ? $places : 0 - }; - } - - last if $last; - } - - if (!@values) { - push @values, { "unit" => $unit_to->name, - "amount" => 0, - "places" => 0 }; - } - - return join " ", map { - _format_number($_->{amount}, $_->{places}, %params), $_->{unit} - } @values; -} - sub _round_number { my ($amount, $places, $adjust) = @_;