diff --git a/Application/Admin/Controller/GameMarginController.class.php b/Application/Admin/Controller/GameMarginController.class.php index c124c08bf..9670fa32c 100644 --- a/Application/Admin/Controller/GameMarginController.class.php +++ b/Application/Admin/Controller/GameMarginController.class.php @@ -45,17 +45,12 @@ class GameMarginController extends AdminController if (isset($_REQUEST['export']) && $_REQUEST['export']==1){ $is_export = true; - $this->export($info); - $this->assign("percent",''); + $this->marginExport($info); }else{ $is_export= false; $this->marginCount($info); - $this->assign("percent",'%'); } - - $this->assign("year", $info['count_year']); - $this->assign("month", $info['count_month']); $this->assign("id", $id); $this->assign("is_export",$is_export); $this->display(); @@ -105,10 +100,13 @@ class GameMarginController extends AdminController $count['jh_pay_amount'] += $v['jh_pay_amount']; $count['jh_statement_amount'] += $v['jh_statement_amount']; $count['jh_margin_amount'] += $v['jh_margin_amount']; - + $v['year'] = $info['count_year']; + $v['month'] = $info['count_month']; $this->sprintfCell($v); } // $count['cp_ratio'] = round( $count['cp_statement_amount']/$count['pay_amount'] ,4)*100; + $count['year'] = $info['count_year']; + $count['month'] = $info['count_month']; $count['pu_ratio'] = round( $count['pu_statement_amount']/$count['pu_pay_amount'] ,4)*100; $count['pu_margin_ratio'] = round( $count['pu_margin_amount']/$count['pu_pay_amount'] ,4)*100; @@ -125,6 +123,154 @@ class GameMarginController extends AdminController $this->assign("data",$marginInfo); $this->assign("count",$count); } + private function marginExport($info) + { + header("Content-type: text/html; charset=utf-8"); + error_reporting(E_ALL); + ini_set('display_errors', TRUE); + ini_set('display_startup_errors', TRUE); + + define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '
'); + + Vendor("PHPExcel.PHPExcel"); + $objReader = \PHPExcel_IOFactory::createReader('excel2007'); + //设置模板文件 + $objPHPExcel = $objReader->load("Public/Admin/excel/gamemargin.xlsx"); + $marginInfo = json_decode($info['margin_info'],true); + $line = 3; + $objPHPExcel->getActiveSheet()->insertNewRowBefore($line+1,count($marginInfo)-1); + + foreach ($marginInfo as &$v) { + // $v["cp_ratio"] = "=ROUND(G{$line}/D{$line},4)"; + + if($v["pc_pay_amount"] > 0){ + $v["pc_ratio"] ="=ROUND(M{$line}/K{$line},2)"; + $v["pc_margin_amount"] = "=ROUND((K{$line}*(1-E{$line})*(1-F{$line}-H{$line}-L{$line})),2)"; + $v["pc_margin_ratio"] ="=ROUND(N{$line}/K{$line},3)"; + } + if ($v["pu_pay_amount"] > 0) { + $v["pu_ratio"] ="=ROUND(R{$line}/P{$line},2)"; + $v["pu_margin_amount"] = "=ROUND((P{$line}-P{$line}*(1-E{$line})*(F{$line}+H{$line})-R{$line}),2)"; + $v["pu_margin_ratio"] = "=ROUND(S{$line}/P{$line},3)"; + } + $v['platform_margin_ratio'] = "=ROUND((D{$line}-V{$line}-G{$line}-I{$line}-J{$line}-M{$line}-R{$line})/(D{$line}-V{$line}),3)"; + + if($v['jh_pay_amount'] > 0){ + $v["jh_ratio"] ="=ROUND(X{$line}/V{$line},2)"; + $v["jh_margin_amount"] = "=ROUND((X{$line}-V{$line}*(1-E{$line})*(F{$line}+H{$line})),2)"; + $v["jh_margin_ratio"] = "=ROUND(Y{$line}/V{$line},3)"; + } + + $v['margin_amount'] = "=ROUND((D{$line}-G{$line}-I{$line}-J{$line}-M{$line}-R{$line}+X{$line}),2)"; + $v['margin_ratio'] = "=ROUND(AB{$line}/D{$line},3)"; + + + $objPHPExcel->getActiveSheet() + ->setCellValue('A'.$line, $info['count_year']) + ->setCellValue('B'.$line, $info['count_month']) + ->setCellValue('C'.$line, $v['relation_game_name']) + ->setCellValue('D'.$line, $v['pay_amount']) + ->setCellValue('E'.$line, $v['cp_promote_ratio']/100) + ->setCellValue('F'.$line, $v['cp_ratio']/100) + ->setCellValue('G'.$line, $v['cp_statement_amount']) + ->setCellValue('H'.$line, $v['cp_rebate_ratio']) + ->setCellValue('I'.$line, $v['cp_rebate_amount']) + ->setCellValue('J'.$line, $v['cp_other_amount']) + ->setCellValue('K'.$line, $v['pc_pay_amount']) + ->setCellValue('L'.$line, $v['pc_ratio']) + ->setCellValue('M'.$line, $v['pc_statement_amount']) + ->setCellValue('N'.$line, $v['pc_margin_amount']) + ->setCellValue('O'.$line, $v['pc_margin_ratio']) + ->setCellValue('P'.$line, $v['pu_pay_amount']) + ->setCellValue('Q'.$line, $v['pu_ratio']) + ->setCellValue('R'.$line, $v['pu_statement_amount']) + ->setCellValue('S'.$line, $v['pu_margin_amount']) + ->setCellValue('T'.$line, $v['pu_margin_ratio']) + ->setCellValue('U'.$line, $v['platform_margin_ratio']) + ->setCellValue('V'.$line, $v['jh_pay_amount']) + ->setCellValue('W'.$line, $v['jh_ratio']) + ->setCellValue('X'.$line, $v['jh_statement_amount']) + ->setCellValue('Y'.$line, $v['jh_margin_amount']) + ->setCellValue('Z'.$line, $v['jh_margin_ratio']) + ->setCellValue('AA'.$line, $v['margin_ratio']) + ->setCellValue('AB'.$line, $v['margin_amount']); + $line ++; + } + + $countLine = $line; + $line--; + + $count = [ + "pay_amount"=>"=SUM(D3:D{$line})", + // "cp_ratio"=>"=ROUND(G{$countLine}/D{$countLine},4)", + "cp_statement_amount"=>"=SUM(G3:G{$line})", + "cp_rebate_amount"=>"=SUM(I3:I{$line})", + "cp_other_amount"=>"=SUM(J3:J{$line})", + + "pc_pay_amount"=>"=SUM(K3:K{$line})", + "pc_ratio"=>"=ROUND(M{$countLine}/K{$countLine},4)", + "pc_statement_amount"=>"=SUM(M3:M{$line})", + "pc_margin_amount"=>"=SUM(N3:N{$line})", + "pc_margin_ratio"=>"=ROUND(N{$countLine}/K{$countLine},4)", + + "pu_pay_amount"=>"=SUM(P3:P{$line})", + "pu_statement_amount"=>"=SUM(R3:R{$line})", + "pu_ratio"=>"=ROUND(R{$countLine}/P{$countLine},4)", + "pu_margin_amount"=>"=SUM(S3:S{$line})", + "pu_margin_ratio"=>"=ROUND(S{$countLine}/P{$countLine},4)", + + "platform_margin_ratio"=>"=ROUND((D{$countLine}-V{$countLine}-G{$countLine}-I{$countLine}-J{$countLine}-M{$countLine}-R{$countLine})/(D{$countLine}-V{$countLine}),4)", + + "jh_pay_amount"=>"=SUM(V3:V{$line})", + "jh_statement_amount"=>"=SUM(X3:X{$line})", + "jh_ratio"=>"=ROUND(X{$countLine}/V{$countLine},4)", + "jh_margin_amount"=>"=SUM(Y3:Y{$line})", + "jh_margin_ratio"=>"=ROUND(Y{$countLine}/V{$countLine},4)", + "margin_ratio"=>"=ROUND(AB{$countLine}/D{$countLine},4)", + "margin_amount"=>"=SUM(AB3:AB{$line})", + + ]; + + $line ++; + $objPHPExcel->getActiveSheet() + ->setCellValue('A'.$line, $info['count_year']) + ->setCellValue('B'.$line, $info['count_month']) + ->setCellValue('D'.$line, $count['pay_amount']) + ->setCellValue('G'.$line, $count['cp_statement_amount']) + ->setCellValue('I'.$line, $count['cp_rebate_amount']) + ->setCellValue('J'.$line, $count['cp_other_amount']) + ->setCellValue('K'.$line, $count['pc_pay_amount']) + ->setCellValue('L'.$line, $count['pc_ratio']) + ->setCellValue('M'.$line, $count['pc_statement_amount']) + ->setCellValue('N'.$line, $count['pc_margin_amount']) + ->setCellValue('O'.$line, $count['pc_margin_ratio']) + ->setCellValue('P'.$line, $count['pu_pay_amount']) + ->setCellValue('Q'.$line, $count['pu_ratio']) + ->setCellValue('R'.$line, $count['pu_statement_amount']) + ->setCellValue('S'.$line, $count['pu_margin_amount']) + ->setCellValue('T'.$line, $count['pu_margin_ratio']) + ->setCellValue('U'.$line, $count['platform_margin_ratio']) + ->setCellValue('V'.$line, $count['jh_pay_amount']) + ->setCellValue('W'.$line, $count['jh_ratio']) + ->setCellValue('X'.$line, $count['jh_statement_amount']) + ->setCellValue('Y'.$line, $count['jh_margin_amount']) + ->setCellValue('Z'.$line, $count['jh_margin_ratio']) + ->setCellValue('AA'.$line, $count['margin_ratio']) + ->setCellValue('AB'.$line, $count['margin_amount']); + + $fileName = "{$info['count_year']}-{$info['count_month']}毛利分析表"; + ob_end_clean();//清除缓冲区,避免乱码 + header('pragma:public'); + header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$fileName.'".xlsx'); + header("Content-Disposition:attachment;filename={$fileName}.xlsx");//attachment新窗口打印inline本窗口打印 + $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'excel2007'); + $objWriter->save('php://output'); + exit; + + + } + + private function export($info) { $marginInfo = json_decode($info['margin_info'],true); diff --git a/Application/Admin/View/GameMargin/marginView.html b/Application/Admin/View/GameMargin/marginView.html index 5ff4d7f17..7bb392f23 100644 --- a/Application/Admin/View/GameMargin/marginView.html +++ b/Application/Admin/View/GameMargin/marginView.html @@ -157,8 +157,8 @@ - {$year} - {$month} + {$margin["year"]} + {$margin["month"]} {$margin["relation_game_name"]} {$margin["pay_amount"]} {$margin["cp_promote_ratio"]}% @@ -193,8 +193,8 @@ - {$year} - {$month} + {$count["year"]} + {$count["month"]} 小计 {$count["pay_amount"]} diff --git a/Public/Admin/excel/gamemargin.xlsx b/Public/Admin/excel/gamemargin.xlsx new file mode 100644 index 000000000..4899d84d7 Binary files /dev/null and b/Public/Admin/excel/gamemargin.xlsx differ