2021-05-21 08:49:41 +02:00
< ? php
2022-07-01 14:24:56 +02:00
/*
**** 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 ****
2021-05-21 08:49:41 +02:00
*/
?>
2022-07-01 14:24:56 +02:00
< ? php
include __DIR__ . '/_gen/lager.php' ;
class Lager extends GenLager {
/** @var Application $app */
var $app ;
/**
* @ param string $arttab
* @ param string $tab1
* @ param string $tab2
*
* @ return string
*/
static function LetzterEK ( $arttab = 'art' , $tab1 = 'e1' , $tab2 = 'e' )
{
return "
(
SELECT $tab2 . artikel , $tab2 . waehrung , $tab2 . preis FROM
( SELECT max ( $tab2 . id ) AS id , artikel
FROM einkaufspreise $tab2
WHERE $tab2 . geloescht != 1
AND (
ifnull ( $tab2 . gueltig_bis , '0000-00-00' ) = '0000-00-00'
OR $tab2 . gueltig_bis >= CURDATE ( )
)
GROUP BY artikel ) " . $tab1 . "
INNER JOIN einkaufspreise " . $tab2 . " ON $tab1 . id = $tab2 . id
)
" ;
}
/**
* @ param string $typ
* @ param bool $live
*
* @ return string
*/
static function Waehrung ( $typ = 'letzterek' , $live = true )
{
if ( ! $live )
{
switch ( $typ )
{
case 'letzterek' :
return " if(ifnull(lw.preis_letzterek,0) <> 0,if(lw.waehrungletzt<>'',lw.waehrungletzt,'EUR'),if(ifnull(ek.waehrung,'')<>'',ek.waehrung,'EUR')) " ;
break ;
case 'letzerekarchiv' :
return " if(ifnull(lw.preis_letzterek,0) <> 0,if(lw.waehrungletzt<>'',lw.waehrungletzt,'EUR'),'EUR') " ;
break ;
case 'inventurwertarchiv' :
return " if(ifnull(lw.inventurwert,0) <> 0,'EUR',
if ( ifnull ( lw . preis_letzterek , 0 ) <> 0 ,
if ( lw . waehrungletzt <> '' , lw . waehrungletzt , 'EUR' ),
'EUR'
)
) " ;
break ;
case 'inventurwert' :
return " if(ifnull(lw.inventurwert,0) <> 0,'EUR',
if ( ifnull ( art . inventurekaktiv , 0 ) <> 0
, 'EUR' ,
if ( ifnull ( lw . preis_letzterek , 0 ) <> 0 ,
if ( lw . waehrungletzt <> '' , lw . waehrungletzt , 'EUR' ),
if ( ifnull ( ek . waehrung , '' ) <> '' , ek . waehrung , 'EUR' )
)
)
) " ;
break ;
case 'kalkulierterekarchiv' :
return "
if (
ifnull ( lw . preis_kalkulierterek , 0 ) <> 0
,
if ( lw . waehrungkalk <> '' , lw . waehrungkalk , 'EUR' )
,
if ( ifnull ( lw . preis_letzterek , 0 ) <> 0 ,
if ( lw . waehrungletzt <> '' , lw . waehrungletzt , 'EUR' )
, 'EUR'
)
) " ;
break ;
default :
return "
if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , if ( lw . waehrungkalk <> '' , lw . waehrungkalk , 'EUR' ),
if ( ifnull ( art . verwendeberechneterek , 0 ) <> 0 , if ( ifnull ( art . berechneterekwaehrung , '' ) <> '' , art . berechneterekwaehrung , 'EUR' )
,
if ( ifnull ( lw . preis_letzterek , 0 ) <> 0 , if ( lw . waehrungletzt <> '' , lw . waehrungletzt , 'EUR' ), if ( ifnull ( ek . waehrung , '' ) <> '' , ek . waehrung , 'EUR' ))
)
) " ;
break ;
}
} else {
switch ( $typ )
{
case 'letzterek' :
case 'letzterekarchiv' :
return " if(ifnull(ek.waehrung,'')<>'',ek.waehrung,'EUR') " ;
break ;
case 'inventurwert' :
case 'inventurwertarchiv' :
return " if(ifnull(art.inventurekaktiv,0) <> 0,'EUR',if(ifnull(ek.waehrung,'')<>'',ek.waehrung,'EUR')) " ;
break ;
default :
return "
if ( ifnull ( art . verwendeberechneterek , 0 ) <> 0 , if ( ifnull ( art . berechneterekwaehrung , '' ) <> '' , art . berechneterekwaehrung , 'EUR' )
,
if ( ifnull ( ek . waehrung , '' ) <> '' , ek . waehrung , 'EUR' )
)
" ;
break ;
}
}
}
/**
* @ param string $typ
* @ param bool $live
*
* @ return string
*/
public static function EinzelPreis ( $typ = 'letzterek' , $live = true )
{
if ( ! $live )
{
switch ( $typ )
{
case 'letzterekarchiv' :
return " if(ifnull(lw.preis_letzterek,0) <> 0,lw.preis_letzterek,0) " ;
break ;
case 'letzterek' :
return " if(ifnull(lw.preis_letzterek,0) <> 0,lw.preis_letzterek,ifnull(ek.preis,0)) " ;
break ;
case 'inventurwertarchiv' :
return " if(ifnull(lw.inventurwert,0) <> 0,lw.inventurwert,
ifnull ( lw . preis_letzterek , 0 )
) " ;
break ;
case 'inventurwert' :
return " if(ifnull(lw.inventurwert,0) <> 0,lw.inventurwert,
if ( ifnull ( art . inventurekaktiv , 0 ) <> 0
, art . inventurek ,
if ( ifnull ( lw . preis_letzterek , 0 ) <> 0 , lw . preis_letzterek , ifnull ( ek . preis , 0 ))
)
) " ;
break ;
case 'kalkulierterekarchiv' :
return "
if (
ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 ,
lw . preis_kalkulierterek ,
ifnull ( lw . preis_letzterek , 0 )
) " ;
break ;
default :
return "
if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , lw . preis_kalkulierterek ,
if ( ifnull ( art . verwendeberechneterek , 0 ) <> 0 , art . berechneterek
, if ( ifnull ( lw . preis_letzterek , 0 ) <> 0 ,
lw . preis_letzterek ,
ifnull ( ek . preis , 0 )
)
)
) " ;
break ;
}
} else {
switch ( $typ )
{
case 'letzterek' :
case 'letzterekarchiv' :
return " ifnull(ek.preis,0) " ;
break ;
case 'inventurwertarchiv' :
case 'inventurwert' :
return " if(ifnull(art.inventurekaktiv,0) <> 0,art.inventurek,ifnull(ek.preis,0)) " ;
break ;
default :
return "
if ( ifnull ( art . verwendeberechneterek , 0 ) <> 0 , art . berechneterek
,
ifnull ( ek . preis , 0 )
)
" ;
break ;
}
}
}
/**
* @ param string $typ
* @ param bool $live
*
* @ return string
*/
2023-02-08 16:24:30 +01:00
/*
Get the correct currency conversion rate to the date
*/
public static function KursJoin ( string $datum , string $waehrung_nach = 'EUR' )
2022-07-01 14:24:56 +02:00
{
2023-02-08 16:24:30 +01:00
$relevant_dates = "
SELECT
waehrung_von ,
waehrung_nach ,
MIN (
DATE
(
REPLACE
(
COALESCE ( gueltig_bis , '9999-12-31' ),
'0000-00-00' ,
'9999-12-31'
)
)
) AS gueltig_datum
FROM
`waehrung_umrechnung`
WHERE
REPLACE
(
COALESCE ( gueltig_bis , '9999-12-31' ),
'0000-00-00' ,
'9999-12-31'
) >= '".$datum."'
GROUP BY
waehrung_von ,
waehrung_nach
" ;
$list_of_rates = "
SELECT
waehrung_von ,
waehrung_nach ,
DATE
(
REPLACE
(
COALESCE ( gueltig_bis , '9999-12-31' ),
'0000-00-00' ,
'9999-12-31'
)
) AS gueltig_datum ,
kurs
FROM
waehrung_umrechnung
" ;
$sql = "
LEFT JOIN
(
SELECT
lor . waehrung_von ,
lor . waehrung_nach ,
MAX ( lor . kurs ) AS kurs
FROM
(
$list_of_rates
) lor
INNER JOIN (
$relevant_dates
) rd
ON
lor . gueltig_datum = rd . gueltig_datum
AND
lor . waehrung_von = rd . waehrung_von
AND
lor . waehrung_nach = rd . waehrung_nach
GROUP BY
lor . waehrung_von ,
lor . waehrung_nach
) wt
ON
wt . waehrung_von = ek . waehrung AND wt . waehrung_nach = '".$waehrung_nach."' " ;
return ( $sql );
2022-07-01 14:24:56 +02:00
}
2023-02-08 16:24:30 +01:00
/*
LEFT JOIN (
SELECT MAX ( kurs ) AS kurs ,
waehrung_von ,
waehrung_nach
FROM
waehrung_umrechnung
WHERE
(
ISNULL ( gueltig_bis ) OR gueltig_bis >= NOW () OR gueltig_bis = '0000-00-00' ) AND (
waehrung_von LIKE 'EUR' OR waehrung_nach LIKE 'EUR'
)
GROUP BY
waehrung_von ,
waehrung_nach
) wt
ON
wt . waehrung_nach <> 'EUR' AND wt . waehrung_nach = " .self::Waehrung( $typ , $live ). " OR wt . waehrung_von <> 'EUR' AND wt . waehrung_von = " .self::Waehrung( $typ , $live ). " " ;
*/
2022-07-01 14:24:56 +02:00
/**
* @ param Application $app
* @ param string $typ
* @ param null | bool $live
*
* @ return string
*/
public static function PreisUmrechnung ( $app , $typ , $live = null )
{
$kursusd = $app -> erp -> GetWaehrungUmrechnungskurs ( 'EUR' , 'USD' );
$kurschf = $app -> erp -> GetWaehrungUmrechnungskurs ( 'EUR' , 'CHF' );
if ( ! $live )
{
return '
if (
ifnull ( lw . kursletzt , 0 ) <> 0
,
1 / lw . kursletzt
,
if (
ifnull ( wt . kurs , 0 ) <> 0
,
if (
wt . waehrung_nach = '.self::Waehrung($typ, $live).' ,
( 1 / wt . kurs ),
wt . kurs
)
,
if ( '.self::Waehrung($typ, $live).' = \ ' USD\ ' ,
1.0 / '.$kursusd.' ,
if ( '.self::Waehrung($typ, $live).' = \ ' CHF\ ' ,
1.0 / '.$kurschf.' ,
1 )
)
)
)
*
' . self :: EinzelPreis ( $typ , $live );
}
return '
if (
ifnull ( wt . kurs , 0 ) <> 0
,
if (
wt . waehrung_nach = '.self::Waehrung($typ, $live).' ,
( 1 / wt . kurs ),
wt . kurs
)
,
if ( '.self::Waehrung($typ, $live).' = \ ' USD\ ' ,
1.0 / '.$kursusd.' ,
if ( '.self::Waehrung($typ, $live).' = \ ' CHF\ ' ,
1.0 / '.$kurschf.' ,
1 )
)
)
*
' . self :: EinzelPreis ( $typ , $live );
/*
if ( ! $live )
{ //aus Cronjob
if ( $typ == 'letzterek' )
{
return '
if (
ifnull ( lw . kursletzt , 0 ) <> 0
,
1 / lw . kursletzt
,
if (
ifnull ( wt . kurs , 0 ) <> 0
,
if (
wt . waehrung_nach = lw . waehrungletzt ,
( 1 / wt . kurs ),
wt . kurs
)
,
if ( lw . waehrungletzt = \ ' USD\ ' ,
1.0 / '.$kursusd.' ,
if ( lw . waehrungletzt = \ ' CHF\ ' ,
1.0 / '.$kurschf.' ,
1 )
)
)
)
* ifnull ( lw . preis_letzterek , 0 )
' ;
} else {
return '
if (
if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , ifnull ( lw . kurskalk , 0 ), ifnull ( lw . kursletzt , 0 )) <> 0
,
1 / if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , ifnull ( lw . kurskalk , 0 ), ifnull ( lw . kursletzt , 0 ))
,
if (
ifnull ( wt . kurs , 0 ) <> 0
,
if (
wt . waehrung_nach = if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , lw . kurskalk , lw . kursletzt ),
( 1 / wt . kurs ),
wt . kurs
)
,
if ( if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , lw . kurskalk , lw . kursletzt ) = \ ' USD\ ' ,
1.0 / '.$kursusd.' ,
if ( if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , lw . kurskalk , lw . kursletzt ) = \ ' CHF\ ' ,
1.0 / '.$kurschf.' ,
1 )
)
)
)
* if ( ifnull ( lw . preis_kalkulierterek , 0 ) <> 0 , lw . preis_kalkulierterek , ifnull ( lw . preis_letzterek , 0 ))
' ;
}
} else {
if ( $typ == 'letzterek' )
{
return '
if (
ifnull ( wt . kurs , 0 ) <> 0
,
if (
wt . waehrung_nach = ek . waehrung ,
( 1 / wt . kurs ),
wt . kurs
)
,
if ( ifnull ( ek . waehrung , \ ' \ ' ) = \ ' USD\ ' ,
1.0 / '.$kursusd.' ,
if ( ifnull ( ek . waehrung , \ ' \ ' ) = \ ' CHF\ ' ,
1.0 / '.$kurschf.' ,
1 )
)
)
* ifnull ( ek . preis , 0 )
' ;
} else {
return '
if (
ifnull ( wt . kurs , 0 ) <> 0
,
if (
wt . waehrung_nach = if ( ifnull ( art . berechneterek , 0 ) <> 0 , art . berechneterekwaehrung , ifnull ( ek . waehrung , \ ' \ ' )),
( 1 / wt . kurs ),
wt . kurs
)
,
if ( if ( ifnull ( art . berechneterek , 0 ) <> 0 , art . berechneterekwaehrung , ifnull ( ek . waehrung , \ ' \ ' )) = \ ' USD\ ' ,
1.0 / '.$kursusd.' ,
if ( if ( ifnull ( art . berechneterek , 0 ) <> 0 , art . berechneterekwaehrung , ifnull ( ek . waehrung , \ ' \ ' )) = \ ' CHF\ ' ,
1.0 / '.$kurschf.' ,
1 )
)
)
* if ( ifnull ( art . berechneterek , 0 ) <> 0 , art . berechneterek , ifnull ( ek . preis , 0 ))
' ;
}
}
*/
}
/**
* @ param Application $app
* @ param string $name
* @ param array $erlaubtevars
*
* @ return array
*/
public static function TableSearch ( $app , $name , $erlaubtevars )
{
$extended_mysql55 = " ,'de_DE' " ;
switch ( $name )
{
case 'lagerbestandsberechnung' :
$allowed [ 'lager' ] = array ( 'wert' );
// headings
$heading = array ( 'Artikel-Nr.' , 'Bezeichnung' , 'Projekt' , 'Lager' , 'Menge' , 'Letzter Preis' , 'Gesamt' , 'Inventurwert' , 'Inv. Gesamt' , 'Menü' );
$width = array ( '10%' , '50%' , '5%' , '20%' , '10%' , '10%' , '10%' , '10%' , '1%' );
$findcols = array ( 'a.nummer' , 'a.name_de' , 'p.abkuerzung' , " CONCAT(la.bezeichnung,' / ',lp.kurzbezeichnung) " , 'l.menge' , " IFNULL(k.minpreis,0) " , " IFNULL(k.minpreis,0)*l.menge " , 'IFNULL(a.inventurek,0)' , 'IFNULL(a.inventurek,0)*l.menge' , 'l.id' );
$searchsql = array ( 'a.nummer' , 'a.name_de' , 'p.abkuerzung' , 'la.bezeichnung' , 'lp.kurzbezeichnung' );
$menu = " <table cellpadding=0 cellspacing=0><tr><td nowrap> " . " <a href= \" index.php?module=artikel&action=lager&id=%value% \" target= \" _blank \" > " . " <img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/forward.svg \" border= \" 0 \" ></a> " . " </td></tr></table> " ;
$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 = " <table><tr><td nowrap><a href= \" index.php?module=lager&action=platzeditpopup&id=%value% \" ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=DeleteDialog( \" index.php?module=lager&action=deleteplatz&id=%value% \" );><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=PrintDialog( \" index.php?module=lager&action=regaletiketten&id=%value% \" );><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/labelprinter.png \" border= \" 0 \" ></a></td></tr></table> " ;
// SQL statement
$sql = " SELECT SQL_CALC_FOUND_ROWS l.id,
l . kurzbezeichnung , if ( l . autolagersperre , 'kein Versand aus diesem Lager' , '' ) as autolagersperre ,
if ( l . verbrauchslager , 'ja' , '' ) as verbrauchslager ,
if ( l . poslager , 'ja' , '' ) as poslager ,
if ( l . sperrlager , 'ja' , '' ) as sperrlager ,
if ( l . laenge != 0.0 , CONCAT ( l . laenge , '/' , l . breite , '/' , l . hoehe ), '-' ) as volumen ,
l . regalart , l . abckategorie , a . name , l . rownumber ,
l . id as menu FROM lager_platz l LEFT JOIN adresse a ON a . id = l . adresse " ;
$id = $app -> Secure -> GetGET ( 'id' );
// fester filter
$where = " l.geloescht=0 AND l.id!=0 AND l.lager=' $id ' " ;
$count = " SELECT COUNT(id) FROM lager_platz WHERE geloescht=0 AND lager=' $id ' " ;
break ;
case 'lagerletztebewegungen' :
$allowed [ 'lager' ] = array ( 'letztebewegungen' );
// headings
// headings
$heading = array ( 'Datum' , 'Lager' , 'Menge' , 'Nummer' , 'Artikel' , 'Richtung' , 'Referenz' , 'Bearbeiter' , 'Projekt' , 'Menü' );
$width = array ( '1%' , '5%' , '5%' , '5%' , '5%' , '5%' , '40%' , '20%' , '5%' , '1%' );
$findcols = array ( 'zeit' , 'lager' , 'menge' , 'nummer' , 'name_de' , 'Richtung' , 'referenz' , 'bearbeiter' , 'projekt' , 'id' );
$searchsql = array ( 'lpi.referenz' , 'lpi.bearbeiter' , 'p.abkuerzung' , 'DATE_FORMAT(lpi.zeit,\'%d.%m.%Y\')' , 'lp.kurzbezeichnung' , 'a.name_de' , 'a.nummer' );
$defaultorder = 10 ; //Optional wenn andere Reihenfolge gewuenscht
$alignright = array ( 3 );
$defaultorderdesc = 1 ;
$menu = " - " ;
$sql = " SELECT SQL_CALC_FOUND_ROWS lpi.id,
DATE_FORMAT ( lpi . zeit , '%d.%m.%Y' ) as datum , lp . kurzbezeichnung as lager , trim ( lpi . menge ) + 0 as menge ,
a . nummer , a . name_de , if ( lpi . eingang , 'Eingang' , 'Ausgang' ) as Richtung , substring ( lpi . referenz , 1 , 60 ) as referenz , lpi . bearbeiter as bearbeiter , p . abkuerzung as projekt ,
lpi . id FROM lager_bewegung lpi LEFT JOIN lager_platz as lp ON lpi . lager_platz = lp . id LEFT JOIN projekt p ON lpi . projekt = p . id LEFT JOIN artikel a ON a . id = lpi . artikel " ;
$count = " SELECT COUNT(lpi.id) FROM lager_bewegung lpi LEFT JOIN lager_platz as lp ON lpi.lager_platz=lp.id LEFT JOIN projekt p ON lpi.projekt=p.id " ;
break ;
case 'lagertabelle' :
$allowed [ 'lager' ] = array ( 'list' );
$defaultCountry = $app -> erp -> Firmendaten ( 'land' );
if ( empty ( $defaultCountry )) {
$defaultCountry = 'DE' ;
}
// headings
$heading = array ( 'Bezeichnung' , 'Projekt' , 'Kommissions- / Produktionslager' , 'Land' , 'Menü' );
$width = array ( '60%' , '10%' , '20%' , '5%' , '8%' );
$findcols = array ( 'l.bezeichnung' , 'p.abkuerzung' , 'a.name' , " IF(a.land IS NULL OR a.land = '', ' $defaultCountry ', a.land) " , 'l.id' );
$searchsql = array ( 'l.bezeichnung' , 'p.abkuerzung' , 'a.name' , " IF(a.land IS NULL OR a.land = '', ' $defaultCountry ', a.land) " , 'p.name' );
$defaultorder = 4 ;
$defaultorderdesc = 1 ;
$menu = " <table><tr><td nowrap><a href= \" index.php?module=lager&action=edit&id=%value% \" ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=DeleteDialog( \" index.php?module=lager&action=delete&id=%value% \" );><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=PrintDialog( \" index.php?module=lager&action=regaletiketten&id=%value%&cmd=all \" );><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/labelprinter.png \" border= \" 0 \" ></a></td></tr></table> " ;
// SQL statement
$sql = " SELECT SQL_CALC_FOUND_ROWS l.id, l.bezeichnung, p.abkuerzung, a.name,
IF ( a . land IS NULL OR a . land = '' , '$defaultCountry' , a . land ),
l . id as menu
FROM `lager` AS `l`
LEFT JOIN `projekt` AS `p` ON p . id = l . projekt
LEFT JOIN `adresse` AS `a` ON a . id = l . adresse " ;
// fester filter
$where = " l.geloescht=0 AND l.id!=0 " . $app -> erp -> ProjektRechte (); // heute mal wieder projekt rein
$count = " SELECT COUNT(l.id)
FROM `lager` AS `l`
LEFT JOIN `projekt` AS `p` ON p . id = l . projekt
WHERE l . geloescht = 0 " . $app->erp ->ProjektRechte(); // heute mal wieder projekt rein
break ;
case " lagerdifferenzenlagerplatz " :
$allowed [ 'lager' ] = array ( 'differenzenlagerplatz' );
// headings
$heading = array ( 'Artikel-Nr.' , 'Artikel' , 'Projekt' , 'Eingang' , 'Ausgang' , 'Berechnet' , 'Bestand' , 'Differenz' , 'Lagerplatz' , 'Menü' );
$width = array ( '10%' , '40%' , '10%' , '10%' , '5%' , '5%' , '5%' , '5%' , '5%' , '10%' );
$findcols = array ( 'a.nummer' , 'a.name_de' , 'p.abkuerzung' , 'l.eingang' , 'l.ausgang' , 'l.berechnet' , 'l.bestand' , 'l.differenz' , 'l.lager_platz' , 'a.id' );
$searchsql = array ( 'a.nummer' , 'a.name_de' , 'p.abkuerzung' , 'l.eingang' , 'l.ausgang' , 'l.berechnet' , 'l.bestand' , 'l.differenz' , 'lp.kurzbezeichnung' );
$defaultorder = 6 ;
$defaultorderdesc = 1 ;
$alignright = array ( 4 , 5 , 6 , 7 , 8 );
$menu = " <a href= \" index.php?module=artikel&action=lager&id=%value% \" target= \" _blank \" ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=LagerplatzdifferenzenEdit( \" %value% \" ) ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/forward.svg \" border= \" 0 \" ></a> " ;
/*
ifnull (( SELECT SUM ( l . menge ) FROM lager_bewegung l WHERE l . artikel = a . id AND l . eingang = 1 ), 0 ) -
ifnull (( SELECT SUM ( l . menge ) FROM lager_bewegung l WHERE l . artikel = a . id AND l . eingang = 0 ), 0 ) -
ifnull (( SELECT SUM ( l . menge ) FROM lager_platz_inhalt l WHERE l . artikel = a . id ), 0 ) as differenz ,
*/
// SQL statement
$sql = "
SELECT
SQL_CALC_FOUND_ROWS a . id ,
a . nummer ,
a . name_de ,
p . abkuerzung ,
" . $app->erp ->FormatMenge('l.eingang'). " ,
" . $app->erp ->FormatMenge('l.ausgang'). " ,
" . $app->erp ->FormatMenge('l.berechnet'). " ,
" . $app->erp ->FormatMenge('l.bestand'). " ,
if ( l . bestand > l . berechnet , CONCAT ( '<font color=red>' , " . $app->erp ->FormatMenge('l.berechnet'). " , '</font>' ),
" . $app->erp ->FormatMenge('l.differenz'). " ),
lp . kurzbezeichnung ,
CONCAT ( a . id , '_' , lp . id )
FROM
lager_differenzen l
LEFT JOIN artikel a ON a . id = l . artikel
LEFT JOIN lager_platz lp ON lp . id = l . lager_platz
LEFT JOIN projekt p ON a . projekt = p . id
" ;
// fester filter
$where = " l.user=' " . $app -> User -> GetID () . " ' AND l.lager_platz != 0 " ;
$count = " SELECT COUNT(l.id) FROM lager_differenzen l WHERE l.user=' " . $app -> User -> GetID () . " ' AND l.lager_platz != 0 " ;
break ;
case 'lagerdifferenzen' :
$allowed [ 'lager' ] = array ( 'differenzen' );
// headings
$heading = array ( 'Artikel-Nr.' , 'Artikel' , 'Eingang' , 'Ausgang' , 'Berechnet' , 'Bestand' , 'Differenz' , 'Menü' );
$width = array ( '10%' , '40%' , '10%' , '10%' , '10%' , '10%' , '10%' , '10%' );
$findcols = array ( 'a.nummer' , 'a.name_de' , 'l.eingang' , 'l.ausgang' , 'l.berechnet' , 'l.bestand' , 'l.differenz' , 'a.id' );
$searchsql = array ( 'kurzbezeichnung' );
$defaultorder = 6 ;
$defaultorderdesc = 1 ;
$alignright = array ( 3 , 4 , 5 , 6 , 7 );
$menu = " <a href= \" index.php?module=artikel&action=lager&id=%value% \" target= \" _blank \" ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> " . " " ;
/*
ifnull (( SELECT SUM ( l . menge ) FROM lager_bewegung l WHERE l . artikel = a . id AND l . eingang = 1 ), 0 ) -
ifnull (( SELECT SUM ( l . menge ) FROM lager_bewegung l WHERE l . artikel = a . id AND l . eingang = 0 ), 0 ) -
ifnull (( SELECT SUM ( l . menge ) FROM lager_platz_inhalt l WHERE l . artikel = a . id ), 0 ) as differenz ,
*/
// SQL statement
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer, a.name_de, " . $app -> erp -> FormatMenge ( 'l.eingang' ) . " , " . $app -> erp -> FormatMenge ( 'l.ausgang' ) . " ,
" . $app->erp ->FormatMenge('l.berechnet'). " , " . $app->erp ->FormatMenge('l.bestand'). " ,
if ( l . bestand > l . berechnet , CONCAT ( '<font color=red>' , " . $app->erp ->FormatMenge('l.differenz'). " , '</font>' ), " . $app->erp ->FormatMenge('l.differenz'). " ), a . id FROM lager_differenzen l
LEFT JOIN artikel a ON a . id = l . artikel " ;
// fester filter
$where = " l.user=' " . $app -> User -> GetID () . " ' AND l.lager_platz = 0 " ;
$count = " SELECT COUNT(l.id) FROM lager_differenzen l WHERE l.user=' " . $app -> User -> GetID () . " ' AND l.lager_platz = 0 " ;
break ;
case " lager_wert " :
2023-02-06 13:48:58 +01:00
$allowed [ 'lager' ] = array ( 'wert' );
2022-07-01 14:24:56 +02:00
2023-02-03 09:53:33 +01:00
// Get HTML form values
$preisart = $app -> User -> GetParameter ( 'preisart' );
$datum = $app -> User -> GetParameter ( 'datum' );
$gruppierenlager = $app -> User -> GetParameter ( 'gruppierenlager' );
$preiseineuro = $app -> User -> GetParameter ( 'preiseineuro' );
2022-07-01 14:24:56 +02:00
if ( $datum )
{
$datum = $app -> String -> Convert ( $datum , '%1.%2.%3' , '%3-%2-%1' );
} else {
$datum = date ( 'Y-m-d' );
}
$colmenge = 'lw.menge' ;
if ( $datum == date ( 'Y-m-d' ))
{
$live = true ;
$colmenge = 'lpi.menge' ;
} else {
$live = false ;
$_datum = $app -> DB -> Select ( " SELECT max(datum) FROM lagerwert WHERE datum <= ' $datum ' AND ' $datum ' < curdate() " );
if ( $_datum )
{
$datum = $_datum ;
}
}
$colgewicht = " if(lw.gewicht = 0,ifnull(art.gewicht,'0') ,lw.gewicht) *lw.menge " ;
$colvolumen = " if(lw.volumen=0,ifnull(art.laenge,'0')*ifnull(art.breite,'0')*ifnull(art.hoehe,'0'),lw.volumen)*lw.menge " ;
$colkurzbezeichnung = 'lp.kurzbezeichnung' ;
$colbezeichnung = 'lag.bezeichnung' ;
if ( $live )
{
$colgewicht = " ifnull(art.gewicht,'0') * ifnull(lpi.menge,0) " ;
$colvolumen = " ifnull(art.laenge,'0')*ifnull(art.breite,'0')*ifnull(art.hoehe,'0')* ifnull(lpi.menge,0) " ;
$colkurzbezeichnung = 'lpi.kurzbezeichnung' ;
$colbezeichnung = 'lpi.bezeichnung' ;
}
2023-02-06 13:48:58 +01:00
$heading = array ( 'Datum' , 'Artikel-Nr.' , 'Artikel' , 'Artikelkategorie' , 'Lager' , 'Lagerplatz' , 'Menge' , 'Gewicht' , 'Volumen' , 'EK-Preis' , 'Währung' , 'Kurs' , 'Gesamt' , 'invisible!?' , 'letzte Bewegung' , '' );
$width = array ( '5%' , '05%' , '20%' , '10%' , '10%' , '5%' , '5%' , '5%' , '5%' , '5%' , '5%' , '5%' , '1%' , '23%' , '5%' );
2022-07-01 14:24:56 +02:00
$findcols = array ( 'lw.datum' , 'art.nummer' , 'art.name_de' , '(select bezeichnung from artikelkategorien where id=(select SUBSTRING_INDEX(SUBSTRING_INDEX(art.typ, \'kat\', 1), \'_\', 1) as type from artikel where id=art.id))' , $colbezeichnung , $colkurzbezeichnung , $colmenge , $colgewicht , $colvolumen );
$kursjoin = " " ;
2023-02-06 13:48:58 +01:00
$preis = self :: EinzelPreis ( $preisart , $live );
$preiscol = $app -> erp -> FormatPreis ( $preis , 2 );
2023-02-08 16:24:30 +01:00
$waehrungcol = self :: Waehrung ( $preisart , $live );
2022-07-01 14:24:56 +02:00
2023-02-06 13:48:58 +01:00
if ( $preiseineuro ) {
2023-02-08 16:24:30 +01:00
$kursjoin = self :: KursJoin ( $datum );
2023-02-06 13:48:58 +01:00
$preisEUR = self :: PreisUmrechnung ( $app , $preisart , true );
$gesamtcol = " ( " . $preisEUR . '*' . $colmenge . " ) " ;
$kurs = $app -> erp -> FormatPreis ( 'kurs' , 2 );
} else {
$gesamtcol = " ( " . $preis . '*' . $colmenge . " ) " ;
$kurs = 1 ;
2022-07-01 14:24:56 +02:00
}
2023-02-06 13:48:58 +01:00
$findcols [] = $preis ;
$findcols [] = 'waehrung' ;
$findcols [] = 'kurs' ;
$findcols [] = $gesamtcol ;
2022-07-01 14:24:56 +02:00
$findcols [] = 'art.id' ;
$searchsql = $findcols ;
$searchsql [ 0 ] = " date_format(lw.datum,'%d.%m.%Y') " ;
2023-02-06 13:48:58 +01:00
$searchsql [ 13 ] = " date_format(lw.letzte_bewegung,'%d.%m.%Y %H:%i:%s') " ;
$searchsql [ 12 ] = " date_format(lbew.zeit,'%d.%m.%Y %H:%i:%s') " ;
2022-07-01 14:24:56 +02:00
$defaultorder = 1 ;
$defaultorderdesc = 0 ;
2023-02-06 13:48:58 +01:00
$alignright = array ( 7 , 8 , 9 , 10 , 11 , 12 , 13 );
$sumcol = array ( 7 , 8 , 9 , 13 );
$numbercols = array ( 7 , 8 , 9 , 10 , 12 , 13 );
$datecols = array ( 0 );
2022-07-01 14:24:56 +02:00
$onequeryperuser = true ;
$joinek = ' LEFT JOIN ' . self :: LetzterEK ( 'art' , 'e1' , 'e2' ) . ' ek ON art.id = ek.artikel' ;
2023-02-06 13:48:58 +01:00
if ( ! $live )
{
2022-07-01 14:24:56 +02:00
2023-02-06 13:48:58 +01:00
$findcols [] = 'lw.letzte_bewegung' ;
2022-07-01 14:24:56 +02:00
$sql = " SELECT DISTINCT SQL_CALC_FOUND_ROWS art.id, date_format(lw.datum,'%d.%m.%Y'), art.nummer, art.name_de, (select bezeichnung from artikelkategorien where id=(select SUBSTRING_INDEX(SUBSTRING_INDEX(art.typ, 'kat', 1), '_', 1) as type from artikel where id=art.id)) as artikelkategorie, lag.bezeichnung, lp.kurzbezeichnung,
" . $app->erp ->FormatMenge('lw.menge',2). " , " . $app->erp ->FormatPreis( $colgewicht ,2). " , " . $app->erp ->FormatPreis( $colvolumen ,2). "
2023-02-06 13:48:58 +01:00
, $preiscol , $waehrungcol , " . $kurs . " , " . $app->erp ->FormatPreis( $gesamtcol ,2). " , '' , ifnull ( date_format ( lw . letzte_bewegung , '%d.%m.%Y %H:%i:%s' ), '' ), art . id
2022-07-01 14:24:56 +02:00
FROM artikel art
INNER JOIN lagerwert lw ON lw . artikel = art . id AND ( isnull ( art . geloescht ) OR art . geloescht = 0 ) AND art . lagerartikel = 1
$joinek
$kursjoin
$joinartikelbaum
" ;
$where = " lw.datum = ' $datum ' " ;
2023-02-06 13:48:58 +01:00
if ( $gruppierenlager )
2022-07-01 14:24:56 +02:00
{
$sql .= " INNER JOIN (SELECT '' as kurzbezeichnung ) lp ON lp.kurzbezeichnung = ''
INNER JOIN lager lag ON lw . lager = lag . id
2023-02-06 13:48:58 +01:00
" ;
2022-07-01 14:24:56 +02:00
$where .= " AND lw.lager <> 0 " ;
2023-02-06 13:48:58 +01:00
} else {
2022-07-01 14:24:56 +02:00
$sql .= " INNER JOIN lager_platz lp ON lp.id = lw.lager_platz
INNER JOIN lager lag ON lag . id = lp . lager
" ;
$where .= " AND lw.lager = 0 " ;
}
2023-02-06 13:48:58 +01:00
} else {
2022-07-01 14:24:56 +02:00
$findcols [ 0 ] = 'curdate()' ;
2023-02-06 13:48:58 +01:00
$findcols [] = 'lbew.zeit' ;
2022-07-01 14:24:56 +02:00
$sql = " SELECT DISTINCT SQL_CALC_FOUND_ROWS art.id, date_format(curdate(),'%d.%m.%Y'), art.nummer, art.name_de, (select bezeichnung from artikelkategorien where id=(select SUBSTRING_INDEX(SUBSTRING_INDEX(art.typ, 'kat', 1), '_', 1) as type from artikel where id=art.id)) as artikelkategorie, lpi.bezeichnung, lpi.kurzbezeichnung,
" . $app->erp ->FormatMenge( $colmenge ,2). " , " . $app->erp ->FormatPreis( $colgewicht ,2). " , " . $app->erp ->FormatPreis( $colvolumen ,2). "
2023-02-06 13:48:58 +01:00
, $preiscol , $waehrungcol , " . $kurs . " , " . $app->erp ->FormatPreis( $gesamtcol ,2). " , '' , ifnull ( date_format ( lbew . zeit , '%d.%m.%Y %H:%i:%s' ), '' ), art . id
2022-07-01 14:24:56 +02:00
FROM artikel art
$joinek
$joinartikelbaum
LEFT JOIN lagerwert lw ON lw . artikel = art . id AND lw . datum = '$datum' AND lw . datum < curdate ()
$kursjoin
" ;
$where = " (isnull(art.geloescht) OR art.geloescht = 0) AND art.lagerartikel = 1 " ;
2023-02-06 13:48:58 +01:00
if ( $gruppierenlager )
2022-07-01 14:24:56 +02:00
{
$sql .= " INNER JOIN (
SELECT lager_platz_inhalt . artikel , sum ( lager_platz_inhalt . menge ) as menge , '' as kurzbezeichnung , lager . bezeichnung , lager . id as lager
FROM lager_platz_inhalt
INNER JOIN lager_platz ON lager_platz_inhalt . lager_platz = lager_platz . id
INNER JOIN lager ON lager_platz . lager = lager . id
GROUP BY lager_platz_inhalt . artikel , lager . id
) lpi ON lpi . artikel = art . id AND ( isnull ( art . geloescht ) OR art . geloescht = 0 ) AND art . lagerartikel = 1
LEFT JOIN (
SELECT max ( lb1 . logdatei ) as zeit , lb1 . artikel , lp1 . lager as lager
FROM lager_bewegung lb1
INNER JOIN lager_platz lp1 ON lb1 . lager_platz = lp1 . id AND ifnull ( lp1 . geloescht , 0 ) = 0
INNER JOIN lager l1 ON lp1 . lager = l1 . id AND ifnull ( l1 . geloescht , 0 ) = 0
GROUP BY lb1 . artikel , lp1 . lager
) lbew ON lpi . artikel = lbew . artikel AND lpi . lager = lbew . lager
" ;
$where .= " AND lpi.lager <> 0 " ;
if ( $lager )
{
$where .= " AND lpi.lager = ' $lager ' " ;
}
2023-02-06 13:48:58 +01:00
} else {
2022-07-01 14:24:56 +02:00
$sql .= " INNER JOIN (
SELECT lager_platz_inhalt . artikel , sum ( lager_platz_inhalt . menge ) as menge , lager_platz . kurzbezeichnung , lager . bezeichnung , lager . id as lager , lager_platz . id as lager_platz
FROM lager_platz_inhalt
INNER JOIN lager_platz ON lager_platz_inhalt . lager_platz = lager_platz . id
INNER JOIN lager ON lager_platz . lager = lager . id
GROUP BY lager_platz_inhalt . artikel , lager . id , lager_platz . id
) lpi ON lpi . artikel = art . id
LEFT JOIN (
SELECT max ( lb1 . logdatei ) as zeit , lb1 . artikel , lp1 . id as lager_platz
FROM lager_bewegung lb1
INNER JOIN lager_platz lp1 ON lb1 . lager_platz = lp1 . id AND ifnull ( lp1 . geloescht , 0 ) = 0
INNER JOIN lager l1 ON lp1 . lager = l1 . id AND ifnull ( l1 . geloescht , 0 ) = 0
GROUP BY lb1 . artikel , lp1 . id
) lbew ON lpi . artikel = lbew . artikel AND lpi . lager_platz = lbew . lager_platz
" ;
$where .= " AND lpi.lager <> 0 " ;
if ( $lager )
{
$where .= " AND lpi.lager = ' $lager ' " ;
}
2023-02-06 13:48:58 +01:00
}
2022-07-01 14:24:56 +02:00
}
if ( $artikel )
{
$where .= " AND art.id = ' $artikel ' " ;
}
if ( $artikelkategorie > 0 ){
$where .= " AND (aba.kategorie = ' $artikelkategorie ' OR art.typ = ' " . $artikelkategorie . " _kat') " ;
}
2023-02-06 13:48:58 +01:00
$sql = $app -> YUI -> CodiereSQLForOneQuery ( $sql , $name );
2022-07-01 14:24:56 +02:00
$groupby = " " ;
$count = " " ;
break ;
case " lager_zwischenlager_eingang " :
$allowed [ 'lager' ] = array ( 'buchenzwischenlager' );
$heading = array ( 'Artikel' , 'Nummer' , 'EAN' , 'Lager' , 'Menge' , 'VPE' , 'Grund' , 'Projekt' , 'Menü' );
$width = array ( '20%' , '10%' , '10%' , '10%' , '5%' , '5%' , '20%' , '10%' , '1%' );
$findcols = array ( 'a.name_de' , 'a.nummer' , 'a.ean' , 'lp.kurzbezeichnung' , 'z.menge' , 'z.vpe' , 'z.grund' , 'p.abkuerzung' , 'z.id' );
$searchsql = array ( 'a.name_de' , 'a.nummer' , 'a.ean' , 'lp.kurzbezeichnung' );
$alignright = array ( 4 );
$hide767 = array ( 5 , 6 , 7 );
$sql = " SELECT SQL_CALC_FOUND_ROWS z.id,a.name_de,a.nummer,a.ean,lp.kurzbezeichnung,trim(z.menge)+0,z.vpe,z.grund, p.abkuerzung as projekt, z.id FROM zwischenlager z
LEFT JOIN artikel a ON a . id = z . artikel
LEFT JOIN lager_platz lp ON a . lager_platz = lp . id
LEFT JOIN projekt p ON p . id = z . projekt
" ;
$delete = " " ;
if ( $app -> erp -> RechteVorhanden ( " lager " , " buchenzwischenlagerdelete " )){
$delete = " <a href= \" # \" onclick= \" DeleteZw(%value%); \" ><img src= \" ./themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " ;
}
$menu = " <table cellpadding=0 cellspacing=0><tr><td nowrap><a href= \" index.php?module=lager&action=bucheneinlagern&cmd=zwischenlager&id=%value% \" ><img border= \" 0 \" src= \" ./themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/forward.svg \" ></a> <a onclick= \" DialogZwischenlager(%value%); \" href= \" # \" ><img src= \" ./themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/add.png \" border= \" 0 \" ></a> $delete </td></tr></table> " ;
$where = " z.richtung='eingang' " ;
$count = " SELECT count(z.id) FROM zwischenlager z WHERE $where " ;
break ;
case " lager_zwischenlager_ausgang " :
$allowed [ 'lager' ] = array ( 'buchenzwischenlager' );
$heading = array ( 'Artikel' , 'Nummer' , 'EAN' , 'Lager' , 'Menge' , 'VPE' , 'Grund' , 'Projekt' , 'Menü' );
$width = array ( '20%' , '10%' , '10%' , '10%' , '5%' , '5%' , '20%' , '10%' , '1%' );
$findcols = array ( 'a.name_de' , 'a.nummer' , 'a.ean' , 'lp.kurzbezeichnung' , 'z.menge' , 'z.vpe' , 'z.grund' , 'p.abkuerzung' , 'z.id' );
$searchsql = array ( 'a.name_de' , 'a.nummer' , 'a.ean' , 'lp.kurzbezeichnung' );
$alignright = array ( 4 );
$hide767 = array ( 5 , 6 , 7 );
$sql = " SELECT SQL_CALC_FOUND_ROWS z.id,a.name_de,a.nummer,a.ean,lp.kurzbezeichnung,trim(z.menge)+0,z.vpe,z.grund, p.abkuerzung as projekt, z.id FROM zwischenlager z
LEFT JOIN artikel a ON a . id = z . artikel
LEFT JOIN lager_platz lp ON a . lager_platz = lp . id
LEFT JOIN projekt p ON p . id = z . projekt
" ;
$delete = '' ;
if ( $app -> User -> GetType () == " admin " ){
$delete = " <a href= \" # \" onclick= \" DeleteZw(%value%); \" ><img src= \" ./themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " ;
}
$menu = " <table cellpadding=0 cellspacing=0><tr><td nowrap><a href= \" index.php?module=lager&action=bucheneinlagern&cmd=zwischenlager&id=%value% \" ><img border= \" 0 \" src= \" ./themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/forward.svg \" ></a> $delete </td></tr></table> " ;
$where = " z.richtung='ausgang' " ;
$count = " SELECT count(z.id) FROM zwischenlager z WHERE $where " ;
break ;
case " lager_bestand " :
$allowed [ 'lager' ] = array ( 'bestand' );
$app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#ohnebestand').click( function() { fnFilterColumn1( 0 ); } ); " );
$app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#chargengruppierung').click( function() { fnFilterColumn2( 0 ); } ); " );
for ( $r = 1 ; $r <= 2 ; $r ++ ) {
$app -> Tpl -> Add ( 'JAVASCRIPT' , '
function fnFilterColumn ' . $r . ' ( i ) {
if ( oMoreData ' . $r . $name . ' == 1 ) oMoreData ' . $r . $name . ' = 0 ;
else
oMoreData ' . $r . $name . ' = 1 ;
$ ( \ '#' . $name . ' \ ' ) . dataTable () . fnFilter (
\ ' \ ' ,
i ,
0 , 0
);
}
' );
}
//$defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht
//$defaultorderdesc = 1;
//$sumcol = 4;
$alignright = array ( 4 );
$menu = " <table cellpadding=0 cellspacing=0><tr><td nowrap><a href= \" index.php?module=artikel&action=lager&id=%value% \" target= \" _blank \" ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a></td></tr></table> " ;
$more_data1 = $app -> Secure -> GetGET ( " more_data1 " );
$more_data2 = 0 ;
$menucol = 6 ;
$heading = array ( 'Artikel-Nr.' , 'Artikel' );
$findcols = array ( 'a.nummer' , 'a.name_de' );
$searchsql = array ( 'a.nummer' , 'a.name_de' );
$width = array ( '10%' , '30%' );
$heading [] = 'Lagerplatz' ;
$width [] = '10%' ;
$findcols [] = 'lp.kurzbezeichnung' ;
$searchsql [] = 'lp.kurzbezeichnung' ;
$heading [] = 'Projekt' ;
$width [] = '10%' ;
$findcols [] = 'p.abkuerzung' ;
$searchsql [] = 'p.abkuerzung' ;
$heading [] = 'Menge' ;
if ( $more_data2 )
{
$findcols [] = 'menge' ;
} else {
$findcols [] = 'menge' ;
}
if ( $more_data2 )
{
$findcols [] = 'verkaufbare' ;
$findcols [] = 'reserviert' ;
} else {
$findcols [] = 'verkaufbare' ;
$findcols [] = 'reserviert' ;
}
$heading [] = 'Verkaufbare <sup>*</sup>' ;
$heading [] = 'Reserviert <sup>*</sup>' ;
$heading [] = 'Menü' ;
$width [] = '10%' ;
$width [] = '10%' ;
$width [] = '1%' ;
$findcols [] = 'a.id' ;
//$moreinfo = true;
if ( $more_data2 )
{
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id, CONCAT('<a href= \" index.php?module=artikel&action=edit&id=',a.id,' \" target= \" _blank \" >',a.nummer,'</a>'),a.name_de, " ;
} else {
$sql = " SELECT SQL_CALC_FOUND_ROWS lpi.id, CONCAT('<a href= \" index.php?module=artikel&action=edit&id=',a.id,' \" target= \" _blank \" >',a.nummer,'</a>'),a.name_de, " ;
}
if ( $more_data2 )
{
$sql .= " lp.kurzbezeichnung,p.abkuerzung,
" . $app->erp ->FormatMenge( " ifnull ( lpi . menge , 0 ) " ). " as fmenge ,
" . $app->erp ->FormatMenge( " IFNULL ( mengemhd , ifnull ( mengecharge , 0 )) " ). " as fmengecharge ,
" . $app->erp ->FormatMenge( " IFNULL ( lpi2 . gmenge , 0 ) - IFNULL ( r . reserviert , 0 ) " ). " as verkaufbare ,
" . $app->erp ->FormatMenge( " IFNULL ( r . reserviert , 0 ) " ). " as reserviert ,
a . id " ;
$sql .= "
FROM artikel a
INNER JOIN (
SELECT artikel , sum ( menge ) as menge , lager_platz
FROM lager_platz_inhalt
GROUP BY artikel , lager_platz
) AS lpi ON lpi . artikel = a . id
INNER JOIN (
SELECT artikel , sum ( menge ) as gmenge
FROM lager_platz_inhalt
GROUP BY artikel
) AS lpi2 ON a . id = lpi2 . artikel
INNER JOIN lager_platz lp ON lp . id = lpi . lager_platz
LEFT JOIN (
SELECT artikel , lager_platz , charge , sum ( menge ) as mengecharge , NULL as mhddatum
FROM lager_charge GROUP BY artikel , lager_platz , charge
) c ON c . lager_platz = lpi . lager_platz AND c . artikel = a . id
LEFT JOIN (
SELECT artikel , lager_platz , IFNULL ( charge , '' ) as charge2 , mhddatum , SUM ( menge ) as mengemhd
FROM `lager_mindesthaltbarkeitsdatum`
GROUP BY artikel , lager_platz , IFNULL ( charge , '' ), mhddatum
) AS m ON m . lager_platz = lpi . lager_platz AND m . artikel = a . id
LEFT JOIN (
SELECT artikel , SUM ( menge ) as reserviert
FROM lager_reserviert
GROUP BY artikel
) r ON r . artikel = a . id
LEFT JOIN lager l ON l . id = lp . lager
LEFT JOIN projekt p ON p . id = l . projekt
" ;
} else {
$sql .= " lp.kurzbezeichnung,p.abkuerzung,
" . $app->erp ->FormatMenge( " ifnull ( lpi . menge , 0 ) " ). " as fmenge ,
'' as mengecharge ,
" . $app->erp ->FormatMenge( " IFNULL ( lpi2 . gmenge , 0 ) - IFNULL ( r . reserviert , 0 ) " ). " as verkaufbare , " . $app->erp ->FormatMenge( " IFNULL ( r . reserviert , 0 ) " ). " as reserviert , a . id " ;
$sql .= "
FROM lager_platz_inhalt lpi
LEFT JOIN lager_platz lp ON lp . id = lpi . lager_platz
LEFT JOIN lager l ON l . id = lp . lager
LEFT JOIN projekt p ON p . id = l . projekt
INNER JOIN artikel a ON a . id = lpi . artikel
INNER JOIN (
SELECT artikel , SUM ( menge ) as gmenge
FROM lager_platz_inhalt
GROUP BY artikel
) AS lpi2 ON lpi . artikel = lpi2 . artikel
LEFT JOIN ( SELECT artikel , SUM ( menge ) as reserviert FROM lager_reserviert GROUP BY artikel ) r ON r . artikel = a . id " ;
}
$subwhere = " " ;
if ( $more_data1 ) {
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer,a.name_de, " ;
$sql .= " '-',p.abkuerzung,'0' as menge,'0' as mengecharge, '0' as verkaufbare, " . $app -> erp -> FormatMenge ( " IFNULL(r.reserviert,0) " ) . " as reserviert, a.id
FROM artikel AS `a`
LEFT JOIN ( SELECT lpi . artikel , lp . kurzbezeichnung FROM `lager_platz_inhalt` AS `lpi` LEFT JOIN `lager_platz` AS `lp` ON lp . id = lpi . lager_platz GROUP BY lpi . artikel ) AS `lp` ON lp . artikel = a . id
LEFT JOIN ( SELECT lr . artikel , SUM ( lr . menge ) AS `reserviert` FROM `lager_reserviert` AS `lr` GROUP BY lr . artikel ) r ON r . artikel = a . id
LEFT JOIN `projekt` AS `p` ON p . id = a . projekt " ;
$subwhere = " AND a.lagerartikel=1 AND ((SELECT SUM(lpi.menge) FROM lager_platz_inhalt lpi WHERE lpi.artikel=a.id) <=0 OR ISNULL((SELECT SUM(lpi.menge) FROM lager_platz_inhalt lpi WHERE lpi.artikel=a.id))) " ;
}
if ( $more_data2 ) {
$subwhere .= ' AND (NOT ISNULL(m.artikel) OR NOT ISNULL(c.artikel)) ' ;
}
$where = " a.geloescht!=1 " . $subwhere . " " . $app -> erp -> ProjektRechte ();
//$count = "select count(distinct ms.datum) FROM mitarbeiterzeiterfassung_sollstunden ms where ms.adresse = '$adresse' AND ms.datum >= '$von' AND ms.datum <= '$bis'";
/* if ( $more_data1 ){
$count = " SELECT count(a.id) FROM artikel a WHERE " . $where ;
}
else {
if ( $more_data2 )
{
$count = " SELECT count(c.id) FROM lager_charge c INNER JOIN artikel a ON a.id=c.artikel WHERE " . $where ;
} else {
$count = " SELECT count(lpi.id) FROM lager_platz_inhalt lpi LEFT JOIN artikel a ON a.id=lpi.artikel LEFT JOIN lager_platz lp ON lp.id=lpi.lager_platz WHERE " . $where ;
}
} */
break ;
case " lager_bewegunglist " :
$allowed [ 'lager' ] = array ( 'bewegunglist' );
$heading = array ( 'Regal' , 'Nummer' , 'Name' , 'Ein-/Ausgang' , 'Menge' , 'Datum' , 'Referenz' , '' );
$width = array ( '10%' , '8%' , '25%' , '8%' , '8%' , '8%' , '27%' , '1%' );
$findcols = array ( 'p.kurzbezeichnung' , 'a.nummer' , 'a.name_de' , " IF(i.eingang, 'Eingang', 'Ausgang') " , " CAST(if(i.eingang, CONCAT('+',trim(i.menge)+0), CONCAT('-',trim(i.menge)+0)) AS decimal(10,2)) " , 'i.zeit' , 'i.referenz' , 'i.id' );
$searchsql = array ( 'p.kurzbezeichnung' , 'a.nummer' , 'a.name_de' , " IF(i.eingang, 'Eingang', 'Ausgang') " , " if(i.eingang, CONCAT('+',' ', " . $app -> erp -> FormatMenge ( 'i.menge' ) . " ), CONCAT('-',' ', " . $app -> erp -> FormatMenge ( 'i.menge' ) . " )) " , " DATE_FORMAT(i.zeit,'%d.%m.%Y') " , 'i.referenz' );
$defaultorder = 1 ;
$defaultorderdesc = 0 ;
$alignright = array ( 5 );
$datecols = array ( 5 );
$numbercols = array ( 4 );
$id = $app -> Secure -> GetGET ( " id " );
$sql = " SELECT SQL_CALC_FOUND_ROWS i.id, p.kurzbezeichnung as regal, a.nummer, a.name_de, IF(i.eingang, 'Eingang', 'Ausgang'), if(i.eingang, CONCAT('+',' ', " . $app -> erp -> FormatMenge ( 'i.menge' ) . " ), CONCAT('-',' ', " . $app -> erp -> FormatMenge ( 'i.menge' ) . " )) as menge, DATE_FORMAT(i.zeit,'%d.%m.%Y') as datum, i.referenz, i.id FROM lager_bewegung i LEFT JOIN lager_platz p ON p.id=i.lager_platz LEFT JOIN artikel a ON i.artikel=a.id " ;
$lagerplatz = $app -> User -> GetParameter ( " lager_bewegung_lagerplatz " );
$lagerplatzid = $app -> DB -> Select ( " SELECT id FROM lager_platz WHERE kurzbezeichnung = ' $lagerplatz ' AND kurzbezeichnung != '' LIMIT 1 " );
$artikel = $app -> User -> GetParameter ( " lager_bewegung_artikel " );
$artikeldaten = explode ( " " , $artikel , 2 );
$artikelnr = $artikeldaten [ 0 ];
$artikelname = $artikeldaten [ 1 ];
$artikelid = $app -> DB -> Select ( " SELECT id FROM artikel WHERE name_de = ' $artikelname ' AND name_de != '' AND nummer = ' $artikelnr ' AND nummer != '' LIMIT 1 " );
/* if ( $lagerplatzid != " " && $artikelid != " " ){
$where = " i.id > 0 AND i.lager_platz = ' $lagerplatzid ' AND i.artikel = ' $artikelid ' " ;
} elseif ( $lagerplatzid != " " && $artikelid == " " ){
$where = " i.id > 0 AND i.lager_platz = ' $lagerplatzid ' " ;
} elseif ( $lagerplatzid == " " && $artikelid != " " ){
$where = " i.id > 0 AND i.artikel = ' $artikelid ' " ;
} else {
$where = " i.id > 0 " ;
} */
if ( $lagerplatzid != " " ){
$lagerplatzwhere = " AND i.lager_platz = ' $lagerplatzid ' " ;
} else {
$lagerplatzwhere = " " ;
}
if ( $artikelid != " " ){
$artikelwhere = " AND i.artikel = ' $artikelid ' " ;
} else {
$artikelwhere = " " ;
}
$where = " i.id > 0 AND p.lager = ' $id ' " . $lagerplatzwhere . $artikelwhere ;
$count = " SELECT count(i.id) FROM lager_bewegung i LEFT JOIN lager_platz p ON p.id = i.lager_platz WHERE $where " ;
$app -> Tpl -> Set ( " LAGER_PLATZ_BEWEGUNG " , $lagerplatz );
$app -> Tpl -> Set ( " ARTIKEL_BEWEGUNG " , $artikel );
break ;
case " lager_allebewegungenlist " :
$allowed [ 'lager' ] = array ( 'allebewegungenlist' );
$heading = array ( 'Lager' , 'Regal' , 'Nummer' , 'Name' , 'Ein-/Ausgang' , 'Menge' , 'Datum' , 'Referenz' , 'Bearbeiter' , 'Projekt' , '' );
$width = array ( '9%' , '9%' , '8%' , '18%' , '5%' , '5%' , '5%' , '18%' , '10%' , '5%' , '1%' );
$findcols = array ( 'l.bezeichnung' , 'lp.kurzbezeichnung' , 'a.nummer' , 'a.name_de' , " IF(i.eingang, 'Eingang', 'Ausgang') " , " CAST(if(i.eingang, CONCAT('+',trim(i.menge)+0), CONCAT('-',trim(i.menge)+0)) AS decimal(10,2)) " , 'i.zeit' , 'i.referenz' , 'i.bearbeiter' , 'p.abkuerzung' , 'i.id' );
$searchsql = array ( 'l.bezeichnung' , 'lp.kurzbezeichnung' , 'a.nummer' , 'a.name_de' , " IF(i.eingang, CONCAT('+',' ', " . $app -> erp -> FormatMenge ( 'i.menge' ) . " ), CONCAT('-',' ', " . $app -> erp -> FormatMenge ( 'i.menge' ) . " )) " , 'DATE_FORMAT(i.zeit,\'%d.%m.%Y\')' , 'i.referenz' , 'i.bearbeiter' , 'p.abkuerzung' );
$defaultorder = 1 ;
$defaultorderdesc = 0 ;
$alignright = array ( 6 );
$datecols = array ( 6 );
$sql = " SELECT SQL_CALC_FOUND_ROWS i.id, l.bezeichnung, lp.kurzbezeichnung as regal, a.nummer, a.name_de, IF(i.eingang, 'Eingang', 'Ausgang'), if(i.eingang, CONCAT('+', ' ', trim(i.menge)+0), CONCAT('-', ' ', trim(i.menge)+0)) as menge, DATE_FORMAT(i.zeit,'%d.%m.%Y') as datum, i.referenz, i.bearbeiter, p.abkuerzung AS projektbewegung, i.id FROM lager_bewegung i LEFT JOIN lager_platz lp ON lp.id=i.lager_platz LEFT JOIN lager l ON lp.lager = l.id LEFT JOIN artikel a ON i.artikel=a.id LEFT JOIN projekt p ON l.projekt = p.id " ;
$lager = $app -> User -> GetParameter ( " lager_bewegungalle_lager " );
$lagerplatz = $app -> User -> GetParameter ( " lager_bewegungalle_lagerplatz " );
$lagerplatzid = $app -> DB -> Select ( " SELECT id FROM lager_platz WHERE kurzbezeichnung = ' $lagerplatz ' AND kurzbezeichnung != '' LIMIT 1 " );
$artikel = $app -> User -> GetParameter ( " lager_bewegungalle_artikel " );
$artikeldaten = explode ( " " , $artikel , 2 );
$artikelnr = $artikeldaten [ 0 ];
$artikelname = $artikeldaten [ 1 ];
$artikelid = $app -> DB -> Select ( " SELECT id FROM artikel WHERE name_de = ' $artikelname ' AND name_de != '' AND nummer = ' $artikelnr ' AND nummer != '' LIMIT 1 " );
if ( $lager != " " ){
$lagerwhere = " AND l.bezeichnung = ' $lager ' " ;
} else {
$lagerwhere = " " ;
}
if ( $lagerplatzid != " " ){
$lagerplatzwhere = " AND i.lager_platz = ' $lagerplatzid ' " ;
} else {
$lagerplatzwhere = " " ;
}
if ( $artikelid != " " ){
$artikelwhere = " AND i.artikel = ' $artikelid ' " ;
} else {
$artikelwhere = " " ;
}
$where = " i.id > 0 " . $lagerwhere . $lagerplatzwhere . $artikelwhere . $app -> erp -> ProjektRechte ();
$count = " SELECT count(i.id) FROM lager_bewegung i LEFT JOIN lager_platz lp ON lp.id = i.lager_platz LEFT JOIN lager l ON l.id=lp.lager LEFT JOIN projekt p ON l.projekt = p.id WHERE $where " ;
$app -> Tpl -> Set ( " LAGER_BEWEGUNG_ALLE " , $lager );
$app -> Tpl -> Set ( " LAGER_PLATZ_BEWEGUNG_ALLE " , $lagerplatz );
$app -> Tpl -> Set ( " ARTIKEL_BEWEGUNG_ALLE " , $artikel );
break ;
case " lager_inhaltlist " :
$allowed [ 'lager' ] = array ( 'lager_inhaltlist' );
$heading = array ( 'Regal' , 'Artikel' , 'Nummer' , 'Projekt' , 'Menge' , 'Verkaufbare' , 'Reserviert' , '' );
$width = array ( '10%' , '30%' , '10%' , '15%' , '15%' , '10%' , '10%' , '1%' );
$findcols = array ( 'p.kurzbezeichnung' , 't.artikelname' , 't.nummer' , 'pro.abkuerzung' , 't.menge' , 't.verkaufbare' , 't.reserviert' , 't.artikel' );
$searchsql = array ( 'p.kurzbezeichnung' , 't.artikelname' , 't.nummer' , 'pro.abkuerzung' , $app -> erp -> FormatMenge ( 't.menge' ), $app -> erp -> FormatMenge ( 't.verkaufbare' ), $app -> erp -> FormatMenge ( 't.reserviert' ));
$defaultorder = 1 ;
$defaultorderdesc = 0 ;
$alignright = array ( 5 , 6 , 7 );
$numbercols = array ( 4 , 5 , 6 );
$sql = " SELECT SQL_CALC_FOUND_ROWS t.artikel, IFNULL(p.kurzbezeichnung, ' '), t.artikelname, t.nummer, pro.abkuerzung, " . $app -> erp -> FormatMenge ( 't.menge' ) . " , " . $app -> erp -> FormatMenge ( 't.verkaufbare' ) . " , " . $app -> erp -> FormatMenge ( 't.reserviert' ) . " , t.artikel
FROM lager_platz p
JOIN ( SELECT i . lager_platz , a . id as artikel , IFNULL ( a . name_de , ' ' ) as artikelname , IFNULL ( a . nummer , ' ' ) as nummer , a . projekt , IFNULL ( SUM ( i . menge ), 0 ) as menge , IFNULL ( SUM ( i . menge ), 0 ) - IFNULL ( SUM ( r . menge ), 0 ) as verkaufbare , IFNULL ( SUM ( r . menge ), 0 ) as reserviert FROM lager_platz_inhalt i
LEFT JOIN artikel a ON i . artikel = a . id
LEFT JOIN ( SELECT artikel , SUM ( menge ) as menge FROM lager_reserviert GROUP BY artikel ) r ON r . artikel = a . id
GROUP BY a . id , i . lager_platz ) t ON t . lager_platz = p . id LEFT JOIN projekt pro ON pro . id = t . projekt " ;
//$groupby = " GROUP BY p.kurzbezeichnung, a.id";
$lagerplatz = $app -> User -> GetParameter ( " lager_inhalt_lagerplatz " );
$lagerplatzid = $app -> DB -> Select ( " SELECT id FROM lager_platz WHERE kurzbezeichnung = ' $lagerplatz ' AND kurzbezeichnung != '' LIMIT 1 " );
$artikel = $app -> User -> GetParameter ( " lager_inhalt_artikel " );
$artikeldaten = explode ( " " , $artikel , 2 );
$artikelnr = $artikeldaten [ 0 ];
$artikelname = $artikeldaten [ 1 ];
$artikelid = $app -> DB -> Select ( " SELECT id FROM artikel WHERE name_de = ' $artikelname ' AND name_de != '' AND nummer = ' $artikelnr ' AND nummer != '' LIMIT 1 " );
$lagerid = $app -> Secure -> GetGET ( " id " );
if ( $lagerplatzid != " " ){
$lagerplatzwhere = " AND t.lager_platz = ' $lagerplatzid ' " ;
} else {
$lagerplatzwhere = " " ;
}
if ( $artikelid != " " ){
$artikelwhere = " AND t.artikel = ' $artikelid ' " ;
} else {
$artikelwhere = " " ;
}
$where = " p.lager = ' $lagerid ' " . $lagerplatzwhere . $artikelwhere ;
//$count = "SELECT count(p.kurzbezeichnung) FROM lager_platz p LEFT JOIN lager_platz_inhalt i ON p.id=i.lager_platz LEFT JOIN artikel a ON i.artikel=a.id LEFT JOIN lager_reserviert r ON r.artikel=a.id LEFT JOIN projekt pro ON pro.id=a.projekt WHERE $where";
$app -> Tpl -> Set ( " LAGER_PLATZ_INHALT " , $lagerplatz );
$app -> Tpl -> Set ( " ARTIKEL_INHALT " , $artikel );
break ;
case " lager_reservierungen " :
$allowed [ 'lager' ] = array ( 'reservierungen' );
2022-11-07 19:15:10 +01:00
$heading = array ( 'Kunde' , 'Belegart' , 'Belegnr' , 'Status' , 'Artikelnummer' , 'Artikel' , 'Menge' , 'Projekt' , 'Grund' , 'Menü' );
$width = array ( '20%' , '10%' , '5%' , '5%' , '5%' , '20%' , '1%' , '10%' , '20%' );
$findcols = array ( 't.kunde' , 't.typ' , 't.belegnr' , 't.status' , 't.Artikelnummer' , 't.Artikel' , 't.menge' , 't.projekt' , 't.grund' , 't.rid' );
$searchsql = array ( 't.kunde' , 't.typ' , 't.belegnr' , 't.status' , 't.Artikelnummer' , 't.Artikel' , $app -> erp -> FormatMenge ( 't.menge' ), 't.projekt' , 't.grund' );
2022-07-01 14:24:56 +02:00
$defaultorder = 1 ; //Optional wenn andere Reihenfolge gewuenscht
$defaultorderdesc = 1 ;
//$sumcol = 9;
$menu = " <table cellpadding=0 cellspacing=0><tr><td nowrap><a href= \" # \" onclick=DeleteDialog( \" index.php?module=lager&action=artikelentfernenreserviert&reservierung=%value% \" ); ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a></td></tr></table> " ;
2022-11-07 19:15:10 +01:00
$alignright = array ( 7 );
$numbercols = array ( 6 );
2022-07-01 14:24:56 +02:00
$menucol = 5 ;
//$moreinfo = true;
$sql = "
SELECT
SQL_CALC_FOUND_ROWS t . rid ,
t . kunde ,
t . typ ,
t . belegnr ,
t . status ,
2022-11-07 19:15:10 +01:00
t . Artikelnummer ,
2022-07-01 14:24:56 +02:00
t . Artikel ,
" . $app->erp ->FormatMenge('t.menge'). " ,
t . projekt ,
t . grund ,
t . rid
FROM
(
(
2022-11-07 19:15:10 +01:00
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
2022-07-01 14:24:56 +02:00
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
(
2022-11-07 19:15:10 +01:00
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
2022-07-01 14:24:56 +02:00
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
(
2022-11-07 19:15:10 +01:00
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
2022-07-01 14:24:56 +02:00
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
(
2022-11-07 19:15:10 +01:00
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
2022-07-01 14:24:56 +02:00
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
(
2022-11-07 19:15:10 +01:00
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
2022-07-01 14:24:56 +02:00
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
(
2022-11-07 19:15:10 +01:00
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
2022-07-01 14:24:56 +02:00
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
(
2022-11-07 19:15:10 +01:00
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
2022-07-01 14:24:56 +02:00
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 " );
2023-02-03 09:53:33 +01:00
$this -> app -> ActionHandler ( " wert " , " LagerWert " );
$this -> app -> ActionHandler ( " wert2 " , " LagerWert2 " );
2022-07-01 14:24:56 +02:00
$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 ( " <div class= \" warning \" >Der Artikel $name_de wurde $menge mal umgelagert!</div> " );
$this -> app -> Location -> execute ( 'index.php?module=lager&action=schnellumlagern&msg=' . $msg );
}
if ( $anzahl_artikel > 0 ){
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Der Artikel ist nur maximal $anzahl_artikel im Lager vorhanden! Bitte korrekte Menge angeben!</div> " );
}
else {
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Der Artikel hat keinen Bestand im Lager!</div> " );
}
$this -> app -> Location -> execute ( 'index.php?module=lager&action=schnellumlagern&msg=' . $msg );
}
if ( $artikelid <= 0 )
{
$msg = " <div class= \" error \" >Der Artikel mit der Nummer $nummer wurde nicht gefunden!</div> " ;
$get_nummer = '' ;
}
else {
$get_nummer = $nummer ;
}
if ( $lager_platz <= 0 )
{
$msg .= " <div class= \" error \" >Das Ziellager $ziellager wurde nicht gefunden!</div> " ;
$this -> app -> User -> SetParameter ( " lager_schnellumlagern_ziellager " , " " );
}
$msg = $this -> app -> erp -> base64_url_encode ( $msg );
$this -> app -> Location -> execute ( " index.php?module=lager&action=schnellumlagern&msg= $msg &nummer= $get_nummer " );
}
$msg = $this -> app -> Secure -> GetGET ( 'msg' );
if ( $msg == '' ){
$this -> app -> Tpl -> Set ( 'MESSAGE' , '<div class="info">{|Der Artikel wird wenn vorhanden aus dem Standardlager ausgelagert.|}</div>' );
}
if ( $grundreferenz == '' ){
$grundreferenz = $this -> app -> User -> GetParameter ( 'lager_schnellumlagern_grund' );
}
if ( $ziellager == '' ) {
$ziellager = $this -> app -> User -> GetParameter ( 'lager_schnellumlagern_ziellager' );
}
$this -> app -> Tpl -> Set ( 'GRUNDREFERENZ' , $grundreferenz );
$this -> app -> Tpl -> Set ( 'ZIELLAGER' , $ziellager );
$this -> app -> Tpl -> Set ( 'NUMMER' , $get_nummer );
$this -> app -> YUI -> AutoComplete ( 'nummer' , 'lagerartikelnummer' , 1 );
$this -> app -> YUI -> AutoComplete ( 'ziellager' , 'lagerplatz' );
$this -> app -> YUI -> AutoComplete ( 'grundreferenz' , 'lagergrund' );
$this -> app -> Tpl -> Parse ( 'PAGE' , " lager_schnellumlagern.tpl " );
}
public function LagerSchnellAuslagern ()
{
$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 ( $grundreferenz != '' )
{
$this -> app -> User -> SetParameter ( " lager_schnellauslagern_grund " , $grundreferenz );
}
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 " );
if ( $artikelid > 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 );
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" warning \" >Der Artikel $name_de wurde $menge mal ausgelagert!</div> " );
$this -> app -> Location -> execute ( " index.php?module=lager&action=schnellauslagern&msg= $msg " );
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Der Artikel ist nur maximal $anzahl_artikel im Lager vorhanden! Bitte korrekte Menge angeben!</div> " );
$this -> app -> Location -> execute ( " index.php?module=lager&action=schnellauslagern&msg= $msg " );
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Der Artikel mit der Nummer $nummer wurde nicht gefunden!</div> " );
$this -> app -> Location -> execute ( " index.php?module=lager&action=schnellauslagern&msg= $msg " );
}
$msg = $this -> app -> Secure -> GetGET ( 'msg' );
if ( $msg == '' ){
$this -> app -> Tpl -> Set ( 'MESSAGE' , '<div class="info">Der Artikel wird wenn vorhanden aus dem Standardlager ausgelagert.</div>' );
}
if ( $grundreferenz == '' )
{
$grundreferenz = $this -> app -> User -> GetParameter ( 'lager_schnellauslagern_grund' );
}
$this -> app -> Tpl -> Set ( 'GRUNDREFERENZ' , $grundreferenz );
$this -> app -> YUI -> AutoComplete ( 'nummer' , 'lagerartikelnummer' , 1 );
$this -> app -> YUI -> AutoComplete ( 'grundreferenz' , 'lagergrund' );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'lager_schnellauslagern.tpl' );
}
public function LagerBestand ()
{
$this -> LagerHauptmenu ();
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=list' , 'zurück zur Übersicht' );
$this -> app -> erp -> Headlines ( '' , 'Bestand' );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'lager_bestand' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'lager_bestand.tpl' );
}
public function LagerWert ()
{
$this -> LagerHauptmenu ();
2023-02-03 09:53:33 +01:00
/* $this -> app -> Tpl -> Set ( 'VERS' , 'Professional' );
2022-07-01 14:24:56 +02:00
$this -> app -> Tpl -> Set ( 'MODUL' , 'Professional' );
2023-02-03 09:53:33 +01:00
$this -> app -> Tpl -> Parse ( 'PAGE' , 'only_version.tpl' );
ROFLMAO
*/
// Transfer Parameters to TableSearch
$gruppierenlager = $this -> app -> Secure -> GetPOST ( 'gruppierenlager' );
$this -> app -> User -> SetParameter ( 'gruppierenlager' , $gruppierenlager );
$preiseineuro = $this -> app -> Secure -> GetPOST ( 'preiseineuro' );
$this -> app -> User -> SetParameter ( 'preiseineuro' , $preiseineuro );
$datum = $this -> app -> Secure -> GetPOST ( 'datum' );
$this -> app -> User -> SetParameter ( 'datum' , $datum );
$preisart = $this -> app -> Secure -> GetPOST ( 'preisart' );
$this -> app -> User -> SetParameter ( 'preisart' , $preisart );
$this -> app -> YUI -> DatePicker ( " datum " );
$this -> app -> Tpl -> Set ( 'DATUM' , $datum );
$this -> app -> Tpl -> Set ( 'PREISEINEURO' , $preiseineuro == 1 ? " checked " : " " );
$this -> app -> Tpl -> Set ( 'GRUPPIERENLAGER' , $gruppierenlager == 1 ? " checked " : " " );
$this -> app -> Tpl -> Set ( strtoupper ( $preisart ), 'selected' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=list' , 'zurück zur Übersicht' );
$this -> app -> erp -> Headlines ( '' , 'Bestand' );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'lager_wert' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'lager_wert.tpl' );
2022-07-01 14:24:56 +02:00
}
2023-02-03 09:53:33 +01:00
2022-07-01 14:24:56 +02:00
public function LagerBuchenZwischenlagerDelete ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
if ( $id > 0 ){
$this -> app -> DB -> Delete ( " DELETE FROM zwischenlager WHERE id=' $id ' LIMIT 1 " );
}
$this -> app -> Location -> execute ( 'index.php?module=lager&action=buchenzwischenlager&top=TGFnZXI=' );
}
public function LagerPlatzDelete ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
//if(is_numeric($id))
// $this->app->DB->Delete("DELETE FROM lager WHERE id='$id' LIMIT 1");
$numberofarticles = $this -> app -> DB -> Select (
sprintf (
'SELECT id FROM lager_platz_inhalt WHERE lager_platz=%d LIMIT 1' ,
( int ) $id
)
);
$lager = 0 ;
if ( $numberofarticles > 0 )
{
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="error">In diesem Lager existieren Artikel. Es können nur leere Lagerplätze bzw. Lager ohne Lagerplätze gelöscht werden!</div>' );
}
else {
if ( $id > 0 ){
$lager = $this -> app -> DB -> Select (
sprintf ( 'SELECT lager FROM lager_platz WHERE id = %d LIMIT 1' ,( int ) $id )
);
$this -> app -> DB -> Delete (
sprintf ( 'DELETE FROM lager_platz WHERE id=%d LIMIT 1' , ( int ) $id )
);
$this -> app -> DB -> Update (
sprintf ( 'UPDATE artikel SET lager_platz=0 WHERE lager_platz = %d' , ( int ) $id )
);
}
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="error2">Das Regal wurde gelöscht!</div>' );
}
$ref = $_SERVER [ 'HTTP_REFERER' ];
if (( $pos = strpos ( $ref , '&msg=' )) > 0 )
{
$ref = substr ( $ref , 0 , $pos );
}
if ( empty ( $ref )) {
$ref = 'index.php?module=lager&action=platz&id=' . $lager ;
}
$this -> app -> Location -> execute ( $ref . '&msg=' . $msg );
}
public function LagerDelete ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$numberofarticles = $this -> app -> DB -> Select (
sprintf ( 'SELECT id FROM lager_platz WHERE lager=%d LIMIT 1' , ( int ) $id )
);
if ( $numberofarticles > 0 )
{
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="error">In diesem Lager existieren noch Lagerplätze. Es können nur leere Lager gelöscht werden!</div>' );
}
else {
$this -> app -> DB -> Select ( sprintf ( 'DELETE FROM lager WHERE id=%d LIMIT 1' , ( int ) $id ));
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="error2">Das Lager wurde gelöscht!</div>' );
}
$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 = " <a href= \" # \" onclick= \" if(!confirm('Artikel wirklich aus dem Zwischenlager nehmen?')) return false; else window.location.href='index.php?module=lager&action=buchenzwischenlagerdelete&id=%value%'; \" ><img src= \" ./themes/[THEME]/images/delete.svg \" border= \" 0 \" ></a> " ;
}
/* $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' , " <a href= \" index.php?module=lager&action=bucheneinlagern&cmd=zwischenlager&id=%value% \" ><img border= \" 0 \" src= \" ./themes/[THEME]/images/forward.svg \" ></a> $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' , " <a href= \" index.php?module=lager&action=bucheneinlagern&cmd=zwischenlager&id=%value% \" ><img border= \" 0 \" src= \" ./themes/[THEME]/images/forward.svg \" ></a> $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' , ' < script >
function DeleteZw ( zid )
{
if ( ! confirm ( \ ' Artikel wirklich aus dem Zwischenlager nehmen ? \ ' )) return false ; else window . location . href = \ ' index . php ? module = lager & action = buchenzwischenlagerdelete & id = \ ' + zid + \ ' \ ' ;
}
</ script > ' );
$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 -> Tpl -> Set ( 'NEINDOCHNICHTENDE' , '-->' );
}
$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' , '<!--' );
$this -> app -> Tpl -> Set ( 'WOHERREADONLYENDE' , '-->' );
$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' , " <tr><td></td><td>MHD: " . $mhd [ $i - 1 ][ 'mhddatum' ] . " </td></tr> " );
$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' , " <tr><td></td><td>Charge: " . $charge [ $i - 1 ][ 'charge' ] . " </td></tr> " );
}
$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' , " <tr><td></td><td>Seriennummer: " . $srn [ $i - 1 ][ 'seriennummer' ] . " </td></tr> " );
}
$this -> app -> Tpl -> Set ( 'SHOWCHRSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWCHREND' , '-->' );
if (( ! empty ( $mhd ) ? count ( $mhd ) : 0 ) <= 0 )
{
$this -> app -> Tpl -> Set ( 'SHOWMHDSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWMHDEND' , '-->' );
}
$this -> app -> Tpl -> Set ( 'SHOWSRNSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWSRNEND' , '-->' );
} else {
$this -> app -> Tpl -> Set ( 'WOHERREADONLYSTART2' , '<!--' );
$this -> app -> Tpl -> Set ( 'WOHERREADONLYENDE2' , '-->' );
}
// 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' , " <br> { |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 .= " <li>Artikel kommt nicht aus Zwischenlager!</li> " ;
$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 .= " <li>Artikel-Nummer gibt es nicht!</li> " ;
$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 || $regal == '' || $regal == 0 ) {
$grund .= " <li>Regal gibt es nicht!</li> " ;
$alles_komplett ++ ;
}
if ( $alles_komplett > 0 && $regal != '' ) {
$this -> app -> Tpl -> Set ( 'MESSAGELAGER' , " <div class= \" error \" >Artikel wurde nicht gebucht! Grund:<ul> $grund </ul> </div> " );
} else {
if ( $artikel_quickcheck == 1 && ( String ) $nummer !== '' ) {
$this -> app -> Tpl -> Set ( 'MESSAGELAGER' , " <div class= \" error \" >Achtung! Artikelnummer
gibt es nicht , oder der Artikel ist kein Lagerartikel ! </ div > " );
$nummer = " " ;
}
}
if (( String ) $nummer === '' && $cmd == '' && $woher == '' ) {
$_SESSION [ 'woher' ] = 'Manuelle Lageranpassung' ;
}
$artArr = $this -> app -> DB -> SelectRow (
sprintf (
' SELECT chargenverwaltung , mindesthaltbarkeitsdatum , seriennummern
FROM artikel
WHERE id =% d LIMIT 1 ' ,
( int ) $artikel_tmp
)
);
$chargenverwaltung = $artArr [ 'chargenverwaltung' ];
$mindesthaltbarkeitsdatum = $artArr [ 'mindesthaltbarkeitsdatum' ];
$suggestedbatch = '' ;
$suggestedbestbefore = '' ;
if ( $mindesthaltbarkeitsdatum && $chargenverwaltung ) {
$suggestedbestbefore = substr ( $suggestedbestbeforebatch , 0 , 10 );
if ( strpos ( $suggestedbestbefore , '-' ) !== false ) {
$suggestedbestbefore = $this -> app -> String -> Convert ( $suggestedbestbefore , '%3-%2-%1' , '%1.%2.%3' );
}
$suggestedbatch = ltrim ( substr ( $suggestedbestbeforebatch , 10 ), '-' );
}
elseif ( $mindesthaltbarkeitsdatum ) {
$suggestedbestbefore = $suggestedbestbeforebatch ;
}
elseif ( $chargenverwaltung ) {
$suggestedbatch = $suggestedbestbeforebatch ;
}
$seriennummern = $artArr [ 'seriennummern' ];
if ( $seriennummern != '' && $seriennummern !== 'keine' ) {
$menge = ( int ) $menge ;
}
// pruefen einlagern
$error = 0 ;
// Pflichtfelder pruefen
$checkmhd = $this -> app -> String -> Convert ( $this -> app -> Secure -> GetPOST ( 'mhd' ), '%1.%2.%3' , '%3-%2-%1' );
if ( $mindesthaltbarkeitsdatum == '1' && ! $this -> app -> erp -> CheckDateValidate ( $checkmhd )) {
$error ++ ;
}
if (( $chargenverwaltung == '2' || $chargenverwaltung == " 1 " ) && $this -> app -> Secure -> GetPOST ( 'charge' ) == '' && $zwischenlagerid <= 0 ) {
$error ++ ;
}
if ( ( $seriennummern !== 'keine' && $seriennummern !== 'vomprodukt' && $seriennummern !== 'eigene' && $seriennummern != '' ) && $cmd !== 'zwischenlager' ) {
$tmpcheck = $this -> app -> Secure -> GetPOST ( " seriennummern " );
for ( $checkser = 0 ; $checkser < $menge ; $checkser ++ ) {
if ( $tmpcheck [ $checkser ] == '' ){
$error ++ ;
}
}
}
if ( $submit != '' && $error > 0 ) {
$alles_komplett ++ ;
//$this->app->Tpl->Add('MESSAGE',"<div class=\"error\">Achtung! Bitte alle Pflichtfelder (Regal, MHD, Charge, Seriennummer) ausfüllen!</div>");
}
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 ( " <div class= \" warning \" >Der Artikel $name wurde $menge mal eingelagert. Anzahl Regal: <b> " . ( float ) $gesamt . " $einheit </b> Anzahl Komplettbestand alle Regale: <b> " . ( float ) $gesamt_alle . " $einheit </b></div> " );
} else {
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Fehler: Unbekannte oder falsche Menge: $menge bei Artikel \" $name\ " . Der Artikel wurde nicht eingelagert ! </ div > " );
}
$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 ( " <div class= \" warning \" >Der Artikel $name wurde $menge mal eingelagert. Anzahl Regal: <b> " . ( float ) $gesamt . " $einheit </b> Anzahl Komplettbestand alle Regale: <b> " . ( float ) $gesamt_alle . " $einheit </b></div> " );
}
else {
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Fehler: Unbekannte oder falsche Menge: $menge bei Artikel \" $name\ " . Der Artikel wurde nicht eingelagert ! </ div > " );
}
// Mindesthaltbarkeitsdatum buchen
$chargemindest = $this -> app -> Secure -> GetPOST ( 'charge' );
$isInterim = $interimonconsumption && $this -> app -> DB -> Select (
sprintf (
'SELECT id FROM lager_platz WHERE id = %d AND verbrauchslager = 1' ,
( int ) $regal
)
);
if ( $mindesthaltbarkeitsdatum > 0 ) {
$mhd = $this -> app -> String -> Convert ( $this -> app -> Secure -> GetPOST ( 'mhd' ), '%1.%2.%3' , '%3-%2-%1' );
$this -> app -> erp -> AddMindesthaltbarkeitsdatumLagerOhneBewegung ( $artikel , $menge , $regal , $mhd , $chargemindest , '' , '' , '' , trim ( $chargesnmhdbemerkung . ' ' . $grundreferenz ), 0 , $isInterim );
}
if ( $chargenverwaltung > 0 ) {
$datum = date ( 'Y-m-d' );
$this -> app -> erp -> AddChargeLagerOhneBewegung ( $artikel , $menge , $regal , $datum , $chargemindest , $chargesnmhdbemerkung , 0 , '' , 0 , $isInterim );
}
//Seriennummern buchen
$tmpcheck = $this -> app -> Secure -> GetPOST ( 'seriennummern' );
if ( $artikelid != '' ){
$this -> app -> Location -> execute ( 'index.php?module=artikel&action=lager&id=' . $artikelid . ( $msg != " " ? " &msg= " . $msg : " " ));
}
$this -> app -> Location -> execute ( 'index.php?module=lager&action=bucheneinlagern&msg=' . $msg );
}
// wenn von zwischenlager dann header location nach zwischenlager
// sonst einlagern
}
// kommt direkt vom zwischenlager
if ( $cmd === 'zwischenlager' ) {
$_SESSION [ 'woher' ] = 'Zwischenlager' ;
$zwischenlagerArr = $this -> app -> DB -> SelectRow ( " SELECT artikel,projekt,menge,vpe FROM zwischenlager WHERE id=' $id ' LIMIT 1 " );
$projekt = $zwischenlagerArr [ 'projekt' ];
$menge = $zwischenlagerArr [ 'menge' ];
$artikel = $zwischenlagerArr [ 'artikel' ];
$artikelArr = $this -> app -> DB -> SelectRow ( " SELECT nummer,name_de, lager_platz,standardbild FROM artikel WHERE id=' $artikel ' LIMIT 1 " );
$nummer = $artikelArr [ 'nummer' ];
$name_de = $artikelArr [ 'name_de' ];
$lagerplatz = $artikelArr [ 'lager_platz' ];
$lagerbezeichnung = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE id=' $lagerplatz ' LIMIT 1 " );
$vpe = $zwischenlagerArr [ 'vpe' ];
if ( $projekt == '' || $projekt == 0 ) {
$projekt = 1 ;
} // default projekt
$standardbild = $artikelArr [ 'standardbild' ];
if ( $standardbild == '' ) {
$standardbild = $this -> app -> DB -> Select ( " SELECT datei FROM datei_stichwoerter WHERE subjekt='Shopbild' AND objekt='Artikel' AND parameter=' $artikel ' LIMIT 1 " );
}
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr valign= \" top \" ><td>Bezeichnung:</td><td> $name_de </td></tr> " );
if ( $standardbild > 0 ) {
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr valign= \" top \" ><td>Bild:</td><td align= \" center \" ><img src= \" index.php?module=dateien&action=send&id= $standardbild\ " width = \ " 110 \" ></td></tr> " );
}
if ( $lagerbezeichnung != '' )
{
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr valign= \" top \" ><td></td><td><br></td></tr><tr ><td>Regalvorschlag:</td><td><font size= \" 5 \" ><b onclick= \" document.getElementById('regal').value=' $lagerbezeichnung ' \" ;> $lagerbezeichnung </b></font></td></tr> " );
} else {
$lagermeist = $this -> app -> DB -> SelectRow ( " SELECT lager_platz, SUM(menge) FROM lager_platz_inhalt WHERE artikel=' $artikel ' GROUP BY lager_platz ORDER by 2 DESC LIMIT 1 " );
$lagerplatz = $lagermeist [ 'lager_platz' ];
$lagerbezeichnung = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE id=' { $lagermeist [ 'lager_platz' ] } ' LIMIT 1 " );
//$lagerplatz = $this->app->DB->Select("SELECT lager_platz FROM artikel WHERE id='$artikel' LIMIT 1");
//$lagerbezeichnung = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='$lagerplatz' LIMIT 1");
if ( $lagerplatz == '' || $lagerplatz == 0 ) {
$lagerbezeichnung = 'Regal frei wählen' ;
}
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr valign= \" top \" ><td></td><td><br></td></tr><tr ><td>Regalvorschlag:</td><td><font size= \" 5 \" ><b onclick= \" document.getElementById('regal').value=' $lagerbezeichnung ' \" ;> $lagerbezeichnung </b></font></td></tr> " );
}
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr valign= \" top \" ><td><br><br><b>Regal:</b></td><td><br><br><input type= \" text \" name= \" regal \" id= \" regal \" style= \" border: 2px solid;width:200px; \" ><br>Jetzt Regal abscannen!</td></tr>
< input type = \ " hidden \" name= \" zwischenlager \" value= \" $id\ " > " );
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , ' < script type = " text/javascript " >
document . getElementById ( " regal " ) . focus ();
</ script > ' );
} else {
if (( $menge == '' || $menge == 0 ) && $cmd !== 'umlagern' ) {
$menge = 1 ;
}
if ( $this -> app -> Secure -> GetPOST ( 'woher' ) != '' ) {
$_SESSION [ 'woher' ] = $this -> app -> Secure -> GetPOST ( 'woher' );
}
if (( String ) $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 ' LIMIT 1 " );
$this -> app -> Tpl -> Set ( 'NUMMER' , $nummer );
}
$artikel = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer=' $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 <= 0 && $ean > 0 ) {
$artikel = $ean ;
$nummer = $this -> app -> DB -> Select ( " SELECT nummer FROM artikel WHERE id=' $ean ' LIMIT 1 " );
}
if ( $artikel > 0 )
{
$articleRow = $this -> app -> DB -> SelectRow (
sprintf (
'SELECT name_de, lager_platz, einheit FROM artikel WHERE id = %d' ,
$artikel
)
);
$name_de = $articleRow [ 'name_de' ];
$lagermeist = $this -> app -> DB -> SelectArr ( " SELECT lager_platz, SUM(menge) FROM lager_platz_inhalt WHERE artikel=' $artikel ' GROUP BY lager_platz ORDER by 2 DESC LIMIT 1 " );
$lagermeist = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE id=' { $lagermeist [ 0 ][ 'lager_platz' ] } ' LIMIT 1 " );
//$name_de = $articleRow['lager_platz'];
$einheit = $articleRow [ 'einheit' ];
$lagerplatz = $articleRow [ 'lager_platz' ]; // $this->app->DB->Select("SELECT lager_platz FROM artikel WHERE id='$artikel' LIMIT 1");
$lagerbezeichnung = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE id=' $lagerplatz ' LIMIT 1 " );
if ( $lagerplatz == '' || $lagerplatz == 0 ) {
$lagerbezeichnung = 'Regal frei wählen' ;
}
//$vpe = $this->app->DB->Select("SELECT vpe FROM artikel WHERE id='$id' LIMIT 1");
$vpe = 'einzeln' ;
//$projekt = $this->app->DB->Select("SELECT projekt FROM zwischenlager WHERE id='$id' LIMIT 1");
if ( $projekt == '' || $projekt == 0 ) {
$projekt = 1 ; // default projekt
}
if ( $chargenverwaltung != '2' && $chargenverwaltung != '1' )
{
$this -> app -> Tpl -> Set ( 'SHOWCHRSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWCHREND' , '-->' );
} else {
// $this->app->YUI->DatePicker("mhd");
$frmcharge = $this -> app -> Secure -> GetPOST ( 'charge' );
$this -> app -> Tpl -> Set ( 'CHARGEVALUE' , ! empty ( $frmcharge ) ? $frmcharge : $suggestedbatch );
}
if ( $mindesthaltbarkeitsdatum != '1' )
{
$this -> app -> Tpl -> Set ( 'SHOWMHDSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWMHDEND' , '-->' );
} else {
$this -> app -> YUI -> DatePicker ( 'mhd' );
$frmmhd = $this -> app -> Secure -> GetPOST ( 'mhd' );
if ( empty ( $frmmhd )) {
$frmmhd = $suggestedbestbefore ;
}
$this -> app -> Tpl -> Set ( 'MHDVALUE' , $frmmhd );
}
if ( $seriennummern === 'keine' || $seriennummern === 'vomprodukt' || $seriennummern === 'eigene' || $menge <= 0 || $seriennummern == '' )
{
$this -> app -> Tpl -> Set ( 'SHOWSRNSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWSRNEND' , '-->' );
} else {
// Generator felder fuer seriennummern
$this -> app -> Tpl -> Add ( 'SERIENNUMMERN' , '<table><tr><td>Nr.</td><td>{|Seriennummer|}</td></tr>' );
$tmp = $this -> app -> Secure -> GetPOST ( " seriennummern " );
for ( $ij = 1 ; $ij <= $menge ; $ij ++ )
{
$value = $tmp [ $ij - 1 ];
$this -> app -> Tpl -> Add ( 'SERIENNUMMERN' , " <tr><td> $ij </td><td><input type= \" text \" name= \" seriennummern[] \" id= \" seriennummern_ $ij\ " size = \ " 30 \" value= \" $value\ " ></ td ></ tr > " );
$this -> app -> Tpl -> Add ( 'SERIENNUMMERNENTERJUMP' , " document.getElementById('seriennummern_ $ij ').addEventListener('keypress', function(event) { if (event.keyCode == 13) { event.preventDefault();document.getElementById( " . ( $ij < $menge ? " 'seriennummern_ " . ( $ij + 1 ) . " ' " : " 'projekt' " ) . " ).focus()}}); " );
}
$this -> app -> Tpl -> Add ( 'SERIENNUMMERN' , '</table>' );
}
$standardbild = $this -> app -> erp -> GetArtikelStandardbild ( $artikel , true );
if ( $standardbild > 0 )
$this -> app -> Tpl -> Set ( 'STANDARDBILD' , " <tr valign= \" top \" ><td> { |Bild|}:</td><td><img src= \" index.php?module=dateien&action=send&id= $standardbild\ " width = \ " 110 \" ></td></tr> " );
if ( trim ( $einheit ) != '' ){
$name_de .= " (Einheit: " . $einheit . " ) " ;
}
$this -> app -> Tpl -> Set ( 'NAMEDE' , $name_de );
if ( $lagermeist != " " || $lagermeist != 0 ){
$this -> app -> Tpl -> Set ( 'LAGERMEIST' , " <b onclick= \" document.getElementById('regal').value=' $lagermeist ' \" ;> $lagermeist </b> ( { |aktuell am meisten im Lager|}) " );
if ( $lagerbezeichnung != '' && $lagerbezeichnung !== 'Regal frei wählen' )
$this -> app -> Tpl -> Add ( 'LAGERMEIST' , " <br><b onclick= \" document.getElementById('regal').value=' $lagerbezeichnung ' \" ;> $lagerbezeichnung </b> ( { |Standardlager|}) " );
} else {
$this -> app -> Tpl -> Set ( 'LAGERBEZEICHNUNG' , " <b onclick= \" document.getElementById('regal').value=' $lagerbezeichnung ' \" ;> $lagerbezeichnung </b> " );
}
$this -> app -> Tpl -> Set ( 'REGALVALUE' , $frmRegal );
$this -> app -> Tpl -> Parse ( 'ZWISCHENLAGERINFO' , 'lager_regal.tpl' );
} else {
//falsche artikelnummer
$nummer = '' ;
$this -> app -> Tpl -> Set ( 'MSGARTIKEL' , '<br>{|Jetzt Artikel abscannen!|}' );
$this -> app -> Tpl -> Set ( 'ARTIKELSTYLE' , 'style="border: 2px solid red"' );
$this -> app -> Tpl -> Set ( 'ZWISCHENLAGERINFO' , '<script type="text/javascript">document.getElementById("nummer").focus();</script>' );
$this -> app -> Tpl -> Set ( 'SHOWCHRSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWCHREND' , '-->' );
$this -> app -> Tpl -> Set ( 'SHOWMHDSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWMHDEND' , '-->' );
$this -> app -> Tpl -> Set ( 'SHOWSRNSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWSRNEND' , '-->' );
}
} else {
$this -> app -> Tpl -> Set ( 'ZWISCHENLAGERINFO' , '<script type="text/javascript">document.getElementById("nummer").focus();</script>' );
if ( $artikel <= 0 )
{
$this -> app -> Tpl -> Set ( 'SHOWCHRSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWCHREND' , '-->' );
$this -> app -> Tpl -> Set ( 'SHOWMHDSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWMHDEND' , '-->' );
$this -> app -> Tpl -> Set ( 'SHOWSRNSTART' , '<!--' );
$this -> app -> Tpl -> Set ( 'SHOWSRNEND' , '-->' );
}
}
}
$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' , '<!--' );
$this -> app -> Tpl -> Set ( 'ENDEDISABLESTOCK' , '-->' );
}
session_start ();
if ( $cmd === 'umlagern' ) {
//$this->app->Tpl->Set(TABTEXT, "Auslagern");
$this -> app -> Tpl -> Set ( 'STARTNICHTUMLAGERN' , '<!--' );
$this -> app -> Tpl -> Set ( 'ENDENICHTUMLAGERN' , '-->' );
}
else {
//$this->app->Tpl->Set(TABTEXT, "Auslagern");
$this -> app -> Tpl -> Set ( 'STARTUMLAGERN' , '<!--' );
$this -> app -> Tpl -> Set ( 'ENDEUMLAGERN' , '-->' );
}
$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,"<font color=\"red\">Projekt gibt es nicht!</font>");
$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' , " <div class= \" error \" >Bitte eine gültige Adresse angeben!</div> " );
}
*/
if ( ! is_numeric ( $menge ) || $menge == 0 ) {
$error ++ ;
$this -> app -> Tpl -> Set ( 'MSGMENGE' , " <font color= \" red \" >Wert ist keine Zahl oder Null.</font> " );
}
$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 seriennummer 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' , " <div class= \" error \" > { |Diese Artikelnummer gibt es nicht, oder der Artikel ist kein Lagerartikel!|}</div> " );
$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' , " <div class= \" error \" > { |Artikel gibt es in diesem Regal nicht!|}</div> " );
} else if ( $summe < $menge ) {
$this -> app -> Tpl -> Set ( 'MESSAGELAGER' , " <div class= \" error \" > { |Zu wenig Artikel im Regal! Bitte kleinere Menge wählen!|} ( { |Summe|}: $summe )</div> " );
} 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' , " <tr><td></td><td> { |MHD|}</td><td> { |Seriennummer|}</td><td> { |Charge|}</td></tr> " );
} else if (( ! empty ( $tmpmhd ) ? count ( $tmpmhd ) : 0 ) > 0 ) {
$this -> app -> Tpl -> Add ( 'SRNINFO' , " <tr><td></td><td> { |Mindesthalt.|}</td><td width=30></td><td> { |Charge|}</td></tr> " );
} else if (( ! empty ( $tmpcharge ) ? count ( $tmpcharge ) : 0 ) > 0 ) {
$this -> app -> Tpl -> Add ( 'SRNINFO' , " <tr><td></td><td> { |Charge|}</td></tr> " );
}
$artikelArr = $this -> app -> DB -> SelectRow (
sprintf (
'SELECT seriennummern,chargenverwaltung,mindesthaltbarkeitsdatum FROM artikel WHERE id = %d LIMIT 1' ,
( int ) $artikel
)
);
$check_seriennummer = $artikelArr [ 'seriennummern' ];
if ( $check_seriennummer !== 'keine' && $check_seriennummer != '' ) {
$menge = ( int ) $menge ;
}
$check_charge = $artikelArr [ 'chargenverwaltung' ];
$check_mhd = $artikelArr [ 'mindesthaltbarkeitsdatum' ];
$regaltreffer = '1' ;
if ( $check_seriennummer === 'vomprodukteinlagern' )
{
$ctmpsrn = ! empty ( $tmpsrn ) ? count ( $tmpsrn ) : 0 ;
for ( $y = 0 ; $y < $ctmpsrn ; $y ++ )
{
$regaltreffer = " 1 " ;
if ( $y < $menge ) {
$checked = 'checked' ;
} else {
$checked = '' ;
}
if ( $tmpsrn [ $y ][ 'mhddatum' ] == '' ) {
$tmpsrn [ $y ][ 'mhddatum' ] = ' - ' ;
} else {
$tmpsrn [ $y ][ 'mhddatum' ] = $this -> app -> String -> Convert ( $tmpsrn [ $y ][ 'mhddatum' ], '%1-%2-%3' , '%3.%2.%1' );
}
if ( $tmpsrn [ $y ][ 'seriennummer' ] == '' ) {
$tmpsrn [ $y ][ 'seriennummer' ] = ' - ' ;
}
if ( $tmpsrn [ $y ][ 'charge' ] == '' ) {
$tmpsrn [ $y ][ 'charge' ] = ' - ' ;
}
$this -> app -> Tpl -> Add ( 'SRNINFO' , " <tr>
< td >< input type = \ " checkbox \" onclick= \" countChecks(this) \" name= \" lager_srn_id[] \" value= \" " . $tmpsrn [ $y ][ 'id' ] . " \" $checked > $out </td>
< td > " . $tmpsrn[$y] ['mhddatum']. " </ td >
< td > " . $tmpsrn[$y] ['seriennummer']. " </ td >
< td > " . $tmpsrn[$y] ['charge']. " </ td ></ tr > " );
}
} else if ( $check_mhd == " 1 " )
{
$this -> app -> Tpl -> Add ( " JQUERYREADY " , " checklagermengen(); " );
$kommamodus = false ;
if ( $menge != round ( $menge ) || $check_seriennummer == '' || $check_seriennummer === 'keine' ) {
$kommamodus = true ;
}
$ctmpmhd = ! empty ( $tmpmhd ) ? count ( $tmpmhd ) : 0 ;
for ( $y = 0 ; $y < $ctmpmhd ; $y ++ )
{
if ( $tmpmhd [ $y ][ 'menge' ] != 1 ) {
$kommamodus = true ;
}
}
if ( $kommamodus )
{
$tmenge = 0 ;
for ( $y = 0 ; $y < $ctmpmhd ; $y ++ )
{
if ( $tmpmhd [ $y ][ 'mhddatum' ] == '' ) {
$tmpmhd [ $y ][ 'mhddatum' ] = ' - ' ;
} else {
$tmpmhd [ $y ][ 'mhddatum' ] = $this -> app -> String -> Convert ( $tmpmhd [ $y ][ 'mhddatum' ], '%1-%2-%3' , '%3.%2.%1' );
}
if ( $tmpmhd [ $y ][ 'charge' ] == '' ) {
$tmpmhd [ $y ][ 'charge' ] = ' - ' ;
}
if ( $menge - $tmenge <= 0 ){
$tm = 0 ;
} elseif ( $menge - $tmenge >= $tmpmhd [ $y ][ 'menge' ])
{
$tm = $tmpmhd [ $y ][ 'menge' ];
} elseif ( $menge - $tmenge < $tmpmhd [ $y ][ 'menge' ]){
$tm = $menge - $tmenge ;
}
$tmenge += $menge ;
$this -> app -> Tpl -> Add ( 'SRNINFO' , " <tr>
< td >< input type = \ " hidden \" name= \" lager_mhd_id[] \" value= \" " . $tmpmhd [ $y ][ 'id' ] . " \" ><input type= \" text \" size= \" 6 \" class= \" chargenmengen mhdmenge \" onchange= \" checklagermengen(); \" name= \" lager_mhd_auswahl[] \" value= \" \" /> / <input type= \" hidden \" class= \" lager_charge_menge \" name= \" lager_mhd_menge[] \" value= \" " . $tmpmhd [ $y ][ 'mhdmenge' ] . " \" /> " . $tmpmhd [ $y ][ 'mhdmenge' ] . " $out </td>
< td > " . $tmpmhd[$y] ['mhddatum']. " </ td >< td ></ td >
< td > " . $tmpmhd[$y] ['charge']. " </ td ></ tr > " );
if ( $y == 0 ) $this -> app -> Tpl -> Set ( 'ONCHANGEMENGE' , ' onchange="checklagermengen();" ' );
}
} else {
for ( $y = 0 ; $y < $ctmpmhd ; $y ++ )
{
$regaltreffer = " 1 " ;
if ( $y < $menge ) $checked = " checked " ; else $checked = " " ;
if ( $tmpmhd [ $y ][ 'mhddatum' ] == " " ) $tmpmhd [ $y ][ 'mhddatum' ] = " - " ; else $tmpmhd [ $y ][ 'mhddatum' ] = $this -> app -> String -> Convert ( $tmpmhd [ $y ][ 'mhddatum' ], '%1-%2-%3' , '%3.%2.%1' );
if ( $tmpmhd [ $y ][ 'charge' ] == " " ) $tmpmhd [ $y ][ 'charge' ] = " - " ;
$this -> app -> Tpl -> Add ( 'SRNINFO' , " <tr>
< td >< input type = \ " checkbox \" onclick= \" countChecks(this) \" name= \" lager_mhd_id[] \" value= \" " . $tmpmhd [ $y ][ 'id' ] . " \" $checked > $out </td>
< td > " . $tmpmhd[$y] ['mhddatum']. " </ td >< td ></ td >
< td > " . $tmpmhd[$y] ['charge']. " </ td ></ tr > " );
}
}
} else if ( $check_charge == " 2 " || $check_charge == " 1 " )
{
$this -> app -> Tpl -> Add ( " JQUERYREADY " , " checklagermengen(); " );
$kommamodus = false ;
if ( $menge != round ( $menge ) || $check_seriennummer == '' || $check_seriennummer === 'keine' ) $kommamodus = true ;
$ctmpcharge = ! empty ( $tmpcharge ) ? count ( $tmpcharge ) : 0 ;
for ( $y = 0 ; $y < $ctmpcharge ; $y ++ )
{
if ( $tmpcharge [ $y ][ 'menge' ] != 1 ) $kommamodus = true ;
}
if ( $kommamodus )
{
$tmenge = 0 ;
for ( $y = 0 ; $y < $ctmpcharge ; $y ++ )
{
$regaltreffer = " 1 " ;
if ( $menge - $tmenge <= 0 ){
$tm = 0 ;
} elseif ( $menge - $tmenge >= $tmpmhd [ $y ][ 'menge' ])
{
$tm = $tmpmhd [ $y ][ 'menge' ];
} elseif ( $menge - $tmenge < $tmpmhd [ $y ][ 'menge' ]){
$tm = $menge - $tmenge ;
}
$tmenge += $menge ;
//if($y < $menge) $checked="checked"; else $checked="";
if ( $tmpcharge [ $y ][ 'charge' ] == " " ) $tmpcharge [ $y ][ 'charge' ] = " - " ;
$this -> app -> Tpl -> Add ( 'SRNINFO' , " <tr>
< td >< input type = \ " hidden \" name= \" lager_charge_id[] \" value= \" " . $tmpcharge [ $y ][ 'id' ] . " \" ><input class= \" chargenmengen \" onchange= \" checklagermengen(); \" type= \" text \" size= \" 6 \" name= \" lager_charge_auswahl[] \" value= \" \" /> / <input type= \" hidden \" class= \" lager_charge_menge \" name= \" lager_charge_menge[] \" value= \" " . $tmpcharge [ $y ][ 'cmenge' ] . " \" /> " . $this -> app -> erp -> ReplaceMenge ( 0 , $tmpcharge [ $y ][ 'cmenge' ], 0 ) . " $out </td>
< td > " . $tmpcharge[$y] ['charge']. " </ td ></ tr > " );
if ( $y == 0 ) $this -> app -> Tpl -> Set ( 'ONCHANGEMENGE' , ' onchange="checklagermengen();" ' );
}
} else {
for ( $y = 0 ; $y < $ctmpcharge ; $y ++ )
{
$regaltreffer = " 1 " ;
$checked = '' ;
if ( $y < $menge ) {
$checked = 'checked' ;
}
if ( $tmpcharge [ $y ][ 'charge' ] == '' ) $tmpcharge [ $y ][ 'charge' ] = ' - ' ;
$this -> app -> Tpl -> Add ( 'SRNINFO' , " <tr>
< td >< input type = \ " checkbox \" onclick= \" countChecks(this) \" name= \" lager_charge_id[] \" value= \" " . $tmpcharge [ $y ][ 'id' ] . " \" $checked > $out </td>
< td > " . $tmpcharge[$y] ['charge']. " </ td ></ tr > " );
}
}
}
//$regaltreffer="1";
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <input type= \" hidden \" name= \" abschluss_auslagern \" value= \" 1 \" > " );
$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 ( " <div class= \" info \" >Der Artikel $name wurde $menge mal ausgelagert. Anzahl Regal: <b> " . floatval ( $gesamt ) . " $einheit </b> Anzahl Komplettbestand alle Regale: <b> " . floatval ( $gesamt_alle ) . " $einheit </b></div> " );
if ( $artikelid > 0 )
{
$this -> app -> Location -> execute ( 'index.php?module=artikel&action=lager&id=' . $artikelid . '&msg=' . $msg );
}
//$msg = $this->app->erp->base64_url_encode("<div class=\"info\">Der Artikel $name wurde umgelagert. Der nächste Artikel kann jetzt umgelagert werden.</div>");
if ( $cmd === 'umlagern' ){
$this -> app -> Location -> execute ( 'index.php?module=lager&action=buchenauslagern&cmd=umlagern&msg=' . $msg );
}
$this -> app -> Location -> execute ( 'index.php?module=lager&action=buchenauslagern&msg=' . $msg );
} // ende allow
if ( $regalneu != '' && $regal > 0 && $cmd === 'umlagern' ) {
$msgregal = " Dieses Regal gibt es nicht! " ;
$this -> app -> Tpl -> Set ( 'MESSAGELAGER' , " <div class= \" error \" > $msgregal </div> " );
$regalcheck = 0 ;
}
// ende auslagern
}
} else {
//$error++;
if ( $regal != '' ) {
$msgregal = " Dieses Regal gibt es nicht! " ;
$this -> app -> Tpl -> Set ( 'MESSAGELAGER' , " <div class= \" error \" > $msgregal </div> " );
$regalcheck = 0 ;
}
}
if ( $error == 0 && $regalcheck == 0 ) {
$standardbild = $this -> app -> DB -> Select ( " SELECT standardbild FROM artikel WHERE id=' $artikel ' LIMIT 1 " );
if ( $standardbild == '' ) {
$standardbild = $this -> app -> DB -> Select ( " SELECT datei FROM datei_stichwoerter WHERE subjekt='Shopbild' AND objekt='Artikel' AND parameter=' $artikel ' LIMIT 1 " );
}
if ( trim ( $einheit ) != '' ){
$name_de .= " (Einheit: " . $einheit . " ) " ;
}
$this -> app -> Tpl -> Add ( 'BEZEICHNUNG' , " <tr valign= \" top \" ><td>Aktueller Artikel:</td><td> $name_de </td></tr> " ); //BENE
if ( $standardbild > 0 ) {
$this -> app -> Tpl -> Add ( 'BEZEICHNUNG' , " <tr valign= \" top \" ><td>Bild:</td><td><img src= \" index.php?module=dateien&action=send&id= $standardbild\ " width = \ " 110 \" ></td></tr> " );
}
$lagermeist = $this -> app -> DB -> SelectArr ( " SELECT lager_platz, SUM(menge) FROM lager_platz_inhalt WHERE artikel=' $artikel ' GROUP BY lager_platz ORDER by 2 DESC LIMIT 1 " );
$lagerbezeichnung = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE id=' { $lagermeist [ 0 ][ 'lager_platz' ] } ' LIMIT 1 " );
$standard_lagerplatz = $this -> app -> DB -> Select ( " SELECT lager_platz FROM artikel WHERE id=' $artikel ' LIMIT 1 " );
$standard_lagerbezeichnung = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE id=' $standard_lagerplatz ' LIMIT 1 " );
if ( $lagerbezeichnung != $standard_lagerbezeichnung && $standard_lagerbezeichnung != " " )
$standardlageranzeigen = " <b onclick= \" document.getElementById('regal').value=' $standard_lagerbezeichnung ' \" ;> $standard_lagerbezeichnung </b> (Standardlager) " ;
//echo "huhuh $cmd regal $regal regalvalue $regalvalue checkregal $checkregal regaltreffer $regaltreffer";
if ( $regaltreffer == " 1 " ) {
$regalvalue = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE id=' $regal ' LIMIT 1 " );
} else {
$regalvalue = '' ;
}
//if($regal !="" && $regalvalue=="") $regalvalue=$regal;
if ( $regalvalue != '' && $cmd === 'umlagern' && $regal > 0 && $regal == $checkregal )
{
if ( $this -> app -> erp -> Version () !== " stock " )
{
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr ><td>Regalvorschlag:</td><td align= \" left \" ><input type= \" button \" onclick= \" document.getElementById('regal').value=' $regalvalue ' \" ; value= \" $regalvalue\ " ></ td ></ tr > " );
}
$this -> app -> Tpl -> Set ( 'FOCUSFIELD' , 'document.getElementById("regal").focus();' );
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr valign= \" top \" ><td><b>Zielregal:</b></td><td align= \" left \" ><input type= \" text \" style= \" width:200px;border: 2px solid red \" name= \" regalneu \" id= \" regal \" value= \" \" ><br>Jetzt Regal abscannen!<script type= \" text/javascript \" >document.getElementById('menge').style.backgroundColor='#ececec'; document.getElementById('nummer').style.backgroundColor='#ececec'; document.getElementById('grundreferenz').style.backgroundColor='#ececec';
document . getElementById ( 'grundreferenz' ) . readOnly = true ;
document . getElementById ( 'menge' ) . readOnly = true ;
document . getElementById ( 'nummer' ) . readOnly = true ;
</ script >
< input type = \ " hidden \" name= \" regal \" value= \" $regalvalue\ " ></ td ></ tr > " );
} else {
if ( $this -> app -> erp -> Version () === " stock " )
{
if ( $this -> app -> Secure -> GetPOST ( 'regal' ) == " " && $this -> app -> Secure -> GetGET ( " regal " ) == " " ) //TODO
$regalvalue = $lagerbezeichnung ; //TODO
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr ><td>Regalvorschlag:</td><td align= \" left \" ><input type= \" button \" onclick= \" document.getElementById('regal').value=' $lagerbezeichnung ' \" value= \" $lagerbezeichnung\ " > ( Standardlager ) < br > $standardlageranzeigen </ td ></ tr > " );
}
else {
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr ><td>Regalvorschlag:</td><td align= \" left \" ><input type= \" button \" onclick= \" document.getElementById('regal').value=' $lagerbezeichnung ' \" value= \" $lagerbezeichnung\ " > ( aktuell am meisten im Lager ) < br > $standardlageranzeigen </ td ></ tr > " );
}
if ( $lagerbezeichnung != '' && empty ( $regalvaluestock ) && $regal != '' ) {
$regalvaluestock = $lagerbezeichnung ;
}
if ( $regal != '' ) {
$regalvaluestock = $regalvalue ;
}
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , " <tr valign= \" top \" ><td><b>Entnahmeregal:</b></td><td align= \" left \" ><input type= \" text \" style= \" width:200px;border: 2px solid red; \" name= \" regal \" id= \" regal \" value= \" $regalvaluestock\ " >< br > Jetzt Regal abscannen !</ td ></ tr > " );
$this -> app -> Tpl -> Set ( 'FOCUSFIELD' , 'document.getElementById("regal").focus();' );
}
// letzt einstellung von grad
$this -> app -> Tpl -> Add ( 'ZWISCHENLAGERINFO' , ' < script type = " text/javascript " >
document . getElementById ( " regal " ) . focus ();
</ script > ' );
} 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' , '<div class="info">Reservierungen Stand ' . date ( 'd.m.Y' ) . '</div>' );
$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' , " <table border=0 width=100% class= \" mkTable \" >
< tr >< td >< b > Produktion </ b ></ td >< td >< b > Bezeichnung </ b ></ td >< td align = center >< b > Auslagern </ b ></ td ></ tr > " );
$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' , " <tr><td>Produktion $nummer </td><td> $bezeichnung </td><td align=center><a href= \" index.php?module=lager&action=auslagernproduktion&id= $produktion &cmd=produktion \" ><img src= \" ./themes/[THEME]/images/forward.svg \" ></a></td></tr> " );
$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' , " </table> " );
//TODO YUI Ende
if ( $gesamtanzahlartikel <= 0 ) {
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" info \" > { |Aktuell gibt es keine Artikel für Produktionen, da keine Produktionen gestartet wurden.|}</div> " );
$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' , " <h2> $projektName Lieferungen Stand " . date ( 'd.m.Y' ) . " </h2> " );
$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' , " <div class= \" info \" >Aktuell gibt es keine Artikel für Lieferungen.</div> " );
}
$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 . " <br> " ;
}
}
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<br> " ;
print_r ( $orderarray );
echo " <br> " ;
echo " schritt 2<br> " ;
print_r ( $tmparray );
echo " <br> " ;
echo " schritt 3<br> " ;
// 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: <input type= \" text \" size= \" 10 \" id= \" $erstes\ " onchange = \ " if(!confirm('Artikelnummer " . $row [ 'nummer' ] . " wurde " . $row [ 'tmpmenge' ] . " mal entnommen?')) return false; else window.location.href='index.php?module=lager&action=artikelfuerlieferungen&cmd= " . $row [ 'cmd' ] . " &artikel= " . $row [ 'artikel' ] . " &menge= " . $row [ 'tmpmenge' ] . " &projekt= " . $row [ 'projekt' ] . " &produktion= " . $row [ 'produktion' ] . " &lagerplatzid= " . $row [ 'link_lagerplatzid' ] . " &lager='+this.value; \" > " );
$htmltable -> AddCol ( " <a href= \" # \" onclick= \" if(!confirm('Artikelnummer " . $row [ 'nummer' ] . " wurde " . $row [ 'tmpmenge' ] . " mal entnommen?')) return false; else window.location.href='index.php?module=lager&action=artikelfuerlieferungen&cmd= " . $row [ 'cmd' ] . " &artikel= " . $row [ 'artikel' ] . " &menge= " . $row [ 'tmpmenge' ] . " &projekt= " . $row [ 'projekt' ] . " &produktion= " . $row [ 'produktion' ] . " &lagerplatzid= " . $row [ 'link_lagerplatzid' ] . " &lager= " . $row [ 'link_lager' ] . " '; \" ><img src= \" ./themes/[THEME]/images/forward.svg \" ></a> " );
// if ($this->app->User->GetType() == "admin") $htmltable->AddCol("<a href=\"#\" onclick=\"if(!confirm('Artikel aus Lieferungen und Reservierungen nehmen?')) return false; else window.location.href='index.php?module=lager&action=artikelentfernen&produktion=".$row['produktion']."&projekt=".$row['projekt']."&artikel=".$row['artikel']."&cmd=".$row['cmd']."';\"><img src=\"./themes/[THEME]/images/delete.svg\"></a>");
}
//bestimme regalplaetze fuer artikel
$this -> app -> Tpl -> Add ( 'INHALT' , $htmltable -> Get ());
// und enter abfangen!!!
$this -> app -> Tpl -> Add ( 'INHALT' , " <script type= \" text/javascript \" >document.getElementById( \" erstes \" ).focus(); </script> " );
//$table->DisplayNew('INHALT', "<a href=\"index.php?module=lager&action=bucheneinlagern&cmd=zwischenlager&id=%value%\"><img border=\"0\" src=\"./themes/[THEME]/images/einlagern.png\"></a>");
$this -> app -> Tpl -> Parse ( 'TAB1' , 'rahmen70_ohneform.tpl' );
}
function LagerZwischenlager () {
$this -> app -> Tpl -> Add ( 'TABS' , '<li><h2>Zwischenlager</h2></li>' );
$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' , " <a href= \" index.php?module=lager&action=bewegungpopup&frame=false&id=%value% \"
onclick = \ " makeRequest(this);return false \" >Info</a> " );
$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' , " <a href= \" index.php?module=lager&action=bewegungpopup&frame=false&id=%value% \"
onclick = \ " makeRequest(this);return false \" >Info</a> " );
$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 " , " <div class= \" info \" style= \" margin-top:7px \" >Bewegungen Lager: $lager bis zum " . date ( 'd.m.Y' ) . " </div> " );
2022-07-01 14:24:56 +02:00
$this -> app -> YUI -> AutoComplete ( 'lager_platz_bewegung' , 'lagerplatz' , 0 , '&lager=' . $id );
2022-07-01 14:24:56 +02:00
$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' , " <div class= \" info \" > $neue Regal wurde neu angelegt $sorttxt !</div> " );
}
else if ( $neue > 1 ){
$this -> app -> Tpl -> Set ( 'MESSAGE3' , " <div class= \" info \" > $neue Lagerplätze wurden neu angelegt $sorttxt !</div> " );
}
else {
$this -> app -> Tpl -> Set ( 'MESSAGE3' , " <div class= \" info \" >Keine neuen Lagerplätze angelegt! Alle bereits gefunden $sorttxt .</div> " );
}
}
else {
$this -> app -> Tpl -> Set ( 'MESSAGE3' , " <div class= \" error \" >Es wurden keine Lagerplätze angegeben!</div> " );
}
}
$speichern = $this -> app -> Secure -> GetPOST ( 'speichern' );
if ( $speichern != '' ) {
$kurzbezeichnung = $this -> app -> Secure -> GetPOST ( 'kurzbezeichnung' );
$autolagersperre = $this -> app -> Secure -> GetPOST ( 'autolagersperre' );
$verbrauchslager = $this -> app -> Secure -> GetPOST ( 'verbrauchslager' );
$breite = $this -> app -> Secure -> GetPOST ( 'breite' );
$laenge = $this -> app -> Secure -> GetPOST ( 'laenge' );
$hoehe = $this -> app -> Secure -> GetPOST ( 'hoehe' );
$sperrlager = $this -> app -> Secure -> GetPOST ( 'sperrlager' );
$poslager = $this -> app -> Secure -> GetPOST ( 'poslager' );
$abckategorie = $this -> app -> Secure -> GetPOST ( 'abckategorie' );
$regalart = $this -> app -> Secure -> GetPOST ( 'regalart' );
$rownumber = ( int ) $this -> app -> Secure -> GetPOST ( 'rownumber' );
$allowproduction = ( int ) $this -> app -> Secure -> GetPOST ( 'allowproduction' );
$allowed = '/[^a-z0-9A-Z\-\_\.]/i' ;
$kurzbezeichnung = preg_replace ( $allowed , '' , $kurzbezeichnung );
$kurzbezeichnung = substr ( $kurzbezeichnung , 0 , 15 );
$adresse = $this -> app -> Secure -> GetPOST ( 'adresse' );
$adresse = trim ( $adresse );
$rest = explode ( ' ' , $adresse );
$rest = $rest [ 0 ];
$adresseid = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE id=' $rest ' AND geloescht=0 LIMIT 1 " );
$check = $this -> app -> DB -> Select ( " SELECT id FROM lager_platz WHERE kurzbezeichnung=' $kurzbezeichnung ' AND kurzbezeichnung!='' LIMIT 1 " );
if ( $check <= 0 && $kurzbezeichnung != '' ) {
$breite = str_replace ( ',' , '.' , $breite );
$hoehe = str_replace ( ',' , '.' , $hoehe );
$laenge = str_replace ( ',' , '.' , $laenge );
$this -> app -> DB -> Insert (
sprintf (
" INSERT INTO lager_platz
( lager , kurzbezeichnung , autolagersperre , verbrauchslager , sperrlager ,
breite , laenge , hoehe , poslager , adresse , abckategorie , regalart , rownumber , allowproduction )
VALUES
( % d , '%s' , % d , % d , % d , % f , % f , % f , % d , % d , '%s' , '%s' , % d , % d ) " ,
$id , $kurzbezeichnung , $autolagersperre , $verbrauchslager , $sperrlager ,
$breite , $laenge , $hoehe , $poslager , $adresseid , $abckategorie , $regalart , $rownumber , $allowproduction
)
);
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" info \" >Das Regal wurde angelegt!</div> " );
$this -> app -> Location -> execute ( " index.php?module=lager&action=platz&id= $id &msg= $msg " );
}
if ( $kurzbezeichnung == '' ){
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" error \" >Das Regal wurde nicht angelegt! Bitte geben Sie einen Namen an!</div> " );
}
else {
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" error \" >Das Regal wurde nicht angelegt! Der Name existiert bereits in diesem oder einem anderem Lager.
Bitte einen anderen w & auml ; hlen !</ div > " );
}
}
$this -> app -> YUI -> AutoComplete ( 'adresse' , 'adresse' );
$this -> app -> Tpl -> Set ( 'KURZBEZEICHNUNG' , $kurzbezeichnung );
$this -> app -> Tpl -> Set ( 'ADRESSE' , $adresse );
if ( $autolagersperre == '1' ) {
$this -> app -> Tpl -> Set ( 'AUTOLAGERSPERRE' , 'checked' );
}
if ( $poslager == '1' ) {
$this -> app -> Tpl -> Set ( 'POSLAGER' , 'checked' );
}
if ( $verbrauchslager == '1' ) {
$this -> app -> Tpl -> Set ( 'VERBRAUCHSLAGER' , 'checked' );
}
if ( $sperrlager == '1' ) {
$this -> app -> Tpl -> Set ( 'SPERRLAGER' , 'checked' );
}
if ( $allowproduction == '1' ) {
$this -> app -> Tpl -> Set ( 'ALLOWPRODUCTION' , 'checked' );
}
$this -> app -> Tpl -> Set ( 'ABCKATEGORIE' , $this -> app -> erp -> GetLagerABCKategorie ( $abckategorie ));
$this -> app -> Tpl -> Set ( 'REGALART' , $this -> app -> erp -> GetLagerRegalart ( $regalart ));
$this -> app -> YUI -> HideFormular ( 'sperrlager' ,[ 'checked' => 'dummy' , 'unchecked' => 'trsperrlager' ]);
$this -> app -> Tpl -> Parse ( 'TAB2' , " lager_platz.tpl " );
$this -> app -> Tpl -> Set ( 'SUBSUBHEADING' , 'Lagerplätze' );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'lagerplatztabelle' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'lagerplatzuebersicht.tpl' );
}
public function LagerPlatzEditPopup () {
$frame = $this -> app -> Secure -> GetGET ( 'frame' );
$id = $this -> app -> Secure -> GetGET ( 'id' );
// nach page inhalt des dialogs ausgeben
// $widget = new WidgetLager_platz($this->app,TAB1);
$sid = $this -> app -> DB -> Select ( " SELECT lager FROM lager_platz WHERE id=' $id ' LIMIT 1 " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=lager&action=platz&id= $sid " , " zurück zur Übersicht " );
$this -> app -> Tpl -> Set ( 'ABBRECHEN' , " <input type= \" button \" value= \" Abbrechen \" onclick= \" window.location.href='index.php?module=lager&action=platz&id= $sid '; \" > " );
// $widget->form->SpecialActionAfterExecute("close_refresh", "index.php?module=lager&action=platz&id=$sid");
// $widget->Edit();
$speichern = $this -> app -> Secure -> GetPOST ( 'speichern' );
if ( $speichern != '' )
{
$kurzbezeichnung = $this -> app -> Secure -> GetPOST ( 'kurzbezeichnung' );
$autolagersperre = $this -> app -> Secure -> GetPOST ( 'autolagersperre' );
$verbrauchslager = $this -> app -> Secure -> GetPOST ( 'verbrauchslager' );
$sperrlager = $this -> app -> Secure -> GetPOST ( 'sperrlager' );
$poslager = $this -> app -> Secure -> GetPOST ( 'poslager' );
$breite = $this -> app -> Secure -> GetPOST ( 'breite' );
$laenge = $this -> app -> Secure -> GetPOST ( 'laenge' );
$hoehe = $this -> app -> Secure -> GetPOST ( 'hoehe' );
$adresse = $this -> app -> Secure -> GetPOST ( 'adresse' );
$abckategorie = $this -> app -> Secure -> GetPOST ( 'abckategorie' );
$regalart = $this -> app -> Secure -> GetPOST ( 'regalart' );
$rownumber = $this -> app -> Secure -> GetPOST ( 'rownumber' );
$allowproduction = $this -> app -> Secure -> GetPOST ( 'allowproduction' );
$allowed = '/[^a-z0-9A-Z\-\_\.]/i' ;
$kurzbezeichnung = preg_replace ( $allowed , '' , $kurzbezeichnung );
$kurzbezeichnung = substr ( $kurzbezeichnung , 0 , 15 );
$adresse = $this -> app -> Secure -> GetPOST ( 'adresse' );
$adresse = trim ( $adresse );
$rest = explode ( ' ' , $adresse );
$rest = $rest [ 0 ];
$adresseid = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE id=' $rest ' AND geloescht=0 LIMIT 1 " );
$check = $this -> app -> DB -> Select ( " SELECT id FROM lager_platz WHERE kurzbezeichnung=' $kurzbezeichnung ' AND kurzbezeichnung!='' AND id!=' $id ' LIMIT 1 " );
if ( $check <= 0 && $kurzbezeichnung != '' )
{
$breite = str_replace ( ',' , '.' , $breite );
$hoehe = str_replace ( ',' , '.' , $hoehe );
$laenge = str_replace ( ',' , '.' , $laenge );
$this -> app -> DB -> Update (
sprintf (
" UPDATE lager_platz
SET kurzbezeichnung = '%s' , autolagersperre =% d , verbrauchslager =% d , sperrlager =% d , poslager =% d , adresse =% d ,
breite =% f , laenge =% f , hoehe =% f , abckategorie = '%s' , regalart = '%s' , rownumber = % d , allowproduction = % d
WHERE id =% d
LIMIT 1 " ,
$kurzbezeichnung , $autolagersperre , $verbrauchslager , $sperrlager , $poslager , $adresseid ,
$breite , $laenge , $hoehe , $abckategorie , $regalart , $rownumber , $allowproduction ,
$id
)
);
$msg = $this -> app -> erp -> base64_url_encode ( '<div class="info">Das Regal wurde geändert!</div>' );
$this -> app -> Location -> execute ( " index.php?module=lager&action=platz&id= $sid &msg= $msg " );
}
if ( $kurzbezeichnung == '' ){
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" error \" >Das Regal wurde nicht geändert! Bitte geben Sie einen Namen an!</div> " );
}
else {
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" error \" >Das Regal wurde nicht geändert! Der Name existiert in diesem oder einen anderem Lager bereits. Bitte einen anderen wählen!</div> " );
}
$this -> app -> Tpl -> Set ( 'ADRESSE' , $adresse );
$this -> app -> Tpl -> Set ( 'KURZBEZEICHNUNG' , $kurzbezeichnung );
if ( $autolagersperre == '1' ) {
$this -> app -> Tpl -> Set ( 'AUTOLAGERSPERRE' , 'checked' );
}
if ( $verbrauchslager == '1' ) {
$this -> app -> Tpl -> Set ( 'VERBRAUCHSLAGER' , 'checked' );
}
if ( $sperrlager == '1' ) {
$this -> app -> Tpl -> Set ( 'SPERRLAGER' , 'checked' );
}
if ( $poslager == '1' ) {
$this -> app -> Tpl -> Set ( 'POSLAGER' , 'checked' );
}
if ( $allowproduction == '1' ) {
$this -> app -> Tpl -> Set ( 'ALLOWPRODUCTION' , 'checked' );
}
$this -> app -> Tpl -> Set ( 'ABCKATEGORIE' , $this -> app -> erp -> GetLagerABCKategorie ( $abckategorie ));
$this -> app -> Tpl -> Set ( 'REGALART' , $this -> app -> erp -> GetLagerRegalart ( $regalart ));
} else {
$tmp = $this -> app -> DB -> SelectRow (
sprintf (
'SELECT * FROM lager_platz WHERE id=%d LIMIT 1' ,
$id
)
);
$kurzbezeichnung = $tmp [ 'kurzbezeichnung' ];
$autolagersperre = $tmp [ 'autolagersperre' ];
$verbrauchslager = $tmp [ 'verbrauchslager' ];
$adresse = $tmp [ 'adresse' ];
$breite = $tmp [ 'breite' ];
$laenge = $tmp [ 'laenge' ];
$hoehe = $tmp [ 'hoehe' ];
$rownumber = $tmp [ 'rownumber' ];
$sperrlager = $tmp [ 'sperrlager' ];
$poslager = $tmp [ 'poslager' ];
$abckategorie = $tmp [ 'abckategorie' ];
$regalart = $tmp [ 'regalart' ];
$allowproduction = $tmp [ 'allowproduction' ];
$this -> app -> Tpl -> Set ( 'KURZBEZEICHNUNG' , $kurzbezeichnung );
$adresse = $this -> app -> DB -> Select ( " SELECT CONCAT(id,' ',name) FROM adresse WHERE id=' $adresse ' LIMIT 1 " );
$this -> app -> Tpl -> Set ( 'ADRESSE' , $adresse );
$this -> app -> Tpl -> Set ( 'LAENGE' , $laenge );
$this -> app -> Tpl -> Set ( 'BREITE' , $breite );
$this -> app -> Tpl -> Set ( 'HOEHE' , $hoehe );
$this -> app -> Tpl -> Set ( 'ROWNUMBER' , $rownumber );
$this -> app -> Tpl -> Set ( 'ABCKATEGORIE' , $this -> app -> erp -> GetLagerABCKategorie ( $abckategorie ));
$this -> app -> Tpl -> Set ( 'REGALART' , $this -> app -> erp -> GetLagerRegalart ( $regalart ));
if ( $autolagersperre == '1' ) {
$this -> app -> Tpl -> Set ( 'AUTOLAGERSPERRE' , 'checked' );
}
if ( $verbrauchslager == '1' ) {
$this -> app -> Tpl -> Set ( 'VERBRAUCHSLAGER' , 'checked' );
}
if ( $sperrlager == '1' ) {
$this -> app -> Tpl -> Set ( 'SPERRLAGER' , 'checked' );
}
if ( $poslager == '1' ) {
$this -> app -> Tpl -> Set ( 'POSLAGER' , 'checked' );
}
if ( $allowproduction == '1' ) {
$this -> app -> Tpl -> Set ( 'ALLOWPRODUCTION' , 'checked' );
}
}
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=platzeditpopup&id=' . $id , 'Details' );
$this -> app -> YUI -> AutoComplete ( 'adresse' , 'adresse' );
$this -> app -> YUI -> HideFormular ( 'sperrlager' ,[ 'checked' => 'dummy' , 'unchecked' => 'trsperrlager' ]);
$this -> app -> Tpl -> Parse ( 'TAB1' , 'lager_platz.tpl' );
$this -> app -> Tpl -> Set ( 'TABNAME' , 'Regal' );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'tabview.tpl' );
}
public function LagerCreate () {
$this -> app -> erp -> Headlines ( 'Lager' , 'anlegen' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=list' , 'Zurück zur Übersicht' );
parent :: LagerCreate ();
}
public function LagerEtikettenlist ()
{
$this -> app -> erp -> Headlines ( '' , 'Etiketten' );
$this -> app -> YUI -> AutoComplete ( 'von' , 'lagerplatz' );
$this -> app -> YUI -> AutoComplete ( 'bis' , 'lagerplatz' );
$etikettenauswahl = $this -> app -> Secure -> GetPOST ( 'etikettenauswahl' );
$etikettendrucker = $this -> app -> Secure -> GetPOST ( 'etikettendrucker' );
$von = $this -> app -> Secure -> GetPOST ( 'von' );
$bis = $this -> app -> Secure -> GetPOST ( 'bis' );
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
$data = $this -> app -> Secure -> GetGET ( 'data' );
if ( $cmd === 'holeanzahl' ){
if ( $von != '' )
{
$error = '' ;
$data = $this -> app -> erp -> base64_url_encode ( serialize ( array ( 'drucker' => $etikettendrucker , 'etiketten' => $etikettenauswahl , 'von' => $von , 'bis' => $bis )));
$tmp = $this -> app -> DB -> SelectArr ( " SELECT kurzbezeichnung FROM lager_platz WHERE kurzbezeichnung >=' $von ' AND kurzbezeichnung<=' $bis ' " );
if (( ! empty ( $tmp ) ? count ( $tmp ) : 0 ) > 0 ){
echo json_encode ( array ( 'status' => 1 , 'anzahl' => ( ! empty ( $tmp ) ? count ( $tmp ) : 0 ), 'daten' => $data ));
$this -> app -> ExitXentral ();
}
$error .= 'In diesem Bereich wurden keine Lagerplätze gefunden!' ;
echo json_encode ( array ( 'status' => 0 , 'statusText' => $error ));
$this -> app -> ExitXentral ();
}
$this -> app -> ExitXentral ();
}
if ( $cmd === 'print' )
{
$data = unserialize ( $this -> app -> erp -> base64_url_decode ( $data ));
$arr = $this -> app -> DB -> SelectArr ( " SELECT kurzbezeichnung,id FROM lager_platz WHERE kurzbezeichnung >=' " . $data [ 'von' ] . " ' AND kurzbezeichnung<=' " . $data [ 'bis' ] . " ' ORDER by kurzbezeichnung " );
if ( $data [ 'etiketten' ] > 0 ){
$label = $data [ 'etiketten' ];
}
else
{
$label = " lagerplatz_klein " ;
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$this -> app -> erp -> EtikettenDrucker ( $label , 1 , 'lager_platz' , $arr [ $i ][ 'id' ], '' , '' , $data [ 'drucker' ]);
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" info \" >Die Etiketten wurden gedruckt!</div> " );
echo json_encode ( array ( 'status' => 1 ));
$this -> app -> ExitXentral ();
}
$this -> LagerHauptmenu ();
$etiketten = $this -> app -> erp -> GetSelectEtiketten ( " lagerplatz_klein " , $etikettenauswahl );
if ( $etiketten == " " ) $etiketten = " <option>Standard</option> " ;
$drucker = $this -> app -> erp -> GetSelectEtikettenDrucker ( $etikettendrucker );
$druckbutton = " <input type= \" button \" onclick= \" Etikettendrucken() \" class= \" btnBlue \" value= \" { |Drucken|} \" > " ;
$this -> app -> Tpl -> Set ( 'FORMULAR' , " <form action= \" \" method= \" post \" ><table class= \" mkTableFormular \" >
< tr >< td > { | Lagerplatz | } ({ | von | }) :</ td >< td >< input type = \ " text \" name= \" von \" id= \" von \" value= \" $von\ " ></ td ></ tr >
< tr >< td > { | Lagerplatz | } ({ | bis | }) :</ td >< td >< input type = \ " text \" name= \" bis \" id= \" bis \" value= \" $bis\ " >& nbsp ; $druckbutton </ td ></ tr >
< tr >< td > { | Etikett | } :</ td >< td >< select name = \ " etikettenauswahl \" id= \" etikettenauswahl \" > " . $etiketten . " </select></td></tr>
< tr >< td > { | Drucker | } :</ td >< td >< select name = \ " etikettendrucker \" id= \" etikettendrucker \" > " . $drucker . " </select></td></tr></table>
</ form >< br >< br > " );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'lager_etikettenlist.tpl' );
}
public function LagerHauptmenu () {
if ( $this -> app -> Secure -> GetGET ( 'action' ) !== 'list' ) {
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=list' , 'zurück zur Übersicht' );
}
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=list' , 'Übersicht' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=etikettenlist' , 'Lageretiketten' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=create' , 'Neues Lager anlegen' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=bestand' , 'Lagerbestand' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=wert' , 'Lagerbestandsberechnung' );
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lager&action=allebewegungen' , 'Bewegungen' );
if ( $this -> app -> erp -> Version () !== 'stock' )
{
}
if ( $this -> app -> erp -> RechteVorhanden ( 'lagerinventur' , 'bestand' )){
$this -> app -> erp -> MenuEintrag ( 'index.php?module=lagerinventur&action=bestand' , 'Inventur' );
}
$this -> app -> erp -> Headlines ( 'Lagerverwaltung' );
$this -> app -> erp -> RunMenuHook ( 'lager_hauptmenu' );
}
function LagerDoppelteWarnung ()
{
$check_double_lager = $this -> app -> DB -> SelectArr ( " SELECT bezeichnung, COUNT(bezeichnung) AS NumOccurrences FROM lager WHERE geloescht!=1 GROUP BY bezeichnung HAVING ( COUNT(bezeichnung) > 1 ) " );
$ccheck_double_lager = ! empty ( $check_double_lager ) ? count ( $check_double_lager ) : 0 ;
if ( $ccheck_double_lager > 0 ) {
$bezeichnung = '' ;
for ( $icheck = 0 ; $icheck < $ccheck_double_lager ; $icheck ++ ) {
$bezeichnung .= ' ' . $check_double_lager [ $icheck ][ 'bezeichnung' ];
}
/* if ( trim ( $bezeichnung ) == '' ) {
$belege = 'ohne Bezeichnung' ;
} */
//$gesamt_lager= $ccheck_double_lager;
$this -> app -> Tpl -> Set ( 'MESSAGE' , '<div class="error">Achtung! Doppelte Bezeichnungen: ' . $bezeichnung . '</div>' );
//$this->app->erp->InternesEvent($this->app->User->GetID(),'Achtung! Doppelte Bezeichnungen: '.$bezeichnung,"warning",0);
}
}
public function LagerList () {
$this -> LagerHauptmenu ();
$this -> LagerDoppelteWarnung ();
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'lagertabelle' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , " lageruebersicht.tpl " );
}
public function LagerMenu () {
$id = $this -> app -> Secure -> GetGET ( 'id' );
$this -> app -> erp -> Headlines ( 'Lager' );
$bezeichnung = $this -> app -> DB -> Select ( " SELECT bezeichnung FROM lager WHERE id=' $id ' LIMIT 1 " );
$this -> app -> erp -> Headlines ( 'Lagerverwaltung' , $bezeichnung );
$this -> app -> erp -> MenuEintrag ( " index.php?module=lager&action=edit&id= $id " , " Details " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=lager&action=platz&id= $id " , " Regale " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=lager&action=inhalt&id= $id " , " Bestand " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=lager&action=bewegung&id= $id " , " Bewegungen " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=lager&action=list " , " Zurück zur Übersicht " );
}
public function LagerEdit () {
$this -> app -> Tpl -> Set ( 'AKTIV_TAB1' , " selected " );
$this -> app -> Tpl -> Set ( 'ABBRECHEN' , " <input type= \" button \" value= \" Abbrechen \" onclick= \" window.location.href='index.php?module=lager&action=list'; \" > " );
parent :: LagerEdit ();
$this -> LagerDoppelteWarnung ();
$this -> LagerMenu ();
}
public function LagerEtiketten () {
$this -> LagerMenu ();
$this -> app -> Tpl -> Set ( 'PAGE' , " <br><br><br>Etiketten " );
}
}