X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2FaddressB.php;h=bd5317f05836800d95a383d110aafe432ba11fe7;hb=879abbad15598aba736c740065bf03bceaacac83;hp=dcb5adb7f974c22cf37c90beccec14c4ac6d2150;hpb=3e63947841c49112212cdeef5bd178fe961bf002;p=kivitendo-erp.git diff --git a/lxo-import/addressB.php b/lxo-import/addressB.php index dcb5adb7f..bd5317f05 100644 --- a/lxo-import/addressB.php +++ b/lxo-import/addressB.php @@ -1,7 +1,7 @@ -"; + echo "Feldname => Bedeutung
"; + foreach($address as $key=>$val) { + echo "$key => $val
"; + } + $header=implode(";",array_keys($address)); + echo $header; + exit(0); }; + if ($_POST["ok"]) { $nun=time(); -require ("import_lib.php"); -$db=new myDB($login); + +/* get DB instance */ +$db=$_SESSION["db"]; //new myDB($login); + $crm=checkCRM(); -function ende($nr) { - echo "Abbruch: $nr
"; - echo "Fehlende oder falsche Daten."; - exit(1); +function ende($txt) { + echo "Abbruch: $txt
"; + exit(1); } - -if ($_POST["ok"]=="Hilfe") { - echo "Importfelder:
"; - echo "Feldname => Bedeutung
"; - foreach($address as $key=>$val) { - echo "$key => $val
"; - } - exit(0); -}; +$dir = "../users/"; clearstatcache (); //print_r($_FILES); $test=$_POST["test"]; if (!empty($_FILES["Datei"]["name"])) { - $file=$_POST["ziel"]; - if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file.".csv")) { - $file=false; - echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")
"; - } -} else if (is_file($_POST["ziel"].".csv")) { - $file=$_POST["ziel"]; + $file=$_POST["ziel"]; + if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) { + $file=false; + echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")
"; + } +} else if (is_file($dir.$_POST["ziel"].".csv")) { + $file=$_POST["ziel"]; } else { - $file=false; + $file=false; } -if (!$file) ende (2); +if (!$file) ende ("Kein Datenfile"); $trenner=($_POST["trenner"])?$_POST["trenner"]:","; -//echo "../users/$login.conf"; -if (!file_exists("../users/$login.conf")) ende(3); +if ($trenner=="other") { + $trenner=trim($trennzeichen); + if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1)); +} -if (!file_exists("$file.csv")) ende(5); +if (!file_exists($dir.$file.".csv")) ende("$file.csv nicht im Ordner oder leer"); -$db=new myDB($login); -if (!$db->chkcol($file)) ende(6); +if (!$db->chkcol($file)) ende("Importspalte kann nicht angelegt werden"); -$employee=chkUsr($login); -if (!$employee) ende(4); +$employee=chkUsr($_SESSION["employee"]); +if (!$employee) ende("Ungültiger User"); $kunde_fld = array_keys($address); -$f=fopen("$file.csv","r"); + //Zeichencodierung des Servers + $tmpcode = $db->getServerCode(); + //Leider sind die Benennungen vom Server anders als von mb_detect_encoding + if ($tmpcode == "UTF8") { + define("ServerCode","UTF-8"); + } else if ($tmpcode == "LATIN9") { + define("ServerCode","ISO-8859-15"); + } else if ($tmpcode == "LATIN1") { + define("ServerCode","ISO-8859-1"); + } else { + define("ServerCode",$tmpcode); + } + //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos + //DB und LxO müssen ja nicht auf der gleichen Maschiene sein. + if($tmpcode<>$db->getClientCode()) { + $rc = $db->setClientCode($tmpcode); + } + + // Zeichenkodierung File + if ($_POST["encoding"] == "auto") { + define("Auto",true); + define("Translate",true); + } else { + define("Auto",false); + if ($_POST["encoding"] == ServerCode) { + define("Translate",false); + } else { + define("Translate",true); + define("FileCode",$_POST["encoding"]); + } + } + +$f=fopen($dir.$file.".csv","r"); $zeile=fgets($f,1200); -$infld=split($trenner,strtolower($zeile)); +$infld=explode($trenner,strtolower($zeile)); $first=true; $ok=true; foreach ($infld as $fld) { - $fld = strtolower(trim(strtr($fld,array("\""=>"","'"=>"")))); - if ($fld=="branche" && !$crm) { $in_fld[]=""; continue; }; - if ($fld=="sw" && !$crm) { $in_fld[]=""; continue; }; - $in_fld[]=$fld; + $fld = strtolower(trim(strtr($fld,array("\""=>"","'"=>"")))); + if ($fld=="branche" && !$crm) { $in_fld[]=""; continue; }; + if ($fld=="sw" && !$crm) { $in_fld[]=""; continue; }; + $in_fld[]=$fld; } -//print_r($in_fld); echo "
"; + $j=0; $m=0; $zeile=fgetcsv($f,1200,$trenner); if ($ok) while (!feof($f)){ - $i=0; - //echo "Arbeite an $m "; - $m++; - $anrede=""; - $Matchcode=""; - $sql="insert into $file "; - $keys="("; - $vals=" values ("; - $number=false; - foreach($zeile as $data) { - if (!in_array(trim($in_fld[$i]),$kunde_fld)) { - if ($in_fld[$i]=="anrede") { $anrede=addslashes(trim($data)); } - $i++; - continue; - }; - $data=trim($data); - $data=mb_convert_encoding($data,"ISO-8859-15","auto"); - //$data=htmlentities($data); - $data=addslashes($data); - if ($in_fld[$i]==$file."number") { // customernumber || vendornumber - if (empty($data) or !$data) { - $data=getKdId(); - $number=true; - } else { - $data=chkKdId($data); - $number=true; - } - } else if ($in_fld[$i]=="taxincluded"){ - $data=strtolower(substr($data,0,1)); - if ($data!="f" && $data!="t") $data="f"; - } else if ($in_fld[$i]=="ustid"){ - $data=strtr(" ","",$data); - } /*else if ($in_fld[$i]=="matchcode") { + $i=0; + $m++; + $anrede=""; + $Matchcode=""; + $sql="insert into $file "; + $keys="("; + $vals=" values ("; + $number=false; + foreach($zeile as $data) { + if (!in_array(trim($in_fld[$i]),$kunde_fld)) { + if ($in_fld[$i]=="anrede") { $anrede=addslashes(trim($data)); } + $i++; + continue; + }; + $data=trim($data); + // seit 2.6 ist die DB-Kodierung UTF-8 @holger Ansonsten einmal vorher die DB-Encoding auslesen + // Falls die Daten ISO-kodiert kommen entsprechend wandeln + // done! + // UTF-8 MUSS als erstes stehen, da ansonsten die Prüfung bei ISO-8859-1 aufhört ... + // die blöde mb_detect... tut leider nicht immer, daher die Möglichkeit der Auswahl + // TODO Umlaute am Anfang wurden bei meinem Test nicht übernommen (Österreich). S.a.: + // http://forum.de.selfhtml.org/archiv/2007/1/t143904/ + + if (Translate) translate($data); + + //$data=htmlentities($data); + $data=addslashes($data); + if ($in_fld[$i]==$file."number") { // customernumber || vendornumber + if (empty($data) or !$data) { + $data=getKdId(); + $number=true; + } else { + $data=chkKdId($data); + $number=true; + } + } else if ($in_fld[$i]=="taxincluded"){ + $data=strtolower(substr($data,0,1)); + if ($data!="f" && $data!="t") $data="f"; + } else if ($in_fld[$i]=="ustid"){ + $data=strtr($data," ",""); + } /*else if ($in_fld[$i]=="matchcode") { $matchcode=$data; $i++; continue; if ($data==false or empty($data) or !$data) { - if (in_array($in_fld[$i],array("name"))) { - $data=$matchcode; - } - } - }*/ - - $keys.=$in_fld[$i].","; - if ($data==false or empty($data) or !$data) { - $vals.="null,"; - } else { - if ($in_fld[$i]=="contact"){ - if ($anrede) { - $vals.="'$anrede $data',"; - } else { - $vals.="'$data',"; - } - } else { - $vals.="'".$data."',"; - } - } - $i++; - } - if (!$number) { - $keys.=$file."number,"; - $vals.="'".getKdId()."',"; - } - if ($keys<>"(") { - if ($test) { - if ($first) { - echo "\n"; - echo "\n"; - $first=false; - }; - $vals=str_replace("',","'\n"; - //echo "Import $j
\n"; - flush(); - } else { - $sql.=$keys."taxzone_id,import)"; - $sql.=$vals."0,$nun)"; - $rc=$db->query($sql); - if (!$rc) echo "Fehler: ".$sql."
"; - } - $j++; - } else { + if (in_array($in_fld[$i],array("name"))) { + $data=$matchcode; + } + } + }*/ + + $keys.=$in_fld[$i].","; + if ($data==false or empty($data) or !$data) { + $vals.="null,"; + } else { + if ($in_fld[$i]=="contact"){ + if ($anrede) { + $vals.="'$anrede $data',"; + } else { + $vals.="'$data',"; + } + } else { + $vals.="'".$data."',"; + } + } + $i++; + } + if (!$number) { + $keys.=$file."number,"; + $vals.="'".getKdId()."',"; + } + if ($keys<>"(") { + if ($test) { + if ($first) { + echo "
".str_replace(",","",substr($keys,1,-1))."
",substr($vals,9,-1)); - echo "
".str_replace("null,","null",$vals)."
\n"; + echo "\n"; + $first=false; + }; + $vals=str_replace("',","'\n"; + //echo "Import $j
\n"; + flush(); + } else { + $sql.=$keys."taxzone_id,import)"; + $sql.=$vals."0,$nun)"; + $rc=$db->query($sql); + if (!$rc) echo "Fehler: ".$sql."
"; + } + $j++; + } else { $vals=str_replace("',","'\n"; flush(); } - $zeile=fgetcsv($f,1200,$trenner); + $zeile=fgetcsv($f,1200,$trenner); } fclose($f); if ($test) echo "
".str_replace(",","",substr($keys,1,-1))."
",substr($vals,9,-1)); + echo "
".str_replace("null,","null",$vals)."
",substr($vals,9,-1)); echo "
".str_replace("null,","null",$vals)."
\n ##### = Neue Kunden-/Lieferantennummer\n
"; @@ -184,15 +235,33 @@ echo $j." $file importiert.\n";

Adressimport für die ERP


+ - + - + +
Zieltabellecustomer vendor
Trennzeichen
Trennzeichen + Semikolon + Komma + Tabulator + Leerzeichen + + +
Testja
Daten
Verwendete
Zeichecodierung
+ +
- +