From 3231d8fdbc4d2f756fb631e5768ca4a992150157 Mon Sep 17 00:00:00 2001 From: "G. Richardson" Date: Mon, 3 Apr 2017 08:35:53 +0200 Subject: [PATCH] =?utf8?q?RP.pm=20income=5Fstatement:=20E=C3=9CR/GuV=20mit?= =?utf8?q?=20Kontennachweis?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * Am Ende des Berichts kann man sich eine Liste aller Konten aus dem Bericht anzeigen, mit Betrag und der Kategorie, in dem das Konto vorkommt. Die Liste ist nach Kontonummer sortiert. * Mit Klick auf eine Kategorie werden die dazugehörigen Konten angezeigt, indem sie unterhalb der Überschrift mit einer etwas kleineren Schrift innerhalb der Tabelle "aufgeklappt" werden. * Am Kopf der Seite kann man mit dem Knopf "Konten zeigen" alle Konten auf einmal aufklappen. * Der Knopf "Knöpfe verstecken" dient dazu, die Knöpfe auszublenden, damit man die Seite ausdrucken kann. Mit Klick auf die Überschrift "Einnahmenüberschußrechnung" werden alle Knöpfe wieder eingeblendet. * die Namen der Kategorien werden jetzt aus der Datenbank ausgelesen und stehen nicht mehr hartkodiert im Template. Außerdem wurde das Template vereinfacht, indem die Summen der Kategorien nicht mehr in einzelnen Form-Variablen "eur1", "eur2", ... gespeichert werden, sondern alle Summe in einem zentralen Hash stehen, und per FOREACH-Schleife im Template ausgelesen werden können. --- SL/RP.pm | 24 +- locale/de/all | 7 + templates/webpages/rp/income_statement.html | 386 ++++++++------------ 3 files changed, 175 insertions(+), 242 deletions(-) diff --git a/SL/RP.pm b/SL/RP.pm index a04351e0d..452f1164d 100644 --- a/SL/RP.pm +++ b/SL/RP.pm @@ -39,6 +39,7 @@ use SL::DBUtils; use Data::Dumper; use SL::DB::Helper::AccountingPeriod qw(get_balance_starting_date); use List::Util qw(sum); +use List::UtilsBy qw(partition_by sort_by); use SL::DB; # use warnings; @@ -1845,19 +1846,34 @@ sub income_statement { $form, "pos_eur"); + # add extra information to form to be used by template + my %charts_by_category = + partition_by { $_->{pos_eur} } + sort_by { $_->{accno} } + map { $form->{charts}->{$_} } + keys %{ $form->{charts} }; + $form->{"charts_by_category"} = \%charts_by_category; + + $form->{"categories_income"} = \@categories_einnahmen; + $form->{"categories_expense"} = \@categories_ausgaben; + + $form->{category_names} = AM->get_eur_categories($myconfig, $form); + + my %eur_amounts; + foreach my $item (@categories_einnahmen) { - $form->{"eur${item}"} = - $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2); + $eur_amounts{$item} = $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2); $form->{"sumeura"} += $form->{$item}; } foreach my $item (@categories_ausgaben) { - $form->{"eur${item}"} = - $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2); + $eur_amounts{$item} = $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2); $form->{"sumeurb"} += $form->{$item}; } $form->{"guvsumme"} = $form->{"sumeura"} - $form->{"sumeurb"}; + $form->{eur_amounts} = \%eur_amounts; + foreach my $item (@ergebnisse) { $form->{$item} = $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2); diff --git a/locale/de/all b/locale/de/all index 0896c9091..839d7ab56 100755 --- a/locale/de/all +++ b/locale/de/all @@ -548,6 +548,7 @@ $self->{texts} = { 'Cash' => 'Zahlungsverkehr', 'Cash accounting' => 'Ist-Versteuerung', 'Cash basis accounting' => 'Einnahmen-Überschuss-Rechnung', + 'Category' => 'Kategorie', 'Cc' => 'Cc', 'Cc E-mail' => 'CC (E-Mail)', 'Change default bin for this parts' => 'Standardlagerplatz für diese Waren ändern', @@ -565,6 +566,7 @@ $self->{texts} = { 'Chart' => 'Buchungskonto', 'Chart Type' => 'Kontentyp', 'Chart balance' => 'Kontensaldo', + 'Chart list' => 'Kontenliste', 'Chart of Accounts' => 'Kontenübersicht', 'Chart picker' => 'Kontenauswahl', 'Chartaccounts connected to this Tax:' => 'Konten, die mit dieser Steuer verknüpft sind:', @@ -1444,8 +1446,11 @@ $self->{texts} = { 'Here\'s an example command line:' => 'Hier ist eine Kommandozeile, die als Beispiel dient:', 'Hide Filter' => 'Filter verbergen', 'Hide all details' => 'Alle Details verbergen', + 'Hide buttons' => 'Knöpfe verstecken', 'Hide by default' => 'Standardmäßig verstecken', 'Hide chart details' => 'Konteninformation verstecken', + 'Hide chart list' => 'Kontenliste verstecken', + 'Hide charts' => 'Konten verstecken', 'Hide details' => 'Details verbergen', 'Hide help text' => 'Hilfetext verbergen', 'Hide mappings (csv_import)' => 'Spaltenzuordnungen verbergen', @@ -2661,6 +2666,8 @@ $self->{texts} = { 'Show all details' => 'Alle Details anzeigen', 'Show all parts' => 'Alle Artikel anzeigen', 'Show by default' => 'Standardmäßig anzeigen', + 'Show chart list' => 'Kontenliste zeigen', + 'Show charts' => 'Konten zeigen', 'Show custom variable search inputs' => 'Suchoptionen für Benutzerdefinierte Variablen verstecken', 'Show delete button in purchase delivery orders?' => 'Soll der "Löschen"-Knopf bei Einkaufslieferscheinen angezeigt werden?', 'Show delete button in purchase orders?' => 'Soll der "Löschen"-Knopf bei Lieferantenaufträgen angezeigt werden?', diff --git a/templates/webpages/rp/income_statement.html b/templates/webpages/rp/income_statement.html index a38cd99eb..9800d1e72 100644 --- a/templates/webpages/rp/income_statement.html +++ b/templates/webpages/rp/income_statement.html @@ -1,8 +1,12 @@ [%- USE T8 %] [%- USE HTML %] [%- USE LxERP %] +[%- USE L %] +[% L.button_tag('', LxERP.t8('Hide buttons'), id="hide_buttons_button", class="hide") %] +[% L.button_tag('', LxERP.t8('Show charts'), id="show_charts_button", class="hide") %] +[% L.button_tag('', LxERP.t8('Hide charts'), id="hide_charts_button", class="hide") %] -

[% title %]

+

[% title %]

[% period %]
[% accounting_method %]
@@ -10,70 +14,56 @@
[% report_date %]

- + + +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +[% FOREACH i IN categories_income %] + + + + + [% FOREACH chart = charts_by_category.item(i).list %] + + + + + [% END %] +[% END %] @@ -92,184 +82,22 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +[% FOREACH i IN categories_expense %] + + + + + [% FOREACH chart = charts_by_category.item(i).list %] + + + + + [% END %] +[% END %] @@ -290,6 +118,88 @@
A. Betriebseinnahmen
- Umsatzerlöse - - [% eur1 %] -
- sonstige Erlöse - - [% eur2 %] -
- Privatanteile - - [% eur3 %] -
- Zinserträge - - [% eur4 %] -
- Außerordentliche Erträge - - [% eur5 %] -
- Vereinnahmte Umsatzsteuer - - [% eur6 %] -
- Umsatzsteuererstattungen - - [% eur7 %] -
+ [% HTML.escape(category_names.item(i)) %] + + [% eur_amounts.item(i) %] +
[% chart.accno %] [% chart.description %] [% LxERP.format_amount(chart.amount,2) %]

- Wareneingänge - - [% eur8 %] -
- Löhne und Gehälter - - [% eur9 %] -
- Gesetzlicher sozialer Aufwand - - [% eur10 %] -
- Mieten - - [% eur11 %] -
- Gas, Strom, Wasser - - [% eur12 %] -
- Instandhaltung - - [% eur13 %] -
- Steuern, Versicherungen, Beiträge - - [% eur14 %] -
- Kfz-Steuern - - [% eur15 %] -
- Kfz-Versicherungen - - [% eur16 %] -
- Sonstige Fahrzeugkosten - - [% eur17 %] -
- Werbe- und Reisekosten - - [% eur18 %] -
- Instandhaltung und Werkzeuge - - [% eur19 %] -
- Fachzeitschriften, Bücher - - [% eur20 %] -
- Miete für Einrichtungen - - [% eur21 %] -
- Rechts- und Beratungskosten - - [% eur22 %] -
- Bürobedarf, Porto, Telefon - - [% eur23 %] -
- Sonstige Aufwendungen - - [% eur24 %] -
- Abschreibungen auf Anlagevermögen - - [% eur25 %] -
- Abschreibungen auf GWG - - [% eur26 %] -
- Vorsteuer - - [% eur27 %] -
- Umsatzsteuerzahlungen - - [% eur28 %] -
- Zinsaufwand - - [% eur29 %] -
- Außerordentlicher Aufwand - - [% eur30 %] -
- Betriebliche Steuern - - [% eur31 %] -
+ [% HTML.escape(category_names.item(i)) %] + + [% eur_amounts.item(i) %] +
[% chart.accno %] [% chart.description %] [% LxERP.format_amount(chart.amount,2) %]

+ +
+ +[% L.button_tag('', LxERP.t8('Show chart list'), id="show_chartlist_button", class="hide") %] +[% L.button_tag('', LxERP.t8('Hide chart list'), id="hide_chartlist_button", class="hide") %] + +
+
[% 'Chart list' | $T8 %]
+
+ + + + + + +[% FOREACH key = charts.keys.sort %] +[% UNLESS charts.$key.pos_eur %] +[% NEXT %] +[% END %] + + + + + +[% END %] +
[% 'Chart' | $T8 %][% 'Amount' | $T8 %][% 'Category' | $T8 %]
[% charts.$key.accno %][% LxERP.format_amount( charts.$key.amount, 2 ) %][% HTML.escape(category_names.item(charts.$key.pos_eur)) %]
+
+
+ -- 2.20.1