6 require_once "conf$login.php";
8 if ($dbprefix<>"") { define("PREFIX",$dbprefix."_"); } else { define("PREFIX",""); };
10 $landarray=array("DEUTSCHLAND"=>"D","STEREICH"=>"A","OESTEREICH"=>"A","SCHWEIZ"=>"CH");
11 $taxarray=array("D"=>0,"A"=>1,"CH"=>2);
19 $ERPdns= array('phptype' => 'pgsql',
20 'username' => $ERPuser,
21 'password' => $ERPpass,
22 'hostspec' => $ERPhost,
23 'database' => $ERPdbname,
26 $SHOPdns=array('phptype' => 'mysql',
27 'username' => $SHOPuser,
28 'password' => $SHOPpass,
29 'hostspec' => $SHOPhost,
30 'database' => $SHOPdbname,
33 /****************************************************
34 * Debugmeldungen in File schreiben
35 ****************************************************/
36 if ($debug) { $log=fopen("tmp/shop.log","a"); } // zum Debuggen
39 /****************************************************
40 * Shopverbindung aufbauen
41 ****************************************************/
42 $shop=DB::connect($SHOPdns);
43 if (!$shop) shopFehler("",$shop->getDebugInfo());
44 if (DB::isError($shop)) {
45 $nun=date("Y-m-d H:i:s");
46 if ($log) fputs($log,$nun.": Shop-Connect\n");
47 shopFehler("",$shop->getDebugInfo());
48 die ($shop->getDebugInfo());
51 /****************************************************
52 * ERPverbindung aufbauen
53 ****************************************************/
54 $erp=DB::connect($ERPdns);
55 if (!$erp) shopFehler("",$erp->getDebugInfo());
56 if (DB::isError($erp)) {
57 $nun=date("Y-m-d H:i:s");
58 if ($log) fputs($log,$nun.": ERP-Connect\n");
59 shopFehler("",$erp->getDebugInfo());
60 die ($erp->getDebugInfo());
62 if ($erp->autocommit) $erp->autocommit();
65 /****************************************************
66 * SQL-Befehle absetzen
67 ****************************************************/
68 function query($db,$sql,$function="--") {
69 $nun=date("d.m.y H:i:s");
70 if ($GLOBALS["log"]) fputs($GLOBALS["log"],$nun.": ".$function."\n".$sql."\n");
71 $rc=$GLOBALS[$db]->query($sql);
72 if ($GLOBALS["log"]) fputs($GLOBALS["log"],print_r($rc,true)."\n");
80 /****************************************************
82 ****************************************************/
83 function getAll($db,$sql,$function="--") {
84 $nun=date("d.m.y H:i:s");
85 if ($GLOBALS["log"]) fputs($GLOBALS["log"],$nun.": ".$function."\n".$sql."\n");
86 $rs=$GLOBALS[$db]->getAll($sql,DB_FETCHMODE_ASSOC);
87 if ($rs["message"]<>"") {
88 if ($GLOBALS["log"]) fputs($GLOBALS["log"],print_r($rs,true)."\n");
95 /****************************************************
97 * in: sql,err = string
99 * Fehlermeldungen ausgeben
100 *****************************************************/
101 function shopFehler($sql,$err) {
104 echo "</td></tr></table><font color='red'>$sql : $err</font><br>";
107 /****************************************************
108 * Nächste Auftragsnummer (ERP) holen
109 ****************************************************/
110 function getNextAnr() {
111 $sql="select * from defaults";
112 $sql1="update defaults set sonumber=";
114 echo "Kann keine Auftragsnummer erzeugen - Abbruch";
115 $rc=query("erp","ROLLBACK","getNextKnr");
118 $rs2=getAll("erp",$sql,"getNextAnr");
119 $auftrag=$rs2[0]["sonumber"]+1;
120 $rc=query("erp",$sql1.$auftrag,"getNextAnr");
122 echo "Kann keine Auftragsnummer erzeugen - Abbruch";
123 $rc=query("erp","ROLLBACK","getNextKnr");
129 /****************************************************
130 * Nächste Kundennummer (ERP) holen
131 ****************************************************/
132 function getNextKnr() {
133 $sql="select * from defaults";
134 $sql1="update defaults set customernumber='";
136 echo "Kann keine Kundennummer erzeugen - Abbruch";
139 $rs2=getAll("erp",$sql,"getNextKnr");
140 $kdnr=$rs2[0]["customernumber"]+1;
141 $rc=query("erp",$sql1.$kdnr."'","getNextKnr");
143 echo "Kann keine Kundennummer erzeugen - Abbruch";
144 $rc=query("erp","ROLLBACK","getNextKnr");
151 //$shopdata=array("firma"=>"","abteilung"=>"","vorname"=>"","nachname"=>"","strasse"=>"","plz"=>"","ort"=>"","telefon"=>"","email"=>"","land"=>"","fax"=>"","notiz"=>"","postfach"=>"")
152 $shopdata=array( "id"=>"customers_id","kdnr"=>"customers_cid","bid"=>"orders_id", "anrede"=>" customers_gender",
153 "firma"=>"customers_company", "nachname"=>"customers_lastname", "vorname"=>"customers_firstname",
154 "strasse"=>"customers_street_address","plz"=>"customers_postcode","ort"=>"customers_city","land"=>"customers_country",
155 "telefon"=>"customers_phone","email"=>"customers_email_address","fax"=>"Fax","notiz"=>"comments",
157 "netto"=>"ot_subtotal","steuer"=>"ot_tax","datum"=>" date_purchased","bemerkung"=>"comments",
158 "artnr"=>"products_id","preis"=>"final_price","artikeltxt"=>" products_name","menge"=>" products_quantity");
160 $shopartikel=array( "id"=>"Artikel_ID","artnr"=>"Artikel_Nr","arttxt"=>"Name","artbeschr"=>"Beschreibung","gruppe"=>"Kategorie_ID",
161 "preis"=>"Preis","preis2"=>"Haendlerpreis","preis3"=>"Aktionspreis","gewicht"=>"Gewicht",
162 "bild"=>"Bild_gross","bestand"=>"Lagerbestand","minbestand"=>"Mindestlagermenge","steuer"=>"MwSt_Satz");
165 /****************************************************
166 * Ab hier Artikelexport aus ERP
167 ****************************************************/
168 // Ab hier Artikelexport aus ERP nur eine Sprache
169 function shopartikellang($lang,$alle) {
170 $sql="SELECT P.partnumber,L.translation,P.description,L.longdescription,P.notes,PG.partsgroup ";
171 $sql.="FROM parts P left join translation L on L.parts_id=P.id left join partsgroup PG on PG.id=P.partsgroup_id ";
172 $sql.="WHERE P.shop='t' and (L.language_id = $lang";
174 $sql.=" or L.language_id is Null)";
175 } else { $sql.=")"; };
176 $rs=getAll("erp",$sql,"shopartikellang");
178 if ($rs) foreach ($rs as $row) {
179 if (!$data[$row["partnumber"]]) $data[$row["partnumber"]]=$row;
183 // Ab hier alle Artikelexport aus ERP Defaultsprache
184 function shopartikel() {
185 global $stdprice,$altprice;
187 $sql="SELECT P.partnumber,P.description,P.weight,(t.rate * 100) as rate,G.price as sellprice,P.sellprice as stdprice, ";
188 $sql.="PG.partsgroup,P.notes,P.image,P.onhand,G.pricegroup_id,P.buchungsgruppen_id as bugru FROM ";
189 $sql.="chart c left join tax t on c.taxkey_id=t.taxkey, parts P left join partsgroup PG on ";
190 $sql.="PG.id=P.partsgroup_id left join prices G on G.parts_id=P.id ";
191 $sql.="buchungsgruppen B on P.buchungsgruppen_id = B.id ";
192 $sql.="where P.shop='t' and c.id=p.income_accno_id and ";
193 $sql.="(G.pricegroup_id=$stdprice or pricegroup_id=$altprice or G.pricegroup_id is null) ";
194 $sql.="order by P.partnumber";
196 $sql="SELECT P.partnumber,P.description,P.weight,(t.rate * 100) as rate,P.sellprice,PG.partsgroup,";
197 $sql.="P.notes,P.image,P.onhand,P.buchungsgruppen_id as bugru FROM ";
198 $sql.="chart c left join tax t on c.taxkey_id=t.taxkey, parts P left join partsgroup PG on ";
199 $sql.="PG.id=P.partsgroup_id left join buchungsgruppen B on P.buchungsgruppen_id = B.id ";
200 $sql.="WHERE P.shop='t' and c.id=B.income_accno_id_0";
202 $rs=getAll("erp",$sql,"shopartikel");
205 if ($rs) foreach ($rs as $row) {
206 if (!$data[$row["partnumber"]]) $data[$row["partnumber"]]=$row;
207 if ($row["pricegroup_id"]==$altprice) {
208 $data[$row["partnumber"]]["altprice"]=($row["sellprice"])?$row["sellprice"]:$row["stdprice"];
210 $data[$row["partnumber"]]["sellprice"]=($row["sellprice"])?$row["sellprice"]:$row["stdprice"];
217 /****************************************************
218 * Artikelexport in ERP importieren
219 ****************************************************/
220 function insertArtikel($data) {
222 foreach ($data as $row) {
223 $pg=$GLOBALS["warengruppen"][$row[$shopartikel["gruppe"]]]["partsgroup"];
224 $bg=$GLOBALS["buchungsgruppen"][sprintf("%0.2f",$row[$shopartikel["steuer"]])];
225 $artnr=($row[$shopartikel["artnr"]])?$row[$shopartikel["artnr"]]:getArtnr();
226 $sqltmp="insert into parts (partnumber,description,notes,weight,onhand,rop,image,sellprice,unit,partsgroup_id,buchungsgruppen_id) ";
227 $sqltmp.="values ('%s','%s','%s',%0.5f,%0.5f,%0.5f,'%s',%0.5f,'%s',%d,%d)";
228 $sql=sprintf($sqltmp,$artnr,$row[$shopartikel["arttxt"]],$row[$shopartikel["artbeschr"]],
229 $row[$shopartikel["gewicht"]],$row[$shopartikel["bestand"]],$row[$shopartikel["minbestand"]],
230 $row[$shopartikel["bild"]],$row[$shopartikel["preis"]],$row[$shopartikel["einheit"]],$pg,$bg);
231 $rc=query("erp",$sql,"insertArtikel");
233 echo $row[$shopartikel["id"]]." ".$row[$shopartikel["arttxt"]]." nicht importiert<br>";
241 /****************************************************
242 * Nächste Artikelnummer (ERP) holen
243 ****************************************************/
244 function getArtnr() {
245 $sql="select * from defaults";
246 $sql1="update defaults set articlenumber='";
247 $rc=query("erp","BEGIN","getArtnr");
249 echo "Kann keine Artikelnummer erzeugen - Abbruch";
252 $rs2=getAll("erp",$sql,"getArtnr");
253 $artnr=$rs2[0]["articelnumber"]+1;
254 $rc=query("erp",$sql1.$artnr."'","getArtnr");
256 echo "Kann keine Artikelnummer erzeugen - Abbruch";
257 $rc=query("erp","ROLLBACK","getArtnr");
260 $rc=query("erp","COMMIT","getArtnr");
264 $buchungsgruppen=array();
265 $warengruppen=array();
267 function getBugru() {
268 $sql ="select B.id,tax.rate from buchungsgruppen B left join chart on income_accno_id_0=chart.id left join taxkeys T on ";
269 $sql.="T.chart_id=income_accno_id_0 left join tax on tax.id=T.tax_id where T.startdate<=now()";
270 $rs=getAll("erp",$sql,"getBugru");
271 if ($rs) foreach ($rs as $row) {
272 $steuer=sprintf("%0.2f",$row["rate"]*100);
273 $GLOBALS["buchungsgruppen"][$steuer]=$row["id"];
279 function insPartgroup($kat) {
280 $sql="insert into partsgroup () value ()";
282 //$rc=query("erp",$sql,"insPartgroup");
283 if ($rc === -99) { return false; }
284 else { return $GLOBALS["wg"]; }