X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=lxo-import%2Fblz.php;h=c1f726061df4a12eb1cc536651ec25cf404ce206;hb=ad27efa6a3b7e8feea8497c24acebe5bd501156b;hp=86639be23b631d693fbb6e630272e32292992374;hpb=8468c353d00846c241dd17f9bd3aa9052f7b1cd2;p=kivitendo-erp.git
diff --git a/lxo-import/blz.php b/lxo-import/blz.php
index 86639be23..c1f726061 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.
- }; ?>
+