我想在购物车上进行Virto Commerce的促销活动。在我的例子中,如果客户购买至少800瑞典克朗,我想用200瑞典克朗折扣购物车,我的例子中的增值税/消费税是25%。
这是我正在寻找的效果:
Cart
subTotal: 640
subTotalWithTax: 800
discountAmount: 160
discountTotalWithTax: 200
total: 480
totalWithTax: 600
据我所知,营销模块仅支持在税前应用折扣的促销活动。在店面代码中发表评论:
foreach (var reward in cartRewards)
{
//When a discount is applied to the cart subtotal, the tax calculation has already been applied, and is reflected in the tax subtotal.
//Therefore, a discount applying to the cart subtotal will occur after tax.
//For instance, if the cart subtotal is $100, and $15 is the tax subtotal, a cart - wide discount of 10 % will yield a total of $105($100 subtotal – $10 discount + $15 tax on the original $100).
if (reward.IsValid)
{
var discount = reward.ToDiscountModel(ExtendedPriceTotal);
Discounts.Add(discount);
DiscountAmount = discount.Amount;
}
}
我想这在某些市场是常见的做法。但这是针对瑞典的B2C解决方案。 800 SEK购物车上的广告折扣200瑞典克朗应该使客户面临600瑞典克朗的总价格,包括税收。
This is an img of my promotion in the Marketing Module
这给了我关于Cart JSON的以下内容
Cart
subTotal: 640
subTotalWithTax: 800
discountAmount: 160
discountTotal: 160
discountTotalWithTax: 160
subTotalDiscount: 0
subTotalDiscountWithTax:0
discountTotalWithTax: 160
taxTotal: 160
total: 640
totalWithTax: 800 (Calculated. Not in standard JSON response)
所以要么我错过了配置促销,要么我的实施促销店面代码在某种程度上缺乏。
答案 0 :(得分:0)
目前,VC只对订单小计政策实施一次折扣:
当对购物车小计应用折扣时,税额计算 已经应用,并反映在税收小计中。 因此,之后将发生适用于购物车小计的折扣 税。例如,如果购物车小计是100美元,那么15美元是税 小计,购物车折扣10%将产生总计105美元(100美元) 小计 - 10美元折扣+原价100美元的15美元税。)
但我们正在努力改变总计算,以使此流程更灵活,更可扩展,以支持任何计算政策。
您可以通过扩展模块中的一点自定义来实现您想要的目标:
使用以下代码扩展ShopingCart
类
public class ShopingCart2: ShoppingCart
{
public decimal DiscountAmountWithTax
{
get
{
return DiscountAmount + DiscountAmount * TaxPercentRate;
}
}
public override decimal TaxTotal
{
get
{
var result = base.TaxTotal;
result -= DiscountAmountWithTax - DiscountAmount;
return result;
}
}
public override decimal DiscountTotalWithTax
{
get
{
var result = base.DiscountTotalWithTax;
result += DiscountAmountWithTax - DiscountAmount;
return result;
}
}
}
使用与上面CustomerOrder
相同的代码扩展域ShoppingCart
类型
ShoopingCart2
CustomerOrder2
和AbstractTypeFactory
醇>
AbstractTypeFactory<ShoppingCart>.OverrideType<ShoppingCart, ShoppingCart2>();
AbstractTypeFactory<CustomerOrder>.OverrideType<CustomerOrder, CustomerOrder2>();
将您的店面更新为dev的最新版本(正常工作所需的此提交https://github.com/VirtoCommerce/vc-storefront/commit/2464548c171c811a9d63edba0bdf6af93e8c902b)
修改店面中的ShopingCart
课程 - 添加您之前在新ShoppingCart2类型中所做的相同更改。