Commit f8c1da70 authored by hujun's avatar hujun

分佣汇总表

parent d41c5b73
......@@ -1305,6 +1305,160 @@ class Finance extends Basic
return $this->response($data['code'], $data['msg'], $data['data']);
}
/**
* 分佣提成汇总表
*
* @return \think\Response
*/
public function getCommissionTotalListV2() {
if (!$this->request->isAjax() && $this->params['excel'] != 1) {
return view('commission_total');
}
$data['code'] = 200;
$data['msg'] = "";
$data['data'] = $excel_data = [];
$pageNo = empty($this->params['pageNo']) ? 1 : $this->params['pageNo'];
$pageSize = empty($this->params['pageSize']) ? 15 : $this->params['pageSize'];
$where['c.status'] = [ 'in', '10,11,13' ]; //10已提交 11审核成功
$where['a.confirm_status'] = 1; //确认分佣
$operation_start_data = $operation_end_data = $income_date = $operation_date = '';
/**收佣日期 start**/
if (!empty($this->params['income_start_date']) && empty($this->params['income_end_date'])) {
$where[] = [ 'EXP', "d.income_time > {$this->params['income_start_date']} or f.operation_date > {$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';
}
if (!empty($this->params['income_end_date']) && empty($this->params['income_start_date'])) {
$where[] = [ 'EXP', " d.income_time < {$this->params['income_end_date']} or f.operation_date < {$this->params['income_start_date']}" ];
$income_date = '-' . date('Y.m.d', strtotime($this->params['income_end_date']));
$operation_end_data = $this->params['income_end_date'] . ' 23:59:59';
}
if (!empty($this->params['income_start_date']) && !empty($this->params['income_end_date'])) {
$where[] = [ 'EXP', "(d.income_time 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']));
$operation_start_data = $this->params['income_start_date'] . ' 00:00:00';
$operation_end_data = $this->params['income_end_date'] . ' 23:59:59';
}
/**收佣日期 end**/
/**提交成交报告日期 start**/
if (!empty($this->params['bargain_start_date']) && empty($this->params['bargain_end_date'])) {
$where[] = [ 'EXP', "c.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', "c.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', "(c.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**/
if (!empty($this->params['district_id'])) {
$where['b.district_id'] = $this->params['district_id'];
}
/**门店名**/
if (!empty($this->params['store_id'])) {
$where['b.store_id'] = $this->params['store_id'];
}
/**经纪人手机号**/
if (!empty($this->params['phone'])) {
$where['b.phone'] = [ 'like', '%' . $this->params['phone'] . '%' ];
}
/**经纪人姓名**/
if (!empty($this->params['name'])) {
$where['b.name'] = [ 'like', '%' . $this->params['name'] . '%' ];
}
$m_bargain = new OPartialCommission();
$fields = 'd.income_time,c.create_time,c.id,a.agent_id,b.name,b.phone';
if (empty($this->params['excel']) && $this->params['excel'] != 1) {
$result_data = $m_bargain->getCommissionTotalListV2($pageNo, $pageSize, 'a.agent_id desc', $fields, $where, $operation_start_data, $operation_end_data);
if ($result_data['status'] == 'successful') {
$data['data']['list'] = $result_data['data'];
foreach ($data['data']['list'] as $k => $v) {
$data['data']['list'][$k]['income_date'] = $income_date;
$data['data']['list'][$k]['operation_date'] = $operation_date;
$data['data']['list'][$k]['over_fee'] = $v['practical_fee'] - $v['fee'];
}
$data['data']['total'] = $m_bargain->getCommissionTotalListTotalV2($where);
} else {
$data['code'] = 101;
$data['msg'] = '内部错误'.$result_data['msg'];
}
} else {
//导出Excel
$pageSize = 25000;
$result_data = $m_bargain->getCommissionTotalListV2($pageNo, $pageSize, 'a.agent_id desc', $fields, $where, $operation_start_data, $operation_end_data);
if ($result_data['status'] == 'succesful') {
$data = $result_data['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);
} else {
$data['code'] = 101;
$data['msg'] = '内部错误'.$result_data['msg'];
}
}
return $this->response($data['code'], $data['msg'], $data['data']);
}
/**
* 回到一级审核
*
......
......@@ -289,6 +289,78 @@ class OPartialCommission extends BaseModel
return $data;
}
/**
* 分佣提成汇总表
*
* @param int $pageNo
* @param int $pageSize
* @param string $order_
* @param string $field
* @param string $params
* @param $operation_start_data
* @param $operation_end_data
* @return mixed
*/
public function getCommissionTotalListV2($pageNo = 1, $pageSize = 15, $order_ = 'a.id desc', $field = '', $params = '', $operation_start_data, $operation_end_data)
{
try {
$data = $this->alias('a')
->field($field)
->join('a_agents b', 'a.agent_id = b.id', 'left')
->join('o_bargain c', 'a.bargain_id = c.id', 'left')
->join('o_real_income d', 'a.real_income_id = d.id', 'left')
->join('o_taxes f', 'a.bargain_id = f.bargain_id', 'left')
->where($params)
->order($order_)
->limit($pageSize)
->page($pageNo)
->group('b.id')
->select();
$m_agent = new AAgents();
$m_tax = new OTaxes();
foreach ($data as $k => $v) {
if (isset($v['agent_id'])) {
$district_store = $m_agent->getStoreDistrict('store_name,district_name', [ 'a.id' => $v['agent_id'] ]);
$data[$k]['district_store'] = $district_store['district_name'] . '-' . $district_store['store_name'];
//税费
$data[$k]['fee'] = $m_tax->where('operation_date', 'between time', [ $operation_start_data, $operation_end_data ])
->where('agent_id', $v['agent_id'])->sum('fee');
//去除多次应分佣金
$should_commission = $this->where('confirm_date', 'between time', [ $operation_start_data, $operation_end_data ])
->where('agent_id', $v['agent_id'])->group('bargain_id')->column('should_commission');
$data[$k]['should_commission'] = 0;
foreach ($should_commission as $kk => $vv) {
$data[$k]['should_commission'] += $vv;
}
$field_sum = 'sum(practical_fee) as practical_fee,sum(cash) as cash,sum(real_fee) as real_fee,sum(service_charge) as service_charge,
sum(charity_fund) as charity_fund';
//应分佣金
$partial_commission = $this->field($field_sum)->where('confirm_date', 'between time', [ $operation_start_data, $operation_end_data ])
->where('agent_id', $v['agent_id'])->find();
$data[$k]['practical_fee'] = $partial_commission['practical_fee'];
$data[$k]['cash'] = $partial_commission['cash'];
$data[$k]['real_fee'] = $partial_commission['real_fee'];
$data[$k]['service_charge'] = $partial_commission['service_charge'];
$data[$k]['charity_fund'] = $partial_commission['charity_fund'];
}
}
$result['status'] = 'successful';
$result['data'] = $data;
} catch (\Exception $e) {
$result['status'] = 'fail';
$result['msg'] = $e->getMessage();
}
return $result;
}
/**
* @param $params
* @return int|string
......@@ -304,6 +376,22 @@ class OPartialCommission extends BaseModel
->count();
}
/**
* @param $params
* @return int|string
*/
public function getCommissionTotalListTotalV2($params)
{
return $this->alias('a')
->join('a_agents b', 'a.agent_id = b.id', 'left')
->join('o_bargain c', 'a.bargain_id = c.id', 'left')
->join('o_real_income d', 'a.real_income_id = d.id', 'left')
->join('o_taxes f', 'a.bargain_id = f.bargain_id', 'left')
->where($params)
->group('a.agent_id')
->count();
}
/**
* 检查是否有未结单分佣
*
......
......@@ -245,7 +245,7 @@ Route::group('index', [
'searchBargainAgents' => [ 'index/Finance/searchBargainAgents', [ 'method' => 'GET' ] ], //成交报告id获取盘方,客方,反签,独家,合作方
'searchOrderAgents' => [ 'index/Finance/searchOrderAgents', [ 'method' => 'GET' ] ], //order_id获取盘方,客方,反签,独家,合作方
'getTallAgeList' => [ 'index/Finance/getTallAgeList', [ 'method' => 'GET' ] ], //税费承担明细表
'getCommissionTotalList' => [ 'index/Finance/getCommissionTotalList', [ 'method' => 'GET' ] ], //分佣提成汇总表
'getCommissionTotalList' => [ 'index/Finance/getCommissionTotalListV2', [ 'method' => 'GET' ] ], //分佣提成汇总表
'getCollection' => [ 'index/Collection/getCollection', [ 'method' => 'post|get' ] ],//收款记录
'addRealMoney' => [ 'index/Collection/addRealMoney', [ 'method' => 'post|get' ] ],//新增实收
'visitShop' => [ 'index/Supervise/visitShop', [ 'method' => 'get' ] ],//门店拜访
......
......@@ -407,14 +407,15 @@ define(['doT', 'text!temp/commissionTotal_template_tpl.html', 'css!style/home.cs
data: params,
dataType: 'json',
success: function(data) {
console.log(data);
var temp = document.getElementById('commissionTotal_list_tpl').innerHTML;
var doTtmpl = doT.template(temp);
$("#business_list").html(doTtmpl(data.data.list));
console.log(data.data.list);
/*分页代码*/
add_page(data.data.total, pageNo, business.pageSize, business.getList);
if (data.code == 200) {
var temp = document.getElementById('commissionTotal_list_tpl').innerHTML;
var doTtmpl = doT.template(temp);
$("#business_list").html(doTtmpl(data.data.list));
/*分页代码*/
add_page(data.data.total, pageNo, business.pageSize, business.getList);
} else {
alert(data.msg);
}
}
});
},
......
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