|
@@ -157,66 +157,61 @@ class RechargeClass extends BaseClass
|
|
|
$settleId = $recharge->settleId;
|
|
$settleId = $recharge->settleId;
|
|
|
$settleAmount = 0;
|
|
$settleAmount = 0;
|
|
|
$settleNo = '';
|
|
$settleNo = '';
|
|
|
- $lastClearOrderId = 0;
|
|
|
|
|
- $lastClearOrderNo = '';
|
|
|
|
|
$realClearAmount = 0;
|
|
$realClearAmount = 0;
|
|
|
- $lastClearOrderAmount = 0;
|
|
|
|
|
if (!empty($settleId)) {
|
|
if (!empty($settleId)) {
|
|
|
//如果有结账单,按结账单销账
|
|
//如果有结账单,按结账单销账
|
|
|
$set = SettleClass::getById($settleId, true);
|
|
$set = SettleClass::getById($settleId, true);
|
|
|
$res = SettleClass::clearSettle($set);
|
|
$res = SettleClass::clearSettle($set);
|
|
|
- $realClearAmount = $res['totalDebtPrice'] ?? 0;
|
|
|
|
|
|
|
+ $realClearAmount = $res['totalClearAmount'] ?? 0;
|
|
|
$settleAmount = $set->actPrice ?? 0;
|
|
$settleAmount = $set->actPrice ?? 0;
|
|
|
$settleNo = $set->orderSn ?? '';
|
|
$settleNo = $set->orderSn ?? '';
|
|
|
} else {
|
|
} else {
|
|
|
- //没有结账单,按顺序去销账,这里的逻辑,请去查看原型文档,来理解需求
|
|
|
|
|
|
|
+ //没有结账单,按顺序去销订单欠款
|
|
|
$orderList = OrderClass::getAllByCondition(['customId' => $customId, 'debt' => 1], 'id asc', '*', null, true);
|
|
$orderList = OrderClass::getAllByCondition(['customId' => $customId, 'debt' => 1], 'id asc', '*', null, true);
|
|
|
if (!empty($orderList)) {
|
|
if (!empty($orderList)) {
|
|
|
$lastRemainDebtAmount = 0;
|
|
$lastRemainDebtAmount = 0;
|
|
|
- $needClearIds = [];
|
|
|
|
|
|
|
+ $needClearIdMap = [];
|
|
|
$hasOver = false;
|
|
$hasOver = false;
|
|
|
foreach ($orderList as $order) {
|
|
foreach ($orderList as $order) {
|
|
|
$orderId = $order->id ?? 0;
|
|
$orderId = $order->id ?? 0;
|
|
|
|
|
+ //销订单全部的欠款!!!
|
|
|
$remainDebtPrice = $order->remainDebtPrice ?? 0;
|
|
$remainDebtPrice = $order->remainDebtPrice ?? 0;
|
|
|
$currentTotalDebtAmount = bcadd($lastRemainDebtAmount, $remainDebtPrice, 2);
|
|
$currentTotalDebtAmount = bcadd($lastRemainDebtAmount, $remainDebtPrice, 2);
|
|
|
if ($currentTotalDebtAmount > $getBalance) {
|
|
if ($currentTotalDebtAmount > $getBalance) {
|
|
|
- //如果剩下的钱不够销结账单,可以拿来销订单,具体请查看原型文档来理解
|
|
|
|
|
if (!$hasOver) {
|
|
if (!$hasOver) {
|
|
|
$lastClearOrderAmount = bcsub($getBalance, $lastRemainDebtAmount, 2);
|
|
$lastClearOrderAmount = bcsub($getBalance, $lastRemainDebtAmount, 2);
|
|
|
if ($lastClearOrderAmount > 0) {
|
|
if ($lastClearOrderAmount > 0) {
|
|
|
- //清除欠款
|
|
|
|
|
|
|
+ //销订单部分的欠款!!!
|
|
|
$order->remainDebtPrice = bcsub($order->remainDebtPrice, $lastClearOrderAmount, 2);
|
|
$order->remainDebtPrice = bcsub($order->remainDebtPrice, $lastClearOrderAmount, 2);
|
|
|
$order->save();
|
|
$order->save();
|
|
|
- //记录清除欠款的订单id和编号
|
|
|
|
|
$lastClearOrderId = $orderId;
|
|
$lastClearOrderId = $orderId;
|
|
|
- $lastClearOrderNo = $order->orderSn ?? '';
|
|
|
|
|
|
|
+ $needClearIdMap[] = ['orderId' => $lastClearOrderId, 'clearAmount' => $lastClearOrderAmount];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
$hasOver = true;
|
|
$hasOver = true;
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
$lastRemainDebtAmount = bcadd($lastRemainDebtAmount, $remainDebtPrice, 2);
|
|
$lastRemainDebtAmount = bcadd($lastRemainDebtAmount, $remainDebtPrice, 2);
|
|
|
- $needClearIds[] = $orderId;
|
|
|
|
|
|
|
+ $needClearIdMap[] = ['orderId' => $orderId, 'clearAmount' => $remainDebtPrice];
|
|
|
}
|
|
}
|
|
|
- if (!empty($needClearIds)) {
|
|
|
|
|
|
|
+ if (!empty($needClearIdMap)) {
|
|
|
//创建结账单,并且销结账单
|
|
//创建结账单,并且销结账单
|
|
|
- $orderData = OrderClass::getAllByCondition(['id' => ['in', $needClearIds]], null, '*', null, true);
|
|
|
|
|
$staffId = $recharge->staffId ?? 0;
|
|
$staffId = $recharge->staffId ?? 0;
|
|
|
$staffName = $recharge->staffName ?? '';
|
|
$staffName = $recharge->staffName ?? '';
|
|
|
$settleParams = ['staffId' => $staffId, 'staffName' => $staffName];
|
|
$settleParams = ['staffId' => $staffId, 'staffName' => $staffName];
|
|
|
- $set = SettleClass::addSettle($orderData, $shop, $custom, $hd, $settleParams);
|
|
|
|
|
|
|
+ $set = SettleClass::addSettle($needClearIdMap, $shop, $custom, $hd, $settleParams);
|
|
|
$settleId = $set->id;
|
|
$settleId = $set->id;
|
|
|
$settleNo = $set->orderSn ?? '';
|
|
$settleNo = $set->orderSn ?? '';
|
|
|
$settleAmount = $set->actPrice ?? 0;
|
|
$settleAmount = $set->actPrice ?? 0;
|
|
|
$res = SettleClass::clearSettle($set);
|
|
$res = SettleClass::clearSettle($set);
|
|
|
- $realClearAmount = $res['totalDebtPrice'] ?? 0;
|
|
|
|
|
|
|
+ $realClearAmount = $res['totalClearAmount'] ?? 0;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if ($settleId > 0) {
|
|
if ($settleId > 0) {
|
|
|
if (floatval($getBalance) != floatval($realClearAmount) || floatval($getBalance) != floatval($settleAmount)) {
|
|
if (floatval($getBalance) != floatval($realClearAmount) || floatval($getBalance) != floatval($settleAmount)) {
|
|
|
$rechargeId = $recharge->id;
|
|
$rechargeId = $recharge->id;
|
|
|
- noticeUtil::push("注意,充值单,结账单,和实际清掉欠款金额不一致:{$getBalance} {$realClearAmount} {$settleAmount},settleId:{$settleId} recharge:{$rechargeId}", '15280215347');
|
|
|
|
|
|
|
+ noticeUtil::push("注意,充值单,结账单,和实际清掉欠款金额不一致:getBalance:{$getBalance} totalAmount:{$realClearAmount} settleAmount:{$settleAmount},settleId:{$settleId} recharge:{$rechargeId}", '15280215347');
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -239,9 +234,6 @@ class RechargeClass extends BaseClass
|
|
|
'settleId' => $settleId,
|
|
'settleId' => $settleId,
|
|
|
'settleNo' => $settleNo,
|
|
'settleNo' => $settleNo,
|
|
|
'settleAmount' => $settleAmount,
|
|
'settleAmount' => $settleAmount,
|
|
|
- 'orderId' => $lastClearOrderId,
|
|
|
|
|
- 'orderNo' => $lastClearOrderNo,
|
|
|
|
|
- 'orderAmount' => $lastClearOrderAmount,
|
|
|
|
|
'remark' => '',
|
|
'remark' => '',
|
|
|
];
|
|
];
|
|
|
$returnChange = BalanceChangeClass::add($change, true);
|
|
$returnChange = BalanceChangeClass::add($change, true);
|