X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2FpartsB.php;h=cb9de67635ab33f180076b2ec7a4afa786159dc1;hb=829f6742c99fdf3b3ef78713c3ce1c1266f67d98;hp=6ca232f30c036ed9406868f4bc2a9d246d423077;hpb=e2edfbacbd62049b7220069f6ce36e76a29da4ec;p=kivitendo-erp.git diff --git a/lxo-import/partsB.php b/lxo-import/partsB.php index 6ca232f30..cb9de6763 100644 --- a/lxo-import/partsB.php +++ b/lxo-import/partsB.php @@ -1,162 +1,243 @@ + - Holger Lindemann */ +$dir="../users/"; +$gz_bin = "/bin/gzip -df "; +$zip_bin = "/usr/bin/unzip -o -d ".$dir; -function ende($nr) { - echo "Abbruch: $nr
"; - echo "Fehlende oder falsche Daten."; - exit(1); +function ende($txt) { + echo "Abbruch: $txt
"; + exit(1); } if (!$_SESSION["db"]) { - $conffile="../config/authentication.pl"; - if (!is_file($conffile)) { - ende(4); - } + $conffile="../config/authentication.pl"; + if (!is_file($conffile)) { + ende("authentication.pl nicht gefunden oder kein Leserecht."); + } } require ("import_lib.php"); -if (!anmelden()) ende(5); +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"]) { - -require ("parts_import.php"); - -/* 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 die Feldnamen der Daten in ihrer richtigen Reihenfolge
"; - echo "Geben Sie das Trennzeichen der Datenspalten ein. Steuerzeichen können mit ihrem Dezimalwert geführt von einem "#" eingegebn werden (#11).

"; - 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 der Artikel mit anderer Artikelnummer eingefügt werden.

"; - 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."; - exit(0); -}; - -clearstatcache (); - -$test = $_POST["test"]; -$TextUpd = $_POST["TextUpd"]; -$trenner = ($_POST["trenner"])?$_POST["trenner"]:","; -$trennzeichen = ($_POST["trennzeichen"])?$_POST["trennzeichen"]:""; -$precision = $_POST["precision"]; -$quotation = $_POST["quotation"]; -$quottype = $_POST["quottype"]; -$file = "parts"; - -/* no data? */ -if (empty($_FILES["Datei"]["name"])) - ende (2); - -/* copy file */ -if (!move_uploaded_file($_FILES["Datei"]["tmp_name"],$file.".csv")) { - echo "Upload von Datei fehlerhaft."; - echo $_FILES["Datei"]["error"], "
"; - ende (2); -} - -/* ??? */ -//if (!chkUsr($login)) -// ende(4); - -/* ??? */ -//if (!file_exists("../users/$login.conf")) -// ende(3); - -/* check if file is really there */ -if (!file_exists("$file.csv")) - ende(3); - -/* ??? */ -if (!$db->chkcol($file)) - ende(6); - - -/* first check all elements */ -echo "Checking data:
"; -$_test=$_POST; -$_test["precision"]=-1; -$_test["quotation"]=0; -//$_test["shop"]="n"; -//$_test["wgtrenner"]="!"; -$err = import_parts($db, $file, $trenner, $trennzeichen, $parts, TRUE, FALSE, FALSE,$_test); -echo "$err Errors found\n"; - - -if ($err!=0) - exit(0); - -/* just print data or insert it, if test is false */ -import_parts($db, $file, $trenner, $trennzeichen, $parts, FALSE, !$test, TRUE,$_POST); +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") { + echo "Importfelder:
"; + echo "Feldname => Bedeutung
"; + foreach($parts as $key=>$val) { + echo "$key => $val
"; + } + $header=implode(";",array_keys($parts)); + 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 "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 "; + echo "der Artikel mit anderer Artikelnummer eingefügt werden.

"; + 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 "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 (); + + $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($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($file)) + ende("Importspalte konnte nicht angelegt werden"); + + /* just print data or insert it, if test is false */ + import_parts($_SESSION["db"], $dir.$file, $parts, FALSE, $_POST); } else { - $bugrus=getAllBG($db); + $bugrus=getAllBG($db); + $serviceunit=getAllUnits($db,"service"); + $dimensionunit=getAllUnits($db,"dimension"); ?>

Artikelimport für die ERP


- + - - + + + mit neuer Nummer einfügen + - + + + + Dienstleistung + gemischt (Spalte 'art' vorhanden) + + + +
Trennzeichen - Semikolon - Komma - Tabulator - Leerzeichen - - + Semikolon + Komma + Tabulator + Leerzeichen + +
VK-Preis
Nachkomma:
0 - 1 - 2 - 3 - 4 - 5 -
VK-Preis
Aufschlag:
- % - Absolut
VK-Preis
Nachkomma:
0 + 1 + 2 + 3 + 4 + 5 +
VK-Preis
Aufschlag:
+ % + Absolut
Vorhandene
Artikelnummer:
Preis update durchführen
- mit neuer Nummer einfügen
Kontollausgabeja
Testja
Textupdateja
Warengruppen
verbinder
Shopartikelja 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 -
Daten
Verwendete
Zeichecodierung
+ +
- +