X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=lxo-import%2Fparts_import.php;fp=lxo-import%2Fparts_import.php;h=3d4a03304ca112efc84c19fe05be782277ca3871;hb=e2903b0d056db3b97b846ddde87a44b4f5a10954;hp=a66e4049f704fa49f312a7ac6dbb0643e1e481d1;hpb=2740f3f03035bd1db6d32edaceca6c413ed81496;p=kivitendo-erp.git
diff --git a/lxo-import/parts_import.php b/lxo-import/parts_import.php
index a66e4049f..3d4a03304 100644
--- a/lxo-import/parts_import.php
+++ b/lxo-import/parts_import.php
@@ -23,7 +23,6 @@ function getPartsgroupId($db, $value, $add) {
return $rs[0]["id"];
}
-//Muß noch eingebunden werden
function getMakemodel($db,$hersteller,$model,$partsid,$add=true) {
$sql="select * from makemodel where make like '$hersteller' and model like = '$model'";
$rs=$db->getAll($sql);
@@ -43,7 +42,6 @@ function getAccnoId($db, $accno) {
return $rs[0]["id"];
}
-//Auf Artikelnummer testen, bzw. neue Nummer erzeugen
function chkPartNumber($db,$number,$check) {
if ($number<>"") {
$sql = "select * from parts where partnumber = '$number'";
@@ -68,9 +66,7 @@ function chkPartNumber($db,$number,$check) {
}
return $number;
}
-
-//Artikelnummer testen und wenn vorhanden Preis ändern
-function chkPartNumberUpd($db,$sellprice,$partnumber,$check){
+function chkPartNumberUpd($db,$sellprice,$partnumber,$descript,$note,$check,$shop='n'){
if ($partnumber=="") {
$nummer=chkPartNumber($db,$partnumber,$check);
if ($nummer=="") { return -99; }
@@ -79,8 +75,9 @@ function chkPartNumberUpd($db,$sellprice,$partnumber,$check){
$sql = "select * from parts where partnumber = '$partnumber'";
$rs=$db->getAll($sql);
if ($rs[0]["id"]>0) {
- if ($check) return -1;
- $sql="update parts set sellprice = $sellprice where partnumber = '$partnumber'";
+ $sql="update parts set sellprice = $sellprice, shop='$shop'";
+ if ($descript) $sql.=",description='$descript',notes='$note'";
+ $sql.=" where partnumber = '$partnumber'";
$rc=$db->query($sql);
if ($rc) return -1;
return -99;
@@ -136,6 +133,7 @@ function getStdUnit($db,$type) {
return $rs[0]["name"];
}
+
function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $insert, $show,$maske) {
$pgshow=false;
@@ -144,6 +142,9 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
$precision=$maske["precision"];
$quotation=$maske["quotation"];
$quottype=$maske["quottype"];
+ $shop=$maske["shop"];
+ $wgtrenner=$maske["wgtrenner"];
+ $UpdText=($maske["TextUpd"]=="1")?true:false;
$Update=($maske["update"]=="U")?true:false;
/* field description */
@@ -163,8 +164,10 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
$fld = strtolower(trim(strtr($fld,array("\""=>"","'"=>""))));
$in_fld[]=$fld;
if (in_array(trim($fld),$parts_fld)) {
- if ($fld=="partsgroup" || $fld=="partsgroup1" ) {
+ if (substr($fld,0,10)=="partsgroup") {
$pgshow=true;
+ } else if ($fld=="notes" || $fld=="notes1" ) {
+ $note2show=true;
} else {
show( $show, "
$fld | \n");
}
@@ -177,23 +180,39 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
show( $show, "unit | \n");
};
if ($pgshow) show( $show, "partsgroup | \n");
+ if ($note2show) show( $show, "notes | \n");
$posprice=0;
$posnumber=0;
+ $posdescript=0;
+ $posnotes=0;
+ $posnotes1=0;
$j=0;
foreach ($infld as $value) {
if ($infld[$j]=="sellprice") $posprice=$j;
if ($infld[$j]=="partnumber") $posnumber=$j;
+ if ($infld[$j]=="description") $posdescript=$j;
+ if ($infld[$j]=="notes") $posnotes=$j;
+ if ($infld[$j]=="notes1") $posnotes1=$j;
$j++;
}
$m=0; /* line */
$errors=0; /* number of errors detected */
$income_accno = "";
$expense_accno = "";
+
+ /*if ($insert) {
+ $sql="update parts set shop = 'n' where partnumber like '______'";
+ $rc=$db->query($sql);
+ //echo $sql; print_r($rc); echo "
";
+ if (!$rc) {
+ echo "Fehler: Artikel nicht aus dem Shop genommen";
+ }
+ };*/
if ($quottype=="P") $quotation=($quotation+100)/100;
- while ( ($zeile=fgetcsv($f,15000,$trenner)) != FALSE) {
+ while ( ($zeile=fgetcsv($f,120000,$trenner)) != FALSE) {
$i=0; /* column */
$m++; /* increase line */
-
+
if ($Update) {
$sellprice=$zeile[$posprice];
$partnumber=$zeile[$posnumber];
@@ -203,7 +222,20 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
else { $sellprice = $sellprice * $quotation; }
};
if ($precision>=0) $sellprice = round($sellprice,$precision);
- $rc=chkPartNumberUpd($db,$sellprice,$partnumber,!$insert);
+ if ($UpdText) {
+ $description=$zeile[$posdescript];
+ $note=$zeile[$posnotes];
+ $note1=$zeile[$posnotes1];
+ $note=mb_convert_encoding($note,"ISO-8859-15","ISO-8859-15");
+ $note=preg_replace('/""[^ ]/','"',$note);
+ $note=" \n".addslashes($note);
+ $note1=mb_convert_encoding($note1,"ISO-8859-15","ISO-8859-15");
+ $note1=preg_replace('/""[^ ]/','"',$note1);
+ $note.=" \n".addslashes($note1);
+ $rc=chkPartNumberUpd($db,$sellprice,$partnumber,$description,$note,$check);
+ } else {
+ $rc=chkPartNumberUpd($db,$sellprice,$partnumber,false,false,$check);
+ }
if ($rc==-1) {
show($show,"Update | $partnumber:$sellprice |
\n");
continue;
@@ -218,14 +250,16 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
$sql="insert into $file ";
$keys="(";
$vals=" values (";
-
show( $show, "$m | \n");
/* for each column */
$dienstleistung=false;
$artikel=-1;
$partNr=false;
- $pg_name_val="";
+ $pg_name_val=array();
+ $note_val="";
+ $model="";
+ $hersteller="";
foreach($zeile as $data) {
/* check if column will be imported */
if (!in_array(trim($in_fld[$i]),$parts_fld)) {
@@ -237,20 +271,13 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
/* add key and data */
/* special case partsgroup1 */
- if ($key == "partsgroup1") {
- if ($pg_name_val<>"") {
- if ($data<>"") $pg_name_val.="!".$data;
- } else {
- $pg_name_val=$data;
- }
- $i++;
- continue;
- } else if ($key == "partsgroup") {
- /* special case partsgroup */
- $pg_name_val=$data;
+ if (substr($key,0,10) == "partsgroup") {
+ if (strlen($key)==10) { $pgnr=0; }
+ else { $pgnr=substr($key,-1); }
+ $pg_name_val[$pgnr]=$data;
$i++;
continue;
- } else if ($key == "lastcost" ||
+ } else if ($key == "lastcost" ||
$key == "sellprice") {
/* convert 0,0 numeric into 0.0 */
@@ -275,11 +302,32 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
//show( $show, "$partnumber | \n");
}
} else if ($key == "description") {
- $data=mb_convert_encoding($data,"ISO-8859-15","auto");
+ $data=mb_convert_encoding($data,"ISO-8859-15","ISO-8859-15");
+ $data=preg_replace('/""[^ ]/','"',$data);
$data=addslashes($data);
} else if ($key == "notes") {
- $data=mb_convert_encoding($data,"ISO-8859-15","auto");
- $data=addslashes($data);
+ $data=mb_convert_encoding($data,"ISO-8859-15","ISO-8859-15");
+ $data=preg_replace('/""[^ ]/','"',$data);
+ $notesval=addslashes($data);
+ $i++;
+ continue;
+ } else if ($key == "notes1") {
+ $data=mb_convert_encoding($data,"ISO-8859-15","ISO-8859-15");
+ $data=preg_replace('/""[^ ]/','"',$data);
+ $notesval.=" \n".addslashes($data);
+ $i++;
+ continue;
+ //$key="notes";
+ /*} else if ($key == "makemodel") {
+ $data=mb_convert_encoding($data,"ISO-8859-15","ISO-8859-15");
+ $hersteller=addslashes($data);
+ $i++;
+ continue;
+ } else if ($key == "model") {
+ $data=mb_convert_encoding($data,"ISO-8859-15","ISO-8859-15");
+ $model=addslashes($data);
+ $i++;
+ continue;*/
} else if ($key == "unit") {
if ($data=="") {
if ($maske["ware"]=="W") { $data=$stdunitW; }
@@ -293,6 +341,7 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
else if ($data == "Stunde")
$data = "Std";
/* check if unit exists */
+ //echo "!$data!";
if (!existUnit($db, $data)) {
echo "Error in line $m: ";
echo "Einheit $data existiert nicht ";
@@ -314,12 +363,12 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
$i++;
show( $show, "$data | \n");
continue;
- }
+ }
if ($data==false or empty($data) or !$data) {
show( $show, "NULL | \n");
$i++;
continue;
- }
+ }
/* convert JA to Yes */
if ($data === "J" || $data === "j") $data = "Y";
$vals.="'".$data."',";
@@ -335,14 +384,33 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
show( $show,"$einh | \n");
}
/* special case partsgroup */
+ //Mehrere Warengruppennamen werden mit einem Trennzeichen zu einen Namen zusammengefürt.
if ($pgshow) {
- if ($pg_name_val) {
+ foreach($pg_name_val as $pg) {
+ if ($pg>"") $pgname.=$pg.$wgtrenner;
+ };
+ unset($pg_name_val);
+ if ($pgname and $pgname <> "!") {
+ $pgname=substr($pgname,0,-1);
/* get ID of partsgroup or add new
* partsgroup_id */
- $ID = getPartsgroupId($db, $pg_name_val, $insert);
+ $ID = getPartsgroupId($db, $pgname, $insert);
$keys.= "partsgroup_id,";
$vals.="'".$ID."',";
- show( $show, "".htmlentities($pg_name_val).":$ID | \n");
+ show( $show, "".htmlentities($pgname).":$ID | \n");
+ } else {
+ show( $show,"NULL | \n");
+ }
+ }
+ if ($note2show) {
+ if ($notesval) {
+ $keys.="notes,";
+ $vals.="'$notesval',";
+ if (strlen($notesval)>255) {
+ show( $show, "".substr($notesval,0,25)." . . . ".htmlentities(substr($notesval,-25))." | \n");
+ } else {
+ show( $show, "$notesval | \n");
+ }
} else {
show( $show,"NULL | \n");
}
@@ -398,9 +466,16 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
show( $show, "$partnumber | \n");
}
}
- $sql.=$keys."import)";
- $sql.=$vals.time().")";
- //show( $show, " $sql | \n");
+ //Automatisch Bilder mit einbinden
+ //Die Bilder müssen manuell hier (bilder/) her kopiert werden.
+ //Names des Bildes: "bilder/" + Artikelnummer in Grossbuchstaben + ".jpg"
+ //$bild="bilder/".strtoupper($bild).".jpg";
+ //$sql.=$keys."image,shop,weight,import)";
+ //$sql.="$vals'$bild','$shop',3,".time().")";
+
+ //ohne Bilder
+ $sql.=$keys."shop,weight,import)";
+ $sql.="$vals'$shop',3,".time().")";
if ($insert) {
show( $show, "");
@@ -412,7 +487,7 @@ function import_parts($db, $file, $trenner, $trennzeichen, $fields, $check, $ins
}
show( $show, " | \n");
}
-
+ $pgname="";
show( $show, "
\n");
}