shish пре 1 дан
родитељ
комит
f95b8cd055

+ 45 - 0
app-ghs/controllers/PurchaseOrderController.php

@@ -1081,6 +1081,51 @@ class PurchaseOrderController extends BaseController
         util::complete('修改成功');
     }
 
+    /**
+     * 修改采购单送货时间:只改日期,时分秒沿用原 sendTime。
+     * ghsApp 采购详情「送货时间-修改」调用;允许补录过去日期。
+     */
+    public function actionModifySendTime()
+    {
+        $get = Yii::$app->request->get();
+        $id = $get['id'] ?? 0;
+        $date = $get['date'] ?? '';
+        $date = str_replace('/', '-', trim($date));
+        if (empty($date) || !preg_match('/^\d{4}-\d{2}-\d{2}$/', $date)) {
+            util::fail('请选择日期');
+        }
+        $cg = PurchaseOrderClass::getById($id, true);
+        if (empty($cg)) {
+            util::fail('没有找到订单');
+        }
+        if ($cg->mainId != $this->mainId) {
+            util::fail('不是你的订单');
+        }
+        $mainId = $this->mainId;
+        //超管或者约定的人可以修改日期,与修改入库时间同一批账号
+        if (getenv('YII_ENV') == 'production') {
+            if (in_array($mainId, [23390])) {
+                if (!in_array($this->adminId, [24586, 23960])) {
+                    util::fail('你不能修改哦');
+                }
+            }
+        }
+        $oldSendTime = (string)($cg->sendTime ?? '');
+        $oldDate = substr($oldSendTime, 0, 10);
+        if ($oldDate === $date) {
+            util::fail('日期没变');
+        }
+        if (empty($oldSendTime) || strpos($oldSendTime, '0000-00-00') === 0) {
+            $new = $date . ' ' . date('H:i:s');
+        } else {
+            $after = date('H:i:s', strtotime($oldSendTime));
+            $new = $date . ' ' . $after;
+        }
+        $cg->sendTime = $new;
+        $cg->save();
+        util::complete('修改成功');
+    }
+
     //导入采购 ssh 20241126
     public function actionImportCreate()
     {

+ 11 - 0
biz-ghs/order/classes/PurchaseOrderClass.php

@@ -1353,6 +1353,17 @@ class PurchaseOrderClass extends BaseClass
         }
 
         $data['entryTime'] = isset($data['entryTime']) && !empty($data['entryTime']) ? $data['entryTime'] . ' 12:00:00' : date('Y-m-d H:i:s');
+        // 送货时间写入 sendTime(datetime),允许补录过去日期;空则当天
+        $sendTimeInput = isset($data['sendTime']) ? str_replace('/', '-', trim((string)$data['sendTime'])) : '';
+        if ($sendTimeInput === '') {
+            $data['sendTime'] = date('Y-m-d H:i:s');
+        } elseif (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;
+        }
 
         $packingCharge = $data['packingCharge'] ?? 0;
         $shortCharge = $data['shortCharge'] ?? 0;