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 "$sql : $err
"; } function getBugru() { global $db2; if (!$db2) return; $sql ="select BG.id as bugru,(T.rate * 100) as rate,TK.startdate from buchungsgruppen BG "; $sql.="left join chart C on BG.income_accno_id_0=C.id left join taxkeys TK "; $sql.="on TK.chart_id=C.id left join tax T on T.id=TK.tax_id where "; $sql.="TK.startdate <= now() order by BG.id, TK.startdate"; $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC); if ($rs) foreach ($rs as $row) { $bugru[$row["bugru"]]=$row["rate"]; } return $bugru; } // Ab hier Artikelexport aus ERP function shopartikel() { global $db2,$pricegroup; if ($pricegroup>0) { $sql="SELECT P.partnumber,P.description,P.weight,buchungsgruppen_id as bugru,G.price as sellprice,P.sellprice as stdprice, "; $sql.="PG.partsgroup,P.notes,P.image,P.onhand FROM "; $sql.="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 (G.pricegroup_id=$pricegroup or G.pricegroup_id is null)"; } else { $sql="SELECT P.partnumber,P.description,P.weight,buchungsgruppen_id as bugru,P.sellprice,PG.partsgroup,P.notes,P.image,P.onhand FROM "; $sql.="parts P left join partsgroup PG on "; $sql.="PG.id=P.partsgroup_id where P.shop='t'"; } $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
\n" ; flush(); return false; } if (!imagick_resize( $handle, $width, $height, IMAGICK_FILTER_UNKNOWN, 0)) { $reason = imagick_failedreason( $handle ) ; print "Resize: $reason
\n" ; flush(); return false; } if (!imagick_writeimage( $handle,"./tmp/tmp.file_$dest")) { $reason = imagick_failedreason( $handle ) ; print "Schreiben: $reason
\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]
"; 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]
"; 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]
"; return false; }; $dst=$SHOPimgdir."/".$kl; exec("cp ./tmp/tmp.file_smal $dst",$aus,$rc2); if ($rc2>0) { echo "[Uploadfehler: $dst]
"; 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]
"; return false; }; $upload=ftp_put($conn_id,$SHOPimgdir."/$kl","tmp/tmp.file_smal",FTP_BINARY); if (!$upload) { echo "[Ftp Uploadfehler! $kl]
"; 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,$bugru,$mwst; $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"]; if ($mwst) $preis+=$preis/100*$bugru[$data["bugru"]]; $sql=sprintf($sql,$preis,$data["weight"],$bugru[$data["bugru"]],$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 "+++
"; } function chkartikel($data) { global $db,$shop2erp,$mwst; if ($data["partnumber"]=="") { echo "Artikelnummer fehlt!
"; 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 ($mwst) $preis+=$preis/100*$bugru[$data["bugru"]]; 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 "...
"; }; 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 -> PHPepper :".count($artikel)." Artikel markiert.
"; if ($artikel) { $bugru=getBugru(); $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"); } ?>