X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FManager%2FUnit.pm;h=f081af49ee8ba6d4aa1bcfa86c6ad33b4abc1b60;hb=5e96049428deceda2ef857930bbf67311deccbcb;hp=8b3c138a8852d08aa8ba19bd970c6d3d651d1c39;hpb=4c9d45bf6dc8697327cc6e49f94c56426e67354f;p=kivitendo-erp.git diff --git a/SL/DB/Manager/Unit.pm b/SL/DB/Manager/Unit.pm index 8b3c138a8..f081af49e 100644 --- a/SL/DB/Manager/Unit.pm +++ b/SL/DB/Manager/Unit.pm @@ -6,10 +6,17 @@ use SL::DB::Helper::Manager; use base qw(SL::DB::Helper::Manager); use SL::DB::Helper::Sorted; +use SL::DB::Helper::Filtered; sub object_class { 'SL::DB::Unit' } __PACKAGE__->make_manager_methods; +__PACKAGE__->add_filter_specs( + convertible_to => sub { + my ($key, $value, $prefix) = @_; + return __PACKAGE__->convertible_to_filter($key, $value, $prefix); + }, +); sub _sort_spec { return ( default => [ 'sortkey', 1 ], @@ -18,4 +25,20 @@ sub _sort_spec { }); } +sub convertible_to_filter { + my ($class, $key, $unit_name, $prefix) = @_; + + return () unless $unit_name; + + $prefix //= ''; + + my $unit = $class->find_by(name => $unit_name); + if (!$unit) { + $::lxdebug->warn("Unit manager: No unit with name $unit_name"); + return (); + } + + return ("${prefix}name" => [ map { $_->name } @{ $unit->convertible_units } ]); +} + 1;