Available Discounts

Post feature requests to this forum and a pre-configured poll will automatically be created for you.
Post Reply

How important is this enhancement to you?

It's a critical enhancement that I must have.
6
50%
It's an important enhancement but others are more critical.
1
8%
I'd like to have it but it's not that important.
4
33%
I'd never use this feature.
1
8%
 
Total votes: 12

User avatar
William_firefold
Commander (CMDR)
Commander (CMDR)
Posts: 186
Joined: Fri Aug 01, 2008 8:38 am

Available Discounts

Post by William_firefold » Thu Aug 14, 2008 2:20 pm

Another minor(i hope) change.
Currently next to each product we have this:

Available Discounts
Store Wide
• Buy 2 to 9, save 1%
• Buy 10 to 24, save 2%
• Buy 25 to 49, save 3%
• Buy at least 50, save 4%

We want it to have a dollar value like this:

Image

Thanks in advance for any help.

User avatar
Shopping Cart Admin
AbleCommerce Admin
AbleCommerce Admin
Posts: 3055
Joined: Mon Dec 01, 2003 8:41 pm
Location: Vancouver, WA
Contact:

Re: Available Discounts

Post by Shopping Cart Admin » Tue Aug 19, 2008 9:52 am

Moved to feature enhancements so it's not lost.
Thanks for your support

Shopping Cart Guru
AbleCommerce.com
Follow us on Facebook

SteveHiner
Lieutenant (LT)
Lieutenant (LT)
Posts: 58
Joined: Thu Jun 21, 2007 8:27 pm

Re: Available Discounts

Post by SteveHiner » Mon Oct 27, 2008 1:38 pm

The image is gone so I have to make assumptions about what he's asking for. This is something I implemented myself but it makes updates and customization somewhat harder. I'd love to have it built in.

My current custom implementation builds a table that looks like this:

Code: Select all

1+       100+      500+     1000+     2500+
$2.79    $2.19     $1.39    $1.29     $1.25
This is also how my client thinks about the data. I wish they could enter the data in the product like this. Right now they'll have to change from thinking about it as the final price to thinking about a dollar discount based on quantity. If the quantity discounts could be entered as the final price instead of a discount it would be helpful to them.
Steve

User avatar
William_firefold
Commander (CMDR)
Commander (CMDR)
Posts: 186
Joined: Fri Aug 01, 2008 8:38 am

Re: Available Discounts

Post by William_firefold » Wed Nov 05, 2008 7:53 am

Yes that is pretty much what I had in the image. Ours says Save $0.03 ea.,Save $0.06 ea....
I cant remember how we did it as I wasnt the one who did but here is the .cs for ours:

Code: Select all

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CommerceBuilder.Common;
using CommerceBuilder.Products;
using CommerceBuilder.Marketing;
using CommerceBuilder.Utility;

public partial class ConLib_ProductDiscountsDialog : System.Web.UI.UserControl
{
    private string _Caption = "<strong>Quantity Discounts</strong>";

    [Personalizable(), WebBrowsable()]
    public string Caption
    {
        get { return _Caption; }
        set { _Caption = value; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        bool discountsFound = false;
        int _ProductId = AlwaysConvert.ToInt(Request.QueryString["ProductId"]);
        Product _Product = ProductDataSource.Load(_ProductId);
        if (_Product != null)
        {
            VolumeDiscountCollection availableDiscounts = VolumeDiscountDataSource.GetAvailableDiscounts(_ProductId);
            if (availableDiscounts.Count > 0)
            {
                //SEE WHETHER THERE IS ONE DISCOUNT
                //AND IT ALWAYS HAS NO VALUE
                bool show = true;
                if (availableDiscounts.Count == 1)
                {
                    VolumeDiscount testDiscount = availableDiscounts[0];
                    if (testDiscount.Levels.Count == 1)
                    {
                        VolumeDiscountLevel testLevel = testDiscount.Levels[0];
                        show = ((testLevel.MinValue > 1) || (testLevel.DiscountAmount > 0));
                    }
                }
                if (show)
                {
                    phCaption.Text = this.Caption;
                    DiscountGrid.DataSource = availableDiscounts;
                    DiscountGrid.DataBind();
                    discountsFound = true;
                }
            }
        }
        //DO NOT DISPLAY THIS CONTROL IF NO DISCOUNTS AVAILABLE
        if (!discountsFound) this.Controls.Clear();
    }

    protected string GetLevels(object dataItem)
    {
        StringBuilder levelList = new StringBuilder();
        levelList.Append("<ul class=\"qtyDiscounts\">");
        VolumeDiscount discount = (VolumeDiscount)dataItem;
        string minFormat, maxFormat;
        if (discount.IsValueBased)
        {
            minFormat = "{0:ulc}";
            maxFormat = "{1:ulc}";
        }
        else
        {
            minFormat = "{0:F0}";
            maxFormat = "{1:F0}";
        }
        foreach (VolumeDiscountLevel level in discount.Levels)
        {
            levelList.Append("<li>Buy ");
            if (level.MinValue != 0)
            {
                if (level.MaxValue != 0)
                {
                    levelList.Append(string.Format(minFormat + " to " + maxFormat, level.MinValue, level.MaxValue));
                }
                else
                {
                    levelList.Append(string.Format("at least " + minFormat, level.MinValue));
                }
            }
            else if (level.MaxValue != 0)
            {
                levelList.Append(string.Format("up to " + minFormat, level.MaxValue));
            }
            else
            {
                levelList.Append("any");
            }
            levelList.Append(" - <span style=\"color:#f0ca00;font-weight:bold;\">Save ");
            if (level.IsPercent) levelList.Append(string.Format("{0:0.##}%", level.DiscountAmount));
            else levelList.Append(string.Format("{0:ulc} ea.", level.DiscountAmount));
            levelList.Append("</span></li>");
        }
        levelList.Append("</ul>");
        return levelList.ToString();
    }
}

Post Reply