/// <summary>
        /// 修改请购买数量
        /// </summary>
        /// <param name="product"></param>
        /// <param name="quantity"></param>
        /// <returns>0:成功 -1:购物车中不包括此产品 -2:已超可请购数量 -3:小于最小单次请购数量 -4:大于最大单次请购数量</returns>
        public int ModifyQuantity(int product, int quantity)
        {
            ORD_OrderCart cartitem = Items.FirstOrDefault(m => m.Product == product);

            if (cartitem == null)
            {
                return(-1);
            }

            cartitem.AvailableQuantity = cartitem.AvailableQuantity;
            cartitem.SubmitQuantity    = ORD_OrderApplyBLL.GetSubmitQuantity(_publish, product);

            if (cartitem.AvailableQuantity > 0 && quantity > cartitem.AvailableQuantity - cartitem.SubmitQuantity)
            {
                return(-2);
            }
            if (cartitem.MinQuantity > 0 && cartitem.MinQuantity > quantity || quantity < 0)
            {
                return(-3);
            }
            if (cartitem.MaxQuantity > 0 && cartitem.MaxQuantity < quantity)
            {
                return(-4);
            }

            cartitem.BookQuantity = quantity;

            return(0);
        }
        /// <summary>
        /// 向购物车中新增产品
        /// </summary>
        /// <param name="product"></param>
        /// <param name="price"></param>
        /// <returns>0:成功 -1:发布目录中不包括此产品 -2:已超可请购数量 -3:该产品已在购物车中 -4:该产品不在指定客户的价表中</returns>
        public int AddProduct(int product, decimal price)
        {
            if (Items.FirstOrDefault(m => m.Product == product) != null)
            {
                return(-3);
            }

            ORD_ApplyPublishDetail _m = new ORD_ApplyPublishBLL(_publish).Items.FirstOrDefault(m => m.Product == product);

            if (_m != null)
            {
                ORD_OrderCart cartitem = new ORD_OrderCart();
                cartitem.Product           = _m.Product;
                cartitem.MinQuantity       = _m.MinQuantity;
                cartitem.MaxQuantity       = _m.MaxQuantity;
                cartitem.Price             = price;
                cartitem.AvailableQuantity = _m.AvailableQuantity;
                cartitem.SubmitQuantity    = ORD_OrderApplyBLL.GetSubmitQuantity(_publish, product);

                cartitem.BookQuantity = cartitem.MinQuantity > 0 ? cartitem.MinQuantity : new PDT_ProductBLL(product).Model.ConvertFactor;

                if (cartitem.AvailableQuantity > 0 && cartitem.BookQuantity > cartitem.AvailableQuantity - cartitem.SubmitQuantity)
                {
                    return(-2);
                }

                _items.Add(cartitem);

                return(0);
            }
            return(-1);
        }
        /// <summary>
        /// 从购物车中移除产品
        /// </summary>
        /// <param name="product"></param>
        /// <returns></returns>
        public int RemoveProduct(int product)
        {
            ORD_OrderCart cartitem = Items.FirstOrDefault(m => m.Product == product);

            if (cartitem != null)
            {
                Items.Remove(cartitem);
            }

            return(0);
        }
        /// <summary>
        /// 根据请购买申请单重新初始化购物车
        /// </summary>
        /// <param name="ApplyID"></param>
        /// <returns></returns>
        public static ORD_OrderCartBLL InitByOrderApply(int ApplyID)
        {
            ORD_OrderApplyBLL apply = new ORD_OrderApplyBLL(ApplyID);

            if (apply.Model == null)
            {
                return(null);
            }

            ORD_ApplyPublishBLL publish = new ORD_ApplyPublishBLL(apply.Model.PublishID);

            if (publish.Model == null)
            {
                return(null);
            }
            int addressid = 0;

            int.TryParse(apply.Model["AddressID"], out addressid);
            ORD_OrderCartBLL cart = new ORD_OrderCartBLL(apply.Model.PublishID, apply.Model.OrganizeCity, apply.Model.Client, apply.Model.AccountMonth, addressid);

            foreach (ORD_OrderApplyDetail item in apply.Items)
            {
                ORD_ApplyPublishDetail _m = publish.Items.FirstOrDefault(m => m.Product == item.Product);
                if (_m == null)
                {
                    continue;
                }

                ORD_OrderCart cartitem = new ORD_OrderCart();
                cartitem.ID                = _m.ID;
                cartitem.Product           = _m.Product;
                cartitem.MinQuantity       = _m.MinQuantity;
                cartitem.MaxQuantity       = _m.MaxQuantity;
                cartitem.Price             = item.Price;
                cartitem.AvailableQuantity = _m.AvailableQuantity;
                cartitem.SubmitQuantity    = ORD_OrderApplyBLL.GetSubmitQuantity(cart.Publish, cartitem.Product);

                cartitem.BookQuantity = item.BookQuantity;

                cart.Items.Add(cartitem);
            }

            return(cart);
        }
Example #5
0
    private bool Save()
    {
        ORD_OrderCartBLL cart = null;

        if (Session["LogisticsOrderApplyDetail"] != null)
        {
            cart = (ORD_OrderCartBLL)Session["LogisticsOrderApplyDetail"];
        }

        if ((int)ViewState["ID"] == 0)
        {
            if (cart == null || cart.Items.Count == 0)
            {
                MessageBox.Show(this, "对不起,定单申请明细不能为空!");
                return(false);
            }

            ORD_OrderApplyBLL bll = new ORD_OrderApplyBLL();
            pn_OrderApply.GetData(bll.Model);

            #region 判断有没有填写经销商
            if (bll.Model.Client == 0)
            {
                MessageBox.Show(this, "对不起,请填写申请定购的经销商!");
                return(false);
            }
            #endregion

            #region 初始化定单字段
            bll.Model.OrganizeCity = cart.OrganizeCity;
            bll.Model.PublishID    = cart.Publish;
            bll.Model.AccountMonth = cart.AccountMonth;
            bll.Model.SheetCode    = ORD_OrderApplyBLL.GenerateSheetCode(bll.Model.OrganizeCity, bll.Model.AccountMonth); //自动产生备案号
            bll.Model.ApproveFlag  = 2;
            bll.Model.State        = 1;
            bll.Model.InsertStaff  = (int)Session["UserID"];
            bll.Model["AddressID"] = cart.AddressID.ToString();
            bll.Model["Receiver"]  = cart.Receiver.ToString();
            if (cart.Publish > 0)
            {
                ORD_ApplyPublish publish = new ORD_ApplyPublishBLL(cart.Publish).Model;
                if (publish != null)
                {
                    bll.Model["ProductBrand"] = publish["ProductBrand"];
                    bll.Model["GiftClassify"] = publish["GiftClassify"];
                }
            }
            #endregion

            ViewState["ID"] = bll.Add();

            #region 新增定单明细明细
            foreach (ORD_OrderCart cartitem in cart.Items)
            {
                if (cartitem.BookQuantity == 0)
                {
                    continue;
                }
                ORD_OrderApplyDetail m = new ORD_OrderApplyDetail();
                m.ApplyID          = (int)ViewState["ID"];
                m.Product          = cartitem.Product;
                m.Price            = cartitem.Price;
                m.BookQuantity     = cartitem.BookQuantity;
                m.AdjustQuantity   = 0;
                m.DeliveryQuantity = 0;

                bll.AddDetail(m);
            }
            #endregion
        }
        else
        {
            ORD_OrderApplyBLL bll = new ORD_OrderApplyBLL((int)ViewState["ID"]);
            pn_OrderApply.GetData(bll.Model);
            bll.Model.UpdateStaff = (int)Session["UserID"];
            bll.Update();

            #region 修改明细
            if (cart != null)
            {
                //先将现有定单中每个品项与购物中的比较
                //如果购物车中没有该产品,则删除,如有且数量不同,则更新,并从购物车中移除该品项
                foreach (ORD_OrderApplyDetail m in bll.Items)
                {
                    ORD_OrderCart cartitem = cart.Items.FirstOrDefault(p => p.Product == m.Product);
                    if (cartitem == null)
                    {
                        bll.DeleteDetail(m.ID);
                    }
                    else
                    {
                        if (cartitem.BookQuantity != m.BookQuantity)
                        {
                            m.BookQuantity = cartitem.BookQuantity;
                            bll.UpdateDetail(m);
                        }
                        cart.RemoveProduct(m.Product);
                    }
                }

                //新购物车中新增的品项加入定单明细中
                foreach (ORD_OrderCart cartitem in cart.Items)
                {
                    ORD_OrderApplyDetail m = new ORD_OrderApplyDetail();
                    m.ApplyID          = (int)ViewState["ID"];
                    m.Product          = cartitem.Product;
                    m.Price            = cartitem.Price;
                    m.BookQuantity     = cartitem.BookQuantity;
                    m.AdjustQuantity   = 0;
                    m.DeliveryQuantity = 0;

                    bll.AddDetail(m);
                }
            }
            #endregion
        }

        return(true);
    }