Пример #1
0
        public GetProductSaleDetailResponse GetProductSaleDetail(GetRequest request)
        {
            GetProductSaleDetailResponse response = new GetProductSaleDetailResponse();

            try
            {
                ProductSaleDetail productSaleDetail = new ProductSaleDetail();
                //ProductSaleDetailView productSaleDetailView = new ProductSaleDetailView();

                productSaleDetail = _productSaleDetailRepository.FindBy(request.ID);
                if (productSaleDetail != null)
                {
                    ProductSaleDetailView productSaleDetailView = productSaleDetail.ConvertToProductSaleDetailView();

                    response.ProductSaleDetailView = productSaleDetailView;
                }
            }
            catch (Exception ex)
            {
            }

            return(response);
        }
Пример #2
0
        private ProductSaleDetail GetProductSales(string productID, List <LineItemDetailData> lineItemList)
        {
            var result = new ProductSaleDetail();

            if (!lineItemList.HasItem())
            {
                return(result);
            }

            List <LineItemDetailData> twelveMonthLineItems = lineItemList?.Where(x => x.Data.LineItems.Any(y => y.Product.ID == productID)).ToList();

            List <LineItemDetailData> sixMonthLineItems   = twelveMonthLineItems.Where(x => x.Data.Order.DateCreated > DateTime.Now.AddMonths(-6)).ToList();
            List <LineItemDetailData> threeMonthLineItems = twelveMonthLineItems.Where(x => x.Data.Order.DateCreated > DateTime.Now.AddMonths(-3)).ToList();

            //3MO sales
            foreach (LineItemDetailData lineItemDetail in threeMonthLineItems)
            {
                result.ThreeMonthQuantity = lineItemDetail.Data.LineItems.Sum(x => x.Quantity);
                result.ThreeMonthTotal    = lineItemDetail.Data.LineItems.Sum(x => x.LineSubtotal);
            }

            //6MO sales
            foreach (LineItemDetailData lineItemDetail in sixMonthLineItems)
            {
                result.SixMonthQuantity = lineItemDetail.Data.LineItems.Sum(x => x.Quantity);
                result.SixMonthTotal    = lineItemDetail.Data.LineItems.Sum(x => x.LineSubtotal);
            }

            //12MO sales
            foreach (LineItemDetailData lineItemDetail in twelveMonthLineItems)
            {
                result.TwelveMonthQuantity = lineItemDetail.Data.LineItems.Sum(x => x.Quantity);
                result.TwelveMonthTotal    = lineItemDetail.Data.LineItems.Sum(x => x.LineSubtotal);
            }

            return(result);
        }
Пример #3
0
        public GetGeneralResponse <IEnumerable <GetSaleDetailReportView> > GetSaleReport(IList <FilterData> filters)
        {
            GetGeneralResponse <IEnumerable <GetSaleDetailReportView> > response =
                new GetGeneralResponse <IEnumerable <GetSaleDetailReportView> >();

            string query = FilterUtilityService.GenerateFilterHQLQuery(filters, "ProductSaleDetail", null);

            Response <ProductSaleDetail> productSaleDetails = _productSaleDetailRepository.FindAll(query);

            IList <GetSaleDetailReportView> Report = new List <GetSaleDetailReportView>();

            foreach (ProductSaleDetail _productSaleDetail in productSaleDetails.data)
            {
                GetSaleDetailReportView item = new GetSaleDetailReportView();
                item.ADSLPhone  = _productSaleDetail.Sale.Customer.ADSLPhone;
                item.CenterName = _productSaleDetail.Sale.Customer.Center == null
                    ? ""
                    : _productSaleDetail.Sale.Customer.Center.CenterName;
                item.Name             = _productSaleDetail.Sale.Customer.Name;
                item.ProductPriceName = _productSaleDetail.ProductPrice.ProductPriceTitle;
                item.ProductName      = _productSaleDetail.ProductPrice.Product.ProductName;
                item.BonusDate        = _productSaleDetail.BonusDate;
                item.ComissionDate    = _productSaleDetail.ComissionDate;

                if (_productSaleDetail.IsRollbackDetail)
                {
                    item.Bonus     = _productSaleDetail.Bonus;
                    item.Comission = _productSaleDetail.Comission;

                    item.DeliverDate         = _productSaleDetail.MainSaleDetail.DeliverDate;
                    item.DeliverEmployeeName = _productSaleDetail.MainSaleDetail.DeliverEmployee == null
                        ? ""
                        : (string)_productSaleDetail.MainSaleDetail.DeliverEmployee.Name;
                    item.Discount             = _productSaleDetail.MainSaleDetail.LineDiscount;
                    item.Imposition           = _productSaleDetail.MainSaleDetail.LineImposition;
                    item.Price                = _productSaleDetail.MainSaleDetail.UnitPrice;
                    item.Count                = _productSaleDetail.MainSaleDetail.Units;
                    item.RollBackEmployeeName = _productSaleDetail.CreateEmployee.Name;
                    item.RollBackPrice        = _productSaleDetail.RollbackPrice;
                    item.RoolBackDate         = _productSaleDetail.CreateDate;
                    item.SaleDate             = _productSaleDetail.MainSaleDetail.CreateDate;
                    item.Total                = _productSaleDetail.LineTotal;
                    item.TotalRollBack        = _productSaleDetail.Units;
                    item.SaleEmployeeName     = _productSaleDetail.MainSaleDetail.CreateEmployee.Name;
                }
                else
                {
                    item.Bonus     = _productSaleDetail.Bonus;
                    item.Comission = _productSaleDetail.Comission;

                    item.DeliverDate         = _productSaleDetail.DeliverDate;
                    item.DeliverEmployeeName = _productSaleDetail.DeliverEmployee == null
                        ? ""
                        : (string)_productSaleDetail.DeliverEmployee.Name;
                    item.Discount         = _productSaleDetail.LineDiscount;
                    item.Imposition       = _productSaleDetail.LineImposition;
                    item.Price            = _productSaleDetail.UnitPrice;
                    item.Count            = _productSaleDetail.Units;
                    item.SaleDate         = _productSaleDetail.CreateDate;
                    item.Total            = _productSaleDetail.LineTotal;
                    item.SaleDate         = _productSaleDetail.Sale.CreateDate;
                    item.SaleEmployeeName = _productSaleDetail.CreateEmployee.Name;
                    item.CustomerID       = _productSaleDetail.Sale.Customer.ID;

                    if (_productSaleDetail.Rollbacked)
                    {
                        Infrastructure.Querying.Query q = new Query();
                        Criterion crt = new Criterion("MainSaleDetail.ID", _productSaleDetail.ID, CriteriaOperator.Equal);
                        q.Add(crt);
                        ProductSaleDetail RollbakedProductSaleDetail = _productSaleDetailRepository.FindBy(q).FirstOrDefault();
                        if (RollbakedProductSaleDetail != null)
                        {
                            item.RollBackEmployeeName = RollbakedProductSaleDetail.CreateEmployee.Name;
                            item.RollBackPrice        = RollbakedProductSaleDetail.LineTotal;
                            item.RoolBackDate         = RollbakedProductSaleDetail.CreateDate;
                            item.TotalRollBack        = RollbakedProductSaleDetail.Units;
                        }
                    }
                }
                Report.Add(item);
            }
            response.data       = Report;
            response.totalCount = Report.Count();
            return(response);
        }
Пример #4
0
 public static ProductSaleDetailView ConvertToProductSaleDetailView(this ProductSaleDetail productSaleDetail)
 {
     return(Mapper.Map <ProductSaleDetail, ProductSaleDetailView>(productSaleDetail));
 }
Пример #5
0
        public GeneralResponse DoCourierAction(Guid CourierID, int CourierStatuse, string ExpertComment, Guid CourierEmployeeID, Guid ModifiedEmployeeID)
        {
            GeneralResponse response = new GeneralResponse();

            try
            {
                Courier courier = new Courier();
                courier = _courierRepository.FindBy(CourierID);
                if (courier.CourierStatuse == Courier.CourierStatuses.Confirmed)
                {
                    response.ErrorMessages.Add("این اعزام پیک تایید شده است.  لذا دیگر قادر به تغییر وضعیت آن نیستید");
                    return(response);
                }

                courier.ExpertComment    = ExpertComment;
                courier.CourierStatuse   = (Courier.CourierStatuses)CourierStatuse;
                courier.ModifiedDate     = PersianDateTime.Now;
                courier.ModifiedEmployee = _employeeRepository.FindBy((ModifiedEmployeeID));
                courier.CourierEmployee  = _courierEmployeeRepository.FindBy(CourierEmployeeID);

                #region Add Courier To Bonus An Comissions

                if ((Courier.CourierStatuses)CourierStatuse == Courier.CourierStatuses.Confirmed)
                {
                    //برای خدمات غیر اعتباری
                    foreach (var item in courier.Sale.UncreditSaleDetails.Where(x => x.Rollbacked == false))
                    {
                        Query     query = new Query();
                        Criterion UncreditSaleDetailID = new Criterion("ID", item.ID,
                                                                       CriteriaOperator.Equal);
                        query.Add(UncreditSaleDetailID);
                        UncreditSaleDetail unCreditSaleDetail = _uncreditSaleDetailRepository.FindBy(query).FirstOrDefault();
                        if (unCreditSaleDetail != null)
                        {
                            unCreditSaleDetail.BonusDate = PersianDateTime.Now;

                            _uncreditSaleDetailRepository.Save(unCreditSaleDetail);
                        }
                    }

                    //برای خدمات  اعتباری
                    foreach (var item in courier.Sale.CreditSaleDetails.Where(x => x.Rollbacked == false))
                    {
                        Query     query = new Query();
                        Criterion UncreditSaleDetailID = new Criterion("ID", item.ID,
                                                                       CriteriaOperator.Equal);
                        query.Add(UncreditSaleDetailID);
                        CreditSaleDetail creditSaleDetail = _creditSaleDetailRepository.FindBy(query).FirstOrDefault();
                        if (creditSaleDetail != null)
                        {
                            creditSaleDetail.BonusDate = PersianDateTime.Now;
                            _creditSaleDetailRepository.Save(creditSaleDetail);
                        }
                    }

                    //برای کالاها
                    foreach (var item in courier.Sale.ProductSaleDetails.Where(x => x.Rollbacked == false))
                    {
                        Query     query = new Query();
                        Criterion UncreditSaleDetailID = new Criterion("ID", item.ID,
                                                                       CriteriaOperator.Equal);
                        query.Add(UncreditSaleDetailID);
                        ProductSaleDetail productsaleDetail = _productSaleDetailRepository.FindBy(query).FirstOrDefault();
                        if (productsaleDetail != null)
                        {
                            productsaleDetail.BonusDate = PersianDateTime.Now;
                            _productSaleDetailRepository.Save(productsaleDetail);
                        }
                    }
                }

                #endregion

                _courierRepository.Save(courier);

                _uow.Commit();
            }
            catch (Exception ex)
            {
                response.ErrorMessages.Add(ex.Message);
                if (ex.InnerException != null)
                {
                    response.ErrorMessages.Add(ex.InnerException.Message);
                }
            }

            return(response);
        }