Freigabe der Shopschnittstelle für PHPeppershop
authorHolger Lindemann <hli@lx-system.de>
Wed, 20 Feb 2008 13:39:02 +0000 (13:39 +0000)
committerHolger Lindemann <hli@lx-system.de>
Wed, 20 Feb 2008 13:39:02 +0000 (13:39 +0000)
readme.first lesen!

33 files changed:
pepper/c2s.gif [new file with mode: 0644]
pepper/conf.php [new file with mode: 0644]
pepper/confedit.php [new file with mode: 0644]
pepper/diff.php [new file with mode: 0644]
pepper/e2c.gif [new file with mode: 0644]
pepper/e2s.gif [new file with mode: 0644]
pepper/erpexport.php [new file with mode: 0644]
pepper/export_to_erp/export_to_erp.php [new file with mode: 0644]
pepper/export_to_erp/initialize_module.php [new file with mode: 0644]
pepper/export_to_erp/modul_admin_img.gif [new file with mode: 0644]
pepper/handbuch.pdf [new file with mode: 0644]
pepper/menu.ini [new file with mode: 0644]
pepper/pepperexport.php [new file with mode: 0644]
pepper/readme.first [new file with mode: 0644]
pepper/s2e.gif [new file with mode: 0644]
pepper/shopimport_db.php [new file with mode: 0644]
pepper/tmp/070115Jan0043.log [new file with mode: 0644]
pepper/tmp/070115Jan0529.log [new file with mode: 0644]
pepper/tmp/070115Jan1914.log [new file with mode: 0644]
pepper/tmp/070115Jan2349.log [new file with mode: 0644]
pepper/tmp/070115Jan4625.log [new file with mode: 0644]
pepper/tmp/070115Jan5404.log [new file with mode: 0644]
pepper/tmp/070220Feb2414.log [new file with mode: 0644]
pepper/tmp/070220Feb2456.log [new file with mode: 0644]
pepper/tmp/070220Feb3922.log [new file with mode: 0644]
pepper/tmp/070220Feb4647.log [new file with mode: 0644]
pepper/tmp/070220Feb5026.log [new file with mode: 0644]
pepper/tmp/070220Feb5107.log [new file with mode: 0644]
pepper/tmp/070220Feb5228.log [new file with mode: 0644]
pepper/tmp/070220Feb5412.log [new file with mode: 0644]
pepper/tmp/070220Feb5559.log [new file with mode: 0644]
pepper/tmp/tmp.file_org [new file with mode: 0644]
pepper/trans.php [new file with mode: 0644]

diff --git a/pepper/c2s.gif b/pepper/c2s.gif
new file mode 100644 (file)
index 0000000..1f90054
Binary files /dev/null and b/pepper/c2s.gif differ
diff --git a/pepper/conf.php b/pepper/conf.php
new file mode 100644 (file)
index 0000000..9ea233e
--- /dev/null
@@ -0,0 +1,56 @@
+<?
+// Verbindung zur ERP-db
+$ERPuser="lxoffice";
+$ERPpass="geheim";
+$ERPhost="localhost";
+$ERPdbname="lxerp1";
+$ERPdns="pgsql://$ERPuser:$ERPpass@$ERPhost/$ERPdbname";
+$ERPusr["Name"]="demo";
+$ERPusr["ID"]="376";
+$ERPdir="tmp/shopartikel.csv";
+$ERPimgdir="/usr/lib/lx-office-erp";
+$maxSize="";
+$ERPftphost="localhost";
+$ERPftpuser="pepper";
+$ERPftppwd="pepper";
+//Verbindung zur osCommerce-db
+$SHOPuser="root";
+$SHOPpass="27123";
+$SHOPhost="localhost";
+$SHOPdbname="TestLocal";
+$SHOPdns="mysql://$SHOPuser:$SHOPpass@$SHOPhost/$SHOPdbname";
+$SHOPdir="tmp/shopartikel.csv";
+$SHOPimgdir="/var/www/TestLocal/shop/ProdukteBilder";
+$SHOPftphost="localhost";
+$SHOPftpuser="pepper";
+$SHOPftppwd="pepper";
+$div16["ID"]="391";
+$div07["ID"]="";
+$versand["ID"]="411";
+$nachn["ID"]="411";
+$minder["ID"]="391";
+$treuh["ID"]="391";
+$paypal["ID"]="391";
+$div16["NR"]="1002";
+$div07["NR"]="";
+$versand["NR"]="1003";
+$nachn["NR"]="1003";
+$minder["NR"]="1002";
+$treuh["NR"]="1002";
+$paypal["NR"]="1002";
+$div16["TXT"]="Diverse";
+$div07["TXT"]="";
+$versand["TXT"]="Versandkosten";
+$nachn["TXT"]="Versandkosten";
+$minder["TXT"]="Diverse";
+$treuh["TXT"]="Diverse";
+$paypal["TXT"]="Diverse";
+$bgcol[1]="#ddddff";
+$bgcol[2]="#ddffdd";
+$preA="P_";
+$preK="P_";
+$auftrnr="1";
+$kdnum="1";
+$pricegroup="382";
+$showErr="true";
+?>
\ No newline at end of file
diff --git a/pepper/confedit.php b/pepper/confedit.php
new file mode 100644 (file)
index 0000000..e393f1c
--- /dev/null
@@ -0,0 +1,302 @@
+<?
+// $Id: confedit.php,v 0.10 2006/02/06 11:34:30 hli Exp $
+if (!isset($_SERVER['PHP_AUTH_USER'])) {
+       Header("WWW-Authenticate: Basic realm=\"Configurations-Editor\"");
+       Header("HTTP/1.0 401 Unauthorized");
+       echo "Sie m&uuml;ssen sich autentifizieren\n";
+       exit;
+} else {
+       include "conf.php";
+       require_once "DB.php";
+       $db=@DB::connect($ERPdns);
+       if (!DB::isError($db)) {
+               $sql="select id,pricegroup from pricegroup";
+               $pgs=$db->getall($sql);
+       }
+       function pg($sel) {
+       global $pgs;
+               echo "\t<option value=0";
+               if ($sel==0) echo " selected";
+               echo ">Standard VK\n";
+               if ($pgs) foreach ($pgs as $row) {
+                       echo "\t<option value=".$row[0];
+                       if ($sel==$row[0]) echo " selected";
+                       echo ">".$row[1]."\n";
+               }
+       }
+    if ($_SERVER['PHP_AUTH_USER']<>$ERPftpuser || $_SERVER['PHP_AUTH_PW']<>$ERPftppwd) {
+               Header("WWW-Authenticate: Basic realm=\"My Realm\"");
+               Header("HTTP/1.0 401 Unauthorized");
+               echo "Sie m&uuml;ssen sich autentifizieren\n";
+               exit;
+       }
+       if ($_POST["ok"]=="sichern") {
+               $ok=true;
+               $dsnP="pgsql://".$_POST["ERPuser"].":".$_POST["ERPpass"]."@".$_POST["ERPhost"]."/".$_POST["ERPdbname"];
+               $dbP=DB::connect($dsnP);
+               if (DB::isError($dbP)||!$dbP) {
+                       $ok=false; 
+                       echo "Keine Verbindung zur ERP<br>"; 
+                       echo $dbP->userinfo;
+               }
+               else {
+                       $rs=$dbP->getall("select id,description from parts where partnumber = '".$_POST["div16NR"]."'");
+                       $_POST["div16ID"]=$rs[0][0];
+                       $div16txt=$rs[0][1];
+                       $rs=$dbP->getall("select id,description from parts where partnumber = '".$_POST["div07NR"]."'");
+                       $_POST["div07ID"]=$rs[0][0];
+                       $div07txt=$rs[0][1];
+                       $rs=$dbP->getall("select id,description from parts where partnumber = '".$_POST["versandNR"]."'");
+                       $_POST["versandID"]=$rs[0][0];
+                       $versandtxt=$rs[0][1];
+                       $rs=$dbP->getall("select id,description from parts where partnumber = '".$_POST["nachnNR"]."'");
+                       $_POST["nachnID"]=$rs[0][0];
+                       $nachntxt=$rs[0][1];
+                       $rs=$dbP->getall("select id,description from parts where partnumber = '".$_POST["minderNR"]."'");
+                       $_POST["minderID"]=$rs[0][0];
+                       $mindertxt=$rs[0][1];
+                       $rs=$dbP->getall("select id,description from parts where partnumber = '".$_POST["paypalNR"]."'");
+                       $_POST["paypalID"]=$rs[0][0];
+                       $paypaltxt=$rs[0][1];
+                       $rs=$dbP->getall("select id,description from parts where partnumber = '".$_POST["treuhNR"]."'");
+                       $_POST["treuhID"]=$rs[0][0];
+                       $treuhtxt=$rs[0][1];
+                       $rs=$dbP->getall("select id from employee where login = '".$_POST["ERPusrN"]."'");
+                       $_POST["ERPusrID"]=$rs[0][0];
+               }
+               $dsnM="mysql://".$_POST["SHOPuser"].":".$_POST["SHOPpass"]."@".$_POST["SHOPhost"]."/".$_POST["SHOPdbname"];
+               $dbM=DB::connect($dsnM);
+               if (DB::isError($dbM)||!$dbM) { 
+                       $ok=false; 
+                       echo "Keine Verbindung zum Shop<br>"; 
+                       echo $dbM->userinfo;
+               };
+               if (ok) {
+                       $f=fopen("conf.php","w");
+                       $v="1.5";
+                       $d=date("Y/m/d H:i:s");
+                       fputs($f,"<?\n// Verbindung zur ERP-db\n");
+                       fputs($f,"\$ERPuser=\"".$_POST["ERPuser"]."\";\n");
+                       fputs($f,"\$ERPpass=\"".$_POST["ERPpass"]."\";\n");
+                       fputs($f,"\$ERPhost=\"".$_POST["ERPhost"]."\";\n");
+                       fputs($f,"\$ERPdbname=\"".$_POST["ERPdbname"]."\";\n");
+                       fputs($f,"\$ERPdns=\"pgsql://\$ERPuser:\$ERPpass@\$ERPhost/\$ERPdbname\";\n");
+                       fputs($f,"\$ERPusr[\"Name\"]=\"".$_POST["ERPusrN"]."\";\n");
+                       fputs($f,"\$ERPusr[\"ID\"]=\"".$_POST["ERPusrID"]."\";\n");
+                       fputs($f,"\$ERPdir=\"".$_POST["ERPdir"]."\";\n");
+                       fputs($f,"\$ERPimgdir=\"".$_POST["ERPimgdir"]."\";\n");
+                       fputs($f,"\$maxSize=\"".$_POST["maxSize"]."\";\n");
+                       fputs($f,"\$ERPftphost=\"".$_POST["ERPftphost"]."\";\n");
+                       fputs($f,"\$ERPftpuser=\"".$_POST["ERPftpuser"]."\";\n");
+                       fputs($f,"\$ERPftppwd=\"".$_POST["ERPftppwd"]."\";\n");
+                       fputs($f,"//Verbindung zur osCommerce-db\n");
+                       fputs($f,"\$SHOPuser=\"".$_POST["SHOPuser"]."\";\n");
+                       fputs($f,"\$SHOPpass=\"".$_POST["SHOPpass"]."\";\n");
+                       fputs($f,"\$SHOPhost=\"".$_POST["SHOPhost"]."\";\n");
+                       fputs($f,"\$SHOPdbname=\"".$_POST["SHOPdbname"]."\";\n");
+                       fputs($f,"\$SHOPdns=\"mysql://\$SHOPuser:\$SHOPpass@\$SHOPhost/\$SHOPdbname\";\n");
+                       fputs($f,"\$SHOPdir=\"".$_POST["SHOPdir"]."\";\n");
+                       fputs($f,"\$SHOPimgdir=\"".$_POST["SHOPimgdir"]."\";\n");
+                       fputs($f,"\$SHOPftphost=\"".$_POST["SHOPftphost"]."\";\n");
+                       fputs($f,"\$SHOPftpuser=\"".$_POST["SHOPftpuser"]."\";\n");
+                       fputs($f,"\$SHOPftppwd=\"".$_POST["SHOPftppwd"]."\";\n");
+                       fputs($f,"\$div16[\"ID\"]=\"".$_POST["div16ID"]."\";\n");
+                       fputs($f,"\$div07[\"ID\"]=\"".$_POST["div07ID"]."\";\n");
+                       fputs($f,"\$versand[\"ID\"]=\"".$_POST["versandID"]."\";\n");
+                       fputs($f,"\$nachn[\"ID\"]=\"".$_POST["nachnID"]."\";\n");
+                       fputs($f,"\$minder[\"ID\"]=\"".$_POST["minderID"]."\";\n");
+                       fputs($f,"\$treuh[\"ID\"]=\"".$_POST["treuhID"]."\";\n");
+                       fputs($f,"\$paypal[\"ID\"]=\"".$_POST["paypalID"]."\";\n");
+                       fputs($f,"\$div16[\"NR\"]=\"".$_POST["div16NR"]."\";\n");
+                       fputs($f,"\$div07[\"NR\"]=\"".$_POST["div07NR"]."\";\n");
+                       fputs($f,"\$versand[\"NR\"]=\"".$_POST["versandNR"]."\";\n");
+                       fputs($f,"\$nachn[\"NR\"]=\"".$_POST["nachnNR"]."\";\n");
+                       fputs($f,"\$minder[\"NR\"]=\"".$_POST["minderNR"]."\";\n");
+                       fputs($f,"\$treuh[\"NR\"]=\"".$_POST["treuhNR"]."\";\n");
+                       fputs($f,"\$paypal[\"NR\"]=\"".$_POST["paypalNR"]."\";\n");
+                       fputs($f,"\$div16[\"TXT\"]=\"".$div16txt."\";\n");
+                       fputs($f,"\$div07[\"TXT\"]=\"".$div07txt."\";\n");
+                       fputs($f,"\$versand[\"TXT\"]=\"".$versandtxt."\";\n");
+                       fputs($f,"\$nachn[\"TXT\"]=\"".$nachntxt."\";\n");
+                       fputs($f,"\$minder[\"TXT\"]=\"".$mindertxt."\";\n");
+                       fputs($f,"\$treuh[\"TXT\"]=\"".$treuhtxt."\";\n");
+                       fputs($f,"\$paypal[\"TXT\"]=\"".$paypaltxt."\";\n");
+                       fputs($f,"\$bgcol[1]=\"#ddddff\";\n");
+                       fputs($f,"\$bgcol[2]=\"#ddffdd\";\n");
+                       fputs($f,"\$preA=\"".$_POST["preA"]."\";\n");
+                       fputs($f,"\$preK=\"".$_POST["preK"]."\";\n");
+                       fputs($f,"\$auftrnr=\"".$_POST["auftrnr"]."\";\n");
+                       fputs($f,"\$kdnum=\"".$_POST["kdnum"]."\";\n");
+                       fputs($f,"\$pricegroup=\"".$_POST["pricegroup"]."\";\n");
+                       fputs($f,"\$showErr=\"true\";\n");
+                       fputs($f,"?>");
+                       fclose($f);
+                       require "conf.php";
+               } else {
+                       $ERPuser=$_POST["ERPuser"];
+                       $ERPpass=$_POST["ERPpass"];
+                       $ERPhost=$_POST["ERPhost"];
+                       $ERPdbname=$_POST["ERPdbname"];
+                       $ERPusrN=$_POST["ERPusrN"];
+                       $ERPdir=$_POST["ERPdir"];
+                       $ERPimgdir=$_POST["ERPimgdir"];
+                       $maxSize=$_POST["maxSize"];
+                       $ERPftphost=$_POST["ERPftphost"];
+                       $ERPftpuser=$_POST["ERPftpuser"];
+                       $ERPftppwd=$_POST["ERPftppwd"];
+                       $SHOPuser=$_POST["SHOPuser"];
+                       $SHOPpass=$_POST["SHOPpass"];
+                       $SHOPhost=$_POST["SHOPhost"];
+                       $SHOPdbname=$_POST["SHOPdbname"];
+                       $SHOPdir=$_POST["SHOPdir"];
+                       $SHOPimgdir=$_POST["SHOPimgdir"];
+                       $SHOPftphost=$_POST["SHOPftphost"];
+                       $SHOPftpuser=$_POST["SHOPftpuser"];
+                       $SHOPftppwd=$_POST["SHOPftppwd"];
+                       $div16NR=$_POST["div16NR"];
+                       $div07NR=$_POST["div07NR"];
+                       $versandNR=$_POST["versandNR"];
+                       $nachnNR=$_POST["nachnNR"];
+                       $treuhNR=$_POST["treuhNR"];
+                       $minderNR=$_POST["minderNR"];
+                       $paypalNR=$_POST["paypalNR"];
+                       $preA=$_POST["preA"];
+                       $preK=$_POST["preK"];
+                       $kdnum=$_POST["kdnum"];
+                       $pricegroup=$_POST["pricegroup"];
+                       $auftrnr=$_POST["auftrnr"];
+               }
+       }       else {
+               require "conf.php";
+       }
+       ?>
+<html>
+<body>
+<center>
+<table style="background-color:#cccccc" border="0">
+<form name="ConfEdit" method="post" action="confedit.php">
+<input type="hidden" name="div16ID" value="<?= $div16["ID"] ?>">
+<input type="hidden" name="div07ID" value="<?= $div07["ID"] ?>">
+<input type="hidden" name="minderID" value="<?= $minder["ID"] ?>">
+<input type="hidden" name="versandID" value="<?= $versand["ID"] ?>">
+<input type="hidden" name="nachnID" value="<?= $nachn["ID"] ?>">
+<input type="hidden" name="paypalID" value="<?= $paypal["ID"] ?>">
+<input type="hidden" name="treuhID" value="<?= $treuh["ID"] ?>">
+<input type="hidden" name="ERPusrID" value="<?= $ERPusr["ID"] ?>">
+
+<tr><th>Daten</th><th>Lx-ERP</th><th></th><th>Shop</th></tr>
+<tr>
+       <td>db-Host</td>
+       <td colspan="2"><input type="text" name="ERPhost" size="25" value="<?= $ERPhost ?>"></td>
+       <td><input type="text" name="SHOPhost" size="25" value="<?= $SHOPhost ?>"></td>
+</tr>
+<tr>
+       <td>Database</td>
+       <td colspan="2"><input type="text" name="ERPdbname" size="20" value="<?= $ERPdbname ?>"></td>
+       <td><input type="text" name="SHOPdbname" size="20" value="<?= $SHOPdbname ?>"></td>
+</tr>
+<tr>
+       <td>db-User Name</td>
+       <td colspan="2"><input type="text" name="ERPuser" size="15" value="<?= $ERPuser ?>"></td>
+       <td><input type="text" name="SHOPuser" size="15" value="<?= $SHOPuser ?>"></td>
+</tr>
+<tr>
+       <td>db-User PWD</td>
+       <td colspan="2"><input type="text" name="ERPpass" size="15" value="<?= $ERPpass ?>"></td>
+       <td><input type="text" name="SHOPpass" size="15" value="<?= $SHOPpass ?>"></td>
+</tr>
+<tr>
+       <td>User-ID</td>
+       <td colspan="2"><input type="text" name="ERPusrN" size="10" value="<?= $ERPusr["Name"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($ERPusr["ID"])?"":"checked") ?>></td>
+       <td></td>
+</tr>
+<tr>
+       <td>CSV-Dir</td>
+       <td colspan="2"><input type="text" name="ERPdir" size="30" value="<?= $ERPdir ?>"></td>
+       <td><input type="text" name="SHOPdir" size="30" value="<?= $SHOPdir ?>"></td>
+</tr>
+<tr>
+       <td>Image-Dir</td>
+       <td colspan="2"><input type="text" name="ERPimgdir" size="30" value="<?= $ERPimgdir ?>"></td>
+       <td><input type="text" name="SHOPimgdir" size="30" value="<?= $SHOPimgdir ?>"></td>
+</tr>
+<tr>
+       <td>FTP-Host</td>
+       <td colspan="2"><input type="text" name="ERPftphost" size="20" value="<?= $ERPftphost ?>"></td>
+       <td><input type="text" name="SHOPftphost" size="20" value="<?= $SHOPftphost ?>"></td>
+</tr>
+<tr>
+       <td>FTP-User</td>
+       <td colspan="2"><input type="text" name="ERPftpuser" size="15" value="<?= $ERPftpuser ?>"></td>
+       <td><input type="text" name="SHOPftpuser" size="15" value="<?= $SHOPftpuser ?>"></td>
+</tr>
+<tr>
+       <td>FTP-User PWD</td>
+       <td colspan="2"><input type="text" name="ERPftppwd" size="15" value="<?= $ERPftppwd ?>"></td>
+       <td><input type="text" name="SHOPftppwd" size="15" value="<?= $SHOPftppwd ?>"></td>
+</tr>
+<tr>
+       <td>ID Diverse 16%</td>
+       <td><input type="text" name="div16NR" size="10" value="<?= $div16["NR"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($div16["ID"])?"":"checked") ?>></td>
+       <td>ID Diverse 7%</td>
+       <td><input type="text" name="div07NR" size="10" value="<?= $div07["NR"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($div07["ID"])?"":"checked") ?>></td>
+</tr>
+<tr>
+       <td>ID Versand</td>
+       <td><input type="text" name="versandNR" size="10" value="<?= $versand["NR"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($versand["ID"])?"":"checked") ?>></td>
+       <td>ID Nachname</td>
+       <td><input type="text" name="nachnNR" size="10" value="<?= $nachn["NR"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($nachn["ID"])?"":"checked") ?>></td>
+</tr>
+<tr>
+       <td>ID Paypal</td>
+       <td><input type="text" name="paypalNR" size="10" value="<?= $paypal["NR"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($paypal["ID"])?"":"checked") ?>></td>
+       <td>ID Treuhand</td>
+       <td><input type="text" name="treuhNR" size="10" value="<?= $treuh["NR"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($treuh["ID"])?"":"checked") ?>></td>
+</tr>
+<tr>
+       <td>ID Mindermenge</td>
+       <td><input type="text" name="minderNR" size="10" value="<?= $minder["NR"] ?>">
+               <input type="checkbox" name="a1" <?= (empty($minder["ID"])?"":"checked") ?>></td>
+       <td>Preisgruppe</td>
+       <td><select name="pricegroup">
+<? pg($pricegroup); ?>
+           </select></td>
+</tr>
+<tr>
+       <td colspan="2">Auftragsnummern durch</td>
+       <td><input type="radio" name="auftrnr" value="1" <?= ($auftrnr==1)?"checked":"" ?>> LxO</td>
+       <td><input type="radio" name="auftrnr" value="0" <?= ($auftrnr<>1)?"checked":"" ?>> Shop</td>
+</tr>
+<tr>
+       <td colspan="2">Kundennummern durch</td>
+       <td><input type="radio" name="kdnum" value="1" <?= ($kdnum==1)?"checked":"" ?>> LxO</td>
+       <td><input type="radio" name="kdnum" value="0" <?= ($kdnum<>1)?"checked":"" ?>> Shop</td>
+</tr>
+<tr>
+       <td colspan="2">Nummernerweiterung</td>
+       <td>Auftrag<input type="text" name="preA" size="5" value="<?= $preA ?>"></td>
+       <td>Kunde<input type="text" name="preK" size="5" value="<?= $preK ?>"></td>
+</tr>
+<!--tr>
+       <td>Bildergr&ouml;sse (byte)</td>
+       <td><input type="text" name="maxSize" size="10" value="<?= $maxSize ?>"></td>
+       <td></td>
+</tr-->
+
+
+
+
+<tr><td colspan="4" align="center"><input type="submit" name="ok" value="sichern"></td></tr>
+</form>
+</table>
+</center>
+</body>
+</html>
+<? } ?>
diff --git a/pepper/diff.php b/pepper/diff.php
new file mode 100644 (file)
index 0000000..c4a3a6d
--- /dev/null
@@ -0,0 +1,82 @@
+<?
+// $Id: diff.php,v 1.1 2004/12/17 13:50:15 hli Exp $
+require_once "DB.php";
+require_once "conf.php";
+if (!$db) {
+       $db=DB::connect($SHOPdns);
+       if (!$db) dbFehler("",$db->getDebugInfo());
+       if (DB::isError($db)) {
+               dbFehler("",$db->getDebugInfo());
+               die ($db->getDebugInfo());
+       };
+       $db2=DB::connect($ERPdns);
+       if (!$db2) dbFehler("",$db2->getDebugInfo());
+       if (DB::isError($db2)) {
+               dbFehler("",$db2->getDebugInfo());
+               die ($db2->getDebugInfo());
+       };
+}
+if ($_POST["ok"]) {
+       $sql="select Kategorie_ID from kategorien where  Unterkategorie_von = '@PhPepperShop@'";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       $no=$rs[0]["Kategorie_ID"];
+       foreach($_POST as $key=>$val) {
+               if ($key=="ok") continue;
+               if ($key=="alle") continue;
+               $sql="update artikel_kategorie set FK_Kategorie_ID=$no where FK_Artikel_ID=$val";
+               echo "$key ";
+               if ($db->query($sql)) { echo "deaktiviert<br>"; }
+               else { echo "konnte nicht deaktiviert werden<br>"; };
+       }
+} else {
+$sql="select Kategorie_ID from kategorien where  Unterkategorie_von = '@PhPepperShop@'";
+$rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+if ($rs) {
+       $no="K.FK_Kategorie_ID<>".$rs[0]["Kategorie_ID"];
+} else {
+       $no="1";
+}
+$sql="select partnumber from parts where shop='1' order by partnumber";
+$erp=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+if ($erp) foreach ($erp as $zeile) { $arE[]=$zeile["partnumber"]; };
+$sql="select Name,Artikel_ID,Artikel_NR from artikel A left join artikel_kategorie K on A.Artikel_ID=K.FK_Artikel_ID where $no";
+$shop=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+if ($shop) foreach ($shop as $zeile) {
+       $arS[]=$zeile["Artikel_NR"];
+       $arID[$zeile["Artikel_NR"]]=array("id"=>$zeile["Artikel_ID"],"name"=>$zeile["Name"]);
+}
+$result=@array_diff($arS,$arE);
+if ($result) {
+?>
+<html>
+<head><title>Artikelpflege</title>
+<script language="JavaScript">
+<!--
+       function sel() {
+               val=document.doppel.alle.checked;
+               cnt=document.doppel.length;
+               for (i=0; i<cnt; i++) {
+                       document.doppel.elements[i].checked=val;
+               }
+       }
+//-->
+</script>
+</head>
+<body>
+Folgende Artikel sind in der ERP nicht mehr als Shopartikel markiert.<br>
+Markieren Sie die Artikel, die deaktiviert werden sollen.<br>
+<form name='doppel' method='post' action='diff.php'>
+<table>
+<?
+foreach ($result as $data) {
+       echo "\t<tr><td><input type='checkbox' name='".$data."' value='".$arID[$data]["id"]."'></td><td>".$data."</td><td>".$arID[$data]["name"]."</td></tr>\n";
+}
+?>
+       <tr><td><input type='checkbox' name='alle' value='1' onClick="sel()"></td><td></td><td>alle Artikel</td></tr>
+       <tr><td colspan='3'><input type='submit' name='ok' value='ok'></td></tr>
+</table>
+<form>
+<? }
+       else { "Artikelbestand identisch"; };
+} ?>
+<a href="trans.php">zur&uuml;ck</a>
diff --git a/pepper/e2c.gif b/pepper/e2c.gif
new file mode 100644 (file)
index 0000000..692eb8b
Binary files /dev/null and b/pepper/e2c.gif differ
diff --git a/pepper/e2s.gif b/pepper/e2s.gif
new file mode 100644 (file)
index 0000000..1227d98
Binary files /dev/null and b/pepper/e2s.gif differ
diff --git a/pepper/erpexport.php b/pepper/erpexport.php
new file mode 100644 (file)
index 0000000..8a40c67
--- /dev/null
@@ -0,0 +1,216 @@
+<?
+/***************************************************************
+* $Id: erpexport.php  2006/02/06 13:50:30 hli Exp $
+*Author: Holger Lindemann
+*Copyright: (c) 2004 Lx-System
+*License: non free
+*eMail: info@lx-system.de
+*Version: 1.0.1
+*ERP: Lx-Office ERP
+***************************************************************/
+?>
+<html>
+       <head><title>Lx-ERP Export der Shopartikel</title>
+       <link type="text/css" REL="stylesheet" HREF="css/main.css"></link>
+       <script language="JavaScript">
+       <!--
+               function pepper() {
+                       document.fld.PN.value="Artikel-Nr"; document.fld.partnumber.checked=true;
+                       document.fld.BEZ.value="Name"; document.fld.desctiption.checked=true;
+                       document.fld.GEWICHT.value="Gewicht"; document.fld.weight.checked=true;
+                       document.fld.MWST.value="MwSt-Satz"; document.fld.rate.checked=true;
+                       document.fld.VK.value="Preis"; document.fld.sellprice.checked=true;
+                       document.fld.PG.value="Kategorien"; document.fld.partsgroup.checked=true;
+                       document.fld.BESCHR.value="Beschreibung"; document.fld.notes.checked=true;
+                       document.fld.PG.value="Lagerbestand"; document.fld.onhand.checked=true;
+                       document.fld.encl.value="";
+                       document.fld.deli.value=";";
+                       document.fld.crln.value="\\n";
+                       document.fld.head.checked=true;
+                       document.fld.shop.value="pepper";
+               }
+       //-->
+       </script>
+<body>
+
+<?php
+require_once "DB.php";
+require_once "conf.php";
+
+$db=DB::connect($ERPdns);
+if (!$db) dbFehler("",$db->getDebugInfo());
+if (DB::isError($db)) {
+       dbFehler("",$db->getDebugInfo());
+       die ($db->getDebugInfo());
+};
+/****************************************************
+* dbFehler
+* in: sql,err = string
+* out:
+* Fehlermeldungen ausgeben
+*****************************************************/
+function dbFehler($sql,$err) {
+global $showErr;
+       if ($showErr)
+               echo "</td></tr></table><font color='red'>$sql : $err</font><br>";
+}
+
+function shopartikel() {
+global $db;
+       $sql ="SELECT P.partnumber,P.description,P.unit,P.weight,t.rate,P.sellprice,P.listprice,P.priceupdate,PG.partsgroup,P.notes,P.image FROM ";
+       $sql.="parts P left join partsgroup PG on  PG.id=P.partsgroup_id ";
+       $sql.="left join chart c on c.id = P.income_accno_id ";
+       $sql.="left join tax T on T.taxkey=C.taxkey_id ";
+       $sql.="where shop = 't'";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       return $rs;
+}
+if ($_POST["export"]) {
+       $data=shopartikel();
+       $delim=($_POST["deli"])?$_POST["deli"]:",";
+       if (get_magic_quotes_gpc()) {
+               $crln = stripslashes($_POST["crln"]);
+       }
+       $crln = str_replace('\\r', "\015", $crln);
+       $crln = str_replace('\\n', "\012", $crln);
+       $crln = str_replace('\\t', "\011", $crln);
+       $encl=$_POST["encl"];
+       $i=0;
+       $f=fopen($ERPdir,"w");
+       if ($_POST["partnumber"])       {$header.=$_POST["PN"].$delim; };
+       if ($_POST["desctiption"])      {$header.=$_POST["BEZ"].$delim; };
+       if ($_POST["unit"])                     {$header.=$_POST["EINHEIT"].$delim; };
+       if ($_POST["weight"])           {$header.=$_POST["GEWICHT"].$delim; };
+       if ($_POST["onhand"])           {$header.=$_POST["LAGER"].$delim; };
+       if ($_POST["rate"])                     {$header.=$_POST["MWST"].$delim; };
+       if ($_POST["sellprice"])        {$header.=$_POST["VK"].$delim; };
+       if ($_POST["listprice"])        {$header.=$_POST["EK"].$delim; };
+       if ($_POST["priceupdate"])      {$header.=$_POST["PDATE"].$delim; };
+       if ($_POST["partsgroup"])       {$header.=$_POST["PG"].$delim; };
+       if ($_POST["notes"])            {$header.=$_POST["BESCHR"].$delim; };
+       if ($_POST["image"])            {$header.=$_POST["IMAGE"].$delim; };
+       $header=substr($header,0,-1);
+?>
+<table class="liste">
+<!-- BEGIN Artikel -->
+<?
+function downloadImage($image,$name) {
+global $ERPftphost,$ERPftpuser,$ERPftppwd,$ERPimgdir, $maxSize, $iconSize;
+       $conn_id = ftp_connect($ERPftphost);
+       ftp_login($conn_id,$ERPftpuser,$ERPftppwd);
+       $src=$ERPimgdir."/".$image;
+       $typ=substr($image,strrpos($image,"."));
+       echo "tmp/".$name."_gr$typ $src";
+       $upload=ftp_get($conn_id,"tmp/".$name."_gr$typ","$src",FTP_BINARY);
+       ftp_quit($conn_id);
+       if (!$upload) { echo "Ftp download war fehlerhaft!"; return false; };
+       echo "convert  -resize $iconSize tmp/".$name."_gr$typ tmp/".$name."_kl$typ";
+       exec("convert  -resize $iconSize tmp/".$name."_gr$typ tmp/".$name."_kl$typ",$aus,$rc);
+       print_r($aus); echo "!$rc!";
+}
+       $i=0;
+       $f=fopen($ERPdir,"w");
+       if ($_POST["head"]) fputs($f,$header.$crln);
+       foreach($data as $zeile) {
+               $file=""; $html="";
+               if ($_POST["shop"]=="pepper") {
+                       if (preg_match("/^\[.*\].*/",$zeile["partsgroup"])) { $PG=$zeile["partsgroup"]; }
+                       else { $PG="[".$zeile["partsgroup"]."]"; };
+                       $mwst=$zeile["rate"]*100;
+               } else if ($_POST["shop"]=="oscomm") {
+                       $mwst=sprintf("%01.4f",($zeile["rate"]*100));
+                       $PG=$zeile["partsgroup"];
+               } else {
+                       $PG=$zeile["partsgroup"];
+                       $mwst=$zeile["rate"]*100;
+               };
+               $LineCol = $bgcol[$i%2+1];
+               if ($_POST["partnumber"])       {$file.=$encl.$zeile["partnumber"].$encl.$delim; $html.="<td>".$zeile["partnumber"]."</td>";};
+               if ($_POST["desctiption"])      {$file.=$encl.strtr($zeile["description"],chr(13).chr(10),"  ").$encl.$delim; $html.="<td>".$zeile["description"]."</td>";};
+               if ($_POST["unit"])                     {$file.=$encl.$zeile["unit"].$encl.$delim; $html.="<td>".$zeile["unit"]."</td>";};
+               if ($_POST["onhand"])                   {$file.=$encl.$zeile["onhand"].$encl.$delim; $html.="<td>".$zeile["onhand"]."</td>";};
+               if ($_POST["weight"])           {$file.=$encl.$zeile["weight"].$encl.$delim; $html.="<td>".$zeile["weight"]."</td>";};
+               if ($_POST["rate"])                     {$file.=$encl.$mwst.$encl.$delim; $html.="<td>".$mwst."</td>";};
+               if ($_POST["sellprice"])        {$file.=$encl.(sprintf("%02.2f",$zeile["sellprice"])).$encl.$delim; $html.="<td>".(sprintf("%02.2f",$zeile["sellprice"]))."</td>";};
+               if ($_POST["listprice"])        {$file.=$encl.(sprintf("%02.2f",$zeile["listprice"])).$encl.$delim; $html.="<td>".(sprintf("%02.2f",$zeile["listprice"]))."</td>";};
+               if ($_POST["priceupdate"])      {$file.=$encl.$zeile["priceupdate"].$encl.$delim; $html.="<td>".$zeile["priceupdate"]."</td>";};
+               if ($_POST["partsgroup"])       {$file.=$encl.$PG.$encl.$delim; $html.="<td>".$zeile["partsgroup"]."</td>";};
+               if ($_POST["notes"])            {$file.=$encl.strtr($zeile["notes"],chr(13).chr(10),"  ").$encl.$delim; $html.="<td>".$zeile["notes"]."</td>";};
+               if ($_POST["image"])            {$file.=$encl.$zeile["image"].$encl.$delim; $html.="<td>".$zeile["image"]."</td>";};
+               $i++;
+               fputs($f,substr($file,0,-1).$crln);
+               if ($zeile["image"] && $_POST["image"]) { downloadImage($zeile["image"],$zeile["partnumber"]); }
+               if ($_POST["show"]) {
+?>
+       <tr  class="smal" onMouseover="this.bgColor='#FF0000';" onMouseout="this.bgColor='<?= $LineCol ?>';" bgcolor="<?= $LineCol ?>">
+               <?= $html ?>
+       </tr>
+<?             }
+       }
+?>
+<!-- END Artikel -->
+</table>
+Anzahl der Artikel: <?= $i ?><br>
+Export am : <?= date("d.m.Y : H:i") ?><br>
+download <a href="tmp/shopartikel.csv">Exportfile</a><br><hr>
+<?
+       fclose($f);
+} // if ($export)
+?>
+Export der Shopartikel aus Lx-ERP <br>
+M&ouml;gliche Felder
+<form name="fld" action="erpexport.php" method="post">
+<input type="hidden" name="shop" value="">
+<table>
+       <tr>
+               <td><input type="checkbox" name="partnumber" value="1">Artikelnummer</td>
+               <td><input type="checkbox" name="desctiption" value="1">Bezeichnung</td>
+               <td><input type="checkbox" name="unit" value="1">Einheit</td>
+               <td><input type="checkbox" name="weight" value="1">Gewicht</td>
+       </tr>
+       <tr>
+               <td><input type="text" name="PN" size="23"></td>
+               <td><input type="text" name="BEZ" size="23"></td>
+               <td><input type="text" name="EINHEIT" size="23"></td>
+               <td><input type="text" name="GEWICHT" size="23"></td>
+       </tr>
+       <tr><td colspan=5></td></tr>
+       <tr>
+               <td><input type="checkbox" name="sellprice" value="1">Verkaufspreis</td>
+               <td><input type="checkbox" name="listprice" value="1">Listenpreis</td>
+               <td><input type="checkbox" name="onhand" value="1">Lagerbestand</td>
+               <td><input type="checkbox" name="rate" value="1">MwSt</td>
+       </tr>
+       <tr>
+               <td><input type="text" name="VK" size="23"></td>
+               <td><input type="text" name="EK" size="23"></td>
+               <td><input type="text" name="LAGER" size="23"></td>
+               <td><input type="text" name="MWST" size="23"></td>
+       </tr>
+       <tr><td colspan=5></td></tr>
+       <tr>
+               <td><input type="checkbox" name="partsgroup" value="1">Gruppe</td>
+               <td><input type="checkbox" name="notes" value="1">Beschreibung</td>
+               <td><input type="checkbox" name="image" value="1">Bild</td>
+               <td><input type="checkbox" name="show" value="1" checked>HTML-Anzeige</td>
+       </tr>
+       <tr>
+               <td><input type="text" name="PG" size="23"></td>
+               <td><input type="text" name="BESCHR" size="23"></td>
+               <td><input type="text" name="IMAGE" size="23"></td>
+               <td></td>
+       </tr>
+       <tr>
+               <td>Feldtrenner <input type="text" name="deli" size="2" value=","></td>
+               <td>Feldumrahmung <input type="text" name="encl" size="2" value="&quot;"></td>
+               <td>Zeilenende <input type="text" name="crln" size="2" value="\n"></td>
+               <td><input type="checkbox" name="head" value="1" checked>Headline</td>
+       </tr>
+       <tr>
+               <td colspan=5><input type="submit" name="export" value="Export"> <input type="button" name="pep" value="Peppershop" onClick="pepper()"> <input type="button" name="osc" value="osCommerce" onClick="oscomm()"></td>
+       </tr>
+</table>
+<a href="trans.php">zur&uuml;ck</a>
+</form>
+</body>
+</html>
diff --git a/pepper/export_to_erp/export_to_erp.php b/pepper/export_to_erp/export_to_erp.php
new file mode 100644 (file)
index 0000000..72d1e9c
--- /dev/null
@@ -0,0 +1,291 @@
+<?
+/***************************************************************
+*Author: Holger Lindemann
+*Copyright: (c) 2004 Lx-System
+*License: non free
+*eMail: info@lx-system.de
+*Version: 1.0.1
+*Shop: PHPeppershop 1.5
+*ERP: Lx-Office ERP
+***************************************************************/
+// -----------------------------------------------------------------------
+// Damit jedes andere Modul ueberpruefen kann ob dieses hier schon "included" ist
+// wird folgende Vairable auf true gesetzt (Name = Ext. Modulname + Dateiname ohne .php)
+$erp_export_erp_export = true;
+
+?>
+<html>
+       <head><title>Lx-ERP Export der Shopartikel</title>
+       <link type="text/css" REL="stylesheet" HREF="css/main.css"></link>
+       <script language="JavaScript">
+       <!--
+               function pepper() {
+               }
+       //-->
+       </script>
+<body>
+
+<?php
+$inip=get_cfg_var("include_path");
+ini_set("include_path",$inip.":/usr/share/pear/:.");
+
+require_once "DB.php";
+require_once "conf.php";
+
+$db=DB::connect($SHOPdns);
+if (!$db) dbFehler("",$db->getDebugInfo());
+if (DB::isError($db)) {
+       dbFehler("",$db->getDebugInfo());
+       die ($db->getDebugInfo());
+};
+$db2=DB::connect($ERPdns);
+if (!$db2) dbFehler("",$db2->getDebugInfo());
+if (DB::isError($db2)) {
+       dbFehler("",$db2->getDebugInfo());
+       die ($db2->getDebugInfo());
+};
+/****************************************************
+* dbFehler
+* in: sql,err = string
+* out:
+* Fehlermeldungen ausgeben
+*****************************************************/
+function dbFehler($sql,$err) {
+global $showErr;
+       if ($showErr)
+               echo "</td></tr></table><font color='red'>$sql : $err</font><br>";
+}
+function checkBestellung($status) {
+global $db;
+       if ($status=="B") { $where="";}  // B = alle Bestellungeb, N = neue, Y = alte
+       else { $where="where Bestellung_bezahlt = '$status'";}
+       $sql="select * from bestellung $where order by Datum";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       return (count($rs)>0)?count($rs):false;
+}
+function getBestellKunde($BID) {
+global $db;
+       $sql="select * from kunde left join bestellung_kunde on Kunden_ID=FK_Kunden_ID where  FK_Bestellungs_ID=$BID";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       return $rs[0]["Kunden_Nr"];
+}
+function sonderkosten($transID,$data,$id,$f) {
+global $db2,$versand,$nachn,$minder,$treuh,$paypal;
+       $sql="insert into orderitems (trans_id, parts_id, description, qty, sellprice, unit, ship, discount) values (";
+       $sql.=$transID.",".${$id}["ID"].",'".${$id}["TXT"]."',1,".$data.",'mal',0,0)";
+       fputs($f,"$transID,".${$id}["ID"].",'".${$id}["TXT"]."',1,$data\n");
+       if (!$db2->query($sql)) { return false; }
+       else { return true; };
+}
+function insBestArtikel($zeile,$transID) {
+global $db,$db2,$div07,$div16,$f,
+       $versandID,$nachnID,$minderID,$treuhID,$paypalID;
+       $BID=$zeile["Bestellungs_ID"];
+       $sql ="select * from artikel left join artikel_bestellung on Artikel_ID=FK_Artikel_ID ";
+       $sql.="left join bestellung on Bestellungs_ID=FK_Bestellungs_ID where Bestellungs_ID=$BID";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       $ok=true;
+       foreach ($rs as $zeile) {
+               $sql="select * from parts where partnumber='".$zeile["Artikel_Nr"]."'";
+               $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+               if ( $rs2[0]["id"]) {$artID=$rs2[0]["id"]; }
+               else { $artID=($zeile["MwSt_Satz"]=="7")?$div07["ID"]:$div16["ID"]; };
+               //$preis=round($zeile["Preis"]/($zeile["MwSt_Satz"]+100)*100,2);
+               $preis=$zeile["Preis"];
+               $notes=$zeile["Artikelname"];
+               $vari=split(chr(254),$zeile["Variation"]);
+               if ($vari) { for($cnt=0; $cnt<count($vari); $cnt++) {
+                               $notes.="\n".$vari[$cnt];
+                               $cnt++;
+                               $preis+=trim($vari[$cnt]) * $zeile["Anzahl"];
+                       }
+               };
+               $opts=split(chr(254),$zeile["Optionen"]);
+               if ($opts) { for($cnt=0; $cnt<count($opts); $cnt++) {
+                               $notes.="\n".$opts[$cnt];
+                               $cnt++;
+                               $preis+=trim($opts[$cnt]) * $zeile["Anzahl"];
+                       }
+               }               
+               $sql="insert into orderitems (trans_id, parts_id, description, qty, sellprice, unit, ship, discount) values (";
+               $sql.=$transID.",".$artID.",'".$notes."',".$zeile["Anzahl"].",".$preis.",'Stck',0,0)";
+               if (!$db2->query($sql)) { $ok=false; break; };
+               fputs($f,$transID.",".$artID.",'".$zeile["Artikelname"]."',".$zeile["Anzahl"].",".$preis."\n");
+               echo "-".$artID." ".$zeile["Anzahl"]." x ".$preis." ".$zeile["Artikelname"]."<br>";
+       }
+       if ($zeile["Versandkosten"]) {
+               $rc=sonderkosten($transID,$zeile["Versandkosten"],"versand",$f);
+       }
+       if ($zeile["Nachnamebetrag"]) {
+               $rc=sonderkosten($transID,$zeile["Nachnamebetrag"],"nachn",$f);
+       }       
+       if ($zeile["Mindermengenzuschlag"]) {
+               $rc=sonderkosten($transID,$zeile["Mindermengenzuschlag"],"minder",$f);
+       }       
+       if ($zeile["Treuhandkosten"]) {
+               $rc=sonderkosten($transID,$zeile["Treuhandkosten"],"treuh",$f);
+       }       
+       if ($zeile["Paypalkosten"]) {
+               $rc=sonderkosten($transID,$zeile["Paypalkosten"],"paypal",$f);
+       }       
+       if ($ok) {
+               $sql="update bestellung set Bestellung_bezahlt='Y' WHERE Bestellungs_ID =$BID";
+               $rc=$db->query($sql);
+               fputs($f,"ok\n");
+               return true;
+       } else {
+               $sql="delete from orderitems where trans_id=$transID";
+               $rc=$db->query($sql);
+               $sql="delete from oe where id=$transID";
+               $rc=$db->query($sql);
+               fputs($f,"Fehler (insBestArtikel)!!!!\n");
+               return false;
+       }
+}
+function getBestellung_() {
+global $db,$db2,$ERPusr,$f;
+       $sql="select * from bestellung where Bestellung_bezahlt='N' order by Bestellungs_ID";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       $ok=true;
+       foreach ($rs as $zeile) {
+               $kdnr=getBestellKunde($zeile["Bestellungs_ID"]);
+               $newID=uniqid (rand());
+               $sql="insert into oe (notes) values ('$newID')";
+               $rc=$db2->query($sql);
+               $sql="select * from oe where notes = '$newID'";
+               $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+               $Bezahlung=$zeile["Bezahlungsart"];
+               if ($Bezahlung=="Lastschrift") {
+                       $sql="select * from kunde where Kunden_Nr=$kdnr";
+                       $kd=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+                       $Bezahlung.="\nKontoinhaber: ".$kd[0]["kontoinhaber"]."\n";
+                       $Bezahlung.="Bankname: ".$kd[0]["bankname"]."\n";
+                       $Bezahlung.="Blz: ".$kd[0]["blz"]."\n";
+                       $Bezahlung.="KontoNr: ".$kd[0]["kontonummer"];
+               }
+               $sql ="update oe set ordnumber=".$zeile["Bestellungs_ID"].", transdate='".$zeile["Datum"]."', intnotes='".$zeile["Anmerkung"];
+               $sql.="', customer_id=$kdnr, amount=".($zeile["Rechnungsbetrag"]+$zeile["MwSt"]).", netamount=".$zeile["Rechnungsbetrag"];
+               $sql.=", reqdate='".$zeile["Datum"]."', notes='$Bezahlung', taxincluded='f', curr='EUR',employee_id=".$ERPusr["ID"].", vendor_id=0 ";
+               $sql.="where id=".$rs2[0]["id"];
+               $rc=$db2->query($sql);
+               fputs($f,"ordnumber=".$zeile["Bestellungs_ID"].", transdate='".$zeile["Datum"]."', customer_id=$kdnr, amount=".($zeile["Rechnungsbetrag"]+$zeile["MwSt"]).", notes=".$zeile["Bezahlungsart"]."\n");
+               echo $rs2[0]["id"]."<br>";
+               if (!insBestArtikel($zeile,$rs2[0]["id"])) { $ok=false; break; };
+       }
+       return $ok;
+}
+function chkKdData($data) {
+global $db2;
+       $sql="select * from customer where id = ".$data["Kunden_Nr"];
+       $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($rs[0]["zipcode"]<>$data["Plz"]) $set.="zipcode='".$data["Plz"]."',";
+       if ($rs[0]["city"]<>$data["Ort"]) $set.="city='".$data["Ort"]."',";
+       if ($rs[0]["land"]<>$data["Land"]) $set.="land='".$data["Land"]."',";
+       if ($rs[0]["phone"]<>$data["Tel"])$set.="phone='".$data["Tel"]."',";
+       if ($rs[0]["fax"]<>$data["Fax"])  $set.="fax='".$data["Fax"]."',";
+       if ($rs[0]["email"]<>$data["Email"])$set.="email='".$data["Email"]."',";
+       if ($rs[0]["notes"]<>$data["Beschreibung"])$set.="notes='".$data["Beschreibung"]."',";
+       if ($data["Firma"]) {
+               if ($rs[0]["name"]<>$data["Firma"]) $set.="set name='".$data["Firma"]."',";
+               if ($rs[0]["name2"]<>$data["Anrede"]." ".$data["Vorname"]." ".$data["Nachname"]) $set.="name2='".$data["Anrede"]." ".$data["Vorname"]." ".$data["Nachname"]."',";
+       } else {
+               if ($rs[0]["name"]<>$data["Nachname"].", ".$data["Vorname"]) $set.="set name='".$data["Nachname"].", ".$data["Vorname"]."',";
+       }
+       if ($data["Strasse"]) {
+               if ($rs[0]["street"]<>$data["Strasse"]) $set.="street='".$data["Strasse"]."',";
+       } else if ($data["Postfach"]) {
+               if ($rs[0]["street"]<>$data["Postfach"]) $set.="street='".$data["Postfach"]."',";
+       };
+       if ($set) {
+               $sql="update customer set ".substr($set,0,-1)." where id=".$rs[0]["id"];
+               $rc=$db2->query($sql);
+       }
+}
+function insKdData($data) {
+global $db2;
+       $newID=$data["Kunden_ID"];
+       $sql="insert into customer (name) values ('$newID')";
+       $rc=$db2->query($sql);
+       $sql="select * from customer where name = '$newID'";
+       $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($data["Firma"]) { $set.="set name='".$data["Firma"]."',name2='".$data["Anrede"]." ".$data["Vorname"]." ".$data["Nachname"]."',"; }
+       else { $set.="set name='".$data["Nachname"].", ".$data["Vorname"]."',"; }
+       if ($data["Strasse"]) { $set.="street='".$data["Strasse"]."',"; }
+       else if ($data["Postfach"]) { $set.="street='".$data["Postfach"]."',"; };
+       $set.="zipcode='".$data["Plz"]."',";
+       $set.="city='".$data["Ort"]."',";
+       $set.="land='".$data["Land"]."',";
+       $set.="phone='".$data["Tel"]."',";
+       $set.="fax='".$data["Fax"]."',";
+       $set.="email='".$data["Email"]."',";
+       $set.="notes='".$data["Beschreibung"]."',";
+       $set.="taxincluded='f' ";
+       $sql="update customer ".$set;
+       $sql.="where id=".$rs[0]["id"];
+       $rc=$db2->query($sql);
+       return $rs[0]["id"];
+}
+function checkKunde() {
+global $db,$f;
+       $sql="select * from kunde left join bestellung_kunde on FK_Kunden_ID=Kunden_ID left join bestellung on Bestellungs_ID=FK_Bestellungs_ID where Bestellung_bezahlt='N'";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       $ok=true;
+       $anzahl=count($rs);
+       $neu=0; $old=0;
+       foreach ($rs as $zeile) {
+               if ($zeile["Kunden_Nr"]>0) {
+                       chkKdData($zeile);
+                       $old++;
+               } else {
+                       $zeile["Kunden_Nr"]=insKdData($zeile);
+                       if ($zeile["Kunden_Nr"]>0) {
+                               $sql="update kunde set Kunden_Nr='".$zeile["Kunden_Nr"]."' where k_ID=".$zeile["k_ID"];
+                               $rc=$db->query($sql);
+                       } else {
+                               $ok=false; break;
+                       }
+                       $neu++;
+               }
+               fputs($f,$zeile["Nachname"]." ".$zeile["Firma"]."\n");
+               fputs($f,"\n----------------------------------------\n\n");
+       }
+       return ($ok)?array($anzahl,$neu,$old):false;
+}
+
+function savedata($str) {
+global $f;
+       foreach ($str as $val) {
+               $str.=$val.",";
+       }
+       fputs($f,substr($str,0,-1)."\n");
+}
+
+$f=fopen("./module/export_to_erp/tmp/".date("y-m-dH:i").".shop","w");
+$ok=checkBestellung("N");
+if ($ok) {
+       echo "Es liegen $ok Bestellungen vor. <br>";
+       fputs($f,"Es liegen $ok Bestellungen vor. \n");
+       $ok=checkKunde();
+       if ($ok) {
+               echo $ok[0]." Kunden, davon ".$ok[1]." neue(r) Kunde(n).<br>";
+               fputs($f,$ok[0]." Kunden, davon ".$ok[1]." neue(r) Kunde(n).\n");
+               $ok=getBestellung_();
+               if ($ok) { echo "Daten transferiert!";  fputs($f,"Daten transferiert!\n");}
+               else { echo "Fehler (Bestellungen)! ! ! ";   fputs($f,"Fehler (Bestellungen)! ! !\n");};
+       } else {
+                echo "Fehler (Kunden)! ! ! ";   fputs($f,"Fehler (Kunden)! ! !\n");
+       }
+} else { echo "Keine Bestellungen!<br>";  fputs($f,"keine Bestellungen\n");};
+
+fclose($f);
+
+if ($backlink == 6) {
+    echo "<button type='button' onClick='self.location.href=\"./module_admin_aufruf.php?darstellen=6\"'>Zur&uuml;ck zur Moduladministration</button>";
+}
+else {
+    echo "<button type='button' onClick='self.location.href=\"./module_admin_aufruf.php?darstellen=1&".urlencode($window_source)."=".urlencode($previous_selected_module)."\"'>Zur&uuml;ck zur Modulverwaltung</button>";
+}
+
+?>
+</body>
+</html>
diff --git a/pepper/export_to_erp/initialize_module.php b/pepper/export_to_erp/initialize_module.php
new file mode 100644 (file)
index 0000000..34c120b
--- /dev/null
@@ -0,0 +1,253 @@
+<?php
+// Filename: initialize_module.php
+//
+// Modul: Externes PhPepperShopmodul: log_viewer
+//
+// Autoren: José Fontanil & Reto Glanzmann
+//
+// Zweck: Definition des Log-Viewer Moduls
+//
+// Sicherheitsstatus:                     *** ADMIN ***
+//
+// Version: 1.5\r
+//
+// CVS-Version / Datum: $Id: initialize_module.php,v 1.1 2004/06/29 08:47:16 hli Exp $ $Dl: 26.05.04 11:20:43$
+//
+// -----------------------------------------------------------------------
+// PhPepperShop Shopsystem
+// Copyright (C) 2001-2004  Jose Fontanil, Reto Glanzmann
+// 
+// Lizenz
+// ======
+// 
+// Die verbindliche PhPepperShop Lizenz ist in folgender 
+// Datei definiert: PhPepperShop_license.txt
+// -----------------------------------------------------------------------
+// API Version der hier verwendeten PhPepperShop Modulschnittstelle:
+$pps_module_api = '1.0';
+
+// Informationen zu externen PhPepperShop Modulen:
+// ===============================================
+// Module bestehen meistens aus zwei Verzeichnissen: {shopdir}/shop/module/modul_name
+// und {shopdir}/shop/Admin/module/modul_name. Im Admin-Modulverzeichnis muss mindestens
+// diese Datei (initialize_module.php) vorhanden sein. Es gibt auch reine Administrations-
+// module, welche nur Dateien im Admin-Unterverzeichnis haben und keine Dateien im kunden-
+// seitigen Verzeichnis benoetigen.
+// - Ein Modul kann aber ohne weiteres auch eigene Unterverzeichnisse besitzen, sowie auch
+//   Submodule haben.
+// - Damit Module Daten persistent speichern koennen, duerfen sie waehrend der Installation
+//   eigene Tabellen erstellen und bestehende um eigene Attribute erweitern. Bei einer De-
+//   installation werden diese Datenbankerweiterungen wieder entfernt.
+// - User-Security Scripte befinden sich in {shopdir}/shop/module/modul_name,
+//   die Admin-Security-Scripts befinden sich im Admin-Pendant.
+// - Module koenne (zumindest im Moment) noch keine eigenen Interfaces haben.
+// - Module koennen weitere Module als Voraussetzung angeben.
+
+// Definition der Variablen:
+// =========================
+// Die weiter unten definierten Variablen dienen der Beschreibung des Moduls. Diese muss
+// sehr ausfuehrlich sein, damit das automatisierte Installations- und Deinstallationsscript
+// durchlaufen kann. Nomenklatur:
+// x.) Bezeichnung    : Leitet eine weitere Definition ein. x ist eine Laufnummer
+// ! Beschreibung     : Beschreibung umschreibt Hinweise zum Thema der Bezeichnung
+// --> Einschraenkung : Mit --> werden ZWINGEND ZU BEFOLGENDE Einschraenkungen der Bezeichnung genannt
+
+// --------------------------------------------------------------------------------------
+// ******************************* DEFINITION DES MODULS *******************************
+// --------------------------------------------------------------------------------------
+
+//  1.) Name des Moduls (entspricht dem Verzeichnisname des Moduls)
+//      --> Der Name eines externen PhPepperShop Moduls darf hoechstens 40 Zeichen lang sein.
+//      --> Der Name muss mindestens 3 Zeichen lang sein.
+//      --> Er darf NUR aus alphanummerischen Zeichen und dem Underscore Zeichen (_) bestehen.
+//      --> Dieser Name ist gleichzeitig auch der Name des Verzeichnisses des Moduls.
+$moduldef['modulname'] = 'export_to_erp';
+
+// 2.) Bezeichnung des Moduls
+//      ! Dies ist die Bezeichnung des Moduls und unterliegt somit weniger Restriktionen als der Modulname
+//      --> Der Name darf hoechstens 40 Zeichen lang sein
+//      --> Der Name muss mindestens 3 Zeichen lang sein.
+$moduldef['modulbezeichnung'] = 'ERP Export';
+
+// 3.) Versionschecknummern
+//      ! Diese Nummern definieren die zu verwendende PhPepperShop Versionen. Die Versionisierung
+//        ist wie folgt: Die erste und zweite Nummer (durch Punkt getrennt) ergeben ein Release.
+//        Jedes unterstuetzte Release muss explizit angegeben werden. Die dritte (durch einen
+//        Punkt getrennte Nummer (eigentlich ein String), definiert Versionen des Releases. Alle
+//        Versionen eines Releases sind kompatibel, es sei denn man definiert auch die Versions-
+//        Nummer, dann sind alle aelteren Versionen des angegebenen Releases inkompatibel.
+//        Bsp. 1.4;1.5     = Das Modul ist kompatibel zu den Releases 1.4 und 1.5. Dies schliesst auch
+//                           alle Versionen der beiden Releases mit ein: 1.4.003, 1.4.004, 1.5.1, ...
+//        Bsp. 1.4.005;1.5 = Hier sind alle Versionen von 1.4 mit und nach 1.4.005 kompatibel und
+//                           alle Versionen von 1.5.
+//      ! Achtung: Man sollte keine zukuenftigen Releases angeben!
+//      --> Einzelne Versionen via Strichpunkt getrennt eingeben.
+$moduldef['versionschecknummern'] = '1.4.008;1.5';
+
+//  4.) Kurzbeschreibung
+//      ! Formatierungen sollen via HTML-Tags eingegeben werden.
+$moduldef['kurzbeschreibung'] = 'Eportiert Kundendaten und Bestellungen f&uuml;r Lx-Office ERP.
+                                Neukunden werden in der ERP angelegt und die ERP-KdNr in Kundendaten eingepflegt,
+                                bei Bestandskunden werden die Kundendaten abgeglichen.
+                                Das Feld "Bestellung_bezahlt" ist der Merker f&uuml;r neue Bestellungen.
+                                ';
+
+//  5.) Weiterfuehrender Link
+//      ! Wenn dieser (optionale) Link angegeben ist, so kann der Shopadmin hier weitere Infos zum Modul holen.
+//      --> Das Schema muss vor der URL angegeben werden (Schema = http:// oder https://, ...)
+$moduldef['weitere_infos_link'] = 'http://www.lx-office.org/';
+
+//  6.) Version dieses Moduls
+$moduldef['modulversion'] = '0.3';
+
+//  7.) Releasedatum dieser Modulversion
+//      --> Format: TT.MM.JJJJ
+$moduldef['releasedatum'] = '17.12.2004';
+
+//  8.) Informationen zu den Entwicklern
+//      ! Beispiel: José Fontanil <fontajos@phpeppershop.com>. Strings in <> werden als E-Mail angezeigt.
+$moduldef['entwickler_infos'] = 'Holger Lindemann, Lx-System';
+
+//  9.) Ist Submodul von
+//      ! Hier kann man den Modulnamen (nicht die Modulbezeichnung!) des Hauptmoduls angeben, falls dieses
+//        Modul hier ein Submodul des Hauptmoduls ist.
+//      --> Der Name eines externen PhPepperShop Moduls darf hoechstens 40 Zeichen lang sein.
+//      --> Der Name muss mindestens 3 Zeichen lang sein.
+//      --> Er darf nur aus alphanummerischen Zeichen und dem Underscore Zeichen (_) bestehen.
+//      --> Dieser Name ist gleichzeitig auch der Name des Verzeichnisses des HAUPTmoduls.
+$moduldef['submodule_of'] = '';
+
+// 10.) Fingerprint
+//      ! Im Moment noch nicht benutzt - Spaeter wird hier ein MD5 Digest hinterlegbar sein, welcher dem
+//        Shopadministrator erlaubt die Integritaet eines Moduls zu ueberpruefen.
+//      --> MD5 Digest (32 Chars Laenge, Hexadezimales Alphabet)
+$moduldef['fingerprint'] = '32fedef6229faab095a47718bac5d666';
+
+// 11.) Unterstuetzte Locales (Sprachen und optional Laender) - dient (vorerst) nur zur Anzeige fuer den Shopadmin
+//      --> Format: ISO-639-1 fuer alleinstehende Sprachen (Bsp. de;en;fr;sp;...)
+//      --> Format: ISO-639-2 fuer Sprachen inkl. Laender (Bsp. de_CH;de_DE;en_GB;en_US)
+//      --> Wenn das Modul weder Sprach-, noch Laenderabhaengig ist kann all angegeben werden.
+//      --> Die einzelnen Angaben koennen Strichpunkt separiert eingegeben werden. ISO-639-1 und -2 koennen gemixt werden.
+$moduldef['locales'] = 'all';
+
+// 12.) Interfaces, bei welchen sich das Modul registrieren soll
+//      ! Dies ist ein etwas komplexerer Eingabetyp - es ist ein mehrdimensionaler Array - mehr nicht.
+//      ! Pro Interface, bei welchem sich das Modul registrieren will, sind vier Angaben noetig:
+//        (1) Interface_ID, (2) Datei, worin sich die auszufuehrende Funktion befindet,
+//        (3) Name der auszufuehrenden Funktion, (4) Filtertyp
+//      --> Format: array('i_id'=>'w','file'=>'x','func'=>'y','filter'=>'z')
+//          --> w = Interface_ID, Format: positive Integerzahl (max. Digits == 11)
+//          --> x = Dateiname, Format: Dateiname.Extension (kein Pfad)
+//          --> y = Funktionsname, Format: Name der Funktion ohne Klammern mit Argumenten
+//          --> z = Filtertyp, Format: one_way oder filter
+// Registrierung beim ersten Interface:
+$moduldef['interfaces'] = array();
+
+// 13.) Eigene Tabellen, welche angelegt werden sollen
+//      ! Hier werden die eigens fuer dieses Modul zu erstellenden Tabellen angegeben
+//      ! Wenn keine Tabellen erstellt werden muessen, einfach leerer Array definieren
+//      --> Achtung: Eine Tabelle muss mindestens EIN Attribut besitzen, sonst wird sie nicht angelegt.
+//      --> Format: array('table_name'=>'x','table_beschreibung'=>'y','attribute'=>z)
+//          --> x = Name der Tabelle: MySQL Restriktionen (max. 64 Zeichen, keine Sonderzeichen, ...)
+//          --> y = Beschreibung der Tabelle: Alphanummerische Zeichen, Kurzbeschrieb des Zwecks
+//          --> z = Die Attribute der Tabelle, Format:
+//                  array('name'=>a,'typ'=>b,'laenge'=>c,'zusatz'=>d,'null'=>e,'default'=>f,'extra'=>g,
+//                        'primary'=>h,'index'=>i,'unique'=>j,'volltext'=>k,'beschreibung'=>l)
+//                  --> a = Name des Attributs: (Alphanummerische Zeichen, siehe reservierte Woerter von MySQL)
+//                  --> b = Typ: Datentyp dieses Tabellenattributs (z.B. int, varchar, text, ...)
+//                  --> c = Laenge: Positive Integerzahl oder leer lassen (manchmal auch als maxlength interpretiert)
+//                  --> d = Zusatz: '' | 'BINARY' | 'UNSIGNED' | 'UNSIGNED ZEROFILL'
+//                  --> e = Null Setting: 'NULL | 'NOT NULL'
+//                  --> f = Default: Defaultwert bei Neuerstellung in einer Zeile (max. Zeichenlaenge = 255)
+//                  --> g = Extra: '' | 'auto_increment'
+//                  --> h = Primary: '0' = ist NICHT Primary Key | '1' = IST Primary Key
+//                  --> i = Index: '0' = Nein | '1' = Ja
+//                  --> j = Unique: '0' = Nein | '1' = Ja
+//                  --> k = Volltext Index: '0' = Nein | '1' = Ja (nicht bei allen Typen moeglich)
+//                  --> l = Beschreibung: Wird nur hier und im Modulprozess verwendet (max. Chars = 255)
+// Beschreibung der ersten eigenen Tabelle:
+$moduldef['eigene_tabellen'] = array();
+
+// 14.) Zu erweiternde, schon bestehende Tabellen
+//      ! Hier werden die Tabellen beschrieben, welche schon existieren und durch weitere Attribute
+//        erweitert werden sollen.
+//      ! Wenn keine Tabellen erweitert werden sollen, einfach leerer Array definieren
+//      --> Format: Dasselbe Format wie bei $moduldef['eigene_tabellen']. Die Beschreibung
+//                  einer schon bestehenden Tabelle wird ignoriert, der Name muss aber stimmen.
+$moduldef['erweiterte_tabellen'] = array();
+
+// 15.) Submodule
+//      ! Wenn dieses Modul aus mehreren weiteren Modulen besteht, so koennen diese hier angegeben werden.
+//      ! Wenn keine Submodule existieren, einfach einen leeren String angeben.  (Strichpunkt getrennte Liste)
+//      --> Format: 'submodul_name_1;submodul_name2;...;submodul_namex'
+$moduldef['submodule'] = '';
+
+// 16.) Vorausgesetzte Module
+//      ! Hier werden Module angegeben, welche korrekt installiert vorhanden sein muessen, damit dieses
+//        Modul ueberhaupt erst installiert wird. (Strichpunkt getrennte Liste)
+//      ! Wenn keine solchen Module gibt, einfach einen leeren String uebergeben
+//      --> Format: 'required_modul_name_1;required_modul_name2;...;required_modul_namex'
+$moduldef['required_modules'] = '';
+
+// 17.) Security ID
+//      ! Mit der Security_ID kann man dem Modul den Zugang zu verschiedenen Interfaces sperren.
+//        Auf diese Weise kann ein kompromittiertes Modul nur begrenzt Schaden anrichten.
+//      ! Die niedrigste Stufe der Security_ID ist = 1, die höchste Stufe = 32768. Je hoeher die
+//        angegebene Security_ID ist, desto höher ist auch die Zahl der erlaubten Interfaces
+//      ! Welches Interface, welche minimale Security_ID erfordert um benutzt werden zu koennen,
+//        ist in der Tabelle module_interfaces mit den Interfaceeintraegen ersichtlich.
+//      --> Format: 'required_modul_name_1;required_modul_name2;...;required_modul_namex'
+$moduldef['security_id'] = '1';
+
+// 18.) Valid Hosts
+//      ! Erweiterte Security wird es in der naechsten API-Version noch mit der valid_hosts Angabe geben.
+//        Die Datenbank ist dafuer schon vorbereitet. (all = Alle Hosts, im Moment die Standardeinstellung)
+//        Ausgewertet wird die Angabe aber noch nicht.
+//      --> Format: all = Alle hosts | localhost = nur dieser Rechner | mehrere Rechner via ; getrennt angeben
+$moduldef['valid_hosts'] = 'all';
+
+// 19.) Name des Administrationsmenus
+//      ! Im Administrationstool hat das Verwaltungsmenu dieses Moduls einen Namen, hier kann man
+//        einen Namen definieren, wenn man keinen angibt, wird einfach die Modulbezeichnung verwendet
+//      --> Format: Maximale Laenge 40 Zeichen, moeglichst keine Sonderzeichen verwenden
+$moduldef['admin_menu_name'] = 'ERP Export';
+
+// 20.) URL zur Datei, wo das Admin-Verwaltungsmenu liegt
+//      ! Diese URL ist entweder absolut oder (besser) relativ zum {shopdir}/shop/Admin/module/modul_name Verzeichnis
+//        Die hier angegebene Datei wird 'verlinkt' und mit dem in 'admin_menu_name' Namen versehen.
+//        Info: Achtung: Jeder Link in dieser Datei muss folgende GET-Parameter mitgeben:
+//        - darstellen=".$HTTP_GET_VARS['darstellen']
+//        - installed_selection=".$HTTP_GET_VARS['installed_selection']
+//        - backlink=".$HTTP_GET_VARS['backlink']
+//      --> Format: URL
+//$moduldef['admin_menu_link'] = 'show_log_viewer.php';
+$moduldef['admin_menu_link'] = 'export_to_erp.php';
+
+// 21.) URL zum Icon des Adminmenus
+//      ! Diese URL ist relativ zum {shopdir}/shop/Admin/ Verzeichnis (sonst gibt es einen include-Fehler
+//        Die hier angegebene Datei wird 'verlinkt' und mit dem in 'admin_menu_name' Namen versehen.
+//      --> Format: URL
+//      --> Format Icon: 48px x 48px, GIF oder PNG oder JPG.
+$moduldef['admin_menu_img'] = 'modul_admin_img.gif';
+
+// --------------------------------------------------------------------------------------
+// ***************************** ENDE DEFINITION DES MODULS *****************************
+// --------------------------------------------------------------------------------------
+
+
+// Bitte unterhalb dieser Zeile keine Aenderungen mehr vornehmen.
+
+
+// -----------------------------------------------------------------------
+// Damit jedes andere Modul ueberpruefen kann ob dieses hier schon "included" ist
+// wird folgende Vairable auf true gesetzt (Name = Ext. Modulname + Dateiname ohne .php)
+$module_name_inkl_prefix = $module_modulname.'_initialize_module';
+$$module_name_inkl_prefix = true;
+
+// 'Mitsenden' der hier verwendeten API-Version
+$moduldef['pps_module_api'] = $pps_module_api;
+
+// Moduldefinitionsarray loeschen und somit den Speicher wieder freigeben
+
+// End of file -----------------------------------------------------------
+?>
diff --git a/pepper/export_to_erp/modul_admin_img.gif b/pepper/export_to_erp/modul_admin_img.gif
new file mode 100644 (file)
index 0000000..ad36d0c
Binary files /dev/null and b/pepper/export_to_erp/modul_admin_img.gif differ
diff --git a/pepper/handbuch.pdf b/pepper/handbuch.pdf
new file mode 100644 (file)
index 0000000..b238af3
Binary files /dev/null and b/pepper/handbuch.pdf differ
diff --git a/pepper/menu.ini b/pepper/menu.ini
new file mode 100644 (file)
index 0000000..6db3fde
--- /dev/null
@@ -0,0 +1,12 @@
+
+[Shop]
+
+[Shop--Warenexport]
+module=pepper/shopimport_db.php
+
+[Shop--Bestellungen]
+module=pepper/pepperexport.php
+
+[Shop--Konfiguration]
+module=pepper/confedit.php
+
diff --git a/pepper/pepperexport.php b/pepper/pepperexport.php
new file mode 100644 (file)
index 0000000..4ed5f43
--- /dev/null
@@ -0,0 +1,314 @@
+<?
+/***************************************************************
+* $Id: pepperexport.php,v 2.0 2006/02/06 13:49:11 hli Exp $
+*Author: Holger Lindemann
+*Copyright: (c) 2004 Lx-System
+*License: non free
+*eMail: info@lx-system.de
+*Version: 1.3.0
+*Shop: PHPeppershop 2.0
+*ERP: Lx-Office ERP >= 2.2.0
+***************************************************************/
+?>
+<html>
+       <head><title>Lx-ERP Export der Shopartikel</title>
+       <link type="text/css" REL="stylesheet" HREF="css/main.css"></link>
+<body>
+
+<?php
+require_once "DB.php";
+require_once "conf.php";
+$db=DB::connect($SHOPdns);
+if (!$db) dbFehler("",$db->getDebugInfo());
+if (DB::isError($db)) {
+       dbFehler("",$db->getDebugInfo());
+       die ($db->getDebugInfo());
+};
+$db2=DB::connect($ERPdns);
+if (!$db2) dbFehler("",$db2->getDebugInfo());
+if (DB::isError($db2)) {
+       dbFehler("",$db2->getDebugInfo());
+       die ($db2->getDebugInfo());
+};
+/****************************************************
+* dbFehler
+* in: sql,err = string
+* out:
+* Fehlermeldungen ausgeben
+*****************************************************/
+function dbFehler($sql,$err) {
+global $showErr;
+       if ($showErr)
+               echo "</td></tr></table><font color='red'>$sql : $err</font><br>";
+}
+function checkBestellung($status) {
+global $db;
+       if ($status=="B") { $where="";}  // B = alle Bestellungeb, N = neue, Y = alte
+       else { $where="where Bestellung_bezahlt = '$status'";}
+       $sql="select * from bestellung $where and Datum is not null  and Bestellung_abgeschlossen = 'Y' order by Datum";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       return (count($rs)>0)?count($rs):false;
+}
+function getBestellKunde($BID) {
+global $db;
+       $sql="select * from kunde left join bestellung_kunde on Kunden_ID=FK_Kunden_ID where  FK_Bestellungs_ID=$BID";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       return $rs[0]["Kunden_Nr"];
+}
+function sonderkosten($transID,$data,$id,$f) {
+global $db2,$versand,$nachn,$minder,$treuh,$paypal;
+       $sql="insert into orderitems (trans_id, parts_id, description, qty, sellprice, unit, ship, discount) values (";
+       $sql.=$transID.",".${$id}["ID"].",'".${$id}["TXT"]."',1,".$data.",'mal',0,0)";
+       fputs($f,"$transID,".${$id}["ID"].",'".${$id}["TXT"]."',1,$data\n");
+       if (!$db2->query($sql)) { return false; }
+       else { return true; };
+}
+function insBestArtikel($zeile,$transID) {
+global $db,$db2,$div07,$div16,$f,
+       $versandID,$nachnID,$minderID,$treuhID,$paypalID;
+       $BID=$zeile["Bestellungs_ID"];
+       $sql ="select * from artikel left join artikel_bestellung on Artikel_ID=FK_Artikel_ID ";
+       $sql.="left join bestellung on Bestellungs_ID=FK_Bestellungs_ID where Bestellungs_ID=$BID";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       $ok=true;
+       foreach ($rs as $zeile) {
+               $sql="select * from parts where partnumber='".$zeile["Artikel_Nr"]."'";
+               $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+               if ( $rs2[0]["id"]) {$artID=$rs2[0]["id"]; }
+               else { $artID=($zeile["MwSt_Satz"]=="7")?$div07["ID"]:$div16["ID"]; };
+               //$preis=round($zeile["Preis"]/($zeile["MwSt_Satz"]+100)*100,2);
+               $preis=$zeile["Preis"];
+               $notes=$zeile["Artikelname"];
+               $vari=split(chr(254),$zeile["Variation"]);
+               if ($vari) { for($cnt=0; $cnt<count($vari); $cnt++) {
+                               $notes.="\n".$vari[$cnt];
+                               $cnt++;
+                               $preis+=trim($vari[$cnt]) * $zeile["Anzahl"];
+                       }
+               };
+               $opts=split(chr(254),$zeile["Optionen"]);
+               if ($opts) { for($cnt=0; $cnt<count($opts); $cnt++) {
+                               $notes.="\n".$opts[$cnt];
+                               $cnt++;
+                               $preis+=trim($opts[$cnt]) * $zeile["Anzahl"];
+                       }
+               }
+               if ($zeile["Zusatztexte"]) {
+                       $zusatz=strtr($zeile["Zusatztexte"],"þ","\n");
+                       $notes.="\n".$zusatz;
+               }
+               $sql="insert into orderitems (trans_id, parts_id, description, qty, sellprice, unit, ship, discount) values (";
+               $sql.=$transID.",".$artID.",'".$notes."',".$zeile["Anzahl"].",".$preis.",'Stck',0,0)";
+               $rc=$db2->query($sql);
+               if (!$rc) { $ok=false; break; };
+               fputs($f,$transID.",".$artID.",'".$zeile["Artikelname"]."',".$zeile["Anzahl"].",".$preis."\n");
+               echo " - Artikel:[ BuNr.:$artID ArtNr:<b> ".$zeile["Anzahl"]." x ".$zeile["Artikel_Nr"]."</b> :".$zeile["Artikelname"]." ]<br>";
+       }
+       if ($zeile["Versandkosten"] && $ok) {
+               $ok=sonderkosten($transID,$zeile["Versandkosten"],"versand",$f);
+       }
+       if ($zeile["Nachnamebetrag"] && $ok) {
+               $ok=sonderkosten($transID,$zeile["Nachnamebetrag"],"nachn",$f);
+       }
+       if ($zeile["Mindermengenzuschlag"] && $ok) {
+               $ok=sonderkosten($transID,$zeile["Mindermengenzuschlag"],"minder",$f);
+       }
+       if ($zeile["Treuhandkosten"] && $ok) {
+               $ok=sonderkosten($transID,$zeile["Treuhandkosten"],"treuh",$f);
+       }
+       if ($zeile["Paypalkosten"] && $ok) {
+               $ok=sonderkosten($transID,$zeile["Paypalkosten"],"paypal",$f);
+       }
+       if ($ok) {
+               $sql="update bestellung set Bestellung_bezahlt='Y' WHERE Bestellungs_ID =$BID";
+               $rc=$db->query($sql);
+               fputs($f,"ok\n");
+               return true;
+       } else {
+               $sql="delete from orderitems where trans_id=$transID";
+               $rc=$db->query($sql);
+               $sql="delete from oe where id=$transID";
+               $rc=$db->query($sql);
+               fputs($f,"Fehler (insBestArtikel)!!!!\n");
+               return false;
+       }
+}
+function getNextAnr() {
+global $db2;
+       $sql="select * from defaults";
+       $sql1="update defaults set sonumber=";
+       $rc=$db2->query("BEGIN");
+       $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+       $auftrag=$rs2[0]["sonumber"]+1;
+       $rc=$db2->query($sql1.$auftrag);
+       $rc=$db2->query("COMMIT");
+       return $auftrag;
+}
+function getNextKnr() {
+global $db2;
+       $sql="select * from defaults";
+       $sql1="update defaults set customernumber='";
+       $rc=$db2->query("BEGIN");
+       $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+       $kdnr=$rs2[0]["customernumber"]+1;
+       $rc=$db2->query($sql1.$kdnr."'");
+       $rc=$db2->query("COMMIT");
+       return $kdnr;
+}
+function getBestellung() {
+global $db,$db2,$ERPusr,$f,$preA,$auftrnr;
+       $sql="select * from bestellung where Bestellung_bezahlt='N' order by Bestellungs_ID";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       $ok=true;
+       foreach ($rs as $zeile) {
+               $kdnr=getBestellKunde($zeile["Bestellungs_ID"]);
+               echo "Kunde:[ Buchungsnummer:$kdnr ] ";
+               $newID=uniqid (rand());
+               if (ereg("&r=([0-9]+)",$zeile["Bestellung_string"],$refnr)) {
+                        $refnr=$refnr[1];
+                } else {
+                        $refnr=$zeile["Bestellungs_ID"];
+                }
+                if ($auftrnr) {
+                        $anr=$preA.getNextAnr();
+                } else {
+                        $anr=$preA.$refnr;
+                }
+                $sql="insert into oe (notes,ordnumber,cusordnumber) values ('$newID','$anr','$refnr')";
+               $rc=$db2->query($sql);
+               $sql="select * from oe where notes = '$newID'";
+               $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+               $Bezahlung=$zeile["Bezahlungsart"];
+               if ($Bezahlung=="Lastschrift") {
+                       $sql="select * from kunde where Kunden_Nr=$kdnr";
+                       $kd=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+                       $Bezahlung.="\nKontoinhaber: ".$kd[0]["kontoinhaber"]."\n";
+                       $Bezahlung.="Bankname: ".$kd[0]["bankname"]."\n";
+                       $Bezahlung.="Blz: ".$kd[0]["blz"]."\n";
+                       $Bezahlung.="KontoNr: ".$kd[0]["kontonummer"];
+               }
+               $sql ="update oe set transdate='".$zeile["Datum"]."', intnotes='".$zeile["Anmerkung"];
+               $sql.="', customer_id=$kdnr, amount=".$zeile["Rechnungsbetrag"].", netamount=".($zeile["Rechnungsbetrag"]-$zeile["MwSt"]);
+               $sql.=", reqdate='".$zeile["Datum"]."', notes='$Bezahlung', taxincluded='f', curr='EUR',employee_id=".$ERPusr["ID"].", vendor_id=0 ";
+               $sql.="where id=".$rs2[0]["id"];
+               $rc=$db2->query($sql);
+               fputs($f,"ordnumber=".$zeile["Bestellungs_ID"].", transdate='".$zeile["Datum"]."', customer_id=$kdnr, amount=".($zeile["Rechnungsbetrag"]+$zeile["MwSt"]).", notes=".$zeile["Bezahlungsart"]."\n");
+               echo "Auftrag:[ Buchungsnummer:".$rs2[0]["id"]." AuftrNr:<b>".$anr."</b> ]<br>";
+               if (!insBestArtikel($zeile,$rs2[0]["id"])) { $ok=false; echo " Fehler<br>"; break; } else { echo " ok<br>"; };
+       }
+       return $ok;
+}
+function chkKdData($data) {
+global $db2;
+       $sql="select * from customer where id = ".$data["Kunden_Nr"];
+       $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($rs[0]["zipcode"]<>$data["PLZ"]) $set.="zipcode='".$data["PLZ"]."',";
+       if ($rs[0]["city"]<>$data["Ort"]) $set.="city='".$data["Ort"]."',";
+       if ($rs[0]["country"]<>$data["Land"]) $set.="country='".$data["Land"]."',";
+       if ($rs[0]["phone"]<>$data["Tel"])$set.="phone='".$data["Tel"]."',";
+       if ($rs[0]["fax"]<>$data["Fax"])  $set.="fax='".$data["Fax"]."',";
+       if ($rs[0]["email"]<>$data["Email"])$set.="email='".$data["Email"]."',";
+       if ($rs[0]["notes"]<>$data["Beschreibung"])$set.="notes='".$data["Beschreibung"]."',";
+       if ($data["Firma"]) {
+               if ($rs[0]["name"]<>$data["Firma"]) $set.="set name='".$data["Firma"]."',";
+               if ($rs[0]["contact"]<>$data["Vorname"]." ".$data["Nachname"]) $set.="contact='".$data["Vorname"]." ".$data["Nachname"]."',";
+       } else {
+               if ($rs[0]["name"]<>$data["Nachname"].", ".$data["Vorname"]) $set.="set name='".$data["Nachname"].", ".$data["Vorname"]."',";
+       }
+       if ($data["Strasse"]) {
+               if ($rs[0]["street"]<>$data["Strasse"]) $set.="street='".$data["Strasse"]."',";
+       } else if ($data["Postfach"]) {
+               if ($rs[0]["street"]<>$data["Postfach"]) $set.="street='".$data["Postfach"]."',";
+       };
+       if ($set) {
+               $sql="update customer set ".substr($set,0,-1)." where id=".$rs[0]["id"];
+               $rc=$db2->query($sql);
+       }
+}
+function insKdData($data) {
+global $db2,$preK,$kdnum;
+       $newID=$data["Kunden_ID"];
+       if ($kdnum==1) {
+               $kdnr=$preK.getNextKnr();
+       } else {
+               $kdnr=$preK.$data["customers_id"];
+       }
+       $sql="insert into customer (name,customernumber) values ('$newID','$kdnr')";
+       $rc=$db2->query($sql);
+       $sql="select * from customer where name = '$newID'";
+       $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($data["Firma"]) { $set.="set name='".$data["Firma"]."',contact='".$data["Vorname"]." ".$data["Nachname"]."',"; }
+       else { $set.="set name='".$data["Nachname"].", ".$data["Vorname"]."',"; }
+       if ($data["Strasse"]) { $set.="street='".$data["Strasse"]."',"; }
+       else if ($data["Postfach"]) { $set.="street='".$data["Postfach"]."',"; };
+       $set.="zipcode='".$data["PLZ"]."',";
+       $set.="city='".$data["Ort"]."',";
+       $set.="country='".$data["Land"]."',";
+       $set.="phone='".$data["Tel"]."',";
+       $set.="fax='".$data["Fax"]."',";
+       $set.="email='".$data["Email"]."',";
+       $set.="notes='".$data["Beschreibung"]."',";
+       $set.="taxincluded='f' ";
+       $sql="update customer ".$set;
+       $sql.="where id=".$rs[0]["id"];
+       $rc=$db2->query($sql);
+       return $rs[0]["id"];
+}
+function checkKunde() {
+global $db,$f;
+       $sql="select * from kunde left join bestellung_kunde on FK_Kunden_ID=Kunden_ID left join bestellung on Bestellungs_ID=FK_Bestellungs_ID where Bestellung_bezahlt='N'";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       $ok=true;
+       $anzahl=count($rs);
+       $neu=0; $old=0;
+       foreach ($rs as $zeile) {
+               if ($zeile["Kunden_Nr"]>0) {
+                       chkKdData($zeile);
+                       $old++;
+               } else {
+                       $zeile["Kunden_Nr"]=insKdData($zeile);
+                       if ($zeile["Kunden_Nr"]>0) {
+                               $sql="update kunde set Kunden_Nr='".$zeile["Kunden_Nr"]."' where k_ID=".$zeile["k_ID"];
+                               $rc=$db->query($sql);
+                       } else {
+                               $ok=false; break;
+                       }
+                       $neu++;
+               }
+               fputs($f,$zeile["Nachname"]." ".$zeile["Firma"]."\n");
+               fputs($f,"\n----------------------------------------\n\n");
+       }
+       return ($ok)?array($anzahl,$neu,$old):false;
+}
+
+function savedata($str) {
+global $f;
+       foreach ($str as $val) {
+               $str.=$val.",";
+       }
+       fputs($f,substr($str,0,-1)."\n");
+}
+
+$f=fopen("tmp/".date("y-m-dH:i").".shop","w");
+$ok=checkBestellung("N");
+if ($ok) {
+       echo "Es liegen $ok Bestellungen vor. <br>";
+       fputs($f,"Es liegen $ok Bestellungen vor. \n");
+       $ok=checkKunde();
+       if ($ok) {
+               echo $ok[0]." Kunden, davon ".$ok[1]." neue(r) Kunde(n).<br>";
+               fputs($f,$ok[0]." Kunden, davon ".$ok[1]." neue(r) Kunde(n).\n");
+               $ok=getBestellung();
+               if ($ok) { echo "Daten transferiert!";  fputs($f,"Daten transferiert!\n");}
+               else { echo "Fehler (Bestellungen)! ! ! ";   fputs($f,"Fehler (Bestellungen)! ! !\n");};
+       } else {
+                echo "Fehler (Kunden)! ! ! ";   fputs($f,"Fehler (Kunden)! ! !\n");
+       }
+} else { echo "Keine Bestellungen!<br>";  fputs($f,"keine Bestellungen\n");};
+
+fclose($f);
+
+?>
+<!--br><a href="trans.php">zur&uuml;ck</a-->
+</body>
+</html>
diff --git a/pepper/readme.first b/pepper/readme.first
new file mode 100644 (file)
index 0000000..d074060
--- /dev/null
@@ -0,0 +1,85 @@
+Shop - Schnittstelle Lx-ERP <-> PHPeppershop
+
+
+Info:
+       Die Zusammenarbeit mit der Version 2.6.x wurde nicht getestet!
+
+       Die Anmeldung der Benutzer an LxO hat sich geändert. Auch wurde  Lagerwesen eingeführt.
+       Damit die Schnittstelle mit Version 2.6.0 und neuer funktioniert, sollten hier Anpassungen
+       durchgeführt werden.
+       
+
+Vorraussetzungen:
+       Lx-ERP Version >= 2.4.0 < 2.6.0
+       PHPeppershop 2
+       Pear DB, PHP-ImageMagick
+
+Installation:
+Das tar-File unterhalb vom Webserververzeichnis oder vom ERP-Verzeichnis entpacken.
+
+       $ cd /var/www/html
+       $ tar xzf /pfad/zu/pepper.tgz
+
+In das Verzeichnis oscomm wechseln und Schreibrechte auf die Datei conf.php und 
+die Verzeichnisse pepper und tmp für den Webbenutzer (apache,www-data,httpd) vergeben.
+
+       $ chown apache pepper
+       $ chown apache pepper/conf.php
+       $ chmod 600 pepper/conf.php
+       $ chown apache pepper/tmp
+
+Bitte zuerst einen Benutzer für die ERP anlegen, der mit der Schnittstelle benutzt 
+werden soll. Dann noch die Artikel 'Diverse 16%', 'Versandkosten' und 'Nachname' anlegen.
+Sollen 'PayPal','Mindermengenzuschlag' und '7%'-Artikel extra verwendet werden, legen Sie
+auch diese Artikel zunächst an.
+
+Im Browser dann folgende URL aufrufen:
+
+       http://webserver/pfad/pepperm/confedit.php
+
+       z.B.: http://localhost/pepperm/confedit.php
+
+Benutzer und Kennwort für die Erstinstallation sind:
+
+       pepper / pepper
+
+Die Maske sogfälltig ausfüllen.
+
+       db-Host         db-Server für die jeweilige Anwendung
+       Database        Namen der Datenbankinstanzen
+       db-User         Username und Kennwort für die jeweilige Instanz
+       User-ID         Mit dieser ID soll in die ERP geschrieben werden
+       CSV-Dir         hier wird die csv-Datei erwartet (Schreibrechte!)
+       Image-Dir       hier liegen die Bilder
+       ftp-Host        Webserver der jeweiligen Anwendung
+       ftp-User        Name und Kennwort für ftp-Zugang
+       ID-xxxx         Interne ID der Waren. Lx-ERP:
+       Shopsprache     Die Id der Voreingestellten Sprache. Nur für diese 
+                               werden die Artikel eingestellt.
+       Bildergröße     in Byte
+
+Das Formular abschicken. 
+
+Sollen später Änderungen durchgeführt werden, so muß bei der Anmeldung 
+der ERP-ftp-User als Benutzer verwendet werden.
+
+
+
+Fehlerquellen:
+Befinden sich ERP und Shop nicht auf dem gleichen Server, achten Sie darauf, das
+die entsprechende Datenbank von Aussen erreichbar ist. Dazu müssen folgende Ports 
+freigeschaltet werden:
+
+       MySQL           3306
+       PostgreSQL      5432
+
+Auch muß auf dem Shopserver ein ftp-Dienst eingerichtet werden, wenn Bilder über-
+tragen werden sollen. Die Firewal ist entsprechend anzupassen.
+
+Arbeiten:
+In der ERP kann nun bei den Artikeln das Häckchen Shop gesetzt werden.
+Bitte auch eine Warengruppe vergeben, da sonst alle Artikel in Default landen.
+Da die ERP nur eine Kategorieebene verwalten kann, muß der ganze Kategorienpfad
+hintelegt werden. Die einzelnen Kategorien werden durch Ausrufezeichen (!) getrennt.
+Die Hauptkategorie wird durch "[" und "]" eingeklammert.
+
diff --git a/pepper/s2e.gif b/pepper/s2e.gif
new file mode 100644 (file)
index 0000000..8361333
Binary files /dev/null and b/pepper/s2e.gif differ
diff --git a/pepper/shopimport_db.php b/pepper/shopimport_db.php
new file mode 100644 (file)
index 0000000..b078a3f
--- /dev/null
@@ -0,0 +1,262 @@
+<?php
+/***************************************************************
+* $Id: shopimport_db.php,v 1.5 2006/02/06 13:49:11 hli Exp $
+*Author: Holger Lindemann
+*Copyright: (c) 2004 Lx-System
+*License: non free
+*eMail: info@lx-system.de
+*Version: 1.0.0
+*Shop: PHPeppershop 2.0
+*ERP: Lx-Office ERP
+***************************************************************/
+require_once "conf.php";
+require_once "DB.php";
+
+$db=DB::connect($SHOPdns);
+if (!$db) dbFehler("",$db->getDebugInfo());
+if (DB::isError($db)) {
+       dbFehler("",$db->getDebugInfo());
+       die ($db->getDebugInfo());
+};
+$db2=DB::connect($ERPdns);
+if (!$db2) dbFehler("",$db2->getDebugInfo());
+if (DB::isError($db2)) {
+       dbFehler("",$db2->getDebugInfo());
+       die ($db2->getDebugInfo());
+};
+/****************************************************
+* dbFehler
+* in: sql,err = string
+* out:
+* Fehlermeldungen ausgeben
+*****************************************************/
+function dbFehler($sql,$err) {
+global $showErr;
+    if ($showErr)
+           echo "</td></tr></table><font color='red'>$sql : $err</font><br>";
+}
+
+// Ab hier Artikelexport aus ERP
+function shopartikel() {
+global $db2,$pricegroup;
+       if ($pricegroup>0) {
+               $sql="SELECT P.partnumber,P.description,P.weight,(t.rate * 100) as rate,G.price as sellprice,P.sellprice as stdprice, ";
+               $sql.="PG.partsgroup,P.notes,P.image,P.onhand FROM ";
+               $sql.="chart c left join tax t on c.taxkey_id=t.taxkey, parts P left join partsgroup PG on PG.id=P.partsgroup_id left join prices G on G.parts_id=P.id ";
+               $sql.="where P.shop='t' and c.id=p.income_accno_id  and (G.pricegroup_id=$pricegroup or G.pricegroup_id is null)";
+       } else {
+               $sql="SELECT P.partnumber,P.description,P.weight,(t.rate * 100) as rate,P.sellprice,PG.partsgroup,P.notes,P.image,P.onhand FROM ";
+               $sql.="chart c left join tax t on c.taxkey_id=t.taxkey, parts P left join partsgroup PG on ";
+               $sql.="PG.id=P.partsgroup_id where P.shop='t'  and c.id=p.income_accno_id";
+       }
+       $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
+       return $rs;
+}
+
+// Ab hier Import der Daten in den Shop
+function createCategory($name,$maingroup,$tab) {
+global $db,$langs;
+       $newID=uniqid(rand());
+       $sql="insert into kategorien (Bild_gross,Bild_last_modified) values ('$newID',now())";
+       $rc=$db->query($sql);
+       $sql="select * from kategorien where Bild_gross = '$newID'";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($rs) {
+               $id=$rs[0]["Kategorie_ID"];
+               $u=($maingroup=="Null")?"is Null":"=$maingroup";
+               $sql="select max(Positions_Nr) as Max from kategorien where  Unterkategorie_von $u";
+               $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+               $pos=$rs[0]["Max"]+1;
+               $sql="update kategorien set Unterkategorie_von=%s, Name='%s', Positions_Nr=%d,MwSt_Satz=%0.2f, Details_anzeigen='N', Bild_gross = Null where kategorie_ID=%d";
+               echo "($name) ";
+               $rc=$db->query(sprintf($sql,$maingroup,$name,$pos,$mwst,$id));
+               return ($rc)?$id:false;
+       } else {
+               return false;
+       }
+}
+function getCategory($name) {
+global $db;
+       if (empty($name)) $name="Default";
+       preg_match("/^(\[(.*)\])?([^!]+)!?(.*)/",$name,$ref);
+       if ($ref[1]<>""){
+               $tab=$ref[2];
+               $main=$ref[3];
+               if ($ref[4]<>"") {
+                       $sub=$ref[4];
+               } else {
+                       $sub=false;
+               }
+       } else if ($ref[3]<>"" and $ref[3]<>$ref[0]) {
+               $tab=false;
+               $main=$ref[3];
+               if ($ref[4]<>"") {
+                       $sub=$ref[4];
+               } else {
+                       $sub=false;
+               }
+       } else  {
+               $tab=false;
+               $sub=false;
+               if (substr($name,0,1)=="[") {
+                       $main="Default";                        
+               } else {
+                       $main=$name;
+               }
+       }
+       $found=true;
+       // suche die Hauptgruppe
+       $sql="select * from kategorien where Name like '".$main."' and  Unterkategorie_von is Null";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($rs[0]["Kategorie_ID"]) {  // gefunden
+               $maingroup=$rs[0]["Kategorie_ID"];
+       } else {                                        // nicht gefunden, anlegen
+               $maingroup=createCategory($main,"Null","$tab");
+       }
+       echo $maingroup.":".$main." ";
+       if ($sub && $maingroup) {
+               // suche Unterkategorie wenn eine gegeben
+               $sql="select * from kategorien where Name like '$sub' and  Unterkategorie_von = '$main'";
+               $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+               if ($rs[0]["Kategorie_ID"]) {  // gefunden
+                       $maingroup=$rs[0]["Kategorie_ID"];
+               } else {                                        // nicht gefunden, anlegen
+                       $maingroup=createCategory($sub,"'$main'","");
+               }
+       };
+       echo $sub." ";
+       return $maingroup;
+}
+function bilder($width,$height,$dest) {
+       if (!function_exists("imagick_readimage")) { echo "Imagick-Extention nicht installiert"; return false; };
+       $handle=imagick_readimage("./tmp/tmp.file_org");
+       if (!$handle) {
+               $reason      = imagick_failedreason( $handle ) ;
+               print "Lesen: $reason<BR>\n" ; flush();
+               return false;
+       }
+       if (!imagick_resize( $handle, $width, $height, IMAGICK_FILTER_UNKNOWN, 0)) {
+               $reason      = imagick_failedreason( $handle ) ;
+               print "Resize: $reason<BR>\n" ; flush();
+               return false;
+       }
+       if (!imagick_writeimage( $handle,"./tmp/tmp.file_$dest")) {
+               $reason      = imagick_failedreason( $handle ) ;
+               print "Schreiben: $reason<BR>\n" ;      flush();
+               return false;
+       }
+       return true;
+}
+function uploadImage($image,$ArtNr) {
+global $db,$ERPftphost,$ERPftpuser,$ERPftppwd,$ERPimgdir,
+                  $SHOPftphost,$SHOPftpuser,$SHOPftppwd,$SHOPimgdir,$iconsize;
+       if ($ERPftphost=="localhost") {
+               exec("cp $ERPimgdir/$image ./tmp/tmp.file_org",$aus,$rc2);
+               if ($rc2>0) { echo "[Downloadfehler: $image]<br>"; return false; };
+       } else {
+               $conn_id = ftp_connect($ERPftphost);
+               ftp_login($conn_id,$ERPftpuser,$ERPftppwd);
+               $src=$ERPimgdir."/".$image;
+               $upload=ftp_get($conn_id,"tmp/tmp.file_org","$src",FTP_BINARY);
+               if (!$upload) { echo "[Ftp Downloadfehler! $image]<br>"; return false;};
+               ftp_quit($conn_id);
+       };
+       bilder($iconsize,$iconsize,"smal");
+       $rc=preg_match("#(.+/)?([^\.]+)\.(.+)$#",$image,$treffer);
+       $gr=$treffer[2]."_gr.".$treffer[3];
+       $kl=$treffer[2]."_kl.".$treffer[3];
+       if ($SHOPftphost=="localhost") {
+               $dst=$SHOPimgdir."/".$gr;
+               exec("cp ./tmp/tmp.file_org $dst",$aus,$rc2);
+               if ($rc2>0) { echo "[Uploadfehler: $dst]<br>";  return false; };
+               $dst=$SHOPimgdir."/".$kl;
+               exec("cp ./tmp/tmp.file_smal $dst",$aus,$rc2);
+               if ($rc2>0) { echo "[Uploadfehler: $dst]<br>"; return false; };
+       } else {
+               $conn_id = ftp_connect($SHOPftphost);
+               ftp_login($conn_id,$SHOPftpuser,$SHOPftppwd);
+               ftp_chdir($conn_id,$SHOPimgdir);
+               $upload=ftp_put($conn_id,$SHOPimgdir."/$gr","tmp/tmp.file_org",FTP_BINARY);
+               if (!$upload) { echo "[Ftp Uploadfehler! $gr]<br>"; return false; };
+               $upload=ftp_put($conn_id,$SHOPimgdir."/$kl","tmp/tmp.file_smal",FTP_BINARY);
+               if (!$upload) { echo "[Ftp Uploadfehler! $kl]<br>"; return false; };
+               ftp_quit($conn_id);
+       }
+       $sql="update artikel set Bild_gross='$gr', Bild_klein='$kl' where Artikel_ID=$ArtNr";
+       $rc=$db->query($sql);
+}
+function insartikel($data) {
+global $db;
+       $newID=uniqid(rand());
+       $sql="insert into artikel (Artikel_Nr,Name) values ('".$data["partnumber"]."','$newID')";
+       $rc=$db->query($sql);
+       $sql="select * from artikel where Name='$newID'";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($rs) {
+               $sql="insert into artikel_kategorie (FK_Artikel_ID,FK_Kategorie_ID) values (".$rs[0]["Artikel_ID"].",".$data["categories_id"].")";
+               $rc=$db->query($sql);
+               echo " insert ";
+               updartikel($data,$rs[0]["Artikel_ID"]);
+       } else { return false; }
+}
+function updartikel($data,$id) {
+global $db;
+       $sql ="update artikel set Preis=%01.2f,Gewicht=%0.2f,MwSt_Satz=%0.2f,letzteAenderung=now(),";
+       $sql.="Name='%s',Beschreibung='%s',Lagerbestand=%d  where Artikel_ID=%d";
+       $preis=($data["sellprice"]>0)?$data["sellprice"]:$data["stdprice"];
+       $sql=sprintf($sql,$preis,$data["weight"],$tax[sprintf("%1.4f",$data["rate"])],$data["description"],$data["notes"],$data["onhand"],$id);
+       $rc=$db->query($sql);
+       $sql="update artikel_kategorie set FK_Kategorie_ID=".$data["categories_id"]." where FK_Artikel_ID=$id";
+       $rc=$db->query($sql);
+       echo "+++<br>";
+}
+function chkartikel($data) {
+global $db,$shop2erp;
+       if ($data["partnumber"]=="") { echo "Artikelnummer fehlt!<br>"; return false;};
+       $sql="select * from artikel A left join artikel_kategorie K on A.Artikel_id=K.FK_Artikel_ID where Artikel_Nr like '".$data["partnumber"]."'";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       echo "(".$data["partnumber"]."->".$rs[0]["Artikel_ID"].":".$data["description"].")";
+       if ($rs) {
+               if ($data["image"]) {
+                       $rc=preg_match("#(.+/)?([^\.]+)\.(.+)$#",$data["image"],$treffer);
+                       if ($treffer) { $data["picname"]=$treffer[2]."_gr.".$treffer[3]; }
+                       else {  $data["picname"]=""; };
+               }
+               $preis=($data["sellprice"]>0)?$data["sellprice"]:$data["stdprice"];
+                    if ($rs[0]["Preis"]<>$preis)                                               { updartikel($data,$rs[0]["Artikel_ID"]); }
+               else if ($rs[0]["Gewicht"]<>$data["weight"])                    { updartikel($data,$rs[0]["Artikel_ID"]); }
+               else if ($rs[0]["Name"]<>$data["description"])                  { updartikel($data,$rs[0]["Artikel_ID"]); }
+               else if ($rs[0]["Beschreibung"]<>$data["notes"])                { updartikel($data,$rs[0]["Artikel_ID"]); }
+               else if ($rs[0]["MwSt_Satz"]<>$tax[sprintf("%1.4f",$data["rate"])])     { updartikel($data,$rs[0]["Artikel_ID"]); }
+               else if ($rs[0]["FK_Kategorie_ID"]<>$data["$categories_id"])            { updartikel($data,$rs[0]["Artikel_ID"]); }
+               else if ($rs[0]["Lagerbestand"]<>$data["onhand"])               { updartikel($data,$rs[0]["Lagerbestand"]); }
+               else { echo "...<br>"; };
+               if ($rs[0]["Bild_gross"]<>$data["picname"] and $data["picname"])        { uploadImage($data["image"],$rs[0]["Artikel_ID"]); }
+               else if ($rs[0]["Bild_gross"] and !$data["picname"])            {
+                       $sql="update artikel set Bild_gross='', Bild_klein='' where Artikel_ID=".$rs[0]["Artikel_ID"];
+                       $rc=$db->query($sql);
+               }
+       } else {
+               $Artikel_ID=insartikel($data);
+               if ($data["image"])     uploadImage($data["image"],$Artikel_ID); 
+       }
+}
+
+$artikel=shopartikel();
+echo "Artikelexport ERP -&gt; PHPepper :".count($artikel)." Artikel markiert.<br>";
+if ($artikel) {
+       $sql="select Thumbnail_Breite from shop_settings";
+       $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
+       if ($rs) {
+               $iconsize=$rs[0]["Thumbnail_Breite"];
+       } else {
+               $iconsize=100;
+       }
+       foreach ($artikel as $data) {
+               $data["categories_id"]=getCategory($data["partsgroup"]);
+               $x=chkartikel($data);
+       }
+       require ("diff.php");
+}
+
+?>
diff --git a/pepper/tmp/070115Jan0043.log b/pepper/tmp/070115Jan0043.log
new file mode 100644 (file)
index 0000000..a230391
--- /dev/null
@@ -0,0 +1,3 @@
+Es liegen 1 Bestellungen vor. 
+Hinterseer HH AG
+1 Kunden, davon 0 neue(r) Kunde(n).
diff --git a/pepper/tmp/070115Jan0529.log b/pepper/tmp/070115Jan0529.log
new file mode 100644 (file)
index 0000000..653592a
--- /dev/null
@@ -0,0 +1,11 @@
+Es liegen 2 Bestellungen vor. 
+Hinterseer HH AG
+Hinterseer HH AG
+2 Kunden, davon 0 neue(r) Kunde(n).
+ordnumber=14244073991210637086374020888, transdate='2007-01-15', customer_id=2839, amount=18.921, notes=Bezahlung per 
+2842,413,'',1,10
+2842,1568,'Versandkosten',1,0.9
+ordnumber=14244073991210637086374020888, transdate='2007-01-15', customer_id=2839, amount=15.9, notes=Bezahlung per 
+2843,413,'',1,10
+2843,1568,'Versandkosten',1,0.9
+Daten transferiert!
diff --git a/pepper/tmp/070115Jan1914.log b/pepper/tmp/070115Jan1914.log
new file mode 100644 (file)
index 0000000..d3494ef
--- /dev/null
@@ -0,0 +1 @@
+keine Bestellungen
diff --git a/pepper/tmp/070115Jan2349.log b/pepper/tmp/070115Jan2349.log
new file mode 100644 (file)
index 0000000..a230391
--- /dev/null
@@ -0,0 +1,3 @@
+Es liegen 1 Bestellungen vor. 
+Hinterseer HH AG
+1 Kunden, davon 0 neue(r) Kunde(n).
diff --git a/pepper/tmp/070115Jan4625.log b/pepper/tmp/070115Jan4625.log
new file mode 100644 (file)
index 0000000..e53b392
--- /dev/null
@@ -0,0 +1,7 @@
+Es liegen 1 Bestellungen vor. 
+Hinterseer HH AG
+1 Kunden, davon 1 neue(r) Kunde(n).
+ordnumber=14244073991210637086374020888, transdate='2007-01-15', customer_id=2839, amount=18.921, notes=Bezahlung per 
+2840,413,'',1,10
+2840,1568,'Versandkosten',1,0.9
+Daten transferiert!
diff --git a/pepper/tmp/070115Jan5404.log b/pepper/tmp/070115Jan5404.log
new file mode 100644 (file)
index 0000000..6fdfbf4
--- /dev/null
@@ -0,0 +1,7 @@
+Es liegen 1 Bestellungen vor. 
+Hinterseer HH AG
+1 Kunden, davon 0 neue(r) Kunde(n).
+ordnumber=14244073991210637086374020888, transdate='2007-01-15', customer_id=2839, amount=21.942, notes=Bezahlung per 
+2841,413,'',1,10
+2841,1568,'Versandkosten',1,0.9
+Daten transferiert!
diff --git a/pepper/tmp/070220Feb2414.log b/pepper/tmp/070220Feb2414.log
new file mode 100644 (file)
index 0000000..d3494ef
--- /dev/null
@@ -0,0 +1 @@
+keine Bestellungen
diff --git a/pepper/tmp/070220Feb2456.log b/pepper/tmp/070220Feb2456.log
new file mode 100644 (file)
index 0000000..45ee3d1
--- /dev/null
@@ -0,0 +1,7 @@
+Es liegen 1 Bestellungen vor. 
+Winger LED1.de
+1 Kunden, davon 1 neue(r) Kunde(n).
+ordnumber=39630669213965724371727342923, transdate='2007-02-19', customer_id=2205, amount=68.5809640336, notes=Bezahlung per PayPal
+2206,1521,'',1,54
+2206,1568,'Versandkosten',1,2.5
+Daten transferiert!
diff --git a/pepper/tmp/070220Feb3922.log b/pepper/tmp/070220Feb3922.log
new file mode 100644 (file)
index 0000000..aaf069f
--- /dev/null
@@ -0,0 +1,11 @@
+Es liegen 2 Bestellungen vor. 
+Schäfer 
+Wurst Wichtel AG
+2 Kunden, davon 2 neue(r) Kunde(n).
+ordnumber=9335067731144605458730318097, transdate='2007-02-19', customer_id=2198, amount=11.48, notes=Bezahlung per Vorauskasse
+2200,1463,'',1,8.98
+2200,1568,'Versandkosten',1,2.5
+ordnumber=932625893245291655342188916, transdate='2007-02-20', customer_id=2199, amount=13.6612, notes=Bezahlung per Vorauskasse
+2201,1463,'',1,8.98
+2201,1568,'Versandkosten',1,2.5
+Daten transferiert!
diff --git a/pepper/tmp/070220Feb4647.log b/pepper/tmp/070220Feb4647.log
new file mode 100644 (file)
index 0000000..e9230c0
--- /dev/null
@@ -0,0 +1,7 @@
+Es liegen 1 Bestellungen vor. 
+Wurst Wichtel AG
+1 Kunden, davon 0 neue(r) Kunde(n).
+ordnumber=932625893245291655342188916, transdate='2007-02-20', customer_id=2199, amount=41.9765, notes=Bezahlung per Vorauskasse
+2202,1319,'',1,36.45
+2202,1568,'Versandkosten',1,2.5
+Daten transferiert!
diff --git a/pepper/tmp/070220Feb5026.log b/pepper/tmp/070220Feb5026.log
new file mode 100644 (file)
index 0000000..d896dad
--- /dev/null
@@ -0,0 +1,7 @@
+Es liegen 1 Bestellungen vor. 
+Winger LED1.de
+1 Kunden, davon 0 neue(r) Kunde(n).
+ordnumber=39630669213965724371727342923, transdate='2007-02-19', customer_id=2205, amount=68.5809640336, notes=Bezahlung per PayPal
+2207,1521,'',1,54
+2207,1568,'Versandkosten',1,2.5
+Daten transferiert!
diff --git a/pepper/tmp/070220Feb5107.log b/pepper/tmp/070220Feb5107.log
new file mode 100644 (file)
index 0000000..c8be09f
--- /dev/null
@@ -0,0 +1,7 @@
+Es liegen 1 Bestellungen vor. 
+Biermann 
+1 Kunden, davon 1 neue(r) Kunde(n).
+ordnumber=3711052164095647241747134120, transdate='2007-02-18', customer_id=2203, amount=41.5, notes=Bezahlung per Vorauskasse
+2204,1319,'',1,36.4485981308
+2204,1568,'Versandkosten',1,2.5
+Daten transferiert!
diff --git a/pepper/tmp/070220Feb5228.log b/pepper/tmp/070220Feb5228.log
new file mode 100644 (file)
index 0000000..d3494ef
--- /dev/null
@@ -0,0 +1 @@
+keine Bestellungen
diff --git a/pepper/tmp/070220Feb5412.log b/pepper/tmp/070220Feb5412.log
new file mode 100644 (file)
index 0000000..d3494ef
--- /dev/null
@@ -0,0 +1 @@
+keine Bestellungen
diff --git a/pepper/tmp/070220Feb5559.log b/pepper/tmp/070220Feb5559.log
new file mode 100644 (file)
index 0000000..0ca74dd
--- /dev/null
@@ -0,0 +1,7 @@
+Es liegen 1 Bestellungen vor. 
+Winger LED1.de
+1 Kunden, davon 0 neue(r) Kunde(n).
+ordnumber=39630669213965724371727342923, transdate='2007-02-19', customer_id=2205, amount=68.5809640336, notes=Bezahlung per PayPal
+2208,1521,'',1,54
+2208,1568,'Versandkosten',1,2.5
+2208,413,'Diverse Artikel 16% MWSt.',1,1.82096403361
diff --git a/pepper/tmp/tmp.file_org b/pepper/tmp/tmp.file_org
new file mode 100644 (file)
index 0000000..bec45e9
Binary files /dev/null and b/pepper/tmp/tmp.file_org differ
diff --git a/pepper/trans.php b/pepper/trans.php
new file mode 100644 (file)
index 0000000..48f354a
--- /dev/null
@@ -0,0 +1,108 @@
+<?
+/***************************************************************
+* $Id: trans.php,v 1.1 2004/12/17 13:50:30 hli Exp $
+*Author: Holger Lindemann
+*Copyright: (c) 2004 Lx-System
+*License: non free
+*eMail: info@lx-system.de
+*Version: 1.0.1
+*Shop: PHPepper 1.5
+*ERP: Lx-Office ERP
+***************************************************************/
+require_once "DB.php";
+require_once "conf.php";
+$LAND=array("Germany"=>"D");
+$db=DB::connect($SHOPdns);
+if (DB::isError($db)||!$db) { $shop="<font color='red'>Fehler</font>"; } else { $shop="ok"; };
+$db2=DB::connect($ERPdns);
+if (DB::isError($db2)||!$db2) { $erp="<font color='red'>Fehler</font>"; } else { $erp="ok"; };
+
+?>
+<html>
+       <head>
+               <title>Datenaustausch ERP-PHPeppershop</title>
+       </head>
+<body>
+<center>
+<table>
+       <tr>
+               <td colspan="2">
+                       Eine direkte Verbindung beider Datenbanken ist erforderlich!<br>
+                       Folgende Verbindungsdaten wurden gefunden:
+               </td>
+       </tr>
+       <tr>
+               <td>
+                       <b>Lx-ERP</b>
+               </td>
+               <td><?= $erp ?></td>
+       </tr>
+       <tr>
+               <td>Datenbank-Server</td>
+               <td><?= $ERPhost ?></td>
+       </tr>
+       <tr>
+               <td>Datenbank</td>
+               <td><?= $ERPdbname ?></td>
+       </tr>
+       <tr>
+               <td>
+                       <b>PHPepper</b>
+               </td>
+               <td><?= $shop ?></td>
+       </tr>
+       <tr>
+               <td>Datenbank-Server</td>
+               <td><?= $SHOPhost ?></td>
+       </tr>
+       <tr>
+               <td>Datenbank</td>
+               <td><?= $SHOPdbname ?></td>
+       </tr>
+       <tr>
+               <td colspan="2">
+                       <hr>
+               </td>
+       </tr>
+       <tr>
+               <td align="center"><a href="shopimport_db.php"><img src="e2s.gif" border="0"></a></td>
+               <td align="center"><a href="pepperexport.php"><img src="s2e.gif" border="0"></a></td>
+       </tr>
+       <tr>
+               <td colspan="2">
+                       <hr>
+               </td>
+       </tr>
+       <tr>
+               <td colspan="2">
+                       F&uuml;r den Export der Artikeldaten aus der ERP in eine CSV-Datei<br>
+                       oder den Import der Artikeldaten in den Shop ist nur die Verbindung<br>
+                       zur entsprechenden      Datenbank notwendig.<br>
+                       Die CSV-Dateien werden in den konfigurierten Verzeichnissen erwartet.<br>
+                       Der Webserver ben&ouml;tigt hier Schreibrechte.
+               </td>
+       </tr>
+       <tr>
+               <td>
+                       <b>Lx-ERP</b>
+               </td>
+               <td><a href="<?= $ERPdir ?>"><?= $ERPdir ?></a></td>
+       </tr>
+       <tr>
+               <td align="center"><a href="erpexport.php"><img src="e2c.gif" border="0"></a></td>
+               <td align="center"></td>
+       </tr>
+       <tr>
+               <td colspan="2">
+                       <hr>
+               </td>
+       </tr>
+       <tr>
+               <td colspan="2">
+                       Copyright (c) 2004 Lx-System - Version: 1.0 - <a href="mailto:info@lx-system.de">info@lx-system.de</a>
+               </td>
+       </tr>
+</table>
+</center>
+</body>
+</html>