Ejemplo n.º 1
0
        private void CaculateCostForAnProduct(OrderDetailModel orderDetailModel, out decimal defaultPrice, out decimal totalCost, out decimal extraFeeCost)
        {
            defaultPrice = 0;
            totalCost    = 0;
            extraFeeCost = 0;
            var amount = 0;

            if (orderDetailModel.Amount > 503)
            {
                amount = orderDetailModel.Amount - 5;
            }
            else
            {
                amount = orderDetailModel.Amount - 3;
            }
            var product     = _productRepository.GetById(orderDetailModel.ProductId);
            var rateMapping = _rateMappingRepository.Search("").FirstOrDefault(p => p.MyOfficeId == OrderSession.MyOfficeId && p.ProductId == orderDetailModel.ProductId);

            if (rateMapping != null)
            {
                totalCost   += amount * rateMapping.Price;
                defaultPrice = rateMapping.Price;
                if (orderDetailModel.PrintIncludeImage && product.Printable)
                {
                    totalCost    += amount * rateMapping.PrintingIncludeImagePrice;
                    defaultPrice += rateMapping.PrintingIncludeImagePrice;
                }
                if (orderDetailModel.PrintWithoutImage && product.Printable)
                {
                    totalCost    += amount * rateMapping.PrintingWithoutImagePrice;
                    defaultPrice += rateMapping.PrintingWithoutImagePrice;
                }
            }
            else
            {
                totalCost   += amount * product.DefaultPrice;
                defaultPrice = product.DefaultPrice;
                if (orderDetailModel.PrintIncludeImage && product.Printable)
                {
                    totalCost    += amount * product.DefaultPrintingIncludeImagePrice;
                    defaultPrice += product.DefaultPrintingIncludeImagePrice;
                }
                if (orderDetailModel.PrintWithoutImage && product.Printable)
                {
                    totalCost    += amount * product.DefaultPrintingWithoutImagePrice;
                    defaultPrice += product.DefaultPrintingWithoutImagePrice;
                }
            }
            //Add extra fee
            if (product.Printable)
            {
                var extraFee = _extraFeeRepository.GetAll().FirstOrDefault(p => p.AmountFrom < amount && amount < p.AmountTo && p.IsDeleted == false);
                if (extraFee != null)
                {
                    extraFeeCost += extraFee.Cost;
                    totalCost    += extraFee.Cost;
                }
            }
        }
Ejemplo n.º 2
0
        public decimal GetOrgiranalCostForAnOrder(Order order)
        {
            decimal totalCost = 0;

            //Caculate all order details
            foreach (var orderDetailModel in order.OrderDetails)
            {
                var amount = 0;
                if (orderDetailModel.Amount > 503)
                {
                    amount = orderDetailModel.Amount - 5;
                }
                else
                {
                    amount = orderDetailModel.Amount - 3;
                }
                var product     = _productRepository.GetById(orderDetailModel.ProductId);
                var rateMapping = _rateMappingRepository.Search("").FirstOrDefault(p => p.MyOfficeId == order.MyOfficeId && p.ProductId == orderDetailModel.ProductId);
                if (rateMapping != null)
                {
                    totalCost += amount * rateMapping.OriginalPrice;
                    if (orderDetailModel.PrintIncludeImage && product.Printable)
                    {
                        totalCost += amount * rateMapping.OriginalPrintingIncludeImagePrice;
                    }
                    if (orderDetailModel.PrintWithoutImage && product.Printable)
                    {
                        totalCost += amount * rateMapping.OriginalPrintingWithoutImagePrice;
                    }
                }
                else
                {
                    totalCost += amount * product.DefaultOriginalPrice;
                    if (orderDetailModel.PrintIncludeImage && product.Printable)
                    {
                        totalCost += amount * product.DefaultOriginalPrintingIncludeImagePrice;
                    }
                    if (orderDetailModel.PrintWithoutImage && product.Printable)
                    {
                        totalCost += amount * product.DefaultOriginalPrintingWithoutImagePrice;
                    }
                }
                //Add extra fee
                if (product.Printable)
                {
                    var extraFee = _extraFeeRepository.GetAll().FirstOrDefault(p => p.AmountFrom < amount && amount < p.AmountTo && p.IsDeleted == false);
                    if (extraFee != null)
                    {
                        totalCost += extraFee.Cost;
                    }
                }
            }
            return(totalCost);
        }