Răsfoiți Sursa

售后调整

shish 11 luni în urmă
părinte
comite
b05eb000af
1 a modificat fișierele cu 102 adăugiri și 9 ștergeri
  1. 102 9
      biz-hd/custom/classes/CustomClass.php

+ 102 - 9
biz-hd/custom/classes/CustomClass.php

@@ -3,19 +3,16 @@
 namespace bizHd\custom\classes;
 
 use biz\wx\classes\WxMessageClass;
-use bizGhs\shop\classes\TotalDebtChangeClass;
 use bizHd\balance\classes\BalanceChangeClass;
 use bizHd\balance\classes\BalanceGiveChangeClass;
 use bizHd\balance\classes\BalancePayChangeClass;
 use bizHd\member\classes\MemberChangeClass;
 use bizHd\member\classes\MemberWealClass;
+use bizHd\order\classes\OrderClass;
 use bizHd\order\classes\SettleClass;
-use bizHd\shop\classes\MainClass;
 use bizHd\shop\classes\ShopClass;
-use bizMall\user\classes\UserClass;
 use common\components\dict;
 use common\components\imgUtil;
-use common\components\noticeUtil;
 use common\components\stringUtil;
 use common\components\util;
 use Yii;
@@ -454,32 +451,33 @@ class CustomClass extends BaseClass
         $hdId = $custom->hdId ?? 0;
         $hd = HdClass::getLockById($hdId);
         if (empty($hd)) {
-            util::fail('花店信息缺失,编号520');
+            util::fail('花店信息缺失,编号5362');
         }
-
         $customBalance = bcadd($custom->balance, $amount, 2);
         $custom->balance = $customBalance;
         if ($custom->balance < 0) {
             $custom->isDebt = 1;
         }
         $custom->save();
-
         $hdBalance = bcadd($hd->balance, $amount, 2);
         $hd->balance = $hdBalance;
         if ($hd->balance < 0) {
             $hd->debt = 2;
         }
         $hd->save();
-
         if (floatval($customBalance) !== floatval($hdBalance)) {
             util::fail('余额错误,请联系管理员,编号' . $hdId);
         }
-
         $relateId = $refund->id ?? 0;
         $customId = $custom->id ?? 0;
         $refundSn = $refund->refundSn ?? '';
         $orderSn = $refund->orderSn ?? '';
         $orderId = $refund->orderId ?? 0;
+        $order = OrderClass::getLockById($orderId);
+        if (empty($order)) {
+            util::fail('没有找到订单哈!');
+        }
+        $currentPayWay = $order->payWay ?? 0;
         $staffId = $refund->shopAdminId ?? 0;
         $staffName = $refund->shopAdminName ?? '';
         $capitalType = dict::getDict('capitalType', 'hdRefund', 'id');
@@ -510,6 +508,101 @@ class CustomClass extends BaseClass
             'remark' => '',
         ];
         BalanceChangeClass::add($change, true);
+
+        // 多处需要同步修改 balance_pay_give
+        $mustUseGiveAmount = 0;
+        $buyAmount = 0;
+        if ($currentPayWay == 3) {
+            //如果是欠款的售后,不退款到赠送的余额里
+            $buyAmount = $amount;
+        } elseif ($currentPayWay == 2) {
+            //这个是总消费的余额
+            $actPrice = $order->actPrice ?? 0;
+            //这个是总消费余额中赠送余额部分
+            $giveBalance = $order->giveBalance ?? 0;
+            //这个是总消费余额中充值余额部分
+            $payBalance = bcsub($actPrice, $giveBalance, 2);
+            //这个是累计已经退还的余额
+            $tkPrice = $order->tkPrice ?? 0;
+            //这个是当前流程走完后累计退还的余额
+            $totalTkPrice = bcadd($tkPrice, $amount, 2);
+            //累计退还的余额如果超过了充值余额的话,说明要开始退还赠送的余额了
+            if ($totalTkPrice > $payBalance) {
+                $diffAmount = bcsub($totalTkPrice, $payBalance, 2);
+                if ($diffAmount > $amount) {
+                    $mustUseGiveAmount = $amount;
+                } else {
+                    $buyAmount = bcsub($amount, $diffAmount, 2);
+                    $mustUseGiveAmount = bcsub($amount, $buyAmount, 2);
+                }
+            } else {
+                $buyAmount = $amount;
+            }
+        } else {
+            util::fail('无效的支付方式!编号69880');
+        }
+
+        if ($buyAmount > 0) {
+            $customBalancePay = bcadd($custom->balancePay, $buyAmount, 2);
+            $custom->balancePay = $customBalancePay;
+            $custom->save();
+            $hdBalancePay = bcadd($hd->balancePay, $buyAmount, 2);
+            $hd->balancePay = $hdBalancePay;
+            $hd->save();
+            $payChange = [
+                'customId' => $customId,
+                'customName' => $customName,
+                'relateId' => $relateId,
+                'relateSn' => $refundSn,
+                'onlinePay' => $onlinePay,
+                'capitalType' => $capitalType,
+                'amount' => $buyAmount,
+                'balance' => $hdBalancePay,
+                'io' => 1,
+                'side' => $side,
+                'payWay' => $payWay,
+                'event' => $event,
+                'staffId' => $staffId,
+                'staffName' => $staffName,
+                'shopId' => $refund->shopId,
+                'mainId' => $refund->mainId,
+                'refundOrderId' => $orderId,
+                'refundOrderSn' => $orderSn,
+                'remark' => '',
+            ];
+            BalancePayChangeClass::add($payChange, true);
+        }
+
+        if ($mustUseGiveAmount > 0) {
+            $customBalanceGive = bcadd($custom->balanceGive, $mustUseGiveAmount, 2);
+            $custom->balanceGive = $customBalanceGive;
+            $custom->save();
+            $hdBalanceGive = bcadd($hd->balanceGive, $mustUseGiveAmount, 2);
+            $hd->balanceGive = $hdBalanceGive;
+            $hd->save();
+            $giveChange = [
+                'customId' => $customId,
+                'customName' => $customName,
+                'relateId' => $relateId,
+                'relateSn' => $refundSn,
+                'onlinePay' => $onlinePay,
+                'capitalType' => $capitalType,
+                'amount' => $mustUseGiveAmount,
+                'balance' => $hdBalanceGive,
+                'io' => 1,
+                'side' => $side,
+                'payWay' => $payWay,
+                'event' => $event,
+                'staffId' => $staffId,
+                'staffName' => $staffName,
+                'shopId' => $refund->shopId,
+                'mainId' => $refund->mainId,
+                'refundOrderId' => $orderId,
+                'refundOrderSn' => $orderSn,
+                'remark' => '',
+            ];
+            BalanceGiveChangeClass::add($giveChange, true);
+        }
     }
 
     //添加客户 ssh 2021.2.28