Revision c25cb462
Von Holger Lindemann vor fast 18 Jahren hinzugefügt
lxo-import/addressB.php | ||
---|---|---|
1 |
<html> |
|
2 |
<LINK REL="stylesheet" HREF="../css/lx-office-erp.css" TYPE="text/css" TITLE="Lx-Office stylesheet"> |
|
3 |
<body> |
|
4 |
<? |
|
5 |
/* |
|
6 |
Kunden- bzw. Lieferantenimport mit Browser nach Lx-Office ERP |
|
7 |
|
|
8 |
Copyright (C) 2005 |
|
9 |
Author: Holger Lindemann |
|
10 |
Email: hli@lx-system.de |
|
11 |
Web: http://lx-system.de |
|
12 |
|
|
13 |
*/ |
|
14 |
|
|
15 |
if ($_GET["login"]) { |
|
16 |
$login=$_GET["login"]; |
|
17 |
} else { |
|
18 |
$login=$_POST["login"]; |
|
19 |
}; |
|
20 |
if ($_POST["ok"]) { |
|
21 |
|
|
22 |
$nun=time(); |
|
23 |
|
|
24 |
require ("import_lib.php"); |
|
25 |
$db=new myDB($login); |
|
26 |
$crm=checkCRM(); |
|
27 |
|
|
28 |
function ende($nr) { |
|
29 |
echo "Abbruch: $nr<br>"; |
|
30 |
echo "Fehlende oder falsche Daten."; |
|
31 |
exit(1); |
|
32 |
} |
|
33 |
|
|
34 |
if ($_POST["ok"]=="Hilfe") { |
|
35 |
echo "Importfelder:<br>"; |
|
36 |
echo "Feldname => Bedeutung<br>"; |
|
37 |
foreach($address as $key=>$val) { |
|
38 |
echo "$key => $val<br>"; |
|
39 |
} |
|
40 |
exit(0); |
|
41 |
}; |
|
42 |
clearstatcache (); |
|
43 |
//print_r($_FILES); |
|
44 |
$test=$_POST["test"]; |
|
45 |
if (!empty($_FILES["Datei"]["name"])) { |
|
46 |
$file=$_POST["ziel"]; |
|
47 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file.".csv")) { |
|
48 |
$file=false; |
|
49 |
echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>"; |
|
50 |
} |
|
51 |
} else if (is_file($_POST["ziel"].".csv")) { |
|
52 |
$file=$_POST["ziel"]; |
|
53 |
} else { |
|
54 |
$file=false; |
|
55 |
} |
|
56 |
|
|
57 |
if (!$file) ende (2); |
|
58 |
|
|
59 |
$trenner=($_POST["trenner"])?$_POST["trenner"]:","; |
|
60 |
//echo "../users/$login.conf"; |
|
61 |
if (!file_exists("../users/$login.conf")) ende(3); |
|
62 |
|
|
63 |
if (!file_exists("$file.csv")) ende(5); |
|
64 |
|
|
65 |
$db=new myDB($login); |
|
66 |
|
|
67 |
if (!$db->chkcol($file)) ende(6); |
|
68 |
|
|
69 |
$employee=chkUsr($login); |
|
70 |
if (!$employee) ende(4); |
|
71 |
|
|
72 |
$kunde_fld = array_keys($address); |
|
73 |
|
|
74 |
$f=fopen("$file.csv","r"); |
|
75 |
$zeile=fgets($f,1200); |
|
76 |
$infld=split($trenner,strtolower($zeile)); |
|
77 |
//echo "$zeile<br>"; |
|
78 |
//print_r($infld); echo "<br>"; |
|
79 |
$first=true; |
|
80 |
$ok=true; |
|
81 |
foreach ($infld as $fld) { |
|
82 |
$fld = strtolower(trim(strtr($fld,array("\""=>"","'"=>"")))); |
|
83 |
if ($fld=="branche" && !$crm) { $in_fld[]=""; continue; }; |
|
84 |
if ($fld=="sw" && !$crm) { $in_fld[]=""; continue; }; |
|
85 |
$in_fld[]=$fld; |
|
86 |
} |
|
87 |
//print_r($in_fld); echo "<br>"; |
|
88 |
$j=0; |
|
89 |
$m=0; |
|
90 |
$zeile=fgetcsv($f,1200,$trenner); |
|
91 |
if ($ok) while (!feof($f)){ |
|
92 |
$i=0; |
|
93 |
//echo "Arbeite an $m "; |
|
94 |
$m++; |
|
95 |
$anrede=""; |
|
96 |
$Matchcode=""; |
|
97 |
$sql="insert into $file "; |
|
98 |
$keys="("; |
|
99 |
$vals=" values ("; |
|
100 |
$number=false; |
|
101 |
foreach($zeile as $data) { |
|
102 |
if (!in_array(trim($in_fld[$i]),$kunde_fld)) { |
|
103 |
if ($in_fld[$i]=="anrede") { $anrede=addslashes(trim($data)); } |
|
104 |
$i++; |
|
105 |
continue; |
|
106 |
}; |
|
107 |
$data=trim($data); |
|
108 |
//$data=htmlentities($data); |
|
109 |
$data=addslashes($data); |
|
110 |
if (trim($in_fld[$i])==$file."number") { // customernumber || vendornumber |
|
111 |
if (empty($data) or !$data) { |
|
112 |
$data=getKdId(); |
|
113 |
$number=true; |
|
114 |
} else { |
|
115 |
$data=chkKdId($data); |
|
116 |
$number=true; |
|
117 |
} |
|
118 |
} else if ($in_fld[$i]=="taxincluded"){ |
|
119 |
$data=strtolower(substr($data,0,1)); |
|
120 |
if ($data!="f" && $data!="t") $data="f"; |
|
121 |
} else if ($in_fld[$i]=="language") { |
|
122 |
$data=strtolower(substr($data,0,2)); |
|
123 |
if (!in_array($data,array("de","en","fr"))) $data=false; |
|
124 |
} |
|
125 |
if ($in_fld[$i]=="matchcode") { |
|
126 |
$matchcode=$data; |
|
127 |
$i++; |
|
128 |
continue; |
|
129 |
} |
|
130 |
|
|
131 |
if ($data==false or empty($data) or !$data) { |
|
132 |
if (in_array($in_fld[$i],array("name"))) { |
|
133 |
$data=$matchcode; |
|
134 |
} |
|
135 |
} |
|
136 |
$keys.=$in_fld[$i].","; |
|
137 |
if ($data==false or empty($data) or !$data) { |
|
138 |
if (in_array($in_fld[$i],array("name"))) { |
|
139 |
$keys="("; |
|
140 |
break; |
|
141 |
} |
|
142 |
$vals.="null,"; |
|
143 |
} else { |
|
144 |
if ($in_fld[$i]=="contact"){ |
|
145 |
if ($anrede) { |
|
146 |
$vals.="'$anrede $data',"; |
|
147 |
} else { |
|
148 |
$vals.="'$data',"; |
|
149 |
} |
|
150 |
} else { |
|
151 |
$vals.="'".$data."',"; |
|
152 |
} |
|
153 |
} |
|
154 |
$i++; |
|
155 |
} |
|
156 |
if (!$number) { |
|
157 |
$keys.=$file."number,"; |
|
158 |
$vals.="'".getKdId()."',"; |
|
159 |
} |
|
160 |
if ($keys<>"(") { |
|
161 |
if ($test) { |
|
162 |
if ($first) { |
|
163 |
echo "<table border='1'>\n"; |
|
164 |
echo "<tr><th>".str_replace(",","</th><th>",substr($keys,1,-1))."</th></tr>\n"; |
|
165 |
$first=false; |
|
166 |
}; |
|
167 |
$vals=str_replace("',","'</td><td>",substr($vals,9,-1)); |
|
168 |
echo "<tr><td>".str_replace("null,","null</td><td>",$vals)."</td></tr>\n"; |
|
169 |
//echo "Import $j<br>\n"; |
|
170 |
flush(); |
|
171 |
} else { |
|
172 |
$sql.=$keys."import)"; |
|
173 |
$sql.=$vals."$nun)"; |
|
174 |
$rc=$db->query($sql); |
|
175 |
if (!$rc) echo "Fehler: ".$vals."<br>"; |
|
176 |
} |
|
177 |
$j++; |
|
178 |
} else { |
|
179 |
$vals=str_replace("',","'</td><td>",substr($vals,9,-1)); |
|
180 |
echo "<tr><td style=\"color:red\">".str_replace("null,","null</td><td style=\"color:red\">",$vals)."</td></tr>\n"; |
|
181 |
flush(); |
|
182 |
} |
|
183 |
$zeile=fgetcsv($f,1200,$trenner); |
|
184 |
} |
|
185 |
fclose($f); |
|
186 |
if ($test) echo "</table>\n ##### = Neue Kunden-/Lieferantennummer\n<br>"; |
|
187 |
echo $j." $file importiert.\n"; |
|
188 |
} else { |
|
189 |
?> |
|
190 |
|
|
191 |
<p class="listtop">Adressimport für die ERP<p> |
|
192 |
<br> |
|
193 |
<form name="import" method="post" enctype="multipart/form-data" action="addressB.php"> |
|
194 |
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"> |
|
195 |
<input type="hidden" name="login" value="<?= $login ?>"> |
|
196 |
<table> |
|
197 |
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr> |
|
198 |
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr> |
|
199 |
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr> |
|
200 |
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr> |
|
201 |
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr> |
|
202 |
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr> |
|
203 |
</table> |
|
204 |
</form> |
|
205 |
<? }; ?> |
lxo-import/contactB.php | ||
---|---|---|
1 |
<html> |
|
2 |
<LINK REL="stylesheet" HREF="../css/lx-office-erp.css" TYPE="text/css" TITLE="Lx-Office stylesheet"> |
|
3 |
<body> |
|
4 |
<? |
|
5 |
/* |
|
6 |
Kontaktimport mit Browser nach Lx-Office ERP |
|
7 |
|
|
8 |
Copyright (C) 2005 |
|
9 |
Author: Holger Lindemann |
|
10 |
Email: hli@lx-system.de |
|
11 |
Web: http://lx-system.de |
|
12 |
|
|
13 |
*/ |
|
14 |
if ($_GET["login"]) { |
|
15 |
$login=$_GET["login"]; |
|
16 |
} else { |
|
17 |
$login=$_POST["login"]; |
|
18 |
}; |
|
19 |
|
|
20 |
require ("import_lib.php"); |
|
21 |
$db=new myDB($login); |
|
22 |
$crm=checkCRM(); |
|
23 |
|
|
24 |
if ($_POST["ok"]) { |
|
25 |
$login=$_POST["login"]; |
|
26 |
$test=$_POST["test"]; |
|
27 |
|
|
28 |
if ($crm) { |
|
29 |
$kunde_fld = array_keys($contactscrm); |
|
30 |
$contact=$contactscrm; |
|
31 |
} else { |
|
32 |
$kunde_fld = array_keys($contacts); |
|
33 |
$contact=$contacts; |
|
34 |
} |
|
35 |
$nun=time(); |
|
36 |
|
|
37 |
function ende($nr) { |
|
38 |
echo "Abbruch: $nr\n"; |
|
39 |
echo "Aufruf: addressS.php [login customer|vendor] [test] | [felder]\n"; |
|
40 |
exit($nr); |
|
41 |
} |
|
42 |
if ($_POST["ok"]=="Hilfe") { |
|
43 |
echo "Importfelder:<br>"; |
|
44 |
echo "Feldname => Bedeutung<br>"; |
|
45 |
foreach($contact as $key=>$val) { |
|
46 |
echo "$key => $val<br>"; |
|
47 |
} |
|
48 |
exit(0); |
|
49 |
}; |
|
50 |
|
|
51 |
clearstatcache (); |
|
52 |
|
|
53 |
$trenner=($_POST["trenner"])?$_POST["trenner"]:","; |
|
54 |
|
|
55 |
if (!empty($_FILES["Datei"]["name"])) { |
|
56 |
$file=$_POST["ziel"]; |
|
57 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file."_contact.csv")) { |
|
58 |
$file=false; |
|
59 |
echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>"; |
|
60 |
} |
|
61 |
} else if (is_file($_POST["ziel"]."_contact.csv")) { |
|
62 |
$file=$_POST["ziel"]; |
|
63 |
} else { |
|
64 |
$file=false; |
|
65 |
} |
|
66 |
|
|
67 |
if (!$file) ende (2); |
|
68 |
|
|
69 |
if (!file_exists($file."_contact.csv")) ende(5); |
|
70 |
|
|
71 |
if (!file_exists("../users/$login.conf")) ende(3); |
|
72 |
|
|
73 |
|
|
74 |
$employee=chkUsr($login); |
|
75 |
if (!$employee) ende(4); |
|
76 |
|
|
77 |
if (!$db->chkcol($file)) ende(6); |
|
78 |
|
|
79 |
$f=fopen($file."_contact.csv","r"); |
|
80 |
$zeile=fgets($f,1200); |
|
81 |
$infld=split($trenner,strtolower($zeile)); |
|
82 |
$first=true; |
|
83 |
|
|
84 |
|
|
85 |
foreach ($infld as $fld) { |
|
86 |
$fld = trim(strtr($fld,array("\""=>"","'"=>""))); |
|
87 |
$in_fld[]=$fld; |
|
88 |
} |
|
89 |
$j=0; |
|
90 |
$zeile=fgetcsv($f,1200,$trenner); |
|
91 |
while (!feof($f)){ |
|
92 |
$i=-1; |
|
93 |
$firma=""; |
|
94 |
$name=false; |
|
95 |
$id=false; |
|
96 |
$sql="insert into contacts "; |
|
97 |
$keys="("; |
|
98 |
$vals=" values ("; |
|
99 |
foreach($zeile as $data) { |
|
100 |
$i++; |
|
101 |
if ($in_fld[$i]=="firma") { |
|
102 |
$firma=addslashes(trim($data)); |
|
103 |
continue; |
|
104 |
}; |
|
105 |
if (!in_array($in_fld[$i],$kunde_fld)) { |
|
106 |
continue; |
|
107 |
} |
|
108 |
$data=addslashes(trim($data)); |
|
109 |
if ($in_fld[$i]=="cp_cv_id" && $data) { |
|
110 |
$data=chkKdId($data); |
|
111 |
if ($data) $firma=""; |
|
112 |
if (!$id) $id = $data; |
|
113 |
continue; |
|
114 |
} |
|
115 |
if ($in_fld[$i]==$file."number" && $data) { |
|
116 |
$tmp=getFirma($data,$file); |
|
117 |
if ($tmp) $firma=""; |
|
118 |
if ($id<>$tmp) $id=$tmp; |
|
119 |
continue; |
|
120 |
} |
|
121 |
$keys.=$in_fld[$i].","; |
|
122 |
|
|
123 |
if ($data==false or empty($data) or !$data) { |
|
124 |
$vals.="null,"; |
|
125 |
} else { |
|
126 |
if (in_array($in_fld[$i],array("cp_fax","cp_phone1","cp_phone2"))) { |
|
127 |
$data="0".$data; |
|
128 |
} else if ($in_fld[$i]=="cp_country" && $data) { |
|
129 |
$data=mkland($data); |
|
130 |
} |
|
131 |
if ($in_fld[$i]=="cp_name") $name=true; |
|
132 |
$vals.="'".$data."',"; |
|
133 |
// bei jedem gefuellten Datenfeld erhoehen |
|
134 |
$val_count++; |
|
135 |
} |
|
136 |
} |
|
137 |
if (!$name) { |
|
138 |
$zeile=fgetcsv($f,1200,$trenner); |
|
139 |
continue; |
|
140 |
} |
|
141 |
if ($firma) { |
|
142 |
$data=suchFirma($file,$firma); |
|
143 |
if ($data) { |
|
144 |
$vals.=$data["cp_cv_id"].","; |
|
145 |
$keys.="cp_cv_id,"; |
|
146 |
} |
|
147 |
} else if ($id) { |
|
148 |
$vals.=$id.","; |
|
149 |
$keys.="cp_cv_id,"; |
|
150 |
} |
|
151 |
if ($keys<>"(" && $val_count>2) { |
|
152 |
if ($test) { |
|
153 |
if ($first) { |
|
154 |
echo "<table border='1'>\n"; |
|
155 |
echo "<tr><th>".str_replace(",","</th><th>",substr($keys,1,-1))."</th></tr>\n"; |
|
156 |
$first=false; |
|
157 |
}; |
|
158 |
$vals=str_replace("',","'</td><td>",substr($vals,9,-1)); |
|
159 |
echo "<tr><td>".str_replace("null,","null</td><td>",$vals)."</td></tr>\n"; |
|
160 |
flush(); |
|
161 |
} else { |
|
162 |
$sql.=substr($keys,0,-1).")"; |
|
163 |
$sql.=substr($vals,0,-1).")"; |
|
164 |
$rc=$db->query($sql); |
|
165 |
if (!$rc) echo "Fehler: ".$sql."\n"; |
|
166 |
} |
|
167 |
$j++; |
|
168 |
}; |
|
169 |
$zeile=fgetcsv($f,1200,$trenner); |
|
170 |
} |
|
171 |
fclose($f); |
|
172 |
echo $j." $file importiert.\n";} else { |
|
173 |
?> |
|
174 |
<p class="listtop">Kontakt-Adressimport für die ERP</p> |
|
175 |
<form name="import" method="post" enctype="multipart/form-data" action="contactB.php"> |
|
176 |
<input type="hidden" name="MAX_FILE_SIZE" value="300000"> |
|
177 |
<input type="hidden" name="login" value="<?= $login ?>"> |
|
178 |
<table> |
|
179 |
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr> |
|
180 |
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr> |
|
181 |
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr> |
|
182 |
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr> |
|
183 |
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr> |
|
184 |
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr> |
|
185 |
</table> |
|
186 |
</form> |
|
187 |
<? }; ?> |
lxo-import/import_lib.php | ||
---|---|---|
1 |
<? |
|
2 |
/* |
|
3 |
Funktionsbibliothek für den Datenimport in Lx-Office ERP |
|
4 |
|
|
5 |
Copyright (C) 2005 |
|
6 |
Author: Holger Lindemann |
|
7 |
Email: hli@lx-system.de |
|
8 |
Web: http://lx-system.de |
|
9 |
|
|
10 |
*/ |
|
11 |
|
|
12 |
require_once "DB.php"; |
|
13 |
|
|
14 |
$address = array( |
|
15 |
"name" => "Firmenname", |
|
16 |
"department_1" => "Abteilung", |
|
17 |
"department_2" => "Abteilung", |
|
18 |
"street" => "Strasse + Nr", |
|
19 |
"zipcode" => "Plz", |
|
20 |
"city" => "Ort", |
|
21 |
"country" => "Land", |
|
22 |
"contact" => "Ansprechpartner", |
|
23 |
"phone" => "Telefon", |
|
24 |
"fax" => "Fax", |
|
25 |
"homepage" => "Homepage", |
|
26 |
"email" => "eMail", |
|
27 |
"notes" => "Bemerkungen", |
|
28 |
"discount" => "Rabatt (nn.nn)", |
|
29 |
"taxincluded" => "incl. Steuer? (t/f)", |
|
30 |
"terms" => "Zahlungsziel (Tage)", |
|
31 |
"customernumber" => "Kundennummer", |
|
32 |
"vendornumber" => "Lieferantennummer", |
|
33 |
"taxnumber" => "Steuernummer", |
|
34 |
"account_number" => "Kontonummer", |
|
35 |
"bank_code" => "Bankleitzahl", |
|
36 |
"bank" => "Bankname", |
|
37 |
"branche" => "Branche", |
|
38 |
"language" => "Sprache (de,en,fr)", |
|
39 |
"sw" => "Stichwort", |
|
40 |
"creditlimit" => "Kreditlimit (nnnnnn.nn)", |
|
41 |
"hierarchie" => "Hierarchie", |
|
42 |
"potenzial" => "Potenzial", |
|
43 |
"ar" => "Debitorenkonto", |
|
44 |
"ap" => "Kreditorenkonto", |
|
45 |
"matchcode" => "Matchcode", |
|
46 |
"customernumber2" => "Kundennummer 2"); |
|
47 |
|
|
48 |
$shiptos = array( |
|
49 |
"shiptoname" => "Firmenname", |
|
50 |
"shiptodepartment_1" => "Abteilung", |
|
51 |
"shiptodepartment_2" => "Abteilung", |
|
52 |
"shiptostreet" => "Strasse + Nr", |
|
53 |
"shiptozipcode" => "Plz", |
|
54 |
"shiptocity" => "Ort", |
|
55 |
"shiptocountry" => "Land", |
|
56 |
"shiptocontact" => "Ansprechpartner", |
|
57 |
"shiptophone" => "Telefon", |
|
58 |
"shiptofax" => "Fax", |
|
59 |
"shiptoemail" => "eMail", |
|
60 |
"customernumber" => "Kundennummer", |
|
61 |
"vendornumber" => "Lieferantennummer"); |
|
62 |
|
|
63 |
$parts = array( |
|
64 |
"partnumber" => "Artikelnummer", |
|
65 |
"description" => "Artikeltext", |
|
66 |
"unit" => "Einheit", |
|
67 |
"weight" => "Gewicht (kg)", |
|
68 |
"onhand" => "Lagerbestand", |
|
69 |
"notes" => "Beschreibung", |
|
70 |
"makemodel" => "Hersteller", |
|
71 |
"model" => "Modellbezeichnung", |
|
72 |
"income_accno_id" => "Erlöskonto", |
|
73 |
"expense_accno_id" => "Konto Umsatzkosten", |
|
74 |
"bin" => "Lagerort", |
|
75 |
"image" => "Pfad/Dateiname", |
|
76 |
"drawing" => "Pfad/Dateiname", |
|
77 |
"microfiche" => "Pfad/Dateiname", |
|
78 |
"partsgroup_id" => "Name Warengruppe", |
|
79 |
"listprice" => "Listenpreis", |
|
80 |
"sellprice" => "Verkaufspreis", |
|
81 |
"lastcost" => "letzter EK", |
|
82 |
"art" => "Ware/Dienstleistung (*/d)"); |
|
83 |
|
|
84 |
$contactscrm = array( |
|
85 |
"customernumber" => "Kundennummer", |
|
86 |
"vendornumber" => "Lieferantennummer", |
|
87 |
"cp_cv_id" => "FirmenID in der db", |
|
88 |
"firma" => "Firmenname", |
|
89 |
"cp_greeting" => "Anrede", |
|
90 |
"cp_title" => "Titel", |
|
91 |
"cp_givenname" => "Vorname", |
|
92 |
"cp_greeting" => "Anrede", |
|
93 |
"cp_name" => "Nachname", |
|
94 |
"cp_email" => "eMail", |
|
95 |
"cp_phone1" => "Telefon 1", |
|
96 |
"cp_phone2" => "Telefon 2", |
|
97 |
"cp_street" => "Strasse", |
|
98 |
"cp_zipcode" => "PLZ", |
|
99 |
"cp_city" => "Ort", |
|
100 |
"cp_notes" => "Bemerkungen", |
|
101 |
"cp_country" => "Land", |
|
102 |
"cp_stichwort1" => "Stichwort(e)", |
|
103 |
"katalog" => "Katalog", |
|
104 |
"inhaber" => "Inhaber", |
|
105 |
"contact_id" => "Kontakt ID" |
|
106 |
); |
|
107 |
|
|
108 |
$contacts = array( |
|
109 |
"customernumber" => "Kundennummer", |
|
110 |
"vendornumber" => "Lieferantennummer", |
|
111 |
"cp_cv_id" => "FirmenID in der db", |
|
112 |
"firma" => "Firmenname", |
|
113 |
"cp_greeting" => "Anrede", |
|
114 |
"cp_title" => "Titel", |
|
115 |
"cp_givenname" => "Vorname", |
|
116 |
"cp_greeting" => "Anrede", |
|
117 |
"cp_name" => "Nachname", |
|
118 |
"cp_email" => "eMail", |
|
119 |
"cp_phone1" => "Telefon 1", |
|
120 |
"cp_phone2" => "Telefon 2", |
|
121 |
"katalog" => "Katalog", |
|
122 |
"inhaber" => "Inhaber", |
|
123 |
"contact_id" => "Kontakt ID" |
|
124 |
); |
|
125 |
|
|
126 |
function checkCRM() { |
|
127 |
global $db; |
|
128 |
$sql="select * from crm"; |
|
129 |
$rs=$db->getAll($sql); |
|
130 |
if ($rs) { |
|
131 |
return true; |
|
132 |
} else { |
|
133 |
return false; |
|
134 |
} |
|
135 |
} |
|
136 |
|
|
137 |
function chkUsr($usr) { |
|
138 |
// ist es ein gültiger ERP-Benutzer? Er muß mindestens 1 x angemeldet gewesen sein. |
|
139 |
global $db; |
|
140 |
$sql="select * from employee where login = '$usr'"; |
|
141 |
$rs=$db->getAll($sql); |
|
142 |
if ($rs[0]["id"]) { return $rs[0]["id"]; } |
|
143 |
else { return false; }; |
|
144 |
} |
|
145 |
|
|
146 |
function getKdId() { |
|
147 |
// die nächste freie Kunden-/Lieferantennummer holen |
|
148 |
global $db,$file,$test; |
|
149 |
if ($test) { return "#####"; } |
|
150 |
$sql1="select * from defaults"; |
|
151 |
$sql2="update defaults set ".$file."number = '%s'"; |
|
152 |
$db->lock(); |
|
153 |
$rs=$db->getAll($sql1); |
|
154 |
$nr=$rs[0][$file."number"]; |
|
155 |
preg_match("/^([^0-9]*)([0-9]+)/",$nr,$hits); |
|
156 |
if ($hits[2]) { $nr=$hits[2]+1; $nnr=$hits[1].$nr; } |
|
157 |
else { $nr=$hits[1]+1; $nnr=$nr; }; |
|
158 |
$rc=$db->query(sprintf($sql2,$nnr)); |
|
159 |
if ($rc) { |
|
160 |
$db->commit(); |
|
161 |
return $nnr; |
|
162 |
} else { |
|
163 |
$db->rollback(); |
|
164 |
return false; |
|
165 |
}; |
|
166 |
} |
|
167 |
|
|
168 |
function chkKdId($data) { |
|
169 |
// gibt es die Nummer schon? |
|
170 |
global $db,$file,$test; |
|
171 |
$sql="select * from $file where ".$file."number = '$data'"; |
|
172 |
$rs=$db->getAll($sql); |
|
173 |
if ($rs[0][$file."number"]==$data) { |
|
174 |
// ja, eine neue holen |
|
175 |
return getKdId(); |
|
176 |
} else { |
|
177 |
return $data; |
|
178 |
} |
|
179 |
} |
|
180 |
|
|
181 |
function getKdRefId($data) { |
|
182 |
// gibt es die Nummer schon? |
|
183 |
global $db,$file,$test; |
|
184 |
if (empty($data) or !$data) { |
|
185 |
return false; |
|
186 |
} |
|
187 |
$sql="select * from $file where ".$file."number = '$data'"; |
|
188 |
$rs=$db->getAll($sql); |
|
189 |
return $rs[0]["id"]; |
|
190 |
} |
|
191 |
|
|
192 |
function suchFirma($tab,$data) { |
|
193 |
// gibt die Firma ? |
|
194 |
global $db; |
|
195 |
if (empty($data) or !$data) { |
|
196 |
return false; |
|
197 |
} |
|
198 |
$data=strtoupper($data); |
|
199 |
$sql="select * from $tab where upper(name) like '%$data%'"; |
|
200 |
$rs=$db->getAll($sql); |
|
201 |
if (!$rs) { |
|
202 |
$org=$data; |
|
203 |
while(strpos($data," ")>0) { |
|
204 |
$data=ereg_replace(" "," ",$data); |
|
205 |
} |
|
206 |
$data=preg_replace("/[^A-Z0-9]/ ",".*",trim($data)); |
|
207 |
$sql="select * from $tab where upper(name) ~ '$data'"; |
|
208 |
$rs=$db->getAll($sql); |
|
209 |
if (count($rs)==1) { |
|
210 |
return array("cp_cv_id"=>$rs[0]["id"],"Firma"=>$rs[0]["name"]); |
|
211 |
} |
|
212 |
return false; |
|
213 |
} else { |
|
214 |
return array("cp_cv_id"=>$rs[0]["id"],"Firma"=>$rs[0]["name"]); |
|
215 |
} |
|
216 |
} |
|
217 |
|
|
218 |
$land=array("DEUTSC"=>"D","FRANKR"=>"F","SPANIE"=>"ES","ITALIE"=>"I","HOLLAN"=>"NL","NIEDER"=>"NL", |
|
219 |
"BELGIE"=>"B","LUXEMB"=>"L","NORWEG"=>"N","FINNLA"=>"","GRIECH"=>"GR","OESTER"=>"A", |
|
220 |
"SCHWEI"=>"CH","SCHWED"=>"S","AUSTRI"=>"A"); |
|
221 |
|
|
222 |
function mkland($data) { |
|
223 |
global $land; |
|
224 |
$data=strtr($data,array("Ö"=>"OE","Ä"=>"AE","Ü"=>"UE","ö"=>"OE","ä"=>"AE","ü"=>"UE","ß"=>"SS")); |
|
225 |
$data=strtoupper(substr($data,0,6)); |
|
226 |
$cntr=$land[$data]; |
|
227 |
return (strlen($cntr)>0)?$cntr:substr($data,0,3); |
|
228 |
} |
|
229 |
|
|
230 |
//Suche Nach Kunden-/Lieferantenummer |
|
231 |
function getFirma($nummer,$tabelle) { |
|
232 |
global $db; |
|
233 |
$nummer=strtoupper($nummer); |
|
234 |
$sql="select id from $tabelle where upper(".$tabelle."number) = '$nummer'"; |
|
235 |
$rs=$db->getAll($sql); |
|
236 |
if (!$rs) { |
|
237 |
$nr=ereg_replace(" ","%",$nummer); |
|
238 |
$sql="select id,".$tabelle."number from $tabelle where upper(".$tabelle."number) like '$nr'"; |
|
239 |
$rs=$db->getAll($sql); |
|
240 |
if ($rs) { |
|
241 |
$nr=ereg_replace(" ","",$nummer); |
|
242 |
foreach ($rs as $row) { |
|
243 |
$tmp=ereg_replace(" ","",$row[$tabelle."number"]); |
|
244 |
if ($tmp==$nr) return $row["id"]; |
|
245 |
} |
|
246 |
} else { |
|
247 |
return false; |
|
248 |
} |
|
249 |
} else { |
|
250 |
return $rs[0]["id"]; |
|
251 |
} |
|
252 |
} |
|
253 |
|
|
254 |
class myDB extends DB { |
|
255 |
// Datenbankklasse |
|
256 |
|
|
257 |
var $rc = false; |
|
258 |
var $showErr = false; |
|
259 |
var $db = false; |
|
260 |
var $debug = false; |
|
261 |
|
|
262 |
/**************************************************** |
|
263 |
* uudecode |
|
264 |
* in: string |
|
265 |
* out: string |
|
266 |
* dekodiert Perl-UU-kodierte Passwort-Strings |
|
267 |
* http://de3.php.net/base64_decode (bug #171) |
|
268 |
*****************************************************/ |
|
269 |
function uudecode($encode) { |
|
270 |
$b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
|
271 |
|
|
272 |
$encode = preg_replace("/^./m","",$encode); |
|
273 |
$encode = preg_replace("/\n/m","",$encode); |
|
274 |
for($i=0; $i<strlen($encode); $i++) { |
|
275 |
if ($encode[$i] == '') |
|
276 |
$encode[$i] = ' '; |
|
277 |
$encode[$i] = $b64chars[ord($encode[$i])-32]; |
|
278 |
} |
|
279 |
|
|
280 |
while(strlen($encode) % 4) |
|
281 |
$encode .= "="; |
|
282 |
|
|
283 |
return base64_decode($encode); |
|
284 |
} |
|
285 |
|
|
286 |
function dbFehler($sql,$err) { |
|
287 |
if ($this->showErr) |
|
288 |
echo "$sql : $err\n"; |
|
289 |
} |
|
290 |
|
|
291 |
function showDebug($sql) { |
|
292 |
echo $sql."\n"; |
|
293 |
if ($this->debug==2) { |
|
294 |
print_r($this->rc); |
|
295 |
}; |
|
296 |
} |
|
297 |
|
|
298 |
function myDB($usr) { |
|
299 |
// Datenbankparameter des ERP-Users benutzen. |
|
300 |
$tmp = file_get_contents("../users/$usr.conf"); |
|
301 |
preg_match("/dbname => '(.+)'/",$tmp,$hits); |
|
302 |
$dbname=$hits[1]; |
|
303 |
preg_match("/dbpasswd => '(.+)'/",$tmp,$hits); |
|
304 |
if ($hits[1]) { |
|
305 |
$dbpasswd=$this->uudecode($hits[1]); |
|
306 |
} else { |
|
307 |
$dbpasswd=""; |
|
308 |
}; |
|
309 |
preg_match("/dbuser => '(.+)'/",$tmp,$hits); |
|
310 |
$dbuser=$hits[1]; |
|
311 |
preg_match("/dbhost => '(.+)'/",$tmp,$hits); |
|
312 |
$dbhost=$hits[1]; |
|
313 |
if (!$dbhost) $dbhost="localhost"; |
|
314 |
if ($dbpasswd) { |
|
315 |
$dns=$dbuser.":".$dbpasswd."@".$dbhost."/".$dbname; |
|
316 |
} else { |
|
317 |
$dns=$dbuser."@".$dbhost."/".$dbname; |
|
318 |
}; |
|
319 |
$dns="pgsql://".$dns; |
|
320 |
$this->db=DB::connect($dns); |
|
321 |
if (!$this->db) DB::dbFehler("oh oh oh",$this->db->getDebugInfo()); |
|
322 |
if (DB::isError($this->db)) { |
|
323 |
$this->dbFehler("Connect",$this->db->getDebugInfo()); |
|
324 |
die ($this->db->getDebugInfo()); |
|
325 |
} |
|
326 |
return $this->db; |
|
327 |
} |
|
328 |
|
|
329 |
function query($sql) { |
|
330 |
$this->rc=@$this->db->query($sql); |
|
331 |
if ($this->debug) $this->showDebug($sql); |
|
332 |
if(DB::isError($this->rc)) { |
|
333 |
$this->dbFehler($sql,$this->rc->getMessage()); |
|
334 |
return false; |
|
335 |
} else { |
|
336 |
return $this->rc; |
|
337 |
} |
|
338 |
} |
|
339 |
function getAll($sql) { |
|
340 |
$this->rc=@$this->db->getAll($sql,DB_FETCHMODE_ASSOC); |
|
341 |
if ($this->debug) $this->showDebug($sql); |
|
342 |
if(DB::isError($this->rc)) { |
|
343 |
$this->dbFehler($sql,$this->rc->getMessage()); |
|
344 |
return false; |
|
345 |
} else { |
|
346 |
return $this->rc; |
|
347 |
} |
|
348 |
} |
|
349 |
|
|
350 |
function lock() { |
|
351 |
$this->query("BEGIN"); |
|
352 |
} |
|
353 |
function commit() { |
|
354 |
$this->query("COMMIT"); |
|
355 |
} |
|
356 |
function rollback() { |
|
357 |
$this->query("ROLLBACK"); |
|
358 |
} |
|
359 |
function chkcol($tbl) { |
|
360 |
// gibt es die Spalte import schon? |
|
361 |
$rc=$this->db->query("select import from $tbl limit 1"); |
|
362 |
if(DB::isError($rc)) { |
|
363 |
$rc=$this->db->query("alter table $tbl add column import int4"); |
|
364 |
if(DB::isError($rc)) { return false; } |
|
365 |
else { return true; } |
|
366 |
|
|
367 |
} else { return true; }; |
|
368 |
} |
|
369 |
} |
|
370 |
|
|
371 |
?> |
lxo-import/shiptoB.php | ||
---|---|---|
1 |
<html> |
|
2 |
<LINK REL="stylesheet" HREF="../css/lx-office-erp.css" TYPE="text/css" TITLE="Lx-Office stylesheet"> |
|
3 |
<body> |
|
4 |
<? |
|
5 |
/* |
|
6 |
Lieferanschriftimport mit Browser nach Lx-Office ERP |
|
7 |
|
|
8 |
Copyright (C) 2005 |
|
9 |
Author: Philip Reetz |
|
10 |
Email: p.reetz@linet-services.de |
|
11 |
Web: http://www.linet-services.de |
|
12 |
|
|
13 |
*/ |
|
14 |
if ($_GET["login"]) { |
|
15 |
$login=$_GET["login"]; |
|
16 |
} else { |
|
17 |
$login=$_POST["login"]; |
|
18 |
}; |
|
19 |
|
|
20 |
require ("import_lib.php"); |
|
21 |
$db=new myDB($login); |
|
22 |
$crm=checkCRM(); |
|
23 |
|
|
24 |
if ($_POST["ok"]) { |
|
25 |
$login=$_POST["login"]; |
|
26 |
$test=$_POST["test"]; |
|
27 |
|
|
28 |
|
|
29 |
$shipto_fld = array_keys($shiptos); |
|
30 |
$shipto=$shiptos; |
|
31 |
|
|
32 |
$nun=time(); |
|
33 |
|
|
34 |
function ende($nr) { |
|
35 |
echo "Abbruch: $nr\n"; |
|
36 |
echo "Aufruf: shiptoB.php [login customer|vendor] [test] | [felder]\n"; |
|
37 |
exit($nr); |
|
38 |
} |
|
39 |
if ($_POST["ok"]=="Hilfe") { |
|
40 |
echo "Importfelder:<br>"; |
|
41 |
echo "Feldname => Bedeutung<br>"; |
|
42 |
foreach($contact as $key=>$val) { |
|
43 |
echo "$key => $val<br>"; |
|
44 |
} |
|
45 |
exit(0); |
|
46 |
}; |
|
47 |
|
|
48 |
clearstatcache (); |
|
49 |
|
|
50 |
$trenner=($_POST["trenner"])?$_POST["trenner"]:","; |
|
51 |
|
|
52 |
if (!empty($_FILES["Datei"]["name"])) { |
|
53 |
$file=$_POST["ziel"]; |
|
54 |
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file."_shipto.csv")) { |
|
55 |
$file=false; |
|
56 |
echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>"; |
|
57 |
} |
|
58 |
} else if (is_file($_POST["ziel"]."_shipto.csv")) { |
|
59 |
$file=$_POST["ziel"]; |
|
60 |
} else { |
|
61 |
$file=false; |
|
62 |
} |
|
63 |
|
|
64 |
if (!$file) ende (2); |
|
65 |
|
|
66 |
if (!file_exists($file."_shipto.csv")) ende(5); |
|
67 |
|
|
68 |
if (!file_exists("../users/$login.conf")) ende(3); |
|
69 |
|
|
70 |
|
|
71 |
$employee=chkUsr($login); |
|
72 |
if (!$employee) ende(4); |
|
73 |
|
|
74 |
if (!$db->chkcol($file)) ende(6); |
|
75 |
|
|
76 |
$f=fopen($file."_shipto.csv","r"); |
|
77 |
$zeile=fgets($f,1000); |
|
78 |
$infld=split($trenner,strtolower($zeile)); |
|
79 |
$first=true; |
|
80 |
|
|
81 |
|
|
82 |
foreach ($infld as $fld) { |
|
83 |
$fld = trim(strtr($fld,array("\""=>"","'"=>""))); |
|
84 |
$in_fld[]=$fld; |
|
85 |
} |
|
86 |
$j=0; |
|
87 |
$zeile=fgetcsv($f,1000,$trenner); |
|
88 |
while (!feof($f)){ |
|
89 |
$i=-1; |
|
90 |
$firma=""; |
|
91 |
$name=false; |
|
92 |
$id=false; |
|
93 |
$sql="insert into shipto "; |
|
94 |
$keys="("; |
|
95 |
$vals=" values ("; |
|
96 |
foreach($zeile as $data) { |
|
97 |
$i++; |
|
98 |
if ($in_fld[$i]=="firma") { |
|
99 |
$firma=addslashes(trim($data)); |
|
100 |
continue; |
|
101 |
}; |
|
102 |
if (!in_array($in_fld[$i],$shipto_fld)) { |
|
103 |
continue; |
|
104 |
} |
|
105 |
$data=addslashes(trim($data)); |
|
106 |
if ($in_fld[$i]=="trans_id" && $data) { |
|
107 |
$data=chkKdId($data); |
|
108 |
if ($data) $firma=""; |
|
109 |
if (!$id) $id = $data; |
|
110 |
continue; |
|
111 |
} |
|
112 |
if ($in_fld[$i]==$file."number" && $data) { |
|
113 |
$tmp=getFirma($data,$file); |
|
114 |
if ($tmp) $firma=""; |
|
115 |
if ($id<>$tmp) $id=$tmp; |
|
116 |
continue; |
|
117 |
} |
|
118 |
$keys.=$in_fld[$i].","; |
|
119 |
|
|
120 |
if ($data==false or empty($data) or !$data) { |
|
121 |
$vals.="null,"; |
|
122 |
} else { |
|
123 |
if (in_array($in_fld[$i],array("cp_fax","cp_phone1","cp_phone2"))) { |
|
124 |
$data="0".$data; |
|
125 |
} else if ($in_fld[$i]=="cp_country" && $data) { |
|
126 |
$data=mkland($data); |
|
127 |
} |
|
128 |
if ($in_fld[$i]=="cp_name") $name=true; |
|
129 |
$vals.="'".$data."',"; |
|
130 |
// bei jedem gefuellten Datenfeld erhoehen |
|
131 |
$val_count++; |
|
132 |
} |
|
133 |
} |
|
134 |
// if (!$name) { |
|
135 |
// $zeile=fgetcsv($f,1000,$trenner); |
|
136 |
// continue; |
|
137 |
// } |
|
138 |
if ($firma) { |
|
139 |
$data=suchFirma($file,$firma); |
|
140 |
if ($data) { |
|
141 |
$vals.=$data["trans_id"].","; |
|
142 |
$keys.="trans_id,"; |
|
143 |
} |
|
144 |
} else if ($id) { |
|
145 |
$vals.=$id.","; |
|
146 |
$keys.="trans_id,"; |
|
147 |
} |
|
148 |
if ($keys<>"(") { |
|
149 |
if ($test) { |
|
150 |
if ($first) { |
|
151 |
echo "<table border='1'>\n"; |
|
152 |
echo "<tr><th>".str_replace(",","</th><th>",substr($keys,1,-1))."</th></tr>\n"; |
|
153 |
$first=false; |
|
154 |
}; |
|
155 |
$vals=str_replace("',","'</td><td>",substr($vals,9,-1)); |
|
156 |
echo "<tr><td>".str_replace("null,","null</td><td>",$vals)."</td></tr>\n"; |
|
157 |
flush(); |
|
158 |
} else { |
|
159 |
$sql.=substr($keys,0,-1).")"; |
|
160 |
$sql.=substr($vals,0,-1).")"; |
|
161 |
$rc=$db->query($sql); |
|
162 |
if (!$rc) echo "Fehler: ".$sql."\n"; |
|
163 |
} |
|
164 |
$j++; |
|
165 |
}; |
|
166 |
$zeile=fgetcsv($f,1000,$trenner); |
|
167 |
} |
|
168 |
fclose($f); |
|
169 |
echo $j." $file importiert.\n";} else { |
|
170 |
?> |
|
171 |
<p class="listtop">Lieferanschriftimport für die ERP</p> |
|
172 |
<form name="import" method="post" enctype="multipart/form-data" action="shiptoB.php"> |
|
173 |
<input type="hidden" name="MAX_FILE_SIZE" value="300000"> |
|
174 |
<input type="hidden" name="login" value="<?= $login ?>"> |
|
175 |
<table> |
|
176 |
<tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr> |
|
177 |
<tr><td>Zieltabelle</td><td><input type="radio" name="ziel" value="customer" checked>customer <input type="radio" name="ziel" value="vendor">vendor</td></tr> |
|
178 |
<tr><td>Trennzeichen</td><td><input type="text" size="2" maxlength="1" name="trenner" value=";"></td></tr> |
|
179 |
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr> |
|
180 |
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr> |
|
181 |
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr> |
|
182 |
</table> |
|
183 |
</form> |
|
184 |
<? }; ?> |
Auch abrufbar als: Unified diff
CSV-Importscripte für Adressen, Kontakte, Lieferanschriften