erp->ModulVorhanden('batches'); $projectCol = 'p.abkuerzung'; $abJoin = ''; if($useProjectAb) { $projectCol = 'IFNULL(pab.abkuerzung ,p.abkuerzung)'; $abJoin = ' LEFT JOIN auftrag AS ab ON l.auftragid = ab.id LEFT JOIN projekt AS pab ON ab.projekt = pab.id '; } switch($name) { case 'lieferscheineinbearbeitung': $allowed['lieferschein'] = array('create', 'list'); // headings $heading = array('', 'Lieferschein', 'Vom', 'Kd-Nr./Lf-Nr.', 'Kunde/Lieferant', 'Land', 'Projekt', 'Versand', 'Art', 'Status', 'Menü'); $width = array('1%', '10%', '10%', '10%', '35%', '5%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'l.belegnr', 'l.datum', 'if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer)', 'l.name', 'l.land', $projectCol, 'l.versandart', 'l.lieferscheinart', 'l.status', 'id'); $searchsql = array('l.id', 'DATE_FORMAT(l.datum,\'%d.%m.%Y\')', 'l.belegnr', 'if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer)', 'l.name', 'l.land', $projectCol, 'l.status', 'l.plz', 'l.id', 'adr.freifeld1', 'l.ihrebestellnummer','l.internebezeichnung','l.versandart'); $defaultorder = 11; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $menu = "
Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . // " app->Conf->WFconf['defaulttheme']}/images/stamp.png\" border=\"0\">". " Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">". " "."
"; $menucol = 10; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id,'Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, 'ENTWURF' as belegnr, DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer) as kundennummer, CONCAT(" . $app->erp->MarkerUseredit("l.name", "l.useredittimestamp") . ", if(l.internebezeichnung!='',CONCAT('
',l.internebezeichnung,''),'')) as kunde, l.land as land, $projectCol as projekt, l.versandart as versandart, l.lieferscheinart as art, UPPER(l.status) as status, l.id FROM lieferschein AS l LEFT JOIN projekt AS p ON p.id=l.projekt LEFT JOIN adresse AS lfr ON l.lieferant=lfr.id LEFT JOIN adresse AS adr ON l.adresse=adr.id ".$abJoin; $where = " ( l.status='angelegt') " . $app->erp->ProjektRechte('p.id', true, 'l.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(l.id) FROM lieferschein l WHERE ( l.status='angelegt')"; $moreinfo = true; break; case 'lieferscheineoffene': $allowed['lieferschein'] = array('list'); // headings $heading = array('', 'Lieferschein', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Versand', 'Art', 'Status', 'Menü'); $width = array('1%', '10%', '10%', '10%', '35%', '5%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'l.belegnr', 'l.datum', 'if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer)', 'l.name', 'l.land',$projectCol, 'l.versandart', 'l.lieferscheinart', 'l.status', 'id'); $searchsql = array('l.id', 'DATE_FORMAT(l.datum,\'%d.%m.%Y\')', 'l.belegnr', 'if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer)', 'l.name', 'l.land', $projectCol, 'l.status', 'l.plz', 'l.id', 'adr.freifeld1', 'l.ihrebestellnummer','l.internebezeichnung','l.versandart'); $defaultorder = 11; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $menu = "
Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . // " app->Conf->WFconf['defaulttheme']}/images/stamp.png\" border=\"0\">". " Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 10; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id,'Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, l.belegnr, DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer) as kundennummer, CONCAT(" . $app->erp->MarkerUseredit("l.name", "l.useredittimestamp") . ", if(l.internebezeichnung!='',CONCAT('
',l.internebezeichnung,''),'')) as kunde, l.land as land, $projectCol as projekt, l.versandart as versandart, l.lieferscheinart as art, UPPER(l.status) as status, l.id FROM lieferschein AS l LEFT JOIN projekt AS p ON p.id=l.projekt LEFT JOIN adresse AS lfr ON l.lieferant=lfr.id LEFT JOIN adresse AS adr ON l.adresse=adr.id ".$abJoin; $where = " l.id!='' AND l.status='freigegeben' " . $app->erp->ProjektRechte('p.id', true, 'l.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(l.id) FROM lieferschein l WHERE l.status='freigegeben'"; $moreinfo = true; break; case "lieferschein_seriennummern_assistent": $id = $app->Secure->GetGET('id'); $heading = array('Artikel-Nr.','Artikel','Lagerplatz','Seriennummer','Menü'); $width = array('10%','10%','10%','10%', '1%'); $findcols = array('art.nummer','art.name_de','t2.seriennummer','lag.kurzbezeichnung','t2.id'); $searchsql = array('art.nummer','art.name_de','t2.seriennummer','lag.kurzbezeichnung' ); $sql = "SELECT SQL_CALC_FOUND_ROWS t2.id, art.nummer, art.name_de, lag.kurzbezeichnung, t2.seriennummer ,CONCAT('this,',t2.menge) FROM ( SELECT ls.id, t.artikel, t.menge, count(s.id) as co, ls.seriennummer, ls.lager_platz FROM lager_seriennummern AS ls INNER JOIN ( SELECT lp.artikel, sum(menge) as menge FROM lieferschein_position AS lp WHERE lp.lieferschein = '$id' GROUP BY lp.artikel ) AS t ON ls.artikel = t.artikel LEFT JOIN seriennummern s ON s.artikel = t.artikel AND s.lieferschein = '$id' AND s.seriennummer <> '' GROUP BY ls.id, t.artikel ) AS t2 INNER JOIN artikel AS art ON t2.artikel = art.id INNER JOIN lager_platz AS lag ON t2.lager_platz = lag.id "; $menu = "Conf->WFconf['defaulttheme']}/images/forward.svg border=\"0\">"; $where = "t2.menge > t2.co "; $count = "SELECT count(t2.id) FROM (SELECT ls.id, t.artikel, t.menge, count(s.id) as co, ls.seriennummer, ls.lager_platz FROM lager_seriennummern ls INNER JOIN (SELECT lp.artikel, sum(menge) as menge FROM lieferschein_position lp WHERE lp.lieferschein = '$id') t ON ls.artikel = lp.artikel LEFT JOIN seriennummern s ON s.artikel = t.artikel AND s.lieferschein = '$id' AND s.seriennummer <> '' GROUP BY ls.id, t.artikel) t2 INNER JOIN artikel art ON t2.artikel = art.id INNER JOIN lager_platz lag ON t2.lager_platz = lag.id WHERE $where"; break; } $erg = []; foreach($erlaubtevars as $k => $v) { if(isset($$v)){ $erg[$v] = $$v; } } return $erg; } /** @var Application $app */ function __construct($app, $intern = false) { $this->app=$app; if($intern)return; $this->app->ActionHandlerInit($this); $this->app->ActionHandler("list","LieferscheinList"); $this->app->ActionHandler("create","LieferscheinCreate"); $this->app->ActionHandler("paketmarke","LieferscheinPaketmarke"); $this->app->ActionHandler("positionen","LieferscheinPositionen"); $this->app->ActionHandler("uplieferscheinposition","UpLieferscheinPosition"); $this->app->ActionHandler("dellieferscheinposition","DelLieferscheinPosition"); $this->app->ActionHandler("copylieferscheinposition","CopyLieferscheinPosition"); $this->app->ActionHandler("downlieferscheinposition","DownLieferscheinPosition"); $this->app->ActionHandler("positioneneditpopup","LieferscheinPositionenEditPopup"); $this->app->ActionHandler("edit","LieferscheinEdit"); $this->app->ActionHandler("copy","LieferscheinCopy"); $this->app->ActionHandler("delete","LieferscheinDelete"); $this->app->ActionHandler("freigabe","LieferscheinFreigabe"); $this->app->ActionHandler("abschicken","LieferscheinAbschicken"); $this->app->ActionHandler("abschliessen","LieferscheinAbschliessen"); $this->app->ActionHandler("auslagern","LieferscheinAuslagern"); $this->app->ActionHandler("umlagern","LieferscheinUmlagern"); $this->app->ActionHandler("pdf","LieferscheinPDF"); $this->app->ActionHandler("inlinepdf","LieferscheinInlinePDF"); $this->app->ActionHandler("protokoll","LieferscheinProtokoll"); $this->app->ActionHandler("minidetail","LieferscheinMiniDetail"); $this->app->ActionHandler("minidetailkommissionierung","LieferscheinMiniDetailkommissionierung"); $this->app->ActionHandler("editable","LieferscheinEditable"); $this->app->ActionHandler("livetabelle","LieferscheinLiveTabelle"); $this->app->ActionHandler("schreibschutz","LieferscheinSchreibschutz"); $this->app->ActionHandler("positionenetiketten","LieferscheinPositionenEtiketten"); $this->app->ActionHandler("rechnung","LieferscheinRechnung"); $this->app->ActionHandler("proformarechnung","LieferscheinProformarechnung"); $this->app->ActionHandler("dateien","LieferscheinDateien"); $this->app->ActionHandler("pdffromarchive","LieferscheinPDFfromArchiv"); $this->app->ActionHandler("archivierepdf","LieferscheinArchivierePDF"); $this->app->DefaultActionHandler("list"); $id = $this->app->Secure->GetGET("id"); $nummer = $this->app->Secure->GetPOST("adresse"); if($nummer==''){ if($id > 0){ $adresse = $this->app->DB->Select("SELECT a.name FROM lieferschein b INNER JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1"); }else{ $adresse = 0; } } else{ $adresse = $nummer; } if($id > 0){ $nummer = $this->app->DB->Select("SELECT b.belegnr FROM lieferschein b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1"); }else{ $nummer = ''; } if($nummer=="" || $nummer==0) $nummer="ohne Nummer"; $this->app->Tpl->Set('UEBERSCHRIFT',"Lieferschein: ".$adresse." (".$nummer.")"); $this->app->Tpl->Set('FARBE',"[FARBE3]"); $this->app->erp->Headlines('Lieferschein'); $this->app->ActionHandlerListen($app); } public function Install(){ $this->app->erp->RegisterHook('supersearch_detail', 'lieferschein', 'LieferscheinSupersearchDetail'); } /** * @param \Xentral\Widgets\SuperSearch\Query\DetailQuery $detailQuery * @param \Xentral\Widgets\SuperSearch\Result\ResultDetail $detailResult * * @return void */ public function LieferscheinSupersearchDetail($detailQuery, $detailResult) { if($detailQuery->getGroupKey() === 'deliverynote'){ $this->LieferscheinSupersearchDetailDeliveryNote($detailQuery, $detailResult); } if ($detailQuery->getGroupKey() === 'trackingnumber') { $this->LieferscheinSupersearchDetailTrackingNumber($detailQuery, $detailResult); } } /** * @param \Xentral\Widgets\SuperSearch\Query\DetailQuery $detailQuery * @param \Xentral\Widgets\SuperSearch\Result\ResultDetail $detailResult * * @return void */ public function LieferscheinSupersearchDetailDeliveryNote($detailQuery, $detailResult) { if ($detailQuery->getGroupKey() !== 'deliverynote') { return; } $lieferscheinId = $detailQuery->getItemIdentifier(); $sql = sprintf( "SELECT l.id, l.belegnr, l.datum FROM `lieferschein` AS `l` WHERE l.id = '%s' LIMIT 1", $this->app->DB->real_escape_string($lieferscheinId) ); $lieferschein = $this->app->DB->SelectRow($sql); if (empty($lieferschein)) { return; } $datum = date('d.m.Y', strtotime($lieferschein['datum'])); $detailResult->setTitle(sprintf('Lieferschein %s vom %s', $lieferschein['belegnr'], $datum)); $detailResult->addButton('Lieferschein Details', sprintf('index.php?module=lieferschein&action=edit&id=%s', $lieferschein['id'])); $detailResult->setMiniDetailUrl(sprintf('index.php?module=lieferschein&action=minidetail&id=%s', $lieferschein['id'])); } /** * @param \Xentral\Widgets\SuperSearch\Query\DetailQuery $detailQuery * @param \Xentral\Widgets\SuperSearch\Result\ResultDetail $detailResult * * @return void */ public function LieferscheinSupersearchDetailTrackingNumber($detailQuery, $detailResult) { if ($detailQuery->getGroupKey() !== 'trackingnumber') { return; } $versandId = $detailQuery->getItemIdentifier(); $sql = sprintf( "SELECT v.lieferschein FROM `versand` AS `v` WHERE v.id = '%s' LIMIT 1", $this->app->DB->real_escape_string($versandId) ); $lieferscheinId = $this->app->DB->Select($sql); $sql = sprintf( "SELECT l.id, l.belegnr, l.datum FROM `lieferschein` AS `l` WHERE l.id = '%s' LIMIT 1", $this->app->DB->real_escape_string($lieferscheinId) ); $lieferschein = $this->app->DB->SelectRow($sql); if (empty($lieferschein)) { return; } $datum = date('d.m.Y', strtotime($lieferschein['datum'])); $detailResult->setTitle(sprintf('Lieferschein %s vom %s', $lieferschein['belegnr'], $datum)); $detailResult->addButton('Lieferschein Details', sprintf('index.php?module=lieferschein&action=edit&id=%s', $lieferschein['id'])); $detailResult->setMiniDetailUrl(sprintf('index.php?module=lieferschein&action=minidetail&id=%s', $lieferschein['id'])); } function LieferscheinMiniDetailkommissionierung() { $id = (int)$this->app->Secure->GetGET('id'); $table = new EasyTable($this->app); $table->Query("SELECT date_format(datum,'%d.%m.%Y') as Datum,belegnr as Lieferschein FROM lieferschein WHERE kommissionierung = '$id' ORDER BY id",0,""); echo $table->DisplayNew('return', 'Lieferschein', 'noAction'); exit; } /** * @param int $deliveryNoteId */ public function archivePdf($deliveryNoteId) { if($deliveryNoteId <= 0) { return; } $projectId = $this->app->DB->Select( sprintf( 'SELECT projekt FROM lieferschein WHERE id = %d LIMIT 1', $deliveryNoteId ) ); if(class_exists('LieferscheinPDFCustom')) { $Brief = new LieferscheinPDFCustom($this->app, $projectId); } else{ $Brief = new LieferscheinPDF($this->app, $projectId); } $Brief->GetLieferschein($deliveryNoteId); $tmpfile = $Brief->displayTMP(); $Brief->ArchiviereDocument(1); unlink($tmpfile); $this->app->DB->Update( sprintf( 'UPDATE lieferschein SET schreibschutz=1 WHERE id = %d', $deliveryNoteId ) ); } function LieferscheinArchivierePDF() { $id = (int)$this->app->Secure->GetGET('id'); $this->archivePdf($id); header('Location: index.php?module=lieferschein&action=edit&id='.$id); exit; } function LieferscheinAbschliessen() { $id = $this->app->Secure->GetGET("id"); if($id > 0) { $this->app->DB->Update("UPDATE lieferschein SET status='abgeschlossen' WHERE id='$id' LIMIT 1"); $this->app->erp->LieferscheinProtokoll($id,"Lieferschein abgeschlossen"); $auftragid = $this->app->DB->Select("SELECT auftragid FROM lieferschein WHERE id='$id' LIMIT 1"); if($auftragid && $this->app->erp->ModulVorhanden('produktion') && method_exists($this->app->erp, 'ProduktionEinzelnBerechnen')) { $produktionen = $this->app->DB->SelectArr("SELECT id FROM produktion WHERE auftragid = '$auftragid'"); if($produktionen) { foreach($produktionen as $v)$this->app->erp->ProduktionEinzelnBerechnen($v['id']); } } } $msg = $this->app->erp->base64_url_encode("
Der Lieferschein wurde als abgeschlossen markiert!
"); header("Location: index.php?module=lieferschein&action=list&msg=$msg"); exit; } function LieferscheinAuslagern() { $id = (int)$this->app->Secure->GetGET("id"); if($id > 0) { if($this->LieferscheinCheck($id)) { // wenn alles lagernd ist und nicht ausgelagert ist $standardlager = $this->app->DB->Select("SELECT standardlager FROM lieferschein WHERE id = '$id' LIMIT 1"); if($standardlager && $this->app->DB->Select("SELECT count(id) FROM lager") <= 1)$standardlager = 0; $this->app->erp->LieferscheinAuslagern($id, true, $standardlager, 'lieferschein', 0, true); $this->app->erp->RunHook('lieferschein_auslagern', 1, $id); $msg = $this->app->erp->base64_url_encode("
Der Lieferschein wurde ausgelagert!
"); } else { if($this->LieferscheinCheck($id, true)) { $article = $this->LieferscheinCheck($id, 'article'); $typ = ''; if(!empty($article)) { $mhd = $article['mindesthaltbarkeitsdatum'] > 0; $charge = $article['chargenverwaltung'] > 0; $sn = $article['seriennummern'] != '' && $article['seriennummern'] !== 'keine'; if($mhd && $charge) { $typ = 'MHD/Chargen'; } elseif($mhd) { $typ = 'MHDs'; } elseif($charge) { $typ = 'Chargen'; } elseif($sn) { $typ = 'Seriennummern'; } } if(!empty($typ)) { $msg = $this->app->erp->base64_url_encode( "
Der Lieferschein kann nicht ausgelagert werden da zu wenig ".$typ." im Artikel ".$article['nummer']." vorhanden sind!
" ); } else { $msg = $this->app->erp->base64_url_encode( "
Der Lieferschein kann nicht ausgelagert werden da zu wenig MHD/Chargen/Seriennummern in einem Artikel vorhanden sind!
" ); } } else{ // wenn nur teilmenge ausgelagert werden konnte $msg = $this->app->erp->base64_url_encode("
Der Lieferschein kann nicht ausgelagert werden da nicht alle Artikel vorhanden sind!
"); } } header("Location: index.php?module=lieferschein&action=edit&id=$id&msg=$msg"); } exit; } function LieferscheinUmlagern() { $id = (int)$this->app->Secure->GetGET("id"); $sql = "SELECT belegnr, name, status, umgelagert, standardlager FROM lieferschein WHERE id='$id'"; $lieferschein = $this->app->DB->SelectArr($sql)[0]; $belegnr = $lieferschein['belegnr']; $name = $lieferschein['name']; $status = $lieferschein['status']; $umgelagert = $lieferschein['umgelagert']; $quelllager = $this->app->Secure->GetPOST('quelllager'); $ziellager = $this->app->Secure->GetPOST('ziellager'); $quellager_id = $this->app->erp->ReplaceLagerPlatz(true, $quelllager, true); $ziellager_id = $this->app->erp->ReplaceLagerPlatz(true, $ziellager, true); if (empty($quellager_id)) { $quellager_id = $lieferschein['standardlager']; } if ($status != "versendet" && $status != "freigegeben") { exit(); } $submit = $this->app->Secure->GetPOST('submit'); $erneut = $this->app->Secure->GetPOST('erneut'); if ($umgelagert && !$erneut) { $this->app->Tpl->AddMessage('warning',"Lieferschein wurde bereits umgelagert."); } else { $this->app->Tpl->Set('ERNEUT_UMLAGERN_HIDDEN','hidden'); $submit = $this->app->Secure->GetPOST('submit'); if ($submit == 'umlagern') { if (empty($quellager_id) || empty($ziellager_id)) { $this->app->Tpl->AddMessage('error',"Bitte Quell- und Ziellager angeben."); } else { $sql = "SELECT artikel, name_de, a.nummer AS artikelnummer, SUM(menge) AS menge FROM lieferschein_position lp INNER JOIN artikel a ON a.id = lp.artikel WHERE lp.lieferschein = $id GROUP BY lp.artikel"; $positionen = $this->app->DB->SelectArr($sql); $menge_ok = true; $fehlt = array(); foreach ($positionen as $position) { $sql = "SELECT SUM(menge) as menge FROM lager_platz_inhalt WHERE lager_platz=$quellager_id AND artikel = ".$position['artikel']; $menge_lager = $this->app->DB->SelectArr($sql)[0]['menge']; if ($menge_lager < $position['menge']) { $menge_ok = false; $fehlt[] = array('Nummer' => $position['artikelnummer'],'Artikel' => $position['name_de'],'Lieferschein Menge' => (int) $position['menge'],'Lager Menge' => empty($menge_lager)?'-':(int) $menge_lager); } } if ($menge_ok) { foreach ($positionen as $position) { $artikel = $position['artikel']; $menge = $position['menge']; $projekt = 0; $grund = "Umlagern Lieferschein ".$belegnr; $importer = ""; $paketannahme = ""; $doctype = "lieferschein"; $doctypeId = $id; $this->app->erp->LagerAuslagernRegal($artikel,$quellager_id,$menge,$projekt,$grund,$importer,$doctype,$doctypeid); $this->app->erp->LagerEinlagern($artikel,$menge,$ziellager_id,$projekt,$grund,$importer,$paketannahme,$doctype,$doctypeid); } $sql = "UPDATE lieferschein SET umgelagert = 1 WHERE id = ".$id; $this->app->DB->Update($sql); $this->app->erp->LieferscheinProtokoll($id,"Lieferschein umgelagert von ".$quelllager." nach ".$ziellager); $this->app->Tpl->AddMessage('success','Erfolgreich umgelagert.'); } else { $this->app->Tpl->AddMessage('error',"Mengen im Quelllager nicht ausreichend."); $tmp = new EasyTable($this->app); $tmp->headings = array('Nummer','Artikel','Lieferschein Menge','Lager Menge',''); $tmp->datasets = $fehlt; $tmp->DisplayNew('MESSAGETABLE',null,"noAction"); } // Menge ok } // Lager ok } // umlagern } // $umgelagert $this->LieferscheinMenu(); $this->app->YUI->AutoComplete("quelllager", "lagerplatz"); $this->app->YUI->AutoComplete("ziellager", "lagerplatz"); $this->app->Tpl->Set('KURZUEBERSCHRIFT2',"Lieferschein $belegnr umlagern"); $this->app->Tpl->Set('TABTEXT',"Umlagern"); $this->app->Tpl->Set('QUELLLAGER',$this->app->erp->ReplaceLagerPlatz(false, $quellager_id, false)); $this->app->Tpl->Set('ZIELLAGER',$this->app->erp->ReplaceLagerPlatz(false, $ziellager_id, false)); $this->app->Tpl->Set('ERNEUT_CHECKED',$erneut?'checked':''); $this->app->Tpl->Parse('PAGE',"lieferschein_umlagern.tpl"); } function LieferscheinPaketmarke() { $id = (int)$this->app->Secure->GetGET("id"); $this->LieferscheinMenu(); $this->app->Tpl->Set('TABTEXT',"Paketmarke"); $result = $this->app->DB->SelectRow( "SELECT v.id, v.modul FROM lieferschein l LEFT JOIN versandarten v ON (l.versandart=v.type AND v.projekt in (l.projekt, 0)) WHERE l.id=$id AND v.aktiv = 1 AND v.ausprojekt = 0 AND v.modul != '' ORDER BY v.projekt DESC LIMIT 1"); if (empty($result['modul']) || empty($result['id'])) { // $this->app->Tpl->addMessage('error', 'Bitte zuerst eine gültige Versandart auswählen', false, 'PAGE'); $this->app->Location->execute("index.php?module=versandpakete&action=add&lieferschein=".$id); return; } $versandmodul = $this->app->erp->LoadVersandModul($result['modul'], $result['id']); $versandmodul->Paketmarke('TAB1', 'lieferschein', $id); $this->app->Tpl->Parse('PAGE',"tabview.tpl"); } function LieferscheinEditable() { $this->app->YUI->AARLGEditable(); } function LieferscheinSchreibschutz() { $id = $this->app->Secure->GetGET("id"); $this->app->DB->Update("UPDATE lieferschein SET zuarchivieren='1' WHERE id='$id'"); $this->app->DB->Update("UPDATE lieferschein SET schreibschutz='0' WHERE id='$id'"); header("Location: index.php?module=lieferschein&action=edit&id=$id"); exit; } function LieferscheinLiveTabelle() { $id = $this->app->Secure->GetGET("id"); $status = $this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1"); $table = new EasyTable($this->app); if($status=="freigegeben") { $table->Query("SELECT SUBSTRING(ap.bezeichnung,1,20) 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),''), if(a.lagerartikel=1,'aus','kein Lagerartikel' ))) as L FROM lieferschein_position ap, artikel a WHERE ap.lieferschein='$id' AND a.id=ap.artikel",0,""); $artikel = $table->DisplayNew("return","A","noAction"); } else { $table->Query("SELECT SUBSTRING(ap.bezeichnung,1,20) as artikel, ap.nummer as Nummer, ap.menge as M FROM lieferschein_position ap, artikel a WHERE ap.lieferschein='$id' AND a.id=ap.artikel",0,""); $artikel = $table->DisplayNew("return","Menge","noAction"); } echo $artikel; exit; } function LieferscheinCopy() { $id = $this->app->Secure->GetGET("id"); $newid = $this->CopyLieferschein($id); header("Location: index.php?module=lieferschein&action=edit&id=$newid"); exit; } function Custom($typ) { return ''; } function LieferscheinIconMenu($id,$prefix="") { $status = $this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1"); $adresse = $this->app->DB->Select("SELECT adresse FROM lieferschein WHERE id='$id' LIMIT 1"); $lieferantenretoure = $this->app->DB->Select("SELECT lieferantenretoure FROM lieferschein WHERE id='$id' LIMIT 1"); if($adresse > 0 && ($status=="angelegt" || $status=="")) $freigabe = ""; if(($status=="versendet" || $status=="freigegeben") && $lieferantenretoure=="1") $abschliessen = ""; $checkifrgexists = $this->app->DB->Select("SELECT id FROM rechnung WHERE lieferschein='$id' LIMIT 1"); $optioncustom = $this->Custom('option'); $casecustom = $this->Custom('case'); $projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1"); $auslagern = ''; $erneut = ''; $casehook = ''; $optionhook = ''; $this->app->erp->RunHook('lieferscheiniconmenu_option', 5, $id, $casehook, $optionhook, $status, $prefix); $hookoption = ''; $hookcase = ''; $this->app->erp->RunHook('Lieferschein_Aktion_option',3, $id, $status, $hookoption); $this->app->erp->RunHook('Lieferschein_Aktion_case',3, $id, $status, $hookcase); $bestellmengelagerartikel = $this->app->DB->Select("SELECT sum(lp.menge) as bestellmenge from lieferschein_position lp INNER JOIN artikel a on a.id=lp.artikel where a.lagerartikel=1 AND lp.lieferschein = '$id'"); $liefermengelagerartikel = $this->app->DB->Select("SELECT sum(lp.geliefert) as liefermenge from lieferschein_position lp INNER JOIN artikel a on a.id=lp.artikel where a.lagerartikel=1 AND lp.lieferschein = '$id'"); $liefermengelagerartikel2 = $this->app->DB->Select("SELECT sum(olp.menge) as liefermenge from lieferschein_position lp INNER JOIN objekt_lager_platz olp ON olp.objekt='lieferschein' AND olp.parameter=lp.id INNER JOIN artikel a on a.id=lp.artikel where a.lagerartikel=1 AND lp.lieferschein = '$id'"); $lieferscheinpositionen = (int)$this->app->DB->Select("SELECT count(id) from lieferschein_position where lieferschein = '$id'"); $mengegeliefert = $this->app->DB->Select("SELECT ifnull(sum(geliefert),0) from lieferschein_position where lieferschein = '$id'"); $schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM lieferschein WHERE id='$id' LIMIT 1"); $mengegeliefert = $mengegeliefert + $this->app->DB->Select("SELECT ifnull(sum(olp.menge),0)+0 FROM objekt_lager_platz olp INNER JOIN lieferschein_position lp ON olp.objekt='lieferschein' AND olp.parameter=lp.id AND lp.lieferschein = '$id'"); if ($status == "versendet" || $status == "freigegeben") { if($mengegeliefert <= 0 && $liefermengelagerartikel > 0 && $schreibschutz=="1" && $status!='angelegt' && $status!='storniert') { $auslagern = ''; }else{ //12.07.19 LG lieferscheinlager als kommissionierverfahren zum if hinzugefuegt $projektkommissionierverfahren = $this->app->DB->Select("SELECT kommissionierverfahren FROM projekt where id = '$projekt'"); if($projekt && ($projektkommissionierverfahren == "" || $projektkommissionierverfahren == "rechnungsmail" || $projektkommissionierverfahren == "lieferschein" || $projektkommissionierverfahren == "lieferscheinscan" || $projektkommissionierverfahren == "lieferscheinlager" || $projektkommissionierverfahren == "lieferscheinlagerscan")) { if(($bestellmengelagerartikel != $liefermengelagerartikel && $bestellmengelagerartikel != $liefermengelagerartikel2) && $status!='angelegt' && $status!='storniert') { $auslagern = ''; } } } $optionumlagern = ""; $abschicken = ""; if($status!="angelegt" && $lieferantenretoure!="1") { $alsrechnung = ""; if($this->app->erp->RechteVorhanden('lieferschein', 'proformarechnung') && $this->app->erp->ModulVorhanden('proformarechnung')) { $alsrechnung .= ""; } } } if($this->app->erp->RechteVorhanden('belegeimport', 'belegcsvexport')) { $casebelegeimport = "case 'belegeimport': window.location.href='index.php?module=belegeimport&action=belegcsvexport&cmd=lieferschein&id=%value%'; break;"; $optionbelegeimport = ""; } $etiketten_positionen = $this->app->DB->Select("SELECT etiketten_positionen FROM projekt WHERE id='$projekt' LIMIT 1"); if($etiketten_positionen > 0) $etiketten = ""; $casestorno = "case 'storno': if(!confirm('Wirklich stornieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=lieferschein&action=delete&id=%value%'; break;"; if($this->app->DB->Select("SELECT olp.id FROM objekt_lager_platz olp INNER JOIN lieferschein_position pos ON olp.parameter = pos.id AND olp.objekt = 'lieferschein' WHERE pos.lieferschein = '$id' LIMIT 1"))$casestorno = "case 'storno': if(!confirm('Wirklich stornieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else if(!confirm('Artikel wieder einlagern?')) window.location.href='index.php?module=lieferschein&action=delete&id=%value%';else window.location.href='index.php?module=lieferschein&action=delete&cmd=einlagern&id=%value%'; break;"; if($checkifrgexists>0) $extendtext = "HINWEIS: Es existiert bereits eine Rechnung zu diesem Lieferschein! "; else $extendtext=""; $menu ="  Aktion:   "; //$tracking = $this->AuftragTrackingTabelle($id); $menu = str_replace('%value%',$id,$menu); return $menu; } function LieferscheinPDFfromArchiv() { $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 lieferschein where id = '".(int)$archiv."'"); } if(class_exists('LieferscheinPDFCustom')) { if($archiv)$Brief = new LieferscheinPDFCustom($this->app,$projekt); }else{ if($archiv)$Brief = new LieferscheinPDF($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 LieferscheinMiniDetail($parsetarget="",$menu=true) { $id = $this->app->Secure->GetGET("id"); if($id > 0){ $auftragArr = $this->app->DB->SelectArr("SELECT * FROM lieferschein WHERE id='$id' LIMIT 1"); } $kundennummer = ''; $projekt = 0; $kundenname = ''; $lieferantenretoure = ''; $lieferantenretoureinfo = ''; if(!empty($auftragArr)) { $kundennummer = $auftragArr[0]['kundennummer']; $projektid = $auftragArr[0]['projekt']; $projekt = ''; if($projektid){ $projekt = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='{$auftragArr[0]['projekt']}' LIMIT 1"); } $kundenname = ''; if($auftragArr[0]['adresse'] > 0){ $kundenname = $this->app->DB->Select("SELECT name FROM adresse WHERE id='{$auftragArr[0]['adresse']}' LIMIT 1"); } $lieferantenretoure = $auftragArr[0]['lieferantenretoure']; $lieferantenretoureinfo = $auftragArr[0]['lieferantenretoureinfo']; } $this->app->Tpl->Set('LIEFERANTENRETOUREINFO',$lieferantenretoureinfo); if($lieferantenretoure!='1') { $this->app->Tpl->Set('LIEFERANTENRETOUREINFOSTART','