Beispiel #1
0
 /**
  * Get grouped sales stats for the current range, grouped by user, device or location
  * @param $result
  * @param string $type
  * @return mixed
  */
 public function getDeviceBreakdownStats($result, $type = 'device')
 {
     $stats = [];
     $salesMdl = new TransactionsModel();
     $voidMdl = new SaleVoidsModel();
     // check if params set, if not set defaults
     $stime = isset($this->data->stime) ? $this->data->stime : strtotime('-1 week') * 1000;
     $etime = isset($this->data->etime) ? $this->data->etime : time() * 1000;
     // setup default object
     $defaults = new stdClass();
     $defaults->refs = '';
     $defaults->refundrefs = '';
     $defaults->voidtotal = 0;
     $defaults->voidnum = 0;
     $defaults->saletotal = 0;
     $defaults->salenum = 0;
     $defaults->refundtotal = 0;
     $defaults->refundnum = 0;
     // get non voided sales
     if (($sales = $salesMdl->getGroupedTotals($stime, $etime, 3, false, $type)) !== false) {
         foreach ($sales as $sale) {
             if ($sale['groupid'] == null) {
                 $sale['name'] = "Admin Dash";
             }
             if (!isset($stats[$sale['groupid']])) {
                 $stats[$sale['groupid']] = clone $defaults;
                 $stats[$sale['groupid']]->name = $sale['name'];
             }
             $stats[$sale['groupid']]->refs = $sale['refs'];
             $stats[$sale['groupid']]->salerefs = $sale['refs'];
             $stats[$sale['groupid']]->saletotal = $sale['stotal'];
             $stats[$sale['groupid']]->salenum = $sale['snum'];
         }
     } else {
         $result['error'] = "Error getting sales: " . $salesMdl->errorInfo;
     }
     // get voided sales
     if (($voids = $salesMdl->getGroupedTotals($stime, $etime, 3, true, $type)) !== false) {
         foreach ($voids as $void) {
             if ($void['groupid'] == null) {
                 $sale['name'] = "Admin Dash";
             }
             if (!isset($stats[$void['groupid']])) {
                 $stats[$void['groupid']] = clone $defaults;
                 $stats[$void['groupid']]->name = $void['name'];
             }
             $stats[$void['groupid']]->refs .= ($stats[$void['groupid']]->refs == '' ? '' : ',') . $void['refs'];
             $stats[$void['groupid']]->voidrefs = $void['refs'];
             $stats[$void['groupid']]->voidtotal = $void['stotal'];
             $stats[$void['groupid']]->voidnum = $void['snum'];
         }
     } else {
         $result['error'] = "Error getting voided sales: " . $salesMdl->errorInfo;
     }
     // get refunds
     if (($refunds = $voidMdl->getGroupedTotals($stime, $etime, false, $type)) !== false) {
         foreach ($refunds as $refund) {
             if ($refund['groupid'] == null) {
                 $sale['name'] = "Admin Dash";
             }
             if (!isset($stats[$refund['groupid']])) {
                 $stats[$refund['groupid']] = clone $defaults;
                 $stats[$refund['groupid']]->name = $refund['name'];
             }
             $stats[$refund['groupid']]->refs .= ($stats[$refund['groupid']]->refs == '' ? '' : ',') . $refund['refs'];
             $stats[$refund['groupid']]->refundrefs = $refund['refs'];
             $stats[$refund['groupid']]->refundtotal = $refund['stotal'];
             $stats[$refund['groupid']]->refundnum = $refund['snum'];
         }
     } else {
         $result['error'] = "Error getting refunds: " . $voidMdl->errorInfo;
     }
     // calc total takings for each device/location
     foreach ($stats as $key => $stat) {
         $stats[$key]->balance = number_format($stat->saletotal - $stat->refundtotal, 2, '.', '');
     }
     // include totals if requested
     if ($this->data->totals == true) {
         $result = $this->getOverviewStats($result);
         $stats["Totals"] = $result['data'];
     }
     $result['data'] = $stats;
     return $result;
 }