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;
$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);
'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',
'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:',
'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',
'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?',
[%- 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") %]
-<h3 align=center> [% title %]</h3>
+<h3 align="center" id="show_buttons"> [% title %]</h3>
<h3 align=center>
[% period %]<br>
[% accounting_method %]<br>
<br>[% report_date %]
</h3>
-<table width=100% border=0>
+<style type="text/css">
+
+#eurtable {
+ border-collapse: collapse;
+ width: 100%;
+}
+
+tr.category {
+ /* background set via jquery */
+}
+
+tr.chart {
+ border: 0;
+}
+
+td.chartname {
+ padding-left: 50px;
+}
+
+tr.chartrow {
+ font-size: 75%;
+}
+
+.guv_row_background {
+ background:#f0f0f0;
+}
+</style>
+
+<table id="eurtable">
<tr>
<td width=75% align=left colspan=2><font size="+1"><b>A. Betriebseinnahmen</font></b><br></td>
<td></td>
</tr>
-<tr>
- <td>
- Umsatzerlöse
- </td>
- <td>
- [% eur1 %]
- </td>
-</tr>
-<tr>
- <td>
- sonstige Erlöse
- </td>
- <td>
- [% eur2 %]
- </td>
-</tr>
-<tr>
- <td>
- Privatanteile
- </td>
- <td>
- [% eur3 %]
- </td>
-</tr>
-<tr>
- <td>
- Zinserträge
- </td>
- <td>
- [% eur4 %]
- </td>
-</tr>
-<tr>
- <td>
- Außerordentliche Erträge
- </td>
- <td>
- [% eur5 %]
- </td>
-</tr>
-<tr>
- <td>
- Vereinnahmte Umsatzsteuer
- </td>
- <td>
- [% eur6 %]
- </td>
-</tr>
-<tr>
- <td>
- Umsatzsteuererstattungen
- </td>
- <td>
- [% eur7 %]
- </td>
-</tr>
-
-
+[% FOREACH i IN categories_income %]
+ <tr class="category" data-catid="cat[% i %]">
+ <td>
+ [% HTML.escape(category_names.item(i)) %]
+ </td>
+ <td class="numeric">
+ [% eur_amounts.item(i) %]
+ </td>
+ </tr>
+ [% FOREACH chart = charts_by_category.item(i).list %]
+ <tr class="chartrow cat[% i %]">
+ <td class="chartname">[% chart.accno %] [% chart.description %]</td>
+ <td class="numeric"> [% LxERP.format_amount(chart.amount,2) %] </td>
+ </tr>
+ [% END %]
+[% END %]
<tr>
<td> </td>
<td><hr noshade size=1></td>
<td></td>
</tr>
-<tr>
- <td>
- Wareneingänge
- </td>
- <td>
- [% eur8 %]
- </td>
-</tr>
-<tr>
- <td>
- Löhne und Gehälter
- </td>
- <td>
- [% eur9 %]
- </td>
-</tr>
-<tr>
- <td>
- Gesetzlicher sozialer Aufwand
- </td>
- <td>
- [% eur10 %]
- </td>
-</tr>
-<tr>
- <td>
- Mieten
- </td>
- <td>
- [% eur11 %]
- </td>
-</tr>
-<tr>
- <td>
- Gas, Strom, Wasser
- </td>
- <td>
- [% eur12 %]
- </td>
-</tr>
-<tr>
- <td>
- Instandhaltung
- </td>
- <td>
- [% eur13 %]
- </td>
-</tr>
-<tr>
- <td>
- Steuern, Versicherungen, Beiträge
- </td>
- <td>
- [% eur14 %]
- </td>
-</tr>
-<tr>
- <td>
- Kfz-Steuern
- </td>
- <td>
- [% eur15 %]
- </td>
-</tr><tr>
- <td>
- Kfz-Versicherungen
- </td>
- <td>
- [% eur16 %]
- </td>
-</tr><tr>
- <td>
- Sonstige Fahrzeugkosten
- </td>
- <td>
- [% eur17 %]
- </td>
-</tr><tr>
- <td>
- Werbe- und Reisekosten
- </td>
- <td>
- [% eur18 %]
- </td>
-</tr><tr>
- <td>
- Instandhaltung und Werkzeuge
- </td>
- <td>
- [% eur19 %]
- </td>
-</tr><tr>
- <td>
- Fachzeitschriften, Bücher
- </td>
- <td>
- [% eur20 %]
- </td>
-</tr><tr>
- <td>
- Miete für Einrichtungen
- </td>
- <td>
- [% eur21 %]
- </td>
-</tr><tr>
- <td>
- Rechts- und Beratungskosten
- </td>
- <td>
- [% eur22 %]
- </td>
-</tr><tr>
- <td>
- Bürobedarf, Porto, Telefon
- </td>
- <td>
- [% eur23 %]
- </td>
-</tr><tr>
- <td>
- Sonstige Aufwendungen
- </td>
- <td>
- [% eur24 %]
- </td>
-</tr><tr>
- <td>
- Abschreibungen auf Anlagevermögen
- </td>
- <td>
- [% eur25 %]
- </td>
-</tr><tr>
- <td>
- Abschreibungen auf GWG
- </td>
- <td>
- [% eur26 %]
- </td>
-</tr><tr>
- <td>
- Vorsteuer
- </td>
- <td>
- [% eur27 %]
- </td>
-</tr><tr>
- <td>
- Umsatzsteuerzahlungen
- </td>
- <td>
- [% eur28 %]
- </td>
-</tr><tr>
- <td>
- Zinsaufwand
- </td>
- <td>
- [% eur29 %]
- </td>
-</tr><tr>
- <td>
- Außerordentlicher Aufwand
- </td>
- <td>
- [% eur30 %]
- </td>
-</tr><tr>
- <td>
- Betriebliche Steuern
- </td>
- <td>
- [% eur31 %]
- </td>
-</tr>
-
-
+[% FOREACH i IN categories_expense %]
+ <tr class="category" data-catid="cat[% i %]">
+ <td>
+ [% HTML.escape(category_names.item(i)) %]
+ </td>
+ <td class="numeric">
+ [% eur_amounts.item(i) %]
+ </td>
+ </tr>
+ [% FOREACH chart = charts_by_category.item(i).list %]
+ <tr class="chartrow cat[% i %]">
+ <td class="chartname">[% chart.accno %] [% chart.description %]</td>
+ <td class="numeric"> [% LxERP.format_amount(chart.amount,2) %] </td>
+ </tr>
+ [% END %]
+[% END %]
<tr>
<td> </td>
<td><hr noshade size=1></td>
</table>
+
+<br>
+
+[% 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") %]
+
+<div id="chartlist">
+<div>[% 'Chart list' | $T8 %]</div>
+<div>
+<table>
+<tr>
+ <th>[% 'Chart' | $T8 %]</th>
+ <th>[% 'Amount' | $T8 %]</th>
+ <th>[% 'Category' | $T8 %]</th>
+</tr>
+[% FOREACH key = charts.keys.sort %]
+[% UNLESS charts.$key.pos_eur %]
+[% NEXT %]
+[% END %]
+<tr>
+ <td>[% charts.$key.accno %]</td>
+ <td class="numeric">[% LxERP.format_amount( charts.$key.amount, 2 ) %]</td>
+ <td>[% HTML.escape(category_names.item(charts.$key.pos_eur)) %]</td>
+</tr>
+[% END %]
+</table>
+</div>
+</div>
</body>
</html>
+<script language="javascript">
+$( document ).ready(function() {
+ $( ".chartrow" ).hide();
+ $( "#hide_charts_button" ).hide();
+ $( "#hide_chartlist_button" ).hide();
+ $( "#chartlist" ).hide();
+ $( '.category:even' ).css('background-color','#f0f0f0');
+ $( '.category:odd' ).css('background-color','#f8f8f8');
+
+ $( "#show_chartlist_button" ).click(function() {
+ $( "#chartlist" ).toggle();
+ $('html, body').animate({
+ scrollTop: $(this).offset().top
+ }, 500);
+ $(this).hide();
+ $("#hide_chartlist_button").show();
+ });
+
+ $( "#hide_chartlist_button" ).click(function() {
+ $( "#chartlist" ).toggle();
+ $('html, body').animate({
+ scrollTop: $(this).offset().top
+ }, 500);
+ $(this).hide();
+ $("#show_chartlist_button").show();
+ });
+
+ $( "#hide_buttons_button" ).click(function() {
+ $( ".hide" ).hide();
+ });
+
+ $( "#show_buttons" ).click(function() {
+ $( ".hide" ).show();
+ });
+
+ $( "#show_charts_button" ).click(function() {
+ $( ".chartrow" ).show();
+ $(this).hide();
+ $("#hide_charts_button").show();
+ });
+
+ $( "#hide_charts_button" ).click(function() {
+ $( ".chartrow" ).hide();
+ $(this).hide();
+ $("#show_charts_button").show();
+ });
+
+ $( ".category" ).click(function() {
+ var chartrow_class = $(this).attr('data-catid');
+ $('.' + chartrow_class).toggle();
+ });
+})
+
+</script>