2 /***************************************************************
3 * $Id: pepperexport.php,v 2.0 2006/02/06 13:49:11 hli Exp $
4 *Author: Holger Lindemann
5 *Copyright: (c) 2004 Lx-System
7 *eMail: info@lx-system.de
9 *Shop: PHPeppershop 2.0
10 *ERP: Lx-Office ERP >= 2.2.0
11 ***************************************************************/
14 <head><title>Lx-ERP Export der Shopartikel</title>
15 <link type="text/css" REL="stylesheet" HREF="css/main.css"></link>
19 require_once "DB.php";
20 require_once "conf.php";
21 $db=DB::connect($SHOPdns);
22 if (!$db) dbFehler("",$db->getDebugInfo());
23 if (DB::isError($db)) {
24 dbFehler("",$db->getDebugInfo());
25 die ($db->getDebugInfo());
27 $db2=DB::connect($ERPdns);
28 if (!$db2) dbFehler("",$db2->getDebugInfo());
29 if (DB::isError($db2)) {
30 dbFehler("",$db2->getDebugInfo());
31 die ($db2->getDebugInfo());
33 /****************************************************
35 * in: sql,err = string
37 * Fehlermeldungen ausgeben
38 *****************************************************/
39 function dbFehler($sql,$err) {
42 echo "</td></tr></table><font color='red'>$sql : $err</font><br>";
44 function checkBestellung($status) {
46 if ($status=="B") { $where="";} // B = alle Bestellungeb, N = neue, Y = alte
47 else { $where="where Bestellung_bezahlt = '$status'";}
48 $sql="select * from bestellung $where and Datum is not null and Bestellung_abgeschlossen = 'Y' order by Datum";
49 $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
50 return (count($rs)>0)?count($rs):false;
52 function getBestellKunde($BID) {
54 $sql="select * from kunde left join bestellung_kunde on Kunden_ID=FK_Kunden_ID where FK_Bestellungs_ID=$BID";
55 $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
56 return $rs[0]["Kunden_Nr"];
58 function sonderkosten($transID,$data,$id,$f) {
59 global $db2,$versand,$nachn,$minder,$treuh,$paypal;
60 $sql="insert into orderitems (trans_id, parts_id, description, qty, sellprice, unit, ship, discount) values (";
61 $sql.=$transID.",".${$id}["ID"].",'".${$id}["TXT"]."',1,".$data.",'mal',0,0)";
62 fputs($f,"$transID,".${$id}["ID"].",'".${$id}["TXT"]."',1,$data\n");
63 if (!$db2->query($sql)) { return false; }
64 else { return true; };
66 function insBestArtikel($zeile,$transID) {
67 global $db,$db2,$div07,$div16,$f,
68 $versandID,$nachnID,$minderID,$treuhID,$paypalID;
69 $BID=$zeile["Bestellungs_ID"];
70 $sql ="select * from artikel left join artikel_bestellung on Artikel_ID=FK_Artikel_ID ";
71 $sql.="left join bestellung on Bestellungs_ID=FK_Bestellungs_ID where Bestellungs_ID=$BID";
72 $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
74 foreach ($rs as $zeile) {
75 $sql="select * from parts where partnumber='".$zeile["Artikel_Nr"]."'";
76 $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
77 if ( $rs2[0]["id"]) {$artID=$rs2[0]["id"]; }
78 else { $artID=($zeile["MwSt_Satz"]=="7")?$div07["ID"]:$div16["ID"]; };
79 //$preis=round($zeile["Preis"]/($zeile["MwSt_Satz"]+100)*100,2);
80 $preis=$zeile["Preis"];
81 $notes=$zeile["Artikelname"];
82 $vari=split(chr(254),$zeile["Variation"]);
83 if ($vari) { for($cnt=0; $cnt<count($vari); $cnt++) {
84 $notes.="\n".$vari[$cnt];
86 $preis+=trim($vari[$cnt]) * $zeile["Anzahl"];
89 $opts=split(chr(254),$zeile["Optionen"]);
90 if ($opts) { for($cnt=0; $cnt<count($opts); $cnt++) {
91 $notes.="\n".$opts[$cnt];
93 $preis+=trim($opts[$cnt]) * $zeile["Anzahl"];
96 if ($zeile["Zusatztexte"]) {
97 $zusatz=strtr($zeile["Zusatztexte"],"รพ","\n");
100 $sql="insert into orderitems (trans_id, parts_id, description, qty, sellprice, unit, ship, discount) values (";
101 $sql.=$transID.",".$artID.",'".$notes."',".$zeile["Anzahl"].",".$preis.",'Stck',0,0)";
102 $rc=$db2->query($sql);
103 if (!$rc) { $ok=false; break; };
104 fputs($f,$transID.",".$artID.",'".$zeile["Artikelname"]."',".$zeile["Anzahl"].",".$preis."\n");
105 echo " - Artikel:[ BuNr.:$artID ArtNr:<b> ".$zeile["Anzahl"]." x ".$zeile["Artikel_Nr"]."</b> :".$zeile["Artikelname"]." ]<br>";
107 if ($zeile["Versandkosten"] && $ok) {
108 $ok=sonderkosten($transID,$zeile["Versandkosten"],"versand",$f);
110 if ($zeile["Nachnamebetrag"] && $ok) {
111 $ok=sonderkosten($transID,$zeile["Nachnamebetrag"],"nachn",$f);
113 if ($zeile["Mindermengenzuschlag"] && $ok) {
114 $ok=sonderkosten($transID,$zeile["Mindermengenzuschlag"],"minder",$f);
116 if ($zeile["Treuhandkosten"] && $ok) {
117 $ok=sonderkosten($transID,$zeile["Treuhandkosten"],"treuh",$f);
119 if ($zeile["Paypalkosten"] && $ok) {
120 $ok=sonderkosten($transID,$zeile["Paypalkosten"],"paypal",$f);
123 $sql="update bestellung set Bestellung_bezahlt='Y' WHERE Bestellungs_ID =$BID";
124 $rc=$db->query($sql);
128 $sql="delete from orderitems where trans_id=$transID";
129 $rc=$db->query($sql);
130 $sql="delete from oe where id=$transID";
131 $rc=$db->query($sql);
132 fputs($f,"Fehler (insBestArtikel)!!!!\n");
136 function getNextAnr() {
138 $sql="select * from defaults";
139 $sql1="update defaults set sonumber=";
140 $rc=$db2->query("BEGIN");
141 $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
142 $auftrag=$rs2[0]["sonumber"]+1;
143 $rc=$db2->query($sql1.$auftrag);
144 $rc=$db2->query("COMMIT");
147 function getNextKnr() {
149 $sql="select * from defaults";
150 $sql1="update defaults set customernumber='";
151 $rc=$db2->query("BEGIN");
152 $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
153 $kdnr=$rs2[0]["customernumber"]+1;
154 $rc=$db2->query($sql1.$kdnr."'");
155 $rc=$db2->query("COMMIT");
158 function getBestellung() {
159 global $db,$db2,$ERPusr,$f,$preA,$auftrnr;
160 $sql="select * from bestellung where Bestellung_bezahlt='N' order by Bestellungs_ID";
161 $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
163 foreach ($rs as $zeile) {
164 $kdnr=getBestellKunde($zeile["Bestellungs_ID"]);
165 echo "Kunde:[ Buchungsnummer:$kdnr ] ";
166 $newID=uniqid (rand());
167 if (ereg("&r=([0-9]+)",$zeile["Bestellung_string"],$refnr)) {
170 $refnr=$zeile["Bestellungs_ID"];
173 $anr=$preA.getNextAnr();
177 $sql="insert into oe (notes,ordnumber,cusordnumber) values ('$newID','$anr','$refnr')";
178 $rc=$db2->query($sql);
179 $sql="select * from oe where notes = '$newID'";
180 $rs2=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
181 $Bezahlung=$zeile["Bezahlungsart"];
182 if ($Bezahlung=="Lastschrift") {
183 $sql="select * from kunde where Kunden_Nr=$kdnr";
184 $kd=$db->getAll($sql,DB_FETCHMODE_ASSOC);
185 $Bezahlung.="\nKontoinhaber: ".$kd[0]["kontoinhaber"]."\n";
186 $Bezahlung.="Bankname: ".$kd[0]["bankname"]."\n";
187 $Bezahlung.="Blz: ".$kd[0]["blz"]."\n";
188 $Bezahlung.="KontoNr: ".$kd[0]["kontonummer"];
190 $sql ="update oe set transdate='".$zeile["Datum"]."', intnotes='".$zeile["Anmerkung"];
191 $sql.="', customer_id=$kdnr, amount=".$zeile["Rechnungsbetrag"].", netamount=".($zeile["Rechnungsbetrag"]-$zeile["MwSt"]);
192 $sql.=", reqdate='".$zeile["Datum"]."', notes='$Bezahlung', taxincluded='f', curr='EUR',employee_id=".$ERPusr["ID"].", vendor_id=0 ";
193 $sql.="where id=".$rs2[0]["id"];
194 $rc=$db2->query($sql);
195 fputs($f,"ordnumber=".$zeile["Bestellungs_ID"].", transdate='".$zeile["Datum"]."', customer_id=$kdnr, amount=".($zeile["Rechnungsbetrag"]+$zeile["MwSt"]).", notes=".$zeile["Bezahlungsart"]."\n");
196 echo "Auftrag:[ Buchungsnummer:".$rs2[0]["id"]." AuftrNr:<b>".$anr."</b> ]<br>";
197 if (!insBestArtikel($zeile,$rs2[0]["id"])) { $ok=false; echo " Fehler<br>"; break; } else { echo " ok<br>"; };
201 function chkKdData($data) {
203 $sql="select * from customer where id = ".$data["Kunden_Nr"];
204 $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
205 if ($rs[0]["zipcode"]<>$data["PLZ"]) $set.="zipcode='".$data["PLZ"]."',";
206 if ($rs[0]["city"]<>$data["Ort"]) $set.="city='".$data["Ort"]."',";
207 if ($rs[0]["country"]<>$data["Land"]) $set.="country='".$data["Land"]."',";
208 if ($rs[0]["phone"]<>$data["Tel"])$set.="phone='".$data["Tel"]."',";
209 if ($rs[0]["fax"]<>$data["Fax"]) $set.="fax='".$data["Fax"]."',";
210 if ($rs[0]["email"]<>$data["Email"])$set.="email='".$data["Email"]."',";
211 if ($rs[0]["notes"]<>$data["Beschreibung"])$set.="notes='".$data["Beschreibung"]."',";
212 if ($data["Firma"]) {
213 if ($rs[0]["name"]<>$data["Firma"]) $set.="set name='".$data["Firma"]."',";
214 if ($rs[0]["contact"]<>$data["Vorname"]." ".$data["Nachname"]) $set.="contact='".$data["Vorname"]." ".$data["Nachname"]."',";
216 if ($rs[0]["name"]<>$data["Nachname"].", ".$data["Vorname"]) $set.="set name='".$data["Nachname"].", ".$data["Vorname"]."',";
218 if ($data["Strasse"]) {
219 if ($rs[0]["street"]<>$data["Strasse"]) $set.="street='".$data["Strasse"]."',";
220 } else if ($data["Postfach"]) {
221 if ($rs[0]["street"]<>$data["Postfach"]) $set.="street='".$data["Postfach"]."',";
224 $sql="update customer set ".substr($set,0,-1)." where id=".$rs[0]["id"];
225 $rc=$db2->query($sql);
228 function insKdData($data) {
229 global $db2,$preK,$kdnum;
230 $newID=$data["Kunden_ID"];
232 $kdnr=$preK.getNextKnr();
234 $kdnr=$preK.$data["customers_id"];
236 $sql="insert into customer (name,customernumber) values ('$newID','$kdnr')";
237 $rc=$db2->query($sql);
238 $sql="select * from customer where name = '$newID'";
239 $rs=$db2->getAll($sql,DB_FETCHMODE_ASSOC);
240 if ($data["Firma"]) { $set.="set name='".$data["Firma"]."',contact='".$data["Vorname"]." ".$data["Nachname"]."',"; }
241 else { $set.="set name='".$data["Nachname"].", ".$data["Vorname"]."',"; }
242 if ($data["Strasse"]) { $set.="street='".$data["Strasse"]."',"; }
243 else if ($data["Postfach"]) { $set.="street='".$data["Postfach"]."',"; };
244 $set.="zipcode='".$data["PLZ"]."',";
245 $set.="city='".$data["Ort"]."',";
246 $set.="country='".$data["Land"]."',";
247 $set.="phone='".$data["Tel"]."',";
248 $set.="fax='".$data["Fax"]."',";
249 $set.="email='".$data["Email"]."',";
250 $set.="notes='".$data["Beschreibung"]."',";
251 $set.="taxincluded='f' ";
252 $sql="update customer ".$set;
253 $sql.="where id=".$rs[0]["id"];
254 $rc=$db2->query($sql);
257 function checkKunde() {
259 $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'";
260 $rs=$db->getAll($sql,DB_FETCHMODE_ASSOC);
264 foreach ($rs as $zeile) {
265 if ($zeile["Kunden_Nr"]>0) {
269 $zeile["Kunden_Nr"]=insKdData($zeile);
270 if ($zeile["Kunden_Nr"]>0) {
271 $sql="update kunde set Kunden_Nr='".$zeile["Kunden_Nr"]."' where k_ID=".$zeile["k_ID"];
272 $rc=$db->query($sql);
278 fputs($f,$zeile["Nachname"]." ".$zeile["Firma"]."\n");
279 fputs($f,"\n----------------------------------------\n\n");
281 return ($ok)?array($anzahl,$neu,$old):false;
284 function savedata($str) {
286 foreach ($str as $val) {
289 fputs($f,substr($str,0,-1)."\n");
292 $f=fopen("tmp/".date("y-m-dH:i").".shop","w");
293 $ok=checkBestellung("N");
295 echo "Es liegen $ok Bestellungen vor. <br>";
296 fputs($f,"Es liegen $ok Bestellungen vor. \n");
299 echo $ok[0]." Kunden, davon ".$ok[1]." neue(r) Kunde(n).<br>";
300 fputs($f,$ok[0]." Kunden, davon ".$ok[1]." neue(r) Kunde(n).\n");
302 if ($ok) { echo "Daten transferiert!"; fputs($f,"Daten transferiert!\n");}
303 else { echo "Fehler (Bestellungen)! ! ! "; fputs($f,"Fehler (Bestellungen)! ! !\n");};
305 echo "Fehler (Kunden)! ! ! "; fputs($f,"Fehler (Kunden)! ! !\n");
307 } else { echo "Keine Bestellungen!<br>"; fputs($f,"keine Bestellungen\n");};
312 <!--br><a href="trans.php">zurück</a-->