示例#1
0
        private TotalItem CreateTotalItem(ILineItem item, ICart cart)
        {
            var lineItemPrices = item.GetLineItemPrices(cart.Currency);

            //TODO: Implement taxes if they are needed per item. For taxes to work, order needs to have shipping adress set as the address is needed by epi to calculate tax.
            var totalItem = new TotalItem
            {
                ItemId                   = item.LineItemId,
                Price                    = item.PlacedPrice,
                BasePrice                = item.PlacedPrice,
                Qty                      = item.Quantity,
                RowTotal                 = item.Quantity * item.PlacedPrice,
                BaseRowTotal             = item.Quantity * item.PlacedPrice,
                RowTotalWithDiscount     = lineItemPrices.DiscountedPrice.Amount,
                TaxAmount                = 0,
                BaseTaxAmount            = 0,
                TaxPercent               = 0,
                DiscountAmount           = item.GetDiscountTotal(cart.Currency).Amount,
                BaseDiscountAmount       = item.GetDiscountTotal(cart.Currency).Amount,
                DiscountPercent          = 0,
                PriceIncludingTax        = 0,
                BasePriceIncludingTax    = 0,
                RowTotalIncludingTax     = item.Quantity * item.PlacedPrice,
                BaseRowTotalIncludingTax = item.Quantity * item.PlacedPrice,
                Options                  = "",
                WeeeTaxAppliedAmount     = null,
                WeeeTaxApplied           = null,
                Name                     = item.DisplayName,
                ProductOption            = new ProductOption()
            };

            return(totalItem);
        }
        public virtual OmniumOrderLine MapOrderLine(
            ILineItem lineItem, IMarket market, Currency currency, IOrderAddress address)
        {
            var marketId = market.MarketId;

            var taxTotal = _lineItemCalculator.GetSalesTax(lineItem, market, currency, address);
            var taxRate  = _taxUtility.GetTaxValue(marketId, address, TaxType.SalesTax, lineItem.TaxCategoryId);

            var placedPrice      = _taxUtility.GetPriceTax(lineItem, market, currency, address, lineItem.PlacedPrice);
            var discountedAmount = _taxUtility.GetPriceTax(lineItem, market, currency, address, lineItem.GetDiscountTotal(currency)); //all discounts (line item + coupon code)
            var extendedPrice    = _taxUtility.GetPriceTax(lineItem, market, currency, address, _lineItemCalculator.GetExtendedPrice(lineItem, currency));
            var discountedPrice  = _taxUtility.GetPriceTax(lineItem, market, currency, address, _lineItemCalculator.GetDiscountedPrice(lineItem, currency));

            var omniumOrderLine2 = new OmniumOrderLine
            {
                Code                   = lineItem.Code,
                ProductId              = GetProductCode(lineItem.Code),
                DisplayName            = lineItem.DisplayName,
                PlacedPrice            = placedPrice.PriceInclTax,
                PlacedPriceExclTax     = placedPrice.PriceExclTax,
                ExtendedPrice          = extendedPrice.PriceInclTax,
                ExtendedPriceExclTax   = extendedPrice.PriceExclTax,
                DiscountedPrice        = discountedPrice.PriceInclTax,
                DiscountedPriceExclTax = discountedPrice.PriceExclTax,
                Discounted             = discountedAmount.PriceInclTax,
                DiscountedExclTax      = discountedAmount.PriceExclTax,
                TaxTotal               = taxTotal,
                TaxRate                = (decimal)taxRate,
                LineItemId             = lineItem.LineItemId.ToString(),
                Quantity               = lineItem.Quantity,
                Properties             = lineItem.ToPropertyList()
            };

            return(omniumOrderLine2);
        }