Files
Kundenverwaltung/incs/saveNchange.php
T
adminandClaude Opus 5 d8fff4aeb6 Rechnungsmodul auf Prepared Statements umgebaut
- incs/rechnung.php: alle Abfragen mit Platzhaltern. saveRechnung() setzte
  $_POST ungeprueft in SQL (Injection; ein Apostroph im Text brach das
  Speichern ab). Speichern, Kopieren und Loeschen laufen in Transaktionen,
  bei Fehlern bleibt nichts Halbes zurueck. Formularwerte ueber
  formularText/-Zahl/-Ganzzahl (strikter Modus).
- copyRech() trug die Rechnungsnummer ohne typ_id ein (Fehler im strikten
  Modus) und zaehlte typuebergreifend; jetzt wie beim Anlegen pro Typ
  (neueRechnungsnummer()). Artikel und Eigenschaften per INSERT ... SELECT.
- Adressblock-Formatierung aus makeadressblock() und
  makeadressblockUmschlag() in formatiereAdressblock() zusammengefuehrt.
- ajax/autosave.php und ajax/preview.php teilen sich saveTmpRechnung();
  ueberzaehlige Entwuerfe werden samt Artikeln entfernt (vorher FK-Fehler).
- sites/rechnungadd.php: Storno ohne SQL-Injection ueber $_GET["id"],
  Auswahllisten ueber db_zuordnung(), tote Kommissions-Abfrage entfernt.
- Rechnungssuche (createRechQry/createKdnRechQry) liefert SQL und Parameter
  getrennt; Suchbegriffe waren ungeprueft im SQL.
- saveLog() mit Platzhaltern, Protokolltext ueber db_sql_text().
- db.php: db_zuordnung(), db_sql_text(); Helfer liefern Strings wie
  mysqli_query(), damit alter Code sich gleich verhaelt.

Getestet: alter und neuer Code lesen dieselbe migrierte Datenbank, 150 von
155 Pruefungen (10.936 Werte) identisch, die uebrigen 5 sind der
Injection-Suchbegriff (alt: SQL-Fehler). Schreibtests fuer Entwurf,
Anlegen, Nummernkreise, Aendern, Rollback, Kopieren, Adresse, Storno und
Loeschen im strikten Modus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 10:41:43 +02:00

884 lines
34 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// LOG
/*
* Ä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)
{
$err = 0;
$typId = db_wert($dbconn, "SELECT id FROM accesstype WHERE typ = ?", array($type));
if($typId === false)
return error("Fehler beim Eintragen der Aktion in die LOG:<br />".mysqli_error($dbconn));
db_abfrage($dbconn, "INSERT INTO log SET typ_id = ?, datetime = NOW(), qry = ?, undo_qry = ?, user_id = ?",
array((int)$typId, $qrystr, $undoqry, $_SESSION["user"]))
or $err = error("Fehler beim LOGGEN der Aktion:<br />".mysqli_error($dbconn));
return $err;
}
//##############################################
//########## ADRESSEN ######################
//##############################################
function saveAdress($dbconn)
{
$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"])
{
message("Adresse wird geändert...");
$act="ändern";
}
elseif($adressid && !$_POST["overwrite"])
{
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:<br />".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.<br />Bitte wechseln Sie zur aktuellsten Version und führen Sie die gewünschen Änderungen dort durch.");
}
else
{
message("Adresse wird angelegt...");
$act="anlegen";
}
if(!$err)
{
$qry=mysqli_query($dbconn,"SELECT id FROM land WHERE land = '$land'") or $err=error("Fehler beim suchen des Landes:<br />".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:<br />".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");
}
}
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:<br />".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:<br />".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:<br />".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:<br />".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:<br />".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:<br />".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:<br />".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");
}
}
else
{
$err=updateKunde($dbconn,$kunde);
}
}
}
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;
}
function dispAdressForm($dbconn,$smarty,$typ=1)
{
if(!$_GET["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:<br />".mysqli_error($dbconn));
}
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:<br />".mysqli_error($dbconn));
}
$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:<br />".mysqli_error($dbconn));
if($telres=mysqli_fetch_assoc($qry))
{
$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("telid",$telres["telid"]);
}
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("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("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("typids",$typids);
$smarty->assign("typs",$typnames);
if($typ == 1)
$smarty->assign("frmact","kundenchange");
elseif($typ == 2)
$smarty->assign("frmact","lieferchange");
$smarty->display("newadress.tpl");
}
//##############################################
//########## TEL.NRN. ######################
//##############################################
function saveTel($dbconn)
{
$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)
{
message("Telefonnummer wird angelegt...");
$act = "anlegen";
}
else
{
message("Telefonnummer wird geändert...");
$act="ändern";
}
$qry=mysqli_query($dbconn,"SELECT id FROM land WHERE land = '$land'") or $err=error("Fehler beim suchen des Landes:<br />".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:<br />".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");
}
}
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:<br />".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:<br />".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:<br />".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:<br />".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:<br />".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:<br />".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:<br />".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;
}
function dispTelForm($dbconn,$smarty,$typ=1)
{
if(!$_GET["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:<br />".mysqli_error($dbconn));
}
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:<br />".mysqli_error($dbconn));
}
$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"]);
$qry=mysqli_query($dbconn, "SELECT id,typ FROM teltyp");
while($res=mysqli_fetch_assoc($qry))
{
$typids[] = $res["id"];
$typnames[] = $res["typ"];
}
$smarty->assign("typids",$typids);
$smarty->assign("typs",$typnames);
if($typ == 1)
$smarty->assign("frmact","kundenchange");
elseif($typ == 2)
$smarty->assign("frmact","lieferchange");
$smarty->display("newtel.tpl");
}
//##############################################
//########## 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"]);
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:<br />".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:<br />".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");
}
}
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:<br />".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");
}
}
return $err;
}
function dispKontaktForm($dbconn,$smarty,$typ=1)
{
if(!$_GET["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:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_assoc($qry);
}
$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"]);
$qry=mysqli_query($dbconn, "SELECT id,typ FROM kontakttyp");
while($res=mysqli_fetch_assoc($qry))
{
$typids[] = $res["id"];
$typnames[] = $res["typ"];
}
$smarty->assign("typids",$typids);
$smarty->assign("typs",$typnames);
if($typ == 1)
$smarty->assign("frmact","kundenchange");
elseif($typ == 2)
$smarty->assign("frmact","lieferchange");
$smarty->display("newkontakt.tpl");
}
//##############################################
//########## NOTIZEN ######################
//##############################################
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"]);
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:<br />".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:<br />".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");
}
}
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:<br />".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.");
}
return $err;
}
function dispNotizForm($dbconn,$smarty,$typ=1)
{
if(!$_GET["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:<br />".mysqli_error($dbconn));
$res=mysqli_fetch_assoc($qry);
}
$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"]);
$smarty->assign("colors",array("#fff"=>"<div class='colorbox' style='background-color: #fff;'></div>",
"#afa"=>"<div class='colorbox' style='background-color: #bfb;'></div>",
"#ee0"=>"<div class='colorbox' style='background-color: #ee0;'></div>",
"#fa0"=>"<div class='colorbox' style='background-color: #fa0;'></div>",
"#faa"=>"<div class='colorbox' style='background-color: #faa;'></div>",
"#faf"=>"<div class='colorbox' style='background-color: #faf;'></div>",
"#bbf"=>"<div class='colorbox' style='background-color: #bbf;'></div>",
"#aff"=>"<div class='colorbox' style='background-color: #0ff;'></div>",
"#ccc"=>"<div class='colorbox' style='background-color: #ddd;'></div>"));
if($typ == 1)
$smarty->assign("frmact","kundenchange");
elseif($typ == 2)
$smarty->assign("frmact","lieferchange");
$smarty->display("newnotiz.tpl");
}
//##############################################
//########## PARTNER ######################
//##############################################
function savePart($dbconn,$typ=1)
{
$typ_id = 1;
$kunde=mysql_escape_string($_GET["kunde"]);
message("Partner wird angelegt...");
$act="anlegen";
$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:<br />".mysqli_error($dbconn));
$partner_id = mysqli_insert_id($dbconn);
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);
}
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("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("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("typids",$typids);
$smarty->assign("typs",$typnames);
$smarty->assign("partyp",$typ);
if($typ == 1)
$smarty->assign("frmact","kundenadd");
elseif($typ == 2)
$smarty->assign("frmact","lieferadd");
$smarty->display("newpar.tpl");
}
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";
$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:<br />".mysqli_error($dbconn));
$partner_id = mysqli_insert_id($dbconn);
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:<br />".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:<br />".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");
}
if(!$err)
{
$_POST["typ"] = 1;
$_GET["adressid"] = 0;
$err=saveAdress($dbconn);
}
return $err;
}
//##############################################
//########## KONTOS ######################
//##############################################
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)
{
message("Konto wird angelegt...");
$act = "anlegen";
}
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:<br />".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:<br />".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");
}
}
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:<br />".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:<br />".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:<br />".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;
}
function dispKontoForm($dbconn,$smarty,$typ=1)
{
if(!$_GET["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:<br />".mysqli_error($dbconn));
}
else
{
$smarty->assign("head","Konto ändern");
$qry=mysqli_query($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:<br />".mysqli_error($dbconn));
}
$res=mysqli_fetch_assoc($qry);
if($res["vname"] || $res["nname"])
$res["inhaber"] = $res["vname"]." ".$res["nname"];
if($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");
$smarty->display("newkonto.tpl");
}
?>