X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FProject.pm;h=46a8c591e41b14d24b7eb09faf914fbade2e9f4b;hb=c6b2257945060625bcb86fa7e2efd27c737480ff;hp=fa42007bd45f6a1b50d02ba07b1e1f8ed347c411;hpb=7f8599c0909affd56ad82fd842015bb51c6a3dbf;p=kivitendo-erp.git diff --git a/SL/Controller/Project.pm b/SL/Controller/Project.pm index fa42007bd..46a8c591e 100644 --- a/SL/Controller/Project.pm +++ b/SL/Controller/Project.pm @@ -13,13 +13,17 @@ use SL::Controller::Helper::ParseFilter; use SL::Controller::Helper::ReportGenerator; use SL::CVar; use SL::DB::Customer; +use SL::DB::DeliveryOrder; +use SL::DB::Invoice; +use SL::DB::Order; use SL::DB::Project; +use SL::DB::PurchaseInvoice; use SL::Helper::Flash; use SL::Locale::String; use Rose::Object::MakeMethods::Generic ( - scalar => [ qw(project db_args flat_filter) ], + scalar => [ qw(project db_args flat_filter linked_records) ], ); __PACKAGE__->run_before('check_auth'); @@ -73,9 +77,9 @@ sub action_list { $self->prepare_report; - $self->{projects} = $self->get_models(%{ $self->db_args }); + my $projects = $self->get_models(%{ $self->db_args }); - $self->list_objects; + $self->report_generator_list_objects(report => $self->{report}, objects => $projects); } sub action_new { @@ -88,6 +92,16 @@ sub action_new { sub action_edit { my ($self) = @_; + + $self->linked_records([ + map { @{ $_ } } + grep { $_ } ( + SL::DB::Manager::Order-> get_all(where => [ globalproject_id => $self->project->id ], with_objects => [ 'customer', 'vendor' ], sort_by => 'transdate ASC'), + SL::DB::Manager::DeliveryOrder-> get_all(where => [ globalproject_id => $self->project->id ], with_objects => [ 'customer', 'vendor' ], sort_by => 'transdate ASC'), + SL::DB::Manager::Invoice-> get_all(where => [ globalproject_id => $self->project->id ], with_objects => [ 'customer' ], sort_by => 'transdate ASC'), + SL::DB::Manager::PurchaseInvoice->get_all(where => [ globalproject_id => $self->project->id ], with_objects => [ 'vendor' ], sort_by => 'transdate ASC'), + )]); + $self->display_form(title => $::locale->text('Edit project #1', $self->project->projectnumber), callback => $::form->{callback} || $self->url_for(action => 'edit', id => $self->project->id)); } @@ -248,7 +262,7 @@ sub prepare_report { controller_class => 'Project', output_format => 'HTML', top_info_text => $::locale->text('Projects'), - raw_bottom_info_text => $self->render('project/report_bottom', { no_output => 1, partial => 1 }), + raw_bottom_info_text => $self->render('project/report_bottom', { output => 0 }), title => $::locale->text('Projects'), allow_pdf_export => 1, allow_csv_export => 1, @@ -260,31 +274,6 @@ sub prepare_report { $self->set_report_generator_sort_options(report => $report, sortable_columns => \@sortable); $self->disable_pagination if $report->{options}{output_format} =~ /^(pdf|csv)$/i; - - $self->{report_data} = { - column_defs => \%column_defs, - columns => \@columns, - }; -} - -sub list_objects { - my ($self) = @_; - my $column_defs = $self->{report_data}->{column_defs}; - - for my $obj (@{ $self->{projects} || [] }) { - my %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} || {} }; - - $self->{report}->add_data(\%data); - } - - return $self->{report}->generate_with_headers; } 1;