Add empty default option
[misc/kostenrechnung] / masks / materialverbrauch.php
index c5079bf..4e76f76 100644 (file)
@@ -2,6 +2,44 @@
 
 $jscode[] = <<<EOC
 
+post_save = materialverbrauch_post_save;
+pre_insert = materialverbrauch_pre_insert;
+
+function materialverbrauch_post_save()
+{
+  var einsatz = document.getElementById('edit_einsatz');
+
+  var params = 'source=' + grid.tableId.substr(5) + '&id=' + einsatz.value;
+  ajax_request('details', params, details_callback);
+
+  var material = document.getElementById('edit_material');
+  material.selectedIndex = 0;
+}
+
+function materialverbrauch_pre_insert()
+{
+  var material = document.getElementById('edit_material');
+  var einsatz = document.getElementById('edit_einsatz');
+  var menge = document.getElementById('edit_menge');
+
+  if (!material.options[material.selectedIndex].value.length) {
+    alert('Sie haben kein Material ausgewählt.');
+    return false;
+  }
+
+  if (!einsatz.value.length) {
+    alert('Sie haben keinen Einsatzbericht ausgewählt.');
+    return false;
+  }
+
+  if (!menge.value.length) {
+    alert('Sie haben keine Menge angegeben.');
+    return false;
+  }
+
+  return true;
+}
+
 function einheit_callback(data)
 {
   var einheit = document.getElementById('edit_einheit');
@@ -24,7 +62,8 @@ function fetch_tbody()
   $sql = 'SELECT materialien.material,menge,einheiten.einheit FROM materialverbrauch '
     . 'JOIN materialien ON materialverbrauch.material = materialien.id '
     . 'JOIN einheiten ON materialien.einheit = einheiten.id '
-    . 'WHERE einsatz = ' . intval($_POST['id']);
+    . 'WHERE einsatz = ' . intval($_POST['id']) . ' '
+    . 'ORDER BY materialien.material';
 
   $data = query_db($sql);
 
@@ -39,11 +78,15 @@ function fetch_tbody()
 $mask = array(
              'table' => 'einsatz',
              'title' => 'Materialverbrauch zu Arbeitsberichten',
-             'join' => array('kostenstellen ON einsatz.kostenstelle = kostenstellen.id'),
+             'join' => array(
+                             'kostenstellen ON einsatz.kostenstelle = kostenstellen.id',
+                             'gebiet ON kostenstellen.gebiet = gebiet.id',
+                             ),
              'list' => array(
                              'id' => array(
                                            'name' => 'ID',
                                            'sql' => 'einsatz.id',
+                                           'width' => 60,
                                            'visible' => false,
                                            ),
                              'datum' => array(
@@ -51,6 +94,11 @@ $mask = array(
                                            'type' => 'date',
                                            'width' => 70,
                                            ),
+                             'gebiet' => array(
+                                           'name' => 'Gebiet',
+                                           'width' => 230,
+                                           'sql' => 'gebiet.gebiet',
+                                           ),
                              'kostenstelle' => array(
                                            'name' => 'Kostenstelle',
                                            'width' => 230,
@@ -90,6 +138,7 @@ $mask = array(
                                            'name' => 'Material',
                                            'type' => 'select',
                                            'options' => 'SELECT id,material AS text FROM materialien ORDER BY text',
+                                           'option_empty' => 'Bitte wählen Sie',
                                            'onchange' => 'select_material(this)',
                                            'sql' => false,
                                            ),