X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/ff159a4d47b9a2d10744dcfc23da2c63605c8a32..eeb5375ee7727c956cc357cc8f90b19d1bfe80b9:/SL/DB/Manager/Chart.pm diff --git a/SL/DB/Manager/Chart.pm b/SL/DB/Manager/Chart.pm index d70e7f939..af2a9d372 100644 --- a/SL/DB/Manager/Chart.pm +++ b/SL/DB/Manager/Chart.pm @@ -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) = @_;