/// <summary> /// 获取随心配Item的折扣 /// </summary> /// <param name="queryEntity"></param> /// <returns></returns> private decimal GetOptionalAccessoriesDiscountByItem(OptionalAccessoriesItem _item) { List <OptionalAccessoriesItem> _itemListTmp = null; decimal _totalGrossTmp = 0m; int cnt = 0; #region 获取商品所在随心配毛利 //当前Item所在规则中的所有Item _itemListTmp = _da.GetOptionalAccessoriesItemListByOASysNo(_item.OptionalAccessoriesSysNo.Value); //当前规则的主商品数量 cnt = _itemListTmp.Where(o => o.IsMasterItemB.Value).Count(); if (cnt > 0) { if (_item.IsMasterItemB.Value) { _totalGrossTmp = _itemListTmp.Where(o => !o.IsMasterItemB.Value) .Select(o => o.Discount.Value * (1 - o.DiscountPercent.Value)).Sum() / cnt; } else { _totalGrossTmp = _itemListTmp.Where(o => o.ProductSysNo == _item.ProductSysNo) .Select(o => o.Discount.Value * o.DiscountPercent.Value).Sum(); } } #endregion return(Math.Abs(_totalGrossTmp)); }
public virtual int AddOptionalAccessoriesItem(OptionalAccessoriesItem item) { DataCommand cmd = DataCommandManager.GetDataCommand("AddOptionalAccessoriesItem"); cmd.SetParameterValue("@SaleRuleSysNo", item.OptionalAccessoriesSysNo); cmd.SetParameterValue("@ProductSysNo", item.ProductSysNo); cmd.SetParameterValue("@Quantity", item.Quantity); cmd.SetParameterValue("@Discount", item.Discount); cmd.SetParameterValue("@IsMasterItem", item.IsMasterItemB.Value ? 1 : 0); cmd.SetParameterValue("@DiscountPercent", item.DiscountPercentVal); cmd.SetParameterValue("@Priority", item.Priority); cmd.ExecuteNonQuery(); item.SysNo = (int)cmd.GetParameterValue("@SysNo"); return(item.SysNo.Value); }
/// <summary> /// Check毛利率提交审核 /// </summary> /// <param name="item"></param> /// <returns></returns> public virtual bool CheckMarginIsPass(OptionalAccessoriesItem item) { string returnMsgStr = string.Empty; var productInfo = ExternalDomainBroker.GetProductInfo(item.ProductSysNo.Value); ProductPriceRequestInfo priceMsg = new ProductPriceRequestInfo() { CurrentPrice = productInfo.ProductPriceInfo.CurrentPrice, UnitCost = productInfo.ProductPriceInfo.UnitCost, Point = productInfo.ProductPriceInfo.Point, Category = productInfo.ProductBasicInfo.ProductCategoryInfo }; var _discount = this.GetOptionalAccessoriesDiscountByItem(item); List <ProductPromotionMarginInfo> marginList = ObjectFactory <IIMBizInteract> .Instance.GetProductPromotionMargin( priceMsg, item.ProductSysNo.Value, "", _discount, ref returnMsgStr); //return marginList != null && marginList.Where(m => m.PromotionType == PromotionType.OptionalAccessories).Count() > 0; return(!string.IsNullOrEmpty(returnMsgStr)); }