X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FManager%2FProject.pm;h=2cc50f2780e4e7d77fa3da2c6e6ca48d7437fa19;hb=4af639717afee7911c70653b6166d10a7e1f2bae;hp=388c359d7a12744701c24dd1428480165ea58194;hpb=a7041228dd1face28a082f5f747c02468ed0bb5a;p=kivitendo-erp.git diff --git a/SL/DB/Manager/Project.pm b/SL/DB/Manager/Project.pm index 388c359d7..2cc50f278 100644 --- a/SL/DB/Manager/Project.pm +++ b/SL/DB/Manager/Project.pm @@ -6,10 +6,35 @@ use parent qw(SL::DB::Helper::Manager); use SL::DB::Helper::Paginated; use SL::DB::Helper::Sorted; +use SL::DB::Helper::Filtered; sub object_class { 'SL::DB::Project' } __PACKAGE__->make_manager_methods; +__PACKAGE__->add_filter_specs( + active => sub { + my ($key, $value, $prefix) = @_; + # TODO add boolean context + return () if $value eq 'both'; + return ($prefix . "active" => 1) if $value eq 'active'; + return (or => [ $prefix . "active" => 0, $prefix . "active" => undef ]) if $value eq 'inactive'; + }, + valid => sub { + my ($key, $value, $prefix) = @_; + return () if $value eq 'both'; + return ($prefix . "valid" => 1) if $value eq 'valid'; + return (or => [ $prefix . "valid" => 0, $prefix . "valid" => undef ]) if $value eq 'invalid'; + }, + status => sub { + my ($key, $value, $prefix) = @_; + return () if $value ne 'orphaned'; + return __PACKAGE__->is_not_used_filter($prefix); + }, + all => sub { + my ($key, $value, $prefix) = @_; + return or => [ map { $prefix . $_ => $value } qw(projectnumber description customer.name) ] + } +); our %project_id_column_prefixes = ( ar => 'global', @@ -22,10 +47,13 @@ our @tables_with_project_id_cols = qw(acc_trans ap ar delivery_order_items deliv sub _sort_spec { return ( - default => [ 'projectnumber', 1 ], - columns => { - SIMPLE => 'ALL', - customer => 'customer.name', + default => [ 'projectnumber', 1 ], + columns => { + SIMPLE => 'ALL', + customer => 'customer.name', + project_type => 'project_type.description', + project_status => 'project_status.description', + customer_and_description => [ qw(customer.name project.description) ], }); } @@ -40,6 +68,10 @@ sub is_not_used_filter { return ("!${prefix}id" => [ \"(${query})" ]); } +sub default_objects_per_page { + 20; +} + 1; __END__