";
$sumcol = array(7,9);
$alignright = array(5,6,7,8,9);
// SQL statement
//$sql = "SELECT SQL_CALC_FOUND_ROWS l.id, a.nummer, a.name_de, CONCAT(la.bezeichnung,' / ',lp.kurzbezeichnung) , ".$this->app->erp->FormatMenge('l.menge').",FORMAT(IFNULL((SELECT e.preis FROM einkaufspreise e WHERE e.geloescht!=1 AND (e.gueltig_bis='0000-00-00' OR e.gueltig_bis <=NOW()) AND e.artikel=l.artikel ORDER by e.id DESC LIMIT 1),0),2{$extended_mysql55}) as preis, FORMAT(IFNULL((SELECT e.preis FROM einkaufspreise e WHERE e.geloescht!=1 AND (e.gueltig_bis='0000-00-00' OR e.gueltig_bis <=NOW()) AND e.artikel=l.artikel ORDER by e.id DESC LIMIT 1),0)*l.menge,2{$extended_mysql55}) as wert, a.id FROM lager_platz_inhalt l LEFT JOIN artikel a ON a.id=l.artikel LEFT JOIN lager_platz lp ON lp.id=l.lager_platz LEFT JOIN lager la ON la.id=lp.lager";
$sql = "SELECT SQL_CALC_FOUND_ROWS l.id, a.nummer, a.name_de, p.abkuerzung, CONCAT(la.bezeichnung,' / ',lp.kurzbezeichnung) ,".$app->erp->FormatMenge('l.menge').",
FORMAT(IFNULL(k.minpreis,0),2{$extended_mysql55}) as preis,
FORMAT(IFNULL(k.minpreis,0)*l.menge,2{$extended_mysql55}) as wert,FORMAT(IFNULL(a.inventurek,0),2{$extended_mysql55}) as inv,FORMAT(IFNULL(a.inventurek,0)*l.menge,2{$extended_mysql55}) as invges, a.id
FROM lager_platz_inhalt l LEFT JOIN artikel a ON a.id=l.artikel
LEFT JOIN (SELECT max( e.id ) AS maxid, artikel
FROM einkaufspreise e
WHERE e.geloescht !=1
AND (
e.gueltig_bis = '0000-00-00'
OR e.gueltig_bis >= NOW( )
)
GROUP BY artikel) k1 ON k1.artikel = a.id
LEFT JOIN (SELECT id, preis as minpreis FROM einkaufspreise ) k ON k1.maxid = k.id
LEFT JOIN projekt p ON p.id=a.projekt
LEFT JOIN lager_platz lp ON lp.id=l.lager_platz
LEFT JOIN lager la ON la.id=lp.lager";
$where = " a.id > 0 AND a.geloescht!=1 ";
//$groupby=" GROUP by z.adresse_abrechnung ";
// gesamt anzahl
$count = "SELECT COUNT(l.id) FROM lager_platz_inhalt l LEFT JOIN artikel a ON a.id=l.artikel WHERE a.id > 0 AND a.geloescht!=1";
break;
case 'lagerplatztabelle':
$allowed['lager'] = array('platz');
// headings
$heading = array('Bezeichnung', 'Nachschublager', 'Verbrauchslager','POS Lager', 'kein Auto-Versand','Volumen','Regalart','Kategorie','Kommissions- / Produktionslager','Sortierung','Menü');
$width = array('15%', '10%', '10%','5%','5%','10%','10%','5%','10%','8%','1%');
$findcols = array('l.kurzbezeichnung', "IF(l.autolagersperre,'kein Versand aus diesem Lager','')", "IF(l.verbrauchslager,'ja','')","IF(l.poslager,'ja','')","IF(l.sperrlager,'ja','')",'breite','regalart','abckategorie','a.name','l.rownumber','id');
$searchsql = array('l.kurzbezeichnung','regalart','abckategorie','a.name');
$defaultorder = 4;
$defaultorderdesc = 1;
$alignright = [10];
$menu = "
";
$alignright = array(7);
$numbercols = array(6);
$menucol = 5;
//$moreinfo = true;
$sql = "
SELECT
SQL_CALC_FOUND_ROWS t.rid,
t.kunde,
t.typ,
t.belegnr,
t.status,
t.Artikelnummer,
t.Artikel,
".$app->erp->FormatMenge('t.menge').",
t.projekt,
t.grund,
t.rid
FROM
(
(
SELECT r.id as rid, adr.name as kunde,'Auftrag' as typ,if(auf.belegnr = '','ENTWURF',auf.belegnr) as belegnr ,if(auf.status = '','angelegt',auf.status) as status, a.nummer as Artikelnummer, a.name_de as Artikel,r.menge,p.abkuerzung as projekt,r.grund, r.id FROM lager_reserviert r LEFT JOIN artikel a ON a.id=r.artikel LEFT JOIN projekt p ON
p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id
INNER JOIN auftrag auf ON auf.id = r.parameter AND r.objekt = 'auftrag'
)
UNION ALL
(
SELECT r.id as rid, adr.name as kunde,'Lieferschein' as typ,if(l.belegnr = '','ENTWURF',l.belegnr) as belegnr ,if(l.status = '','angelegt',l.status) as status, a.nummer as Artikelnummer, a.name_de as Artikel,r.menge,p.abkuerzung as projekt,r.grund, r.id FROM lager_reserviert r LEFT JOIN artikel a ON a.id=r.artikel LEFT JOIN projekt p ON
p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id
INNER JOIN lieferschein l ON l.id = r.parameter AND r.objekt = 'lieferschein'
)
UNION ALL
(
SELECT r.id as rid, adr.name as kunde,'Produktion' as typ,if(l.belegnr = '','ENTWURF',l.belegnr) as belegnr ,if(l.status = '','angelegt',l.status) as status, a.nummer as Artikelnummer, a.name_de as Artikel,r.menge,p.abkuerzung as projekt,r.grund, r.id FROM lager_reserviert r LEFT JOIN artikel a ON a.id=r.artikel LEFT JOIN projekt p ON
p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id
INNER JOIN produktion l ON l.id = r.parameter AND r.objekt = 'produktion'
)
UNION ALL
(
SELECT r.id as rid, adr.name as kunde,'Auftrag' as typ,'GELÖSCHT' as belegnr ,'GELÖSCHT' as status, a.nummer as Artikelnummer, a.name_de as Artikel,r.menge,p.abkuerzung as projekt,r.grund, r.id FROM lager_reserviert r LEFT JOIN artikel a ON a.id=r.artikel LEFT JOIN projekt p ON
p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id
LEFT JOIN auftrag auf ON auf.id = r.parameter AND r.objekt = 'auftrag' WHERE isnull(auf.id) AND r.objekt = 'auftrag'
)
UNION ALL
(
SELECT r.id as rid, adr.name as kunde,'Lieferschein' as typ,'GELÖSCHT' as belegnr ,'GELÖSCHT' as status, a.nummer as Artikelnummer, a.name_de as Artikel,r.menge,p.abkuerzung as projekt,r.grund, r.id FROM lager_reserviert r LEFT JOIN artikel a ON a.id=r.artikel LEFT JOIN projekt p ON
p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id
LEFT JOIN lieferschein l ON l.id = r.parameter AND r.objekt = 'lieferschein' WHERE isnull(l.id) AND r.objekt = 'lieferschein'
)
UNION ALL
(
SELECT r.id as rid, adr.name as kunde,'Produktion' as typ,'GELÖSCHT' as belegnr ,'GELÖSCHT' as status, a.nummer as Artikelnummer, a.name_de as Artikel,r.menge,p.abkuerzung as projekt,r.grund, r.id FROM lager_reserviert r LEFT JOIN artikel a ON a.id=r.artikel LEFT JOIN projekt p ON
p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id
LEFT JOIN produktion l ON l.id = r.parameter AND r.objekt = 'produktion' WHERE isnull(l.id) AND r.objekt = 'produktion'
)
UNION ALL
(
SELECT r.id as rid, adr.name as kunde,r.objekt as typ,'' as belegnr , '' as status, a.nummer as Artikelnummer, a.name_de as Artikel, r.menge,p.abkuerzung as projekt,r.grund, r.id FROM lager_reserviert r LEFT JOIN artikel a ON a.id=r.artikel LEFT JOIN projekt p ON
p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id WHERE r.objekt <> 'auftrag' AND r.objekt <> 'lieferschein' AND r.objekt <> 'produktion'
)
) t
";
//$count = "select count(distinct ms.datum) FROM mitarbeiterzeiterfassung_sollstunden ms where ms.adresse = '$adresse' AND ms.datum >= '$von' AND ms.datum <= '$bis'";
$count = "SELECT count(r.id) FROM lager_reserviert r";
break;
case "lager_nachschublager":
$allowed['lager'] = array('nachschublager');
$heading = array('Nummer','Name','Nachschublager','Nachschublagerplatz','Lagerbestand','Menge','Lagervorschlag', 'Lagerbestand','Menge Lager (Min)','Menge Lager (Max)', 'Umzulagernde Menge', '');
$width = array('10%','20%','5%','5%','10%','10%','10%', '10%', '10%', '10%','10%','1%');
$findcols = array('a.nummer', 'a.name_de','l.bezeichnung', 'lp.kurzbezeichnung', 's.amount','vorschlag.needed', 'lp2.kurzbezeichnung', 'vorschlag.amount', 's.amount','vorschlag.storage_min_amount','vorschlag.storage_max_amount', 's.id');
$searchsql = array('a.nummer', 'a.name_de','l.bezeichnung', 'lp.kurzbezeichnung', $app->erp->FormatMenge('s.amount'),
'lp2.kurzbezeichnung', $app->erp->FormatMenge('vorschlag.amount'), $app->erp->FormatMenge('s.amount_to_relocate'));
$defaultorder = 1;
$defaultorderdesc = 0;
$alignright = array(5,6,7,8,9,10,11);
$numbercols = array(4,5,6,7,8, 9,10);
$where = "s.is_replenishment = 1 AND vorschlag.is_replenishment = 0";
$sql = "SELECT SQL_CALC_FOUND_ROWS s.id, a.nummer, a.name_de, l.bezeichnung, lp.kurzbezeichnung,
".$app->erp->FormatMenge('s.amount').",
".$app->erp->FormatMenge('vorschlag.needed').",
lp2.kurzbezeichnung,
".$app->erp->FormatMenge('vorschlag.amount').",
IF(vorschlag.storage_min_amount > 0, ".$app->erp->FormatMenge('vorschlag.storage_min_amount').",'-'),
IF(vorschlag.storage_max_amount > 0,".$app->erp->FormatMenge('vorschlag.storage_max_amount').",'-'),
".$app->erp->FormatMenge(
'IF(
vorschlag.storage_min_amount > 0 AND vorschlag.storage_min_amount >s.amount_to_relocate,
IF(s.amount > vorschlag.storage_min_amount, vorschlag.storage_min_amount,s.amount),
IF(s.amount >s.amount_to_relocate, s.amount_to_relocate,s.amount)
)').", s.id
FROM stock_replenishment_list s
LEFT JOIN artikel a ON s.article_id = a.id
JOIN lager_platz lp ON lp.id = s.storage_area_id
LEFT JOIN lager l ON l.id=lp.lager
LEFT JOIN stock_replenishment_list vorschlag ON s.article_id = vorschlag.article_id
JOIN lager_platz lp2 ON lp2.id = vorschlag.storage_area_id";
break;
}
$erg = [];
foreach($erlaubtevars as $k => $v)
{
if(isset($$v))
{
$erg[$v] = $$v;
}
}
return $erg;
}
/**
* Lager constructor.
*
* @param Application $app
* @param bool $intern
*/
public function __construct($app, $intern = false) {
$this->app = $app;
if($intern) {
return;
}
$this->app->ActionHandlerInit($this);
$this->app->ActionHandler("create", "LagerCreate");
$this->app->ActionHandler("edit", "LagerEdit");
$this->app->ActionHandler("list", "LagerList");
$this->app->ActionHandler("platz", "LagerPlatz");
//$this->app->ActionHandler("bewegung", "LagerBewegung");
$this->app->ActionHandler("bewegung", "LagerBewegungPopup");
$this->app->ActionHandler("allebewegungen", "LagerAlleBewegungen");
$this->app->ActionHandler("inhalt", "LagerInhalt");
$this->app->ActionHandler("pdf", "LagerPDF");
$this->app->ActionHandler("bestand", "LagerBestand");
$this->app->ActionHandler("wert", "LagerWert");
$this->app->ActionHandler("platzeditpopup", "LagerPlatzEditPopup");
$this->app->ActionHandler("delete", "LagerDelete");
$this->app->ActionHandler("deleteplatz", "LagerPlatzDelete");
$this->app->ActionHandler("etiketten", "LagerEtiketten");
$this->app->ActionHandler("etikettenlist", "LagerEtikettenlist");
$this->app->ActionHandler("zwischenlager", "LagerZwischenlager");
$this->app->ActionHandler("regaletiketten", "LagerRegalEtiketten");
$this->app->ActionHandler("reservierungen", "LagerReservierungen");
$this->app->ActionHandler("buchen", "LagerBuchen");
$this->app->ActionHandler("buchenzwischenlager", "LagerBuchenZwischenlager");
$this->app->ActionHandler("buchenzwischenlagerdelete", "LagerBuchenZwischenlagerDelete");
$this->app->ActionHandler("bucheneinlagern", "LagerBuchenEinlagern");
$this->app->ActionHandler("buchenauslagern", "LagerBuchenAuslagern");
$this->app->ActionHandler("artikelentfernenreserviert", "LagerArtikelEntfernenReserviert");
$this->app->ActionHandler("letztebewegungen", "LagerLetzteBewegungen");
$this->app->ActionHandler("schnelleinlagern", "LagerSchnellEinlagern");
$this->app->ActionHandler("wert", "LagerWert");
$this->app->ActionHandler("wert2", "LagerWert2");
$this->app->ActionHandler("schnellumlagern", "LagerSchnellUmlagern");
$this->app->ActionHandler("schnellauslagern", "LagerSchnellAuslagern");
$this->app->ActionHandler("differenzen", "LagerDifferenzen");
$this->app->ActionHandler("differenzenlagerplatz", "LagerDifferenzenLagerplatz");
$this->erstes=0;
$id = $this->app->Secure->GetGET('id');
$nummer = $this->app->Secure->GetPOST('nummer');
if ($nummer == '' && $id > 0)
{
$lager = $this->app->DB->Select("SELECT bezeichnung FROM lager WHERE id='$id' LIMIT 1");
}
else
{
$lager = $nummer;
}
$woher = $this->app->Secure->GetPOST('woher');
$action = $this->app->Secure->GetGET('action');
$cmd = $this->app->Secure->GetGET('cmd');
$this->app->erp->Headlines('Lager');
if ($action === 'bucheneinlagern')
{
if ($cmd === 'zwischenlager')
{
$lager = 'Zwischenlager';
}
else {
$lager = 'Manuelle Lageranpassung';
}
}
$this->app->Tpl->Set('UEBERSCHRIFT', 'Lager: ' . $lager);
$this->app->ActionHandlerListen($app);
}
public function Install()
{
$this->cleanUpInvalidStorages();
}
public function cleanUpInvalidStorages(): void
{
$hasStorageLocationWithEmptyNameOrStorage = $this->app->DB->Select(
"SELECT COUNT(`id`) FROM `lager_platz` WHERE (`kurzbezeichnung` = '' OR `lager` = 0) LIMIT 1"
) > 0;
if($hasStorageLocationWithEmptyNameOrStorage) {
$this->app->DB->Delete(
"DELETE `lp`
FROM `lager_platz` AS `lp`
LEFT JOIN `lager_platz_inhalt` AS `lpi` ON lp.id = lpi.lager_platz
WHERE (lp.kurzbezeichnung = '' OR `lager` = 0) AND lpi.id IS NULL"
);
}
$hasStorageLocationsWithZeroId = $this->app->DB->Select("SELECT COUNT(`id`) FROM `lager_platz` WHERE `id` = 0") > 0;
if($hasStorageLocationsWithZeroId) {
$this->app->DB->Delete("DELETE FROM `lager_platz` WHERE `id` = 0");
$this->app->erp->CheckAlterTable(
"ALTER TABLE `lager_platz` ADD PRIMARY KEY (`id`)"
);
$this->app->erp->CheckAlterTable("ALTER TABLE `lager_platz` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT");
if(!empty($this->app->DB->error())) {
$this->app->erp->repairNullIds('lager_platz', 'kurzbezeichnung');
}
}
$hasStoragesWithZeroId = $this->app->DB->Select("SELECT COUNT(`id`) FROM `lager` WHERE `id` = 0") > 0;
if($hasStoragesWithZeroId) {
$this->app->DB->Delete(
"DELETE `l`
FROM `lager` AS `l`
LEFT JOIN `lager_platz` AS `lp` ON l.id = lp.lager AND lp.geloescht = 0
WHERE l.id = 0 AND lp.id IS NULL"
);
$hasStoragesWithZeroId = $this->app->DB->Select("SELECT COUNT(`id`) FROM `lager` WHERE `id` = 0") > 0;
if(!$hasStoragesWithZeroId) {
$this->app->erp->CheckAlterTable(
"ALTER TABLE `lager` ADD PRIMARY KEY (`id`)"
);
$this->app->erp->CheckAlterTable("ALTER TABLE `lager` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT");
if(empty($this->app->DB->error())) {
return;
}
}
$this->app->erp->repairNullIds('lager', 'bezeichnung');
}
$this->removeDoubledNamedStorageLocations();
$this->removeDoubledNamedStorages();
}
public function removeDoubledNamedStorages(): void
{
$storageWithSameName = $this->app->DB->SelectFirstCols(
"SELECT `bezeichnung`
FROM `lager`
WHERE `geloescht` = 0 OR `geloescht` IS NULL
GROUP BY `bezeichnung`
HAVING COUNT(`id`) > 1"
);
if(empty($storageWithSameName)) {
return;
}
$nameString = implode("', '", array_map([$this->app->DB, 'real_escape_string'], $storageWithSameName));
$storageWithSameName = $this->app->DB->SelectArr(
"SELECT l.id, l.bezeichnung, lp.lager
FROM `lager` AS `l`
LEFT JOIN (
SELECT `lager` FROM `lager_platz` WHERE `geloescht` = 0 OR `geloescht` IS NULL GROUP BY `lager`
) AS `lp` ON l.id = lp.lager
WHERE (l.geloescht IS NULL OR l.geloescht = 0) AND l.bezeichnung IN ('{$nameString}')
ORDER BY l.bezeichnung, lp.lager DESC"
);
if(empty($storageWithSameName)) {
return;
}
$lastStorageName = null;
foreach($storageWithSameName as $storage) {
if($storage['bezeichnung'] !== $lastStorageName) {
$lastStorageName = $storage['bezeichnung'];
continue;
}
if(!empty($storage['lager'])) {
continue;
}
$this->app->DB->Delete("UPDATE `lager` SET `geloescht` = 1 WHERE `id` = {$storage['id']}");
}
}
public function removeDoubledNamedStorageLocations(): void
{
$storageLocationsWithSameName = $this->app->DB->SelectFirstCols(
"SELECT `kurzbezeichnung`
FROM `lager_platz`
WHERE `geloescht` = 0 OR `geloescht` IS NULL
GROUP BY `kurzbezeichnung`
HAVING COUNT(`id`) > 1"
);
if(empty($storageLocationsWithSameName)) {
return;
}
$nameString = implode("', '", array_map([$this->app->DB, 'real_escape_string'], $storageLocationsWithSameName));
$storageLocationsWithSameName = $this->app->DB->SelectArr(
"SELECT lp.id, lp.kurzbezeichnung, lpi.lager_platz
FROM `lager_platz` AS `lp`
LEFT JOIN (
SELECT `lager_platz` FROM `lager_platz_inhalt` GROUP BY `lager_platz`
) AS `lpi` ON lp.id = lpi.lager_platz
WHERE (lp.geloescht IS NULL OR lp.geloescht = 0) AND lp.kurzbezeichnung IN ('{$nameString}')
ORDER BY lp.kurzbezeichnung, lpi.lager_platz DESC"
);
if(empty($storageLocationsWithSameName)) {
return;
}
$lastStorageName = null;
foreach($storageLocationsWithSameName as $storage) {
if($storage['kurzbezeichnung'] !== $lastStorageName) {
$lastStorageName = $storage['kurzbezeichnung'];
continue;
}
if(!empty($storage['lager_platz'])) {
continue;
}
$this->app->DB->Delete("UPDATE `lager_platz` SET `geloescht` = 1 WHERE `id` = {$storage['id']}");
}
}
public function LagerSchnellEinlagern()
{
$this->LagerBuchenMenu();
$submit = $this->app->Secure->GetPOST('submit');
$nummer = $this->app->Secure->GetPOST('nummer');
$menge = $this->app->Secure->GetPOST('menge');
$grundreferenz = $this->app->Secure->GetPOST('grundreferenz');
if($submit!="")
{
}
$this->app->YUI->AutoComplete('nummer','lagerartikelnummer');
$this->app->YUI->AutoComplete('grundreferenz','lagergrund');
$this->app->Tpl->Parse('TAB1',"lager_schnelleinlagern.tpl");
$this->app->Tpl->Parse('PAGE',"tabview.tpl");
}
function LagerAbsolutInventur($artikel,$lager_platz = false)
{
if ($lager_platz) {
$query = "
SELECT
menge,
referenz
FROM
lager_bewegung
WHERE
artikel='".$artikel."'
AND
eingang=1
AND
permanenteinventur<=0
AND
referenz LIKE 'Inventur%'
";
$query .= " AND lager_platz = '" . $lager_platz . "' ";
} else {
$query = "
SELECT
lb.menge,
lb.referenz
FROM
lager_bewegung lb
LEFT JOIN lager_platz l ON l.id=lb.lager_platz
WHERE
lb.artikel='".$artikel."'
AND
lb.eingang=1
AND
lb.permanenteinventur<=0
AND
lb.referenz LIKE 'Inventur%'
AND l.verbrauchslager!=1
";
}
$eingang = 0;
$ausgang = 0;
$result = $this->app->DB->SelectArr($query);
$cresult = !empty($result)?count($result):0;
for($i=0;$i<$cresult;$i++)
{
$tmp_eingang = trim(str_replace('neu:','',strstr ( $result[$i]['referenz'] , "neu:", false)));
if($tmp_eingang != $result[$i]['menge'])
{
// TODO alte Menge auf korrekte neue setzten!
$eingang += $tmp_eingang;
} else {
$eingang += $result[$i]['menge'];
}
$pattern = '/alt:(.*?)neu:/';
preg_match($pattern, $result[$i]['referenz'], $matches);
$tmp_ausgang = trim($matches[1]);
if(is_numeric($tmp_ausgang))
{
$ausgang += $tmp_ausgang;
}
}
return $eingang - $ausgang;//$this->app->DB->Select("SELECT SUM(menge) FROM lager_bewegung WHERE artikel='".$artikelarr[$i]."' AND eingang=1");
}
/**
* @param int $artikel
* @param bool $lager_platz
*
* @return float|null
*/
function LagerAbsolutEingang($artikel, $lager_platz = false)
{
if ($lager_platz) {
$query = "
SELECT
SUM(menge)
FROM
lager_bewegung
WHERE
artikel='".$artikel."'
AND
eingang=1
AND
permanenteinventur<=0
AND
referenz
NOT LIKE 'Inventur%'
";
$query .= " AND lager_platz = '" . $lager_platz . "' ";
} else {
$query = "
SELECT
SUM(lb.menge)
FROM
lager_bewegung lb
LEFT JOIN lager_platz l ON l.id=lb.lager_platz
WHERE
lb.artikel='".$artikel."'
AND
lb.eingang=1
AND
lb.permanenteinventur<=0
AND
lb.referenz
NOT LIKE 'Inventur%'
AND
l.verbrauchslager!=1
";
}
return $this->app->DB->Select($query);
}
/**
* @param int $artikel
* @param bool $lager_platz
*
* @return float|null
*/
function LagerAbsolutAusgang($artikel, $lager_platz = false)
{
if ($lager_platz) {
$query = "
SELECT
SUM(menge)
FROM
lager_bewegung
WHERE
artikel='".$artikel."'
AND
eingang=0
AND
permanenteinventur<=0
AND
referenz
NOT LIKE 'Inventur%'
";
$query .= " AND lager_platz = '" . $lager_platz . "' ";
} else {
$query = "
SELECT
SUM(lb.menge)
FROM
lager_bewegung lb
LEFT JOIN lager_platz l ON l.id=lb.lager_platz
WHERE
lb.artikel='".$artikel."'
AND
lb.eingang=0
AND
lb.permanenteinventur<=0
AND
lb.referenz
NOT LIKE 'Inventur%'
AND
l.verbrauchslager!=1
";
}
return $this->app->DB->Select($query);
}
public function LagerDifferenzen()
{
$this->LagerHauptmenu();
$this->app->Tpl->Set('VERS','Enterprise');
$this->app->Tpl->Set('MODUL','Enterprise');
$this->app->Tpl->Parse('PAGE', "only_version.tpl");
}
public function LagerDifferenzenLagerplatz() {
$this->LagerHauptmenu();
$this->app->Tpl->Set('VERS','Enterprise');
$this->app->Tpl->Set('MODUL','Enterprise');
$this->app->Tpl->Parse('PAGE', "only_version.tpl");
}
public function LagerSchnellUmlagern()
{
$this->LagerBuchenMenu();
$submit = $this->app->Secure->GetPOST('submit');
$nummer = $this->app->Secure->GetPOST('nummer');
$get_nummer = $this->app->Secure->GetGET('nummer');
$menge = $this->app->Secure->GetPOST('menge');
$grundreferenz = $this->app->Secure->GetPOST('grundreferenz');
$ziellager = $this->app->Secure->GetPOST('ziellager');
if($get_nummer!=''){
$this->app->Tpl->Set('FOCUS', 'ziellager');
}
else{
$this->app->Tpl->Set('FOCUS', 'nummer');
}
$lager_platz = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung='$ziellager' AND kurzbezeichnung!='' LIMIT 1");
if($lager_platz<=0 && $ziellager > 0)
{
$lager_platz = $this->app->DB->Select("SELECT id FROM lager_platz WHERE id='$ziellager' LIMIT 1");
$ziellager = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='$lager_platz' LIMIT 1");
}
if($grundreferenz!='') {
$this->app->User->SetParameter('lager_schnellumlagern_grund',$grundreferenz);
}
if($ziellager!='') {
$this->app->User->SetParameter('lager_schnellumlagern_ziellager',$ziellager);
}
if($submit!='')
{
$artikelid = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' AND nummer!='' LIMIT 1");
if($artikelid <=0)
$artikelid = $this->app->DB->Select("SELECT id FROM artikel WHERE ean='$nummer' AND ean!='' AND geloescht <> 1 LIMIT 1");
if($artikelid <=0)
$artikelid = $this->app->DB->Select("SELECT id FROM artikel WHERE herstellernummer='$nummer' AND herstellernummer!='' AND geloescht <> 1 LIMIT 1");
$name_de = $this->app->DB->Select("SELECT CONCAT(nummer,' ',name_de) FROM artikel WHERE id='$artikelid' LIMIT 1");
//$projekt = $this->app->DB->Select("SELECT projekt FROM artikel WHERE id='$artikelid' LIMIT 1");
if($artikelid > 0 && $lager_platz > 0)
{
$anzahl_artikel = $this->app->DB->Select("SELECT SUM(menge) FROM lager_platz_inhalt WHERE artikel='$artikelid'");
if($anzahl_artikel >= $menge)
{
// auslagern bevorzugt aus lager_platz ansonsten von den anderen
$this->app->erp->LagerAutoAuslagernArtikel($artikelid,$menge,$grundreferenz);
// einlagern lager_platz
$this->app->erp->LagerEinlagern($artikelid,$menge,$lager_platz,$projekt,$grundreferenz);
$msg = $this->app->erp->base64_url_encode("
In diesem Lager existieren noch Lagerplätze. Es können nur leere Lager gelöscht werden!
');
}
else {
$this->app->DB->Select(sprintf('DELETE FROM lager WHERE id=%d LIMIT 1', (int)$id));
$msg = $this->app->erp->base64_url_encode('
Das Lager wurde gelöscht!
');
}
$ref = $_SERVER['HTTP_REFERER'];
if(($pos = strpos($ref,'&msg=')) > 0) {
$ref = substr($ref, 0, $pos);
}
if(empty($ref)) {
$ref = 'index.php?module=lager&action=list';
}
$this->app->Location->execute($ref.'&msg='.$msg);
}
public function LagerArtikelEntfernenReserviert() {
$reservierung = $this->app->Secure->GetGET('reservierung');
if (is_numeric($reservierung)) {
$this->app->DB->Delete("DELETE FROM lager_reserviert WHERE id='$reservierung'");
}
$this->app->Location->execute('index.php?module=lager&action=reservierungen');
}
function LagerBuchen() {;
$this->LagerBuchenZwischenlager();
}
function LagerKalkMenu() {
$this->app->erp->Headlines('Bestellvorschlag');
if($this->app->erp->RechteVorhanden('schnellproduktion','bestellvorschlag')) {
$this->app->erp->MenuEintrag('index.php?module=schnellproduktion&action=bestellvorschlag','Produktionsartikel Bestellvorschlag');
}
}
function LagerBuchenZwischenlager() {
$this->LagerBuchenMenu();
//$this->app->Tpl->Set(TABTEXT, "Zwischenlager");
$this->app->erp->Headlines('Zwischenlager');
$this->app->Tpl->Set('SUBSUBHEADING', '{|EINGANG Zwischenlager Stand|} ' . date('d.m.Y'));
// easy table mit arbeitspaketen YUI als template
if($this->app->User->GetType()==='admin'){
$delete = "";
}
/*$table = new EasyTable($this->app);
$table->Query("SELECT a.name_de as artikel,a.nummer as nummer,z.menge,z.vpe,z.grund, p.abkuerzung as projekt, z.id FROM zwischenlager z LEFT JOIN artikel a ON a.id=z.artikel LEFT JOIN projekt p ON
p.id=z.projekt WHERE z.richtung='eingang'");
$table->DisplayNew('INHALT', " $delete");
*/
$this->app->YUI->TableSearch('INHALT', 'lager_zwischenlager_eingang', 'show','','',basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('TAB1', 'rahmen70.tpl');
$this->app->Tpl->Set('INHALT', '');
$this->app->Tpl->Set('SUBSUBHEADING', '{|AUSGANG Zwischenlager Stand|} ' . date('d.m.Y'));
// easy table mit arbeitspaketen YUI als template
/*$table = new EasyTable($this->app);
$table->Query("SELECT a.name_de as artikel,z.menge,z.vpe,z.grund, p.abkuerzung as projekt, z.id FROM zwischenlager z LEFT JOIN artikel a ON a.id=z.artikel LEFT JOIN projekt p ON
p.id=z.projekt WHERE z.richtung='ausgang' ORDER by z.id DESC");
$table->DisplayNew('INHALT', " $delete");
*/
$this->app->YUI->TableSearch('INHALT', 'lager_zwischenlager_ausgang', 'show','','',basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('TAB1', 'rahmen70.tpl');
$this->app->Tpl->Set('AKTIV_TAB1', 'selected');
$this->app->Tpl->Add('TAB1','');
$this->app->Tpl->Parse('PAGE', 'tabview.tpl');
}
function LagerBuchenEinlagern() {
session_start();
$this->LagerBuchenMenu();
$this->app->erp->Headlines('Lager', 'Einlagern');
$id = $this->app->Secure->GetGET('id');
$cmd = $this->app->Secure->GetGET('cmd'); // vom zwischen lager!
$menge = str_replace(',','.',$this->app->Secure->GetPOST('menge'));
$submit = $this->app->Secure->GetPOST('submit');
$back = $this->app->Secure->GetGET('back');
$vpeid = $this->app->Secure->GetGET('vpeid');
$chargesnmhdbemerkung = $this->app->Secure->GetPOST('chargesnmhdbemerkung');
$grund = $this->app->Secure->GetPOST('grund');
$artikelid = $this->app->Secure->GetGET('artikelid');
$artikelbeschreibung = $this->app->DB->Select("SELECT CONCAT(nummer,' ',name_de) FROM artikel WHERE id='$artikelid' AND lagerartikel=1 LIMIT 1");
if($back==='artikel' && $artikelid!='')
{
$menge_anzeige = $this->app->Secure->GetGET('menge');
$this->app->Tpl->Set('NEINDOCHNICHTSTART','');
}
$this->app->YUI->AutoComplete('projekt','projektname');
$this->app->YUI->AutoComplete('nummer','lagerartikelnummer',1);
$this->app->YUI->AutoComplete('regal','lagerplatz');
$this->app->YUI->AutoComplete('grundreferenz','lagergrund');
if($cmd==='zwischenlager')
{
$this->app->Tpl->Set('MENGEREADONLY','readonly');
$this->app->Tpl->Set('WOHERREADONLYSTART','');
$mhd = $this->app->DB->SelectArr("SELECT * FROM lager_mindesthaltbarkeitsdatum WHERE zwischenlagerid='$id'");
$cmhd = !empty($mhd)?count($mhd):0;
for($i=1;$i<=$cmhd;$i++)
{
$this->app->Tpl->Add('SRNINFO',"
MHD: ".$mhd[$i-1]['mhddatum']."
");
$this->app->Tpl->Add('MHDVALUE',$this->app->String->Convert($mhd[$i-1]['mhddatum'],"%3-%2-%1","%1.%2.%3"));
}
$charge = $this->app->DB->SelectArr("SELECT * FROM lager_charge WHERE zwischenlagerid='$id'");
$ccharge = !empty($charge)?count($charge):0;
for($i=1;$i<=$ccharge;$i++)
{
$this->app->Tpl->Add('SRNINFO',"
Charge: ".$charge[$i-1]['charge']."
");
}
$srn = $this->app->DB->SelectArr("SELECT * FROM lager_seriennummern WHERE zwischenlagerid='$id'");
$csrn = !empty($srn)?count($srn):0;
for($i=1;$i<=$csrn;$i++)
{
$this->app->Tpl->Add('SRNINFO',"
Seriennummer: ".$srn[$i-1]['seriennummer']."
");
}
$this->app->Tpl->Set('SHOWCHRSTART','');
if((!empty($mhd)?count($mhd):0) <=0)
{
$this->app->Tpl->Set('SHOWMHDSTART','');
}
$this->app->Tpl->Set('SHOWSRNSTART','');
} else {
$this->app->Tpl->Set('WOHERREADONLYSTART2','');
}
// wenn projekt angeben
if ($this->app->Secure->GetPOST('projekt') != '')
{
$projekt = $this->app->Secure->GetPOST('projekt');
$projekt = explode(' ', $projekt);
$projekt = $projekt[0];
if(!is_numeric($projekt))
$projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
$_SESSION['projekt'] = $projekt;
}
$projekt = $_SESSION['projekt'];
$regal = $this->app->Secure->GetPOST('regal');
$frmRegal = $regal;
$submitStorageLocationId = $this->app->Secure->GetGET('submitstoragelocationid');
$storageLocationId = $this->app->Secure->GetGET('storagelocationid');
$interimonconsumption = $this->app->Secure->GetGET('interimonconsumption');
$comment = $this->app->Secure->GetGET('comment');
$suggestedbestbeforebatch = $this->app->Secure->GetPOST('suggestedbestbeforebatch');
if(empty($suggestedbestbeforebatch)) {
$suggestedbestbeforebatch = $this->app->Secure->GetGET('suggestedbestbeforebatch');
}
$this->app->Tpl->Set('SUGGESTEDBATCHBEFORE', $suggestedbestbeforebatch);
$regal_id = 0;
if((!empty($submitStorageLocationId) || !empty($storageLocationId)) && empty($submit) && empty($regal)) {
$submit = !empty($submitStorageLocationId);
$regal_id = !empty($submitStorageLocationId)?$submitStorageLocationId:$storageLocationId;
if(empty($grund)) {
$grund = $comment;
}
$regal = $this->app->DB->Select(
sprintf(
'SELECT kurzbezeichnung FROM lager_platz WHERE id = %d LIMIT 1',
$regal_id
)
);
$frmRegal = $regal;
}
if((String)$regal!=='') {
$regal_id = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung='$regal' LIMIT 1");
}
if(is_numeric($regal_id)){
$regal = $regal_id;
}
$nummer = $this->app->Secure->GetPOST('nummer');
//$nummer = explode(' ', $nummer);
//$nummer = $nummer[0];
if ((String)$nummer === '' && $cmd !== 'zwischenlager' && $artikelid=='') {
$this->app->Tpl->Set('MSGARTIKEL', " {|Jetzt Artikel abscannen!|}");
$this->app->Tpl->Set('ARTIKELSTYLE', "style=\"border: 2px solid red;width:200px;\"");
}
$woher = $this->app->Secure->GetPOST('woher');
$zwischenlagerid = $this->app->Secure->GetPOST('zwischenlager');
$menge = str_replace(',','.',$this->app->Secure->GetPOST('menge'));
$grundreferenz = $this->app->Secure->GetPOST('grundreferenz');
// hier nur rein wenn artikel lager und projekt sinn machen sonst
//message ausgeben und artikel wirklich aus zwischenlager
$alles_komplett = 0;
if ($woher === 'Zwischenlager' && $zwischenlagerid <= 0) {
$grund.= "
Artikel kommt nicht aus Zwischenlager!
";
$alles_komplett++;
}
$artikel_tmp = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' AND nummer!='' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$ean = $this->app->DB->Select("SELECT id FROM artikel WHERE ean='$nummer' AND ean!='' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
if($artikel_tmp <=0 && $ean > 0)
{
$artikel_tmp = $ean;
$nummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='$ean' AND lagerartikel=1 LIMIT 1");
}
$artikelcheck = $this->app->DB->Select("SELECT id FROM artikel WHERE id='$artikel_tmp' AND lagerartikel=1 LIMIT 1");
$artikel_quickcheck = 0;
if ($submit !='' && ($artikelcheck != $artikel_tmp || $artikel_tmp == '' || $artikel_tmp == 0)) {
$grund.= "
Artikel-Nummer gibt es nicht!
";
$alles_komplett++;
$artikel_quickcheck = 1;
}
// gibts regal
$regalcheck = $this->app->DB->Select("SELECT id FROM lager_platz WHERE id='$regal' LIMIT 1");
if ($regalcheck != $regal) {
$grund.= "
Achtung! Bitte alle Pflichtfelder (Regal, MHD, Charge, Seriennummer) ausfüllen!
");
}
if ($alles_komplett == 0 && $regal != '') {
$artikel = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$name = $this->app->DB->Select("SELECT name_de FROM artikel WHERE id='$artikel' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$einheit = $this->app->DB->Select("SELECT einheit FROM artikel WHERE id='$artikel' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
// pruefe ob es einen ek fuers projekt gibt sonst meckern!!!
//echo "buchen entweder aus zwischenlager, prpoduktion oder so";
if ($woher === 'Zwischenlager') {
$this->app->erp->LagerEinlagerVomZwischenlager($zwischenlagerid, $menge, $regal, $projekt,$grundreferenz);
$gesamt = $this->app->DB->Select("SELECT SUM(menge) FROM lager_platz_inhalt WHERE artikel='$artikel' AND lager_platz='$regal'");
$gesamt_alle = $this->app->DB->Select("SELECT SUM(menge) FROM lager_platz_inhalt WHERE artikel='$artikel'");
if(is_float($menge) || is_numeric($menge))
{
$msg = $this->app->erp->base64_url_encode("
Der Artikel $name wurde $menge mal eingelagert. Anzahl Regal: ".(float)$gesamt." $einheit Anzahl Komplettbestand alle Regale: ".(float)$gesamt_alle." $einheit
Fehler: Unbekannte oder falsche Menge: $menge bei Artikel \"$name\". Der Artikel wurde nicht eingelagert!
");
}
$this->app->Location->execute('index.php?module=lager&action=buchenzwischenlager&msg='.$msg);
}
if ($woher === 'Manuelle Lageranpassung'){
$_SESSION['projekt'] = $projekt;
$this->app->erp->LagerEinlagernDifferenz($artikel, $menge, $regal, $projekt,$grundreferenz,"",(int)$this->app->Secure->GetGET('vpeid'));
//$this->app->erp->LogFile("ETIKETT1 A $artikel M $menge R $regal"); //BENE
//$data['lager_platz_name'] = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='$regal'");
//$this->app->erp->EtikettenDrucker("artikel_klein",1,'artikel',$artikel,$data);
$gesamt = $this->app->DB->Select("SELECT SUM(menge) FROM lager_platz_inhalt WHERE artikel='$artikel' AND lager_platz='$regal'");
$gesamt_alle = $this->app->DB->Select("SELECT SUM(menge) FROM lager_platz_inhalt WHERE artikel='$artikel'");
if(is_float($menge) || is_numeric($menge))
{
$msg = $this->app->erp->base64_url_encode("
Der Artikel $name wurde $menge mal eingelagert. Anzahl Regal: ".(float)$gesamt." $einheit Anzahl Komplettbestand alle Regale: ".(float)$gesamt_alle." $einheit
");
if(trim($einheit) != ''){
$name_de .= " (Einheit: ".$einheit.")";
}
$this->app->Tpl->Set('NAMEDE',$name_de);
if($lagermeist!="" || $lagermeist!=0){
$this->app->Tpl->Set('LAGERMEIST',"$lagermeist ({|aktuell am meisten im Lager|})");
if($lagerbezeichnung!='' && $lagerbezeichnung!=='Regal frei wählen')
$this->app->Tpl->Add('LAGERMEIST'," $lagerbezeichnung ({|Standardlager|})");
} else {
$this->app->Tpl->Set('LAGERBEZEICHNUNG',"$lagerbezeichnung");
}
$this->app->Tpl->Set('REGALVALUE',$frmRegal);
$this->app->Tpl->Parse('ZWISCHENLAGERINFO', 'lager_regal.tpl');
} else {
//falsche artikelnummer
$nummer = '';
$this->app->Tpl->Set('MSGARTIKEL', ' {|Jetzt Artikel abscannen!|}');
$this->app->Tpl->Set('ARTIKELSTYLE', 'style="border: 2px solid red"');
$this->app->Tpl->Set('ZWISCHENLAGERINFO', '');
$this->app->Tpl->Set('SHOWCHRSTART','');
$this->app->Tpl->Set('SHOWMHDSTART','');
$this->app->Tpl->Set('SHOWSRNSTART','');
}
} else {
$this->app->Tpl->Set('ZWISCHENLAGERINFO', '');
if($artikel <=0)
{
$this->app->Tpl->Set('SHOWCHRSTART','');
$this->app->Tpl->Set('SHOWMHDSTART','');
$this->app->Tpl->Set('SHOWSRNSTART','');
}
}
}
$this->app->Tpl->Set('NAME', $name_de);
if (!isset($_SESSION['woher']) || $_SESSION['woher'] == '') {
$_SESSION['woher'] = 'Manuelle Lageranpassung';
}
if ($_SESSION['woher'] === "Zwischenlager") {
$this->app->Tpl->Set('ZWISCHENLAGER', "selected");
}
if ($_SESSION['woher'] === "Produktion") {
$this->app->Tpl->Set('PRODUKTION', "selected");
}
if ($_SESSION['woher'] === "Manuelle Lageranpassung") {
$this->app->Tpl->Set('DIFFERENZ', "selected");
}
if ($_SESSION['woher'] === "Umlagern") {
$this->app->Tpl->Set('UMLAGERN', "selected");
}
$projekt = $_SESSION['projekt'];
if($cmd==='umlagern' && $this->app->Secure->GetPOST('menge')=='')
$menge = (float)str_replace(',','.',$this->app->Secure->GetGET('menge'));
if($cmd==='umlagern' && $this->app->Secure->GetPOST('grund')=='')
$grundreferenz = $this->app->erp->base64_url_decode($this->app->Secure->GetGET('grund'));
if(empty($grundreferenz) && !empty($comment))
{
$grundreferenz = $comment;
}
// aus zwischenlager
$menge_get = str_replace(',','.',$this->app->Secure->GetGET('menge'));
if($menge_get > 0) {
$menge = $menge_get;
}
$this->app->Tpl->Set('MENGE', $this->app->erp->ReplaceMenge(0,(String)$menge,0));
$this->app->Tpl->Set('GRUNDREFERENZ', $grundreferenz);
$this->app->Tpl->Set('NUMMER', $nummer);
$this->app->Tpl->Set('VPE', $vpe);
$pr_name = $this->app->DB->Select("SELECT CONCAT(abkuerzung) FROM projekt WHERE id='$projekt' LIMIT 1");
$this->app->Tpl->Set('PROJEKT', $pr_name);//$this->app->erp->GetProjektSelect($projekt, &$color_selected));
//$this->app->Tpl->Set(TABTEXT, "Einlagern");
$this->app->Tpl->Parse('TAB1', "einlagern.tpl");
$this->app->Tpl->Parse('PAGE', 'tabview.tpl');
}
function LagerBuchenAuslagern() {
$this->LagerBuchenMenu();
$cmd = $this->app->Secure->GetGET('cmd');
$action = $this->app->Secure->GetGET('action');
$error = 0;
$this->app->Tpl->Set('CMD',$cmd);
$this->app->Tpl->Set('ACTION',$action);
if($this->app->erp->Version()==='stock')
{
$this->app->Tpl->Set('STARTDISABLESTOCK', '');
}
session_start();
if($cmd==='umlagern') {
//$this->app->Tpl->Set(TABTEXT, "Auslagern");
$this->app->Tpl->Set('STARTNICHTUMLAGERN', '');
}
else {
//$this->app->Tpl->Set(TABTEXT, "Auslagern");
$this->app->Tpl->Set('STARTUMLAGERN', '');
}
$this->app->Tpl->Set('FOCUSFIELD','document.getElementById("nummer").focus();');
$this->app->erp->Headlines('Lager', 'Auslagern');
// checken ob die daten passen
$nummer = $this->app->Secure->GetPOST('nummer');
$grund = $this->app->Secure->GetPOST('grund');
$grundreferenz = $this->app->Secure->GetPOST('grundreferenz');
$adresse = $this->app->Secure->GetPOST('adresse');
$projekt = $this->app->Secure->GetPOST('projekt');
$menge = str_replace(',','.',$this->app->Secure->GetPOST('menge'));
$submit = $this->app->Secure->GetPOST('submit');
$artikelid = $this->app->Secure->GetGET('artikelid');
$regal = $this->app->Secure->GetPOST('regal');
$regalneu = $this->app->Secure->GetPOST("regalneu");
$comment = $this->app->Secure->GetGET('comment');
$amount = $this->app->Secure->GetGET('amount');
if(empty($amount)) {
$amount = $this->app->Secure->GetGET('menge');
}
if(empty($grundreferenz)) {
$grundreferenz = $comment;
}
$frmRegal = $regal;
$allowSubmit = true;
$submitStorageLocationId = $this->app->Secure->GetGET('submitstoragelocationid');
$interimonconsumption = $this->app->Secure->GetGET('interimonconsumption');
$storageLocationId = $this->app->Secure->GetGET('storagelocationid');
$regal_id = 0;
if((!empty($submitStorageLocationId) || !empty($storageLocationId)) && empty($submit) && empty($regal)) {
$submit = !empty($submitStorageLocationId)?'1':'';
if(!$submit && empty($this->app->Secure->POST)) {
$allowSubmit = false;
}
$regal_id = !empty($submitStorageLocationId)?$submitStorageLocationId:$storageLocationId;
$regal = $this->app->DB->Select(
sprintf(
'SELECT kurzbezeichnung FROM lager_platz WHERE id = %d LIMIT 1',
$regal_id
)
);
$frmRegal = $regal;
}
$frmMenge = $menge;
if ($menge == '' || $menge == '0') {
$menge = 1;
}
//session_close();
if($projekt!=''){
$_SESSION['projekt'] = $projekt;
}
$projekt= $_SESSION['projekt'];
// $nummer = explode(' ', $nummer);
// $nummer = $nummer[0];
if ($this->app->Secure->GetPOST('nummer') != '' || $artikelid > 0) {
$nummer = $this->app->Secure->GetPOST('nummer');
//$nummer = explode(' ', $nummer);
//$nummer = $nummer[0];
if($artikelid > 0){
$nummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='$artikelid' AND lagerartikel=1 LIMIT 1");
$checkartikel = $this->app->DB->Select("SELECT id FROM artikel WHERE id='$artikelid' AND lagerartikel=1 LIMIT 1");
$artikel = $artikelid;
if($allowSubmit) {
$submit='1';
}
$this->app->Tpl->Set('NUMMER', $nummer);
}
}
$projekt = explode(' ', $projekt);
$projekt = $projekt[0];
if(empty($regal_id)){
$regal_id = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung='$regal' AND kurzbezeichnung!='' LIMIT 1");
}
if(is_numeric($regal_id))
$regal = $regal_id;
$regalneu_id = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung='$regalneu' AND kurzbezeichnung!='' LIMIT 1");
if(is_numeric($regalneu_id))
$regalneu = $regalneu_id;
if ($submit != '') {
//projekt pruefen
$checkprojekt = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
$projektid = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
if ($projekt == "" || $checkprojekt != $projekt) {
//$error++;
//$this->app->Tpl->Set(MSGPROJEKT,"Projekt gibt es nicht!");
$projektid = $this->app->DB->Select("SELECT standardprojekt FROM firma WHERE id='" . $this->app->User->GetFirma() . "' LIMIT 1");
}
//adresse pruefen
$adressearray = explode(' ', $adresse);
$checkadresse = $this->app->DB->Select("SELECT id FROM adresse WHERE id='{$adressearray[0]}' LIMIT 1");
$checkname = $this->app->DB->Select("SELECT name FROM adresse WHERE id='{$adressearray[0]}' LIMIT 1");
/*
if (!is_numeric($adressearray[0]) || $adressearray[0] != $checkadresse) {
$error++;
$this->app->Tpl->Set('MESSAGE', "
Bitte eine gültige Adresse angeben!
");
}
*/
if (!is_numeric($menge) || $menge == 0) {
$error++;
$this->app->Tpl->Set('MSGMENGE', "Wert ist keine Zahl oder Null.");
}
$ean = $this->app->DB->Select("SELECT id FROM artikel WHERE ean='$nummer' AND ean!='' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$artikel_tmp = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
if($artikel_tmp <=0 && $ean > 0)
{
$artikel_tmp = $ean;
$nummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='$ean' LIMIT 1");
}
$checkartikel = $this->app->DB->Select("SELECT nummer FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$artikel = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$name_de = $this->app->DB->Select("SELECT name_de FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$einheit = $this->app->DB->Select("SELECT einheit FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$seriennummer = $this->app->DB->Select("SELECT seriennummern FROM artikel WHERE nummer='{$nummer}' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
if($seriennummer === 'keine') {
$seriennummer = '';
}
if ($nummer != $checkartikel && ($nummer!=''||$nummer!=0)) {
$error++;
$this->app->Tpl->Set('MESSAGE', "
{|Diese Artikelnummer gibt es nicht, oder der Artikel ist kein Lagerartikel!|}
");
$nummer = '';
}
//z.B. es liegen 1 1 5 und man will 6 haben
$checkregal = $this->app->DB->Select("SELECT id FROM lager_platz WHERE id='$regal' LIMIT 1");
$checkregalneu = $this->app->DB->Select("SELECT id FROM lager_platz WHERE id='$regalneu' LIMIT 1");
if (($regal != '' && $checkregal == $regal) && $error == 0) {
//regal gibt schon mal liegt jetzt der artikel noch in diesem regal?
$summe = $this->app->DB->Select("SELECT SUM(menge) FROM lager_platz_inhalt WHERE lager_platz='$regal' AND artikel='$artikel'");
if ($summe <= 0) {
$this->app->Tpl->Set('MESSAGELAGER', "
{|Artikel gibt es in diesem Regal nicht!|}
");
} else if ($summe < $menge) {
$this->app->Tpl->Set('MESSAGELAGER', "
{|Zu wenig Artikel im Regal! Bitte kleinere Menge wählen!|} ({|Summe|}: $summe)
");
} else {
// zeige alle in dem Lager an sortiert nach MHD
$tmpsrn = false;
$anzmhd = 0;
$anzchargen = 0;
$anzsrn = 0;
$tmpmhd = $this->app->DB->SelectArr("SELECT *, replace(trim(menge)+0,'.',',') as mhdmenge FROM lager_mindesthaltbarkeitsdatum WHERE
lager_platz='$regal' AND artikel='$artikel' ORDER by mhddatum, id");
$tmpcharge = $this->app->DB->SelectArr("SELECT *, replace(trim(menge)+0,'.',',') as cmenge FROM lager_charge WHERE
lager_platz='$regal' AND artikel='$artikel' ORDER by charge, id");
if($tmpmhd) {
foreach($tmpmhd as $v) {
$anzmhd += $v['menge'];
}
}
if($tmpcharge) {
foreach($tmpcharge as $v) {
$anzchargen += $v['menge'];
}
}
$this->app->Tpl->Set('ANZSRN', $anzsrn);
$this->app->Tpl->Set('ANZMHD', $anzmhd);
$this->app->Tpl->Set('ANZCHARGEN', $anzchargen);
$this->app->Tpl->Set('SUMME', $summe);
if($anzsrn > 0) {
$this->app->Tpl->Add('SRNINFO',"
{|MHD|}
{|Seriennummer|}
{|Charge|}
");
} else if ((!empty($tmpmhd)?count($tmpmhd):0) > 0) {
$this->app->Tpl->Add('SRNINFO',"
{|Mindesthalt.|}
{|Charge|}
");
} else if ((!empty($tmpcharge)?count($tmpcharge):0) > 0) {
$this->app->Tpl->Add('SRNINFO',"
");
}
}
}
//$regaltreffer="1";
$this->app->Tpl->Add('ZWISCHENLAGERINFO',"");
$allow = 0;
if($check_seriennummer!=="keine" || $check_charge=="2" || $check_charge=="1" || $check_mhd=="1")
{
if($this->app->Secure->GetPOST("abschluss_auslagern")=="1")
$allow=1;
} else $allow=1;
if($cmd==='umlagern' && $regal > 0 && $checkregalneu!=$regalneu) {
$allow=0;
}
if($cmd==='umlagern' && $regalneu =='' ) {
$allow=0;
}
$this->app->erp->RunHook('lager_buchenauslagern_display1', 4, $artikel, $cmd, $regal, $regalneu);
if($allow){
$lager_srn_id = $this->app->Secure->GetPOST("lager_srn_id");
$lager_mhd_id = $this->app->Secure->GetPOST('lager_mhd_id');
$lager_mhd_menge = $this->app->Secure->GetPOST('lager_mhd_menge');
$lager_mhd_auswahl = $this->app->Secure->GetPOST('lager_mhd_auswahl');
if($lager_mhd_menge)
{
$clager_mhd_id = !empty($lager_mhd_id)?count($lager_mhd_id):0;
for($q=0;$q<$clager_mhd_id;$q++){
if($lager_mhd_auswahl[$q])
{
$lager_mhd_auswahl[$q] = round((float)str_replace(',','.',$lager_mhd_auswahl[$q]),4);
$lager_mhd_menge[$q] = round((float)str_replace(',','.',$lager_mhd_menge[$q]),4);
if($lager_mhd_auswahl[$q] <= $lager_mhd_menge[$q])
{
$passendArr = $this->app->DB->SelectRow("SELECT * FROM lager_mindesthaltbarkeitsdatum WHERE id='".$lager_mhd_id[$q]."' LIMIT 1");
$passende_charge = $passendArr['charge'];
$passende_mhd = $passendArr['mhddatum'];
$passende_lager_platz = $passendArr['lager_platz'];
$isInterim = $interimonconsumption && $this->app->DB->Select(
sprintf(
'SELECT id FROM lager_platz WHERE id = %d AND verbrauchslager = 1',
(int)$passende_lager_platz
)
);
$passende_artikel = $passendArr['artikel'];
$chargenmenge = $lager_mhd_auswahl[$q];
while($chargenmenge > 0)
{
$checkcharge = $this->app->DB->SelectRow(
"SELECT *
FROM `lager_charge`
WHERE `charge`='".$passende_charge."'
AND `lager_platz`='$passende_lager_platz' AND `artikel`='$passende_artikel'
LIMIT 1"
);
if(!$checkcharge) {
break;
}
$checkmenge = $checkcharge['menge'];
if($checkmenge <= 0) {
$this->app->DB->Delete(
sprintf(
'DELETE FROM `lager_charge` WHERE `menge` <= 0 AND `artikel` = %d AND `lager_platz` = %d',
$passende_artikel, $passende_lager_platz
)
);
}
if($checkmenge <= $chargenmenge)
{
$this->app->erp->ChargeAuslagernLog($passende_artikel, $passende_lager_platz, $passende_charge, $chargenmenge['menge'],$grundreferenz!=''?$grundreferenz:'Auslagern', '', 0, $chargenmenge['id'],0,$isInterim);
$chargenmenge -= $checkmenge;
}elseif($checkmenge > $chargenmenge)
{
$this->app->erp->ChargeAuslagernLog($passende_artikel, $passende_lager_platz, $passende_charge, $chargenmenge, $grundreferenz!=''?$grundreferenz:'Auslagern', '', 0, $chargenmenge['id'],0,$isInterim);
$chargenmenge = 0;
break;
}
}
if($lager_mhd_auswahl[$q] == $lager_mhd_menge[$q])
{
$this->app->DB->Delete("DELETE FROM lager_mindesthaltbarkeitsdatum WHERE id = '".$lager_mhd_id[$q]."' LIMIT 1");
}else{
$this->app->DB->Update("UPDATE lager_mindesthaltbarkeitsdatum SET menge = menge - ".$lager_mhd_auswahl[$q]." WHERE id = '".$lager_mhd_id[$q]."' LIMIT 1");
}
$this->app->erp->MHDLog($passende_artikel, $passende_lager_platz, 0, $passende_mhd, $lager_mhd_auswahl[$q], $grundreferenz!=''?$grundreferenz:'manuell auslagern', '', 0, $passende_charge,0, $isInterim);
if($cmd==='umlagern') {
$_passende_mhd = $passende_mhd;
$_passende_charge = $passende_charge;
$_internebemerkung = '';
$this->app->erp->RunHook('lager_buchenauslagern_mhdlagerbewegung',7, $passende_artikel,$lager_mhd_auswahl[$q],$regalneu,$passende_mhd,$passende_charge, $regal,$_internebemerkung);
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($passende_artikel,$lager_mhd_auswahl[$q],$regalneu,$passende_mhd,$passende_charge,"","",0,$_internebemerkung);
$passende_mhd = $_passende_mhd;
$passende_charge = $_passende_charge;
}
}
}
}
}else{
$clager_mhd_id = !empty($lager_mhd_id)?count($lager_mhd_id):0;
for($q=0;$q<$clager_mhd_id;$q++){
$passendArr = $this->app->DB->SelectRow("SELECT * FROM lager_mindesthaltbarkeitsdatum WHERE id='".$lager_mhd_id[$q]."' LIMIT 1");
$passende_charge = $passendArr['charge'];
$passende_mhd = $passendArr['mhddatum'];
$passende_lager_platz = $passendArr['lager_platz'];
$isInterim = $interimonconsumption && $this->app->DB->Select(
sprintf(
'SELECT id FROM lager_platz WHERE id = %d AND verbrauchslager = 1',
(int)$passende_lager_platz
)
);
$passende_artikel = $passendArr['artikel'];
$passende_menge = $passendArr['menge'];
$this->app->DB->Delete("DELETE FROM lager_mindesthaltbarkeitsdatum WHERE id='".$lager_mhd_id[$q]."' LIMIT 1");
$this->app->DB->Delete("DELETE FROM lager_charge WHERE charge='".$passende_charge."'
AND lager_platz='$passende_lager_platz' AND artikel='$passende_artikel' LIMIT 1");
$this->app->erp->MHDLog($passende_artikel, $passende_lager_platz, 0, $passende_mhd,$passende_menge, 'manuell auslagern', "", 0, $passende_charge,0, $isInterim);
// umlagern3
if($cmd==='umlagern')
{
$_passende_mhd = $passende_mhd;
$_passende_charge = $passende_charge;
$_internebemerkung = '';
$this->app->erp->RunHook('lager_buchenauslagern_mhdlagerbewegung',7, $passende_artikel,$passende_menge,$regalneu,$passende_mhd,$passende_charge, $regal, $_internebemerkung);
$this->app->erp->AddMindesthaltbarkeitsdatumLagerOhneBewegung($passende_artikel,$passende_menge<=0?1:$passende_menge,$regalneu,$passende_mhd,$passende_charge,"","",0,$_internebemerkung);
$passende_mhd = $_passende_mhd;
$passende_charge = $_passende_charge;
}
}
}
$lager_charge_id = $this->app->Secure->GetPOST('lager_charge_id');
$lager_charge_menge = $this->app->Secure->GetPOST('lager_charge_menge');
$lager_charge_auswahl = $this->app->Secure->GetPOST('lager_charge_auswahl');
if($lager_charge_menge)
{
$clager_charge_id = !empty($lager_charge_id)?count($lager_charge_id):0;
for($q=0;$q<$clager_charge_id;$q++){
$passende_arr = $this->app->DB->SelectRow("SELECT * FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
if($passende_arr){
$passende_artikel = $passende_arr['artikel'];//$this->app->DB->Select("SELECT artikel FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
$passende_datum = $passende_arr['datum'];//$this->app->DB->Select("SELECT datum FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
$passende_charge = $passende_arr['charge'];//$this->app->DB->Select("SELECT charge FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
$lager_charge_menge[$q] = $passende_arr['menge'];
if($lager_charge_auswahl[$q])
{
$lager_charge_auswahl[$q] = round((float)str_replace(',','.',$lager_charge_auswahl[$q]),4);
//$lager_charge_menge[$q] = round((float)str_replace(',','.',$lager_charge_menge[$q]),4);
if($lager_charge_auswahl[$q] <= $lager_charge_menge[$q])
{
$isInterim = $interimonconsumption && $this->app->DB->Select(
sprintf(
'SELECT id FROM lager_platz WHERE id = %d AND verbrauchslager = 1',
(int)$passende_arr['lager_platz']
)
);
if($lager_charge_auswahl[$q] == $lager_charge_menge[$q])
{
$this->app->erp->ChargeAuslagernLog($passende_artikel, $passende_arr['lager_platz'], $passende_charge, $lager_charge_menge[$q], $grundreferenz!=''?$grundreferenz:'Auslagern', '', 0, $passende_arr['id'],0,$isInterim);
//$this->app->DB->Delete("DELETE FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
//umlagern3
if($cmd==='umlagern') {
$this->app->erp->AddChargeLagerOhneBewegung($passende_artikel,$lager_charge_auswahl[$q],$regalneu,$passende_datum,$passende_charge);
}
}elseif($lager_charge_auswahl[$q] < $lager_charge_menge[$q])
{
$this->app->erp->ChargeAuslagernLog($passende_artikel, $passende_arr['lager_platz'], $passende_charge, $lager_charge_auswahl[$q], $grundreferenz!=''?$grundreferenz:'Auslagern', '', 0, $passende_arr['id'],0,$isInterim);
//$this->app->DB->Update("UPDATE lager_charge set menge = menge - ".$lager_charge_auswahl[$q]." WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
if($cmd==='umlagern') {
$this->app->erp->AddChargeLagerOhneBewegung($passende_artikel,$lager_charge_auswahl[$q],$regalneu,$passende_datum,$passende_charge);
}
}
}
}
}
}
}else{
$clager_charge_id = !empty($lager_charge_id)?count($lager_charge_id):0;
for($q=0;$q<$clager_charge_id;$q++){
$passende_arr = $this->app->DB->SelectRow("SELECT * FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
if($passende_arr)
{
$passende_artikel = $passende_arr['artikel'];//$this->app->DB->Select("SELECT artikel FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
$passende_datum = $passende_arr['datum'];// $this->app->DB->Select("SELECT datum FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
$passende_charge = $passende_arr['charge'];//$this->app->DB->Select("SELECT charge FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
$passende_menge = $passende_arr['menge'];//$this->app->DB->Select("SELECT menge FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
//$this->app->DB->Delete("DELETE FROM lager_charge WHERE id='".$lager_charge_id[$q]."' LIMIT 1");
$isInterim = $interimonconsumption && $this->app->DB->Select(
sprintf(
'SELECT id FROM lager_platz WHERE id = %d AND verbrauchslager = 1',
(int)$passende_arr['lager_platz']
)
);
$this->app->erp->ChargeAuslagernLog($passende_artikel, $passende_arr['lager_platz'], $passende_charge, $passende_menge, $grundreferenz!=''?$grundreferenz:'Auslagern', '', 0, $lager_charge_id[$q],0, $isInterim);
//umlagern3
if($cmd==='umlagern')
{
$this->app->erp->AddChargeLagerOhneBewegung($passende_artikel,$passende_menge<=0?1:$passende_menge,$regalneu,$passende_datum,$passende_charge);
}
}
}
}
if($seriennummer!='') {
$tmp_sn = ' SN:'.$seriennummer;
} else {
$tmp_sn = '';
}
$bestand = $this->app->erp->ArtikelImLager($artikel);
if($grundreferenz!=''){
$grundtext = "$grund für $checkname: $grundreferenz $tmp_sn";
} else {
$grundtext = "$grund $checkname $tmp_sn";
}
// umlagern3 lager_bewegung buchen
// wenn enticklung auf mitarbeiter buchen
if ($grund === 'Entwicklungsmuster') {
$this->app->DB->Insert("INSERT INTO projekt_inventar (id,artikel,menge,bestellung, projekt,
adresse, mitarbeiter, vpe,zeit) VALUES ('','$artikel','$menge','','$projekt','$adresse','" . $this->app->User->GetName() . "', 'einzeln',NOW())");
}
//ziehe menge ab von lager_platz_inhalt
$tmpcheck = $this->app->DB->Select("SELECT id FROM lager_platz_inhalt WHERE lager_platz='$regal' AND artikel='$artikel' AND menge >='$menge' LIMIT 1");
$mengeimregel = $this->app->erp->ArtikelImLagerPlatz($artikel,$regal);
// wenn es ein lager mit genug gibt nimm dieses
//if ($tmpcheck > 0) {
if($mengeimregel >= $menge)
{
$summezumcheckenneu = $mengeimregel - $menge;
$this->app->erp->LagerAuslagernRegal($artikel,$regal,$menge,$projektid,$grundtext);
}elseif($mengeimregel > 0)
{
$this->app->erp->LagerAuslagernRegal($artikel,$regal,$mengeimregel,$projektid,$grundtext);
$summezumcheckenneu = 0;
}
// umlagern3 in lager_platz_inhalt buchen
if($cmd==='umlagern')
{
$this->app->erp->LagerEinlagernDifferenz($artikel,$menge,$regalneu,$projektid,"Umlagern");
//$this->app->erp->LogFile("ETIKETT2 A $artikel M $menge R $regalneu"); //BENE
//$data['lager_platz_name'] = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='$regalneu'");
//$this->app->erp->EtikettenDrucker("artikel_klein",1,'artikel',$artikel,$data);
}
$name = $this->app->DB->Select("SELECT CONCAT(nummer,' ',name_de) FROM artikel WHERE id='$artikel' LIMIT 1");
if($cmd==='umlagern')
$gesamt = $this->app->DB->Select("SELECT replace(trim(SUM(menge))+0,'.',',') FROM lager_platz_inhalt WHERE artikel='$artikel' AND lager_platz='$regalneu'");
else
$gesamt = $this->app->DB->Select("SELECT replace(trim(SUM(menge))+0,'.',',') FROM lager_platz_inhalt WHERE artikel='$artikel' AND lager_platz='$regal'");
$gesamt_alle = $this->app->DB->Select("SELECT replace(trim(SUM(menge))+0,'.',',') FROM lager_platz_inhalt WHERE artikel='$artikel'");
$msg = $this->app->erp->base64_url_encode("
Der Artikel $name wurde $menge mal ausgelagert. Anzahl Regal: ".floatval($gesamt)." $einheit Anzahl Komplettbestand alle Regale: ".floatval($gesamt_alle)." $einheit
");
$this->app->Tpl->Set('FOCUSFIELD','document.getElementById("regal").focus();');
}
// letzt einstellung von grad
$this->app->Tpl->Add('ZWISCHENLAGERINFO', '');
} else if ($error == 0) {
echo "speichern adresse $checkadresse projekt $projekt menge $menge";
}
}
if ($nummer == '') {
$this->app->Tpl->Set('ARTIKELSTYLE', "style=\"border: 2px solid red\"");
}
if(empty($frmMenge) && !empty($amount)) {
$menge = $amount;
}
$this->app->Tpl->Set('MENGE', $this->app->erp->ReplaceMenge(0,(String)$menge,0));
$this->app->Tpl->Set('GRUNDREFERENZ', $grundreferenz);
$art_name = $this->app->DB->Select("SELECT CONCAT(nummer) FROM artikel WHERE nummer='$nummer' AND geloescht!=1 AND lagerartikel=1 LIMIT 1");
$this->app->Tpl->Set('NUMMER', $art_name);
$pr_name = $this->app->DB->Select("SELECT CONCAT(abkuerzung) FROM projekt WHERE abkuerzung='$projekt' LIMIT 1");
$this->app->Tpl->Set('ADRESSE', $adresse);
if ($_SESSION['grund'] === 'Interner Entwicklungsbedarf') $this->app->Tpl->Set('MUSTER', 'selected');
if ($_SESSION['grund'] === 'RMA / Reparatur / Reklamation') $this->app->Tpl->Set('RMA', 'selected');
if ($_SESSION['grund'] === 'Alte Bestellung') $this->app->Tpl->Set('ALTE', 'selected');
if ($_SESSION['grund'] === 'Kundenauftrag / Produktion') $this->app->Tpl->Set('PRODUKTION', 'selected');
if ($_SESSION['grund'] === 'Manuelle Lageranpassung') $this->app->Tpl->Set('DIFFERENZ', 'selected');
if ($_SESSION['grund'] === 'Umlagern') $this->app->Tpl->Set('UMLAGERN', 'selected');
//$this->app->YUI->AutoComplete(PROJEKTAUTO,"projekt",array('name','abkuerzung'),"abkuerzung");
$this->app->YUI->AutoComplete('projekt', 'projektname', 1);
$this->app->YUI->AutoComplete('adresse', 'adresse');
$this->app->YUI->AutoComplete('nummer','lagerartikelnummer',1);
$this->app->YUI->AutoComplete('regal','lagerplatz');
$this->app->YUI->AutoComplete('grundreferenz','lagergrund');
//$this->app->YUI->AutoComplete(ADRESSEAUTO,"adresse",array('id','name','kundennummer'),"CONCAT(id,' ',name)");
$this->app->Tpl->Set('PROJEKT', $pr_name);
$this->app->Tpl->Parse('TAB1', 'auslagern.tpl');
$this->app->Tpl->Parse('PAGE', 'tabview.tpl');
}
function LagerLetzteBewegungen()
{
$this->LagerBuchenMenu();
$this->app->YUI->TableSearch('TAB1', 'lagerletztebewegungen','show','','',basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('PAGE', 'tabview.tpl');
}
function LagerBuchenMenu() {
$id = $this->app->Secure->GetGET('id');
$this->app->erp->Headlines('Lager');
if($this->app->erp->Version()!=='stock') {
$this->app->erp->MenuEintrag("index.php?module=lager&action=buchenauslagern&cmd=umlagern&id=$id", 'Umlagern');
$this->app->erp->MenuEintrag("index.php?module=lager&action=buchenauslagern&id=$id", 'Auslagern');
$this->app->erp->MenuEintrag("index.php?module=lager&action=bucheneinlagern&id=$id", 'Einlagern');
$this->app->erp->MenuEintrag("index.php?module=lager&action=buchenzwischenlager&id=$id", 'Zwischenlager');
$this->app->erp->MenuEintrag('index.php?module=lager&action=buchen', 'Zurück zur Übersicht');
$this->app->erp->MenuEintrag('index.php?module=lager&action=schnellauslagern', 'Schnell-Auslagern');
}
$this->app->erp->MenuEintrag('index.php?module=lager&action=schnellumlagern', 'Schnell-Umlagern');
$this->app->erp->MenuEintrag('index.php?module=lager&action=letztebewegungen', 'Letzte Bewegungen');
}
function LagerReservierungen() {
$this->app->erp->MenuEintrag('index.php?module=lager&action=reservierungen','Übersicht');
$this->app->erp->Headlines('Lager', 'Reservierungen');
$this->app->Tpl->Set('MESSAGE','
Reservierungen Stand ' . date('d.m.Y').'
');
$this->app->YUI->TableSearch('TAB1', 'lager_reservierungen', 'show','','',basename(__FILE__), __CLASS__);
$this->app->Tpl->Set('AKTIV_TAB1', 'selected');
$this->app->Tpl->Parse('PAGE', 'lager_reservierungen.tpl');
}
public function LagerRegalEtiketten() {
$id = (int)$this->app->Secure->GetGET('id');
$cmd = $this->app->Secure->GetGET('cmd');
if ($cmd==='all') {
$arr = $this->app->DB->SelectArr(sprintf('SELECT id,kurzbezeichnung FROM lager_platz WHERE lager=%d',$id));
}
else{
$arr = $this->app->DB->SelectArr(sprintf('SELECT id,kurzbezeichnung FROM lager_platz WHERE id=%d LIMIT 1',$id));
}
if(!empty($arr)){
foreach($arr as $row) {
$this->app->erp->EtikettenDrucker('lagerplatz_klein', 1, 'lager_platz', $row['id']);
}
}
$ref = $_SERVER['HTTP_REFERER'];
if(empty($ref)) {
if ($cmd==='all'){
$ref = 'index.php?module=lager&action=list';
} else {
$ref = 'index.php?module=lager&action=edit&id='.$id;
}
}
$this->app->Location->execute($ref);
}
function LagerZweistufigEtikettDrucken($artikelId, $lagerplatzId, $menge){
if($artikelId <= 0 || $artikelId == ''){
return;
}
$etikettId = $this->app->User->GetParameter('lager_zweistufig_etiketten');
$druckerId = $this->app->User->GetParameter('lager_zweistufig_etikettendrucker');
if($etikettId > 0 && $etikettId != '' && $druckerId > 0 && $druckerId != ''){
$lagerplatz = '';
if($lagerplatzId != '' && $lagerplatzId > 0){
$lagerplatz = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id = '$lagerplatzId' LIMIT 1");
}
$artikelDaten = $this->app->DB->SelectRow("SELECT name_de, nummer FROM artikel WHERE id = '$artikelId' LIMIT 1");
$variablen = null;
$variablen['name_de'] = $artikelDaten['name_de'];
$variablen['artikel_name_de'] = $artikelDaten['name_de'];
$variablen['nummer'] = $artikelDaten['nummer'];
$variablen['artikel_nummer_de'] = $artikelDaten['nummer'];
$variablen['menge'] = $menge;
$variablen['lagerplatz'] = $lagerplatz;
$etikettProZeile = $this->app->User->GetParameter('lager_zweistufig_etiketten_eins_pro_zeile');
if($etikettProZeile){
$menge = 1;
}
$this->app->erp->EtikettenDrucker($etikettId,$menge,'artikel',$artikelId,$variablen,'',$druckerId);
}
}
function LagerAuslagernProduktionbasiert()
{
$this->app->Tpl->Set('TABTEXT','');
$this->app->erp->MenuEintrag("index.php?module=lager&action=artikelfuerlieferungen&cmd=produktion","Übersicht");
// offene auslagerungen
$result = $this->app->DB->SelectArr("SELECT r.parameter FROM lager_reserviert r LEFT JOIN produktion p ON p.id=r.parameter
WHERE r.objekt='produktion' AND (p.status='abgeschlossen' OR p.status='gestartet') GROUP BY r.parameter");
$gesamtanzahlartikel = 0;
//TODO YUI Start
$this->app->Tpl->Set('TAB1', "
Produktion
Bezeichnung
Auslagern
");
$cresult = !empty($result)?count($result):0;
for ($w = 0;$w < $cresult;$w++) {
$produktion = $result[$w]['parameter'];
$bezeichnung = $this->app->erp->ProduktionName($produktion);
$nummer = $this->app->DB->Select("SELECT belegnr FROM produktion WHERE id='$produktion' LIMIT 1");
$this->app->Tpl->Add('TAB1', "
Produktion $nummer
$bezeichnung
");
$artikellistesumm = $this->app->DB->SelectArr("SELECT DISTINCT artikel FROM lager_reserviert WHERE objekt='produktion' AND parameter='$produktion'");
if ((!empty($artikellistesumm)?count($artikellistesumm):0) == 0) continue;
$artikelliste = $this->app->DB->SelectArr("SELECT DISTINCT artikel FROM lager_reserviert WHERE objekt='produktion' AND parameter='$produktion'");
$gesamtanzahlartikel = $gesamtanzahlartikel + (!empty($artikelliste)?count($artikelliste):0);
}
$this->app->Tpl->Add('TAB1', "
");
//TODO YUI Ende
if ($gesamtanzahlartikel <= 0) {
$this->app->Tpl->Set('MESSAGE', "
{|Aktuell gibt es keine Artikel für Produktionen, da keine Produktionen gestartet wurden.|}
");
$this->app->Tpl->Set('TAB1','');
}
}
function LagerAuslagernProjektbasiert()
{
$projekt = 1;
$projektearr = $this->app->DB->SelectArr("SELECT id FROM projekt WHERE geloescht!=1");
$projektearr[] = 0;
$gesamtanzahlartikel = 0;
// start projekt schleife
$cprojektarr = !empty($projektearr)?count($projektearr):0;
for ($w = 0;$w < $cprojektarr;$w++) {
$this->app->Tpl->Set('INHALT', '');
$projekt = $projektearr[$w]['id'];
$projektName = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='$projekt' LIMIT 1");
if ($projekt == 0 || $projekt == "") $projektName = "Ohne Projekt";
$artikellistesumm = $this->app->DB->SelectArr("SELECT DISTINCT artikel FROM lager_reserviert WHERE objekt='lieferschein' AND projekt='$projekt' ");
if ((!empty($artikellistesumm)?count($artikellistesumm):0) == 0) continue;
$this->app->Tpl->Add('INHALT', "
$projektName Lieferungen Stand " . date('d.m.Y') . "
");
$artikelliste = $this->app->DB->SelectArr("SELECT DISTINCT artikel FROM lager_reserviert WHERE objekt='lieferschein' AND projekt='$projekt' ");
$orderarray = $this->LagerAuslagernArtikelliste($artikelliste,$projekt,true);
$gesamtanzahlartikel = (!empty($orderarray)?count($orderarray):0);
$this->LagerAuslagernArtikellisteRender($orderarray);
} // ende projekt schleife
if ($gesamtanzahlartikel <= 0) {
if($this->app->erp->RechteVorhanden('kommissionierlauf','list') && !$this->app->DB->Select("SELECT id FROM projekt WHERE ifnull(geloescht,0) = 0 AND kommissionierverfahren = 'zweistufig' LIMIT 1"))
{
$this->app->Location->execute('index.php?module=kommissionierlauf&action=list');
}
$this->app->Tpl->Set('MESSAGE', "
Aktuell gibt es keine Artikel für Lieferungen.
");
}
$this->app->erp->MenuEintrag('index.php?module=kommissionierlauf&action=list','Kommissionierläufe');
$this->app->erp->MenuEintrag('index.php?module=lager&action=artikelfuerlieferungen','2-stufige Kommissionierung');
}
/**
* @param array $artikelliste
* @param string $projekt
*/
function LagerReihenfolgeArtikelliste($artikelliste,$projekt='')
{
$cartikelliste = !empty($artikelliste)?count($artikelliste):0;
for ($i = 0;$i < $cartikelliste;$i++) {
$artikel = $artikelliste[$i]['artikel'];
echo $artikel." ";
}
}
function LagerAuslagernReihenfolge($artikelliste,$projekt="")
{
return $artikelliste;
// Reihenfolge abholen
$orderarray = $this->LagerAuslagernArtikelliste($artikelliste,$projekt,true);
$corderarray = !empty($orderarray)?count($orderarray):0;
for($i=0;$i<$corderarray;$i++)
{
$artikel = $orderarray[$i]["artikel"];
$kurzbezeichnung = $orderarray[$i]["kurzbezeichnung"];
$tmparray[$artikel]=$kurzbezeichnung;
}
echo "schritt 1 ";
print_r($orderarray);
echo " ";
echo "schritt 2 ";
print_r($tmparray);
echo " ";
echo "schritt 3 ";
// neu sortieren
asort($tmparray);
if((!empty($tmparray)?count($tmparray):0)>0)
{
foreach($tmparray as $key=>$value)
{
$newartikelliste[]=array("artikel"=>$key);
}
}
print_r($newartikelliste);
return $newartikelliste;
}
//function LagerAuslagernList($artikelliste,$projekt="",$getorder=false)
function LagerAuslagernArtikelliste($artikelliste,$projekt="",$getorder=false)
{
$cmd = $this->app->Secure->GetGET('cmd');
$tmpanzahl = 0;+
$gesamtanzahlartikel = 0;
$cartikelliste = !empty($artikelliste)?count($artikelliste):0;
for ($i = 0;$i < $cartikelliste;$i++) {
$gesamtanzahlartikel++;
$artikel = $artikelliste[$i]['artikel'];
$nummer = $this->app->DB->Select("SELECT nummer FROM artikel WHERE id='$artikel' AND lagerartikel=1 LIMIT 1");
$name_de = $this->app->DB->Select("SELECT name_de FROM artikel WHERE id='$artikel' AND lagerartikel=1 LIMIT 1");
//wieviel stueck braucht man denn von dem artikel?
if(is_numeric($projekt))
$gesamtbedarf = $this->app->DB->Select("SELECT SUM(menge) FROM lager_reserviert WHERE objekt='lieferschein' AND projekt='$projekt' AND artikel='$artikel' ");
else
$gesamtbedarf = $this->app->DB->Select("SELECT SUM(menge) FROM lager_reserviert WHERE objekt='lieferschein' AND projekt='0' AND artikel='$artikel' ");
//$artikel_in_regalen = $this->app->DB->SelectArr("SELECT * FROM lager_platz_inhalt WHERE artikel='$artikel' AND projekt='$projekt'");
// standardlager artikel
$standardlagerartikel = $this->app->DB->Select("SELECT lager_platz FROM artikel WHERE id='$artikel'");
// Zeige nur Artikel an die im Lager sind!
$tmp_check_standardlager = $this->app->DB->Select("SELECT SUM(lpi.menge) FROM lager_platz_inhalt lpi LEFT JOIN lager_platz l ON l.id=lpi.lager_platz WHERE
lpi.artikel='$artikel' AND lpi.lager_platz='$standardlagerartikel' AND l.autolagersperre!='1' AND l.sperrlager!='1'");
// erst standarlager ausraeumen bis zu wenig drin ist
// und dann die lager an denene am wenigsten ist
if($tmp_check_standardlager>=$gesamtbedarf)
$artikel_in_regalen = $this->app->DB->SelectArr("SELECT * FROM lager_platz_inhalt lpi LEFT JOIN lager_platz l ON l.id=lpi.lager_platz WHERE
lpi.artikel='$artikel' AND lager_platz='$standardlagerartikel' AND l.autolagersperre!='1' AND l.sperrlager!='1' ORDER by lpi.menge ASC");
else
$artikel_in_regalen = $this->app->DB->SelectArr("SELECT * FROM lager_platz_inhalt lpi LEFT JOIN lager_platz l ON l.id=lpi.lager_platz WHERE
lpi.artikel='$artikel' AND l.autolagersperre!='1' AND l.sperrlager!='1' ORDER by lpi.menge ASC");
$cartikel_in_regalen = !empty($artikel_in_regalen)?count($artikel_in_regalen):0;
for ($j = 0;$j < $cartikel_in_regalen;$j++) {
$tmpanzahl++;
$menge_im_platz = $artikel_in_regalen[$j]['menge'];
$kurzbezeichnung = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='{$artikel_in_regalen[$j]['lager_platz']}' LIMIT 1");
$lagerplatzid = $artikel_in_regalen[$j]['lager_platz'];
if ($menge_im_platz <= $gesamtbedarf) {
$tmpmenge = $menge_im_platz;
} else {
$tmpmenge = $gesamtbedarf;
}
$rest = $menge_im_platz - $tmpmenge; //$this->app->DB->Select("SELECT SUM(menge) FROM lager_platz_inhalt WHERE artikel='$artikel' AND firma='".$this->app->User->GetFirma()."'") - $tmpmenge;
if ($rest == 0) {
$rest = '-';
}
$orderarray[]=array('tmpmenge'=>$tmpmenge,'artikel'=>$artikel,'nummer'=>$nummer,'lager_platz'=>$lagerplatzid,"kurzbezeichnung"=>$kurzbezeichnung,"link_lagerplatzid"=>$artikel_in_regalen[$j][id],"link_lager"=>$lagerplatzid,"projekt"=>$projekt,"cmd"=>$cmd,"abkuerzung"=>$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='$projekt' LIMIT 1"),'name_de'=>$name_de,"produktion"=>$produktion);
$gesamtbedarf = $gesamtbedarf - $tmpmenge;
if ($gesamtbedarf == 0) break;
}
}
return $orderarray;
}
/**
* @param array $orderarray
*/
function LagerAuslagernArtikellisteRender($orderarray)
{
$array = $orderarray;
$cols = array('kurzbezeichnung'=>SORT_ASC, 'nummer'=>SORT_ASC);
$colarr = array();
foreach ($cols as $col => $order) {
$colarr[$col] = array();
foreach ($array as $k => $row) {
$colarr[$col]['_'.$k] = strtolower($row[$col]);
}
}
//$eval = 'array_multisort(';
//foreach ($cols as $col => $order) {
// $eval .= '$colarr[\''.$col.'\'],'.$order.',';
//}
//$eval = substr($eval,0,-1).');';
//eval($eval);
array_multisort($colarr['kurzbezeichnung'], SORT_ASC, $colarr['kurzbezeichnung'], SORT_ASC);
$ret = array();
foreach ($colarr as $col => $arr) {
foreach ($arr as $k => $v) {
$k = substr($k,1);
if (!isset($ret[$k])) {
$ret[$k] = $array[$k];
}
$ret[$k][$col] = $array[$k][$col];
}
}
$orderarray = $ret;
$htmltable = new HTMLTable(0, '100%', '', 3, 1);
if ($this->app->User->GetType() === 'admin') {
$htmltable->AddRowAsHeading(array('Menge', 'Nummer', 'Artikel', 'Projekt', 'Regal', 'Regal', 'Aktion'));
}//, 'Entfernen'));
else {
$htmltable->AddRowAsHeading(array('Menge', 'Nummer', 'Artikel', 'Projekt', 'Regal', 'Regal', 'Aktion'));
}
$htmltable->ChangingRowColors('#e0e0e0', '#fff');
$tmpanzahl=1;
foreach($orderarray as $row) {
if ($tmpanzahl == 1 && $this->erstes!=1) {
$this->erstes=1;
$erstes = 'erstes';
}
else {
$erstes = '';
}
$tmpanzahl++;
$htmltable->NewRow();
$htmltable->AddCol((float)$row['tmpmenge']);
$htmltable->AddCol($row['nummer']);
$htmltable->AddCol($row['name_de']);
$htmltable->AddCol($row['abkuerzung']);
$htmltable->AddCol($row['kurzbezeichnung']);
$htmltable->AddCol("Regal: ");
$htmltable->AddCol("");
// if ($this->app->User->GetType() == "admin") $htmltable->AddCol("");
}
//bestimme regalplaetze fuer artikel
$this->app->Tpl->Add('INHALT', $htmltable->Get());
// und enter abfangen!!!
$this->app->Tpl->Add('INHALT', "");
//$table->DisplayNew('INHALT', "");
$this->app->Tpl->Parse('TAB1', 'rahmen70_ohneform.tpl');
}
function LagerZwischenlager() {
$this->app->Tpl->Add('TABS', '
Zwischenlager
');
$id = $this->app->Secure->GetGET('id');
$this->app->Tpl->Set('TABNAME', 'Inhalt');
$this->app->Tpl->Set('SUBSUBHEADING', 'Zwischenlager Stand ' . date('d.m.Y'));
// easy table mit arbeitspaketen YUI als template
$table = new EasyTable($this->app);
$table->Query("SELECT a.name_de,z.menge,z.vpe,z.grund,z.richtung, p.abkuerzung, z.id FROM zwischenlager z LEFT JOIN artikel a ON a.id=z.artikel LEFT JOIN projekt p ON
p.id=z.projekt ");
$table->DisplayNew('INHALT', "Info");
$this->app->Tpl->Parse('TAB1', 'rahmen70.tpl');
$this->app->Tpl->Set('AKTIV_TAB1', 'selected');
$this->app->Tpl->Parse('PAGE', 'tabeinzeln.tpl');
}
/*function LagerBewegung() {
$this->LagerMenu();
$id = $this->app->Secure->GetGET('id');
$this->app->Tpl->Set('TABNAME', "Lager Bewegungen");
$lager = $this->app->DB->Select("SELECT bezeichnung FROM lager WHERE id='$id' ");
$this->app->Tpl->Set('SUBSUBHEADING', "Bewegungen Lager: $lager bis zum " . date('d.m.Y'));
// easy table mit arbeitspaketen YUI als template
$table = new EasyTable($this->app);
$table->Query("SELECT p.kurzbezeichnung as Regal,
p.id FROM lager_platz p
WHERE lager='$id' ORDER by 1");
$table->DisplayNew('INHALT', "Info");
$this->app->Tpl->Parse('TAB1', "rahmen70.tpl");
$this->app->Tpl->Set('AKTIV_TAB1', "selected");
$this->app->Tpl->Parse('PAGE', "tabeinzeln.tpl");
}*/
function LagerBewegungPopup() {
$this->LagerMenu();
$this->app->Tpl->Parse('TAB1', 'rahmen70.tpl');
$this->app->Tpl->Set('AKTIV_TAB1', 'selected');
$id = $this->app->Secure->GetGET('id');
$lager = $this->app->DB->Select("SELECT bezeichnung FROM lager WHERE id='$id' ");
$this->app->erp->MenuEintrag('index.php?module=lager&action=list', 'Zurück zur Übersicht');
$id = $this->app->Secure->GetGET('id');
$this->app->Tpl->Set("MESSAGE", "
Bewegungen Lager: $lager bis zum " . date('d.m.Y')."
");
$this->app->YUI->AutoComplete('lager_platz_bewegung', 'lagerplatz',0,'&lager='.$id);
$this->app->YUI->AutoComplete('artikel_bewegung', 'artikelnummer');
$this->app->YUI->AutoSaveUserParameter('lager_platz_bewegung','lager_bewegung_lagerplatz','updateLiveTable();');
$this->app->YUI->AutoSaveUserParameter('artikel_bewegung','lager_bewegung_artikel','updateLiveTable();');
$this->app->YUI->TableSearch('TAB1','lager_bewegunglist', 'show','','',basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('PAGE', 'lager_bewegung_list.tpl');
}
function LagerAlleBewegungen()
{
$this->LagerHauptmenu();
$this->app->Tpl->Set('SUBSUBHEADING', 'Alle Lagerbewegungen bis zum '.date('d.m.Y'));
$this->app->erp->MenuEintrag('index.php?module=lager&action=list', 'Zurück zur Übersicht');
$this->app->YUI->AutoComplete('lager_bewegung_alle', 'lager');
$this->app->YUI->AutoComplete('lager_platz_bewegung_alle', 'lagerplatz');
$this->app->YUI->AutoComplete('artikel_bewegung_alle', 'artikelnummer');
$this->app->YUI->AutoSaveUserParameter('lager_bewegung_alle','lager_bewegungalle_lager','updateLiveTable();');
$this->app->YUI->AutoSaveUserParameter('artikel_bewegung_alle','lager_bewegungalle_artikel','updateLiveTable();');
$this->app->YUI->AutoSaveUserParameter('lager_platz_bewegung_alle','lager_bewegungalle_lagerplatz','updateLiveTable();');
$this->app->YUI->TableSearch('TAB1','lager_allebewegungenlist', 'show','','',basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('PAGE', "lager_allebewegungen_list.tpl");
}
function LagerInhalt() {
$this->LagerMenu();
$pdf = $this->app->Secure->GetPOST('pdf');
$nachartikel = $this->app->Secure->GetPOST('nachartikel');
if($pdf != '' && $nachartikel == 1){
$this->LagerPDFArtikel();
}elseif($pdf != '' && $nachartikel == 0){
$this->LagerPDF();
}
$lager = $this->app->Secure->GetGET('id');
$this->app->YUI->AutoComplete('lager_platz_inhalt', 'lagerplatz',0,'&lager='.$lager);
$this->app->YUI->AutoComplete('artikel_inhalt', 'artikelnummer');
$this->app->YUI->AutoSaveUserParameter('artikel_inhalt','lager_inhalt_artikel','updateLiveTable();');
$this->app->YUI->AutoSaveUserParameter('lager_platz_inhalt','lager_inhalt_lagerplatz','updateLiveTable();');
$this->app->YUI->TableSearch('TAB1','lager_inhaltlist', 'show','','',basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('PAGE', 'lager_inhaltneu.tpl');
}
function LagerPDFArtikel(){
$lagerid = $this->app->Secure->GetGET('id');
$lagername = $this->app->DB->Select("SELECT bezeichnung FROM lager WHERE id = '$lagerid' LIMIT 1");
$lagerplatzuser = $this->app->User->GetParameter('lager_inhalt_lagerplatz');
$lagerplatziduser = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung = '$lagerplatzuser' AND kurzbezeichnung != '' LIMIT 1");
$artikeluser = $this->app->User->GetParameter('lager_inhalt_artikel');
$artikeldaten = explode(' ', $artikeluser, 2);
$artikelnr = $artikeldaten[0];
$artikelname = $artikeldaten[1];
$artikeliduser = $this->app->DB->Select("SELECT id FROM artikel WHERE name_de = '$artikelname' AND name_de != '' AND nummer = '$artikelnr' AND nummer != '' LIMIT 1");
if($lagerplatziduser != ''){
$lagerplatzwhere = " AND li.lager_platz = '$lagerplatziduser'";
}else{
$lagerplatzwhere = '';
}
if($artikeliduser != ''){
$artikelwhere = "AND li.artikel = '$artikeliduser'";
}else{
$artikelwhere = '';
}
$where = "l.lager = '$lagerid'".$lagerplatzwhere.$artikelwhere.' ORDER BY a.nummer';
//$artikel = $this->app->DB->SelectArr("SELECT DISTINCT a.id as id, a.name_de as name_de, a.nummer as nummer FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel=a.id WHERE $where");
$artikel = $this->app->DB->SelectArr("SELECT DISTINCT a.id as id, a.name_de as name_de, a.nummer as nummer FROM lager_platz_inhalt li LEFT JOIN lager_platz l ON l.id=li.lager_platz LEFT JOIN artikel a ON li.artikel = a.id WHERE $where");
//Neue PDF Datei erstellen
$pdf=new SuperFPDF('P','mm','A4',$this->app);
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 15);
$pdf->Cell(100, 8, 'Lagerbestand '.'Lager: '.$lagername, 0, 0, 'L');
$pdf->SetFont('Arial','',10);
$pdf->Cell(0, 8, date('d.m.Y'), 0, 1, 'R');
$pdf->Cell(0, 8, 'Bearbeiter: '.$this->app->User->GetName(), 0, 1, 'R');
$pdf->Ln();
foreach($artikel as $key=>$value){
$pdf->SetFont('Arial','B',10);
$pdf->Cell(80, 8, $value['name_de'], 0, 0, 'L');
$pdf->Cell(70, 8, ' Artikelnr: '.$value['nummer'], 0, 0, 'L');
$pdf->Cell(0, 8, $pdf->Code128($pdf->GetX(), $pdf->GetY(), $this->app->erp->UmlauteEntfernen($value['nummer']), 30, 5), 0, 1, "L");
$pdf->SetFont('Arial','',10);
$pdf->Line($pdf->GetX(), $pdf->GetY(), $pdf->GetX()+190, $pdf->GetY());
$artikelid = $value['id'];
$artikelnr = $value['nummer'];
$artikelname = $value['name_de'];
//$regale = $this->app->DB->SelectArr("SELECT DISTINCT l.id as id, l.kurzbezeichnung as kurzbezeichnung FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel=a.id WHERE l.lager = '$lagerid' AND lm.artikel = '".$value['id']."' $lagerplatzwhere ORDER BY l.id");
$regale = $this->app->DB->SelectArr("SELECT DISTINCT l.id as id, l.kurzbezeichnung as kurzbezeichnung FROM lager_platz l LEFT JOIN lager_platz_inhalt li ON l.id = li.lager_platz LEFT JOIN artikel a ON a.id = li.artikel WHERE l.lager = '$lagerid' AND li.artikel = '".$value['id']."' $lagerplatzwhere ORDER BY l.id");
foreach($regale as $key2=>$value2){
$pdf->Ln(4);
$pdf->SetFont('Arial','B',10);
$pdf->Cell(40, 5, $value2['kurzbezeichnung'], 0, 0, 'L');
$gesamt = $this->app->DB->Select('SELECT '.$this->app->erp->FormatMenge('SUM(li.menge)')." as menge FROM lager_platz_inhalt li JOIN lager_platz l ON li.lager_platz = l.id WHERE li.artikel = '".$value['id']."' AND li.lager_platz = '".$value2['id']."'");
$pdf->Cell(0, 5, 'Gesamtbestand: '.$gesamt, 0, 1, 'L');
$pdf->SetFont('Arial','',10);
$artikelvorhanden = $this->app->DB->Select("SELECT lm.id FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel = a.id WHERE l.lager = '$lagerid' AND lm.artikel = '".$value['id']."' AND lm.lager_platz = '".$value2['id']."' LIMIT 1");
if($artikelvorhanden != ''){
$chargenmhd = $this->app->DB->SelectArr("SELECT ".$this->app->erp->FormatMenge('lm.menge')." as menge, lm.mhddatum as mhd, lm.charge as charge, lm.internebemerkung as internebemerkung, lm.artikel as artikel FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel=a.id WHERE l.lager = '$lagerid' AND lm.artikel = '".$value['id']."' AND lm.lager_platz = '".$value2['id']."'");
$gesamtchargen = $this->app->DB->Select("SELECT ".$this->app->erp->FormatMenge('SUM(lm.menge)')." as menge FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id = lm.lager_platz LEFT JOIN artikel a ON lm.artikel = a.id WHERE l.lager = '$lagerid' AND lm.artikel = '".$value['id']."' AND lm.lager_platz = '".$value2['id']."'");
$pdf->Cell(40, 5, $pdf->Code128($pdf->GetX(), $pdf->GetY(), $this->app->erp->UmlauteEntfernen($value2['kurzbezeichnung']), 30, 5), 0, 0, "L");
$pdf->SetTableWidths(array(40,30,40));
$pdf->SetFont('Arial','B',10);
$pdf->SetTableFonts(array(array('Arial','B',10),array('Arial','B',10),array('Arial','B',10)));
$pdf->TableRow(array('Menge', 'MHD', 'Charge'));
$pdf->SetFont('Arial','',10);
$pdf->SetTableFonts(array(array('Arial','',10),array('Arial','',10),array('Arial','',10)));
foreach($chargenmhd as $key3=>$value3){
$pdf->SetX($pdf->GetX()+40);
$pdf->TableRow(array($value3['menge'], date('d.m.Y', strtotime($value3['mhd'])), $value3['charge']));
}
if($gesamt != $gesamtchargen){
if($gesamtchargen < $gesamt){
$zuwenig = $gesamt-$gesamtchargen;
$pdf->Cell(0, 5, "", 0, 1, "L");
$pdf->SetX($pdf->GetX()+40);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(0, 5, 'Hinweis: Es sind '.$zuwenig.' Chargen-/MHD Einträge zu wenig vorhanden.', 0, 1, 'L');
$pdf->SetFont('Arial','',10);
}
$zuviel = $gesamtchargen - $gesamt;
$pdf->Cell(0, 5, '', 0, 1, 'L');
$pdf->SetX($pdf->GetX()+40);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(0, 5, 'Hinweis: Es sind '.$zuviel.' Chargen-/MHD Einträge zu viel vorhanden.', 0, 1, 'L');
$pdf->SetFont('Arial','',10);
}
}else{
$pdf->Cell(40, 5, $pdf->Code128($pdf->GetX(), $pdf->GetY(), $value2['kurzbezeichnung'], 30, 5), 0, 0, "L");
$pdf->Ln();
}
$pdf->Ln();
$pdf->Line($pdf->GetX(), $pdf->GetY(), $pdf->GetX()+190, $pdf->GetY());
//$pdf->Ln();
}
$pdf->Ln();
$pdf->Ln();
}
$pdf->Output(date('Ymd').'_'.'Artikelbestandsliste_nach_Artikel.pdf','D');
$this->app->ExitXentral();
}
function LagerPDF(){
$lagerid = $this->app->Secure->GetGET('id');
$lagername = $this->app->DB->Select("SELECT bezeichnung FROM lager WHERE id = '$lagerid' LIMIT 1");
$lagerplatzuser = $this->app->User->GetParameter('lager_inhalt_lagerplatz');
$lagerplatziduser = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung = '$lagerplatzuser' AND kurzbezeichnung != '' LIMIT 1");
$artikeluser = $this->app->User->GetParameter('lager_inhalt_artikel');
$artikeldaten = explode(" ", $artikeluser, 2);
$artikelnr = $artikeldaten[0];
$artikelname = $artikeldaten[1];
$artikeliduser = $this->app->DB->Select("SELECT id FROM artikel WHERE name_de = '$artikelname' AND name_de != '' AND nummer = '$artikelnr' AND nummer != '' LIMIT 1");
if($lagerplatziduser != ''){
$lagerplatzwhere = " AND li.lager_platz = '$lagerplatziduser'";
}else{
$lagerplatzwhere = '';
}
if($artikeliduser != ''){
$artikelwhere = "AND li.artikel = '$artikeliduser'";
}else{
$artikelwhere = '';
}
$where = "l.lager = '$lagerid'".$lagerplatzwhere.$artikelwhere." ORDER BY a.nummer";
//$regale = $this->app->DB->SelectArr("SELECT DISTINCT l.id as id, l.kurzbezeichnung as kurzbezeichnung FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel=a.id WHERE l.lager = '$lagerid' $lagerplatzwhere ORDER BY l.id");
$regale = $this->app->DB->SelectArr("SELECT DISTINCT l.id as id, l.kurzbezeichnung as kurzbezeichnung FROM lager_platz l LEFT JOIN lager_platz_inhalt li ON l.id = li.lager_platz LEFT JOIN artikel a ON a.id = li.artikel WHERE l.lager = '$lagerid' $lagerplatzwhere $artikelwhere ORDER BY l.kurzbezeichnung");
//Neue PDF Datei erstellen
$pdf=new SuperFPDF('P','mm','A4',$this->app);
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 15);
$pdf->Cell(100, 8, 'Lagerbestand '.'Lager: '.$lagername, 0, 0, 'L');
$pdf->SetFont('Arial','',10);
$pdf->Cell(0, 8, date('d.m.Y'), 0, 1, 'R');
$pdf->Cell(0, 8, 'Bearbeiter: '.$this->app->User->GetName(), 0, 1, 'R');
$pdf->Ln();
foreach($regale as $key=>$value){
$pdf->SetFont('Arial','B',15);
$pdf->Cell(80, 10, $value['kurzbezeichnung'], 0, 0, 'L');
$pdf->SetFont('Arial','',10);
$pdf->Cell(0, 10, $pdf->Code128($pdf->GetX(), $pdf->GetY(), $this->app->erp->UmlauteEntfernen($value['kurzbezeichnung']), 50, 7), 0, 1, "L");
$pdf->SetFont('Arial','B',10);
$pdf->Cell(40, 5, 'Artikelnr', 0, 0, 'L');
$pdf->Cell(80, 5, 'Artikel', 0, 1, 'L');
$pdf->SetFont('Arial','',10);
$pdf->Line($pdf->GetX(), $pdf->GetY(), $pdf->GetX()+190, $pdf->GetY());
//$artikel = $this->app->DB->SelectArr("SELECT DISTINCT a.id as id, a.name_de as name_de, a.nummer as nummer FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel=a.id WHERE lm.lager_platz = '".$value['id']."' $artikelwhere ORDER BY lm.artikel");
$artikel = $this->app->DB->SelectArr("SELECT DISTINCT a.id as id, a.name_de as name_de, a.nummer as nummer FROM lager_platz_inhalt li LEFT JOIN lager_platz l ON l.id=li.lager_platz LEFT JOIN artikel a ON li.artikel = a.id WHERE li.lager_platz = '".$value['id']."' $artikelwhere ORDER BY li.artikel");
foreach($artikel as $key2=>$value2){
$pdf->Ln(4);
$pdf->SetFont('Arial','B',10);
$pdf->Cell(40, 5, $value2['nummer'], 0, 0, 'L');
$pdf->Cell(30, 5, $value2['name_de'], 0, 1, 'L');
$pdf->SetFont('Arial','',10);
$gesamt = $this->app->DB->Select("SELECT ".$this->app->erp->FormatMenge('SUM(li.menge)')." as menge FROM lager_platz_inhalt li JOIN lager_platz l ON li.lager_platz = l.id WHERE li.artikel = '".$value2['id']."' AND li.lager_platz = '".$value['id']."'");
$pdf->SetX($pdf->GetX()+40);
$pdf->SetFont('Arial','B',10);
$pdf->Cell(0, 8, 'Gesamtbestand: '.$gesamt, 0, 1, 'L');
$pdf->SetFont('Arial','',10);
$pdf->Cell(40, 5, $pdf->Code128($pdf->GetX(),$pdf->GetY(),$this->app->erp->UmlauteEntfernen($value2['nummer']),30,5), 0, 0, "L");
$artikelvorhanden = $this->app->DB->Select("SELECT lm.id FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel = a.id WHERE l.lager = '$lagerid' AND lm.artikel = '".$value2['id']."' AND lm.lager_platz = '".$value['id']."' LIMIT 1");
if($artikelvorhanden != ''){
$chargenmhd = $this->app->DB->SelectArr('SELECT '.$this->app->erp->FormatMenge('lm.menge')." as menge, lm.mhddatum as mhd, lm.charge as charge, lm.internebemerkung as internebemerkung, lm.artikel as artikel FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id=lm.lager_platz LEFT JOIN artikel a ON lm.artikel=a.id WHERE l.lager = '$lagerid' AND lm.artikel = '".$value2['id']."' AND lm.lager_platz = '".$value['id']."'");
$gesamtchargen = $this->app->DB->Select('SELECT '.$this->app->erp->FormatMenge('SUM(lm.menge)')." as menge FROM lager_mindesthaltbarkeitsdatum lm LEFT JOIN lager_platz l ON l.id = lm.lager_platz LEFT JOIN artikel a ON lm.artikel = a.id WHERE l.lager = '$lagerid' AND lm.artikel = '".$value2['id']."' AND lm.lager_platz = '".$value['id']."'");
//$pdf->SetX($pdf->GetX()+40);
$pdf->SetTableWidths(array(40,30,40));
$pdf->SetFont('Arial','B',10);
$pdf->SetTableFonts(array(array('Arial','B',10),array('Arial','B',10),array('Arial','B',10)));
$pdf->TableRow(array('Menge', 'MHD', 'Charge'));
$pdf->SetFont('Arial','',10);
$pdf->SetTableFonts(array(array('Arial','',10),array('Arial','',10),array('Arial','',10)));
foreach($chargenmhd as $key3=>$value3){
$pdf->SetX($pdf->GetX()+40);
$pdf->TableRow(array($value3['menge'], date('d.m.Y', strtotime($value3['mhd'])), $value3['charge']));
}
if($gesamt != $gesamtchargen){
if($gesamtchargen < $gesamt){
$zuwenig = $gesamt - $gesamtchargen;
$pdf->Cell(0, 5, '', 0, 1, 'L');
$pdf->SetX($pdf->GetX()+40);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(0, 5, "Hinweis: Es sind ".$zuwenig." Chargen-/MHD Einträge zu wenig vorhanden.", 0, 1, "L");
$pdf->SetFont('Arial','',10);
}else{
$zuviel = $gesamtchargen - $gesamt;
$pdf->Cell(0, 5, '', 0, 1, 'L');
$pdf->SetX($pdf->GetX()+40);
$pdf->SetFont('Arial', 'B', 10);
$pdf->Cell(0, 5, "Hinweis: Es sind ".$zuviel." Chargen-/MHD Einträge zu viel vorhanden.", 0, 1, "L");
$pdf->SetFont('Arial','',10);
}
}
}else{
$pdf->Ln();
}
$pdf->Ln();
$pdf->Line($pdf->GetX(), $pdf->GetY(), $pdf->GetX()+190, $pdf->GetY());
//$pdf->Ln();
}
$pdf->Ln();
$pdf->Ln();
}
$pdf->Output(date('Ymd').'_'.'Artikelbestandsliste.pdf','D');
$this->app->ExitXentral();
}
public function LagerPlatz() {
$this->LagerMenu();
$id = $this->app->Secure->GetGET('id');
// neues arbeitspaket
$import = $this->app->Secure->GetPOST('import');
$importcsv = $this->app->Secure->GetPOST('importcsv');
if($import!='' || $importcsv!='')
{
if($import!='')
{
$lagerimport = $this->app->Secure->GetPOST('lagerimport');
$lagerimport = str_replace(['\\r\\n','"', ' '],["\r\n",'',''],$lagerimport);
if (strpos($lagerimport, ',') !== false) {
$tmp = explode(',',$lagerimport);
} else {
$tmp = explode("\r\n",$lagerimport);
}
} else if ($importcsv!='') {
$lagerimport = file_get_contents($_FILES['csv']['tmp_name']);
$lagerimport = str_replace(['\\r\\n','"', ' ',','],["\r\n",'','',';'],$lagerimport);
if (strpos($lagerimport, ';') !== false) {
$tmp2 = explode("\n",$lagerimport);
foreach($tmp2 as $key=>$row)
{
$rowtmp = explode(";",$row);
if(isset($rowtmp[0]) && $rowtmp[0]!="")
{
$tmp[] = $rowtmp[0];
$tmpsort[] = $rowtmp[1];
}
}
}
else {
$tmp = explode("\r\n",$lagerimport);
}
}
$neue=0;
$neuesort=0;
$ctmp = !empty($tmp)?count($tmp):0;
for($i=0;$i<$ctmp;$i++)
{
$lagerabkuerzung = $tmp[$i];
$lagersort = $tmpsort[$i];
// new line + spaces entfernen
$lagerabkuerzung = trim(preg_replace('/\s+/', ' ', $lagerabkuerzung));
$lagersort = trim(preg_replace('/\s+/', ' ', $lagersort));
if(empty($lagerabkuerzung)){
continue;
}
$check = $this->app->DB->Select("SELECT id FROM lager_platz WHERE kurzbezeichnung='$lagerabkuerzung' LIMIT 1");
if($check <= 0)
{
// Anlegen
$check = $this->app->erp->CreateLagerplatz($id,$lagerabkuerzung);
$neue++;
}
if($check > 0 && $lagersort!="")
{
$neuesort++;
$this->app->DB->Update("UPDATE lager_platz SET rownumber='".$lagersort."' WHERE id='".$check."' LIMIT 1");
}
}
$this->app->Tpl->Set('IMPORT',$lagerimport);
if((!empty($tmp)?count($tmp):0) > 0) {
$sorttxt = ($neuesort > 0?" ($neuesort x Reihenfolge angepasst)":"");
if($neue == 1){
$this->app->Tpl->Set('MESSAGE3', "