X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2FpartsB.php;h=cb9de67635ab33f180076b2ec7a4afa786159dc1;hb=829f6742c99fdf3b3ef78713c3ce1c1266f67d98;hp=961946612a1ae21a67d59a33e41610ca4e3b6d3d;hpb=92d28f856f4dd9eee0b35f30bbf876744b9426aa;p=kivitendo-erp.git diff --git a/lxo-import/partsB.php b/lxo-import/partsB.php index 961946612..cb9de6763 100644 --- a/lxo-import/partsB.php +++ b/lxo-import/partsB.php @@ -1,13 +1,17 @@ + - Holger Lindemann */ +$dir="../users/"; +$gz_bin = "/bin/gzip -df "; +$zip_bin = "/usr/bin/unzip -o -d ".$dir; function ende($txt) { echo "Abbruch: $txt
"; @@ -22,16 +26,51 @@ if (!$_SESSION["db"]) { } require ("import_lib.php"); -if (!anmelden()) ende("Anmeldung fehlgeschlagen."); +if ($_GET["login"]) { + $db = anmelden($_GET["login"],$_GET["passwd"]); +} else { + $db = anmelden(); +} +//if (!$_SESSION["db"]) ende("Anmeldung fehlgeschlagen."); +if (!$db) ende("Anmeldung fehlgeschlagen."); /* get DB instance */ $db=$_SESSION["db"]; //new myDB($login); - - /* just display page or do real import? */ -if ($_POST["ok"]) { +if ($_POST["ok"] || $_GET["cron"]=="1") { require ("parts_import.php"); + //Zeichencodierung des Servers + $tmpcode = $db->getServerCode(); + //Leider sind die Benennungen vom Server anders als von mb_detect_encoding + if ($tmpcode == "UTF8") { + define("ServerCode","UTF-8"); + } else if ($tmpcode == "LATIN9") { + define("ServerCode","ISO-8859-15"); + } else if ($tmpcode == "LATIN1") { + define("ServerCode","ISO-8859-1"); + } else { + define("ServerCode",$tmpcode); + } + //Zeichensatz sollte gleich sein, sonst ist die Datenkonvertierung nutzlos + //DB und LxO müssen ja nicht auf der gleichen Maschine sein. + if($tmpcode<>$db->getClientCode()) { + $rc = $db->setClientCode($tmpcode); + } + + // Zeichenkodierung File + if ($_POST["encoding"] == "auto") { + define("Auto",true); + define("Translate",true); + } else { + define("Auto",false); + if ($_POST["encoding"] == ServerCode) { + define("Translate",false); + } else { + define("Translate",true); + define("FileCode",$_POST["encoding"]); + } + } /* display help */ if ($_POST["ok"]=="Hilfe") { @@ -44,7 +83,7 @@ if ($_POST["ok"]) { echo $header; echo "

Die erste Zeile enthält die Feldnamen der Daten in ihrer richtigen Reihenfolge
"; echo "Geben Sie das Trennzeichen der Datenspalten ein. Steuerzeichen können mit ihrem Dezimalwert "; - echo "geführt von einem "#" eingegebn werden (#11).

"; + echo "geführt von einem "#" eingegebn werden (#11).

"; echo "Wird bei "Art" in der Maske "gemischt" gewählt, muss die Spalte "art" vor der Einheit stehen.

"; echo "Der "sellprice" kann um den eingegeben Wert geändert werden.

"; echo "Bei vorhandenen Artikelnummern (in der db), kann entweder ein Update auf den Preis (und Text) durchgeführt werden oder "; @@ -52,78 +91,110 @@ if ($_POST["ok"]) { echo "Jeder Artikel muß einer Buchungsgruppe zugeordnet werden. "; echo "Dazu muß entweder in der Maske eine Standardbuchungsgruppe gewählt werden
"; echo "oder es wird ein gültiges Konto in 'income_accno_id' und 'expense_accno_id' eingegeben. "; - echo "Das Programm versucht dann eine passende Buchungsgruppe zu finden."; + echo "Das Programm versucht dann eine passende Buchungsgruppe zu finden.
"; + echo "Preisgruppen müssen zunächst angelegt werden. Die Spalten für die Preisgruppen beginnen mit 'pg_' gefolgt vom Preisgruppenname.
"; + echo "Wenn eine Datei users/partshead.csv existiert, wird die erste Zeile aus dieser benutzt um das Format zu bestimmen. Die erste Zeile aus der eigentlichen Importdatei wird dann ignoriert.
"; exit(0); }; clearstatcache (); - $test = $_POST["test"]; - $lager = $_POST["lager"]; - $TextUpd = $_POST["TextUpd"]; - $trenner = ($_POST["trenner"])?$_POST["trenner"]:","; - $trennzeichen = ($_POST["trennzeichen"])?$_POST["trennzeichen"]:""; - $precision = $_POST["precision"]; - $quotation = $_POST["quotation"]; - $quottype = $_POST["quottype"]; - $file = "../users/parts.csv"; - $table = "parts"; - - /* no data? */ - if (empty($_FILES["Datei"]["name"])) - ende ("Kein Datenfile angegeben"); - - /* copy file */ - if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file)) { - ende ("Upload von Datei fehlerhaft.".$_FILES["Datei"]["error"]); - } + $file = "parts"; + + if ($_GET["cron"]==1) { + $Cron = True; + if (file_exists($dir.$file.".zip")) { + exec ($zip_bin.$dir.$file.".zip"); + } else if (file_exists($dir.$file.".gz")) { + exec ($gz_bin.$dir.$file.".csv.gz"); + } else if (!file_exists($dir.$file.".csv")) { + ende($dir.$file.".csv nicht gefunden"); + } + $_POST["trenner"] = "#9"; // Tabulator + $_POST["trennzeichen"] = ";"; // Anderes Trennzeichen + $_POST["dimensionunit"] = "Stck"; // Artikeleinheit + $_POST["serviceunit"] = "Std"; // Dienstleistungseinheit + $_POST["bugru"] = "1600"; // Std-Bugru + $_POST["bugrufix"] = "2"; // Nur wenn keine Passende angegeben + $_POST["shop"] = "f"; // Shopartikel + $_POST["show"] = ""; // Kontrollausgabe + $_POST["test"] = ""; // Testlauf == 1 + $_POST["lager"] = ""; // Nicht gebraucht + $_POST["lagerplatz"] = ""; + $_POST["precision"] = "2"; // Runden auf nn Stellen + $_POST["quotation"] = ""; // Preisaufschlag + $_POST["quottype"] = "P"; // Prozent? + $_POST["wgtrenner"] = "!"; // Trennzeichen der Warengruppen + $_POST["TextUpd"] = "1"; // Textupdate durchführen + $_POST["update"] = "U"; // Bei vorhandenen Nummer updaten + $_POST["ware"] = "W"; // Ist ein Artikel + $_POST["encoding"] = ""; + } else { + + /* no data? */ + if (empty($_FILES["Datei"]["name"])) + ende ("Kein Datenfile angegeben"); + + /* copy file */ + if (substr($_FILES["Datei"]["name"],-2)=="gz") { + if (move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv.gz")) { + echo $gz_bin.$dir.$file.".csv.gz"; + exec ($gz_bin.$dir.$file.".csv.gz"); + } else { + ende ("Upload von Datei fehlerhaft.".$_FILES["Datei"]["error"]); + }; + } else if (substr($_FILES["Datei"]["name"],-3)=="zip") { + if (move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".zip")) { + exec ($zip_bin.$dir.$file.".zip"); + } else { + ende ("Upload von Datei fehlerhaft.".$_FILES["Datei"]["error"]); + }; + } else if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$dir.$file.".csv")) { + ende ("Upload von Datei fehlerhaft.".$_FILES["Datei"]["error"]); + }; + } /* check if file is really there */ - if (!file_exists("$file") or filesize("$file")==0) - ende("Datenfile ($file) nicht im Ordner gefunden oder leer"); + if (!file_exists($dir.$file.'.csv') or filesize($dir.$file.'.csv')==0) + ende("Datenfile ($file.csv) nicht im Ordner gefunden oder leer"); /* Zu diesem Zeitpunkt wurde der Artikel Importiert */ - if (!$db->chkcol($table)) + if (!$db->chkcol($file)) ende("Importspalte konnte nicht angelegt werden"); - /* first check all elements */ - $_test=$_POST; - $_test["precision"]=-1; - $_test["quotation"]=0; - $_test["lager"]=$_POST["lager"]; - $_test["lagerplatz"]=$_POST["lagerplatz"]; - /* just print data or insert it, if test is false */ - import_parts($db, $file, $trenner, $trennzeichen, $parts, FALSE, !$test, $_POST["show"],$_POST); + import_parts($_SESSION["db"], $dir.$file, $parts, FALSE, $_POST); } else { $bugrus=getAllBG($db); + $serviceunit=getAllUnits($db,"service"); + $dimensionunit=getAllUnits($db,"dimension"); ?>

Artikelimport für die ERP


- + - - @@ -131,21 +202,42 @@ if ($_POST["ok"]) { - + + + + +
Trennzeichen - Semikolon - Komma + Semikolon + Komma Tabulator Leerzeichen - - + +
VK-Preis
Nachkomma:
0 - 1 - 2 - 3 - 4 - 5 +
VK-Preis
Nachkomma:
0 + 1 + 2 + 3 + 4 + 5
VK-Preis
Aufschlag:
- % +
VK-Preis
Aufschlag:
+ % Absolut
Vorhandene
Artikelnummer:
Preis update durchführen
mit neuer Nummer einfügen
Testja
Textupdateja
Warengruppen
verbinder
Shopartikel,
falls Feld leer
ja nein
Shopartikel
falls nicht übergeben
ja nein
Eintrag in
Makemodel ist
Lieferantennummer Lieferantenname
auch ohne
Model-Nr.
ja nein
ArtWare   Dienstleistung gemischt (Spalte 'art' vorhanden)
Default Einheiten
+
Default Bugru
- nie
- für alle Artikel verwenden - für Artikel ohne passende Bugru + für alle Artikel verwenden + für Artikel ohne passende Bugru
Daten
Verwendete
Zeichecodierung
+ +
- +