public PurchaseOrderViewModel(int issueId, DateTime date,AddEditPurchaseOrderDialog view, bool canUserModifyData)
        {
            View = view;
            mCanUserModifyData = canUserModifyData;
            OkButtonCommand = new DelegateCommand<object>(OkButtonHandler, CanExecuteAddButtonHandler);
            CancelButtonCommand = new DelegateCommand<object>(CalcelButtonHandler, x => true);
            View.Title = String.Format("Accruals ({0:MMM yy})", date);
            PurchaseOrders = new List<PurchaseOrderAccureModel>();
            FinancialActuals = new List<FinancialActual>();
            OtherAccruals = new ObservableCollection<PurchaseOrderOtherAccureModel>();
            mDate = date;

            AddButtonCommand = new DelegateCommand<object>(AddButtonCommandHandler, CanExecuteAddButtonHandler);
            RemoveButtonCommand = new DelegateCommand<object>(RemoveButtonCommandHandler, CanExecuteAddButtonHandler);

            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);
            {
                cmsWebServiceClient.GetIssueOpenPurchaseOrdersCompleted += (s1, e1) =>
                {
                    var openPurchaseOrders = e1.Result;

                    if (openPurchaseOrders == null) { view.DataContext = this; return;}

                    cmsWebServiceClient.GetAccrualsCompleted += (s2, e2) =>
                    {
                        var accruals = e2.Result;

                        foreach (var openPurchaseOrder in openPurchaseOrders)
                        {
                            FinancialAccrual accrual = (from x in accruals
                                where
                                    x.PoNumber == openPurchaseOrder.PoNumber &&
                                    x.Date.Year == date.Year &&
                                    x.Date.Month == date.Month &&
                                    x.ReferenceItem == openPurchaseOrder.ReferenceItem &&
                                    x.WbsElement == openPurchaseOrder.WbsElement &&
                                    x.CostElement == openPurchaseOrder.CostElement
                                select x).FirstOrDefault();

                            if (accrual == null)
                            {
                                accrual = new FinancialAccrual
                                {
                                    PoNumber = openPurchaseOrder.PoNumber,
                                    Date = date,
                                    ReferenceItem = openPurchaseOrder.ReferenceItem,
                                    WbsElement = openPurchaseOrder.WbsElement,
                                    LastModifiedDate = DateTime.Now,
                                    LastModifiedById = CMS.User.Id
                                };
                            }

                            var purchaseOrder = new PurchaseOrderAccureModel(openPurchaseOrder, accrual, view);

                            //Find Accrued last Month
                            var lastMonthDate = date.AddMonths(-1);
                            FinancialAccrual lastMonthAccrual = (from x in accruals
                                where
                                    x.PoNumber == openPurchaseOrder.PoNumber &&
                                    x.Date.Year == lastMonthDate.Year &&
                                    x.Date.Month == lastMonthDate.Month &&
                                    x.ReferenceItem == openPurchaseOrder.ReferenceItem &&
                                    x.WbsElement == openPurchaseOrder.WbsElement &&
                                    x.CostElement == openPurchaseOrder.CostElement
                                select x).FirstOrDefault();

                            if (lastMonthAccrual != null) purchaseOrder.AccruedLastMonth = lastMonthAccrual.AmountAccrued;

                            PurchaseOrders.Add(purchaseOrder);
                        }
                        view.DataContext = this;

                        LoadOtherFinancialAccruals(issueId, date);
                        LoadFinancialActuals(issueId, date);

                    };
                    cmsWebServiceClient.GetAccrualsAsync(issueId);
                };
                cmsWebServiceClient.GetIssueOpenPurchaseOrdersAsync(issueId);
            }
        }
 public PurchaseOrderAccureModel(FinancialOpenPurchaseOrder openPurchaseOrder, FinancialAccrual accrual, AddEditPurchaseOrderDialog view)
 {
     mOpenPurchaseOrder = openPurchaseOrder;
     mAccrual = accrual;
     mView = view;
 }