/// <summary> /// Populates default fields on the first line item. Override to populate custom line item fields. /// </summary> protected virtual void PopulateMetaFields( ILineItem lineItem, IMarket market, SaleViewModel kachingSale, SaleLineItemViewModel kachingLineItem) { }
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); }
protected virtual IShipment CreateShipment( IPurchaseOrder purchaseOrder, IOrderForm orderForm, CustomerContact customerContact, SaleShippingViewModel kachingShipping, SaleViewModel kachingSale, SaleLineItemViewModel shippingLineItem) { IShipment shipment = _orderGroupFactory.CreateShipment(purchaseOrder); shipment.OrderShipmentStatus = kachingShipping != null ? OrderShipmentStatus.AwaitingInventory : OrderShipmentStatus.Shipped; if (kachingShipping != null) { // If this shipment is awaiting delivery, then the whole order is still in-progress. purchaseOrder.OrderStatus = OrderStatus.InProgress; } return(shipment); }