public function save() { $flash = Flash::Instance(); $db = DB::Instance(); $db->StartTrans(); $errors = array(); $update_cost = false; if (isset($this->_data[$this->modeltype]['id']) && $this->_data[$this->modeltype]['id']) { $mfresource = new MFResource(); $mfresource->load($this->_data[$this->modeltype]['id']); $old_rate = $mfresource->resource_rate; $new_rate = $this->_data[$this->modeltype]['resource_rate']; $update_cost = $old_rate != $new_rate; } if (parent::save_model($this->modeltype, null, $errors)) { if ($update_cost) { $cc = new ConstraintChain(); $cc->add(new Constraint('mfresource_id', '=', $this->_data[$this->modeltype]['id'])); $db = DB::Instance(); $date = Constraint::TODAY; $between = $date . ' BETWEEN ' . $db->IfNull('start_date', $date) . ' AND ' . $db->IfNull('end_date', $date); $cc->add(new Constraint('', '', '(' . $between . ')')); $mfoperation = new MFOperation(); //$db->Debug(); $mfoperation_ids = array_keys($mfoperation->getAll($cc)); $stitem_ids = array(); foreach ($mfoperation_ids as $mfoperation_id) { if (!$mfoperation->load($mfoperation_id)) { $errors[] = 'Could not save latest costs'; $db->FailTrans(); break; } if (in_array($mfoperation->stitem_id, $stitem_ids)) { continue; } $stitem_ids[] = $mfoperation->stitem_id; } if (count($stitem_ids) > 0) { $stitem = new STItem(); } foreach ($stitem_ids as $stitem_id) { if (!$stitem->load($stitem_id)) { $errors[] = 'Could not save latest costs'; $db->FailTrans(); break; } $old_cost = $stitem->latest_lab; $stitem->calcLatestCost(); $new_cost = $stitem->latest_lab; if (bccomp($old_cost, $new_cost, $stitem->cost_decimals) == 0) { continue; } if (!$stitem->saveCosts() || !STCost::saveItemCost($stitem)) { $errors[] = 'Could not save latest costs'; $db->FailTrans(); break; } if (!$stitem->rollUp(STItem::ROLL_UP_MAX_LEVEL)) { $errors[] = 'Could not roll-up latest costs'; $db->FailTrans(); break; } } } } else { $errors[] = 'Could not save resource'; $db->FailTrans(); } $db->CompleteTrans(); if (count($errors) == 0) { sendTo($_SESSION['refererPage']['controller'], $_SESSION['refererPage']['action'], $_SESSION['refererPage']['modules'], isset($_SESSION['refererPage']['other']) ? $_SESSION['refererPage']['other'] : null); } else { $flash->addErrors($errors); $this->refresh(); } }
public function view() { if (!$this->loadData()) { $this->dataError(); sendBack(); } $resource = $this->_uses[$this->modeltype]; $this->view->set('model', $resource); $detail = new MFResource(); $detail->load($resource->resource_id); $resource->setAdditional('resource_rate'); $resource->resource_rate = $detail->resource_rate; $sidebar = new SidebarController($this->view); $sidebar->addList('Actions', array('new' => array('link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'new'), 'tag' => 'new_project_resource'), 'edit' => array('link' => array('modules' => $this->_modules, 'controller' => $this->name, 'action' => 'edit', 'id' => $resource->id), 'tag' => 'edit'))); $this->view->register('sidebar', $sidebar); $this->view->set('sidebar', $sidebar); }
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; } }