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 = "
";
$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 = "";
$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("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");
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 LieferscheinPaketmarke()
{
$id = $this->app->Secure->GetGET("id");
$versandart = $this->app->DB->Select("SELECT versandart FROM lieferschein WHERE id='$id' LIMIT 1");
$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id = '$id' LIMIT 1");
$this->LieferscheinMenu();
$this->app->Tpl->Set('TABTEXT',"Paketmarke");
$versandart = strtolower($versandart);
$versandartenmodul = $this->app->DB->SelectArr("SELECT id, modul FROM versandarten WHERE aktiv = 1 AND ausprojekt = 0 AND modul != '' AND type = '".$this->app->DB->real_escape_string($versandart)."' AND (projekt = '$projekt' || projekt = 0) ORDER BY projekt DESC LIMIT 1");
if($versandartenmodul && is_file(dirname(__DIR__).'/lib/versandarten/'.$versandartenmodul[0]['modul'].'.php'))
{
$this->app->erp->Paketmarke('TAB1','lieferschein',"",$versandart);
}else{
if($versandart=="dpd")
$this->app->erp->PaketmarkeDPDEmbedded('TAB1',"lieferschein");
else if($versandart=="express_dpd")
$this->app->erp->PaketmarkeDPDEmbedded('TAB1',"lieferschein","express");
else if($versandart=="export_dpd")
$this->app->erp->PaketmarkeDPDEmbedded('TAB1',"lieferschein","export");
else if($versandart=="ups")
$this->app->erp->PaketmarkeUPSEmbedded('TAB1',"lieferschein");
else if($versandart=="fedex")
$this->app->erp->PaketmarkeFEDEXEmbedded('TAB1',"lieferschein");
else if($versandart=="go")
$this->app->erp->PaketmarkeGo('TAB1',"lieferschein");
else {
$this->app->erp->Paketmarke('TAB1','lieferschein',"","");
}
//$this->app->erp->PaketmarkeDHLEmbedded('TAB1',"lieferschein");
}
$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");
$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");
$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");
$lieferantenretoure = $this->app->DB->Select("SELECT lieferantenretoure FROM lieferschein WHERE id='$id' LIMIT 1");
if($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($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 = '';
}
}
}
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','