shish hai 2 meses
pai
achega
1b86520cfe

+ 15 - 13
app-ghs/controllers/OrderController.php

@@ -17,6 +17,7 @@ use bizHd\purchase\services\PurchaseService;
 use bizHd\wx\classes\WxOpenClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\order\classes\OrderClass;
+use bizGhs\order\classes\OrderMergeClass;
 use bizGhs\order\classes\OrderMergeSnClass;
 use bizGhs\order\services\OrderService;
 use bizHd\saas\services\RegionService;
@@ -230,14 +231,15 @@ class OrderController extends BaseController
             if (empty($mergeId)) {
                 util::fail('请选择要合并发货的订单');
             }
-            $mergeInfo = OrderClass::getById($mergeId, true);
+            $mergeInfo = OrderMergeSnClass::getById($mergeId, true);
             if (empty($mergeInfo)) {
                 util::fail('请选择要合并发货的订单呢');
             }
             if ($mergeInfo->mainId != $this->mainId) {
                 util::fail('不是你的订单呢');
             }
-            $ids = $mergeInfo->sameTimeIds ?? '';
+            $mergeRows = OrderMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'orderId');
+            $ids = !empty($mergeRows) ? implode(',', array_column($mergeRows, 'orderId')) : '';
             if (empty($ids)) {
                 util::fail('请选择要合并发货的订单哈');
             }
@@ -286,14 +288,15 @@ class OrderController extends BaseController
             if (empty($mergeId)) {
                 util::fail('请选择要合并打印的订单');
             }
-            $mergeInfo = OrderClass::getById($mergeId, true);
+            $mergeInfo = OrderMergeSnClass::getById($mergeId, true);
             if (empty($mergeInfo)) {
                 util::fail('请选择要合并打印的订单呢');
             }
             if ($mergeInfo->mainId != $this->mainId) {
                 util::fail('不是你的订单呢');
             }
-            $ids = $mergeInfo->sameTimeIds ?? '';
+            $mergeRows = OrderMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'orderId');
+            $ids = !empty($mergeRows) ? implode(',', array_column($mergeRows, 'orderId')) : '';
             if (empty($ids)) {
                 util::fail('请选择要合并打印的订单哈');
             }
@@ -323,14 +326,15 @@ class OrderController extends BaseController
 
         $get = Yii::$app->request->get();
         $mergeId = $get['mergeId'] ?? '';
-        $mergeInfo = OrderClass::getById($mergeId, true);
+        $mergeInfo = OrderMergeSnClass::getById($mergeId, true);
         if (empty($mergeInfo)) {
             util::fail('请选择订单');
         }
         if ($mergeInfo->mainId != $this->mainId) {
             util::fail('不是你的订单');
         }
-        $ids = $mergeInfo->sameTimeIds ?? '';
+        $mergeRows = OrderMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'orderId');
+        $ids = !empty($mergeRows) ? implode(',', array_column($mergeRows, 'orderId')) : '';
         if (empty($ids)) {
             util::fail('请选择订单哈');
         }
@@ -344,13 +348,11 @@ class OrderController extends BaseController
         $respond['shop'] = $this->shop;
         $respond['shopExt'] = $this->shopExt;
         $respond['shareInfo'] = [];
-        $shareOrder = $respond['list'][0] ?? [];
-        $orderMergeSnId = $mergeInfo->mergeId ?? 0;
-        $mergeSn = !empty($orderMergeSnId) ? OrderMergeSnClass::getById($orderMergeSnId) : [];
-        if (!empty($shareOrder) && !empty($mergeSn)) {
+        if (!empty($mergeInfo)) {
             $respond['shareInfo'] = [
-                'id' => $shareOrder['id'] ?? 0,
-                'salt' => $mergeSn['salt'] ?? '',
+                'id' => $mergeInfo->cgMergeId ?? 0,
+                'mergeId' => $mergeInfo->cgMergeId ?? 0,
+                'salt' => $mergeInfo->cgSalt ?? '',
             ];
         }
         util::success($respond);
@@ -2661,8 +2663,8 @@ class OrderController extends BaseController
 
             //找到当前订单客户的账单日期为 $date 的所有订单,然后更新同天内的所有订单的 sameTimeIds(加此次要改变的订单的订单号$id),有多处调用,关键词 update_same_ids
             OrderClass::updateSameTimeIds($order, $date);
-            OrderClass::updateMergeOrder($order, 1);
             PurchaseClass::updateMergeCg($cg, 1);
+            OrderClass::updateMergeOrder($order, 1);
 
             $transaction->commit();
             util::complete('修改成功');

+ 8 - 25
app-hd/controllers/PurchaseController.php

@@ -10,7 +10,7 @@ use biz\shop\classes\ShopExtClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\express\classes\GhsDeliveryOrderClass;
 use bizGhs\order\classes\OrderClass;
-use bizGhs\order\classes\OrderMergeSnClass;
+use bizHd\cg\classes\CgMergeSnClass;
 use bizHd\purchase\classes\PurchaseClass;
 use bizHd\purchase\classes\PurchaseItemClass;
 use bizHd\purchase\services\PurchaseService;
@@ -1048,41 +1048,24 @@ class PurchaseController extends BaseController
         Yii::$app->params['pageSize'] = 9999;
 
         $get = Yii::$app->request->get();
-        $id = $get['id'] ?? 0;
-        if (empty($id)) {
+        $mergeId = $get['mergeId'] ?? ($get['id'] ?? 0);
+        if (empty($mergeId)) {
             util::fail('请选择采购单');
         }
-        $order = OrderClass::getById($id, true);
-        if (empty($order)) {
-            util::fail('请选择订单');
-        }
-        $ghsMergeId = $order->mergeId ?? 0;
-        if (empty($ghsMergeId)) {
-            util::fail('请选择合并订单');
-        }
-        $ghsMergeSn = OrderMergeSnClass::getById($ghsMergeId, true);
-        if (empty($ghsMergeSn)) {
-            util::fail('请选择合并订单');
+        $mergeSn = CgMergeSnClass::getById($mergeId, true);
+        if (empty($mergeSn)) {
+            util::fail('请选择合并采购单');
         }
         $salt = $get['salt'] ?? '';
         if (empty($this->shopId)) {
             if (empty($salt)) {
                 util::fail('请求参数错误');
             }
-            if (empty($ghsMergeSn->salt) || $ghsMergeSn->salt != $salt) {
+            if (empty($mergeSn->salt) || $mergeSn->salt != $salt) {
                 util::fail('找不到订单');
             }
         }
-        $purchaseId = $order->purchaseId ?? 0;
-        $purchase = PurchaseClass::getById($purchaseId, true);
-        if (empty($purchase)) {
-            util::fail('请选择采购单');
-        }
-        $mergeId = $purchase->mergeId ?? 0;
-        $ghsId = $purchase->ghsId ?? 0;
-        if (empty($mergeId)) {
-            util::fail('请选择合并采购单');
-        }
+        $ghsId = $mergeSn->ghsId ?? 0;
         if (empty($ghsId)) {
             util::fail('请选择供货商');
         }

+ 3 - 0
biz-ghs/order/classes/OrderClass.php

@@ -3215,6 +3215,7 @@ XL;
                 $order->save();
                 OrderMergeClass::add(['mergeId' => $hasMergeId, 'orderId' => $orderId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId]);
                 self::syncOrderMergeNumForMergeId($hasMergeId);
+                PurchaseClass::syncMergeRelationByOrderIds([$orderId]);
             } else {
                 self::rebuildOrderMergeGroupForDay($ids, $date, $customId, $mainId);
             }
@@ -3260,6 +3261,7 @@ XL;
                 $order->save();
                 OrderMergeClass::add(['mergeId' => $newMergeId, 'orderId' => $orderId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId]);
                 self::syncOrderMergeNumForMergeId($newMergeId);
+                PurchaseClass::syncMergeRelationByOrderIds([$orderId]);
             } else {
                 self::rebuildOrderMergeGroupForDay($ids, $date, $customId, $mainId);
             }
@@ -3284,6 +3286,7 @@ XL;
             $addData[] = ['mergeId' => $mergeId, 'orderId' => $currentId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId];
         }
         OrderMergeClass::batchAdd($addData);
+        PurchaseClass::syncMergeRelationByOrderIds($ids);
     }
 
     /** 按 xhGhsOrderMerge 明细数量,回写该合并组内所有订单的 mergeNum */

+ 67 - 0
biz-hd/purchase/classes/PurchaseClass.php

@@ -15,6 +15,7 @@ use bizGhs\admin\classes\AdminClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\item\classes\CostChangeClass;
 use bizGhs\order\classes\OrderClass;
+use bizGhs\order\classes\OrderMergeSnClass;
 use bizGhs\order\traits\OrderTrait;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\stock\classes\OnStockRecordClass;
@@ -101,6 +102,7 @@ class PurchaseClass extends BaseClass
                 $cg->save();
                 CgMergeClass::add(['mergeId' => $hasMergeId, 'cgId' => $cgId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId]);
                 self::syncCgMergeNumForMergeId($hasMergeId);
+                self::syncMergeRelationByCgIds([$cgId]);
             } else {
                 self::rebuildCgMergeGroupForDay($ids, $date, $ghsId, $mainId);
             }
@@ -143,6 +145,7 @@ class PurchaseClass extends BaseClass
                 $cg->save();
                 CgMergeClass::add(['mergeId' => $newMergeId, 'cgId' => $cgId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId]);
                 self::syncCgMergeNumForMergeId($newMergeId);
+                self::syncMergeRelationByCgIds([$cgId]);
             } else {
                 self::rebuildCgMergeGroupForDay($ids, $date, $ghsId, $mainId);
             }
@@ -170,6 +173,70 @@ class PurchaseClass extends BaseClass
             $addData[] = ['mergeId' => $mergeId, 'cgId' => $currentId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId];
         }
         CgMergeClass::batchAdd($addData);
+        self::syncMergeRelationByCgIds($ids);
+    }
+
+    public static function syncMergeRelationByOrderIds($orderIds)
+    {
+        if (empty($orderIds)) {
+            return false;
+        }
+        $orders = OrderClass::getByIds($orderIds, null, null, 'id,purchaseId');
+        if (empty($orders)) {
+            return false;
+        }
+        $cgIds = [];
+        foreach ($orders as $order) {
+            $purchaseId = $order['purchaseId'] ?? 0;
+            if (!empty($purchaseId)) {
+                $cgIds[] = $purchaseId;
+            }
+        }
+        return self::syncMergeRelationByCgIds($cgIds);
+    }
+
+    public static function syncMergeRelationByCgIds($cgIds)
+    {
+        if (empty($cgIds)) {
+            return false;
+        }
+        $cgIds = array_values(array_unique(array_filter($cgIds)));
+        if (empty($cgIds)) {
+            return false;
+        }
+        $cgs = self::getByIds($cgIds, null, null, 'id,saleId,mergeId');
+        if (empty($cgs)) {
+            return false;
+        }
+        foreach ($cgs as $cg) {
+            $cgId = $cg['id'] ?? 0;
+            $orderId = $cg['saleId'] ?? 0;
+            $cgMergeId = $cg['mergeId'] ?? 0;
+            if (empty($cgId) || empty($orderId) || empty($cgMergeId)) {
+                continue;
+            }
+            $order = OrderClass::getById($orderId, false, 'id,mergeId');
+            $ghsMergeId = $order['mergeId'] ?? 0;
+            if (empty($ghsMergeId)) {
+                continue;
+            }
+            $cgMergeSn = CgMergeSnClass::getById($cgMergeId, false, 'id,salt');
+            $ghsMergeSn = OrderMergeSnClass::getById($ghsMergeId, false, 'id,salt');
+            $cgSalt = $cgMergeSn['salt'] ?? '';
+            $ghsSalt = $ghsMergeSn['salt'] ?? '';
+            if (empty($cgSalt) || empty($ghsSalt)) {
+                continue;
+            }
+            CgMergeSnClass::updateById($cgMergeId, [
+                'ghsMergeId' => $ghsMergeId,
+                'ghsSalt' => $ghsSalt,
+            ]);
+            OrderMergeSnClass::updateById($ghsMergeId, [
+                'cgMergeId' => $cgMergeId,
+                'cgSalt' => $cgSalt,
+            ]);
+        }
+        return true;
     }
 
     /** 按 xhCgMerge 明细数量,回写该合并组内所有采购单的 mergeNum */