2021-05-21 08:49:41 +02:00
< ? php
2022-05-30 15:40:17 +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-05-30 15:40:17 +02:00
< ? php
use Xentral\Components\Pdf\Exception\PdfComponentExceptionInterface ;
use Xentral\Components\Pdf\PdfMerger ;
use Xentral\Components\Http\Session\SessionHandler ;
use Xentral\Modules\Article\Gateway\ArticleGateway ;
use Xentral\Modules\ScanArticle\Service\ScanArticleService ;
use Xentral\Modules\ScanArticle\Exception\ArticleNotFoundException ;
include '_gen/bestellung.php' ;
class Bestellung extends GenBestellung
{
/** @var Application $app */
/**
* Bestellung 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 ( " list " , " BestellungList " );
$this -> app -> ActionHandler ( " create " , " BestellungCreate " );
$this -> app -> ActionHandler ( " positionen " , " BestellungPositionen " );
$this -> app -> ActionHandler ( " upbestellungposition " , " UpBestellungPosition " );
$this -> app -> ActionHandler ( " delbestellungposition " , " DelBestellungPosition " );
$this -> app -> ActionHandler ( " copybestellungposition " , " CopyBestellungPosition " );
$this -> app -> ActionHandler ( " downbestellungposition " , " DownBestellungPosition " );
$this -> app -> ActionHandler ( " positioneneditpopup " , " BestellungPositionenEditPopup " );
$this -> app -> ActionHandler ( " edit " , " BestellungEdit " );
$this -> app -> ActionHandler ( " copy " , " BestellungCopy " );
$this -> app -> ActionHandler ( " auftrag " , " BestellungAuftrag " );
$this -> app -> ActionHandler ( " delete " , " BestellungDelete " );
$this -> app -> ActionHandler ( " undelete " , " BestellungUndelete " );
$this -> app -> ActionHandler ( " freigabe " , " BestellungFreigabe " );
$this -> app -> ActionHandler ( " freigegeben " , " BestellungFreigegeben " );
$this -> app -> ActionHandler ( " abschicken " , " BestellungAbschicken " );
$this -> app -> ActionHandler ( " dateien " , " BestellungDateien " );
$this -> app -> ActionHandler ( " pdf " , " BestellungPDF " );
$this -> app -> ActionHandler ( " inlinepdf " , " BestellungInlinePDF " );
$this -> app -> ActionHandler ( " protokoll " , " BestellungProtokoll " );
$this -> app -> ActionHandler ( " minidetail " , " BestellungMiniDetail " );
$this -> app -> ActionHandler ( " editable " , " BestellungEditable " );
$this -> app -> ActionHandler ( " livetabelle " , " BestellungLiveTabelle " );
$this -> app -> ActionHandler ( " schreibschutz " , " BestellungSchreibschutz " );
$this -> app -> ActionHandler ( " abschliessen " , " BestellungAbschliessen " );
$this -> app -> ActionHandler ( " alsversendet " , " BestellungAlsversendet " );
$this -> app -> ActionHandler ( " pdffromarchive " , " BestellungPDFfromArchiv " );
$this -> app -> ActionHandler ( " archivierepdf " , " BestellungArchivierePDF " );
$this -> app -> ActionHandler ( " einlagern " , " BestellungEinlagern " );
$this -> app -> ActionHandler ( " offenepositionen " , " BestellungOffenePositionen " );
$this -> app -> ActionHandler ( " steuer " , " BestellungSteuer " );
$this -> app -> ActionHandler ( " adressebestellungcopy " , " AdresseBestellungCopy " );
$this -> app -> ActionHandler ( " ean " , " BestellungEAN " );
$this -> app -> DefaultActionHandler ( " list " );
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$nummer = $this -> app -> Secure -> GetPOST ( 'adresse' );
if ( $id > 0 ){
$bestRow = $this -> app -> DB -> Select (
sprintf (
' SELECT a . name , b . belegnr
FROM bestellung b
LEFT JOIN adresse a ON b . adresse = a . id
WHERE b . id =% d
LIMIT 1 ' ,
$id
)
);
}
if ( $nummer == '' && ! empty ( $bestRow ) && gettype ( $bestRow ) == 'array' ){
$adresse = $bestRow [ 'name' ];
}
else {
$adresse = $nummer ;
}
if ( gettype ( $bestRow ) == 'array' ) {
$nummer = ! empty ( $bestRow ) ? $bestRow [ 'belegnr' ] : '' ;
if ( $nummer == '' || $nummer == '0' ) {
$nummer = 'ohne Nummer' ;
}
}
$this -> app -> Tpl -> Set ( 'UEBERSCHRIFT' , 'Bestellung: ' . $adresse . ' (' . $nummer . ')' );
$this -> app -> Tpl -> Set ( 'FARBE' , '[FARBE2]' );
$this -> app -> erp -> Headlines ( 'Bestellung' );
$this -> app -> ActionHandlerListen ( $app );
}
function BestellungSteuer ()
{
}
function BestellungUndelete ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$bestellungRow = $this -> app -> DB -> SelectRow (
sprintf ( " SELECT status, belegnr, name FROM bestellung WHERE id=%d LIMIT 1 " , $id )
);
$status = $bestellungRow [ 'status' ];
$belegnr = $bestellungRow [ 'belegnr' ];
$name = $bestellungRow [ 'name' ];
if ( $status === 'storniert' )
{
$this -> app -> erp -> BestellungProtokoll ( $id , " Bestellung Storno rückgängig " );
$this -> app -> DB -> Update ( " UPDATE bestellung SET status='freigegeben' WHERE id=' $id ' LIMIT 1 " );
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" info \" >Bestellung \" $name\ " ( $belegnr ) wurde wieder freigegeben !</ div > " );
} else {
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Bestellung \" $name\ " ( $belegnr ) kann nicht wieder freigegeben werden , da sie nicht storniert ist .</ div > " );
}
//header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg");
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=list&msg=' . $msg );
}
function BestellungEinlagern ( $id = null , $lagerplatz = null )
{
if ( $id === null )
{
$intern = false ;
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
} else {
$intern = true ;
}
if ( $id )
{
$arr = $this -> app -> DB -> SelectRow ( " SELECT projekt,belegnr,status FROM bestellung WHERE id = ' $id ' LIMIT 1 " );
if ( ! empty ( $arr )){
$projekt = $arr [ 'projekt' ];
$belegnr = $arr [ 'belegnr' ];
$status = $arr [ 'status' ];
if (( $status === 'versendet' || $status === 'freigegeben' )){
$standardlager = $this -> app -> DB -> Select ( " SELECT id FROM lager_platz WHERE geloescht <> 1 AND sperrlager <> 1 AND poslager <> 1 ORDER BY id LIMIT 1 " );
$positionen = $this -> app -> DB -> SelectArr ( " SELECT id,artikel,menge,geliefert FROM bestellung_position WHERE geliefert < menge AND bestellung=' $id ' " );
if ( $positionen ){
foreach ( $positionen as $position ) {
if ( $lagerplatz ){
$lager = $lagerplatz ;
} else {
$lager = $this -> app -> DB -> Select ( " SELECT lager_platz FROM artikel WHERE id = ' " . $position [ 'artikel' ] . " ' LIMIT 1 " );
if ( ! $this -> app -> DB -> Select ( " SELECT id FROM lager_platz WHERE id = ' $lager ' AND geloescht <> 1 LIMIT 1 " )) {
$lager = $standardlager ;
}
if ( ! $lager ) {
$lager = $standardlager ;
}
}
if ( $lager ){
$this -> app -> erp -> LagerEinlagern (
$position [ 'artikel' ], $position [ 'menge' ] - $position [ 'geliefert' ], $lager , $projekt ,
'Wareneingang von Bestellung ' . $belegnr , '' , '' , 'bestellung' , $id
);
$this -> app -> DB -> Update ( " UPDATE bestellung_position SET geliefert = menge WHERE id = ' " . $position [ 'id' ] . " ' LIMIT 1 " );
} else {
$dataartikel = $this -> app -> DB -> SelectRow ( " SELECT nummer,name_de FROM artikel WHERE id=' " . $position [ 'artikel' ] . " ' " );
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Abbruch beim Einlagern da für den Artikel \" " . $dataartikel [ 'nummer' ] . " " . $dataartikel [ 'name_de' ] . " \" kein Standard Lagerplatz definiert wurde oder alle Lager Sperr- oder POS-Lager sind!</div> " );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id . " &msg= " . $msg );
}
}
$this -> app -> erp -> BestellungProtokoll ( $id , " Bestellung manuell eingelagert " );
$this -> checkAbschliessen ( $id );
if ( $intern ) {
return true ;
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" info \" >Die Bestellung wurde eingelagert!</div> " );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id . " &msg= " . $msg );
}
}
}
if ( $intern ) {
return false ;
}
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id );
}
if ( $intern ) {
return false ;
}
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=list' );
}
function checkAbschliessen ( $id = 0 )
{
if ( ! $id ) {
$id = $this -> app -> Secure -> GetGET ( 'id' );
}
$id = ( int ) $id ;
if ( $id <= 0 ) {
return ;
}
$status = $this -> app -> DB -> Select ( " SELECT status FROM bestellung WHERE id = ' $id ' LIMIT 1 " );
if (( $status === 'versendet' || $status === 'freigegeben' ))
{
$sql = " SELECT bp.id FROM bestellung_position bp LEFT JOIN artikel a ON a.id=bp.artikel WHERE bp.bestellung = ' $id ' AND a.lagerartikel=1 " ;
$alleLagerArtikelVonBestellung = $this -> app -> DB -> SelectArr ( $sql );
//nur wenn auch Lagerartikel enthalten sind, soll automatisch abgeschlossen werden können.
if ( count ( $alleLagerArtikelVonBestellung ) > 0 ){
$lagerArtikelIds = [];
foreach ( $alleLagerArtikelVonBestellung as $l ){
$lagerArtikelIds [] = $l [ 'id' ];
}
$sql = " SELECT bp.id FROM bestellung_position bp LEFT JOIN artikel a ON a.id=bp.artikel WHERE bp.geliefert < bp.menge AND bp.id IN ( " . implode ( ',' , $lagerArtikelIds ) . " ) " ;
$offenePositionen = $this -> app -> DB -> SelectArr ( $sql );
if ( empty ( $offenePositionen )){
$this -> BestellungAbschliessen ( $id , true );
}
}
}
}
function BestellungOffenePositionen ()
{
$this -> BestellungListMenu ();
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'bestellung_offenepositionen' );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'bestellung_offenepositionen.tpl' );
}
function BestellungArchivierePDF ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$projektbriefpapier = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id = ' $id ' LIMIT 1 " );
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projektbriefpapier );
} else {
$Brief = new BestellungPDF ( $this -> app , $projektbriefpapier );
}
$Brief -> GetBestellung ( $id );
$tmpfile = $Brief -> displayTMP ();
$Brief -> ArchiviereDocument ( 1 );
unlink ( $tmpfile );
$this -> app -> DB -> Update ( " UPDATE bestellung SET schreibschutz='1' WHERE id=' $id ' " );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id );
}
function BestellungEditable ()
{
$this -> app -> YUI -> AARLGEditable ();
}
function BestellungSchreibschutz ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$this -> app -> DB -> Update ( sprintf ( 'UPDATE bestellung SET zuarchivieren=1, schreibschutz = 0 WHERE id=%d' , $id ));
$this -> app -> erp -> BestellungProtokoll ( $id , 'Schreibschutz entfernt' );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id );
}
function BestellungPDFfromArchiv ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$archiv = $this -> app -> DB -> Select ( " SELECT table_id from pdfarchiv where id = ' $id ' LIMIT 1 " );
if ( $archiv )
{
$projekt = $this -> app -> DB -> Select ( " SELECT projekt from bestellung where id = ' " . ( int ) $archiv . " ' " );
}
if ( class_exists ( 'BestellungPDFCustom' ))
{
if ( $archiv ) {
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
}
} else {
if ( $archiv ) {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
}
if ( $archiv && $content = $Brief -> getArchivByID ( $id ))
{
header ( 'Content-type: application/pdf' );
header ( 'Content-Disposition: attachment; filename="' . $content [ 'belegnr' ] . '.pdf"' );
echo $content [ 'file' ];
$this -> app -> ExitXentral ();
}
header ( 'Content-type: application/pdf' );
header ( 'Content-Disposition: attachment; filename="Fehler.pdf"' );
$this -> app -> ExitXentral ();
}
function BestellungMiniDetail ( $parsetarget = '' , $menu = true )
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
if ( $cmd === 'lager' )
{
if ( $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE id = ' $id ' AND lagerartikel = 1 LIMIT 1 " ))
{
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT " . $this -> app -> erp -> FormatMenge ( " sum(lpi.menge) " ) . " as menge, l.bezeichnung as Lager
FROM lager l
INNER JOIN lager_platz lp ON l . id = lp . lager AND l . geloescht = 0
INNER JOIN lager_platz_inhalt lpi ON lp . id = lpi . lager_platz AND lpi . artikel = $id
GROUP BY l . id
ORDER BY l . bezeichnung " );
$table -> align [ 0 ] = 'right' ;
$table -> align [ 1 ] = 'left' ;
echo json_encode ( array ( 'inhalt' => '<div class="inlinetooltiptable"><style> div.inlinetooltiptable > table.mkTable > tbody > tr:nth-child(2n+1) td {background-color:#e0e0e0;} </style>' . $table -> DisplayNew ( 'return' , 'Lager' , 'noAction' ) . '</div>' ));
} else {
echo json_encode ( array ( 'inhalt' => '<div class="inlinetooltiptable">kein Lagerartikel</div>' ));
}
$this -> app -> ExitXentral ();
}
if ( $cmd === 'zuordnungAuftragZuBestellung' )
{
$bid = $this -> app -> Secure -> GetGet ( " id " );
$belegnummer = $this -> app -> DB -> Select ( " SELECT belegnr FROM bestellung WHERE id=' $bid ' " );
$auftragPost = explode ( " " , $this -> app -> Secure -> GetPOST ( " auftrag " ));
$auftragsnummer = $auftragPost [ 0 ];
$auftrag_positionen = $this -> app -> DB -> SelectArr ( " SELECT ap.id,ap.artikel,ap.menge FROM auftrag_position ap LEFT JOIN auftrag a on a.id=ap.auftrag WHERE a.belegnr=' $auftragsnummer ' AND a.belegnr!='' " );
foreach ( $auftrag_positionen as $value ){
$a_positionen [ $value [ 'artikel' ]][ 'id' ] = $value [ 'id' ];
$a_positionen [ $value [ 'artikel' ]][ 'menge' ] = $value [ 'menge' ];
}
//jetzt holen wir alle Bestellpositonen für diese Bestellung
$bestellung_positionen = $this -> app -> DB -> SelectArr ( " SELECT bp.id,bp.artikel,bp.menge FROM bestellung_position bp WHERE bp.bestellung=' $bid ' " );
foreach ( $bestellung_positionen as $position ){
// prüfen ob beide artikel gleich sind und ob die menge passt
if ( ( is_array ( $a_positionen [ $position [ 'artikel' ]])) && ( $position [ 'menge' ] == $a_positionen [ $position [ 'artikel' ]][ 'menge' ]) ) {
// wenn wir den Artikel haben und die Anzahl passt
$wert = $a_positionen [ $position [ 'artikel' ]][ 'id' ];
$this -> app -> DB -> Update ( " UPDATE bestellung_position SET auftrag_position_id=' $wert ' WHERE id=' { $position [ 'id' ] } ' AND bestellung=' $bid ' LIMIT 1 " );
} else {
// wenn wir den Artikel haben aber die Anzahl nicht passt nehmen wir die Position vom ersten Auffinden des Artikel
if ( $position [ 'artikel' ] == $a_positionen [ $position [ 'artikel' ]]){
$wert = $a_positionen [ $position [ 'artikel' ]][ 'id' ];
$this -> app -> DB -> Update ( " UPDATE bestellung_position SET auftrag_position_id=' $wert ' WHERE id=' { $position [ 'id' ] } ' AND bestellung=' $bid ' LIMIT 1 " );
} else {
// wenn wir keinen Artikel haben nehmen wir den ersten Artikel zum verknüpfen
$wert = $a_positionen [ 0 ][ 'id' ];
$this -> app -> DB -> Update ( " UPDATE bestellung_position SET auftrag_position_id=' $wert ' WHERE id=' { $position [ 'id' ] } ' AND bestellung=' $bid ' LIMIT 1 " );
}
}
}
$zugeordnet = $this -> app -> DB -> Select ( " SELECT count(id) FROM bestellung_position WHERE bestellung=' $bid ' AND auftrag_position_id != '0' " );;
$nichtzugeordnet = $this -> app -> DB -> Select ( " SELECT count(id) FROM bestellung_position WHERE bestellung=' $bid ' AND auftrag_position_id = '0' " );
$gesamtpositionen = $this -> app -> DB -> Select ( " SELECT count(id) FROM bestellung_position WHERE bestellung=' $bid ' " );
$data [ 'gesamtpositionen' ] = $gesamtpositionen ;
$data [ 'belegnummer' ] = $belegnummer ;
$data [ 'zugeordnet' ] = $zugeordnet ;
$data [ 'nichtzugeordnet' ] = $nichtzugeordnet ;
$data [ 'error' ] = false ;
echo json_encode ( $data );
$this -> app -> ExitXentral ();
}
if ( $cmd === 'checkmenge' )
{
$bpid = $this -> app -> Secure -> GetPOST ( " bp " );
$ab_menge = round ( str_replace ( ',' , '.' , $this -> app -> Secure -> GetPOST ( " ab_menge " )), 8 );
$data = $this -> app -> DB -> SelectArr ( " SELECT *, TRIM(menge)+0 as menge FROM bestellung_position WHERE id = ' $bpid ' LIMIT 1 " );
if ( $data )
{
$data = reset ( $data );
$bestellung = $data [ 'bestellung' ];
$adresse = $this -> app -> DB -> Select ( " SELECT adresse FROM bestellung WHERE id = ' $bestellung ' LIMIT 1 " );
$ek = $this -> app -> erp -> GetEinkaufspreisArr ( $data [ 'artikel' ], $ab_menge , $adresse , $data [ 'waehrung' ]);
if ( $ek )
{
$data = array ( 'menge' => $ab_menge , 'ab_menge' => round ( $ek [ 'ab_menge' ], 8 ));
} else {
$data = array ( 'menge' => $ab_menge , 'ab_menge' => $ab_menge );
}
}
echo json_encode ( $data );
$this -> app -> ExitXentral ();
}
if ( $cmd === 'getpreis' )
{
$bpid = $this -> app -> Secure -> GetPOST ( " bp " );
$data = $this -> app -> DB -> SelectArr ( " SELECT *, TRIM(menge)+0 as menge FROM bestellung_position WHERE id = ' $bpid ' LIMIT 1 " );
if ( $data )
{
$data = reset ( $data );
$data [ 'menge' ] = round (( float ) $data [ 'menge' ], 8 );
$bestellung = $data [ 'bestellung' ];
$adresse = $this -> app -> DB -> Select ( " SELECT adresse FROM bestellung WHERE id = ' $bestellung ' LIMIT 1 " );
$ek = $this -> app -> erp -> GetEinkaufspreisArr ( $data [ 'artikel' ], $data [ 'menge' ], $adresse , $data [ 'waehrung' ]);
if ( $ek ) $data [ 'ab_menge' ] = round ( $ek [ 'ab_menge' ], 8 );
$data [ 'preis' ] = number_format ( round ( $data [ 'preis' ], 8 ), 2 , ',' , '.' );
$data [ 'auchinstammdaten' ] = $this -> app -> User -> GetParameter ( 'bestellung_auchinstammdaten' ) ? 1 : 0 ;
}
echo json_encode ( $data );
$this -> app -> ExitXentral ();
}
if ( $cmd === 'savepreis' )
{
$bpid = ( int ) $this -> app -> Secure -> GetPOST ( 'bp' );
$bpRow = $this -> app -> DB -> SelectRow (
sprintf (
'SELECT artikel, bestellung FROM bestellung_position WHERE id = %d LIMIT 1'
, $bpid
)
);
$artikel = $bpRow [ 'artikel' ];
$preis = str_replace ( ',' , '.' , $this -> app -> Secure -> GetPOST ( 'preis' ));
$auchinstammdaten = $this -> app -> Secure -> GetPOST ( 'auchinstammdaten' );
$this -> app -> User -> SetParameter ( 'bestellung_auchinstammdaten' , $auchinstammdaten );
$waehrung = $this -> app -> Secure -> GetPOST ( 'waehrung' );
$bestellnummer = $this -> app -> Secure -> GetPOST ( 'bestellnummer' );
$bezeichnung = $this -> app -> Secure -> GetPOST ( 'bezeichnung' );
$ab_menge = str_replace ( ',' , '.' , $this -> app -> Secure -> GetPOST ( 'ab_menge' ));
$menge = str_replace ( ',' , '.' , $this -> app -> Secure -> GetPOST ( 'menge' ));
$bestellung = $bpRow [ 'bestellung' ];
// Schreibschutz entfernen
$this -> app -> DB -> Update ( " UPDATE bestellung SET schreibschutz=0 WHERE id=' $bestellung ' LIMIT 1 " );
$bRow = $this -> app -> DB -> SelectRow (
sprintf (
'SELECT schreibschutz, adresse FROM bestellung WHERE id=%d LIMIT 1' ,
( int ) $bestellung
)
);
$schreibschutz = $bRow [ 'schreibschutz' ];
$adresse = $bRow [ 'adresse' ];
if ( ! $schreibschutz )
{
$this -> app -> DB -> Update (
sprintf (
'UPDATE bestellung_position SET preis = %f WHERE id = %d LIMIT 1' ,
( float ) $preis , $bpid
)
);
if (( String ) $bestellnummer !== '' ) {
$this -> app -> DB -> Update (
sprintf (
" UPDATE bestellung_position SET bestellnummer = '%s' WHERE id = %d LIMIT 1 " ,
$bestellnummer , $bpid
)
);
}
if (( String ) $bezeichnung !== '' ) {
$this -> app -> DB -> Update (
sprintf (
" UPDATE bestellung_position SET bezeichnunglieferant = '%s' WHERE id = %d LIMIT 1 " ,
$bezeichnung , $bpid
)
);
}
if ( $menge ) {
$this -> app -> DB -> Update (
sprintf (
" UPDATE bestellung_position SET menge = %f WHERE id = %d LIMIT 1 " ,
( float ) $menge , $bpid
)
);
}
$this -> app -> erp -> ANABREGSNeuberechnen ( $bestellung , 'bestellung' );
}
if ( $auchinstammdaten && $artikel && $adresse )
{
$this -> app -> erp -> AddEinkaufspreis ( $artikel , $ab_menge , $adresse , $bestellnummer , $bezeichnung , $preis , $waehrung );
}
$data = $this -> app -> DB -> SelectRow (
sprintf (
' SELECT id , % s as preis , bestellnummer , trim ( menge ) + 0 as menge
FROM bestellung_position
WHERE id = % d
LIMIT 1 ' ,
$this -> app -> erp -> FormatPreis ( 'preis' ), $bpid
)
);
if ( ! empty ( $data ))
{
$data [ 'menge' ] = round ( $data [ 'menge' ], 8 );
$data [ 'preis' ] .= ' <a href="#" onclick="changepreis' . $this -> app -> Secure -> getPOST ( 'md5' ) . '(' . $bpid . ');"><img src="themes/' . $this -> app -> Conf -> WFconf [ 'defaulttheme' ] . '/images/edit.svg" border="0"></a>' ;
}
echo json_encode ( $data );
$this -> app -> ExitXentral ();
}
$bestRow = $this -> app -> DB -> SelectRow (
sprintf (
' SELECT belegnr , name , status , zahlungsweise , adresse , verbindlichkeiteninfo , preisanfrageid ,
DATE_FORMAT ( gewuenschteslieferdatum , \ ' %% d .%% m .%% Y\ ' ) as gewuenschteslieferdatum , bestellungbestaetigtabnummer ,
DATE_FORMAT ( bestaetigteslieferdatum , \ ' %% d .%% m .%% Y\ ' ) as bestaetigteslieferdatum , datum , projekt
FROM bestellung
WHERE id =% d
LIMIT 1 ' ,
$id
)
);
$belegnr = $bestRow [ 'belegnr' ];
$name = $bestRow [ 'name' ];
$status = $bestRow [ 'status' ];
//$schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM bestellung WHERE id='$id' LIMIT 1");
$zahlweise = $bestRow [ 'zahlungsweise' ];
$bestaetigteslieferdatum = $bestRow [ 'bestaetigteslieferdatum' ];
$wunschlieferdatum = $bestRow [ 'gewuenschteslieferdatum' ];
$ablieferant = $bestRow [ 'bestellungbestaetigtabnummer' ];
$verbindlichkeiteninfo = $bestRow [ 'verbindlichkeiteninfo' ];
$preisanfrageid = $bestRow [ 'preisanfrageid' ];
$preisanfrage = $this -> app -> DB -> Select ( " SELECT belegnr FROM preisanfrage WHERE id = ' $preisanfrageid ' LIMIT 1 " );
$adresse = ( int ) $bestRow [ 'adresse' ];
$lieferantennummer = $this -> app -> DB -> Select ( " SELECT lieferantennummer FROM adresse WHERE id = ' $adresse ' LIMIT 1 " );
$datum = ( int ) $bestRow [ 'datum' ];
$projekt = ( int ) $bestRow [ 'projekt' ];
$this -> app -> Tpl -> Set ( 'VERBINDLICHKEITENINFO' , $verbindlichkeiteninfo );
if ( $belegnr == '0' || $belegnr == '' ) {
$belegnr = 'ENTWURF' ;
}
$this -> app -> Tpl -> Set ( 'BELEGNR' , $belegnr );
$this -> app -> Tpl -> Set ( 'LIEFERANT' , " <a href= \" index.php?module=adresse&action=edit&id= " . $adresse . " \" target= \" _blank \" > " . $lieferantennummer . " </a> " . $name );
$this -> app -> Tpl -> Set ( 'STATUS' , $status );
$this -> app -> Tpl -> Set ( 'ZAHLWEISE' , $zahlweise );
$this -> app -> Tpl -> Set ( 'BESTELLUNGID' , $id );
if ( $preisanfrageid > 0 )
{
$this -> app -> Tpl -> Set ( 'PREISANFRAGE' , '<a href="index.php?module=preisanfrage&action=edit&id=' . $preisanfrageid . '" target="_blank">' . $preisanfrage . '</a> <a href="index.php?module=preisanfrage&action=pdf&id=' . $preisanfrageid . '" target="_blank"><img src="./themes/new/images/pdf.svg" title="Preisanfrage PDF" border="0" target="_blank"></a> <a href="index.php?module=preisanfrage&action=edit&id=' . $preisanfrageid . '" target="_blank"><img src="./themes/new/images/edit.svg" title="Preisanfrage bearbeiten" border="0" target="_blank"></a>' );
}
if ( $bestaetigteslieferdatum == " 00.00.0000 " ) $bestaetigteslieferdatum = " warte auf Datum " ;
$this -> app -> Tpl -> Set ( 'BESTAETIGTESLIEFERDATUM' , $bestaetigteslieferdatum );
if ( $wunschlieferdatum == " 00.00.0000 " ) $wunschlieferdatum = " warte auf Datum " ;
$this -> app -> Tpl -> Set ( 'WUNSCHLIEFERDATUM' , $wunschlieferdatum );
$this -> app -> Tpl -> Set ( 'ABLIEFERANT' , $ablieferant );
$nettogewicht = $this -> app -> erp -> BestellungNettoGewicht ( $id );
if ( $nettogewicht != '' ) {
$nettogewicht = number_format ( $nettogewicht , 2 , ',' , '.' );
$gewichtbezeichnung = $this -> app -> erp -> Firmendaten ( 'gewichtbezeichnung' );
if ( $gewichtbezeichnung == '' ) {
$gewichtbezeichnung = 'Kg' ;
}
$this -> app -> Tpl -> Set ( " GEWICHT " , $nettogewicht . " " . $gewichtbezeichnung );
}
$projektabkuerzung = $this -> app -> DB -> Select ( " SELECT abkuerzung FROM projekt WHERE id=' $projekt ' LIMIT 1 " );
if ( $this -> app -> erp -> RechteVorhanden ( " projekt " , " dashboard " ))
$this -> app -> Tpl -> Set ( 'PROJEKT' , " <a href= \" index.php?module=projekt&action=dashboard&id= " . $projekt . " \" target= \" _blank \" > $projektabkuerzung </a> " );
else
$this -> app -> Tpl -> Set ( 'PROJEKT' , $projekt );
$md5 = md5 ( microtime ( true ));
$table = new EasyTable ( $this -> app );
$anzahlzeichen = 200 ;
$artikelIdList = [];
$artikelArr = $this -> app -> DB -> SelectArr ( sprintf ( 'SELECT DISTINCT artikel FROM bestellung_position WHERE bestellung = %d' , $id ));
if ( ! empty ( $artikelArr ))
{
foreach ( $artikelArr as $row )
{
$artikelIdList [] = $row [ 'artikel' ];
}
}
$table -> Query ( " SELECT CONCAT(SUBSTRING(ap.bezeichnunglieferant,1, $anzahlzeichen ),'<br>Best-Nr.:<span id= \" spanbestellnummer " . $md5 . " ',ap.id,' \" >',ap.bestellnummer,'</span>') as artikel,
CONCAT ( '<a href=\"index.php?module=artikel&action=edit&id=' , a . id , '\" target=\"_blank\">' , a . nummer , '</a>' ) as nummer ,
CONCAT ( '<span id=\"spanmenge".$md5."' , ap . id , '\">' ,( TRIM ( ap . menge ) + 0 ), '</span>' ) as Menge ,
TRIM ( ap . geliefert ) + 0 as geliefert ,
IF ( a . lagerartikel = 1 , CONCAT ( " . $this->app ->erp->FormatMenge('IFNULL(lag.menge,0)'). " , 'lagermehr(' , ap . artikel , ')' ), '-' ) as Lager ,
if ( ap . lieferdatum != '0000-00-00' , DATE_FORMAT ( ap . lieferdatum , '%d.%m.%Y' ), 'sofort' ) as lieferdatum ,
concat ( '<span id=\"spanpreis".$md5."' , ap . id , '\">' , FORMAT ( ap . preis , 2 , 'de_DE' ), ' " .
" <a href= \" # \" onclick= \" changepreis " . $md5 . " (',ap.id,'); \" ><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> "
. " ','</span>') as preis
FROM bestellung_position AS ap
INNER JOIN artikel AS a ON ap . artikel = a . id
LEFT JOIN (
SELECT SUM ( lpi . menge ) as menge , lpi . artikel
FROM lager_platz_inhalt AS lpi
INNER JOIN lager_platz AS lp ON lpi . lager_platz = lp . id AND IFNULL ( lp . sperrlager , 0 ) = 0 AND IFNULL ( lp . autolagersperre , 0 ) = 0
" .(!empty( $artikelIdList )?' AND lpi.artikel IN ('.implode(',', $artikelIdList ).')':''). "
GROUP BY lpi . artikel
) as lag ON a . id = lag . artikel
WHERE ap . bestellung = '$id'
ORDER by ap . sort " );
foreach ( $table -> datasets as $tablerowKey => $tableRow )
{
foreach ( $tableRow as $columName => $columnValue )
{
if ( preg_match_all ( '/^(.*)lagermehr\((.*)\)(.*)$/' , $columnValue , $matches , PREG_OFFSET_CAPTURE ))
{
$table -> datasets [ $tablerowKey ][ $columName ] = $matches [ 1 ][ 0 ][ 0 ] . ' ' . $this -> app -> YUI -> ContentTooltip ( 'return' , 'index.php?module=auftrag&action=minidetail&cmd=lager&id=' . $matches [ 2 ][ 0 ][ 0 ], 'url' ) . $matches [ 3 ][ 0 ][ 0 ];
}
}
}
foreach ( $table -> datasets as $k => $row )
{
if ( strip_tags ( $table -> datasets [ $k ][ 'geliefert' ]) == strip_tags ( $table -> datasets [ $k ][ 'Menge' ]))
{
$table -> datasets [ $k ][ 'geliefert' ] = '<b>' . $table -> datasets [ $k ][ 'geliefert' ] . '</b>' ;
$table -> datasets [ $k ][ 'Menge' ] = '<b>' . $table -> datasets [ $k ][ 'Menge' ] . '</b>' ;
} else {
$table -> datasets [ $k ][ 'geliefert' ] = '<b style="color:red;">' . $table -> datasets [ $k ][ 'geliefert' ] . '</b>' ;
$table -> datasets [ $k ][ 'Menge' ] = '<b style="color:red;">' . $table -> datasets [ $k ][ 'Menge' ] . '</b>' ;
}
$table -> datasets [ $k ][ 'preis' ] = '<div style="float:right;text-align:right;"><b>' . $table -> datasets [ $k ][ 'preis' ];
if ( preg_match ( " /&id=([0-9]*)/ " , $row [ 'nummer' ], $treffer )){
$artid = ( int ) $treffer [ 1 ];
if ( $epreise = $this -> app -> DB -> SelectArr ( " SELECT ab_menge, preis FROM einkaufspreise WHERE artikel=' " . $artid . " ' AND adresse=' $adresse ' AND (gueltig_bis>=' " . $datum . " ' OR gueltig_bis='0000-00-00') and (preis_anfrage_vom = '0000-00-00' or preis_anfrage_vom <= ' " . $datum . " ') and ab_menge > " . ( int ) strip_tags ( $row [ 'Menge' ]) . " order by ab_menge " ))
{
$table -> datasets [ $k ][ 'preis' ] .= '</b> <br /><table style="float:right;">' ;
foreach ( $epreise as $key => $pr )
{
$table -> datasets [ $k ][ 'preis' ] .= " <tr style= \" background-color: transparent;text-align:right; \" ><td><small>( " . floatval ( $pr [ 'ab_menge' ]) . " :</small></td><td><small> " . number_format ( $pr [ 'preis' ], 2 , ',' , '.' ) . " )</small></td></tr> " ;
}
$table -> datasets [ $k ][ 'preis' ] .= '</table>' ;
}
} else {
$table -> datasets [ $k ][ 'preis' ] .= '</b>' ;
}
$table -> datasets [ $k ][ 'preis' ] .= " </div> " ;
}
$check = $this -> app -> DB -> SelectArr ( " SELECT a.belegnr, a.id
FROM auftrag_position ap
INNER JOIN auftrag a ON ap . auftrag = a . id
INNER JOIN bestellung_position bp ON ap . id = bp . auftrag_position_id
WHERE bp . bestellung = '$id' GROUP BY a . belegnr , a . id ORDER BY a . belegnr , a . id " );
if ( $check )
{
$auftraege = null ;
$lieferscheine = [];
$rechnungen = [];
foreach ( $check as $row )
{
$auftraege [] = '<a href="index.php?module=auftrag&action=edit&id=' . $row [ 'id' ] . '" target="_blank">' . ( $row [ 'belegnr' ] ? $row [ 'belegnr' ] : 'Entwurf' ) . ' </ a >
< a href = " index.php?module=auftrag&action=pdf&id='. $row['id'] .' " target = " _blank " >< img src = " ./themes/new/images/pdf.svg " title = " Auftrag PDF " border = " 0 " ></ a >
< a href = " index.php?module=auftrag&action=edit&id='. $row['id'] .' " target = " _blank " >< img src = " ./themes/new/images/edit.svg " title = " Auftrag bearbeiten " border = " 0 " ></ a > ' ;
$lieferscheineTemp = $this -> app -> DB -> SelectPairs (
" SELECT
l . id ,
CONCAT (
'<a href=\"index.php?module=lieferschein&action=edit&id=' ,
l . id , '\" target=\"_blank\"' ,
if ( l . status = 'storniert' , ' title=\"Lieferschein storniert\"><s>' , '>' ),
if ( l . belegnr = '0' OR l . belegnr = '' , 'ENTWURF' , l . belegnr ),
if ( l . status = 'storniert' , '</s>' , '' ),
'</a> <a href=\"index.php?module=lieferschein&action=pdf&id=' , l . id ,
' \ " target= \" _blank \" ><img src= \" ./themes/new/images/pdf.svg \" title= \" Lieferschein PDF \" border= \" 0 \" ></a>
< a href = \ " index.php?module=lieferschein&action=edit&id=',
l . id ,
'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Lieferschein bearbeiten\" border=\"0\"></a>'
) as lieferschein
FROM lieferschein l
WHERE l . auftragid = '".$row[' id ']."' "
);
if ( ! empty ( $lieferscheineTemp )){
foreach ( $lieferscheineTemp as $k => $v ){
$lieferscheine [ $k ] = $v ;
}
}
$rechnungenTemp = $this -> app -> DB -> SelectPairs (
" SELECT
r . id ,
CONCAT (
'<a href=\"index.php?module=rechnung&action=edit&id=' ,
r . id ,
'\" target=\"_blank\"' ,
if ( r . status = 'storniert' , ' title=\"Rechnung storniert\"><s>' , '>' ),
if ( r . belegnr = '0' OR r . belegnr = '' , 'ENTWURF' , r . belegnr ),
if ( r . status = 'storniert' , '</s>' , '' ),
'</a> <a href=\"index.php?module=rechnung&action=pdf&id=' ,
r . id ,
' \ " target= \" _blank \" ><img src= \" ./themes/new/images/pdf.svg \" title= \" Rechnung PDF \" border= \" 0 \" ></a>
< a href = \ " index.php?module=rechnung&action=edit&id=',
r . id ,
'\" target=\"_blank\"><img src=\"./themes/new/images/edit.svg\" title=\"Rechnung bearbeiten\" border=\"0\"></a>'
) as rechnung
FROM rechnung r
WHERE r . auftragid = '".$row[' id ']."' "
);
if ( ! empty ( $rechnungenTemp )){
foreach ( $rechnungenTemp as $k => $v ){
$rechnungen [ $k ] = $v ;
}
}
}
if ( ! empty ( $auftraege )){
$this -> app -> Tpl -> Set ( 'AUFTRAG' , implode ( '<br />' , $auftraege ));
}
if ( ! empty ( $lieferscheine )){
$this -> app -> Tpl -> Set ( 'LIEFERSCHEIN' , implode ( '<br />' , $lieferscheine ));
}
if ( ! empty ( $rechnungen )){
$this -> app -> Tpl -> Set ( 'RECHNUNG' , implode ( '<br />' , $rechnungen ));
}
}
// $nowarp-Parameter (letzter Parameter) auf false setzen, damit lange Artikeltitel umbrechen können
$artikel = $table -> DisplayNew ( " return " , " Preis " , " noAction " , false , 0 , 0 , false );
if ( $menu )
{
$menu = $this -> BestellungIconMenu ( $id );
$this -> app -> Tpl -> Set ( 'MENU' , $menu );
}
$this -> app -> Tpl -> Set ( 'ARTIKEL' , $artikel );
$tmp = new EasyTable ( $this -> app );
$tmp -> Query ( " SELECT zeit,bearbeiter,grund FROM bestellung_protokoll WHERE bestellung=' $id ' ORDER by id DESC " );
$tmp -> DisplayNew ( 'PROTOKOLL' , " Protokoll " , " noAction " );
$this -> app -> Tpl -> Set ( 'RECHNUNGLIEFERADRESSE' , $this -> BestellungRechnungsLieferadresse ( $id ));
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Dokumentenliste = $Brief -> getArchivedFiles ( $id , 'bestellung' );
if ( ! empty ( $Dokumentenliste ))
{
$tmp3 = new EasyTable ( $this -> app );
$tmp3 -> headings = array ( 'Datum' , 'Belegnr' , 'Bearbeiter' , 'Menü' );
foreach ( $Dokumentenliste as $k => $v )
{
if ( ! $v [ 'erstesoriginal' ])
{
$tmpr [ 'datum' ] = date ( 'd.m.Y H:i:s' , strtotime ( $v [ 'zeitstempel' ]));
$tmpr [ 'belegnr' ] = str_replace ( '.pdf' , '' , $v [ 'file' ]);
$tmpr [ 'belegnr' ] = substr ( $tmpr [ 'belegnr' ], strrpos ( $tmpr [ 'belegnr' ], '_' ) + 1 );
if ( isset ( $v [ 'belegnummer' ]) && $v [ 'belegnummer' ]) {
$tmpr [ 'belegnr' ] = $v [ 'belegnummer' ];
}
$tmpr [ 'bearbeiter' ] = $v [ 'bearbeiter' ];
$tmpr [ 'menu' ] = '<a href="index.php?module=bestellung&action=pdffromarchive&id=' . $v [ 'id' ] . '"><img src="themes/' . $this -> app -> Conf -> WFconf [ 'defaulttheme' ] . '/images/pdf.svg" /></a>' ;
$tmp3 -> datasets [] = $tmpr ;
}
}
$tmp3 -> DisplayNew ( 'PDFARCHIV' , 'Menü' , " noAction " );
}
$wareneingangsbelege = $this -> app -> DB -> SelectFirstCols ( " SELECT
CONCAT ( '<a href=\"index.php?module=receiptdocument&action=edit&id=' , r . id , '\" target=\"_blank\"' , if ( r . status = 'storniert' , ' title=\"Wareneingangsbeleg storniert\"><s>' , '>' ), if ( r . document_number = '0' OR document_number = '' , 'ENTWURF' , r . document_number ), if ( r . status = 'storniert' , '</s>' , '' ), '</a> <a href=\"index.php?module=receiptdocument&action=pdf&id=' , r . id , ' \ " target= \" _blank \" ><img src= \" ./themes/new/images/pdf.svg \" title= \" Wareneingangsbeleg PDF \" border= \" 0 \" ></a>
< a href = \ " index.php?module=receiptdocument&action=edit&id=',r.id,' \" target= \" _blank \" ><img src= \" ./themes/new/images/edit.svg \" title= \" Wareneingangsbeleg bearbeiten \" border= \" 0 \" ></a>') as wareneingangsbeleg
FROM receiptdocument r WHERE r . supplier_order_id = '$id' " );
if ( ! empty ( $wareneingangsbelege )){
$this -> app -> Tpl -> Add ( 'WARENEINGANGSBELEG' , implode ( '<br />' , $wareneingangsbelege ));
}
else {
$this -> app -> Tpl -> Set ( 'WARENEINGANGSBELEG' , '-' );
}
$this -> app -> Tpl -> Set ( 'ID' , $id );
$this -> app -> Tpl -> Set ( 'MD5' , $md5 );
$this -> app -> Tpl -> Parse ( 'ARTIKEL' , 'bestellung_minidetail_popup.tpl' );
if ( $parsetarget == '' )
{
$this -> app -> Tpl -> Output ( " bestellung_minidetail.tpl " );
$this -> app -> ExitXentral ();
}
$this -> app -> Tpl -> Parse ( $parsetarget , " bestellung_minidetail.tpl " );
}
function BestellungAlsversendet ( $id = 0 )
{
if ( $id )
{
$intern = true ;
} else {
$intern = false ;
$id = $this -> app -> Secure -> GetGET ( 'id' );
}
if ( $id > 0 )
{
$this -> app -> DB -> Update ( " UPDATE bestellung SET status='versendet' WHERE id=' $id ' LIMIT 1 " );
$this -> app -> erp -> BestellungProtokoll ( $id , " Bestellung als versendet markiert " );
}
if ( $intern ) {
return ;
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" info \" >Die Bestellung wurde als versendet markiert!</div> " );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=list&msg=' . $msg );
}
function BestellungAbschliessen ( $id = 0 , $auto = false )
{
if ( $id )
{
$intern = true ;
} else {
$intern = false ;
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
}
if ( $id > 0 )
{
$this -> app -> DB -> Update ( " UPDATE bestellung SET status='abgeschlossen',schreibschutz=1 WHERE id=' $id ' LIMIT 1 " );
$this -> app -> DB -> Update ( " UPDATE verbindlichkeit SET freigabe='1' WHERE bestellung=' $id ' " );
$this -> app -> erp -> BestellungProtokoll ( $id , 'Bestellung ' . ( $auto ? 'automatisch ' : '' ) . 'abgeschlossen' );
$this -> app -> erp -> RunHook ( " bestellung_abschliessen " , 1 , $id );
}
if ( $intern ) {
return ;
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" info \" >Die Bestellung wurde als abgeschlossen markiert!</div> " );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=list&msg=' . $msg );
}
function BestellungFreigegeben ( $id = '' )
{
if ( $id <= 0 ){
$intern = false ;
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
} else {
$intern = true ;
}
if ( $id )
{
if ( $this -> app -> DB -> Select ( " SELECT id FROM bestellung WHERE status = 'abgeschlossen' AND id = ' $id ' LIMIT 1 " ))
{
$this -> app -> DB -> Update ( " UPDATE bestellung SET status = 'freigegeben', schreibschutz = 0 WHERE id = ' $id ' LIMIT 1 " );
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error2 \" >Die Bestellung wurde auf freigegeben gesetzt!</div> " );
} else {
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Die Bestellung ist nicht abgeschlossen!</div> " );
}
} else {
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Es wurde keine Bestellung angeben!</div> " );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=list&msg=' . $msg );
}
if ( $intern )
{
return $id ;
}
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id . '&msg=' . $msg );
}
function BestellungFreigabe ( $id = '' )
{
if ( $id <= 0 )
{
$intern = false ;
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$freigabe = $this -> app -> Secure -> GetGET ( 'freigabe' );
$weiter = $this -> app -> Secure -> GetPOST ( 'weiter' );
$this -> app -> Tpl -> Set ( 'TABTEXT' , 'Freigabe' );
} else {
$intern = true ;
$freigabe = $intern ;
}
$allowedFrm = true ;
$showDefault = true ;
$doctype = 'bestellung' ;
if ( empty ( $intern )){
$this -> app -> erp -> RunHook ( 'beleg_freigabe' , 4 , $doctype , $id , $allowedFrm , $showDefault );
}
if ( $weiter != '' )
{
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=abschicken&id=' . $id );
}
if ( $allowedFrm && $freigabe == $id )
{
//$projekt = $this->app->DB->Select("SELECT projekt FROM bestellung WHERE id='$id' LIMIT 1");
$belegnr = $this -> app -> DB -> Select ( " SELECT belegnr FROM bestellung WHERE id=' $id ' LIMIT 1 " );
if ( $belegnr == '' )
{
$this -> app -> erp -> BelegFreigabe ( 'bestellung' , $id );
if ( $intern ) {
return 1 ;
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error2 \" >Die Bestellung wurde freigegeben und kann jetzt versendet werden!</div> " );
$this -> app -> Location -> execute ( " index.php?module=bestellung&action=edit&id= $id &msg= $msg " );
}
if ( $intern ) {
return 0 ;
}
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Die Bestellung wurde bereits freigegeben!</div> " );
$this -> app -> Location -> execute ( " index.php?module=bestellung&action=edit&id= $id &msg= $msg " );
}
if ( $showDefault ){
$name = $this -> app -> DB -> Select ( " SELECT a.name FROM bestellung b LEFT JOIN adresse a ON a.id=b.adresse WHERE b.id=' $id ' LIMIT 1 " );
$summe = $this -> app -> DB -> Select ( " SELECT SUM(menge*preis) FROM bestellung_position
WHERE bestellung = '$id' " );
$waehrung = $this -> app -> DB -> Select ( " SELECT waehrung FROM bestellung_position
WHERE bestellung = '$id' LIMIT 1 " );
$summe = $this -> app -> erp -> EUR ( $summe );
$extra = $this -> app -> erp -> CheckboxEntwurfsmodus ( " bestellung " , $id );
if ( $this -> app -> erp -> Firmendaten ( " oneclickrelease " ) == " 1 " && $extra == " " )
{
$this -> app -> Location -> execute ( " index.php?module=bestellung&action=freigabe&id= $id &freigabe= $id " );
} else {
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Soll die Bestellung an <b> $name </b> im Wert von <b> $summe $waehrung </b>
jetzt freigegeben werden ? < input type = \ " button \" class= \" btnImportantLarge \" value= \" Jetzt freigeben \" onclick= \" window.location.href='index.php?module=bestellung&action=freigabe&id= $id &freigabe= $id ' \" > $extra
</ div > " );
}
}
$this -> BestellungMenu ();
$this -> app -> Tpl -> Parse ( 'PAGE' , 'tabview.tpl' );
}
function BestellungCopy ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$newid = $this -> app -> erp -> CopyBestellung ( $id );
$this -> app -> Location -> execute ( 'Location: index.php?module=bestellung&action=edit&id=' . $newid );
}
function AdresseBestellungCopy ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$newid = $this -> app -> erp -> CopyBestellung ( $id );
echo json_encode ( array ( 'status' => 1 , 'newid' => $newid ));
$this -> app -> ExitXentral ();
}
function BestellungLiveTabelle ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$status = $this -> app -> DB -> Select ( " SELECT status FROM bestellung WHERE id=' $id ' LIMIT 1 " );
$table = new EasyTable ( $this -> app );
if ( $status === 'freigegeben' )
{
$anzahlzeichen = 200 ;
$table -> Query ( " SELECT SUBSTRING(ap.bezeichnung,1, $anzahlzeichen ) as artikel, ap.nummer as Nummer, ap.menge as M,
if ( a . porto , '-' , if (( SELECT SUM ( l . menge ) FROM lager_platz_inhalt l WHERE l . artikel = ap . artikel ) > ap . menge ,( SELECT SUM ( l . menge ) FROM lager_platz_inhalt l WHERE l . artikel = ap . artikel ),
if (( SELECT SUM ( l . menge ) FROM lager_platz_inhalt l WHERE l . artikel = ap . artikel ) > 0 , CONCAT ( '<font color=red><b>' ,( SELECT SUM ( l . menge ) FROM lager_platz_inhalt l WHERE l . artikel = ap . artikel ), '</b></font>' ),
'<font color=red><b>aus</b></font>' ))) as L
FROM bestellung_position ap , artikel a WHERE ap . bestellung = '$id' AND a . id = ap . artikel " );
$artikel = $table -> DisplayNew ( " return " , " A " , " noAction " );
} else {
$table -> Query ( " SELECT SUBSTRING(ap.bezeichnung,1, $anzahlzeichen ) as artikel, ap.nummer as Nummer, ap.menge as M
FROM bestellung_position ap , artikel a WHERE ap . bestellung = '$id' AND a . id = ap . artikel " );
$artikel = $table -> DisplayNew ( " return " , " Menge " , " noAction " );
}
echo $artikel ;
$this -> app -> ExitXentral ();
}
function BestellungAuftrag ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
$newid = $this -> app -> erp -> WeiterfuehrenBestellungZuAuftrag ( $id );
$this -> app -> Location -> execute ( 'index.php?module=auftrag&action=edit&id=' . $newid );
}
function BestellungAbschicken ()
{
$this -> BestellungMenu ();
$this -> app -> erp -> DokumentAbschicken ();
}
function BestellungDelete ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$belegnr = $this -> app -> DB -> Select ( " SELECT belegnr FROM bestellung WHERE id=' $id ' LIMIT 1 " );
$name = $this -> app -> DB -> Select ( " SELECT name FROM bestellung WHERE id=' $id ' LIMIT 1 " );
$status = $this -> app -> DB -> Select ( " SELECT status FROM bestellung WHERE id=' $id ' LIMIT 1 " );
if ( $belegnr == '0' || $belegnr == '' )
{
$this -> app -> erp -> DeleteBestellung ( $id );
$belegnr = 'ENTWURF' ;
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Die Bestellung \" $name\ " ( $belegnr ) wurde gel & ouml ; scht !</ div > " );
//header("Location: ".$_SERVER['HTTP_REFERER']."&msg=$msg");
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=list&msg=' . $msg );
}
if ( $status === 'storniert' )
{
$maxbelegnr = $this -> app -> DB -> Select ( " SELECT MAX(belegnr) FROM bestellung " );
if ( 0 ) //$maxbelegnr == $belegnr)
{
$this -> app -> DB -> Delete ( " DELETE FROM bestellung_position WHERE bestellung=' $id ' " );
$this -> app -> DB -> Delete ( " DELETE FROM bestellung_protokoll WHERE bestellung=' $id ' " );
$this -> app -> DB -> Delete ( " DELETE FROM bestellung WHERE id=' $id ' " );
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Rechnung \" $name\ " ( $belegnr ) wurde ge & ouml ; scht !</ div > " );
} else
{
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Bestellung \" $name\ " ( $belegnr ) kann nicht storniert werden da sie bereits storniert ist !</ div > " );
}
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=list&msg=' . $msg );
}
$this -> app -> DB -> Update ( " UPDATE bestellung SET status='storniert' WHERE id=' $id ' LIMIT 1 " );
$this -> app -> erp -> BestellungProtokoll ( $id , " Bestellung storniert " );
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Die Bestellung \" $name\ " ( $belegnr ) wurde storniert !</ div > " );
$this -> app -> Location -> execute ( " Location: index.php?module=bestellung&action=list&msg= $msg #tabs-1 " );
}
function BestellungProtokoll ()
{
$this -> BestellungMenu ();
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$this -> app -> Tpl -> Set ( 'TABTEXT' , 'Protokoll' );
$tmp = new EasyTable ( $this -> app );
$tmp -> Query ( " SELECT zeit,bearbeiter,grund FROM bestellung_protokoll WHERE bestellung= $id ORDER by zeit DESC " );
$tmp -> DisplayNew ( 'TAB1' , 'Protokoll' , 'noAction' );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'tabview.tpl' );
}
function BestellungInlinePDF ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$frame = $this -> app -> Secure -> GetGET ( 'frame' );
if ( $frame != '' ) {
$file = urlencode ( '../../../../index.php?module=bestellung&action=inlinepdf&id=' . $id );
echo " <iframe width= \" 100% \" height= \" 100% \" style= \" height:calc(100vh - 110px) \" src= \" ./js/production/generic/web/viewer.html?file= $file\ " ></ iframe > " ;
$this -> app -> ExitXentral ();
}
$projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id= $id LIMIT 1 " );
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $id );
$Brief -> inlineDocument ();
}
function BestellungPDF ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
//$belegnr = $this->app->DB->Select("SELECT belegnr FROM bestellung WHERE id='$id' LIMIT 1");
$projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id=' $id ' LIMIT 1 " );
// if(is_numeric($belegnr) && $belegnr!=0)
{
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $id );
$Brief -> displayDocument ();
} //else
// $this->app->Tpl->Set(MESSAGE,"<div class=\"error\">Noch nicht freigegebene Bestellungen können nicht als PDF betrachtet werden.!</div>");
$this -> BestellungList ();
}
function BestellungMenu ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$bestellungRow = $this -> app -> DB -> SelectRow ( sprintf ( 'SELECT belegnr, name,status FROM bestellung WHERE id=%d LIMIT 1' , $id ));
$belegnr = ! empty ( $bestellungRow ) ? $bestellungRow [ 'belegnr' ] : '' ;
$name = ! empty ( $bestellungRow ) ? $bestellungRow [ 'name' ] : '' ;
$this -> app -> erp -> BestellungNeuberechnen ( $id );
if ( $belegnr == '0' || $belegnr == '' ) {
$belegnr = '(Entwurf)' ;
}
$this -> app -> Tpl -> Set ( 'KURZUEBERSCHRIFT2' , " $name Bestellung $belegnr " );
$status = ! empty ( $bestellungRow ) ? $bestellungRow [ 'status' ] : '' ;
if ( $status === " angelegt " )
{
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=freigabe&id= $id " , " Freigabe " );
}
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=edit&id= $id " , " Details " );
if ( $status === 'bestellt' )
{
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=wareneingang&id= $id " , " Wareneingang<br>Rückstände " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=wareneingang&id= $id " , " Mahnstufen " );
}
// $this->app->erp->MenuEintrag("index.php?module=bestellung&action=abschicken&id=$id","Abschicken / Protokoll");
// $this->app->erp->MenuEintrag("index.php?module=bestellung&action=protokoll&id=$id","Protokoll");
$anzahldateien = $this -> app -> erp -> AnzahlDateien ( " Bestellung " , $id );
if ( $anzahldateien > 0 ) $anzahldateien = " ( " . $anzahldateien . " ) " ; else $anzahldateien = " " ;
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=dateien&id= $id " , " Dateien " . $anzahldateien );
if ( $this -> app -> erp -> Firmendaten ( 'auftrag_eantab' ) == '1' ){
$this -> app -> erp -> MenuEintrag ( 'index.php?module=bestellung&action=ean&id=' . $id , 'Barcodescanner' );
}
if ( $this -> app -> Secure -> GetGET ( " action " ) === " abschicken " )
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=edit&id= $id " , " Zurück zur Bestellung " );
else
{
$backlink = $this -> app -> Secure -> GetGET ( 'backlink' );
// Prüfen ob Backlink mit index.php? beginnt; ansonsten ist Open Redirect möglich
if ( ! empty ( $backlink ) && strpos ( $backlink , 'index.php?' ) !== 0 ){
unset ( $backlink );
}
if ( $backlink )
{
$this -> app -> erp -> MenuEintrag ( $backlink , " Zurück zur Übersicht " );
} else {
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=list " , " Zurück zur Übersicht " );
}
}
$this -> app -> erp -> RunMenuHook ( 'bestellung' );
$this -> app -> Tpl -> Parse ( 'MENU' , " bestellung_menu.tpl " );
}
function BestellungDateien ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$this -> BestellungMenu ();
$this -> app -> Tpl -> Add ( 'UEBERSCHRIFT' , " (Dateien) " );
$this -> app -> YUI -> DateiUpload ( 'PAGE' , " Bestellung " , $id );
}
function BestellungPositionen ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$this -> app -> erp -> AuftragNeuberechnen ( $id );
$this -> app -> YUI -> AARLGPositionen ( false );
}
function CopyBestellungPosition ()
{
$this -> app -> YUI -> SortListEvent ( " copy " , " bestellung_position " , " bestellung " );
$this -> BestellungPositionen ();
}
function DelBestellungPosition ()
{
$this -> app -> YUI -> SortListEvent ( " del " , " bestellung_position " , " bestellung " );
$this -> BestellungPositionen ();
}
function UpBestellungPosition ()
{
$this -> app -> YUI -> SortListEvent ( " up " , " bestellung_position " , " bestellung " );
$this -> BestellungPositionen ();
}
function DownBestellungPosition ()
{
$this -> app -> YUI -> SortListEvent ( " down " , " bestellung_position " , " bestellung " );
$this -> BestellungPositionen ();
}
function BestellungPositionenEditPopup ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
// nach page inhalt des dialogs ausgeben
$filename = " widgets/widget.bestellung_position_custom.php " ;
if ( is_file ( $filename ))
{
include_once ( $filename );
$widget = new WidgetBestellung_positionCustom ( $this -> app , 'PAGE' );
} else {
$widget = new WidgetBestellung_position ( $this -> app , 'PAGE' );
}
$sid = $this -> app -> DB -> Select ( " SELECT bestellung FROM bestellung_position WHERE id=' $id ' LIMIT 1 " );
$widget -> form -> SpecialActionAfterExecute ( " close_refresh " ,
" index.php?module=bestellung&action=positionen&id= $sid " );
$widget -> Edit ();
$this -> app -> BuildNavigation = false ;
}
function BestellungIconMenu ( $id , $prefix = " " )
{
$supplierOrder = $this -> app -> DB -> SelectRow ( " SELECT status, belegnr FROM bestellung WHERE id=' $id ' LIMIT 1 " );
$status = $supplierOrder [ 'status' ];
$belegnr = $supplierOrder [ 'belegnr' ];
$freigegeben = '' ;
if ( $status == " angelegt " || $status == " " )
$freigabe = " <option value= \" freigabe \" >Bestellung freigeben</option> " ;
if ( $status != " angelegt " && $status != " abgeschlossen " )
$abschliessen = " <option value= \" abschliessen \" >Bestellung abschliessen</option> " ;
$einlagern = '' ;
if (( $status === 'versendet' || $status === 'freigegeben' )
&& $this -> app -> erp -> RechteVorhanden ( " bestellung " , " einlagern " )
&& $this -> app -> DB -> Select ( " SELECT id FROM bestellung_position WHERE bestellung = ' $id ' AND geliefert < menge LIMIT 1 " )) {
$standardlager = $this -> app -> DB -> Select ( " SELECT kurzbezeichnung FROM lager_platz WHERE geloescht <> 1 AND sperrlager <> 1 AND poslager <> 1 ORDER BY id LIMIT 1 " );
$nichtlager = $this -> app -> DB -> Select ( " SELECT art.id FROM bestellung_position bp INNER JOIN artikel art ON bp.artikel = art.id WHERE bp.bestellung = ' $id ' AND art.porto <> 1 AND lagerartikel <> 1 AND stueckliste <> 1 LIMIT 1 " );
if ( $nichtlager ) {
$standardlager .= ' (Achtung Es gibt Positionen die keine Lagerartikel sind, diese werden nicht eingelagert)' ;
}
$einlagern = '<option value="einlagern">Bestellung einlagern</option>' ;
}
if ( $status === 'abgeschlossen' ) {
$freigegeben = " <option value= \" freigegeben \" >als freigegeben markieren</option> " ;
}
if ( $status === 'abgeschlossen' || $status == " freigegeben " )
$alsversendet = " <option value= \" alsversendet \" >als versendet markieren</option> " ;
if ( $status == " storniert " )
$storno = " <option value= \" unstorno \" >Bestellung Storno rückgängig</option> " ;
else if ( $status != " storniert " )
$storno = " <option value= \" storno \" >Bestellung stornieren</option> " ;
if ( $this -> app -> erp -> RechteVorhanden ( 'belegeimport' , 'belegcsvexport' ))
{
$casebelegeimport = " case 'belegeimport': window.location.href='index.php?module=belegeimport&action=belegcsvexport&cmd=bestellung&id=%value%'; break; " ;
$optionbelegeimport = " <option value= \" belegeimport \" >Export als CSV</option> " ;
}
$hookoption = '' ;
$hookcase = '' ;
$this -> app -> erp -> RunHook ( " Bestellung_Aktion_option " , 3 , $id , $status , $hookoption );
$this -> app -> erp -> RunHook ( " Bestellung_Aktion_case " , 3 , $id , $status , $hookcase );
$abschliessentext = '{|Wirklich abschliessen?|}' ;
if ( $this -> app -> DB -> Select ( " SELECT id FROM bestellung_position WHERE bestellung = ' $id ' AND mengemanuellgeliefertaktiviert = 0 AND geliefert < menge LIMIT 1 " ))
$abschliessentext = " { |Zu dieser Bestellung gibt es noch offene Postitionen, möchten Sie diese wirklich als abgeschlossen markieren? Eine Warenannahme ist dann nicht mehr möglich für diese Bestellung.|} " ;
$menu = "
< script type = \ " text/javascript \" >
function onchangebestellung ( cmd )
{
switch ( cmd )
{
case 'storno' : if ( ! confirm ( 'Wirklich stornieren?' )) return document . getElementById ( 'aktion$prefix' ) . selectedIndex = 0 ; else window . location . href = 'index.php?module=bestellung&action=delete&id=%value%' ; break ;
case 'unstorno' : if ( ! confirm ( 'Wirklich stornierte Bestellung wieder freigeben?' )) return document . getElementById ( 'aktion$prefix' ) . selectedIndex = 0 ; else window . location . href = 'index.php?module=bestellung&action=undelete&id=%value%' ; break ;
case 'copy' : if ( ! confirm ( 'Wirklich kopieren?' )) return document . getElementById ( 'aktion$prefix' ) . selectedIndex = 0 ; else window . location . href = 'index.php?module=bestellung&action=copy&id=%value%' ; break ;
case 'pdf' : window . location . href = 'index.php?module=bestellung&action=pdf&id=%value%' ; document . getElementById ( 'aktion$prefix' ) . selectedIndex = 0 ; break ;
case 'abschicken' : " . $this->app ->erp->DokumentAbschickenPopup(). " break ;
case 'freigabe' : window . location . href = 'index.php?module=bestellung&action=freigabe&id=%value%' ; break ;
case 'alsversendet' : window . location . href = 'index.php?module=bestellung&action=alsversendet&id=%value%' ; break ;
case 'freigegeben' : if ( ! confirm ( 'Wirklich auf freigegeben setzen?' )) return document . getElementById ( 'aktion$prefix' ) . selectedIndex = 0 ; else window . location . href = 'index.php?module=bestellung&action=freigegeben&id=%value%' ; break ;
case 'abschliessen' : if ( ! confirm ( '$abschliessentext' )) return document . getElementById ( 'aktion$prefix' ) . selectedIndex = 0 ; else window . location . href = 'index.php?module=bestellung&action=abschliessen&id=%value%' ; break ;
case 'einlagern' : if ( ! confirm ( 'Wirklich einlagern? Die Artikel werden in den voreingestellten Lagerplätzen eingelagert andersfalls in das Lager $standardlager' )) return document . getElementById ( 'aktion$prefix' ) . selectedIndex = 0 ; else window . location . href = 'index.php?module=bestellung&action=einlagern&id=%value%' ; break ;
$hookcase
$casebelegeimport
}
}
</ script >
& nbsp ; Aktion :& nbsp ; < select id = \ " aktion $prefix\ " onchange = \ " onchangebestellung(this.value); \" >
< option > bitte w & auml ; hlen ...</ option >
$storno
< option value = \ " copy \" >Bestellung kopieren</option>
< option value = \ " abschicken \" >Bestellung abschicken</option>
$freigabe
$alsversendet
$freigegeben
$abschliessen
$einlagern
$hookoption
$optionbelegeimport
< option value = \ " pdf \" >PDF öffnen</option>
</ select >& nbsp ;
< a href = \ " index.php?module=bestellung&action=pdf&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/pdf.svg \" ></a>
<!-- < a href = \ " index.php?module=bestellung&action=edit&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/edit.svg \" ></a>
< a onclick = \ " if(!confirm('Wirklich stornieren?')) return false; else window.location.href='index.php?module=bestellung&action=delete&id=%value%'; \" >
< img src = \ " ./themes/new/images/delete.svg \" border= \" 0 \" ></a>
< a onclick = \ " if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=bestellung&action=copy&id=%value%'; \" >
< img src = \ " ./themes/new/images/copy.svg \" border= \" 0 \" ></a>
< a onclick = \ " if(!confirm('Wirklich Auftrag abschicken?')) return false; else window.location.href='index.php?module=bestellung&action=abschicken&id=%value%'; \" >
< img src = \ " ./themes/new/images/lieferung.png \" border= \" 0 \" alt= \" Auftrag abeschicken \" ></a>--> " ;
//$tracking = $this->AuftragTrackingTabelle($id);
$menu = str_replace ( '%value%' , $id , $menu );
return $menu ;
}
function BestellungEdit ()
{
//$action = $this->app->Secure->GetGET("action");
$id = $this -> app -> Secure -> GetGET ( " id " );
$this -> app -> erp -> BestellungNeuberechnen ( $id );
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
if ( $cmd === 'dadown' )
{
$erg [ 'status' ] = 0 ;
$daid = $this -> app -> Secure -> GetPOST ( " da_id " );
$check = $this -> app -> DB -> SelectArr ( " SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.id = ' $daid ' and d.geloescht <> 1 LIMIT 1 " );
if ( $check )
{
$sort = $check [ 0 ][ 'sort' ] + 1 ;
if ( $sort > 1 )
{
$check2 = $this -> app -> DB -> SelectArr ( " SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.objekt like 'angebot' AND ds.sort = ' $sort ' AND d.geloescht <> 1 AND ds.parameter = ' $id ' LIMIT 1 " );
if ( $check2 )
{
$erg [ 'status' ] = 1 ;
$erg [ 'from' ] = $check2 [ 0 ][ 'id' ];
$this -> app -> DB -> Update ( " UPDATE datei_stichwoerter SET sort = sort + 1 WHERE id = ' $daid ' LIMIT 1 " );
$this -> app -> DB -> Update ( " UPDATE datei_stichwoerter SET sort = sort - 1 WHERE id = ' " . $check2 [ 0 ][ 'id' ] . " ' LIMIT 1 " );
}
}
}
echo json_encode ( $erg );
$this -> app -> ExitXentral ();
}
if ( $cmd === 'daup' )
{
$erg [ 'status' ] = 0 ;
$daid = $this -> app -> Secure -> GetPOST ( " da_id " );
$check = $this -> app -> DB -> SelectArr ( " SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.id = ' $daid ' and d.geloescht <> 1 LIMIT 1 " );
if ( $check )
{
$sort = $check [ 0 ][ 'sort' ] - 1 ;
if ( $sort > 0 )
{
$check2 = $this -> app -> DB -> SelectArr ( " SELECT ds.* FROM datei_stichwoerter ds INNER JOIN datei d on ds.datei = d.id WHERE ds.objekt like 'angebot' AND ds.sort = ' $sort ' AND d.geloescht <> 1 AND ds.parameter = ' $id ' LIMIT 1 " );
if ( $check2 )
{
$erg [ 'status' ] = 1 ;
$erg [ 'from' ] = $check2 [ 0 ][ 'id' ];
$this -> app -> DB -> Update ( " UPDATE datei_stichwoerter SET sort = sort - 1 WHERE id = ' $daid ' LIMIT 1 " );
$this -> app -> DB -> Update ( " UPDATE datei_stichwoerter SET sort = sort + 1 WHERE id = ' " . $check2 [ 0 ][ 'id' ] . " ' LIMIT 1 " );
}
}
}
echo json_encode ( $erg );
$this -> app -> ExitXentral ();
}
if ( $this -> app -> erp -> DisableModul ( " bestellung " , $id ))
{
//$this->app->erp->MenuEintrag("index.php?module=auftrag&action=list","Zurück zur Übersicht");
$this -> BestellungMenu ();
return ;
}
$this -> app -> YUI -> AARLGPositionen ();
//$storno = $this->app->Secure->GetGET("storno");
$speichern = $this -> app -> Secure -> GetPOST ( " speichern " );
$verbindlichkeiteninfo = $this -> app -> Secure -> GetPOST ( " verbindlichkeiteninfo " );
if ( $verbindlichkeiteninfo != " " && $speichern != " " && $id > 0 )
$this -> app -> DB -> Update ( " UPDATE bestellung SET verbindlichkeiteninfo=' $verbindlichkeiteninfo ' WHERE id=' $id ' LIMIT 1 " );
//$this->BestellungMiniDetail(MINIDETAIL,false);
$arr = $this -> app -> DB -> SelectArr (
" SELECT b.belegnr, b.adresse, b.status, b.schreibschutz, b.langeartikelnummern, b.zuarchivieren
FROM `bestellung` AS `b`
WHERE b . id = '$id' LIMIT 1 "
);
if ( $arr ){
$arr = reset ( $arr );
$belegnr = $arr [ 'belegnr' ];
$nummer = $arr [ 'belegnr' ];
$adresse = $arr [ 'adresse' ];
$status = $arr [ 'status' ];
$schreibschutz = $arr [ 'schreibschutz' ];
$zuArchivieren = $arr [ 'zuarchivieren' ];
$lieferantennummer = $this -> app -> DB -> Select ( " SELECT lieferantennummer FROM adresse WHERE id=' $adresse ' LIMIT 1 " );
}
if ( $id > 0 && $zuArchivieren == 1 && $schreibschutz == 1 ) {
$this -> app -> erp -> PDFArchivieren ( 'bestellung' , $id , true );
}
if ( $status !== " angelegt " && $status !== " angelegta " && $status !== " a " )
{
/*
$laenge = $this -> app -> DB -> SelectArr ( " SELECT LENGTH(bestellnummer) as length,bestellnummer FROM bestellung_position WHERE bestellung=' $id ' ORDER by length DESC " );
$pdf = new FPDFWAWISION ();
$pdf -> SetFontClassic ( $this -> app -> erp -> Firmendaten ( " schriftart " ), '' , $this -> app -> erp -> Firmendaten ( " tabellenhinhalt " ));
$laengepdf = $pdf -> GetStringWidth ( $laenge [ 0 ][ 'bestellnummer' ]);
if ( floor ( $laengepdf ) > $this -> app -> erp -> Firmendaten ( " breite_nummer " ) + 11 && $arr [ 'langeartikelnummern' ] != " 1 " )
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" error \" >Eventuell ist die Artikelnummer zu lang. Sie können die Funktion \" Lange Artikelnummer \" weiter unten aktivieren.</div> " );
}
*/
$Brief = new Briefpapier ( $this -> app );
if ( $Brief -> zuArchivieren ( $id , " bestellung " ))
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" error \" >Die Bestellung ist noch nicht archiviert! Bitte versenden oder manuell archivieren. <input type= \" button \" onclick= \" if(!confirm('Soll das Dokument archiviert werden?')) return false;else window.location.href='index.php?module=bestellung&action=archivierepdf&id= $id '; \" value= \" Manuell archivieren \" /> <input type= \" button \" value= \" Dokument versenden \" onclick= \" DokumentAbschicken('bestellung', $id ) \" ></div> " );
} elseif ( ! $this -> app -> DB -> Select ( " SELECT versendet FROM bestellung WHERE id = ' $id ' LIMIT 1 " ))
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" error \" >Die Bestellung wurde noch nicht versendet! <input type= \" button \" value= \" Dokument versenden \" onclick= \" DokumentAbschicken('bestellung', $id ) \" ></div> " );
}
}
if ( $schreibschutz != " 1 " ) // && $this->app->erp->RechteVorhanden("bestellung","schreibschutz")) {
{
$this -> app -> erp -> AnsprechpartnerButton ( $adresse );
$this -> app -> erp -> LieferadresseButton ( $adresse );
$this -> app -> erp -> AnsprechpartnerAlsLieferadresseButton ( $adresse );
$this -> app -> erp -> AdresseAlsLieferadresseButton ( $adresse );
}
$this -> app -> Tpl -> Set ( 'ICONMENU' , $this -> BestellungIconMenu ( $id ));
$this -> app -> Tpl -> Set ( 'ICONMENU2' , $this -> BestellungIconMenu ( $id , 2 ));
if ( $nummer != " " )
{
$this -> app -> Tpl -> Set ( 'NUMMER' , $nummer );
if ( $this -> app -> erp -> RechteVorhanden ( " adresse " , " edit " ))
$this -> app -> Tpl -> Set ( 'LIEFERANT' , " Lf-Nr. <a href= \" index.php?module=adresse&action=edit&id= $adresse\ " target = \ " _blank \" > " . $lieferantennummer . " </a> " );
else
$this -> app -> Tpl -> Set ( 'LIEFERANT' , " Lf-Nr. " . $lieferantennummer );
}
$check = $this -> app -> DB -> SelectArr ( " SELECT a.belegnr, a.id, a.name
FROM bestellung_position bp
INNER JOIN auftrag_position ap ON ap . id = bp . auftrag_position_id
INNER JOIN auftrag a ON ap . auftrag = a . id
WHERE bp . bestellung = '$id' GROUP BY a . belegnr , a . id ORDER BY a . belegnr , a . id " );
if ( $check )
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" info \" >Zu dieser Bestellung gehör " . ( count ( $check ) == 1 ? 't der Auftrag' : 'en die Aufträge:' ));
foreach ( $check as $row )
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , ' <a href="index.php?module=auftrag&action=edit&id=' . $row [ 'id' ] . '" target="_blank"><input type="button" value="' . ( $row [ 'belegnr' ] ? $row [ 'belegnr' ] : 'Entwurf' ) . " ( " . $row [ 'name' ] . ')" /></a>' );
}
$this -> app -> Tpl -> Add ( 'MESSAGE' , " </div> " );
}
if ( $this -> app -> Secure -> GetPOST ( " speichern " ) != " " )
{
$abweichenderechnungsadresse = $this -> app -> Secure -> GetPOST ( " abweichenderechnungsadresse " );
$abweichendelieferadresse = $this -> app -> Secure -> GetPOST ( " abweichendelieferadresse " );
} else {
$abweichenderechnungsadresse = $this -> app -> DB -> Select ( " SELECT abweichende_rechnungsadresse FROM adresse WHERE id=' $adresse ' LIMIT 1 " );
$abweichendelieferadresse = $this -> app -> DB -> Select ( " SELECT abweichendelieferadresse FROM bestellung WHERE id=' $id ' LIMIT 1 " );
}
if ( $abweichenderechnungsadresse ) $this -> app -> Tpl -> Set ( 'RECHNUNGSADRESSE' , " visible " ); else $this -> app -> Tpl -> Set ( 'RECHNUNGSADRESSE' , " none " );
if ( $abweichendelieferadresse ) $this -> app -> Tpl -> Set ( 'LIEFERADRESSE' , " visible " ); else $this -> app -> Tpl -> Set ( 'LIEFERADRESSE' , " none " );
if ( $belegnr == " " || $belegnr == " 0 " )
{
$this -> app -> Tpl -> Set ( 'LOESCHEN' , " <input type= \" button \" value= \" Abbrechen \" onclick= \" if(!confirm('Wirklich löschen?')) return false; else window.location.href='index.php?module=bestellung&action=delete&id= $id '; \" > " );
}
$status = $this -> app -> DB -> Select ( " SELECT status FROM bestellung WHERE id=' $id ' LIMIT 1 " );
if ( $status == " " )
$this -> app -> DB -> Update ( " UPDATE bestellung SET status='angelegt' WHERE id=' $id ' LIMIT 1 " );
if ( $schreibschutz == " 1 " && $this -> app -> erp -> RechteVorhanden ( " bestellung " , " schreibschutz " ))
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" warning \" >Diese Bestellung ist schreibgeschützt und darf daher nicht mehr bearbeitet werden! <input type= \" button \" value= \" Schreibschutz entfernen \" onclick= \" if(!confirm('Soll der Schreibschutz für diese Bestellung wirklich entfernt werden?')) return false;else window.location.href='index.php?module=bestellung&action=schreibschutz&id= $id '; \" ></div> " );
// $this->app->erp->CommonReadonly();
}
if ( $schreibschutz == " 1 " )
{
$this -> app -> erp -> RemoveReadonly ( " bestellung_bestaetigt " );
$this -> app -> erp -> RemoveReadonly ( " bestaetigteslieferdatum " );
$this -> app -> erp -> RemoveReadonly ( " bestellungbestaetigtabnummer " );
$this -> app -> erp -> RemoveReadonly ( " bestellungbestaetigtper " );
$speichern = $this -> app -> Secure -> GetPOST ( " speichern " );
if ( $speichern != " " )
{
$bestellung_bestaetigt = $this -> app -> Secure -> GetPOST ( " bestellung_bestaetigt " );
$bestaetigteslieferdatum = $this -> app -> Secure -> GetPOST ( " bestaetigteslieferdatum " );
$bestellungbestaetigtabnummer = $this -> app -> Secure -> GetPOST ( " bestellungbestaetigtabnummer " );
$bestellungbestaetigtper = $this -> app -> Secure -> GetPOST ( " bestellungbestaetigtper " );
if ( $bestellung_bestaetigt != " 1 " ) $bestellung_bestaetigt = " 0 " ;
$bestaetigteslieferdatum = $this -> app -> String -> Convert ( $bestaetigteslieferdatum , " %1.%2.%3 " , " %3-%2-%1 " );
$this -> app -> DB -> Update ( " UPDATE bestellung SET bestellung_bestaetigt=' $bestellung_bestaetigt ',bestaetigteslieferdatum=' $bestaetigteslieferdatum ',
bestellungbestaetigtabnummer = '$bestellungbestaetigtabnummer' , bestellungbestaetigtper = '$bestellungbestaetigtper' WHERE id = '$id' LIMIT 1 " );
// alle positonen ebenso anpassen
$this -> app -> DB -> Update ( " UPDATE bestellung_position SET lieferdatum=' $bestaetigteslieferdatum ' WHERE bestellung=' $id ' AND lieferdatum='0000-00-00' " );
}
$this -> app -> erp -> CommonReadonly ();
} else {
$portofreilieferant_aktiv = $this -> app -> DB -> Select ( " SELECT portofreilieferant_aktiv FROM adresse WHERE id=' $adresse ' LIMIT 1 " );
$portofreiablieferant = $this -> app -> DB -> Select ( " SELECT portofreiablieferant FROM adresse WHERE id=' $adresse ' LIMIT 1 " );
$gesamtsumme = $this -> app -> erp -> BEGesamtsummeOhnePorto ( $id , " bestellung " );
if ( $portofreilieferant_aktiv == 1 && $portofreiablieferant > 0 && $gesamtsumme <= $portofreiablieferant )
{
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" warning \" >Die Lieferung wird ab " . number_format ( $portofreiablieferant , 2 , ',' , '.' ) . " EUR (netto) Portofrei.
Aktuell sind nur " .number_format( $gesamtsumme ,2,',','.'). " EUR ( netto ) in der Bestellung .</ div > " );
}
}
if ( $schreibschutz != '1' ){
if ( $this -> app -> erp -> Firmendaten ( " schnellanlegen " ) == " 1 " ){
$this -> app -> Tpl -> Set ( 'BUTTON_UEBERNEHMEN' , ' < input type = " button " value = " übernehmen " onclick = " document.getElementById( \ 'uebernehmen \ ').value=1; document.getElementById( \ 'eprooform \ ').submit(); " />< input type = " hidden " id = " uebernehmen " name = " uebernehmen " value = " 0 " >
' );
} else {
$this -> app -> Tpl -> Set ( 'BUTTON_UEBERNEHMEN' , '
< input type = " button " value = " übernehmen " onclick = " if(!confirm( \ 'Soll der neue Lieferant wirklich übernommen werden? Es werden alle Felder überladen. \ ')) return false;else document.getElementById( \ 'uebernehmen \ ').value=1; document.getElementById( \ 'eprooform \ ').submit(); " />< input type = " hidden " id = " uebernehmen " name = " uebernehmen " value = " 0 " >
' );
}
}
// immer wenn sich der lieferant genändert hat standartwerte setzen
if ( $this -> app -> Secure -> GetPOST ( " adresse " ) != " " )
{
$tmp = $this -> app -> Secure -> GetPOST ( " adresse " );
$lieferantennummer = $this -> app -> erp -> FirstTillSpace ( $tmp );
//$name = substr($tmp,6);
$filter_projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id = ' $id ' LIMIT 1 " );
//if($filter_projekt)$filter_projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE id= '$filter_projekt' and eigenernummernkreis = 1 LIMIT 1");
$adresse = $this -> app -> DB -> Select ( " SELECT a.id FROM adresse a
LEFT JOIN adresse_rolle ar ON a . id = ar . adresse AND ar . projekt > 0 " . $this->app ->erp->ProjektRechte( " ar . projekt " ). "
WHERE a . lieferantennummer = '$lieferantennummer' AND a . geloescht = 0 AND
( 1 " . $this->app ->erp->ProjektRechte( " a . projekt " ). " OR not isnull ( ar . id ))
ORDER by " .( $filter_projekt ? " a . projekt = '$filter_projekt' DESC , " : " " ). " a . projekt LIMIT 1 " );
$uebernehmen = $this -> app -> Secure -> GetPOST ( " uebernehmen " );
if ( $schreibschutz != '1' && $uebernehmen == " 1 " && $adresse > 0 ) // nur neuladen bei tastendruck auf uebernehmen // FRAGEN!!!!
{
$this -> app -> erp -> LoadBestellungStandardwerte ( $id , $adresse );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id );
}
}
/*
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT a.bezeichnung as artikel, a.nummer as Nummer, b.menge, b.vpe as VPE, FORMAT(b.preis,4) as preis
FROM bestellung_position b LEFT JOIN artikel a ON a . id = b . artikel
WHERE b . bestellung = '$id' " );
$table -> DisplayNew ( POSITIONEN , " Preis " , " noAction " );
*/
$arr = $this -> app -> DB -> SelectArr ( " SELECT bearbeiter, belegnr, status, zahlungsweise,abweichendelieferadresse FROM bestellung WHERE id = ' $id ' LIMIT 1 " );
if ( $arr ){
$arr = reset ( $arr );
$bearbeiter = $arr [ 'bearbeiter' ];
$status = $arr [ 'status' ];
$bestellung = $arr [ 'belegnr' ];
$zahlungsweise = $arr [ 'zahlungsweise' ];
$abweichendelieferadresse = $arr [ 'abweichendelieferadresse' ];
}
$this -> app -> Tpl -> Set ( 'BEARBEITER' , " <input type= \" text \" value= \" " . $this -> app -> erp -> GetAdressName ( $bearbeiter ) . " \" readonly> " );
$this -> app -> Tpl -> Set ( 'STATUS' , " <input type= \" text \" size= \" 30 \" value= \" " . $status . " \" readonly [COMMONREADONLYINPUT]> " );
if ( $bestellung != '' ) $bestellung = " keine Nummer " ;
$this -> app -> Tpl -> Set ( 'ANGEBOT' , " <input type= \" text \" value= \" " . $bestellung . " \" readonly> " );
if ( $this -> app -> Secure -> GetPOST ( " zahlungsweise " ) != " " ) $zahlungsweise = $this -> app -> Secure -> GetPOST ( " zahlungsweise " );
$zahlungsweise = strtolower ( $zahlungsweise );
$this -> app -> Tpl -> Set ( 'RECHNUNG' , " none " );
$this -> app -> Tpl -> Set ( 'KREDITKARTE' , " none " );
$this -> app -> Tpl -> Set ( 'VORKASSE' , " none " );
$this -> app -> Tpl -> Set ( 'PAYPAL' , " none " );
$this -> app -> Tpl -> Set ( 'EINZUGSERMAECHTIGUNG' , " none " );
if ( $zahlungsweise == " rechnung " ) $this -> app -> Tpl -> Set ( 'RECHNUNG' , " " );
if ( $zahlungsweise == " paypal " ) $this -> app -> Tpl -> Set ( 'PAYPAL' , " " );
if ( $zahlungsweise == " kreditkarte " ) $this -> app -> Tpl -> Set ( 'KREDITKARTE' , " " );
if ( $zahlungsweise == " einzugsermaechtigung " || $zahlungsweise == " lastschrift " ) $this -> app -> Tpl -> Set ( 'EINZUGSERMAECHTIGUNG' , " " );
if ( $zahlungsweise == " vorkasse " || $zahlungsweise == " kreditkarte " || $zahlungsweise == " paypal " || $zahlungsweise == " bar " ) $this -> app -> Tpl -> Set ( 'VORKASSE' , " " );
if ( $this -> app -> Secure -> GetPOST ( " abweichendelieferadresse " ) != " " ) $versandart = $this -> app -> Secure -> GetPOST ( " abweichendelieferadresse " );
$this -> app -> Tpl -> Set ( 'ABWEICHENDELIEFERADRESSESTYLE' , " none " );
if ( $abweichendelieferadresse == " 1 " ) $this -> app -> Tpl -> Set ( 'ABWEICHENDELIEFERADRESSESTYLE' , " " );
$this -> app -> Tpl -> Set ( 'AKTIV_TAB1' , " selected " );
parent :: BestellungEdit ();
$this -> app -> erp -> MessageHandlerStandardForm ();
/*
if ( $this -> app -> Secure -> GetPOST ( " speichern " ) != " " && $storno == " " )
{
if ( $this -> app -> Secure -> GetGET ( " msg " ) == " " )
{
$msg = $this -> app -> Tpl -> Get ( MESSAGE );
$msg = $this -> app -> erp -> base64_url_encode ( $msg );
} else {
$msg = $this -> app -> erp -> base64_url_encode ( $msg );
}
header ( " Location: index.php?module=bestellung&action=edit&id= $id &msg= $msg " );
exit ;
}
*/
/*
$summe = $this -> app -> DB -> Select ( " SELECT SUM(menge*preis) FROM bestellung_position
WHERE bestellung = '$id' " );
$waehrung = $this -> app -> DB -> Select ( " SELECT waehrung FROM bestellung_position
WHERE bestellung = '$id' LIMIT 1 " );
$ust_befreit_check = $this -> app -> DB -> Select ( " SELECT ust_befreit FROM bestellung WHERE id=' $id ' LIMIT 1 " );
$summebrutto = $summe * 1.19 ;
if ( $ust_befreit_check == 0 )
$tmp = " Kunde zahlt mit UST " ;
else if ( $ust_befreit_check == 1 )
$tmp = " Kunde ist UST befreit " ;
else
$tmp = " Kunde zahlt keine UST " ;
if ( $summe > 0 )
$this -> app -> Tpl -> Add ( POSITIONEN , " <br><center>Zu zahlen: <b> $summe (netto) $summebrutto (brutto) $waehrung </b> ( $tmp ) " );
*/
if ( $this -> app -> Secure -> GetPOST ( 'weiter' ) != '' )
{
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=positionen&id=' . $id );
}
$this -> BestellungMenu ();
}
function BestellungCreate ()
{
//$this->app->Tpl->Add(TABS,"<li><h2>Bestellung</h2></li>");
$this -> app -> erp -> Headlines ( 'Bestellung anlegen' );
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=list " , " Zurück zur Übersicht " );
$anlegen = $this -> app -> Secure -> GetGET ( " anlegen " );
if ( $this -> app -> erp -> Firmendaten ( " schnellanlegen " ) == " 1 " && $anlegen != " 1 " )
{
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=create&anlegen=1' );
}
if ( $anlegen != " " )
{
$id = $this -> app -> erp -> CreateBestellung ();
$this -> app -> erp -> BestellungProtokoll ( $id , " Bestellung angelegt " );
$this -> app -> Location -> execute ( 'index.php?module=bestellung&action=edit&id=' . $id );
}
$this -> app -> Tpl -> Add ( 'MESSAGE' , " <div class= \" warning \" >Möchten Sie eine Bestellung jetzt anlegen?
< input type = \ " button \" onclick= \" window.location.href='index.php?module=bestellung&action=create&anlegen=1' \" value= \" Ja - Bestellung jetzt anlegen \" ></div><br> " );
$this -> app -> Tpl -> Set ( 'TAB1' , "
< table width = \ " 100% \" style= \" background-color: #fff; border: solid 1px #000; \" align= \" center \" >
< tr >
< td align = \ " center \" >
< br >< b style = \ " font-size: 14pt \" >Bestellungen in Bearbeitung</b>
< br >
< br >
Offene Bestellunge , die durch andere Mitarbeiter in Bearbeitung sind .
< br >
</ td >
</ tr >
</ table >
< br >
[ ANGEBOTE ] " );
$this -> app -> Tpl -> Set ( 'AKTIV_TAB1' , " selected " );
$this -> app -> YUI -> TableSearch ( 'ANGEBOTE' , " bestellungeninbearbeitung " );
/*
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr,belegnr,'ohne Nummer') as beleg, name, status, id
FROM bestellung WHERE status = 'angelegt' order by datum DESC , id DESC " );
$table -> DisplayNew ( ANGEBOTE , " <a href= \" index.php?module=bestellung&action=edit&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/edit.svg \" ></a>
< a onclick = \ " if(!confirm('Wirklich löschen?')) return false; else window.location.href='index.php?module=bestellung&action=delete&id=%value%'; \" >
< img src = \ " ./themes/new/images/delete.svg \" border= \" 0 \" ></a>
< a onclick = \ " if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=bestellung&action=copy&id=%value%'; \" >
< img src = \ " ./themes/new/images/copy.svg \" border= \" 0 \" ></a>
" );
*/
$this -> app -> Tpl -> Set ( 'TABTEXT' , " Bestellung anlegen " );
$this -> app -> Tpl -> Parse ( 'PAGE' , " tabview.tpl " );
//parent::BestellungCreate();
}
function BestellungListMenu ()
{
$backurl = $this -> app -> Secure -> GetGET ( " backurl " );
$backurl = $this -> app -> erp -> base64_url_decode ( $backurl );
//$this->app->Tpl->Add(TABS,"<li><h2 class=\"allgemein\" style=\"background-color: [FARBE2]\">Allgemein</h2></li>");
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=list " , " Übersicht " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=create " , " Neue Bestellung anlegen " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=bestellung&action=offenepositionen " , " Offene Positionen " );
//$this->app->erp->MenuEintrag("index.php?module=bestellvorschlag&action=ausgehend","Bestellvorschlag");
if ( strlen ( $backurl ) > 5 ){
$this -> app -> erp -> MenuEintrag (( string ) $backurl , 'Zurück zur Übersicht' );
}
else {
$this -> app -> erp -> MenuEintrag ( 'index.php' , 'Zurück zur Übersicht' );
}
}
function BestellungList ()
{
// $this->app->Tpl->Set(UEBERSCHRIFT,"Bestellungssuche");
// $this->app->Tpl->Set(KURZUEBERSCHRIFT,"Bestellungssuche");
if ( $this -> app -> Secure -> GetPOST ( 'ausfuehren' ) && $this -> app -> erp -> RechteVorhanden ( 'bestellung' , 'edit' ))
{
$drucker = $this -> app -> Secure -> GetPOST ( 'seldrucker' );
$aktion = $this -> app -> Secure -> GetPOST ( 'sel_aktion' );
$auswahl = $this -> app -> Secure -> GetPOST ( 'auswahl' );
if ( $drucker > 0 ) $this -> app -> erp -> BriefpapierHintergrundDisable ( $drucker );
if ( is_array ( $auswahl ))
{
switch ( $aktion )
{
case 'mail' :
foreach ( $auswahl as $v )
{
$v = ( int ) $v ;
if ( $v ){
$bestellungarr = $this -> app -> DB -> SelectRow ( " SELECT email,adresse,projekt,name,sprache FROM bestellung WHERE id = ' $v ' LIMIT 1 " );
if ( ! empty ( $bestellungarr ))
{
$email = ( String ) $bestellungarr [ 'email' ]; //$this->app->DB->Select("SELECT email FROM auftrag WHERE id = '$v' LIMIT 1");
$adresse = $bestellungarr [ 'adresse' ]; //$this->app->DB->Select("SELECT adresse FROM auftrag WHERE id = '$v' LIMIT 1");
$projekt = $bestellungarr [ 'projekt' ]; //$this->app->DB->Select("SELECT projekt FROM auftrag WHERE id = '$v' LIMIT 1");
$name = $bestellungarr [ 'name' ]; // $this->app->DB->Select("SELECT name FROM auftrag WHERE id = '$v' LIMIT 1");
$sprache = $bestellungarr [ 'sprache' ]; // $this->app->DB->Select("SELECT sprache FROM auftrag WHERE id='$v' LIMIT 1");
} else {
$email = '' ;
$adresse = 0 ;
$projekt = 0 ;
$name = '' ;
$sprache = '' ;
}
if ( $sprache == '' ){
$sprache = $this -> app -> DB -> Select ( " SELECT sprache FROM adresse WHERE id=' $adresse ' AND geloescht=0 LIMIT 1 " );
}
if ( $sprache == '' ) {
$sprache = 'de' ;
}
$emailtext = $this -> app -> erp -> Geschaeftsbriefvorlage ( $sprache , 'bestellung' , $projekt , $name , $v );
if ( $email === '' )
{
$email = ( String ) $this -> app -> DB -> Select ( " SELECT email FROM adresse WHERE id = ' $adresse ' LIMIT 1 " );
}
if ( $email !== '' )
{
$this -> app -> erp -> BriefpapierHintergrunddisable = ! $this -> app -> erp -> BriefpapierHintergrunddisable ;
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $v );
$_tmpfile = $Brief -> displayTMP ();
$Brief -> ArchiviereDocument ();
unlink ( $_tmpfile );
$this -> app -> erp -> BriefpapierHintergrunddisable = ! $this -> app -> erp -> BriefpapierHintergrunddisable ;
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $v );
$tmpfile = $Brief -> displayTMP ();
$Brief -> ArchiviereDocument ();
$fileid = $this -> app -> erp -> CreateDatei ( $Brief -> filename , 'bestellung' , '' , '' , $tmpfile , $this -> app -> User -> GetName ());
$this -> app -> erp -> AddDateiStichwort ( $fileid , 'bestellung' , 'bestellung' , $v );
$this -> app -> erp -> DokumentSend ( $adresse , 'bestellung' , $v , 'email' , $emailtext [ 'betreff' ], $emailtext [ 'text' ], array ( $tmpfile ), " " , " " , $projekt , $email , $name );
$ansprechpartner = $name . " < " . $email . " > " ;
$this -> app -> DB -> Insert ( " INSERT INTO dokumente_send
( id , dokument , zeit , bearbeiter , adresse , parameter , art , betreff , text , projekt , ansprechpartner , versendet , dateiid ) VALUES ( '' , 'bestellung' , NOW (), '".$this->app->DB->real_escape_string($this->app->User->GetName())."' ,
'$adresse' , '$v' , 'email' , '".$this->app->DB->real_escape_string($emailtext[' betreff '])."' , '".$this->app->DB->real_escape_string($emailtext[' text '])."' , '$projekt' , '$ansprechpartner' , 1 , '$fileid' ) " );
$tmpid = $this -> app -> DB -> GetInsertID ();
unlink ( $tmpfile );
$this -> app -> DB -> Update ( " UPDATE bestellung SET versendet=1, versendet_am=NOW(),
versendet_per = 'email' , versendet_durch = '".$this->app->DB->real_escape_string($this->app->User->GetName())."' , schreibschutz = '1' WHERE id = '$v' LIMIT 1 " );
$this -> app -> erp -> BestellungProtokoll ( $v , 'Bestellung versendet' );
}
}
}
break ;
case 'freigeben' :
foreach ( $auswahl as $v )
{
$v = ( int ) $v ;
if ( $v ){
if ( $this -> app -> DB -> Select ( " SELECT id FROM bestellung WHERE id = ' $v ' AND status <> 'storniert' LIMIT 1 " )){
$this -> BestellungFreigegeben ( $v );
}
}
}
break ;
case 'versendet' :
foreach ( $auswahl as $v )
{
$v = ( int ) $v ;
if ( $v ) {
$projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id=' $v ' LIMIT 1 " );
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $v );
$tmpfile = $Brief -> displayTMP ();
$Brief -> ArchiviereDocument ();
$this -> app -> erp -> BestellungProtokoll ( $v , " Bestellung versendet " );
$this -> app -> erp -> closeInvoice ( $v );
$this -> app -> DB -> Update ( " UPDATE bestellung SET schreibschutz=1, versendet = 1, status='versendet' WHERE id = ' $v ' LIMIT 1 " );
}
}
break ;
case 'abgeschlossen' :
foreach ( $auswahl as $v )
{
$v = ( int ) $v ;
if ( $v ){
if ( $this -> app -> DB -> Select ( " SELECT id FROM bestellung WHERE id = ' $v ' AND status != 'angelegt' AND status != 'abgeschlossen' LIMIT 1 " )){
$this -> BestellungAbschliessen ( $v );
}
}
}
break ;
case 'drucken' :
if ( $drucker )
{
foreach ( $auswahl as $v )
{
$v = ( int ) $v ;
if ( $v ){
$bestellungsdaten = $this -> app -> DB -> Select ( " SELECT projekt, adresse FROM bestellung WHERE id=' $v ' LIMIT 1 " );
$projekt = $bestellungsdaten [ 'projekt' ];
$adressId = $bestellungsdaten [ 'adresse' ];
$this -> app -> erp -> BriefpapierHintergrunddisable = ! $this -> app -> erp -> BriefpapierHintergrunddisable ;
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $v );
$_tmpfile = $Brief -> displayTMP ();
$Brief -> ArchiviereDocument ();
unlink ( $_tmpfile );
$this -> app -> erp -> BriefpapierHintergrunddisable = ! $this -> app -> erp -> BriefpapierHintergrunddisable ;
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $v );
$tmpfile = $Brief -> displayTMP ();
$Brief -> ArchiviereDocument ();
$this -> app -> printer -> Drucken ( $drucker , $tmpfile );
$doctype = 'bestellung' ;
$this -> app -> erp -> RunHook ( 'dokumentsend_ende' , 5 , $doctype , $v , $projekt , $adressId , $aktion );
$this -> app -> erp -> BestellungProtokoll ( $v , " Bestellung versendet " );
unlink ( $tmpfile );
}
}
}
break ;
case 'pdf' :
foreach ( $auswahl as $v )
{
$v = ( int ) $v ;
if ( $v ){
$projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id=' $v ' LIMIT 1 " );
$this -> app -> erp -> BriefpapierHintergrunddisable = ! $this -> app -> erp -> BriefpapierHintergrunddisable ;
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $v );
$_tmpfile = $Brief -> displayTMP ();
$Brief -> ArchiviereDocument ();
unlink ( $_tmpfile );
$this -> app -> erp -> BriefpapierHintergrunddisable = ! $this -> app -> erp -> BriefpapierHintergrunddisable ;
if ( class_exists ( 'BestellungPDFCustom' ))
{
$Brief = new BestellungPDFCustom ( $this -> app , $projekt );
} else {
$Brief = new BestellungPDF ( $this -> app , $projekt );
}
$Brief -> GetBestellung ( $v );
$tmpfile [] = $Brief -> displayTMP ();
//$Brief->ArchiviereDocument();
}
}
if ( count ( $tmpfile ) > 0 ){
try {
/** @var PdfMerger $pdfMerger */
$pdfMerger = $this -> app -> Container -> get ( 'PdfMerger' );
$mergeOutputPath = realpath ( $this -> app -> erp -> GetTMP ()) . '/' . uniqid ( 'sammelpdf_' , true ) . '.pdf' ;
$pdfMerger -> merge ( $tmpfile , $mergeOutputPath );
foreach ( $tmpfile as $key => $value ) {
unlink ( $value );
}
header ( 'Content-type:application/pdf' );
header ( 'Content-Disposition: attachment;filename=' . md5 ( microtime ( true )) . '.pdf' );
readfile ( $mergeOutputPath );
$this -> app -> ExitXentral ();
} catch ( PdfComponentExceptionInterface $exception ) {
echo 'Fehler beim Generieren der Sammelpdf: ' . htmlspecialchars ( $exception -> getMessage ());
$this -> app -> ExitXentral ();
}
}
break ;
}
}
}
$speichern = $this -> app -> Secure -> GetPOST ( " speichern " );
$verbindlichkeiteninfo = $this -> app -> Secure -> GetPOST ( " verbindlichkeiteninfo " );
$bestellungid = $this -> app -> Secure -> GetPOST ( " bestellungid " );
if ( $this -> app -> erp -> Firmendaten ( " bestellungabschliessen " ))
{
$offene = $this -> app -> DB -> SelectArr ( " SELECT id FROM bestellung WHERE status='freigegeben' OR status='versendet' " );
foreach ( $offene as $order )
{
$this -> checkAbschliessen ( $order [ 'id' ]);
}
}
if ( $verbindlichkeiteninfo != " " && $speichern != " " && $bestellungid > 0 )
$this -> app -> DB -> Update ( " UPDATE bestellung SET verbindlichkeiteninfo=' $verbindlichkeiteninfo ' WHERE id=' $bestellungid ' LIMIT 1 " );
$this -> BestellungListMenu ();
$zahlungsweisen = $this -> app -> DB -> SelectArr ( '
SELECT
zahlungsweise
FROM
bestellung
GROUP BY
zahlungsweise
' );
$zahlungsweiseStr = '' ;
if ( $zahlungsweisen ) {
foreach ( $zahlungsweisen as $zahlungsweise ) {
if ( empty ( $zahlungsweise [ 'zahlungsweise' ])) {
continue ;
}
$zahlungsweiseStr .= '<option name="' . $zahlungsweise [ 'zahlungsweise' ] . '">' . ucfirst ( $zahlungsweise [ 'zahlungsweise' ]) . '</option>' ;
}
}
$status = $this -> app -> DB -> SelectArr ( '
SELECT
status
FROM
bestellung
GROUP BY
status
' );
$statusStr = '' ;
if ( $status ) {
foreach ( $status as $statusE ) {
if ( empty ( $statusE [ 'status' ])) {
continue ;
}
$statusStr .= '<option name="' . $statusE [ 'status' ] . '">' . ucfirst ( $statusE [ 'status' ]) . '</option>' ;
}
}
$versandarten = $this -> app -> DB -> SelectArr ( '
SELECT
versandart
FROM
bestellung
GROUP BY
versandart
' );
$versandartenStr = '' ;
if ( $versandarten ) {
foreach ( $versandarten as $versandart ) {
if ( empty ( $versandart [ 'versandart' ])) {
continue ;
}
$versandartenStr .= '<option name="' . $versandart [ 'versandart' ] . '">' . ucfirst ( $versandart [ 'versandart' ]) . '</option>' ;
}
}
$laender = $this -> app -> erp -> GetSelectLaenderliste ();
$laenderStr = '' ;
foreach ( $laender as $landKey => $land ) {
$laenderStr .= '<option value="' . $landKey . '">' . $land . '</option>' ;
}
$this -> app -> Tpl -> Set ( 'AKTIV_TAB1' , " selected " );
$this -> app -> Tpl -> Set ( 'INHALT' , " " );
// $this->app->Tpl->Add(STATUS,$statusStr);
// $this->app->Tpl->Add(VERSANDARTEN,$versandartenStr);
$this -> app -> YUI -> DatePicker ( " datumVon " );
$this -> app -> YUI -> DatePicker ( " datumBis " );
$this -> app -> YUI -> AutoComplete ( " projekt " , " projektname " , 1 );
$this -> app -> YUI -> AutoComplete ( " lieferantennummer " , " lieferant " , 1 );
$this -> app -> YUI -> AutoComplete ( " artikel " , " artikelnummer " , 1 );
$this -> app -> YUI -> AutoComplete ( " bestellungnummer " , " bestellung " , 1 );
$this -> app -> Tpl -> Add ( 'ZAHLUNGSWEISEN' , $zahlungsweiseStr );
$this -> app -> Tpl -> Add ( 'STATUS' , $statusStr );
$this -> app -> Tpl -> Add ( 'VERSANDARTEN' , $versandartenStr );
$this -> app -> Tpl -> Add ( 'LAENDER' , $laenderStr );
$this -> app -> Tpl -> Parse ( 'TAB1' , " bestellung_table_filter.tpl " );
$this -> app -> YUI -> TableSearch ( 'TAB1' , " bestellungen " );
$this -> app -> YUI -> TableSearch ( 'TAB2' , " bestellungeninbearbeitung " );
$this -> app -> Tpl -> Set ( 'SELDRUCKER' , $this -> app -> erp -> GetSelectDrucker ( $this -> app -> User -> GetParameter ( 'rechnung_list_drucker' )));
$this -> app -> Tpl -> Parse ( 'PAGE' , " bestellunguebersicht.tpl " );
return ;
/*
// suche
$sql = $this -> app -> erp -> BestellungSuche ();
// offene Bestellungen
$this -> app -> Tpl -> Set ( SUBSUBHEADING , " Offene Bestellunge " );
$table = new EasyTable ( $this -> app );
$table -> Query ( $sql , $_SESSION [ bestellungtreffer ]);
//$table->Query("SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Bestellung, a.name, p.abkuerzung as projekt, a.id
// FROM bestellung a, projekt p WHERE (a.status='freigegeben' OR a.status='versendet') AND p.id=a.projekt order by a.datum DESC, a.id DESC",10);
$table -> DisplayOwn ( INHALT , " <a href= \" index.php?module=bestellung&action=edit&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/edit.svg \" ></a>
< a href = \ " index.php?module=bestellung&action=pdf&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/pdf.svg \" ></a>
< a onclick = \ " if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=bestellung&action=copy&id=%value%'; \" >
< img src = \ " ./themes/new/images/copy.svg \" border= \" 0 \" ></a>
< a onclick = \ " if(!confirm('Weiterfüfhren als Auftrag?')) return false; else window.location.href='index.php?module=bestellung&action=auftrag&id=%value%'; \" >
< img src = \ " ./themes/new/images/right.png \" border= \" 0 \" ></a>
" );
$this -> app -> Tpl -> Parse ( TAB1 , " rahmen70.tpl " );
$this -> app -> Tpl -> Set ( INHALT , " " );
// wartende Bestellungen
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT DATE_FORMAT(a.datum,'%d.%m.%y') as vom, if(a.belegnr,a.belegnr,'ohne Nummer') as Bestellung, ad.lieferantennummer as kunde, a.name, p.abkuerzung as projekt, a.id
FROM bestellung a , projekt p , adresse ad WHERE ( a . status = 'freigegeben' OR a . status = 'versendet' ) AND p . id = a . projekt AND a . adresse = ad . id order by a . datum DESC , a . id DESC " );
$table -> DisplayNew ( INHALT , " <a href= \" index.php?module=bestellung&action=edit&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/edit.svg \" ></a>
< a href = \ " index.php?module=bestellung&action=pdf&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/pdf.svg \" ></a>
< a onclick = \ " if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=bestellung&action=copy&id=%value%'; \" >
< img src = \ " ./themes/new/images/copy.svg \" border= \" 0 \" ></a>
" );
$this -> app -> Tpl -> Parse ( TAB2 , " rahmen70.tpl " );
$this -> app -> Tpl -> Set ( INHALT , " " );
// In Bearbeitung
$this -> app -> Tpl -> Set ( SUBSUBHEADING , " In Bearbeitung " );
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT DATE_FORMAT(datum,'%d.%m.%y') as vom, if(belegnr,belegnr,'ohne Nummer') as auftrag, name, vertrieb, status, id
FROM bestellung WHERE status = 'angelegt' order by datum DESC , id DESC " );
$table -> DisplayNew ( INHALT , " <a href= \" index.php?module=bestellung&action=edit&id=%value% \" ><img border= \" 0 \" src= \" ./themes/new/images/edit.svg \" ></a>
< a onclick = \ " if(!confirm('Wirklich löschen?')) return false; else window.location.href='index.php?module=bestellung&action=delete&id=%value%'; \" >
< img src = \ " ./themes/new/images/delete.svg \" border= \" 0 \" ></a>
< a onclick = \ " if(!confirm('Wirklich kopieren?')) return false; else window.location.href='index.php?module=bestellung&action=copy&id=%value%'; \" >
< img src = \ " ./themes/new/images/copy.svg \" border= \" 0 \" ></a>
" );
$this -> app -> Tpl -> Parse ( TAB3 , " rahmen70.tpl " );
*/
/*
$this -> app -> Tpl -> Set ( TAB2 , " lieferant, bestellung, waehrung, sprache, liefertermin, steuersatz, einkäufer, freigabe<br>
< br > Bestellung ( NR ), Bestellart ( NB ), Bestelldatum
< br > Projekt
< br > Kostenstelle pro Position
< br > Terminbestellung ( am xx . xx . xxxx raus damit )
< br > vorschlagsdaten für positionen
< br > proposition reinklicken zum ändern und reihenfolge tabelle
< br > Bestellung muss werden wie bestellung ( bestellung beschreibung = allgemein )
< br > Positionen ( wie stueckliste )
< br > Wareneingang / Rückstand
< br > Etiketten
< br > Freigabe
< br > Dokument direkt faxen
" );
*/
}
function BestellungRechnungsLieferadresse ( $auftragid )
{
$data = $this -> app -> DB -> SelectArr ( " SELECT * FROM bestellung WHERE id=' $auftragid ' LIMIT 1 " );
foreach ( $data [ 0 ] as $key => $value )
{
if ( $data [ 0 ][ $key ] != '' && $key !== 'abweichendelieferadresse' && $key !== 'land' && $key !== 'plz' && $key !== 'lieferland' && $key !== 'lieferplz' ) {
$data [ 0 ][ $key ] = $data [ 0 ][ $key ] . '<br>' ;
}
}
$rechnungsadresse = $data [ 0 ][ 'name' ] . " " . $data [ 0 ][ 'ansprechpartner' ] . " " . $data [ 0 ][ 'abteilung' ] . " " . $data [ 0 ][ 'unterabteilung' ] .
" " . $data [ 0 ][ 'strasse' ] . " " . $data [ 0 ][ 'adresszusatz' ] . " " . $data [ 0 ][ 'land' ] . " - " . $data [ 0 ][ 'plz' ] . " " . $data [ 0 ][ 'ort' ];
if ( $data [ 0 ][ 'abweichendelieferadresse' ] != 0 ){
$lieferadresse = $data [ 0 ][ 'liefername' ] . " " . $data [ 0 ][ 'lieferansprechpartner' ] . " " . $data [ 0 ][ 'lieferabteilung' ] . " " . $data [ 0 ][ 'lieferunterabteilung' ] .
" " . $data [ 0 ][ 'lieferstrasse' ] . " " . $data [ 0 ][ 'lieferadresszusatz' ] . " " . $data [ 0 ][ 'lieferland' ] . " - " . $data [ 0 ][ 'lieferplz' ] . " " . $data [ 0 ][ 'lieferort' ];
} else {
$lieferadresse = " keine abweichende Lieferadresse " ;
}
return " <table width= \" 100% \" >
< tr valign = \ " top \" ><td width= \" 50% \" ><b>Bestellt bei:</b><br><br> $rechnungsadresse <br></td></tr>
< tr >< td >< b > Lieferadresse :</ b >< br >< br > $lieferadresse </ td ></ tr ></ table > " ;
}
public function BestellungNeuberechnen ( $id )
{
$summeV = $this -> app -> DB -> Select (
" SELECT IFNULL(SUM(menge*preis), 0)
FROM bestellung_position
WHERE umsatzsteuer != 'ermaessigt' AND umsatzsteuer != 'befreit' AND bestellung = '$id' AND ( isnull ( steuersatz ) OR steuersatz < 0 ) "
);
$summeR = $this -> app -> DB -> Select ( " SELECT IFNULL(SUM(menge*preis), 0) FROM bestellung_position WHERE umsatzsteuer='ermaessigt' AND bestellung=' $id ' AND (isnull(steuersatz) OR steuersatz < 0) " );
$summeS = ( float ) $this -> app -> DB -> Select ( " SELECT
IFNULL (
SUM ( menge * preis *
if ( umsatzsteuer = 'befreit' ,
0 ,
IF ( steuersatz < 0 OR isnull ( steuersatz ), 0 , steuersatz / 100 )
)
)
, 0 )
FROM bestellung_position WHERE bestellung = '$id' AND umsatzsteuer != 'ermaessigt' AND umsatzsteuer != 'normal'
AND (( steuersatz IS NOT NULL AND steuersatz >= 0 ) OR umsatzsteuer = 'befreit' ) " );
$summeNetto = $this -> app -> DB -> Select ( " SELECT IFNULL(SUM(menge*preis),0) FROM bestellung_position WHERE bestellung=' $id ' " );
$ust_befreit = $this -> app -> DB -> Select ( " SELECT ust_befreit FROM bestellung WHERE id=' $id ' LIMIT 1 " );
if ( $ust_befreit > 0 )
{
$rechnungsbetrag = $summeNetto ;
} else {
$rechnungsbetrag = $summeNetto + ( $summeV * $this -> app -> erp -> GetSteuersatzNormal ( true , $id , 'bestellung' ) - $summeV ) + ( $summeR * $this -> app -> erp -> GetSteuersatzErmaessigt ( true , $id , 'bestellung' ) - $summeR ) + $summeS ;
}
$this -> app -> DB -> Update ( " UPDATE bestellung SET gesamtsumme=' $rechnungsbetrag ' WHERE id=' $id ' LIMIT 1 " );
}
public function DeleteBestellung ( $id )
{
if ( $id <= 0 )
{
return ;
}
$belegnr = $this -> app -> DB -> Select ( " SELECT belegnr FROM bestellung WHERE id=' $id ' LIMIT 1 " );
if ( $belegnr == '' || $belegnr == '0' )
{
$this -> app -> DB -> Delete ( " DELETE FROM bestellung_position WHERE bestellung=' $id ' " );
$this -> app -> DB -> Delete ( " DELETE FROM bestellung_protokoll WHERE bestellung=' $id ' " );
$this -> app -> DB -> Delete ( " DELETE FROM bestellung WHERE id=' $id ' LIMIT 1 " );
}
}
public function CreateBestellung ( $adresse = '' )
{
$projekt = $this -> app -> erp -> GetCreateProjekt ( $adresse );
$belegmax = '' ;
$ohnebriefpapier = $this -> app -> erp -> Firmendaten ( 'bestellung_ohnebriefpapier' );
$bestellungohnepreis = $this -> app -> erp -> Firmendaten ( 'bestellungohnepreis' );
$eigenartikelnummer = $this -> app -> erp -> Firmendaten ( 'bestellungeigeneartikelnummer' );
$bestellunglangeartikelnummern = $this -> app -> erp -> Firmendaten ( 'bestellunglangeartikelnummern' );
$this -> app -> DB -> Insert ( " INSERT INTO bestellung (datum,bearbeiter,firma,belegnr,adresse,status,artikelnummerninfotext,ohne_briefpapier,bestellungohnepreis,projekt,langeartikelnummern)
VALUES ( NOW (), '".$this->app->User->GetName()."' , '".$this->app->User->GetFirma()."' , '$belegmax' , '$adresse' , 'angelegt' , " .( $eigenartikelnummer ?'1':'0'). " , '".$ohnebriefpapier."' , '".$bestellungohnepreis."' , '".$projekt."' , " .( $bestellunglangeartikelnummern ?'1':'0').')');
$id = $this -> app -> DB -> GetInsertID ();
$this -> app -> erp -> ObjektProtokoll ( 'bestellung' , $id , 'bestellung_create' , 'Bestellung angelegt' );
$this -> app -> erp -> SchnellFreigabe ( 'bestellung' , $id );
$this -> app -> erp -> LoadSteuersaetzeWaehrung ( $id , 'bestellung' );
$this -> app -> erp -> EventAPIAdd ( 'EventBestellungCreate' , $id , 'bestellung' , 'create' );
return $id ;
}
public function AddBestellungPosition ( $bestellung , $einkauf , $menge , $datum , $beschreibung = '' , $artikel = '' , $einheit = '' , $waehrung = '' )
{
$beschreibung = $this -> app -> DB -> real_escape_string ( $beschreibung );
if ( $artikel <= 0 )
{
if ( $einkauf > 0 ){
$einkaufarr = $this -> app -> DB -> SelectRow ( " SELECT * FROM einkaufspreise WHERE id=' $einkauf ' LIMIT 1 " );
}
if ( ! empty ( $einkaufarr ))
{
$artikel = $einkaufarr [ 'artikel' ];
$article = $this -> app -> DB -> SelectRow (
" SELECT `nummer`, `name_de`, `name_en`, `umsatzsteuer`
FROM `artikel` WHERE `id` = { $artikel } "
);
$preis = $einkaufarr [ 'preis' ];
$projekt = $einkaufarr [ 'projekt' ];
$waehrung = $einkaufarr [ 'waehrung' ];
$vpe = $einkaufarr [ 'vpe' ];
$bezeichnunglieferant = $this -> app -> DB -> real_escape_string ( $einkaufarr [ 'bezeichnunglieferant' ]);
$bestellnummer = $this -> app -> DB -> real_escape_string ( $einkaufarr [ 'bestellnummer' ]);
} else {
$artikel = 0 ;
$preis = 0 ;
$projekt = 0 ;
$waehrung = '' ;
$vpe = '' ;
$bezeichnunglieferant = '' ;
$bestellnummer = '' ;
}
} else {
$article = $this -> app -> DB -> SelectRow (
" SELECT `nummer`, `name_de`, `name_en`, `umsatzsteuer`
FROM `artikel` WHERE `id` = { $artikel } "
);
$bestellnummer = $article [ 'nummer' ];
$bezeichnunglieferant = $this -> app -> DB -> real_escape_string ( $article [ 'name_de' ]);
$projekt = $projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id=' $bestellung ' LIMIT 1 " );
$preis = 0 ;
}
if ( $projekt <= 0 ) {
$projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM bestellung WHERE id=' $bestellung ' LIMIT 1 " );
}
if ( $bezeichnunglieferant == '' ){
$languageIso = $this -> app -> erp -> GetSpracheBelegISO ( 'bestellung' , $bestellung );
if ( $languageIso === 'EN' ){
$bezeichnunglieferant = $this -> app -> DB -> real_escape_string ( $article [ 'name_en' ]);
}
if ( empty ( $bezeichnunglieferant )){
$bezeichnunglieferant = $this -> app -> DB -> real_escape_string ( $article [ 'name_de' ]);
}
}
$umsatzsteuer = $article [ 'umsatzsteuer' ];
if ( $umsatzsteuer == '' ) {
$umsatzsteuer = 'normal' ;
}
$sort = $this -> app -> DB -> Select ( " SELECT MAX(sort) FROM bestellung_position WHERE bestellung=' $bestellung ' LIMIT 1 " );
$sort ++ ;
$this -> app -> DB -> Insert ( " INSERT INTO bestellung_position (bestellung,artikel,bezeichnunglieferant,bestellnummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe, beschreibung,einheit)
VALUES ( '$bestellung' , '$artikel' , '$bezeichnunglieferant' , '$bestellnummer' , '$menge' , '$preis' , '$waehrung' , '$sort' , '$datum' , '$umsatzsteuer' , 'angelegt' , '$projekt' , '$vpe' , '$beschreibung' , '$einheit' ) " );
return $this -> app -> DB -> GetInsertID ();
}
public function CopyBestellung ( $id )
{
$this -> app -> DB -> Insert ( 'INSERT INTO bestellung (id) VALUES (NULL)' );
$newid = $this -> app -> DB -> GetInsertID ();
$arr = $this -> app -> DB -> SelectRow ( " SELECT NOW() as datum,projekt,bodyzusatz,freitext,adresse,name,abteilung,unterabteilung,strasse,adresszusatz,plz,ort,land,ustid,email,telefon,telefax,betreff,kundennummer,versandart,einkaeufer,zahlungsweise,zahlungszieltage,'angelegt' as status,typ,
zahlungszieltageskonto , zahlungszielskonto , firma , 'angelegt' as status , abweichendelieferadresse , liefername , lieferabteilung , lieferunterabteilung , ust_befreit ,
lieferland , lieferstrasse , lieferort , lieferplz , lieferadresszusatz , lieferansprechpartner , sprache , anzeigesteuer , waehrung , kostenstelle FROM bestellung WHERE id = '$id' LIMIT 1 " );
$arr [ 'bundesstaat' ] = $this -> app -> DB -> Select ( " SELECT bundesstaat FROM bestellung WHERE id=' $id ' LIMIT 1 " );
$this -> app -> DB -> UpdateArr ( 'bestellung' , $newid , 'id' , $arr , true );
$pos = $this -> app -> DB -> SelectArr ( " SELECT * FROM bestellung_position WHERE bestellung=' $id ' " );
$cpos = ! empty ( $pos ) ? count ( $pos ) : 0 ;
for ( $i = 0 ; $i < $cpos ; $i ++ ){
$this -> app -> DB -> Insert ( " INSERT INTO bestellung_position (bestellung) VALUES ( $newid ) " );
$newposid = $this -> app -> DB -> GetInsertID ();
$pos [ $i ][ 'bestellung' ] = $newid ;
$pos [ $i ][ 'auftrag_position_id' ] = 0 ;
$this -> app -> DB -> UpdateArr ( 'bestellung_position' , $newposid , 'id' , $pos [ $i ], true );
if ( is_null ( $pos [ $i ][ 'steuersatz' ])){
$this -> app -> DB -> Update ( " UPDATE bestellung_position SET steuersatz = null WHERE id = ' $newposid ' LIMIT 1 " );
}
}
$this -> app -> erp -> CheckFreifelder ( 'bestellung' , $newid );
$this -> app -> erp -> CopyBelegZwischenpositionen ( 'bestellung' , $id , 'bestellung' , $newid );
$this -> app -> DB -> Update ( " UPDATE bestellung_position SET geliefert=0, mengemanuellgeliefertaktiviert=0,abgeschlossen='0',abgerechnet='0' WHERE bestellung=' $newid ' " );
$this -> app -> erp -> LoadSteuersaetzeWaehrung ( $newid , 'bestellung' );
$this -> app -> erp -> SchnellFreigabe ( 'bestellung' , $newid );
return $newid ;
}
public function LoadBestellungStandardwerte ( $id , $adresse )
{
// standard adresse von lieferant
$arr = $this -> app -> DB -> SelectArr ( " SELECT * FROM adresse WHERE id=' $adresse ' AND geloescht=0 LIMIT 1 " );
$rolle_projekt = $this -> app -> DB -> Select ( " SELECT parameter FROM adresse_rolle WHERE adresse=' $adresse ' AND subjekt='Lieferant' AND objekt='Projekt' AND (bis ='0000-00-00' OR bis <= NOW()) LIMIT 1 " );
if ( $rolle_projekt > 0 )
{
$arr [ 0 ][ 'projekt' ] = $rolle_projekt ;
}
$field = array ( 'anschreiben' , 'name' , 'abteilung' , 'unterabteilung' , 'strasse' , 'adresszusatz' , 'plz' , 'ort' , 'land' , 'ustid' , 'email' , 'telefon' , 'telefax' , 'lieferantennummer' , 'projekt' , 'ust_befreit' , 'titel' , 'lieferbedingung' , 'ansprechpartner' );
foreach ( $field as $key => $value )
{
if ( $value === 'projekt' && $this -> app -> Secure -> POST [ $value ] != '' && 0 )
{
$uparr [ $value ] = $this -> app -> Secure -> POST [ $value ];
} else {
$this -> app -> Secure -> POST [ $value ] = str_replace ( " ' " , ''' , $arr [ 0 ][ $value ]);
$uparr [ $value ] = str_replace ( " ' " , ''' , $arr [ 0 ][ $value ]);
}
//$this->app->Secure->POST[$value] = $arr[0][$value];
//$uparr[$value] = $arr[0][$value];
}
$uparr [ 'adresse' ] = $adresse ;
$this -> app -> DB -> UpdateArr ( 'bestellung' , $id , 'id' , $uparr );
$uparr = null ;
//liefernantenvorlage
$arr = $this -> app -> DB -> SelectArr ( " SELECT
kundennummerlieferant as kundennummer ,
zahlungsweiselieferant as zahlungsweise ,
zahlungszieltagelieferant as zahlungszieltage ,
zahlungszieltageskontolieferant as zahlungszieltageskonto ,
zahlungszielskontolieferant as zahlungszielskonto ,
versandartlieferant as versandart ,
waehrung
FROM adresse WHERE id = '$adresse' LIMIT 1 " );
// falls von Benutzer projekt ueberladen werden soll
$projekt_bevorzugt = $this -> app -> DB -> Select ( " SELECT projekt_bevorzugen FROM user WHERE id=' " . $this -> app -> User -> GetID () . " ' LIMIT 1 " );
if ( $projekt_bevorzugt == '1' )
{
$uparr [ 'projekt' ] = $this -> app -> DB -> Select ( " SELECT projekt FROM user WHERE id=' " . $this -> app -> User -> GetID () . " ' LIMIT 1 " );
$arr [ 0 ][ 'projekt' ] = $uparr [ 'projekt' ];
$this -> app -> Secure -> POST [ 'projekt' ] = $this -> app -> DB -> Select ( " SELECT abkuerzung FROM projekt WHERE id=' " . $arr [ 0 ][ 'projekt' ] . " ' AND id > 0 LIMIT 1 " );
}
$field = array ( 'kundennummer' , 'zahlungsweise' , 'zahlungszieltage' , 'zahlungszieltageskonto' , 'zahlungszielskonto' , 'versandart' , 'waehrung' );
foreach ( $field as $key => $value )
{
$uparr [ $value ] = $arr [ 0 ][ $value ];
$this -> app -> Secure -> POST [ $value ] = $arr [ 0 ][ $value ];
}
$this -> app -> DB -> UpdateArr ( 'bestellung' , $id , 'id' , $uparr );
//standardprojekt
//$projekt = $this->app->DB->Select("SELECT projekt FROM adresse WHERE id='$adresse' AND geloescht=0 LIMIT 1");
//$this->app->Secure->POST[projekt] = $projekt;
$this -> app -> erp -> LoadAdresseStandard ( 'bestellung' , $id , $adresse );
}
public function BestellungEAN ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$scanner = $this -> app -> Secure -> GetPOST ( " scanner " );
$menge = $this -> app -> Secure -> GetPOST ( " menge " );
$posAdd = $this -> app -> Secure -> GetPOST ( 'posadd' );
$posDel = $this -> app -> Secure -> GetPost ( 'posdel' );
/** @var ScanArticleService $scanArticleService */
$scanArticleService = $this -> app -> Container -> get ( 'ScanArticleService' );
$this -> BestellungMenu ();
$schreibschutz = $this -> app -> DB -> Select ( " SELECT schreibschutz FROM bestellung WHERE id=' $id ' LIMIT 1 " );
if ( $scanner != " " && $schreibschutz != " 1 " )
{
if ( ! is_numeric ( $menge )){
$menge = 1 ;
}
$adresse = $this -> app -> DB -> Select ( " SELECT adresse FROM bestellung WHERE id=' $id ' LIMIT 1 " );
try {
$scanArticleService -> writeArticleToSession ( 'bestellung' , $scanner , $menge , $id );
} catch ( ArticleNotFoundException $e ){
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" error \" > { |Der Artikel wurde nicht gefunden|}: " . $scanner . " </div> " );
} catch ( InvalidArgumentException $e ){
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" error \" > { |Fehler beim Schreiben in die Session|}</div> " );
}
}
if ( $schreibschutz == " 1 " ){
$this -> app -> Tpl -> Set ( 'TAB1' , " <div class= \" info \" >Der Schreibschutz ist aktiviert. Bitte entfernen Sie diesen.</div> " );
}
else {
if ( ! empty ( $posAdd )){
try {
$scanArticleService -> savePositions ( 'bestellung' , $id );
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" info \" > { |Positionen hinzugefügt|}</div> " );
} catch ( Exception $e ){
$this -> app -> Tpl -> Set ( 'MESSAGE' , " <div class= \" error \" > { |Positionen nicht gespeichert|}!</div> " );
}
}
if ( ! empty ( $posDel )){
$scanArticleService -> clearAllArticleDataInSession ( 'bestellung' );
}
$gescannteArtikel = $scanArticleService -> getAllArticleDataFromSession ( 'bestellung' );
if ( ! empty ( $gescannteArtikel )){
$table = new EasyTable ( $this -> app );
$table -> headings = [ 'Artikelnummer' , 'Artikel' , 'Menge' , 'Preis' ];
foreach ( $gescannteArtikel as $a ){
$row [ 'nummer' ] = $a [ 'number' ];
$row [ 'name' ] = $a [ 'name' ];
$row [ 'menge' ] = $a [ 'amount' ];
$row [ 'preis' ] = $a [ 'price' ];
if ( ! empty ( $row )){
$table -> AddRow ( $row );
}
}
$table -> DisplayNew ( 'GESCANNTEARTIKEL' , 'Preis' , 'noAction' );
$this -> app -> Tpl -> Set ( 'POSITIONENSPEICHERN' , '<input type="submit" id="posadd" name="posadd" value="Positionen hinzufügen"><input type="submit" id="posdel" name="posdel" value="Löschen">' );
}
$this -> app -> Tpl -> Parse ( 'TAB1' , " bestellung_ean.tpl " );
}
$this -> app -> Tpl -> Parse ( 'PAGE' , " tabview.tpl " );
}
}