Example #1
0
        /// <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));
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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));
        }