Lager
[kivitendo-erp.git] / lxo-import / blz.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 BLZimport mit Browser nach Lx-Office ERP
7 Holger Lindemann <hli@lx-system.de>
8 */
9
10 if ($_POST) {
11
12 function ende($nr) {
13         echo "Abbruch: $nr<br>";
14         echo "Fehlende oder falsche Daten.";
15         exit(1);
16 }
17
18 if (!$_SESSION["db"]) {
19         $conffile="../config/authentication.pl";
20         if (!is_file($conffile)) {
21                 ende(4);
22         }
23 }
24 require ("import_lib.php");
25
26 function l2u($str) {
27         return iconv("ISO-8859-1", "UTF-8",$str);
28 }
29
30 if (!anmelden()) ende(5);
31 /* get DB instance */
32 $db=$_SESSION["db"]; //new myDB($login);
33
34
35 <<<<<<< .mine
36 =======
37 /* display help */
38 if ($_POST["ok"]=="Hilfe") {
39         echo "<br>Die erste Zeile enth&auml;lt keine Feldnamen der Daten.<br>";
40         echo "Die Datenfelder haben eine feste Breite.<br><br>"; 
41         echo "Die Daten k&ouml;nnen hier bezogen werden:<br>";
42         echo "<a http='http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php'>";
43         echo "http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php</a>";
44         exit(0);
45 } else if ($_POST) {
46 >>>>>>> .r3649
47         $test=$_POST["test"];
48
49         clearstatcache ();
50
51         /* no data? */
52         if (empty($_FILES["Datei"]["name"]))
53                 ende (2);
54
55         /* copy file */
56         if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],"blz.txt")) {
57                 print_r($_FILES);
58                 echo $_FILES["Datei"]["tmp_name"];
59                 echo "Upload von Datei fehlerhaft.";
60                 echo $_FILES["Datei"]["error"], "<br>";
61                 ende (2);
62         } 
63
64         /* check if file is really there */
65         if (!file_exists("blz.txt")) 
66                 ende(3);
67
68         $sqlins="INSERT INTO blz_data (blz,fuehrend,bezeichnung,plz,ort,kurzbez,pan,bic,pzbm,nummer,aekz,bl,folgeblz) ";
69         $sqlins.="VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s','%s','%s')";
70         $teststr="<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>\n";
71         $sqldel="delete from blz_data";
72         $ok="true";
73         $cnt=0;
74         $f=fopen("blz.txt","r");
75         if ($test) echo "Testdurchlauf <br><table>\n";
76         $i=0;
77         $start=time();
78         $rs = $db->getAll("SELECT current_setting('server_encoding')");
79         $srvencoding = $rs[0]['current_setting'];
80         $rs = $db->getAll("SELECT current_setting('client_encoding')");
81         $cliencoding = $rs[0]['current_setting'];
82         echo "SRV: $srvencoding - - CLI: $cliencoding<br>";
83         //Datenfile ist immer Latin!!
84         //zwei Möglichkeiten der Zeichenwandlung. Was ist besser??
85         if ($f) {
86                 //Cliententcoding nicht umstellen:
87                 //if (!$test) { $rc=$db->query("BEGIN");};
88                 //Cliententcoding auf Latin:
89                 if (!$test) { $rc=$db->query("BEGIN"); if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'latin-9'"); };
90                 if (!$test) $rc=$db->query($sqldel);
91                 while (($zeile=fgets($f,256)) != FALSE) {
92                         $cnt++;
93                         if (!$test) {
94                                 //Client nicht umgestellt, Zeichen wandeln
95                                 /*$sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5),
96                                                 l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11),
97                                                 substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1),
98                                                 substr($zeile,160,8));*/
99                                 //Client umgestellt + und auch bei nicht UTF-Client:
100                                 $sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5),
101                                                 substr($zeile,72,35),substr($zeile,107,27),substr($zeile,134,5),substr($zeile,139,11),
102                                                 substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1),
103                                                 substr($zeile,160,8));
104 <<<<<<< .mine
105                         if (!$test){
106                                 $rc=$db->query($sql);
107                                  if(DB::isError($rc)) {
108                                         echo $sql."<br><pre>";
109                                         echo $rc->getMessage()."</pre><br>";
110                                         $ok=false;
111                                         break;
112                                 }
113 =======
114                                 $rc=$db->query($sql);
115                                 if ($cnt % 10 == 0) { 
116                                         if ($cnt % 1000 == 0) { $x=time()-$start; echo sprintf("%dsec %6d<br>",$x,$cnt); }
117                                         else if ($cnt % 100 == 0) { echo "!"; }
118                                         else { echo '.'; }
119                                         flush(); 
120                                 }
121                         } else {
122                                 echo sprintf($teststr,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5),
123                                                 l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11),
124                                                 substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1),
125                                                 substr($zeile,160,8));
126                                 $rc=true;
127                         }
128                         if (!$rc) { 
129                                 $ok=false;
130                                 break;
131 >>>>>>> .r3649
132                         }
133                         $i++;
134                 }
135                 if ($ok) {
136                         if (!$test) $rc=$db->query("COMMIT");
137                         echo "<br>$i Daten erfolgreich importierti<br>";
138                         if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'UTF8'");
139                         $stop=time();
140                         echo $stop-$start." Sekunden";
141                 } else {
142                         if (!$test) $rc=$db->query("ROLLBACK");
143                         echo "Fehler in Zeile: ".$i."<br>";
144                         echo $sql."<br>";
145                         ende(6);
146                 }
147         } else {
148                 ende(4);
149         }
150 <<<<<<< .mine
151
152 =======
153         echo "</table>";
154 } else {
155 >>>>>>> .r3649
156 ?>
157 <p class="listtop">BLZ-Import f&uuml;r die ERP<p>
158 <br>Die erste Zeile enth&auml;lt keine Feldnamen der Daten.<br>
159 Die Datenfelder haben eine feste Breite.<br><br>
160 Die Daten k&ouml;nnen hier bezogen werden:<br>
161 <a http='http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php'>
162 http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php</a><br><br>
163 ggf. das File vorher noch auf UTF8 wandeln: iconv -f latin1 -t  utf8 blz.txt -o blz1.txt<br><br>
164 Achtung!! Die bestehenden BLZ-Daten werden zun&auml;chst gel&ouml;scht.
165 <br>
166 <form name="import" method="post" enctype="multipart/form-data" action="blz.php">
167 <input type="hidden" name="MAX_FILE_SIZE" value="20000000">
168 <input type="hidden" name="login" value="<?= $login ?>">
169 <table>
170 <tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr>
171 <tr><td>Daten</td><td><input type="file" name="Datei"></td></tr>
172 <tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr>
173 </table>
174 </form>