Commit 4257bc04 authored by hujun's avatar hujun

实收汇总

parent 29139406
...@@ -1425,30 +1425,36 @@ class Finance extends Basic ...@@ -1425,30 +1425,36 @@ class Finance extends Basic
$data['data'] = $excel_data = []; $data['data'] = $excel_data = [];
$pageSize = empty($this->params['pageSize']) ? 10 : $this->params['pageSize']; $pageSize = empty($this->params['pageSize']) ? 10 : $this->params['pageSize'];
if (empty($this->params['pageNo']) || $this->params['pageNo'] == 1) { $pageNo = empty($this->params['pageNo']) ? 1 : $this->params['pageNo'];
$pageNo = 0; // if (empty($this->params['pageNo']) || $this->params['pageNo'] == 1) {
} else { // $pageNo = 0;
$pageNo = ($this->params['pageNo'] - 1) * $pageSize; // } else {
} // $pageNo = ($this->params['pageNo'] - 1) * $pageSize;
$where = ' e.status in (10,11,13) '; // }
// $where = ' e.status in (10,11,13) ';
$where['e.status'] = ['in', '10,11,13'];
$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 .= " AND b.income_time > '{$this->params['income_start_date']}' AND c.operation_date > '{$this->params['income_start_date']}'"; // $where .= " AND b.income_time > '{$this->params['income_start_date']}' AND c.operation_date > '{$this->params['income_start_date']}'";
$where[0] = ['EXP', "b.income_time > '{$this->params['income_start_date']}' OR 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 .= " AND b.income_time < '{$this->params['income_end_date']}' AND c.operation_date < '{$this->params['income_end_date']}'"; // $where .= " AND b.income_time < '{$this->params['income_end_date']}' AND c.operation_date < '{$this->params['income_end_date']}'";
$where[0] = ['EXP', "b.income_time < '{$this->params['income_end_date']}' OR 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 .= " AND b.income_time BETWEEN '{$this->params['income_start_date']}' AND '{$this->params['income_end_date']}' "; // $where .= " AND b.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']}'"; // $where .= " AND c.operation_date BETWEEN '{$this->params['income_start_date']}' AND '{$this->params['income_end_date']}'";
$where[0] =['EXP', "b.income_time BETWEEN '{$this->params['income_start_date']}' AND '{$this->params['income_end_date']}'
OR 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';
...@@ -1458,22 +1464,22 @@ class Finance extends Basic ...@@ -1458,22 +1464,22 @@ class Finance extends Basic
/**收佣日期 end**/ /**收佣日期 end**/
if (!empty($this->params['bargain_start_date']) && empty($this->params['bargain_end_date'])) { if (!empty($this->params['bargain_start_date']) && empty($this->params['bargain_end_date'])) {
$where .= " AND e.create_time > '{$this->params['bargain_start_date']} 00:00:00' AND c.operation_date > '{$this->params['bargain_start_date']}'"; // $where .= " AND e.create_time > '{$this->params['bargain_start_date']} 00:00:00' AND c.operation_date > '{$this->params['bargain_start_date']}'";
$operation_date = date('Y.m.d', strtotime($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'; $operation_start_data = $this->params['bargain_start_date'] . ' 00:00:00';
} }
if (!empty($this->params['bargain_end_date']) && empty($this->params['bargain_start_date'])) { if (!empty($this->params['bargain_end_date']) && empty($this->params['bargain_start_date'])) {
$where .= " AND e.create_time < '{$this->params['bargain_end_date']} 23:59:59' AND c.operation_date > '{$this->params['bargain_end_date']}'"; // $where .= " AND e.create_time < '{$this->params['bargain_end_date']} 23:59:59' AND c.operation_date > '{$this->params['bargain_end_date']}'";
$operation_date = date('Y.m.d', strtotime($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'; $operation_end_data = $this->params['bargain_end_date'] . ' 23:59:59';
} }
if (!empty($this->params['bargain_start_date']) && !empty($this->params['bargain_end_date'])) { if (!empty($this->params['bargain_start_date']) && !empty($this->params['bargain_end_date'])) {
$where .= " AND e.create_time BETWEEN '{$this->params['bargain_start_date']} 00:00:00' AND '{$this->params['bargain_end_date']} 23:59:59' "; // $where .= " AND e.create_time BETWEEN '{$this->params['bargain_start_date']} 00:00:00' AND '{$this->params['bargain_end_date']} 23:59:59' ";
$where .= " AND c.operation_date BETWEEN '{$this->params['bargain_start_date']}' AND '{$this->params['bargain_end_date']}'"; // $where .= " AND c.operation_date BETWEEN '{$this->params['bargain_start_date']}' AND '{$this->params['bargain_end_date']}'";
$operation_date = date('Y.m.d', strtotime($this->params['bargain_start_date'])) . '-' . date('Y.m.d', strtotime($this->params['bargain_end_date'])); $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_start_data = $this->params['bargain_start_date'] . ' 00:00:00';
...@@ -1482,30 +1488,39 @@ class Finance extends Basic ...@@ -1482,30 +1488,39 @@ class Finance extends Basic
/**部门id**/ /**部门id**/
if (!empty($this->params['district_id'])) { if (!empty($this->params['district_id'])) {
$where .= " AND d.district_id={$this->params['district_id']}"; // $where .= " AND d.district_id={$this->params['district_id']}";
$where['d.district_id'] = $this->params['district_id'];
} }
/**门店名**/ /**门店名**/
if (!empty($this->params['store_id'])) { if (!empty($this->params['store_id'])) {
$where .= " AND d.store_id={$this->params['store_id']}"; // $where .= " AND d.store_id={$this->params['store_id']}";
$where['d.store_id'] = $this->params['store_id'];
} }
/**经纪人手机号**/ /**经纪人手机号**/
if (!empty($this->params['agent_id'])) { if (!empty($this->params['agent_id'])) {
$where .= " AND a.agent_id={$this->params['agent_id']}"; $where['a.agent_id'] = $this->params['agent_id'];
} }
$fields = ' d.store_id,d.district_id,a.agent_id,sum( a.practical_fee ) as practical_fee,sum( c.fee ) as fee,'; $fields = 'sum( a.practical_fee ) as practical_fee,';
$fields .= 'sum( a.real_fee ) as real_fee,sum( a.service_charge ) as service_charge,sum( a.charity_fund ) as charity_fund'; $fields .= 'sum( a.real_fee ) as real_fee,sum( a.service_charge ) as service_charge,sum( a.charity_fund ) as charity_fund';
$m_partial = new OPartialCommission(); $m_partial = new OPartialCommission();
$m_store = new AStore(); $m_store = new AStore();
$m_agent = new AAgents(); $m_agent = new AAgents();
if (empty($this->params['excel']) && $this->params['excel'] != 1) { if (empty($this->params['excel']) && $this->params['excel'] != 1) {
$data['data']['total_taxes'] = $m_partial->getCommissionTotalInfo('c.fee', $where); $m_tax = new OTaxes();
$taxes_where['a.father_id'] = ['>', 0];
$taxes_where['is_del'] = 0;
$taxes_where['b.status'] = ['IN', '10,11,13'];
$taxes_where['a.operation_date'] = ['between', [$operation_start_data, $operation_end_data]];
$data['data']['total_taxes'] = $m_tax->sumBargainFee('a.fee', $taxes_where);;
if (!empty($this->params['confirm_date'])) { if (!empty($this->params['confirm_date'])) {
$where .= ' AND a.confirm_date <= "'.$this->params['confirm_date'].' 23:59:59" AND a.confirm_status = 1 '; // $where .= ' AND a.confirm_date <= "'.$this->params['confirm_date'].' 23:59:59" AND a.confirm_status = 1 ';
$where['a.confirm_date'] = ['<=', $this->params['confirm_date'].' 23:59:59'];
$where['a.confirm_status'] = 1;
} }
$list = $m_partial->getCommissionTotalList($pageNo, $pageSize, $fields, $where, $operation_start_data, $operation_end_data); $list = $m_partial->getCommissionTotalList($pageNo, $pageSize, $fields, $where, $operation_start_data, $operation_end_data);
...@@ -1514,11 +1529,11 @@ class Finance extends Basic ...@@ -1514,11 +1529,11 @@ class Finance extends Basic
$list[$k]['operation_date'] = $operation_date; $list[$k]['operation_date'] = $operation_date;
$list[$k]['district_store'] = $m_store->getStoreDistrictName($v['store_id']); $list[$k]['district_store'] = $m_store->getStoreDistrictName($v['store_id']);
$list[$k]['fee'] = empty($v['fee']) ? 0 : $v['fee']; $list[$k]['fee'] = empty($v['fee']) ? 0 : $v['fee'];
$list[$k]['name'] = $m_agent->getAgentsById($v['agent_id'], 'name');
} }
$data['data']['list'] = $list; $data['data']['list'] = $list;
$data['data']['total'] = $m_partial->getCommissionTotalListTotal($where); $data['data']['total'] = $m_partial->getCommissionTotalListTotal($where);
$where[0] = ['EXP',"b.income_time BETWEEN '{$this->params['income_start_date']}' AND '{$this->params['income_end_date']}'"];
$data['data']['total_money'] = $m_partial->getCommissionTotalInfo('a.practical_fee', $where); $data['data']['total_money'] = $m_partial->getCommissionTotalInfo('a.practical_fee', $where);
} else { } else {
...@@ -1526,7 +1541,9 @@ class Finance extends Basic ...@@ -1526,7 +1541,9 @@ class Finance extends Basic
$pageSize = 25000; $pageSize = 25000;
$fields .= ',sum(a.should_commission) as should_commission,sum(a.cash) as cash'; $fields .= ',sum(a.should_commission) as should_commission,sum(a.cash) as cash';
if (!empty($this->params['confirm_date'])) { if (!empty($this->params['confirm_date'])) {
$where .= ' AND a.confirm_date <= "'.$this->params['confirm_date'].' 23:59:59" AND a.confirm_status = 1 '; // $where .= ' AND a.confirm_date <= "'.$this->params['confirm_date'].' 23:59:59" AND a.confirm_status = 1 ';
$where['a.confirm_date'] = ['<=', $this->params['confirm_date'].' 23:59:59'];
$where['a.confirm_status'] = 1;
} }
$result_data = $m_partial->getCommissionTotalList($pageNo, $pageSize, $fields, $where, $operation_start_data, $operation_end_data); $result_data = $m_partial->getCommissionTotalList($pageNo, $pageSize, $fields, $where, $operation_start_data, $operation_end_data);
......
...@@ -215,56 +215,49 @@ class OPartialCommission extends BaseModel ...@@ -215,56 +215,49 @@ class OPartialCommission extends BaseModel
* @throws \think\db\exception\BindParamException * @throws \think\db\exception\BindParamException
* @throws \think\exception\PDOException * @throws \think\exception\PDOException
*/ */
public function getCommissionTotalList($pageNo = 1, $pageSize = 15, $field = '', $params = '') public function getCommissionTotalList($pageNo = 1, $pageSize = 15, $field = '', $params = '', $operation_start_data, $operation_end_data)
{ {
$sql = "( SELECT $agent_id = $this->alias('a')
{$field} ->field('a.agent_id,d.name,d.store_id,d.district_id')
FROM ->join('o_real_income b', 'a.real_income_id = b.id', 'left')
o_partial_commission a ->join('o_taxes c', 'a.agent_id = c.agent_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 ->join('o_bargain e', 'a.bargain_id = e.id', 'left')
LEFT JOIN a_agents d ON a.agent_id = d.id ->where($params)
LEFT JOIN o_bargain e ON a.bargain_id = e.id ->limit($pageSize)
WHERE ->page($pageNo)
{$params} ->group('a.agent_id')
AND a.practical_fee > 0 ->select();
AND c.fee > 0
GROUP BY $partial_where['a.confirm_status'] = 1;
a.agent_id $partial_where['b.status'] = $taxes_where['b.status'] = ['IN', '10,11,13'];
) UNION ALL $partial_where['a.is_del'] = $taxes_where['is_del'] = 0;
( $taxes_where['a.father_id'] = ['>', 0];
SELECT
{$field} $m_tax = new OTaxes();
FROM $result = [];
o_partial_commission a foreach ($agent_id as $k=>$v) {
LEFT JOIN o_real_income b ON a.real_income_id = b.id $partial_where['a.agent_id'] =$v['agent_id'];
LEFT JOIN o_taxes c ON a.agent_id = c.agent_id $partial_where['c.income_time'] = $taxes_where['a.operation_date'] = ['between', [$operation_start_data, $operation_end_data]];
LEFT JOIN a_agents d ON a.agent_id = d.id $result[$k] = $this->getSumMoney($field, $partial_where);
LEFT JOIN o_bargain e ON a.bargain_id = e.id
WHERE $taxes_where['a.agent_id'] = $v['agent_id'];
{$params} $result[$k]['fee'] = $m_tax->sumBargainFee('a.fee', $taxes_where);
AND a.practical_fee IS NULL $result[$k]['agent_id'] = $v['agent_id'];
AND c.fee > 0 $result[$k]['name'] = $v['name'];
GROUP BY $result[$k]['store_id'] = $v['store_id'];
a.agent_id $result[$k]['district_id'] = $v['district_id'];
) UNION ALL }
( return $result;
SELECT }
{$field}
FROM public function getSumMoney($field, $where) {
o_partial_commission a return $this->alias('a')
LEFT JOIN o_real_income b ON a.real_income_id = b.id ->field($field)
LEFT JOIN o_taxes c ON a.agent_id = c.agent_id ->join('o_bargain b', 'a.bargain_id = b.id', 'left')
LEFT JOIN a_agents d ON a.agent_id = d.id ->join('o_real_income c', ' a.real_income_id = c.id', 'left')
LEFT JOIN o_bargain e ON a.bargain_id = e.id ->where($where)
WHERE ->find();
{$params}
AND a.practical_fee > 0
AND c.fee IS NULL
GROUP BY
a.agent_id
) limit {$pageNo},{$pageSize}";
return $this->query($sql);
} }
/** /**
...@@ -274,8 +267,9 @@ class OPartialCommission extends BaseModel ...@@ -274,8 +267,9 @@ class OPartialCommission extends BaseModel
*/ */
public function getCommissionTotalInfo($field, $where) { public function getCommissionTotalInfo($field, $where) {
return $this->alias('a') return $this->alias('a')
->field('distinct a.id')
->join('o_real_income b', 'a.real_income_id = b.id', 'left') ->join('o_real_income b', 'a.real_income_id = b.id', 'left')
->join('o_taxes c', 'a.agent_id = c.agent_id', 'left') // ->join('o_taxes c', 'a.agent_id = c.agent_id', 'left')
->join('a_agents d', 'a.agent_id = d.id', 'left') ->join('a_agents d', 'a.agent_id = d.id', 'left')
->join('o_bargain e', 'a.bargain_id = e.id', 'left') ->join('o_bargain e', 'a.bargain_id = e.id', 'left')
->where($where) ->where($where)
...@@ -365,60 +359,14 @@ class OPartialCommission extends BaseModel ...@@ -365,60 +359,14 @@ class OPartialCommission extends BaseModel
*/ */
public function getCommissionTotalListTotal($params) public function getCommissionTotalListTotal($params)
{ {
$sql = "SELECT return $this->alias('a')
COUNT( * ) AS count ->join('o_real_income b', 'a.real_income_id = b.id', 'left')
FROM ->join('o_taxes c', 'a.agent_id = c.agent_id', 'left')
( ->join('a_agents d', 'a.agent_id = d.id', 'left')
->join('o_bargain e', 'a.bargain_id = e.id', 'left')
( SELECT ->where($params)
count(a.id) as num ->group('a.agent_id')
FROM ->count();
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
LEFT JOIN a_agents d ON a.agent_id = d.id
LEFT JOIN o_bargain e ON a.bargain_id = e.id
WHERE
{$params}
AND a.practical_fee > 0
AND c.fee > 0
GROUP BY
a.agent_id
) UNION ALL
(
SELECT
count(a.id)
FROM
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
LEFT JOIN a_agents d ON a.agent_id = d.id
LEFT JOIN o_bargain e ON a.bargain_id = e.id
WHERE
{$params}
AND a.practical_fee IS NULL
AND c.fee > 0
GROUP BY
a.agent_id
) UNION ALL
(
SELECT
count(a.id)
FROM
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
LEFT JOIN a_agents d ON a.agent_id = d.id
LEFT JOIN o_bargain e ON a.bargain_id = e.id
WHERE
{$params}
AND a.practical_fee > 0
AND c.fee IS NULL
GROUP BY
a.agent_id
) ) as _group_count_";
$num = $this->query($sql);
return $num[0]['count'];
} }
/** /**
......
...@@ -236,7 +236,7 @@ class OTaxes extends BaseModel ...@@ -236,7 +236,7 @@ class OTaxes extends BaseModel
->join('o_bargain b', 'a.bargain_id = b.id', 'left') ->join('o_bargain b', 'a.bargain_id = b.id', 'left')
->join('o_order c', 'b.order_id = c.id', 'left') ->join('o_order c', 'b.order_id = c.id', 'left')
->join('g_houses d', 'c.house_id = d.id', 'left') ->join('g_houses d', 'c.house_id = d.id', 'left')
->join('a_agents e', 'b.agent_id = e.id', 'left') ->join('a_agents e', 'a.agent_id = e.id', 'left')
->where($params) ->where($params)
->sum("a.fee"); ->sum("a.fee");
return $data; return $data;
...@@ -280,7 +280,25 @@ class OTaxes extends BaseModel ...@@ -280,7 +280,25 @@ class OTaxes extends BaseModel
return $result; return $result;
} }
/**
* @param $field
* @param $where
* @return float|int
*/
public function sumField($field, $where) { public function sumField($field, $where) {
return $this->where($where)->sum($field); return $this->where($where)->sum($field);
} }
/**
* @param string $field
* @param $where
* @return float|int
*/
public function sumBargainFee($field = 'a.fee', $where) {
return $this->field($field)
->alias('a')
->join('o_bargain b', 'a.bargain_id = b.id', 'left')
->where($where)
->sum($field);
}
} }
\ No newline at end of file
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