protected override OrderItem OnExecute() { return(_transactionContext.Execute(() => { try { _inventoryService.DecrementQuantityOnHandCommand(CurrentOrderItem.ProductID, CurrentOrderItem.Quantity).Execute(); } catch (InsufficientStockAmountException) { return _orderItemDataProxy.BackOrder(_orderItemID, DateTime.Now); } return _orderItemDataProxy.Ship(_orderItemID, DateTime.Now); })); }
protected override OrderItem OnExecute() { return(_transactionContext.Execute(() => { var inventoryItem = _inventoryDataProxy.GetByProduct(CurrentOrderItem.ProductID); if (inventoryItem.QuantityOnHand - CurrentOrderItem.Quantity >= 0) { CurrentOrderItem.OrderStatus().SetShippedState(); CurrentOrderItem.ShippedDate = DateTime.Now.ToUniversalTime(); inventoryItem.QuantityOnHand -= CurrentOrderItem.Quantity; _inventoryDataProxy.Update(inventoryItem); } else { CurrentOrderItem.OrderStatus().SetBackorderedState(); CurrentOrderItem.BackorderedDate = DateTime.Now.ToUniversalTime(); } return _orderItemDataProxy.Ship(CurrentOrderItem); })); }