Example #1
0
 public static function UpdateProjectInfo($project_id, $data)
 {
     $db = Zend_Db_Table::getDefaultAdapter();
     $current_user = ProNav_Auth::getUserID();
     $orig = $db->query("SELECT * FROM projects WHERE project_id = ?", array($project_id))->fetchObject();
     $project = array('title' => $data['title'], 'stage_id' => $data['stage_id'], 'point_of_contact' => $data['point_of_contact'], 'schedule_not_before' => $data['schedule_not_before'], 'schedule_required_by' => $data['schedule_required_by'], 'ref_no' => $data['ref_no'], 'requested_by' => $data['requested_by'] ? $data['requested_by'] : new Zend_Db_Expr("NULL"), 'modified_by' => $current_user, 'modified_date' => new Zend_Db_Expr("NOW()"));
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_OVERVIEW_EDIT) && isset($data['done_for_corporation'])) {
         $project['done_for_corporation'] = $data['done_for_corporation'];
         $project['done_for_workgroup'] = $data['done_for_workgroup'];
         $project['done_at_location'] = $data['done_at_location'];
         $project['done_by_workgroup'] = $data['done_by_workgroup'];
     }
     if ($orig->done_for_corporation != $data['done_for_corporation']) {
         //Done for corporaton changed. Update Billing Info.
         $billing_info = Application_Model_Corporations::getBillingInfo($data['done_for_corporation']);
         $project['acct_billing_address1'] = $billing_info['billing_address1'];
         $project['acct_billing_address2'] = $billing_info['billing_address2'];
         $project['acct_billing_city'] = $billing_info['billing_city'];
         $project['acct_billing_state'] = $billing_info['billing_state'];
         $project['acct_billing_zip'] = $billing_info['billing_zip'];
         $project['acct_billing_phone'] = $billing_info['billing_phone'];
         $project['acct_billing_contact'] = $billing_info['billing_contact'];
         $project['acct_billing_notes'] = $billing_info['billing_notes'];
     }
     $db->update('projects', $project, $db->quoteInto('project_id = ?', $project_id));
     //if this is the first time you are going into the open stage, then set the status percent to 'started' per the requirements.
     if ($data['stage_id'] == ProNav_Utils::STAGE_OPEN && !Application_Model_Projects::hasBeenInStage($project_id, ProNav_Utils::STAGE_OPEN)) {
         $overall = Application_Model_ProjectTask::get_overall_task($project_id);
         $overall->add_new_status(Application_Model_ProgressOption::STATUS_TASK_STARTED);
     }
     //stage audit
     if ($orig->stage_id != $data['stage_id']) {
         $stage = array('project_id' => $project_id, 'stage_id' => $data['stage_id'], 'comment' => $data['stage_comment'], 'entered_by' => $current_user, 'entered_date' => new Zend_Db_Expr("NOW()"));
         $db->insert('project_stage_audit', $stage);
         if ($orig->stage_id == ProNav_Utils::STAGE_POTENTIAL) {
             if ($data['stage_id'] != ProNav_Utils::STAGE_CANCELLED) {
                 ProNav_Utils::registerEvent($project_id, 1, $data['stage_id'], $current_user, new Zend_Db_Expr('Now()'));
             }
         } else {
             ProNav_Utils::registerEvent($project_id, 2, $data['stage_id'], $current_user, new Zend_Db_Expr('Now()'));
         }
     }
 }
 public function viewAction()
 {
     $project_id = $this->_getParam('id');
     $this->view->selected_tab = $this->_getParam("tab");
     //PROJECT DATA
     $projectInfo = Application_Model_Projects::GetProjectInfo($project_id);
     if (!$projectInfo->project_id) {
         ProNav_Auth::unauthorized();
     }
     $this->view->open_projects = Application_Model_Projects::OpenProjectsCountAtLocation($projectInfo->done_at_location, $project_id);
     $this->view->active_projects = Application_Model_Projects::ActiveProjectsCountAtLocation($projectInfo->done_at_location, $project_id);
     $this->view->project_id = $projectInfo->project_id;
     $this->view->projectinfo = $projectInfo;
     $executed_cors = array();
     $cors = Application_Model_ChangeOrders::getRequestsForProject($project_id, true, true);
     foreach ($cors as $cor) {
         if ($cor->accounting_stage_id == Application_Model_ChangeOrderRequest::ACCT_EXECUTED) {
             $executed_cors[] = $cor;
         }
     }
     //Overview
     $this->view->general_info = $this->view->partial('project/partial-general-info.phtml', array('projectinfo' => $projectInfo, 'open_projects' => $this->view->open_projects, 'active_projects' => $this->view->active_projects));
     //Project Value
     if (!ProNav_Auth::isEmployee() || ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_VALUE_VIEW)) {
         $this->view->project_value = $this->view->partial('project/partial-project-value.phtml', array('base_project' => $projectInfo, 'original_contract_value' => $projectInfo->getProjectValue(), 'has_executed_cos' => count($executed_cors), 'executed_cos_value' => Application_Model_ChangeOrders::sumProjectValue($executed_cors), 'total_contract_value' => Application_Model_ChangeOrders::sumProjectValue($executed_cors, $projectInfo)));
     }
     //Material Location
     $this->view->material = $this->view->partial('project/material-location.phtml', array('projectinfo' => $projectInfo));
     //Scope of Work
     if (!ProNav_Auth::isEmployee() || ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_SCOPE_VIEW)) {
         $this->view->scope = $this->view->partial('project/scope.phtml', array('projectinfo' => $projectInfo));
     }
     //Accounting
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_ACCOUNTING_VIEW)) {
         $this->view->accounting = $this->view->partial('project/accounting.phtml', array('projectinfo' => $projectInfo));
     }
     //Work Acquisition/Sales
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_SALES_VIEW)) {
         $this->view->work_acquisition = $this->view->partial('project/acquisition.phtml', array('project' => $projectInfo));
     }
     //Tags
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_TAGS_GENERAL_ACCESS)) {
         $this->view->tagSelections = Application_Model_Tag::getTagsFor(Application_Model_Tag::OBJ_PROJECT, $project_id);
     }
     //Stage History
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_HISTORY_VIEW)) {
         $this->view->stagehistory = $this->view->partial('project/partial-stage-history.phtml', array('stagehistory' => Application_Model_Projects::getStageHistory($project_id)));
     }
     //Change Order Requests
     if (!ProNav_Auth::isEmployee() || ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_CHANGE_ORDER_VIEW)) {
         $this->view->cors = $this->view->partial('change-order/partial-request-table.phtml', array('projectInfo' => $projectInfo, 'cors' => $cors));
     }
     //Project Notes
     if (!ProNav_Auth::isEmployee() || ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_NOTES_VIEW)) {
         $this->view->project_notes = $this->getNotesModule($projectInfo->project_id);
     }
     //Customer Notes
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_CUSTOMER_NOTES)) {
         $this->view->customerNotes = Application_Model_Notes::getProjectRelevantNotes($projectInfo);
         $this->view->customerNotesTable = $this->view->partial('note/note-entity-project-stack.phtml', array('customerNotes' => $this->view->customerNotes, 'projectInfo' => $projectInfo));
     }
     //FILES
     if (!ProNav_Auth::isEmployee() || ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_FILES_VIEW_TAB)) {
         $rootFolder = Application_Model_FileFolders::getFolder(Application_Model_File::OBJ_PROJECT, $project_id, null, true);
         $this->view->files = $this->view->partial('file/partial-file-module.phtml', array('folder' => $rootFolder, 'obj_type' => Application_Model_File::OBJ_PROJECT, 'obj_id' => $project_id));
     }
     if (!ProNav_Auth::isEmployee() || ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_PROGRESS_VIEW_TAB)) {
         //Progress
         //Items only relevant once the project has reached an open status
         /*
         if ($projectInfo->isSecured()){
         $this->view->status = $this->view->partial('project/status.phtml',array('projectinfo'=>$projectInfo));
         }
         */
         //Project Tasks
         $this->view->project_tasks = $this->view->partial('project-tasks/view.phtml', array('task_groups' => Application_Model_ProjectTask::get_tasks_by_project_id($project_id), 'projectinfo' => $projectInfo, 'progress_options' => Application_Model_ProgressOptions::get(true, true)));
         //Punch Lists
         /*
         $this->view->project_punch_list = $this->view->partial('project-punch-list/view.phtml', array(
             'punch_list' => Application_Model_ProjectPunchList::get_items_by_project_id($project_id)
         
         ));
         */
         //Project Labor
         if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_LABOR_PROD_VIEW)) {
             $this->view->project_labor = $this->view->partial('project-labor/view.phtml', array('labor' => Application_Model_ProjectLabor::getLaborSummary($project_id)));
         }
         //Post Project Analysis (PPA)
         if ($projectInfo->isStatus100Percent() && ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_PPA_VIEW)) {
             $this->view->project_analysis = $this->view->partial('project-analysis/view.phtml', array('project_id' => $project_id, 'analysis' => Application_Model_ProjectAnalysisType::get_work_types_for_project($project_id)));
         }
     }
     //RFIS
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_RFI_VIEW)) {
         $rfis = Application_Model_RFIs::getRFIsForProject($project_id);
         $this->view->rfis = $this->view->partial('project/partial-rfis.phtml', array('rfis' => $rfis));
     }
     //Submittals
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_SUBMITTAL_VIEW)) {
         $submittals = Application_Model_Submittals::getSubmittalsForProject($project_id);
         $this->view->submittals = $this->view->partial('project/partial-submittals.phtml', array('submittals' => $submittals));
     }
     //Job Journals
     //since there can be hundreds of journals, don't get a deeply-populated array like rfis and submittals
     if (ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_JOURNAL_VIEW)) {
         $journal_log = Application_Model_Journals::getJournalsLog($project_id);
         $this->view->journals = $this->view->partial('project/partial-journals.phtml', array('journals' => $journal_log, 'project_id' => $project_id));
         $this->view->has_incomplete_journal = Application_Model_Journals::userHasIncomplete($journal_log);
     }
     //Project Team
     if (!ProNav_Auth::isEmployee() || ProNav_Auth::hasPerm(ProNav_Auth::PERM_PROJECTS_TEAM_VIEW)) {
         $projectTeam = Application_Model_Projects::getProjectTeam($project_id);
         $this->view->project_team = $this->view->partial('project/project-team.phtml', array('users' => $projectTeam));
         $this->view->userIsOnTeam = array_key_exists(ProNav_Auth::getUserID(), $projectTeam);
     }
     //Schedule
     //$this->view->schedule = $this->view->partial('project/schedule.phtml',array('projectinfo'=> $projectInfo));
 }