Browse code

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

git-svn-id: https://svn.schokokeks.org/repos/tools/webinterface/trunk@993 87cf0b9e-d624-0410-a070-f6ee81989793

bernd authored on18/03/2008 17:36:28
Showing6 changed files
1 1
new file mode 100644
... ...
@@ -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 28
new file mode 100644
... ...
@@ -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 61
new file mode 100644
... ...
@@ -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 65
new file mode 100644
... ...
@@ -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 14
new file mode 100644
... ...
@@ -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 20
new file mode 100644
... ...
@@ -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
+?>