public function update_invoice_ad(array $attr = null)
 {
     $DB_write = $this->get_write_pdo();
     // 更新发票关联表
     $this->attributes = array_merge($this->attributes, $attr);
     $result = SQLHelper::update($DB_write, self::$T_INVOICE_AD, $attr, $this->id);
     if (!$result) {
         throw new Exception('更新广告失败', 20);
     }
     $invoice_service = new Invoice();
     $invoice_ad = $invoice_service->get_invoice_ad_by_id($this->id);
     $res = $invoice_service->get_invoice_ad_by_invoiceid($invoice_ad['i_id']);
     // 记录核减
     if (isset($attr['cpa_after']) || isset($attr['quote_rmb_after'])) {
         $income = $invoice_ad['cpa'] * $invoice_ad['quote_rmb'];
         $income_after = $invoice_ad['cpa_after'] * $invoice_ad['quote_rmb_after'];
         if ($income != $income_after) {
             $this->save_ad_cut(array_merge(array('income' => $income, 'income_after' => $income_after), $invoice_ad));
         }
     }
     $invoice = $invoice_service->get_invoice_by_id($invoice_ad['i_id']);
     // 验证状态
     $attr = $this->get_params_by_income($res, $invoice['comment']);
     // 核减发送通知
     if ($attr['status'] == 8) {
         $this->send_notice($invoice);
     }
     // 更新发票表
     $result = SQLHelper::update($DB_write, self::$T_INVOICE, $attr, $invoice['id']);
     if (!$result && $result != 0) {
         throw new Exception('更新发票失败', 21);
     }
     return $this->attributes;
 }