0) grid_update(grid); confirm(data.count + ' Artikel zum Ordersatz hinzugefügt.'); } } function import_articles() { var source = document.getElementById('source'); if (!source) return false; var parms = 'source=' + source.innerHTML + '&callback=import'; ajax_request('function', parms, import_articles_callback); return false; } EOC; $buttons = <<    
Bei Abschluß wird ein Fax zu Metro und eine Kopie per Mail an den Koch geschickt.

EOC; function get_title($id) { global $db; $query = sprintf('SELECT name FROM metro_ordersatz WHERE id = %d', $id); $sth = $db->query($query); $row = $sth->fetch(); if ($row) return 'Ordersatz für ' . $row['name']; else return 'Unbekannter Ordersatz'; } # INSERT INTO metro_ordersatz_pos (ordersatz,artikel,sys_user,sys_edit) SELECT ORDERID,id,'joey',now() FROM metro_artikel; # DELETE FROM metro_ordersatz_pos WHERE ordersatz = ORDERID AND anzahl IS NULL $mask = array( 'table' => 'metro_ordersatz', 'join' => array('metro_ordersatz_pos ON ordersatz = metro_ordersatz.id', 'metro_artikel ON artikel = metro_artikel.id'), 'title' => get_title($_SESSION['ordersatz']), 'edit_title' => 'Ordersatz', 'where' => sprintf('ordersatz = %d AND owner = %d AND done IS NULL', $_SESSION['ordersatz'], $_SESSION['sys']['uid']), 'list' => array( 'id' => array( 'name' => 'ID', 'sql' => 'metro_artikel.id', 'visible' => false, ), 'anzahl' => array( 'name' => 'Anzahl', 'width' => 60, 'specs' => "ClassName: 'alignrightpad'", ), 'artnr' => array( 'name' => 'Artnr', 'width' => 60, 'visible' => false, ), 'menge' => array( 'name' => 'Menge', 'width' => 60, 'specs' => "ClassName: 'alignrightpad', filterUI: 't2'", ), 'bezeichnung' => array( 'name' => 'Bezeichnung', 'width' => 300, 'specs' => "filterUI: 't'", ), 'preis' => array( 'name' => 'Preis', 'width' => 60, 'type' => 'number', 'specs' => "decPlaces: 2, ClassName: 'alignrightpad'", 'sql' => '(SELECT preis * ((100 + steuersatz)/100) FROM metro_artikel_preis ' . 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)', ), 'datum' => array( 'name' => 'Datum', 'width' => 85, 'type' => 'text', 'sql' => '(SELECT datum FROM metro_artikel_preis ' . 'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)', 'visible' => false, ), 'hersteller' => array( 'name' => 'Hersteller', 'width' => 80, 'specs' => "filterUI: 't5'", ), 'vpe' => array( 'name' => 'Einheit', 'width' => 70, 'specs' => "ClassName: 'aligncenter', filterUI: 's'", 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_vpe','id','name').", 0, '')", 'distinct' => "SELECT DISTINCT vpe,metro_vpe.name FROM metro_artikel JOIN metro_vpe ON vpe = metro_vpe.id ORDER BY name", ), 'abteilung' => array( 'name' => 'Abteilung', 'width' => 80, 'specs' => "ClassName: 'aligncenter', filterUI: 's'", 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','name').", 0, '')", 'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.name FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY name", 'visible' => false, ), 'gang' => array( 'name' => 'Gang', 'width' => 50, 'sql' => 'abteilung', 'specs' => "ClassName: 'aligncenter', filterUI: 's'", 'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','gang').", 0, '')", 'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.gang FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY gang", 'visible' => false, ), ), 'edit' => array( 'buttons' => array( 'type' => 'html', 'code' => $buttons, 'sql' => false, ), ), 'callbacks' => array( 'cellsave' => cb_cellsave, 'pdf' => cb_pdf, 'send' => cb_send, 'import' => cb_import, ), 'files' => array( 'download' => process_download, ), 'buttons' => array( 'save' => false, 'insert' => false, 'delete' => false, 'changes' => false, ), ); function cb_cellsave() { global $db; if ($_POST['value'] == 0) $sql = sprintf("UPDATE metro_ordersatz_pos SET anzahl = NULL, sys_user = %s, sys_edit = now() WHERE ordersatz = %d AND artikel = %d", $db->quote($_SESSION['sys']['login']), $_SESSION['ordersatz'], $_POST['id']); else $sql = sprintf("UPDATE metro_ordersatz_pos SET anzahl = %d, sys_user = %s, sys_edit = now() WHERE ordersatz = %d AND artikel = %d", $_POST['value'], $db->quote($_SESSION['sys']['login']), $_SESSION['ordersatz'], $_POST['id']); $sth = $db->query($sql); } function cb_pdf() { $tmpdir = mk_tempdir(); $result = ordersatz_write($_SESSION['ordersatz'], $tmpdir, false); if ($result !== true) { error_log($tmpdir); error_log($result); return array('error' => $result); } return array('tmpdir' => substr($tmpdir,strlen($_SESSION['sys']['basedir']))); } function process_download() { if (strpos($_GET['tmpdir'], '..') !== false) return false; $fname = $_SESSION['sys']['basedir'] . $_GET['tmpdir'] . '/ordersatz.pdf'; if (!file_exists($fname) || !is_file($fname)) return 'File not found'; send_file($fname); rm_tempdir($_SESSION['sys']['basedir'] . $_GET['tmpdir']); } function cb_send() { $tmpdir = mk_tempdir(); $result = ordersatz_write($_SESSION['ordersatz'], $tmpdir, true); if ($result !== true) return array('error' => $result); rm_tempdir($tmpdir); return array('status' => true); } function cb_import() { global $db; $sql = sprintf("SELECT count(*) AS count FROM metro_ordersatz_pos WHERE ordersatz = %d", $_SESSION['ordersatz']); $sth = $db->query($sql); $row = $sth->fetch(); $old = $row['count']; $sql = sprintf("INSERT INTO metro_ordersatz_pos (ordersatz,artikel,sys_user,sys_edit) " . "SELECT %d,metro_artikel.id,%s,now() FROM metro_artikel " . "LEFT JOIN metro_ordersatz_pos ON artikel = metro_artikel.id AND ordersatz = %d " . "WHERE metro_ordersatz_pos.id IS NULL", $_SESSION['ordersatz'], $db->quote($_SESSION['sys']['login']), $_SESSION['ordersatz']); $db->query($sql); $sql = sprintf("SELECT count(*) AS count FROM metro_ordersatz_pos WHERE ordersatz = %d", $_SESSION['ordersatz']); $sth = $db->query($sql); $row = $sth->fetch(); $new = $row['count']; return array('status' => true, 'count' => $new - $old); } ?>