From 3dfbf1c9c7108b00b4f6dbcc29a7f52d01a9f37e Mon Sep 17 00:00:00 2001
From: Moirtz Wagner
Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else
ok($numres." Adressen sind insgesamt gespeichert.");
-
- displayPages($pagesize,$page,$numres,"ajax_searchadress");
+
+ displayPages($pagesize,$page,$numres,"ajax_searchadress",",".$rechid.",'".$subact."'");
displayList($headings,$listlines,$speciallines);
- displayPages($pagesize,$page,$numres,"ajax_searchadress");
+ displayPages($pagesize,$page,$numres,"ajax_searchadress",",".$rechid.",'".$subact."'");
}
- else
+ else
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
}
-?>
\ No newline at end of file
+?>
diff --git a/ajax/searchkdnprojects.php b/ajax/searchkdnprojects.php
index 26e3dbe..26826d7 100644
--- a/ajax/searchkdnprojects.php
+++ b/ajax/searchkdnprojects.php
@@ -1,89 +1,45 @@
-wirklich unwiederruflich löschen?\",\"?action=projectadd&id=".$res["id"]."&del=1\")'>";
- $actions .= "";
- //$actions .= "";
- //$tmpqry = mysqli_query($dbconn,"SELECT id FROM kontakt WHERE partner_id = '$id' AND typ_id = 1");
- //if(mysqli_fetch_array($tmpqry))
- // $actions .= "";
- /*
- $res["drechnr"] = substr($res["rechnr"],0,4)."-".substr($res["rechnr"],4,2)."-".substr($res["rechnr"],6,2).".".substr($res["rechnr"],8,2);
- switch($res["typ_id"])
- {
- case 1:
- $res["drechnr"] = "R".$res["drechnr"];
- $actions .= "";
- $actions .= "";
- break;
- case 2:
- $res["drechnr"] = "G".$res["drechnr"];
- break;
- case 3:
- $actions .= "";
- $actions .= "";
- $res["drechnr"] = "A".$res["drechnr"];
- break;
- case 4:
- $actions .= "";
- $res["drechnr"] = "B".$res["drechnr"];
- break;
- }
- if(!$res["drechnr"])
- $res["drechnr"] = $res["drechnr"];
- */
- $listlines[] = array("".$res["name"]."",
- $res["date"],
- $res["work"],
- $actions
- );
+ $projektid = (int)$res["id"];
+ $name = htmlspecialchars((string)$res["name"]);
+ $actions = "";
+ $actions .= "";
+ $listlines[] = array("".$name."",
+ htmlspecialchars((string)$res["date"]),
+ htmlspecialchars((string)$res["work"]),
+ $actions);
}
-
+
$headings = array("Name","Datum","Unberechnete
Stunden","Aktionen");
$lastdisplay = ($page+1)*$pagesize;
if($numres < $lastdisplay)
@@ -92,18 +48,17 @@ if(!$err)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.
Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else
ok($numres." Projekte sind insgesamt gespeichert.");
-
- displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkdnprojects",",$typ,$id");
- displayList($headings,$listlines,$speciallines);
- displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkdnprojects",",$typ,$id");
+
+ displayPages($pagesize,$page,$numres,"ajax_searchkdnprojects",",".$id);
+ displayList($headings,$listlines,array());
+ displayPages($pagesize,$page,$numres,"ajax_searchkdnprojects",",".$id);
}
- else
+ else
{
if($fulltag)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
- else
+ else
ok("Keine Einträge.");
}
-
}
-?>
\ No newline at end of file
+?>
diff --git a/ajax/searchkdnrech.php b/ajax/searchkdnrech.php
index 64b5897..ccfcfcb 100644
--- a/ajax/searchkdnrech.php
+++ b/ajax/searchkdnrech.php
@@ -88,14 +88,14 @@ if(!isset($err))
if($res["storno"] == 1){
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- artikelListeHtml($res["artikel"]),
+ zeilenHtml($res["artikel"]),
$actions
);
}
else{
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- artikelListeHtml($res["artikel"]),
+ zeilenHtml($res["artikel"]),
$actions
);
}
@@ -152,7 +152,7 @@ if(!isset($err))
{
$speciallines[] = array("".$res["rechnr"]."",
$res["date"],
- artikelListeHtml($res["artikel"]),
+ zeilenHtml($res["artikel"]),
"");
}
$headings = array("Nummer","Datum","Artikel","Aktion");
diff --git a/ajax/searchkomm.php b/ajax/searchkomm.php
index 6376fd5..3231651 100644
--- a/ajax/searchkomm.php
+++ b/ajax/searchkomm.php
@@ -1,66 +1,47 @@
-";
- $actions .= " ";
- $actions .= " ";
- $actions .= "
";
- $actions .= " ";
- $actions .= " ";
- $actions .= " ";
- $actions .= "
";
- $tmpqry = mysqli_query($dbconn,"SELECT id FROM kontakt WHERE partner_id = '$id' AND typ_id = 1");
- if(mysqli_fetch_array($tmpqry))
- $actions .= "";
- $name=makenameline($res);
- $adresse=makeadressline($res);
- $listlines[] = array($name,
- $adresse["ort"], $adresse["str"],
- maketelline($res),
- $actions
- );
+ $adrid = (int)$res["id"];
+ $karte = rawurlencode($res["plz"]." ".$res["ort"]." ".$res["str"]." ".$res["hnr"]);
+ $actions = " ";
+ $actions .= " ";
+ $actions .= " ";
+ $actions .= "
";
+ $actions .= " ";
+ $actions .= " ";
+ $actions .= " ";
+ $actions .= "
";
+ $adresse = makeadressline($res);
+ $listlines[] = array(makenameline($res), $adresse["ort"], $adresse["str"], maketelline($res), $actions);
}
$headings = array("Name","Ort","Straße","Tel","Aktionen");
$lastdisplay = ($page+1)*$pagesize;
@@ -70,17 +51,17 @@ if(!$err)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.
Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else
ok($numres." Kommissionen sind insgesamt gespeichert.");
-
- displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkomm",",$id");
- displayList($headings,$listlines,$speciallines);
- displaySplitPages($pagesize,$page,$skspage,0,$numres,"ajax_searchkomm",",$id");
+
+ displayPages($pagesize,$page,$numres,"ajax_searchkomm",",".$id);
+ displayList($headings,$listlines,array());
+ displayPages($pagesize,$page,$numres,"ajax_searchkomm",",".$id);
}
- else
+ else
{
if($fulltag)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
- else
+ else
ok("Keine Einträge.");
}
}
-?>
\ No newline at end of file
+?>
diff --git a/ajax/searchkunden.php b/ajax/searchkunden.php
index 2079eed..2a03de7 100644
--- a/ajax/searchkunden.php
+++ b/ajax/searchkunden.php
@@ -1,85 +1,71 @@
-".$res["firma"]."";
- if(isset($res["vwahl"]))
- $res["tel"] = $res["vwahl"]."/".$res["tel"];
- $adresse=makeadressline($res);
- if(!isset($res["updated_by"]))
- $listlines[] = array("".$res["kdnr"]."",makenameline($res),$adresse["ort"], $adresse["str"], maketelline($res),"");
+ $adresse = makeadressline($res);
+ $kdnr = (int)$res["kdnr"];
+ $aktionen = ""
+ ."";
+ $zeile = array("".$kdnr."", makenameline($res), $adresse["ort"], $adresse["str"], maketelline($res), $aktionen);
+ if(empty($res["updated_by"]))
+ $listlines[] = $zeile;
else
- $speciallines[] = array("".$res["kdnr"]."",makenameline($res),$adresse["ort"], $adresse["str"], maketelline($res),"");
+ $speciallines[] = $zeile;
}
$headings = array("Kd.Nr.","Name/Firma","Ort","Straße","Telefon","Löschen");
- $lastdisplay = (intval($page)+1)*$pagesize;
+ $lastdisplay = ($page+1)*$pagesize;
if($numres < $lastdisplay)
$lastdisplay = $numres;
if($fulltag)
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.
Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else
ok($numres." Kunden sind insgesamt gespeichert.");
-
+
displayPages($pagesize,$page,$numres,"ajax_searchkunden");
displayList($headings,$listlines,$speciallines);
displayPages($pagesize,$page,$numres,"ajax_searchkunden");
}
- else
+ else
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
}
-?>
\ No newline at end of file
+?>
diff --git a/ajax/searchliefer.php b/ajax/searchliefer.php
index 575731a..329572d 100644
--- a/ajax/searchliefer.php
+++ b/ajax/searchliefer.php
@@ -1,61 +1,47 @@
-".$res["kdnr"]."",$name,$res["plz"]." ".$res["ort"], $res["str"]." ".$res["hnr"], $res["tel"],"");
- else
- $speciallines[] = array("".$res["kdnr"]."",$name,$res["plz"]." ".$res["ort"], $res["str"]." ".$res["hnr"], $res["tel"],"");
+ $adresse = makeadressline($res);
+ $kdnr = (int)$res["kdnr"];
+ $aktionen = "";
+ $listlines[] = array("".$kdnr."", makenameline($res), $adresse["ort"], $adresse["str"], maketelline($res), $aktionen);
}
- $headings = array("Kd.Nr.","Name/Firma","Ort","Straße","Telefon","Löschen");
+ $headings = array("Kd.Nr.","Name/Firma","Ort","Straße","Telefon","Löschen");
$lastdisplay = ($page+1)*$pagesize;
if($numres < $lastdisplay)
$lastdisplay = $numres;
@@ -63,13 +49,12 @@ if(!isset($err))
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab ".$numres." Ergebnisse.
Ergebnis ".($page*$pagesize+1)." bis ".$lastdisplay);
else
ok($numres." Lieferanten sind insgesamt gespeichert.");
-
- $speciallines = Array();
- displayPages($pagesize,$page,$numres,"ajax_searchkunden");
- displayList($headings,$listlines,$speciallines);
- displayPages($pagesize,$page,$numres,"ajax_searchkunden");
+
+ displayPages($pagesize,$page,$numres,"ajax_searchliefer");
+ displayList($headings,$listlines,array());
+ displayPages($pagesize,$page,$numres,"ajax_searchliefer");
}
- else
+ else
ok("Die Suche nach ".htmlspecialchars($fulltag)." ergab keine Ergebnisse.");
}
-?>
\ No newline at end of file
+?>
diff --git a/ajax/searchrech.php b/ajax/searchrech.php
index 5b8b938..19197e6 100644
--- a/ajax/searchrech.php
+++ b/ajax/searchrech.php
@@ -83,14 +83,14 @@ if(!isset($err))
if($res["storno"] == 1){
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- artikelListeHtml($res["artikel"]),
+ zeilenHtml($res["artikel"]),
$actions
);
}
else{
$listlines[] = array("".$res["drechnr"]."",
$res["date"],
- artikelListeHtml($res["artikel"]),
+ zeilenHtml($res["artikel"]),
$actions
);
}
@@ -143,7 +143,7 @@ if(!isset($err))
{
$speciallines[] = array("".$res["rechnr"]."",
$res["date"],
- artikelListeHtml($res["artikel"]),
+ zeilenHtml($res["artikel"]),
"");
}
$headings = array("Nummer","Datum","Artikel","Aktion");
diff --git a/incs/db.php b/incs/db.php
index 5a29310..9c9a5b2 100644
--- a/incs/db.php
+++ b/incs/db.php
@@ -119,6 +119,15 @@ function db_sql_text($dbconn, $sql, $params = array())
return $text;
}
+/*
+ * Text als Praefix-Suchmuster fuer LIKE. % und _ waeren darin sonst
+ * Platzhalter; das Fluchtzeichen ist der Backslash.
+ */
+function db_like_praefix($text)
+{
+ return str_replace(array("\\", "%", "_"), array("\\\\", "\%", "\_"), (string)$text)."%";
+}
+
/* Erste Spalte der ersten Zeile, null ohne Treffer, bei Fehlern false. */
function db_wert($dbconn, $sql, $params = array())
{
diff --git a/incs/funcs.php b/incs/funcs.php
index 4607bc7..70dc162 100644
--- a/incs/funcs.php
+++ b/incs/funcs.php
@@ -36,6 +36,9 @@ function rrmdir($dir) {
function del_files($path, $pattern) {
$matches = Array();
$entries = Array();
+ // Fehlt das Verzeichnis, gibt es auch nichts zu loeschen
+ if(!is_dir($path))
+ return;
$dir = dir($path);
while ($entry = $dir->read())
{
@@ -51,6 +54,10 @@ function del_files($path, $pattern) {
function search_file($path, $pattern) {
$matches = Array();
$entries = Array();
+ $ret = "";
+ // Fehlt das Verzeichnis, gibt es auch nichts zu finden
+ if(!is_dir($path))
+ return $ret;
$dir = dir($path);
while ($entry = $dir->read())
{
diff --git a/incs/listfuncs.php b/incs/listfuncs.php
index 30d2fe7..4b065f3 100644
--- a/incs/listfuncs.php
+++ b/incs/listfuncs.php
@@ -1,182 +1,100 @@
array("vname", "nname", "vname2", "nname2", "firma", "ort", "str", "plz", "partner.id"),
+ "kdnr" => array("partner.id"),
+ "name" => array("vname", "nname", "vname2", "nname2", "firma"),
+ "str" => array("str"),
+ "plz" => array("plz"),
+ "ort" => array("ort"),
+ "tel" => array("tel.nr"),
+ "kont" => array("kontakt"),
+ );
+ if(!isset($spalten[$fields]))
+ return "";
+ $combiner = $combiner == "OR" ? "OR" : "AND";
+ $bedingung = "";
+ foreach($src AS $tag)
+ {
+ $teile = array();
+ foreach($spalten[$fields] as $spalte)
+ {
+ $teile[] = "$spalte LIKE ?";
+ $params[] = "%".$tag."%";
+ }
+ $bedingung .= " $combiner (".implode(" OR ", $teile).")";
+ }
+ return $bedingung;
+}
+
+/*
+ * Kunden- bzw. Lieferantensuche, eine Zeile je Partner. $typ ist 1 fuer
+ * Kunden, 2 fuer Lieferanten. Mit $full kommen auch veraltete Versionen
+ * dazu; ihre Namen, Adressen und Telefonnummern stehen dann untereinander
+ * in einer Zelle (siehe zeilenHtml()).
+ * Rueckgabe: array("all" => sql, "limited" => sql mit LIMIT, "params" => Werte).
+ */
function createPartQry($page,$pagesize,$src,$combiner,$fields,$full=0,$typ=1)
{
+ $joins = "FROM partner
+ LEFT JOIN adresse ON adresse.partner_id = partner.id
+ LEFT JOIN strasse ON strasse.id = str_id
+ LEFT JOIN ort ON ort.id = ort_id
+ LEFT JOIN tel ON tel.partner_id = partner.id
+ LEFT JOIN kontakt ON kontakt.partner_id = partner.id";
if(!$full)
- {
- $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr, tel.nr AS tel FROM partner
- LEFT JOIN adresse ON adresse.partner_id = partner.id
- LEFT JOIN strasse ON strasse.id = str_id
- LEFT JOIN ort ON ort.id = ort_id
- LEFT JOIN tel ON tel.partner_id = partner.id
- LEFT JOIN kontakt ON kontakt.partner_id = partner.id
- WHERE updated_by = 0 and adresse.typ_id = 1 AND partner.typ_id = $typ";
- }
+ $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr, tel.nr AS tel
+ $joins
+ WHERE updated_by = 0 AND adresse.typ_id = 1 AND partner.typ_id = ?";
else
- {
- $query = "SELECT partner.id AS kdnr,firma,GROUP_CONCAT(CONCAT(vname,' ',nname) SEPARATOR '
') AS nname, '' AS vname,GROUP_CONCAT(CONCAT(vname2,' ',nname2) SEPARATOR '
') AS nname2,'' AS vname2,'' AS ort,GROUP_CONCAT(CONCAT(plz,' ',ort) SEPARATOR '
') AS plz,GROUP_CONCAT(CONCAT(str,' ',hnr) SEPARATOR '
') AS str,'' AS hnr, GROUP_CONCAT(tel.nr SEPARATOR '
') AS tel FROM partner
- LEFT JOIN adresse ON adresse.partner_id = partner.id
- LEFT JOIN strasse ON strasse.id = str_id
- LEFT JOIN ort ON ort.id = ort_id
- LEFT JOIN tel ON tel.partner_id = partner.id
- LEFT JOIN kontakt ON kontakt.partner_id = partner.id
- WHERE partner.typ_id = $typ";
- }
-
- switch($fields)
- {
- case "all":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag' OR ort LIKE '$tag' OR str LIKE '$tag' OR plz LIKE '$tag' OR partner.id LIKE '$tag')";
- }
- break;
- case "kdnr":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (partner.id LIKE '$tag')";
- }
- break;
- case "name":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag')";
- }
- break;
- case "str":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (str LIKE '$tag')";
- }
- break;
- case "plz":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (plz LIKE '$tag')";
- }
- break;
- case "ort":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (ort LIKE '$tag')";
- }
- break;
- case "tel":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (tel.nr LIKE '$tag')";
- }
- break;
- case "kont":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (kontakt LIKE '$tag')";
- }
- break;
- }
- $query .= " GROUP BY partner.id";
+ $query = "SELECT partner.id AS kdnr,firma,
+ GROUP_CONCAT(CONCAT(vname,' ',nname) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS nname, '' AS vname,
+ GROUP_CONCAT(CONCAT(vname2,' ',nname2) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS nname2,'' AS vname2,'' AS ort,
+ GROUP_CONCAT(CONCAT(plz,' ',ort) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS plz,
+ GROUP_CONCAT(CONCAT(str,' ',hnr) ORDER BY adresse.id, tel.id SEPARATOR '\n') AS str,'' AS hnr,
+ GROUP_CONCAT(tel.nr ORDER BY adresse.id, tel.id SEPARATOR '\n') AS tel
+ $joins
+ WHERE partner.typ_id = ?";
+ $params = array((int)$typ);
+ $query .= partnerSuchbedingung($src, $combiner, $fields, $params);
+ // Ohne feste Reihenfolge kann dieselbe Zeile beim Blaettern zweimal
+ // oder gar nicht auftauchen
+ $query .= " GROUP BY partner.id ORDER BY partner.id";
+
$ret["all"] = $query;
- $query .= " LIMIT ".(intval($page)*$pagesize).", $pagesize";
- $ret["limited"] = $query;
+ $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
+ $ret["params"] = $params;
return $ret;
}
+/*
+ * Adresssuche: wie createPartQry(), aber eine Zeile je Adresse statt je
+ * Partner. Damit laesst sich fuer ein Dokument eine Nebenadresse auswaehlen.
+ */
function createAdressQry($page,$pagesize,$src,$combiner,$fields,$full=0,$typ=1)
{
- if(!$full)
- {
- $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr,adresse.id AS adrid, tel.nr AS tel
- FROM partner
- LEFT JOIN adresse ON adresse.partner_id = partner.id
- LEFT JOIN strasse ON strasse.id = str_id
- LEFT JOIN ort ON ort.id = ort_id
- LEFT JOIN tel ON tel.partner_id = partner.id
- LEFT JOIN kontakt ON kontakt.partner_id = partner.id
- WHERE updated_by = 0 AND partner.typ_id = $typ";
- }
- else
- {
- $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr,adresse.id AS adrid, tel.nr AS tel
- FROM partner
- LEFT JOIN adresse ON adresse.partner_id = partner.id
- LEFT JOIN strasse ON strasse.id = str_id
- LEFT JOIN ort ON ort.id = ort_id
- LEFT JOIN tel ON tel.partner_id = partner.id
- LEFT JOIN kontakt ON kontakt.partner_id = partner.id
- WHERE partner.typ_id = $typ";
- }
-
- switch($fields)
- {
- case "all":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag' OR ort LIKE '$tag' OR str LIKE '$tag' OR plz LIKE '$tag' OR partner.id LIKE '$tag')";
- }
- break;
- case "kdnr":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (partner.id LIKE '$tag')";
- }
- break;
- case "name":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (vname LIKE '$tag' OR nname LIKE '$tag' OR vname2 LIKE '$tag' OR nname2 LIKE '$tag' OR firma LIKE '$tag')";
- }
- break;
- case "str":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (str LIKE '$tag')";
- }
- break;
- case "plz":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (plz LIKE '$tag')";
- }
- break;
- case "ort":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (ort LIKE '$tag')";
- }
- break;
- case "tel":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (tel.nr LIKE '$tag')";
- }
- break;
- case "kont":
- foreach($src AS $tag)
- {
- $tag = "%".$tag."%";
- $query .= " $combiner (kontakt LIKE '$tag')";
- }
- break;
- }
- $query .= " GROUP BY adresse.id";
+ $query = "SELECT partner.id AS kdnr,firma,vname,nname,vname2,nname2,ort,plz,str,hnr,adresse.id AS adrid, tel.nr AS tel
+ FROM partner
+ LEFT JOIN adresse ON adresse.partner_id = partner.id
+ LEFT JOIN strasse ON strasse.id = str_id
+ LEFT JOIN ort ON ort.id = ort_id
+ LEFT JOIN tel ON tel.partner_id = partner.id
+ LEFT JOIN kontakt ON kontakt.partner_id = partner.id
+ WHERE ".($full ? "" : "updated_by = 0 AND ")."partner.typ_id = ?";
+ $params = array((int)$typ);
+ $query .= partnerSuchbedingung($src, $combiner, $fields, $params);
+ $query .= " GROUP BY adresse.id ORDER BY adresse.id";
+
$ret["all"] = $query;
- $query .= " LIMIT ".$page*$pagesize.", $pagesize";
- $ret["limited"] = $query;
+ $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
+ $ret["params"] = $params;
return $ret;
}
@@ -240,53 +158,62 @@ function createKdnRechQry($page,$pagesize,$src,$combiner,$id,$typ,$sks=0)
return $ret;
}
+/* Projekte eines Kunden, Rueckgabe wie createKdnRechQry(). */
function createKdnProjectQry($page,$pagesize,$src,$combiner,$id)
{
- $query = "SELECT project.id, project.name,
+ $combiner = $combiner == "OR" ? "OR" : "AND";
+ $params = array($id);
+ $query = "SELECT project.id, project.name,
DATE_FORMAT(project.datetime, '%d.%m.%Y') AS date,
SUM(CASE WHEN rechn = 0 THEN work.std ELSE 0 END) AS work
- FROM project
+ FROM project
JOIN work ON project.id = work.project_id
- AND partner_id='".$id."'";
+ AND partner_id = ?";
foreach($src AS $tag)
{
$tag .= "%";
- $query .= " $combiner (work.bezeichn LIKE '$tag' OR project.name LIKE '$tag' OR DATE_FORMAT(project.datetime, '%d.%m.%Y') LIKE '$tag')";
+ $query .= " $combiner (work.bezeichn LIKE ? OR project.name LIKE ? OR DATE_FORMAT(project.datetime, '%d.%m.%Y') LIKE ?)";
+ array_push($params, $tag, $tag, $tag);
}
$query .= " GROUP BY project.id ORDER BY project.datetime DESC ";
-
+
$ret["all"] = $query;
- $query .= " LIMIT ".$page*$pagesize.", $pagesize";
- $ret["limited"] = $query;
+ $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
+ $ret["params"] = $params;
return $ret;
}
+/* Kommissionsadressen (adresstyp 5) eines Kunden, Rueckgabe wie createKdnRechQry(). */
function createKommQry($page,$pagesize,$src,$combiner,$id)
{
- $query = "SELECT adresse.id, adresse.partner_id, firma, vname, nname, vname2, nname2, titel_id, titel2_id, anrede_id, anrede2_id, str, hnr, ort, ortsteil,plz,ort,nr AS tel,vwahl
+ $combiner = $combiner == "OR" ? "OR" : "AND";
+ $params = array($id);
+ $query = "SELECT adresse.id, adresse.partner_id, firma, vname, nname, vname2, nname2, titel_id, titel2_id, anrede_id, anrede2_id, str, hnr, ort, ortsteil,plz,ort,nr AS tel,vwahl
FROM adresse
- LEFT JOIN strasse ON adresse.str_id = strasse.id
- LEFT JOIN ort ON ort_id = ort.id
+ LEFT JOIN strasse ON adresse.str_id = strasse.id
+ LEFT JOIN ort ON ort_id = ort.id
LEFT JOIN tel ON adresse.id = tel.adresse_id
- WHERE adresse.partner_id='".$id."' AND adresse.typ_id = '5' ";
+ WHERE adresse.partner_id = ? AND adresse.typ_id = 5 ";
foreach($src AS $tag)
{
$tag .= "%";
- $query .= " $combiner (ort LIKE '$tag'
- OR str LIKE '$tag'
- OR nr LIKE '$tag'
- OR vname LIKE '$tag'
- OR nname LIKE '$tag'
- OR vname2 LIKE '$tag'
- OR nname2 LIKE '$tag'
- OR firma LIKE '$tag')";
+ $query .= " $combiner (ort LIKE ?
+ OR str LIKE ?
+ OR nr LIKE ?
+ OR vname LIKE ?
+ OR nname LIKE ?
+ OR vname2 LIKE ?
+ OR nname2 LIKE ?
+ OR firma LIKE ?)";
+ for($i = 0; $i < 8; $i++)
+ $params[] = $tag;
}
$query .= " GROUP BY adresse.id ORDER BY adresse.id DESC ";
-
+
$ret["all"] = $query;
- $query .= " LIMIT ".$page*$pagesize.", $pagesize";
- $ret["limited"] = $query;
+ $ret["limited"] = $query." LIMIT ".((int)$page*(int)$pagesize).", ".(int)$pagesize;
+ $ret["params"] = $params;
return $ret;
}
@@ -461,10 +388,29 @@ function createMsgQry($page,$pagesize,$src,$combiner,$user)
return $ret;
}
-/* Artikelliste aus createRechQry()/createKdnRechQry() als escaptes HTML, eine Zeile je Artikel */
-function artikelListeHtml($artikel)
+/*
+ * Zahl der Treffer einer Suche. Die Abfragen aus create*Qry() gruppieren,
+ * deshalb wird die ungekuerzte Abfrage ausgefuehrt und gezaehlt, statt mit
+ * COUNT(*) zu arbeiten.
+ */
+function zaehleTreffer($dbconn, $queries)
{
- return implode("
", array_map("htmlspecialchars", explode("\n", (string)$artikel)));
+ $res = isset($queries["params"])
+ ? db_abfrage($dbconn, $queries["all"], $queries["params"])
+ : mysqli_query($dbconn, $queries["all"]);
+ if(!$res)
+ die("Datenbank fehler: ".htmlspecialchars(mysqli_error($dbconn)));
+ return mysqli_num_rows($res);
+}
+
+/*
+ * Mit \n verbundene Werte aus GROUP_CONCAT als escaptes HTML, eine Zeile
+ * je Wert. Zusammengebaut wird erst hier, damit Daten aus der Datenbank
+ * nicht als HTML durchschlagen.
+ */
+function zeilenHtml($text)
+{
+ return implode("
", array_map("htmlspecialchars", explode("\n", (string)$text)));
}
function displayPages($pagesize,$currpage,$numentries,$refreshfunc,$ad_params = "")
@@ -585,25 +531,30 @@ function displayList($header,$entries,$speciallines=array(),$colors=array())
echo "";
}
+/*
+ * Bausteine fuer die Trefferlisten. Sie liefern fertiges HTML und escapen
+ * die Werte aus der Datenbank deshalb selbst.
+ */
function makenameline($adresse)
{
- $ret = $adresse["vname"]." ".$adresse["nname"];
- if($adresse["firma"])
- $ret .= "
".$adresse["firma"]."";
+ $ret = zeilenHtml(trim($adresse["vname"]." ".$adresse["nname"]));
+ if(!empty($adresse["firma"]))
+ $ret .= "
".zeilenHtml($adresse["firma"])."";
return $ret;
}
function makeadressline($adresse)
{
- $ret["ort"] = $adresse["plz"]." ".$adresse["ort"];
- $ret["str"] = $adresse["str"]." ".$adresse["hnr"];
+ $ret["ort"] = zeilenHtml(trim($adresse["plz"]." ".$adresse["ort"]));
+ $ret["str"] = zeilenHtml(trim($adresse["str"]." ".$adresse["hnr"]));
return $ret;
}
function maketelline($tel)
{
- $ret="";
- if(isset($tel["vwahl"]) && !stristr($tel["tel"], "-") && !stristr($tel["tel"], "/"))
- $ret = $tel["vwahl"]."-";
- $ret .= $tel["tel"];
+ $nr = isset($tel["tel"]) ? (string)$tel["tel"] : "";
+ $ret = "";
+ if(!empty($tel["vwahl"]) && !str_contains($nr, "-") && !str_contains($nr, "/"))
+ $ret = zeilenHtml($tel["vwahl"])."-";
+ $ret .= zeilenHtml($nr);
return $ret;
}
diff --git a/incs/rechnung.php b/incs/rechnung.php
index 9dcebc8..3ad2877 100644
--- a/incs/rechnung.php
+++ b/incs/rechnung.php
@@ -1,36 +1,10 @@
Ihre Rechnung ist aber noch vorhanden,
Bitte gehen Sie zurück zum Rechnungsformular
@@ -598,7 +568,7 @@ function saveTmpRechnung($dbconn, $nurAktive)
);
$set = implode(", ", array_map(function($spalte) { return "`$spalte` = ?"; }, array_keys($felder)));
- mysqli_begin_transaction($dbconn);
+ beginneSpeichern($dbconn);
$err = 0;
$progressid = db_wert($dbconn, "SELECT id FROM tmp_rechnung WHERE user_id = ? AND typ_id = ? ORDER BY id LIMIT 1", array($_SESSION["user"], $type));
if($progressid === false)
@@ -649,17 +619,14 @@ function saveTmpRechnung($dbconn, $nurAktive)
$i++;
}
- if($err)
- mysqli_rollback($dbconn);
- else
- mysqli_commit($dbconn);
+ beendeSpeichern($dbconn, $err);
return array($progressid, $err);
}
function delRechnung($dbconn,$id)
{
$err = 0;
- mysqli_begin_transaction($dbconn);
+ beginneSpeichern($dbconn);
db_abfrage($dbconn, "DELETE FROM artikel_rechn WHERE rech_id = ?", array($id)) or $err = error("Fehler beim löschen der Artikel-Rechnung Beziehung
".mysqli_error($dbconn));
if(!$err)
db_abfrage($dbconn, "DELETE FROM artikel_eigensch WHERE rech_id = ?", array($id)) or $err = error("Fehler beim löschen der Artikel-Eigenschaften Beziehung
".mysqli_error($dbconn));
@@ -667,8 +634,7 @@ function delRechnung($dbconn,$id)
db_abfrage($dbconn, "DELETE FROM rechnung WHERE id = ? LIMIT 1", array($id)) or $err = error("Fehler beim löschen der Rechnung
".mysqli_error($dbconn));
if(!$err)
$err = saveLog($dbconn, db_sql_text($dbconn, "DELETE FROM rechnung WHERE id = ? LIMIT 1", array($id))." [rechnung DEL]", "", "löschen");
- $err ? mysqli_rollback($dbconn) : mysqli_commit($dbconn);
- return $err;
+ return beendeSpeichern($dbconn, $err);
}
/* Storno setzen (1) oder zurücknehmen (0) */
@@ -717,7 +683,7 @@ function copyRech($dbconn,$id,$adrid)
if($partnerid === false)
return error("Fehler beim ermitteln der Adressdaten
".mysqli_error($dbconn));
- mysqli_begin_transaction($dbconn);
+ beginneSpeichern($dbconn);
list($rechnr, $err) = neueRechnungsnummer($dbconn, $res["typ_id"]);
if(!$err)
{
@@ -746,8 +712,7 @@ function copyRech($dbconn,$id,$adrid)
if(!$err)
$err = saveLog($dbconn, db_sql_text($dbconn, $sql, array($rechid, $id))." [rechnung copy]", "DELETE FROM artikel_eigensch WHERE rech_id = $rechid", "anlegen");
}
- $err ? mysqli_rollback($dbconn) : mysqli_commit($dbconn);
- return $err;
+ return beendeSpeichern($dbconn, $err);
}
function calculateRechnungsSum($dbconn, $rechid, $inclmwst)
diff --git a/incs/saveNchange.php b/incs/saveNchange.php
index 3c6341b..29fdcf1 100644
--- a/incs/saveNchange.php
+++ b/incs/saveNchange.php
@@ -1,10 +1,99 @@
-format("Y-m-d");
+}
+
+/*
+ * Gegenstück zu formularGeburtsdatum(): "" wenn kein Geburtstag hinterlegt
+ * ist, "24.12." wenn nur Tag und Monat bekannt sind, sonst das volle Datum.
+ */
+function geburtstagAnzeigen($datum)
+{
+ if(!$datum || $datum == "01.01.2100" || $datum == "00.00.0000")
+ return "";
+ if(substr($datum, 6, 4) == "2099")
+ return substr($datum, 0, 5);
+ return $datum;
+}
+
+/* ---------------------------------------------------------------------
+ * Änderungsprotokoll
+ * ------------------------------------------------------------------ */
+
+/*
+ * $qrystr und $undoqry sind reiner Text zur Nachvollziehbarkeit (siehe
+ * db_sql_text()), sie werden nie ausgeführt. $type ist ein Eintrag aus
+ * accesstype ("anlegen", "ändern", "löschen").
*/
function saveLog($dbconn,$qrystr,$undoqry,$type)
{
@@ -18,529 +107,595 @@ function saveLog($dbconn,$qrystr,$undoqry,$type)
return $err;
}
+/* ---------------------------------------------------------------------
+ * Transaktionen
+ *
+ * Die Speicherfunktionen rufen sich gegenseitig auf (savePart ->
+ * saveAdress -> updateKunde -> saveAdress), MariaDB kennt aber keine
+ * geschachtelten Transaktionen. Deshalb zählt ein Zähler die Verschachtelung
+ * mit: nur der äußerste Aufruf öffnet und schließt wirklich.
+ * ------------------------------------------------------------------ */
+
+function transaktionsTiefe($aenderung = 0)
+{
+ static $tiefe = 0;
+ $tiefe += $aenderung;
+ return $tiefe;
+}
+
+function beginneSpeichern($dbconn)
+{
+ if(transaktionsTiefe() == 0)
+ mysqli_begin_transaction($dbconn);
+ transaktionsTiefe(1);
+}
+
+/* Gibt $err unverändert zurück, damit sich der Aufruf ans return anhängen lässt */
+function beendeSpeichern($dbconn, $err)
+{
+ transaktionsTiefe(-1);
+ if(transaktionsTiefe() > 0)
+ return $err;
+ if($err)
+ mysqli_rollback($dbconn);
+ else
+ mysqli_commit($dbconn);
+ return $err;
+}
+
+/* ---------------------------------------------------------------------
+ * Stammdaten: Land, Ort, Straße, Bank
+ *
+ * Diese Tabellen wachsen beim Erfassen mit. Gibt es den Eintrag schon, wird
+ * er wiederverwendet, sonst angelegt und protokolliert.
+ * ------------------------------------------------------------------ */
+
+/*
+ * $spalten sind die Werte, die den Eintrag eindeutig machen. $kontext
+ * landet im Protokolltext ("beim adresse anlegen"). Rückgabe ist die id
+ * oder false bei Fehlern.
+ */
+function findeOderLege($dbconn, $tabelle, $spalten, $kontext)
+{
+ $bedingung = array();
+ $zuweisung = array();
+ foreach(array_keys($spalten) as $spalte)
+ {
+ $bedingung[] = "`$spalte` = ?";
+ $zuweisung[] = "`$spalte` = ?";
+ }
+ $werte = array_values($spalten);
+
+ $id = db_wert($dbconn, "SELECT id FROM `$tabelle` WHERE ".implode(" AND ", $bedingung), $werte);
+ if($id === false)
+ {
+ error("Fehler beim suchen in $tabelle:
".mysqli_error($dbconn));
+ return false;
+ }
+ if($id !== null)
+ return $id;
+
+ $sql = "INSERT INTO `$tabelle` SET ".implode(", ", $zuweisung);
+ if(!db_abfrage($dbconn, $sql, $werte))
+ {
+ error("Fehler beim anlegen in $tabelle:
".mysqli_error($dbconn));
+ return false;
+ }
+ $id = mysqli_insert_id($dbconn);
+ if(saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [hat ID $id ($kontext)]", "DELETE FROM `$tabelle` WHERE id = $id", "anlegen"))
+ return false;
+ return $id;
+}
+
+function landId($dbconn, $land, $kontext)
+{
+ return findeOderLege($dbconn, "land", array("land" => $land), $kontext);
+}
+
+function ortId($dbconn, $land_id, $ort, $plz, $ortsteil, $kontext)
+{
+ return findeOderLege($dbconn, "ort", array("land_id" => $land_id, "ort" => $ort, "plz" => $plz, "ortsteil" => $ortsteil), $kontext);
+}
+
+function strasseId($dbconn, $ort_id, $str, $kontext)
+{
+ return findeOderLege($dbconn, "strasse", array("ort_id" => $ort_id, "str" => $str), $kontext);
+}
+
+function bankId($dbconn, $bank, $blz, $kontext)
+{
+ return findeOderLege($dbconn, "bank", array("bank" => $bank, "blz" => $blz), $kontext);
+}
+
+/*
+ * Land, Ort und Straße in einem Zug. $ortsangabe enthält land, ort, plz,
+ * ortsteil und (optional) str. Rückgabe ist array(land_id, ort_id, str_id)
+ * oder false bei Fehlern; ohne str bleibt str_id 0.
+ */
+function ortsangabeIds($dbconn, $ortsangabe, $kontext)
+{
+ $land_id = landId($dbconn, $ortsangabe["land"], $kontext);
+ if($land_id === false)
+ return false;
+ $ort_id = ortId($dbconn, $land_id, $ortsangabe["ort"], $ortsangabe["plz"], $ortsangabe["ortsteil"], $kontext);
+ if($ort_id === false)
+ return false;
+ $str_id = 0;
+ if(isset($ortsangabe["str"]))
+ {
+ $str_id = strasseId($dbconn, $ort_id, $ortsangabe["str"], $kontext);
+ if($str_id === false)
+ return false;
+ }
+ return array($land_id, $ort_id, $str_id);
+}
+
+/* Auswahlliste für html_options: array(ids, Texte) */
+function auswahlliste($dbconn, $sql, $params = array())
+{
+ $zuordnung = db_zuordnung($dbconn, $sql, $params);
+ if($zuordnung === false)
+ return array(array(), array());
+ return array(array_keys($zuordnung), array_values($zuordnung));
+}
+
//##############################################
//########## ADRESSEN ######################
//##############################################
-function saveAdress($dbconn)
+
+/* Die Adressfelder aus newadress.tpl bzw. newpar.tpl */
+function adressFormularwerte()
{
- $adressid=mysql_escape_string($_GET["adressid"]);
-
- $land = mysql_escape_string(trim($_POST["land"]));
- $ort = mysql_escape_string(trim($_POST["ort"]));
- $plz = mysql_escape_string(trim($_POST["plz"]));
- $oteil = mysql_escape_string(trim($_POST["oteil"]));
- $str = mysql_escape_string(trim($_POST["str"]));
- $hnr = mysql_escape_string(trim($_POST["hnr"]));
- $firma = mysql_escape_string(trim($_POST["firma"]));
- $vname = mysql_escape_string(trim($_POST["vname"]));
- $nname = mysql_escape_string(trim($_POST["nname"]));
- $vname2 = mysql_escape_string(trim($_POST["vname2"]));
- $nname2 = mysql_escape_string(trim($_POST["nname2"]));
- $anrede_id = mysql_escape_string(trim($_POST["anrede"]));
- $titel_id = mysql_escape_string(trim($_POST["titel"]));
- $anrede2_id = mysql_escape_string(trim($_POST["anrede2"]));
- $titel2_id = mysql_escape_string(trim($_POST["titel2"]));
- $typ_id = mysql_escape_string(trim($_POST["typ"]));
- $kunde=mysql_escape_string($_GET["kunde"]);
- $gebdat = mysql_escape_string(trim($_POST["gebdat"]));
- $gebdat2 = mysql_escape_string(trim($_POST["gebdat2"]));
- $zusatz = mysql_escape_string(trim($_POST["zusatz"]));
-
- if(!strlen($gebdat))
- $gebdat = "01.01.2100";
- else if(strlen($gebdat) < 7)
- $gebdat .= ".2099";
-
- if(!strlen($gebdat2))
- $gebdat2 = "01.01.2100";
- else if(strlen($gebdat2) < 7)
- $gebdat2 .= ".2099";
-
- if($adressid && $_POST["overwrite"])
+ return array(
+ "firma" => formularText("firma"),
+ "vname" => formularText("vname"),
+ "nname" => formularText("nname"),
+ "vname2" => formularText("vname2"),
+ "nname2" => formularText("nname2"),
+ "anrede_id" => formularGanzzahl("anrede"),
+ "titel_id" => formularGanzzahl("titel"),
+ "anrede2_id" => formularGanzzahl("anrede2"),
+ "titel2_id" => formularGanzzahl("titel2"),
+ "hnr" => formularText("hnr"),
+ "zusatz" => formularText("zusatz"),
+ "gebdat" => formularGeburtsdatum("gebdat"),
+ "gebdat2" => formularGeburtsdatum("gebdat2"),
+ );
+}
+
+/*
+ * Adresse anlegen oder ändern.
+ *
+ * Drei Fälle:
+ * - bestehende Adresse und "überschreiben": die Adresse wird geändert,
+ * alte Rechnungen zeigen danach auf den neuen Stand.
+ * - Hauptadresse (typ 1) ohne "überschreiben": es entsteht eine neue
+ * Version des Kunden (updateKunde()), alte Rechnungen behalten die alte.
+ * - sonst: neue Adresse.
+ *
+ * $kunde, $typ und $adressid überschreiben die Werte aus der Anfrage -
+ * savePart() und updateKunde() legen darüber die Hauptadresse eines frisch
+ * angelegten Partners an.
+ */
+function saveAdress($dbconn, $kunde = null, $typ = null, $adressid = null)
+{
+ $adressid = $adressid === null ? parameterGanzzahl("adressid") : (int)$adressid;
+ $kunde = $kunde === null ? parameterGanzzahl("kunde") : (int)$kunde;
+ $typ_id = $typ === null ? formularGanzzahl("typ") : (int)$typ;
+ $ueberschreiben = formularGanzzahl("overwrite") != 0;
+
+ $err = 0;
+ if($adressid && $ueberschreiben)
{
message("Adresse wird geändert...");
- $act="ändern";
+ $act = "ändern";
}
- elseif($adressid && !$_POST["overwrite"])
+ elseif($adressid)
{
message("Neue Adresse (update)...");
- $act="update";
- $qry=mysqli_query($dbconn,"SELECT updated_by FROM partner WHERE id = '$kunde'") or $err=error("Fehler testen auf aktualität:
".mysqli_error($dbconn));
- $res=mysqli_fetch_assoc($qry);
- if($res["updated_by"])
- $err=error("Eine solche Adressänderung kann nur mit der aktuellsten Version des Kunden durchgeführt werden.
Bitte wechseln Sie zur aktuellsten Version und führen Sie die gewünschen Änderungen dort durch.");
+ $act = "update";
+ $updatedBy = db_wert($dbconn, "SELECT updated_by FROM partner WHERE id = ?", array($kunde));
+ if($updatedBy === false)
+ $err = error("Fehler testen auf aktualität:
".mysqli_error($dbconn));
+ elseif($updatedBy)
+ $err = error("Eine solche Adressänderung kann nur mit der aktuellsten Version des Kunden durchgeführt werden.
Bitte wechseln Sie zur aktuellsten Version und führen Sie die gewünschen Änderungen dort durch.");
}
- else
+ else
{
message("Adresse wird angelegt...");
- $act="anlegen";
+ $act = "anlegen";
}
- if(!$err)
+ if($err)
+ return $err;
+
+ beginneSpeichern($dbconn);
+
+ $ids = ortsangabeIds($dbconn, array(
+ "land" => formularText("land"),
+ "ort" => formularText("ort"),
+ "plz" => formularText("plz"),
+ "ortsteil" => formularText("oteil"),
+ "str" => formularText("str"),
+ ), "beim adresse $act");
+ if($ids === false)
+ return beendeSpeichern($dbconn, 1);
+ list($land_id, $ort_id, $str_id) = $ids;
+
+ $felder = array_merge(array("str_id" => $str_id, "typ_id" => $typ_id), adressFormularwerte());
+ $zuweisung = array();
+ foreach(array_keys($felder) as $spalte)
+ $zuweisung[] = "`$spalte` = ?";
+ $set = implode(", ", $zuweisung);
+
+ if($adressid && $ueberschreiben)
{
- $qry=mysqli_query($dbconn,"SELECT id FROM land WHERE land = '$land'") or $err=error("Fehler beim suchen des Landes:
".mysqli_error($dbconn));
- if($res=mysqli_fetch_array($qry))
- $land_id = $res[0];
- else
+ $alt = db_zeile($dbconn, "SELECT * FROM adresse WHERE id = ?", array($adressid));
+ if($alt === false || $alt === null)
+ return beendeSpeichern($dbconn, error("Fehler beim ändern der Adresse:
".mysqli_error($dbconn)));
+
+ $sql = "UPDATE adresse SET $set WHERE id = ?";
+ $werte = array_merge(array_values($felder), array($adressid));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim ändern der Adresse:
".mysqli_error($dbconn)));
+
+ $altWerte = array();
+ foreach(array_keys($felder) as $spalte)
+ $altWerte[] = $alt[$spalte];
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [adresse change]",
+ db_sql_text($dbconn, $sql, array_merge($altWerte, array($adressid))), "ändern");
+ }
+ elseif($typ_id != 1 || !$adressid)
+ {
+ $sql = "INSERT INTO adresse SET $set, partner_id = ?";
+ $werte = array_merge(array_values($felder), array($kunde));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim Anlegen der Adresse:
".mysqli_error($dbconn)));
+ $adressid = mysqli_insert_id($dbconn);
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [Hat ID $adressid]",
+ "DELETE FROM adresse WHERE id = $adressid", "anlegen");
+ }
+ else
+ {
+ // Hauptadresse ändern heißt: neue Version des Kunden anlegen
+ return beendeSpeichern($dbconn, updateKunde($dbconn, $kunde));
+ }
+
+ /*
+ * Kommissionsadressen (typ 5) haben eine eigene Telefonnummer, die im
+ * selben Formular steht. Wird der Typ zurückgestellt, fällt sie weg.
+ */
+ if(!$err && $adressid)
+ {
+ if($typ_id != 5)
{
- $qry=mysqli_query($dbconn,"INSERT INTO land SET land = '$land'") or $err=error("Fehler beim anlegen des Landes:
".mysqli_error($dbconn));
- $land_id = mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO land SET land = $land [hat ID $land_id (beim adresse $act)]","DELETE FROM land WHERE id = $land_id","anlegen");
- }
+ db_abfrage($dbconn, "DELETE FROM tel WHERE adresse_id = ?", array($adressid))
+ or $err = error("Fehler beim löschen der Telefonnummer der Adresse:
".mysqli_error($dbconn));
}
- if(!$err)
+ elseif(formularText("nr") !== "")
{
- $qry=mysqli_query($dbconn,"SELECT id FROM ort WHERE land_id = '$land_id' AND ort = '$ort' AND plz = '$plz' AND ortsteil = '$oteil'") or $err=error("Fehler beim suchen des Ortes:
".mysqli_error($dbconn));
- if($res=mysqli_fetch_array($qry))
- $ort_id = $res[0];
- else
- {
- $qry=mysqli_query($dbconn,"INSERT INTO ort SET land_id = '$land_id', ort = '$ort', plz = '$plz', ortsteil = '$oteil'") or $err=error("Fehler beim anlegen des Ortes:
".mysqli_error($dbconn));
- $ort_id = mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO ort SET land_id=$land_id,ort = $ort, plz=$plz, ortsteil=$oteil [hat ID $ort_id (beim adresse $act)]","DELETE FROM ort WHERE id = $ort_id","anlegen");
- }
- }
- }
- if(!$err)
- {
- $qry=mysqli_query($dbconn,"SELECT id FROM strasse WHERE ort_id = '$ort_id' AND str = '$str'") or $err=error("Fehler beim suchen der Straße:
".mysqli_error($dbconn));
- if($res=mysqli_fetch_array($qry))
- $str_id = $res[0];
- else
- {
- $qry=mysqli_query($dbconn,"INSERT INTO strasse SET str = '$str', ort_id = '$ort_id'") or $err=error("Fehler beim anlegen der Straße:
".mysqli_error($dbconn));
- $str_id = mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO strasse SET str = $str, ort_id = $ort_id [hat ID $str_id (beim adresse $act)]","DELETE FROM strasse WHERE id = $str_id","anlegen");
- }
- }
- }
- if(!$err)
- {
- if($_GET["adressid"] && $_POST["overwrite"])
- {
- $qry=mysqli_query($dbconn,"SELECT str_id,typ_id, firma, titel_id,vname,nname,vname2,nname2,anrede_id,anrede2_id,titel2_id,hnr FROM adresse
- WHERE id='$adressid'") or $err=error("Fehler beim ändern der Adresse:
".mysqli_error($dbconn));
- $undores=mysqli_fetch_assoc($qry);
- $qry=mysqli_query($dbconn,"UPDATE adresse SET
- str_id='$str_id',
- typ_id='$typ_id',
- firma='$firma',
- vname='$vname',
- nname='$nname',
- vname2='$vname2',
- nname2='$nname2',
- titel_id='$titel_id',
- anrede_id='$anrede_id',
- titel2_id='$titel2_id',
- anrede2_id='$anrede2_id',
- gebdat=STR_TO_DATE('$gebdat','%d.%m.%Y'),
- gebdat2=STR_TO_DATE('$gebdat2','%d.%m.%Y'),
- zusatz='$zusatz',
- hnr='$hnr'
- WHERE id='$adressid'") or $err=error("Fehler beim ändern der Adresse:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"UPDATE adresse SET str_id=$str_id,typ_id=$typ_id,firma=$firma,titel_id=$titel_id,titel_id2='$titel2_id',anrede_id2='$anrede2_id',vname=$vname,nname=$nname,vname2=$vname2,nname2=$nname2,anrede_id=$anrede_id,hnr=$hnr,zusatz='$zusatz' WHERE id=$adressid",
- "UPDATE adresse SET str_id=".$undores["str_id"].",typ_id=".$undores["typ_id"].",typ2_id=".$undores["typ2_id"].",anrede2_id=".$undores["anrede2_id"].",firma=".$undores["firma"].",titel_id=".$undores["titel_id"].",vname=".$undores["vname"].",nname=".$undores["nname"].",vname2=".$undores["vname2"].",nname2=".$undores["nname2"].",anrede_id=".$undores["anrede_id"].",hnr=".$undores["hnr"].",zusatz=".$undores["zusatz"]." WHERE id=$adressid",
- "ändern");
- }
- }
- elseif($typ_id != 1 || !$_GET["adressid"])
- {
- $qry=mysqli_query($dbconn,"INSERT INTO adresse SET
- str_id='$str_id',
- typ_id='$typ_id',
- firma='$firma',
- vname='$vname',
- nname='$nname',
- vname2='$vname2',
- nname2='$nname2',
- titel_id='$titel_id',
- anrede_id='$anrede_id',
- titel2_id='$titel2_id',
- anrede2_id='$anrede2_id',
- gebdat=STR_TO_DATE('$gebdat','%d.%m.%Y'),
- gebdat2=STR_TO_DATE('$gebdat2','%d.%m.%Y'),
- zusatz='$zusatz',
- hnr='$hnr',
- partner_id='$kunde'") or $err=error("Fehler beim Anlegen der Adresse:
".mysqli_error($dbconn));
- $adressid=mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO adresse SET str_id=$str_id,typ_id=$typ_id,firma=$firma,titel_id=$titel_id,titel_id2='$titel2_id',anrede_id2='$anrede2_id',vname='$vname',nname='$nname',vname2='$vname2',nname2='$nname2',anrede_id='$anrede_id',hnr='$hnr',zusatz='$zusatz', partner_id=$kunde [Hat ID $adressid]",
- "DELETE FROM adresse WHERE id=$adressid",
- "anlegen");
- }
- }
+ $telid = db_wert($dbconn, "SELECT id FROM tel WHERE adresse_id = ? ORDER BY id LIMIT 1", array($adressid));
+ if($telid === false)
+ $err = error("Fehler beim suchen der Telefonnummer der Adresse:
".mysqli_error($dbconn));
else
- {
- $err=updateKunde($dbconn,$kunde);
- }
+ $err = speichereTelefon($dbconn, array(
+ "telid" => (int)$telid,
+ "adresse_id" => $adressid,
+ "partner_id" => $kunde,
+ // newadress.tpl kennt keine Typauswahl für die Nummer
+ "typ_id" => 1,
+ "name" => "",
+ "nr" => formularText("nr"),
+ "vwahl" => formularText("vwahl"),
+ "land" => formularText("telland"),
+ "ort" => formularText("telort"),
+ "plz" => formularText("telplz"),
+ "ortsteil" => formularText("teloteil"),
+ ));
}
}
- if(!$err)
- {
- if($typ_id != 5 && $adressid)
- {
- mysqli_query($dbconn,"DELETE FROM tel WHERE adress_id = '$adressid'");
- }
- elseif($typ_id == 5 && $adressid)
- {
- $qry = mysqli_query($dbconn,"SELECT id FROM tel WHERE adress_id = '$adressid'");
- if($res = mysql_fetch_assoc($qry))
- $_GET["telid"] = $res["id"];
- $_GET["adressid"] = $adressid;
- $err = saveTel($dbconn);
- }
-
- }
- return $err;
+ return beendeSpeichern($dbconn, $err);
}
function dispAdressForm($dbconn,$smarty,$typ=1)
{
- if(!$_GET["adressid"])
+ $adressid = parameterGanzzahl("adressid");
+ $kunde = parameterGanzzahl("kunde");
+ if(!$adressid)
{
$smarty->assign("head","Neue Adresse anlegen");
- $qry=mysqli_query($dbconn, "SELECT anrede_id, titel_id, firma, vname, nname, vname2, nname2
- FROM adresse
- WHERE adresse.partner_id ='".mysql_escape_string($_GET["kunde"])."' AND adresse.typ_id = 1") or $err=error("Fehler beim auslesen der Daten:
".mysqli_error($dbconn));
-
+ // Firma, Anrede und Namen der Hauptadresse als Vorbelegung
+ $res = db_zeile($dbconn, "SELECT anrede_id, titel_id, firma, vname, nname, vname2, nname2
+ FROM adresse
+ WHERE adresse.partner_id = ? AND adresse.typ_id = 1", array($kunde));
}
else
{
$smarty->assign("head","Adresse ändern");
- $qry=mysqli_query($dbconn, "SELECT anrede_id, zusatz, titel_id, anrede2_id, titel2_id, DATE_FORMAT(gebdat,'%d.%m.%Y') AS gebdat, DATE_FORMAT(gebdat2,'%d.%m.%Y') AS gebdat2, firma, vname, nname, vname2, nname2,str, hnr, ort, ortsteil,plz, land, typ_id, partner_id FROM adresse
- JOIN strasse ON strasse.id = adresse.str_id
- JOIN ort ON strasse.ort_id = ort.id
- JOIN land ON land.id = ort.land_id
- WHERE adresse.id ='".mysql_escape_string($_GET["adressid"])."'") or $err=error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ $res = db_zeile($dbconn, "SELECT anrede_id, zusatz, titel_id, anrede2_id, titel2_id,
+ DATE_FORMAT(gebdat,'%d.%m.%Y') AS gebdat, DATE_FORMAT(gebdat2,'%d.%m.%Y') AS gebdat2,
+ firma, vname, nname, vname2, nname2, str, hnr, ort, ortsteil, plz, land, typ_id, partner_id
+ FROM adresse
+ JOIN strasse ON strasse.id = adresse.str_id
+ JOIN ort ON strasse.ort_id = ort.id
+ JOIN land ON land.id = ort.land_id
+ WHERE adresse.id = ?", array($adressid));
}
- $res=mysqli_fetch_assoc($qry);
- $smarty->assign("kunde",$_GET["kunde"]);
- $smarty->assign("firma",$res["firma"]);
- $smarty->assign("titel",$res["titel_id"]);
- $smarty->assign("anrede",$res["anrede_id"]);
- $smarty->assign("titel2",$res["titel2_id"]);
- $smarty->assign("anrede2",$res["anrede2_id"]);
- $smarty->assign("vname",$res["vname"]);
- $smarty->assign("nname",$res["nname"]);
- $smarty->assign("vname2",$res["vname2"]);
- $smarty->assign("nname2",$res["nname2"]);
- $smarty->assign("ort",$res["ort"]);
- $smarty->assign("plz",$res["plz"]);
- $smarty->assign("hnr",$res["hnr"]);
- $smarty->assign("land",$res["land"]);
- $smarty->assign("str",$res["str"]);
- $smarty->assign("oteil",$res["ortsteil"]);
- $smarty->assign("typ",$res["typ_id"]);
- $smarty->assign("zusatz",$res["zusatz"]);
-
- $qry=mysqli_query($dbconn, "SELECT tel.id AS telid, ort, name, vwahl, ortsteil, land, plz, typ_id, partner_id, nr FROM tel
- JOIN ort ON tel.ort_id = ort.id
- JOIN land ON land.id = ort.land_id
- WHERE tel.adresse_id ='".mysql_escape_string($_GET["adressid"])."'") or $err=error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
- if($telres=mysqli_fetch_assoc($qry))
+ if($res === false)
+ return error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ if(!$res)
+ $res = array();
+ if(!empty($res["partner_id"]))
+ $kunde = $res["partner_id"];
+
+ foreach(array("firma","vname","nname","vname2","nname2","ort","plz","hnr","land","str","zusatz") as $feld)
+ $smarty->assign($feld, isset($res[$feld]) ? $res[$feld] : "");
+ $smarty->assign("titel", isset($res["titel_id"]) ? $res["titel_id"] : "");
+ $smarty->assign("anrede", isset($res["anrede_id"]) ? $res["anrede_id"] : "");
+ $smarty->assign("titel2", isset($res["titel2_id"]) ? $res["titel2_id"] : "");
+ $smarty->assign("anrede2", isset($res["anrede2_id"]) ? $res["anrede2_id"] : "");
+ $smarty->assign("oteil", isset($res["ortsteil"]) ? $res["ortsteil"] : "");
+ $smarty->assign("typ", isset($res["typ_id"]) ? $res["typ_id"] : "");
+ $smarty->assign("gebdat", geburtstagAnzeigen(isset($res["gebdat"]) ? $res["gebdat"] : ""));
+ $smarty->assign("gebdat2", geburtstagAnzeigen(isset($res["gebdat2"]) ? $res["gebdat2"] : ""));
+
+ // Telefonnummer einer Kommissionsadresse: eigene Felder im Formular
+ $telres = db_zeile($dbconn, "SELECT tel.id AS telid, ort, name, vwahl, ortsteil, land, plz, typ_id, partner_id, nr
+ FROM tel
+ JOIN ort ON tel.ort_id = ort.id
+ JOIN land ON land.id = ort.land_id
+ WHERE tel.adresse_id = ? ORDER BY tel.id LIMIT 1", array($adressid));
+ if($telres === false)
+ return error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ if($telres)
{
- $smarty->assign("name",$telres["name"]);
- $smarty->assign("ort",$telres["ort"]);
- $smarty->assign("plz",$telres["plz"]);
$smarty->assign("nr",$telres["nr"]);
$smarty->assign("vwahl",$telres["vwahl"]);
- $smarty->assign("land",$telres["land"]);
- $smarty->assign("oteil",$telres["ortsteil"]);
- $smarty->assign("teltyp",$telres["typ_id"]);
- $_GET["kunde"] = $telres["partner_id"];
+ $smarty->assign("telplz",$telres["plz"]);
+ $smarty->assign("telort",$telres["ort"]);
+ $smarty->assign("teloteil",$telres["ortsteil"]);
+ $smarty->assign("telland",$telres["land"]);
$smarty->assign("telid",$telres["telid"]);
+ if(!$kunde)
+ $kunde = $telres["partner_id"];
}
- if($res["gebdat"] != "01.01.2100")
- {
- if(substr($res["gebdat"],6,4) != "2099")
- $smarty->assign("gebdat",$res["gebdat"]);
- else
- $smarty->assign("gebdat",substr($res["gebdat"],0,5));
- }
- if($res["gebdat2"] != "01.01.2100")
- {
- if(substr($res["gebdat2"],6,4) != "2099")
- $smarty->assign("gebdat2",$res["gebdat2"]);
- else
- $smarty->assign("gebdat2",substr($res["gebdat2‚"],0,5));
- }
- $smarty->assign("adressid",$_GET["adressid"]);
- $_GET["kunde"] = $res["partner_id"];
- $qry=mysqli_query($dbconn, "SELECT id,anrede FROM anrede WHERE id < 4");
- while($res=mysqli_fetch_assoc($qry))
- {
- $anrids[] = $res["id"];
- $anrnames[] = $res["anrede"];
- }
+ $smarty->assign("kunde",$kunde);
+ $smarty->assign("adressid",$adressid);
+
+ list($anrids, $anrnamen) = auswahlliste($dbconn, "SELECT id, anrede FROM anrede WHERE id < 4");
$smarty->assign("anrids",$anrids);
- $smarty->assign("anrs",$anrnames);
- $qry=mysqli_query($dbconn, "SELECT id,titel FROM titel");
- while($res=mysqli_fetch_assoc($qry))
- {
- $titelids[] = $res["id"];
- $titelnames[] = $res["titel"];
- }
+ $smarty->assign("anrs",$anrnamen);
+ list($titelids, $titelnamen) = auswahlliste($dbconn, "SELECT id, titel FROM titel");
$smarty->assign("titelids",$titelids);
- $smarty->assign("titels",$titelnames);
-
- $qry=mysqli_query($dbconn, "SELECT id,typ FROM adresstyp WHERE id != 1");
- while($res=mysqli_fetch_assoc($qry))
- {
- $typids[] = $res["id"];
- $typnames[] = $res["typ"];
- }
+ $smarty->assign("titels",$titelnamen);
+ list($typids, $typnamen) = auswahlliste($dbconn, "SELECT id, typ FROM adresstyp WHERE id != 1");
$smarty->assign("typids",$typids);
- $smarty->assign("typs",$typnames);
- if($typ == 1)
- $smarty->assign("frmact","kundenchange");
- elseif($typ == 2)
- $smarty->assign("frmact","lieferchange");
+ $smarty->assign("typs",$typnamen);
+
+ $smarty->assign("frmact", $typ == 2 ? "lieferchange" : "kundenchange");
$smarty->display("newadress.tpl");
+ return 0;
}
//##############################################
//########## TEL.NRN. ######################
//##############################################
-function saveTel($dbconn)
+/*
+ * Legt eine Telefonnummer an oder ändert sie. $daten enthält telid,
+ * adresse_id, partner_id, typ_id, name, nr, vwahl und die Ortsangaben
+ * land/ort/plz/ortsteil.
+ */
+function speichereTelefon($dbconn, $daten)
{
- $telid = mysql_escape_string($_GET["telid"]);
- $adressid = mysql_escape_string($_GET["adressid"]);
- $land = mysql_escape_string(trim($_POST["land"]));
- $ort = mysql_escape_string(trim($_POST["ort"]));
- $plz = mysql_escape_string(trim($_POST["plz"]));
- $oteil = mysql_escape_string(trim($_POST["oteil"]));
- $name = mysql_escape_string(trim($_POST["name"]));
- $typ_id = mysql_escape_string(trim($_POST["typ"]));
- $nr = mysql_escape_string(trim($_POST["nr"]));
- $vwahl = mysql_escape_string(trim($_POST["vwahl"]));
- $kunde=mysql_escape_string($_GET["kunde"]);
-
- if(!$telid)
+ $telid = (int)$daten["telid"];
+ $act = $telid ? "ändern" : "anlegen";
+ message($telid ? "Telefonnummer wird geändert..." : "Telefonnummer wird angelegt...");
+
+ beginneSpeichern($dbconn);
+
+ $ids = ortsangabeIds($dbconn, $daten, "beim telefon $act");
+ if($ids === false)
+ return beendeSpeichern($dbconn, 1);
+ list($land_id, $ort_id) = $ids;
+
+ // Die Vorwahl hängt am Ort, nicht an der Nummer
+ $alteVorwahl = db_wert($dbconn, "SELECT vwahl FROM ort WHERE id = ?", array($ort_id));
+ if($alteVorwahl === false)
+ return beendeSpeichern($dbconn, error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn)));
+ $err = 0;
+ if($alteVorwahl !== $daten["vwahl"])
{
- message("Telefonnummer wird angelegt...");
- $act = "anlegen";
+ $sql = "UPDATE ort SET vwahl = ? WHERE id = ?";
+ $werte = array($daten["vwahl"], $ort_id);
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim anlegen der Vorwahl:
".mysqli_error($dbconn)));
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [(beim telefon $act)]",
+ db_sql_text($dbconn, $sql, array($alteVorwahl, $ort_id)), "ändern");
}
- else
+ if($err)
+ return beendeSpeichern($dbconn, $err);
+
+ $felder = array(
+ "ort_id" => $ort_id,
+ "typ_id" => (int)$daten["typ_id"],
+ "name" => $daten["name"],
+ "adresse_id" => (int)$daten["adresse_id"],
+ "nr" => $daten["nr"],
+ );
+ $zuweisung = array();
+ foreach(array_keys($felder) as $spalte)
+ $zuweisung[] = "`$spalte` = ?";
+ $set = implode(", ", $zuweisung);
+
+ if($telid)
{
- message("Telefonnummer wird geändert...");
- $act="ändern";
+ $alt = db_zeile($dbconn, "SELECT * FROM tel WHERE id = ?", array($telid));
+ if($alt === false || $alt === null)
+ return beendeSpeichern($dbconn, error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn)));
+
+ $sql = "UPDATE tel SET $set WHERE id = ?";
+ $werte = array_merge(array_values($felder), array($telid));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim ändern der Telefonnummer:
".mysqli_error($dbconn)));
+
+ $altWerte = array();
+ foreach(array_keys($felder) as $spalte)
+ $altWerte[] = $alt[$spalte];
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [tel change]",
+ db_sql_text($dbconn, $sql, array_merge($altWerte, array($telid))), "ändern");
}
- $qry=mysqli_query($dbconn,"SELECT id FROM land WHERE land = '$land'") or $err=error("Fehler beim suchen des Landes:
".mysqli_error($dbconn));
- if($res=mysqli_fetch_array($qry))
- $land_id = $res[0];
else
{
- $qry=mysqli_query($dbconn,"INSERT INTO land SET land = '$land'") or $err=error("Fehler beim anlegen des Landes:
".mysqli_error($dbconn));
- $land_id = mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO land SET land = $land [hat ID $land_id (beim telefon $act)]",
- "DELETE FROM land WHERE id = $land_id",
- "anlegen");
- }
+ $sql = "INSERT INTO tel SET $set, partner_id = ?";
+ $werte = array_merge(array_values($felder), array((int)$daten["partner_id"]));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim Anlegen der Telefonnummer:
".mysqli_error($dbconn)));
+ $telid = mysqli_insert_id($dbconn);
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [hat ID $telid]",
+ "DELETE FROM tel WHERE id = $telid", "anlegen");
}
- if(!$err)
- {
- $qry=mysqli_query($dbconn,"SELECT id FROM ort WHERE land_id = '$land_id' AND ort = '$ort' AND plz = '$plz' AND ortsteil = '$oteil'") or $err=error("Fehler beim suchen des Ortes:
".mysqli_error($dbconn));
- if($res=mysqli_fetch_array($qry))
- $ort_id = $res[0];
- else
- {
- $qry=mysqli_query($dbconn,"INSERT INTO ort SET land_id = '$land_id', ort = '$ort', plz = '$plz', ortsteil = '$oteil'") or $err=error("Fehler beim anlegen des Ortes:
".mysqli_error($dbconn));
- $ort_id = mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO ort SET land_id=$land_id,ort = $ort, plz=$plz, ortsteil=$oteil [hat ID $ort_id (beim telefon $act)]",
- "DELETE FROM ort WHERE id = $ort_id",
- "anlegen");
- }
- }
- }
- if(!$err)
- {
- $qry=mysqli_query($dbconn,"SELECT vwahl FROM ort WHERE id = '$ort_id'") or $err=error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn));
- $undores=mysqli_fetch_assoc($qry);
- $qry=mysqli_query($dbconn,"UPDATE ort SET vwahl = '$vwahl' WHERE id = '$ort_id'") or $err=error("Fehler beim anlegen der Vorwahl:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"UPDATE ort SET vwahl = $vwahl WHERE id = $ort_id [(beim telefon $act)]",
- "UPDATE ort SET vwahl = ".$undores["vwahl"]." WHERE id = $ort_id",
- "ändern");
- }
- if($telid)
- {
- $qry=mysqli_query($dbconn,"SELECT ort_id,typ_id,name,adresse_id='$adressid',nr FROM tel WHERE id = '$telid'") or $err=error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn));
- $undores=mysqli_fetch_assoc($qry);
- $qry=mysqli_query($dbconn,"UPDATE tel SET
- ort_id='$ort_id',
- typ_id='$typ_id',
- name='$name',
- adresse_id='$adressid',
- nr='$nr'
- WHERE id='$telid'") or $err=error("Fehler beim ändern der Telefonnummer:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"UPDATE tel SET ort_id=$ort_id, typ_id=$typ_id, name=$name, adresse_id='$adressid', nr=$nr WHERE id=$telid",
- "UPDATE tel SET ort_id=".$undores["ort_id"].", typ_id=".$undores["typ_id"].", name=".$undores["name"].",adresse_id='".$undores["adresse_id"]."', nr=".$undores["nr"]." WHERE id=$telid",
- "ändern");
- }
- }
- else
- {
- $qry=mysqli_query($dbconn,"INSERT INTO tel SET
- ort_id='$ort_id',
- typ_id='$typ_id',
- name='$name',
- adresse_id='$adressid',
- nr='$nr',
- partner_id='$kunde'") or $err=error("Fehler beim Anlegen der Telefonnummer:
".mysqli_error($dbconn));
- $telid=mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO tel SET ort_id=$ort_id, typ_id=$typ_id, name=$name, adresse_id='$adressid', nr=$nr, partner_id = $kunde [hat ID $telid]",
- "DELETE FROM tel WHERE id=$telid",
- "anlegen");
- }
- }
- }
- return $err;
+ return beendeSpeichern($dbconn, $err);
+}
+
+/* Telefonnummer aus dem eigenen Formular (newtel.tpl) */
+function saveTel($dbconn)
+{
+ return speichereTelefon($dbconn, array(
+ "telid" => parameterGanzzahl("telid"),
+ "adresse_id" => parameterGanzzahl("adressid"),
+ "partner_id" => parameterGanzzahl("kunde"),
+ "typ_id" => formularGanzzahl("typ"),
+ "name" => formularText("name"),
+ "nr" => formularText("nr"),
+ "vwahl" => formularText("vwahl"),
+ "land" => formularText("land"),
+ "ort" => formularText("ort"),
+ "plz" => formularText("plz"),
+ "ortsteil" => formularText("oteil"),
+ ));
}
function dispTelForm($dbconn,$smarty,$typ=1)
{
- if(!$_GET["telid"])
+ $telid = parameterGanzzahl("telid");
+ $kunde = parameterGanzzahl("kunde");
+ if(!$telid)
{
$smarty->assign("head","Neue Telefonnummer anlegen");
- $qry=mysqli_query($dbconn, "SELECT ort, vname, nname, vwahl, ortsteil, land, plz
- FROM adresse JOIN strasse ON strasse.id = adresse.str_id JOIN ort ON ort.id = strasse.ort_id JOIN land ON land.id = ort.land_id
- WHERE adresse.partner_id ='".mysql_escape_string($_GET["kunde"])."' AND adresse.typ_id = 1") or $err=error("Fehler beim auslesen der Daten:
".mysqli_error($dbconn));
+ // Ort und Name aus der Hauptadresse als Vorbelegung
+ $res = db_zeile($dbconn, "SELECT ort, vname, nname, vwahl, ortsteil, land, plz
+ FROM adresse
+ JOIN strasse ON strasse.id = adresse.str_id
+ JOIN ort ON ort.id = strasse.ort_id
+ JOIN land ON land.id = ort.land_id
+ WHERE adresse.partner_id = ? AND adresse.typ_id = 1", array($kunde));
}
else
{
$smarty->assign("head","Telefonnummer ändern");
- $qry=mysqli_query($dbconn, "SELECT ort, name, vwahl, ortsteil, land, plz, typ_id, partner_id, nr FROM tel
- JOIN ort ON tel.ort_id = ort.id
- JOIN land ON land.id = ort.land_id
- WHERE tel.id ='".mysql_escape_string($_GET["telid"])."'") or $err=error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ $res = db_zeile($dbconn, "SELECT ort, name, vwahl, ortsteil, land, plz, typ_id, partner_id, nr
+ FROM tel
+ JOIN ort ON tel.ort_id = ort.id
+ JOIN land ON land.id = ort.land_id
+ WHERE tel.id = ?", array($telid));
}
- $res=mysqli_fetch_assoc($qry);
- if($res["vname"] || $res["nname"])
- $res["name"] = $res["vname"]." ".$res["nname"];
-
- $smarty->assign("kunde",$_GET["kunde"]);
- $smarty->assign("name",$res["name"]);
- $smarty->assign("ort",$res["ort"]);
- $smarty->assign("plz",$res["plz"]);
- $smarty->assign("nr",$res["nr"]);
- $smarty->assign("vwahl",$res["vwahl"]);
- $smarty->assign("land",$res["land"]);
- $smarty->assign("oteil",$res["ortsteil"]);
- $smarty->assign("typ",$res["typ_id"]);
- $_GET["kunde"] = $res["partner_id"];
- $smarty->assign("telid",$_GET["telid"]);
+ if($res === false)
+ return error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ if(!$res)
+ $res = array();
+ if(!empty($res["vname"]) || !empty($res["nname"]))
+ $res["name"] = trim($res["vname"]." ".$res["nname"]);
+ if(!empty($res["partner_id"]))
+ $kunde = $res["partner_id"];
- $qry=mysqli_query($dbconn, "SELECT id,typ FROM teltyp");
- while($res=mysqli_fetch_assoc($qry))
- {
- $typids[] = $res["id"];
- $typnames[] = $res["typ"];
- }
+ foreach(array("name","ort","plz","nr","vwahl","land") as $feld)
+ $smarty->assign($feld, isset($res[$feld]) ? $res[$feld] : "");
+ $smarty->assign("oteil", isset($res["ortsteil"]) ? $res["ortsteil"] : "");
+ $smarty->assign("typ", isset($res["typ_id"]) ? $res["typ_id"] : "");
+ $smarty->assign("kunde",$kunde);
+ $smarty->assign("telid",$telid);
+
+ list($typids, $typnamen) = auswahlliste($dbconn, "SELECT id, typ FROM teltyp");
$smarty->assign("typids",$typids);
- $smarty->assign("typs",$typnames);
- if($typ == 1)
- $smarty->assign("frmact","kundenchange");
- elseif($typ == 2)
- $smarty->assign("frmact","lieferchange");
+ $smarty->assign("typs",$typnamen);
+ $smarty->assign("frmact", $typ == 2 ? "lieferchange" : "kundenchange");
$smarty->display("newtel.tpl");
+ return 0;
}
+
//##############################################
//########## KONTAKTE ######################
//##############################################
function saveKontakt($dbconn)
{
- $kontaktid = mysql_escape_string($_GET["kontaktid"]);
- $kontakt = trim($_POST["kontakt"]);
- $typ_id = mysql_escape_string(trim($_POST["typ"]));
- $kunde = mysql_escape_string($_GET["kunde"]);
+ $kontaktid = parameterGanzzahl("kontaktid");
+ $kunde = parameterGanzzahl("kunde");
+ $felder = array(
+ "kontakt" => formularText("kontakt"),
+ "typ_id" => formularGanzzahl("typ"),
+ );
+ $set = "kontakt = ?, typ_id = ?";
+ $err = 0;
+ beginneSpeichern($dbconn);
if($kontaktid)
{
message("Kontaktadresse wird geändert...");
- $qry=mysqli_query($dbconn,"SELECT kontakt, typ_id FROM kontakt WHERE id = '$kontaktid'") or $err=error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn));
- $undores=mysqli_fetch_assoc($qry);
- $qry=mysqli_query($dbconn,"UPDATE kontakt SET
- kontakt='$kontakt',
- typ_id='$typ_id'
- WHERE id='$kontaktid'") or $err=error("Fehler beim ändern der Kontaktadresse:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"UPDATE kontakt SET kontakt='$kontakt',typ_id='$typ_id', WHERE id='$kontaktid'",
- "UPDATE kontakt SET kontakt='".$undores["kontakt"]."',typ_id='".$undores["typ_id"]."', WHERE id='".$kontaktid."'",
- "ändern");
- }
+ $alt = db_zeile($dbconn, "SELECT kontakt, typ_id FROM kontakt WHERE id = ?", array($kontaktid));
+ if($alt === false || $alt === null)
+ return beendeSpeichern($dbconn, error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn)));
+
+ $sql = "UPDATE kontakt SET $set WHERE id = ?";
+ $werte = array_merge(array_values($felder), array($kontaktid));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim ändern der Kontaktadresse:
".mysqli_error($dbconn)));
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [kontakt change]",
+ db_sql_text($dbconn, $sql, array($alt["kontakt"], $alt["typ_id"], $kontaktid)), "ändern");
}
else
- {
+ {
message("Kontaktadresse wird angelegt...");
- $qry=mysqli_query($dbconn,"INSERT INTO kontakt SET
- kontakt='$kontakt',
- typ_id='$typ_id',
- partner_id='$kunde'") or $err=error("Fehler beim Anlegen der Kontaktadresse:
".mysqli_error($dbconn));
- $kontaktid=mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO kontakt SET kontakt='$kontakt', typ_id='$typ_id', partner_id='$kunde' [Hat ID $kontaktid]",
- "DELETE FROM kontakt WHERE id='".$kontaktid."'",
- "anlegen");
- }
+ $sql = "INSERT INTO kontakt SET $set, partner_id = ?";
+ $werte = array_merge(array_values($felder), array($kunde));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim Anlegen der Kontaktadresse:
".mysqli_error($dbconn)));
+ $kontaktid = mysqli_insert_id($dbconn);
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [Hat ID $kontaktid]",
+ "DELETE FROM kontakt WHERE id = $kontaktid", "anlegen");
}
- return $err;
+ return beendeSpeichern($dbconn, $err);
}
function dispKontaktForm($dbconn,$smarty,$typ=1)
{
- if(!$_GET["kontaktid"])
- {
+ $kontaktid = parameterGanzzahl("kontaktid");
+ $kunde = parameterGanzzahl("kunde");
+ $res = array();
+ if(!$kontaktid)
$smarty->assign("head","Neue Kontaktadresse anlegen");
- $res = array();
- }
else
{
$smarty->assign("head","Kontaktadresse ändern");
- $qry=mysqli_query($dbconn, "SELECT kontakt, typ_id, partner_id FROM kontakt
- WHERE id ='".mysql_escape_string($_GET["kontaktid"])."'") or $err=error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
- $res=mysqli_fetch_assoc($qry);
+ $res = db_zeile($dbconn, "SELECT kontakt, typ_id, partner_id FROM kontakt WHERE id = ?", array($kontaktid));
+ if($res === false)
+ return error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ if(!$res)
+ $res = array();
}
- $smarty->assign("kunde",$_GET["kunde"]);
- $smarty->assign("kontakt",$res["kontakt"]);
- $smarty->assign("typ",$res["typ_id"]);
- $_GET["kunde"] = $res["partner_id"];
- $smarty->assign("kontaktid",$_GET["kontaktid"]);
+ if(!empty($res["partner_id"]))
+ $kunde = $res["partner_id"];
+ $smarty->assign("kunde",$kunde);
+ $smarty->assign("kontakt", isset($res["kontakt"]) ? $res["kontakt"] : "");
+ $smarty->assign("typ", isset($res["typ_id"]) ? $res["typ_id"] : "");
+ $smarty->assign("kontaktid",$kontaktid);
- $qry=mysqli_query($dbconn, "SELECT id,typ FROM kontakttyp");
- while($res=mysqli_fetch_assoc($qry))
- {
- $typids[] = $res["id"];
- $typnames[] = $res["typ"];
- }
+ list($typids, $typnamen) = auswahlliste($dbconn, "SELECT id, typ FROM kontakttyp");
$smarty->assign("typids",$typids);
- $smarty->assign("typs",$typnames);
- if($typ == 1)
- $smarty->assign("frmact","kundenchange");
- elseif($typ == 2)
- $smarty->assign("frmact","lieferchange");
-
+ $smarty->assign("typs",$typnamen);
+ $smarty->assign("frmact", $typ == 2 ? "lieferchange" : "kundenchange");
$smarty->display("newkontakt.tpl");
+ return 0;
}
//##############################################
@@ -549,75 +704,88 @@ function dispKontaktForm($dbconn,$smarty,$typ=1)
function saveNotiz($dbconn)
{
- $notizid = mysql_escape_string($_GET["notizid"]);
- $notiz = trim($_POST["notiz"]);
- $color = mysql_escape_string(trim($_POST["color"]));
- $kunde = mysql_escape_string($_GET["kunde"]);
+ $notizid = parameterGanzzahl("notizid");
+ $kunde = parameterGanzzahl("kunde");
+ $felder = array(
+ "notiz" => formularText("notiz"),
+ "color" => formularText("color"),
+ );
+ $set = "notiz = ?, color = ?, datetime = NOW()";
+ $err = 0;
+ beginneSpeichern($dbconn);
if($notizid)
{
message("Notiz wird geändert...");
- $qry=mysqli_query($dbconn,"SELECT notiz, color, datetime FROM notiz WHERE id='$notizid'") or $err=error("Fehler beimerfassen der Daten für die LOG:
".mysqli_error($dbconn));
- $undores=mysqli_fetch_assoc($qry);
- $qry=mysqli_query($dbconn,"UPDATE notiz SET
- notiz='$notiz',
- color='$color',
- datetime=NOW()
- WHERE id='$notizid'") or $err=error("Fehler beim ändern der Notiz:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"UPDATE notiz SET notiz='$notiz',color='$color', datetime=NOW() WHERE id='$notizid'",
- "UPDATE notiz SET notiz='".$undores["notiz"]."',color='".$undores["color"]."', datetime='".$undores["datetime"]."' WHERE id='$notizid'",
- "ändern");
- }
+ $alt = db_zeile($dbconn, "SELECT notiz, color, datetime FROM notiz WHERE id = ?", array($notizid));
+ if($alt === false || $alt === null)
+ return beendeSpeichern($dbconn, error("Fehler beim erfassen der Daten für die LOG:
".mysqli_error($dbconn)));
+
+ $sql = "UPDATE notiz SET $set WHERE id = ?";
+ $werte = array_merge(array_values($felder), array($notizid));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim ändern der Notiz:
".mysqli_error($dbconn)));
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [notiz change]",
+ db_sql_text($dbconn, "UPDATE notiz SET notiz = ?, color = ?, datetime = ? WHERE id = ?",
+ array($alt["notiz"], $alt["color"], $alt["datetime"], $notizid)), "ändern");
}
else
- {
- message("Notiz wird angelegt...");
- $qry=mysqli_query($dbconn,"INSERT INTO notiz SET
- notiz='$notiz',
- color='$color',
- datetime=NOW(),
- partner_id='$kunde'") or $err=error("Fehler beim Anlegen der Notiz:
".mysqli_error($dbconn));
- $notizid=mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO notiz SET notiz='$notiz',color='$color', datetime=NOW(), partner_id='$kunde' [Hat ID $notizid]",
- "DELETE FROM notiz WHERE id='$notizid'",
- "anlegen");
- }
- }
- if($_FILES['notefile']['tmp_name'])
{
- //echo "Dateiname: ./".UPLOADS_PATH."notes/".$notizid.".".pathinfo($_FILES["notefile"]["name"],PATHINFO_EXTENSION);
- if(!is_dir("./".UPLOADS_PATH."notes/"))
- $err = error("Pfad zum speichern existiert nicht");
- del_files("./".UPLOADS_PATH."notes/","!^".$notizid."\..*$!");
- if(!move_uploaded_file($_FILES['notefile']['tmp_name'], "./".UPLOADS_PATH."notes/".$notizid.".".pathinfo($_FILES["notefile"]["name"],PATHINFO_EXTENSION)))
- $err = error("Hochgeladene Datei konnte leider nicht gespeichert werden.");
+ message("Notiz wird angelegt...");
+ $sql = "INSERT INTO notiz SET $set, partner_id = ?";
+ $werte = array_merge(array_values($felder), array($kunde));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim Anlegen der Notiz:
".mysqli_error($dbconn)));
+ $notizid = mysqli_insert_id($dbconn);
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [Hat ID $notizid]",
+ "DELETE FROM notiz WHERE id = $notizid", "anlegen");
}
- return $err;
+ if(!$err && !empty($_FILES["notefile"]["tmp_name"]))
+ $err = speichereNotizDatei($notizid);
+ return beendeSpeichern($dbconn, $err);
+}
+
+/*
+ * Anhang einer Notiz. Der Dateiname ist die Notiz-id, die Endung kommt aus
+ * dem Hochgeladenen - deshalb wird sie auf harmlose Zeichen begrenzt, sonst
+ * ließe sich über den Namen eine .php im Uploads-Verzeichnis ablegen.
+ */
+function speichereNotizDatei($notizid)
+{
+ $ordner = "./".UPLOADS_PATH."notes/";
+ if(!is_dir($ordner))
+ return error("Pfad zum speichern existiert nicht");
+ $endung = strtolower(pathinfo($_FILES["notefile"]["name"], PATHINFO_EXTENSION));
+ if(!preg_match('/^[a-z0-9]{1,8}$/', $endung) || in_array($endung, array("php", "phtml", "phar", "htaccess")))
+ return error("Dieser Dateityp kann nicht gespeichert werden.");
+ del_files($ordner, "!^".preg_quote((string)$notizid, "!")."\..*$!");
+ if(!move_uploaded_file($_FILES["notefile"]["tmp_name"], $ordner.$notizid.".".$endung))
+ return error("Hochgeladene Datei konnte leider nicht gespeichert werden.");
+ return 0;
}
function dispNotizForm($dbconn,$smarty,$typ=1)
{
- if(!$_GET["notizid"])
- {
+ $notizid = parameterGanzzahl("notizid");
+ $kunde = parameterGanzzahl("kunde");
+ $res = array();
+ if(!$notizid)
$smarty->assign("head","Neue Notiz anlegen");
- $res = array();
- }
else
{
$smarty->assign("head","Notiz ändern");
- $qry=mysqli_query($dbconn, "SELECT notiz, color, partner_id FROM notiz
- WHERE id ='".mysql_escape_string($_GET["notizid"])."'") or $err=error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
- $res=mysqli_fetch_assoc($qry);
+ $res = db_zeile($dbconn, "SELECT notiz, color, partner_id FROM notiz WHERE id = ?", array($notizid));
+ if($res === false)
+ return error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ if(!$res)
+ $res = array();
}
- $smarty->assign("kunde",$_GET["kunde"]);
- $smarty->assign("notiz",$res["notiz"]);
- $smarty->assign("color",$res["color"]);
- $_GET["kunde"] = $res["partner_id"];
- $smarty->assign("notizid",$_GET["notizid"]);
+ if(!empty($res["partner_id"]))
+ $kunde = $res["partner_id"];
+ $smarty->assign("kunde",$kunde);
+ $smarty->assign("notiz", isset($res["notiz"]) ? $res["notiz"] : "");
+ $smarty->assign("color", isset($res["color"]) ? $res["color"] : "");
+ $smarty->assign("notizid",$notizid);
$smarty->assign("colors",array("#fff"=>"",
"#afa"=>"",
"#ee0"=>"",
@@ -627,141 +795,107 @@ function dispNotizForm($dbconn,$smarty,$typ=1)
"#bbf"=>"",
"#aff"=>"",
"#ccc"=>""));
- if($typ == 1)
- $smarty->assign("frmact","kundenchange");
- elseif($typ == 2)
- $smarty->assign("frmact","lieferchange");
+ $smarty->assign("frmact", $typ == 2 ? "lieferchange" : "kundenchange");
$smarty->display("newnotiz.tpl");
-
+ return 0;
}
//##############################################
//########## PARTNER ######################
//##############################################
+/*
+ * Legt einen Partner samt Hauptadresse und erster Telefonnummer an
+ * (newpar.tpl). $typ ist 1 für Kunden, 2 für Lieferanten. Rückgabe ist
+ * array($err, $partner_id).
+ */
function savePart($dbconn,$typ=1)
{
-
-
- $typ_id = 1;
- $kunde=mysql_escape_string($_GET["kunde"]);
-
message("Partner wird angelegt...");
- $act="anlegen";
+ beginneSpeichern($dbconn);
- $qry=mysqli_query($dbconn,"INSERT INTO partner SET datetime_new = NOW(), user_id = '".mysql_escape_string($_SESSION["user"])."', typ_id = $typ, zahlziel_id = 1") or $err=error("Fehler beim anlegen des Parnters:
".mysqli_error($dbconn));
+ $sql = "INSERT INTO partner SET datetime_new = NOW(), user_id = ?, typ_id = ?, zahlziel_id = 1";
+ $werte = array($_SESSION["user"], (int)$typ);
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return array(beendeSpeichern($dbconn, error("Fehler beim anlegen des Parnters:
".mysqli_error($dbconn))), 0);
$partner_id = mysqli_insert_id($dbconn);
+
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [Hat ID $partner_id]",
+ "DELETE FROM partner WHERE id = $partner_id", "anlegen");
if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO partner SET datetime_new = NOW(), user_id = '".mysql_escape_string($_SESSION["user"])."', typ_id = $typ [Hat ID $partner_id]","DELETE FROM partner WHERE id = $partner_id","anlegen");
- }
- $_GET["kunde"] = $partner_id;
- if(!$err)
- {
- $_POST["typ"] = 1;
- $err=saveAdress($dbconn);
- }
- if(!$err)
- {
- $_POST["land"] = mysql_escape_string(trim($_POST["telland"]));
- $_POST["ort"] = mysql_escape_string(trim($_POST["telort"]));
- $_POST["plz"] = mysql_escape_string(trim($_POST["telplz"]));
- $_POST["oteil"] = mysql_escape_string(trim($_POST["teloteil"]));
- $_POST["typ"] = $_POST["teltyp"];
- if($_POST["nr"])
- $err=saveTel($dbconn);
- }
- return array($err,$partner_id);
+ $err = saveAdress($dbconn, $partner_id, 1, 0);
+ if(!$err && formularText("nr") !== "")
+ $err = speichereTelefon($dbconn, array(
+ "telid" => 0,
+ "adresse_id" => 0,
+ "partner_id" => $partner_id,
+ "typ_id" => formularGanzzahl("teltyp"),
+ "name" => formularText("name"),
+ "nr" => formularText("nr"),
+ "vwahl" => formularText("vwahl"),
+ "land" => formularText("telland"),
+ "ort" => formularText("telort"),
+ "plz" => formularText("telplz"),
+ "ortsteil" => formularText("teloteil"),
+ ));
+ return array(beendeSpeichern($dbconn, $err), $partner_id);
}
function dispPartForm($dbconn,$smarty,$typ=1)
{
- if($typ == 1)
- $typname= "Kunden";
- elseif($typ == 2)
- $typname = "Zulieferer";
- $smarty->assign("head","Neuen $typname anlegen");
-
- $qry=mysqli_query($dbconn, "SELECT id,anrede FROM anrede WHERE id < 4");
- while($res=mysqli_fetch_assoc($qry))
- {
- $anrids[] = $res["id"];
- $anrnames[] = $res["anrede"];
- }
+ $smarty->assign("head","Neuen ".($typ == 2 ? "Zulieferer" : "Kunden")." anlegen");
+
+ list($anrids, $anrnamen) = auswahlliste($dbconn, "SELECT id, anrede FROM anrede WHERE id < 4");
$smarty->assign("anrids",$anrids);
- $smarty->assign("anrs",$anrnames);
- $qry=mysqli_query($dbconn, "SELECT id,titel FROM titel");
- while($res=mysqli_fetch_assoc($qry))
- {
- $titelids[] = $res["id"];
- $titelnames[] = $res["titel"];
- }
+ $smarty->assign("anrs",$anrnamen);
+ list($titelids, $titelnamen) = auswahlliste($dbconn, "SELECT id, titel FROM titel");
$smarty->assign("titelids",$titelids);
- $smarty->assign("titels",$titelnames);
-
- $qry=mysqli_query($dbconn, "SELECT id,typ FROM teltyp");
- while($res=mysqli_fetch_assoc($qry))
- {
- $typids[] = $res["id"];
- $typnames[] = $res["typ"];
- }
+ $smarty->assign("titels",$titelnamen);
+ list($typids, $typnamen) = auswahlliste($dbconn, "SELECT id, typ FROM teltyp");
$smarty->assign("typids",$typids);
- $smarty->assign("typs",$typnames);
+ $smarty->assign("typs",$typnamen);
$smarty->assign("partyp",$typ);
- if($typ == 1)
- $smarty->assign("frmact","kundenadd");
- elseif($typ == 2)
- $smarty->assign("frmact","lieferadd");
+ $smarty->assign("frmact", $typ == 2 ? "lieferadd" : "kundenadd");
$smarty->display("newpar.tpl");
-
+ return 0;
}
+/*
+ * Neue Version eines Kunden: Der alte Datensatz bleibt erhalten und zeigt
+ * über updated_by auf den neuen. Alte Rechnungen behalten dadurch die
+ * Adresse, unter der sie gestellt wurden.
+ */
function updateKunde($dbconn,$oldkunde)
{
- $land = mysql_escape_string(trim($_POST["land"]));
- $ort = mysql_escape_string(trim($_POST["ort"]));
- $plz = mysql_escape_string(trim($_POST["plz"]));
- $oteil = mysql_escape_string(trim($_POST["oteil"]));
- $str = mysql_escape_string(trim($_POST["str"]));
- $hnr = mysql_escape_string(trim($_POST["hnr"]));
- $firma = mysql_escape_string(trim($_POST["firma"]));
- $vname = mysql_escape_string(trim($_POST["vname"]));
- $nname = mysql_escape_string(trim($_POST["nname"]));
- $vname2 = mysql_escape_string(trim($_POST["vname2"]));
- $nname2 = mysql_escape_string(trim($_POST["nname2"]));
- $anrede_id = mysql_escape_string(trim($_POST["anrede"]));
- $titel_id = mysql_escape_string(trim($_POST["titel"]));
- $typ_id = 1;
- $kunde=mysql_escape_string($_GET["kunde"]);
-
message("Update von Kunde wird angelegt...");
- $act="anlegen";
+ beginneSpeichern($dbconn);
- $qry=mysqli_query($dbconn,"INSERT INTO partner SET datetime_new = NOW(), user_id = '".mysql_escape_string($_SESSION["user"])."', typ_id = 1, zahlziel_id = 1") or $err=error("Fehler beim anlegen des Kunden:
".mysqli_error($dbconn));
+ $sql = "INSERT INTO partner SET datetime_new = NOW(), user_id = ?, typ_id = 1, zahlziel_id = 1";
+ $werte = array($_SESSION["user"]);
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim anlegen des Kunden:
".mysqli_error($dbconn)));
$partner_id = mysqli_insert_id($dbconn);
+
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [Hat ID $partner_id]",
+ "DELETE FROM partner WHERE id = $partner_id", "anlegen");
+
if(!$err)
{
- $err = saveLog($dbconn,"INSERT INTO partner SET datetime_new = NOW(), user_id = '".mysql_escape_string($_SESSION["user"])."', typ_id = 1 [Hat ID $partner_id]","DELETE FROM partner WHERE id = $partner_id","anlegen");
- }
- $_GET["kunde"] = $partner_id;
-
- $qry=mysqli_query($dbconn,"SELECT datetime_lastchange, user_id, updated_by FROM partner WHERE id = '$oldkunde'") or $err=error("Fehler beim abrufen der infos für die LOG:
".mysqli_error($dbconn));
- $undores = mysqli_fetch_assoc($qry);
- $qry=mysqli_query($dbconn,"UPDATE partner SET datetime_lastchange = NOW(), user_id = '".mysql_escape_string($_SESSION["user"])."', updated_by = '$partner_id' WHERE id = '$oldkunde'") or $err=error("Fehler beim update des alten Kunden:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,
- "UPDATE partner SET datetime_lastchange = NOW(), user_id = '".mysql_escape_string($_SESSION["user"])."', updated_by = '$partner_id' WHERE id = '$oldkunde'",
- "UPDATE partner SET datetime_lastchange = ".$undores["datetime_lastchange"].", user_id = '".$undores["user_id"]."', updated_by = '".$undores["partner_id"]."' WHERE id = '$oldkunde'",
- "ändern");
+ $alt = db_zeile($dbconn, "SELECT datetime_lastchange, user_id, updated_by FROM partner WHERE id = ?", array($oldkunde));
+ if($alt === false || $alt === null)
+ return beendeSpeichern($dbconn, error("Fehler beim abrufen der infos für die LOG:
".mysqli_error($dbconn)));
+
+ $sql = "UPDATE partner SET datetime_lastchange = NOW(), user_id = ?, updated_by = ? WHERE id = ?";
+ $werte = array($_SESSION["user"], $partner_id, $oldkunde);
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim update des alten Kunden:
".mysqli_error($dbconn)));
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [kunde update]",
+ db_sql_text($dbconn, "UPDATE partner SET datetime_lastchange = ?, user_id = ?, updated_by = ? WHERE id = ?",
+ array($alt["datetime_lastchange"], $alt["user_id"], $alt["updated_by"], $oldkunde)), "ändern");
}
if(!$err)
- {
- $_POST["typ"] = 1;
- $_GET["adressid"] = 0;
- $err=saveAdress($dbconn);
- }
- return $err;
+ $err = saveAdress($dbconn, $partner_id, 1, 0);
+ return beendeSpeichern($dbconn, $err);
}
//##############################################
@@ -770,115 +904,443 @@ function updateKunde($dbconn,$oldkunde)
function saveKonto($dbconn)
{
- $kontoid = mysql_escape_string($_GET["kontoid"]);
- $bank = mysql_escape_string(trim($_POST["bank"]));
- $blz = mysql_escape_string(trim($_POST["blz"]));
- $ktonr = mysql_escape_string(trim($_POST["ktonr"]));
- $iban = mysql_escape_string(trim($_POST["iban"]));
- $swift = mysql_escape_string(trim($_POST["swift"]));
- $inhaber = mysql_escape_string(trim($_POST["inhaber"]));
- $kunde=mysql_escape_string($_GET["kunde"]);
- if(!$kontoid)
+ $kontoid = parameterGanzzahl("kontoid");
+ $kunde = parameterGanzzahl("kunde");
+ $act = $kontoid ? "ändern" : "anlegen";
+ message($kontoid ? "Konto wird geändert..." : "Konto wird angelegt...");
+
+ beginneSpeichern($dbconn);
+ $bank_id = bankId($dbconn, formularText("bank"), formularText("blz"), "beim konto $act");
+ if($bank_id === false)
+ return beendeSpeichern($dbconn, 1);
+
+ $felder = array(
+ "bank_id" => $bank_id,
+ "inhaber" => formularText("inhaber"),
+ "iban" => formularText("iban"),
+ "swift" => formularText("swift"),
+ "ktonr" => formularText("ktonr"),
+ );
+ $zuweisung = array();
+ foreach(array_keys($felder) as $spalte)
+ $zuweisung[] = "`$spalte` = ?";
+ $set = implode(", ", $zuweisung);
+ $err = 0;
+
+ if($kontoid)
{
- message("Konto wird angelegt...");
- $act = "anlegen";
+ $alt = db_zeile($dbconn, "SELECT * FROM konto WHERE id = ?", array($kontoid));
+ if($alt === false || $alt === null)
+ return beendeSpeichern($dbconn, error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn)));
+
+ $sql = "UPDATE konto SET $set WHERE id = ?";
+ $werte = array_merge(array_values($felder), array($kontoid));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim ändern des Kontos:
".mysqli_error($dbconn)));
+
+ $altWerte = array();
+ foreach(array_keys($felder) as $spalte)
+ $altWerte[] = $alt[$spalte];
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [konto change]",
+ db_sql_text($dbconn, $sql, array_merge($altWerte, array($kontoid))), "ändern");
}
- else
- {
- message("Konto wird geändert...");
- $act="ändern";
- }
- $qry=mysqli_query($dbconn,"SELECT id FROM bank WHERE bank = '$bank' AND blz = '$blz'") or $err=error("Fehler beim suchen der Bank:
".mysqli_error($dbconn));
- if($res=mysqli_fetch_array($qry))
- $bank_id = $res[0];
else
{
- $qry=mysqli_query($dbconn,"INSERT INTO bank SET bank = '$bank', blz = '$blz'") or $err=error("Fehler beim anlegen der Bank:
".mysqli_error($dbconn));
- $bank_id = mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO bank SET bank = '$bank', blz = '$blz' [hat ID $bank_id (beim konto $act)]",
- "DELETE FROM bank WHERE id = $bankk_id",
- "anlegen");
- }
+ $sql = "INSERT INTO konto SET $set, partner_id = ?";
+ $werte = array_merge(array_values($felder), array($kunde));
+ if(!db_abfrage($dbconn, $sql, $werte))
+ return beendeSpeichern($dbconn, error("Fehler beim Anlegen des Kontos:
".mysqli_error($dbconn)));
+ $kontoid = mysqli_insert_id($dbconn);
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, $werte)." [Hat ID $kontoid]",
+ "DELETE FROM konto WHERE id = $kontoid", "anlegen");
}
- if(!$err)
- {
- if($kontoid)
- {
- $qry=mysqli_query($dbconn,"SELECT bank_id, ktonr, iban, swift, inhaber FROM konto WHERE id = '$kontoid'") or $err=error("Fehler beim ermitteln der Daten für die LOG:
".mysqli_error($dbconn));
- $undores=mysqli_fetch_assoc($qry);
- $qry=mysqli_query($dbconn,"UPDATE konto SET
- bank_id='$bank_id',
- inhaber='$inhaber',
- iban='$iban',
- swift='$swift',
- ktonr='$ktonr'
- WHERE id='$kontoid'") or $err=error("Fehler beim ändern des Kontos:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"UPDATE konto SET bank_id='$bank_id', inhaber='$inhaber', iban='$iban', swift='$swift', ktonr='$ktonr' WHERE id='$kontoid'",
- "UPDATE konto SET bank_id=".$undores["bank_id"].", ktonr=".$undores["ktonr"].", inhaber=".$undores["inhaber"].", iban=".$undores["iban"].", swift=".$undores["swift"]." WHERE id=$telid",
- "ändern");
- }
- }
- else
- {
- $qry=mysqli_query($dbconn,"INSERT INTO konto SET
- bank_id='$bank_id',
- inhaber='$inhaber',
- iban='$iban',
- swift='$swift',
- ktonr='$ktonr',
- partner_id='$kunde'") or $err=error("Fehler beim Anlegen des Kontos:
".mysqli_error($dbconn));
- $kontoid=mysqli_insert_id($dbconn);
- if(!$err)
- {
- $err = saveLog($dbconn,"INSERT INTO konto SET bank_id='$bank_id', inhaber='$inhaber', iban='$iban', swift='$swift', ktonr='$ktonr' WHERE id='$kontoid'",
- "DELETE FROM konto WHERE id=$kontoid",
- "anlegen");
- }
- }
- }
- return $err;
+ return beendeSpeichern($dbconn, $err);
}
function dispKontoForm($dbconn,$smarty,$typ=1)
{
- if(!$_GET["kontoid"])
+ $kontoid = parameterGanzzahl("kontoid");
+ $kunde = parameterGanzzahl("kunde");
+ if(!$kontoid)
{
$smarty->assign("head","Neues Konto anlegen");
- $qry=mysqli_query($dbconn, "SELECT vname, nname, firma, partner_id FROM adresse
- WHERE partner_id ='".mysql_escape_string($_GET["kunde"])."' AND typ_id = 1") or $err=error("Fehler beim auslesen der Daten:
".mysqli_error($dbconn));
+ // Inhaber aus der Hauptadresse vorbelegen
+ $res = db_zeile($dbconn, "SELECT vname, nname, firma, partner_id FROM adresse
+ WHERE partner_id = ? AND typ_id = 1", array($kunde));
}
else
{
$smarty->assign("head","Konto ändern");
- $qry=mysqli_query($dbconn, "SELECT ktonr, iban, swift, blz, bank, inhaber, partner_id FROM konto
+ $res = db_zeile($dbconn, "SELECT ktonr, iban, swift, blz, bank, inhaber, partner_id FROM konto
JOIN bank ON konto.bank_id = bank.id
- WHERE konto.id ='".mysql_escape_string($_GET["kontoid"])."'") or $err=error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ WHERE konto.id = ?", array($kontoid));
}
- $res=mysqli_fetch_assoc($qry);
- if($res["vname"] || $res["nname"])
- $res["inhaber"] = $res["vname"]." ".$res["nname"];
- if($res["firma"])
+ if($res === false)
+ return error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
+ if(!$res)
+ $res = array();
+ if(!empty($res["vname"]) || !empty($res["nname"]))
+ $res["inhaber"] = trim($res["vname"]." ".$res["nname"]);
+ if(!empty($res["firma"]))
$res["inhaber"] = $res["firma"];
-
- $smarty->assign("iban",$_GET["iban"]);
- $smarty->assign("swift",$res["swift"]);
- $smarty->assign("ktonr",$res["ktonr"]);
- $smarty->assign("bank",$res["bank"]);
- $smarty->assign("blz",$res["blz"]);
- $smarty->assign("inhaber",$res["inhaber"]);
- $_GET["kunde"] = $res["partner_id"];
- $smarty->assign("kunde",$_GET["kunde"]);
- $smarty->assign("kontoid",$_GET["kontoid"]);
- if($typ == 1)
- $smarty->assign("frmact","kundenchange");
- elseif($typ == 2)
- $smarty->assign("frmact","lieferchange");
-
+ if(!empty($res["partner_id"]))
+ $kunde = $res["partner_id"];
+
+ foreach(array("iban","swift","ktonr","bank","blz","inhaber") as $feld)
+ $smarty->assign($feld, isset($res[$feld]) ? $res[$feld] : "");
+ $smarty->assign("kunde",$kunde);
+ $smarty->assign("kontoid",$kontoid);
+ $smarty->assign("frmact", $typ == 2 ? "lieferchange" : "kundenchange");
$smarty->display("newkonto.tpl");
+ return 0;
}
-?>
\ No newline at end of file
+//##############################################
+//########## LÖSCHEN ######################
+//##############################################
+
+/*
+ * Die Unterdatensätze eines Partners. "beschreibung" liefert den Text fürs
+ * Änderungsprotokoll, "form"/"save" die Funktionen der Pflegeseite.
+ * Tabellen- und Spaltennamen stammen ausschließlich von hier, nie aus der
+ * Anfrage - binden lassen sie sich nicht.
+ */
+function partnerBereiche()
+{
+ return array(
+ "adress" => array(
+ "tabelle" => "adresse", "param" => "adressid", "was" => "Adresse",
+ "form" => "dispAdressForm", "save" => "saveAdress",
+ "beschreibung" => "SELECT CONCAT(adresstyp.typ, ' (', vname, ' ', nname, ' - ', firma, ')') FROM adresse JOIN adresstyp ON adresstyp.id = adresse.typ_id WHERE adresse.id = ?",
+ ),
+ "tel" => array(
+ "tabelle" => "tel", "param" => "telid", "was" => "Telefonnummer",
+ "form" => "dispTelForm", "save" => "saveTel",
+ "beschreibung" => "SELECT CONCAT(teltyp.typ, ' ', tel.nr) FROM tel JOIN teltyp ON teltyp.id = tel.typ_id WHERE tel.id = ?",
+ ),
+ "kontakt" => array(
+ "tabelle" => "kontakt", "param" => "kontaktid", "was" => "Kontaktinformation",
+ "form" => "dispKontaktForm", "save" => "saveKontakt",
+ "beschreibung" => "SELECT CONCAT(kontakttyp.typ, ' ', kontakt.kontakt) FROM kontakt JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id WHERE kontakt.id = ?",
+ ),
+ "notiz" => array(
+ "tabelle" => "notiz", "param" => "notizid", "was" => "Notiz",
+ "form" => "dispNotizForm", "save" => "saveNotiz",
+ "beschreibung" => "SELECT LEFT(notiz, 60) FROM notiz WHERE id = ?",
+ ),
+ "konto" => array(
+ "tabelle" => "konto", "param" => "kontoid", "was" => "Konto",
+ "form" => "dispKontoForm", "save" => "saveKonto",
+ "beschreibung" => "SELECT CONCAT(bank.bank, ' ', konto.iban, konto.ktonr) FROM konto JOIN bank ON bank.id = konto.bank_id WHERE konto.id = ?",
+ ),
+ );
+}
+
+/*
+ * Löscht einen Unterdatensatz eines Partners. Der JOIN auf partner stellt
+ * sicher, dass er wirklich zu einem Partner des erwarteten Typs gehört -
+ * sonst ließe sich über die Lieferantenseite ein Kunde bearbeiten.
+ */
+function loescheUnterdatensatz($dbconn, $bereich, $id, $partnertyp)
+{
+ $tabelle = $bereich["tabelle"];
+ $partnerwort = $partnertyp == 2 ? "Lieferant" : "Kunde";
+
+ $kdnr = db_wert($dbconn, "SELECT $tabelle.partner_id FROM $tabelle
+ JOIN partner ON partner.id = $tabelle.partner_id
+ WHERE $tabelle.id = ? AND partner.typ_id = ?", array($id, $partnertyp));
+ if($kdnr === false)
+ return error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
+ if(!$kdnr)
+ return error("Ungültiger $partnerwort!");
+
+ // Ohne Hauptadresse ist der Partner nicht mehr auffindbar, die
+ // Oberfläche bietet das Löschen dafür auch gar nicht erst an
+ if($tabelle == "adresse" && db_wert($dbconn, "SELECT typ_id FROM adresse WHERE id = ?", array($id)) == 1)
+ return error("Die Hauptadresse lässt sich nicht löschen.");
+
+ $beschreibung = db_wert($dbconn, $bereich["beschreibung"], array($id));
+ if($beschreibung === false)
+ $beschreibung = "";
+
+ beginneSpeichern($dbconn);
+ $err = 0;
+ if($tabelle == "adresse")
+ $err = loescheAdressAnhaenge($dbconn, $id);
+ if(!$err)
+ {
+ $sql = "DELETE FROM $tabelle WHERE id = ?";
+ if(!db_abfrage($dbconn, $sql, array($id)))
+ $err = error("Fehler beim löschen der ".$bereich["was"].":
".mysqli_error($dbconn));
+ else
+ $err = saveLog($dbconn, db_sql_text($dbconn, $sql, array($id))." [$beschreibung von $partnerwort $kdnr]", "", "löschen");
+ }
+ if(!$err && $tabelle == "notiz")
+ del_files("./".UPLOADS_PATH."notes/", "!^".preg_quote((string)$id, "!")."\..*$!");
+ return beendeSpeichern($dbconn, $err);
+}
+
+/*
+ * Entwürfe (tmp_rechnung) samt Artikeln und Eigenschaften. $spalte ist
+ * "adresse_id" oder "partner_id"; die Reihenfolge ist wichtig, weil
+ * tmp_artikel per Fremdschlüssel an tmp_rechnung hängt.
+ */
+function loescheEntwuerfe($dbconn, $spalte, $wert)
+{
+ $err = 0;
+ db_abfrage($dbconn, "DELETE tmp_eigensch FROM tmp_eigensch
+ JOIN tmp_artikel ON tmp_eigensch.art_id = tmp_artikel.id
+ JOIN tmp_rechnung ON tmp_artikel.rech_id = tmp_rechnung.id
+ WHERE tmp_rechnung.$spalte = ?", array($wert))
+ or $err = error("Fehler beim löschen der Entwurfs-Eigenschaften:
".mysqli_error($dbconn));
+ if(!$err)
+ db_abfrage($dbconn, "DELETE tmp_artikel FROM tmp_artikel
+ JOIN tmp_rechnung ON tmp_artikel.rech_id = tmp_rechnung.id
+ WHERE tmp_rechnung.$spalte = ?", array($wert))
+ or $err = error("Fehler beim löschen der Entwurfs-Artikel:
".mysqli_error($dbconn));
+ if(!$err)
+ db_abfrage($dbconn, "DELETE FROM tmp_rechnung WHERE $spalte = ?", array($wert))
+ or $err = error("Fehler beim löschen der Entwürfe:
".mysqli_error($dbconn));
+ return $err;
+}
+
+/*
+ * Alles, was auf eine Adresse zeigt: Telefonnummern und Dokumente. Die
+ * Oberfläche kündigt beim Löschen einer Adresse ausdrücklich an, dass die
+ * zugehörigen Rechnungen mit verschwinden - ohne das blieben sie mit einer
+ * ins Leere zeigenden Adresse zurück.
+ */
+function loescheAdressAnhaenge($dbconn, $adressid)
+{
+ $err = 0;
+ $rechnungen = db_zeilen($dbconn, "SELECT id, rechnr FROM rechnung WHERE adresse_id = ?", array($adressid));
+ if($rechnungen === false)
+ return error("Fehler beim ermitteln verknüpfter Rechnungen:
".mysqli_error($dbconn));
+ foreach($rechnungen as $rechnung)
+ {
+ if(!$err)
+ db_abfrage($dbconn, "DELETE FROM artikelsks WHERE rechnr = ?", array($rechnung["rechnr"]))
+ or $err = error("Fehler beim löschen verknüpfter SKS Artikel:
".mysqli_error($dbconn));
+ if(!$err)
+ $err = delRechnung($dbconn, $rechnung["id"]);
+ }
+ if(!$err)
+ $err = loescheEntwuerfe($dbconn, "adresse_id", $adressid);
+ if(!$err)
+ db_abfrage($dbconn, "DELETE FROM tel WHERE adresse_id = ?", array($adressid))
+ or $err = error("Fehler beim löschen der zugehörigen Telefonnummern:
".mysqli_error($dbconn));
+ return $err;
+}
+
+/*
+ * Löscht einen Partner mit allem, was an ihm hängt. $typ ist 1 für Kunden,
+ * 2 für Lieferanten.
+ *
+ * Braucht das Rechnungsmodul (delRechnung), die aufrufende Seite muss
+ * incs/rechnung.php eingebunden haben.
+ */
+function loeschePartner($dbconn, $kundeid, $typ)
+{
+ $partnerwort = $typ == 2 ? "Lieferant" : "Kunde";
+ $res = db_zeile($dbconn, "SELECT partner.id, vname, nname, firma FROM partner
+ JOIN adresse ON adresse.partner_id = partner.id
+ WHERE partner.id = ? AND adresse.typ_id = 1 AND partner.typ_id = ?",
+ array($kundeid, $typ));
+ if($res === false)
+ return error("Fehler beim ermitteln der Kundendaten für die LOG:
".mysqli_error($dbconn));
+ if(!$res)
+ return error("Ungültiger $partnerwort!");
+ $beschreibung = $res["vname"]." ".$res["nname"]." - ".$res["firma"];
+
+ beginneSpeichern($dbconn);
+ $err = 0;
+ $rechnungen = db_zeilen($dbconn, "SELECT id, rechnr FROM rechnung WHERE partner_id = ?", array($kundeid));
+ if($rechnungen === false)
+ $err = error("Fehler beim ermitteln verknüpfter Rechnungen:
".mysqli_error($dbconn));
+ foreach((array)$rechnungen as $rechnung)
+ {
+ if(!$err)
+ db_abfrage($dbconn, "DELETE FROM artikelsks WHERE rechnr = ?", array($rechnung["rechnr"]))
+ or $err = error("Fehler beim löschen verknüpfter SKS Artikel:
".mysqli_error($dbconn));
+ if(!$err)
+ $err = delRechnung($dbconn, $rechnung["id"]);
+ }
+ // Reihenfolge: erst alles, was auf partner oder adresse zeigt
+ if(!$err)
+ $err = loescheEntwuerfe($dbconn, "partner_id", $kundeid);
+ $aufraeumen = array(
+ "tel" => "Fehler beim Löschen verknüpfter Telefonnummern",
+ "adresse" => "Fehler beim Löschen verknüpfter Adressen",
+ "kontakt" => "Fehler beim Löschen verknüpfter Kontaktadressen",
+ "notiz" => "Fehler beim Löschen verknüpfter Notizen",
+ "konto" => "Fehler beim Löschen verknüpfter Konten",
+ );
+ foreach($aufraeumen as $tabelle => $meldung)
+ if(!$err)
+ db_abfrage($dbconn, "DELETE FROM $tabelle WHERE partner_id = ?", array($kundeid))
+ or $err = error($meldung.":
".mysqli_error($dbconn));
+ if(!$err)
+ db_abfrage($dbconn, "DELETE FROM partner WHERE id = ?", array($kundeid))
+ or $err = error("Fehler beim löschen des Kunden:
".mysqli_error($dbconn));
+ if(!$err)
+ $err = saveLog($dbconn, db_sql_text($dbconn, "DELETE FROM partner WHERE id = ?", array($kundeid))." [$beschreibung]", "", "löschen");
+ // Zeigte eine ältere Version auf diesen Datensatz, ist sie jetzt wieder aktuell
+ if(!$err)
+ db_abfrage($dbconn, "UPDATE partner SET updated_by = 0 WHERE updated_by = ?", array($kundeid))
+ or $err = error("Fehler beim unlinken einer eventuellen aktualisierung:
".mysqli_error($dbconn));
+ return beendeSpeichern($dbconn, $err);
+}
+
+//##############################################
+//########## SEITEN ######################
+//##############################################
+
+/*
+ * sites/kundenadd.php und sites/lieferadd.php: Partner anlegen oder löschen.
+ * $typ ist 1 für Kunden, 2 für Lieferanten.
+ */
+function partnerAddSeite($dbconn, $smarty, $typ)
+{
+ if(parameterGanzzahl("del") == 1)
+ {
+ $err = loeschePartner($dbconn, parameterGanzzahl("kundeid"), $typ);
+ if(!$err)
+ doneNreturn("Erfolgreich gelöscht!");
+ return $err;
+ }
+ if(parameterGanzzahl("formsent") == 1)
+ {
+ list($err, $partner_id) = savePart($dbconn, $typ);
+ $_SESSION["camefrom"] = ($typ == 2 ? "liefershow" : "kundenshow")."&id=".$partner_id;
+ if(!$err)
+ doneNreturn("Erfolgreich erledigt!");
+ return $err;
+ }
+ return dispPartForm($dbconn, $smarty, $typ);
+}
+
+/*
+ * sites/kundenchange.php und sites/lieferchange.php: Adressen, Telefon-
+ * nummern, Kontakte, Notizen und Konten eines Partners pflegen.
+ */
+function partnerChangeSeite($dbconn, $smarty, $typ)
+{
+ $bereiche = partnerBereiche();
+ $name = isset($_GET["do"]) && is_string($_GET["do"]) ? $_GET["do"] : "";
+ if(!isset($bereiche[$name]))
+ return error("Unbekannter Bereich.");
+ $bereich = $bereiche[$name];
+
+ if(parameterGanzzahl("del") == 1)
+ {
+ $err = loescheUnterdatensatz($dbconn, $bereich, parameterGanzzahl($bereich["param"]), $typ);
+ if(!$err)
+ doneNreturn("Erfolgreich gelöscht!");
+ return $err;
+ }
+ if(parameterGanzzahl("formsent") == 1)
+ {
+ $err = call_user_func($bereich["save"], $dbconn);
+ if(!$err)
+ doneNreturn("Erfolgreich erledigt!");
+ return $err;
+ }
+ return call_user_func($bereich["form"], $dbconn, $smarty, $typ);
+}
+
+/*
+ * sites/kundenshow.php und sites/liefershow.php: alle Daten eines Partners
+ * für die Anzeige. Gibt false zurück, wenn es ihn nicht (mehr) gibt.
+ */
+function partnerShowDaten($dbconn, $smarty, $id, $typ)
+{
+ $kdnres = db_zeile($dbconn, "SELECT * FROM partner WHERE id = ? AND typ_id = ?", array($id, $typ));
+ if($kdnres === false)
+ {
+ error("Fehler beim auslesen des Partners:
".mysqli_error($dbconn));
+ $kdnres = null;
+ }
+ $smarty->assign("kunde", $kdnres ? $kdnres : array());
+ if(!$kdnres)
+ return false;
+
+ // Versionskette in beide Richtungen: ältere Stände zeigen über
+ // updated_by auf diesen, neuere hängen an unserem updated_by
+ $smarty->assign("oldrecords", partnerVersionen($dbconn, $id, "vorgaenger"));
+ $smarty->assign("newrecords", partnerVersionen($dbconn, $kdnres["updated_by"], "nachfolger"));
+
+ $smarty->assign("anr", db_zuordnung($dbconn, "SELECT id, anrede FROM anrede") ?: array());
+ $smarty->assign("titel", db_zuordnung($dbconn, "SELECT id, titel FROM titel") ?: array());
+
+ $smarty->assign("telnrn", db_zeilen($dbconn, "SELECT name, typ, tel.id, nr, ort, ortsteil, plz, vwahl, ort.id AS ort_id
+ FROM tel
+ LEFT JOIN teltyp ON tel.typ_id = teltyp.id
+ LEFT JOIN ort ON tel.ort_id = ort.id
+ WHERE partner_id = ? AND tel.adresse_id = 0
+ ORDER BY tel.typ_id ASC", array($id)) ?: array());
+
+ $smarty->assign("contacts", db_zeilen($dbconn, "SELECT kontakt.id, kontakt, partner_id, typ
+ FROM kontakt LEFT JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id
+ WHERE partner_id = ? ORDER BY kontakt.typ_id ASC", array($id)) ?: array());
+
+ $smarty->assign("kontos", db_zeilen($dbconn, "SELECT ktonr, iban, swift, blz, bank, partner_id, konto.id, inhaber
+ FROM konto JOIN bank ON konto.bank_id = bank.id
+ WHERE partner_id = ?", array($id)) ?: array());
+
+ $notes = db_zeilen($dbconn, "SELECT * FROM notiz WHERE partner_id = ?", array($id)) ?: array();
+ foreach($notes as $i => $note)
+ $notes[$i]["file"] = search_file("./".UPLOADS_PATH."notes/", "!^".preg_quote($note["id"], "!")."\..*$!");
+
+ // Mahnungen sind keine Notiz, werden aber wie eine angezeigt
+ $mahnungen = db_wert($dbconn, "SELECT COUNT(rechnr) FROM rechnung WHERE typ_id = 6 AND partner_id = ?", array($id));
+ if($mahnungen > 0)
+ $notes[] = array(
+ "notiz" => "ACHTUNG! Es sind bereits ".$mahnungen." Mahnungen für diesen Kunden vorhanden!!",
+ "color" => "#f76",
+ "datetime" => date("Y-m-d H:i:s"),
+ );
+ $smarty->assign("notes", $notes);
+
+ $smarty->assign("adressen", db_zeilen($dbconn, "SELECT plz, ortsteil, tel.nr, ort.vwahl, ort, str,
+ DATE_FORMAT(gebdat,'%d.%m.%Y') AS gebdat, DATE_FORMAT(gebdat2,'%d.%m.%Y') AS gebdat2,
+ hnr, vname, nname, vname2, nname2, firma, adresse.id, land,
+ anrede_id, titel_id, anrede2_id, titel2_id, adresstyp.typ, adresse.typ_id
+ FROM adresse
+ JOIN adresstyp ON adresstyp.id = adresse.typ_id
+ LEFT JOIN strasse ON str_id = strasse.id
+ LEFT JOIN ort ON ort_id = ort.id
+ LEFT JOIN land ON land_id = land.id
+ LEFT JOIN tel ON tel.adresse_id = adresse.id
+ WHERE adresse.partner_id = ? AND adresse.typ_id != 5
+ ORDER BY adresse.typ_id ASC", array($id)) ?: array());
+
+ $smarty->assign("kommadressen", db_wert($dbconn, "SELECT COUNT(*) FROM adresse WHERE partner_id = ? AND typ_id = 5", array($id)) > 0 ? 1 : 0);
+ $smarty->assign("rechtypen", db_zeilen($dbconn, "SELECT typ, id FROM rechtyp") ?: array());
+ return true;
+}
+
+/*
+ * Folgt der Versionskette eines Partners. "vorgaenger" sucht die älteren
+ * Stände (sie zeigen über updated_by hierher), "nachfolger" die neueren
+ * (jeder Stand zeigt über updated_by auf den nächsten). Nach 50 Schritten
+ * ist Schluss, damit ein ringförmiger Verweis die Seite nicht aufhängt.
+ */
+function partnerVersionen($dbconn, $start, $richtung)
+{
+ $sql = $richtung == "vorgaenger"
+ ? "SELECT id, datetime_new, updated_by FROM partner WHERE updated_by = ?"
+ : "SELECT id, datetime_new, updated_by FROM partner WHERE id = ?";
+ $versionen = array();
+ $id = $start;
+ while($id && count($versionen) < 50)
+ {
+ $res = db_zeile($dbconn, $sql, array($id));
+ if(!$res)
+ break;
+ $versionen[] = $res;
+ $id = $richtung == "vorgaenger" ? $res["id"] : $res["updated_by"];
+ }
+ return $versionen;
+}
+
+?>
diff --git a/js/ajaxlists.js b/js/ajaxlists.js
index cc5826a..e6ec7c9 100644
--- a/js/ajaxlists.js
+++ b/js/ajaxlists.js
@@ -7,8 +7,8 @@ function ajax_searchkunden(page)
search_in_progress = 1;
document.getElementById("kdnsrc_list").innerHTML = "






".mysqli_error($dbconn));
- while($res = mysqli_fetch_array($qry))
- {
- $qry2=mysqli_query($dbconn,"DELETE FROM artikel_rechn WHERE rech_id = '$res[0]'") or $err=error("Fehler beim löschen verknüpfter Artikel:
".mysqli_error($dbconn));
- $qry2=mysqli_query($dbconn,"DELETE FROM artikelsks WHERE rechnr = '$res[1]'") or $err=error("Fehler beim löschen verknüpfter SKS Artikel:
".mysqli_error($dbconn));
- }
- $qry=mysqli_query($dbconn,"SELECT id FROM rechnung WHERE partner_id = '$kundeid'") or $err=error("Fehler beim ermitteln verknüpfter Rechnungen:
".mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $err = delRechnung($dbconn,$res["id"]);
- }
- $qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Adressen:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM tel WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Telefonnummern:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Kontaktadressen:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Notizen:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM konto WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Konten:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM partner WHERE id = '$kundeid'") or $err=error("Fehler beim löschen des Kunden:
".mysqli_error($dbconn));
-
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM partner WHERE id = $kundeid [$vname $nname - $firma]",
- "",
- "löschen");
- if(!$err)
- {
- $qry=mysqli_query($dbconn,"UPDATE partner SET updated_by = 0 WHERE updated_by = '$kundeid'") or $err=error("Fehler beim unlinken einer eventuellen aktualisierung:
".mysqli_error($dbconn));
- }
- if(!$err)
- {
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
-}
-elseif($_GET["formsent"] == 1)
-{
- $ret = savePart($dbconn,1);
- $_SESSION["camefrom"] = "kundenshow&id=".$ret[1];
- if(!$ret[0])
- doneNreturn("Erfolgreich erledigt!");
-}
-else
-{
- dispPartForm($dbconn,$smarty);
-}
-?>
\ No newline at end of file
+$err = partnerAddSeite($dbconn, $smarty, 1);
+?>
diff --git a/sites/kundenchange.php b/sites/kundenchange.php
index dbcd682..c0dec70 100644
--- a/sites/kundenchange.php
+++ b/sites/kundenchange.php
@@ -1,207 +1,7 @@
-".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $vname = $res[0];
- $nname = $res[1];
- $firma = $res[2];
- $typ = $res[3];
- $kdnr = $res[4];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE id = '$adressid'") or $err=error("Fehler beim löschen der Adresse:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM adresse WHERE id = $adressid [$typ von Kunde $kdnr ($vname $nname - $firma)]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- if(!$err)
- {
- $qry=mysqli_query($dbconn,"SELECT * FROM tel WHERE adresse_id = '$adressid'");
- while($res = mysqli_fetch_assoc($dbconn,$qry))
- {
- mysqli_query($dbconn,"DELETE FROM tel WHERE id='".$res["id"]."'") or $err = error("Fehler beim löschen der zugehörigen Telefonnummern
".mysqli_error($dbconn));#
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM tel WHERE id = ".$res["$id"]." [$typ von Kunde $kdnr ($vname $nname - $firma)]","","löschen");
- }
- }
- }
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- else
- {
- $err = error("Ungültiger Kunde!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveAdress($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispAdressForm($dbconn,$smarty,1);
- }
-}
-elseif($_GET["do"] == "tel")
-{
- if($_GET["del"] == 1)
- {
- $telid=mysql_escape_string($_GET["telid"]);
- $qry=mysqli_query($dbconn,"SELECT typ, partner.id FROM tel
- JOIN teltyp ON teltyp.id = tel.typ_id
- JOIN partner ON partner.id = tel.partner_id
- WHERE adresse.id = '$adressid' AND partner.typ_id = 1") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res=mysqli_fetch_array($dbconn,$qry);
- $typ = $res[0];
- $kdnr = $res[1];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM tel WHERE id = '$telid'") or $err=error("Fehler beim löschen der Telefonnummer:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM tel WHERE id = $telid [$typ von Kunde $kdnr]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Kunde!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveTel($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispTelForm($dbconn,$smarty,1);
- }
-}
-elseif($_GET["do"] == "kontakt")
-{
- if($_GET["del"] == 1)
- {
- $kontaktid=mysql_escape_string($_GET["kontaktid"]);
- $qry=mysqli_query($dbconn,"SELECT typ, partner.id FROM kontakt
- JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id
- JOIN partner ON partner.id = kontakt.partner_id
- WHERE kontakt.id = '$kontaktid'") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $typ = $res[0];
- $kdnr = $res[1];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE id = '$kontaktid'") or $err=error("Fehler beim löschen der Kontaktinformation:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM kontakt WHERE id = $kontaktid [$typ von Kunde $kdnr]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Kunde!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveKontakt($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispKontaktForm($dbconn,$smarty,1);
- }
-}
-elseif($_GET["do"] == "notiz")
-{
- if($_GET["del"] == 1)
- {
- $notizid=mysql_escape_string($_GET["notizid"]);
- $qry=mysqli_query($dbconn,"SELECT partner_id FROM notiz
- JOIN partner ON partner.id = notiz.partner_id
- WHERE notiz.id = '$notizid' AND partner.typ_id = 1") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $kdnr = $res[0];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE id = '$notizid'") or $err=error("Fehler beim löschen der Notiz:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM notiz WHERE id = $notizid [von Kunde $kdnr]","","löschen");
- del_files("./".UPLOADS_PATH."notes/","!^".$notizid."\.(.)+$!");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Kunde!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveNotiz($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispNotizForm($dbconn,$smarty,1);
- }
-}
-elseif($_GET["do"] == "konto")
-{
- if($_GET["del"] == 1)
- {
- $kontoid = mysql_escape_string($_GET["kontoid"]);
- $qry = mysqli_query($dbconn,"SELECT konto.partner_id FROM konto
- JOIN partner ON partner.id = konto.partner_id
- WHERE konto.id = '$kontoid' AND partner.typ_id = 1") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res = mysqli_fetch_array($qry);
- $kdnr = $res[0];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM konto WHERE id = '$kontoid'") or $err=error("Fehler beim löschen des Kontos:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM konto WHERE id = $kontoid [von Kunde $kdnr]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Kunde!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveKonto($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispKontoForm($dbconn,$smarty,2);
- }
-}
-?>
\ No newline at end of file
+// Beim Löschen einer Adresse verschwinden auch ihre Dokumente (delRechnung)
+require_once "incs/rechnung.php";
+
+$err = partnerChangeSeite($dbconn, $smarty, 1);
+?>
diff --git a/sites/kundenshow.php b/sites/kundenshow.php
index cfc492f..a2246c0 100644
--- a/sites/kundenshow.php
+++ b/sites/kundenshow.php
@@ -1,121 +1,7 @@
-assign("kunde",$kdnres);
- if($kdnres["id"])
- {
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$kdnres["id"]."'");
- while($res=mysqli_fetch_assoc($qry))
- {
- $oldrecords[] = $res;
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$res["id"]."'");
- }
- $smarty->assign("oldrecords",$oldrecords);
-
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$kdnres["updated_by"]."'");
- while($res=mysqli_fetch_assoc($qry))
- {
- $newrecords[] = $res;
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$res["updated_by"]."'");
- }
- $smarty->assign("newrecords",$newrecords);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT * FROM anrede");
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[$res["id"]] = $res["anrede"];
- }
- $smarty->assign("anr",$tmp);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT * FROM titel");
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[$res["id"]] = $res["titel"];
- }
- $smarty->assign("titel",$tmp);
-
-
-
- $qry = mysqli_query($dbconn,"SELECT name,typ,tel.id,nr,ort,ortsteil,plz,vwahl, ort.id AS ort_id FROM tel LEFT JOIN teltyp ON typ_id = teltyp.id LEFT JOIN ort ON ort_id = ort.id WHERE partner_id='".mysql_escape_string($_GET["id"])."' AND tel.adresse_id = 0 ORDER BY typ_id ASC");
- while($res=mysqli_fetch_assoc($qry))
- {
- $tels[] = $res;
- }
- $smarty->assign("telnrn",$tels);
-
-
- $qry = mysqli_query($dbconn,"SELECT kontakt.id, kontakt, partner_id, typ FROM kontakt LEFT JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id WHERE partner_id='".mysql_escape_string($_GET["id"])."' ORDER BY typ_id ASC");
- while($res=mysqli_fetch_assoc($qry))
- {
- $contacts[] = $res;
- }
- $smarty->assign("contacts",$contacts);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT ktonr,iban,swift,blz,bank,partner_id,konto.id,inhaber
- FROM konto JOIN bank ON konto.bank_id = bank.id WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
- or $err=error("Fehler beim auslesen der Konten:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[] = $res;
- }
- $smarty->assign("kontos",$tmp);
-
-
- $qry = mysqli_query($dbconn,"SELECT * FROM notiz WHERE partner_id='".mysql_escape_string($_GET["id"])."'");
- while($res=mysqli_fetch_assoc($qry))
- {
- $res["file"] = search_file("./".UPLOADS_PATH."notes/","!^".$res["id"]."\.(.)+$!");
- $notes[] = $res;
- }
-
-
- $qry = mysqli_query($dbconn,"SELECT COUNT(rechnr) AS nr_mahn, NOW() AS datetime FROM rechnung WHERE typ_id = 6 AND partner_id = '".mysql_escape_string($_GET["id"])."'") or $err=error("Fehler beim Auslesen der Daten:
".mysqli_error($dbconn));
- $res=mysqli_fetch_assoc($qry);
- if($res["nr_mahn"] > 0)
- {
- $mahn["notiz"] = "ACHTUNG! Es sind bereits ".$res["nr_mahn"]." Mahnungen für diesen Kunden vorhanden!!";
- $mahn["color"] = "#f76";
- $mahn["datetime"] = $res["datetime"];
- $notes[] = $mahn;
- }
- $smarty->assign("notes",$notes);
- $qry = mysqli_query($dbconn,"SELECT plz, ortsteil, tel.nr, ort.vwahl, ort, str, DATE_FORMAT(gebdat,'%d.%m.%Y') AS gebdat, DATE_FORMAT(gebdat2,'%d.%m.%Y') AS gebdat2, hnr, vname, nname, vname2, nname2, firma, adresse.id, land, anrede_id, titel_id, anrede2_id, titel2_id, adresstyp.typ, adresse.typ_id
- FROM adresse JOIN
- adresstyp ON adresstyp.id = adresse.typ_id
- LEFT JOIN strasse ON str_id = strasse.id
- LEFT JOIN ort ON ort_id = ort.id
- LEFT JOIN land ON land_id = land.id
- LEFT JOIN tel ON tel.adresse_id = adresse.id
- WHERE adresse.partner_id='".mysql_escape_string($_GET["id"])."' AND adresse.typ_id != 5
- ORDER BY typ_id ASC")or $err=error("Mysql-Fehler:
".mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $adressen[] = $res;
- }
- $smarty->assign("adressen",$adressen);
-
- $qry = mysqli_query($dbconn,"SELECT id
- FROM adresse WHERE adresse.partner_id='".mysql_escape_string($_GET["id"])."' AND adresse.typ_id = 5
- ORDER BY typ_id ASC")or $err=error("Mysql-Fehler:
".mysqli_error($dbconn));
- if(mysqli_fetch_array($qry))
- $smarty->assign("kommadressen",1);
-
- $tmp=array();
- $qry = mysqli_query($dbconn,"SELECT typ, id FROM rechtyp");
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[] = $res;
- }
- $smarty->assign("rechtypen",$tmp);
-
-
- }
-}
-$_SESSION["camefrom"] ="kundenshow&id=".$_GET["id"];
+display("kundenshow.tpl");
-?>
\ No newline at end of file
+?>
diff --git a/sites/lieferadd.php b/sites/lieferadd.php
index aac7c35..116d5f1 100644
--- a/sites/lieferadd.php
+++ b/sites/lieferadd.php
@@ -1,57 +1,7 @@
-".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $kundeid=$res[0];
- $vname=$res[1];
- $nname=$res[2];
- $firma=$res[3];
- if($kundeid)
- {
- $qry=mysqli_query($dbconn,"SELECT id, rechnr FROM rechnung WHERE partner_id = '$kundeid'") or $err=error("Fehler beim ermitteln verknüpfter Rechnungen:
".mysqli_error($dbconn));
- while($res = mysqli_fetch_array($qry))
- {
- $qry2=mysqli_query($dbconn,"DELETE FROM artikel_rechn WHERE rech_id = '$res[0]'") or $err=error("Fehler beim löschen verknüpfter Artikel:
".mysqli_error($dbconn));
- $qry2=mysqli_query($dbconn,"DELETE FROM artikelsks WHERE rechnr = '$res[1]'") or $err=error("Fehler beim löschen verknüpfter SKS Artikel:
".mysqli_error($dbconn));
- }
- $qry=mysqli_query($dbconn,"DELETE FROM rechnung WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Rechnungen:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Adressen:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM tel WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Telefonnummern:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Kontaktadressen:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Notizen:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM konto WHERE partner_id = '$kundeid'") or $err=error("Fehler beim Löschen verknüpfter Konten:
".mysqli_error($dbconn));
- $qry=mysqli_query($dbconn,"DELETE FROM partner WHERE id = '$kundeid'") or $err=error("Fehler beim löschen des Kunden:
".mysqli_error($dbconn));
- }
- else
- {
- $err = error("Ungültiger Lieferant!");
- }
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM partner WHERE id = $kundeid [$vname $nname - $firma]",
- "",
- "löschen");
- echo "sadlk";
- if(!$err)
- {
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
-}
-elseif($_GET["formsent"] == 1)
-{
- $ret = savePart($dbconn,2);
- $_SESSION["camefrom"] = "liefershow&id=".$ret[1];
- if(!$ret[0])
- doneNreturn("Erfolgreich erledigt!");
-}
-else
-{
- dispPartForm($dbconn,$smarty,2);
-}
-?>
\ No newline at end of file
+$err = partnerAddSeite($dbconn, $smarty, 2);
+?>
diff --git a/sites/lieferchange.php b/sites/lieferchange.php
index 5a40ff1..84f3d09 100644
--- a/sites/lieferchange.php
+++ b/sites/lieferchange.php
@@ -1,191 +1,7 @@
-".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $vname = $res[0];
- $nname = $res[1];
- $firma = $res[2];
- $typ = $res[3];
- $kdnr = $res[4];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM adresse WHERE id = '$adressid'") or $err=error("Fehler beim löschen der Adresse:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM adresse WHERE id = $adressid [$typ von Kunde $kdnr ($vname $nname - $firma)]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Lieferant!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveAdress($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispAdressForm($dbconn,$smarty,2);
- }
-}
-elseif($_GET["do"] == "tel")
-{
- if($_GET["del"] == 1)
- {
- $telid=mysql_escape_string($_GET["telid"]);
- $qry=mysqli_query($dbconn,"SELECT typ, partner.id FROM tel
- JOIN teltyp ON teltyp.id = tel.typ_id
- JOIN partner ON partner.id = tel.partner_id
- WHERE adresse.id = '$adressid' AND partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $typ = $res[0];
- $kdnr = $res[1];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM tel WHERE id = '$telid'") or $err=error("Fehler beim löschen der Telefonnummer:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM tel WHERE id = $telid [$typ von Kunde $kdnr]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Lieferant!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveTel($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispTelForm($dbconn,$smarty,2);
- }
-}
-elseif($_GET["do"] == "kontakt")
-{
- if($_GET["del"] == 1)
- {
- $kontaktid=mysql_escape_string($_GET["kontaktid"]);
- $qry=mysqli_query($dbconn,"SELECT konatkttyp.typ, partner.id FROM kontakt
- JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id
- JOIN partner ON partner.id = kontakt.partner_id WHERE kontakt.id = '$kontaktid' partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $typ = $res[0];
- $kdnr = $res[1];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM kontakt WHERE id = '$kontaktid'") or $err=error("Fehler beim löschen der Kontaktinformation:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM kontakt WHERE id = $kontaktid [$typ von Kunde $kdnr]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Lieferant!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveKontakt($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispKontaktForm($dbconn,$smarty,2);
- }
-}
-elseif($_GET["do"] == "notiz")
-{
- if($_GET["del"] == 1)
- {
- $notizid=mysql_escape_string($_GET["notizid"]);
- $qry=mysqli_query($dbconn,"SELECT partner_id FROM notiz
- JOIN partner ON partner.id = notiz.partner_id
- WHERE notiz.id = '$notizid' AND partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res=mysqli_fetch_array($qry);
- $kdnr = $res[0];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM notiz WHERE id = '$notizid'") or $err=error("Fehler beim löschen der Notiz:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM notiz WHERE id = $notizid [von Kunde $kdnr]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Lieferant!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveNotiz($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispNotizForm($dbconn,$smarty,2);
- }
-}
-elseif($_GET["do"] == "konto")
-{
- if($_GET["del"] == 1)
- {
- $kontoid = mysql_escape_string($_GET["kontoid"]);
- $qry = mysqli_query($dbconn,"SELECT konto.partner_id FROM konto
- JOIN partner ON partner.id = konto.partner_id
- WHERE konto.id = '$kontoid' AND partner.typ_id = 2") or $err=error("Fehler beim abrufen der Informationen für die LOG:
".mysqli_error($dbconn));
- $res = mysqli_fetch_array($qry);
- $kdnr = $res[0];
- if($kdnr)
- {
- $qry=mysqli_query($dbconn,"DELETE FROM konto WHERE id = '$kontoid'") or $err=error("Fehler beim löschen des Kontos:
".mysqli_error($dbconn));
- if(!$err)
- {
- $err = saveLog($dbconn,"DELETE FROM konto WHERE id = $kontoid [von Kunde $kdnr]","","löschen");
- if(!$err)
- doneNreturn("Erfolgreich gelöscht!");
- }
- }
- else
- {
- $err = error("Ungültiger Lieferant!");
- }
- }
- elseif($_GET["formsent"] == 1)
- {
- $err = saveKonto($dbconn);
- if(!$err)
- doneNreturn("Erfolgreich erledigt!");
- }
- else
- {
- dispKontoForm($dbconn,$smarty,2);
- }
-}
-?>
\ No newline at end of file
+// Beim Löschen einer Adresse verschwinden auch ihre Dokumente (delRechnung)
+require_once "incs/rechnung.php";
+
+$err = partnerChangeSeite($dbconn, $smarty, 2);
+?>
diff --git a/sites/liefershow.php b/sites/liefershow.php
index 591a6d5..8da27e5 100644
--- a/sites/liefershow.php
+++ b/sites/liefershow.php
@@ -1,120 +1,7 @@
-". mysqli_error($dbconn));
- $kdnres=mysqli_fetch_assoc($qry);
- $smarty->assign("kunde",$kdnres);
- if($kdnres.id)
- {
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$kdnres["id"]."'")
- or $err=error("Fehler beim auslesen der neueren Versionen:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $oldrecords[] = $res;
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$res["id"]."'")
- or $err=error("Fehler beim auslesen der neueren Versionen:
". mysqli_error($dbconn));
- }
- $smarty->assign("oldrecords",$oldrecords);
-
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$kdnres["updated_by"]."'")
- or $err=error("Fehler beim auslesen der älteren Versionen:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $newrecords[] = $res;
- $qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$res["updated_by"]."'")
- or $err=error("Fehler beim auslesen der älteren Versionen:
". mysqli_error($dbconn));
- }
- $smarty->assign("newrecords",$newrecords);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT * FROM anrede")
- or $err=error("Fehler beim auslesen der Anreden:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[$res["id"]] = $res["anrede"];
- }
- $smarty->assign("anr",$tmp);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT * FROM titel")
- or $err=error("Fehler beim auslesen der Titel:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[$res["id"]] = $res["titel"];
- }
- $smarty->assign("titel",$tmp);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT name,typ,tel.id,nr,ort,ortsteil,plz,vwahl
- FROM tel LEFT JOIN teltyp ON typ_id = teltyp.id LEFT JOIN ort ON ort_id = ort.id
- WHERE partner_id='".mysql_escape_string($_GET["id"])."' ORDER BY typ_id ASC")
- or $err=error("Fehler beim auslesen der Telefonnummern:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[] = $res;
- }
- $smarty->assign("telnrn",$tmp);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT kontakt.id, kontakt, partner_id, typ
- FROM kontakt LEFT JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id
- WHERE partner_id='".mysql_escape_string($_GET["id"])."' ORDER BY typ_id ASC")
- or $err=error("Fehler beim auslesen der Kontakte:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[] = $res;
- }
- $smarty->assign("contacts",$tmp);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT * FROM notiz WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
- or $err=error("Fehler beim auslesen der Notizen:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[] = $res;
- }
- $smarty->assign("notes",$tmp);
-
- $tmp = array();
- $qry = mysqli_query($dbconn,"SELECT ktonr,iban,swift,blz,bank,partner_id,konto.id,inhaber
- FROM konto JOIN bank ON konto.bank_id = bank.id WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
- or $err=error("Fehler beim auslesen der Konten:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[] = $res;
- }
- $smarty->assign("kontos",$tmp);
-
-
- $qry = mysqli_query($dbconn,"SELECT plz, ortsteil, ort, str, hnr, vname, nname, vname2, nname2, firma, adresse.id, land, anrede_id, titel_id, adresstyp.typ, adresse.typ_id
- FROM adresse JOIN
- adresstyp ON adresstyp.id = adresse.typ_id
- LEFT JOIN strasse ON str_id = strasse.id
- LEFT JOIN ort ON ort_id = ort.id
- LEFT JOIN land ON land_id = land.id
- WHERE partner_id='".mysql_escape_string($_GET["id"])."'
- ORDER BY typ_id ASC") or $err=error("Fehler beim auslesen der Adressen:
". mysqli_error($dbconn));
- while($res=mysqli_fetch_assoc($qry))
- {
- $adressen[] = $res;
- }
- $smarty->assign("adressen",$adressen);
-
- $tmp=array();
- $qry = mysqli_query($dbconn,"SELECT typ, id FROM rechtyp");
- while($res=mysqli_fetch_assoc($qry))
- {
- $tmp[] = $res;
- }
- $smarty->assign("rechtypen",$tmp);
-
-
-
-
- $_SESSION["camefrom"] ="liefershow&id=".$_GET["id"];
- }
-}
+display("liefershow.tpl");
-?>
\ No newline at end of file
+?>
diff --git a/templates/changeadr.tpl b/templates/changeadr.tpl
index f29e8e2..6fc36cc 100644
--- a/templates/changeadr.tpl
+++ b/templates/changeadr.tpl
@@ -3,8 +3,8 @@
-
+
diff --git a/templates/copyrech.tpl b/templates/copyrech.tpl
index 1f1fea6..85a1a46 100644
--- a/templates/copyrech.tpl
+++ b/templates/copyrech.tpl
@@ -3,8 +3,8 @@
-
+
diff --git a/templates/kunden.tpl b/templates/kunden.tpl
index 2eb8769..e514d8d 100644
--- a/templates/kunden.tpl
+++ b/templates/kunden.tpl
@@ -5,7 +5,7 @@
+ (Geburtstag: {$adresse.gebdat|escape})
{else}
- (Geburtstag: {$adresse.gebdat|substr:0:5})
+ (Geburtstag: {$adresse.gebdat|escape|substr:0:5})
{/if}
{/if}
{/if}
@@ -56,9 +56,9 @@
{/if}
{if $adresse.gebdat2 != "01.01.2100" && $adresse.gebdat2 != "00.00.0000"}
{if $adresse.gebdat2|substr:6:4 != "2099"}
- (Geburtstag: {$adresse.gebdat2})
+ (Geburtstag: {$adresse.gebdat2|escape})
{else}
- (Geburtstag: {$adresse.gebdat2|substr:0:5})
+ (Geburtstag: {$adresse.gebdat2|escape|substr:0:5})
{/if}
{/if}
{/if}
@@ -71,6 +71,9 @@
{$adresse.plz|escape|default:""} {$adresse.ort|escape|default:""} {$adresse.ortsteil|escape|default:""}
{$adresse.land|escape|default:""}
+ {if $adresse.nr}
+ Telefon: {if $adresse.vwahl}{$adresse.vwahl|escape} / {/if}{$adresse.nr|escape}
+ {/if}
@@ -78,7 +81,7 @@
{if $adresse.typ_id != 1}
{/if}
-
+
@@ -177,13 +180,13 @@
{/if}
{$i=$i+1}
{strip}
-