+ /* field description */
+ $prices = getPricegroup($db);
+ if ($prices) {
+ $priceskey = array_keys($prices);
+ $parts_fld = array_merge(array_keys($fields),$priceskey);
+ } else {
+ $parts_fld = array_keys($fields);
+ }
+
+ if ($trenner=="other") $trenner=trim($trennzeichen);
+ if (substr($trenner,0,1)=="#") if (strlen($trenner)>1) $trenner=chr(substr($trenner,1));
+
+ /* open csv file */
+ if (file_exists($file."head.csv")) {
+ $fh=fopen($file.'head.csv',"r");
+ // Erst einmal die erste Zeile mit den richtigen Feldbezeichnungen einlesen.
+ $infld=fgetcsv($fh,1200,$trenner);
+ fclose($fh);
+ $f=fopen($file.'.csv',"r");
+ // Erst einmal die erste Zeile mit den falschen Feldbezeichnungen einlesen.
+ $tmp=fgetcsv($f,1200,$trenner);
+ } else {
+ $f=fopen($file.'.csv',"r");
+ // Erst einmal die erste Zeile mit den Feldbezeichnungen einlesen.
+ $infld=fgetcsv($f,1200,$trenner);
+ }
+
+ /*
+ * read first line with table descriptions
+ */
+ if ($show) {
+ show('<tr>',false);
+ show("partnumber"); show("lastcost"); show("sellprice"); show("listprice");
+ show("description"); show("notes"); show("ean");
+ show("weight"); show("image"); show("partsgroup_id");
+ show("bg"); show("income_accno"); show("expense_accno");
+ show("inventory_accno"); show("microfiche"); show("drawing");
+ show("rop"); show("assembly"); show("makemodel"); show("shop"); show("");
+ show("</tr>\n",false);
+ }
+
+
+ $p=0;
+ foreach ($infld as $fld) {
+ $fld = strtolower(trim(strtr($fld,array("\""=>"","'"=>""))));
+ if (in_array($fld,$parts_fld)) {
+ $fldpos[$fld]=$p;
+ }
+ $p++;
+ }
+ $i=0;
+ $u=0;
+ $m=0; /* line */
+ $errors=0; /* number of errors detected */
+ $income_accno = "";
+ $expense_accno = "";
+ $assembly = 'f';
+
+ while ( ($zeile=fgetcsv($f,120000,$trenner)) != FALSE) {
+ $m++; /* increase line */
+ $unit=false;
+ unset($pgroup);
+ unset($partsgroup_id);
+ unset($notes);
+ unset($rop);
+ unset($weight);
+ unset($inventory_accno);
+ unset($income_accno);
+ unset($expense_accno);
+ unset($model);
+ unset($makemodel);
+ unset($hersteller);
+
+ /* VK-Preis bilden */
+ $sellprice = str_replace(",", ".", $zeile[$fldpos["sellprice"]]);
+ $listprice = str_replace(",", ".", $zeile[$fldpos["listprice"]]);
+ $lastcost = str_replace(",", ".", $zeile[$fldpos["lastcost"]]);
+ if ($prices) {
+ foreach ($prices as $pkey=>$val) {
+ if (array_key_exists($pkey,$fldpos))
+ $pricegroup[$val] = str_replace(",", ".", $zeile[$fldpos[$pkey]]);
+ }
+ }
+ if ($quotation<>0) {
+ if ($quottype=="A") { $sellprice += $quotation; }
+ else { $sellprice = $sellprice * $quotation; }
+ };
+ if ($lastcost=="") unset($lastcost);
+ if ($sellprice=="") unset($sellprice);
+ if ($listprice=="") unset($listprice);
+
+ /* Langtext zusammenbauen */
+ if ($zeile[$fldpos["notes"]]) {
+ //Kundenspezifisch:
+ //$notes = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes"]]);
+ $notes = addslashes($zeile[$fldpos["notes"]]);
+ if (Translate) translate($notes);
+ }
+ if ($zeile[$fldpos["notes1"]]) {
+ //Kundenspezifisch:
+ //$notes1 = preg_replace('/""[^ ]/','"',$zeile[$fldpos["notes1"]]);
+ $notes1 = addslashes($zeile[$fldpos["notes1"]]);
+ if (Translate) translate($notes1);
+ if ($notes) {
+ $notes .= "\n".$notes1;
+ } else {
+ $notes = $notes1;
+ }
+ }
+
+ /* Warengruppe bilden */
+ if ($fldpos["partsgroup"]>0 and $zeile[$fldpos["partsgroup"]]) $pgroup[]=$zeile[$fldpos["partsgroup"]];
+ if ($fldpos["partsgroup1"]>0 and $zeile[$fldpos["partsgroup1"]]) $pgroup[]=$zeile[$fldpos["partsgroup1"]];
+ if ($fldpos["partsgroup2"]>0 and $zeile[$fldpos["partsgroup2"]]) $pgroup[]=$zeile[$fldpos["partsgroup2"]];
+ if ($fldpos["partsgroup3"]>0 and $zeile[$fldpos["partsgroup3"]]) $pgroup[]=$zeile[$fldpos["partsgroup3"]];
+ if ($fldpos["partsgroup4"]>0 and $zeile[$fldpos["partsgroup4"]]) $pgroup[]=$zeile[$fldpos["partsgroup4"]];
+ if (count($pgroup)>0) {
+ $pgname = implode($wgtrenner,$pgroup);
+ if (Translate) translate($pgname);
+ $partsgroup_id = getPartsgroupId($db, $pgname, $insert);
+ }
+
+ /* Ware oder Dienstleistung */
+ if (($maske["ware"]=="G" and strtoupper($zeile[$fldpos["art"]])=="D") or $maske["ware"]=="D") {
+ $artikel = false;
+ } else if (($maske["ware"]=="G" and strtoupper($zeile[$fldpos["art"]])=="W") or $maske["ware"]=="W") {
+ $artikel = true;
+ }
+
+ /* sind Hersteller und Modelnummer hinterlegt
+ wenn ja, erfolgt er insert später */
+ $makemodel = 'f';
+ if (!empty($zeile[$fldpos["makemodel"]]) and $artikel) {
+ $mm = $zeile[$fldpos["makemodel"]];
+ if (Translate) translate($mm);
+ if ($vendnr) {
+ $hersteller=getFirma($mm,"vendor");
+ } else {
+ $hersteller=suchFirma("vendor",$mm);
+ $hersteller=$hersteller["cp_cv_id"];
+ }
+ if (!empty($zeile[$fldpos["model"]]) and $hersteller>0) {
+ $mo = $zeile[$fldpos["model"]];
+ if (Translate) translate($mo);
+ $model = $mo;
+ $makemodel = 't';
+ } else if ($modnr and $hersteller>0) {
+ $model = '';
+ $makemodel = 't';
+ } else {
+ unset($hersteller);
+ $makemodel = 'f';
+ }
+ }
+
+ /* Einheit ermitteln */
+ if ($zeile[$fldpos["unit"]]=="") {
+ //Keine Einheit mitgegeben
+ if ($maske["ware"]=="G") {
+ if ($artikel) {
+ $unit = $stdunitD;
+ } else {
+ $unit = $stdunitW;
+ }
+ } else if ($maske["ware"]=="D") { $unit = $stdunitD; }
+ else { $unit = $stdunitW; };
+ } else {
+ if (existUnit($db,$zeile[$fldpos["unit"]])) {
+ $unit = $zeile[$fldpos["unit"]];
+ } else {
+ $unit = ($artikel)?$stdunitD:$stdunitW;
+ }
+ }
+
+ /* Buchungsgruppe ermitteln */
+ if ($maske["bugrufix"]==1) {
+ $bg = $maske["bugru"];
+ } else {
+ if ($zeile[$fldpos["income_accno"]]<>"" and $zeile[$fldpos["expense_accno"]]<>"") {
+ /* search for buchungsgruppe */
+ $bg = getBuchungsgruppe($db, $zeile[$fldpos["income_accno"]],$zeile[$fldpos["expense_accno"]]);
+ if ($bg == "" and $maske["bugrufix"]==2 and $maske["bugru"]<>"") {
+ $bg = $maske["bugru"];
+ }
+ } else if ($maske["bugru"]<>"" and $maske["bugrufix"]==2) {
+ $bg = $maske["bugru"];
+ } else {
+ /* nothing found? user must create one */
+ echo "Error in line $m: ";
+ echo "Keine Buchungsgruppe gefunden für <br>";
+ echo "Erlöse Inland: ".$zeile[$fldpos["income_accno"]]."<br>";
+ echo "Aufwand Inland: ".$zeile[$fldpos["expense_accno"]]."<br>";
+ echo "Bitte legen Sie eine an oder geben Sie eine vor.<br>";
+ echo "<br>";
+ $errors++;
+ }
+ }
+ if ($bg > 0) {
+ /* found one, add income_accno_id etc from buchungsgr. */
+ /* XXX nur bei artikel!!! */
+ if ($artikel) {
+ $inventory_accno = getFromBG($db, $bg, "inventory_accno_id");
+ };
+ $income_accno = getFromBG($db, $bg, "income_accno_id_0");
+ $expense_accno = getFromBG($db, $bg, "expense_accno_id_0");
+ $bg = $bg * 1;
+ } else {
+ echo "Error in line $m: ";
+ echo "Keine Buchungsgruppe angegeben/gefunden<br>";
+ $errors++;
+ continue;
+ }
+
+ $description = preg_replace('/""[^ ]/','"',$zeile[$fldpos["description"]]);
+ $description = addslashes($description);
+ if (Translate) translate($description);
+
+ // rop und weight müssen null oder Zahl sein
+ if ($zeile[$fldpos["rop"]]) $rop = 1 * str_replace(",", ".",$zeile[$fldpos["rop"]]);
+ if ($zeile[$fldpos["weight"]]) $weight = 1 * str_replace(",", ".", $zeile[$fldpos["weight"]]);
+
+ // Shop-Artikel
+ if ($zeile[$fldpos["shop"]]) {
+ $shop = (strtolower($zeile[$fldpos["shop"]]=='t'))?'t':'f';
+ } else {
+ $shop = $maske["shop"];
+ }
+ // Artikel updaten
+
+ if (getPartsid($db,trim($zeile[$fldpos["partnumber"]]))) {
+ /* es gibt die Artikelnummer */
+ if ($Update) {
+ /* Updates durchführen */
+ if ($UpdText=='1') {
+ $u += updParts($db,$insert,$show,$zeile[$fldpos["partnumber"]],$lastcost,$sellprice,$listprice,
+ $description,$notes,$zeile[$fldpos["ean"]],$weight,
+ $zeile[$fldpos["image"]],$partsgroup_id,$pricegroup, $shop);
+ } else {
+ $u += updPrice($db,$insert,$show,$zeile[$fldpos["partnumber"]],$lastcost,$sellprice,$listprice,$pricegroup,$shop);
+ }
+ continue;
+ // nächste Zeile
+ }
+ }
+
+ // Neuen Artikel einfügen
+
+ if ($zeile[$fldpos["partnumber"]] == "") {
+ $zeile[$fldpos["partnumber"]] = newPartNumber($db,$check);
+ //Keine Artikelnummer bekommen
+ if ($zeile[$fldpos["partnumber"]] == "") {
+ continue;
+ }
+ }
+ $i += insertParts($db,$insert,$show,array(
+ "partnumber"=>$zeile[$fldpos["partnumber"]],
+ "description"=>$description,"notes"=>$notes,
+ "ean"=>$zeile[$fldpos["ean"]],"unit"=>$unit,
+ "weight"=>$weight,"image"=>$zeile[$fldpos["image"]],
+ "sellprice"=>$sellprice,
+ "lastcost"=>$lastcost,
+ "listprice"=>$listprice,
+ "partsgroup_id"=>$partsgroup_id,
+ "buchungsgruppen_id"=>$bg,"income_accno_id"=>$income_accno,
+ "expense_accno_id"=>$expense_accno,"inventory_accno_id"=>$inventory_accno,
+ "microfiche"=>$zeile[$fldpos["microfiche"]],"drawing"=>$zeile[$fldpos["drawing"]],
+ "rop"=>$rop,"assembly"=>$assembly,
+ "shop"=>$shop,"makemodel"=>$makemodel),$pricegroup
+ );
+ if ($hersteller>0 ) { // && $model) {
+ $partsid=getPartsid($db,$zeile[$fldpos["partnumber"]]);
+ if ($partsid) {
+ getMakemodel($db,$check,$hersteller,$model,$partsid,$lastcost,true);
+ }
+ }
+ unset($zeile);
+ }
+
+ if ($show) show("</table>",false);
+ fclose($f);
+ echo "$m Zeilen bearbeitet. Importiert: $i Update: $u (".($m-$u-$i+$errors)." : Fehler) ";
+}
+?>