diff --git a/crmeb/app/services/order/StoreOrderComputedServices.php b/crmeb/app/services/order/StoreOrderComputedServices.php index b984487f8..b83502338 100644 --- a/crmeb/app/services/order/StoreOrderComputedServices.php +++ b/crmeb/app/services/order/StoreOrderComputedServices.php @@ -482,25 +482,27 @@ class StoreOrderComputedServices extends BaseServices $tempNumber = $temp_num[$tempId]['number'] ?? 0; if (!$tempId || !$tempPostage || !$tempNumber) continue; $type = $temp_num[$tempId]['type']; - $cartNumber = $item['cart_num']; - if ((($cartAlready[$tempId]['number'] ?? 0) + $cartNumber) >= $tempNumber) { + + + if ($type == 1) { + $num = $item['cart_num']; + } elseif ($type == 2) { + $num = $item['cart_num'] * $item['productInfo']['attrInfo']['weight']; + } else { + $num = $item['cart_num'] * $item['productInfo']['attrInfo']['volume']; + } + if ((($cartAlready[$tempId]['number'] ?? 0) + $num) >= $tempNumber) { $price = isset($cartAlready[$tempId]['price']) ? bcsub((string)$tempPostage, (string)$cartAlready[$tempId]['price'], 6) : $tempPostage; } else { - $price = bcmul((string)$tempPostage, bcdiv((string)$cartNumber, (string)$tempNumber, 6), 6); + $price = bcmul((string)$tempPostage, bcdiv((string)$num, (string)$tempNumber, 6), 6); } - $cartAlready[$tempId]['number'] = bcadd((string)($cartNumber[$tempId]['number'] ?? 0), (string)$cartNumber, 4); - $cartAlready[$tempId]['price'] = bcadd((string)($cartNumber[$tempId]['price'] ?? 0.00), (string)$price, 4); + $cartAlready[$tempId]['number'] = bcadd((string)($cartAlready[$tempId]['number'] ?? 0), (string)$num, 4); + $cartAlready[$tempId]['price'] = bcadd((string)($cartAlready[$tempId]['price'] ?? 0.00), (string)$price, 4); if ($express_rule_number && $express_rule_number < 100) { $price = bcmul($price, $discountRate, 4); } - if ($type == 2) { - $price = bcmul($price, $item['productInfo']['attrInfo']['weight'], 6); - } elseif ($type == 3) { - $price = bcmul($price, $item['productInfo']['attrInfo']['volume'], 6); - } - $price = sprintf("%.2f", $price); - $item['postage_price'] = $price; + $item['postage_price'] = sprintf("%.2f", $price); } if ($express_rule_number && $express_rule_number < 100) { $storePostageDiscount = $storePostage;