Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c25cb462

Von Holger Lindemann vor fast 18 Jahren hinzugefügt

  • ID c25cb4622b88c268878dc814d4b8487584315fe7
  • Vorgänger 0fdccb70
  • Nachfolger 1a93df13

CSV-Importscripte für Adressen, Kontakte, Lieferanschriften

Unterschiede anzeigen:

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&uuml;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&uuml;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&uuml;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