コード例 #1
0
        public Int32 Save(PromoBySupplierDetails Details)
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "CALL procSavePromoBySupplier(@PromoBySupplierID, @PromoBySupplierCode, @PromoBySupplierName, @PromoLevel, @StartDate, @EndDate, @PromoTypeID, @Status, @CreatedOn, @LastModified);";

                cmd.Parameters.AddWithValue("PromoBySupplierID", Details.PromoBySupplierID);
                cmd.Parameters.AddWithValue("PromoBySupplierCode", Details.PromoBySupplierCode);
                cmd.Parameters.AddWithValue("PromoBySupplierName", Details.PromoBySupplierName);
                cmd.Parameters.AddWithValue("PromoLevel", Details.PromoLevel.ToString("d"));
                cmd.Parameters.AddWithValue("StartDate", Details.StartDate.ToString("yyyy-MM-dd HH:mm:ss"));
                cmd.Parameters.AddWithValue("EndDate", Details.EndDate.ToString("yyyy-MM-dd HH:mm:ss"));
                cmd.Parameters.AddWithValue("PromoTypeID", Details.PromoTypeID);
                cmd.Parameters.AddWithValue("Status", Details.Status);
                cmd.Parameters.AddWithValue("CreatedOn", Details.CreatedOn == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : Details.CreatedOn);
                cmd.Parameters.AddWithValue("LastModified", Details.LastModified == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : Details.LastModified);

                cmd.CommandText = SQL;
                return(base.ExecuteNonQuery(cmd));
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
コード例 #2
0
        public PromoBySupplierDetails getPromoBySupplierID()
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "SELECT " +
                             "PromoBySupplierID  " +
                             "FROM tblPromoBySupplier " +
                             "WHERE 1=1 " +
                             "AND Status = 1 " +
                             "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                             "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i');";

                cmd.CommandText = SQL;
                string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                PromoBySupplierDetails clsPromoBySupplierDetails = new PromoBySupplierDetails();
                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    clsPromoBySupplierDetails = Details(Int64.Parse(dr["PromoBySupplierID"].ToString())); break;
                }

                return(clsPromoBySupplierDetails);
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
コード例 #3
0
		public void Update(PromoBySupplierDetails Details)
		{
			try 
			{
                Save(Details);
			}
			catch (Exception ex)
			{
				throw base.ThrowException(ex);
			}	
		}
コード例 #4
0
 public void Update(PromoBySupplierDetails Details)
 {
     try
     {
         Save(Details);
     }
     catch (Exception ex)
     {
         throw base.ThrowException(ex);
     }
 }
コード例 #5
0
        public System.Data.DataTable ListAstDataTable(PromoBySupplierDetails SearchKey, string SortField = "PromoBySupplierID", SortOption SortOrder = SortOption.Ascending, Int32 limit = 0)
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "SELECT " +
                             "PromoBySupplierID, " +
                             "PromoBySupplierCode, " +
                             "PromoBySupplierName, " +
                             "PromoLevel, " +
                             "StartDate, " +
                             "EndDate, " +
                             "Status, " +
                             "a.PromoTypeID, " +
                             "PromoTypeCode, " +
                             "PromoTypeName " +
                             "FROM tblPromoBySupplier a INNER JOIN " +
                             "tblPromoType b ON a.PromoTypeID = b.PromoTypeID " +
                             "WHERE 1=1 ";

                if (!string.IsNullOrEmpty(SearchKey.PromoBySupplierCode))
                {
                    SQL += "AND PromoBySupplierCode LIKE @PromoBySupplierCode ";
                    cmd.Parameters.AddWithValue("@PromoBySupplierCode", SearchKey.PromoBySupplierCode);
                }
                if (!string.IsNullOrEmpty(SearchKey.PromoBySupplierName))
                {
                    SQL += "AND PromoBySupplierCode LIKE @PromoBySupplierName ";
                    cmd.Parameters.AddWithValue("@PromoBySupplierName", SearchKey.PromoBySupplierName);
                }
                if (!string.IsNullOrEmpty(SearchKey.PromoTypeCode))
                {
                    SQL += "AND PromoBySupplierCode LIKE @PromoTypeCode ";
                    cmd.Parameters.AddWithValue("@PromoTypeCode", SearchKey.PromoTypeCode);
                }

                SQL += "ORDER BY " + SortField + " ";
                SQL += SortOrder == SortOption.Ascending ? "ASC " : "DESC ";
                SQL += limit == 0 ? "" : "LIMIT " + limit.ToString() + " ";

                cmd.CommandText = SQL;
                string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                return(dt);
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
コード例 #6
0
		public Int64 Insert(PromoBySupplierDetails Details)
		{
			try 
			{
                Save(Details);

				return Int64.Parse(base.getLAST_INSERT_ID(this));
			}
			catch (Exception ex)
			{
				throw base.ThrowException(ex);
			}	
		}
コード例 #7
0
        public Int64 Insert(PromoBySupplierDetails Details)
        {
            try
            {
                Save(Details);

                return(Int64.Parse(base.getLAST_INSERT_ID(this)));
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
コード例 #8
0
        public PromoBySupplierDetails Details(Int64 PromoBySupplierID)
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "SELECT " +
                             "PromoBySupplierID, " +
                             "PromoBySupplierCode, " +
                             "PromoBySupplierName, " +
                             "PromoLevel, " +
                             "StartDate, " +
                             "EndDate, " +
                             "Status, " +
                             "a.PromoTypeID, " +
                             "PromoTypeCode, " +
                             "PromoTypeName " +
                             "FROM tblPromoBySupplier a " +
                             "INNER JOIN tblPromoType b ON a.PromoTypeID = b.PromoTypeID " +
                             "WHERE a.PromoBySupplierID = @PromoBySupplierID;";

                cmd.Parameters.AddWithValue("@PromoBySupplierID", PromoBySupplierID);

                cmd.CommandText = SQL;
                string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                PromoBySupplierDetails Details = new PromoBySupplierDetails();
                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    Details.PromoBySupplierID   = Int64.Parse(dr["PromoBySupplierID"].ToString());
                    Details.PromoBySupplierCode = "" + dr["PromoBySupplierCode"].ToString();
                    Details.PromoBySupplierName = "" + dr["PromoBySupplierName"].ToString();
                    Details.PromoLevel          = (PromoLevel)Enum.Parse(typeof(PromoLevel), dr["PromoLevel"].ToString());
                    Details.StartDate           = DateTime.Parse(dr["StartDate"].ToString());
                    Details.EndDate             = DateTime.Parse(dr["EndDate"].ToString());
                    Details.PromoTypeID         = Int32.Parse(dr["PromoTypeID"].ToString());
                    Details.PromoTypeCode       = "" + dr["PromoTypeCode"].ToString();
                    Details.PromoTypeName       = "" + dr["PromoTypeName"].ToString();
                }

                return(Details);
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
コード例 #9
0
ファイル: _List.ascx.cs プロジェクト: marioricci/erp-luma
		private void LoadList()
		{	
			PromoBySupplier clsPromoBySupplier = new PromoBySupplier();
			DataClass clsDataClass = new DataClass();

			string SortField = "PromoBySupplierName";
			if (Request.QueryString["sortfield"]!=null)
			{	SortField = Common.Decrypt(Request.QueryString["sortfield"].ToString(), Session.SessionID);	}
			
			SortOption sortoption = SortOption.Ascending;
			if (Request.QueryString["sortoption"]!=null)
			{	sortoption = (SortOption) Enum.Parse(typeof(SortOption), Common.Decrypt(Request.QueryString["sortoption"], Session.SessionID), true);	}

            PromoBySupplierDetails clsSearchKey = new PromoBySupplierDetails();

			if (Request.QueryString["Search"]!=null)
			{
                clsSearchKey.PromoBySupplierCode = Common.Decrypt((string)Request.QueryString["search"], Session.SessionID);
			}

            PageData.DataSource = clsPromoBySupplier.ListAstDataTable(clsSearchKey, SortField, sortoption).DefaultView;

			clsPromoBySupplier.CommitAndDispose();

			int iPageSize = Convert.ToInt16(Session["PageSize"]) ;
			
			PageData.AllowPaging = true;
			PageData.PageSize = iPageSize;
			try
			{
				PageData.CurrentPageIndex = Convert.ToInt16(cboCurrentPage.SelectedItem.Value) - 1;				
				lstItem.DataSource = PageData;
				lstItem.DataBind();
			}
			catch
			{
				PageData.CurrentPageIndex = 1;
				lstItem.DataSource = PageData;
				lstItem.DataBind();
			}			
			
			cboCurrentPage.Items.Clear();
			for (int i=0; i < PageData.PageCount;i++)
			{
				int iValue = i + 1;
				cboCurrentPage.Items.Add(new ListItem(iValue.ToString(),iValue.ToString()));
				if (PageData.CurrentPageIndex == i)
				{	cboCurrentPage.Items[i].Selected = true;}
				else
				{	cboCurrentPage.Items[i].Selected = false;}
			}
			lblDataCount.Text = " of " + " " + PageData.PageCount;
		}
コード例 #10
0
ファイル: _Update.ascx.cs プロジェクト: marioricci/erp-luma
		private long SaveRecord()
		{
            long lngRetValue = 0;
            string stScript = string.Empty;

            DateTime dteStartDateTime = DateTime.MinValue;
            try { dteStartDateTime = Convert.ToDateTime(txtStartDate.Text + " " + txtStartTime.Text); }
            catch
            {
                stScript += "<Script>";
                stScript += "window.alert('Please enter a valid start date time of promo.')";
                stScript += "</Script>";
                Response.Write(stScript);
                return lngRetValue;
            }
            DateTime dteEndDateTime = DateTime.MinValue;
            try { dteEndDateTime = Convert.ToDateTime(txtEndDate.Text + " " + txtEndTime.Text); }
            catch
            {
                stScript += "<Script>";
                stScript += "window.alert('Please enter a valid end date time of promo.')";
                stScript += "</Script>";
                Response.Write(stScript);
                return lngRetValue;
            }

            PromoBySupplier clsPromoBySupplier = new PromoBySupplier();
            PromoBySupplierDetails clsDetails = new PromoBySupplierDetails();

            clsDetails.PromoBySupplierID = Convert.ToInt64(lblPromoBySupplierID.Text);
            clsDetails.PromoBySupplierCode = txtPromoBySupplierCode.Text;
            clsDetails.PromoBySupplierName = txtPromoBySupplierName.Text;
            clsDetails.PromoLevel = (PromoLevel)Enum.Parse(typeof(PromoLevel), cboPromoLevel.SelectedItem.Value);
            clsDetails.StartDate = dteStartDateTime;
            clsDetails.EndDate = dteEndDateTime;
            clsDetails.PromoTypeID = Constants.C_DEF_PROMO_TYPE_ID;

            clsPromoBySupplier.Update(clsDetails);
            clsPromoBySupplier.CommitAndDispose();

            lngRetValue = clsDetails.PromoBySupplierID;
            return lngRetValue;
		}
コード例 #11
0
        public Int32 Save(PromoBySupplierDetails Details)
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "CALL procSavePromoBySupplier(@PromoBySupplierID, @PromoBySupplierCode, @PromoBySupplierName, @PromoLevel, @StartDate, @EndDate, @PromoTypeID, @Status, @CreatedOn, @LastModified);";

                cmd.Parameters.AddWithValue("PromoBySupplierID", Details.PromoBySupplierID);
                cmd.Parameters.AddWithValue("PromoBySupplierCode", Details.PromoBySupplierCode);
                cmd.Parameters.AddWithValue("PromoBySupplierName", Details.PromoBySupplierName);
                cmd.Parameters.AddWithValue("PromoLevel", Details.PromoLevel.ToString("d"));
                cmd.Parameters.AddWithValue("StartDate", Details.StartDate.ToString("yyyy-MM-dd HH:mm:ss"));
                cmd.Parameters.AddWithValue("EndDate", Details.EndDate.ToString("yyyy-MM-dd HH:mm:ss"));
                cmd.Parameters.AddWithValue("PromoTypeID", Details.PromoTypeID);
                cmd.Parameters.AddWithValue("Status", Details.Status);
                cmd.Parameters.AddWithValue("CreatedOn", Details.CreatedOn == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : Details.CreatedOn);
                cmd.Parameters.AddWithValue("LastModified", Details.LastModified == DateTime.MinValue ? Constants.C_DATE_MIN_VALUE : Details.LastModified);

                cmd.CommandText = SQL;
                return base.ExecuteNonQuery(cmd);
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
コード例 #12
0
		public System.Data.DataTable ListAstDataTable(PromoBySupplierDetails SearchKey, string SortField = "PromoBySupplierID", SortOption SortOrder = SortOption.Ascending, Int32 limit = 0)
		{
			try
			{
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "SELECT " +
                                    "PromoBySupplierID, " +
                                    "PromoBySupplierCode, " +
                                    "PromoBySupplierName, " +
                                    "PromoLevel, " +
                                    "StartDate, " +
                                    "EndDate, " +
                                    "Status, " +
                                    "a.PromoTypeID, " +
                                    "PromoTypeCode, " +
                                    "PromoTypeName " +
                                "FROM tblPromoBySupplier a INNER JOIN " +
                                "tblPromoType b ON a.PromoTypeID = b.PromoTypeID " +
                                "WHERE 1=1 ";

                if (!string.IsNullOrEmpty(SearchKey.PromoBySupplierCode))
                {
                    SQL += "AND PromoBySupplierCode LIKE @PromoBySupplierCode ";
                    cmd.Parameters.AddWithValue("@PromoBySupplierCode", SearchKey.PromoBySupplierCode);
                }
                if (!string.IsNullOrEmpty(SearchKey.PromoBySupplierName))
                {
                    SQL += "AND PromoBySupplierCode LIKE @PromoBySupplierName ";
                    cmd.Parameters.AddWithValue("@PromoBySupplierName", SearchKey.PromoBySupplierName);
                }
                if (!string.IsNullOrEmpty(SearchKey.PromoTypeCode))
                {
                    SQL += "AND PromoBySupplierCode LIKE @PromoTypeCode ";
                    cmd.Parameters.AddWithValue("@PromoTypeCode", SearchKey.PromoTypeCode);
                }

                SQL += "ORDER BY " + SortField + " ";
                SQL += SortOrder == SortOption.Ascending ? "ASC " : "DESC ";
                SQL += limit == 0 ? "" : "LIMIT " + limit.ToString() + " ";

                cmd.CommandText = SQL;
                string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                return dt;		
			}
			catch (Exception ex)
			{
				throw base.ThrowException(ex);
			}	
		}		
コード例 #13
0
		public PromoBySupplierDetails Details(Int64 PromoBySupplierID)
		{
			try
			{
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

				string SQL=	"SELECT " +
								"PromoBySupplierID, " +
								"PromoBySupplierCode, " +
								"PromoBySupplierName, " +
                                "PromoLevel, " +
								"StartDate, " +
								"EndDate, " +
								"Status, " +
								"a.PromoTypeID, " +
								"PromoTypeCode, " +
								"PromoTypeName " +
							"FROM tblPromoBySupplier a " +
							"INNER JOIN tblPromoType b ON a.PromoTypeID = b.PromoTypeID " +
							"WHERE a.PromoBySupplierID = @PromoBySupplierID;";

                cmd.Parameters.AddWithValue("@PromoBySupplierID", PromoBySupplierID);

                cmd.CommandText = SQL;
                string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                PromoBySupplierDetails Details = new PromoBySupplierDetails();
                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    Details.PromoBySupplierID = Int64.Parse(dr["PromoBySupplierID"].ToString());
                    Details.PromoBySupplierCode = "" + dr["PromoBySupplierCode"].ToString();
                    Details.PromoBySupplierName = "" + dr["PromoBySupplierName"].ToString();
                    Details.PromoLevel = (PromoLevel) Enum.Parse(typeof(PromoLevel), dr["PromoLevel"].ToString());
                    Details.StartDate = DateTime.Parse(dr["StartDate"].ToString());
                    Details.EndDate = DateTime.Parse(dr["EndDate"].ToString());
                    Details.PromoTypeID = Int32.Parse(dr["PromoTypeID"].ToString());
                    Details.PromoTypeCode = "" + dr["PromoTypeCode"].ToString();
                    Details.PromoTypeName = "" + dr["PromoTypeName"].ToString();
                }

				return Details;
			}
			catch (Exception ex)
			{
				throw base.ThrowException(ex);
			}	
		}
コード例 #14
0
        public PromoBySupplierDetails getPromoBySupplierID()
        {
            try
            {
                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "SELECT " +
                                "PromoBySupplierID  " +
                            "FROM tblPromoBySupplier " +
                            "WHERE 1=1 " +
                                "AND Status = 1 " +
                                "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                                "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i');";

                cmd.CommandText = SQL;
                string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                PromoBySupplierDetails clsPromoBySupplierDetails = new PromoBySupplierDetails();
                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    clsPromoBySupplierDetails = Details(Int64.Parse(dr["PromoBySupplierID"].ToString())); break;
                }

                return clsPromoBySupplierDetails;
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
コード例 #15
0
        public bool ApplyPromoBySupplierValue(PromoBySupplierDetails clsPromoBySupplierDetails, Int64 ContactID, Int64 ProductGroupID, Int64 ProductSubGroupID, Int64 ProductID, Int64 VariationMatrixID, out decimal PromoBySupplierValue, out string CouponRemarks, int BranchID = 0)
		{
            string strSpecialSupplierIDs = "";

            PromoBySupplierValue = 0;
            CouponRemarks = "";

            bool boHasPromoBySupplier = true;

            try
            {
                if (ProductID != 0)
                {
                    Data.Products clsProduct = new Data.Products(base.Connection, base.Transaction);
                    Data.ProductDetails clsProductDetails = clsProduct.Details1(BranchID, ProductID);

                    ProductSubGroupID = clsProductDetails.ProductSubGroupID;
                    ProductGroupID = clsProductDetails.ProductGroupID;
                }

                MySqlCommand cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                string SQL = "";
                string strDataTableName = "tbl" + this.GetType().FullName.Split(new Char[] { '.' })[this.GetType().FullName.Split(new Char[] { '.' }).Length - 1]; System.Data.DataTable dt = new System.Data.DataTable(strDataTableName);

                /*******************************Up to Contact, Group, Sub, Prod and VarM ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = @ProductGroupID " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductGroupID", ProductGroupID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, Sub, Prod and VariationsMatrix ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, Prod and VariationsMatrix ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, VariationsMatrix ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, Group, Sub, Prod ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = @ProductGroupID " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductGroupID", ProductGroupID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, Sub, Prod ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, Prod ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, Group, Sub *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = @ProductGroupID " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductGroupID", ProductGroupID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact, Sub *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Contact *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = @ContactID " : "ContactID IN (@ContactID, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ContactID", ContactID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Group, Sub, Prod and VarM ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = @ProductGroupID " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductGroupID", ProductGroupID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Sub, Prod and VariationMatrix ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID =0 " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Prod and VariationMatrix ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to VariationsMatrix ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = @VariationMatrixID " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@VariationMatrixID", VariationMatrixID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to group, Sub, Prod ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = @ProductGroupID " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductGroupID", ProductGroupID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Sub, Prod ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to group, Sub, Prod and VariationMatrix ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = @ProductID " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductID", ProductID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to group, Sub ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = @ProductGroupID " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductGroupID", ProductGroupID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to Sub ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = @ProductSubGroupID " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductSubGroupID", ProductSubGroupID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to group ID *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = @ProductGroupID " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);
                cmd.Parameters.AddWithValue("@ProductGroupID", ProductGroupID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

                /*******************************Up to all *****************************/
                SQL = "SELECT " +
                            "PromoBySupplierItemsID, " +
                            "a.PromoBySupplierID, " +
                            "ProductGroupID, " +
                            "ProductSubGroupID, " +
                            "ProductID,  " +
                            "VariationMatrixID, " +
                            "PromoBySupplierValue,  " +
                            "CouponRemarks  " +
                        "FROM tblPromoBySupplierItems a  " +
                        "INNER JOIN tblPromoBySupplier b ON a.PromoBySupplierID = b.PromoBySupplierID AND a.PromoBySupplierID = @PromoBySupplierID " +
                        "WHERE " + (string.IsNullOrEmpty(strSpecialSupplierIDs) ? "ContactID = 0 " : "ContactID IN (0, " + strSpecialSupplierIDs + ") ") +
                            "AND ProductGroupID = 0 " +
                            "AND ProductSubGroupID = 0 " +
                            "AND ProductID = 0 " +
                            "AND VariationMatrixID = 0 " +
                            "AND Status = 1 " +
                            "AND DATE_FORMAT(StartDate, '%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') " +
                            "AND DATE_FORMAT(EndDate, '%Y-%m-%d %H:%i') >= DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i') ORDER BY PromoBySupplierValue ASC LIMIT 1;";

                cmd = new MySqlCommand();
                cmd.CommandType = System.Data.CommandType.Text;

                cmd.Parameters.AddWithValue("@PromoBySupplierID", clsPromoBySupplierDetails.PromoBySupplierID);

                cmd.CommandText = SQL;
                dt = new System.Data.DataTable(strDataTableName);
                base.MySqlDataAdapterFill(cmd, dt);

                foreach (System.Data.DataRow dr in dt.Rows)
                {
                    PromoBySupplierValue = decimal.Parse(dr["PromoBySupplierValue"].ToString());
                    CouponRemarks = dr["CouponRemarks"].ToString();
                    return boHasPromoBySupplier;
                }

            }
            catch (Exception ex)
            {
                base.ThrowException(ex);
            }
			return false;
		}