RDBO Support.
[kivitendo-erp.git] / 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 <?php
5 /*
6 Lieferanschriftimport mit Browser nach Lx-Office ERP
7
8 Copyright (C) 2005
9 Author: Philip Reetz, Holger Lindemann
10 Email: p.reetz@linet-services.de, hli@lx-system.de
11 Web: http://www.linet-services.de, http://www.lx-system.de
12
13 */
14     require ("import_lib.php");
15
16     function ende($nr) {
17         echo "Abbruch: $nr\n";
18         exit($nr);
19     }
20
21     if ($_POST["ok"]=="Hilfe") {
22         echo "Importfelder:<br>";
23         echo "Feldname => Bedeutung<br>";
24         foreach($shiptos as $key=>$val) {
25             echo "$key => $val<br>";
26         }
27         $header=implode(";",array_keys($shiptos));
28         echo $header;
29         exit(0);
30     };
31
32 if (!$_SESSION["db"]) {
33     $conffile="../config/authentication.pl";
34     if (!is_file($conffile)) {
35         ende("authentication.pl nicht gefunden oder unlesbar");
36     }
37 }
38
39 if (!anmelden()) ende("Anmeldung fehlgeschlagen");
40
41 /* get DB instance */
42 $db=$_SESSION["db"]; //new myDB($login);
43
44 $crm=checkCRM();
45
46 if ($_POST["ok"] == "Import") {
47     $dir = "../users/";
48
49     $test=$_POST["test"];
50     
51     $shipto_fld = array_keys($shiptos);
52     $shipto=$shiptos;
53     
54     $nun=time();
55
56     clearstatcache ();
57
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     };
63
64     if (!empty($_FILES["Datei"]["name"])) { 
65         $file=$_POST["ziel"];
66         if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file."_shipto.csv")) {
67             $file=false;
68             echo "Upload von ".$_FILES["Datei"]["name"]." fehlerhaft. (".$_FILES["Datei"]["error"].")<br>";
69         } 
70     } else if (is_file($dir.$_POST["ziel"]."_shipto.csv")) {
71         $file=$_POST["ziel"];
72     } else {
73         $file=false;
74     } 
75     if (!$file) ende ("Kein Datenfile");
76
77     if (!file_exists($dir.$file."_shipto.csv")) ende($file."_shipto.csv nicht im Ordner gefunden oder leer");
78
79     $employee=chkUsr($_SESSION["employee"]);
80     if (!$employee) ende("Benutzer unbekannt");
81
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     }
114
115     $f=fopen($dir.$file."_shipto.csv","r");
116     $zeile=fgetcsv($f,1000,$trenner);
117     $first=true;
118
119     foreach ($zeile as $fld) {
120         $fld = strtolower(trim(strtr($fld,array("\""=>"","'"=>""))));
121         $in_fld[]=$fld;
122     }
123     $j=0;
124     $n=0;
125     //$prenumber=$_POST["prenumber"];
126     $zeile=fgetcsv($f,1000,$trenner);
127
128     while (!feof($f)){
129         $i=-1;
130         $id=false;
131         $sql="insert into shipto ";
132         $keys="";
133         $vals="";
134         foreach($zeile as $data) {
135             $i++;
136             if (!in_array($in_fld[$i],$shipto_fld)) {
137                 continue;
138             }
139             $data=addslashes(trim($data));
140             if ($in_fld[$i]=="trans_id" && $data) {
141                 $data=chkKdId($data);
142                 if (!$id) $id = $data;
143                 continue;
144             } else  if ($in_fld[$i]=="trans_id") {
145                 continue;
146             }
147             if ($in_fld[$i]==$file."number" && $data) {
148                 $tmp=getFirma($data,$file);
149                 if ($id<>$tmp) $id=$tmp;
150                 continue;
151             } else if ($in_fld[$i]==$file."number") {
152                 continue;
153             }
154             if ($in_fld[$i]=="firma") {
155                 if ($id) continue;
156                 if (Translate) translate($data);
157                 $data=suchFirma($file,$data);
158                 if ($data) {
159                     $id=$data["cp_cv_id"];
160                 }
161                 continue;
162             }
163             $keys.=$in_fld[$i].",";
164             
165             if ($data==false or empty($data) or !$data) {
166                             $vals.="null,";
167             } else {
168                 /*if (in_array($in_fld[$i],array("shiptofax","shiptophone"))) {
169                     $data=$prenumber.$data;
170                 } */
171                 if (Translate) translate($data);
172                 $vals.="'".$data."',";
173                 // bei jedem gefuellten Datenfeld erhoehen
174                 $val_count++;
175             }
176         }
177         if ($keys<>"" && $id) {
178             $vals.=$id.",'CT'";
179             $keys.="trans_id,module";
180             if ($test) {
181                 if ($first) {
182                     echo "<table border='1'>\n";
183                     echo "<tr><th>".str_replace(",","</th><th>",$keys)."</th></tr>\n";
184                     $first=false;
185                 };
186                 echo "<tr><td>".str_replace(",","</td><td>",$vals)."</td></tr>\n";
187                 flush();
188             } else {
189                 $sql.="(".$keys.")";
190                 $sql.="values (".$vals.")";
191                 $rc=$db->query($sql);
192                 if (!$rc) echo "Fehler: ".$sql."\n";
193             }
194             $j++;
195         } 
196         $n++;
197         $zeile=fgetcsv($f,1000,$trenner);
198     }
199     fclose($f);
200     echo "</table>".$j." $file shipto von $n importiert.\n";
201 } else {
202 ?>
203 <p class="listtop">Lieferanschriftimport f&uuml;r die ERP</p>
204 <form name="import" method="post" enctype="multipart/form-data" action="shiptoB.php">
205 <input type="hidden" name="MAX_FILE_SIZE" value="300000">
206 <table>
207 <tr><td></td><td><input type="submit" name="ok" value="Hilfe"></td></tr>
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>
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-->
218 <tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr>
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>
230 <tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr>
231 </table>
232 </form>
233 <?php }; ?>