Revision 885e7d76
Von Holger Lindemann vor fast 15 Jahren hinzugefügt
- ID 885e7d7601de767605f2938a69bae18258c62696
- Nachfolger 74f7cca4
lxo-import/addressB.php | ||
---|---|---|
48 | 48 |
echo "Abbruch: $txt<br>"; |
49 | 49 |
exit(1); |
50 | 50 |
} |
51 |
|
|
51 |
$dir = "../users/"; |
|
52 | 52 |
clearstatcache (); |
53 | 53 |
//print_r($_FILES); |
54 | 54 |
$test=$_POST["test"]; |
55 | 55 |
if (!empty($_FILES["Datei"]["name"])) { |
56 | 56 |
$file=$_POST["ziel"]; |
57 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file.".csv")) { |
|
57 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) {
|
|
58 | 58 |
$file=false; |
59 | 59 |
echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>"; |
60 | 60 |
} |
61 |
} else if (is_file($_POST["ziel"].".csv")) { |
|
61 |
} else if (is_file($dir.$_POST["ziel"].".csv")) {
|
|
62 | 62 |
$file=$_POST["ziel"]; |
63 | 63 |
} else { |
64 | 64 |
$file=false; |
... | ... | |
67 | 67 |
if (!$file) ende ("Kein Datenfile"); |
68 | 68 |
|
69 | 69 |
$trenner=($_POST["trenner"])?$_POST["trenner"]:","; |
70 |
if ($trenner=="other") { |
|
71 |
$trenner=trim($trennzeichen); |
|
72 |
if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1)); |
|
73 |
} |
|
70 | 74 |
|
71 |
if (!file_exists("$file.csv")) ende("$file.csv nicht im Ordner oder leer");
|
|
75 |
if (!file_exists($dir.$file.".csv")) ende("$file.csv nicht im Ordner oder leer");
|
|
72 | 76 |
|
73 | 77 |
|
74 | 78 |
if (!$db->chkcol($file)) ende("Importspalte kann nicht angelegt werden"); |
... | ... | |
78 | 82 |
|
79 | 83 |
$kunde_fld = array_keys($address); |
80 | 84 |
|
81 |
$f=fopen("$file.csv","r"); |
|
85 |
//Zeichencodierung des Servers |
|
86 |
$tmpcode = $db->getServerCode(); |
|
87 |
//Leider sind die Benennungen vom Server anders als von mb_detect_encoding |
|
88 |
if ($tmpcode == "UTF8") { |
|
89 |
define("ServerCode","UTF-8"); |
|
90 |
} else if ($tmpcode == "LATIN9") { |
|
91 |
define("ServerCode","ISO-8859-15"); |
|
92 |
} else if ($tmpcode == "LATIN1") { |
|
93 |
define("ServerCode","ISO-8859-1"); |
|
94 |
} else { |
|
95 |
define("ServerCode",$tmpcode); |
|
96 |
} |
|
97 |
//Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos |
|
98 |
//DB und LxO müssen ja nicht auf der gleichen Maschiene sein. |
|
99 |
if($tmpcode<>$db->getClientCode()) { |
|
100 |
$rc = $db->setClientCode($tmpcode); |
|
101 |
} |
|
102 |
|
|
103 |
// Zeichenkodierung File |
|
104 |
if ($_POST["encoding"] == "auto") { |
|
105 |
define("Auto",true); |
|
106 |
define("Translate",true); |
|
107 |
} else { |
|
108 |
define("Auto",false); |
|
109 |
if ($_POST["encoding"] == ServerCode) { |
|
110 |
define("Translate",false); |
|
111 |
} else { |
|
112 |
define("Translate",true); |
|
113 |
define("FileCode",$_POST["encoding"]); |
|
114 |
} |
|
115 |
} |
|
116 |
|
|
117 |
$f=fopen($dir.$file.".csv","r"); |
|
82 | 118 |
$zeile=fgets($f,1200); |
83 | 119 |
$infld=split($trenner,strtolower($zeile)); |
84 | 120 |
$first=true; |
... | ... | |
111 | 147 |
$data=trim($data); |
112 | 148 |
// seit 2.6 ist die DB-Kodierung UTF-8 @holger Ansonsten einmal vorher die DB-Encoding auslesen |
113 | 149 |
// Falls die Daten ISO-kodiert kommen entsprechend wandeln |
150 |
// done! |
|
114 | 151 |
// UTF-8 MUSS als erstes stehen, da ansonsten die Prüfung bei ISO-8859-1 aufhört ... |
152 |
// die blöde mb_detect... tut leider nicht immer, daher die Möglichkeit der Auswahl |
|
115 | 153 |
// TODO Umlaute am Anfang wurden bei meinem Test nicht übernommen (Österreich). S.a.: |
116 | 154 |
// http://forum.de.selfhtml.org/archiv/2007/1/t143904/ |
117 | 155 |
|
118 |
$encoding = mb_detect_encoding($data,"UTF-8,ISO-8859-1,ISO-8859-15"); |
|
119 |
if ($encoding != "UTF-8"){ |
|
120 |
$data=mb_convert_encoding($data, "UTF-8","$encoding"); |
|
121 |
} |
|
156 |
if (Translate) translate($data); |
|
157 |
|
|
122 | 158 |
//$data=htmlentities($data); |
123 | 159 |
$data=addslashes($data); |
124 | 160 |
if ($in_fld[$i]==$file."number") { // customernumber || vendornumber |
... | ... | |
132 | 168 |
} else if ($in_fld[$i]=="taxincluded"){ |
133 | 169 |
$data=strtolower(substr($data,0,1)); |
134 | 170 |
if ($data!="f" && $data!="t") $data="f"; |
135 |
} /*else if ($in_fld[$i]=="ustid"){ |
|
136 |
Was passiert hier: |
|
137 |
$data=strtr(" ","",$data); |
|
138 |
SUCHE IN ' ' nach dem Vorkommen von '' mit der BOOLEAN-Interpretation von $data |
|
139 |
demnach gibt es immer eine leere Zeichenkette zurück. |
|
140 |
}*/ /*else if ($in_fld[$i]=="matchcode") { |
|
171 |
} else if ($in_fld[$i]=="ustid"){ |
|
172 |
$data=strtr($data," ",""); |
|
173 |
} /*else if ($in_fld[$i]=="matchcode") { |
|
141 | 174 |
$matchcode=$data; |
142 | 175 |
$i++; |
143 | 176 |
continue; |
... | ... | |
208 | 241 |
<table> |
209 | 242 |
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr> |
210 | 243 |
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr> |
211 |
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr> |
|
244 |
<tr><td>Trennzeichen</td><td> |
|
245 |
<input type="radio" name="trenner" value=";" checked>Semikolon |
|
246 |
<input type="radio" name="trenner" value=",">Komma |
|
247 |
<input type="radio" name="trenner" value="#9" checked>Tabulator |
|
248 |
<input type="radio" name="trenner" value=" ">Leerzeichen |
|
249 |
<input type="radio" name="trenner" value="other"> |
|
250 |
<input type="text" size="2" name="trennzeichen" value=""> |
|
251 |
</td></tr> |
|
212 | 252 |
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr> |
213 | 253 |
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr> |
254 |
<tr><td>Verwendete<br />Zeichecodierung</td><td> |
|
255 |
<select name="encoding"> |
|
256 |
<option value="auto">Automatisch (versuchen)</option> |
|
257 |
<option value="UTF-8">UTF-8</option> |
|
258 |
<option value="ISO-8859-1">ISO-8859-1</option> |
|
259 |
<option value="ISO-8859-15">ISO-8859-15</option> |
|
260 |
<option value="Windows-1252">Windows-1252</option> |
|
261 |
<option value="ASCII">ASCII</option> |
|
262 |
</select> |
|
263 |
</td></tr> |
|
214 | 264 |
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr> |
215 | 265 |
</table> |
216 | 266 |
</form> |
lxo-import/contactB.php | ||
---|---|---|
28 | 28 |
$crm=checkCRM(); |
29 | 29 |
|
30 | 30 |
if ($_POST["ok"]) { |
31 |
$dir = "../users/"; |
|
32 |
|
|
31 | 33 |
$test=$_POST["test"]; |
32 | 34 |
|
33 | 35 |
if ($crm) { |
... | ... | |
55 | 57 |
clearstatcache (); |
56 | 58 |
|
57 | 59 |
$trenner=($_POST["trenner"])?$_POST["trenner"]:","; |
60 |
if ($trenner=="other") { |
|
61 |
$trenner=trim($trennzeichen); |
|
62 |
if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1)); |
|
63 |
} |
|
64 |
|
|
58 | 65 |
|
59 | 66 |
if (!empty($_FILES["Datei"]["name"])) { |
60 | 67 |
$file=$_POST["ziel"]; |
61 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file."_contact.csv")) { |
|
68 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file."_contact.csv")) {
|
|
62 | 69 |
$file=false; |
63 | 70 |
echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>"; |
64 | 71 |
} |
65 |
} else if (is_file($_POST["ziel"]."_contact.csv")) { |
|
72 |
} else if (is_file($dir.$_POST["ziel"]."_contact.csv")) {
|
|
66 | 73 |
$file=$_POST["ziel"]; |
67 | 74 |
} else { |
68 | 75 |
$file=false; |
... | ... | |
70 | 77 |
|
71 | 78 |
if (!$file) ende (2); |
72 | 79 |
|
73 |
if (!file_exists($file."_contact.csv")) ende(5); |
|
80 |
if (!file_exists($dir.$file."_contact.csv")) ende(5);
|
|
74 | 81 |
|
75 |
$prenumber=$_POST["prenumber"]; |
|
82 |
//$prenumber=$_POST["prenumber"];
|
|
76 | 83 |
|
77 | 84 |
$employee=chkUsr($_SESSION["employee"]); |
78 | 85 |
if (!$employee) ende(4); |
79 | 86 |
|
80 | 87 |
if (!$db->chkcol($file)) ende(6); |
81 | 88 |
|
82 |
$f=fopen($file."_contact.csv","r"); |
|
89 |
//Zeichencodierung des Servers |
|
90 |
$tmpcode = $db->getServerCode(); |
|
91 |
//Leider sind die Benennungen vom Server anders als von mb_detect_encoding |
|
92 |
if ($tmpcode == "UTF8") { |
|
93 |
define("ServerCode","UTF-8"); |
|
94 |
} else if ($tmpcode == "LATIN9") { |
|
95 |
define("ServerCode","ISO-8859-15"); |
|
96 |
} else if ($tmpcode == "LATIN1") { |
|
97 |
define("ServerCode","ISO-8859-1"); |
|
98 |
} else { |
|
99 |
define("ServerCode",$tmpcode); |
|
100 |
} |
|
101 |
//Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos |
|
102 |
//DB und LxO müssen ja nicht auf der gleichen Maschiene sein. |
|
103 |
if($tmpcode<>$db->getClientCode()) { |
|
104 |
$rc = $db->setClientCode($tmpcode); |
|
105 |
} |
|
106 |
|
|
107 |
// Zeichenkodierung File |
|
108 |
if ($_POST["encoding"] == "auto") { |
|
109 |
define("Auto",true); |
|
110 |
define("Translate",true); |
|
111 |
} else { |
|
112 |
define("Auto",false); |
|
113 |
if ($_POST["encoding"] == ServerCode) { |
|
114 |
define("Translate",false); |
|
115 |
} else { |
|
116 |
define("Translate",true); |
|
117 |
define("FileCode",$_POST["encoding"]); |
|
118 |
} |
|
119 |
} |
|
120 |
|
|
121 |
|
|
122 |
$f=fopen($dir.$file."_contact.csv","r"); |
|
83 | 123 |
$zeile=fgetcsv($f,2000,$trenner); |
84 | 124 |
|
85 | 125 |
$first=true; |
... | ... | |
105 | 145 |
} |
106 | 146 |
$data=addslashes(trim($data)); |
107 | 147 |
if ($in_fld[$i]=="firma" && $data) { |
148 |
if (Translate) translate($data); |
|
108 | 149 |
$data=suchFirma($file,$data); |
109 | 150 |
if ($data) { |
110 | 151 |
$id=$data["cp_cv_id"]; |
... | ... | |
149 | 190 |
if ($data==false or empty($data) or !$data) { |
150 | 191 |
$vals.="null,"; |
151 | 192 |
} else { |
152 |
if (in_array($in_fld[$i],array("cp_fax","cp_phone1","cp_phone2"))) { |
|
153 |
$data=$prenumber.$data; |
|
154 |
} else if ($in_fld[$i]=="cp_country" && $data) { |
|
155 |
$data=mkland($data); |
|
156 |
} |
|
157 |
if ($in_fld[$i]=="cp_name") $name=true; |
|
158 |
$vals.="'".$data."',"; |
|
159 |
// bei jedem gefuellten Datenfeld erhoehen |
|
160 |
$val_count++; |
|
193 |
|
|
194 |
if (Translate) translate($data); |
|
195 |
|
|
196 |
/*if (in_array($in_fld[$i],array("cp_fax","cp_phone1","cp_phone2"))) { |
|
197 |
$data=$prenumber.$data; |
|
198 |
} else if ($in_fld[$i]=="cp_country" && $data) { |
|
199 |
$data=mkland($data); |
|
200 |
} */ |
|
201 |
if ($in_fld[$i]=="cp_name") $name=true; |
|
202 |
$vals.="'".$data."',"; |
|
203 |
// bei jedem gefuellten Datenfeld erhoehen |
|
204 |
$val_count++; |
|
161 | 205 |
} |
162 | 206 |
} |
163 | 207 |
if (!$name) { |
... | ... | |
197 | 241 |
<table> |
198 | 242 |
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr> |
199 | 243 |
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr> |
200 |
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr> |
|
201 |
<tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="1" name="prenumber" value=""></td></tr> |
|
244 |
<tr><td>Trennzeichen</td><td> |
|
245 |
<input type="radio" name="trenner" value=";" checked>Semikolon |
|
246 |
<input type="radio" name="trenner" value=",">Komma |
|
247 |
<input type="radio" name="trenner" value="#9" checked>Tabulator |
|
248 |
<input type="radio" name="trenner" value=" ">Leerzeichen |
|
249 |
<input type="radio" name="trenner" value="other"> |
|
250 |
<input type="text" size="2" name="trennzeichen" value=""> |
|
251 |
</td></tr> |
|
252 |
<!--tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="1" name="prenumber" value=""></td></tr--> |
|
202 | 253 |
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr> |
203 | 254 |
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr> |
255 |
<tr><td>Verwendete<br />Zeichecodierung</td><td> |
|
256 |
<select name="encoding"> |
|
257 |
<option value="auto">Automatisch (versuchen)</option> |
|
258 |
<option value="UTF-8">UTF-8</option> |
|
259 |
<option value="ISO-8859-1">ISO-8859-1</option> |
|
260 |
<option value="ISO-8859-15">ISO-8859-15</option> |
|
261 |
<option value="Windows-1252">Windows-1252</option> |
|
262 |
<option value="ASCII">ASCII</option> |
|
263 |
</select> |
|
264 |
</td></tr> |
|
204 | 265 |
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr> |
205 | 266 |
</table> |
206 | 267 |
</form> |
lxo-import/db.php | ||
---|---|---|
134 | 134 |
} else { return true; }; |
135 | 135 |
} |
136 | 136 |
|
137 |
/** |
|
138 |
* Zeichekodirung der DB ermitteln |
|
139 |
* |
|
140 |
* @return String |
|
141 |
*/ |
|
142 |
function getServerCode() { |
|
143 |
$sql="SHOW server_encoding"; |
|
144 |
$rs = $this->getAll($sql); |
|
145 |
return $rs[0]["server_encoding"]; |
|
146 |
} |
|
147 |
function getClientCode() { |
|
148 |
$sql="SHOW client_encoding"; |
|
149 |
$rs = $this->getAll($sql); |
|
150 |
return $rs[0]["client_encoding"]; |
|
151 |
} |
|
152 |
function setClientCode($encoding) { |
|
153 |
$sql="SET client_encoding = '$encoding'"; |
|
154 |
$rc = $this->query($sql); |
|
155 |
return $rc; |
|
156 |
} |
|
137 | 157 |
|
138 | 158 |
} |
139 | 159 |
?> |
lxo-import/import_lib.php | ||
---|---|---|
93 | 93 |
"partsgroup2" => "3.Warengruppenbezeichnung", |
94 | 94 |
"partsgroup3" => "4.Warengruppenbezeichnung", |
95 | 95 |
"partsgroup4" => "5.Warengruppenbezeichnung", |
96 |
"shop" => "Shopexport vorghesehen", |
|
96 | 97 |
); |
97 | 98 |
|
98 | 99 |
$contactscrm = array( |
... | ... | |
369 | 370 |
$db->query($sql,"authuser_3"); |
370 | 371 |
return $auth; |
371 | 372 |
} |
373 |
/** |
|
374 |
* Zeichencode ?bersetzen |
|
375 |
* |
|
376 |
* @param String $txt |
|
377 |
*/ |
|
378 |
function translate(&$txt) { |
|
379 |
if (Auto) { |
|
380 |
$encoding = mb_detect_encoding($data,"UTF-8,ISO-8859-1,ISO-8859-15,Windows-1252,ASCII"); |
|
381 |
$txt = iconv("$encoding",ServerCode."//TRANSLIT",$txt); |
|
382 |
//$txt = mb_convert_encoding($txt, ServerCode,"$encoding"); |
|
383 |
} else { |
|
384 |
$txt = iconv(FileCode,ServerCode."//TRANSLIT",$txt); |
|
385 |
//$txt = mb_convert_encoding($txt, ServerCode,FileCode); |
|
386 |
} |
|
387 |
} |
|
372 | 388 |
|
373 | 389 |
?> |
lxo-import/partsB.php | ||
---|---|---|
27 | 27 |
/* get DB instance */ |
28 | 28 |
$db=$_SESSION["db"]; //new myDB($login); |
29 | 29 |
|
30 |
|
|
31 | 30 |
/* just display page or do real import? */ |
32 | 31 |
if ($_POST["ok"]) { |
33 | 32 |
|
34 | 33 |
require ("parts_import.php"); |
34 |
//Zeichencodierung des Servers |
|
35 |
$tmpcode = $db->getServerCode(); |
|
36 |
//Leider sind die Benennungen vom Server anders als von mb_detect_encoding |
|
37 |
if ($tmpcode == "UTF8") { |
|
38 |
define("ServerCode","UTF-8"); |
|
39 |
} else if ($tmpcode == "LATIN9") { |
|
40 |
define("ServerCode","ISO-8859-15"); |
|
41 |
} else if ($tmpcode == "LATIN1") { |
|
42 |
define("ServerCode","ISO-8859-1"); |
|
43 |
} else { |
|
44 |
define("ServerCode",$tmpcode); |
|
45 |
} |
|
46 |
//Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos |
|
47 |
//DB und LxO müssen ja nicht auf der gleichen Maschiene sein. |
|
48 |
if($tmpcode<>$db->getClientCode()) { |
|
49 |
$rc = $db->setClientCode($tmpcode); |
|
50 |
} |
|
51 |
|
|
52 |
// Zeichenkodierung File |
|
53 |
if ($_POST["encoding"] == "auto") { |
|
54 |
define("Auto",true); |
|
55 |
define("Translate",true); |
|
56 |
} else { |
|
57 |
define("Auto",false); |
|
58 |
if ($_POST["encoding"] == ServerCode) { |
|
59 |
define("Translate",false); |
|
60 |
} else { |
|
61 |
define("Translate",true); |
|
62 |
define("FileCode",$_POST["encoding"]); |
|
63 |
} |
|
64 |
} |
|
35 | 65 |
|
36 | 66 |
/* display help */ |
37 | 67 |
if ($_POST["ok"]=="Hilfe") { |
... | ... | |
66 | 96 |
$precision = $_POST["precision"]; |
67 | 97 |
$quotation = $_POST["quotation"]; |
68 | 98 |
$quottype = $_POST["quottype"]; |
69 |
$file = "../users/parts.csv"; |
|
70 |
$table = "parts"; |
|
99 |
$file = "parts"; |
|
71 | 100 |
|
72 | 101 |
/* no data? */ |
73 | 102 |
if (empty($_FILES["Datei"]["name"])) |
74 | 103 |
ende ("Kein Datenfile angegeben"); |
75 | 104 |
|
76 | 105 |
/* copy file */ |
77 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file)) { |
|
106 |
$dir="../users/"; |
|
107 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) { |
|
78 | 108 |
ende ("Upload von Datei fehlerhaft.".$_FILES["Datei"]["error"]); |
79 | 109 |
} |
80 | 110 |
|
81 | 111 |
/* check if file is really there */ |
82 |
if (!file_exists("$file") or filesize("$file")==0)
|
|
83 |
ende("Datenfile ($file) nicht im Ordner gefunden oder leer"); |
|
112 |
if (!file_exists($dir.$file.'.csv') or filesize($dir.$file.'.csv')==0)
|
|
113 |
ende("Datenfile ($file.csv) nicht im Ordner gefunden oder leer");
|
|
84 | 114 |
|
85 | 115 |
/* Zu diesem Zeitpunkt wurde der Artikel Importiert */ |
86 |
if (!$db->chkcol($table))
|
|
116 |
if (!$db->chkcol($file))
|
|
87 | 117 |
ende("Importspalte konnte nicht angelegt werden"); |
88 | 118 |
|
89 | 119 |
/* first check all elements */ |
... | ... | |
94 | 124 |
$_test["lagerplatz"]=$_POST["lagerplatz"]; |
95 | 125 |
|
96 | 126 |
/* just print data or insert it, if test is false */ |
97 |
import_parts($db, $file, $trenner, $trennzeichen, $parts, FALSE, !$test, $_POST["show"],$_POST); |
|
127 |
import_parts($db, $dir.$file, $trenner, $trennzeichen, $parts, FALSE, !$test, $_POST["show"],$_POST);
|
|
98 | 128 |
|
99 | 129 |
} else { |
100 | 130 |
$bugrus=getAllBG($db); |
... | ... | |
131 | 161 |
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr> |
132 | 162 |
<tr><td>Textupdate</td><td><input type="checkbox" name="TextUpd" value="1">ja</td></tr> |
133 | 163 |
<tr><td>Warengruppen<br>verbinder</td><td><input type="text" name="wgtrenner" value="!" size="3"></td></tr> |
134 |
<tr><td>Shopartikel,<br>falls Feld leer</td><td><input type="radio" name="shop" value="t">ja <input type="radio" name="shop" value="f" checked>nein</td></tr>
|
|
164 |
<tr><td>Shopartikel<br />falls nicht übergeben</td><td><input type="radio" name="shop" value="t">ja <input type="radio" name="shop" value="f" checked>nein</td></tr>
|
|
135 | 165 |
<tr><td>Art</td><td><input type="Radio" name="ware" value="W" checked>Ware |
136 | 166 |
<input type="Radio" name="ware" value="D">Dienstleistung |
137 | 167 |
<input type="Radio" name="ware" value="G">gemischt (Spalte 'art' vorhanden)</td></tr> |
... | ... | |
145 | 175 |
<input type="radio" name="bugrufix" value="2">für Artikel ohne passende Bugru |
146 | 176 |
</td></tr> |
147 | 177 |
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr> |
178 |
<tr><td>Verwendete<br />Zeichecodierung</td><td> |
|
179 |
<select name="encoding"> |
|
180 |
<option value="auto">Automatisch (versuchen)</option> |
|
181 |
<option value="UTF-8">UTF-8</option> |
|
182 |
<option value="ISO-8859-1">ISO-8859-1</option> |
|
183 |
<option value="ISO-8859-15">ISO-8859-15</option> |
|
184 |
<option value="Windows-1252">Windows-1252</option> |
|
185 |
<option value="ASCII">ASCII</option> |
|
186 |
</select> |
|
187 |
</td></tr> |
|
148 | 188 |
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr> |
149 | 189 |
</table> |
150 | 190 |
</form> |
lxo-import/parts_import.php | ||
---|---|---|
1 |
<? |
|
1 |
<?php
|
|
2 | 2 |
//Henry Margies <h.margies@maxina.de> |
3 | 3 |
//Holger Lindemann <hli@lx-system.de> |
4 | 4 |
|
... | ... | |
210 | 210 |
$parts_fld = array_keys($fields); |
211 | 211 |
|
212 | 212 |
/* open csv file */ |
213 |
$f=fopen("$file","r");
|
|
213 |
$f=fopen($file.'.csv',"r");
|
|
214 | 214 |
|
215 | 215 |
/* |
216 | 216 |
* read first line with table descriptions |
... | ... | |
222 | 222 |
show("weight"); show("image"); show("partsgroup_id"); |
223 | 223 |
show("bg"); show("income_accno"); show("expense_accno"); |
224 | 224 |
show("inventory_accno"); show("microfiche");show("drawing");show("rop"); |
225 |
show("assembly");show("makemodel");show("shop"); show("");
|
|
225 |
show("assembly");show("makemodel"); show("shop"); show("");
|
|
226 | 226 |
show("</tr>\n",false); |
227 | 227 |
} |
228 | 228 |
|
... | ... | |
250 | 250 |
while ( ($zeile=fgetcsv($f,120000,$trenner)) != FALSE) { |
251 | 251 |
$m++; /* increase line */ |
252 | 252 |
$unit=false; |
253 |
|
|
254 | 253 |
unset($pgroup); |
254 |
unset($partsgroup_id); |
|
255 | 255 |
unset($notes); |
256 | 256 |
unset($rop); |
257 | 257 |
unset($weight); |
... | ... | |
274 | 274 |
|
275 | 275 |
/* Langtext zusammenbauen */ |
276 | 276 |
if ($zeile[$fldpos["notes"]]) { |
277 |
$notes = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes"]]); |
|
278 |
$notes = addslashes($notes); |
|
277 |
//Kundenspezifisch: |
|
278 |
//$notes = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes"]]); |
|
279 |
$notes = addslashes($zeile[$fldpos["notes"]]); |
|
280 |
if (Translate) translate($notes); |
|
279 | 281 |
} |
280 | 282 |
if ($zeile[$fldpos["notes1"]]) { |
281 |
$notes1 = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes1"]]); |
|
283 |
//Kundenspezifisch: |
|
284 |
//$notes1 = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes1"]]); |
|
285 |
$notes1 = addslashes($zeile[$fldpos["notes1"]]); |
|
286 |
echo "!".$notes1."!<br>"; |
|
287 |
if (Translate) translate($notes1); |
|
288 |
echo "!".$notes1."!<br>"; |
|
282 | 289 |
if ($notes) { |
283 |
$notes = "\n".addslashes($notes1);
|
|
290 |
$notes .= "\n".$notes1;
|
|
284 | 291 |
} else { |
285 |
$notes = addslashes($notes1);
|
|
292 |
$notes = $notes1;
|
|
286 | 293 |
} |
287 | 294 |
} |
288 | 295 |
|
... | ... | |
294 | 301 |
if ($fldpos["partsgroup4"]>0 and $zeile[$fldpos["partsgroup4"]]) $pgroup[]=$zeile[$fldpos["partsgroup4"]]; |
295 | 302 |
if (count($pgroup)>0) { |
296 | 303 |
$pgname = implode($wgtrenner,$pgroup); |
304 |
if (Translate) translate($pgname); |
|
297 | 305 |
$partsgroup_id = getPartsgroupId($db, $pgname, $insert); |
298 | 306 |
} |
299 | 307 |
|
300 | 308 |
/* sind Hersteller und Modelnummer hinterlegt |
301 | 309 |
wenn ja, erfolgt er insert sp?ter */ |
302 | 310 |
if (!empty($zeile[$fldpos["makemodel"]]) and !$artikel) { |
303 |
$hersteller=suchFirma("vendor",$zeile[$fldpos["makemodel"]]); |
|
311 |
$mm = $zeile[$fldpos["makemodel"]]; |
|
312 |
if (Translate) translate($mm); |
|
313 |
$hersteller=suchFirma("vendor",$mm); |
|
304 | 314 |
$hersteller=$hersteller["cp_cv_id"]; |
305 | 315 |
if (!empty($zeile[$fldpos["model"]])) { |
306 |
$model = $zeile[$fldpos["model"]]; |
|
316 |
$mo = $zeile[$fldpos["model"]]; |
|
317 |
if (Translate) translate($mo); |
|
318 |
$model = $mo; |
|
307 | 319 |
$makemodel = 't'; |
308 | 320 |
} else { |
309 | 321 |
unset($hersteller); |
... | ... | |
378 | 390 |
|
379 | 391 |
$description = preg_replace('/""[^ ]/','"',$zeile[$fldpos["description"]]); |
380 | 392 |
$description = addslashes($description); |
393 |
if (Translate) translate($description); |
|
381 | 394 |
|
382 | 395 |
// rop und weight m?ssen null oder Zahl sein |
383 | 396 |
if ($zeile[$fldpos["rop"]]) $rop = 1 * str_replace(",", ".",$zeile[$fldpos["rop"]]); |
... | ... | |
385 | 398 |
|
386 | 399 |
// Shop-Artikel |
387 | 400 |
if ($zeile[$fldpos["shop"]]) { |
388 |
$shop = ($zeile[$fldpos["shop"]] > 0)?'t':'f';
|
|
401 |
$shop = (strtolower($zeile[$fldpos["shop"]]=='t'))?'t':'f';
|
|
389 | 402 |
} else { |
390 | 403 |
$shop = $maske["shop"]; |
391 | 404 |
} |
392 | 405 |
|
393 | 406 |
// Artikel updaten |
407 |
|
|
394 | 408 |
if (getPartsid($db,trim($zeile[$fldpos["partnumber"]]))) { |
395 | 409 |
/* es gibt die Artikelnummer */ |
396 | 410 |
if ($Update) { |
lxo-import/shiptoB.php | ||
---|---|---|
44 | 44 |
$crm=checkCRM(); |
45 | 45 |
|
46 | 46 |
if ($_POST["ok"] == "Import") { |
47 |
$dir = "../users/"; |
|
48 |
|
|
47 | 49 |
$test=$_POST["test"]; |
48 | 50 |
|
49 | 51 |
$shipto_fld = array_keys($shiptos); |
... | ... | |
54 | 56 |
clearstatcache (); |
55 | 57 |
|
56 | 58 |
$trenner=($_POST["trenner"])?$_POST["trenner"]:","; |
59 |
if ($trenner=="other") { |
|
60 |
$trenner=trim($trennzeichen); |
|
61 |
if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1)); |
|
62 |
}; |
|
57 | 63 |
|
58 | 64 |
if (!empty($_FILES["Datei"]["name"])) { |
59 | 65 |
$file=$_POST["ziel"]; |
60 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file."_shipto.csv")) { |
|
66 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file."_shipto.csv")) {
|
|
61 | 67 |
$file=false; |
62 | 68 |
echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>"; |
63 | 69 |
} |
64 |
} else if (is_file($_POST["ziel"]."_shipto.csv")) { |
|
70 |
} else if (is_file($dir.$_POST["ziel"]."_shipto.csv")) {
|
|
65 | 71 |
$file=$_POST["ziel"]; |
66 | 72 |
} else { |
67 | 73 |
$file=false; |
68 | 74 |
} |
69 | 75 |
if (!$file) ende ("Kein Datenfile"); |
70 | 76 |
|
71 |
if (!file_exists($file."_shipto.csv")) ende($file."_shipto.csv nicht im Ordner gefunden oder leer"); |
|
77 |
if (!file_exists($dir.$file."_shipto.csv")) ende($file."_shipto.csv nicht im Ordner gefunden oder leer");
|
|
72 | 78 |
|
73 | 79 |
$employee=chkUsr($_SESSION["employee"]); |
74 | 80 |
if (!$employee) ende("Benutzer unbekannt"); |
75 | 81 |
|
76 | 82 |
if (!$db->chkcol($file)) ende("Importspalte konnte nicht angelegt werden"); |
83 |
//Zeichencodierung des Servers |
|
84 |
$tmpcode = $db->getServerCode(); |
|
85 |
//Leider sind die Benennungen vom Server anders als von mb_detect_encoding |
|
86 |
if ($tmpcode == "UTF8") { |
|
87 |
define("ServerCode","UTF-8"); |
|
88 |
} else if ($tmpcode == "LATIN9") { |
|
89 |
define("ServerCode","ISO-8859-15"); |
|
90 |
} else if ($tmpcode == "LATIN1") { |
|
91 |
define("ServerCode","ISO-8859-1"); |
|
92 |
} else { |
|
93 |
define("ServerCode",$tmpcode); |
|
94 |
} |
|
95 |
//Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos |
|
96 |
//DB und LxO müssen ja nicht auf der gleichen Maschiene sein. |
|
97 |
if($tmpcode<>$db->getClientCode()) { |
|
98 |
$rc = $db->setClientCode($tmpcode); |
|
99 |
} |
|
100 |
|
|
101 |
// Zeichenkodierung File |
|
102 |
if ($_POST["encoding"] == "auto") { |
|
103 |
define("Auto",true); |
|
104 |
define("Translate",true); |
|
105 |
} else { |
|
106 |
define("Auto",false); |
|
107 |
if ($_POST["encoding"] == ServerCode) { |
|
108 |
define("Translate",false); |
|
109 |
} else { |
|
110 |
define("Translate",true); |
|
111 |
define("FileCode",$_POST["encoding"]); |
|
112 |
} |
|
113 |
} |
|
77 | 114 |
|
78 |
$f=fopen($file."_shipto.csv","r"); |
|
115 |
$f=fopen($dir.$file."_shipto.csv","r");
|
|
79 | 116 |
$zeile=fgetcsv($f,1000,$trenner); |
80 | 117 |
$first=true; |
81 | 118 |
|
... | ... | |
85 | 122 |
} |
86 | 123 |
$j=0; |
87 | 124 |
$n=0; |
88 |
$prenumber=$_POST["prenumber"]; |
|
125 |
//$prenumber=$_POST["prenumber"];
|
|
89 | 126 |
$zeile=fgetcsv($f,1000,$trenner); |
90 | 127 |
|
91 | 128 |
while (!feof($f)){ |
... | ... | |
116 | 153 |
} |
117 | 154 |
if ($in_fld[$i]=="firma") { |
118 | 155 |
if ($id) continue; |
156 |
if (Translate) translate($data); |
|
119 | 157 |
$data=suchFirma($file,$data); |
120 | 158 |
if ($data) { |
121 | 159 |
$id=$data["cp_cv_id"]; |
... | ... | |
127 | 165 |
if ($data==false or empty($data) or !$data) { |
128 | 166 |
$vals.="null,"; |
129 | 167 |
} else { |
130 |
if (in_array($in_fld[$i],array("shiptofax","shiptophone"))) {
|
|
168 |
/*if (in_array($in_fld[$i],array("shiptofax","shiptophone"))) {
|
|
131 | 169 |
$data=$prenumber.$data; |
132 |
} |
|
170 |
} */ |
|
171 |
if (Translate) translate($data); |
|
133 | 172 |
$vals.="'".$data."',"; |
134 | 173 |
// bei jedem gefuellten Datenfeld erhoehen |
135 | 174 |
$val_count++; |
... | ... | |
167 | 206 |
<table> |
168 | 207 |
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr> |
169 | 208 |
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr> |
170 |
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr> |
|
171 |
<tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="10" name="prenumber" value=""></td></tr> |
|
209 |
<tr><td>Trennzeichen</td><td> |
|
210 |
<input type="radio" name="trenner" value=";" checked>Semikolon |
|
211 |
<input type="radio" name="trenner" value=",">Komma |
|
212 |
<input type="radio" name="trenner" value="#9" checked>Tabulator |
|
213 |
<input type="radio" name="trenner" value=" ">Leerzeichen |
|
214 |
<input type="radio" name="trenner" value="other"> |
|
215 |
<input type="text" size="2" name="trennzeichen" value=""> |
|
216 |
</td></tr> |
|
217 |
<!--tr><td>Telefonvorwahl</td><td><input type="text" size="4" maxlength="10" name="prenumber" value=""></td></tr--> |
|
172 | 218 |
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr> |
173 | 219 |
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr> |
220 |
<tr><td>Verwendete<br />Zeichecodierung</td><td> |
|
221 |
<select name="encoding"> |
|
222 |
<option value="auto">Automatisch (versuchen)</option> |
|
223 |
<option value="UTF-8">UTF-8</option> |
|
224 |
<option value="ISO-8859-1">ISO-8859-1</option> |
|
225 |
<option value="ISO-8859-15">ISO-8859-15</option> |
|
226 |
<option value="Windows-1252">Windows-1252</option> |
|
227 |
<option value="ASCII">ASCII</option> |
|
228 |
</select> |
|
229 |
</td></tr> |
|
174 | 230 |
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr> |
175 | 231 |
</table> |
176 | 232 |
</form> |
Auch abrufbar als: Unified diff
Uploadverzeichnis in users (Bug 1343)
Abfrage Server-Zeichencode (Bug 1350)
Trennzeichen in allen File wählbar
Zeichenkonvertierung: (Bug 1036)
Da Web und DB Server nicht auf dem gleichen Server laufen müssen,
muß der Client (php) auf den Server eingestellt werden.
Bei der Datenkonvertierung einen Zeichencode mitgeben oder auf Auto stellen
mb_detect_encoding arbeitet nicht zuverlässig!!! Liefert häufig den ersten zu testenden Code zurück.