private void RaiseRemoveLineItemInteractionRequest(ShipmentItem removingItem)
        {
            var itemVM = _lineItemVmFactory.GetViewModelInstance();

            itemVM.Initialize(removingItem);

            CommonShipmentConfirmRequest.Raise(
                new ConditionalConfirmation {
                Title = "Item removal details".Localize(), Content = itemVM
            },
                (x) =>
            {
                if (x.Confirmed)
                {
                    // removing is moving item to fake shipment
                    var fakeShipment = new Shipment {
                        OrderForm = CurrentShipment.OrderForm
                    };
                    _currentOrder.MoveShippingItem(removingItem, itemVM.Quantity, fakeShipment, CurrentShipment);

                    // update LineItem Quantity or remove it completely
                    var lineItem = removingItem.LineItem;
                    if (lineItem.Quantity > itemVM.Quantity)
                    {
                        lineItem.Quantity -= itemVM.Quantity;
                    }
                    else
                    {
                        _currentOrder.OrderForms[0].LineItems.Remove(lineItem);
                    }

                    ParentViewModel.Recalculate();
                }
            });
        }
        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();
                    }
                });
            }
        }
 private void RaiseCancelShipmentInteractionRequest()
 {
     CommonShipmentConfirmRequest.Raise(
         new ConditionalConfirmation {
         Content = "Are you sure you want to cancel this shipment?".Localize(), Title = "Cancel shipment".Localize()
     },
         (x) =>
     {
         if (x.Confirmed)
         {
             CurrentShipment.Cancel(_currentOrder.InnerItem, _orderClient);
         }
     });
 }
        private void RaiseAddLineItemInteractionRequest()
        {
            var itemVM = _wizardLineItemVmFactory.GetViewModelInstance();

            var confirmation = new ConditionalConfirmation {
                Title = "Add new items".Localize(), Content = itemVM
            };

            CommonShipmentConfirmRequest.Raise(confirmation, (x) =>
            {
                if (x.Confirmed)
                {
                    ParentViewModel.CloseAllSubscription1();
                    var builder = new ShipmentBuilder(CurrentShipment, _currentOrder.OrderForms[0], _entityFactory, _repositoryFactory, _priceListClient);
                    itemVM.SelectedItemsToAdd.ToList().ForEach(i => builder.AddShipmentItem(i.ItemToAdd, i.Quantity));

                    ParentViewModel.Recalculate();
                    // fake assignment for triggers to fire
                    ParentViewModel.InnerItem.OrderGroupId = ParentViewModel.InnerItem.OrderGroupId;
                }
            });
        }