Browse Source

按照重量和体积计算运费问题修复

吴昊天 2 năm trước cách đây
mục cha
commit
6a785ae7cb

+ 14 - 12
crmeb/app/services/order/StoreOrderComputedServices.php

@@ -482,25 +482,27 @@ class StoreOrderComputedServices extends BaseServices
                 $tempNumber = $temp_num[$tempId]['number'] ?? 0;
                 $tempNumber = $temp_num[$tempId]['number'] ?? 0;
                 if (!$tempId || !$tempPostage || !$tempNumber) continue;
                 if (!$tempId || !$tempPostage || !$tempNumber) continue;
                 $type = $temp_num[$tempId]['type'];
                 $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;
                     $price = isset($cartAlready[$tempId]['price']) ? bcsub((string)$tempPostage, (string)$cartAlready[$tempId]['price'], 6) : $tempPostage;
                 } else {
                 } 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) {
                 if ($express_rule_number && $express_rule_number < 100) {
                     $price = bcmul($price, $discountRate, 4);
                     $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) {
             if ($express_rule_number && $express_rule_number < 100) {
                 $storePostageDiscount = $storePostage;
                 $storePostageDiscount = $storePostage;