Initialer Commit: Kundenverwaltung (PHP/Smarty)

Bestehende Codebasis als Ausgangsstand aufgenommen.

- .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache
  (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen;
  Verzeichnisstruktur ueber .gitkeep erhalten
- .gitattributes: Zeilenenden normalisiert (LF im Repo),
  Binaerformate markiert
- db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der
  Anwendung aus der externen Konfiguration statt hartkodiert aus der
  Datei; Passwort wird ueber eine temporaere Optionsdatei statt per
  Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet,
  Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 16:41:18 +02:00
co-authored by Claude Opus 5
commit e6eb55bc4b
2225 changed files with 1070301 additions and 0 deletions
+117
View File
@@ -0,0 +1,117 @@
<?php
require_once ("./incs/rechnung.php");
$smarty->assign("heading","Statistik");
$smarty->display("heading.tpl");
$smarty->assign("ffyear0",date("Y",strtotime("-0 year")));
$smarty->assign("ffyear1",date("Y",strtotime("-1 year")));
$smarty->assign("ffyear2",date("Y",strtotime("-2 years")));
$sum = 0;
$sumincl = 0;
$qry = mysqli_query($dbconn,"SELECT rechnung.id AS rech, ort.plz AS plz FROM rechnung JOIN adresse ON adresse_id = adresse.id JOIN strasse ON adresse.str_id = strasse.id JOIN ort ON ort.id = strasse.ort_id WHERE rechnung.typ_id = 1 AND ort.plz = '87509' AND ( ort.land_id = 1 OR ort.land_id = 4) AND storno = 0 AND DATE_FORMAT(rechnung.datetime, '%Y') = '".date("Y",strtotime("-0 years"))."'") or error(mysqli_error($dbconn));
while($res = mysqli_fetch_assoc($qry))
{
$sumincl += calculateRechnungsSum($dbconn, $res["rech"],1);
$sum += calculateRechnungsSum($dbconn, $res["rech"],0);
}
$smarty->assign("ffincl0",$sumincl);
$smarty->assign("ffexcl0",$sum);
$sum = 0;
$sumincl = 0;
$qry = mysqli_query($dbconn,"SELECT rechnung.id AS rech, ort.plz AS plz FROM rechnung JOIN adresse ON adresse_id = adresse.id JOIN strasse ON adresse.str_id = strasse.id JOIN ort ON ort.id = strasse.ort_id WHERE rechnung.typ_id = 1 AND ort.plz = '87509' AND ( ort.land_id = 1 OR ort.land_id = 4) AND storno = 0 AND DATE_FORMAT(rechnung.datetime, '%Y') = '".date("Y",strtotime("-1 year"))."'") or error(mysqli_error($dbconn));
while($res = mysqli_fetch_assoc($qry))
{
$sumincl += calculateRechnungsSum($dbconn, $res["rech"],1);
$sum += calculateRechnungsSum($dbconn, $res["rech"],0);
}
$smarty->assign("ffincl1",$sumincl);
$smarty->assign("ffexcl1",$sum);
$sum = 0;
$sumincl = 0;
$qry = mysqli_query($dbconn,"SELECT rechnung.id AS rech, ort.plz AS plz FROM rechnung JOIN adresse ON adresse_id = adresse.id JOIN strasse ON adresse.str_id = strasse.id JOIN ort ON ort.id = strasse.ort_id WHERE rechnung.typ_id = 1 AND ort.plz = '87509' AND ( ort.land_id = 1 OR ort.land_id = 4) AND storno = 0 AND DATE_FORMAT(rechnung.datetime, '%Y') = '".date("Y",strtotime("-2 years"))."'") or error(mysqli_error($dbconn));
while($res = mysqli_fetch_assoc($qry))
{
$sumincl += calculateRechnungsSum($dbconn, $res["rech"],1);
$sum += calculateRechnungsSum($dbconn, $res["rech"],0);
}
$smarty->assign("ffincl2",$sumincl);
$smarty->assign("ffexcl2",$sum);
$sum = 0;
$completesum = 0;
$partners = array();
$qry = mysqli_query($dbconn,"SELECT GROUP_CONCAT(rechnung.id SEPARATOR ',') AS rechs, partner_id FROM rechnung RIGHT OUTER JOIN partner ON partner_id = partner.id WHERE rechnung.typ_id = 1 AND storno = 0 AND DATE_FORMAT(rechnung.datetime, '%Y') = '".date("Y",strtotime("-0 year"))."' GROUP BY partner_id");
while($res = mysqli_fetch_assoc($qry))
{
$rechs = explode(',',$res["rechs"]);
$sum = 0;
Foreach($rechs AS $rech)
{
$sum += calculateRechnungsSum($dbconn, $rech,1);
}
$completesum +=$sum;
if($sum>0)
{
$partners[$res["partner_id"]] = $sum;
}
}
arsort($partners);
$smarty->assign("partnercharts0",array_slice($partners, 0, 25, true));
$smarty->assign("completesum0",$completesum);
$sum = 0;
$completesum = 0;
$partners = array();
$qry = mysqli_query($dbconn,"SELECT GROUP_CONCAT(rechnung.id SEPARATOR ',') AS rechs, partner_id FROM rechnung RIGHT OUTER JOIN partner ON partner_id = partner.id WHERE rechnung.typ_id = 1 AND storno = 0 AND DATE_FORMAT(rechnung.datetime, '%Y') = '".date("Y",strtotime("-1 year"))."' GROUP BY partner_id");
while($res = mysqli_fetch_assoc($qry))
{
$rechs = explode(',',$res["rechs"]);
$sum = 0;
Foreach($rechs AS $rech)
{
$sum += calculateRechnungsSum($dbconn, $rech,1);
}
$completesum +=$sum;
if($sum>0)
{
$partners[$res["partner_id"]] = $sum;
}
}
arsort($partners);
$smarty->assign("partnercharts1",array_slice($partners, 0, 25, true));
$smarty->assign("completesum1",$completesum);
$sum = 0;
$completesum = 0;
$partners = array();
$qry = mysqli_query($dbconn,"SELECT GROUP_CONCAT(rechnung.id SEPARATOR ',') AS rechs, partner_id FROM rechnung RIGHT OUTER JOIN partner ON partner_id = partner.id WHERE rechnung.typ_id = 1 AND storno = 0 AND DATE_FORMAT(rechnung.datetime, '%Y') = '".date("Y",strtotime("-2 years"))."' GROUP BY partner_id");
while($res = mysqli_fetch_assoc($qry))
{
$rechs = explode(',',$res["rechs"]);
$sum = 0;
Foreach($rechs AS $rech)
{
$sum += calculateRechnungsSum($dbconn, $rech,1);
}
$completesum +=$sum;
if($sum>0)
{
$partners[$res["partner_id"]] = $sum;
}
}
arsort($partners);
$smarty->assign("partnercharts2",array_slice($partners, 0, 25, true));
$smarty->assign("completesum2",$completesum);
$smarty->display("charts.tpl");
$_SESSION["camefrom"] ="charts";
?>