mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-27 07:00:29 +01:00
2720 lines
130 KiB
PHP
2720 lines
130 KiB
PHP
<?php
|
|
|
|
/*
|
|
* SPDX-FileCopyrightText: 2022 Andreas Palm
|
|
* SPDX-FileCopyrightText: 2019 Xentral (c) Xentral ERP Software GmbH, Fuggerstrasse 11, D-86150 Augsburg, Germany
|
|
*
|
|
* SPDX-License-Identifier: LicenseRef-EGPL-3.1
|
|
*/
|
|
|
|
/*
|
|
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*
|
|
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
|
*
|
|
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
|
*
|
|
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
|
* to obtain the text of the corresponding license version.
|
|
*
|
|
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*/
|
|
?>
|
|
<?php
|
|
use Xentral\Components\Pdf\Exception\PdfComponentExceptionInterface;
|
|
use Xentral\Components\Pdf\PdfMerger;
|
|
|
|
include '_gen/lieferschein.php';
|
|
|
|
class Lieferschein extends GenLieferschein
|
|
{
|
|
/**
|
|
* @param Application $app
|
|
* @param string $name
|
|
* @param array $erlaubtevars
|
|
*
|
|
* @return array
|
|
*/
|
|
static function TableSearch($app, $name, $erlaubtevars)
|
|
{
|
|
$useProjectAb = $app->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 = "<table cellpadding=0 cellspacing=0><tr><td nowrap><a href=\"index.php?module=lieferschein&action=edit&id=%value%\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>" .
|
|
" <a href=\"#\" onclick=DeleteDialogLieferschein(\"%value%\");><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" .
|
|
|
|
// " <a href=\"index.php?module=paketmarke&action=create&frame=false&sid=lieferschein&id=%value%\" class=\"popup\"><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/stamp.png\" border=\"0\"></a>".
|
|
" <a href=\"index.php?module=lieferschein&action=pdf&id=%value%\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\"></a>".
|
|
" <a href=\"#\" class=\"label-manager\" data-label-column-number=\"5\" data-label-reference-id=\"%value%\" data-label-reference-table=\"lieferscheineinbearbeitung\"><span class=\"label-manager-icon\"></span></a>"."</td></tr></table>";
|
|
$menucol = 10;
|
|
|
|
// SQL statement
|
|
$sql = "SELECT SQL_CALC_FOUND_ROWS l.id,'<img src=./themes/{$app->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('<br><i style=color:#999>',l.internebezeichnung,'</i>'),'')) 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 = "<table cellpadding=0 cellspacing=0><tr><td nowrap><a href=\"index.php?module=lieferschein&action=edit&id=%value%\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>" . " <a href=\"#\" onclick=DeleteDialogLieferschein(\"%value%\");><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" .
|
|
|
|
// " <a href=\"index.php?module=paketmarke&action=create&frame=false&sid=lieferschein&id=%value%\" class=\"popup\"><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/stamp.png\" border=\"0\"></a>".
|
|
" <a href=\"index.php?module=lieferschein&action=pdf&id=%value%\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\"></a></td></tr></table>";
|
|
$menucol = 10;
|
|
|
|
// SQL statement
|
|
$sql = "SELECT SQL_CALC_FOUND_ROWS l.id,'<img src=./themes/{$app->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('<br><i style=color:#999>',l.internebezeichnung,'</i>'),'')) 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 = "<a href=\"#\" onclick=\"uebernehme(%value%);\" ><img src=./themes/{$app->Conf->WFconf['defaulttheme']}/images/forward.svg border=\"0\"></a>";
|
|
|
|
$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 <small>vom %s</small>', $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 <small>vom %s</small>', $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("<div class=\"info\">Der Lieferschein wurde als abgeschlossen markiert!</div>");
|
|
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("<div class=\"info\">Der Lieferschein wurde ausgelagert!</div>");
|
|
} 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(
|
|
"<div class=\"error\">Der Lieferschein kann nicht ausgelagert werden da zu wenig ".$typ." im Artikel ".$article['nummer']." vorhanden sind!</div>"
|
|
);
|
|
}
|
|
else {
|
|
$msg = $this->app->erp->base64_url_encode(
|
|
"<div class=\"error\">Der Lieferschein kann nicht ausgelagert werden da zu wenig MHD/Chargen/Seriennummern in einem Artikel vorhanden sind!</div>"
|
|
);
|
|
}
|
|
}
|
|
else{
|
|
// wenn nur teilmenge ausgelagert werden konnte
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Der Lieferschein kann nicht ausgelagert werden da nicht alle Artikel vorhanden sind!</div>");
|
|
}
|
|
}
|
|
|
|
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.');
|
|
$erneut = null;
|
|
} 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('<font color=red><b>',(SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=ap.artikel),'</b></font>'),
|
|
if(a.lagerartikel=1,'<font color=red><b>aus</b></font>','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 = "<option value=\"freigabe\">Lieferschein freigeben</option>";
|
|
|
|
|
|
if(($status=="versendet" || $status=="freigegeben") && $lieferantenretoure=="1")
|
|
$abschliessen = "<option value=\"abschliessen\">Lieferschein abschliessen</option>";
|
|
|
|
$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 = '<option value="auslagern">Lieferschein auslagern</option>';
|
|
}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 = '<option value="auslagern">Lieferschein auslagern</option>';
|
|
}
|
|
}
|
|
}
|
|
|
|
$optionumlagern = "<option value=\"umlagern\">Lieferschein umlagern</option>";
|
|
$abschicken = "<option value=\"abschicken\">Lieferschein abschicken</option>";
|
|
|
|
if($status!="angelegt" && $lieferantenretoure!="1")
|
|
{
|
|
$alsrechnung = "<option value=\"rechnung\">als Rechnung weiterführen</option>";
|
|
if($this->app->erp->RechteVorhanden('lieferschein', 'proformarechnung') && $this->app->erp->ModulVorhanden('proformarechnung'))
|
|
{
|
|
$alsrechnung .= "<option value=\"proformarechnung\">als Proformarechnung weiterführen</option>";
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
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 = "<option value=\"belegeimport\">Export als CSV</option>";
|
|
}
|
|
|
|
$etiketten_positionen = $this->app->DB->Select("SELECT etiketten_positionen FROM projekt WHERE id='$projekt' LIMIT 1");
|
|
if($etiketten_positionen > 0)
|
|
$etiketten = "<option value=\"positionenetiketten\">Positionen als Etiketten</option>";
|
|
$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 ="
|
|
<script type=\"text/javascript\">
|
|
function onchangelieferschein(cmd)
|
|
{
|
|
switch(cmd)
|
|
{
|
|
$casestorno
|
|
case 'copy': if(!confirm('Wirklich kopieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=lieferschein&action=copy&id=%value%'; break;
|
|
case 'pdf': window.location.href='index.php?module=lieferschein&action=pdf&id=%value%'; document.getElementById('aktion$prefix').selectedIndex = 0; break;
|
|
case 'positionenetiketten': window.location.href='index.php?module=lieferschein&action=positionenetiketten&id=%value%'; document.getElementById('aktion$prefix').selectedIndex = 0; break;
|
|
case 'abschicken': ".$this->app->erp->DokumentAbschickenPopup()." break;
|
|
case 'freigabe': window.location.href='index.php?module=lieferschein&action=freigabe&id=%value%'; break;
|
|
case 'abschliessen': if(!confirm('Wirklich abschliessen?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=lieferschein&action=abschliessen&id=%value%'; break;
|
|
case 'auslagern': if(!confirm('Wirklich$erneut auslagern?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=lieferschein&action=auslagern&id=%value%'; break;
|
|
case 'rechnung': if(!confirm('".$extendtext."Wirklich als Rechnung weiterführen?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=lieferschein&action=rechnung&id=%value%'; break;
|
|
case 'proformarechnung': if(!confirm('".$extendtext."Wirklich als Proformarechnung weiterführen?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=lieferschein&action=proformarechnung&id=%value%'; break;
|
|
$casecustom
|
|
$casehook
|
|
$hookcase
|
|
$casebelegeimport
|
|
case 'umlagern': window.location.href='index.php?module=lieferschein&action=umlagern&id=%value%'; break;
|
|
}
|
|
|
|
}
|
|
</script>
|
|
|
|
Aktion: <select id=\"aktion$prefix\" onchange=\"onchangelieferschein(this.value)\">
|
|
<option>bitte wählen ...</option>
|
|
<option value=\"storno\">Lieferschein stornieren</option>
|
|
<option value=\"copy\">Lieferschein kopieren</option>
|
|
$freigabe
|
|
$abschicken
|
|
$abschliessen
|
|
$auslagern
|
|
$optionumlagern
|
|
$alsrechnung
|
|
$optionbelegeimport
|
|
<option value=\"pdf\">PDF öffnen</option>
|
|
$etiketten
|
|
$optioncustom
|
|
$optionhook
|
|
$hookoption
|
|
</select>
|
|
|
|
<a href=\"index.php?module=lieferschein&action=pdf&id=%value%\" title=\"PDF\"><img border=\"0\" src=\"./themes/new/images/pdf.svg\"></a>
|
|
<!-- <a href=\"index.php?module=lieferschein&action=edit&id=%value%\" title=\"Bearbeiten\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a>
|
|
<a onclick=\"if(!confirm('Wirklich stornieren?')) return false; else window.location.href='index.php?module=lieferschein&action=delete&id=%value%';\" title=\"Stornieren\">
|
|
<img src=\"./themes/new/images/delete.svg\" border=\"0\"></a>
|
|
<a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=lieferschein&action=copy&id=%value%';\" title=\"Kopieren\">
|
|
<img src=\"./themes/new/images/copy.svg\" border=\"0\"></a>-->";
|
|
//$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','<!--');
|
|
$this->app->Tpl->Set('LIEFERANTENRETOUREINFOENDE','<!--');
|
|
}
|
|
|
|
$this->app->Tpl->Set('LIEFERSCHEINID',$id);
|
|
|
|
$this->app->Tpl->Set('KUNDE',"<a href=\"index.php?module=adresse&action=edit&id=".$auftragArr[0]['adresse']."\" target=\"_blank\">".$kundennummer."</a> ".$kundenname);
|
|
if($this->app->erp->RechteVorhanden('projekt','dashboard')){
|
|
$this->app->Tpl->Set('PROJEKT', "<a href=\"index.php?module=projekt&action=dashboard&id=" . $auftragArr[0]['projekt'] . "\" target=\"_blank\">$projekt</a>");
|
|
}
|
|
else{
|
|
$this->app->Tpl->Set('PROJEKT', $projekt);
|
|
}
|
|
$this->app->Tpl->Set('ZAHLWEISE',$auftragArr[0]['zahlungsweise']);
|
|
$this->app->Tpl->Set('STATUS',$auftragArr[0]['status']);
|
|
|
|
|
|
if($auftragArr[0]['auftragid'] > 0){
|
|
$orderRow = $this->app->DB->SelectRow(
|
|
"SELECT belegnr, projekt FROM auftrag WHERE id='".$auftragArr[0]['auftragid']."' LIMIT 1"
|
|
);
|
|
if($this->app->erp->ModulVorhanden('batches')) {
|
|
$abProjekt = $this->app->DB->Select(
|
|
sprintf(
|
|
'SELECT abkuerzung FROM projekt WHERE id = %d',
|
|
$orderRow['projekt']
|
|
)
|
|
);
|
|
if(!empty($abProjekt)){
|
|
$this->app->Tpl->Set('PROJEKT', $abProjekt);
|
|
}
|
|
}
|
|
$belegnr_auftrag = $orderRow['belegnr'];
|
|
|
|
$this->app->Tpl->Set('AUFTRAG',"<a href=\"index.php?module=auftrag&action=edit&id=".$auftragArr[0]['auftragid']."\" target=\"_blank\">$belegnr_auftrag</a>
|
|
<a href=\"index.php?module=auftrag&action=pdf&id=".$auftragArr[0]['auftragid']."\" target=\"blank\"><img src=\"./themes/new/images/pdf.svg\" title=\"Auftrag PDF\" border=\"0\"></a>
|
|
<a href=\"index.php?module=auftrag&action=edit&id=".$auftragArr[0]['auftragid']."\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Auftrag bearbeiten\" border=\"0\"></a>
|
|
");
|
|
}else{
|
|
$this->app->Tpl->Set('AUFTRAG','-');
|
|
}
|
|
|
|
|
|
if($auftragArr[0]['auftragid'] > 0){
|
|
$rechnung = $this->app->DB->SelectArr(
|
|
($auftragArr[0]['auftragid']?
|
|
"SELECT
|
|
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
|
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
FROM rechnung r WHERE r.auftragid='".$auftragArr[0]['auftragid']."' AND r.auftragid <> '0'
|
|
union
|
|
SELECT
|
|
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
|
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung INNER JOIN auftrag_position p ON s.auftrag_position_id = p.id WHERE p.auftrag='".$auftragArr[0]['auftragid']."'
|
|
union ":"")."
|
|
SELECT
|
|
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
|
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
|
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
|
WHERE lp.lieferschein='$id'
|
|
"
|
|
);
|
|
|
|
}
|
|
else{
|
|
if($auftragArr[0]['rechnungid'] > 0){
|
|
|
|
$rechnung = $this->app->DB->SelectArr("SELECT
|
|
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
|
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
FROM rechnung r WHERE r.id='".$auftragArr[0]['rechnungid']."' AND r.id <> '0'
|
|
union
|
|
|
|
SELECT
|
|
CONCAT('<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\">',if(r.belegnr='0' OR r.belegnr='','ENTWURF',r.belegnr),' <a href=\"index.php?module=rechnung&action=pdf&id=',r.id,'\"><img src=\"./themes/new/images/pdf.svg\" title=\"Rechnung PDF\" border=\"0\"></a>
|
|
<a href=\"index.php?module=rechnung&action=edit&id=',r.id,'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>') as rechnung
|
|
FROM rechnung r INNER JOIN sammelrechnung_position s ON r.id = s.rechnung
|
|
INNER JOIN lieferschein_position lp ON lp.id = s.lieferschein_position_id
|
|
WHERE lp.lieferschein='$id'
|
|
");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$crechnung = !empty($rechnung)?count($rechnung):0;
|
|
if($crechnung>0)
|
|
{
|
|
for($li=0;$li<$crechnung;$li++)
|
|
{
|
|
$this->app->Tpl->Add('RECHNUNG',$rechnung[$li]['rechnung']);
|
|
if($li<(!empty($rechnung)?count($rechnung):0))
|
|
$this->app->Tpl->Add('RECHNUNG',"<br>");
|
|
}
|
|
}
|
|
else
|
|
$this->app->Tpl->Set('RECHNUNG',"-");
|
|
if($auftragArr[0]['ust_befreit']==0)
|
|
$this->app->Tpl->Set('STEUER',"Inland");
|
|
else if($auftragArr[0]['ust_befreit']==1)
|
|
$this->app->Tpl->Set('STEUER',"EU-Lieferung");
|
|
else
|
|
$this->app->Tpl->Set('STEUER',"Export");
|
|
|
|
|
|
if($menu)
|
|
{
|
|
$menu = $this->LieferscheinIconMenu($id);
|
|
$this->app->Tpl->Set('MENU',$menu);
|
|
}
|
|
// ARTIKEL
|
|
|
|
$lieferscheinarr = $this->app->DB->SelectRow("SELECT * FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
|
|
$status = $lieferscheinarr['status'];//$this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$projekt = $lieferscheinarr['projekt'];
|
|
$projektlager = $this->app->DB->Select("SELECT projektlager FROM projekt WHERE id = $projekt");
|
|
$auftrag = $lieferscheinarr['auftragid'];
|
|
$standardlager = $lieferscheinarr['standardlager'];//$this->app->DB->Select("SELECT standardlager FROM auftrag WHERE id = $auftrag LIMIT 1");
|
|
$positionIdsToArticle = $id <= 0?[]:$this->app->DB->SelectPairs(
|
|
sprintf(
|
|
'SELECT id, artikel FROM lieferschein_position WHERE lieferschein = %d',
|
|
$id
|
|
)
|
|
);
|
|
if(empty($positionIdsToArticle)) {
|
|
$positionIdsToArticle = [ 0 => 0];
|
|
}
|
|
//$artikelarr = array_m $this->app->DB->SelectArr("SELECT DISTINCT artikel FROM lieferschein_position WHERE lieferschein = $id");
|
|
$artikelids = array_unique(array_values($positionIdsToArticle));
|
|
$positionIds = array_keys($positionIdsToArticle);
|
|
|
|
$artikelidsImplode = implode(',', $artikelids);
|
|
$positionIdsImplode = implode(',', $positionIds);
|
|
|
|
$table = new EasyTable($this->app);
|
|
|
|
$sql = "SELECT if(CHAR_LENGTH(ap.beschreibung) > 0,CONCAT(ap.bezeichnung,' *'),ap.bezeichnung) as artikel,
|
|
CONCAT('<a href=\"index.php?module=artikel&action=edit&id=',ap.artikel,'\" target=\"_blank\">',
|
|
ap.nummer,'</a>'
|
|
) as Nummer,
|
|
a.gewicht as gewicht,
|
|
TRIM(ap.menge)+0 as Menge,
|
|
if(
|
|
a.porto,
|
|
'-',
|
|
if(
|
|
IFNULL(lpi2.menge,0) >= ap.menge AND a.lagerartikel=1,
|
|
IF(
|
|
ROUND(ap2.offen,7) > 0 AND
|
|
ROUND(IFNULL(lpi2.menge,0) - IFNULL(r.menge,0) + IFNULL(r2.menge,0),7) < ROUND(ap2.offen,7)
|
|
AND ROUND(IFNULL(r2.menge,0),7) < ROUND(ap2.offen,7),
|
|
CONCAT('<b style=\"color:red;\">',".$this->app->erp->FormatMenge('IFNULL(lpi2.menge,0)').",'</b>'),
|
|
".$this->app->erp->FormatMenge('IFNULL(lpi2.menge,0)')."
|
|
),
|
|
if(
|
|
IFNULL(lpi2.menge,0)>0 AND a.lagerartikel=1,
|
|
CONCAT('<b style=\"color:red;\">',".$this->app->erp->FormatMenge('lpi2.menge').",'</b>'),
|
|
if(
|
|
a.lagerartikel=1,
|
|
'<b style=\"color:red;\">aus</b>',
|
|
'kein Lagerartikel'
|
|
)
|
|
)
|
|
)
|
|
) as Lager,
|
|
|
|
CONCAT(".$this->app->erp->FormatMenge('IFNULL(r2.menge,0)').",' von ',"
|
|
.$this->app->erp->FormatMenge('IFNULL(r.menge,0)')
|
|
.",' (Gesamtres.)')as `Res. für Kunde`
|
|
|
|
FROM lieferschein_position AS ap
|
|
INNER JOIN artikel AS a ON ap.artikel = a.id
|
|
INNER JOIN (
|
|
SELECT sum(menge-geliefert) as offen, artikel
|
|
FROM lieferschein_position
|
|
WHERE id IN (".$positionIdsImplode.")
|
|
GROUP BY artikel
|
|
) as ap2 ON a.id = ap2.artikel
|
|
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
|
|
INNER JOIN lager AS `lag` ON lp.lager = `lag`.id
|
|
WHERE lpi.artikel IN (".$artikelidsImplode.")
|
|
".($standardlager?" AND `lag`.id = $standardlager ":($projektlager?" AND `lag`.projekt = $projekt ":''))."
|
|
GROUP BY lpi.artikel
|
|
) AS lpi2 ON a.id = lpi2.artikel
|
|
LEFT JOIN (
|
|
SELECT SUM(menge) as menge,artikel
|
|
FROM lager_reserviert
|
|
WHERE artikel IN (".$artikelidsImplode.")
|
|
".($projektlager || ($standardlager && false)?" AND projekt = $projekt ":'')."
|
|
GROUP BY artikel
|
|
) r ON a.id = r.artikel
|
|
LEFT JOIN (
|
|
SELECT SUM(menge) as menge,artikel
|
|
FROM lager_reserviert
|
|
WHERE ((objekt = 'lieferschein' AND parameter = $id) "
|
|
.($auftrag > 0?" OR (objekt = 'auftrag' AND parameter = $auftrag) ":'').")
|
|
AND artikel IN (".$artikelidsImplode.")
|
|
GROUP BY artikel
|
|
) r2 ON a.id = r2.artikel
|
|
WHERE ap.id IN (".$positionIdsImplode.") AND ap.lieferschein='$id'
|
|
ORDER BY ap.sort, ap.id";
|
|
|
|
$table->Query($sql,0,"");
|
|
$gewichtanzeigen = false;
|
|
if($table->datasets) {
|
|
foreach($table->datasets as $k => $row) {
|
|
if($row['gewicht'] > 0)$gewichtanzeigen = true;
|
|
}
|
|
}
|
|
if(!$gewichtanzeigen)
|
|
{
|
|
foreach($table->datasets as $k => $row)
|
|
{
|
|
unset($table->datasets[$k]['gewicht']);
|
|
}
|
|
$table->headings[2] = $table->headings[3];
|
|
$table->headings[3] = $table->headings[4];
|
|
$table->headings[4] = $table->headings[5];
|
|
unset($table->headings[5]);
|
|
}
|
|
|
|
$artikel = $table->DisplayNew("return","Res. für Kunde","noAction","false",0,0,false);
|
|
|
|
|
|
$this->app->Tpl->Set('ARTIKEL','<div id="artikeltabellelive'.$id.'">'.$artikel.'</div>');
|
|
|
|
if($auftragArr[0]['lieferantenretoure']=="1" && ($auftragArr[0]['status']=="versendet" || $auftragArr[0]['status']=="freigegeben"))
|
|
$this->app->Tpl->Add('ARTIKEL',"<br><center><input type=\"button\" value=\"Lieferschein abschliessen\" onclick=\"window.open('index.php?module=lieferschein&action=abschliessen&id=$id')\"></center>");
|
|
|
|
if($auftragArr[0]['belegnr']=="0" || $auftragArr[0]['belegnr']=="") $auftragArr[0]['belegnr'] = "ENTWURF";
|
|
$this->app->Tpl->Set('BELEGNR',$auftragArr[0]['belegnr']);
|
|
$this->app->Tpl->Set('LIEFERSCHEIN',$auftragArr[0]['id']);
|
|
|
|
$this->app->Tpl->Set('VERSANDART',$auftragArr[0]['versandart']);
|
|
|
|
/*
|
|
$tracking = $this->app->DB->SelectArr("SELECT
|
|
if(v.tracking_link IS NOT NULL AND v.tracking_link != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"', v.tracking_link, '\">', v.tracking, '</a>'),
|
|
if(versandunternehmen = 'dhlexpress' AND l.land = 'DE' AND v.tracking != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html?piececode=', v.tracking, '\" target=\"_blank\">', v.tracking, '</a>'),
|
|
if(versandunternehmen = 'dhlexpress' AND l.land != 'DE' AND v.tracking != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"https://www.dhl.com/en/hidden/component_library/express/local_express/dhl_de_tracking/de/sendungsverfolgung_dhlde.html?AWB=', v.tracking, '&brand=DHL\" target=\"_blank\">', v.tracking, '</a>'),
|
|
if( (versandunternehmen='dhl' OR versandunternehmen='intraship' OR versandunternehmen LIKE '%dhl%') AND v.tracking!='', CONCAT(UPPER(versandunternehmen),':<a href=\"http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=',v.tracking,'\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%dpd%',CONCAT(UPPER(versandunternehmen),':<a href=\"https://tracking.dpd.de/parcelstatus/?locale=de_DE&query=',v.tracking,'\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%ups%' AND v.tracking != '', CONCAT(UPPER(versandunternehmen),':<a href=\"https://www.ups.com/track?loc=de_DE&tracknum=',v.tracking,'\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%gls%' AND v.tracking != '', CONCAT(UPPER(versandunternehmen),':<a href=\"https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DE03/DE/5004.htm?txtRefNo=',v.tracking,'\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%postch%' AND v.tracking != '', CONCAT(UPPER(versandunternehmen),':<a href=\"https://service.post.ch/EasyTrack/submitParcelData.do?formattedParcelCodes=',v.tracking,'&from_directentry=True&directSearch=false&p_language=de&VTI-GROUP=1&lang=de&service=ttb\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(v.tracking!='',
|
|
CONCAT(UPPER(versandunternehmen),': ',v.tracking),'nicht vorhanden')
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
) as versand2,
|
|
if(versandunternehmen = 'dhlexpress' AND l.land = 'DE' AND vp.tracking != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"https://www.dhl.de/de/privatkunden/pakete-empfangen/verfolgen.html?piececode=', vp.tracking, '\" target=\"_blank\">', vp.tracking, '</a>'),
|
|
if(versandunternehmen = 'dhlexpress' AND l.land != 'DE' AND vp.tracking != '', CONCAT(UPPER(versandunternehmen), ':<a href=\"https://www.dhl.com/en/hidden/component_library/express/local_express/dhl_de_tracking/de/sendungsverfolgung_dhlde.html?AWB=', vp.tracking, '&brand=DHL\" target=\"_blank\">', vp.tracking, '</a>'),
|
|
if( (versandunternehmen='dhl' OR versandunternehmen='intraship') AND vp.tracking!='', CONCAT(UPPER(versandunternehmen),':<a href=\"http://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=',vp.tracking,'\" target=\"_blank\">',vp.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%dpd%',CONCAT(UPPER(versandunternehmen),':<a href=\"https://tracking.dpd.de/parcelstatus/?locale=de_DE&query=',vp.tracking,'\" target=\"_blank\">',vp.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%ups%' AND vp.tracking != '', CONCAT(UPPER(versandunternehmen),':<a href=\"https://www.ups.com/track?loc=de_DE&tracknum=',vp.tracking,'\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%gls%' AND vp.tracking != '', CONCAT(UPPER(versandunternehmen),':<a href=\"https://www.gls-group.eu/276-I-PORTAL-WEB/content/GLS/DE03/DE/5004.htm?txtRefNo=',vp.tracking,'\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(versandunternehmen LIKE '%postch%' AND v.tracking != '', CONCAT(UPPER(versandunternehmen),':<a href=\"https://service.post.ch/EasyTrack/submitParcelData.do?formattedParcelCodes=',v.tracking,'&from_directentry=True&directSearch=false&p_language=de&VTI-GROUP=1&lang=de&service=ttb\" target=\"_blank\">',v.tracking,'</a>'),
|
|
if(vp.tracking!='',
|
|
CONCAT(UPPER(versandunternehmen),': ',vp.tracking),'nicht vorhanden')
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
) as versand3,
|
|
v.tracking as tracking2, vp.tracking as tracking3
|
|
FROM versand AS v
|
|
LEFT JOIN versandpakete AS vp ON v.id = vp.versand
|
|
LEFT JOIN lieferschein AS l ON v.lieferschein=l.id WHERE l.id='$id'"
|
|
);
|
|
|
|
$ctracking = !empty($tracking)?count($tracking):0;
|
|
for($counti=0;$counti < $ctracking; $counti++)
|
|
if($tracking[$counti]['tracking2']!="")
|
|
{
|
|
if($counti == 0 || $tracking[$counti]['tracking2'] != $tracking[$counti-1]['tracking2'])
|
|
{
|
|
$tmp[]=$tracking[$counti]['versand2'];
|
|
}
|
|
if($tracking[$counti]['tracking3'] != '')
|
|
{
|
|
$tmp[]=$tracking[$counti]['versand3'];
|
|
}
|
|
}
|
|
|
|
if (!is_null($tmp)) {
|
|
$this->app->Tpl->Set('TRACKING',implode(', ',$tmp));
|
|
}
|
|
*/
|
|
|
|
$sql = "SELECT SQL_CALC_FOUND_ROWS
|
|
v.id,
|
|
v.tracking as tracking,
|
|
v.tracking_link
|
|
FROM
|
|
versandpakete v
|
|
LEFT JOIN
|
|
versandpaket_lieferschein_position vlp ON v.id = vlp.versandpaket
|
|
LEFT JOIN
|
|
lieferschein_position lp ON lp.id = vlp.lieferschein_position
|
|
LEFT JOIN
|
|
lieferschein l ON lp.lieferschein = l.id
|
|
WHERE l.id = ".$id." OR v.lieferschein_ohne_pos = ".$id."
|
|
GROUP BY
|
|
v.id
|
|
";
|
|
$tracking = $this->app->DB->SelectArr($sql);
|
|
$tracking_list = array();
|
|
foreach ($tracking as $single_tracking) {
|
|
$tracking_list[] = '<a href="index.php?module=versandpakete&action=edit&id='.$single_tracking['id'].'">Paket Nr.'.$single_tracking['id'].'</a>'.
|
|
' ('.'<a href="'.$single_tracking['tracking_link'].'">'.$single_tracking['tracking'].'</a>'.')';
|
|
}
|
|
|
|
$this->app->Tpl->Set('TRACKING',implode('<br>',$tracking_list));
|
|
|
|
$returnOrders = (array)$this->app->DB->SelectArr(
|
|
sprintf(
|
|
'SELECT ro.id, ro.belegnr, ro.status
|
|
FROM `retoure` AS `ro`
|
|
LEFT JOIN `auftrag` AS `o` ON ro.auftragid = o.id
|
|
LEFT JOIN `lieferschein` AS `dn` ON o.id = dn.auftragid
|
|
WHERE ro.lieferscheinid = %d OR dn.id = %d
|
|
ORDER BY ro.id',
|
|
$id, $id
|
|
)
|
|
);
|
|
|
|
$returnOrderHtml = [];
|
|
foreach($returnOrders as $returnOrderKey => $returnOrder) {
|
|
$returnOrderId = $returnOrder['id'];
|
|
$returnOrderNumber = $returnOrder['belegnr'];
|
|
if(empty($returnOrderNumber)) {
|
|
$returnOrderNumber = 'ENTWURF';
|
|
}
|
|
$isReturnOrderCanceled = $returnOrder['status'] === 'storniert';
|
|
$returnOrderHtml[] = '<a href="index.php?module=retoure&action=edit&id='
|
|
.$returnOrderId.'" target="_blank">'
|
|
.($isReturnOrderCanceled?'<s>':'').$returnOrderNumber.($isReturnOrderCanceled?'</s>':'')
|
|
.'</a>
|
|
<a href="index.php?module=retoure&action=pdf&id='
|
|
.$returnOrderId
|
|
.'" target="_blank"><img src="./themes/new/images/pdf.svg" alt="Retoure PDF" title="Retoure PDF" border="0"></a>
|
|
<a href="index.php?module=retoure&action=edit&id='
|
|
.$returnOrderId
|
|
.'" target="_blank"><img src="./themes/new/images/edit.svg" alt="Retoure bearbeiten" title="Retoure bearbeiten" border="0"></a>';
|
|
}
|
|
$this->app->Tpl->Set('RETOURE', implode('<br />', $returnOrderHtml));
|
|
|
|
$this->app->Tpl->Set('LIEFERADRESSE',$this->Lieferadresse($auftragArr[0]['id']));
|
|
$tmp = new EasyTable($this->app);
|
|
$tmp->Query("SELECT zeit,bearbeiter,grund FROM lieferschein_protokoll WHERE lieferschein='$id' ORDER by zeit DESC",0,"");
|
|
$tmp->DisplayNew('PROTOKOLL',"Protokoll","noAction");
|
|
|
|
if(class_exists('LieferscheinPDFCustom'))
|
|
{
|
|
$Brief = new LieferscheinPDFCustom($this->app,$auftragArr[0]['projekt']);
|
|
}else{
|
|
$Brief = new LieferscheinPDF($this->app,$auftragArr[0]['projekt']);
|
|
}
|
|
|
|
$Dokumentenliste = $Brief->getArchivedFiles($id, 'lieferschein');
|
|
if($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'] = '<a href="index.php?module=lieferschein&action=pdffromarchive&id='.$v['id'].'"><img src="themes/'.$this->app->Conf->WFconf['defaulttheme'].'/images/pdf.svg" /></a>';
|
|
$tmp3->datasets[] = $tmpr;
|
|
}
|
|
}
|
|
|
|
$tmp3->DisplayNew('PDFARCHIV','Menü',"noAction");
|
|
}
|
|
|
|
$nettogewicht = $this->app->erp->LieferscheinNettoGewicht($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);
|
|
}
|
|
|
|
if($parsetarget=='')
|
|
{
|
|
$this->app->Tpl->Output("lieferschein_minidetail.tpl");
|
|
$this->app->ExitXentral();
|
|
}
|
|
|
|
$this->app->Tpl->Parse($parsetarget,"lieferschein_minidetail.tpl");
|
|
}
|
|
|
|
|
|
|
|
function LieferscheinFreigabe($id="")
|
|
{
|
|
if($id<=0)
|
|
{
|
|
$id = $this->app->Secure->GetGET("id");
|
|
$freigabe= $this->app->Secure->GetGET("freigabe");
|
|
} else {
|
|
$intern = true;
|
|
$freigabe=$intern;
|
|
}
|
|
|
|
$this->app->Tpl->Set('TABTEXT',"Freigabe");
|
|
|
|
$this->app->erp->CheckVertrieb($id,"lieferschein");
|
|
$this->app->erp->CheckBearbeiter($id,"lieferschein");
|
|
|
|
if($freigabe==$id)
|
|
{
|
|
//$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$belegnr = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
if($belegnr=="")
|
|
{
|
|
$this->app->erp->BelegFreigabe("lieferschein",$id);
|
|
if($intern) return 1;
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"info\">Der Lieferschein wurde freigegeben und kann jetzt versendet werden!</div>");
|
|
header("Location: index.php?module=lieferschein&action=edit&id=$id&msg=$msg");
|
|
exit;
|
|
}
|
|
if($intern) return 0;
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Der Lieferschein wurde bereits freigegeben!</div>");
|
|
header("Location: index.php?module=lieferschein&action=edit&id=$id&msg=$msg");
|
|
exit;
|
|
|
|
}
|
|
|
|
$name = $this->app->DB->Select("SELECT a.name FROM lieferschein b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id='$id' LIMIT 1");
|
|
|
|
/*
|
|
$summe = $this->app->DB->Select("SELECT FORMAT(SUM(menge*preis),2) FROM lieferschein_position
|
|
WHERE lieferschein='$id'");
|
|
$waehrung = $this->app->DB->Select("SELECT waehrung FROM lieferschein_position
|
|
WHERE lieferschein='$id' LIMIT 1");
|
|
*/
|
|
|
|
$extra = $this->app->erp->CheckboxEntwurfsmodus("lieferschein",$id);
|
|
|
|
if($this->app->erp->Firmendaten("oneclickrelease")=="1" && $extra=="")
|
|
{
|
|
$this->app->Location->execute("index.php?module=lieferschein&action=freigabe&id=$id&freigabe=$id");
|
|
} else {
|
|
$this->app->Tpl->Set('TAB1',"<div class=\"info\">Soll der Lieferschein an <b>$name</b> jetzt freigegeben werden? <input type=\"button\" class=\"btnImportantLarge\" value=\"Jetzt freigeben\" onclick=\"window.location.href='index.php?module=lieferschein&action=freigabe&id=$id&freigabe=$id'\"> $extra
|
|
</div>");
|
|
}
|
|
|
|
$this->LieferscheinMenu();
|
|
$this->app->Tpl->Parse('PAGE',"tabview.tpl");
|
|
}
|
|
|
|
|
|
function LieferscheinAbschicken()
|
|
{
|
|
$this->LieferscheinMenu();
|
|
$this->app->erp->DokumentAbschicken();
|
|
}
|
|
|
|
|
|
|
|
function LieferscheinDelete($id = null)
|
|
{
|
|
if(is_null($id))
|
|
{
|
|
$intern = false;
|
|
$id = $this->app->Secure->GetGET("id");
|
|
}else $intern = true;
|
|
|
|
$belegnr = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$name = $this->app->DB->Select("SELECT name FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$status = $this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$objekt_lager_platz = $this->app->DB->SelectArr("SELECT olp.id, olp.menge, olp.lager_platz, olp.artikel, olp.parameter FROM
|
|
lieferschein_position lp INNER JOIN objekt_lager_platz olp ON lp.id = olp.parameter AND olp.objekt = 'lieferschein' AND lp.lieferschein = '$id'");
|
|
$cmdEinlagern = $this->app->Secure->GetGET('cmd') === 'einlagern';
|
|
if($cmdEinlagern)
|
|
{
|
|
if($objekt_lager_platz)
|
|
{
|
|
$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id = '$id' LIMIT 1");
|
|
foreach($objekt_lager_platz as $olp) {
|
|
$this->app->erp->LagerEinlagern($olp['artikel'],$olp['menge'],$olp['lager_platz'],$projekt,
|
|
'Stornierung Lieferschein '.$belegnr,$this->app->User->GetName(),'','lieferschein',$id);
|
|
$beleg_chargesnmhd = $this->app->DB->SelectArr("SELECT * FROM `beleg_chargesnmhd` WHERE doctype = 'lieferschein' AND doctypeid = '$id' AND pos = '".$olp['parameter']."'");
|
|
$seriennummern = $this->app->DB->SelectArr("SELECT * FROM seriennummern WHERE lieferschein = '$id' AND lieferscheinpos = '".$olp['parameter']."'");
|
|
if($seriennummern) {
|
|
foreach($seriennummern as $sn) {
|
|
$belegesnarr['sn'][] = array('menge'=>1, 'value'=>$sn['seriennummer'],'table'=>'seriennummern','id'=>$sn['id']);
|
|
}
|
|
}
|
|
if($beleg_chargesnmhd) {
|
|
$belegesnarr = null;
|
|
foreach($beleg_chargesnmhd as $bc) {
|
|
$belegesnarr[$bc['type']][] = array('menge'=>$bc['menge'], 'value'=>$bc['wert'],'table'=>'beleg_chargesnmhd','id'=>$bc['id']);
|
|
}
|
|
}
|
|
if(isset($belegesnarr['sn'])){
|
|
foreach($belegesnarr['sn'] as $v) {
|
|
if(isset($belegesnarr['charge']) && isset($belegesnarr['mhd']))
|
|
{
|
|
$charge = '';
|
|
$mhd = '';
|
|
foreach($belegesnarr['charge'] as $k2 => $v2)
|
|
{
|
|
if($v2['menge'] > 1)
|
|
{
|
|
$charge = $v2['value'];
|
|
$belegesnarr['charge'][$k2]['menge'] -= 1;
|
|
break;
|
|
}
|
|
if($v2['menge'] == 1)
|
|
{
|
|
$charge = $v2['value'];
|
|
unset($belegesnarr['charge'][$k2]);
|
|
break;
|
|
}
|
|
}
|
|
foreach($belegesnarr['mhd'] as $k2 => $v2)
|
|
{
|
|
if($v2['menge'] > 1)
|
|
{
|
|
$mhd = $v2['value'];
|
|
$belegesnarr['mhd'][$k2]['menge'] -= 1;
|
|
break;
|
|
}
|
|
if($v2['menge'] == 1)
|
|
{
|
|
$mhd = $v2['value'];
|
|
unset($belegesnarr['mhd'][$k2]);
|
|
break;
|
|
}
|
|
}
|
|
if(isset($v['table']) && $v['table'] === 'seriennummern' && !empty($v['id']))
|
|
{
|
|
$this->app->DB->Delete("DELETE FROM seriennummern WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
elseif(isset($v['table']) && $v['table'] === 'beleg_chargesnmhd' && !empty($v['id'])){
|
|
$this->app->DB->Delete("DELETE FROM beleg_chargesnmhd WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
if(method_exists($this->app->erp,'AddSeriennummerLager')) {
|
|
$this->app->erp->AddSeriennummerLager($olp['artikel'], $olp['lager_platz'], $v['value'],'Stornierung Lieferschein '.$belegnr, '', $mhd, $charge,'lieferschein', $id);
|
|
}
|
|
if(method_exists($this->app->erp,'AddMindesthaltbarkeitsdatumLagerOhneBewegung')) {
|
|
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($olp['artikel'], 1,$olp['lager_platz'], $mhd, $charge,0,'lieferschein',$id,'Stornierung Lieferschein '.$belegnr);
|
|
}
|
|
if(method_exists($this->app->erp,'AddChargeLagerOhneBewegung')) {
|
|
$this->app->erp->AddChargeLagerOhneBewegung($olp['artikel'],1, $olp['lager_platz'],$mhd,$charge,'Stornierung Lieferschein '.$belegnr,0,'lieferschein',$id);
|
|
}
|
|
}
|
|
elseif(isset($belegesnarr['charge']))
|
|
{
|
|
$charge = '';
|
|
$mhd = '';
|
|
foreach($belegesnarr['charge'] as $k2 => $v2) {
|
|
if($v2['menge'] > 1)
|
|
{
|
|
$charge = $v2['value'];
|
|
$belegesnarr['charge'][$k2]['menge'] -= 1;
|
|
break;
|
|
}
|
|
if($v2['menge'] == 1) {
|
|
$charge = $v2['value'];
|
|
unset($belegesnarr['charge'][$k2]);
|
|
break;
|
|
}
|
|
}
|
|
if(isset($v['table']) && $v['table'] === 'seriennummern' && !empty($v['id']))
|
|
{
|
|
$this->app->DB->Delete("DELETE FROM seriennummern WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
elseif(isset($v['table']) && $v['table'] === 'beleg_chargesnmhd' && !empty($v['id'])){
|
|
$this->app->DB->Delete("DELETE FROM beleg_chargesnmhd WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
if(method_exists($this->app->erp,'AddSeriennummerLager')) {
|
|
$this->app->erp->AddSeriennummerLager($olp['artikel'],1, $olp['lager_platz'], $v['value'],'Stornierung Lieferschein '.$belegnr, '', $mhd, $charge,'lieferschein',$id);
|
|
}
|
|
if(method_exists($this->app->erp,'AddChargeLagerOhneBewegung')) {
|
|
$this->app->erp->AddChargeLagerOhneBewegung($olp['artikel'], 1,$olp['lager_platz'],$mhd,$charge,'Stornierung Lieferschein '.$belegnr,0,'lieferschein',$id);
|
|
}
|
|
}
|
|
elseif(isset($belegesnarr['mhd']))
|
|
{
|
|
$charge = '';
|
|
$mhd = '';
|
|
foreach($belegesnarr['mhd'] as $k2 => $v2)
|
|
{
|
|
if($v2['menge'] > 1) {
|
|
$mhd = $v2['value'];
|
|
$belegesnarr['mhd'][$k2]['menge'] -= 1;
|
|
break;
|
|
}
|
|
if($v2['menge'] == 1) {
|
|
$mhd = $v2['value'];
|
|
unset($belegesnarr['mhd'][$k2]);
|
|
break;
|
|
}
|
|
}
|
|
if(isset($v['table']) && $v['table'] === 'seriennummern' && !empty($v['id'])) {
|
|
$this->app->DB->Delete("DELETE FROM seriennummern WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
elseif(isset($v['table']) && $v['table'] === 'beleg_chargesnmhd' && !empty($v['id'])){
|
|
$this->app->DB->Delete("DELETE FROM beleg_chargesnmhd WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
if(method_exists($this->app->erp,'AddSeriennummerLager')) {
|
|
$this->app->erp->AddSeriennummerLager($olp['artikel'], $olp['lager_platz'], $v['value'],'Stornierung Lieferschein '.$belegnr, '', $mhd, $charge,'lieferschein', $id);
|
|
}
|
|
if(method_exists($this->app->erp,'AddMindesthaltbarkeitsdatumLagerOhneBewegung')) {
|
|
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($olp['artikel'],1, $olp['lager_platz'], $mhd, $charge, 0, 'lieferschein', $id,'Stornierung Lieferschein '.$belegnr);
|
|
}
|
|
}
|
|
else{
|
|
if(isset($v['table']) && $v['table'] === 'seriennummern' && !empty($v['id']))
|
|
{
|
|
$this->app->DB->Delete("DELETE FROM seriennummern WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
elseif(isset($v['table']) && $v['table'] === 'beleg_chargesnmhd' && !empty($v['id'])){
|
|
$this->app->DB->Delete("DELETE FROM beleg_chargesnmhd WHERE id = '".$v['id']."' LIMIT 1");
|
|
}
|
|
if(method_exists($this->app->erp,'AddSeriennummerLager')) {
|
|
$this->app->erp->AddSeriennummerLager($olp['artikel'], $olp['lager_platz'], $v['value'],'Stornierung Lieferschein '.$belegnr, '','','','lieferschein', $id);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
if(isset($belegesnarr['charge']) && isset($belegesnarr['mhd'])) {
|
|
foreach($belegesnarr['charge'] as $v2) {
|
|
$nochmenge = $v2['menge'];
|
|
foreach($belegesnarr['mhd'] as $k3 => $v3) {
|
|
if($v3['menge'] <= 0) {
|
|
continue;
|
|
}
|
|
if($nochmenge <= 0) {
|
|
break;
|
|
}
|
|
if($nochmenge == $v3['menge']) {
|
|
$mhd = $v3['value'];
|
|
$charge = $v2['value'];
|
|
if(method_exists($this->app->erp,'AddMindesthaltbarkeitsdatumLagerOhneBewegung')) {
|
|
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($olp['artikel'], $nochmenge,$olp['lager_platz'], $mhd, $charge, 0, 'lieferschein', $id,'Stornierung Lieferschein '.$belegnr);
|
|
}
|
|
if(method_exists($this->app->erp,'AddChargeLagerOhneBewegung')) {
|
|
$this->app->erp->AddChargeLagerOhneBewegung($olp['artikel'],$nochmenge, $olp['lager_platz'],$mhd,$charge,'Stornierung Lieferschein '.$belegnr, 0, 'lieferschein', $id);
|
|
}
|
|
unset($belegesnarr['mhd'][$k3]);
|
|
break;
|
|
}
|
|
if($nochmenge > $v3['menge']) {
|
|
$mhd = $v3['value'];
|
|
$charge = $v2['value'];
|
|
if(method_exists($this->app->erp,'AddMindesthaltbarkeitsdatumLagerOhneBewegung')) {
|
|
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($olp['artikel'], $v3['menge'],$olp['lager_platz'], $mhd, $charge, 0, 'lieferschein', $id,'Stornierung Lieferschein '.$belegnr);
|
|
}
|
|
if(method_exists($this->app->erp,'AddChargeLagerOhneBewegung')) {
|
|
$this->app->erp->AddChargeLagerOhneBewegung($olp['artikel'],$v3['menge'], $olp['lager_platz'],$mhd,$charge,'Stornierung Lieferschein '.$belegnr, 0, 'lieferschein', $id);
|
|
}
|
|
unset($belegesnarr['mhd'][$k3]);
|
|
$nochmenge -= $v3['menge'];
|
|
if($nochmenge <= 0) {
|
|
break;
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if($nochmenge < $v3['menge']) {
|
|
$mhd = $v3['value'];
|
|
$charge = $v2['value'];
|
|
if(method_exists($this->app->erp,'AddMindesthaltbarkeitsdatumLagerOhneBewegung')) {
|
|
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($olp['artikel'], $nochmenge,$olp['lager_platz'], $mhd, $charge, 0, 'lieferschein', $id,'Stornierung Lieferschein '.$belegnr);
|
|
}
|
|
if(method_exists($this->app->erp,'AddChargeLagerOhneBewegung')) {
|
|
$this->app->erp->AddChargeLagerOhneBewegung($olp['artikel'],$nochmenge, $olp['lager_platz'],$mhd,$charge,'Stornierung Lieferschein '.$belegnr, 0, 'lieferschein', $id);
|
|
}
|
|
$belegesnarr['mhd'][$k3]['menge'] -= $nochmenge;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
elseif($belegesnarr['charge']) {
|
|
foreach($belegesnarr['charge'] as $v2) {
|
|
if($v2['menge'] <= 0) {
|
|
continue;
|
|
}
|
|
if(method_exists($this->app->erp,'AddChargeLagerOhneBewegung')) {
|
|
$this->app->erp->AddChargeLagerOhneBewegung($olp['artikel'],$v2['menge'], $olp['lager_platz'],'',$v2['value'],'Stornierung Lieferschein '.$belegnr, 0, 'lieferschein', $id);
|
|
}
|
|
}
|
|
}
|
|
elseif($belegesnarr['mhd']) {
|
|
foreach($belegesnarr['mhd'] as $v2) {
|
|
if($v2['menge'] <= 0) {
|
|
continue;
|
|
}
|
|
if(method_exists($this->app->erp, 'AddMindesthaltbarkeitsdatumLagerOhneBewegung')) {
|
|
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($olp['artikel'], $v2['menge'], $olp['lager_platz'], $v2['value'],'',0,'lieferschein', $id,'Stornierung Lieferschein '.$belegnr);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$this->app->DB->Delete("DELETE FROM objekt_lager_platz WHERE id = '".$olp['id']."' LIMIT 1");
|
|
}
|
|
}
|
|
}
|
|
|
|
if($cmdEinlagern || empty($objekt_lager_platz)) {
|
|
$sns = $this->app->DB->SelectArr(
|
|
sprintf(
|
|
'SELECT bc.id, bc.wert, bc.lagerplatz, lp.artikel, bc.wert2, bc.type2
|
|
FROM `beleg_chargesnmhd` AS bc
|
|
INNER JOIN lieferschein_position AS lp ON bc.pos = lp.id AND bc.`doctypeid` = %d
|
|
WHERE bc.`doctype` = \'lieferschein\' AND bc.`doctypeid` = %d AND bc.`type` = \'sn\' AND bc.lagerplatz > 0 AND bc.wert <> \'\'',
|
|
$id, $id
|
|
)
|
|
);
|
|
if(!empty($sns)) {
|
|
foreach($sns as $sn) {
|
|
$mhd = '';
|
|
$charge = '';
|
|
if($sn['type2'] === 'charge') {
|
|
$charge = $sn['wert2'];
|
|
}elseif($sn['type2'] === 'mhd') {
|
|
$mhd = $sn['wert2'];
|
|
}
|
|
$this->app->erp->AddSeriennummerLager($sn['artikel'], $sn['lagerplatz'], $sn['wert'],'Stornierung Lieferschein '.$belegnr, '', $mhd, $charge,'lieferschein', $id);
|
|
$this->app->DB->Delete(sprintf('DELETE FROM `beleg_chargesnmhd` WHERE id = %d LIMIT 1', $sn['id']));
|
|
}
|
|
}
|
|
}
|
|
|
|
if($belegnr=="0" || $belegnr=="")
|
|
{
|
|
$this->DeleteLieferschein($id);
|
|
if($intern)return;
|
|
$belegnr="ENTWURF";
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"warning\">Der Lieferschein \"$name\" ($belegnr) wurde gelöscht!</div>");
|
|
//header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg");
|
|
header("Location: index.php?module=lieferschein&action=list&msg=$msg");
|
|
exit;
|
|
}
|
|
if($status=="storniert")
|
|
{
|
|
$maxbelegnr = $this->app->DB->Select("SELECT MAX(belegnr) FROM lieferschein");
|
|
if(0)//$maxbelegnr == $belegnr)
|
|
{
|
|
$this->app->DB->Delete("DELETE FROM lieferschein_position WHERE lieferschein='$id'");
|
|
$this->app->DB->Delete("DELETE FROM lieferschein_protokoll WHERE lieferschein='$id'");
|
|
$this->app->DB->Delete("DELETE FROM lieferschein WHERE id='$id'");
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"warning\">Lieferschein \"$name\" ($belegnr) wurde geöscht !</div>");
|
|
} else
|
|
{
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"error\">Lieferschein \"$name\" ($belegnr) kann nicht storniert werden da er bereits storniert ist!</div>");
|
|
}
|
|
if($intern)return;
|
|
header("Location: index.php?module=lieferschein&action=list&msg=$msg");
|
|
exit;
|
|
}
|
|
else {
|
|
$this->app->DB->Update("UPDATE lieferschein SET status='storniert' WHERE id='$id' LIMIT 1");
|
|
$checkversand = $this->app->DB->Select("SELECT id FROM versand WHERE lieferschein='$id' LIMIT 1");
|
|
if($checkversand > 0)
|
|
{
|
|
if($id > 0) $this->app->DB->Delete("UPDATE versand SET abgeschlossen='1' WHERE lieferschein='$id' AND lieferschein > 0");
|
|
$this->app->erp->LieferscheinProtokoll($id,"Lieferschein aus Versandzentrum entfernt");
|
|
}
|
|
|
|
$this->app->erp->LieferscheinProtokoll($id,"Lieferschein storniert");
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"warning\">Das Lieferschein \"$name\" ($belegnr) wurde storniert!</div>");
|
|
}
|
|
if($intern)return;
|
|
header("Location: index.php?module=lieferschein&action=list&msg=$msg#tabs-1");
|
|
exit;
|
|
}
|
|
|
|
function LieferscheinProtokoll()
|
|
{
|
|
$this->LieferscheinMenu();
|
|
$id = $this->app->Secure->GetGET("id");
|
|
|
|
$this->app->Tpl->Set('TABTEXT',"Protokoll");
|
|
$tmp = new EasyTable($this->app);
|
|
$tmp->Query("SELECT zeit,bearbeiter,grund FROM lieferschein_protokoll WHERE lieferschein='$id' ORDER by zeit DESC",0,"");
|
|
$tmp->DisplayNew('TAB1',"Protokoll","noAction");
|
|
|
|
$this->app->Tpl->Parse('PAGE',"tabview.tpl");
|
|
}
|
|
|
|
function LieferscheinRechnung() {
|
|
$id = $this->app->Secure->GetGET("id");
|
|
$newid = $this->app->erp->WeiterfuehrenLieferscheinZuRechnung($id);
|
|
$this->app->erp->LieferscheinProtokoll($id,"Lieferschein als Rechnung weitergeführt");
|
|
|
|
|
|
header("Location: index.php?module=rechnung&action=edit&id=$newid");
|
|
exit;
|
|
}
|
|
|
|
function LieferscheinProformarechnung() {
|
|
$id = $this->app->Secure->GetGET("id");
|
|
$proformaRechnung = $this->app->erp->LoadModul('proformarechnung');
|
|
if(!empty($proformaRechnung) && method_exists($proformaRechnung, 'CreateProformaInvoiceAndPrint')) {
|
|
$tmp = $this->app->DB->SelectArr("SELECT adresse,projekt FROM lieferschein WHERE id='$id'");
|
|
$newid = $proformaRechnung->createProformaInvoiceFromDeliveryNotes([$id], $tmp[0]['adresse'], $tmp[0]['projekt']);
|
|
}
|
|
$this->app->erp->LieferscheinProtokoll($id,"Lieferschein als Proformarechnung weitergeführt");
|
|
|
|
header("Location: index.php?module=proformarechnung&action=edit&id=$newid");
|
|
exit;
|
|
}
|
|
|
|
|
|
function LieferscheinInlinePDF()
|
|
{
|
|
$id = $this->app->Secure->GetGET("id");
|
|
$this->app->erp->LieferscheinNeuberechnen($id);
|
|
$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$frame = $this->app->Secure->GetGET("frame");
|
|
|
|
if($frame=="")
|
|
{
|
|
if(class_exists('LieferscheinPDFCustom'))
|
|
{
|
|
$Brief = new LieferscheinPDFCustom($this->app,$projekt);
|
|
}else{
|
|
$Brief = new LieferscheinPDF($this->app,$projekt);
|
|
}
|
|
$Brief->GetLieferschein($id);
|
|
$Brief->inlineDocument($schreibschutz);
|
|
} else {
|
|
$file = urlencode("../../../../index.php?module=lieferschein&action=inlinepdf&id=$id");
|
|
echo "<iframe width=\"100%\" height=\"100%\" style=\"height:calc(100vh - 110px)\" src=\"./js/production/generic/web/viewer.html?file=$file\"></iframe>";
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
function LieferscheinPDF()
|
|
{
|
|
$id = $this->app->Secure->GetGET("id");
|
|
$this->app->erp->LieferscheinNeuberechnen($id);
|
|
$belegnr = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
// if(is_numeric($belegnr) && $belegnr!=0)
|
|
{
|
|
if(class_exists('LieferscheinPDFCustom'))
|
|
{
|
|
$Brief = new LieferscheinPDFCustom($this->app,$projekt);
|
|
}else{
|
|
$Brief = new LieferscheinPDF($this->app,$projekt);
|
|
}
|
|
$Brief->GetLieferschein($id);
|
|
$Brief->displayDocument($schreibschutz);
|
|
}// else
|
|
// $this->app->Tpl->Set(MESSAGE,"<div class=\"error\">Noch nicht freigegebene Lieferscheinen können nicht als PDF betrachtet werden.!</div>");
|
|
|
|
|
|
$this->LieferscheinList();
|
|
}
|
|
|
|
|
|
function LieferscheinMenu()
|
|
{
|
|
$id = $this->app->Secure->GetGET("id");
|
|
|
|
$belegnr = $this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$name = $this->app->DB->Select("SELECT name FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
|
|
if($belegnr=="0" || $belegnr=="") $belegnr ="(Entwurf)";
|
|
// $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Lieferschein $belegnr");
|
|
$this->app->Tpl->Set('KURZUEBERSCHRIFT2',"$name Lieferschein $belegnr");
|
|
|
|
|
|
|
|
|
|
// $this->app->erp->MenuEintrag("index.php?module=lieferschein&action=edit&id=$id","Lieferscheindaten");
|
|
//$this->app->Tpl->Add(TABS,"<li><a href=\"index.php?module=lieferschein&action=positionen&id=$id\">Positionen</a></li>");
|
|
|
|
// status bestell
|
|
$status = $this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
|
|
if ($status=="angelegt")
|
|
{
|
|
$this->app->erp->MenuEintrag("index.php?module=lieferschein&action=freigabe&id=$id","Freigabe");
|
|
}
|
|
|
|
$this->app->erp->MenuEintrag("index.php?module=lieferschein&action=edit&id=$id","Details");
|
|
$this->app->erp->MenuEintrag("index.php?module=lieferschein&action=paketmarke&id=$id","Paketmarke");
|
|
// $this->app->erp->MenuEintrag("index.php?module=lieferschein&action=abschicken&id=$id","Abschicken / Protokoll");
|
|
// $this->app->erp->MenuEintrag("index.php?module=lieferschein&action=protokoll&id=$id","Protokoll");
|
|
$this->app->erp->MenuEintrag("index.php?module=lieferschein&action=list","Zurück zur Übersicht");
|
|
|
|
$this->app->erp->RunMenuHook('lieferschein');
|
|
}
|
|
|
|
function LieferscheinPositionen()
|
|
{
|
|
$this->app->YUI->AARLGPositionen(false);
|
|
return;
|
|
}
|
|
|
|
function CopyLieferscheinPosition()
|
|
{
|
|
$this->app->YUI->SortListEvent("copy","lieferschein_position","lieferschein");
|
|
$this->LieferscheinPositionen();
|
|
}
|
|
|
|
function DelLieferscheinPosition()
|
|
{
|
|
$this->app->YUI->SortListEvent("del","lieferschein_position","lieferschein");
|
|
$this->LieferscheinPositionen();
|
|
}
|
|
|
|
function UpLieferscheinPosition()
|
|
{
|
|
$this->app->YUI->SortListEvent("up","lieferschein_position","lieferschein");
|
|
$this->LieferscheinPositionen();
|
|
}
|
|
|
|
function DownLieferscheinPosition()
|
|
{
|
|
$this->app->YUI->SortListEvent("down","lieferschein_position","lieferschein");
|
|
$this->LieferscheinPositionen();
|
|
}
|
|
|
|
|
|
function LieferscheinPositionenEditPopup()
|
|
{
|
|
$id = $this->app->Secure->GetGET("id");
|
|
|
|
// nach page inhalt des dialogs ausgeben
|
|
$filename = "widgets/widget.lieferschein_position_custom.php";
|
|
if(is_file($filename))
|
|
{
|
|
include_once($filename);
|
|
$widget = new WidgetLieferschein_positionCustom($this->app,'PAGE');
|
|
} else {
|
|
$widget = new WidgetLieferschein_position($this->app,'PAGE');
|
|
}
|
|
$sid= $this->app->DB->Select("SELECT lieferschein FROM lieferschein_position WHERE id='$id' LIMIT 1");
|
|
$widget->form->SpecialActionAfterExecute("close_refresh",
|
|
"index.php?module=lieferschein&action=positionen&id=$sid");
|
|
$widget->Edit();
|
|
$this->app->BuildNavigation=false;
|
|
}
|
|
|
|
|
|
function LieferscheinEdit()
|
|
{
|
|
$action = $this->app->Secure->GetGET("action");
|
|
$id = $this->app->Secure->GetGET("id");
|
|
|
|
$sid = $this->app->Secure->GetGET("sid");
|
|
$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);
|
|
exit;
|
|
}
|
|
|
|
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 'lieferschein' 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);
|
|
exit;
|
|
}
|
|
|
|
if($this->app->erp->VertriebAendern("lieferschein",$id,$cmd,$sid))
|
|
return;
|
|
if($this->app->erp->InnendienstAendern("lieferschein",$id,$cmd,$sid))
|
|
return;
|
|
|
|
if($this->app->erp->DisableModul("lieferschein",$id))
|
|
{
|
|
//$this->app->erp->MenuEintrag("index.php?module=auftrag&action=list","Zurück zur Übersicht");
|
|
$this->LieferscheinMenu();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
$this->app->YUI->AARLGPositionen();
|
|
|
|
$this->app->erp->CheckVertrieb($id,"lieferschein");
|
|
$this->app->erp->CheckBearbeiter($id,"lieferschein");
|
|
if($id > 0){
|
|
$lieferscheinarr = $this->app->DB->SelectRow("SELECT * FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
}
|
|
if(!empty($lieferscheinarr)){
|
|
$nummer = $lieferscheinarr['belegnr'];//$this->app->DB->Select("SELECT belegnr FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$projekt = $lieferscheinarr['projekt'];//$this->app->DB->Select("SELECT projekt FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$adresse = $lieferscheinarr['adresse'];//$this->app->DB->Select("SELECT adresse FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$lieferant = $lieferscheinarr['lieferant'];//$this->app->DB->Select("SELECT lieferant FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$lieferantenretoure = $lieferscheinarr['lieferantenretoure'];//$this->app->DB->Select("SELECT lieferantenretoure FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$schreibschutz = $lieferscheinarr['schreibschutz'];//$this->app->DB->Select("SELECT schreibschutz FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$status = $lieferscheinarr['status'];//$this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
}else{
|
|
$nummer = '';
|
|
$projekt = 0;
|
|
$adresse = 0;
|
|
$lieferant = null;
|
|
$lieferantenretoure = null;
|
|
$schreibschutz = 0;
|
|
$status = '';
|
|
}
|
|
$kundennummer = $this->app->DB->Select("SELECT kundennummer FROM adresse WHERE id='$adresse' LIMIT 1");
|
|
|
|
if($lieferantenretoure=="1" && $lieferant<=0)
|
|
{
|
|
$this->app->Tpl->Add('JAVASCRIPT','$(document).ready(function() { if(document.getElementById("adresse"))document.getElementById("adresse").focus(); });');
|
|
$this->app->Tpl->Set('MESSAGE',"<div class=\"error\">Pflichtfeld! Bitte geben Sie eine Lieferanten-Nr. an!</div>");
|
|
} else if ($adresse <=0 && $lieferantenretoure!="1")
|
|
{
|
|
$this->app->Tpl->Add('JAVASCRIPT','$(document).ready(function() { if(document.getElementById("adresse"))document.getElementById("adresse").focus(); });');
|
|
$this->app->Tpl->Set('MESSAGE',"<div class=\"error\">Pflichtfeld! Bitte geben Sie eine Kunden-Nr. an!</div>");
|
|
}
|
|
|
|
|
|
$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'");
|
|
$anzahllagerartikel = $this->app->DB->Select("SELECT count(lp.id) as liefermenge from lieferschein_position lp 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'");
|
|
|
|
$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' && $anzahllagerartikel > 0) {
|
|
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Der Lieferschein wurde noch nicht ausgelagert! <input type=\"button\" value=\"Jetzt auslagern\" onclick=\"window.location.href='index.php?module=lieferschein&action=auslagern&id=$id'\"></div>");
|
|
}else{
|
|
$projektkommissionierverfahren = $this->app->DB->Select("SELECT kommissionierverfahren FROM projekt where id = '$projekt'");
|
|
if($projekt && ($projektkommissionierverfahren == "" || $projektkommissionierverfahren == "rechnungsmail" || $projektkommissionierverfahren == "lieferschein" || $projektkommissionierverfahren == "lieferscheinscan"))
|
|
{
|
|
if($mengegeliefert <= 0 && $liefermengelagerartikel <=0 && $status!='angelegt' && $status!='storniert' && $anzahllagerartikel > 0) {
|
|
$this->app->Tpl->Add('MESSAGE', "<div class=\"warning\">Der Lieferschein wurde noch nicht ausgelagert! <input type=\"button\" value=\"Jetzt auslagern\" onclick=\"window.location.href='index.php?module=lieferschein&action=auslagern&id=$id'\"></div>");
|
|
}else{
|
|
if($liefermengelagerartikel > 0 && ($bestellmengelagerartikel != $liefermengelagerartikel)){
|
|
$this->app->Tpl->Add('MESSAGE', "<div class=\"warning\">Die Lieferscheinpositionen wurden nachträglich verändert. Ein erneutes Auslagern ist nicht möglich.</div>");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$deliveryData = $this->app->DB->SelectRow(
|
|
"SELECT l.status, l.zuarchivieren, l.schreibschutz
|
|
FROM `lieferschein` AS `l`
|
|
WHERE l.id='$id'
|
|
LIMIT 1"
|
|
);
|
|
|
|
$status = $deliveryData['status'];
|
|
$zuArchivieren = $deliveryData['zuarchivieren'];
|
|
$schreibschutz = $deliveryData['schreibschutz'];
|
|
|
|
if($id > 0 && $zuArchivieren == 1 && $schreibschutz == 1) {
|
|
$this->app->erp->PDFArchivieren('lieferschein', $id, true);
|
|
}
|
|
|
|
if($status != "angelegt" && $status != "angelegta" && $status != "a")
|
|
{
|
|
$Brief = new Briefpapier($this->app);
|
|
if($Brief->zuArchivieren($id, "lieferschein"))
|
|
{
|
|
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Der Lieferschein ist noch nicht archiviert! Bitte versenden oder manuell archivieren.
|
|
<input type=\"button\" onclick=\"if(!confirm('Soll das Dokument archiviert werden?')) return false;else window.location.href='index.php?module=lieferschein&action=archivierepdf&id=$id';\" value=\"Manuell archivieren\" /> <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('lieferschein',$id)\"></div>");
|
|
}elseif(!$this->app->DB->Select("SELECT versendet FROM lieferschein WHERE id = '$id' LIMIT 1"))
|
|
{
|
|
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Der Lieferschein wurde noch nicht versendet! <input type=\"button\" value=\"Dokument versenden\" onclick=\"DokumentAbschicken('lieferschein',$id)\"></div>");
|
|
}
|
|
}
|
|
|
|
if($schreibschutz!="1")// && $this->app->erp->RechteVorhanden("lieferschein","schreibschutz"))
|
|
{
|
|
$this->app->erp->AnsprechpartnerButton($adresse);
|
|
$this->app->erp->LieferadresseButton($adresse);
|
|
$this->app->erp->AdresseAlsAnsprechpartner($adresse);
|
|
|
|
$this->app->erp->LieferscheinNeuberechnen($id);
|
|
}
|
|
|
|
|
|
//$this->LieferscheinMiniDetail(MINIDETAIL,false);
|
|
$this->app->Tpl->Set('ICONMENU',$this->LieferscheinIconMenu($id));
|
|
$this->app->Tpl->Set('ICONMENU2',$this->LieferscheinIconMenu($id,2));
|
|
|
|
|
|
if($nummer!="")
|
|
{
|
|
$this->app->Tpl->Set('NUMMER',$nummer);
|
|
if($this->app->erp->RechteVorhanden("adresse","edit"))
|
|
$this->app->Tpl->Set('KUNDE'," Kd-Nr. <a href=\"index.php?module=adresse&action=edit&id=$adresse\" target=\"_blank\">".$kundennummer."</a>");
|
|
else
|
|
$this->app->Tpl->Set('KUNDE'," Kd-Nr. ".$kundennummer);
|
|
}
|
|
|
|
if($schreibschutz=="1" && $this->app->erp->RechteVorhanden("lieferschein","schreibschutz"))
|
|
{
|
|
$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Dieser Lieferschein ist schreibgeschützt und darf daher nicht mehr bearbeitet werden! <input type=\"button\" value=\"Schreibschutz entfernen\" onclick=\"if(!confirm('Soll der Schreibschutz für diesen Lieferschein wirklich entfernt werden?')) return false;else window.location.href='index.php?module=lieferschein&action=schreibschutz&id=$id';\"></div>");
|
|
// $this->app->erp->CommonReadonly();
|
|
}
|
|
if($schreibschutz=="1")
|
|
$this->app->erp->CommonReadonly();
|
|
|
|
$status= $this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
if($status=="")
|
|
$this->app->DB->Update("UPDATE lieferschein SET status='angelegt' WHERE id='$id' LIMIT 1");
|
|
|
|
if($schreibschutz != '1'){
|
|
$this->app->Tpl->Set('BUTTON_UEBERNEHMEN', '
|
|
<input type="button" value="übernehmen" onclick="if(!confirm(\'Soll der neue Kunde wirklich übernommen werden? Es werden alle Felder überladen.\')) return false;else document.getElementById(\'uebernehmen\').value=1; document.getElementById(\'eprooform\').submit();"/><input type="hidden" id="uebernehmen" name="uebernehmen" value="0">
|
|
');
|
|
|
|
|
|
$this->app->Tpl->Set('BUTTON_UEBERNEHMEN2', '
|
|
<input type="button" value="übernehmen" onclick="if(!confirm(\'Soll der neue Lieferant wirklich übernommen werden? Es werden alle Felder überladen.\')) return false;else document.getElementById(\'uebernehmen2\').value=1; document.getElementById(\'eprooform\').submit();"/><input type="hidden" id="uebernehmen2" name="uebernehmen2" value="0">
|
|
');
|
|
}
|
|
|
|
|
|
// immer wenn sich der lieferant genändert hat standartwerte setzen
|
|
if($this->app->Secure->GetPOST("adresse")!="")
|
|
{
|
|
$tmp = $this->app->Secure->GetPOST("adresse");
|
|
$kundennummer = $this->app->erp->FirstTillSpace($tmp);
|
|
$filter_projekt = $this->app->DB->Select("SELECT projekt FROM lieferschein 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 id FROM adresse WHERE kundennummer='$kundennummer' AND kundennummer!='' AND geloescht=0 ".$this->app->erp->ProjektRechte("projekt")." ORDER by ".($filter_projekt?" projekt = '$filter_projekt' DESC, ":"")." projekt LIMIT 1");
|
|
|
|
$uebernehmen =$this->app->Secure->GetPOST("uebernehmen");
|
|
if($uebernehmen=="1") // nur neuladen bei tastendruck auf uebernehmen // FRAGEN!!!!
|
|
{
|
|
$this->app->DB->Update("UPDATE lieferschein SET lieferantenretoure=0,lieferant=0 WHERE id='$id'");
|
|
$this->LoadLieferscheinStandardwerte($id,$adresse);
|
|
header("Location: index.php?module=lieferschein&action=edit&id=$id");
|
|
exit;
|
|
}
|
|
}
|
|
|
|
if($this->app->Secure->GetPOST("lieferant")!="")
|
|
{
|
|
$tmplieferant = $this->app->Secure->GetPOST("lieferant");
|
|
$lieferantennummer = $this->app->erp->FirstTillSpace($tmplieferant);
|
|
|
|
$adresselieferant = $this->app->DB->Select("SELECT id FROM adresse WHERE lieferantennummer='$lieferantennummer' AND lieferantennummer!='' AND geloescht=0 LIMIT 1");
|
|
|
|
$uebernehmen2 =$this->app->Secure->GetPOST("uebernehmen2");
|
|
if($uebernehmen2=="1") // nur neuladen bei tastendruck auf uebernehmen // FRAGEN!!!!
|
|
{
|
|
$this->app->DB->Update("UPDATE lieferschein SET lieferantenretoure=1 WHERE id='$id'");
|
|
$this->LoadLieferscheinStandardwerte($id,$adresselieferant,true);
|
|
header("Location: index.php?module=lieferschein&action=edit&id=$id");
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
// easy table mit arbeitspaketen YUI als template
|
|
$table = new EasyTable($this->app);
|
|
$table->Query("SELECT nummer as Nummer, bezeichnung, menge,vpe as VPE
|
|
FROM lieferschein_position
|
|
WHERE lieferschein='$id'",0,"");
|
|
$table->DisplayNew('POSITIONEN',"VPE","noAction");
|
|
|
|
$status= $this->app->DB->Select("SELECT status FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$this->app->Tpl->Set('STATUS',"<input type=\"text\" size=\"30\" value=\"".$status."\" readonly [COMMONREADONLYINPUT]>");
|
|
|
|
|
|
$this->app->Tpl->Set('AKTIV_TAB1',"selected");
|
|
parent::LieferscheinEdit();
|
|
if($id > 0 && $this->app->DB->Select(
|
|
sprintf(
|
|
'SELECT id FROM lieferschein WHERE schreibschutz =1 AND zuarchivieren = 1 AND id = %d',
|
|
$id
|
|
)
|
|
)
|
|
) {
|
|
$this->app->erp->PDFArchivieren('lieferschein', $id, true);
|
|
}
|
|
$this->app->erp->MessageHandlerStandardForm();
|
|
|
|
if($this->app->Secure->GetPOST("weiter")!="")
|
|
{
|
|
header("Location: index.php?module=lieferschein&action=positionen&id=$id");
|
|
exit;
|
|
}
|
|
$this->LieferscheinMenu();
|
|
|
|
}
|
|
|
|
/**
|
|
* @param int $deliveryNoteId
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function printPostitionLabels($deliveryNoteId)
|
|
{
|
|
if(empty($deliveryNoteId)) {
|
|
return false;
|
|
}
|
|
$projectId = $this->app->DB->Select(
|
|
sprintf(
|
|
'SELECT projekt FROM lieferschein WHERE id=%d LIMIT 1',
|
|
$deliveryNoteId
|
|
)
|
|
);
|
|
if(empty($projectId)) {
|
|
return false;
|
|
}
|
|
$projectRow = $this->app->DB->SelectRow(
|
|
sprintf(
|
|
'SELECT etiketten_positionen, etiketten_art, etiketten_drucker, etiketten_sort
|
|
FROM projekt
|
|
WHERE id = %d',
|
|
$projectId
|
|
)
|
|
);
|
|
if(empty($projectRow) || $projectRow['etiketten_positionen'] <= 0) {
|
|
return false;
|
|
}
|
|
/** @var Etiketten $obj */
|
|
$obj = $this->app->erp->LoadModul('etiketten');
|
|
if(empty($obj) || !method_exists($obj, 'LieferscheinPositionenDrucken')) {
|
|
return false;
|
|
}
|
|
$obj->LieferscheinPositionenDrucken(
|
|
$deliveryNoteId,
|
|
$projectRow['etiketten_drucker'],
|
|
$projectRow['etiketten_art'],
|
|
$projectRow['etiketten_sort']
|
|
);
|
|
|
|
return true;
|
|
}
|
|
|
|
public function LieferscheinPositionenEtiketten()
|
|
{
|
|
$id = $this->app->Secure->GetGET('id');
|
|
$this->printPostitionLabels($id);
|
|
$this->app->Location->execute('index.php?module=lieferschein&action=edit&id='.$id);
|
|
}
|
|
|
|
function Lieferadresse($id)
|
|
{
|
|
$data = $this->app->DB->SelectArr("SELECT * FROM lieferschein WHERE id='$id' 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]."<br>";
|
|
}
|
|
|
|
|
|
$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'];
|
|
return "<table width=\"100%\">
|
|
<tr valign=\"top\"><td width=\"50%\"><b>Lieferschein:</b><br><br>$rechnungsadresse</td></tr></table>";
|
|
}
|
|
|
|
function LieferscheinCreate()
|
|
{
|
|
// $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Lieferschein");
|
|
$this->app->erp->MenuEintrag("index.php?module=lieferschein&action=list","Zurück zur Übersicht");
|
|
|
|
$anlegen = $this->app->Secure->GetGET("anlegen");
|
|
|
|
if($this->app->erp->Firmendaten("schnellanlegen")=="1" && $anlegen!="1")
|
|
{
|
|
header("Location: index.php?module=lieferschein&action=create&anlegen=1");
|
|
exit;
|
|
}
|
|
|
|
|
|
if($anlegen != "")
|
|
{
|
|
$id = $this->app->erp->CreateLieferschein();
|
|
$this->app->erp->LieferscheinProtokoll($id,"Lieferschein angelegt");
|
|
|
|
header("Location: index.php?module=lieferschein&action=edit&id=$id");
|
|
|
|
exit;
|
|
}
|
|
$this->app->Tpl->Set('MESSAGE',"<div class=\"warning\">Möchten Sie eine Lieferschein jetzt anlegen?
|
|
<input type=\"button\" onclick=\"window.location.href='index.php?module=lieferschein&action=create&anlegen=1'\" value=\"Ja - Lieferschein jetzt anlegen\"></div><br>");
|
|
$this->app->Tpl->Set('TAB1',"
|
|
<table width=\"100%\" style=\"background-color: #fff; border: solid 1px #000;\" align=\"center\">
|
|
<tr>
|
|
<td align=\"center\">
|
|
<br><b style=\"font-size: 14pt\">Lieferscheine in Bearbeitung</b>
|
|
<br>
|
|
<br>
|
|
Offene Aufträge, die durch andere Mitarbeiter in Bearbeitung sind.
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
[AUFTRAGE]");
|
|
|
|
|
|
$this->app->Tpl->Set('AKTIV_TAB1',"selected");
|
|
|
|
$this->app->YUI->TableSearch('AUFTRAGE','lieferscheineinbearbeitung', 'show','','',basename(__FILE__), __CLASS__);
|
|
/*
|
|
$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 lieferschein WHERE status='angelegt' order by datum DESC, id DESC");
|
|
$table->DisplayNew(AUFTRAGE, "<a href=\"index.php?module=lieferschein&action=edit&id=%value%\"><img border=\"0\" src=\"./themes/new/images/edit.svg\"></a>
|
|
<a onclick=\"if(!confirm('Wirklich löschen?')) return false; else window.location.href='index.php?module=lieferschein&action=delete&id=%value%';\">
|
|
<img src=\"./themes/new/images/delete.svg\" border=\"0\"></a>
|
|
<a onclick=\"if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=lieferschein&action=copy&id=%value%';\">
|
|
<img src=\"./themes/new/images/copy.svg\" border=\"0\"></a>
|
|
");
|
|
*/
|
|
|
|
$this->app->Tpl->Set('TABTEXT',"Lieferschein anlegen");
|
|
$this->app->Tpl->Parse('PAGE',"tabview.tpl");
|
|
|
|
|
|
|
|
//parent::LieferscheinCreate();
|
|
}
|
|
|
|
function LieferscheinDateien()
|
|
{
|
|
$id = $this->app->Secure->GetGET("id");
|
|
$this->LieferscheinMenu();
|
|
$this->app->Tpl->Add('UEBERSCHRIFT'," (Dateien)");
|
|
$this->app->YUI->DateiUpload('PAGE',"Lieferschein",$id);
|
|
}
|
|
|
|
|
|
|
|
function LieferscheinList()
|
|
{
|
|
if($this->app->Secure->GetPOST('ausfuehren') && $this->app->erp->RechteVorhanden('lieferschein', '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)) {
|
|
$selectedIds = [];
|
|
foreach($auswahl as $v) {
|
|
$v = (int)$v;
|
|
if($v > 0) {
|
|
$selectedIds[] = $v;
|
|
}
|
|
$selectedIds = array_unique($selectedIds);
|
|
}
|
|
switch($aktion) {
|
|
case 'offen':
|
|
if(!empty($selectedIds)) {
|
|
$this->app->DB->Update(
|
|
sprintf(
|
|
"UPDATE `lieferschein`
|
|
SET `versendet` = 0, `status` = 'freigegeben', `schreibschutz` = 0
|
|
WHERE `id` IN (%s)",
|
|
implode(',' , $selectedIds)
|
|
)
|
|
);
|
|
}
|
|
break;
|
|
case 'storniert':
|
|
$deliveryNotes = empty($selectedIds)? null: $this->app->DB->SelectArr(
|
|
sprintf(
|
|
'SELECT id, projekt, status FROM lieferschein WHERE id IN (%s)',
|
|
implode(',', $selectedIds)
|
|
)
|
|
);
|
|
if(empty($deliveryNotes)) {
|
|
$deliveryNotes = [];
|
|
}
|
|
foreach($deliveryNotes as $deliveryNote) {
|
|
$deliveryNoteId = $deliveryNote['id'];
|
|
$projekt = $deliveryNote['projekt'];
|
|
$status = $deliveryNote['status'];
|
|
if($status==='angelegt' || $status=='') {
|
|
$this->app->erp->DeleteLieferschein($deliveryNoteId);
|
|
continue;
|
|
}
|
|
if(class_exists('LieferscheinPDFCustom')) {
|
|
$Brief = new LieferscheinPDFCustom($this->app,$projekt);
|
|
}
|
|
else{
|
|
$Brief = new LieferscheinPDF($this->app,$projekt);
|
|
}
|
|
$Brief->GetLieferschein($deliveryNoteId);
|
|
$tmpfile = $Brief->displayTMP();
|
|
$Brief->ArchiviereDocument();
|
|
$this->app->erp->LieferscheinProtokoll($v,'Lieferschein storniert');
|
|
$this->app->DB->Update(
|
|
sprintf(
|
|
"UPDATE lieferschein
|
|
SET status='storniert',schreibschutz=1, versendet = 1
|
|
WHERE id = %d AND status!='angelegt'
|
|
LIMIT 1",
|
|
$deliveryNoteId
|
|
)
|
|
);
|
|
@unlink($tmpfile);
|
|
}
|
|
break;
|
|
case 'versendet':
|
|
$deliveryNotes = empty($selectedIds)?[]: $this->app->DB->SelectPairs(
|
|
sprintf(
|
|
'SELECT id, projekt FROM lieferschein WHERE id in (%s)', implode(',', $selectedIds)
|
|
)
|
|
);
|
|
foreach($deliveryNotes as $deliveryNoteId => $projectId) {
|
|
if(class_exists('LieferscheinPDFCustom')) {
|
|
$Brief = new LieferscheinPDFCustom($this->app,$projectId);
|
|
}
|
|
else{
|
|
$Brief = new LieferscheinPDF($this->app,$projectId);
|
|
}
|
|
$this->app->DB->Update(
|
|
sprintf(
|
|
"UPDATE lieferschein
|
|
SET schreibschutz=1, versendet = 1, status='versendet'
|
|
WHERE id = %d
|
|
AND status != 'storniert'
|
|
LIMIT 1",
|
|
$deliveryNoteId
|
|
)
|
|
);
|
|
$this->app->erp->LieferscheinProtokoll($deliveryNoteId, 'Lieferschein versendet');
|
|
$Brief->GetLieferschein($deliveryNoteId);
|
|
$tmpfile = $Brief->displayTMP();
|
|
$Brief->ArchiviereDocument();
|
|
@unlink($tmpfile);
|
|
}
|
|
break;
|
|
case 'drucken':
|
|
if($drucker) {
|
|
$this->app->User->SetParameter('lieferschein_list_drucker', $drucker);
|
|
$deliveryNotes = empty($selectedIds)?[]: $this->app->DB->SelectPairs(
|
|
sprintf(
|
|
'SELECT id, projekt FROM lieferschein WHERE id in (%s)', implode(',', $selectedIds)
|
|
)
|
|
);
|
|
foreach($deliveryNotes as $deliveryNoteId => $projectId) {
|
|
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();
|
|
$this->app->printer->Drucken($drucker,$tmpfile);
|
|
$doctype = 'lieferschein';
|
|
$adressId = $this->app->DB->Select("SELECT adresse FROM lieferschein WHERE id = '$deliveryNoteId' LIMIT 1");
|
|
$this->app->erp->RunHook('dokumentsend_ende', 5, $doctype, $deliveryNoteId, $projectId, $adressId, $aktion);
|
|
$this->app->erp->LieferscheinProtokoll($deliveryNoteId, 'Lieferschein versendet');
|
|
$this->app->DB->Update(
|
|
sprintf(
|
|
"UPDATE lieferschein
|
|
SET schreibschutz=1, versendet = 1, status='versendet'
|
|
WHERE id = %d
|
|
AND status != 'storniert'
|
|
LIMIT 1",
|
|
$deliveryNoteId
|
|
)
|
|
);
|
|
@unlink($tmpfile);
|
|
}
|
|
}
|
|
break;
|
|
case 'pdf':
|
|
$tmpfile = [];
|
|
$deliveryNotes = empty($selectedIds)?[]: $this->app->DB->SelectPairs(
|
|
sprintf(
|
|
'SELECT id, projekt FROM lieferschein WHERE id in (%s)', implode(',', $selectedIds)
|
|
)
|
|
);
|
|
foreach($deliveryNotes as $deliveryNoteId => $projectId) {
|
|
if(class_exists('LieferscheinPDFCustom')) {
|
|
$Brief = new LieferscheinPDFCustom($this->app,$projectId);
|
|
}
|
|
else{
|
|
$Brief = new LieferscheinPDF($this->app,$projectId);
|
|
}
|
|
$Brief->GetLieferschein($deliveryNoteId);
|
|
$tmpfile[] = $Brief->displayTMP();
|
|
}
|
|
|
|
if((!empty($tmpfile)?count($tmpfile):0) > 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;
|
|
case 'versanduebergabe':
|
|
if(!empty($selectedIds)) {
|
|
$this->app->DB->Update(
|
|
sprintf(
|
|
"UPDATE `lieferschein`
|
|
SET `versand_status` = 1
|
|
WHERE `id` IN (%s) AND `versand_status` = 0",
|
|
implode(',' , $selectedIds)
|
|
)
|
|
);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
$speichern = $this->app->Secure->GetPOST("speichern");
|
|
$lieferantenretoureinfo = $this->app->Secure->GetPOST("lieferantenretoureinfo");
|
|
$lieferscheinid = $this->app->Secure->GetPOST("lieferscheinid");
|
|
|
|
if($lieferantenretoureinfo!="" && $speichern!="" && $lieferscheinid > 0)
|
|
$this->app->DB->Update("UPDATE lieferschein SET lieferantenretoureinfo='$lieferantenretoureinfo' WHERE id='$lieferscheinid' LIMIT 1");
|
|
|
|
|
|
|
|
$this->app->Tpl->Set('UEBERSCHRIFT',"Lieferscheine");
|
|
|
|
$backurl = $this->app->Secure->GetGET("backurl");
|
|
$backurl = $this->app->erp->base64_url_decode($backurl);
|
|
|
|
// $this->app->Tpl->Add(KURZUEBERSCHRIFT,"Lieferscheine");
|
|
$this->app->erp->MenuEintrag("index.php?module=lieferschein&action=list","Übersicht");
|
|
$this->app->erp->MenuEintrag("index.php?module=lieferschein&action=create","Neuen Lieferschein anlegen");
|
|
|
|
if(strlen($backurl)>5)
|
|
$this->app->erp->MenuEintrag("$backurl","Zurück zur Übersicht");
|
|
else
|
|
$this->app->erp->MenuEintrag("index.php","Zurück zur Übersicht");
|
|
|
|
$status = $this->app->DB->SelectArr('
|
|
SELECT
|
|
status
|
|
FROM
|
|
lieferschein
|
|
GROUP BY
|
|
status
|
|
');
|
|
|
|
$statusStr = '';
|
|
if ($status) {
|
|
foreach ($status as $statusE) {
|
|
if (empty($statusE['status'])) {
|
|
continue;
|
|
}
|
|
$statusStr .= '<option name="' . $statusE['status'] . '">' . ucfirst($statusE['status']) . '</option>';
|
|
}
|
|
}
|
|
|
|
$versandarten = $this->app->DB->SelectArr('
|
|
SELECT
|
|
versandart
|
|
FROM
|
|
lieferschein
|
|
GROUP BY
|
|
versandart
|
|
');
|
|
|
|
$versandartenStr = '';
|
|
if ($versandarten) {
|
|
foreach ($versandarten as $versandart) {
|
|
if (empty($versandart['versandart'])) {
|
|
continue;
|
|
}
|
|
$versandartenStr .= '<option name="' . $versandart['versandart'] . '">' . ucfirst($versandart['versandart']) . '</option>';
|
|
}
|
|
}
|
|
|
|
$laender = $this->app->erp->GetSelectLaenderliste();
|
|
$laenderStr = '';
|
|
foreach ($laender as $landKey => $land) {
|
|
$laenderStr .= '<option value="' . $landKey . '">' . $land . '</option>';
|
|
}
|
|
|
|
|
|
$this->app->YUI->DatePicker("datumVon");
|
|
$this->app->YUI->DatePicker("datumBis");
|
|
$this->app->YUI->AutoComplete("projekt", "projektname", 1);
|
|
$this->app->YUI->AutoComplete("kundennummer", "kunde", 1);
|
|
$this->app->YUI->AutoComplete("lieferscheinnummer", "lieferschein", 1);
|
|
$this->app->YUI->AutoComplete("artikel", "artikelnummer", 1);
|
|
|
|
$this->app->Tpl->Add('STATUS',$statusStr);
|
|
$this->app->Tpl->Add('VERSANDARTEN',$versandartenStr);
|
|
$this->app->Tpl->Add('LAENDER',$laenderStr);
|
|
|
|
$this->app->Tpl->Parse('TAB1',"lieferschein_table_filter.tpl");
|
|
|
|
//$this->app->YUI->TableSearch('TAB2','lieferscheineoffene', 'show','','',basename(__FILE__), __CLASS__);
|
|
$this->app->YUI->TableSearch('TAB1',"lieferscheine");
|
|
$this->app->YUI->TableSearch('TAB3','lieferscheineinbearbeitung', 'show','','',basename(__FILE__), __CLASS__);
|
|
|
|
$this->app->Tpl->Set('SELDRUCKER', $this->app->erp->GetSelectDrucker($this->app->User->GetParameter('lieferschein_list_drucker')));
|
|
|
|
$this->app->Tpl->Parse('PAGE',"lieferscheinuebersicht.tpl");
|
|
}
|
|
|
|
public function DeleteLieferschein($id)
|
|
{
|
|
if($id <= 0)
|
|
{
|
|
return;
|
|
}
|
|
$this->app->DB->Delete("DELETE FROM lieferschein_position WHERE lieferschein='$id'");
|
|
$this->app->DB->Delete("DELETE FROM lieferschein_protokoll WHERE lieferschein='$id'");
|
|
$this->app->DB->Delete("DELETE FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
}
|
|
|
|
public function CreateLieferschein($adresse='')
|
|
{
|
|
$projekt = $this->app->erp->GetCreateProjekt($adresse);
|
|
|
|
$standardlager = $this->app->DB->Select("SELECT l.id FROM projekt p INNER JOIN lager l ON p.standardlager = l.id WHERE p.id = '$projekt' LIMIT 1");
|
|
|
|
$belegmax = '';
|
|
$ohnebriefpapier = $this->app->erp->Firmendaten('lieferschein_ohnebriefpapier');
|
|
$this->app->DB->Insert("INSERT INTO lieferschein (datum,bearbeiter,firma,belegnr,adresse,ohne_briefpapier,projekt)
|
|
VALUES (NOW(),'".$this->app->User->GetName()."','".$this->app->User->GetFirma()."','$belegmax','$adresse','".$ohnebriefpapier."','".$projekt."')");
|
|
$id = $this->app->DB->GetInsertID();
|
|
|
|
$this->app->erp->LieferscheinProtokoll($id,'Lieferschein angelegt');
|
|
if($standardlager){
|
|
$this->app->DB->Update("UPDATE lieferschein SET standardlager = '$standardlager' WHERE id = '$id' LIMIT 1");
|
|
}
|
|
$type='lieferschein';
|
|
$this->app->erp->ObjektProtokoll($type,$id,$type.'_create',ucfirst($type).' angelegt');
|
|
$this->app->erp->SchnellFreigabe($type,$id);
|
|
|
|
$this->app->erp->EventAPIAdd('EventLieferscheinCreate',$id,'lieferschein','create');
|
|
return $id;
|
|
}
|
|
|
|
public function LoadLieferscheinStandardwerte($id,$adresse,$lieferantenretoure=false)
|
|
{
|
|
$arr = $this->app->DB->SelectRow("SELECT * FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1");
|
|
$field = array('anschreiben','name','abteilung','unterabteilung','strasse','adresszusatz','plz','ort','land','bundesstaat','ustid','email','telefon','telefax','kundennummer','projekt','ust_befreit','typ','titel','lieferbedingung','ansprechpartner');
|
|
|
|
|
|
$rolle_projekt = $this->app->DB->Select("SELECT parameter FROM adresse_rolle WHERE adresse='$adresse' AND subjekt='Kunde' AND objekt='Projekt' AND (bis ='0000-00-00' OR bis <= NOW()) LIMIT 1");
|
|
|
|
if($rolle_projekt > 0)
|
|
{
|
|
$arr['projekt'] = $rolle_projekt;
|
|
}
|
|
|
|
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[$value]);
|
|
$uparr[$value] = str_replace("'", ''',$arr[$value]);
|
|
}
|
|
}
|
|
$uparr['adresse']=$adresse;
|
|
|
|
if($lieferantenretoure)
|
|
{
|
|
$uparr['lieferant']=$adresse;
|
|
$uparr['lieferantenretoure'] = 1;
|
|
}
|
|
|
|
$this->app->DB->UpdateArr('lieferschein',$id,'id',$uparr,true);
|
|
$uparr=null;
|
|
|
|
//liefernantenvorlage
|
|
$arr = $this->app->DB->SelectRow("SELECT * 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['projekt'] = $uparr['projekt'];
|
|
$this->app->Secure->POST['projekt']=$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='".$arr['projekt']."' AND id > 0 LIMIT 1");
|
|
}
|
|
|
|
$field = array('versandart');
|
|
foreach($field as $key=>$value)
|
|
{
|
|
$uparr[$value] = $arr[$value];
|
|
$this->app->Secure->POST[$value] = $arr[$value];
|
|
}
|
|
|
|
if($uparr['versandart']==''){
|
|
$uparr['versandart'] = $this->app->erp->StandardVersandart($arr['projekt']);
|
|
}
|
|
|
|
$this->app->DB->UpdateArr('lieferschein',$id,'id',$uparr,true);
|
|
|
|
$this->app->erp->LoadStandardLieferadresse($adresse,$id,'lieferschein');
|
|
$this->app->erp->LoadAdresseStandard('lieferschein',$id,$adresse);
|
|
$this->app->erp->RunHook('erpapi_loadlieferscheinstandardwerte',2, $id, $adresse);
|
|
}
|
|
|
|
public function CopyLieferschein($id)
|
|
{
|
|
$this->app->DB->Insert('INSERT INTO lieferschein (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,bearbeiter,'angelegt' as status,typ,standardlager,ansprechpartner,titel,anschreiben,sprache,kostenstelle,
|
|
firma,bundesstaat,keinerechnung,ihrebestellnummer,lieferbedingung,internebezeichnung,lieferantenretoure,lieferant FROM lieferschein WHERE id='$id' LIMIT 1");
|
|
$this->app->DB->UpdateArr('lieferschein',$newid,'id',$arr, true);
|
|
$pos = $this->app->DB->SelectArr("SELECT * FROM lieferschein_position WHERE lieferschein='$id'");
|
|
$cpos = !empty((!empty($pos)?count($pos):0))?count($pos):0;
|
|
for($i=0;$i<$cpos;$i++){
|
|
$this->app->DB->Insert("INSERT INTO lieferschein_position (lieferschein) VALUES ($newid)");
|
|
$newposid = $this->app->DB->GetInsertID();
|
|
$altzuneu[$pos[$i]['id']] = $newposid;
|
|
$pos[$i]['lagertext']='';
|
|
$pos[$i]['lieferschein']=$newid;
|
|
if($pos[$i]['explodiert_parent'] && isset($altzuneu[$pos[$i]['explodiert_parent']])){
|
|
$pos[$i]['explodiert_parent'] = $altzuneu[$pos[$i]['explodiert_parent']];
|
|
}
|
|
$this->app->DB->UpdateArr('lieferschein_position',$newposid,'id',$pos[$i], true);
|
|
}
|
|
$this->app->erp->CheckFreifelder('lieferschein',$newid);
|
|
$this->app->erp->CopyBelegZwischenpositionen('lieferschein',$id,'lieferschein',$newid);
|
|
$this->app->DB->Update("UPDATE lieferschein_position SET geliefert=0, abgerechnet=0 WHERE lieferschein='$newid'");
|
|
|
|
$this->app->erp->SchnellFreigabe('lieferschein',$newid);
|
|
$this->app->erp->LieferscheinNeuberechnen($newid);
|
|
|
|
return $newid;
|
|
}
|
|
|
|
public function AddLieferscheinPosition($lieferschein, $verkauf,$menge,$datum)
|
|
{
|
|
$artikel = $this->app->DB->Select("SELECT artikel FROM verkaufspreise WHERE id='$verkauf' LIMIT 1");
|
|
$bezeichnunglieferant = $this->app->DB->Select("SELECT name_de FROM artikel WHERE id='$artikel' LIMIT 1");
|
|
$bestellnummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='$artikel' LIMIT 1");
|
|
$projekt = $this->app->DB->Select("SELECT projekt FROM verkaufspreise WHERE id='$verkauf' LIMIT 1");
|
|
$vpe = '';
|
|
//$waehrung = $this->app->DB->Select("SELECT waehrung FROM verkaufspreise WHERE id='$verkauf' LIMIT 1");
|
|
//$vpe = $this->app->DB->Select("SELECT vpe FROM verkaufspreise WHERE id='$verkauf' LIMIT 1");
|
|
$sort = $this->app->DB->Select("SELECT MAX(sort) FROM lieferschein_position WHERE lieferschein='$lieferschein' LIMIT 1");
|
|
$sort++;
|
|
$this->app->DB->Insert("INSERT INTO lieferschein_position (lieferschein,artikel,bezeichnung,nummer,menge,sort,lieferdatum,status,projekt,vpe)
|
|
VALUES ('$lieferschein','$artikel','$bezeichnunglieferant','$bestellnummer','$menge','$sort','$datum','angelegt','$projekt','$vpe')");
|
|
}
|
|
|
|
public function AddLieferscheinPositionArtikelID($lieferschein, $artikel,$menge,$bezeichnung,$beschreibung,$datum)
|
|
{
|
|
$bestellnummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='$artikel' LIMIT 1");
|
|
|
|
if($bezeichnung==''){
|
|
$bezeichnung = $this->app->DB->Select("SELECT name_de FROM artikel WHERE id='$artikel' LIMIT 1");
|
|
}
|
|
$vpe = '';
|
|
$projekt = 0;
|
|
$sort = $this->app->DB->Select("SELECT MAX(sort) FROM lieferschein_position WHERE lieferschein='$lieferschein' LIMIT 1");
|
|
$sort++;
|
|
$this->app->DB->Insert("INSERT INTO lieferschein_position (lieferschein,artikel,bezeichnung,beschreibung,nummer,menge,sort,lieferdatum,status,projekt,vpe)
|
|
VALUES ('$lieferschein','$artikel','$bezeichnung','$beschreibung','$bestellnummer','$menge','$sort','$datum','angelegt','$projekt','$vpe')");
|
|
}
|
|
|
|
/**
|
|
* @param int $lieferschein
|
|
* @param bool|string $justStorage
|
|
*
|
|
* @return bool|array
|
|
*/
|
|
public function LieferscheinCheck($lieferschein, $justStorage = false)
|
|
{
|
|
$lagercheckjustStorage = $justStorage;
|
|
if($justStorage === 'article') {
|
|
$lagercheckjustStorage = false;
|
|
}
|
|
$adresse = 0;
|
|
$positionen_vorhanden = null;
|
|
$artikelzaehlen=null;
|
|
if($lieferschein > 0){
|
|
$artikelarr = $this->app->DB->SelectArr(
|
|
"SELECT ap.id, ap.artikel, ap.menge, ap.geliefert, art.lagerartikel as artlagerartikel,
|
|
ap.nummer,art.chargenverwaltung,art.mindesthaltbarkeitsdatum,art.seriennummern
|
|
FROM lieferschein_position AS ap
|
|
LEFT JOIN artikel AS art ON ap.artikel = art.id
|
|
WHERE ap.lieferschein='$lieferschein' AND ap.geliefert < ap.menge ");
|
|
}
|
|
$cartikelarr = !empty($artikelarr)?count($artikelarr):0;
|
|
for($k=0;$k<$cartikelarr; $k++) {
|
|
$menge = $artikelarr[$k]['menge'] - $artikelarr[$k]['gelieferte'];
|
|
$artikel = $artikelarr[$k]['artikel'];
|
|
$artikel_position_id = $artikelarr[$k]['id'];
|
|
$lagerartikel = $artikelarr[$k]['artlagerartikel'];
|
|
if($lagerartikel==1)
|
|
{
|
|
$gesamte_menge_im_lieferschein= $this->app->DB->Select("SELECT SUM(menge-geliefert) FROM lieferschein_position WHERE lieferschein='$lieferschein' AND artikel='$artikel'");
|
|
if($gesamte_menge_im_lieferschein > $menge) {
|
|
$menge = $gesamte_menge_im_lieferschein;
|
|
}
|
|
|
|
if($this->app->erp->LagerCheck($adresse,$artikel,$menge,'lieferschein',$lieferschein, $lagercheckjustStorage)>0){
|
|
$positionen_vorhanden++;
|
|
}
|
|
else {
|
|
if($justStorage === 'article') {
|
|
return $artikelarr[$k];
|
|
}
|
|
return false;
|
|
}
|
|
$artikelzaehlen++;
|
|
}
|
|
}
|
|
|
|
if($positionen_vorhanden==$artikelzaehlen && $positionen_vorhanden !=null && $artikelzaehlen!=null){
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|