Commit 35c439f5 authored by hujun's avatar hujun

1

parent e1a15f1e
...@@ -1417,37 +1417,35 @@ class Finance extends Basic ...@@ -1417,37 +1417,35 @@ class Finance extends Basic
public function getCommissionTotalList() public function getCommissionTotalList()
{ {
if (!$this->request->isAjax() && $this->params['excel'] != 1) { if (!$this->request->isAjax() && $this->params['excel'] != 1) {
return view('commission_total'); // return view('commission_total');
} }
$data['code'] = 200; $data['code'] = 200;
$data['msg'] = ""; $data['msg'] = "";
$data['data'] = $excel_data = []; $data['data'] = $excel_data = [];
$pageNo = empty($this->params['pageNo']) ? 1 : $this->params['pageNo'];
$pageSize = empty($this->params['pageSize']) ? 15 : $this->params['pageSize'];
$where['b.status'] = [ 'in', '10,11,13' ]; //10已提交 11审核成功 $pageSize = empty($this->params['pageSize']) ? 10 : $this->params['pageSize'];
$where['a.confirm_status'] = 1; //确认分佣 $pageNo = $this->params['pageNo'] == 1? 0 : ($this->params['pageNo'] - 1) * $pageSize;
$where = ' AND e.status in (10,11,13) AND a.confirm_status = 1 ';
$operation_start_data = $operation_end_data = $income_date = $operation_date = ''; $operation_start_data = $operation_end_data = $income_date = $operation_date = '';
/**收佣日期 start**/ /**收佣日期 start**/
if (!empty($this->params['income_start_date']) && empty($this->params['income_end_date'])) { if (!empty($this->params['income_start_date']) && empty($this->params['income_end_date'])) {
$where[] = [ 'EXP', " f.income_time > {$this->params['income_start_date']} or c.operation_date > {$this->params['income_start_date']}" ]; $where .= " AND a.income_time > {$this->params['income_start_date']} AND c.operation_date > {$this->params['income_start_date']}";
$income_date = date('Y.m.d', strtotime($this->params['income_start_date'])); $income_date = date('Y.m.d', strtotime($this->params['income_start_date']));
$operation_start_data = $this->params['income_start_date'] . ' 00:00:00'; $operation_start_data = $this->params['income_start_date'] . ' 00:00:00';
} }
if (!empty($this->params['income_end_date']) && empty($this->params['income_start_date'])) { if (!empty($this->params['income_end_date']) && empty($this->params['income_start_date'])) {
$where[] = [ 'EXP', " f.income_time < {$this->params['income_end_date']} or c.operation_date < {$this->params['income_start_date']}" ]; $where .= " AND a.income_time < {$this->params['income_end_date']} AND c.operation_date < {$this->params['income_end_date']}";
$income_date = '-' . date('Y.m.d', strtotime($this->params['income_end_date'])); $income_date = '-' . date('Y.m.d', strtotime($this->params['income_end_date']));
$operation_end_data = $this->params['income_end_date'] . ' 23:59:59'; $operation_end_data = $this->params['income_end_date'] . ' 23:59:59';
} }
if (!empty($this->params['income_start_date']) && !empty($this->params['income_end_date'])) { if (!empty($this->params['income_start_date']) && !empty($this->params['income_end_date'])) {
$where[] = [ 'EXP', "(f.income_time BETWEEN '{$this->params['income_start_date']}' and '{$this->params['income_end_date']}')" ]; $where .= " AND a.income_time BETWEEN {$this->params['income_start_date']} AND {$this->params['income_end_date']} ";
$where .= " AND c.operation_date BETWEEN {$this->params['income_start_date']} AND {$this->params['income_end_date']}";
$income_date = date('Y.m.d', strtotime($this->params['income_start_date'])) . '-' . date('Y.m.d', strtotime($this->params['income_end_date'])); $income_date = date('Y.m.d', strtotime($this->params['income_start_date'])) . '-' . date('Y.m.d', strtotime($this->params['income_end_date']));
$operation_start_data = $this->params['income_start_date'] . ' 00:00:00'; $operation_start_data = $this->params['income_start_date'] . ' 00:00:00';
...@@ -1455,101 +1453,35 @@ class Finance extends Basic ...@@ -1455,101 +1453,35 @@ class Finance extends Basic
} }
/**收佣日期 end**/ /**收佣日期 end**/
/**提交成交报告日期 start**/
if (!empty($this->params['bargain_start_date']) && empty($this->params['bargain_end_date'])) {
$where[] = [ 'EXP', "a.create_time > {$this->params['bargain_start_date']} . ' 00:00:00' OR c.operation_date > {$this->params['bargain_start_date']}" ];
$operation_date = date('Y.m.d', strtotime($this->params['bargain_start_date']));
$operation_start_data = $this->params['bargain_start_date'] . ' 00:00:00';
}
if (!empty($this->params['bargain_end_date']) && empty($this->params['bargain_start_date'])) {
$where[] = [ 'EXP', "a.create_time < {$this->params['bargain_end_date']} . ' 23:59:59' OR c.operation_date < {$this->params['bargain_end_date']}" ];
$operation_date = date('Y.m.d', strtotime($this->params['bargain_end_date']));
$operation_end_data = $this->params['bargain_end_date'] . ' 23:59:59';
}
if (!empty($this->params['bargain_start_date']) && !empty($this->params['bargain_end_date'])) {
$where[] = [ 'EXP', "(a.create_time BETWEEN '{$this->params['bargain_start_date']} 00:00:00' and '{$this->params['bargain_end_date']} 23:59:59')" ];
$operation_date = date('Y.m.d', strtotime($this->params['bargain_start_date'])) . '-' . date('Y.m.d', strtotime($this->params['bargain_end_date']));
$operation_start_data = $this->params['bargain_start_date'] . ' 00:00:00';
$operation_end_data = $this->params['bargain_end_date'] . ' 23:59:59';
}
/**部门id**/ /**部门id**/
if (!empty($this->params['district_id'])) { if (!empty($this->params['district_id'])) {
$where['d.district_id'] = $this->params['district_id']; $where .= " AND d.district_id={$this->params['district_id']}";
} }
/**门店名**/ /**门店名**/
if (!empty($this->params['store_id'])) { if (!empty($this->params['store_id'])) {
$where['d.store_id'] = $this->params['store_id']; $where .= " AND d.store_id={$this->params['store_id']}";
} }
/**经纪人手机号**/ /**经纪人手机号**/
if (!empty($this->params['phone'])) { if (!empty($this->params['agent_id'])) {
$where['d.phone'] = [ 'like', '%' . $this->params['phone'] . '%' ]; $where .= " AND a.agent_id={$this->params['agent_id']}";
}
/**经纪人姓名**/
if (!empty($this->params['name'])) {
$where['d.name'] = [ 'like', '%' . $this->params['name'] . '%' ];
} }
$fields = ' d.store_id,d.district_id,a.agent_id,sum( a.practical_fee ),sum( c.fee ),sum( a.real_fee ),sum( a.service_charge ),sum( a.charity_fund ) ';
$m_bargain = new OPartialCommission(); $m_bargain = new OPartialCommission();
$fields = 'f.income_time,b.create_time,b.id,b.agent_id,d.name,d.phone';
if (empty($this->params['excel']) && $this->params['excel'] != 1) { if (empty($this->params['excel']) && $this->params['excel'] != 1) {
$list = $m_bargain->getCommissionTotalList($pageNo, $pageSize, $fields, $where, $operation_start_data, $operation_end_data);
$data['data']['list'] = $m_bargain->getCommissionTotalList($pageNo, $pageSize, 'a.id desc', $fields, $where, $operation_start_data, $operation_end_data);
foreach ($data['data']['list'] as $k => $v) { foreach ($data['data']['list'] as $k => $v) {
$data['data']['list'][$k]['income_date'] = $income_date; $list[$k]['income_date'] = $income_date;
$data['data']['list'][$k]['operation_date'] = $operation_date; $list[$k]['operation_date'] = $operation_date;
$data['data']['list'][$k]['over_fee'] = $v['practical_fee'] - $v['fee']; $list[$k]['over_fee'] = $v['practical_fee'] - $v['fee'];
} }
$data['data']['total'] = $m_bargain->getCommissionTotalListTotal($where); $data['data']['list'] = $list;
} else { // $data['data']['total'] = $m_bargain->getCommissionTotalListTotal($where);
//导出Excel
$pageSize = 25000;
$data = $m_bargain->getCommissionTotalList($pageNo, $pageSize, 'a.id desc', $fields, $where, $operation_start_data, $operation_end_data);
foreach ($data as $k => $v) {
$excel_data[$k]['income_date'] = $income_date; //收佣日期
$excel_data[$k]['operation_date'] = $operation_date; //成交日期
$excel_data[$k]['district_store'] = $v['district_store']; //所属部门/门店
$excel_data[$k]['name'] = $v['name'] . '-' . $v['phone']; //业务员
$excel_data[$k]['should_commission'] = $v['should_commission']; //应分佣金
$excel_data[$k]['service_charge'] = $v['service_charge']; //手续费
$excel_data[$k]['cash'] = $v['cash']; //现金奖
$excel_data[$k]['charity_fund'] = $v['charity_fund']; //慈善基金
$excel_data[$k]['practical_fee'] = $v['practical_fee']; //实收佣金
$excel_data[$k]['fee'] = $v['fee']; //税费
$excel_data[$k]['over_fee'] = $v['practical_fee'] - $v['fee'];
}
$num = count($excel_data) + 2;
$excel_data[$num]['income_time'] = '合计'; //收佣日期
$excel_data[$num]['create_time'] = ''; //成交日期
$excel_data[$num]['district_store'] = ''; //所属部门/门店
$excel_data[$num]['name'] = ''; //业务员
$excel_data[$num]['should_commission'] = "=SUM(E3:E{$num})"; //应分佣金
$excel_data[$num]['service_charge'] = "=SUM(F3:F{$num})"; //手续费
$excel_data[$num]['cash'] = "=SUM(G3:G{$num})"; //现金奖
$excel_data[$num]['charity_fund'] = "=SUM(H3:H{$num})"; //慈善基金
$excel_data[$num]['money'] = "=SUM(I3:I{$num})"; //实收佣金
$excel_data[$num]['fee'] = "=SUM(J3:J{$num})"; //税费
$excel_data[$num]['over_fee'] = "=SUM(K3:K{$num})";
$export = new ExportExcelUntil();
$title = [ '收佣日期/开票日期', '成交日期/开票日期', '所属部门/门店', '业务员', '应分佣金(元)', '手续费(元)', '现金奖(元)', '慈善基金(元)', '实收佣金(元)', '税费(元)', '最终实收(元)' ];
$export->exportTable('分佣提成汇总表', $excel_data, 11, '分佣提成汇总表', $title);
} }
return $this->response($data['code'], $data['msg'], $data['data']); return $this->response($data['code'], $data['msg'], $data['data']);
} }
......
...@@ -32,11 +32,11 @@ class RankingList extends Basic{ ...@@ -32,11 +32,11 @@ class RankingList extends Basic{
*/ */
public function getRandKingList(){ public function getRandKingList(){
$params = $this->params; $params = $this->params;
/* $params = array( $params = array(
"position" => 1,//职称 1店长 2经理 3主任 4顾问 0新人 "position" => 1,//职称 1店长 2经理 3主任 4顾问 0新人
"pk_type" => 2//pk类型 1月pk 2周pk "pk_type" => 2//pk类型 1月pk 2周pk
); );
$this->siteId = 10001;*/ $this->siteId = 10001;
if(!isset($params["position"]) || $params["position"] < 0 || $params["position"] > 5){ if(!isset($params["position"]) || $params["position"] < 0 || $params["position"] > 5){
return $this->response("101","请求参数错误"); return $this->response("101","请求参数错误");
} }
......
...@@ -209,67 +209,62 @@ class OPartialCommission extends BaseModel ...@@ -209,67 +209,62 @@ class OPartialCommission extends BaseModel
* *
* @param int $pageNo * @param int $pageNo
* @param int $pageSize * @param int $pageSize
* @param string $order_
* @param string $field * @param string $field
* @param string $params * @param string $params
* @param $operation_start_data * @return mixed
* @param $operation_end_data * @throws \think\db\exception\BindParamException
* @return false|\PDOStatement|string|\think\Collection * @throws \think\exception\PDOException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/ */
public function getCommissionTotalList($pageNo = 1, $pageSize = 15, $order_ = 'a.id desc', $field = '', $params = '', $operation_start_data, $operation_end_data) public function getCommissionTotalList($pageNo = 1, $pageSize = 15, $field = '', $params = '')
{ {
$data = $this->alias('a') $sql = "( SELECT
->field($field) {$field}
->join('o_bargain b', 'a.bargain_id = b.id', 'left') FROM
->join('o_bargain e', 'b.father_id = e.id or b.id=e.id and e.father_id=0', 'left') o_partial_commission a
->join('o_real_income f', 'e.id = f.bargain_id', 'left') LEFT JOIN o_real_income b ON a.real_income_id = b.id
->join('a_agents d', 'a.agent_id = d.id', 'left') LEFT JOIN o_taxes c ON a.agent_id = c.agent_id
->where($params) LEFT JOIN a_agents d ON a.agent_id = d.id
->order($order_) LEFT JOIN o_bargain e ON a.bargain_id = e.id
->limit($pageSize) WHERE
->page($pageNo) a.practical_fee IS NOT NULL
->group('a.agent_id') AND c.fee IS NOT NULL
->select(); {$params}
GROUP BY
$m_agent = new AAgents(); a.agent_id
$m_tax = new OTaxes(); ) UNION ALL
(
foreach ($data as $k => $v) { SELECT
if (isset($v['agent_id'])) { {$field}
$district_store = $m_agent->getStoreDistrict('store_name,district_name', [ 'a.id' => $v['agent_id'] ]); FROM
$data[$k]['district_store'] = $district_store['district_name'] . '-' . $district_store['store_name']; o_partial_commission a
LEFT JOIN o_real_income b ON a.real_income_id = b.id
//税费 LEFT JOIN o_taxes c ON a.agent_id = c.agent_id
$data[$k]['fee'] = $m_tax->where('operation_date', 'between time', [ $operation_start_data, $operation_end_data ]) LEFT JOIN a_agents d ON a.agent_id = d.id
->where('agent_id', $v['agent_id'])->sum('fee'); LEFT JOIN o_bargain e ON a.bargain_id = e.id
WHERE
//去除多次应分佣金 a.practical_fee IS NULL
$should_commission = $this->where('confirm_date', 'between time', [ $operation_start_data, $operation_end_data ]) AND c.fee IS NOT NULL
->where('agent_id', $v['agent_id'])->group('bargain_id')->column('should_commission'); {$params}
GROUP BY
$data[$k]['should_commission'] = 0; a.agent_id
foreach ($should_commission as $kk => $vv) { ) UNION ALL
$data[$k]['should_commission'] += $vv; (
} SELECT
{$field}
$field_sum = 'sum(practical_fee) as practical_fee,sum(cash) as cash,sum(real_fee) as real_fee,sum(service_charge) as service_charge, FROM
sum(charity_fund) as charity_fund'; o_partial_commission a
//应分佣金 LEFT JOIN o_real_income b ON a.real_income_id = b.id
$partial_commission = $this->field($field_sum)->where('confirm_date', 'between time', [ $operation_start_data, $operation_end_data ]) LEFT JOIN o_taxes c ON a.agent_id = c.agent_id
->where('agent_id', $v['agent_id'])->find(); LEFT JOIN a_agents d ON a.agent_id = d.id
LEFT JOIN o_bargain e ON a.bargain_id = e.id
$data[$k]['practical_fee'] = $partial_commission['practical_fee']; WHERE
$data[$k]['cash'] = $partial_commission['cash']; a.practical_fee IS NOT NULL
$data[$k]['real_fee'] = $partial_commission['real_fee']; AND c.fee IS NULL
$data[$k]['service_charge'] = $partial_commission['service_charge']; {$params}
$data[$k]['charity_fund'] = $partial_commission['charity_fund']; GROUP BY
} a.agent_id
} ) limit {$pageNo},{$pageSize}";
return $this->query($sql);
return $data;
} }
/** /**
......
...@@ -259,6 +259,7 @@ Route::group('index', [ ...@@ -259,6 +259,7 @@ Route::group('index', [
'searchOrderAgents' => ['index/Finance/searchOrderAgents', ['method' => 'GET']], //order_id获取盘方,客方,反签,独家,合作方 'searchOrderAgents' => ['index/Finance/searchOrderAgents', ['method' => 'GET']], //order_id获取盘方,客方,反签,独家,合作方
'getTallAgeList' => ['index/Finance/getTallAgeList', ['method' => 'GET']], //税费承担明细表 'getTallAgeList' => ['index/Finance/getTallAgeList', ['method' => 'GET']], //税费承担明细表
'getCommissionTotalList' => ['index/Finance/getCommissionTotalListV2', ['method' => 'GET']], //分佣提成汇总表 'getCommissionTotalList' => ['index/Finance/getCommissionTotalListV2', ['method' => 'GET']], //分佣提成汇总表
'getCommissionTotalListV2' => ['index/Finance/getCommissionTotalList', ['method' => 'GET']], //分佣提成汇总表
'getCollection' => ['index/Finance/getCollection', ['method' => 'post|get']],//收款记录 'getCollection' => ['index/Finance/getCollection', ['method' => 'post|get']],//收款记录
'addRealMoney' => ['index/Finance/addRealMoney', ['method' => 'post|get']],//新增实收 'addRealMoney' => ['index/Finance/addRealMoney', ['method' => 'post|get']],//新增实收
'visitShop' => ['index/Supervise/visitShop', ['method' => 'get']],//门店拜访 'visitShop' => ['index/Supervise/visitShop', ['method' => 'get']],//门店拜访
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment