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