app = $app; $this->parsetarget = $parsetarget; parent::__construct($app,$parsetarget); $this->ExtendsForm(); } function ExtendsForm() { //$this->app->YUI->AutoComplete(STANDARDLAGERAUTO,"lager_platz",array('kurzbezeichnung'),"kurzbezeichnung"); //$this->app->YUI->AutoComplete(PROJEKTAUTO,"projekt",array('name','abkuerzung'),"abkuerzung"); $this->app->YUI->AutoComplete("projekt","projektname",1); $this->app->YUI->AutoComplete("adresse","lieferant"); $this->app->YUI->AutoComplete("typ","artikelgruppe"); $this->app->YUI->AutoComplete("shop","shopname"); $this->app->YUI->AutoComplete("shop2","shopname"); $this->app->YUI->AutoComplete("shop3","shopname"); $this->app->YUI->AutoComplete("variante_von","artikelnummer"); $this->app->YUI->AutoComplete("hersteller","hersteller"); $this->app->YUI->AutoComplete("einheit","artikeleinheit"); $this->app->YUI->AutoComplete("herstellerlink","herstellerlink"); $this->app->YUI->AutoComplete("lager_platz","lagerplatz"); $this->app->YUI->AutoComplete("zolltarifnummer","zolltarifnummer",1); $this->app->YUI->AutoComplete("bestandalternativartikel","artikelnummer"); $this->app->YUI->AutoComplete("steuergruppe","steuergruppe"); $this->app->YUI->AutoComplete("kostenstelle","kostenstelle",1); $this->app->YUI->AutoComplete("steuersatz","steuersatz",1); $this->app->YUI->AutoComplete("preproduced_partlist","lagerartikelnummer"); $this->form->ReplaceFunction("adresse",$this,"ReplaceLieferant"); $this->form->ReplaceFunction("steuergruppe",$this,"ReplaceSteuergruppe"); $this->form->ReplaceFunction("gueltigbis",$this,"ReplaceDatum"); $this->form->ReplaceFunction("lager_platz",$this,"ReplaceLagerplatz"); $this->form->ReplaceFunction("shop",$this,"ReplaceShopname"); $this->form->ReplaceFunction("shop2",$this,"ReplaceShopname"); $this->form->ReplaceFunction("shop3",$this,"ReplaceShopname"); $this->form->ReplaceFunction("variante_von",$this,"ReplaceArtikel"); $this->form->ReplaceFunction("preproduced_partlist",$this,"ReplaceArtikel"); $this->form->ReplaceFunction("projekt",$this,"ReplaceProjekt"); $this->form->ReplaceFunction("pseudopreis",$this,"ReplaceDecimal"); $this->form->ReplaceFunction("gewicht",$this,"ReplaceDecimal"); $this->form->ReplaceFunction("steuersatz_erloese_normal",$this,"ReplaceSteuersatz"); $this->form->ReplaceFunction("steuersatz_erloese_ermaessigt",$this,"ReplaceSteuersatz"); $this->form->ReplaceFunction("steuersatz_erloese_innergemeinschaftlich",$this,"ReplaceSteuersatz"); $this->form->ReplaceFunction("steuersatz_erloese_euermaessigt",$this,"ReplaceSteuersatz"); $this->form->ReplaceFunction("steuersatz_erloese_export",$this,"ReplaceSteuersatz"); $this->form->ReplaceFunction("bestandalternativartikel",$this,"ReplaceArtikel"); $this->form->ReplaceFunction("pseudopreis",$this,"ReplaceBetrag"); $this->form->ReplaceFunction("breite",$this,"ReplaceBetrag"); $this->form->ReplaceFunction("hoehe",$this,"ReplaceBetrag"); $this->form->ReplaceFunction("laenge",$this,"ReplaceBetrag"); $this->form->ReplaceFunction("inventurek",$this,"ReplaceBetrag"); $this->form->ReplaceFunction("berechneterek",$this,"ReplaceBetrag"); $this->form->ReplaceFunction("nummer",$this,"ReplaceTrim"); $this->form->ReplaceFunction("ean",$this,"ReplaceTrim"); $this->form->ReplaceFunction("name_de",$this,"ReplaceTrim"); $this->form->ReplaceFunction("steuersatz",$this,"ReplaceSteuersatz"); $this->app->Tpl->Set('GEWICHTBEZEICHNUNG', $this->app->erp->GetGewichtbezeichnung()); $this->app->YUI->CkEditor("uebersicht_de", "internal"); $this->app->YUI->CkEditor("uebersicht_en", "internal"); if($this->app->erp->Firmendaten("briefhtml")=="1") { $this->app->YUI->CkEditor("anabregs_text","belege"); $this->app->YUI->CkEditor("anabregs_text_en","belege"); } $id = $this->app->Secure->GetGET("id"); $this->app->erp->RunHook('article_widget',1, $id); $action = $this->app->Secure->GetGET("action"); $nummer = $this->app->Secure->GetPOST("nummer"); $submit = $this->app->Secure->GetPOST("speichern"); $projekt = $this->app->Secure->GetPOST("projekt"); $projekttmp = $this->app->DB->Select("SELECT projekt FROM artikel WHERE id='$id' LIMIT 1"); // versuchen standardprojekt zu kriegen beim anlegen if($action==='create') { if($projekttmp <=0) $projekttmp = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' AND abkuerzung!='' LIMIT 1"); if($projekttmp <=0) $projekttmp = $this->app->erp->GetCreateProjekt(); } $_artikelart = $this->app->erp->GetArtikelgruppe($projekttmp); if($id){ $standardbild = $this->app->erp->GetArtikelStandardbild($id,true); if($standardbild > 0){ //$this->app->Tpl->Set('ARTIKELBILD', ""); $this->app->Tpl->Set('ARTIKELBILD', 'Artikelbild' ); } $standardlieferant = $this->app->DB->Select("SELECT adresse FROM artikel WHERE id='$id' LIMIT 1"); $hinweistextlieferant = $this->app->DB->Select("SELECT hinweistextlieferant FROM adresse WHERE id='$standardlieferant' LIMIT 1"); if($hinweistextlieferant!='') { if($standardbild <=0) { $this->app->Tpl->Set('ARTIKELBILD', ""); } $this->app->YUI->CkEditor("readonlybox","none"); $this->app->Tpl->Set('INFOFUERAUFTRAGSERFASSUNG',"
Info von Lieferant
"); } // $this->app->Tpl->Add('ARTIKELBILD',""); $kat = $this->app->DB->Select("SELECT typ FROM artikel WHERE id = '$id' LIMIT 1"); if(!empty($kat) && !isset($_artikelart[$kat])) { $artikelart[$kat] = ''; $this->app->Tpl->Add('MESSAGE','
Es ist eine falsche Artikelkategorie ausgewählt
'); } if(empty($kat)){ $artikelart[''] = '- Keine Kategorie zugewiesen -'; } } foreach($_artikelart as $k => $v) { $artikelart[$k] = $v; } if($action==='create' && $this->app->DB->Select("SELECT COUNT(id) FROM artikelkategorien WHERE geloescht!=1 AND projekt > 0") > 0 && $this->app->DB->Select("SELECT COUNT(id) FROM artikelkategorien WHERE geloescht!=1 AND projekt <= 0") > 0 ) { $artikelart = array(''=>'')+$artikelart; } $field = new HTMLSelect('typ',0); $field->AddOptionsSimpleArray($artikelart); $this->form->NewField($field); $land = $this->app->erp->GetSelectLaenderliste(); $field = new HTMLSelect('herkunftsland',0); $field->AddOptionsSimpleArray($land); $chargensel = null; $chargensel['0'] = 'keine'; $chargensel['1'] = 'aktivieren'; $chargensel['2'] = 'aktivieren'; if($this->app->DB->Select("SELECT id FROM artikel WHERE id = '$id' AND chargenverwaltung = '1' LIMIT 1")) { unset($chargensel['2']); }else{ unset($chargensel['1']); } $field = new HTMLSelect('chargenverwaltung',0); $field->AddOptionsAsocSimpleArray($chargensel); /* 18.05. heute ausgeblendet / kein herkunftsland als standard if($action=="create" && !$this->app->Secure->GetPOST('speichern')) { $landdefault = $this->app->erp->Firmendaten('land'); if(!$landdefault)$landdefault = 'DE'; $field->value=$landdefault; } */ $this->form->NewField($field); if($this->app->Secure->POST['projekt']=='') { $projekt = $this->app->DB->Select("SELECT standardprojekt FROM firma WHERE id='".$this->app->User->GetFirma()."' LIMIT 1"); $projekt_bevorzugt=$this->app->DB->Select("SELECT projekt_bevorzugen FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1"); if($projekt_bevorzugt=='1') { $projekt = $this->app->DB->Select("SELECT projekt FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1"); } $field = new HTMLInput("projekt","text",$projekt); $field->value=$projekt; $this->form->NewField($field); } $field = new HTMLCheckbox("rabatt","","","1"); $field->onclick="rabattevent();"; $this->form->NewField($field); $field = new HTMLCheckbox("juststueckliste","","","1"); $field->onclick="juststuecklisteevent(this.form.juststueckliste.value);"; $this->form->NewField($field); $field = new HTMLCheckbox("stueckliste","","","1"); $field->onclick="stuecklisteevent(this.form.stueckliste.value);"; $this->form->NewField($field); $field = new HTMLCheckbox("porto","","","1"); $field->onclick="portoevent(this.form.porto.value);"; $this->form->NewField($field); $field = new HTMLCheckbox("lagerartikel","","","1"); $field->onclick="lagerartikelevent(this.form.lagerartikel.value);"; $this->form->NewField($field); /* pruefung Artikel nummer doppel */ if(is_numeric($id)){ $nummer_db = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='$id' LIMIT 1"); } if(is_numeric($id)){ //$artikelart = $this->app->DB->Select("SELECT typ FROM artikel WHERE id='$id' LIMIT 1"); } //$anzahl_nummer = $this->app->DB->Select("SELECT count(id) FROM artikel WHERE firma='".$this->app->User->GetFirma()."' AND nummer='$nummer_db'"); if($nummer !=''){ $fremde_anzahl_nummer = $this->app->DB->Select("SELECT count(id) FROM artikel WHERE nummer='$nummer' AND id!='$id' AND geloescht=0"); } else { $fremde_anzahl_nummer = 0; } //exec('echo "hallo ('.$submit.') nummer: ('.$nummer.') action:('.$action.')" >> /tmp/test'); $neuenummervergeben=0; if($this->app->erp->Firmendaten('parameterundfreifelder')!=1) { $this->app->Tpl->Set('DISABLEOPENPARAMETER',''); //Workaround für Freifelder werden im Artikel gelöscht wenn Freifelder nicht angezeigt und Artikel gespeichert wird //Vielleicht besser bei Speicherfunktion direkt ansetzen for($i = 1; $i <= 40; $i++) { $this->app->Tpl->Set('VORFREIFELD'.$i, ''); $this->app->Tpl->Set('NACHFREIFELD'.$i, ''); } $this->app->Tpl->Set('DISABLEOPENPARAMETER2','
'); $this->app->Tpl->Set('DISABLECLOSEPARAMETER2','
'); } else { $this->app->erp->ArtikelFreifeldBezeichnungen(); } if(!$this->app->erp->ModulVorhanden('formeln')) { $this->app->Tpl->Set('VORFORMELN',''); } $tmpi=0; if($this->app->erp->Firmendaten('parameterundfreifelder')){ for($i = 1; $i <= 40; $i++) { if($this->app->erp->Firmendaten('freifeld'.$i)!=''){ $this->app->Tpl->Set('FREIFELD' . $i . 'BEZEICHNUNG', $this->app->erp->Firmendaten('freifeld' . $i)); } else{ $this->app->Tpl->Set('FREIFELD' . $i . 'BEZEICHNUNG', 'Freifeld ' . $i); } } $aktind = 0; for($i = 1; $i <= 40; $i++) { $n1 = 'freifeld'.$i.'typ'; $n2 = 'freifeld'.$i.'spalte'; $n3 = 'freifeld'.$i.'sort'; $freifeldtyp[$i] = $this->app->erp->Firmendaten($n1); $freifeldspalte[$i] = $this->app->erp->Firmendaten($n2); $freifeldsort[$i] = $this->app->erp->Firmendaten($n3); if($freifeldspalte[$i] > 0) { $this->app->Tpl->Set('VORFREIFELD'.$i,''); $spalte[$freifeldspalte[$i]][$i]['index'] = $i; $spalte[$freifeldspalte[$i]][$i]['sort'] = $freifeldsort[$i]; $sort[$freifeldspalte[$i]][$i] = $freifeldsort[$i]; }else{ $aktind++; if($aktind % 2 == 1) { $this->app->Tpl->Set('VORFREIFELD'.$i,''); $this->app->Tpl->Set('NACHFREIFELD'.$i,''); }else{ $this->app->Tpl->Set('VORFREIFELD'.$i,' '); $this->app->Tpl->Set('NACHFREIFELD'.$i,''); } } } for($s = 1; $s <= 2; $s++) { if(isset($spalte[$s])) { array_multisort($sort[$s], SORT_ASC, $spalte[$s]); $this->app->Tpl->Set('FREIFELDSPALTE'.$s,''); foreach($spalte[$s] as $k => $v) { $tmpi++; $bez = (String)$this->app->erp->Firmendaten('freifeld'.$v['index']); if($freifeldtyp[$v['index']] === 'select') { $optionen = null; $beza = explode('|', $bez); $bez = trim($beza[0]); $cbeza = count($beza); if($cbeza > 1) { for($inds = 1; $inds < $cbeza; $inds++){ $optionen[] = trim($beza[$inds]); } } } if(empty($bez)){ $bez = 'Freifeld '.$v['index']; } $this->app->Tpl->Add('FREIFELDSPALTE'.$s,''); } $this->app->Tpl->Add('FREIFELDSPALTE'.$s,'
'); $this->app->Tpl->Add('FREIFELDSPALTE'.$s,$bez.':'); switch($freifeldtyp[$v['index']]) { case 'checkbox': $this->app->Tpl->Add('FREIFELDSPALTE'.$s,'app->DB->Select("SELECT freifeld".$v['index']." FROM artikel WHERE id = '$id' LIMIT 1")?' checked="checked" ':'').' />'); break; case 'mehrzeilig': $this->app->Tpl->Add('FREIFELDSPALTE'.$s,''); break; case 'datum': $this->app->Tpl->Add('FREIFELDSPALTE'.$s,''); $this->app->YUI->DatePicker('freifeld'.$v['index']); break; case 'select': $this->app->Tpl->Add('FREIFELDSPALTE'.$s,''); break; default: $this->app->Tpl->Add('FREIFELDSPALTE'.$s,''); break; } $this->app->Tpl->Add('FREIFELDSPALTE'.$s,'
'); } } } if($tmpi>0) { $this->app->Tpl->Set('BENUTZERDEFINIERT','Weitere Felder'); } else { $this->app->Tpl->Set('BENUTZERDEFINIERTSTART',''); } if(!$this->app->erp->ModulVorhanden('steuerregeln')) { $this->app->Tpl->Set('VORSTEUERREGELN',''); } if($nummer == '' && $action==='edit' && $submit!='') { // erst platt machen $this->app->DB->Update("UPDATE artikel SET nummer='' WHERE id='$id'"); $artikelart = $this->app->Secure->GetPOST('typ'); $neue_nummer = $this->app->erp->GetNextArtikelnummer($artikelart,$this->app->User->GetFirma(),$projekttmp); $nummer_db = $neue_nummer; $this->app->Secure->POST['nummer']=$neue_nummer; $this->app->DB->Update("UPDATE artikel SET nummer='$neue_nummer' WHERE id='$id' LIMIT 1"); $field = new HTMLInput('nummer','hidden',$neue_nummer); $this->form->NewField($field); $this->app->YUI->Message('info','Es wurde eine neue Artikelnummer vergeben.'); $neuenummervergeben=1; } if($nummer == '' && $action==='create' && $submit!='') { //exec('echo "neu '.$submit.' '.$nummer.' '.$action.' '.$artikelart.'" >> /tmp/test'); // erst platt machen $artikelart = $this->app->Secure->GetPOST("typ"); $neue_nummer = $this->app->erp->GetNextArtikelnummer($artikelart,$this->app->User->GetFirma(),$projekttmp); $nummer_db = $neue_nummer; $this->app->Secure->POST["nummer"]=$neue_nummer; $field = new HTMLInput("nummer","hidden",$neue_nummer); $this->form->NewField($field); $this->app->YUI->Message("info","Es wurde eine neue Artikelnummer vergeben."); if($this->app->Secure->POST["projekt"]=="") { $field = new HTMLInput("projekt","text",$projekttmp); $field->value=$projekttmp; $this->form->NewField($field); } $neuenummervergeben=1; } if($action==='create') { if($this->app->erp->Version()==='stock') { $this->app->Secure->POST["lagerartikel"]=1; $field = new HTMLInput("lagerartikel","hidden",1); $this->form->NewField($field); } } if($action === 'edit' && $nummer != '' && ($nummer !== $nummer_db)) { $doppelteNummern = $this->app->DB->SelectArr( sprintf( "SELECT art.nummer, count(art.nummer) as NumOccurrences, if(ifnull(pr.eigenernummernkreis,0) = 0,0,pr.id) AS projekt FROM artikel art LEFT JOIN projekt pr ON art.projekt = pr.id WHERE art.geloescht <> '1' AND art.nummer <> '' AND art.nummer <> 'DEL' AND nummer in ('%s','%s') GROUP BY art.nummer,if(ifnull(pr.eigenernummernkreis,0) = 0,0,pr.id) HAVING (COUNT(art.nummer) > 0) LIMIT 101", $nummer_db, $nummer ) ); if(!empty($doppelteNummern)) { $oldCount = []; $newCount = []; foreach($doppelteNummern as $doppelteNummer) { if($doppelteNummer['nummer'] == $nummer) { $newCount[] = $doppelteNummer['NumOccurrences'] + 1; } elseif($doppelteNummer['nummer'] == $nummer_db) { $oldCount[] = $doppelteNummer['NumOccurrences']; } } $oldCount = implode(',', $oldCount); $newCount = implode(',', $newCount); if($newCount === '') { $newCount = '1'; } if($oldCount !== $newCount) { $this->app->erp->ClearSqlCache('artikel'); } } } //$already_set=0; $anzahl_nummer = $this->app->DB->Select("SELECT count(id) FROM artikel WHERE firma='".$this->app->User->GetFirma()."' AND nummer='$nummer_db' AND geloescht!=1"); if(($anzahl_nummer > 1 || $fremde_anzahl_nummer > 0) && $neuenummervergeben==1) { $this->app->erp->ClearSqlCache('artikel'); } if(($anzahl_nummer > 1 || $fremde_anzahl_nummer > 0) && $neuenummervergeben!=1 && $action==='edit') { $this->app->YUI->Message('error','Achtung! Die Artikelnummer wurde doppelt vergeben!'); } $warengruppe = $this->app->erp->GetArtikelWarengruppe(); $field = new HTMLSelect('warengruppe',0); $field->AddOptionsSimpleArray($warengruppe); $this->form->NewField($field); $this->app->Secure->POST["firma"]=$this->app->User->GetFirma(); $field = new HTMLInput('firma','hidden',$this->app->User->GetFirma()); $this->form->NewField($field); if($id && $this->app->DB->Select("SELECT id FROM artikel WHERE id = '$id' AND stueckliste = 1 LIMIT 1") && !$this->app->DB->Select("SELECT id FROM stueckliste WHERE `stuecklistevonartikel` = '$id' LIMIT 1")) { $this->app->Tpl->Add('MESSAGE','
Der Artikel ist als Stückliste markiert, enthält aber keine Stücklistenelemente
'); } } function ReplaceDecimal($db,$value,$fromform) { return $this->app->erp->ReplaceDecimal($db,$value,$fromform); } function ReplaceProjekt($db,$value,$fromform) { return $this->app->erp->ReplaceProjekt($db,$value,$fromform); } function ReplaceDatum($db,$value,$fromform) { //value muss hier vom format ueberprueft werden $dbformat = 0; if(strpos($value,'-') > 0) { $dbformat = 1; } // wenn ziel datenbank if($db) { if($dbformat) { return $value; } return $this->app->String->Convert($value,'%1.%2.%3','%3-%2-%1'); } // wenn ziel formular if($dbformat){ return $this->app->String->Convert($value, '%1-%2-%3', '%3.%2.%1'); } return $value; } function ReplaceShopname($db,$value,$fromform) { //value muss hier vom format ueberprueft werden $dbformat = 0; if(!$fromform) { $dbformat = 1; $id = $value; if(is_numeric($id)){ $abkuerzung = $this->app->DB->Select("SELECT bezeichnung FROM shopexport WHERE id='$id' LIMIT 1"); }else{ $abkuerzung = ''; } } else { $dbformat = 0; $abkuerzung = $value; $id = $this->app->DB->Select("SELECT id FROM shopexport WHERE bezeichnung='$value' LIMIT 1"); } // wenn ziel datenbank if($db) { return $id; } // wenn ziel formular return $abkuerzung; } function ReplaceBetrag($db,$value,$fromform) { return $this->app->erp->ReplaceBetrag($db,$value,$fromform); } public function ReplaceTrim($db,$value,$fromform) { return trim($value); } function ReplaceLagerplatz($db,$value,$fromform) { //value muss hier vom format ueberprueft werden $dbformat = 0; if(!$fromform) { $dbformat = 1; $id = $value; if(is_numeric($id)){ $abkuerzung = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='$id' LIMIT 1"); }else{ $abkuerzung = ''; } } else { $dbformat = 0; $abkuerzung = $value; $id = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung='$value' LIMIT 1"); } // wenn ziel datenbank if($db) { return $id; } // wenn ziel formular return $abkuerzung; } function ReplaceLieferant($db,$value,$fromform) { return $this->app->erp->ReplaceLieferant($db,$value,$fromform); } function ReplaceSteuergruppe($db,$value,$fromform) { return $this->app->erp->ReplaceSteuergruppe($db,$value,$fromform); } function ReplaceArtikel($db,$value,$fromform) { return $this->app->erp->ReplaceArtikel($db,$value,$fromform); } function ReplaceSteuersatz($db,$value,$fromform) { if($db) { if($value === '' || $value === null) { return -1; } return str_replace(',','.', $value); } if($value < 0){ return ''; } return $value; } public function Table() { $table = new EasyTable($this->app); $table->Query("SELECT nummer, name_de as name,barcode, id FROM artikel order by nummer"); $table->Display($this->parsetarget); } public function Search() { //$this->app->Tpl->Set($this->parsetarget,"suchmaske"); //$this->app->Table( //$table = new OrderTable("veranstalter"); //$table->Heading(array('Name','Homepage','Telefon')); } }