Initialer Commit: Kundenverwaltung (PHP/Smarty)

Bestehende Codebasis als Ausgangsstand aufgenommen.

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

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 16:41:18 +02:00
co-authored by Claude Opus 5
commit e6eb55bc4b
2225 changed files with 1070301 additions and 0 deletions
+683
View File
@@ -0,0 +1,683 @@
<?php
function sks_process_adressrecord($data,$dbconn,$datanr)
{
$anredechange=0;
$err = 0;
$procd["kdnr"] = mysqli_real_escape_string($dbconn,trim(iconv( "850", "UTF-8", $data["K_NUMMER"])));
$procd["datetime"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_DATUM"])));
$procd["anrede"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_ANREDE"])));
$procd["vname"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_VORNAME"])));
$procd["nname"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_NAME1"])));
$procd["nname2"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_NAME2"])));
$procd["zusatz"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_ZUSATZ"])));
$procd["str"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_STRASSE"])));
preg_match("!(^[^0-9]*)([0-9]+.*[0-9]*$)!",$procd["str"],$tmp);
if($tmp[1] && $tmp[2])
{
$procd["str"] = $tmp[1];
$procd["hnr"] = $tmp[2];
}
else
{
$procd["str"] = $procd["str"];
$procd["hnr"] = "";
}
$procd["plz"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_PLZ"])));
$procd["ort"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_ORT"])));
$procd["tel1"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_TEL1"])));
$procd["tel2"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_TEL2"])));
$procd["fax"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_FAX"])));
$procd["bem1"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_BEM1"])));
$procd["bem2"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_BEM2"])));
$procd["sksnotiz"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["K_NOTIZ"])));
$procd["titel"] = 1;
$procd["firma"] = "";
$qry = mysqli_query($dbconn,"SELECT id FROM land WHERE land_short = 'DE'");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO land SET land_short = 'DE'");
$qry = mysqli_query($dbconn,"SELECT id FROM land WHERE land_short = 'DE'");
}
$row = mysqli_fetch_array($qry);
$procd["land"] = $row[0];
if(!preg_match("!^[0-9]+$!",$procd["kdnr"]))
$err = error("Datensatz $datanr hat eine falsche kundennummer (".$procd["kdnr"].")!");
//format date
if(!preg_match("!^[0-9]{8}$!",$procd["datetime"]))
$err = error("Datensatz $datanr hat ein falsches Datumsformat (".$procd["kdnr"].")!");
else
{
$procd["datetime"] = substr($procd["datetime"],0,4)."-".substr($procd["datetime"],4,2)."-".substr($procd["datetime"],6,2);
}
//PROCESS anrede (categorize)
if(preg_match("!Herr!", $procd["anrede"]))
{
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = 'Herrn'");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO anrede SET anrede = 'Herrn'");
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = 'Herrn'");
}
$row = mysqli_fetch_array($qry);
$procd["anrede"] = $row[0];
}
else if($procd["anrede"] == "Frau")
{
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = 'Frau'");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO anrede SET anrede = 'Frau'");
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = 'Frau'");
}
$row = mysqli_fetch_array($qry);
$procd["anrede"] = $row[0];
}
else if($procd["anrede"] == "Firma")
{
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO anrede SET anrede = ''");
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
}
$row = mysqli_fetch_array($qry);
$procd["anrede"] = $row[0];
$procd["firma"] = $procd["vname"]." ".$procd["nname"];
$procd["vname"] = "";
$procd["nname"] = "";
}
else if(preg_match("!Fam!",$procd["anrede"]))
{
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO anrede SET anrede = ''");
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
}
$row = mysqli_fetch_array($qry);
$procd["anrede"] = $row[0];
$procd["firma"] = "";
$procd["vname"] = $procd["vname"];
$procd["nname"] = $procd["nname"];
}
else if($procd["anrede"]=="")
{
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO anrede SET anrede = ''");
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
}
$row = mysqli_fetch_array($qry);
$procd["anrede"] = $row[0];
$procd["firma"] = $procd["vname"]." ".$procd["nname"];
$procd["vname"] = "";
$procd["nname"] = "";
}
else
{
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO anrede SET anrede = ''");
$qry = mysqli_query($dbconn,"SELECT id FROM anrede WHERE anrede = ''");
}
$row = mysqli_fetch_array($qry);
$procd["firma"] = $procd["anrede"]." ".$procd["nname"];
if(!$procd["vname"])
$procd["nname"] = "";
$anredechange=1;
ob_flush();
flush();
$procd["anrede"] = $row[0];
}
//extract titles
if(preg_match("!.*Dr\.med\..*!",$procd["nname"]) || preg_match("!.*Dr\. med\..*!",$procd["nname"]))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Dr. med.'");
$row = mysqli_fetch_array($qry);
$procd["nname"] = str_replace("Dr. med. ","",$procd["nname"]);
$procd["nname"] = str_replace("Dr. med.","",$procd["nname"]);
$procd["nname"] = str_replace("Dr.med. ","",$procd["nname"]);
$procd["nname"] = str_replace("Dr.med.","",$procd["nname"]);
$procd["titel"] = $row[0];
}
if(preg_match("!.*Dr\..*!",$procd["nname"]))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Dr.'");
$row = mysqli_fetch_array($qry);
$procd["nname"] = str_replace("Dr. ","",$procd["nname"]);
$procd["nname"] = str_replace("Dr.","",$procd["nname"]);
$procd["titel"] = $row[0];
}
if(strstr($procd["nname"],"Prof. Dr.") || strstr($procd["nname"],"Prof.Dr."))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Prof. Dr.'");
$row = mysqli_fetch_array($qry);
$procd["nname"] = str_replace("Prof. Dr. ","",$procd["nname"]);
$procd["nname"] = str_replace("Prof. Dr.","",$procd["nname"]);
$procd["nname"] = str_replace("Prof.Dr. ","",$procd["nname"]);
$procd["nname"] = str_replace("Prof.Dr.","",$procd["nname"]);
$procd["titel"] = $row[0];
}
if(strstr($procd["nname"],"Dipl. Ing.") || strstr($procd["nname"],"Dipl.Ing."))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Dipl. Ing.'");
$row = mysqli_fetch_array($qry);
$procd["nname"] = str_replace("Dipl. Ing. ","",$procd["nname"]);
$procd["nname"] = str_replace("Dipl. Ing.","",$procd["nname"]);
$procd["nname"] = str_replace("Dipl.Ing. ","",$procd["nname"]);
$procd["nname"] = str_replace("Dipl.Ing.","",$procd["nname"]);
$procd["titel"] = $row[0];
}
if(strstr($procd["vname"],"Dr.med.") || strstr($procd["vname"],"Dr. med."))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Dr. med.'");
$row = mysqli_fetch_array($qry);
$procd["vname"] = str_replace("Dr. med. ","",$procd["vname"]);
$procd["vname"] = str_replace("Dr. med.","",$procd["vname"]);
$procd["vname"] = str_replace("Dr.med. ","",$procd["vname"]);
$procd["vname"] = str_replace("Dr.med.","",$procd["vname"]);
$procd["titel"] = $row[0];
}
if(strstr($procd["vname"],"Prof. Dr.") || strstr($procd["vname"],"Prof.Dr."))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Prof. Dr.'");
$row = mysqli_fetch_array($qry);
$procd["vname"] = str_replace("Prof. Dr. ","",$procd["vname"]);
$procd["vname"] = str_replace("Prof. Dr.","",$procd["vname"]);
$procd["vname"] = str_replace("Prof.Dr. ","",$procd["vname"]);
$procd["vname"] = str_replace("Prof.Dr.","",$procd["vname"]);
$procd["titel"] = $row[0];
}
if(strstr($procd["vname"],"Dipl. Ing.") || strstr($procd["vname"],"Dipl.Ing."))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Dipl. Ing.'");
$row = mysqli_fetch_array($qry);
$procd["vname"] = str_replace("Dipl. Ing. ","",$procd["vname"]);
$procd["vname"] = str_replace("Dipl. Ing.","",$procd["vname"]);
$procd["vname"] = str_replace("Dipl.Ing. ","",$procd["vname"]);
$procd["vname"] = str_replace("Dipl.Ing.","",$procd["vname"]);
$procd["titel"] = $row[0];
}
if(preg_match("!.*Dr\..*!",$procd["vname"]))
{
$qry = mysqli_query($dbconn,"SELECT id FROM titel WHERE titel = 'Dr.'");
$row = mysqli_fetch_array($qry);
$procd["vname"] = str_replace("Dr. ","",$procd["vname"]);
$procd["vname"] = str_replace("Dr.","",$procd["vname"]);
$procd["titel"] = $row[0];
}
if(!$err)
$ret = array($procd,$anredechange);
else
$ret = 0;
return $ret;
}
function sks_process_fakturecord($data,$dbconn,$datanr)
{
$err = 0;
$procd["rechnr"] = mysqli_real_escape_string($dbconn,trim(iconv( "850", "UTF-8", $data["F_BELNUM"])));
$procd["rechtyp"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_BELTYP"])));
$procd["datetime"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_BELDAT"])));
$procd["kdnr"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_KNUMMER"])));
$procd["koposten"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_KOPOSTEN"])));
$procd["wahrung"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_WAEHRUNG"])));
$procd["wechselkurs"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_WECHSEL"])));
$procd["land"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_LANDNAME"])));
$procd["mwst"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_MAXSTEUER"])));
if(!preg_match("!^[0-9]+$!",$procd["rechnr"]))
$err = error("Datensatz $datanr hat eine falsche Rechnungsnummer (".$procd["rechnr"].")!");
//format date
if(!preg_match("!^[0-9]{8}$!",$procd["datetime"]))
$err = error("Datensatz $datanr hat ein falsches Datumsformat (".$procd["datetime"].")!");
else
{
$procd["datetime"] = substr($procd["datetime"],0,4)."-".substr($procd["datetime"],4,2)."-".substr($procd["datetime"],6,2);
}
//>>Filter Gutschriften<<
if($procd["rechtyp"] == 5)
{
$procd["rechtyp"] = 2; // 2 is gutschrift 1 is Rechnung
}
//>>process wahrungen!!<<
if($procd["wahrung"]=="EUR" || $procd["wahrung"] == "")
$procd["wahrung"] = "";
$qry=mysqli_query($dbconn,"SELECT id FROM wahrung WHERE wahrung='".$procd["wahrung"]."'");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO wahrung SET wahrung = '".$procd["wahrung"]."' , kurs='".$procd["wechselkurs"]."'");
$qry = mysqli_query($dbconn,"SELECT id FROM wahrung WHERE wahrung = '".$procd["wahrung"]."'");
}
$row = mysqli_fetch_array($qry);
$procd["wahrung"] = $row[0];
//-------------------------------------
//---------insert umrechn!!!!----------
//-------------------------------------
//>>process mwst!!<<
$qry=mysqli_query($dbconn,"SELECT id FROM mwst WHERE mwst='".$procd["mwst"]."'");
if(!mysqli_num_rows($qry))
{
mysqli_query($dbconn,"INSERT INTO mwst SET mwst = '".$procd["mwst"]."'");
$qry = mysqli_query($dbconn,"SELECT id FROM mwst WHERE mwst = '".$procd["mwst"]."'");
}
$row = mysqli_fetch_array($qry);
$procd["mwst"] = $row[0];
if(!$err)
$ret = $procd;
else
$ret = 0;
return $ret;
}
function sks_process_fposrecord($data,$dbconn,$datanr)
{
$err = 0;
$procd["rechnr"] = mysqli_real_escape_string($dbconn,trim(iconv( "850", "UTF-8", $data["F_BELNUM"])));
$procd["pos"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_POS"])));
$procd["menge"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_LMENGE"])));
$procd["bez1"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_LBEZ1"])));
$procd["bez2"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_LBEZ2"])));
$procd["preis"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_LPREIS"])));
$procd["rabatt"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_LRABATT"])));
$procd["postxt"] = mysqli_real_escape_string($dbconn,trim(iconv("850","UTF-8",$data["F_POS_TXT"])));
if(!$err)
$ret = $procd;
else
$ret = 0;
return $ret;
}
//IMPORTSKS
function importsks($dbconn)
{
error_reporting(E_ERROR | E_WARNING | E_PARSE); //dont show notices
$err = 0;
if($_FILES['adressen']['name'] == "ADRESSEN.DBF" && $_FILES['faktu']['name'] == "FAKTU.DBF" &&$_FILES['fpos']['name'] == "FPOS.DBF" )
{
message("ADRESSEN.DBF wird geöffnet...");
$adressen = dbase_open ($_FILES['adressen']['tmp_name'], 0);
if($adressen)
{
if(dbase_numfields($adressen) == 73)
$err = error("Die übergebene Tabelle hat 73 Spalten 74 werden benötigt. Zum Import der KUNDEN.DBF muss diese erst von MEMO feldern bereit werden. Nutzen Sie hierzu bitte <b>DBF Explorer</b>!");
else if(dbase_numfields($adressen) != 74)
$err = error("Für die Adressen Datenbank wird eine Tabelle mit 74 Feldern erwartet, die übergebene Tabelle hat aber ".dbase_numfields($adressen)." Felder. Das kann nicht importiert werden!");
if(!$err)
{
message(dbase_numrecords($adressen)." Kunden stehen bereit zum Import..<br />Der Import kann einige Zeit in Anspruch nehmen.<br />.....<br />......<br />.....<br />");
ob_flush();
flush();
$deleted = 0;
$import = 0;
$no_import = 0;
$changedanrede = 0;
for ($i = 1; $i <= dbase_numrecords($adressen); $i++)
{
ob_flush();
flush();
$err=0;
$data = dbase_get_record_with_names($adressen, $i);
if(!$data["deleted"])
{
if($processed=sks_process_adressrecord($data,$dbconn,$i))
{
$data = $processed[0];
if($processed[1])
{
$changedanrede++;
$sks_check = "1";
}
else
$sks_check = "0";
$strid = 0;
$ortid = 0;
$qry = mysqli_query($dbconn,"SELECT id FROM ort WHERE plz='".$data["plz"]."' AND ort='".$data["ort"]."'");
$ortid=mysqli_fetch_array($qry);
$ortid = $ortid[0];
if($ortid)
{
$qry = mysqli_query($dbconn,"SELECT id FROM strasse WHERE str='".$data["str"]."' AND ort_id='".$ortid."'");
$strid=mysqli_fetch_array($qry);
$strid = $strid[0];
if(!$strid)
{
$qry = mysqli_query($dbconn,"INSERT INTO strasse SET str='".$data["str"]."', ort_id=$ortid")
or $err = error("Strasse für Kd. ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
if(!$strid=mysqli_insert_id($dbconn))
{
$err = error("Kundenadresse STR ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
}
}
else
{
$qry = mysqli_query($dbconn,"INSERT INTO ort SET ort='".$data["ort"]."' , plz='".$data["plz"]."', land_id='".$data["land"]."'")
or $err = error("Ort für Kd. ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
if($ortid = mysqli_insert_id($dbconn))
{
$qry = mysqli_query($dbconn,"INSERT INTO strasse SET str='".$data["str"]."' , ort_id='".$ortid."'")
or $err = error("Strasse für Kd. ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
if(!$strid = mysqli_insert_id($dbconn))
{
$err = error("Kundenadresse STR ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
}
else
{
$err = error("Kundenadresse ORT ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
}
if(!$err)
{
mysqli_query($dbconn, "INSERT INTO partner SET
id='".$data["kdnr"]."',
datetime_new='".$data["datetime"]."',
user_id=1,
sks_not_checked=1,
typ_id=1,
zahlziel_id=1,
sks_kdnotiz='".$data["sksnotiz"]."'")
or $err = error("Kunde ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
if($strid && $ortid)
{
if($partnerid = mysqli_insert_id($dbconn))
{
mysqli_query($dbconn, "INSERT INTO adresse SET
partner_id='".$partnerid."',
vname='".$data["vname"]."',
nname='".$data["nname"]."',
nname2='".$data["nname2"]."',
firma='".$data["firma"]."',
anrede_id='".$data["anrede"]."',
titel_id='".$data["titel"]."',
str_id='".$strid."',
typ_id='1',
zusatz='".$data["zusatz"]."', hnr='".$data["hnr"]."'")
or $err = error("Kunde ".$data["kdnr"]." Adresse nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
$res = mysqli_query($dbconn, "SELECT id FROM teltyp WHERE id = 1");
if(!mysqli_num_rows($res))
mysqli_query($dbconn, "INSERT INTO teltyp SET id = 1, typ = 'Privat'");
$res = mysqli_query($dbconn, "SELECT id FROM teltyp WHERE id = 2");
if(!mysqli_num_rows($res))
mysqli_query($dbconn, "INSERT INTO teltyp SET id = 2, typ = 'Mobil'");
mysqli_query($dbconn, "INSERT INTO tel SET ort_id = '".$ortid."', partner_id='".$partnerid."', nr = '".$data["tel1"]."', typ_id = 1;")
or $err = error("Kunde ".$data["kdnr"]." Tel1 nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
mysqli_query($dbconn, "INSERT INTO tel SET ort_id = '".$ortid."', partner_id='".$partnerid."', nr = '".$data["tel2"]."', typ_id = 5;")
or $err = error("Kunde ".$data["kdnr"]." Tel2 nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
mysqli_query($dbconn, "INSERT INTO tel SET ort_id = '".$ortid."', partner_id='".$partnerid."', nr = '".$data["fax"]."', typ_id = 4;")
or $err = error("Kunde ".$data["kdnr"]." Fax nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
else
$err = error("Kunde ".$data["kdnr"]." ID nicht gefunden: <br />".formaterror(mysqli_error($dbconn)));
}
if($data["bem1"])
{
mysqli_query($dbconn, "INSERT INTO notiz SET
partner_id='".$data["kdnr"]."',
notiz='".$data["bem1"]."'")
or $err = error("Notiz zu Kunde ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
if($data["bem2"])
{
mysqli_query($dbconn, "INSERT INTO notiz SET
partner_id='".$data["kdnr"]."',
notiz='".$data["bem2"]."'")
or $err = error("Notiz zu Kunde ".$data["kdnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
if(!$err)
$import ++;
else
$no_import ++;
}
else
{
$err = error("Datensatz Nummer $i entspricht nicht dem erwarteten Format!");
ob_flush();
flush();
$no_import ++;
}
}
else
$deleted++;
}
warning("<font sizer='+1'><b>Zusammenfassung des Kundenimport:</b></font> <br />".$import." erfolgreich importierte Kunden<br />Davon wurde bei ".$changedanrede." die Anrede als Firmennamen interpretiert.<br />".$no_import." fehlgeschagene Kunden<br />".$deleted." bereits in SKS gelöschte un damit übersprungene Kunden.");
if($no_import)
$err=1;
}
dbase_close($adressen);
if(!$err)
ok("<b>ADRESSEN.DBF Datei wurde erfolgreich importiert, der Kundenstamm entspricht nun dem SKS Kundenstamm!!</b>");
else
$err = error("<b>ADRESSEN.DBF Datei wurde nicht oder unvollständig importiert!<br /> (Siehe vorhergehende Felhermeldung)</b>");
}
else
{
$err = error("dBase datenbank ADRESSEN.DBF konnte nicht geöffnet werden.");
}
$err = 0;
// $_FILES['faktu']['tmp_name'] 63 Felder
message("FAKTU.DBF wird geöffnet...");
$faktu = dbase_open ($_FILES['faktu']['tmp_name'], 0);
if($faktu)
{
if(dbase_numfields($faktu) != 63)
$err = error("Für die Fakturierungs Datenbank wird eine Tabelle mit 63 Feldern erwartet, die übergebene Tabelle hat aber ".dbase_numfields($adressen)." Felder. Das kann nicht importiert werden!");
if(!$err)
{
message(dbase_numrecords($faktu)." Rechnungen stehen bereit zum Import..<br />Der Import kann einige Zeit in Anspruch nehmen.<br />.....<br />......<br />.....<br />");
ob_flush();
flush();
$deleted = 0;
$import = 0;
$no_import = 0;
for ($i = 1; $i <= dbase_numrecords($faktu); $i++)
{
ob_flush();
flush();
$err=0;
$data = dbase_get_record_with_names($faktu, $i);
if(!$data["deleted"])
{
if($data=sks_process_fakturecord($data,$dbconn,$i))
{
$qry=mysqli_query($dbconn, "SELECT id FROM adresse WHERE partner_id = '".$data["kdnr"]."'");
$res=mysqli_fetch_array($qry);
$adresse = $res[0];
if($data["rechtyp"] == 1)
{
mysqli_query($dbconn, "INSERT INTO rechnung SET
rechnr='".$data["rechnr"]."',
partner_id='".$data["kdnr"]."',
adresse_id='".$adresse."',
mwst_id='".$data["mwst"]."',
changetime=NOW(),
user_id=1,
datetime='".$data["datetime"]."',
wahrung_id='".$data["wahrung"]."',
zahlziel_id=1,
sks=1,
typ_id=1")
or $err = error("Rechnung ".$data["rechnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
else if($data["rechtyp"] == 2)
{
mysqli_query($dbconn, "INSERT INTO rechnung SET
rechnr='".$data["rechnr"]."',
partner_id='".$data["kdnr"]."',
adresse_id='".$adresse."',
mwst_id='".$data["mwst"]."',
changetime=NOW(),
user_id=1,
datetime='".$data["datetime"]."',
wahrung_id='".$data["wahrung"]."',
zahlziel_id=1,
sks=1,
typ_id=2")
or $err = error("Rechnung ".$data["rechnr"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
else
$err = error("Rechnungstyp des Datensatzes Nr.:".$i." (Rechnungsnummer: ".$data["rechnr"].") nicht unterstützt!");
if(!$err)
$import ++;
else
$no_import ++;
}
else
{
$err = error("Datensatz Nummer $i entspricht nicht dem erwarteten Format!");
ob_flush();
flush();
$no_import ++;
}
}
else
$deleted++;
}
warning("<font sizer='+1'><b>Zusammenfassung des Rechnungsimports:</b></font> <br />".$import." erfolgreich importierte Rechnungen<br />".$no_import." fehlgeschagene Rechnungen<br />".$deleted." bereits in SKS gelöschte un damit übersprungene Rechnungen.");
if($no_import)
$err=1;
}
dbase_close($faktu);
if(!$err)
ok("<b>FAKTU.DBF Datei wurde erfolgreich importiert, der Rechnungsstamm entspricht nun dem SKS Rechnungsstamm!!</b>");
else
$err = error("<b>FAKTU.DBF Datei wurde nicht oder unvollständig importiert!<br /> (Siehe vorhergehende Felhermeldung)</b>");
}
else
{
$err = error("dBase datenbank FAKTU.DBF konnte nicht geöffnet werden.");
}
$err = 0;
// $_FILES['fpos']['tmp_name'] 25 Felder
message("FPOS.DBF wird geöffnet...");
$fpos = dbase_open ($_FILES['fpos']['tmp_name'], 0);
if($fpos)
{
if(dbase_numfields($fpos) != 25)
$err = error("Für die Artikel Datenbank wird eine Tabelle mit 25 Feldern erwartet, die übergebene Tabelle hat aber ".dbase_numfields($adressen)." Felder. Das kann nicht importiert werden!");
if(!$err)
{
message(dbase_numrecords($fpos)." Artikel stehen bereit zum Import..<br />Der Import kann einige Zeit in Anspruch nehmen.<br />.....<br />......<br />.....<br />");
ob_flush();
flush();
$deleted = 0;
$kicked = 0;
$import = 0;
$no_import = 0;
for ($i = 1; $i <= dbase_numrecords($fpos); $i++)
{
ob_flush();
flush();
$err=0;
$data = dbase_get_record_with_names($fpos, $i);
if(!$data["deleted"])
{
if($data=sks_process_fposrecord($data,$dbconn,$i))
{
if($data["menge"] != 0 && !(!$data["bez1"] && !$data["bez2"] && !$data["postxt"]))
{
mysqli_query($dbconn, "INSERT INTO artikelsks SET
rechnr='".$data["rechnr"]."',
pos='".$data["pos"]."',
menge='".$data["menge"]."',
bezeichn1='".$data["bez1"]."',
bezeichn2='".$data["bez2"]."',
rabatt='".$data["rabatt"]."',
beschr='".$data["postxt"]."',
preis='".$data["preis"]."'")
or $err = error("Artikel ".$data["bez1"]." nicht eingefügt: <br />".formaterror(mysqli_error($dbconn)));
}
else
{
$kicked++;
}
if(!$err)
$import ++;
else
$no_import ++;
}
else
{
$err = error("Datensatz Nummer $i entspricht nicht dem erwarteten Format!");
ob_flush();
flush();
$no_import ++;
}
}
else
$deleted++;
}
warning("<font sizer='+1'><b>Zusammenfassung des Artikelimports:</b></font> <br />".$import." erfolgreich importierte Artikel<br />".$no_import." fehlgeschagene Artikel<br />".$kicked." Aussortierte Artikel (Menge=0 oder keinerlei Bezeichnung)<br />".$deleted." bereits in SKS gelöschte un damit übersprungene Artikel.");
if($no_import)
$err=1;
}
dbase_close($fpos);
if(!$err)
ok("<b>FPOS.DBF Datei wurde erfolgreich importiert, der Artikelstamm entspricht nun dem SKS Artikelstamm!!</b>");
else
$err = error("<b>FPOS.DBF Datei wurde nicht oder unvollständig importiert!<br /> (Siehe vorhergehende Felhermeldung)</b>");
}
else
{
$err = error("dBase datenbank FPOS.DBF konnte nicht geöffnet werden.");
}
$err = 0;
}
else
{
$err = error("Es werden nur exakt die drei Dateien von SKS akzeptiert, bitte stellen Sie sicher, dass der Dateiname übereinstimmt.");
}
if(!$err)
{
ok("<font size='+1'><b>SKS Daten erfolgreich importiert!!</b></font>");
$ret = 0;
}
else
{
$err = error("<font size='+1'><b>SKS daten konnten nicht importiert werden!!</b></font>");
$ret = -1;
}
return $ret;
}
?>