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; } } }
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); }