更新
This commit is contained in:
@@ -2652,8 +2652,8 @@ class PrescriptionOrderLogic
|
||||
return false;
|
||||
}
|
||||
$curFs = (int) $order->fulfillment_status;
|
||||
if ($curFs !== 5 && $curFs !== 6) {
|
||||
self::$error = '仅「已发货」或「已签收」状态可退款';
|
||||
if (!in_array($curFs, [3, 5, 6], true)) {
|
||||
self::$error = '仅「已发货」「已签收」或「已完成」状态可退款';
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -2665,12 +2665,25 @@ class PrescriptionOrderLogic
|
||||
|
||||
$linkedPayOrderIds = self::linkedPayOrderIdList($id);
|
||||
$refundedPayCount = 0;
|
||||
$refundedAmount = 0.0;
|
||||
|
||||
try {
|
||||
if ($linkedPayOrderIds !== []) {
|
||||
$refundedPayCount = Order::whereIn('id', $linkedPayOrderIds)
|
||||
$toRefundRows = Order::whereIn('id', $linkedPayOrderIds)
|
||||
->whereNull('delete_time')
|
||||
->update(['status' => 4]);
|
||||
->whereIn('status', [2, 5])
|
||||
->field(['id', 'amount'])
|
||||
->select()
|
||||
->toArray();
|
||||
foreach ($toRefundRows as $pr) {
|
||||
$refundedAmount += (float) ($pr['amount'] ?? 0);
|
||||
}
|
||||
$refundedAmount = round($refundedAmount, 2);
|
||||
if ($toRefundRows !== []) {
|
||||
$refundedPayCount = Order::whereIn('id', array_column($toRefundRows, 'id'))
|
||||
->whereNull('delete_time')
|
||||
->update(['status' => 4]);
|
||||
}
|
||||
}
|
||||
$order->fulfillment_status = 10;
|
||||
$order->paid = 0;
|
||||
@@ -2684,7 +2697,12 @@ class PrescriptionOrderLogic
|
||||
$unassignSummary = self::clearDiagnosisAssistantOnComplete((int) $order->diagnosis_id);
|
||||
$logLine = '订单退款,状态变更为「退款」;原因:' . $reason;
|
||||
if ($refundedPayCount > 0) {
|
||||
$logLine .= ';关联支付单 ' . $refundedPayCount . ' 笔已标记为已退款';
|
||||
$logLine .= ';关联收款单 ' . $refundedPayCount . ' 笔已标记为已退款';
|
||||
if ($refundedAmount > 0) {
|
||||
$logLine .= ',合计 ¥' . $refundedAmount;
|
||||
}
|
||||
} elseif ($linkedPayOrderIds !== []) {
|
||||
$logLine .= ';关联收款单无待退款的已支付/待审核记录';
|
||||
}
|
||||
$logLine .= ';已付总额清零' . $unassignSummary;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user