shish 5 ore fa
parent
commit
5dc6b5d218

+ 51 - 5
app-ghs/controllers/ExpendController.php

@@ -37,6 +37,7 @@ class ExpendController extends BaseController
         $currentEndTime = $currentEndDate . ' 23:59:59';
         $currentEndTime = $currentEndDate . ' 23:59:59';
 
 
         $where = ['mainId' => $this->mainId];
         $where = ['mainId' => $this->mainId];
+        // 汇总默认按记账时间 payTime(与列表默认一致)
         $where['payTime'] = ['between', [$currentStartTime, $currentEndTime]];
         $where['payTime'] = ['between', [$currentStartTime, $currentEndTime]];
         $where['delStatus'] = 0; //过滤掉已删除的
         $where['delStatus'] = 0; //过滤掉已删除的
         $list = ExpendClass::getAllByCondition($where, null, '*', null);
         $list = ExpendClass::getAllByCondition($where, null, '*', null);
@@ -218,8 +219,11 @@ class ExpendController extends BaseController
         $currentEndDate = date('Y-m-d', strtotime($end));
         $currentEndDate = date('Y-m-d', strtotime($end));
         $currentStartTime = $currentStartDate . ' 00:00:00';
         $currentStartTime = $currentStartDate . ' 00:00:00';
         $currentEndTime = $currentEndDate . ' 23:59:59';
         $currentEndTime = $currentEndDate . ' 23:59:59';
-        $where['payTime'] = ['between', [$currentStartTime, $currentEndTime]];
-        $respond = ExpendClass::getExpendList($where);
+        // timeType=pay(默认记账 payTime)/ send(发生 sendTime)
+        $timeType = isset($get['timeType']) ? strval($get['timeType']) : 'pay';
+        $timeField = ($timeType === 'send') ? 'sendTime' : 'payTime';
+        $where[$timeField] = ['between', [$currentStartTime, $currentEndTime]];
+        $respond = ExpendClass::getExpendList($where, $timeField . ' DESC,id DESC');
         $map = dict::getDict('expendTypeMap');
         $map = dict::getDict('expendTypeMap');
         if (!empty($respond['list'])) {
         if (!empty($respond['list'])) {
             foreach ($respond['list'] as $key => $val) {
             foreach ($respond['list'] as $key => $val) {
@@ -319,10 +323,18 @@ class ExpendController extends BaseController
             }
             }
             $staffName = $staff->name ?? '';
             $staffName = $staff->name ?? '';
             $ptStyle = dict::getDict('ptStyle', 'ghs');
             $ptStyle = dict::getDict('ptStyle', 'ghs');
+            // payTime:登记记账时间,固定为当前时刻(不可再改)
             $payTime = date("Y-m-d H:i:s");
             $payTime = date("Y-m-d H:i:s");
-            $historyDate = $post['historyDate'] ?? '';
-            if (!empty($historyDate)) {
-                $payTime = $historyDate . date(" H:i:s");
+            // sendTime:业务归属时间,前端可选日期;空则当天
+            $sendTimeInput = isset($post['sendTime']) ? str_replace('/', '-', trim((string)$post['sendTime'])) : '';
+            if ($sendTimeInput === '') {
+                $sendTime = $payTime;
+            } elseif (preg_match('/^\d{4}-\d{2}-\d{2}$/', $sendTimeInput)) {
+                $sendTime = $sendTimeInput . date(' H:i:s');
+            } elseif (preg_match('/^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}/', $sendTimeInput)) {
+                $sendTime = $sendTimeInput;
+            } else {
+                $sendTime = $payTime;
             }
             }
             $expendData = [
             $expendData = [
                 'type' => $type,
                 'type' => $type,
@@ -335,6 +347,7 @@ class ExpendController extends BaseController
                 'payWay' => $payWay,
                 'payWay' => $payWay,
                 'bx' => $bx,
                 'bx' => $bx,
                 'payTime' => $payTime,
                 'payTime' => $payTime,
+                'sendTime' => $sendTime,
             ];
             ];
             $respond = ExpendClass::add($expendData, true);
             $respond = ExpendClass::add($expendData, true);
 
 
@@ -425,4 +438,37 @@ class ExpendController extends BaseController
         util::complete('修改成功');
         util::complete('修改成功');
     }
     }
 
 
+    /**
+     * 修改支出业务时间 sendTime(列表「修改」走此接口;payTime 仍不可改)。
+     */
+    public function actionChangeSendTime()
+    {
+        $get = Yii::$app->request->get();
+        $id = $get['id'] ?? 0;
+        $date = $get['date'] ?? '';
+        if (empty($date)) {
+            util::fail('没有日期');
+        }
+        $date = str_replace('/', '-', trim((string)$date));
+        if (!preg_match('/^\d{4}-\d{2}-\d{2}/', $date)) {
+            util::fail('日期格式错误');
+        }
+        $expend = ExpendClass::getById($id, true);
+        if (empty($expend)) {
+            util::fail('没有找到支出');
+        }
+        if ($expend->mainId != $this->mainId) {
+            util::fail('不是你的支出');
+        }
+        // 只改 sendTime;时分秒沿用原 sendTime,空则用 addTime
+        $baseTime = $expend->sendTime ?? '';
+        if (empty($baseTime) || strpos((string)$baseTime, '0000-00-00') === 0) {
+            $baseTime = $expend->addTime ?? date('Y-m-d H:i:s');
+        }
+        $day = substr($date, 0, 10);
+        $expend->sendTime = $day . date(' H:i:s', strtotime($baseTime));
+        $expend->save();
+        util::complete('修改成功');
+    }
+
 }
 }

+ 2 - 2
app-ghs/controllers/OrderController.php

@@ -1112,7 +1112,7 @@ class OrderController extends BaseController
             $where['book'] = $book;
             $where['book'] = $book;
         }
         }
         $searchTime = $get['searchTime'] ?? '';
         $searchTime = $get['searchTime'] ?? '';
-        // 0 开单时间 addTime,1 账时间 payTime,2 发货时间 sendTime;1 保持原值避免旧端/书签坏掉
+        // 0 开单时间 addTime,1 账时间 payTime,2 发货时间 sendTime;1 保持原值避免旧端/书签坏掉
         $searchTimeType = (int)($get['searchTimeType'] ?? 0);
         $searchTimeType = (int)($get['searchTimeType'] ?? 0);
         if (!empty($searchTime)) {
         if (!empty($searchTime)) {
             $startTime = $get['startTime'] ?? '';
             $startTime = $get['startTime'] ?? '';
@@ -1136,7 +1136,7 @@ class OrderController extends BaseController
                 $exportTimeName = '发货时间';
                 $exportTimeName = '发货时间';
             } elseif ($searchTimeType === 1) {
             } elseif ($searchTimeType === 1) {
                 $exportTimeKey = 'payTime';
                 $exportTimeKey = 'payTime';
-                $exportTimeName = '账时间';
+                $exportTimeName = '账时间';
             } else {
             } else {
                 $exportTimeKey = 'addTime';
                 $exportTimeKey = 'addTime';
                 $exportTimeName = '开单时间';
                 $exportTimeName = '开单时间';

+ 4 - 4
app-ghs/controllers/PurchaseController.php

@@ -41,7 +41,7 @@ class PurchaseController extends BaseController
         util::success(['salt' => $salt]);
         util::success(['salt' => $salt]);
     }
     }
 
 
-    // 采购挂账明细:searchTime 筛账时间 entryTime,sendSearchTime 筛发货时间 sendTime
+    // 采购挂账明细:searchTime 筛账时间 entryTime,sendSearchTime 筛发货时间 sendTime
     public function actionDebtList()
     public function actionDebtList()
     {
     {
         $get = Yii::$app->request->get();
         $get = Yii::$app->request->get();
@@ -54,7 +54,7 @@ class PurchaseController extends BaseController
         if ($confirm > -1) {
         if ($confirm > -1) {
             $where['confirm'] = $confirm;
             $where['confirm'] = $confirm;
         }
         }
-        // 账时间:采购入库单按入库日 entryTime(没有销售单那种 payTime)
+        // 账时间:采购入库单按入库日 entryTime(没有销售单那种 payTime)
         $searchTime = $get['searchTime'] ?? '';
         $searchTime = $get['searchTime'] ?? '';
         if (!empty($searchTime)) {
         if (!empty($searchTime)) {
             $startTime = $get['startTime'] ?? '';
             $startTime = $get['startTime'] ?? '';
@@ -62,7 +62,7 @@ class PurchaseController extends BaseController
             $period = dateUtil::formatTime($searchTime, $startTime, $endTime);
             $period = dateUtil::formatTime($searchTime, $startTime, $endTime);
             $where['entryTime'] = ['between', [$period['startTime'], $period['endTime']]];
             $where['entryTime'] = ['between', [$period['startTime'], $period['endTime']]];
         }
         }
-        // 发货时间:按 sendTime,可与账时间同时生效
+        // 发货时间:按 sendTime,可与账时间同时生效
         $sendSearchTime = $get['sendSearchTime'] ?? '';
         $sendSearchTime = $get['sendSearchTime'] ?? '';
         if (!empty($sendSearchTime)) {
         if (!empty($sendSearchTime)) {
             $sendStartTime = $get['sendStartTime'] ?? '';
             $sendStartTime = $get['sendStartTime'] ?? '';
@@ -122,4 +122,4 @@ class PurchaseController extends BaseController
         util::complete('确认成功');
         util::complete('确认成功');
     }
     }
 
 
-}
+}

+ 8 - 2
biz-ghs/expend/classes/ExpendClass.php

@@ -9,9 +9,15 @@ class ExpendClass extends BaseClass
 
 
     public static $baseFile = '\bizGhs\expend\models\Expend';
     public static $baseFile = '\bizGhs\expend\models\Expend';
 
 
-    public static function getExpendList($where)
+    /**
+     * 支出分页列表。
+     * @param array $where 查询条件(含 payTime 或 sendTime 区间)
+     * @param string $order 排序,默认按记账时间
+     * @return array
+     */
+    public static function getExpendList($where, $order = 'payTime DESC,id DESC')
     {
     {
-        $data = self::getList('*', $where, 'payTime DESC,id DESC');
+        $data = self::getList('*', $where, $order);
         return $data;
         return $data;
     }
     }
 
 

+ 1 - 1
biz-ghs/order/classes/OrderClass.php

@@ -426,7 +426,7 @@ class OrderClass extends BaseClass
                 }
                 }
             }
             }
         }
         }
-        $timeTypeName = $searchTimeType === 2 ? '发货时间' : ($searchTimeType === 1 ? '账时间' : '开单时间');
+        $timeTypeName = $searchTimeType === 2 ? '发货时间' : ($searchTimeType === 1 ? '账时间' : '开单时间');
         $fileName = '订单明细-' . $timeTypeName . '-' . time();
         $fileName = '订单明细-' . $timeTypeName . '-' . time();
         $objPHPExcel->getActiveSheet()->setTitle($fileName);
         $objPHPExcel->getActiveSheet()->setTitle($fileName);
         $objPHPExcel->setActiveSheetIndex(0);
         $objPHPExcel->setActiveSheetIndex(0);

+ 20 - 7
biz-ghs/stat/classes/StatSaleClass.php

@@ -254,6 +254,9 @@ class StatSaleClass extends BaseClass
     /**
     /**
      * 经营利润总表:收入 − 支出。
      * 经营利润总表:收入 − 支出。
      * 采购跨天售后:不改「花材采购」入库口径;通过日单独「采购隔天退货」(退货并退款+仅退款合计)计入收入。
      * 采购跨天售后:不改「花材采购」入库口径;通过日单独「采购隔天退货」(退货并退款+仅退款合计)计入收入。
+     * timeType=bill(默认):销售按 payTime、采购按 entryTime、支出按 payTime;
+     * timeType=send:销售/采购/支出均按 sendTime。
+     * 仅切换 xhGhsOrder / xhOrder / xhGhsCgOrder / xhExpend,其它统计项时间字段不变。
      */
      */
     public static function profile($mainId)
     public static function profile($mainId)
     {
     {
@@ -277,12 +280,22 @@ class StatSaleClass extends BaseClass
         $currentStartTime = $currentStartDate . ' 00:00:00';
         $currentStartTime = $currentStartDate . ' 00:00:00';
         $currentEndTime = $currentEndDate . ' 23:59:59';
         $currentEndTime = $currentEndDate . ' 23:59:59';
 
 
+        // 记账时间(bill,默认) / 发货时间(send):作用于批发销售、零售销售、供货商采购、支出登记
+        $timeType = isset($get['timeType']) ? strval($get['timeType']) : 'bill';
+        $useSendTime = ($timeType === 'send');
+        // xhGhsOrder / xhOrder
+        $saleTimeField = $useSendTime ? 'sendTime' : 'payTime';
+        // xhGhsCgOrder:账单口径用入库时间 entryTime
+        $cgTimeField = $useSendTime ? 'sendTime' : 'entryTime';
+        // xhExpend:账单口径 payTime,发货口径 sendTime
+        $expendTimeField = $useSendTime ? 'sendTime' : 'payTime';
+
         //出库
         //出库
         $stockOut = StatStockOutClass::getSum($where);
         $stockOut = StatStockOutClass::getSum($where);
 
 
-        //采购入库
+        //采购入库(xhGhsCgOrder)
         $cgWhere = ['mainId' => $mainId, 'status' => 4];
         $cgWhere = ['mainId' => $mainId, 'status' => 4];
-        $cgWhere['entryTime'] = ['between', [$currentStartTime, $currentEndTime]];
+        $cgWhere[$cgTimeField] = ['between', [$currentStartTime, $currentEndTime]];
         $cgList = PurchaseOrderClass::getAllByCondition($cgWhere, null, '*');
         $cgList = PurchaseOrderClass::getAllByCondition($cgWhere, null, '*');
         $cg = 0;
         $cg = 0;
         if (!empty($cgList)) {
         if (!empty($cgList)) {
@@ -343,12 +356,12 @@ class StatSaleClass extends BaseClass
 
 
         $totalOrderNum = 0;
         $totalOrderNum = 0;
 
 
-        //批发开单
+        //批发开单(xhGhsOrder)
         $pfIncome = 0;
         $pfIncome = 0;
         $pfSendCost = 0;
         $pfSendCost = 0;
         $pfPack = 0;
         $pfPack = 0;
         $where = ['mainId' => $mainId, 'status' => ['in', [OrderClass::ORDER_STATUS_UN_SEND, OrderClass::ORDER_STATUS_SENDING, OrderClass::ORDER_STATUS_COMPLETE]]];
         $where = ['mainId' => $mainId, 'status' => ['in', [OrderClass::ORDER_STATUS_UN_SEND, OrderClass::ORDER_STATUS_SENDING, OrderClass::ORDER_STATUS_COMPLETE]]];
-        $where['payTime'] = ['between', [$currentStartTime, $currentEndTime]];
+        $where[$saleTimeField] = ['between', [$currentStartTime, $currentEndTime]];
 
 
         $ghsOrderList = OrderClass::getAllByCondition($where, null, '*');
         $ghsOrderList = OrderClass::getAllByCondition($where, null, '*');
         if (!empty($ghsOrderList)) {
         if (!empty($ghsOrderList)) {
@@ -380,7 +393,7 @@ class StatSaleClass extends BaseClass
             $currentEndTime
             $currentEndTime
         );
         );
 
 
-        //零售开单
+        //零售开单(xhOrder)
         $payCodeIncome = 0;
         $payCodeIncome = 0;
         $lsAfterSale = 0;
         $lsAfterSale = 0;
         $lsGiveBalance = 0;
         $lsGiveBalance = 0;
@@ -388,7 +401,7 @@ class StatSaleClass extends BaseClass
         $lsSendCost = 0;
         $lsSendCost = 0;
         $lsServiceFee = 0;
         $lsServiceFee = 0;
         $hdWhere = ['mainId' => $mainId, 'status' => ['in', [HdOrderClass::ORDER_STATUS_UN_SEND, HdOrderClass::ORDER_STATUS_SENDING, HdOrderClass::ORDER_STATUS_COMPLETE]]];
         $hdWhere = ['mainId' => $mainId, 'status' => ['in', [HdOrderClass::ORDER_STATUS_UN_SEND, HdOrderClass::ORDER_STATUS_SENDING, HdOrderClass::ORDER_STATUS_COMPLETE]]];
-        $hdWhere['payTime'] = ['between', [$currentStartTime, $currentEndTime]];
+        $hdWhere[$saleTimeField] = ['between', [$currentStartTime, $currentEndTime]];
         $hdOrderList = HdOrderClass::getAllByCondition($hdWhere, null, '*');
         $hdOrderList = HdOrderClass::getAllByCondition($hdWhere, null, '*');
         foreach ($hdOrderList as $hdKey => $hdOrder) {
         foreach ($hdOrderList as $hdKey => $hdOrder) {
             $actPrice = $hdOrder['mainPay'] ?? 0;
             $actPrice = $hdOrder['mainPay'] ?? 0;
@@ -439,7 +452,7 @@ class StatSaleClass extends BaseClass
 
 
         $condition = [
         $condition = [
             'mainId' => $mainId,
             'mainId' => $mainId,
-            'payTime' => ['between', [$currentStartTime, $currentEndTime]],
+            $expendTimeField => ['between', [$currentStartTime, $currentEndTime]],
             'delStatus' => 0,
             'delStatus' => 0,
         ];
         ];
         $expendList = ExpendClass::getAllByCondition($condition, null, '*', null, true);
         $expendList = ExpendClass::getAllByCondition($condition, null, '*', null, true);

+ 1 - 1
biz-hd/purchase/services/PurchaseService.php

@@ -581,7 +581,7 @@ class PurchaseService extends BaseService
         $info->payStatus = 1;
         $info->payStatus = 1;
         $payTime = date("Y-m-d H:i:s");
         $payTime = date("Y-m-d H:i:s");
         if (empty($info->payTime) || $info->payTime == '0000-00-00 00:00:00') {
         if (empty($info->payTime) || $info->payTime == '0000-00-00 00:00:00') {
-            //如果外面没有设置支付时间,即账时间,则赋值支付时间
+            //如果外面没有设置支付时间,即账时间,则赋值支付时间
             $info->payTime = $payTime;
             $info->payTime = $payTime;
         }
         }
         // 花店确认页付款成功后补发货时间:空 sendTime 写成当前时刻。批发店开单已写入的 sendTime 不覆盖。
         // 花店确认页付款成功后补发货时间:空 sendTime 写成当前时刻。批发店开单已写入的 sendTime 不覆盖。