public function adjust_price() { if (!self::isExecutiveOfficer()) { $this->render('permission_denied.php'); return; } $id = (int) phpgw::get_var('price_item_id'); $new_price = phpgw::get_var('new_price'); $new_price = str_replace(',', '.', $new_price); if ($new_price != null && is_numeric($new_price)) { $price_item = rental_price_item::get($id); $price_item->set_price($new_price); if (rental_soprice_item::get_instance()->store($price_item)) { $adjustment = new rental_adjustment(); $adjustment->set_price_item_id($price_item->get_id()); $adjustment->set_new_price($new_price); $adjustment->set_year(date('Y')); $adjustment->set_percent(0); $adjustment->set_interval(0); $adjustment->set_responsibility_id($price_item->get_responsibility_id()); $adjustment->set_is_manual(true); $adjustment->set_adjustment_date(time()); rental_soadjustment::get_instance()->store($adjustment); $message[] = "Priselement med Agresso id {$price_item->get_agresso_id()} er oppdatert med ny pris {$new_price}"; //update affected contract_price_items $no_of_contracts_updated = rental_soprice_item::get_instance()->adjust_contract_price_items($id, $new_price); if ($no_of_contracts_updated > 0) { $message[] = $no_of_contracts_updated . ' priselementer på kontrakter er oppdatert'; } else { $message[] = "Ingen kontrakter er oppdatert"; } $data = array('price_item_id' => $id, 'message' => $message); self::set_active_menu('rental::contracts::price_item_list::manual_adjustment'); $this->render('admin_price_item_manual_adjustment.php', $data); } else { $data = array('price_item_id' => $id, 'error' => $error); self::set_active_menu('rental::contracts::price_item_list::manual_adjustment'); $this->render('admin_price_item_manual_adjustment.php', $data); } } else { $data = array('price_item_id' => $id, 'error' => lang('price_not_numeric')); self::set_active_menu('rental::contracts::price_item_list::manual_adjustment'); $this->render('admin_price_item_manual_adjustment.php', $data); } }