private Dictionary <ILineItem, List <ValidationIssue> > ValidatePurchaseOrder(IPurchaseOrder purchaseOrder) { var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >(); purchaseOrder.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(purchaseOrder.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor); purchaseOrder.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue)); purchaseOrder.AdjustInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue)); purchaseOrder.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings()); return(validationIssues); }