Пример #1
0
        public virtual void DeleteSaleDetail(CreditSaleDetail creditSaleDetail)
        {
            #region فاکتور بسته نشده باشد

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

            #endregion

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

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

            #endregion

            // حذف آیتم مورد نظر
            this.CreditSaleDetails.Remove(creditSaleDetail);
        }
Пример #2
0
        public virtual void AddSaleDetail(CreditSaleDetail creditSaleDetail)
        {
            #region اگر تخفیف از حد مجاز بیشتر بود، به اندازه حداکثر شود

            if (creditSaleDetail.Discount > creditSaleDetail.CreditService.MaxDiscount)
            {
                creditSaleDetail.Discount = creditSaleDetail.CreditService.MaxDiscount;
            }

            #endregion

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

            if (CreditSaleDetails.Contains(creditSaleDetail))
            {
                CreditSaleDetails.FirstOrDefault(w => w == creditSaleDetail).Units    += creditSaleDetail.Units;
                CreditSaleDetails.FirstOrDefault(w => w == creditSaleDetail).Discount += creditSaleDetail.Discount;
            }

            #endregion

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

            else
            {
                creditSaleDetail.Sale = this;
                CreditSaleDetails.Add(creditSaleDetail);
            }

            #endregion
        }