protected virtual ILineItem CreateLineItem( IPurchaseOrder purchaseOrder, IShipment shipment, SaleViewModel kachingSale, SaleLineItemViewModel kachingLineItem) { ILineItem lineItem = _orderGroupFactory.CreateLineItem( kachingLineItem.VariantId.DesanitizeKey() ?? kachingLineItem.Id.DesanitizeKey(), purchaseOrder); decimal quantity = kachingLineItem.UnitCount ?? kachingLineItem.Quantity; lineItem.Quantity = quantity; lineItem.PlacedPrice = kachingLineItem.RetailPrice / quantity; // Get the specific discount amount of this line item (discount that were applied directly to the line item). decimal lineItemDiscount = kachingLineItem.Discounts? .Where(d => !(d.Discount?.Application.Basket ?? false)) .Sum(d => d.Amount) ?? 0; // Get the amount of the order level discount that this line item contributes // (the order level discount are spread out on all line items). decimal orderLevelDiscount = kachingLineItem.Discounts? .Where(d => d.Discount?.Application.Basket ?? false) .Sum(d => d.Amount) ?? 0; lineItem.SetEntryDiscountValue(lineItemDiscount); lineItem.SetOrderDiscountValue(orderLevelDiscount); return(lineItem); }