using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CMS.CMSHelper;
using CMS.Ecommerce;
using CMS.GlobalHelper;
using CMS.SettingsProvider;
using CMS.UIControls;
public partial class CMSModules_Ecommerce_Controls_UI_ProductTaxes : CMSAdminControl
{
#region "Variables"
protected int mProductId = 0;
protected SKUInfo mProduct = null;
protected string currentValues = string.Empty;
#endregion
#region "Properties"
///
/// Product ID.
///
public int ProductID
{
get
{
return mProductId;
}
set
{
mProductId = value;
mProduct = null;
}
}
///
/// Product info object.
///
public SKUInfo Product
{
get
{
if (mProduct == null)
{
mProduct = SKUInfoProvider.GetSKUInfo(mProductId);
}
return mProduct;
}
set
{
mProduct = value;
mProductId = 0;
if (value != null)
{
mProductId = value.SKUID;
}
}
}
///
/// Form enabled.
///
public bool Enabled
{
get
{
return uniSelector.Enabled;
}
set
{
uniSelector.Enabled = value;
}
}
///
/// Uniselector control used for taxes selection.
///
public UniSelector UniSelector
{
get
{
return uniSelector;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
lblSiteTitle.Text = GetString("product_edit_tax.taxtitle");
if (ProductID > 0)
{
DataSet ds = TaxClassInfoProvider.GetSKUTaxClasses(ProductID);
if (!DataHelper.DataSourceIsEmpty(ds))
{
currentValues = TextHelper.Join(";", SystemDataHelper.GetStringValues(ds.Tables[0], "TaxClassID"));
}
uniSelector.WhereCondition = GetWhereCondition();
if (!RequestHelper.IsPostBack())
{
uniSelector.Value = currentValues;
}
}
uniSelector.IconPath = GetObjectIconUrl("ecommerce.taxclass", "object.png");
}
///
/// Saves selected items. No permission chcecks are performed.
///
public void SaveItems()
{
// Remove old items
string newValues = ValidationHelper.GetString(uniSelector.Value, null);
string items = DataHelper.GetNewItemsInList(newValues, currentValues);
if (!String.IsNullOrEmpty(items))
{
string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
if (newItems != null)
{
// Add all new items to user
foreach (string item in newItems)
{
int taxClassId = ValidationHelper.GetInteger(item, 0);
SKUTaxClassInfoProvider.RemoveTaxClassFromSKU(taxClassId, ProductID);
}
}
}
// Add new items
items = DataHelper.GetNewItemsInList(currentValues, newValues);
if (!String.IsNullOrEmpty(items))
{
string[] newItems = items.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
if (newItems != null)
{
// Add all new items to user
foreach (string item in newItems)
{
int taxClassId = ValidationHelper.GetInteger(item, 0);
SKUTaxClassInfoProvider.AddTaxClassToSKU(taxClassId, ProductID);
}
}
}
// Show message
ShowChangesSaved();
}
///
/// Returns Where condition according to global object settings.
///
protected string GetWhereCondition()
{
string where = "";
if (Product != null)
{
// Offer global tax classes for global products or when using global tax classes
if (Product.IsGlobal || ECommerceSettings.UseGlobalTaxClasses(CMSContext.CurrentSiteName))
{
where = "TaxClassSiteID IS NULL";
}
else
{
where = "TaxClassSiteID = " + Product.SKUSiteID;
}
}
// Include selected values
if (!string.IsNullOrEmpty(currentValues))
{
where += " OR TaxClassID IN (" + currentValues.Replace(';', ',') + ")";
}
return where;
}
}