kivitendo/lxo-import/blz.php @ d8a50dde
8468c353 | Holger Lindemann | <html>
|
||
<LINK REL="stylesheet" HREF="../css/lx-office-erp.css" TYPE="text/css" TITLE="Lx-Office stylesheet">
|
||||
<body>
|
||||
8f1c2b00 | Holger Lindemann | <?php
|
||
8468c353 | Holger Lindemann | /*
|
||
BLZimport mit Browser nach Lx-Office ERP
|
||||
Holger Lindemann <hli@lx-system.de>
|
||||
*/
|
||||
/* display help */
|
||||
if ($_POST["ok"]=="Hilfe") {
|
||||
echo "<br>Die erste Zeile enthält keine Feldnamen der Daten.<br>";
|
||||
echo "Die Datenfelder haben eine feste Breite.<br><br>";
|
||||
echo "Die Daten können hier bezogen werden:<br>";
|
||||
echo "<a http='http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php'>";
|
||||
echo "http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php</a>";
|
||||
exit(0);
|
||||
} else if ($_POST) {
|
||||
f73d3b5e | Holger Lindemann | function ende($nr) {
|
||
echo "Abbruch: $nr<br>";
|
||||
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"];
|
||||
8468c353 | Holger Lindemann | $test=$_POST["test"];
|
||
clearstatcache ();
|
||||
/* no data? */
|
||||
if (empty($_FILES["Datei"]["name"]))
|
||||
ende (2);
|
||||
/* copy file */
|
||||
if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],"blz.txt")) {
|
||||
8f1c2b00 | Holger Lindemann | print_r($_FILES);
|
||
echo $_FILES["Datei"]["tmp_name"];
|
||||
8468c353 | Holger Lindemann | echo "Upload von Datei fehlerhaft.";
|
||
echo $_FILES["Datei"]["error"], "<br>";
|
||||
ende (2);
|
||||
}
|
||||
/* check if file is really there */
|
||||
if (!file_exists("blz.txt"))
|
||||
ende(3);
|
||||
$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')";
|
||||
f73d3b5e | Holger Lindemann | $teststr="<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td>";
|
||
$teststr.="<td>%s</td><td>%s</td><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>\n";
|
||||
24475075 | Holger Lindemann | $sqldel="delete from blz_data";
|
||
8468c353 | Holger Lindemann | $ok="true";
|
||
24475075 | Holger Lindemann | $cnt=0;
|
||
8468c353 | Holger Lindemann | $f=fopen("blz.txt","r");
|
||
24475075 | Holger Lindemann | if ($test) echo "Testdurchlauf <br><table>\n";
|
||
8468c353 | Holger Lindemann | $i=0;
|
||
24475075 | Holger Lindemann | $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<br>";
|
||||
8468c353 | Holger Lindemann | if ($f) {
|
||
24475075 | Holger Lindemann | //Cliententcoding auf Latin:
|
||
if (!$test) { $rc=$db->query("BEGIN"); if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'latin-9'"); };
|
||||
8468c353 | Holger Lindemann | if (!$test) $rc=$db->query($sqldel);
|
||
while (($zeile=fgets($f,256)) != FALSE) {
|
||||
24475075 | Holger Lindemann | $cnt++;
|
||
f73d3b5e | Holger Lindemann | if (!$test){
|
||
//Datenfile ist immer Latin!!
|
||||
//zwei Möglichkeiten der Zeichenwandlung. Was ist besser??
|
||||
24475075 | Holger Lindemann | //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),
|
||||
8468c353 | Holger Lindemann | 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));
|
||||
8f1c2b00 | Holger Lindemann | $rc=$db->query($sql);
|
||
f73d3b5e | Holger Lindemann | if(DB::isError($rc)) {
|
||
echo $sql."<br><pre>";
|
||||
8f1c2b00 | Holger Lindemann | echo $rc->getMessage()."</pre><br>";
|
||
$ok=false;
|
||||
break;
|
||||
}
|
||||
24475075 | Holger Lindemann | if ($cnt % 10 == 0) {
|
||
if ($cnt % 1000 == 0) { $x=time()-$start; echo sprintf("%dsec %6d<br>",$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;
|
||||
}
|
||||
8468c353 | Holger Lindemann | if (!$rc) {
|
||
$ok=false;
|
||||
break;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
if ($ok) {
|
||||
8f1c2b00 | Holger Lindemann | if (!$test) $rc=$db->query("COMMIT");
|
||
24475075 | Holger Lindemann | echo "<br>$i Daten erfolgreich importierti<br>";
|
||
if ($cliencoding=="UTF8") $db->query("SET CLIENT_ENCODING TO 'UTF8'");
|
||||
$stop=time();
|
||||
echo $stop-$start." Sekunden";
|
||||
8468c353 | Holger Lindemann | } else {
|
||
8f1c2b00 | Holger Lindemann | if (!$test) $rc=$db->query("ROLLBACK");
|
||
echo "Fehler in Zeile: ".$i."<br>";
|
||||
echo $sql."<br>";
|
||||
8468c353 | Holger Lindemann | ende(6);
|
||
}
|
||||
} else {
|
||||
ende(4);
|
||||
}
|
||||
f73d3b5e | Holger Lindemann | echo "</table><br>Fertig. $i Banken importiert.";
|
||
8468c353 | Holger Lindemann | } else {
|
||
?>
|
||||
<p class="listtop">BLZ-Import für die ERP<p>
|
||||
8f1c2b00 | Holger Lindemann | <br>Die erste Zeile enthält keine Feldnamen der Daten.<br>
|
||
Die Datenfelder haben eine feste Breite.<br><br>
|
||||
Die Daten können hier bezogen werden:<br>
|
||||
<a http='http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php'>
|
||||
http://www.bundesbank.de/zahlungsverkehr/zahlungsverkehr_bankleitzahlen_download.php</a><br><br>
|
||||
f73d3b5e | Holger Lindemann | Das File vorher <b>nicht</b> auf UTF8 wandeln!<br><br>
|
||
8468c353 | Holger Lindemann | Achtung!! Die bestehenden BLZ-Daten werden zunächst gelöscht.
|
||
<br>
|
||||
<form name="import" method="post" enctype="multipart/form-data" action="blz.php">
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="20000000">
|
||||
29c981ee | Holger Lindemann | <input type="hidden" name="login" value="<?php echo $login ?>">
|
||
8468c353 | Holger Lindemann | <table>
|
||
<tr><td>Test</td><td><input type="checkbox" name="test" value="1">ja</td></tr>
|
||||
<tr><td>Daten</td><td><input type="file" name="Datei"></td></tr>
|
||||
<tr><td></td><td><input type="submit" name="ok" value="Import"></td></tr>
|
||||
</table>
|
||||
</form>
|
||||
f73d3b5e | Holger Lindemann | <?php } ?>
|