|
|
@@ -2497,8 +2497,16 @@ class TPlusServerService extends Service
|
|
|
private function saveResult($data, $user){
|
|
|
// 初始化汇总数组------报表一
|
|
|
$paymentSummary = [];
|
|
|
- $costSummary = [];
|
|
|
- $costSummary2 = [];
|
|
|
+
|
|
|
+ //回款里的原商品调整99001+经销补差99002+返利99003+串码误差调整99004+运费99005+货款预收99006,渠道明细大卖场
|
|
|
+ $product_map = [
|
|
|
+ '99001' => 0,
|
|
|
+ '99002' => 0,
|
|
|
+ '99003' => 0,
|
|
|
+ '99004' => 0,
|
|
|
+ '99005' => 0,
|
|
|
+ '99006' => 0,
|
|
|
+ ];
|
|
|
|
|
|
// 初始化汇总数组------报表二 (业务员报表)
|
|
|
$manSummary = [];
|
|
|
@@ -2519,6 +2527,8 @@ class TPlusServerService extends Service
|
|
|
'channel_finance',
|
|
|
'payment_amount',
|
|
|
'price_4_total',
|
|
|
+ 'price_1_total',
|
|
|
+ 'product_code',
|
|
|
'is_kh',
|
|
|
'employee_id_1',
|
|
|
'employee_id_1_title',
|
|
|
@@ -2538,11 +2548,55 @@ class TPlusServerService extends Service
|
|
|
$empId = $row->employee_id_1 ?? 0;
|
|
|
$empName = $row->employee_id_1_title ?? '';
|
|
|
|
|
|
- // --- 原报表一逻辑 (不改动) ---
|
|
|
- if (! $row->is_kh) {
|
|
|
- $paymentSummary[$month][$channel] = bcadd($paymentSummary[$month][$channel] ?? 0, $row->payment_amount, 3);
|
|
|
+ // --- 报表一逻辑 ---
|
|
|
+ $key_1 = "{$month}_{$channel}";
|
|
|
+ if (!isset($paymentSummary[$key_1])) {
|
|
|
+ $paymentSummary[$key_1] = [
|
|
|
+ 'time' => $month,
|
|
|
+ 'channel_details' => $channel,
|
|
|
+ 'receipt_amount' => 0,
|
|
|
+ 'receipt_not_amount' => 0,
|
|
|
+ 'pk_amount' => 0,
|
|
|
+ 'cost' => 0,
|
|
|
+ 'profit' => 0,
|
|
|
+ 'profit_not' => 0,
|
|
|
+ 'settle_amount' => 0,
|
|
|
+ 'gl_amount' => 0,
|
|
|
+ 'gl_not_amount' => 0,
|
|
|
+ 'wl_amount' => 0,
|
|
|
+ 'wl_not_amount' => 0,
|
|
|
+ 'ht_amount' => 0,
|
|
|
+ 'zk_amount' => 0,
|
|
|
+ 'cx_amount' => 0,
|
|
|
+ 'tg_amount' => 0,
|
|
|
+ 'cl_amount' => 0,
|
|
|
+ 'kq_amount' => 0,
|
|
|
+ 'zp_amount' => 0,
|
|
|
+ 'gg_amount' => 0,
|
|
|
+ 'kd_amount' => 0,
|
|
|
+ 'xsqt_amount' => 0,
|
|
|
+ 'ry_amount' => 0,
|
|
|
+ 'sb_amount' => 0,
|
|
|
+ 'sj_amount' => 0,
|
|
|
+ 'sj_not_amount' => 0,
|
|
|
+ 'sx_amount' => 0,
|
|
|
+ 'sx_not_amount' => 0,
|
|
|
+ 'cg_amount' => 0,
|
|
|
+ 'other_ck_amount' => 0,
|
|
|
+ ];
|
|
|
}
|
|
|
- $costSummary[$month][$channel] = bcadd($costSummary[$month][$channel] ?? 0, $row->price_4_total, 3);
|
|
|
+ // 收款总额 (所有)
|
|
|
+ $paymentSummary[$key_1]['receipt_amount'] = bcadd($paymentSummary[$key_1]['receipt_amount'], $row->payment_amount, 3);
|
|
|
+ // 收款 (不含不计考勤 is_kh == 0)
|
|
|
+ if (!$row->is_kh) {
|
|
|
+ $paymentSummary[$key_1]['receipt_not_amount'] = bcadd($paymentSummary[$key_1]['receipt_not_amount'], $row->payment_amount, 3);
|
|
|
+ }
|
|
|
+ //票扣费用
|
|
|
+ if($row->product_code && isset($product_map[$row->product_code])) {
|
|
|
+ $paymentSummary[$key_1]['pk_amount'] = bcadd($paymentSummary[$key_1]['pk_amount'], $row->price_1_total, 3);
|
|
|
+ }
|
|
|
+ // 业务成本
|
|
|
+ $paymentSummary[$key_1]['cost'] = bcadd($paymentSummary[$key_1]['cost'], $row->price_4_total, 3);
|
|
|
|
|
|
// --- 新报表二逻辑 (业务员维度) ---
|
|
|
$key = "{$month}_{$finance}_{$empId}";
|
|
|
@@ -2594,23 +2648,6 @@ class TPlusServerService extends Service
|
|
|
$lastId = $rows->last()->id;
|
|
|
} while ($rows->count() === $limit);
|
|
|
|
|
|
- // 计算毛利
|
|
|
- foreach ($manSummary as $key => $val) {
|
|
|
- // 1. 计算总毛利:总收款 - 总成本
|
|
|
- $manSummary[$key]['profit'] = bcsub(
|
|
|
- $val['receipt_amount'],
|
|
|
- $val['cost'],
|
|
|
- 3
|
|
|
- );
|
|
|
-
|
|
|
- // 2. 计算不含不计考勤毛利:考核收款 - 总成本
|
|
|
- $manSummary[$key]['profit_not'] = bcsub(
|
|
|
- $val['receipt_not_amount'],
|
|
|
- $val['cost'],
|
|
|
- 3
|
|
|
- );
|
|
|
- }
|
|
|
-
|
|
|
$limit = 500;
|
|
|
$lastId = 0;
|
|
|
do {
|
|
|
@@ -2638,41 +2675,63 @@ class TPlusServerService extends Service
|
|
|
$amount = $row->taxamount;
|
|
|
|
|
|
//表一-------------------------------------------------------
|
|
|
- // 结算费用
|
|
|
- if($row->fy_code == 7004){
|
|
|
- $costSummary2[$month][$channel]['settle_amount'] = bcadd($costSummary2[$month][$channel]['settle_amount'] ?? 0, $amount, 3);
|
|
|
- }
|
|
|
- // 管理费 (5%)
|
|
|
- $gl_amount = bcmul($amount, 0.05, 3);
|
|
|
- $costSummary2[$month][$channel]['gl_amount'] = bcadd($costSummary2[$month][$channel]['gl_amount'] ?? 0, $gl_amount, 3);
|
|
|
- // 物流费 (2.3%)
|
|
|
- $wl_amount = bcmul($amount, 0.023, 3);
|
|
|
- $costSummary2[$month][$channel]['wl_amount'] = bcadd($costSummary2[$month][$channel]['wl_amount'] ?? 0, $wl_amount, 3);
|
|
|
- if($row->fy_code == 7005) $costSummary2[$month][$channel]['ht_amount'] = bcadd($costSummary2[$month][$channel]['ht_amount'] ?? 0, $amount, 3);
|
|
|
- if($row->fy_code == 7006) $costSummary2[$month][$channel]['zk_amount'] = bcadd($costSummary2[$month][$channel]['zk_amount'] ?? 0, $amount, 3);
|
|
|
- if($row->fy_code == 7007) $costSummary2[$month][$channel]['cx_amount'] = bcadd($costSummary2[$month][$channel]['cx_amount'] ?? 0, $amount, 3);
|
|
|
- if($row->fy_code == 7013) $costSummary2[$month][$channel]['tg_amount'] = bcadd($costSummary2[$month][$channel]['tg_amount'] ?? 0, $amount, 3);
|
|
|
- if($row->fy_code == 7012) $costSummary2[$month][$channel]['cl_amount'] = bcadd($costSummary2[$month][$channel]['cl_amount'] ?? 0, $amount, 3);
|
|
|
- // 客情出库
|
|
|
- if($row->fy_code == 7008 || $row->ck_type == 20049) {
|
|
|
- $costSummary2[$month][$channel]['kq_amount'] = bcadd($costSummary2[$month][$channel]['kq_amount'] ?? 0, $amount, 3);
|
|
|
- }
|
|
|
- // 赠品出库
|
|
|
- if($row->fy_code == 7009 || $row->ck_type == 60) {
|
|
|
- $costSummary2[$month][$channel]['zp_amount'] = bcadd($costSummary2[$month][$channel]['zp_amount'] ?? 0, $amount, 3);
|
|
|
- }
|
|
|
- if($row->fy_code == 7010) $costSummary2[$month][$channel]['gg_amount'] = bcadd($costSummary2[$month][$channel]['gg_amount'] ?? 0, $amount, 3);
|
|
|
- if($row->fy_code == 7011) $costSummary2[$month][$channel]['kd_amount'] = bcadd($costSummary2[$month][$channel]['kd_amount'] ?? 0, $amount, 3);
|
|
|
- if($row->fy_code == 7001) $costSummary2[$month][$channel]['xsqt_amount'] = bcadd($costSummary2[$month][$channel]['xsqt_amount'] ?? 0, $amount, 3);
|
|
|
- if($row->fy_code == 7003) $costSummary2[$month][$channel]['ry_amount'] = bcadd($costSummary2[$month][$channel]['ry_amount'] ?? 0, $amount, 3);
|
|
|
- // 社保/福利
|
|
|
- if($row->fy_code == 7019 || $row->ck_type == 20048) {
|
|
|
- $costSummary2[$month][$channel]['sb_amount'] = bcadd($costSummary2[$month][$channel]['sb_amount'] ?? 0, $amount, 3);
|
|
|
+ $key = "{$month}_{$channel}";
|
|
|
+ if (!isset($paymentSummary[$key])) {
|
|
|
+ $paymentSummary[$key] = [
|
|
|
+ 'time' => $month,
|
|
|
+ 'channel_details' => $channel,
|
|
|
+ 'receipt_amount' => 0,
|
|
|
+ 'receipt_not_amount' => 0,
|
|
|
+ 'pk_amount' => 0,
|
|
|
+ 'cost' => 0,
|
|
|
+ 'profit' => 0,
|
|
|
+ 'profit_not' => 0,
|
|
|
+ 'settle_amount' => 0,
|
|
|
+ 'gl_amount' => 0,
|
|
|
+ 'gl_not_amount' => 0,
|
|
|
+ 'wl_amount' => 0,
|
|
|
+ 'wl_not_amount' => 0,
|
|
|
+ 'ht_amount' => 0,
|
|
|
+ 'zk_amount' => 0,
|
|
|
+ 'cx_amount' => 0,
|
|
|
+ 'tg_amount' => 0,
|
|
|
+ 'cl_amount' => 0,
|
|
|
+ 'kq_amount' => 0,
|
|
|
+ 'zp_amount' => 0,
|
|
|
+ 'gg_amount' => 0,
|
|
|
+ 'kd_amount' => 0,
|
|
|
+ 'xsqt_amount' => 0,
|
|
|
+ 'ry_amount' => 0,
|
|
|
+ 'sb_amount' => 0,
|
|
|
+ 'sj_amount' => 0,
|
|
|
+ 'sj_not_amount' => 0,
|
|
|
+ 'sx_amount' => 0,
|
|
|
+ 'sx_not_amount' => 0,
|
|
|
+ 'cg_amount' => 0,
|
|
|
+ 'other_ck_amount' => 0,
|
|
|
+ ];
|
|
|
}
|
|
|
- // 税金 (1%)
|
|
|
- $sj_amount = bcmul($amount, 0.01, 3);
|
|
|
- $costSummary2[$month][$channel]['sj_amount'] = bcadd($costSummary2[$month][$channel]['sj_amount'] ?? 0, $sj_amount, 3);
|
|
|
|
|
|
+ if ($row->order_type == 2) {
|
|
|
+ // 1. 判断是否为其他出库
|
|
|
+ $paymentSummary[$key]['other_ck_amount'] = bcadd($paymentSummary[$key]['other_ck_amount'] ?? 0, $amount, 3);
|
|
|
+ } else {
|
|
|
+ // 结算费用
|
|
|
+ if($row->fy_code == 7004) $paymentSummary[$key]['settle_amount'] = bcadd($paymentSummary[$key]['settle_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7005) $paymentSummary[$key]['ht_amount'] = bcadd($paymentSummary[$key]['ht_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7006) $paymentSummary[$key]['zk_amount'] = bcadd($paymentSummary[$key]['zk_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7007) $paymentSummary[$key]['cx_amount'] = bcadd($paymentSummary[$key]['cx_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7013) $paymentSummary[$key]['tg_amount'] = bcadd($paymentSummary[$key]['tg_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7012) $paymentSummary[$key]['cl_amount'] = bcadd($paymentSummary[$key]['cl_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7008) $paymentSummary[$key]['kq_amount'] = bcadd($paymentSummary[$key]['kq_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7009) $paymentSummary[$key]['zp_amount'] = bcadd($paymentSummary[$key]['zp_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7010) $paymentSummary[$key]['gg_amount'] = bcadd($paymentSummary[$key]['gg_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7011) $paymentSummary[$key]['kd_amount'] = bcadd($paymentSummary[$key]['kd_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7001) $paymentSummary[$key]['xsqt_amount'] = bcadd($paymentSummary[$key]['xsqt_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7003) $paymentSummary[$key]['ry_amount'] = bcadd($paymentSummary[$key]['ry_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7019) $paymentSummary[$key]['sb_amount'] = bcadd($paymentSummary[$key]['sb_amount'] ?? 0, $amount, 3);
|
|
|
+ if($row->fy_code == 7023) $paymentSummary[$key]['cg_amount'] = bcadd($paymentSummary[$key]['cg_amount'] ?? 0, $amount, 3);
|
|
|
+ }
|
|
|
|
|
|
// 表二----------------------------------------------------------------------
|
|
|
$key = "{$month}_{$finance}_{$empId}";
|
|
|
@@ -2739,6 +2798,49 @@ class TPlusServerService extends Service
|
|
|
} catch (\Throwable $exception){
|
|
|
return [false, "初步汇总异常" . $exception->getMessage() . "|" . $exception->getLine()];
|
|
|
}
|
|
|
+
|
|
|
+ foreach ($paymentSummary as $key => $item) {
|
|
|
+ $r_amount = $item['receipt_amount'];
|
|
|
+ $r_not_amount = $item['receipt_not_amount'];
|
|
|
+
|
|
|
+ // 1. 计算总毛利:总收款 - 总成本 - 票扣费用
|
|
|
+ $tmp = bcsub(
|
|
|
+ $r_amount,
|
|
|
+ $item['cost'],
|
|
|
+ 3
|
|
|
+ );
|
|
|
+ $paymentSummary[$key]['profit'] = bcsub(
|
|
|
+ $tmp,
|
|
|
+ $item['pk_amount'],
|
|
|
+ 3
|
|
|
+ );
|
|
|
+
|
|
|
+ // 2. 计算不含不计考勤毛利:考核收款 - 总成本 - 票扣费用
|
|
|
+ $tmp = bcsub(
|
|
|
+ $r_not_amount,
|
|
|
+ $item['cost'],
|
|
|
+ 3
|
|
|
+ );
|
|
|
+ $paymentSummary[$key]['profit_not'] = bcsub(
|
|
|
+ $tmp,
|
|
|
+ $item['pk_amount'],
|
|
|
+ 3
|
|
|
+ );
|
|
|
+
|
|
|
+ // 2. 统一计算比例费用(此时 $r_amount 是汇总后的总额,只算一次,绝对准确)
|
|
|
+ $paymentSummary[$key]['gl_amount'] = bcmul($r_amount, 0.05, 3);
|
|
|
+ $paymentSummary[$key]['gl_not_amount'] = bcmul($r_not_amount, 0.05, 3);
|
|
|
+
|
|
|
+ $paymentSummary[$key]['wl_amount'] = bcmul($r_amount, 0.023, 3);
|
|
|
+ $paymentSummary[$key]['wl_not_amount'] = bcmul($r_not_amount, 0.023, 3);
|
|
|
+
|
|
|
+ $paymentSummary[$key]['sj_amount'] = bcmul($r_amount, 0.01, 3);
|
|
|
+ $paymentSummary[$key]['sj_not_amount'] = bcmul($r_not_amount, 0.01, 3);
|
|
|
+
|
|
|
+ $paymentSummary[$key]['sx_amount'] = bcmul($r_amount, 0.01, 3);
|
|
|
+ $paymentSummary[$key]['sx_not_amount'] = bcmul($r_not_amount, 0.01, 3);
|
|
|
+ }
|
|
|
+
|
|
|
foreach ($manSummary as $key => $item) {
|
|
|
$r_amount = $item['receipt_amount'];
|
|
|
$r_not_amount = $item['receipt_not_amount'];
|
|
|
@@ -2757,7 +2859,6 @@ class TPlusServerService extends Service
|
|
|
$manSummary[$key]['sj_amount'] = bcmul($r_amount, 0.01, 3);
|
|
|
$manSummary[$key]['sj_not_amount'] = bcmul($r_not_amount, 0.01, 3);
|
|
|
|
|
|
- // 补齐字段,防止 DB 报错
|
|
|
$manSummary[$key]['sx_amount'] = bcmul($r_amount, 0.01, 3);
|
|
|
$manSummary[$key]['sx_not_amount'] = bcmul($r_not_amount, 0.01, 3);
|
|
|
}
|
|
|
@@ -2766,15 +2867,15 @@ class TPlusServerService extends Service
|
|
|
$start_timeStamp = $data['start_timeStamp'];
|
|
|
$end_timeStamp = $data['end_timeStamp'];
|
|
|
|
|
|
- $result = $this->sumRes($paymentSummary, $costSummary, $costSummary2);
|
|
|
+ $paymentSummary = array_values($paymentSummary);
|
|
|
$manSummary = array_values($manSummary);
|
|
|
|
|
|
- DB::transaction(function () use ($start_timeStamp, $end_timeStamp, $result, $manSummary) {
|
|
|
+ DB::transaction(function () use ($start_timeStamp, $end_timeStamp, $paymentSummary, $manSummary) {
|
|
|
ItemReport::where('time', '>=', $start_timeStamp)
|
|
|
->where('time', '<=', $end_timeStamp)
|
|
|
->delete();
|
|
|
|
|
|
- ItemReport::insert($result);
|
|
|
+ ItemReport::insert($paymentSummary);
|
|
|
|
|
|
ItemReportMan::where('time', '>=', $start_timeStamp)
|
|
|
->where('time', '<=', $end_timeStamp)
|