Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Hello,
Here's the code from Commerce sample (lvDiscount_ItemCommand in ApplyCoupons.ascx.cs). After apply, the coupon was stored as discount in lineitem/order, then it must be deleted. Note the last line, which just remove the coupon code from session, which does not affect the order:
if (!e.CommandName.Equals("DeleteCoupon"))
return;
var couponCode = e.CommandArgument.ToString();
foreach (OrderForm form in _cartHelper.Cart.OrderForms)
{
var formDiscount = form.Discounts.Cast<Discount>().Where(x => couponCode.Equals(x.DiscountCode));
foreach (var discount in formDiscount)
{
discount.Delete();
}
foreach (LineItem lineItem in form.LineItems)
{
var lineItemDiscount = lineItem.Discounts.Cast<Discount>().Where(x => couponCode.Equals(x.DiscountCode));
foreach (var discount in lineItemDiscount)
{
discount.Delete();
}
}
foreach (Shipment shipment in form.Shipments)
{
var shipmentDiscount = shipment.Discounts.Cast<Discount>().Where(x => couponCode.Equals(x.DiscountCode));
foreach (var discount in shipmentDiscount)
{
shipment.ShippingDiscountAmount -= discount.DiscountValue;
// Pending testing, this might need to be changed to summing ShippingDiscountAmount before removing them,
// and then adding that sum back to form.ShippingTotal (since CalculateTotalsActivity simply does
// shipment.ShipmentTotal - shipment.ShippingDiscountAmount without checking for custom discounts)
form.ShippingTotal += discount.DiscountValue;
discount.Delete();
}
}
}
CartHelper.RunWorkflow(Constants.CartValidateWorkflowName);
_cartHelper.Cart.AcceptChanges();
Session.Remove(Constants.LastCouponCode);
Regards.
/Q
I want to give the visitors the ability to remove a voucher/coupon code from the cart if they added this before.
Codes are added by adding them to the MarketingContext.Current.MarketingProfileContext, but I can't find the codes there to remove them, and when I add a new codeslist with another code the CalculateDiscountsActivity still has the old code in the MarketingProfileContext too.
Where are these codes stored? In the Session somewhere, or via a cookie? or somewhere else?