|
|
@@ -5,6 +5,7 @@ namespace bizGhs\order\classes;
|
|
|
use bizGhs\item\classes\ItemClassClass;
|
|
|
use bizHd\purchase\classes\PurchaseItemClass;
|
|
|
use common\components\arrayUtil;
|
|
|
+use common\components\noticeUtil;
|
|
|
use wkhtmltox\Image\Converter;
|
|
|
use biz\shop\classes\ShopCapitalClass;
|
|
|
use biz\shop\classes\ShopClass;
|
|
|
@@ -811,7 +812,7 @@ class OrderClass extends BaseClass
|
|
|
}
|
|
|
|
|
|
//添加订单 ssh 2019.12.5
|
|
|
- public static function addOrder($data)
|
|
|
+ public static function addOrder($data, $custom = [])
|
|
|
{
|
|
|
$shopId = $data['shopId'] ?? 0;
|
|
|
$mainId = $data['mainId'] ?? 0;
|
|
|
@@ -851,7 +852,7 @@ class OrderClass extends BaseClass
|
|
|
}
|
|
|
|
|
|
$customShopAdminId = $data['customShopAdminId'] ?? 0;
|
|
|
- $moreParams = ['book' => $book, 'customShopAdminId' => $customShopAdminId];
|
|
|
+ $moreParams = ['book' => $book, 'customShopAdminId' => $customShopAdminId, 'custom' => $custom];
|
|
|
$respond = OrderItemClass::replaceItem($orderSn, $product, $data, $stockMayChange, $moreParams);
|
|
|
|
|
|
$sendCost = isset($data['sendCost']) && is_numeric($data['sendCost']) ? $data['sendCost'] : 0;
|
|
|
@@ -859,6 +860,7 @@ class OrderClass extends BaseClass
|
|
|
$data['bigNum'] = $respond['bigNum'] ?? 0;
|
|
|
$data['smallNum'] = $respond['smallNum'] ?? 0;
|
|
|
$data['itemNum'] = $respond['totalItemNum'] ?? 0;
|
|
|
+ //这个字段记录每个花材满多少扎减掉的金额,并汇总金额,区别于整单满减的 $cutAmount。保存起来应该是在哪里有用,$totalReachDiscount在这边不影响actPrice,估计因为取花材的价格里::getFinalPrice()已经使用了优惠后的价格,有多处,关键词 reachDiscountPrice_explain ssh 20260116
|
|
|
$data['reachDiscountPrice'] = $respond['totalReachDiscount'] ?? 0;
|
|
|
|
|
|
//记录订单的总成本
|
|
|
@@ -884,7 +886,7 @@ class OrderClass extends BaseClass
|
|
|
if ($book == 1) {
|
|
|
$kiloFee = $shop->kiloFee ?? 0;
|
|
|
$miniKilo = $shop->miniKilo ?? 0;
|
|
|
- $calcWeight = $weight > $miniKilo ? $weight : $miniKilo;
|
|
|
+ $calcWeight = max($weight, $miniKilo);
|
|
|
$allKiloFee = bcmul($calcWeight, $kiloFee, 2);
|
|
|
$currentPrice = bcadd($currentPrice, $allKiloFee, 2);
|
|
|
$data['allKiloFee'] = $allKiloFee;
|
|
|
@@ -915,7 +917,7 @@ class OrderClass extends BaseClass
|
|
|
$actPrice = 0;
|
|
|
}
|
|
|
} else {
|
|
|
- //整单满减
|
|
|
+ //客户自己下单才有整单满减,门店帮忙开单没有,,多个地方要同步修改,关键词 meet_amount_num_reduce
|
|
|
if ($book == 0) {
|
|
|
$meetNum = $shop->meetNum ?? 0;
|
|
|
$meetAmount = $shop->meetAmount ?? 0;
|
|
|
@@ -927,20 +929,47 @@ class OrderClass extends BaseClass
|
|
|
$miniOption = bcsub(1, $cutOption, 2);
|
|
|
$cutAmount = bcmul($actPrice, $miniOption, 2);
|
|
|
}
|
|
|
- if ($cutOption > 0) {
|
|
|
- if ($meetNum > 0 && isset($data['bigNum']) && $data['bigNum'] >= $meetNum) {
|
|
|
- if ($cutAmount > $actPrice) {
|
|
|
- util::fail('整单满减为负');
|
|
|
- }
|
|
|
- $actPrice = bcsub($actPrice, $cutAmount, 2);
|
|
|
- $data['orderReachDiscountPrice'] = $cutAmount;
|
|
|
- } else {
|
|
|
- if ($meetAmount > 0 && isset($data['itemPrice']) && $data['itemPrice'] >= $meetAmount) {
|
|
|
- if ($cutAmount > $actPrice) {
|
|
|
- util::fail('整单满减为负');
|
|
|
- }
|
|
|
+ if ($cutAmount > 0 && $meetNum > 0 && $meetAmount > 0) {
|
|
|
+ if (isset($data['bigNum']) && $data['bigNum'] >= $meetNum && isset($data['itemPrice']) && $data['itemPrice'] >= $meetAmount) {
|
|
|
+ if ($cutAmount < $actPrice) {
|
|
|
$actPrice = bcsub($actPrice, $cutAmount, 2);
|
|
|
$data['orderReachDiscountPrice'] = $cutAmount;
|
|
|
+ } else {
|
|
|
+ noticeUtil::push('订单金额不足满减金额,customId:' . $customId, '15280215347');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //如果有设置指定客户涨价百分之几,然后又设置了涨价的幅度。【这个功能主要用于客户不收他运费,门店不赚钱,收他运费客户不乐意,所以把运费加到花材里】,多处同步修改,关键词 rise_percent_rang
|
|
|
+ if (isset($data['itemPrice'])) {
|
|
|
+ if (isset($data['orderReachDiscountPrice'])) {
|
|
|
+ $originActPrice = bcadd($actPrice, $data['orderReachDiscountPrice'], 2);
|
|
|
+ } else {
|
|
|
+ $originActPrice = $actPrice;
|
|
|
+ }
|
|
|
+ if ($originActPrice >= $data['itemPrice']) {
|
|
|
+ if (isset($custom['risePercent']) && $custom['risePercent'] > 0) {
|
|
|
+ if (isset($custom['riseRange']) && $custom['riseRange'] > 0) {
|
|
|
+ $risePercent = $custom['risePercent'];
|
|
|
+ $riseRange = $custom['riseRange'];
|
|
|
+ // 计算涨价金额:涨价后金额 * (涨价百分比 / (100 + 涨价百分比))
|
|
|
+ $riseAmount = bcmul($data['itemPrice'], bcdiv($risePercent, bcadd(100, $risePercent, 0), 4), 2);
|
|
|
+ if ($riseAmount > $riseRange) {
|
|
|
+ //应该退回的金额
|
|
|
+ $backAmount = bcsub($riseAmount, $riseRange, 2);
|
|
|
+ $actPrice = bcsub($actPrice, $backAmount, 2);
|
|
|
+ if (isset($data['orderReachDiscountPrice'])) {
|
|
|
+ if ($data['orderReachDiscountPrice'] < $backAmount) {
|
|
|
+ //前面整单满减的,就不减了,所以这里面加回来
|
|
|
+ $actPrice = bcadd($actPrice, $data['orderReachDiscountPrice'], 2);
|
|
|
+ //改成减多加钱里面的
|
|
|
+ $data['orderReachDiscountPrice'] = $backAmount;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $data['orderReachDiscountPrice'] = $backAmount;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -977,7 +1006,7 @@ class OrderClass extends BaseClass
|
|
|
$currentTime = time();
|
|
|
$validTime = dict::getDict('order_pay_has_time');
|
|
|
$current = $currentTime + $validTime;
|
|
|
- $data['deadline'] = isset($data['deadline']) ? $data['deadline'] : date("Y-m-d H:i:s", $current);
|
|
|
+ $data['deadline'] = $data['deadline'] ?? date("Y-m-d H:i:s", $current);
|
|
|
if ($book == 1) {
|
|
|
$fiveTime = bcmul(86400, 5);
|
|
|
$bookDeadline = bcadd($currentTime, $fiveTime);
|