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', filterUI: 't'",
),
'artnr' => array(
'name' => 'Artnr',
'width' => 60,
'specs' => "filterUI: 't'",
'visible' => false,
),
'menge' => array(
'name' => 'Menge',
'width' => 60,
'specs' => "ClassName: 'alignrightpad', filterUI: 't'",
),
'bezeichnung' => array(
'name' => 'Bezeichnung',
'width' => 300,
'specs' => "filterUI: 't'",
),
'preis' => array(
'name' => 'Preis',
'width' => 60,
'type' => 'number',
'specs' => "decPlaces: 2, ClassName: 'alignrightpad', filterUI: 't'",
'sql' => '(SELECT preis * ((100 + steuersatz)/100) FROM metro_artikel_preis ' .
'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
),
'hersteller' => array(
'name' => 'Hersteller',
'width' => 80,
'specs' => "filterUI: 't'",
),
'vpe' => array(
'name' => 'Einheit',
'width' => 70,
'specs' => "ClassName: 'aligncenter', filterUI: 's'",
'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_vpe','id','name').", 0, '')",
),
'abteilung' => array(
'name' => 'Abteilung',
'width' => 80,
'specs' => "ClassName: 'aligncenter', filterUI: 's'",
'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','name').", 0, '')",
'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, '')",
'visible' => false,
),
),
'edit' => array(
'buttons' => array(
'type' => 'html',
'code' => $buttons,
'sql' => false,
),
),
'callbacks' => array(
'cellsave' => cb_cellsave,
'pdf' => cb_pdf,
'send' => cb_send,
),
'files' => array(
'download' => process_download,
),
'buttons' => array(
'save' => false,
'insert' => false,
'delete' => 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)
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);
}
?>