mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:13:26 +08:00
【修复】修复全局促销指定商品第几件减去指定金额计算数量有差异的问题。
This commit is contained in:
@@ -71,15 +71,19 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
switch (resultInfo.code)
|
||||
{
|
||||
//指定商品减固定金额
|
||||
case "GOODS_REDUCE":
|
||||
promotionModel = result_GOODS_REDUCE(parameters, item, promotionInfo);
|
||||
break;
|
||||
//指定商品打X折
|
||||
case "GOODS_DISCOUNT":
|
||||
promotionModel = result_GOODS_DISCOUNT(parameters, item, promotionInfo);
|
||||
break;
|
||||
//指定商品一口价
|
||||
case "GOODS_ONE_PRICE":
|
||||
promotionModel = result_GOODS_ONE_PRICE(parameters, item, promotionInfo);
|
||||
break;
|
||||
//指定商品每第几件减指定金额
|
||||
case "GOODS_HALF_PRICE": //todo 指定商品每第几件减指定金额
|
||||
promotionModel = result_GOODS_HALF_PRICE(parameters, item, promotionInfo);
|
||||
break;
|
||||
@@ -136,10 +140,12 @@ namespace CoreCms.Net.Services
|
||||
}
|
||||
else
|
||||
{
|
||||
//订单打X折
|
||||
if (resultInfo.code == "ORDER_DISCOUNT")
|
||||
{
|
||||
result_ORDER_DISCOUNT(parameters, cart, promotionInfo);
|
||||
}
|
||||
//订单减指定金额
|
||||
else if (resultInfo.code == "ORDER_REDUCE")
|
||||
{
|
||||
result_ORDER_REDUCE(parameters, cart, promotionInfo);
|
||||
@@ -319,7 +325,7 @@ namespace CoreCms.Net.Services
|
||||
return promotionMoney;
|
||||
}
|
||||
|
||||
//商品第N个半价
|
||||
//指定商品每第几件减指定金额
|
||||
public decimal result_GOODS_HALF_PRICE(JObject parameters, CartProducts cartProducts, CoreCmsPromotion promotionInfo)
|
||||
{
|
||||
if (!parameters.ContainsKey("money")) return 0;
|
||||
@@ -335,16 +341,21 @@ namespace CoreCms.Net.Services
|
||||
var num = parameters["num"].ObjectToInt(0);
|
||||
//购买的数量
|
||||
var buyNum = cartProducts.nums;
|
||||
//取整数,保证满足了,才优惠 ,比如设置 原价 10 第2个 减少5,购买5个产品的时候,实际只优惠2个产品的价格
|
||||
var promotionNum = buyNum / num;
|
||||
var pmoney = Math.Round((decimal)promotionNum * objMoney / buyNum, 2); //单品优惠的金额
|
||||
var goodsPrice = (decimal)cartProducts.products.price;
|
||||
cartProducts.products.price = goodsPrice - pmoney; //优惠后的平均价格
|
||||
promotionMoney = Math.Round(cartProducts.nums * pmoney, 2);//优惠金额
|
||||
//设置商品优惠总金额
|
||||
cartProducts.products.promotionAmount = Math.Round(cartProducts.products.promotionAmount + promotionMoney, 2);
|
||||
//设置商品的实际销售总金额
|
||||
cartProducts.products.amount = Math.Round(cartProducts.products.amount - promotionMoney, 2);
|
||||
|
||||
if (cartProducts.nums >= num)
|
||||
{
|
||||
//var promotionNum = buyNum / num;
|
||||
var pmoney = Math.Round(objMoney / buyNum, 2); //单品优惠的金额
|
||||
var goodsPrice = (decimal)cartProducts.products.price;
|
||||
cartProducts.products.price = goodsPrice - pmoney; //优惠后的平均价格
|
||||
promotionMoney = Math.Round(cartProducts.nums * pmoney, 2);//优惠金额
|
||||
|
||||
//设置商品优惠总金额
|
||||
cartProducts.products.promotionAmount = Math.Round(cartProducts.products.promotionAmount + promotionMoney, 2);
|
||||
//设置商品的实际销售总金额
|
||||
cartProducts.products.amount = Math.Round(cartProducts.products.amount - promotionMoney, 2);
|
||||
}
|
||||
|
||||
return promotionMoney;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user