X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FSellPriceInformation.pm;h=f31f53e281972b6878afca2225490127f065e031;hb=58e12ecad2d2ed32218d20d437ba3db4f340b8e7;hp=8255e4140e9afe4c831c6234cf8529f6f88c2f96;hpb=ba0fb69ce21dd281a09d91418785fa87203f9e6c;p=kivitendo-erp.git diff --git a/SL/Controller/SellPriceInformation.pm b/SL/Controller/SellPriceInformation.pm index 8255e4140..f31f53e28 100644 --- a/SL/Controller/SellPriceInformation.pm +++ b/SL/Controller/SellPriceInformation.pm @@ -20,7 +20,7 @@ sub action_list { ); my $db_args = $self->setup_for_list(%list_params); - $self->{pages} = SL::DB::Manager::OrderItem->paginate(%list_params, args => $db_args, per_page => 5); + $self->{pages} = SL::DB::Manager::OrderItem->paginate(%list_params, args => $db_args, per_page => 10); my $bottom = $::form->parse_html_template('price_information/report_bottom', { SELF => $self }); @@ -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, options => { no_layout => 1 }); } # 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,34 @@ sub prepare_report { my $report = SL::ReportGenerator->new(\%::myconfig, $::form); $self->{report} = $report; - my @columns = qw(orddate ordnumber customer ship qty sellprice discount amount); - my @visible = qw(orddate ordnumber customer ship qty sellprice discount amount); - my @sortable = qw(orddate ordnumber customer sellprice discount ); - - my %column_defs = ( - orddate => { text => $::locale->text('Date'), - sub => sub { $_[0]->order->orddate_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 @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 = $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'), + top_info_text => $self->displayable_filter($::form->{filter}), title => $::locale->text('Sales Price information'), ); $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 { @@ -179,11 +156,24 @@ sub _pre_parse_filter { return $filter; } +sub displayable_filter { + my ($self, $filter) = @_; + + my $column_defs = $self->column_defs; + my @texts; + + push @texts, [ $::locale->text('Type'), $::locale->text($filter->{order}{type}) ] if $filter->{order}{type}; + 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},