Kunden können Ihre Rechnungen und zukünftigen Posten anschauen
bernd

bernd commited on 2008-03-18 17:36:28
Zeige 6 geänderte Dateien mit 234 Einfügungen und 0 Löschungen.


git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@993 87cf0b9e-d624-0410-a070-f6ee81989793
... ...
@@ -0,0 +1,27 @@
1
+<?php
2
+
3
+require_once('session/start.php');
4
+
5
+require_once('invoice.php');
6
+
7
+require_role(ROLE_CUSTOMER);
8
+
9
+output('<h3>Rechnungen</h3>
10
+<p>Hier können Sie Ihre bisherigen Rechnungen einsehen und herunterladen.</p>');
11
+
12
+$invoices = my_invoices();
13
+
14
+output('<table><tr><th>Nr.</th><th>Datum</th><th>Gesamtbetrag</th><th>bezahlt?</th><th>Herunterladen</th></tr>');
15
+
16
+foreach($invoices AS $invoice)
17
+{
18
+	$bezahlt = 'Nein';
19
+	if ($invoice['bezahlt'] == 1)
20
+		$bezahlt = 'Ja';
21
+	output("<tr><td>{$invoice['id']}</td><td>{$invoice['datum']}</td><td>{$invoice['betrag']} €</td><td>{$bezahlt}</td><td><a href=\"pdf.php?id={$invoice['id']}\">PDF</a> &#160; <a href=\"html.php?id={$invoice['id']}\">HTML</a></td></tr>\n");
22
+}
23
+
24
+output('</table><br />');
25
+
26
+
27
+?>
... ...
@@ -0,0 +1,60 @@
1
+<?php
2
+
3
+require_once('session/start.php');
4
+require_once('invoice.php');
5
+require_once('inc/security.php');
6
+
7
+require_role(ROLE_CUSTOMER);
8
+$section = 'invoice_current';
9
+
10
+output('<h3>Rechnung</h3>
11
+<p>Detailansicht Ihrer Rechnung. Beachten Sie bitte, dass diese Informationsseite sowie auch ein Ausdruck dieser Seite keine Rechnung darstellt. Ein gültiges Rechnungsdokument stellt lediglich die signierte PDF-Version bzw. eine Papierrechnung dar, die Sie von uns erhalten haben.</p>');
12
+
13
+$invoice_id = (int) filter_input_general($_GET['id']);
14
+
15
+output("<p>Für eine druckbare Version benutzen Sie bitte die Ausgabe <a href=\"pdf.php?id={$invoice_id}\">als PDF-Datei</a>.</p>
16
+<p>&#160;</p>");
17
+
18
+
19
+$items = invoice_items($invoice_id);
20
+$summe = 0;
21
+
22
+$invoice = invoice_details($invoice_id);
23
+
24
+output('<p style="border: 1px solid black; margin: 1em; padding: 0.5em;">Rechnungsnummer: '.$invoice_id.'<br />
25
+Kundennummer: '.$invoice['kunde'].'<br />
26
+Rechnungsdatum: '.$invoice['datum'].'
27
+</p>
28
+
29
+');
30
+
31
+
32
+output('<table><tr><th>Anzahl</th><th>Beschreibung</th><th>Einzelpreis</th><th>Gesamtbetrag</th></tr>');
33
+
34
+foreach($items AS $item)
35
+{
36
+	$anzahl = $item['anzahl'];
37
+	if (round($anzahl, 0) == $anzahl)
38
+		$anzahl = round($anzahl, 0);
39
+	$desc = $item['beschreibung'];
40
+	if ($item['enddatum'] == NULL)
41
+		$desc .= '<br />(Leistungsdatum: '.$item['datum'].')';
42
+	else
43
+		$desc .= '<br />(Leistungszeitraum: '.$item['datum'].' - '.$item['enddatum'].')';
44
+	$epreis = $item['betrag'];
45
+	if ($item['brutto'] == 0)
46
+		$epreis = $epreis * (1 + ($item['mwst'] / 100));
47
+	$gesamt = round($epreis * $item['anzahl'], 2);
48
+	$epreis = round($epreis, 2);
49
+	$summe += $gesamt;
50
+	output("<tr><td>{$anzahl}</td>");
51
+	output("<td>{$desc}</td>");
52
+	output("<td>{$epreis} €</td><td>{$gesamt} €</td></tr>\n");
53
+}
54
+
55
+output("<tr><td colspan=\"3\" style=\"text-align: right; font-weight: bold; border: none;\">Summe aller Posten:</td>");
56
+output("<td style=\"font-weight: bold;\">{$summe} €</td></tr>\n");
57
+output('</table><br />');
58
+
59
+
60
+?>
... ...
@@ -0,0 +1,64 @@
1
+<?php
2
+
3
+require_once('inc/base.php');
4
+require_once('inc/security.php');
5
+
6
+function my_invoices()
7
+{
8
+  $c = (int) $_SESSION['customerinfo']['customerno'];
9
+  $result = db_query("SELECT id,datum,betrag,bezahlt,abbuchung FROM kundendaten.ausgestellte_rechnungen WHERE kunde={$c}");
10
+  $ret = array();
11
+  while($line = mysql_fetch_assoc($result))
12
+  	array_push($ret, $line);
13
+  return $ret;
14
+}
15
+
16
+
17
+function get_pdf($id)
18
+{
19
+  $c = (int) $_SESSION['customerinfo']['customerno'];
20
+  $id = (int) $id;
21
+  $result = db_query("SELECT pdfdata FROM kundendaten.ausgestellte_rechnungen WHERE kunde={$c} AND id={$id}");
22
+  if (mysql_num_rows($result) == 0)
23
+	system_failure('Ungültige Rechnungsnummer oder nicht eingeloggt');
24
+  return mysql_fetch_object($result)->pdfdata;
25
+
26
+}
27
+
28
+
29
+function invoice_details($id)
30
+{
31
+  $c = (int) $_SESSION['customerinfo']['customerno'];
32
+  $id = (int) $id;
33
+  $result = db_query("SELECT kunde,datum,betrag,bezahlt,abbuchung FROM kundendaten.ausgestellte_rechnungen WHERE kunde={$c} AND id={$id}");
34
+  if (mysql_num_rows($result) == 0)
35
+	system_failure('Ungültige Rechnungsnummer oder nicht eingeloggt');
36
+  return mysql_fetch_assoc($result);
37
+}
38
+
39
+function invoice_items($id)
40
+{
41
+  $c = (int) $_SESSION['customerinfo']['customerno'];
42
+  $id = (int) $id;
43
+  $result = db_query("SELECT id, beschreibung, datum, enddatum, betrag, brutto, mwst, anzahl FROM kundendaten.rechnungsposten WHERE rechnungsnummer={$id} AND kunde={$c}");
44
+  if (mysql_num_rows($result) == 0)
45
+	system_failure('Ungültige Rechnungsnummer oder nicht eingeloggt');
46
+  $ret = array();
47
+  while($line = mysql_fetch_assoc($result))
48
+  array_push($ret, $line);
49
+  return $ret;
50
+}
51
+
52
+
53
+function upcoming_items()
54
+{
55
+  $c = (int) $_SESSION['customerinfo']['customerno'];
56
+  $result = db_query("SELECT anzahl, beschreibung, startdatum, enddatum, betrag, brutto, mwst FROM kundendaten.upcoming_items WHERE kunde={$c} ORDER BY startdatum ASC");
57
+  $ret = array();
58
+  while($line = mysql_fetch_assoc($result))
59
+	  array_push($ret, $line);
60
+  return $ret;
61
+}
62
+
63
+
64
+?>
... ...
@@ -0,0 +1,13 @@
1
+<?php
2
+
3
+$role = $_SESSION['role'];
4
+
5
+if ($role & ROLE_CUSTOMER)
6
+{
7
+  $menu["invoice_current"] = array("label" => "Rechnungen", "file" => "current.php", "weight" => 2);
8
+  $menu["invoice_upcoming"] = array("label" => "zukünftige Rechnungen", "file" => "upcoming.php", "weight" => 2, "submenu" => "invoice_current");
9
+
10
+    
11
+}
12
+
13
+?>
... ...
@@ -0,0 +1,19 @@
1
+<?php
2
+require_once('session/start.php');
3
+require_once('invoice.php');
4
+require_role(ROLE_CUSTOMER);
5
+
6
+$pdfdata = get_pdf($_GET['id']);
7
+if (! $pdfdata)
8
+{
9
+	system_failure('Die PDF-Version dieser Rechnung konnte nicht aufgerufen werden. PDF-Versionen für sehr alte Rechnungen sind nicht mehr verfügbar.');
10
+}
11
+else
12
+{
13
+	header('Content-type: application/pdf');
14
+	header('Content-disposition: attachment; filename=rechnung.pdf');
15
+	echo $pdfdata;
16
+	die();
17
+}
18
+
19
+?>
... ...
@@ -0,0 +1,51 @@
1
+<?php
2
+
3
+require_once('session/start.php');
4
+
5
+require_once('invoice.php');
6
+
7
+require_role(ROLE_CUSTOMER);
8
+
9
+output('<h3>offene Posten</h3>
10
+<p>Hier sehen Sie einen Überblick über alle aktuell offenen und zukünftigen Posten.</p>');
11
+
12
+
13
+output('<p style="margin: 1em; padding: 1em; border: 2px solid red; background: white;"><strong>Hinweis:</strong> Die hier aufgeführten Posten dienen nur Ihrer Information und erheben keinen Anspruch auf Vollständigkeit. Aus technischen Gründen sind manche Posten hier nicht aufgeführt, die dennoch berechnet werden. Zudem können, bedingt durch Rundungsfehler, die Beträge auf dieser Seite falsch dargestellt sein.</p>');
14
+
15
+$items = upcoming_items();
16
+$summe = 0;
17
+
18
+$flip = true;
19
+$today = date('Y-m-d');
20
+
21
+output('<table><tr><th>Anzahl</th><th>Beschreibung</th><th>Zeitraum</th><th>Einzelpreis</th><th>Gesamtbetrag</th></tr>');
22
+
23
+foreach($items AS $item)
24
+{
25
+	if ($flip && $item['startdatum'] > $today)
26
+	{
27
+		$flip = false;
28
+		output("<tr><td colspan=\"4\" style=\"text-align: right; font-weight: bold; border: none;\">Summe bisher fällige Posten:</td>");
29
+		output("<td style=\"font-weight: bold;\">{$summe} €</td></tr>\n");
30
+		output("<tr><td colspan=\"5\" style=\"border: none;\"> </td></tr>\n");
31
+	}
32
+	$desc = $item['startdatum'];
33
+	if ($item['enddatum'] != NULL)
34
+		$desc = $item['startdatum'].' - '.$item['enddatum'];
35
+	$epreis = $item['betrag'];
36
+	if ($item['brutto'] == 0)
37
+		$epreis = $epreis * (1 + ($item['mwst'] / 100));
38
+	$gesamt = round($epreis * $item['anzahl'], 2);
39
+	$epreis = round($epreis, 2);
40
+	$summe += $gesamt;
41
+	output("<tr><td>{$item['anzahl']}</td>");
42
+	output("<td>{$item['beschreibung']}</td><td>{$desc}</td>");
43
+	output("<td>{$epreis} €</td><td>{$gesamt} €</td></tr>\n");
44
+}
45
+
46
+output("<tr><td colspan=\"4\" style=\"text-align: right; font-weight: bold; border: none;\">Summe aller Posten:</td>");
47
+output("<td style=\"font-weight: bold;\">{$summe} €</td></tr>\n");
48
+output('</table><br />');
49
+
50
+
51
+?>
0 52