private void RaiseMoveLineItemInteractionRequest(ShipmentItem movingItem) { if (movingItem != null) { var itemVM = _splitVmFactory.GetViewModelInstance( new KeyValuePair <string, object>("currentOrder", _currentOrder.InnerItem) , new KeyValuePair <string, object>("sourceShipment", CurrentShipment) , new KeyValuePair <string, object>("movingItem", movingItem)); var confirmation = new ConditionalConfirmation { Title = "Split shipment".Localize(), Content = itemVM }; CommonShipmentConfirmRequest.Raise(confirmation, (x) => { if (x.Confirmed) { var quantity = itemVM.MoveQuantity; var targetShipment = itemVM.TargetShipment; var anyOperationSucceded = false; try { ParentViewModel.CloseAllSubscription1(); _currentOrder.MoveShippingItem(movingItem, quantity, targetShipment, CurrentShipment); if (itemVM.IsNewShipmentSelected) { targetShipment.ShipmentId = targetShipment.GenerateNewKey(); targetShipment.OrderFormId = _currentOrder.OrderForms[0].OrderFormId; _currentOrder.OrderForms[0].Shipments.Add(targetShipment); } ParentViewModel.OrderShipmentViewModels.Clear(); ParentViewModel.InitializeOrderShipmentViewModels(); ParentViewModel.Recalculate(); anyOperationSucceded = true; } finally { ParentViewModel.SetAllSubscription1(); // fake assignment for triggers to fire if (anyOperationSucceded) { ParentViewModel.InnerItem.OrderGroupId = ParentViewModel.InnerItem.OrderGroupId; } } RaiseCanExecuteChanged(); } }); } }