cqp 9 timmar sedan
förälder
incheckning
d44bed13b9
2 ändrade filer med 211 tillägg och 60 borttagningar
  1. 161 60
      app/Service/TPlusServerService.php
  2. 50 0
      config/header/78.php

+ 161 - 60
app/Service/TPlusServerService.php

@@ -2497,8 +2497,16 @@ class TPlusServerService extends Service
     private function saveResult($data, $user){
     private function saveResult($data, $user){
         // 初始化汇总数组------报表一
         // 初始化汇总数组------报表一
         $paymentSummary = [];
         $paymentSummary = [];
-        $costSummary = [];
-        $costSummary2 = [];
+
+        //回款里的原商品调整99001+经销补差99002+返利99003+串码误差调整99004+运费99005+货款预收99006,渠道明细大卖场
+        $product_map = [
+            '99001' => 0,
+            '99002' => 0,
+            '99003' => 0,
+            '99004' => 0,
+            '99005' => 0,
+            '99006' => 0,
+        ];
 
 
         // 初始化汇总数组------报表二 (业务员报表)
         // 初始化汇总数组------报表二 (业务员报表)
         $manSummary = [];
         $manSummary = [];
@@ -2519,6 +2527,8 @@ class TPlusServerService extends Service
                         'channel_finance',
                         'channel_finance',
                         'payment_amount',
                         'payment_amount',
                         'price_4_total',
                         'price_4_total',
+                        'price_1_total',
+                        'product_code',
                         'is_kh',
                         'is_kh',
                         'employee_id_1',
                         'employee_id_1',
                         'employee_id_1_title',
                         'employee_id_1_title',
@@ -2538,11 +2548,55 @@ class TPlusServerService extends Service
                     $empId = $row->employee_id_1 ?? 0;
                     $empId = $row->employee_id_1 ?? 0;
                     $empName = $row->employee_id_1_title ?? '';
                     $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}";
                     $key = "{$month}_{$finance}_{$empId}";
@@ -2594,23 +2648,6 @@ class TPlusServerService extends Service
                 $lastId = $rows->last()->id;
                 $lastId = $rows->last()->id;
             } while ($rows->count() === $limit);
             } 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;
             $limit = 500;
             $lastId = 0;
             $lastId = 0;
             do {
             do {
@@ -2638,41 +2675,63 @@ class TPlusServerService extends Service
                     $amount = $row->taxamount;
                     $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}";
                     $key = "{$month}_{$finance}_{$empId}";
@@ -2739,6 +2798,49 @@ class TPlusServerService extends Service
         } catch (\Throwable $exception){
         } catch (\Throwable $exception){
             return [false, "初步汇总异常" . $exception->getMessage() . "|" . $exception->getLine()];
             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) {
         foreach ($manSummary as $key => $item) {
             $r_amount = $item['receipt_amount'];
             $r_amount = $item['receipt_amount'];
             $r_not_amount = $item['receipt_not_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_amount'] = bcmul($r_amount, 0.01, 3);
             $manSummary[$key]['sj_not_amount'] = bcmul($r_not_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_amount'] = bcmul($r_amount, 0.01, 3);
             $manSummary[$key]['sx_not_amount'] = bcmul($r_not_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'];
             $start_timeStamp = $data['start_timeStamp'];
             $end_timeStamp = $data['end_timeStamp'];
             $end_timeStamp = $data['end_timeStamp'];
 
 
-            $result = $this->sumRes($paymentSummary, $costSummary, $costSummary2);
+            $paymentSummary = array_values($paymentSummary);
             $manSummary = array_values($manSummary);
             $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)
                 ItemReport::where('time', '>=', $start_timeStamp)
                     ->where('time', '<=', $end_timeStamp)
                     ->where('time', '<=', $end_timeStamp)
                     ->delete();
                     ->delete();
 
 
-                ItemReport::insert($result);
+                ItemReport::insert($paymentSummary);
 
 
                 ItemReportMan::where('time', '>=', $start_timeStamp)
                 ItemReportMan::where('time', '>=', $start_timeStamp)
                     ->where('time', '<=', $end_timeStamp)
                     ->where('time', '<=', $end_timeStamp)

+ 50 - 0
config/header/78.php

@@ -19,6 +19,16 @@ return [
         'value' => '收款销售收入',
         'value' => '收款销售收入',
         'sum' => 1,
         'sum' => 1,
     ],
     ],
+    [
+        'key' =>'receipt_not_amount',
+        'value' => '收款销售收入(不含考核)',
+        'sum' => 1,
+    ],
+    [
+        'key' =>'pk_amount',
+        'value' => '票扣费用(返利、调整等)',
+        'sum' => 1,
+    ],
     [
     [
         'key' =>'cost',
         'key' =>'cost',
         'value' => '成本',
         'value' => '成本',
@@ -29,6 +39,11 @@ return [
         'value' => '收款销售毛利',
         'value' => '收款销售毛利',
         'sum' => 1,
         'sum' => 1,
     ],
     ],
+    [
+        'key' =>'profit_not',
+        'value' => '收款销售毛利(不含考核)',
+        'sum' => 1,
+    ],
     [
     [
         'key' =>'settle_amount',
         'key' =>'settle_amount',
         'value' => '结算费用',
         'value' => '结算费用',
@@ -39,11 +54,21 @@ return [
         'value' => '管理费用',
         'value' => '管理费用',
         'sum' => 1,
         'sum' => 1,
     ],
     ],
+    [
+        'key' =>'gl_not_amount',
+        'value' => '管理费用(不含考核)',
+        'sum' => 1,
+    ],
     [
     [
         'key' =>'wl_amount',
         'key' =>'wl_amount',
         'value' => '物流配送',
         'value' => '物流配送',
         'sum' => 1,
         'sum' => 1,
     ],
     ],
+    [
+        'key' =>'wl_not_amount',
+        'value' => '物流配送(不含考核)',
+        'sum' => 1,
+    ],
     [
     [
         'key' =>'ht_amount',
         'key' =>'ht_amount',
         'value' => '合同费',
         'value' => '合同费',
@@ -104,9 +129,34 @@ return [
         'value' => '员工社保、福利费',
         'value' => '员工社保、福利费',
         'sum' => 1,
         'sum' => 1,
     ],
     ],
+    [
+        'key' =>'cg_amount',
+        'value' => '采购费用',
+        'sum' => 1,
+    ],
     [
     [
         'key' =>'sj_amount',
         'key' =>'sj_amount',
         'value' => '税金(手工)',
         'value' => '税金(手工)',
         'sum' => 1,
         'sum' => 1,
     ],
     ],
+    [
+        'key' =>'sj_not_amount',
+        'value' => '税金(手工 不含考核)',
+        'sum' => 1,
+    ],
+    [
+        'key' =>'sx_amount',
+        'value' => '财务手续费',
+        'sum' => 1,
+    ],
+    [
+        'key' =>'sx_not_amount',
+        'value' => '财务手续费(不含考核)',
+        'sum' => 1,
+    ],
+    [
+        'key' =>'other_ck_amount',
+        'value' => '其他出库单',
+        'sum' => 1,
+    ],
 ];
 ];