false, 'error' => 'Unknown data type "'.$_POST['data_type'].'" for this call'); } return array('status' => true); } function korrektur_delete($mask) { if (!empty($_POST['table']) && is_array($mask['tables_delete']) && in_array($_POST['table'], $mask['tables_delete'])) return delete_or_copy_row($_POST['table'],$_POST['id']); $id = $_POST['id']; $subtables = array('einsatzpersonal','einsatzgeraete'); foreach ($subtables as $table) { $sql = sprintf("SELECT id FROM %s WHERE einsatz = %d", $table, $id); $sth = pg_query($sql); $row = pg_fetch_assoc($sth); $ret = delete_or_copy_row($table, $row['id']); if ($ret['status'] !== true) return $ret; } return delete_or_copy_row($mask['table'], $id); } function gebiete() { $sql = "SELECT id,gebiet FROM gebiet ORDER BY id"; $sth = pg_query($sql); $result = array(); while ($row = pg_fetch_assoc($sth)) $result[] = sprintf("%d: '%s'", $row['id'], $row['gebiet']); return '{' . implode(', ', $result) . '}'; } $mask = array( 'table' => 'einsatz', 'tables_delete' => array('einsatzpersonal','einsatzgeraete'), 'title' => 'Korrektur von Arbeitsberichten', 'join' => array( 'kostenstellen ON einsatz.kostenstelle = kostenstellen.id', ), 'list' => array( 'id' => array( 'name' => 'ID', 'sql' => 'einsatz.id', 'width' => 60, 'visible' => false, ), 'datum' => array( 'name' => 'Datum', 'type' => 'date', 'width' => 70, 'specs' => "filterUI: 't'", ), 'gebiet' => array( 'name' => 'Gebiet', 'width' => 230, 'sql' => 'einsatz.gebiet', 'control' => "new Rico.TableColumn.lookup(".gebiete().", 0, '')", 'specs' => "filterUI: 's'", ), 'kostenstelle' => array( 'name' => 'Kostenstelle', 'width' => 230, 'sql' => 'kostenstellen.kostenstelle', 'specs' => "filterUI: 't'", ), 'personal' => array( 'name' => 'Personal', 'width' => 230, 'sql' => "(SELECT name || ', ' || vorname FROM personal " . "JOIN einsatzpersonal ON einsatzpersonal.personal = personal.id " . "WHERE einsatzpersonal.einsatz = einsatz.id LIMIT 1)", 'specs' => "filterUI: 't'", ), 'controla' => array( 'name' => 'Personal', 'width' => 70, 'control' => "new Rico.TableColumn.link('javascript:personal_load({0})')", 'specs' => "ClassName: 'aligncenter', canSort: false", 'sql' => "'bearbeiten'", ), 'controlb' => array( 'name' => 'Geräte', 'width' => 70, 'control' => "new Rico.TableColumn.link('javascript:geraete_load({0})')", 'specs' => "ClassName: 'aligncenter', canSort: false", 'sql' => "'bearbeiten'", ), 'controlc' => array( 'name' => 'Einsatz', 'width' => 70, 'control' => "new Rico.TableColumn.link('javascript:einsatz_load({0})')", 'specs' => "ClassName: 'aligncenter', canSort: false", 'sql' => "'bearbeiten'", ), ), 'edit' => array(), 'save' => korrektur_save, 'delete' => korrektur_delete, 'buttons' => array( 'insert' => false, ), 'info' => array( 'einheit' => array( 'sql' => 'SELECT einheiten.einheit FROM einheiten ' . 'JOIN materialien ON materialien.einheit = einheiten.id ' . 'WHERE materialien.id = {id}', ), 'einsatz' => array( 'sql' => "SELECT id,ordnung,datum,kostenstelle,gebiet,arbeiten,akkord,bemerkung " . 'FROM einsatz ' . 'WHERE id = {id}', ), 'einsatzpersonal' => array( 'sql' => "SELECT id,personal,stunden " . 'FROM einsatzpersonal ' . 'WHERE einsatz = {id}', ), 'einsatzgeraete' => array( 'sql' => "SELECT id,geraet,anbaugeraet,stunden " . 'FROM einsatzgeraete ' . 'WHERE einsatz = {id}', ), 'gebiete' => array( 'sql' => 'SELECT id,gebiet AS text FROM gebiet ORDER BY text', ), 'kostenstellen' => array( 'sql' => 'SELECT id,kostenstelle AS text FROM kostenstellen WHERE gebiet = {gebiet} ORDER BY text', ), 'ordnungen' => array( 'sql' => 'SELECT id,name AS text FROM ordnungen ORDER BY text', ), 'arbeiten' => array( 'sql' => 'SELECT id,arbeitsart AS text FROM arbeitsarten ORDER BY text', ), 'mitarbeiter' => array( 'sql' => 'SELECT id,name || \', \' || vorname AS text FROM personal WHERE aktiv = 1 ORDER BY text', ), 'geraete' => array( 'sql' => 'SELECT id,geraet AS text FROM gerate ORDER BY text', ), 'anbaugeraete' => array( 'sql' => 'SELECT anbaugeraete.id,anbaugeraet as text FROM anbaugeraete ' . 'JOIN gerate ON anbaugeraete.geraetetyp = gerate.geraetetyp ' . 'WHERE gerate.id = {geraet} ORDER BY text', ), ), ); ?>