Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3231d8fd

Von Kivitendo Admin vor mehr als 7 Jahren hinzugefügt

  • ID 3231d8fdbc4d2f756fb631e5768ca4a992150157
  • Vorgänger 5570a18e
  • Nachfolger 229c0071

RP.pm income_statement: EÜR/GuV mit Kontennachweis

  • 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.

Unterschiede anzeigen:

SL/RP.pm
39 39
use Data::Dumper;
40 40
use SL::DB::Helper::AccountingPeriod qw(get_balance_starting_date);
41 41
use List::Util qw(sum);
42
use List::UtilsBy qw(partition_by sort_by);
42 43
use SL::DB;
43 44

  
44 45
# use warnings;
......
1845 1846
                  $form, "pos_eur");
1846 1847

  
1847 1848

  
1849
  # add extra information to form to be used by template
1850
  my %charts_by_category =
1851
    partition_by { $_->{pos_eur} }
1852
    sort_by      { $_->{accno}   }
1853
    map          { $form->{charts}->{$_} }
1854
    keys %{ $form->{charts} };
1855
  $form->{"charts_by_category"} = \%charts_by_category;
1856

  
1857
  $form->{"categories_income"}  = \@categories_einnahmen;
1858
  $form->{"categories_expense"} = \@categories_ausgaben;
1859

  
1860
  $form->{category_names} = AM->get_eur_categories($myconfig, $form);
1861

  
1862
  my %eur_amounts;
1863

  
1848 1864
  foreach my $item (@categories_einnahmen) {
1849
    $form->{"eur${item}"} =
1850
      $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2);
1865
    $eur_amounts{$item} = $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2);
1851 1866
    $form->{"sumeura"} += $form->{$item};
1852 1867
  }
1853 1868
  foreach my $item (@categories_ausgaben) {
1854
    $form->{"eur${item}"} =
1855
      $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2);
1869
    $eur_amounts{$item} = $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2);
1856 1870
    $form->{"sumeurb"} += $form->{$item};
1857 1871
  }
1858 1872

  
1859 1873
  $form->{"guvsumme"} = $form->{"sumeura"} - $form->{"sumeurb"};
1860 1874

  
1875
  $form->{eur_amounts} = \%eur_amounts;
1876

  
1861 1877
  foreach my $item (@ergebnisse) {
1862 1878
    $form->{$item} =
1863 1879
      $form->format_amount($myconfig, $form->round_amount($form->{$item}, 2),2);
locale/de/all
548 548
  'Cash'                        => 'Zahlungsverkehr',
549 549
  'Cash accounting'             => 'Ist-Versteuerung',
550 550
  'Cash basis accounting'       => 'Einnahmen-Überschuss-Rechnung',
551
  'Category'                    => 'Kategorie',
551 552
  'Cc'                          => 'Cc',
552 553
  'Cc E-mail'                   => 'CC (E-Mail)',
553 554
  'Change default bin for this parts' => 'Standardlagerplatz für diese Waren ändern',
......
565 566
  'Chart'                       => 'Buchungskonto',
566 567
  'Chart Type'                  => 'Kontentyp',
567 568
  'Chart balance'               => 'Kontensaldo',
569
  'Chart list'                  => 'Kontenliste',
568 570
  'Chart of Accounts'           => 'Kontenübersicht',
569 571
  'Chart picker'                => 'Kontenauswahl',
570 572
  'Chartaccounts connected to this Tax:' => 'Konten, die mit dieser Steuer verknüpft sind:',
......
1444 1446
  'Here\'s an example command line:' => 'Hier ist eine Kommandozeile, die als Beispiel dient:',
1445 1447
  'Hide Filter'                 => 'Filter verbergen',
1446 1448
  'Hide all details'            => 'Alle Details verbergen',
1449
  'Hide buttons'                => 'Knöpfe verstecken',
1447 1450
  'Hide by default'             => 'Standardmäßig verstecken',
1448 1451
  'Hide chart details'          => 'Konteninformation verstecken',
1452
  'Hide chart list'             => 'Kontenliste verstecken',
1453
  'Hide charts'                 => 'Konten verstecken',
1449 1454
  'Hide details'                => 'Details verbergen',
1450 1455
  'Hide help text'              => 'Hilfetext verbergen',
1451 1456
  'Hide mappings (csv_import)'  => 'Spaltenzuordnungen verbergen',
......
2661 2666
  'Show all details'            => 'Alle Details anzeigen',
2662 2667
  'Show all parts'              => 'Alle Artikel anzeigen',
2663 2668
  'Show by default'             => 'Standardmäßig anzeigen',
2669
  'Show chart list'             => 'Kontenliste zeigen',
2670
  'Show charts'                 => 'Konten zeigen',
2664 2671
  'Show custom variable search inputs' => 'Suchoptionen für Benutzerdefinierte Variablen verstecken',
2665 2672
  'Show delete button in purchase delivery orders?' => 'Soll der "Löschen"-Knopf bei Einkaufslieferscheinen angezeigt werden?',
2666 2673
  'Show delete button in purchase orders?' => 'Soll der "Löschen"-Knopf bei Lieferantenaufträgen angezeigt werden?',
templates/webpages/rp/income_statement.html
1 1
[%- USE T8 %]
2 2
[%- USE HTML %]
3 3
[%- USE LxERP %]
4
[%- USE L %]
5
[% L.button_tag('', LxERP.t8('Hide buttons'), id="hide_buttons_button", class="hide") %]
6
[% L.button_tag('', LxERP.t8('Show charts'),  id="show_charts_button",  class="hide") %]
7
[% L.button_tag('', LxERP.t8('Hide charts'),  id="hide_charts_button",  class="hide") %]
4 8

  
5
<h3 align=center> [% title %]</h3>
9
<h3 align="center" id="show_buttons"> [% title %]</h3>
6 10
<h3 align=center>
7 11
[% period %]<br>
8 12
[% accounting_method %]<br>
......
10 14
<br>[% report_date %]
11 15
</h3>
12 16

  
13
<table width=100% border=0>
17
<style type="text/css">
18

  
19
#eurtable {
20
  border-collapse: collapse;
21
  width: 100%;
22
}
23

  
24
tr.category {
25
  /* background set via jquery */
26
}
27

  
28
tr.chart {
29
  border: 0;
30
}
31

  
32
td.chartname {
33
  padding-left: 50px;
34
}
35

  
36
tr.chartrow {
37
  font-size: 75%;
38
}
39

  
40
.guv_row_background {
41
  background:#f0f0f0;
42
}
43
</style>
44

  
45
<table id="eurtable">
14 46
<tr>
15 47
  <td width=75% align=left colspan=2><font size="+1"><b>A. Betriebseinnahmen</font></b><br></td>
16 48
  <td></td>
17 49
</tr>
18 50

  
19
<tr>
20
  <td>
21
    Umsatzerl&ouml;se
22
  </td>
23
  <td>
24
    [% eur1 %]
25
  </td>
26
</tr>
27
<tr>
28
  <td>
29
    sonstige Erl&ouml;se
30
  </td>
31
  <td>
32
    [% eur2 %]
33
  </td>
34
</tr>
35
<tr>
36
  <td>
37
    Privatanteile
38
  </td>
39
  <td>
40
    [% eur3 %]
41
  </td>
42
</tr>
43
<tr>
44
  <td>
45
    Zinsertr&auml;ge
46
  </td>
47
  <td>
48
    [% eur4 %]
49
  </td>
50
</tr>
51
<tr>
52
  <td>
53
    Au&szlig;erordentliche Ertr&auml;ge
54
  </td>
55
  <td>
56
    [% eur5 %]
57
  </td>
58
</tr>
59
<tr>
60
  <td>
61
    Vereinnahmte Umsatzsteuer
62
  </td>
63
  <td>
64
    [% eur6 %]
65
  </td>
66
</tr>
67
<tr>
68
  <td>
69
    Umsatzsteuererstattungen
70
  </td>
71
  <td>
72
    [% eur7 %]
73
  </td>
74
</tr>
75

  
76

  
51
[% FOREACH i IN categories_income %]
52
  <tr class="category" data-catid="cat[% i %]">
53
    <td>
54
      [% HTML.escape(category_names.item(i)) %]
55
    </td>
56
    <td class="numeric">
57
      [% eur_amounts.item(i) %]
58
    </td>
59
  </tr>
60
  [% FOREACH chart = charts_by_category.item(i).list %]
61
  <tr class="chartrow cat[% i %]">
62
    <td class="chartname">[% chart.accno %] [% chart.description %]</td>
63
    <td class="numeric"> [% LxERP.format_amount(chart.amount,2) %] </td>
64
  </tr>
65
  [% END %]
66
[% END %]
77 67
<tr>
78 68
  <td> </td>
79 69
  <td><hr noshade size=1></td>
......
92 82
  <td></td>
93 83
</tr>
94 84

  
95
<tr>
96
  <td>
97
    Wareneing&auml;nge
98
  </td>
99
  <td>
100
    [% eur8 %]
101
  </td>
102
</tr>
103
<tr>
104
  <td>
105
    L&ouml;hne und Geh&auml;lter
106
  </td>
107
  <td>
108
    [% eur9 %]
109
  </td>
110
</tr>
111
<tr>
112
  <td>
113
    Gesetzlicher sozialer Aufwand
114
  </td>
115
  <td>
116
    [% eur10 %]
117
  </td>
118
</tr>
119
<tr>
120
  <td>
121
    Mieten
122
  </td>
123
  <td>
124
    [% eur11 %]
125
  </td>
126
</tr>
127
<tr>
128
  <td>
129
    Gas, Strom, Wasser
130
  </td>
131
  <td>
132
    [% eur12 %]
133
  </td>
134
</tr>
135
<tr>
136
  <td>
137
    Instandhaltung
138
  </td>
139
  <td>
140
    [% eur13 %]
141
  </td>
142
</tr>
143
<tr>
144
  <td>
145
    Steuern, Versicherungen, Beitr&auml;ge
146
  </td>
147
  <td>
148
    [% eur14 %]
149
  </td>
150
</tr>
151
<tr>
152
  <td>
153
    Kfz-Steuern
154
  </td>
155
  <td>
156
    [% eur15 %]
157
  </td>
158
</tr><tr>
159
  <td>
160
    Kfz-Versicherungen
161
  </td>
162
  <td>
163
    [% eur16 %]
164
  </td>
165
</tr><tr>
166
  <td>
167
    Sonstige Fahrzeugkosten
168
  </td>
169
  <td>
170
    [% eur17 %]
171
  </td>
172
</tr><tr>
173
  <td>
174
    Werbe- und Reisekosten
175
  </td>
176
  <td>
177
    [% eur18 %]
178
  </td>
179
</tr><tr>
180
  <td>
181
    Instandhaltung und Werkzeuge
182
  </td>
183
  <td>
184
    [% eur19 %]
185
  </td>
186
</tr><tr>
187
  <td>
188
    Fachzeitschriften, B&uuml;cher
189
  </td>
190
  <td>
191
    [% eur20 %]
192
  </td>
193
</tr><tr>
194
  <td>
195
    Miete f&uuml;r Einrichtungen
196
  </td>
197
  <td>
198
    [% eur21 %]
199
  </td>
200
</tr><tr>
201
  <td>
202
    Rechts- und Beratungskosten
203
  </td>
204
  <td>
205
    [% eur22 %]
206
  </td>
207
</tr><tr>
208
  <td>
209
    B&uuml;robedarf, Porto, Telefon
210
  </td>
211
  <td>
212
    [% eur23 %]
213
  </td>
214
</tr><tr>
215
  <td>
216
    Sonstige Aufwendungen
217
  </td>
218
  <td>
219
    [% eur24 %]
220
  </td>
221
</tr><tr>
222
  <td>
223
    Abschreibungen auf Anlageverm&ouml;gen
224
  </td>
225
  <td>
226
    [% eur25 %]
227
  </td>
228
</tr><tr>
229
  <td>
230
    Abschreibungen auf GWG
231
  </td>
232
  <td>
233
    [% eur26 %]
234
  </td>
235
</tr><tr>
236
  <td>
237
    Vorsteuer
238
  </td>
239
  <td>
240
    [% eur27 %]
241
  </td>
242
</tr><tr>
243
  <td>
244
    Umsatzsteuerzahlungen
245
  </td>
246
  <td>
247
    [% eur28 %]
248
  </td>
249
</tr><tr>
250
  <td>
251
    Zinsaufwand
252
  </td>
253
  <td>
254
    [% eur29 %]
255
  </td>
256
</tr><tr>
257
  <td>
258
    Au&szlig;erordentlicher Aufwand
259
  </td>
260
  <td>
261
    [% eur30 %]
262
  </td>
263
</tr><tr>
264
  <td>
265
    Betriebliche Steuern
266
  </td>
267
  <td>
268
    [% eur31 %]
269
  </td>
270
</tr>
271

  
272

  
85
[% FOREACH i IN categories_expense %]
86
  <tr class="category" data-catid="cat[% i %]">
87
    <td>
88
      [% HTML.escape(category_names.item(i)) %]
89
    </td>
90
    <td class="numeric">
91
      [% eur_amounts.item(i) %]
92
    </td>
93
  </tr>
94
  [% FOREACH chart = charts_by_category.item(i).list %]
95
  <tr class="chartrow cat[% i %]">
96
    <td class="chartname">[% chart.accno %] [% chart.description %]</td>
97
    <td class="numeric"> [% LxERP.format_amount(chart.amount,2) %] </td>
98
  </tr>
99
  [% END %]
100
[% END %]
273 101
<tr>
274 102
  <td> </td>
275 103
  <td><hr noshade size=1></td>
......
290 118

  
291 119
</table>
292 120

  
121

  
122
<br>
123

  
124
[% L.button_tag('', LxERP.t8('Show chart list'), id="show_chartlist_button", class="hide") %]
125
[% L.button_tag('', LxERP.t8('Hide chart list'), id="hide_chartlist_button", class="hide") %]
126

  
127
<div id="chartlist">
128
<div>[% 'Chart list' | $T8 %]</div>
129
<div>
130
<table>
131
<tr>
132
  <th>[% 'Chart'    | $T8 %]</th>
133
  <th>[% 'Amount'   | $T8 %]</th>
134
  <th>[% 'Category' | $T8 %]</th>
135
</tr>
136
[% FOREACH key = charts.keys.sort %]
137
[% UNLESS charts.$key.pos_eur %]
138
[% NEXT %]
139
[% END %]
140
<tr>
141
 <td>[% charts.$key.accno %]</td>
142
 <td class="numeric">[%  LxERP.format_amount( charts.$key.amount, 2 ) %]</td>
143
 <td>[% HTML.escape(category_names.item(charts.$key.pos_eur)) %]</td>
144
</tr>
145
[% END %]
146
</table>
147
</div>
148
</div>
293 149
</body>
294 150
</html>
295 151

  
152
<script language="javascript">
153
$( document ).ready(function() {
154
  $( ".chartrow" ).hide();
155
  $( "#hide_charts_button" ).hide();
156
  $( "#hide_chartlist_button" ).hide();
157
  $( "#chartlist" ).hide();
158
  $( '.category:even' ).css('background-color','#f0f0f0');
159
  $( '.category:odd' ).css('background-color','#f8f8f8');
160

  
161
  $( "#show_chartlist_button" ).click(function() {
162
    $( "#chartlist" ).toggle();
163
    $('html, body').animate({
164
        scrollTop: $(this).offset().top
165
    }, 500);
166
    $(this).hide();
167
    $("#hide_chartlist_button").show();
168
  });
169

  
170
  $( "#hide_chartlist_button" ).click(function() {
171
    $( "#chartlist" ).toggle();
172
    $('html, body').animate({
173
        scrollTop: $(this).offset().top
174
    }, 500);
175
    $(this).hide();
176
    $("#show_chartlist_button").show();
177
  });
178

  
179
  $( "#hide_buttons_button" ).click(function() {
180
    $( ".hide" ).hide();
181
  });
182

  
183
  $( "#show_buttons" ).click(function() {
184
    $( ".hide" ).show();
185
  });
186

  
187
  $( "#show_charts_button" ).click(function() {
188
    $( ".chartrow" ).show();
189
    $(this).hide();
190
    $("#hide_charts_button").show();
191
  });
192

  
193
  $( "#hide_charts_button" ).click(function() {
194
    $( ".chartrow" ).hide();
195
    $(this).hide();
196
    $("#show_charts_button").show();
197
  });
198

  
199
  $( ".category" ).click(function() {
200
    var chartrow_class = $(this).attr('data-catid');
201
    $('.' + chartrow_class).toggle();
202
  });
203
})
204

  
205
</script>

Auch abrufbar als: Unified diff