X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2Fblz.php;h=85b73664c3400faff226427fdecf81695f50ba6b;hb=9de83d1a34f29dbf2f0ea4f2b4230913461c05db;hp=86639be23b631d693fbb6e630272e32292992374;hpb=8468c353d00846c241dd17f9bd3aa9052f7b1cd2;p=kivitendo-erp.git diff --git a/lxo-import/blz.php b/lxo-import/blz.php index 86639be23..85b73664c 100644 --- a/lxo-import/blz.php +++ b/lxo-import/blz.php @@ -1,39 +1,15 @@ - */ -function ende($nr) { - echo "Abbruch: $nr
"; - echo "Fehlende oder falsche Daten."; - exit(1); -} - -if (!$_SESSION["db"]) { - $conffile="../config/authentication.pl"; - if (!is_file($conffile)) { - ende(4); - } -} -require ("import_lib.php"); - -if (!anmelden()) ende(5); -/* get DB instance */ -$db=$_SESSION["db"]; //new myDB($login); - - /* display help */ if ($_POST["ok"]=="Hilfe") { - echo "Importfelder:
"; - echo "Feldname => Bedeutung
"; - foreach($parts as $key=>$val) { - echo "$key => $val
"; - } echo "
Die erste Zeile enthält keine Feldnamen der Daten.
"; echo "Die Datenfelder haben eine feste Breite.

"; echo "Die Daten können hier bezogen werden:
"; @@ -41,6 +17,30 @@ if ($_POST["ok"]=="Hilfe") { echo "http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php"; exit(0); } else if ($_POST) { + function ende($nr) { + echo "Abbruch: $nr
"; + echo "Fehlende oder falsche Daten."; + exit(1); + } + + function l2u($str) { + return iconv("ISO-8859-1", "UTF-8",$str); + } + + require ("import_lib.php"); + + if (!$_SESSION["db"]) { + $conffile="../config/authentication.pl"; + if (!is_file($conffile)) { + ende(4); + } + if (!anmelden()) ende(5); + } + + + /* get DB instance */ + $db=$_SESSION["db"]; + $test=$_POST["test"]; clearstatcache (); @@ -51,6 +51,8 @@ if ($_POST["ok"]=="Hilfe") { /* copy file */ if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],"blz.txt")) { + print_r($_FILES); + echo $_FILES["Datei"]["tmp_name"]; echo "Upload von Datei fehlerhaft."; echo $_FILES["Datei"]["error"], "
"; ende (2); @@ -62,22 +64,59 @@ if ($_POST["ok"]=="Hilfe") { $sqlins="INSERT INTO blz_data (blz,fuehrend,bezeichnung,plz,ort,kurzbez,pan,bic,pzbm,nummer,aekz,bl,folgeblz) "; $sqlins.="VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s',%d,'%s','%s','%s')"; - $sqldel="delete from blz"; + $teststr="%s%s%s%s%s%s%s"; + $teststr.="%s%s%d%s%s%s\n"; + $sqldel="delete from blz_data"; $ok="true"; + $cnt=0; $f=fopen("blz.txt","r"); - if ($test) echo "Testdurchlauf
"; + if ($test) echo "Testdurchlauf
\n"; $i=0; + $start=time(); + $rs = $db->getAll("SELECT current_setting('server_encoding')"); + $srvencoding = $rs[0]['current_setting']; + $rs = $db->getAll("SELECT current_setting('client_encoding')"); + $cliencoding = $rs[0]['current_setting']; + echo "SRV: $srvencoding - - CLI: $cliencoding
"; if ($f) { - if (!$test) $rc=$db->query("BEGIN"); + //Cliententcoding auf Latin: + if (!$test) { $rc=$db->query("BEGIN"); if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'latin-9'"); }; if (!$test) $rc=$db->query($sqldel); while (($zeile=fgets($f,256)) != FALSE) { - $sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5), + $cnt++; + if (!$test){ + //Datenfile ist immer Latin!! + //zwei Möglichkeiten der Zeichenwandlung. Was ist besser?? + //Client nicht umgestellt, Zeichen wandeln + /*$sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5), + l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11), + substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), + substr($zeile,160,8));*/ + //Client umgestellt + und auch bei nicht UTF-Client: + $sql=sprintf($sqlins,substr($zeile,0,8),substr($zeile,8,1),substr($zeile,9,58),substr($zeile,67,5), substr($zeile,72,35),substr($zeile,107,27),substr($zeile,134,5),substr($zeile,139,11), substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), substr($zeile,160,8)); - if (!$test) $rc=$db->query($sql); - if ($test) $rc=true; - echo $rc; + $rc=$db->query($sql); + if(DB::isError($rc)) { + echo $sql."
";
+					echo $rc->getMessage()."

"; + $ok=false; + break; + } + if ($cnt % 10 == 0) { + if ($cnt % 1000 == 0) { $x=time()-$start; echo sprintf("%dsec %6d
",$x,$cnt); } + else if ($cnt % 100 == 0) { echo "!"; } + else { echo '.'; } + flush(); + } + } else { + echo sprintf($teststr,substr($zeile,0,8),substr($zeile,8,1),l2u(substr($zeile,9,58)),substr($zeile,67,5), + l2u(substr($zeile,72,35)),l2u(substr($zeile,107,27)),substr($zeile,134,5),substr($zeile,139,11), + substr($zeile,150,2),substr($zeile,152,6),substr($zeile,158,1),substr($zeile,159,1), + substr($zeile,160,8)); + $rc=true; + } if (!$rc) { $ok=false; break; @@ -85,29 +124,39 @@ if ($_POST["ok"]=="Hilfe") { $i++; } if ($ok) { - $rc=$db->query("COMMIT"); - echo "$i Daten erfolgreich importiert"; + if (!$test) $rc=$db->query("COMMIT"); + echo "
$i Daten erfolgreich importierti
"; + if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'UTF8'"); + $stop=time(); + echo $stop-$start." Sekunden"; } else { - $rc=$db->query("ROLLBACK"); + if (!$test) $rc=$db->query("ROLLBACK"); + echo "Fehler in Zeile: ".$i."
"; + echo $sql."
"; ende(6); } } else { ende(4); } + echo "

Fertig. $i Banken importiert."; } else { ?> -

BLZ-Import für die ERP

+
Die erste Zeile enthält keine Feldnamen der Daten.
+Die Datenfelder haben eine feste Breite.

+Die Daten können hier bezogen werden:
+ +http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php

+Das File vorher nicht auf UTF8 wandeln!

Achtung!! Die bestehenden BLZ-Daten werden zunächst gelöscht.

-
Testja
Daten
- +