5 post_save = materialverbrauch_post_save;
6 pre_insert = materialverbrauch_pre_insert;
8 function materialverbrauch_post_save()
10 var einsatz = document.getElementById('edit_einsatz');
12 var params = 'source=' + grid.tableId.substr(5) + '&id=' + einsatz.value;
13 ajax_request('details', params, details_callback);
15 var material = document.getElementById('edit_material');
16 material.selectedIndex = 0;
19 function materialverbrauch_pre_insert()
21 var material = document.getElementById('edit_material');
22 var einsatz = document.getElementById('edit_einsatz');
23 var menge = document.getElementById('edit_menge');
25 if (!material.options[material.selectedIndex].value.length) {
26 alert('Sie haben kein Material ausgewählt.');
30 if (!einsatz.value.length) {
31 alert('Sie haben keinen Einsatzbericht ausgewählt.');
35 if (!menge.value.length) {
36 alert('Sie haben keine Menge angegeben.');
43 function einheit_callback(data)
45 var einheit = document.getElementById('edit_einheit');
47 if (!einheit) return false;
49 if (data.info[0].einheit.length)
50 einheit.innerHTML = data.info[0].einheit;
53 function select_material(obj)
55 get_info('einheit', {id: obj.options[obj.selectedIndex].value}, einheit_callback);
60 function fetch_tbody()
62 $sql = 'SELECT materialien.material,menge,einheiten.einheit FROM materialverbrauch '
63 . 'JOIN materialien ON materialverbrauch.material = materialien.id '
64 . 'JOIN einheiten ON materialien.einheit = einheiten.id '
65 . 'WHERE einsatz = ' . intval($_POST['id']) . ' '
66 . 'ORDER BY materialien.material';
68 $data = query_db($sql);
71 foreach ($data as $row)
72 $ret .= sprintf('<tr><td>%s</td><td align="right">%.2f %s</td></tr>',
73 $row['material'], $row['menge'], $row['einheit']);
80 'title' => 'Materialverbrauch zu Arbeitsberichten',
82 'kostenstellen ON einsatz.kostenstelle = kostenstellen.id',
83 'gebiet ON kostenstellen.gebiet = gebiet.id',
88 'sql' => 'einsatz.id',
100 'sql' => 'gebiet.gebiet',
102 'kostenstelle' => array(
103 'name' => 'Kostenstelle',
105 'sql' => 'kostenstellen.kostenstelle',
108 'name' => 'Material',
110 'control' => "new Rico.TableColumn.checkbox('t','f','0',true)",
111 'sql' => '(SELECT count(*) > 0 FROM materialverbrauch WHERE einsatz = einsatz.id)',
112 'specs' => "ClassName: 'aligncenter', canSort: false",
116 'html' => '<table id="materialverbrauch_table" cellspacing="0" style="margin-top: -13px;" border="0" width="100%">'.
118 '<tr bgcolor="#ffd76d" style="color: #444;"><th>Material</th><th>Menge</th></tr>'.
120 '<tbody id="detail_materialverbrauch_tbody"></tbody>'.
123 'materialverbrauch_tbody' => array(
124 'fetch' => fetch_tbody,
128 'edit_title' => 'Materialverbrauch vermerken',
129 'edit_table' => 'materialverbrauch',
138 'name' => 'Material',
140 'options' => 'SELECT id,material AS text FROM materialien ORDER BY text',
141 'option_empty' => 'Bitte wählen Sie',
142 'onchange' => 'select_material(this)',
149 'comment' => ' <span id="edit_einheit"></span>',
160 'sql' => 'SELECT einheiten.einheit FROM einheiten ' .
161 'JOIN materialien ON materialien.einheit = einheiten.id ' .
162 'WHERE materialien.id = {id}',