Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / Controller / Helper / ParseFilter.pm
index 5e18081..0f73141 100644 (file)
@@ -125,7 +125,8 @@ sub _parse_filter {
     my ($type, $op)   = $key =~ m{:(.+)::(.+)};
 
     my $is_multi      = $key =~ s/:multi//;
-    my @value_tokens  = $is_multi ? parse_line('\s+', 0, $value) : ($value);
+    my $is_any        = $key =~ s/:any//;
+    my @value_tokens  = $is_multi || $is_any ? parse_line('\s+', 0, $value) : ($value);
 
     ($key, $method)   = split m{::}, $key, 2;
     ($key, @filters)  = split m{:},  $key;
@@ -146,7 +147,7 @@ sub _parse_filter {
 
     next unless defined $key;
 
-    push @result, $is_multi ? (and => [ @args ]) : @args;
+    push @result, $is_multi ? (and => [ @args ]) : $is_any ? (or => [ @args ]) : @args;
   }
   return \@result;
 }
@@ -272,6 +273,10 @@ sub _apply_complex {
 
 __END__
 
+=pod
+
+=encoding utf8
+
 =head1 NAME
 
 SL::Controller::Helper::ParseFilter - Convert a form filter spec into a RDBO get_all filter
@@ -293,8 +298,8 @@ customer. L<Rose::DB::Object> allows you to search for these by filtering them p
 
   query => [
     'customer.name'          => 'John Doe',
-    'department.description' => [ ilike => '%Sales%' ],
-    'orddate'                => [ lt    => DateTime->today ],
+    'department.description' => { ilike => '%Sales%' },
+    'orddate'                => { lt    => DateTime->today },
   ]
 
 Unfortunately, if you specify them in your form as these strings, the form