X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FSellPriceInformation.pm;h=ccb0d5fcce07a51fdab110f557d82be41da2734f;hb=ae32e420b4016d27bd80f866a28bfdbcf20ebe2f;hp=da82660b03199a000b73944af3e72b33cb6de98e;hpb=438c47c01070704b143a79c9c0ea7a1512736eff;p=kivitendo-erp.git diff --git a/SL/Controller/SellPriceInformation.pm b/SL/Controller/SellPriceInformation.pm index da82660b0..ccb0d5fcc 100644 --- a/SL/Controller/SellPriceInformation.pm +++ b/SL/Controller/SellPriceInformation.pm @@ -32,9 +32,9 @@ sub action_list { db_args => $db_args, ); - $self->{orderitems} = SL::DB::Manager::OrderItem->get_all(%$db_args); + my $orderitems = SL::DB::Manager::OrderItem->get_all(%$db_args); - $self->list_objects; + $self->report_generator_list_objects(report => $self->{report}, objects => $orderitems, layout => 0, header => 0); } # private functions @@ -51,8 +51,6 @@ sub setup_for_list { page => $params{page}, ); -# $args{query} = [ @{ $args{query} || [] } ]; - return \%args; } @@ -64,6 +62,33 @@ sub set_sort_params { return $sort_str; } +sub column_defs { + my ($self) = @_; + return { + transdate => { text => $::locale->text('Date'), + sub => sub { $_[0]->order->transdate_as_date }}, + ordnumber => { text => $::locale->text('Number'), + sub => sub { $_[0]->order->number }, + obj_link => sub { $self->link_to($_[0]->order) }}, + customer => { text => $::locale->text('Customer'), + sub => sub { $_[0]->order->customer->name }, + obj_link => sub { $self->link_to($_[0]->order->customer) }}, + customer => { text => $::locale->text('Customer'), + sub => sub { $_[0]->order->customer->name }, + obj_link => sub { $self->link_to($_[0]->order->customer) }}, + ship => { text => $::locale->text('Delivered'), + sub => sub { $::form->format_amount(\%::myconfig, $_[0]->shipped_qty) . ' ' . $_[0]->unit }}, + qty => { text => $::locale->text('Qty'), + sub => sub { $_[0]->qty_as_number . ' ' . $_[0]->unit }}, + sellprice => { text => $::locale->text('Sell Price'), + sub => sub { $_[0]->sellprice_as_number }}, + discount => { text => $::locale->text('Discount'), + sub => sub { $_[0]->discount_as_percent . "%" }}, + amount => { text => $::locale->text('Amount'), + sub => sub { $::form->format_amount(\%::myconfig, $_[0]->qty * $_[0]->sellprice * (1 - $_[0]->discount), 2) }}, + }; +} + sub prepare_report { my ($self, %params) = @_; @@ -71,82 +96,37 @@ sub prepare_report { my $report = SL::ReportGenerator->new(\%::myconfig, $::form); $self->{report} = $report; + my $title = $::locale->text('Sales Price information'); + $title .= ': ' . $::locale->text($::form->{filter}->{order}{type}) if $::form->{filter}->{order}{type}; + my @columns = qw(transdate ordnumber customer ship qty sellprice discount amount); my @visible = qw(transdate ordnumber customer ship qty sellprice discount amount); my @sortable = qw(transdate ordnumber customer sellprice discount ); - my %column_defs = ( - transdate => { text => $::locale->text('Date'), - sub => sub { $_[0]->order->transdate_as_date }}, - ordnumber => { text => $::locale->text('Number'), - sub => sub { $_[0]->order->ordnumber }, - obj_link => sub { $self->link_to($_[0]->order) }}, - customer => { text => $::locale->text('Customer'), - sub => sub { $_[0]->order->customer->name }, - obj_link => sub { $self->link_to($_[0]->order->customer) }}, - customer => { text => $::locale->text('Customer'), - sub => sub { $_[0]->order->customer->name }, - obj_link => sub { $self->link_to($_[0]->order->customer) }}, - ship => { text => $::locale->text('Delivered'), - sub => sub { $::form->format_amount(\%::myconfig, $_[0]->shipped_qty) . ' ' . $_[0]->unit }}, - qty => { text => $::locale->text('Qty'), - sub => sub { $_[0]->qty_as_number . ' ' . $_[0]->unit }}, - sellprice => { text => $::locale->text('Sell Price'), - sub => sub { $_[0]->sellprice_as_number }}, - discount => { text => $::locale->text('Discount'), - sub => sub { $_[0]->discount_as_percent . "%" }}, - amount => { text => $::locale->text('Amount'), - sub => sub { $::form->format_amount(\%::myconfig, $_[0]->qty * $_[0]->sellprice * (1 - $_[0]->discount), 2) }}, - ); + my $column_defs = $self->column_defs; for my $col (@sortable) { - $column_defs{$col}{link} = $self->self_url( + $column_defs->{$col}{link} = $self->self_url( sort_by => $col, sort_dir => ($self->{sort_by} eq $col ? 1 - $self->{sort_dir} : $self->{sort_dir}), page => $self->{pages}{cur}, ); } - map { $column_defs{$_}->{visible} = 1 } @visible; + map { $column_defs->{$_}{visible} = 1 } @visible; - $report->set_columns(%column_defs); + $report->set_columns(%$column_defs); $report->set_column_order(@columns); $report->set_options(allow_pdf_export => 0, allow_csv_export => 0); - $report->set_sort_indicator(%params); + $report->set_sort_indicator($self->{sort_by}, $self->{sort_dir}); $report->set_export_options(@{ $params{report_generator_export_options} || [] }); $report->set_options( %{ $params{report_generator_options} || {} }, output_format => 'HTML', - top_info_text => $::locale->text('Sales Price Information'), - title => $::locale->text('Sales Price information'), + top_info_text => $self->displayable_filter($::form->{filter}), + title => $title, ); $report->set_options_from_form; - - $self->{report_data} = { - column_defs => \%column_defs, - columns => \@columns, - visible => \@visible, - sortable => \@sortable, - }; -} - -sub list_objects { - my ($self) = @_; - my $column_defs = $self->{report_data}{column_defs}; - for my $obj (@{ $self->{orderitems} || [] }) { - $self->{report}->add_data({ - map { - $_ => { - data => $column_defs->{$_}{sub} ? $column_defs->{$_}{sub}->($obj) - : $obj->can($_) ? $obj->$_ - : $obj->{$_}, - link => $column_defs->{$_}{obj_link} ? $column_defs->{$_}{obj_link}->($obj) : '', - }, - } @{ $self->{report_data}{columns} || {} } - }); - } - - return $self->{report}->generate_with_headers; } sub link_to { @@ -160,11 +140,15 @@ sub link_to { my $vc = $object->is_sales ? 'customer' : 'vendor'; my $id = $object->id; - return "oe.pl?action=$action&type=$type&vc=$vc&id=$id"; + if ($::instance_conf->get_feature_experimental_order) { + return "controller.pl?action=Order/$action&type=$type&id=$id"; + } else { + return "oe.pl?action=$action&type=$type&vc=$vc&id=$id"; + } } if ($object->isa('SL::DB::Customer')) { my $id = $object->id; - return "ct.pl?action=$action&id=$id&db=customer"; + return "controller.pl?action=CustomerVendor/$action&id=$id&db=customer"; } } @@ -179,11 +163,23 @@ sub _pre_parse_filter { return $filter; } +sub displayable_filter { + my ($self, $filter) = @_; + + my $column_defs = $self->column_defs; + my @texts; + + push @texts, [ $::locale->text('Sort By'), $column_defs->{$self->{sort_by}}{text} ] if $column_defs->{$self->{sort_by}}{text}; + push @texts, [ $::locale->text('Page'), $::locale->text($self->{pages}{cur}) ] if $self->{pages}{cur} > 1; + + return join '; ', map { "$_->[0]: $_->[1]" } @texts; +} + sub self_url { my ($self, %params) = @_; %params = ( action => $self->{action}, - sort_by => $self->{sort}, + sort_by => $self->{sort_by}, sort_dir => $self->{sort_dir}, page => $self->{pages}{cur}, filter => $::form->{filter},