Exemplo n.º 1
0
        public virtual void DeleteSaleDetail(ProductSaleDetail productSaleDetail)
        {
            #region فاکتور بسته نشده باشد

            if (productSaleDetail.Sale.Closed == true)
            {
                _bussinessRules.Add(SaleBusinessRules.SaleClosed);
                return;
            }

            #endregion

            #region فاکتور برگشت از فروش نباشد

            if (productSaleDetail.Sale.IsRollbackSale == true)
            {
                _bussinessRules.Add(SaleBusinessRules.ThisIsRollbackAndCantDelete);
                return;
            }

            #endregion

            // حذف آیتم مورد نظر
            this.ProductSaleDetails.Remove(productSaleDetail);
        }
Exemplo n.º 2
0
        public virtual void AddSaleDetail(ProductSaleDetail productSaleDetail)
        {
            #region اگر تخفیف از حد مجاز بیشتر بود، به اندازه حداکثر شود

            if (productSaleDetail.Discount > productSaleDetail.ProductPrice.MaxDiscount)
            {
                productSaleDetail.Discount = productSaleDetail.ProductPrice.MaxDiscount;
            }

            #endregion

            #region اگر آیتم تکراری وارد شد، فقط تعداد و تخفیف آیتم موجود آپدیت شود

            if (ProductSaleDetails.Contains(productSaleDetail))
            {
                ProductSaleDetails.FirstOrDefault(w => w == productSaleDetail).Units    += productSaleDetail.Units;
                ProductSaleDetails.FirstOrDefault(w => w == productSaleDetail).Discount += productSaleDetail.Discount;
            }

            #endregion

            #region در غیر اینصورت آیتم ذخیره شود

            else
            {
                productSaleDetail.Sale = this;
                ProductSaleDetails.Add(productSaleDetail);
            }

            #endregion
        }