Przeglądaj źródła

自动确认收货

shish 1 dzień temu
rodzic
commit
1957632ea0
1 zmienionych plików z 26 dodań i 7 usunięć
  1. 26 7
      app-hd/controllers/CgRefundController.php

+ 26 - 7
app-hd/controllers/CgRefundController.php

@@ -76,15 +76,13 @@ class CgRefundController extends BaseController
         if ($cg->status == PurchaseClass::STATUS_UN_PAY) {
             util::fail("待付款订单,不能申请售后");
         }
-        if ($cg->status == PurchaseClass::STATUS_UN_SEND) {
-            util::fail("待发货订单,不能申请售后");
-        }
-        if ($cg->status == PurchaseClass::STATUS_SENDING) {
-            util::fail("订单配送中,不能申请售后");
-        }
         if ($cg->status == PurchaseClass::STATUS_CANCEL) {
             util::fail("订单已取消,不能申请售后");
         }
+        // 未完成时不在此拦截:提交申请时再「仅入库不改价」收货;预订单未发货仍不可售后
+        if (intval($cg->status) === PurchaseClass::STATUS_UN_SEND && intval($cg->book ?? 0) === 1) {
+            util::fail('预订单发货后才能申请售后');
+        }
         // 配对销售单:无支付时间不能售后;非当天/已结清走跨天售后
         $saleOrder = OrderClass::getById(intval($cg->saleId ?? 0), true);
         if (empty($saleOrder)) {
@@ -125,7 +123,28 @@ class CgRefundController extends BaseController
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
         try {
-
+            // 发起售后且采购单未完成:自动「仅入库不改价」收货,再创建售后单
+            $cg = PurchaseClass::getLockById($id);
+            if (empty($cg)) {
+                util::fail('没有找到采购单');
+            }
+            if (intval($cg->status) !== PurchaseClass::STATUS_COMPLETE
+                && intval($cg->status) !== PurchaseClass::STATUS_CANCEL
+                && intval($cg->status) !== PurchaseClass::STATUS_UN_PAY
+            ) {
+                if (intval($cg->status) === PurchaseClass::STATUS_UN_SEND && intval($cg->book ?? 0) === 1) {
+                    util::fail('预订单发货后才能申请售后');
+                }
+                PurchaseClass::confirmTake($cg);
+                $cg = PurchaseClass::getById($id, true);
+                if (empty($cg) || intval($cg->status) !== PurchaseClass::STATUS_COMPLETE) {
+                    util::fail('自动确认收货失败,请稍后重试');
+                }
+                $saleOrder = OrderClass::getById(intval($cg->saleId ?? 0), true);
+                if (empty($saleOrder)) {
+                    util::fail('没有订单信息');
+                }
+            }
 
             if ($refundType == CgRefundClass::REFUND_TYPE_MONEY_GOOD) {
                 //花材列表结构