fa67f6675780771dd660ca322d9f5631e57ea594
[kivitendo-erp.git] / SL / DB / Manager / DeliveryOrder.pm
1 package SL::DB::Manager::DeliveryOrder;
2
3 use strict;
4
5 use parent qw(SL::DB::Helper::Manager);
6
7 use SL::DB::Helper::Paginated;
8 use SL::DB::Helper::Sorted;
9
10 sub object_class { 'SL::DB::DeliveryOrder' }
11
12 __PACKAGE__->make_manager_methods;
13
14 sub type_filter {
15   my $class = shift;
16   my $type  = lc(shift || '');
17
18   return ('!customer_id' => undef) if $type eq 'sales_delivery_order';
19   return ('!vendor_id'   => undef) if $type eq 'purchase_delivery_order';
20
21   die "Unknown type $type";
22 }
23
24 sub _sort_spec {
25   return (
26     default                   => [ 'transdate', 1 ],
27     nulls                     => {
28       transaction_description => 'FIRST',
29       customer_name           => 'FIRST',
30       vendor_name             => 'FIRST',
31       default                 => 'LAST',
32     },
33     columns                   => {
34       SIMPLE                  => 'ALL',
35       customer                => 'customer.name',
36       vendor                  => 'vendor.name',
37       globalprojectnumber     => 'lower(globalproject.projectnumber)',
38
39       # Bug in Rose::DB::Object: the next should be
40       # "globalproject.project_type.description". This workaround will
41       # only work if no other table with "project_type" is visible in
42       # the current query
43       globalproject_type      => 'lower(project_type.description)',
44
45       map { ( $_ => "lower(delivery_orders.$_)" ) } qw(donumber ordnumber cusordnumber oreqnumber shippingpoint shipvia notes intnotes transaction_description),
46     });
47 }
48
49 sub default_objects_per_page { 40 }
50
51 1;