コード例 #1
0
ファイル: Commission.php プロジェクト: houzhenggang/cobalt
 /**
  * Get monthly commission data for member
  * @param $id to search for
  * @return mixed $results
  */
 public function getMonthlyCommissionData($id)
 {
     //get current month
     $current_month = DateHelper::formatDBDate(date('Y-m-01 00:00:00'));
     //get weeks in month
     $weeks = DateHelper::getWeeksInMonth($current_month);
     //get stage id to filter deals by
     $won_stage_ids = DealHelper::getWonStages();
     //gen query
     $results = array();
     foreach ($weeks as $week) {
         $start_date = $week['start_date'];
         $end_date = $week['end_date'];
         //flush query
         $query = $this->db->getQuery(true)->select("d.owner_id, SUM(d.amount) AS y")->from("#__deals AS d")->where("d.stage_id IN (" . implode(',', $won_stage_ids) . ")")->where("d.modified >= '{$start_date}'")->where("d.modified < '{$end_date}'")->where("d.modified IS NOT NULL")->where("d.owner_id={$id}")->group("d.owner_id")->where("d.published>0");
         $results[] = $this->db->setQuery($query)->loadAssoc();
     }
     //clean data for commission rate
     foreach ($results as $key => $result) {
         $commission_rate = UsersHelper::getCommissionRate($result['owner_id']);
         $results[$key]['y'] = (int) $result['y'] * ($commission_rate / 100);
     }
     return $results;
 }
コード例 #2
0
ファイル: Revenue.php プロジェクト: houzhenggang/cobalt
 /**
  * Get Monthly Revenue
  * @param $access_type we want to filter by 'member','team','company'
  * @param $access_id the id of the $access_type we want to filter by
  * @return mixed $results
  */
 public function getMonthlyRevenue($access_type = null, $access_id = null)
 {
     //get db
     $db = JFactory::getDBO();
     $query = $db->getQuery(true);
     //get current month
     $current_month = DateHelper::formatDBDate(date('Y-m-01 00:00:00'));
     //get weeks in month
     $weeks = DateHelper::getWeeksInMonth($current_month);
     //get stage id to filter deals by
     $won_stage_ids = DealHelper::getWonStages();
     //gen query
     $data = new \stdClass();
     $data->labels = array();
     $data->datasets = array();
     $totals = array();
     foreach ($weeks as $week) {
         $start_date = $week['start_date'];
         $end_date = $week['end_date'];
         $weekDate = new \DateTime($start_date . ' +2 day');
         $data->labels[] = TextHelper::_('COBALT_WEEK') . ' ' . $weekDate->format("W");
         //flush query
         $query = $db->getQuery(true);
         //gen query string
         $query->select("SUM(d.amount)");
         $query->from("#__deals AS d");
         $query->where("d.stage_id IN (" . implode(',', $won_stage_ids) . ")");
         $query->where("d.modified >= '{$start_date}'");
         $query->where("d.modified < '{$end_date}'");
         $query->where("d.modified IS NOT NULL");
         //sort by published deals
         $query->where("d.published > 0");
         //filter by owner type
         if ($access_type != 'company') {
             //team sorting
             if ($access_type == 'team') {
                 //get team members
                 $team_members = UsersHelper::getTeamUsers($access_id);
                 $query .= " AND d.owner_id IN (";
                 //loop to make string
                 foreach ($team_members as $key => $member) {
                     $query .= "'" . $member['id'] . "',";
                 }
                 $query = substr($query, 0, -1);
                 $query .= ") ";
             }
             //member filter
             if ($access_type == 'member') {
                 $query->where("d.owner_id = {$access_id}");
             }
         }
         //return results
         $db->setQuery($query);
         $total = (int) $db->loadResult();
         if (!$total) {
             $total = 0;
         }
         $totals[] = $total;
     }
     $data->datasets[0] = new \stdClass();
     $data->datasets[0]->data = $totals;
     $data->datasets[0]->label = '';
     $data->datasets[0]->fillColor = "rgba(151,187,205,0.5)";
     $data->datasets[0]->strokeColor = "rgba(151,187,205,0.8)";
     $data->datasets[0]->pointColor = "rgba(151,187,205,0.75)";
     $data->datasets[0]->pointStrokeColor = "rgba(151,187,205,1)";
     //return results
     return $data;
 }