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 Shipment_PropertyChanged(object sender, PropertyChangedEventArgs e) { // Status property is changed in commands. Some Status changes may affect whole Order Status. Recalculate every time. if (e.PropertyName == "Status" || e.PropertyName == "ShippingAddressId" || e.PropertyName == "ShippingMethodId") { 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 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; } }); }