From f2ce52ada59696aabf74cd33eae76ff32497ee1e Mon Sep 17 00:00:00 2001 From: chenzhi Date: Wed, 10 Jun 2020 19:32:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CompanyStatementController.class.php | 28 +- .../CompanyStatementSetController.class.php | 229 ++++++++- .../CompanyStatement/editPuStatement.html | 459 ++++++++++++++++++ .../CompanyStatement/exportPuStatement.html | 191 ++++++++ .../CompanyStatement/viewPuStatement.html | 223 +++++++++ Data/update.sql | 30 +- 6 files changed, 1153 insertions(+), 7 deletions(-) create mode 100644 Application/Admin/View/CompanyStatement/editPuStatement.html create mode 100644 Application/Admin/View/CompanyStatement/exportPuStatement.html create mode 100644 Application/Admin/View/CompanyStatement/viewPuStatement.html diff --git a/Application/Admin/Controller/CompanyStatementController.class.php b/Application/Admin/Controller/CompanyStatementController.class.php index 85ee9ffe5..c5075e3c0 100644 --- a/Application/Admin/Controller/CompanyStatementController.class.php +++ b/Application/Admin/Controller/CompanyStatementController.class.php @@ -270,7 +270,21 @@ class CompanyStatementController extends ThinkController //上游 $this->display("editCpStatement"); } else { - $this->display("editPcStatement"); + if($dbres["company_type"] == 1){ + $this->display("editPcStatement"); + }else{ + if($dbres['pay_type'] == 2){ + $payinfo = $dbres['second_party_info']; + $payinfo['type'] = "second_party_info"; + }else{ + $payinfo = $dbres['first_party_info']; + $payinfo['type'] = "first_party_info"; + } + $this->assign("payinfo", $payinfo); + $this->display("editPuStatement"); + } + + } } } @@ -369,7 +383,17 @@ class CompanyStatementController extends ThinkController if ($data['company_belong'] == 9) {//上游 excelUpStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money); } else {//下游 - excelDownStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money); + if($dbres["company_type"] == 1){ + excelDownStreamTemplate($data, $all_sum_money, $all_pay_amount, $big_all_sum_money); + }else{ + $data['statement_begin_time'] = date('Ymd',$data['statement_begin_time']); + $data['statement_end_time'] = date('Ymd',$data['statement_end_time']); + $data['statement_count'] = count($data['statement_info']); + // dd($data); + $this->assign("data",$data); + $this->display("exportPuStatement"); + } + } } //汇总 diff --git a/Application/Admin/Controller/CompanyStatementSetController.class.php b/Application/Admin/Controller/CompanyStatementSetController.class.php index 947eb621d..bce3123d6 100644 --- a/Application/Admin/Controller/CompanyStatementSetController.class.php +++ b/Application/Admin/Controller/CompanyStatementSetController.class.php @@ -438,7 +438,7 @@ class CompanyStatementSetController extends Controller { return ; } //获取pc公司 - $tmpp = M("PromoteCompany","tab_")->field("id,uid,company_name partner,settlement_contact link_man,contact_phone link_phone,address,bank_address payee_name,bank_card bank_account,fax_ratio,company_belong,company_type,ali_user,ali_account")->where(["id"=>['in',$pc_id]])->select(); + $tmpp = M("PromoteCompany","tab_")->field("id,uid,company_name partner,settlement_contact link_man,contact_phone link_phone,bank_name opening_bank,bank_address payee_name,bank_card bank_account,fax_ratio,company_belong,company_type,ali_user,ali_account")->where(["id"=>['in',$pc_id]])->select(); $pc =[]; foreach ($tmpp as $v) { $pc[$v['id']]=$v; @@ -555,7 +555,7 @@ class CompanyStatementSetController extends Controller { $game['reward'] = $rrfres['reward_count']; $game['fine'] = $rrfres['fine_count']; - $game['sum_money']=round($va['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2)+$game['reward']-$game['fine']; + $game['sum_money']=round($va['pay_amount']*$tratio/100,2)+$game['reward']-$game['fine']; }else{ $game['sum_money']=round($va['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(1-渠道费)*分成比例*(1-税费费率) } @@ -688,6 +688,226 @@ class CompanyStatementSetController extends Controller { $pcList[$k]['list'] = $v; } } + /** + * 下游个人汇总单 + */ + public function promoteUserPool($type,$stime,$recount = false) + { + $t = $this->setBeginAndEndTime($type,$stime); + $begintime = $t[0]; + $endtime = $t[1]; + + $where = [ + "_string"=>"first_company_type = '2' OR second_company_type = '2'" + ]; + //获取哪些要结算 + if($type == 1){//月结 + $where['settlement_type']=2; + $pcDbRes = M("CompanyRelation","tab_")->where($where)->select(); + }else{ + $where['settlement_type']=1; + $pcDbRes = M("CompanyRelation","tab_")->where($where)->select(); + } + + $pcList=[]; + $js_id = [];//己方公司 + foreach ($pcDbRes as $k => $v) { + if($v['first_company_type'] == 2){ + $pcList[$v['first_company_id']] =$v; + $js_id[] =$v['second_company_id']; + }else{ + $pcList[$v['second_company_id']] =$v; + $js_id[] =$v['first_company_id']; + } + } + //获取pc公司 + $pc_id = implode(",",array_flip(array_flip(array_keys($pcList)))); + $tmpp = M("PromoteCompany","tab_")->field("id,uid,company_name partner,settlement_contact link_man,contact_phone link_phone,bank_name opening_bank,bank_address payee_name,bank_card bank_account,fax_ratio,company_belong,company_type,ali_user,ali_account") + ->where(["id"=>['in',$pc_id]]) + ->select(); + //,"company_type"=>2 + if(count($tmpp)<1){return;} + + $pc =[]; + foreach ($tmpp as $v) { + $pc[$v['id']]=$v; + $pc[$v['id']]['is_payment']=$pcList[$v['id']]['is_payment']; + } + unset($tmpp); + $this->getPromoteCompanySpend($pc,array_unique(array_keys($pc)),$begintime,$endtime); + + $StatementDb = M("CompanyStatement","tab_"); + $statement_begin_time = date("Y-m-d",$begintime); + $statement_end_time = date("Y-m-d",$endtime); + $RewardRecord = M("RewardRecord","tab_"); + $LackStatement = M("company_lack_statement_info","tab_"); + $StatementInfo = M("company_statement_info","tab_"); + $basedata = [ + "pay_amount"=>0, + "statement_money"=>0, + "platform_amount"=>0, + "statement_ids"=>[], + "create_lack_ids"=>[], + "del_lack_ids"=>[], + "statement_begin_time"=>$begintime, + "statement_end_time"=>$endtime, + "fine"=>0, + "reward"=>0, + "verify_status"=>0, + "verify_log"=>json_encode(["create_user"=>"system","create_time"=>date("Y-m-d H:i:s")]), + "op_time"=>time() + ]; + $users = $user = $basedata; + $users['is_payment'] = 1; + $users['statement_num'] = "PL_".date('Ymd').date('His').sp_random_num(3); + + $user['is_payment'] = 2; + $user['statement_num'] = "PL_".date('Ymd').date('His').sp_random_num(3); + + // + + + foreach($pc as $k=>&$v){ + //获取其他信息 + $v = $this->getCompanyOtherInfo($v,$k); + if($v['is_payment'] == 1){ + $countdata = &$users; + }else{ + $countdata = &$user; + } + $v['statement_money'] = 0; + $v['pay_amount'] = 0; + $v['fine'] = 0; + $v['reward'] = 0; + $v['platform_amount'] = 0; + foreach($v['list'] as $ke=>$va){ + $game =[]; + $game['pay_amount'] =$va['pay_amount']; + $game['game_name'] =$va['game_name']; + //获取比例 + $game['relation_game_id']=$va['relation_game_id']; + $game['game_type_name'] = $this->getGameTypeName($va['relation_game_id']); + + if($type == 1){ + $tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong); + }elseif($type == 0){ + $tratio = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong); + }else{ + //补点 + $tratio1 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],true,$company_belong);; + $tratio2 = getGamePromoteCompanyRadio($add_data['company_id'],$va['relation_game_id'],$endtime,$va['pay_amount'],false,$company_belong); + $tratio = $tratio1-$tratio2; + } + + if($v['type'] == 2){ + $game['increment_ratio']=$tratio; + }else{ + $game['ratio']=$tratio; + } + $v['pay_amount'] += $va['pay_amount']; + $v['platform_amount'] += $va['platform_amount']; + //判断是否是个人 + if($type < 2){ + //非补点 + $rrmap = array( + "reward_time" => ['between', [$begintime,$endtime]], + "company_type"=>2, + "company_id"=>$k, + "relation_game_id"=>$va['relation_game_id'] + ); + $rrfres =$RewardRecord->field("IFNULL(SUM(CASE WHEN reward_type = 1 THEN money ELSE 0 END),0) as reward_count,IFNULL(SUM(CASE WHEN reward_type = 2 THEN money ELSE 0 END),0) as fine_count")->where($rrmap)->find(); + $v['fine'] += $rrfres['fine_count']; + $v['reward'] += $rrfres['reward_count']; + + $game['reward'] = $rrfres['reward_count']; + $game['fine'] = $rrfres['fine_count']; + + $game['sum_money']=round($va['pay_amount']*$tratio/100,2)+$game['reward']-$game['fine']; + }else{ + $game['sum_money']=round($va['pay_amount']*$tratio*(100-$fax_ratio)/(100*100),2);//结算金额=平台总额*(1-渠道费)*分成比例*(1-税费费率) + } + $v['statement_money'] += $game['sum_money']; + + $game['fax_ratio']=$fax_ratio; + + $game['statement_begin_time']=$statement_begin_time; + $game['statement_end_time']=$statement_end_time; + $game['statement_type']=0; + $v['statement_info'][] = $game; + } + $company_info = [ + 'account'=>$v['account'], + "company_relation_str"=>$v['company_relation_str'], + "company_type_str"=>$v['company_type_str'], + "nickname"=>$v['nickname'], + "payee_name"=>$v['payee_name'], + "bank_account"=>$v['bank_account'], + "opening_bank"=>$v['opening_bank'] + ]; + if($v['statement_money'] < 300){ + $lackcompany =[ + "company_id"=>$k, + "company_type"=>2, + "company_name"=>$v['partner'], + "company_info"=>json_encode($company_info,JSON_UNESCAPED_UNICODE), + "statement_money"=>$v['statement_money'], + "pay_amount"=>$v['pay_amount'], + "platform_amount"=>$v['platform_amount'], + "fine"=>$v['fine'], + "reward"=>$v['reward'], + "statement_begin_time"=>$begintime, + "statement_end_time"=>$endtime, + "statement_info"=>json_encode($v['statement_info'],JSON_UNESCAPED_UNICODE) + ]; + } + //聚合未结算数据 + $lsres = $LackStatement->where("company_id='{$k}'")->select(); + + $del_lack_ids = []; + if(count($lsres) > 0){ + //进行聚合 + foreach($lsres as $key=>$val){ + + $del_lack_ids[] = $val['id']; + $v['statement_money'] += $val['statement_money']; + $v['pay_amount'] = $val['pay_amount']; + $v['fine'] = $val['fine']; + $v['reward'] = $val['reward']; + $v['platform_amount'] = $val['platform_amount']; + $v['statement_info'] = array_merge($v['statement_info'],json_decode($val['statement_info'],true)); + } + } + if($v['statement_money'] < 300){ + //存未满 + $lask_id = $LackStatement->add($lackcompany); + $countdata['create_lack_ids'][] =$lask_id; + }else{ + //存成功 + $company =[ + "company_id"=>$k, + "company_type"=>2, + "company_name"=>$v['partner'], + "company_info"=>json_encode($company_info,JSON_UNESCAPED_UNICODE), + "statement_money"=>$v['statement_money'], + "pay_amount"=>$v['pay_amount'], + "platform_amount"=>$v['platform_amount'], + "fine"=>$v['fine'], + "reward"=>$v['reward'], + "statement_begin_time"=>$begintime, + "statement_end_time"=>$endtime, + "statement_info"=>json_encode($v['statement_info'],JSON_UNESCAPED_UNICODE) + ]; + $companyid = $StatementInfo->add($lackcompany); + $countdata['info_ids'][] =$companyid; + $countdata['del_lack_ids'] =array_merge($countdata['del_lack_ids'],$del_lack_ids); + } + } + dump($users); + dd($user); + + + } + /** * 获取公司额为信息 */ @@ -700,7 +920,10 @@ class CompanyStatementSetController extends Controller { ->join("left join sys_member s on s.uid = pc.uid") ->where("pc.id = {$company_id}") ->find(); - return array_merge($company_info,$pl); + $company = array_merge($company_info,$pl); + $company['company_relation_str'] =getCompanyBlong($company['company_belong']).getCompanyRelation($company['company_relation']); + $company['company_type_str'] = "个人"; + return $company; } /** diff --git a/Application/Admin/View/CompanyStatement/editPuStatement.html b/Application/Admin/View/CompanyStatement/editPuStatement.html new file mode 100644 index 000000000..604ff0caa --- /dev/null +++ b/Application/Admin/View/CompanyStatement/editPuStatement.html @@ -0,0 +1,459 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + +
公司名称: + +
会长: + +
市场员: + +
+
+
+ + + + + + + + + + + +
下游类型: + +
下游性质: + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
产品产品类型结算时间推广流水(元)补点比例分成比例奖励罚款结算金额(元)
+ 请先选择生成条件后点击生成对账数据 +
+
+
+
+
+ + + + + + + + + + + + +
开户名: + +
开户支行: + +
+
+
+ + + + + + + +
银行卡号: + +
+
+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/Application/Admin/View/CompanyStatement/exportPuStatement.html b/Application/Admin/View/CompanyStatement/exportPuStatement.html new file mode 100644 index 000000000..74a971138 --- /dev/null +++ b/Application/Admin/View/CompanyStatement/exportPuStatement.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
序号下游名称会长账号下游类型市场员下游性质产品产品类型结算时间推广流水(元)分成比例补点奖励罚款结算金额(元)开户名银行卡号开户支行帐户类型备注
1{$data.company_name}{$data.receive_company.account}{$data.receive_company.company_relation_str}{$data.receive_company.nickname}{$data.receive_company.company_type_str}{$data['statement_info'][0]['game_name']}{$data['statement_info'][0]['game_type_name']}{$data['statement_info'][0]['statement_begin_time']}~ {$data['statement_info'][0]['statement_end_time']}{$data['statement_info'][0]['pay_amount']}{$data['statement_info'][0]['ratio']|default=0}%{$data['statement_info'][0]['increment_ratio']|default=0}%{$data['statement_info'][0]['reward']}{$data['statement_info'][0]['fine']}{$data['statement_info'][0]['sum_money']}{$data.receive_company.payee_name} {$data.receive_company.bank_account}{$data.receive_company.opening_bank}{$data.remark}
{$it['game_name']}{$it['game_type_name']}{$it['statement_begin_time']} ~ {$it['statement_end_time']}{$it['pay_amount']}{$it['ratio']|default=0}%{$it['increment_ratio']|default=0}%{$it['reward']}{$it['fine']}{$it['sum_money']}
合计:{$data.pay_amount}{$data.statement_money}
+
+
+ + + diff --git a/Application/Admin/View/CompanyStatement/viewPuStatement.html b/Application/Admin/View/CompanyStatement/viewPuStatement.html new file mode 100644 index 000000000..17a7beb6a --- /dev/null +++ b/Application/Admin/View/CompanyStatement/viewPuStatement.html @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + +
公司名称: + +
会长: + +
市场员: + +
+
+
+ + + + + + + + + + + +
下游类型: + +
下游性质: + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
产品产品类型结算时间推广流水(元)补点比例分成比例奖励罚款结算金额(元)
{$it.game_name}{$it.game_type_name}{$it.statement_begin_time}~{$it.statement_end_time}{$it.pay_amount}{$it.increment_ratio}%{$it.ratio}%{$it.reward}{$it.fine}{$it.sum_money}
合计{$data.statement_count.pay_amount}{$data.statement_count.statement_money}
本月分成总金额(人民币大写):{$data.statement_count.big_ratio_money}
+
+
+
+
+ + + + + + + + + + + + +
开户名: + +
开户支行: + +
+
+
+ + + + + + + +
银行卡号: + +
+
+
+ + diff --git a/Data/update.sql b/Data/update.sql index 8976a916c..8481518a7 100644 --- a/Data/update.sql +++ b/Data/update.sql @@ -1896,6 +1896,9 @@ CREATE TABLE `tab_company_statement_pool` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `statement_num` varchar(500) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '结算批量单号', `statement_ids` varchar(500) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '涉及的结算单id', + `create_lack_ids` varchar(500) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '生成的lackid', + `del_lack_ids` varchar(500) COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT '合并计算的lackid', + `statement_begin_time` int(11) NOT NULL DEFAULT '0' COMMENT '对账开始时间', `statement_end_time` int(11) NOT NULL DEFAULT '0' COMMENT '对账截止时间', `statement_money` decimal(10,2) DEFAULT '0.00' COMMENT '对账金额', @@ -1929,8 +1932,7 @@ CREATE TABLE `tab_company_statement_info` ( `company_id` int(11) DEFAULT '0' COMMENT '对账公司id', `company_type` tinyint(3) NOT NULL DEFAULT '1' COMMENT '公司性质: 1-下游公司 2-下游个人 3上游公司', `company_name` varchar(60) NOT NULL DEFAULT '' COMMENT '对账公司名称', - `ali_user` varchar(64) NOT NULL DEFAULT '' COMMENT '支付宝真实名称', - `ali_account` varchar(128) NOT NULL DEFAULT '' COMMENT '支付宝登陆账号', + `company_info` text NOT NULL DEFAULT '' COMMENT '公司其他信息json', `statement_money` decimal(10,2) DEFAULT '0.00' COMMENT '对账金额', `pay_amount` decimal(10,2) DEFAULT '0.00' COMMENT '总计', @@ -1954,3 +1956,27 @@ CREATE TABLE `tab_company_statement_info` ( KEY `pay_status` (`pay_status`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='对账单汇总详情'; +CREATE TABLE `tab_company_lack_statement_info` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键', + + `company_id` int(11) DEFAULT '0' COMMENT '对账公司id', + `company_type` tinyint(3) NOT NULL DEFAULT '1' COMMENT '公司性质: 1-下游公司 2-下游个人 3上游公司', + `company_name` varchar(60) NOT NULL DEFAULT '' COMMENT '对账公司名称', + `company_info` text NOT NULL DEFAULT '' COMMENT '公司其他信息json', + + `statement_money` decimal(10,2) DEFAULT '0.00' COMMENT '对账金额', + `pay_amount` decimal(10,2) DEFAULT '0.00' COMMENT '总计', + `platform_amount` decimal(10,2) DEFAULT '0.00' COMMENT '平台流水金额', + `fine` decimal(10,2) DEFAULT '0.00' COMMENT '罚款', + `reward` decimal(10,2) DEFAULT '0.00' COMMENT '奖励', + + `statement_begin_time` int(11) NOT NULL DEFAULT '0' COMMENT '对账开始时间', + `statement_end_time` int(11) NOT NULL DEFAULT '0' COMMENT '对账截止时间', + `statement_info` text NOT NULL DEFAULT '' COMMENT '订单相关信息json', + PRIMARY KEY (`id`), + KEY `company_tid` (`company_id`,`company_type`) USING BTREE, + KEY `statement_begin_time` (`statement_begin_time`) USING BTREE, + KEY `statement_end_time` (`statement_end_time`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='未满足支付条件的公司信息'; + +