public function getItemDetail($_budget_item_id = '', $_budget_item_type = '') { if (!empty($this->_data['budget_item_id'])) { $_budget_item_id = $this->_data['budget_item_id']; } if (!empty($this->_data['budget_item_type'])) { $_budget_item_type = $this->_data['budget_item_type']; } $uom_id = ''; switch ($_budget_item_type) { case 'R': $budgetitem = new SOProductline(); $budgetitem->load($_budget_item_id); $uom_id = $budgetitem->stuom_id; $cost_rate = 0; $setup_cost = 0; $charge_rate = $budgetitem->price; $setup_charge = 0; break; case 'E': $budgetitem = new ProjectEquipment(); $budgetitem->load($_budget_item_id); $uom_id = $budgetitem->uom_id; $cost_rate = $budgetitem->cost_rate; $setup_cost = $budgetitem->setup_cost; $charge_rate = 0; $setup_charge = 0; break; case 'M': $budgetitem = new STItem(); $budgetitem->load($_budget_item_id); $uom_id = $budgetitem->uom_id; $cost_rate = $budgetitem->latest_cost; $setup_cost = 0; $charge_rate = 0; $setup_charge = 0; break; case 'L': $budgetitem = new MFResource(); $budgetitem->load($_budget_item_id); $cost_rate = $budgetitem->resource_rate; $uom_id = 11; $setup_cost = 0; $charge_rate = 0; $setup_charge = 0; break; default: $budgetitem = false; } if ($budgetitem && $budgetitem->isLoaded()) { $output['description'] = array('data' => $budgetitem->getIdentifierValue(), 'is_array' => false); $output['uom_id'] = array('data' => $uom_id, 'is_array' => false); $output['cost_rate'] = array('data' => $cost_rate, 'is_array' => false); $output['setup_cost'] = array('data' => $setup_cost, 'is_array' => false); $output['charge_rate'] = array('data' => $charge_rate, 'is_array' => false); $output['setup_charge'] = array('data' => $setup_charge, 'is_array' => false); } else { $output['description'] = array('data' => '', 'is_array' => false); $output['uom_id'] = array('data' => '', 'is_array' => false); $output['cost_rate'] = array('data' => 0, 'is_array' => false); $output['setup_cost'] = array('data' => 0, 'is_array' => false); $output['charge_rate'] = array('data' => 0, 'is_array' => false); $output['setup_charge'] = array('data' => 0, 'is_array' => false); } if (isset($this->_data['ajax'])) { $this->view->set('data', $output); $this->setTemplateName('ajax_multiple'); } else { return $output; } }
public function save() { $flash = Flash::Instance(); $errors = array(); if (isset($this->_data['Task']['start_date'])) { $start_date = $this->_data['Task']['start_date']; $start_date_hours = !empty($this->_data['Task']['start_date_hours']) ? $this->_data['Task']['start_date_hours'] : '00'; $start_date_minutes = !empty($this->_data['Task']['start_date_minutes']) ? $this->_data['Task']['start_date_minutes'] : '00'; $this->_data['Task']['start_date'] = $start_date . ' ' . $start_date_hours . ':' . $start_date_minutes; } if (isset($this->_data['Task']['end_date']) && $this->_data['Task']['end_date'] != '') { $end_date = $this->_data['Task']['end_date']; $end_date_hours = !empty($this->_data['Task']['end_date_hours']) ? $this->_data['Task']['end_date_hours'] : '00'; $end_date_minutes = !empty($this->_data['Task']['end_date_minutes']) ? $this->_data['Task']['end_date_minutes'] : '00'; $this->_data['Task']['end_date'] = $end_date . ' ' . $end_date_hours . ':' . $end_date_minutes; } else { if (isset($this->_data['Task']['start_date'])) { $this->_data['Task']['end_date'] = $this->_data['Task']['start_date']; } } if (!empty($this->_data['Task']['project_id'])) { $project = new Project(); $project->load($this->_data['Task']['project_id']); if ($project->isLoaded()) { if (strtotime(fix_date($start_date)) < strtotime($project->start_date)) { $errors['start_date'] = 'Start date before Project start date'; } if (strtotime(fix_date($end_date)) > strtotime($project->end_date)) { $errors['end_date'] = 'End date after Project end date'; } } } if (!isset($this->_data['Task']['progress'])) { $this->_data['Task']['progress'] = 0; } if (isset($this->_data['Task']['duration']) && !empty($this->_data['Task']['duration'])) { if ($this->_data['Task']['duration_unit'] == 'days') { $this->_data['Task']['duration'] = $this->_data['Task']['duration'] * SystemCompanySettings::DAY_LENGTH; } $this->_data['Task']['duration'] .= ' hours'; } if (!isset($this->_data['Task']['equipment_id']) || !is_numeric($this->_data['Task']['equipment_id'])) { $this->_data['Task']['equipment_hourly_cost'] = null; $this->_data['Task']['equipment_setup_cost'] = null; } else { if (isset($this->_data['Task']['equipment_id']) && is_numeric($this->_data['Task']['equipment_id'])) { if (!is_numeric($this->_data['Task']['equipment_hourly_cost']) && !is_numeric($this->_data['Task']['equipment_setup_cost'])) { // Autocomplete $equipment = new ProjectEquipment(); $equipment->load($this->_data['Task']['equipment_id']); $this->_data['Task']['equipment_hourly_cost'] = $equipment->hourly_cost; $this->_data['Task']['equipment_setup_cost'] = $equipment->setup_cost; } } } $db = DB::Instance(); if (!isset($this->_data['Task']['ignore']) && isset($this->_data['Task']['equipment_id']) && $this->_data['Task']['equipment_id'] != '') { $period = array('start_date' => $this->_data['Task']['start_date'], 'end_date' => $this->_data['Task']['end_date']); $q = "\n\t\t\tSELECT\n\t\t\t\t(t.start_date, t.end_date)\n\t\t\tOVERLAPS\n\t\t\t\t(DATE " . $db->qstr($period['start_date']) . ", DATE " . $db->qstr($period['end_date']) . ")\n\t\t\tAS\n\t\t\t\tconflict\n\t\t\tFROM\n\t\t\t\ttasks t\n\t\t\tWHERE\n\t\t\t\tt.equipment_id=" . $db->qstr($this->_data['Task']['equipment_id']) . "\n\t\t\tGROUP BY\n\t\t\t\tconflict\n\t\t\t;"; $conflicts = $db->GetArray($q); if (count($conflicts) == 2 || $conflicts[0]['conflict'] == 't') { $q = "SELECT name FROM project_equipment e WHERE e.id = " . $db->qstr($this->_data['Task']['equipment_id']) . ";"; $name = $db->GetOne($q); $flash->addError($name . ' is already allocated to another task at this time.'); $this->_data['id'] = $this->_data['Task']['id']; $this->view->set('conflict', 'true'); $this->edit(); return; } } if (count($errors) == 0 && parent::save('Task', '', $errors)) { if (isset($this->_data['Task']['referrer_view'])) { sendTo('index', $this->_data['Task']['referrer_view'], array('calendar')); } else { if (isset($this->_data['original_action']) && in_array($this->_data['original_action'], array('dayview', 'weekview', 'monthview'))) { sendTo('index', $this->_data['original_action'], 'calendar'); } else { sendTo($_SESSION['refererPage']['controller'], $_SESSION['refererPage']['action'], $_SESSION['refererPage']['modules'], isset($_SESSION['refererPage']['other']) ? $_SESSION['refererPage']['other'] : null); } } } else { $flash->addErrors($errors); $this->_data['id'] = $this->_data['Task']['id']; $this->_data['project_id'] = $this->_data['Task']['project_id']; $this->refresh(); } }
public function getEquipmentDetail($_equipment_id) { if (!empty($this->_data['project_equipment_id'])) { $_equipment_id = $this->_data['project_equipment_id']; } $projectequipment = new ProjectEquipment(); $projectequipment->load($_equipment_id); if (isset($this->_data['ajax'])) { $output['setup_charge'] = array('data' => $projectequipment->setup_cost, 'is_array' => false); $output['charge_rate'] = array('data' => $projectequipment->hourly_cost, 'is_array' => false); $this->view->set('data', $output); $this->setTemplateName('ajax_multiple'); } else { return $projectequipment; } }