X-Git-Url: http://wagnertech.de/git?p=kivitendo-erp.git;a=blobdiff_plain;f=SL%2FController%2FChart.pm;fp=SL%2FController%2FChart.pm;h=eb2b4739a369b4dc0f788523301f5c964a7aee66;hp=624a65b1da52324e90bbbf890aa5ff822752d2fa;hb=53593baa211863fbf66540cf1bcc36c8fb37257f;hpb=deb4d2dbb676d7d6f69dfe7815d6e0cb09bd4a44 diff --git a/SL/Controller/Chart.pm b/SL/Controller/Chart.pm index 624a65b1d..eb2b4739a 100644 --- a/SL/Controller/Chart.pm +++ b/SL/Controller/Chart.pm @@ -4,6 +4,9 @@ use strict; use parent qw(SL::Controller::Base); use Clone qw(clone); +use List::UtilsBy qw(partition_by sort_by); + +use SL::AM; use SL::DB::Chart; use SL::Controller::Helper::GetModels; use SL::Locale::String qw(t8); @@ -29,6 +32,7 @@ sub action_ajax_autocomplete { if (1 == scalar @{ $exact_matches = SL::DB::Manager::Chart->get_all( query => [ SL::DB::Manager::Chart->type_filter($::form->{filter}{type}), + charttype => 'A', or => [ description => { ilike => $::form->{filter}{'all:substr:multi::ilike'} }, accno => { ilike => $::form->{filter}{'all:substr:multi::ilike'} }, @@ -54,7 +58,7 @@ sub action_ajax_autocomplete { } sub action_test_page { - $_[0]->render('chart/test_page'); + $_[0]->render('chart/test_page', pre_filled_chart => SL::DB::Manager::Chart->get_first); } sub action_chart_picker_search { @@ -81,6 +85,42 @@ sub action_show { } } +sub action_show_report_configuration_overview { + my ($self) = @_; + + my @all_charts = sort { $a->accno cmp $b->accno } @{ SL::DB::Manager::Chart->get_all(inject_results => 1) }; + my @types = qw(bilanz bwa er eur); + my %headings = ( + bilanz => t8('Balance'), + bwa => t8('BWA'), + er => t8('Erfolgsrechnung'), + eur => t8('EUER'), + ); + + my @data; + + foreach my $type (@types) { + my $method = "pos_${type}"; + my $names = $type eq 'bwa' ? AM->get_bwa_categories(\%::myconfig, $::form) + : $type eq 'eur' ? AM->get_eur_categories(\%::myconfig, $::form) + : {}; + my %charts = partition_by { $_->$method // '' } @all_charts; + delete $charts{''}; + + next if !%charts; + + push @data, { + type => $type, + heading => $headings{$type}, + charts => \%charts, + positions => [ sort { ($a * 1) <=> ($b * 1) } keys %charts ], + names => $names, + }; + } + + $self->render('chart/report_configuration_overview', DATA => \@data); +} + sub init_charts { # disable pagination when hiding chart details = paginate when showing chart details @@ -108,6 +148,9 @@ sub init_models { accno => t8('Account number'), description => t8('Description'), }, + query => [ + charttype => 'A', + ], ); }