Partpicker: Filtermöglichkeit nach konvertierbaren Einheiten ('convertible_unit')
[kivitendo-erp.git] / SL / DB / Manager / Unit.pm
1 package SL::DB::Manager::Unit;
2
3 use strict;
4
5 use SL::DB::Helper::Manager;
6 use base qw(SL::DB::Helper::Manager);
7
8 use SL::DB::Helper::Sorted;
9 use SL::DB::Helper::Filtered;
10
11 sub object_class { 'SL::DB::Unit' }
12
13 __PACKAGE__->make_manager_methods;
14 __PACKAGE__->add_filter_specs(
15   convertible_to => sub {
16     my ($key, $value, $prefix) = @_;
17     return __PACKAGE__->convertible_to_filter($key, $value, $prefix);
18   },
19 );
20
21 sub _sort_spec {
22   return ( default => [ 'sortkey', 1 ],
23            columns => { SIMPLE => 'ALL',
24                         name   => 'lower(name)',
25                       });
26 }
27
28 sub convertible_to_filter {
29   my ($class, $key, $unit_name, $prefix) = @_;
30
31   return () unless $unit_name;
32
33   $prefix //= '';
34
35   my $unit = $class->find_by(name => $unit_name);
36   if (!$unit) {
37     $::lxdebug->warn("Unit manager: No unit with name $unit_name");
38     return ();
39   }
40
41   return ("${prefix}name" => [ map { $_->name } @{ $unit->convertible_units } ]);
42 }
43
44 1;