function read_single($workorder_id) { if (!$workorder_id) { return array(); } $contacts = CreateObject('property.sogeneric'); $contacts->get_location_info('vendor', false); $workorder = $this->so->read_single($workorder_id); $dateformat = $GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']; //Delay; $workorder['tender_delay'] = phpgwapi_datetime::get_working_days($workorder['tender_deadline'], $workorder['tender_received']); $workorder['end_date_delay'] = phpgwapi_datetime::get_working_days($workorder['end_date'], $workorder['inspection_on_completion']); //formtatting $workorder['start_date'] = $GLOBALS['phpgw']->common->show_date($workorder['start_date'], $dateformat); $workorder['end_date'] = $GLOBALS['phpgw']->common->show_date($workorder['end_date'], $dateformat); $workorder['tender_deadline'] = $GLOBALS['phpgw']->common->show_date($workorder['tender_deadline'], $dateformat); $workorder['tender_received'] = $GLOBALS['phpgw']->common->show_date($workorder['tender_received'], $dateformat); $workorder['inspection_on_completion'] = $GLOBALS['phpgw']->common->show_date($workorder['inspection_on_completion'], $dateformat); if (isset($workorder['vendor_id']) && $workorder['vendor_id']) { $custom = createObject('property.custom_fields'); $vendor['attributes'] = $custom->find('property', '.vendor', 0, '', 'ASC', 'attrib_sort', true, true); $vendor = $contacts->read_single(array('id' => $workorder['vendor_id']), $vendor); foreach ($vendor['attributes'] as $attribute) { if ($attribute['name'] == 'org_name') { $workorder['vendor_name'] = $attribute['value']; } if ($attribute['name'] == 'email') { $workorder['vendor_email'] = $attribute['value']; } } } $workorder['b_account_name'] = $this->so->get_b_account_name($workorder['b_account_id']); $config = CreateObject('phpgwapi.config', 'property'); $config->read(); $tax = 1 + $config->config_data['fm_tax'] / 100; $workorder['calculation'] = $workorder['calculation'] * $tax; $vfs = CreateObject('phpgwapi.vfs'); $vfs->override_acl = 1; $workorder['files'] = $vfs->ls(array('string' => "/property/workorder/{$workorder_id}", 'relatives' => array(RELATIVE_NONE))); $vfs->override_acl = 0; $j = count($workorder['files']); for ($i = 0; $i < $j; $i++) { $workorder['files'][$i]['file_name'] = urlencode($workorder['files'][$i]['name']); } $workorder['origin'] = $this->interlink->get_relation('property', '.project.workorder', $workorder_id, 'origin'); $workorder['target'] = $this->interlink->get_relation('property', '.project.workorder', $workorder_id, 'target'); if ($workorder['location_code']) { $solocation = CreateObject('property.solocation', $this->bocommon); $workorder['location_data'] = $solocation->read_single($workorder['location_code']); } if ($workorder['tenant_id'] > 0) { $tenant_data = $this->bocommon->read_single_tenant($workorder['tenant_id']); $workorder['location_data']['tenant_id'] = $workorder['tenant_id']; $workorder['location_data']['contact_phone'] = $tenant_data['contact_phone']; $workorder['location_data']['last_name'] = $tenant_data['last_name']; $workorder['location_data']['first_name'] = $tenant_data['first_name']; } else { unset($workorder['location_data']['tenant_id']); unset($workorder['location_data']['contact_phone']); unset($workorder['location_data']['last_name']); unset($workorder['location_data']['first_name']); } if ($workorder['p_num']) { $soadmin_entity = CreateObject('property.soadmin_entity'); $category = $soadmin_entity->read_single_category($workorder['p_entity_id'], $workorder['p_cat_id']); $workorder['p'][$workorder['p_entity_id']]['p_num'] = $workorder['p_num']; $workorder['p'][$workorder['p_entity_id']]['p_entity_id'] = $workorder['p_entity_id']; $workorder['p'][$workorder['p_entity_id']]['p_cat_id'] = $workorder['p_cat_id']; $workorder['p'][$workorder['p_entity_id']]['p_cat_name'] = $category['name']; } $event_criteria = array('appname' => 'property', 'location' => '.project.workorder', 'location_item_id' => $workorder_id); $events = execMethod('property.soevent.read_at_location', $event_criteria); $workorder['event_id'] = $events ? $events[0]['id'] : ''; return $workorder; }
/** * Show project that is overdue * * @return void */ public function home_project_overdue_end_date() { $accound_id = $GLOBALS['phpgw_info']['user']['account_id']; $save_app = $GLOBALS['phpgw_info']['flags']['currentapp']; $GLOBALS['phpgw_info']['flags']['currentapp'] = 'property'; $maxmatches = $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs']; $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'] = 5; $prefs = $GLOBALS['phpgw_info']['user']['preferences']; if (isset($prefs['property']['mainscreen_show_project_overdue']) && $prefs['property']['mainscreen_show_project_overdue'] == 'yes') { $soproject = CreateObject('property.soproject'); $values = $soproject->read(array('filter' => $accound_id, 'overdue' => time())); $total_records = $soproject->total_records; $portalbox = CreateObject('phpgwapi.listbox', array('title' => lang('end date delay') . " ({$total_records})", 'primary' => $GLOBALS['phpgw_info']['theme']['navbar_bg'], 'secondary' => $GLOBALS['phpgw_info']['theme']['navbar_bg'], 'tertiary' => $GLOBALS['phpgw_info']['theme']['navbar_bg'], 'width' => '100%', 'outerborderwidth' => '0', 'header_background_image' => $GLOBALS['phpgw']->common->image('phpgwapi', 'bg_filler', '.png', False))); $app_id = $GLOBALS['phpgw']->applications->name2id('property'); if (!isset($GLOBALS['portal_order']) || !in_array($app_id, $GLOBALS['portal_order'])) { $GLOBALS['portal_order'][] = $app_id; } $var = $this->get_controls($app_id); foreach ($var as $key => $value) { // $portalbox->set_controls($key,$value); } foreach ($values as $entry) { $entry['delay'] = ceil(phpgwapi_datetime::get_working_days($entry['end_date'], time())); $portalbox->data[] = array('text' => "Forsinkelse: {$entry['delay']} dager :: prosjekt nr:{$entry['project_id']} :: {$entry['location_code']} :: {$entry['address']}", 'link' => $GLOBALS['phpgw']->link('/index.php', array('menuaction' => 'property.uiproject.edit', 'id' => $entry['project_id'], 'tab' => 'budget'))); } echo "\n" . '<!-- BEGIN ticket info -->' . "\n<div class='property_tickets' style='padding-left: 10px;'>" . $portalbox->draw() . "</div>\n" . '<!-- END ticket info -->' . "\n"; unset($tts); unset($portalbox); unset($category_name); unset($default_status); } $GLOBALS['phpgw_info']['flags']['currentapp'] = $save_app; $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'] = $maxmatches; }
private function update_ticket($id, $project, $values_attribute) { $_finnish_date = (int) $project['end_date']; if (!$_finnish_date) { return; } $finnish_date = $_finnish_date; $note = 'FerdigDato er automatisk til prosjekt sluttDato'; if ($project['b_account_id'] == 48) { //search for 2 working day delay for ($i = 2; $i < 10; $i++) { $finnish_date = $_finnish_date + 86400 * $i; $working_days = phpgwapi_datetime::get_working_days($_finnish_date, $finnish_date); if ($working_days == 2) { $note = 'FerdigDato er automatisk oppdatert til 2 virkedager etter prosjekt sluttDato'; break; } } } $this->db->query("SELECT status, finnish_date, finnish_date2 FROM fm_tts_tickets WHERE id='{$id}'", __LINE__, __FILE__); $this->db->next_record(); $status = $this->db->f('status'); /** * Kun oppdatere åpne meldinger */ if ($status == 'X') { return; } $oldfinnish_date = (int) $this->db->f('finnish_date'); $oldfinnish_date2 = (int) $this->db->f('finnish_date2'); $update = false; if ($oldfinnish_date && $finnish_date && $oldfinnish_date2 != $finnish_date) { $this->db->query("UPDATE fm_tts_tickets SET finnish_date2='{$finnish_date}' WHERE id='{$id}'", __LINE__, __FILE__); $old_value = $oldfinnish_date2; $update = true; } else { if (!$oldfinnish_date && $finnish_date && $oldfinnish_date != $finnish_date) { $this->db->query("UPDATE fm_tts_tickets SET finnish_date='{$finnish_date}' , finnish_date2='{$finnish_date}' WHERE id='{$id}'", __LINE__, __FILE__); $old_value = $oldfinnish_date; $update = true; } } if ($update) { $fields_updated = array('finnish_date'); $this->historylog->add('F', $id, $finnish_date, $old_value); $this->historylog->add('C', $id, $note); $this->botts->mail_ticket($id, $fields_updated, $receipt = array(), $project['location_code'], false, true); phpgwapi_cache::message_set(lang('finnish date changed'), 'message'); } }