public List <Discount> GetDiscountById(int articleId)
        {
            List <Discount> discounts = new List <Discount>();

            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();

                SqlCommand cmd = new SqlCommand("PS_GetDiscountByArticleId", conn);

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@articleId", articleId));
                using (SqlDataReader rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        var discount = new DiscountDAL();
                        discount.ArticleId = (int)rdr["ArticleId"];
                        discount.DiscoutId = (int)rdr["DiscoutId"];
                        discount.StartDate = (DateTime)rdr["StartDate"];
                        discount.EndDate   = (DateTime)rdr["EndDate"];
                        discount.Percent   = (int)rdr["Percent"];
                        discounts.Add(discount.ToDomain());
                    }
                }
            }
            return(discounts);
        }
Ejemplo n.º 2
0
        //1. 先過濾此商品是否存在黑名單
        public static bool GetProdBlackWhite(string prod_no)
        {
            var  obj     = new JObject();
            bool isBlack = false;

            try {
                //所有的黑名單
                obj = DiscountDAL.GetBlackList();

                List <DiscountModel> dm = ((JArray)obj["Table"]).
                                          Select(x => new DiscountModel {
                    black_prod_no = (string)x["prod_no"]
                }).ToList();

                if (dm.Where(x => x.black_prod_no.Equals(prod_no)).Count() == 1)
                {
                    //表示該商品存在於黑名單中  移除Search list裡的商品
                    isBlack = true;
                }
            } catch (Exception ex) {
                Website.Instance.logger.FatalFormat($"getBlackLst  Error :{ex.Message},{ex.StackTrace}");

                throw ex;
            }

            return(isBlack);
        }
Ejemplo n.º 3
0
        //取得明細清單
        public List <B2dDiscountDtl> GetDiscountDtls(Int64 mst_xid, string filter, int skip, int size, string sorting)
        {
            var _filter  = string.Empty;
            var _sorting = string.Empty;

            var dtl_list = DiscountDAL.GetDiscountDtls(mst_xid, _filter, skip, size, _sorting);

            return(dtl_list);
        }
Ejemplo n.º 4
0
        //取得折扣項目清單
        public List <B2dDiscountMst> GetDiscountMsts(string filter, int skip, int size, string sorting)
        {
            var _filter  = GetFieldFiltering(filter);
            var _sorting = GetFieldSorting(sorting);

            var disc_list = DiscountDAL.GetDiscountMsts(_filter, skip, size, _sorting);

            disc_list.ForEach(d => {
                d.STATUS_DESC = d.STATUS.Equals("01") ? _localizer.Text.Enable : _localizer.Text.Disable;
            });

            return(disc_list);
        }
Ejemplo n.º 5
0
        public static List <Discount> GetAllData()
        {
            var dal        = new DiscountDAL();
            var collection = new List <Discount>();

            foreach (DataRow row in dal.GetAllData().Rows)
            {
                var instance = new Discount();
                instance.Bind(row);

                collection.Add(instance);
            }

            return(collection);
        }
Ejemplo n.º 6
0
        //取得語系價格清單
        public List <B2dDiscountCurrAmt> GetDiscountCurrAmts(Int64 mst_xid, string filter, int skip, int size, string sorting)
        {
            var _filter  = string.Empty;
            var _sorting = string.Empty;

            var locale    = _httpContextAccessor.HttpContext.User.FindFirst("Locale").Value;
            var currenies = _commRepos.GetCurrencies(locale);

            var curramt_list = DiscountDAL.GetDiscountCurrAmts(mst_xid, _filter, skip, size, _sorting);

            curramt_list.ForEach(c =>
            {
                c.CURRENCY_DESC = currenies[c.CURRENCY];
            });

            return(curramt_list);
        }
Ejemplo n.º 7
0
 //取得語系加減價模組
 public B2dDiscountCurrAmt GetDiscountCurrAmt(Int64 xid)
 {
     return(DiscountDAL.GetDiscountCurrAmt(xid));
 }
Ejemplo n.º 8
0
        //取得語系價格總筆數
        public int GetDiscountCurrAmtCount(Int64 mst_xid, string filter)
        {
            var _filter = string.Empty;

            return(DiscountDAL.GetDiscountCurrAmtCount(mst_xid, _filter));
        }
Ejemplo n.º 9
0
 public void RemvoeDtl(Int64 xid, string del_user)
 {
     DiscountDAL.DeleteDiscountDtl(xid, del_user);
 }
Ejemplo n.º 10
0
        //2. 套價規則
        public static double GetCompanyDiscPrice(Int64 company_xid, double b2d_price, string prod_no, string prod_type, ref DiscountRuleModel disc)
        {
            var objRules = new JObject();
            List <DataModel.Discount.Rule> ruList = new List <DataModel.Discount.Rule>();

            //prod_no = "2246";
            //prod_type = "M06";

            try
            {
                DataModel.Discount.Rule rule = null;

                //此分銷商的折扣規則
                objRules = DiscountDAL.GetDiscRuleList(company_xid);

                //當初最原始牌價
                rule            = new DataModel.Discount.Rule();
                rule.disc_price = b2d_price;
                rule.mst_xid    = null;
                rule.disc_name  = null;
                ruList.Add(rule);


                if (objRules["Table"] != null)
                {
                    //找出不限的規則
                    var all_list = objRules["Table"].Where(y => y["rule_status"].ToString() == "00");

                    foreach (var item in all_list)
                    {
                        rule              = new DataModel.Discount.Rule();
                        rule.mst_xid      = (string)item["xid"];
                        rule.disc_percent = (double)item["disc_percent"];
                        rule.amt          = (double)item["amt"];
                        rule.disc_price   = System.Math.Round((b2d_price * (1 + rule.disc_percent / 100)) + rule.amt, MidpointRounding.AwayFromZero);
                        rule.disc_name    = (string)item["disc_name"];
                        ruList.Add(rule);
                    }

                    //找出有規定黑白名單條件的規則
                    var rules = objRules["Table"].Where(y => y["rule_status"].ToString() == "01" &&
                                                        (y["main_cat_wb"].ToString().Contains(prod_type + "^0") || (y["main_cat_wb"].ToString().Contains("^1") && !y["main_cat_wb"].ToString().Contains(prod_type + "^1"))) && //(符合白名單)|| (確定是黑名單&&不符合黑名單)  也算白名單
                                                        (y["prod_no_wb"].ToString().Contains(prod_no + "^0") || (y["prod_no_wb"].ToString().Contains("^1") && !y["prod_no_wb"].ToString().Contains(prod_no + "^1")))           //符合白名單 不符合黑名單 也算白名單
                                                                                                                                                                                                                               //!y["main_cat_wb"].ToString().Contains(prod_type + "^1") && !y["prod_no_wb"].ToString().Contains(prod_no + "^1")//符合黑名單 不符合白名單 也算黑名單
                                                        );
                    foreach (var item in rules)
                    {
                        rule              = new DataModel.Discount.Rule();
                        rule.mst_xid      = (string)item["xid"];
                        rule.disc_percent = (double)item["disc_percent"];
                        rule.amt          = (double)item["amt"];
                        rule.disc_price   = System.Math.Round((b2d_price * (1 + rule.disc_percent / 100)) + rule.amt, MidpointRounding.AwayFromZero);
                        rule.disc_name    = (string)item["disc_name"];
                        rule.currency     = (string)item["currency"];
                        rule.disc_dtl_xid = (string)item["disc_dtl_xid"];
                        ruList.Add(rule);
                    }
                }
                //套價規則排序 取最低價
                ruList = ruList.OrderBy(x => x.disc_price).ToList();

                if (disc == null) // 第一次進入才需要紀錄 折扣資訊 避免 price1 price2 price3 price4 記錄了4次
                {
                    disc = new DiscountRuleModel();

                    if (ruList[0].mst_xid == null)
                    {
                        disc.isRule       = false;
                        disc.disc_xid     = null;
                        disc.disc_name    = null;
                        disc.disc_percent = null;
                        disc.amt          = null;
                        disc.currency     = null;
                        disc.disc_dtl_xid = null;
                    }

                    else
                    {
                        disc.isRule       = true;
                        disc.disc_xid     = ruList[0].mst_xid;
                        disc.disc_name    = ruList[0].disc_name;
                        disc.disc_percent = ruList[0].disc_percent;
                        disc.amt          = ruList[0].amt;
                        disc.currency     = ruList[0].currency;
                        disc.disc_dtl_xid = ruList[0].disc_dtl_xid;
                    }
                }

                Website.Instance.logger.Info($"B2D套價規則 COMPANY_XID:{company_xid},PROD_NO:,{prod_no},XID:{ruList[0].mst_xid},DISC_PERCENT:{ruList[0].disc_percent},DISC_AMT:{ruList[0].amt}");
            }
            catch (Exception ex)
            {
                Website.Instance.logger.FatalFormat($"getDiscPrice  Error :{ex.Message},{ex.StackTrace}");
                throw ex;
            }

            return(ruList[0].disc_price);
        }
Ejemplo n.º 11
0
 public void RemvoeCurrAmt(Int64 xid, string del_user)
 {
     DiscountDAL.DeleteDiscountCurrAmnt(xid, del_user);
 }
Ejemplo n.º 12
0
 public void UpdateMst(B2dDiscountMst mst, string upd_user)
 {
     DiscountDAL.UpdateDiscountMst(mst, upd_user);
 }
Ejemplo n.º 13
0
 public void InsertMst(B2dDiscountMst mst, string crt_user)
 {
     DiscountDAL.InsertDiscountMst(mst, crt_user);
 }
Ejemplo n.º 14
0
 public B2dDiscountMst GetDiscountMst(Int64 xid)
 {
     return(DiscountDAL.GetDiscountMst(xid));
 }
Ejemplo n.º 15
0
        public static bool InsertNewDiscount(Discount instance)
        {
            var dal = new DiscountDAL();

            return(dal.InsertNewDiscount(instance));
        }
Ejemplo n.º 16
0
 public void InsertCurrAmt(B2dDiscountCurrAmt curr_amt, string crt_user)
 {
     DiscountDAL.InsertDiscountCurrAmnt(curr_amt, crt_user);
 }
Ejemplo n.º 17
0
 public void UpdateCurrAmt(B2dDiscountCurrAmt curr_amt, string upd_user)
 {
     DiscountDAL.UpdateDiscountCurrAmnt(curr_amt, upd_user);
 }
Ejemplo n.º 18
0
 public B2dDiscountDtl GetDiscountDtl(Int64 xid)
 {
     return(DiscountDAL.GetDiscountDtl(xid));
 }
Ejemplo n.º 19
0
        //取得折扣項目總筆數
        public int GetDiscountMstCount(string filter)
        {
            var _filter = GetFieldFiltering(filter);

            return(DiscountDAL.GetDiscountMstCount(_filter));
        }
Ejemplo n.º 20
0
 public void InsertDtl(B2dDiscountDtl dtl, string crt_user)
 {
     DiscountDAL.InsertDiscountDtl(dtl, crt_user);
 }
Ejemplo n.º 21
0
 /* Constructor */
 public DiscountBLL()
 {
     discountDAL  = new DiscountDAL();
     DiscountList = discountDAL.GetDiscounts();
 }
Ejemplo n.º 22
0
 public void UpdateDtl(B2dDiscountDtl dtl, string upd_user)
 {
     DiscountDAL.UpdateDiscountDtl(dtl, upd_user);
 }