]> wagnertech.de Git - mfinanz.git/blobdiff - SL/DB/Manager/Chart.pm
kivitendo 3.9.2-0.2
[mfinanz.git] / SL / DB / Manager / Chart.pm
index d70e7f939eaa115a01c58ad52d83d9ad678a75e7..af2a9d37230ff83c7490b38475fdfd55f518c435 100644 (file)
@@ -9,8 +9,10 @@ use SL::DB::Helper::Sorted;
 use SL::DB::Helper::Paginated;
 use SL::DB::Helper::Filtered;
 use SL::MoreCommon qw(listify);
-use DateTime;
 use SL::DBUtils;
+
+use Carp;
+use DateTime;
 use Data::Dumper;
 
 sub object_class { 'SL::DB::Chart' }
@@ -38,7 +40,30 @@ __PACKAGE__->add_filter_specs(
     my ($key, $value) = @_;
     return __PACKAGE__->booked_filter($value);
   },
+  status => sub {
+    my ($key, $value) = @_;
+    return __PACKAGE__->invalid_filter($value);
+  },
+
 );
+sub invalid_filter {
+  my ($class, $status) = @_;
+
+  croak "Wrong call, need status invalid, all or valid, got:" . $status unless $status =~ m/invalid|all|valid/;
+
+  my @filter;
+
+  if ($status eq 'all') {
+     push @filter, ( id => [ \"SELECT id FROM chart" ] );
+  } elsif ($status eq 'valid') {
+     push @filter, ( id => [ \"SELECT id FROM chart WHERE NOT invalid" ] );
+  } elsif ($status eq 'invalid') {
+     push @filter, ( id => [ \"SELECT id FROM chart WHERE invalid" ] );
+  } else { die "Wrong state for invalid_filter"; }
+
+  return @filter;
+}
+
 
 sub booked_filter {
   my ($class, $booked) = @_;