Exemplo n.º 1
0
 public function get_notice($admin_id, $role, $latest)
 {
     $DB = $this->get_read_pdo();
     $m = new Mustache_Engine();
     $ad_service = new AD();
     $sql = "SELECT `type`\n            FROM `t_alarm_group`\n            WHERE `group`={$role}";
     $types = $DB->query($sql)->fetchAll(PDO::FETCH_COLUMN);
     $types = implode(',', $types);
     $type_sql = $types ? " OR `alarm_type` IN ({$types})" : '';
     // 只取最近一周,再早的估计也没啥处理的必要了
     $date = date('Y-m-d', time() - 86400 * 6);
     $sql = "SELECT a.`id`, `uid`, `user_id`, `app_id`, `ad_id`, a.`status`,\n              `create_time`, `op_time`, `description`, `handler`\n            FROM `t_admin_alarm_log` a LEFT JOIN `t_alarm_type` t ON a.alarm_type=t.id\n            WHERE (`admin_id`='{$admin_id}' {$type_sql})\n              AND `create_time`>'{$date}' AND a.`status`=0 AND a.`id`>{$latest}\n            ORDER BY `id` DESC";
     $alarms = $DB->query($sql)->fetchAll(PDO::FETCH_ASSOC);
     foreach ($alarms as &$alarm) {
         $alarm['id'] = (int) $alarm['id'];
         if ($alarm['ad_id']) {
             if (strlen($alarm['ad_id']) == 32) {
                 $ad = $ad_service->get_ad_info(array('id' => $alarm['ad_id']), 0, 1);
                 $alarm['name'] = $ad['ad_name'];
             }
         } else {
             if ($alarm['uid']) {
                 // 发票通知提醒
                 $invoice_id = $alarm['uid'];
                 $invoice_service = new Invoice();
                 $agreement_service = new Agreement();
                 $invoice = $invoice_service->get_invoice_by_id($invoice_id);
                 $agreement = $agreement_service->get_agreement_by_id(array('id' => $invoice['agreement_id']));
                 $alarm['channel'] = $agreement['company_short'];
                 $admin_service = new Admin();
                 $sale = $admin_service->get_sales_info($alarm['user_id']);
                 $alarm['sale'] = $sale['NAME'];
             }
         }
         $alarm['status'] = (int) $alarm['status'];
         $alarm['handler'] = $m->render($alarm['handler'], $alarm);
     }
     return $alarms;
 }
Exemplo n.º 2
0
 /**
  * 获取发票详情信息
  * @param $filters
  * @param int $page_start
  * @param int $pagesize
  * @param null $order
  * @return array
  */
 public function get_invoice_info($filters, $page_start = 0, $pagesize = 10, $order = null, $all = false)
 {
     $DB = $this->get_read_pdo();
     if (!array_key_exists('status', $filters)) {
         $filters['a.status'][] = array('operator' => '>', 'data' => 1);
     } else {
         $filters['a.status'] = $filters['status'];
         unset($filters['status']);
     }
     list($conditions, $params) = $this->parse_filter($filters);
     if ($order) {
         $order = 'ORDER BY ' . $this->get_order($order);
     }
     if (!$all) {
         $sql = "SELECT a.`id`,`applicant`,`apply_time`,`full_name`,`company`,`income`,`income_first`,\n            `handle_time`,`number`,`express_number`,`reason`,a.`status`,a.`comment`,`attachment`,\n            c.`agreement_id` as `agreement_number`\n            FROM `t_invoice` a LEFT JOIN `t_channel_map` b\n            ON a.`channel_id` = b.`id`\n            LEFT JOIN `t_agreement` c ON a.`agreement_id` = c.`id`\n            WHERE {$conditions}\n            {$order}\n            LIMIT {$page_start}, {$pagesize}";
     } else {
         $sql = "SELECT a.`id`,`applicant`,`apply_time`,`full_name`,`company`,`income`,`income_first`,\n            `handle_time`,`number`,`express_number`,`reason`,a.`status`,a.`comment`,`attachment`,\n            c.`agreement_id` as `agreement_number`\n            FROM `t_invoice` a LEFT JOIN `t_channel_map` b\n            ON a.`channel_id` = b.`id`\n            LEFT JOIN `t_agreement` c ON a.`agreement_id` = c.`id`\n            WHERE {$conditions}\n            {$order}";
     }
     $state = $DB->prepare($sql);
     $state->execute($params);
     $invoices = $state->fetchAll(PDO::FETCH_ASSOC);
     $result = array();
     $is_beijing = false;
     if (!$all) {
         $admin_service = new Admin();
         $me = $_SESSION['id'];
         $sale = $admin_service->get_sales_info($me);
         if (strstr($sale['location'], ',') || trim($sale['location']) === '北京') {
             $is_beijing = true;
         }
         $is_show = false;
         foreach ($invoices as $id => $value) {
             if ($value['income'] != $value['income_first']) {
                 // 核减
                 $open = 8;
             } else {
                 // 不核减
                 if ($value['comment'] || trim($value['comment']) != "") {
                     // 特批
                     $open = 18;
                 } else {
                     // 不特批
                     $open = 28;
                 }
             }
             if ($value['comment'] || $value['attachment']) {
                 $is_show = true;
             }
             $result[] = array_merge($value, array('is_beijing' => $is_beijing, 'status' => (int) $value['status'], 'open' => $open, 'is_show' => $is_show));
             $is_show = false;
         }
         return $result;
     } else {
         foreach ($invoices as $id => $value) {
             // 只返回有附件或者有特批的发票
             if ($value['attachment'] || $value['comment']) {
                 $admin_service = new Admin();
                 $sale = $admin_service->get_sales_info($value['applicant']);
                 // 判断用户区域是不是北京
                 if (strstr($sale['location'], ',') || trim($sale['location']) === '北京') {
                     $is_beijing = true;
                 }
                 $result[] = array_merge($value, array('sale' => $sale['NAME'], 'is_beijing' => $is_beijing, 'status' => (int) $value['status']));
                 $is_beijing = false;
             }
         }
         $total = count($result);
         $result = array_slice($result, $page_start, $pagesize);
         return array($result, $total);
     }
 }
 public function init($id)
 {
     $me = $_SESSION['id'];
     $invoice_service = new Invoice();
     $admin_service = new Admin();
     $agreement_service = new Agreement();
     // 获取收款方业务负责人
     $chargers = $admin_service->get_chargers($me);
     $applicant = $admin_service->get_sales_info($me);
     $is_assistant = false;
     if ($chargers) {
         $is_assistant = true;
     }
     $options = array('types' => InvoiceModel::$TYPE, 'content_types' => InvoiceModel::$CONTENT_TYPE, 'is_assistant' => $is_assistant);
     if ($id === 'init') {
         $this->get_init_params($chargers, $applicant, $options);
     }
     $res = $invoice_service->get_invoice_by_id($id);
     if ($res['agreement_id']) {
         $agreement = $agreement_service->get_agreement_by_id(array('id' => $res['agreement_id']));
         // 结算单收款方信息
         $accept = InvoiceModel::$ACCEPT[$agreement['company_dianjoy']];
     }
     $products = $invoice_service->get_invoice_ad_by_invoiceid($id);
     $res = array_merge(array('products' => $products, 'chargers' => $chargers, 'company' => $agreement['company'], 'company_short' => $agreement['company_short'], 'agreement_number' => $agreement['agreement_id'], 'cycle' => $agreement['cycle'], 'rmb' => $agreement['rmb'], 'agreement_comment' => $agreement['comment'], 'ad_name' => $agreement['ad_name'], 'sign_date' => $agreement['sign_date'], 'company_dianjoy' => $agreement['company_dianjoy'], 'accept_company' => $accept['accept_company'], 'accept_bank' => $accept['accept_bank'], 'accept_account' => $accept['accept_account']), $res);
     if (count($products) > 0) {
         $res = array_merge($res, array('income' => round($res['income'] / 100, 2), 'income_first' => round($res['income_first'] / 100, 2), 'joy_income' => round($res['joy_income'] / 100, 2), 'red_ad_income' => round($res['red_ad_income'] / 100, 2), 'red_ios_income' => round($res['red_ios_income'] / 100, 2)));
     }
     if ($res['status'] == 40) {
         $options = array_merge(array('view' => true), $options);
     }
     $this->output(array('code' => 0, 'msg' => 'fetched', 'invoice' => $res, 'options' => $options));
 }