Revision 3231d8fd
Von Kivitendo Admin vor mehr als 7 Jahren hinzugefügt
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öse |
|
22 |
</td> |
|
23 |
<td> |
|
24 |
[% eur1 %] |
|
25 |
</td> |
|
26 |
</tr> |
|
27 |
<tr> |
|
28 |
<td> |
|
29 |
sonstige Erlö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äge |
|
46 |
</td> |
|
47 |
<td> |
|
48 |
[% eur4 %] |
|
49 |
</td> |
|
50 |
</tr> |
|
51 |
<tr> |
|
52 |
<td> |
|
53 |
Außerordentliche Erträ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änge |
|
98 |
</td> |
|
99 |
<td> |
|
100 |
[% eur8 %] |
|
101 |
</td> |
|
102 |
</tr> |
|
103 |
<tr> |
|
104 |
<td> |
|
105 |
Löhne und Gehä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ä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ücher |
|
189 |
</td> |
|
190 |
<td> |
|
191 |
[% eur20 %] |
|
192 |
</td> |
|
193 |
</tr><tr> |
|
194 |
<td> |
|
195 |
Miete fü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ü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ö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ß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
RP.pm income_statement: EÜR/GuV mit Kontennachweis
Bericht anzeigen, mit Betrag und der Kategorie, in dem das Konto vorkommt.
Die Liste ist nach Kontonummer sortiert.
angezeigt, indem sie unterhalb der Überschrift mit einer etwas
kleineren Schrift innerhalb der Tabelle "aufgeklappt" werden.
auf einmal aufklappen.
damit man die Seite ausdrucken kann. Mit Klick auf die Überschrift
"Einnahmenüberschußrechnung" werden alle Knöpfe wieder eingeblendet.
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.