public function save()
 {
     $requirement_id = phpgw::get_var('id', 'int');
     $new_location_id = phpgw::get_var('location_id');
     if ($nonavbar = phpgw::get_var('nonavbar', 'bool')) {
         $GLOBALS['phpgw_info']['flags']['nonavbar'] = $nonavbar;
         $GLOBALS['phpgw_info']['flags']['noheader_xsl'] = true;
         $GLOBALS['phpgw_info']['flags']['nofooter'] = true;
     }
     if (!$this->read) {
         $GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 'logistic.uirequirement.view', 'id' => $requirement_id, 'nonavbar' => $nonavbar));
         return false;
         // in case redirect fail;
     }
     if ($requirement_id) {
         $requirement = $this->so->get_single($requirement_id);
         $old_location_id = $requirement->get_location_id();
     } else {
         $requirement = new logistic_requirement();
     }
     $requirement->populate();
     if ($requirement->validate()) {
         //				$db_requirement = $this->so->get_db();
         //				$db_requirement->transaction_begin();
         $GLOBALS['phpgw']->db->transaction_begin();
         $requirement_id = $this->so->store($requirement);
         $status_delete_values = true;
         if ($old_location_id > 0 && is_numeric($old_location_id) && $old_location_id != $new_location_id) {
             $status_delete_values = $this->so_requirement_value->delete_values($requirement_id);
             $status_delete_resources = $this->so_resource_allocation->delete_resources($requirement_id);
         }
         if ($requirement_id > 0 && $status_delete_values && $status_delete_resources) {
             //					$db_requirement->transaction_commit();
             $GLOBALS['phpgw']->db->transaction_commit();
         } else {
             $GLOBALS['phpgw']->db->transaction_commit();
             //					$db_requirement->transaction_abort();
         }
         $GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 'logistic.uirequirement.view', 'id' => $requirement_id, 'nonavbar' => $nonavbar));
     } else {
         $this->edit($requirement);
     }
 }