Преглед изворни кода

Merge branch 'clearaction' into dev

shish пре 2 месеци
родитељ
комит
5df5a0a7bf

+ 11 - 11
biz-ghs/clear/classes/ClearClass.php

@@ -8,6 +8,7 @@ use bizGhs\base\classes\BaseClass;
 use bizGhs\cg\classes\CgClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\ghs\classes\GhsDebtRecordClass;
+use bizGhs\clear\classes\OrderCgClearClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\PurchaseOrderClass;
 use bizGhs\shop\classes\MainClass;
@@ -158,8 +159,7 @@ class ClearClass extends BaseClass
         $order->save();
 
         $clearId = $order->id;
-        $purchaseIds = $order->purchaseIds;
-        $arr = explode(',', $purchaseIds);
+        $arr = OrderCgClearClass::getCgIdsByClearId($clearId);
         if (empty($arr)) {
             $msg = "没有找到采购订单";
             util::fail($msg);
@@ -296,9 +296,9 @@ class ClearClass extends BaseClass
     //供货商的采购信息 ssh 20210625
     public static function getGhsCgInfo($info)
     {
-        $purchaseIds = $info['purchaseIds'] ?? [];
-        $cgArr = explode(',', $purchaseIds);
-        $cgList = CgClass::getAllByCondition(['id' => ['in', $cgArr]], null, 'id,orderSn,bigNum,smallNum,realPrice,addTime', null);
+        $clearId = intval($info['id'] ?? 0);
+        $cgArr = OrderCgClearClass::getCgIdsByClearId($clearId);
+        $cgList = empty($cgArr) ? [] : CgClass::getAllByCondition(['id' => ['in', $cgArr]], null, 'id,orderSn,bigNum,smallNum,realPrice,addTime', null);
         $info['orderList'] = $cgList;
         $info['orderNum'] = count($cgArr);
         $clearStyle = $info['clearStyle'] ?? dict::getDict('clearStyle', 'gys2KmGys');
@@ -327,9 +327,9 @@ class ClearClass extends BaseClass
             ]);
         }
 
-        $purchaseIds = $info['purchaseIds'] ?? [];
-        $cgArr = explode(',', $purchaseIds);
-        $cgList = PurchaseClass::getAllByCondition(['id' => ['in', $cgArr]], null, '*', null);
+        $clearId = intval($info['id'] ?? 0);
+        $cgArr = OrderCgClearClass::getCgIdsByClearId($clearId);
+        $cgList = empty($cgArr) ? [] : PurchaseClass::getAllByCondition(['id' => ['in', $cgArr]], null, '*', null);
         $info['orderList'] = $cgList;
         $info['orderNum'] = count($cgArr);
         $clearStyle = $info['clearStyle'] ?? dict::getDict('clearStyle', 'hd2Gys');
@@ -344,9 +344,9 @@ class ClearClass extends BaseClass
     //完整信息 ssh 20210625
     public static function getSaleInfo($info)
     {
-        $saleIds = $info['saleIds'] ?? [];
-        $saleArr = explode(',', $saleIds);
-        $saleList = OrderClass::getAllByCondition(['id' => ['in', $saleArr]], null, '*', null);
+        $clearId = intval($info['id'] ?? 0);
+        $saleArr = OrderCgClearClass::getOrderIdsByClearId($clearId);
+        $saleList = empty($saleArr) ? [] : OrderClass::getAllByCondition(['id' => ['in', $saleArr]], null, '*', null);
         $info['orderList'] = $saleList;
         $info['orderNum'] = count($saleArr);
         $type = $info['clearStyle'] ?? dict::getDict('clearStyle', 'gys2KmGys');

+ 9 - 19
biz-ghs/clear/classes/OrderCgClearClass.php

@@ -238,32 +238,24 @@ class OrderCgClearClass extends BaseClass
         }
     }
 
-    public static function getOrderIdsByClearId($clearId, $fallbackSaleIds = '')
+    public static function getOrderIdsByClearId($clearId)
     {
         $clearId = intval($clearId);
         if ($clearId <= 0) {
-            return self::parseIds($fallbackSaleIds);
+            return [];
         }
         $list = self::getAllByCondition(['clearId' => $clearId, 'orderId>' => 0], null, 'orderId', null);
-        $ids = array_values(array_unique(array_filter(array_map('intval', array_column($list, 'orderId')))));
-        if (!empty($ids)) {
-            return $ids;
-        }
-        return self::parseIds($fallbackSaleIds);
+        return array_values(array_unique(array_filter(array_map('intval', array_column($list, 'orderId')))));
     }
 
-    public static function getCgIdsByClearId($clearId, $fallbackPurchaseIds = '')
+    public static function getCgIdsByClearId($clearId)
     {
         $clearId = intval($clearId);
         if ($clearId <= 0) {
-            return self::parseIds($fallbackPurchaseIds);
+            return [];
         }
         $list = self::getAllByCondition(['clearId' => $clearId, 'cgId>' => 0], null, 'cgId', null);
-        $ids = array_values(array_unique(array_filter(array_map('intval', array_column($list, 'cgId')))));
-        if (!empty($ids)) {
-            return $ids;
-        }
-        return self::parseIds($fallbackPurchaseIds);
+        return array_values(array_unique(array_filter(array_map('intval', array_column($list, 'cgId')))));
     }
 
     public static function getPendingClearIdByOrderId($orderId, $customId)
@@ -403,13 +395,11 @@ class OrderCgClearClass extends BaseClass
         if ($clearId <= 0) {
             return null;
         }
-        $saleIds = trim(is_object($clear) ? ($clear->saleIds ?? '') : ($clear['saleIds'] ?? ''));
-        $purchaseIds = trim(is_object($clear) ? ($clear->purchaseIds ?? '') : ($clear['purchaseIds'] ?? ''));
-        if ($saleIds === '' && $purchaseIds === '') {
-            return null;
-        }
         $expected = self::expectedRelationCountFromClear($clear);
         $relationCount = intval($relationCount);
+        if ($expected <= 0 && $relationCount <= 0) {
+            return null;
+        }
         if (in_array($clearId, $legacyGys2KmGysClearIds, true)) {
             return [
                 'reason' => 'gys2KmGys旧格式(orderId>0,cgId=0)',

+ 2 - 4
biz-ghs/order/classes/OrderClearClass.php

@@ -269,13 +269,11 @@ class OrderClearClass extends BaseClass
         }
         $amount = $clear->prePrice ?? 0;
 
-        $saleIds = $clear->saleIds ?? '';
-        $ids = explode(',', trim($saleIds));
+        $ids = OrderCgClearClass::getOrderIdsByClearId($clearId);
         if (empty($ids)) {
             util::fail('数据错误');
         }
-        $purchaseIds = $clear->purchaseIds ?? '';
-        $purchaseArr = explode(',', $purchaseIds);
+        $purchaseArr = OrderCgClearClass::getCgIdsByClearId($clearId);
         if (empty($purchaseArr)) {
             util::fail('数据错误');
         }

+ 8 - 14
biz-ghs/order/services/RefundOrderService.php

@@ -11,6 +11,7 @@ use biz\stat\classes\StatOutClass;
 use biz\stat\classes\StatRefundClass;
 use bizGhs\base\services\BaseService;
 use bizGhs\custom\classes\CustomClass;
+use bizGhs\clear\classes\OrderCgClearClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\OrderItemClass;
 use bizGhs\order\classes\RefundOrderClass;
@@ -73,27 +74,20 @@ class RefundOrderService extends BaseService
 
         $customId = $order->customId ?? 0;
         $clearList = PurchaseClearClass::getAllByCondition(['customId' => $customId, 'status' => 1], null, '*', null, true);
-        $orderIds = [];
-        $currentClearId = 0;
         if (!empty($clearList)) {
+            $now = date("Y-m-d H:i:s");
             foreach ($clearList as $clear) {
-                $saleStr = $clear->saleIds ?? '';
                 $deadline = $clear->deadline ?? '';
-                if ($deadline < date("Y-m-d H:i:s")) {
-                    $n = date("Y-m-d H:i:s");
+                if (!empty($deadline) && $deadline < $now) {
                     $clear->status = 3;
-                    $clear->remark = "账单过期,已自动取消!!参数:{$deadline} {$n}";
+                    $clear->remark = "账单过期,已自动取消!!参数:{$deadline} {$now}";
                     $clear->save();
-                } else {
-                    if (!empty($saleStr)) {
-                        $current = explode(',', $saleStr);
-                        $orderIds = array_merge($orderIds, $current);
-                        $currentClearId = $clear->id;
-                    }
+                    OrderCgClearClass::markExpireByClearId($clear->id);
                 }
             }
-            if (!empty($orderIds) && in_array($currentOrderId, $orderIds)) {
-                //有结账单要取消才能售后
+            $currentClearId = OrderCgClearClass::getPendingClearIdByOrderId($currentOrderId, $customId);
+            if ($currentClearId > 0) {
+				//有结账单要取消才能售后
                 util::success(['clearId' => $currentClearId, 'error' => 'hasUnClearOrder']);
             }
         }

+ 6 - 14
biz-hd/purchase/classes/OrderCgClearClass.php

@@ -159,32 +159,24 @@ class OrderCgClearClass extends BaseClass
         }
     }
 
-    public static function getOrderIdsByClearId($clearId, $fallbackSaleIds = '')
+    public static function getOrderIdsByClearId($clearId)
     {
         $clearId = intval($clearId);
         if ($clearId <= 0) {
-            return self::parseIds($fallbackSaleIds);
+            return [];
         }
         $list = self::getAllByCondition(['clearId' => $clearId, 'orderId>' => 0], null, 'orderId', null);
-        $ids = array_values(array_unique(array_filter(array_map('intval', array_column($list, 'orderId')))));
-        if (!empty($ids)) {
-            return $ids;
-        }
-        return self::parseIds($fallbackSaleIds);
+        return array_values(array_unique(array_filter(array_map('intval', array_column($list, 'orderId')))));
     }
 
-    public static function getCgIdsByClearId($clearId, $fallbackPurchaseIds = '')
+    public static function getCgIdsByClearId($clearId)
     {
         $clearId = intval($clearId);
         if ($clearId <= 0) {
-            return self::parseIds($fallbackPurchaseIds);
+            return [];
         }
         $list = self::getAllByCondition(['clearId' => $clearId, 'cgId>' => 0], null, 'cgId', null);
-        $ids = array_values(array_unique(array_filter(array_map('intval', array_column($list, 'cgId')))));
-        if (!empty($ids)) {
-            return $ids;
-        }
-        return self::parseIds($fallbackPurchaseIds);
+        return array_values(array_unique(array_filter(array_map('intval', array_column($list, 'cgId')))));
     }
 
     public static function getPendingClearIdByOrderId($orderId, $customId)

+ 5 - 5
biz-hd/purchase/classes/PurchaseClearClass.php

@@ -156,8 +156,7 @@ class PurchaseClearClass extends BaseClass
 
         $clearId = $order->id;
         $orderSn = $order->orderSn;
-        $purchaseIds = $order->purchaseIds;
-        $arr = explode(',', $purchaseIds);
+        $arr = OrderCgClearClass::getCgIdsByClearId($clearId);
 
         //供货商欠款变更
         $ghsId = $order->ghsId;
@@ -204,7 +203,7 @@ class PurchaseClearClass extends BaseClass
         }
         $clearTime = date("Y-m-d H:i:s");
         //采购单状态变更
-        $saleIds = [];
+        $saleIds = OrderCgClearClass::getOrderIdsByClearId($clearId);
         foreach ($list as $purchase) {
             $purchase->debt = PurchaseClass::DEBT_NO;
             $purchase->payWay = $payWay;
@@ -212,11 +211,12 @@ class PurchaseClearClass extends BaseClass
             $purchase->remainDebtPrice = 0;
             $purchase->clearTime = $clearTime;
             $purchase->save();
-            $saleIds[] = $purchase->saleId;
         }
 
         //销售单状态变化
-        OrderClass::updateByIds($saleIds, ['debt' => OrderClass::DEBT_NO, 'clearId' => $clearId, 'remainDebtPrice' => 0, 'clearTime' => $clearTime]);
+        if (!empty($saleIds)) {
+            OrderClass::updateByIds($saleIds, ['debt' => OrderClass::DEBT_NO, 'clearId' => $clearId, 'remainDebtPrice' => 0, 'clearTime' => $clearTime]);
+        }
 
         //客户付供货商款减少
         CustomClass::clearDebtAmountReduce($custom, $ghs, $order->actPrice, $order);