01d168580c1be287606910d743dc2935b31fa8aa
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

1) <?php
2) 
3) require_role(ROLE_SYSADMIN);
4) 
5) $title = 'Report';
6) 
7) 
8) $year = date("Y")-1;
Bernd Wurst Erlaube das Ausgeben des Re...

Bernd Wurst authored 5 years ago

9) if (isset($_GET['year'])) {
10)     $year = (int) $_GET['year'];
11) }
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

12) 
Bernd Wurst Korrekte Darstellung von Ab...

Bernd Wurst authored 5 years ago

13) $typeresult = db_query("SELECT id, description, investment FROM buchhaltung.types");
Bernd Wurst Korrekte Dortierung der Rep...

Bernd Wurst authored 6 years ago

14) $dataresult = db_query("SELECT id, date, description, invoice_id, direction, type, amount, tax_rate, gross FROM buchhaltung.transactions WHERE date BETWEEN :from and :to ORDER BY date", array(":from" => $year."-01-01", ":to" => $year."-12-31"));
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

15) 
16) $types = array();
17) $data_by_type = array();
18) $sum_by_type = array();
Bernd Wurst Korrekte Darstellung von Ab...

Bernd Wurst authored 5 years ago

19) $investment_types = array();
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

20) while ($t = $typeresult->fetch()) {
21)     $types[$t['id']] = $t['description'];
22)     $data_by_type[$t['id']] = array();
23)     $sum_by_type[$t['id']] = 0.0;
Bernd Wurst Korrekte Darstellung von Ab...

Bernd Wurst authored 5 years ago

24)     if ($t['investment'] == 1) {
25)         $investment_types[$t['id']] = $t;
26)     }
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

27) }
28) 
29) while ($line = $dataresult->fetch()) {
30)     $data_by_type[$line['type']][] = $line;
31) }
32) 
33) 
34) output("Journal für $year (01.01.$year-31.12.$year, gruppiert nach Buchungskonten)");
35) 
36) DEBUG($types);
Bernd Wurst Korrekte Darstellung von Ab...

Bernd Wurst authored 5 years ago

37) DEBUG($investment_types);
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

38) $net_by_type = array(0 => array(-1 => array(), 0 => array(), 19 => array()));
39) $umsatzsteuer = 0.0;
Bernd Wurst Umsatzsteuer besser aufschl...

Bernd Wurst authored 4 years ago

40) $ustbetraege = array();
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

41) $vorsteuer = 0.0;
42) foreach ($types as $id => $t) {
43)     if (count($data_by_type[$id]) == 0) {
44)         continue;
45)     }
46)     output("<h3>$t</h3>");
Bernd Wurst Korrekte Dortierung der Rep...

Bernd Wurst authored 6 years ago

47)     output('<table style="font-size: 10pt;">');
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

48)     $umsatz19proz = 0.0;
49)     $umsatz0proz = 0.0;
50)     $umsatzandereproz = 0.0;
51)     $netsum = 0.0;
52)     $ustsum = 0.0;
53)     foreach ($data_by_type[$id] as $line) {
54)         $net = $line['amount'];
55)         if ($line['gross'] == 1 && $line['tax_rate'] > 0) {
56)             $net = $net / (1.0+($line['tax_rate']/100));
57)         }
58)         if ($line['direction'] == 'out') {
59)             $net = -$net;
60)         }
61)         $ust = $net * ($line['tax_rate']/100);
62)         if ($line['tax_rate'] == 19.0) {
63)             $umsatz19proz += $net;
64)         } elseif ($line['tax_rate'] == 0.0) {
65)             $umsatz0proz += $net;
66)         } else {
67)             $umsatzandereproz += $net;
68)         }
69)         $netsum += $net;
70)         $ustsum += $ust;
71)         if ($id == 0) {
Bernd Wurst Umsatzsteuer besser aufschl...

Bernd Wurst authored 4 years ago

72)             if (!isset($ustbetraege[$line['tax_rate']])) {
73)                 $ustbetraege[$line['tax_rate']] = 0;
74)             }
75)             $ustbetraege[$line['tax_rate']] += $ust;
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

76)             $umsatzsteuer += $ust;
77)         } else {
78)             $vorsteuer += $ust;
79)         }
80)         $gross = $net + $ust;
81)         $net = str_replace('.', ',', sprintf('%.2f €', $net));
82)         $ust = str_replace('.', ',', sprintf('%.2f €', $ust));
83)         $gross = str_replace('.', ',', sprintf('%.2f €', $gross));
Bernd Wurst Umsatzsteuer besser aufschl...

Bernd Wurst authored 4 years ago

84)         output("<tr><td>".$line['date']."</td><td>".$line['description']."</td><td style=\"text-align: right;\">".$net."</td><td style=\"text-align: right;\">".$line['tax_rate']."%</td><td style=\"text-align: right;\">".$ust."</td><td style=\"text-align: right;\">".$gross."</td></tr>\n");
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

85)     }
86)     if ($id == 0) {
87)         $net_by_type[0][-1] = $umsatzandereproz;
88)         $net_by_type[0][0] = $umsatz0proz;
89)         $net_by_type[0][19] = $umsatz19proz;
90)     } else {
91)         $net_by_type[$id] = $netsum;
92)     }
93)     $netsum = str_replace('.', ',', sprintf('%.2f €', $netsum));
94)     $ustsum = str_replace('.', ',', sprintf('%.2f €', $ustsum));
Bernd Wurst Umsatzsteuer besser aufschl...

Bernd Wurst authored 4 years ago

95)     output("<tr><td colspan=\"2\" style=\"font-weight: bold;text-align: right;\">Summe $t:</td><td style=\"font-weight: bold;text-align: right;\">$netsum</td><td></td><td style=\"font-weight: bold;text-align: right;\">$ustsum</td><td></td></tr>\n");
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

96)     output('</table>');
97) }
98) 
99) output("<h3>Summen</h3>");
100) 
101) output('<table>');
102) $einnahmensumme = 0.0;
103) output("<tr><td>Einnahmen 19% USt netto</td><td style=\"text-align: right;\">".number_format($net_by_type[0][19], 2, ',', '.')." €</td></tr>");
104) $einnahmensumme += $net_by_type[0][19];
Bernd Wurst Umsatzsteuer besser aufschl...

Bernd Wurst authored 4 years ago

105) output("<tr><td>Einnahme Umsatzsteuer 19%</td><td style=\"text-align: right;\">".number_format($ustbetraege[19], 2, ',', '.')." €</td></tr>");
106) $einnahmensumme += $ustbetraege[19];
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

107) output("<tr><td>Einnahmen innergem. Lieferung (steuerfrei §4/1b UStG)</td><td style=\"text-align: right;\">".number_format($net_by_type[0][0], 2, ',', '.')." €</td></tr>");
108) $einnahmensumme += $net_by_type[0][0];
109) output("<tr><td>Einnahmen EU-Ausland (VATMOSS)</td><td style=\"text-align: right;\">".number_format($net_by_type[0][-1], 2, ',', '.')." €</td></tr>");
110) $einnahmensumme += $net_by_type[0][-1];
Bernd Wurst Umsatzsteuer besser aufschl...

Bernd Wurst authored 4 years ago

111) $einzelust = '';
112) foreach ($ustbetraege as $satz => $ust) {
113)     if ($satz == 0 || $satz == 19) {
114)         continue;
115)     }
116)     output("<tr><td>- Umsatzsteuer $satz%</td><td style=\"text-align: right;\">".number_format($ust, 2, ',', '.')." €</td></tr>");
117)     $einnahmensumme += $ust;
118) }
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

119) 
120) output("<tr><td><b>Summe Einnahmen:</b></td><td style=\"text-align: right;\"><b>".number_format($einnahmensumme, 2, ',', '.')." €</td></tr>");
121) output("<tr><td colspan=\"2\"></td></tr>");
122) $ausgabensumme = 0.0;
123) foreach ($types as $id => $t) {
Bernd Wurst Korrekte Darstellung von Ab...

Bernd Wurst authored 5 years ago

124)     if ($id == 0 || !isset($net_by_type[$id]) || array_key_exists($id, $investment_types)) {
Bernd Wurst Neues Modul für unsere Buch...

Bernd Wurst authored 6 years ago

125)         continue;
126)     }
127)     $ausgabensumme -= $net_by_type[$id];
128)     output("<tr><td>".$t."</td><td style=\"text-align: right;\">".number_format(-$net_by_type[$id], 2, ',', '.')." €</td></tr>");
129) }
130) 
131) output("<tr><td>Vorsteuer</td><td style=\"text-align: right;\">".number_format(-$vorsteuer, 2, ',', '.')." €</td></tr>");
132) $ausgabensumme -= $vorsteuer;
133) output("<tr><td><b>Summe Ausgaben:</b></td><td style=\"text-align: right;\"><b>".number_format($ausgabensumme, 2, ',', '.')." €</td></tr>");
134) output("<tr><td colspan=\"2\"></td></tr>");
135) 
136) output("<tr><td><b>Überschuss aus laufendem Betrieb:</b></td><td style=\"text-align: right;\"><b>".number_format($einnahmensumme-$ausgabensumme, 2, ',', '.')." €</td></tr>");
137) output('</table>');