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;
     }
 }
Example #2
0
 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;
     }
 }