/**
  * Update the database values for an existing contract price item.
  * 
  * @param $price_item the contract price item to be updated
  * @return result receipt from the db operation
  */
 function update_contract_price_item(rental_contract_price_item $price_item)
 {
     $id = intval($price_item->get_id());
     $one_time = $price_item->get_is_one_time();
     $values = array('price_item_id = ' . $price_item->get_price_item_id(), 'contract_id = ' . $price_item->get_contract_id(), 'area = ' . str_replace(',', '.', $price_item->get_area()), 'count = ' . str_replace(',', '.', $price_item->get_count()), 'title = \'' . $price_item->get_title() . '\'', 'agresso_id = \'' . $price_item->get_agresso_id() . '\'', 'is_area = ' . ($price_item->is_area() ? "true" : "false"), 'is_one_time = ' . (isset($one_time) && ($price_item->is_one_time() || $price_item->get_is_one_time() == 1) ? "true" : "false"), 'price = ' . str_replace(',', '.', $price_item->get_price()));
     if ($price_item->is_area()) {
         //			var_dump('total_price = '.$price_item->get_area().'*'.$price_item->get_price());
         $values[] = 'total_price = ' . str_replace(',', '.', $price_item->get_area() * $price_item->get_price());
     } else {
         //			var_dump('total_price = '.$price_item->get_count().'*'.$price_item->get_price());
         $values[] = 'total_price = ' . str_replace(',', '.', $price_item->get_count() * $price_item->get_price());
     }
     if ($price_item->get_date_start()) {
         $values[] = 'date_start = ' . $this->marshal($price_item->get_date_start(), 'int');
     }
     if ($price_item->get_date_end()) {
         $values[] = 'date_end = ' . $this->marshal($price_item->get_date_end(), 'int');
     }
     $this->db->query('UPDATE rental_contract_price_item SET ' . join(',', $values) . " WHERE id={$id}", __LINE__, __FILE__);
     $receipt['id'] = $id;
     $receipt['message'][] = array('msg' => lang('Entity %1 has been updated', $entry['id']));
     return $receipt;
 }