private void SetPickupAllValues(PickupInformationViewModel pickupViewModel)
 {
     foreach (var lineViewModel in this.gridSource)
     {
         SetPickupValues(pickupViewModel, lineViewModel);
         lineViewModel.Commit();
     }
 }
        private void OnDeliveryMethodButtonClick(int rowHandle)
        {
            if (rowHandle < 0 || rowHandle > this.gridSource.Count)
            {
                return;
            }

            LineLevelInformationViewModel viewModel = this.gridSource[rowHandle];

            if (string.Equals(gridView.FocusedColumn.FieldName, ColShip, StringComparison.OrdinalIgnoreCase))
            {
                ShippingInformationViewModel shippingViewModel = ShowShippingForm(rowHandle);

                if (shippingViewModel != null)
                {
                    // we clear the header...
                    this.ViewModel.ExecuteClearHeaderDelivery();

                    // ... set the values for the selected line
                    SetShipValues(shippingViewModel, viewModel);

                    // ...and switch everything to line level
                    foreach (LineLevelInformationViewModel lineViewModel in this.gridSource)
                    {
                        lineViewModel.Commit();
                    }

                    this.ResetControlBindings();
                }
            }

            if (string.Equals(gridView.FocusedColumn.FieldName, ColPickup, StringComparison.OrdinalIgnoreCase))
            {
                PickupInformationViewModel pickupViewModel = ShowPickupForm(rowHandle);

                if (pickupViewModel != null)
                {
                    // we clear the header...
                    this.ViewModel.ExecuteClearHeaderDelivery();

                    // ... set the values for the selected line
                    SetPickupValues(pickupViewModel, viewModel);

                    // ...and switch everything to line level
                    foreach (LineLevelInformationViewModel lineViewModel in this.gridSource)
                    {
                        lineViewModel.Commit();
                    }

                    this.ResetControlBindings();
                }
            }
        }
        private static void SetPickupValues(
            PickupInformationViewModel fromPickupViewModel,
            LineLevelInformationViewModel toLineViewModel)
        {
            toLineViewModel.IsPickup      = true;
            toLineViewModel.DeliveryDate  = fromPickupViewModel.PickupDate;
            toLineViewModel.DeliveryStore = fromPickupViewModel.SelectedStore;

            // Remove any shipping related data
            toLineViewModel.ShippingCharge     = null;
            toLineViewModel.ShippingMethodCode = null;
            toLineViewModel.ShippingAddress    = null;
        }
        private void OnPickupAll_Click(object sender, EventArgs e)
        {
            PickupInformationViewModel viewModel = ShowPickupForm();

            if (viewModel != null)
            {
                try
                {
                    this.SetPickupAllValues(viewModel);
                    viewModel.CommitHeaderChanges();

                    this.ResetControlBindings();
                }
                catch (InvalidOperationException ex)
                {
                    SalesOrder.InternalApplication.Services.Dialog.ShowMessage(ex.Message, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        private PickupInformationViewModel ShowPickupForm(int rowIndex)
        {
            // Before we show the pickup form, check that a pickup code exists
            if (string.IsNullOrWhiteSpace(ApplicationSettings.Terminal.PickupDeliveryModeCode))
            {
                // "Pickup cannot be used for delivery because a pickup delivery code was not found."
                string errorMessage = LSRetailPosis.ApplicationLocalizer.Language.Translate(56382);
                SalesOrder.LogMessage(errorMessage, LSRetailPosis.LogTraceLevel.Error);
                SalesOrder.InternalApplication.Services.Dialog.ShowMessage(errorMessage, MessageBoxButtons.OK, MessageBoxIcon.Error);

                return(null);
            }

            PickupInformationViewModel vm = new PickupInformationViewModel(this.ViewModel.Transaction);

            vm.IsDeliveryChangeAllowed = this.ViewModel.IsDeliveryChangeAllowed;

            // Load any existing values
            if (rowIndex >= 0 && rowIndex < this.gridSource.Count)
            {
                LineLevelInformationViewModel viewModel = this.gridSource[rowIndex];

                vm.PickupDate    = viewModel.DeliveryDate;
                vm.SelectedStore = viewModel.DeliveryStore;
            }

            using (formPickupInformation pickup = new formPickupInformation(vm))
            {
                LSRetailPosis.POSProcesses.POSFormsManager.ShowPOSForm(pickup);

                if (pickup.DialogResult == DialogResult.OK)
                {
                    return(pickup.ViewModel);
                }
            }

            return(null);
        }
 public formPickupInformation(PickupInformationViewModel viewModel) : this()
 {
     this.bindingSource.Add(viewModel);
 }