Rechnungsmaske: "Drucken und Buchen" und Browser-Zurück entschärfen
[kivitendo-erp.git] / SL / DB / Manager / Project.pm
index 388c359..2cc50f2 100644 (file)
@@ -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__