shish 8 часов назад
Родитель
Сommit
76aa00f376

+ 19 - 11
app-ghs/controllers/OrderController.php

@@ -2608,7 +2608,7 @@ class OrderController extends BaseController
         util::success($out);
     }
 
-    // 客户欠款订单列表:searchTime 筛账单日期 payTime,sendSearchTime 筛发货日期 sendTimeWant
+    // 客户欠款订单列表:searchTime 筛账单日期 payTime,sendSearchTime 筛发货日期 sendTime
     public function actionDebtList()
     {
         $get = Yii::$app->request->get();
@@ -2628,19 +2628,19 @@ class OrderController extends BaseController
                 util::fail('请选时间');
             }
         }
-        // 发货日期筛选:按 xhGhsOrder.sendTimeWant,可与账单日期同时生效
+        // 发货日期筛选:按 xhGhsOrder.sendTime,可与账单日期同时生效
         $sendSearchTime = $get['sendSearchTime'] ?? '';
         if (!empty($sendSearchTime)) {
             $sendStartTime = $get['sendStartTime'] ?? '';
             $sendEndTime = $get['sendEndTime'] ?? '';
             $sendPeriod = dateUtil::formatTime($sendSearchTime, $sendStartTime, $sendEndTime);
-            $where['sendTimeWant'] = ['between', [$sendPeriod['startTime'], $sendPeriod['endTime']]];
+            $where['sendTime'] = ['between', [$sendPeriod['startTime'], $sendPeriod['endTime']]];
         }
         $allowedPageSizes = [100, 200, 300];
         $pageSize = isset($get['pageSize']) && in_array((int)$get['pageSize'], $allowedPageSizes, true)
             ? (int)$get['pageSize'] : 100;
         $page = max(1, (int)($get['page'] ?? 1));
-        $fields = ['id', 'orderSn', 'actPrice', 'addTime', 'remainDebtPrice', 'debtPrice', 'payTime', 'sendTimeWant', 'remark', 'tkPrice', 'nextDayTkPrice', 'clearId'];
+        $fields = ['id', 'orderSn', 'actPrice', 'addTime', 'remainDebtPrice', 'debtPrice', 'payTime', 'sendTime', 'remark', 'tkPrice', 'nextDayTkPrice', 'clearId'];
         Yii::$app->request->setQueryParams(array_merge($get, ['page' => $page, 'pageSize' => $pageSize]));
         $result = OrderClass::getList($fields, $where, 'addTime DESC');
         if (!empty($result['list'])) {
@@ -2983,10 +2983,10 @@ class OrderController extends BaseController
     }
 
     /**
-     * 修改订单发货日期:同时写 xhGhsOrder.sendTimeWant 与 xhCg.sendTimeWant
-     * ghsApp 订单详情「发货时间-修改」调用;允许补录过去日期。关键词 sync_send_time_want
+     * 修改订单发货时间:同时写 xhGhsOrder.sendTime 与 xhCg.sendTime
+     * ghsApp 订单详情「发货时间-修改」调用;允许补录过去日期。关键词 sync_send_time
      */
-    public function actionModifySendTimeWant()
+    public function actionModifySendTime()
     {
         $get = Yii::$app->request->get();
         $id = $get['id'] ?? 0;
@@ -3005,7 +3005,8 @@ class OrderController extends BaseController
             if ($order->mainId != $this->mainId) {
                 util::fail('不是你的订单');
             }
-            $oldDate = substr((string)$order->sendTimeWant, 0, 10);
+            $oldSendTime = (string)$order->sendTime;
+            $oldDate = substr($oldSendTime, 0, 10);
             if ($oldDate === $date) {
                 util::fail('日期没变');
             }
@@ -3014,12 +3015,19 @@ class OrderController extends BaseController
             if (empty($cg)) {
                 util::fail('没有找到订单信息');
             }
-            // 销售单、采购单发货日期必须一致,否则花店侧看到的要求发货日会对不上
-            $order->sendTimeWant = $date;
+            // 只改日期,时分秒沿用原发货时间;空值则用当前时刻,方便补录历史单
+            if (empty($oldSendTime) || strpos($oldSendTime, '0000-00-00') === 0) {
+                $new = $date . ' ' . date('H:i:s');
+            } else {
+                $timeArr = explode(' ', $oldSendTime);
+                $after = $timeArr[1] ?? date('H:i:s');
+                $new = $date . ' ' . $after;
+            }
+            $order->sendTime = $new;
             if (!$order->save()) {
                 util::fail('修改失败');
             }
-            $cg->sendTimeWant = $date;
+            $cg->sendTime = $new;
             if (!$cg->save()) {
                 util::fail('修改失败');
             }

+ 14 - 0
biz-ghs/order/services/OrderService.php

@@ -176,6 +176,19 @@ class OrderService extends BaseService
             $data['product'] = $newProductData;
         }
 
+        // 开单发货时间写入 sendTime(datetime),允许补录过去日期;sendTimeWant 仍是客户要求发货日。关键词 sync_send_time
+        $sendTimeInput = isset($data['sendTime']) ? str_replace('/', '-', trim((string)$data['sendTime'])) : '';
+        if ($sendTimeInput === '') {
+            $sendTimeInput = date('Y-m-d');
+        }
+        if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $sendTimeInput)) {
+            $data['sendTime'] = $sendTimeInput . ' ' . date('H:i:s');
+        } elseif (!preg_match('/^\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}/', $sendTimeInput)) {
+            $data['sendTime'] = date('Y-m-d H:i:s');
+        } else {
+            $data['sendTime'] = $sendTimeInput;
+        }
+
         //供货商销售单
         $returnOrder = OrderClass::addOrder($data, $custom);
         $saleId = $returnOrder->id ?? 0;
@@ -234,6 +247,7 @@ class OrderService extends BaseService
             'book' => $book,
             'product' => $currentProduct,
             'sendTimeWant' => $sendTimeWant,
+            'sendTime' => $data['sendTime'],
             'sendCost' => $data['sendCost'] ?? '0',
             'packCost' => $data['packCost'] ?? '0',
             'ghsShopAdminId' => $ghsShopAdminId,

+ 1 - 3
biz-hd/purchase/classes/PurchaseClass.php

@@ -999,9 +999,7 @@ class PurchaseClass extends BaseClass
         $prePrice = 0;
         $live = $ghs['live'] ?? 1;
         $sendTimeWant = !empty($data['sendTimeWant']) ? $data['sendTimeWant'] : date("Y-m-d");
-        // 花店自下单仍禁止过去发货日;供货商开单允许补录历史发货日期,xhCg.sendTimeWant 与销售单保持一致。关键词 sync_send_time_want
-        $cgStyle = $data['cgStyle'] ?? 0;
-        if ($sendTimeWant < date("Y-m-d") && $cgStyle != dict::getDict('cgStyle', 'ghs')) {
+        if ($sendTimeWant < date("Y-m-d")) {
             util::fail('您选了过去时间');
         }
         $data['sendTimeWant'] = $sendTimeWant;