app=$app; if($intern) { return; } $this->app->ActionHandlerInit($this); $this->app->ActionHandler("list","BestellungList"); $this->app->ActionHandler("create","BestellungCreate"); $this->app->ActionHandler("positionen","BestellungPositionen"); $this->app->ActionHandler("upbestellungposition","UpBestellungPosition"); $this->app->ActionHandler("delbestellungposition","DelBestellungPosition"); $this->app->ActionHandler("copybestellungposition","CopyBestellungPosition"); $this->app->ActionHandler("downbestellungposition","DownBestellungPosition"); $this->app->ActionHandler("positioneneditpopup","BestellungPositionenEditPopup"); $this->app->ActionHandler("edit","BestellungEdit"); $this->app->ActionHandler("copy","BestellungCopy"); $this->app->ActionHandler("auftrag","BestellungAuftrag"); $this->app->ActionHandler("delete","BestellungDelete"); $this->app->ActionHandler("undelete","BestellungUndelete"); $this->app->ActionHandler("freigabe","BestellungFreigabe"); $this->app->ActionHandler("freigegeben","BestellungFreigegeben"); $this->app->ActionHandler("abschicken","BestellungAbschicken"); $this->app->ActionHandler("dateien","BestellungDateien"); $this->app->ActionHandler("pdf","BestellungPDF"); $this->app->ActionHandler("inlinepdf","BestellungInlinePDF"); $this->app->ActionHandler("protokoll","BestellungProtokoll"); $this->app->ActionHandler("minidetail","BestellungMiniDetail"); $this->app->ActionHandler("editable","BestellungEditable"); $this->app->ActionHandler("livetabelle","BestellungLiveTabelle"); $this->app->ActionHandler("schreibschutz","BestellungSchreibschutz"); $this->app->ActionHandler("abschliessen","BestellungAbschliessen"); $this->app->ActionHandler("alsversendet","BestellungAlsversendet"); $this->app->ActionHandler("pdffromarchive","BestellungPDFfromArchiv"); $this->app->ActionHandler("archivierepdf","BestellungArchivierePDF"); $this->app->ActionHandler("einlagern","BestellungEinlagern"); $this->app->ActionHandler("offenepositionen","BestellungOffenePositionen"); $this->app->ActionHandler("steuer","BestellungSteuer"); $this->app->ActionHandler("adressebestellungcopy", "AdresseBestellungCopy"); $this->app->ActionHandler("ean","BestellungEAN"); $this->app->DefaultActionHandler("list"); $id = (int)$this->app->Secure->GetGET('id'); $nummer = $this->app->Secure->GetPOST('adresse'); if($id > 0){ $bestRow = $this->app->DB->Select( sprintf( 'SELECT a.name, b.belegnr FROM bestellung b LEFT JOIN adresse a ON b.adresse = a.id WHERE b.id=%d LIMIT 1', $id ) ); } if($nummer=='' && !empty($bestRow)){ $adresse = $bestRow['name']; } else{ $adresse = $nummer; } $nummer = !empty($bestRow)?$bestRow['belegnr']:''; if($nummer=='' || $nummer=='0') { $nummer='ohne Nummer'; } $this->app->Tpl->Set('UEBERSCHRIFT','Bestellung: '.$adresse.' ('.$nummer.')'); $this->app->Tpl->Set('FARBE','[FARBE2]'); $this->app->erp->Headlines('Bestellung'); $this->app->ActionHandlerListen($app); } function BestellungSteuer() { } function BestellungUndelete() { $id = (int)$this->app->Secure->GetGET('id'); $bestellungRow = $this->app->DB->SelectRow( sprintf("SELECT status, belegnr, name FROM bestellung WHERE id=%d LIMIT 1", $id) ); $status = $bestellungRow['status']; $belegnr = $bestellungRow['belegnr']; $name = $bestellungRow['name']; if($status==='storniert') { $this->app->erp->BestellungProtokoll($id,"Bestellung Storno rückgängig"); $this->app->DB->Update("UPDATE bestellung SET status='freigegeben' WHERE id='$id' LIMIT 1"); $msg = $this->app->erp->base64_url_encode("
Bestellung \"$name\" ($belegnr) wurde wieder freigegeben!
"); } else { $msg = $this->app->erp->base64_url_encode("
Bestellung \"$name\" ($belegnr) kann nicht wieder freigegeben werden, da sie nicht storniert ist.
"); } //header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg"); $this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg); } function BestellungEinlagern($id = null, $lagerplatz = null) { if($id === null) { $intern = false; $id = (int)$this->app->Secure->GetGET('id'); }else{ $intern = true; } if($id) { $arr = $this->app->DB->SelectRow("SELECT projekt,belegnr,status FROM bestellung WHERE id = '$id' LIMIT 1"); if(!empty($arr)){ $projekt = $arr['projekt']; $belegnr = $arr['belegnr']; $status = $arr['status']; if(($status === 'versendet' || $status === 'freigegeben')){ $standardlager = $this->app->DB->Select("SELECT id FROM lager_platz WHERE geloescht <> 1 AND sperrlager <> 1 AND poslager <> 1 ORDER BY id LIMIT 1"); $positionen = $this->app->DB->SelectArr("SELECT id,artikel,menge,geliefert FROM bestellung_position WHERE geliefert < menge AND bestellung='$id'"); if($positionen){ foreach ($positionen as $position) { if($lagerplatz){ $lager = $lagerplatz; }else{ $lager = $this->app->DB->Select("SELECT lager_platz FROM artikel WHERE id = '" . $position['artikel'] . "' LIMIT 1"); if(!$this->app->DB->Select("SELECT id FROM lager_platz WHERE id = '$lager' AND geloescht <> 1 LIMIT 1")) { $lager = $standardlager; } if(!$lager) { $lager = $standardlager; } } if($lager){ $this->app->erp->LagerEinlagern( $position['artikel'], $position['menge'] - $position['geliefert'], $lager, $projekt, 'Wareneingang von Bestellung ' . $belegnr,'','','bestellung',$id ); $this->app->DB->Update("UPDATE bestellung_position SET geliefert = menge WHERE id = '" . $position['id'] . "' LIMIT 1"); } else { $dataartikel = $this->app->DB->SelectRow("SELECT nummer,name_de FROM artikel WHERE id='".$position['artikel']."'"); $msg = $this->app->erp->base64_url_encode("
Abbruch beim Einlagern da für den Artikel \"".$dataartikel['nummer']." ".$dataartikel['name_de']."\" kein Standard Lagerplatz definiert wurde oder alle Lager Sperr- oder POS-Lager sind!
"); $this->app->Location->execute('index.php?module=bestellung&action=edit&id=' . $id . "&msg=" . $msg); } } $this->app->erp->BestellungProtokoll($id,"Bestellung manuell eingelagert"); $this->checkAbschliessen($id); if($intern) { return true; } $msg = $this->app->erp->base64_url_encode("
Die Bestellung wurde eingelagert!
"); $this->app->Location->execute('index.php?module=bestellung&action=edit&id=' . $id . "&msg=" . $msg); } } } if($intern) { return false; } $this->app->Location->execute('index.php?module=bestellung&action=edit&id='.$id); } if($intern) { return false; } $this->app->Location->execute('index.php?module=bestellung&action=list'); } function checkAbschliessen($id = 0) { if(!$id) { $id = $this->app->Secure->GetGET('id'); } $id = (int)$id; if($id <= 0) { return; } $status = $this->app->DB->Select("SELECT status FROM bestellung WHERE id = '$id' LIMIT 1"); if(($status === 'versendet' || $status === 'freigegeben')) { $sql = "SELECT bp.id FROM bestellung_position bp LEFT JOIN artikel a ON a.id=bp.artikel WHERE bp.bestellung = '$id' AND a.lagerartikel=1"; $alleLagerArtikelVonBestellung = $this->app->DB->SelectArr($sql); //nur wenn auch Lagerartikel enthalten sind, soll automatisch abgeschlossen werden können. if(count($alleLagerArtikelVonBestellung)>0){ $lagerArtikelIds = []; foreach ($alleLagerArtikelVonBestellung as $l){ $lagerArtikelIds[] = $l['id']; } $sql = "SELECT bp.id FROM bestellung_position bp LEFT JOIN artikel a ON a.id=bp.artikel WHERE bp.geliefert < bp.menge AND bp.id IN (".implode(',',$lagerArtikelIds).")"; $offenePositionen = $this->app->DB->SelectArr($sql); if(empty($offenePositionen)){ $this->BestellungAbschliessen($id,true); } } } } function BestellungOffenePositionen() { $this->BestellungListMenu(); $this->app->YUI->TableSearch('TAB1','bestellung_offenepositionen'); $this->app->Tpl->Parse('PAGE','bestellung_offenepositionen.tpl'); } function BestellungArchivierePDF() { $id = (int)$this->app->Secure->GetGET('id'); $projektbriefpapier = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id = '$id' LIMIT 1"); if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projektbriefpapier); }else{ $Brief = new BestellungPDF($this->app,$projektbriefpapier); } $Brief->GetBestellung($id); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(1); unlink($tmpfile); $this->app->DB->Update("UPDATE bestellung SET schreibschutz='1' WHERE id='$id'"); $this->app->Location->execute('index.php?module=bestellung&action=edit&id='.$id); } function BestellungEditable() { $this->app->YUI->AARLGEditable(); } function BestellungSchreibschutz() { $id = (int)$this->app->Secure->GetGET('id'); $this->app->DB->Update(sprintf('UPDATE bestellung SET zuarchivieren=1, schreibschutz = 0 WHERE id=%d', $id)); $this->app->erp->BestellungProtokoll($id,'Schreibschutz entfernt'); $this->app->Location->execute('index.php?module=bestellung&action=edit&id='.$id); } function BestellungPDFfromArchiv() { $id = $this->app->Secure->GetGET('id'); $archiv = $this->app->DB->Select("SELECT table_id from pdfarchiv where id = '$id' LIMIT 1"); if($archiv) { $projekt = $this->app->DB->Select("SELECT projekt from bestellung where id = '".(int)$archiv."'"); } if(class_exists('BestellungPDFCustom')) { if($archiv) { $Brief = new BestellungPDFCustom($this->app,$projekt); } }else{ if($archiv) { $Brief = new BestellungPDF($this->app,$projekt); } } if($archiv && $content = $Brief->getArchivByID($id)) { header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="'.$content['belegnr'].'.pdf"'); echo $content['file']; $this->app->ExitXentral(); } header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="Fehler.pdf"'); $this->app->ExitXentral(); } function BestellungMiniDetail($parsetarget='',$menu=true) { $id = (int)$this->app->Secure->GetGET('id'); $cmd = $this->app->Secure->GetGET('cmd'); if($cmd === 'lager') { if($this->app->DB->Select("SELECT id FROM artikel WHERE id = '$id' AND lagerartikel = 1 LIMIT 1")) { $table = new EasyTable($this->app); $table->Query("SELECT ".$this->app->erp->FormatMenge("sum(lpi.menge)")." as menge, l.bezeichnung as Lager FROM lager l INNER JOIN lager_platz lp ON l.id = lp.lager AND l.geloescht = 0 INNER JOIN lager_platz_inhalt lpi ON lp.id = lpi.lager_platz AND lpi.artikel = $id GROUP BY l.id ORDER BY l.bezeichnung"); $table->align[0] = 'right'; $table->align[1] = 'left'; echo json_encode(array('inhalt'=>'
'.$table->DisplayNew('return','Lager','noAction').'
')); }else{ echo json_encode(array('inhalt'=>'
kein Lagerartikel
')); } $this->app->ExitXentral(); } if($cmd === 'zuordnungAuftragZuBestellung') { $bid = $this->app->Secure->GetGet("id"); $belegnummer = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$bid'"); $auftragPost = explode(" ",$this->app->Secure->GetPOST("auftrag")); $auftragsnummer = $auftragPost[0]; $auftrag_positionen = $this->app->DB->SelectArr("SELECT ap.id,ap.artikel,ap.menge FROM auftrag_position ap LEFT JOIN auftrag a on a.id=ap.auftrag WHERE a.belegnr='$auftragsnummer' AND a.belegnr!=''"); foreach($auftrag_positionen as $value){ $a_positionen[$value['artikel']]['id'] = $value['id']; $a_positionen[$value['artikel']]['menge'] = $value['menge']; } //jetzt holen wir alle Bestellpositonen für diese Bestellung $bestellung_positionen = $this->app->DB->SelectArr("SELECT bp.id,bp.artikel,bp.menge FROM bestellung_position bp WHERE bp.bestellung='$bid'"); foreach($bestellung_positionen as $position){ // prüfen ob beide artikel gleich sind und ob die menge passt if( (is_array($a_positionen[$position['artikel']])) && ($position['menge'] == $a_positionen[$position['artikel']]['menge']) ) { // wenn wir den Artikel haben und die Anzahl passt $wert = $a_positionen[$position['artikel']]['id']; $this->app->DB->Update("UPDATE bestellung_position SET auftrag_position_id='$wert' WHERE id='{$position['id']}' AND bestellung='$bid' LIMIT 1"); } else{ // wenn wir den Artikel haben aber die Anzahl nicht passt nehmen wir die Position vom ersten Auffinden des Artikel if($position['artikel'] == $a_positionen[$position['artikel']]){ $wert = $a_positionen[$position['artikel']]['id']; $this->app->DB->Update("UPDATE bestellung_position SET auftrag_position_id='$wert' WHERE id='{$position['id']}' AND bestellung='$bid' LIMIT 1"); }else{ // wenn wir keinen Artikel haben nehmen wir den ersten Artikel zum verknüpfen $wert = $a_positionen[0]['id']; $this->app->DB->Update("UPDATE bestellung_position SET auftrag_position_id='$wert' WHERE id='{$position['id']}' AND bestellung='$bid' LIMIT 1"); } } } $zugeordnet = $this->app->DB->Select("SELECT count(id) FROM bestellung_position WHERE bestellung='$bid' AND auftrag_position_id != '0'");; $nichtzugeordnet = $this->app->DB->Select("SELECT count(id) FROM bestellung_position WHERE bestellung='$bid' AND auftrag_position_id = '0'"); $gesamtpositionen = $this->app->DB->Select("SELECT count(id) FROM bestellung_position WHERE bestellung='$bid'"); $data['gesamtpositionen'] = $gesamtpositionen; $data['belegnummer'] = $belegnummer; $data['zugeordnet'] = $zugeordnet; $data['nichtzugeordnet'] = $nichtzugeordnet; $data['error'] = false; echo json_encode($data); $this->app->ExitXentral(); } if($cmd === 'checkmenge') { $bpid = $this->app->Secure->GetPOST("bp"); $ab_menge = round(str_replace(',','.',$this->app->Secure->GetPOST("ab_menge")),8); $data = $this->app->DB->SelectArr("SELECT *, TRIM(menge)+0 as menge FROM bestellung_position WHERE id = '$bpid' LIMIT 1"); if($data) { $data = reset($data); $bestellung = $data['bestellung']; $adresse = $this->app->DB->Select("SELECT adresse FROM bestellung WHERE id = '$bestellung' LIMIT 1"); $ek = $this->app->erp->GetEinkaufspreisArr($data['artikel'], $ab_menge, $adresse, $data['waehrung']); if($ek) { $data = array('menge'=>$ab_menge, 'ab_menge'=>round($ek['ab_menge'],8)); }else{ $data = array('menge'=>$ab_menge, 'ab_menge'=>$ab_menge); } } echo json_encode($data); $this->app->ExitXentral(); } if($cmd === 'getpreis') { $bpid = $this->app->Secure->GetPOST("bp"); $data = $this->app->DB->SelectArr("SELECT *, TRIM(menge)+0 as menge FROM bestellung_position WHERE id = '$bpid' LIMIT 1"); if($data) { $data = reset($data); $data['menge'] = round((float)$data['menge'], 8); $bestellung = $data['bestellung']; $adresse = $this->app->DB->Select("SELECT adresse FROM bestellung WHERE id = '$bestellung' LIMIT 1"); $ek = $this->app->erp->GetEinkaufspreisArr($data['artikel'], $data['menge'], $adresse, $data['waehrung']); if($ek)$data['ab_menge'] = round($ek['ab_menge'], 8); $data['preis'] = number_format(round($data['preis'],8),2,',','.'); $data['auchinstammdaten'] = $this->app->User->GetParameter('bestellung_auchinstammdaten')?1:0; } echo json_encode($data); $this->app->ExitXentral(); } if($cmd === 'savepreis') { $bpid = (int)$this->app->Secure->GetPOST('bp'); $bpRow = $this->app->DB->SelectRow( sprintf( 'SELECT artikel, bestellung FROM bestellung_position WHERE id = %d LIMIT 1' ,$bpid ) ); $artikel = $bpRow['artikel']; $preis = str_replace(',','.',$this->app->Secure->GetPOST('preis')); $auchinstammdaten = $this->app->Secure->GetPOST('auchinstammdaten'); $this->app->User->SetParameter('bestellung_auchinstammdaten', $auchinstammdaten); $waehrung = $this->app->Secure->GetPOST('waehrung'); $bestellnummer = $this->app->Secure->GetPOST('bestellnummer'); $bezeichnung = $this->app->Secure->GetPOST('bezeichnung'); $ab_menge = str_replace(',','.',$this->app->Secure->GetPOST('ab_menge')); $menge = str_replace(',','.',$this->app->Secure->GetPOST('menge')); $bestellung = $bpRow['bestellung']; // Schreibschutz entfernen $this->app->DB->Update("UPDATE bestellung SET schreibschutz=0 WHERE id='$bestellung' LIMIT 1"); $bRow = $this->app->DB->SelectRow( sprintf( 'SELECT schreibschutz, adresse FROM bestellung WHERE id=%d LIMIT 1', (int)$bestellung ) ); $schreibschutz = $bRow['schreibschutz']; $adresse = $bRow['adresse']; if(!$schreibschutz) { $this->app->DB->Update( sprintf( 'UPDATE bestellung_position SET preis = %f WHERE id = %d LIMIT 1', (float)$preis, $bpid ) ); if((String)$bestellnummer !== '') { $this->app->DB->Update( sprintf( "UPDATE bestellung_position SET bestellnummer = '%s' WHERE id = %d LIMIT 1", $bestellnummer, $bpid ) ); } if((String)$bezeichnung !== '') { $this->app->DB->Update( sprintf( "UPDATE bestellung_position SET bezeichnunglieferant = '%s' WHERE id = %d LIMIT 1", $bezeichnung, $bpid ) ); } if($menge) { $this->app->DB->Update( sprintf( "UPDATE bestellung_position SET menge = %f WHERE id = %d LIMIT 1", (float)$menge, $bpid ) ); } $this->app->erp->ANABREGSNeuberechnen($bestellung,'bestellung'); } if($auchinstammdaten && $artikel && $adresse) { $this->app->erp->AddEinkaufspreis($artikel,$ab_menge,$adresse,$bestellnummer,$bezeichnung, $preis, $waehrung); } $data = $this->app->DB->SelectRow( sprintf( 'SELECT id, %s as preis, bestellnummer, trim(menge)+0 as menge FROM bestellung_position WHERE id = %d LIMIT 1', $this->app->erp->FormatPreis('preis'),$bpid ) ); if(!empty($data)) { $data['menge'] = round($data['menge'], 8); $data['preis'] .= ' '; } echo json_encode($data); $this->app->ExitXentral(); } $bestRow = $this->app->DB->SelectRow( sprintf( 'SELECT belegnr, name, status, zahlungsweise, adresse, verbindlichkeiteninfo,preisanfrageid, DATE_FORMAT(gewuenschteslieferdatum,\'%%d.%%m.%%Y\') as gewuenschteslieferdatum, bestellungbestaetigtabnummer, DATE_FORMAT(bestaetigteslieferdatum,\'%%d.%%m.%%Y\') as bestaetigteslieferdatum, datum, projekt FROM bestellung WHERE id=%d LIMIT 1', $id ) ); $belegnr = $bestRow['belegnr']; $name = $bestRow['name']; $status = $bestRow['status']; //$schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM bestellung WHERE id='$id' LIMIT 1"); $zahlweise = $bestRow['zahlungsweise']; $bestaetigteslieferdatum = $bestRow['bestaetigteslieferdatum']; $wunschlieferdatum = $bestRow['gewuenschteslieferdatum']; $ablieferant = $bestRow['bestellungbestaetigtabnummer']; $verbindlichkeiteninfo = $bestRow['verbindlichkeiteninfo']; $preisanfrageid = $bestRow['preisanfrageid']; $preisanfrage = $this->app->DB->Select("SELECT belegnr FROM preisanfrage WHERE id = '$preisanfrageid' LIMIT 1"); $adresse = (int)$bestRow['adresse']; $lieferantennummer = $this->app->DB->Select("SELECT lieferantennummer FROM adresse WHERE id = '$adresse' LIMIT 1"); $datum = (int)$bestRow['datum']; $projekt = (int)$bestRow['projekt']; $this->app->Tpl->Set('VERBINDLICHKEITENINFO',$verbindlichkeiteninfo); if($belegnr=='0' || $belegnr=='') { $belegnr = 'ENTWURF'; } $this->app->Tpl->Set('BELEGNR',$belegnr); $this->app->Tpl->Set('LIEFERANT',"".$lieferantennummer." ".$name); $this->app->Tpl->Set('STATUS',$status); $this->app->Tpl->Set('ZAHLWEISE',$zahlweise); $this->app->Tpl->Set('BESTELLUNGID',$id); if($preisanfrageid > 0) { $this->app->Tpl->Set('PREISANFRAGE',''.$preisanfrage.'  '); } if($bestaetigteslieferdatum=="00.00.0000") $bestaetigteslieferdatum="warte auf Datum"; $this->app->Tpl->Set('BESTAETIGTESLIEFERDATUM',$bestaetigteslieferdatum); if($wunschlieferdatum=="00.00.0000") $wunschlieferdatum="warte auf Datum"; $this->app->Tpl->Set('WUNSCHLIEFERDATUM',$wunschlieferdatum); $this->app->Tpl->Set('ABLIEFERANT',$ablieferant); $nettogewicht = $this->app->erp->BestellungNettoGewicht($id); if($nettogewicht!='') { $nettogewicht = number_format($nettogewicht, 2, ',','.'); $gewichtbezeichnung = $this->app->erp->Firmendaten('gewichtbezeichnung'); if($gewichtbezeichnung == '') { $gewichtbezeichnung = 'Kg'; } $this->app->Tpl->Set("GEWICHT", $nettogewicht . " ".$gewichtbezeichnung); } $projektabkuerzung = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='$projekt' LIMIT 1"); if($this->app->erp->RechteVorhanden("projekt","dashboard")) $this->app->Tpl->Set('PROJEKT',"$projektabkuerzung"); else $this->app->Tpl->Set('PROJEKT',$projekt); $md5 = md5(microtime(true)); $table = new EasyTable($this->app); $anzahlzeichen = 200; $artikelIdList = []; $artikelArr = $this->app->DB->SelectArr(sprintf('SELECT DISTINCT artikel FROM bestellung_position WHERE bestellung = %d', $id)); if(!empty($artikelArr)) { foreach($artikelArr as $row) { $artikelIdList[] = $row['artikel']; } } $table->Query("SELECT CONCAT(SUBSTRING(ap.bezeichnunglieferant,1,$anzahlzeichen),'
Best-Nr.:',ap.bestellnummer,'') as artikel, CONCAT('',a.nummer,'') as nummer, CONCAT('',(TRIM(ap.menge)+0),'') as Menge, TRIM(ap.geliefert)+0 as geliefert, IF(a.lagerartikel = 1,CONCAT( ".$this->app->erp->FormatMenge('IFNULL(lag.menge,0)').",'lagermehr(',ap.artikel,')'),'-') as Lager, if(ap.lieferdatum!='0000-00-00',DATE_FORMAT(ap.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, concat('',FORMAT(ap.preis,2,'de_DE'),'". " app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" ."','') as preis FROM bestellung_position AS ap INNER JOIN artikel AS a ON ap.artikel = a.id LEFT JOIN ( SELECT SUM(lpi.menge) as menge, lpi.artikel FROM lager_platz_inhalt AS lpi INNER JOIN lager_platz AS lp ON lpi.lager_platz = lp.id AND IFNULL(lp.sperrlager,0) = 0 AND IFNULL(lp.autolagersperre,0) = 0 ".(!empty($artikelIdList)?' AND lpi.artikel IN ('.implode(',', $artikelIdList).')':'')." GROUP BY lpi.artikel ) as lag ON a.id = lag.artikel WHERE ap.bestellung='$id' ORDER by ap.sort"); foreach($table->datasets as $tablerowKey => $tableRow) { foreach($tableRow as $columName => $columnValue) { if(preg_match_all('/^(.*)lagermehr\((.*)\)(.*)$/', $columnValue, $matches,PREG_OFFSET_CAPTURE)) { $table->datasets[$tablerowKey][$columName] = $matches[1][0][0].' '.$this->app->YUI->ContentTooltip('return','index.php?module=auftrag&action=minidetail&cmd=lager&id='.$matches[2][0][0],'url').$matches[3][0][0]; } } } foreach($table->datasets as $k => $row) { if(strip_tags($table->datasets[$k]['geliefert']) == strip_tags($table->datasets[$k]['Menge'])) { $table->datasets[$k]['geliefert'] = ''.$table->datasets[$k]['geliefert'].''; $table->datasets[$k]['Menge'] = ''.$table->datasets[$k]['Menge'].''; } else { $table->datasets[$k]['geliefert'] = ''.$table->datasets[$k]['geliefert'].''; $table->datasets[$k]['Menge'] = ''.$table->datasets[$k]['Menge'].''; } $table->datasets[$k]['preis'] = '
'.$table->datasets[$k]['preis']; if(preg_match("/&id=([0-9]*)/",$row['nummer'],$treffer)){ $artid = (int)$treffer[1]; if($epreise = $this->app->DB->SelectArr("SELECT ab_menge, preis FROM einkaufspreise WHERE artikel='".$artid."' AND adresse='$adresse' AND (gueltig_bis>='".$datum."' OR gueltig_bis='0000-00-00') and (preis_anfrage_vom = '0000-00-00' or preis_anfrage_vom <= '".$datum."') and ab_menge > ".(int)strip_tags($row['Menge'])." order by ab_menge")) { $table->datasets[$k]['preis'] .= '  
'; foreach($epreise as $key => $pr) { $table->datasets[$k]['preis'] .= ""; } $table->datasets[$k]['preis'] .= '
(".floatval($pr['ab_menge']).":".number_format($pr['preis'],2,',','.').")
'; } } else { $table->datasets[$k]['preis'] .= ''; } $table->datasets[$k]['preis'] .= "
"; } $check = $this->app->DB->SelectArr("SELECT a.belegnr, a.id FROM auftrag_position ap INNER JOIN auftrag a ON ap.auftrag = a.id INNER JOIN bestellung_position bp ON ap.id = bp.auftrag_position_id WHERE bp.bestellung='$id' GROUP BY a.belegnr, a.id ORDER BY a.belegnr, a.id"); if($check) { $auftraege = null; $lieferscheine = []; $rechnungen = []; foreach($check as $row) { $auftraege[] = ''.($row['belegnr']?$row['belegnr']:'Entwurf').' '; $lieferscheineTemp = $this->app->DB->SelectPairs( "SELECT l.id, CONCAT( '','>'), if(l.belegnr='0' OR l.belegnr='','ENTWURF',l.belegnr), if(l.status='storniert','',''), '   ' ) as lieferschein FROM lieferschein l WHERE l.auftragid='".$row['id']."'" ); if(!empty($lieferscheineTemp)){ foreach ($lieferscheineTemp as $k => $v){ $lieferscheine[$k] = $v; } } $rechnungenTemp = $this->app->DB->SelectPairs( "SELECT r.id, CONCAT( '','>'), if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr), if(r.status='storniert','',''), '   ' ) as rechnung FROM rechnung r WHERE r.auftragid='".$row['id']."'" ); if(!empty($rechnungenTemp)){ foreach ($rechnungenTemp as $k => $v){ $rechnungen[$k] = $v; } } } if(!empty($auftraege)){ $this->app->Tpl->Set('AUFTRAG', implode('
', $auftraege)); } if(!empty($lieferscheine)){ $this->app->Tpl->Set('LIEFERSCHEIN', implode('
', $lieferscheine)); } if(!empty($rechnungen)){ $this->app->Tpl->Set('RECHNUNG', implode('
', $rechnungen)); } } // $nowarp-Parameter (letzter Parameter) auf false setzen, damit lange Artikeltitel umbrechen können $artikel = $table->DisplayNew("return", "Preis", "noAction", false, 0, 0, false); if($menu) { $menu = $this->BestellungIconMenu($id); $this->app->Tpl->Set('MENU',$menu); } $this->app->Tpl->Set('ARTIKEL',$artikel); $tmp = new EasyTable($this->app); $tmp->Query("SELECT zeit,bearbeiter,grund FROM bestellung_protokoll WHERE bestellung='$id' ORDER by id DESC"); $tmp->DisplayNew('PROTOKOLL',"Protokoll","noAction"); $this->app->Tpl->Set('RECHNUNGLIEFERADRESSE',$this->BestellungRechnungsLieferadresse($id)); if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Dokumentenliste = $Brief->getArchivedFiles($id, 'bestellung'); if(!empty($Dokumentenliste)) { $tmp3 = new EasyTable($this->app); $tmp3->headings = array('Datum','Belegnr','Bearbeiter','Menü'); foreach($Dokumentenliste as $k => $v) { if(!$v['erstesoriginal']) { $tmpr['datum'] = date('d.m.Y H:i:s',strtotime($v['zeitstempel'])); $tmpr['belegnr'] = str_replace('.pdf','',$v['file']); $tmpr['belegnr'] = substr($tmpr['belegnr'],strrpos($tmpr['belegnr'],'_')+1); if(isset($v['belegnummer']) && $v['belegnummer']) { $tmpr['belegnr'] = $v['belegnummer']; } $tmpr['bearbeiter'] = $v['bearbeiter']; $tmpr['menu'] = ''; $tmp3->datasets[] = $tmpr; } } $tmp3->DisplayNew('PDFARCHIV','Menü',"noAction"); } $wareneingangsbelege = $this->app->DB->SelectFirstCols("SELECT CONCAT('','>'),if(r.document_number='0' OR document_number='','ENTWURF',r.document_number),if(r.status='storniert','',''),'   ') as wareneingangsbeleg FROM receiptdocument r WHERE r.supplier_order_id='$id'"); if(!empty($wareneingangsbelege)){ $this->app->Tpl->Add('WARENEINGANGSBELEG', implode('
', $wareneingangsbelege)); } else{ $this->app->Tpl->Set('WARENEINGANGSBELEG', '-'); } $this->app->Tpl->Set('ID', $id); $this->app->Tpl->Set('MD5', $md5); $this->app->Tpl->Parse('ARTIKEL', 'bestellung_minidetail_popup.tpl'); if($parsetarget=='') { $this->app->Tpl->Output("bestellung_minidetail.tpl"); $this->app->ExitXentral(); } $this->app->Tpl->Parse($parsetarget,"bestellung_minidetail.tpl"); } function BestellungAlsversendet($id = 0) { if($id) { $intern = true; }else{ $intern = false; $id = $this->app->Secure->GetGET('id'); } if($id > 0) { $this->app->DB->Update("UPDATE bestellung SET status='versendet' WHERE id='$id' LIMIT 1"); $this->app->erp->BestellungProtokoll($id,"Bestellung als versendet markiert"); } if($intern) { return; } $msg = $this->app->erp->base64_url_encode("
Die Bestellung wurde als versendet markiert!
"); $this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg); } function BestellungAbschliessen($id = 0,$auto=false) { if($id) { $intern = true; }else{ $intern = false; $id = (int)$this->app->Secure->GetGET('id'); } if($id > 0) { $this->app->DB->Update("UPDATE bestellung SET status='abgeschlossen',schreibschutz=1 WHERE id='$id' LIMIT 1"); $this->app->DB->Update("UPDATE verbindlichkeit SET freigabe='1' WHERE bestellung='$id'"); $this->app->erp->BestellungProtokoll($id,'Bestellung '.($auto?'automatisch ':'').'abgeschlossen'); $this->app->erp->RunHook("bestellung_abschliessen",1,$id); } if($intern) { return; } $msg = $this->app->erp->base64_url_encode("
Die Bestellung wurde als abgeschlossen markiert!
"); $this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg); } function BestellungFreigegeben($id = '') { if($id<=0){ $intern = false; $id = (int)$this->app->Secure->GetGET('id'); }else{ $intern = true; } if($id) { if($this->app->DB->Select("SELECT id FROM bestellung WHERE status = 'abgeschlossen' AND id = '$id' LIMIT 1")) { $this->app->DB->Update("UPDATE bestellung SET status = 'freigegeben', schreibschutz = 0 WHERE id = '$id' LIMIT 1"); $msg = $this->app->erp->base64_url_encode("
Die Bestellung wurde auf freigegeben gesetzt!
"); }else{ $msg = $this->app->erp->base64_url_encode("
Die Bestellung ist nicht abgeschlossen!
"); } }else{ $msg = $this->app->erp->base64_url_encode("
Es wurde keine Bestellung angeben!
"); $this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg); } if($intern) { return $id; } $this->app->Location->execute('index.php?module=bestellung&action=edit&id='.$id.'&msg='.$msg); } function BestellungFreigabe($id='') { if($id<=0) { $intern = false; $id = (int)$this->app->Secure->GetGET('id'); $freigabe= $this->app->Secure->GetGET('freigabe'); $weiter= $this->app->Secure->GetPOST('weiter'); $this->app->Tpl->Set('TABTEXT','Freigabe'); } else { $intern = true; $freigabe=$intern; } $allowedFrm = true; $showDefault = true; $doctype = 'bestellung'; if(empty($intern)){ $this->app->erp->RunHook('beleg_freigabe', 4, $doctype, $id, $allowedFrm, $showDefault); } if($weiter!='') { $this->app->Location->execute('index.php?module=bestellung&action=abschicken&id='.$id); } if($allowedFrm && $freigabe==$id) { //$projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$id' LIMIT 1"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$id' LIMIT 1"); if($belegnr=='') { $this->app->erp->BelegFreigabe('bestellung',$id); if($intern) { return 1; } $msg = $this->app->erp->base64_url_encode("
Die Bestellung wurde freigegeben und kann jetzt versendet werden!
"); $this->app->Location->execute("index.php?module=bestellung&action=edit&id=$id&msg=$msg"); } if($intern) { return 0; } $msg = $this->app->erp->base64_url_encode("
Die Bestellung wurde bereits freigegeben!
"); $this->app->Location->execute("index.php?module=bestellung&action=edit&id=$id&msg=$msg"); } if($showDefault){ $name = $this->app->DB->Select("SELECT a.name FROM bestellung b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1"); $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id'"); $waehrung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position WHERE bestellung='$id' LIMIT 1"); $summe = $this->app->erp->EUR($summe); $extra = $this->app->erp->CheckboxEntwurfsmodus("bestellung", $id); if($this->app->erp->Firmendaten("oneclickrelease")=="1" && $extra=="") { $this->app->Location->execute("index.php?module=bestellung&action=freigabe&id=$id&freigabe=$id"); } else { $this->app->Tpl->Set('TAB1', "
Soll die Bestellung an $name im Wert von $summe $waehrung jetzt freigegeben werden?  $extra
"); } } $this->BestellungMenu(); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } function BestellungCopy() { $id = $this->app->Secure->GetGET('id'); $newid = $this->app->erp->CopyBestellung($id); $this->app->Location->execute('Location: index.php?module=bestellung&action=edit&id='.$newid); } function AdresseBestellungCopy() { $id = $this->app->Secure->GetGET('id'); $newid = $this->app->erp->CopyBestellung($id); echo json_encode(array('status'=>1, 'newid'=>$newid)); $this->app->ExitXentral(); } function BestellungLiveTabelle() { $id = (int)$this->app->Secure->GetGET('id'); $status = $this->app->DB->Select("SELECT status FROM bestellung WHERE id='$id' LIMIT 1"); $table = new EasyTable($this->app); if($status==='freigegeben') { $anzahlzeichen = 200; $table->Query("SELECT SUBSTRING(ap.bezeichnung,1,$anzahlzeichen) as artikel, ap.nummer as Nummer, ap.menge as M, if(a.porto,'-',if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel) > ap.menge,(SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel), if((SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel)>0,CONCAT('',(SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),''), 'aus'))) as L FROM bestellung_position ap, artikel a WHERE ap.bestellung='$id' AND a.id=ap.artikel"); $artikel = $table->DisplayNew("return","A","noAction"); } else { $table->Query("SELECT SUBSTRING(ap.bezeichnung,1,$anzahlzeichen) as artikel, ap.nummer as Nummer, ap.menge as M FROM bestellung_position ap, artikel a WHERE ap.bestellung='$id' AND a.id=ap.artikel"); $artikel = $table->DisplayNew("return","Menge","noAction"); } echo $artikel; $this->app->ExitXentral(); } function BestellungAuftrag() { $id = $this->app->Secure->GetGET('id'); $newid = $this->app->erp->WeiterfuehrenBestellungZuAuftrag($id); $this->app->Location->execute('index.php?module=auftrag&action=edit&id='.$newid); } function BestellungAbschicken() { $this->BestellungMenu(); $this->app->erp->DokumentAbschicken(); } function BestellungDelete() { $id = $this->app->Secure->GetGET("id"); $belegnr = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$id' LIMIT 1"); $name = $this->app->DB->Select("SELECT name FROM bestellung WHERE id='$id' LIMIT 1"); $status = $this->app->DB->Select("SELECT status FROM bestellung WHERE id='$id' LIMIT 1"); if($belegnr=='0' || $belegnr=='') { $this->app->erp->DeleteBestellung($id); $belegnr='ENTWURF'; $msg = $this->app->erp->base64_url_encode("
Die Bestellung \"$name\" ($belegnr) wurde gelöscht!
"); //header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg"); $this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg); } if($status==='storniert') { $maxbelegnr = $this->app->DB->Select("SELECT MAX(belegnr) FROM bestellung"); if(0)//$maxbelegnr == $belegnr) { $this->app->DB->Delete("DELETE FROM bestellung_position WHERE bestellung='$id'"); $this->app->DB->Delete("DELETE FROM bestellung_protokoll WHERE bestellung='$id'"); $this->app->DB->Delete("DELETE FROM bestellung WHERE id='$id'"); $msg = $this->app->erp->base64_url_encode("
Rechnung \"$name\" ($belegnr) wurde geöscht !
"); } else { $msg = $this->app->erp->base64_url_encode("
Bestellung \"$name\" ($belegnr) kann nicht storniert werden da sie bereits storniert ist!
"); } $this->app->Location->execute('index.php?module=bestellung&action=list&msg='.$msg); } $this->app->DB->Update("UPDATE bestellung SET status='storniert' WHERE id='$id' LIMIT 1"); $this->app->erp->BestellungProtokoll($id,"Bestellung storniert"); $msg = $this->app->erp->base64_url_encode("
Die Bestellung \"$name\" ($belegnr) wurde storniert!
"); $this->app->Location->execute("Location: index.php?module=bestellung&action=list&msg=$msg#tabs-1"); } function BestellungProtokoll() { $this->BestellungMenu(); $id = (int)$this->app->Secure->GetGET('id'); $this->app->Tpl->Set('TABTEXT','Protokoll'); $tmp = new EasyTable($this->app); $tmp->Query("SELECT zeit,bearbeiter,grund FROM bestellung_protokoll WHERE bestellung=$id ORDER by zeit DESC"); $tmp->DisplayNew('TAB1','Protokoll','noAction'); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } function BestellungInlinePDF() { $id = (int)$this->app->Secure->GetGET('id'); $frame = $this->app->Secure->GetGET('frame'); if($frame != '') { $file = urlencode('../../../../index.php?module=bestellung&action=inlinepdf&id='.$id); echo ""; $this->app->ExitXentral(); } $projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id=$id LIMIT 1"); if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($id); $Brief->inlineDocument(); } function BestellungPDF() { $id = (int)$this->app->Secure->GetGET('id'); //$belegnr = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$id' LIMIT 1"); $projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$id' LIMIT 1"); // if(is_numeric($belegnr) && $belegnr!=0) { if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($id); $Brief->displayDocument(); } //else // $this->app->Tpl->Set(MESSAGE,"
Noch nicht freigegebene Bestellungen können nicht als PDF betrachtet werden.!
"); $this->BestellungList(); } function BestellungMenu() { $id = (int)$this->app->Secure->GetGET('id'); $bestellungRow = $this->app->DB->SelectRow(sprintf('SELECT belegnr, name,status FROM bestellung WHERE id=%d LIMIT 1', $id)); $belegnr = !empty($bestellungRow)?$bestellungRow['belegnr']:''; $name = !empty($bestellungRow)?$bestellungRow['name']:''; $this->app->erp->BestellungNeuberechnen($id); if($belegnr=='0' || $belegnr=='') { $belegnr ='(Entwurf)'; } $this->app->Tpl->Set('KURZUEBERSCHRIFT2',"$name Bestellung $belegnr"); $status = !empty($bestellungRow)?$bestellungRow['status']:''; if($status==="angelegt") { $this->app->erp->MenuEintrag("index.php?module=bestellung&action=freigabe&id=$id","Freigabe"); } $this->app->erp->MenuEintrag("index.php?module=bestellung&action=edit&id=$id","Details"); if($status==='bestellt') { $this->app->erp->MenuEintrag("index.php?module=bestellung&action=wareneingang&id=$id","Wareneingang
Rückstände"); $this->app->erp->MenuEintrag("index.php?module=bestellung&action=wareneingang&id=$id","Mahnstufen"); } // $this->app->erp->MenuEintrag("index.php?module=bestellung&action=abschicken&id=$id","Abschicken / Protokoll"); // $this->app->erp->MenuEintrag("index.php?module=bestellung&action=protokoll&id=$id","Protokoll"); $anzahldateien = $this->app->erp->AnzahlDateien("Bestellung",$id); if($anzahldateien > 0) $anzahldateien = " (".$anzahldateien.")"; else $anzahldateien=""; $this->app->erp->MenuEintrag("index.php?module=bestellung&action=dateien&id=$id","Dateien".$anzahldateien); if($this->app->erp->Firmendaten('auftrag_eantab')=='1'){ $this->app->erp->MenuEintrag('index.php?module=bestellung&action=ean&id='.$id, 'Barcodescanner'); } if($this->app->Secure->GetGET("action")==="abschicken") $this->app->erp->MenuEintrag("index.php?module=bestellung&action=edit&id=$id","Zurück zur Bestellung"); else { $backlink = $this->app->Secure->GetGET('backlink'); // Prüfen ob Backlink mit index.php? beginnt; ansonsten ist Open Redirect möglich if (!empty($backlink) && strpos($backlink, 'index.php?') !== 0){ unset($backlink); } if($backlink) { $this->app->erp->MenuEintrag($backlink,"Zurück zur Übersicht"); }else{ $this->app->erp->MenuEintrag("index.php?module=bestellung&action=list","Zurück zur Übersicht"); } } $this->app->erp->RunMenuHook('bestellung'); $this->app->Tpl->Parse('MENU',"bestellung_menu.tpl"); } function BestellungDateien() { $id = $this->app->Secure->GetGET("id"); $this->BestellungMenu(); $this->app->Tpl->Add('UEBERSCHRIFT'," (Dateien)"); $this->app->YUI->DateiUpload('PAGE',"Bestellung",$id); } function BestellungPositionen() { $id = $this->app->Secure->GetGET("id"); $this->app->erp->AuftragNeuberechnen($id); $this->app->YUI->AARLGPositionen(false); } function CopyBestellungPosition() { $this->app->YUI->SortListEvent("copy","bestellung_position","bestellung"); $this->BestellungPositionen(); } function DelBestellungPosition() { $this->app->YUI->SortListEvent("del","bestellung_position","bestellung"); $this->BestellungPositionen(); } function UpBestellungPosition() { $this->app->YUI->SortListEvent("up","bestellung_position","bestellung"); $this->BestellungPositionen(); } function DownBestellungPosition() { $this->app->YUI->SortListEvent("down","bestellung_position","bestellung"); $this->BestellungPositionen(); } function BestellungPositionenEditPopup() { $id = $this->app->Secure->GetGET("id"); // nach page inhalt des dialogs ausgeben $filename = "widgets/widget.bestellung_position_custom.php"; if(is_file($filename)) { include_once($filename); $widget = new WidgetBestellung_positionCustom($this->app,'PAGE'); } else { $widget = new WidgetBestellung_position($this->app,'PAGE'); } $sid= $this->app->DB->Select("SELECT bestellung FROM bestellung_position WHERE id='$id' LIMIT 1"); $widget->form->SpecialActionAfterExecute("close_refresh", "index.php?module=bestellung&action=positionen&id=$sid"); $widget->Edit(); $this->app->BuildNavigation=false; } function BestellungIconMenu($id,$prefix="") { $supplierOrder = $this->app->DB->SelectRow("SELECT status, belegnr FROM bestellung WHERE id='$id' LIMIT 1"); $status = $supplierOrder['status']; $belegnr = $supplierOrder['belegnr']; $freigegeben = ''; if($status=="angelegt" || $status=="") $freigabe = ""; if($status!="angelegt" && $status!="abgeschlossen") $abschliessen = ""; $einlagern = ''; if(($status === 'versendet' || $status === 'freigegeben') && $this->app->erp->RechteVorhanden("bestellung", "einlagern") && $this->app->DB->Select("SELECT id FROM bestellung_position WHERE bestellung = '$id' AND geliefert < menge LIMIT 1")) { $standardlager = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE geloescht <> 1 AND sperrlager <> 1 AND poslager <> 1 ORDER BY id LIMIT 1"); $nichtlager = $this->app->DB->Select("SELECT art.id FROM bestellung_position bp INNER JOIN artikel art ON bp.artikel = art.id WHERE bp.bestellung = '$id' AND art.porto <> 1 AND lagerartikel <> 1 AND stueckliste <> 1 LIMIT 1"); if($nichtlager) { $standardlager .= ' (Achtung Es gibt Positionen die keine Lagerartikel sind, diese werden nicht eingelagert)'; } $einlagern = ''; } if($status === 'abgeschlossen') { $freigegeben = ""; } if($status === 'abgeschlossen' || $status=="freigegeben") $alsversendet = ""; if($status=="storniert") $storno = ""; else if($status!="storniert") $storno = ""; if($this->app->erp->RechteVorhanden('belegeimport', 'belegcsvexport')) { $casebelegeimport = "case 'belegeimport': window.location.href='index.php?module=belegeimport&action=belegcsvexport&cmd=bestellung&id=%value%'; break;"; $optionbelegeimport = ""; } $hookoption = ''; $hookcase = ''; $this->app->erp->RunHook("Bestellung_Aktion_option",3, $id, $status, $hookoption); $this->app->erp->RunHook("Bestellung_Aktion_case",3, $id, $status, $hookcase); $abschliessentext = '{|Wirklich abschliessen?|}'; if($this->app->DB->Select("SELECT id FROM bestellung_position WHERE bestellung = '$id' AND mengemanuellgeliefertaktiviert = 0 AND geliefert < menge LIMIT 1")) $abschliessentext = "{|Zu dieser Bestellung gibt es noch offene Postitionen, möchten Sie diese wirklich als abgeschlossen markieren? Eine Warenannahme ist dann nicht mehr möglich für diese Bestellung.|}"; $menu ="  Aktion:   "; //$tracking = $this->AuftragTrackingTabelle($id); $menu = str_replace('%value%',$id,$menu); return $menu; } function BestellungEdit() { //$action = $this->app->Secure->GetGET("action"); $id = $this->app->Secure->GetGET("id"); $this->app->erp->BestellungNeuberechnen($id); $cmd = $this->app->Secure->GetGET('cmd'); if($cmd === 'dadown') { $erg['status'] = 0; $daid = $this->app->Secure->GetPOST("da_id"); $check = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.id = '$daid' and d.geloescht <> 1 LIMIT 1"); if($check) { $sort = $check[0]['sort']+1; if($sort > 1) { $check2 = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.objekt like 'angebot' AND ds.sort = '$sort' AND d.geloescht <> 1 AND ds.parameter = '$id' LIMIT 1"); if($check2) { $erg['status'] = 1; $erg['from'] = $check2[0]['id']; $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort + 1 WHERE id = '$daid' LIMIT 1"); $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort - 1 WHERE id = '".$check2[0]['id']."' LIMIT 1"); } } } echo json_encode($erg); $this->app->ExitXentral(); } if($cmd === 'daup') { $erg['status'] = 0; $daid = $this->app->Secure->GetPOST("da_id"); $check = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.id = '$daid' and d.geloescht <> 1 LIMIT 1"); if($check) { $sort = $check[0]['sort']-1; if($sort > 0) { $check2 = $this->app->DB->SelectArr("SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.objekt like 'angebot' AND ds.sort = '$sort' AND d.geloescht <> 1 AND ds.parameter = '$id' LIMIT 1"); if($check2) { $erg['status'] = 1; $erg['from'] = $check2[0]['id']; $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort - 1 WHERE id = '$daid' LIMIT 1"); $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = sort + 1 WHERE id = '".$check2[0]['id']."' LIMIT 1"); } } } echo json_encode($erg); $this->app->ExitXentral(); } if($this->app->erp->DisableModul("bestellung",$id)) { //$this->app->erp->MenuEintrag("index.php?module=auftrag&action=list","Zurück zur Übersicht"); $this->BestellungMenu(); return; } $this->app->YUI->AARLGPositionen(); //$storno = $this->app->Secure->GetGET("storno"); $speichern = $this->app->Secure->GetPOST("speichern"); $verbindlichkeiteninfo = $this->app->Secure->GetPOST("verbindlichkeiteninfo"); if($verbindlichkeiteninfo!="" && $speichern!="" && $id > 0) $this->app->DB->Update("UPDATE bestellung SET verbindlichkeiteninfo='$verbindlichkeiteninfo' WHERE id='$id' LIMIT 1"); //$this->BestellungMiniDetail(MINIDETAIL,false); $arr = $this->app->DB->SelectArr( "SELECT b.belegnr, b.adresse, b.status, b.schreibschutz, b.langeartikelnummern, b.zuarchivieren FROM `bestellung` AS `b` WHERE b.id = '$id' LIMIT 1" ); if($arr){ $arr = reset($arr); $belegnr = $arr['belegnr']; $nummer = $arr['belegnr']; $adresse = $arr['adresse']; $status = $arr['status']; $schreibschutz = $arr['schreibschutz']; $zuArchivieren = $arr['zuarchivieren']; $lieferantennummer = $this->app->DB->Select("SELECT lieferantennummer FROM adresse WHERE id='$adresse' LIMIT 1"); } if($id > 0 && $zuArchivieren == 1 && $schreibschutz == 1) { $this->app->erp->PDFArchivieren('bestellung', $id, true); } if($status !== "angelegt" && $status !== "angelegta" && $status !== "a") { /* $laenge = $this->app->DB->SelectArr("SELECT LENGTH(bestellnummer) as length,bestellnummer FROM bestellung_position WHERE bestellung='$id' ORDER by length DESC"); $pdf=new FPDFWAWISION(); $pdf->SetFontClassic($this->app->erp->Firmendaten("schriftart"),'',$this->app->erp->Firmendaten("tabellenhinhalt")); $laengepdf = $pdf->GetStringWidth($laenge[0]['bestellnummer']); if(floor($laengepdf) > $this->app->erp->Firmendaten("breite_nummer")+11 && $arr['langeartikelnummern']!="1") { $this->app->Tpl->Add('MESSAGE',"
Eventuell ist die Artikelnummer zu lang. Sie können die Funktion \"Lange Artikelnummer\" weiter unten aktivieren.
"); } */ $Brief = new Briefpapier($this->app); if($Brief->zuArchivieren($id, "bestellung")) { $this->app->Tpl->Add('MESSAGE',"
Die Bestellung ist noch nicht archiviert! Bitte versenden oder manuell archivieren.
"); }elseif(!$this->app->DB->Select("SELECT versendet FROM bestellung WHERE id = '$id' LIMIT 1")) { $this->app->Tpl->Add('MESSAGE',"
Die Bestellung wurde noch nicht versendet!
"); } } if($schreibschutz!="1")// && $this->app->erp->RechteVorhanden("bestellung","schreibschutz")) { { $this->app->erp->AnsprechpartnerButton($adresse); $this->app->erp->LieferadresseButton($adresse); $this->app->erp->AnsprechpartnerAlsLieferadresseButton($adresse); $this->app->erp->AdresseAlsLieferadresseButton($adresse); } $this->app->Tpl->Set('ICONMENU',$this->BestellungIconMenu($id)); $this->app->Tpl->Set('ICONMENU2',$this->BestellungIconMenu($id,2)); if($nummer!="") { $this->app->Tpl->Set('NUMMER',$nummer); if($this->app->erp->RechteVorhanden("adresse","edit")) $this->app->Tpl->Set('LIEFERANT',"   Lf-Nr. ".$lieferantennummer.""); else $this->app->Tpl->Set('LIEFERANT',"   Lf-Nr. ".$lieferantennummer); } $check = $this->app->DB->SelectArr("SELECT a.belegnr, a.id, a.name FROM bestellung_position bp INNER JOIN auftrag_position ap ON ap.id = bp.auftrag_position_id INNER JOIN auftrag a ON ap.auftrag = a.id WHERE bp.bestellung='$id' GROUP BY a.belegnr, a.id ORDER BY a.belegnr, a.id"); if($check) { $this->app->Tpl->Add('MESSAGE',"
Zu dieser Bestellung gehör".(count($check) == 1?'t der Auftrag':'en die Aufträge:')); foreach($check as $row) { $this->app->Tpl->Add('MESSAGE',' '); } $this->app->Tpl->Add('MESSAGE',"
"); } if($this->app->Secure->GetPOST("speichern")!="") { $abweichenderechnungsadresse = $this->app->Secure->GetPOST("abweichenderechnungsadresse"); $abweichendelieferadresse = $this->app->Secure->GetPOST("abweichendelieferadresse"); } else { $abweichenderechnungsadresse = $this->app->DB->Select("SELECT abweichende_rechnungsadresse FROM adresse WHERE id='$adresse' LIMIT 1"); $abweichendelieferadresse = $this->app->DB->Select("SELECT abweichendelieferadresse FROM bestellung WHERE id='$id' LIMIT 1"); } if($abweichenderechnungsadresse) $this->app->Tpl->Set('RECHNUNGSADRESSE',"visible"); else $this->app->Tpl->Set('RECHNUNGSADRESSE',"none"); if($abweichendelieferadresse) $this->app->Tpl->Set('LIEFERADRESSE',"visible"); else $this->app->Tpl->Set('LIEFERADRESSE',"none"); if($belegnr=="" || $belegnr=="0") { $this->app->Tpl->Set('LOESCHEN',""); } $status= $this->app->DB->Select("SELECT status FROM bestellung WHERE id='$id' LIMIT 1"); if($status=="") $this->app->DB->Update("UPDATE bestellung SET status='angelegt' WHERE id='$id' LIMIT 1"); if($schreibschutz=="1" && $this->app->erp->RechteVorhanden("bestellung","schreibschutz")) { $this->app->Tpl->Add('MESSAGE',"
Diese Bestellung ist schreibgeschützt und darf daher nicht mehr bearbeitet werden! 
"); // $this->app->erp->CommonReadonly(); } if($schreibschutz=="1") { $this->app->erp->RemoveReadonly("bestellung_bestaetigt"); $this->app->erp->RemoveReadonly("bestaetigteslieferdatum"); $this->app->erp->RemoveReadonly("bestellungbestaetigtabnummer"); $this->app->erp->RemoveReadonly("bestellungbestaetigtper"); $speichern = $this->app->Secure->GetPOST("speichern"); if($speichern!="") { $bestellung_bestaetigt = $this->app->Secure->GetPOST("bestellung_bestaetigt"); $bestaetigteslieferdatum = $this->app->Secure->GetPOST("bestaetigteslieferdatum"); $bestellungbestaetigtabnummer = $this->app->Secure->GetPOST("bestellungbestaetigtabnummer"); $bestellungbestaetigtper = $this->app->Secure->GetPOST("bestellungbestaetigtper"); if($bestellung_bestaetigt!="1") $bestellung_bestaetigt="0"; $bestaetigteslieferdatum = $this->app->String->Convert($bestaetigteslieferdatum,"%1.%2.%3","%3-%2-%1"); $this->app->DB->Update("UPDATE bestellung SET bestellung_bestaetigt='$bestellung_bestaetigt',bestaetigteslieferdatum='$bestaetigteslieferdatum', bestellungbestaetigtabnummer='$bestellungbestaetigtabnummer',bestellungbestaetigtper='$bestellungbestaetigtper' WHERE id='$id' LIMIT 1"); // alle positonen ebenso anpassen $this->app->DB->Update("UPDATE bestellung_position SET lieferdatum='$bestaetigteslieferdatum' WHERE bestellung='$id' AND lieferdatum='0000-00-00'"); } $this->app->erp->CommonReadonly(); } else { $portofreilieferant_aktiv = $this->app->DB->Select("SELECT portofreilieferant_aktiv FROM adresse WHERE id='$adresse' LIMIT 1"); $portofreiablieferant = $this->app->DB->Select("SELECT portofreiablieferant FROM adresse WHERE id='$adresse' LIMIT 1"); $gesamtsumme = $this->app->erp->BEGesamtsummeOhnePorto($id,"bestellung"); if($portofreilieferant_aktiv == 1 && $portofreiablieferant > 0 && $gesamtsumme <= $portofreiablieferant) { $this->app->Tpl->Add('MESSAGE',"
Die Lieferung wird ab ".number_format($portofreiablieferant,2,',','.')." EUR (netto) Portofrei. Aktuell sind nur ".number_format($gesamtsumme,2,',','.')." EUR (netto) in der Bestellung.
"); } } if($schreibschutz != '1'){ if($this->app->erp->Firmendaten("schnellanlegen") == "1"){ $this->app->Tpl->Set('BUTTON_UEBERNEHMEN', ' '); }else{ $this->app->Tpl->Set('BUTTON_UEBERNEHMEN', ' '); } } // immer wenn sich der lieferant genändert hat standartwerte setzen if($this->app->Secure->GetPOST("adresse")!="") { $tmp = $this->app->Secure->GetPOST("adresse"); $lieferantennummer = $this->app->erp->FirstTillSpace($tmp); //$name = substr($tmp,6); $filter_projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id = '$id' LIMIT 1"); //if($filter_projekt)$filter_projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE id= '$filter_projekt' and eigenernummernkreis = 1 LIMIT 1"); $adresse = $this->app->DB->Select("SELECT a.id FROM adresse a LEFT JOIN adresse_rolle ar ON a.id = ar.adresse AND ar.projekt > 0 ".$this->app->erp->ProjektRechte("ar.projekt")." WHERE a.lieferantennummer='$lieferantennummer' AND a.geloescht=0 AND (1 ".$this->app->erp->ProjektRechte("a.projekt")." OR not isnull(ar.id)) ORDER by ".($filter_projekt?" a.projekt = '$filter_projekt' DESC, ":"")." a.projekt LIMIT 1"); $uebernehmen =$this->app->Secure->GetPOST("uebernehmen"); if($schreibschutz != '1' && $uebernehmen=="1" && $adresse > 0) // nur neuladen bei tastendruck auf uebernehmen // FRAGEN!!!! { $this->app->erp->LoadBestellungStandardwerte($id,$adresse); $this->app->Location->execute('index.php?module=bestellung&action=edit&id='.$id); } } /* $table = new EasyTable($this->app); $table->Query("SELECT a.bezeichnung as artikel, a.nummer as Nummer, b.menge, b.vpe as VPE, FORMAT(b.preis,4) as preis FROM bestellung_position b LEFT JOIN artikel a ON a.id=b.artikel WHERE b.bestellung='$id'"); $table->DisplayNew(POSITIONEN,"Preis","noAction"); */ $arr = $this->app->DB->SelectArr("SELECT bearbeiter, belegnr, status, zahlungsweise,abweichendelieferadresse FROM bestellung WHERE id = '$id' LIMIT 1"); if($arr){ $arr = reset($arr); $bearbeiter = $arr['bearbeiter']; $status = $arr['status']; $bestellung = $arr['belegnr']; $zahlungsweise = $arr['zahlungsweise']; $abweichendelieferadresse = $arr['abweichendelieferadresse']; } $this->app->Tpl->Set('BEARBEITER',"app->erp->GetAdressName($bearbeiter)."\" readonly>"); $this->app->Tpl->Set('STATUS',""); if($bestellung!='') $bestellung="keine Nummer"; $this->app->Tpl->Set('ANGEBOT',""); if($this->app->Secure->GetPOST("zahlungsweise")!="") $zahlungsweise = $this->app->Secure->GetPOST("zahlungsweise"); $zahlungsweise = strtolower($zahlungsweise); $this->app->Tpl->Set('RECHNUNG',"none"); $this->app->Tpl->Set('KREDITKARTE',"none"); $this->app->Tpl->Set('VORKASSE',"none"); $this->app->Tpl->Set('PAYPAL',"none"); $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',"none"); if($zahlungsweise=="rechnung") $this->app->Tpl->Set('RECHNUNG',""); if($zahlungsweise=="paypal") $this->app->Tpl->Set('PAYPAL',""); if($zahlungsweise=="kreditkarte") $this->app->Tpl->Set('KREDITKARTE',""); if($zahlungsweise=="einzugsermaechtigung" || $zahlungsweise=="lastschrift") $this->app->Tpl->Set('EINZUGSERMAECHTIGUNG',""); if($zahlungsweise=="vorkasse" || $zahlungsweise=="kreditkarte" || $zahlungsweise=="paypal" || $zahlungsweise=="bar") $this->app->Tpl->Set('VORKASSE',""); if($this->app->Secure->GetPOST("abweichendelieferadresse")!="") $versandart = $this->app->Secure->GetPOST("abweichendelieferadresse"); $this->app->Tpl->Set('ABWEICHENDELIEFERADRESSESTYLE',"none"); if($abweichendelieferadresse=="1") $this->app->Tpl->Set('ABWEICHENDELIEFERADRESSESTYLE',""); $this->app->Tpl->Set('AKTIV_TAB1',"selected"); parent::BestellungEdit(); $this->app->erp->MessageHandlerStandardForm(); /* if($this->app->Secure->GetPOST("speichern")!="" && $storno=="") { if($this->app->Secure->GetGET("msg")=="") { $msg = $this->app->Tpl->Get(MESSAGE); $msg = $this->app->erp->base64_url_encode($msg); } else { $msg = $this->app->erp->base64_url_encode($msg); } header("Location: index.php?module=bestellung&action=edit&id=$id&msg=$msg"); exit; } */ /* $summe = $this->app->DB->Select("SELECT SUM(menge*preis) FROM bestellung_position WHERE bestellung='$id'"); $waehrung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position WHERE bestellung='$id' LIMIT 1"); $ust_befreit_check = $this->app->DB->Select("SELECT ust_befreit FROM bestellung WHERE id='$id' LIMIT 1"); $summebrutto = $summe *1.19; if($ust_befreit_check==0) $tmp = "Kunde zahlt mit UST"; else if($ust_befreit_check==1) $tmp = "Kunde ist UST befreit"; else $tmp = "Kunde zahlt keine UST"; if($summe > 0) $this->app->Tpl->Add(POSITIONEN, "
Zu zahlen: $summe (netto) $summebrutto (brutto) $waehrung ($tmp)  "); */ if($this->app->Secure->GetPOST('weiter')!='') { $this->app->Location->execute('index.php?module=bestellung&action=positionen&id='.$id); } $this->BestellungMenu(); } function BestellungCreate() { //$this->app->Tpl->Add(TABS,"
  • Bestellung

  • "); $this->app->erp->Headlines('Bestellung anlegen'); $this->app->erp->MenuEintrag("index.php?module=bestellung&action=list","Zurück zur Übersicht"); $anlegen = $this->app->Secure->GetGET("anlegen"); if($this->app->erp->Firmendaten("schnellanlegen")=="1" && $anlegen!="1") { $this->app->Location->execute('index.php?module=bestellung&action=create&anlegen=1'); } if($anlegen != "") { $id = $this->app->erp->CreateBestellung(); $this->app->erp->BestellungProtokoll($id,"Bestellung angelegt"); $this->app->Location->execute('index.php?module=bestellung&action=edit&id='.$id); } $this->app->Tpl->Add('MESSAGE',"
    Möchten Sie eine Bestellung jetzt anlegen?  

    "); $this->app->Tpl->Set('TAB1',"

    Bestellungen in Bearbeitung

    Offene Bestellunge, die durch andere Mitarbeiter in Bearbeitung sind.

    [ANGEBOTE]"); $this->app->Tpl->Set('AKTIV_TAB1',"selected"); $this->app->YUI->TableSearch('ANGEBOTE',"bestellungeninbearbeitung"); /* $table = new EasyTable($this->app); $table->Query("SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr,belegnr,'ohne Nummer') as beleg, name, status, id FROM bestellung WHERE status='angelegt' order by datum DESC, id DESC"); $table->DisplayNew(ANGEBOTE, " "); */ $this->app->Tpl->Set('TABTEXT',"Bestellung anlegen"); $this->app->Tpl->Parse('PAGE',"tabview.tpl"); //parent::BestellungCreate(); } function BestellungListMenu() { $backurl = $this->app->Secure->GetGET("backurl"); $backurl = $this->app->erp->base64_url_decode($backurl); //$this->app->Tpl->Add(TABS,"
  • Allgemein

  • "); $this->app->erp->MenuEintrag("index.php?module=bestellung&action=list","Übersicht"); $this->app->erp->MenuEintrag("index.php?module=bestellung&action=create","Neue Bestellung anlegen"); $this->app->erp->MenuEintrag("index.php?module=bestellung&action=offenepositionen","Offene Positionen"); //$this->app->erp->MenuEintrag("index.php?module=bestellvorschlag&action=ausgehend","Bestellvorschlag"); if(strlen($backurl)>5){ $this->app->erp->MenuEintrag((string)$backurl, 'Zurück zur Übersicht'); } else{ $this->app->erp->MenuEintrag('index.php', 'Zurück zur Übersicht'); } } function BestellungList() { // $this->app->Tpl->Set(UEBERSCHRIFT,"Bestellungssuche"); // $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Bestellungssuche"); if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('bestellung', 'edit')) { $drucker = $this->app->Secure->GetPOST('seldrucker'); $aktion = $this->app->Secure->GetPOST('sel_aktion'); $auswahl = $this->app->Secure->GetPOST('auswahl'); if($drucker > 0) $this->app->erp->BriefpapierHintergrundDisable($drucker); if(is_array($auswahl)) { switch($aktion) { case 'mail': foreach($auswahl as $v) { $v = (int)$v; if($v){ $bestellungarr = $this->app->DB->SelectRow("SELECT email,adresse,projekt,name,sprache FROM bestellung WHERE id = '$v' LIMIT 1"); if(!empty($bestellungarr)) { $email = (String)$bestellungarr['email'];//$this->app->DB->Select("SELECT email FROM auftrag WHERE id = '$v' LIMIT 1"); $adresse = $bestellungarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM auftrag WHERE id = '$v' LIMIT 1"); $projekt = $bestellungarr['projekt'];//$this->app->DB->Select("SELECT projekt FROM auftrag WHERE id = '$v' LIMIT 1"); $name = $bestellungarr['name'];// $this->app->DB->Select("SELECT name FROM auftrag WHERE id = '$v' LIMIT 1"); $sprache = $bestellungarr['sprache'];// $this->app->DB->Select("SELECT sprache FROM auftrag WHERE id='$v' LIMIT 1"); }else{ $email = ''; $adresse = 0; $projekt = 0; $name = ''; $sprache = ''; } if($sprache==''){ $sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1"); } if($sprache=='') { $sprache='de'; } $emailtext = $this->app->erp->Geschaeftsbriefvorlage($sprache,'bestellung',$projekt,$name,$v); if($email === '') { $email = (String)$this->app->DB->Select("SELECT email FROM adresse WHERE id = '$adresse' LIMIT 1"); } if($email !== '') { $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($v); $_tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); unlink($_tmpfile); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $fileid = $this->app->erp->CreateDatei($Brief->filename,'bestellung','','',$tmpfile,$this->app->User->GetName()); $this->app->erp->AddDateiStichwort($fileid,'bestellung','bestellung',$v); $this->app->erp->DokumentSend($adresse,'bestellung', $v, 'email',$emailtext['betreff'],$emailtext['text'],array($tmpfile),"","",$projekt,$email, $name); $ansprechpartner = $name." <".$email.">"; $this->app->DB->Insert("INSERT INTO dokumente_send (id,dokument,zeit,bearbeiter,adresse,parameter,art,betreff,text,projekt,ansprechpartner,versendet,dateiid) VALUES ('','bestellung',NOW(),'".$this->app->DB->real_escape_string($this->app->User->GetName())."', '$adresse','$v','email','".$this->app->DB->real_escape_string($emailtext['betreff'])."','".$this->app->DB->real_escape_string($emailtext['text'])."','$projekt','$ansprechpartner',1,'$fileid')"); $tmpid = $this->app->DB->GetInsertID(); unlink($tmpfile); $this->app->DB->Update("UPDATE bestellung SET versendet=1, versendet_am=NOW(), versendet_per='email',versendet_durch='".$this->app->DB->real_escape_string($this->app->User->GetName())."',schreibschutz='1' WHERE id='$v' LIMIT 1"); $this->app->erp->BestellungProtokoll($v,'Bestellung versendet'); } } } break; case 'freigeben': foreach($auswahl as $v) { $v = (int)$v; if($v){ if($this->app->DB->Select("SELECT id FROM bestellung WHERE id = '$v' AND status <> 'storniert' LIMIT 1")){ $this->BestellungFreigegeben($v); } } } break; case 'versendet': foreach($auswahl as $v) { $v = (int)$v; if($v) { $projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$v' LIMIT 1"); if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->erp->BestellungProtokoll($v,"Bestellung versendet"); $this->app->erp->closeInvoice($v); $this->app->DB->Update("UPDATE bestellung SET schreibschutz=1, versendet = 1, status='versendet' WHERE id = '$v' LIMIT 1"); } } break; case 'abgeschlossen': foreach($auswahl as $v) { $v = (int)$v; if($v){ if($this->app->DB->Select("SELECT id FROM bestellung WHERE id = '$v' AND status != 'angelegt' AND status != 'abgeschlossen' LIMIT 1")){ $this->BestellungAbschliessen($v); } } } break; case 'drucken': if($drucker) { foreach($auswahl as $v) { $v = (int)$v; if($v){ $bestellungsdaten = $this->app->DB->Select("SELECT projekt, adresse FROM bestellung WHERE id='$v' LIMIT 1"); $projekt = $bestellungsdaten['projekt']; $adressId = $bestellungsdaten['adresse']; $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($v); $_tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); unlink($_tmpfile); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($v); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); $this->app->printer->Drucken($drucker,$tmpfile); $doctype = 'bestellung'; $this->app->erp->RunHook('dokumentsend_ende', 5, $doctype, $v, $projekt, $adressId, $aktion); $this->app->erp->BestellungProtokoll($v,"Bestellung versendet"); unlink($tmpfile); } } } break; case 'pdf': foreach($auswahl as $v) { $v = (int)$v; if($v){ $projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$v' LIMIT 1"); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($v); $_tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(); unlink($_tmpfile); $this->app->erp->BriefpapierHintergrunddisable = !$this->app->erp->BriefpapierHintergrunddisable; if(class_exists('BestellungPDFCustom')) { $Brief = new BestellungPDFCustom($this->app,$projekt); }else{ $Brief = new BestellungPDF($this->app,$projekt); } $Brief->GetBestellung($v); $tmpfile[] = $Brief->displayTMP(); //$Brief->ArchiviereDocument(); } } if(count($tmpfile) > 0){ try { /** @var PdfMerger $pdfMerger */ $pdfMerger = $this->app->Container->get('PdfMerger'); $mergeOutputPath = realpath($this->app->erp->GetTMP()) . '/' . uniqid('sammelpdf_', true) . '.pdf'; $pdfMerger->merge($tmpfile, $mergeOutputPath); foreach($tmpfile as $key=>$value) { unlink($value); } header('Content-type:application/pdf'); header('Content-Disposition: attachment;filename='.md5(microtime(true)).'.pdf'); readfile($mergeOutputPath); $this->app->ExitXentral(); } catch (PdfComponentExceptionInterface $exception) { echo 'Fehler beim Generieren der Sammelpdf: ' . htmlspecialchars($exception->getMessage()); $this->app->ExitXentral(); } } break; } } } $speichern = $this->app->Secure->GetPOST("speichern"); $verbindlichkeiteninfo = $this->app->Secure->GetPOST("verbindlichkeiteninfo"); $bestellungid = $this->app->Secure->GetPOST("bestellungid"); if($this->app->erp->Firmendaten("bestellungabschliessen")) { $offene = $this->app->DB->SelectArr("SELECT id FROM bestellung WHERE status='freigegeben' OR status='versendet'"); foreach($offene as $order) { $this->checkAbschliessen($order['id']); } } if($verbindlichkeiteninfo!="" && $speichern!="" && $bestellungid > 0) $this->app->DB->Update("UPDATE bestellung SET verbindlichkeiteninfo='$verbindlichkeiteninfo' WHERE id='$bestellungid' LIMIT 1"); $this->BestellungListMenu(); $zahlungsweisen = $this->app->DB->SelectArr(' SELECT zahlungsweise FROM bestellung GROUP BY zahlungsweise '); $zahlungsweiseStr = ''; if ($zahlungsweisen) { foreach ($zahlungsweisen as $zahlungsweise) { if (empty($zahlungsweise['zahlungsweise'])) { continue; } $zahlungsweiseStr .= ''; } } $status = $this->app->DB->SelectArr(' SELECT status FROM bestellung GROUP BY status '); $statusStr = ''; if ($status) { foreach ($status as $statusE) { if (empty($statusE['status'])) { continue; } $statusStr .= ''; } } $versandarten = $this->app->DB->SelectArr(' SELECT versandart FROM bestellung GROUP BY versandart '); $versandartenStr = ''; if ($versandarten) { foreach ($versandarten as $versandart) { if (empty($versandart['versandart'])) { continue; } $versandartenStr .= ''; } } $laender = $this->app->erp->GetSelectLaenderliste(); $laenderStr = ''; foreach ($laender as $landKey => $land) { $laenderStr .= ''; } $this->app->Tpl->Set('AKTIV_TAB1',"selected"); $this->app->Tpl->Set('INHALT',""); // $this->app->Tpl->Add(STATUS,$statusStr); // $this->app->Tpl->Add(VERSANDARTEN,$versandartenStr); $this->app->YUI->DatePicker("datumVon"); $this->app->YUI->DatePicker("datumBis"); $this->app->YUI->AutoComplete("projekt", "projektname", 1); $this->app->YUI->AutoComplete("lieferantennummer", "lieferant", 1); $this->app->YUI->AutoComplete("artikel", "artikelnummer", 1); $this->app->YUI->AutoComplete("bestellungnummer", "bestellung", 1); $this->app->Tpl->Add('ZAHLUNGSWEISEN',$zahlungsweiseStr); $this->app->Tpl->Add('STATUS',$statusStr); $this->app->Tpl->Add('VERSANDARTEN',$versandartenStr); $this->app->Tpl->Add('LAENDER',$laenderStr); $this->app->Tpl->Parse('TAB1',"bestellung_table_filter.tpl"); $this->app->YUI->TableSearch('TAB1',"bestellungen"); $this->app->YUI->TableSearch('TAB2',"bestellungeninbearbeitung"); $this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('rechnung_list_drucker'))); $this->app->Tpl->Parse('PAGE',"bestellunguebersicht.tpl"); return; /* // suche $sql = $this->app->erp->BestellungSuche(); // offene Bestellungen $this->app->Tpl->Set(SUBSUBHEADING,"Offene Bestellunge"); $table = new EasyTable($this->app); $table->Query($sql,$_SESSION[bestellungtreffer]); //$table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Bestellung, a.name, p.abkuerzung as projekt, a.id // FROM bestellung a, projekt p WHERE (a.status='freigegeben' OR a.status='versendet') AND p.id=a.projekt order by a.datum DESC, a.id DESC",10); $table->DisplayOwn(INHALT, " "); $this->app->Tpl->Parse(TAB1,"rahmen70.tpl"); $this->app->Tpl->Set(INHALT,""); // wartende Bestellungen $table = new EasyTable($this->app); $table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Bestellung, ad.lieferantennummer as kunde, a.name, p.abkuerzung as projekt, a.id FROM bestellung a, projekt p, adresse ad WHERE (a.status='freigegeben' OR a.status='versendet') AND p.id=a.projekt AND a.adresse=ad.id order by a.datum DESC, a.id DESC"); $table->DisplayNew(INHALT, " "); $this->app->Tpl->Parse(TAB2,"rahmen70.tpl"); $this->app->Tpl->Set(INHALT,""); // In Bearbeitung $this->app->Tpl->Set(SUBSUBHEADING,"In Bearbeitung"); $table = new EasyTable($this->app); $table->Query("SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr,belegnr,'ohne Nummer') as auftrag, name, vertrieb, status, id FROM bestellung WHERE status='angelegt' order by datum DESC, id DESC"); $table->DisplayNew(INHALT, " "); $this->app->Tpl->Parse(TAB3,"rahmen70.tpl"); */ /* $this->app->Tpl->Set(TAB2,"lieferant, bestellung, waehrung, sprache, liefertermin, steuersatz, einkäufer, freigabe

    Bestellung (NR),Bestellart (NB), Bestelldatum
    Projekt
    Kostenstelle pro Position
    Terminbestellung (am xx.xx.xxxx raus damit)
    vorschlagsdaten für positionen
    proposition reinklicken zum ändern und reihenfolge tabelle
    Bestellung muss werden wie bestellung (bestellung beschreibung = allgemein)
    Positionen (wie stueckliste)
    Wareneingang / Rückstand
    Etiketten
    Freigabe
    Dokument direkt faxen "); */ } function BestellungRechnungsLieferadresse($auftragid) { $data = $this->app->DB->SelectArr("SELECT * FROM bestellung WHERE id='$auftragid' LIMIT 1"); foreach($data[0] as $key=>$value) { if($data[0][$key]!='' && $key!=='abweichendelieferadresse' && $key!=='land' && $key!=='plz' && $key!=='lieferland' && $key!=='lieferplz') { $data[0][$key] = $data[0][$key].'
    '; } } $rechnungsadresse = $data[0]['name']."".$data[0]['ansprechpartner']."".$data[0]['abteilung']."".$data[0]['unterabteilung']. "".$data[0]['strasse']."".$data[0]['adresszusatz']."".$data[0]['land']."-".$data[0]['plz']." ".$data[0]['ort']; if($data[0]['abweichendelieferadresse']!=0){ $lieferadresse = $data[0]['liefername']."".$data[0]['lieferansprechpartner']."".$data[0]['lieferabteilung']."".$data[0]['lieferunterabteilung']. "".$data[0]['lieferstrasse']."".$data[0]['lieferadresszusatz']."".$data[0]['lieferland']."-".$data[0]['lieferplz']." ".$data[0]['lieferort']; } else { $lieferadresse = "keine abweichende Lieferadresse"; } return "
    Bestellt bei:

    $rechnungsadresse
    Lieferadresse:

    $lieferadresse
    "; } public function BestellungNeuberechnen($id) { $summeV = $this->app->DB->Select( "SELECT IFNULL(SUM(menge*preis), 0) FROM bestellung_position WHERE umsatzsteuer!='ermaessigt' AND umsatzsteuer!='befreit' AND bestellung='$id' AND (isnull(steuersatz) OR steuersatz < 0)" ); $summeR = $this->app->DB->Select("SELECT IFNULL(SUM(menge*preis), 0) FROM bestellung_position WHERE umsatzsteuer='ermaessigt' AND bestellung='$id' AND (isnull(steuersatz) OR steuersatz < 0)"); $summeS = (float)$this->app->DB->Select("SELECT IFNULL( SUM(menge*preis * if(umsatzsteuer = 'befreit', 0, IF(steuersatz < 0 OR isnull(steuersatz),0,steuersatz / 100) ) ) ,0) FROM bestellung_position WHERE bestellung='$id' AND umsatzsteuer!='ermaessigt' AND umsatzsteuer!='normal' AND ((steuersatz IS NOT NULL AND steuersatz >= 0) OR umsatzsteuer='befreit')"); $summeNetto = $this->app->DB->Select("SELECT IFNULL(SUM(menge*preis),0) FROM bestellung_position WHERE bestellung='$id'"); $ust_befreit = $this->app->DB->Select("SELECT ust_befreit FROM bestellung WHERE id='$id' LIMIT 1"); if($ust_befreit>0) { $rechnungsbetrag = $summeNetto; } else { $rechnungsbetrag = $summeNetto + ($summeV*$this->app->erp->GetSteuersatzNormal(true,$id,'bestellung')-$summeV)+ ($summeR*$this->app->erp->GetSteuersatzErmaessigt(true,$id,'bestellung')-$summeR)+$summeS; } $this->app->DB->Update("UPDATE bestellung SET gesamtsumme='$rechnungsbetrag' WHERE id='$id' LIMIT 1"); } public function DeleteBestellung($id) { if($id <= 0) { return; } $belegnr = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$id' LIMIT 1"); if($belegnr=='' || $belegnr=='0') { $this->app->DB->Delete("DELETE FROM bestellung_position WHERE bestellung='$id'"); $this->app->DB->Delete("DELETE FROM bestellung_protokoll WHERE bestellung='$id'"); $this->app->DB->Delete("DELETE FROM bestellung WHERE id='$id' LIMIT 1"); } } public function CreateBestellung($adresse='') { $projekt = $this->app->erp->GetCreateProjekt($adresse); $belegmax = ''; $ohnebriefpapier = $this->app->erp->Firmendaten('bestellung_ohnebriefpapier'); $bestellungohnepreis = $this->app->erp->Firmendaten('bestellungohnepreis'); $eigenartikelnummer = $this->app->erp->Firmendaten('bestellungeigeneartikelnummer'); $bestellunglangeartikelnummern = $this->app->erp->Firmendaten('bestellunglangeartikelnummern'); $this->app->DB->Insert("INSERT INTO bestellung (datum,bearbeiter,firma,belegnr,adresse,status,artikelnummerninfotext,ohne_briefpapier,bestellungohnepreis,projekt,langeartikelnummern) VALUES (NOW(),'".$this->app->User->GetName()."','".$this->app->User->GetFirma()."','$belegmax','$adresse','angelegt',".($eigenartikelnummer?'1':'0').",'".$ohnebriefpapier."','".$bestellungohnepreis."','".$projekt."',".($bestellunglangeartikelnummern?'1':'0').')'); $id = $this->app->DB->GetInsertID(); $this->app->erp->ObjektProtokoll('bestellung',$id,'bestellung_create','Bestellung angelegt'); $this->app->erp->SchnellFreigabe('bestellung',$id); $this->app->erp->LoadSteuersaetzeWaehrung($id,'bestellung'); $this->app->erp->EventAPIAdd('EventBestellungCreate',$id,'bestellung','create'); return $id; } public function AddBestellungPosition($bestellung, $einkauf,$menge,$datum, $beschreibung = '',$artikel='',$einheit='', $waehrung = '') { $beschreibung = $this->app->DB->real_escape_string($beschreibung); if($artikel<=0) { if($einkauf > 0){ $einkaufarr = $this->app->DB->SelectRow("SELECT * FROM einkaufspreise WHERE id='$einkauf' LIMIT 1"); } if(!empty($einkaufarr)) { $artikel = $einkaufarr['artikel']; $article = $this->app->DB->SelectRow( "SELECT `nummer`, `name_de`, `name_en`, `umsatzsteuer` FROM `artikel` WHERE `id` = {$artikel}" ); $preis = $einkaufarr['preis']; $projekt = $einkaufarr['projekt']; $waehrung = $einkaufarr['waehrung']; $vpe = $einkaufarr['vpe']; $bezeichnunglieferant = $this->app->DB->real_escape_string($einkaufarr['bezeichnunglieferant']); $bestellnummer = $this->app->DB->real_escape_string($einkaufarr['bestellnummer']); }else{ $artikel = 0; $preis = 0; $projekt = 0; $waehrung = ''; $vpe = ''; $bezeichnunglieferant = ''; $bestellnummer = ''; } }else{ $article = $this->app->DB->SelectRow( "SELECT `nummer`, `name_de`, `name_en`, `umsatzsteuer` FROM `artikel` WHERE `id` = {$artikel}" ); $bestellnummer = $article['nummer']; $bezeichnunglieferant = $this->app->DB->real_escape_string($article['name_de']); $projekt = $projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$bestellung' LIMIT 1"); $preis = 0; } if($projekt <= 0) { $projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$bestellung' LIMIT 1"); } if($bezeichnunglieferant==''){ $languageIso = $this->app->erp->GetSpracheBelegISO('bestellung', $bestellung); if($languageIso === 'EN'){ $bezeichnunglieferant = $this->app->DB->real_escape_string($article['name_en']); } if(empty($bezeichnunglieferant)){ $bezeichnunglieferant = $this->app->DB->real_escape_string($article['name_de']); } } $umsatzsteuer = $article['umsatzsteuer']; if($umsatzsteuer=='') { $umsatzsteuer='normal'; } $sort = $this->app->DB->Select("SELECT MAX(sort) FROM bestellung_position WHERE bestellung='$bestellung' LIMIT 1"); $sort++; $this->app->DB->Insert("INSERT INTO bestellung_position (bestellung,artikel,bezeichnunglieferant,bestellnummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe, beschreibung,einheit) VALUES ('$bestellung','$artikel','$bezeichnunglieferant','$bestellnummer','$menge','$preis','$waehrung','$sort','$datum','$umsatzsteuer','angelegt','$projekt','$vpe','$beschreibung','$einheit')"); return $this->app->DB->GetInsertID(); } public function CopyBestellung($id) { $this->app->DB->Insert('INSERT INTO bestellung (id) VALUES (NULL)'); $newid = $this->app->DB->GetInsertID(); $arr = $this->app->DB->SelectRow("SELECT NOW() as datum,projekt,bodyzusatz,freitext,adresse,name,abteilung,unterabteilung,strasse,adresszusatz,plz,ort,land,ustid,email,telefon,telefax,betreff,kundennummer,versandart,einkaeufer,zahlungsweise,zahlungszieltage,'angelegt' as status,typ, zahlungszieltageskonto,zahlungszielskonto,firma,'angelegt' as status,abweichendelieferadresse,liefername,lieferabteilung,lieferunterabteilung,ust_befreit, lieferland,lieferstrasse,lieferort,lieferplz,lieferadresszusatz,lieferansprechpartner,sprache,anzeigesteuer,waehrung,kostenstelle FROM bestellung WHERE id='$id' LIMIT 1"); $arr['bundesstaat'] = $this->app->DB->Select("SELECT bundesstaat FROM bestellung WHERE id='$id' LIMIT 1"); $this->app->DB->UpdateArr('bestellung',$newid,'id',$arr, true); $pos = $this->app->DB->SelectArr("SELECT * FROM bestellung_position WHERE bestellung='$id'"); $cpos = !empty($pos)?count($pos):0; for($i=0;$i<$cpos;$i++){ $this->app->DB->Insert("INSERT INTO bestellung_position (bestellung) VALUES ($newid)"); $newposid = $this->app->DB->GetInsertID(); $pos[$i]['bestellung']=$newid; $pos[$i]['auftrag_position_id']=0; $this->app->DB->UpdateArr('bestellung_position',$newposid,'id',$pos[$i], true); if(is_null($pos[$i]['steuersatz'])){ $this->app->DB->Update("UPDATE bestellung_position SET steuersatz = null WHERE id = '$newposid' LIMIT 1"); } } $this->app->erp->CheckFreifelder('bestellung',$newid); $this->app->erp->CopyBelegZwischenpositionen('bestellung',$id,'bestellung',$newid); $this->app->DB->Update("UPDATE bestellung_position SET geliefert=0, mengemanuellgeliefertaktiviert=0,abgeschlossen='0',abgerechnet='0' WHERE bestellung='$newid'"); $this->app->erp->LoadSteuersaetzeWaehrung($newid,'bestellung'); $this->app->erp->SchnellFreigabe('bestellung',$newid); return $newid; } public function LoadBestellungStandardwerte($id,$adresse) { // standard adresse von lieferant $arr = $this->app->DB->SelectArr("SELECT * FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1"); $rolle_projekt = $this->app->DB->Select("SELECT parameter FROM adresse_rolle WHERE adresse='$adresse' AND subjekt='Lieferant' AND objekt='Projekt' AND (bis ='0000-00-00' OR bis <= NOW()) LIMIT 1"); if($rolle_projekt > 0) { $arr[0]['projekt'] = $rolle_projekt; } $field = array('anschreiben','name','abteilung','unterabteilung','strasse','adresszusatz','plz','ort','land','ustid','email','telefon','telefax','lieferantennummer','projekt','ust_befreit','titel','lieferbedingung','ansprechpartner'); foreach($field as $key=>$value) { if($value==='projekt' && $this->app->Secure->POST[$value]!=''&&0) { $uparr[$value] = $this->app->Secure->POST[$value]; } else { $this->app->Secure->POST[$value] = str_replace("'", ''',$arr[0][$value]); $uparr[$value] = str_replace("'", ''',$arr[0][$value]); } //$this->app->Secure->POST[$value] = $arr[0][$value]; //$uparr[$value] = $arr[0][$value]; } $uparr['adresse'] = $adresse; $this->app->DB->UpdateArr('bestellung',$id,'id',$uparr); $uparr=null; //liefernantenvorlage $arr = $this->app->DB->SelectArr("SELECT kundennummerlieferant as kundennummer, zahlungsweiselieferant as zahlungsweise, zahlungszieltagelieferant as zahlungszieltage, zahlungszieltageskontolieferant as zahlungszieltageskonto, zahlungszielskontolieferant as zahlungszielskonto, versandartlieferant as versandart, waehrung FROM adresse WHERE id='$adresse' LIMIT 1"); // falls von Benutzer projekt ueberladen werden soll $projekt_bevorzugt=$this->app->DB->Select("SELECT projekt_bevorzugen FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1"); if($projekt_bevorzugt=='1') { $uparr['projekt'] = $this->app->DB->Select("SELECT projekt FROM user WHERE id='".$this->app->User->GetID()."' LIMIT 1"); $arr[0]['projekt'] = $uparr['projekt']; $this->app->Secure->POST['projekt']=$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='".$arr[0]['projekt']."' AND id > 0 LIMIT 1"); } $field = array('kundennummer','zahlungsweise','zahlungszieltage','zahlungszieltageskonto','zahlungszielskonto','versandart','waehrung'); foreach($field as $key=>$value) { $uparr[$value] = $arr[0][$value]; $this->app->Secure->POST[$value] = $arr[0][$value]; } $this->app->DB->UpdateArr('bestellung',$id,'id',$uparr); //standardprojekt //$projekt = $this->app->DB->Select("SELECT projekt FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1"); //$this->app->Secure->POST[projekt] = $projekt; $this->app->erp->LoadAdresseStandard('bestellung',$id,$adresse); } public function BestellungEAN() { $id=$this->app->Secure->GetGET("id"); $scanner=$this->app->Secure->GetPOST("scanner"); $menge=$this->app->Secure->GetPOST("menge"); $posAdd = $this->app->Secure->GetPOST('posadd'); $posDel = $this->app->Secure->GetPost('posdel'); /** @var ScanArticleService $scanArticleService */ $scanArticleService = $this->app->Container->get('ScanArticleService'); $this->BestellungMenu(); $schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM bestellung WHERE id='$id' LIMIT 1"); if($scanner!="" && $schreibschutz!="1") { if(!is_numeric($menge)){ $menge=1; } $adresse = $this->app->DB->Select("SELECT adresse FROM bestellung WHERE id='$id' LIMIT 1"); try{ $scanArticleService->writeArticleToSession('bestellung',$scanner,$menge,$id); } catch(ArticleNotFoundException $e){ $this->app->Tpl->Set('TAB1',"
    {|Der Artikel wurde nicht gefunden|}: ".$scanner."
    "); } catch(InvalidArgumentException $e){ $this->app->Tpl->Set('TAB1',"
    {|Fehler beim Schreiben in die Session|}
    "); } } if($schreibschutz=="1"){ $this->app->Tpl->Set('TAB1',"
    Der Schreibschutz ist aktiviert. Bitte entfernen Sie diesen.
    "); } else{ if(!empty($posAdd)){ try{ $scanArticleService->savePositions('bestellung',$id); $this->app->Tpl->Set('MESSAGE',"
    {|Positionen hinzugefügt|}
    "); } catch(Exception $e){ $this->app->Tpl->Set('MESSAGE',"
    {|Positionen nicht gespeichert|}!
    "); } } if(!empty($posDel)){ $scanArticleService->clearAllArticleDataInSession('bestellung'); } $gescannteArtikel = $scanArticleService->getAllArticleDataFromSession('bestellung'); if(!empty($gescannteArtikel)){ $table = new EasyTable($this->app); $table->headings = ['Artikelnummer','Artikel','Menge','Preis']; foreach($gescannteArtikel as $a){ $row['nummer'] = $a['number']; $row['name'] = $a['name']; $row['menge'] = $a['amount']; $row['preis'] = $a['price']; if(!empty($row)){ $table->AddRow($row); } } $table->DisplayNew('GESCANNTEARTIKEL','Preis','noAction'); $this->app->Tpl->Set('POSITIONENSPEICHERN',''); } $this->app->Tpl->Parse('TAB1',"bestellung_ean.tpl"); } $this->app->Tpl->Parse('PAGE',"tabview.tpl"); } }