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); }
//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); }
//取得明細清單 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); }
//取得折扣項目清單 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); }
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); }
//取得語系價格清單 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); }
//取得語系加減價模組 public B2dDiscountCurrAmt GetDiscountCurrAmt(Int64 xid) { return(DiscountDAL.GetDiscountCurrAmt(xid)); }
//取得語系價格總筆數 public int GetDiscountCurrAmtCount(Int64 mst_xid, string filter) { var _filter = string.Empty; return(DiscountDAL.GetDiscountCurrAmtCount(mst_xid, _filter)); }
public void RemvoeDtl(Int64 xid, string del_user) { DiscountDAL.DeleteDiscountDtl(xid, del_user); }
//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); }
public void RemvoeCurrAmt(Int64 xid, string del_user) { DiscountDAL.DeleteDiscountCurrAmnt(xid, del_user); }
public void UpdateMst(B2dDiscountMst mst, string upd_user) { DiscountDAL.UpdateDiscountMst(mst, upd_user); }
public void InsertMst(B2dDiscountMst mst, string crt_user) { DiscountDAL.InsertDiscountMst(mst, crt_user); }
public B2dDiscountMst GetDiscountMst(Int64 xid) { return(DiscountDAL.GetDiscountMst(xid)); }
public static bool InsertNewDiscount(Discount instance) { var dal = new DiscountDAL(); return(dal.InsertNewDiscount(instance)); }
public void InsertCurrAmt(B2dDiscountCurrAmt curr_amt, string crt_user) { DiscountDAL.InsertDiscountCurrAmnt(curr_amt, crt_user); }
public void UpdateCurrAmt(B2dDiscountCurrAmt curr_amt, string upd_user) { DiscountDAL.UpdateDiscountCurrAmnt(curr_amt, upd_user); }
public B2dDiscountDtl GetDiscountDtl(Int64 xid) { return(DiscountDAL.GetDiscountDtl(xid)); }
//取得折扣項目總筆數 public int GetDiscountMstCount(string filter) { var _filter = GetFieldFiltering(filter); return(DiscountDAL.GetDiscountMstCount(_filter)); }
public void InsertDtl(B2dDiscountDtl dtl, string crt_user) { DiscountDAL.InsertDiscountDtl(dtl, crt_user); }
/* Constructor */ public DiscountBLL() { discountDAL = new DiscountDAL(); DiscountList = discountDAL.GetDiscounts(); }
public void UpdateDtl(B2dDiscountDtl dtl, string upd_user) { DiscountDAL.UpdateDiscountDtl(dtl, upd_user); }