|
|
@@ -241,6 +241,8 @@ class CustomClass extends BaseClass
|
|
|
}
|
|
|
|
|
|
//客户采购欠款金额增加,如果有余额时,要进行欠款销账 ssh 20250715
|
|
|
+ //todo 这边开欠款单时,如果还有余额,会产生结账动作,结账动作也可以用赠送余额来结账,所以要分出赠送余额的占比
|
|
|
+ //todo 结账消余额,不是下单时消余额,不涉及售后时余额回滚问题,所以不需要设置 xhOrder 的 giveBalance payBalance balance等值
|
|
|
public static function skCgDebtAmountAdd($custom, $order)
|
|
|
{
|
|
|
$clearAmount = 0;
|
|
|
@@ -257,14 +259,17 @@ class CustomClass extends BaseClass
|
|
|
$hdId = $custom->hdId ?? 0;
|
|
|
$hd = HdClass::getLockById($hdId);
|
|
|
if (empty($hd)) {
|
|
|
- util::fail('花店信息缺失,编号6331');
|
|
|
+ util::fail('花店信息缺失,编号6325');
|
|
|
}
|
|
|
$hdName = $hd->name ?? '';
|
|
|
+ //结账时用了多少赠送的余额
|
|
|
+ $settleUseGiveAmount = 0;
|
|
|
if ($custom->balance > 0) {
|
|
|
- if ($amount >= $custom->balance) {
|
|
|
+ if ($amount > $custom->balance) {
|
|
|
$clearAmount = $custom->balance;
|
|
|
+ $settleUseGiveAmount = $custom->balanceGive;
|
|
|
} else {
|
|
|
- $clearAmount = $amount;
|
|
|
+ util::fail('余额充足,请用余额支付');
|
|
|
}
|
|
|
}
|
|
|
if ($clearAmount > 0) {
|
|
|
@@ -276,6 +281,10 @@ class CustomClass extends BaseClass
|
|
|
$settleAmount = $ret['totalClearAmount'] ?? 0;
|
|
|
$settleNo = $set->orderSn ?? '';
|
|
|
$settleId = $set->id;
|
|
|
+ $newSettle = $ret['settle'];
|
|
|
+ //结账时用了多少赠送的余额
|
|
|
+ $newSettle->giveBalance = bcadd($newSettle->giveBalance, $settleUseGiveAmount, 2);
|
|
|
+ $newSettle->save();
|
|
|
}
|
|
|
|
|
|
/************************ 总余额 *********************************/
|
|
|
@@ -482,6 +491,36 @@ class CustomClass extends BaseClass
|
|
|
util::fail('没有找到订单哈!');
|
|
|
}
|
|
|
$currentPayWay = $order->payWay ?? 0;
|
|
|
+
|
|
|
+ // 多处需要同步修改 balance_pay_give
|
|
|
+ $mustUseGiveAmount = 0;
|
|
|
+ $buyAmount = 0;
|
|
|
+ if ($currentPayWay == 3) {
|
|
|
+ //如果是欠款单售后,没有退款到赠送余额的情况
|
|
|
+ $buyAmount = $amount;
|
|
|
+ } elseif ($currentPayWay == 2) {
|
|
|
+ //这个是总消费余额中充值余额部分
|
|
|
+ $payBalance = $order->payBalance ?? 0;
|
|
|
+ //这个是累计已经退还的余额
|
|
|
+ $balanceTk = $order->balanceTk ?? 0;
|
|
|
+ $currentBalanceTk = bcadd($balanceTk, $amount, 2);
|
|
|
+ //当前累计退还的余额如果超过了充值余额的话,说明要退还赠送的余额了
|
|
|
+ if ($currentBalanceTk > $payBalance) {
|
|
|
+ $pastAmount = bcsub($currentBalanceTk, $payBalance, 2);
|
|
|
+ if ($pastAmount > $amount) {
|
|
|
+ $mustUseGiveAmount = $amount;
|
|
|
+ } else {
|
|
|
+ $buyAmount = bcsub($amount, $pastAmount, 2);
|
|
|
+ $mustUseGiveAmount = bcsub($amount, $buyAmount, 2);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //累计退还的余额,还没超过充值余额,还是退充值余额部分
|
|
|
+ $buyAmount = $amount;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ util::fail('无效的支付方式!编号69880');
|
|
|
+ }
|
|
|
+
|
|
|
$staffId = $refund->shopAdminId ?? 0;
|
|
|
$staffName = $refund->shopAdminName ?? '';
|
|
|
$capitalType = dict::getDict('capitalType', 'hdRefund', 'id');
|
|
|
@@ -512,39 +551,11 @@ 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');
|
|
|
+ $order->balanceTk = bcadd($order->balanceTk, $amount, 2);
|
|
|
+ if ($order->balanceTk < 0) {
|
|
|
+ util::fail('不能小于0,编号88672');
|
|
|
}
|
|
|
+ $order->save();
|
|
|
|
|
|
if ($buyAmount > 0) {
|
|
|
$customBalancePay = bcadd($custom->balancePay, $buyAmount, 2);
|
|
|
@@ -575,6 +586,11 @@ class CustomClass extends BaseClass
|
|
|
'remark' => '',
|
|
|
];
|
|
|
BalancePayChangeClass::add($payChange, true);
|
|
|
+ $order->payBalanceTk = bcadd($order->payBalanceTk, $buyAmount, 2);
|
|
|
+ if ($order->payBalanceTk < 0) {
|
|
|
+ util::fail('不能小于0,编号88673');
|
|
|
+ }
|
|
|
+ $order->save();
|
|
|
}
|
|
|
|
|
|
if ($mustUseGiveAmount > 0) {
|
|
|
@@ -606,6 +622,11 @@ class CustomClass extends BaseClass
|
|
|
'remark' => '',
|
|
|
];
|
|
|
BalanceGiveChangeClass::add($giveChange, true);
|
|
|
+ $order->giveBalanceTk = bcadd($order->giveBalanceTk, $mustUseGiveAmount, 2);
|
|
|
+ if ($order->giveBalanceTk < 0) {
|
|
|
+ util::fail('不能小于0,编号88675');
|
|
|
+ }
|
|
|
+ $order->save();
|
|
|
}
|
|
|
}
|
|
|
|