epic-ts
[kivitendo-erp.git] / SL / DB / Manager / Unit.pm
index f081af4..aa55ffa 100644 (file)
@@ -8,6 +8,8 @@ use base qw(SL::DB::Helper::Manager);
 use SL::DB::Helper::Sorted;
 use SL::DB::Helper::Filtered;
 
+use List::Util qw(first);
+
 sub object_class { 'SL::DB::Unit' }
 
 __PACKAGE__->make_manager_methods;
@@ -41,4 +43,23 @@ sub convertible_to_filter {
   return ("${prefix}name" => [ map { $_->name } @{ $unit->convertible_units } ]);
 }
 
+sub all_units {
+  my ($class) = @_;
+  $::request->cache('all_units')->{sorted} //= $class->get_all_sorted;
+}
+
+sub find_h_unit {
+  my ($class) = @_;
+
+  return $::request->cache('unit_manager')->{h_unit} //= first { $_->name =~ m{^(?: Std | h | Stunde )$}x } @{ $class->all_units };
+}
+
+sub time_based_units {
+  my ($class) = @_;
+
+  my $h_unit = $class->find_h_unit;
+  return [] if !$h_unit;
+  return $::request->cache('unit_manager')->{units} //= $h_unit->convertible_units;
+}
+
 1;