Beispiel #1
0
        public bool Run(ShipmentFacts facts, Packlist packlist)
        {
            m_uow = facts.SalesOrder.Session;

            // Associate shipment with sales order
            Shipment shipment = ShipmentMapper.MapFrom(facts);

            // Update the new lot qty after the shipment
            shipment.Item.Ship(shipment);

            // Create Transaction
            // implicit data record creation
            TransactionMapper.MapFrom(shipment);

            // Tell the line item to update its status from this shipment
            shipment.LineItem.UpdateStatusFromShipment(shipment.Qty);

            // Add shipment to packlist
            packlist.AddShipment(shipment);

            //Persist
            Scout.Core.Data.Save(m_uow);

            return(true);
        }
Beispiel #2
0
        private void SendShipmentData(ShipmentMapper shipment)
        {
            PrepareControlsBeforeWorkflow(shipment);

            //Check Update addressbook checkbox
            _upsManagerMap.UpdateAddressBookCheckBox.SetValueToControl(_settings.UpsAddUpdateAddressBook ? "true" : "false");

            if (_settings.UpsAddUpdateAddressBook)
            {
                Wait(10);
            }

            _upsManagerMap.MapShipmentData(shipment);
            Wait(1);

            //Is Country is not US
            if (shipment.Contact.Address.Country.Value != "US")
            {
                _upsManagerMap.FindControlsInTree(_mainWindow, new[] { ControlType.Edit, ControlType.ComboBox },
                                                  new List <string>
                {
                    _upsManagerMap.UpsServiceComboBox.AutomaitonId,
                    _upsManagerMap.GeneralDescOfGoodsPane.AutomaitonId
                });
                _upsManagerMap.UpsServiceComboBox.SetValueToControl("S");
                _upsManagerMap.GeneralDescOfGoodsPane.SetValueToControl("Automatic information input");
            }
        }
Beispiel #3
0
        private void SendPackagesData(ShipmentMapper shipment)
        {
            if (!shipment.Packages.Any())
            {
                _messagesProvider.Log(InformationResources.INFO_UPS_SHIPMENT_NO_PACKAGE);
                _upsManagerMap.ReferenceNumberOnePane.SetValueToControl(shipment.ShipmentNbr.Value.Trim());
                _upsManagerMap.PackageWeightPane.AutomationElement.SetFocus();
            }

            foreach (var package in shipment.Packages)
            {
                if (IsWarnDialogFired)
                {
                    StopTimer();
                    break;
                }

                _upsManagerMap.PackageWeightPane.SetValueToControl(package.PackageFormattedWeight.Value);

                var delayCount = 100;
                while (delayCount > 0 && string.IsNullOrEmpty(_upsManagerMap.ReferenceNumberOnePane.GetCurrentValue().Trim()))
                {
                    delayCount--;
                    _upsManagerMap.ReferenceNumberOnePane.SetValueToControl(shipment.ShipmentNbr.Value);
                }
                _upsManagerMap.AddPackageButton.Click();
            }
            _messagesProvider.Log(InformationResources.INFO_UPS_FILL_PACKAGE_DATA);
        }
Beispiel #4
0
        private void SendPackagesData(ShipmentMapper shipment)
        {
            if (!shipment.Packages.Any())
            {
                return;
            }

            var packageNumbers = shipment.Packages.Count;
            var packagesWeight = shipment.Packages.Sum(p => p.Weight.Value);

            _fedexShipManagerMap.PackageNumbers.SetValueToControl(packageNumbers.ToString());
            _fedexShipManagerMap.PackageWeight.SetValueToControl(packagesWeight.ToString());

            _fedexShipManagerMap.PackageServiceType.SetValueToControl("R");

            //PackageType always disabled for "R"
            if (!_fedexShipManagerMap.PackageServiceType.GetCurrentValue().StartsWith("R"))
            {
                _fedexShipManagerMap.PackageType.SetValueToControl("1");
            }

            _fedexShipManagerMap.PackageBillTransportationTo.SetValueToControl("1");

            if (packageNumbers > 1)
            {
                MultiPackageWindowProcess(shipment);
            }
        }
Beispiel #5
0
        public void PopulateApplicaitonByShipmentData(ShipmentMapper shipment)
        {
            StartTimer(_upsManagerMap);

            try
            {
                //Shipment informaiton
                SendShipmentData(shipment);
                Wait(1);
                if (CheckShipmentProgrammWarnings(_messagesProvider))
                {
                    return;
                }

                //Package informaiton
                if (CheckShipmentFieldsFilled(_upsManagerMap.RequiredShipmentPane, _messagesProvider))
                {
                    _messagesProvider.Log(InformationResources.INFO_UPS_FILL_SHIPMENT_DATA);
                    SendPackagesData(shipment);
                }
            }
            finally
            {
                StopTimer();
            }

            CheckShipmentProgrammWarnings(_messagesProvider);
        }
Beispiel #6
0
        public ShipmentValidationContext(ShipmentMapper shipment, IAcumaticaNetworkProvider networkProvider)
        {
            _shipment = shipment;
            _shipmentOpenValidator = new ShipmentOpenValidator();
            var shipmentTypeValidator = new ShipmentTypeValidator();
            var shipmentBoxValidator  = new ShipmentBoxValidator(networkProvider);

            _shipmentOpenValidator.SetSuccessor(shipmentTypeValidator);
            shipmentTypeValidator.SetSuccessor(shipmentBoxValidator);
        }
        public override Dictionary <string, string> HandleValidation(ShipmentMapper shipment)
        {
            if (!shipment.Packages.Any() && !_networkProvider.GetShippingBoxes().Any())
            {
                ErrorsResult.Add("Shipment Box Validation error", string.Format(InformationResources.WARN_SHIPMENT_VALIDATION_BOX, shipment.ShipmentNbr.Value));
                return(ErrorsResult);
            }

            return(Successor != null?Successor.HandleValidation(shipment) : ErrorsResult);
        }
Beispiel #8
0
        public override Dictionary <string, string> HandleValidation(ShipmentMapper shipment)
        {
            if (shipment.Type.Value != "Shipment")
            {
                ErrorsResult.Add("Shipment Type Validation Error", string.Format(InformationResources.WARN_SHIPMENT_VALIDATION_TYPE, shipment.ShipmentNbr.Value));
                return(ErrorsResult);
            }

            return(Successor != null?Successor.HandleValidation(shipment) : ErrorsResult);
        }
        public override Dictionary <string, string> HandleValidation(ShipmentMapper shipment)
        {
            if (shipment.Status.Value != "Open" || shipment.Hold.Value == true)
            {
                ErrorsResult.Add("Shipment Status Validation error", string.Format(InformationResources.WARN_SHIPMENT_VALIDATION_OPEN, shipment.ShipmentNbr.Value));
                return(ErrorsResult);
            }

            return(Successor != null?Successor.HandleValidation(shipment) : ErrorsResult);
        }
Beispiel #10
0
        private void PrepareControlsBeforeWorkflow(ShipmentMapper shipment)
        {
            if (shipment.Contact.Address.Country.Value == "US")
            {
                _fedexShipManagerMap.PostalCode.IsClearMask = true;
                _fedexShipManagerMap.PostalCode.MaxLength   = 9;
            }

            if (shipment.Contact.Address.Country.Value == "US" || shipment.Contact.Address.Country.Value == "CA")
            {
                _fedexShipManagerMap.Telephone.IsClearMask = true;
                _fedexShipManagerMap.Telephone.MaxLength   = 10;
            }
        }
Beispiel #11
0
        private void SetEmail(ShipmentMapper shipment)
        {
            var fedexShipAlertTabMap = (FedExShipAlertTabMap)_cache.Get(ShipmentApplicaotinHelperType.FedExShipAlertTabMap, _mainWindow);
            var tabItems             = _fedExShipMahagerShellMap.TopTabControl.GetTabItems();

            if (tabItems.Any() && tabItems.Count > 2)
            {
                var selectedTabItem = tabItems[2];
                selectedTabItem.Select();
                var searchPatch = fedexShipAlertTabMap.Email.DescendentIdPath;
                var emailPane   = selectedTabItem.AutomationElement.FindDescendentByIdPath(searchPatch);
                if (emailPane != null)
                {
                    fedexShipAlertTabMap.Email.Init(emailPane);
                    fedexShipAlertTabMap.MapShipmentData(shipment);
                }
                tabItems[0].Select();
            }
        }
Beispiel #12
0
 private void PrepareControlsBeforeWorkflow(ShipmentMapper shipment)
 {
     if (shipment.Contact.Address.Country.Value == "US")
     {
         _upsManagerMap.PostalCodePane.IsClearMask         = true;
         _upsManagerMap.PostalCodePane.MaxLength           = 9;
         _upsManagerMap.TelephonePane.IsClearMask          = true;
         _upsManagerMap.TelephonePane.MaxLength            = 10;
         _upsManagerMap.TelephonePane.IsTypedInputRequired = true;
         _upsManagerMap.TelephonePane.IsCharInputRequired  = false;
     }
     else
     {
         _upsManagerMap.PostalCodePane.IsClearMask         = false;
         _upsManagerMap.TelephonePane.IsClearMask          = false;
         _upsManagerMap.TelephonePane.MaxLength            = 15;
         _upsManagerMap.TelephonePane.IsTypedInputRequired = false;
         _upsManagerMap.TelephonePane.IsCharInputRequired  = true;
     }
 }
Beispiel #13
0
        public void PopulateApplicaitonByShipmentData(ShipmentMapper shipment)
        {
            StartTimer(_fedExShipMahagerShellMap);

            try
            {
                //Shipment informaiton
                PrepareControlsBeforeWorkflow(shipment);
                SendShipmentData(shipment);
                Wait(1);
                if (CheckShipmentProgrammWarnings(_messagesProvider))
                {
                    return;
                }

                //Shipment informaiton - email
                SetEmail(shipment);
                Wait(1);
                if (CheckShipmentProgrammWarnings(_messagesProvider))
                {
                    return;
                }

                //Package informaiton
                if (CheckShipmentFieldsFilled(_fedexShipManagerMap.RequiredShipmentPane, _messagesProvider))
                {
                    _messagesProvider.Log(InformationResources.INFO_FEDEX_FILL_SHIPMENT_DATA);
                    SendPackagesData(shipment);
                }
            }
            finally
            {
                StopTimer();
            }

            CheckShipmentProgrammWarnings(_messagesProvider);
        }
Beispiel #14
0
        private void MultiPackageWindowProcess(ShipmentMapper shipment)
        {
            StopTimer();
            var delayCount = 20;

            while (delayCount > 0 && _packageMainWindowDialog == null)
            {
                MultiPackageWindowWait();
                MultiPackageWindowFindMainDialog(_mainWindow);
                delayCount--;
                Thread.Sleep(100);
            }

            if (_packageMainWindowDialog != null)
            {
                var packageMap = new FedExMultiPieceShipmentMap(new ShipmentAutomationUIControlHelper(), _packageMainWindowDialog, _messagesProvider);
                packageMap.Map();
                MultiPackageWindowInsertData(packageMap, shipment);
            }
            else
            {
                _messagesProvider.Warn("Cannot find source for input multipackage data.");
            }
        }
Beispiel #15
0
 private void SendShipmentData(ShipmentMapper shipment)
 {
     _fedexShipManagerMap.MapShipmentData(shipment);
     _fedexShipManagerMap.SaveUpdateAddressBook.SetValueToControl(_settings.FedexAddUpdateAddressBook? "true" : "false");
 }
 public abstract Dictionary <string, string> HandleValidation(ShipmentMapper shipment);
Beispiel #17
0
 private void MultiPackageWindowInsertData(FedExMultiPieceShipmentMap packageMap, ShipmentMapper shipment)
 {
     packageMap.PrintLabelsAfterCompleteShipment.SetValueToControl("true");
     foreach (var package in shipment.Packages)
     {
         packageMap.MapPackageData(package);
         packageMap.PackageAddButton.Click();
     }
     packageMap.PackageSaveAndCloseButton.Click();
     _messagesProvider.Log(InformationResources.INFO_FEDEX_FILL_PACKAGE_DATA);
 }