示例#1
0
        public async override void LoadState(object navigationParameter, Dictionary <String, Object> viewData)
        {
            Exception error = null;

            try
            {
                Loading   = true;
                PageTitle = string.Format("Expense Claim {0}", (string)navigationParameter);

                if (viewData != null && viewData.ContainsKey("CurrentExpenseClaim"))
                {
                    _model = (ExpenseClaim)viewData["CurrentExpenseClaim"];
                    _model.TrackChanges();

                    var cache = Acumatica.Core.Ioc.Container.Default.GetInstance <IExpenseClaimLineCache>();
                    if (cache.CurrentLine != null)
                    {
                        if (cache.CurrentLine.HasUnsavedChanges)
                        {
                            this.Model.HasUnsavedChanges = true;
                        }
                        MergeLineFromCache(cache.CurrentLine);
                        cache.CurrentLine = null;
                    }
                }
                else
                {
                    var service = Acumatica.Core.Ioc.Container.Default.GetInstance <IExpenseClaimService>();
                    _model = await service.GetExpenseClaim(navigationParameter as string);
                }

                OnPropertyChanged("Model");
                OnPropertyChanged("LinesTotal");
            }
            catch (Exception e)
            {
                error = e;
            }
            finally
            {
                Loading = false;
            }

            if (error != null)
            {
                await Acumatica.Core.Ioc.Container.Default.GetInstance <IExceptionHandlerService>().HandleExceptionAsync(error);

                Acumatica.Core.Ioc.Container.Default.GetInstance <Acumatica.Core.Service.INavigationService>().GoBack();
            }
        }