public AddEditVarianceCodeViewModel(IssueFinancial financial,CommonUtils.VarianceCode varianceCode, List<IssueFinancialVarianceCode> issueFinancialVarianceCodes) { IssueFinancialVarianceCodes = issueFinancialVarianceCodes; mFinancial = financial; mVarianceCode = varianceCode; OkButtonCommand = new DelegateCommand<object>(OkButtonHandler, CanExecuteOkButtonHandler); CancelButtonCommand = new DelegateCommand<object>(CanelButtonHandler, CanExecuteOkButtonHandler); }
public IssueFinancialTableViewModel(IssueFinancial financial, List<IssueFinancialVarianceCode> issueFinancialVarianceCodes, IssueFinancialControl view, bool userCanModify, IssueSetting issueSetting) { mView = view; mFinancial = financial; mUserCanModify = userCanModify; IssueFinancialVarianceCodes = issueFinancialVarianceCodes; mIssueSetting = issueSetting; ActualVsBaselineVarianceCommand = new DelegateCommand<object>(ActualvsBaselineButtonHandler, CanExecuteOkButtonHandler); ActualVsForecastVarianceCommand = new DelegateCommand<object>(ActualvsForecastButtonHandler, CanExecuteOkButtonHandler); OpenPurchaseOrderCommand = new DelegateCommand<object>(OpenPurchaseOrderCommandHandler, CanExecuteOpenPurchaseOrderCommandHandler); }
public AddEditVarianceCodeDialog(IssueFinancial financial, CommonUtils.VarianceCode varianceCode,List<IssueFinancialVarianceCode> issueFinancialVarianceCodes) { InitializeComponent(); CompositionInitializer.SatisfyImports(this); Title = "Variance"; if (varianceCode == CommonUtils.VarianceCode.ActualVsBaseline) Title = String.Format("Reason For Actual vs Baseline Variance ({0:MMM yy})", financial.Date); if (varianceCode == CommonUtils.VarianceCode.ActualVsForecast) Title = String.Format("Reason For Actual vs Forecast Variance ({0:MMM yy})", financial.Date); var viewModel = new AddEditVarianceCodeViewModel(financial, varianceCode,issueFinancialVarianceCodes); viewModel.View = this; DataContext = viewModel; }
public void Run() { using (var cee = new CmsEntities()) { //cee.Configuration.AutoDetectChangesEnabled = false; cee.Configuration.ValidateOnSaveEnabled = false; var orSystemReference = cee.SystemReferenceTypes.FirstOrDefault(x => x.Code.ToUpper() == "OR"); foreach (var sapInternalOrderImporterObject in mSapInternalOrderImporterObject) { mLog.Verbose(" "); mLog.Verbose("Processing Sap Internal Order '{0}' for IssueId {1} and its children ({2}).", sapInternalOrderImporterObject.InternalOrderNumber, sapInternalOrderImporterObject.IssueId, sapInternalOrderImporterObject.Children.Count); var issueFinancials = cee.IssueFinancials.Where(x => x.IssueId == sapInternalOrderImporterObject.IssueId).ToList(); var groupByDates = sapInternalOrderImporterObject.Children.Select(x => new DateTime(x.Year, x.Month, 1)).Distinct(); foreach (var groupByDate in groupByDates) { var actualMonthSum = sapInternalOrderImporterObject.Children.Where(x => x.Year == groupByDate.Year && x.Month == groupByDate.Month).Sum(x => x.Actuals); var issueFinancial = issueFinancials.FirstOrDefault(x => x.Date.Year == groupByDate.Year && x.Date.Month == groupByDate.Month); if (issueFinancial == null) { issueFinancial = new IssueFinancial { IssueId = sapInternalOrderImporterObject.IssueId, Date = groupByDate, LastModifiedDate = DateTime.Now, LastModifiedUserId = 1, LastImportedById = 1, LastImportedDate = DateTime.Now, }; cee.IssueFinancials.Add(issueFinancial); } issueFinancial.Actual = actualMonthSum ?? 0; issueFinancial.ActualsOpex = issueFinancial.Actual; issueFinancial.LastImportedById = 1; issueFinancial.LastImportedDate = DateTime.Now; if (issueFinancial.Id == 0) { mLog.Verbose("Inserted new IssueFinancial IssueId = '{0}' Date ='{1}' Actual = '{2}'", issueFinancial.IssueId, issueFinancial.Date, issueFinancial.Actual); } else { mLog.Verbose("Updated IssueFinancial Id = '{0}', IssueId = '{1}' Date ='{2}' Actual = '{3}'", issueFinancial.Id,issueFinancial.IssueId, issueFinancial.Date, issueFinancial.Actual); } } var actualsSum = sapInternalOrderImporterObject.Children.Sum(x => x.Actuals); var existingSystemReference = cee.SystemReferences.FirstOrDefault(x => x.IssueId == sapInternalOrderImporterObject.IssueId && x.SystemReferenceTypeId == orSystemReference.Id); existingSystemReference.ActualValue = actualsSum; existingSystemReference.FundingType = "OPEX"; mLog.Verbose("Updated ActualValue = {0} for IssueId '{1}' SystemReference.Number '{2}' SystemReferenceType '{3}'", actualsSum, sapInternalOrderImporterObject.IssueId, sapInternalOrderImporterObject.InternalOrderNumber, orSystemReference.Id); } //https://jira.issgroup.com.au/browse/BODCMS-1574 //Set ALL IssueFinancial.Accruals to 0 when importing CJI3 //condition - only set to 0 where Month is less than (<) Current Month //var now = DateTime.Now; //foreach (var issueFinancial in cee.IssueFinancials.Where(x => x.Date.Year < now.Year || (x.Date.Year == now.Year && x.Date.Month < now.Month))) //{ // issueFinancial.Accrual = 0; //} cee.SaveChanges(); } }
private void AddButtonHandler(object parameter) { if (CanExecuteAddButtonHandler(parameter)) { if (AreAllValid()) { MonthPicker monthPicker = new MonthPicker(mIssueFinancials.Select(x => x.Date).Distinct().ToList()); monthPicker.Closed += (s1, e1) => { if (monthPicker.DialogResult.HasValue && monthPicker.DialogResult.Value) { IsBusy = true; foreach (var date in monthPicker.Dates) { var issueFinancial = new IssueFinancial {IssueId = mIssue.Id, Date = date.Date, LastModifiedDate = DateTime.Now, LastModifiedUserId = CMS.User.Id}; var newIssueFinancialTableViewModel = new IssueFinancialTableViewModel(issueFinancial, IssueFinancialVarianceCodes, mView, CanUserModifyFinancialData(), mIssueSetting); newIssueFinancialTableViewModel.KpiBaselineReadOnly = mKpiBaselineEnabled; mIssueFinancials.Add(newIssueFinancialTableViewModel); mIssue.IssueFinancials.Add(issueFinancial); } mTimer.Start(); } }; monthPicker.Show(); } } }
private void SaveIssueFinancials(Issue issue, Issue originalIssue, CmsEntities cee) { log.Verbose("SaveIssueFinancials()"); //Delete SaveIssueFinancials cee.DeleteWhere<IssueFinancial>(cee, x => x.IssueId == issue.Id); cee.Configuration.AutoDetectChangesEnabled = false; //Save SaveIssueFinancials foreach (IssueFinancial issueFinancial in issue.IssueFinancials.ToList()) { var newFinancial = new IssueFinancial { IssueId = issue.Id, Date = issueFinancial.Date, Budget = issueFinancial.Budget, Baseline = issueFinancial.Baseline, Forecast = issueFinancial.Forecast, Actual = issueFinancial.Actual, Accrual = issueFinancial.Accrual, ActualVsBaselineVarianceCodeId = issueFinancial.ActualVsBaselineVarianceCodeId, ActualVsForecastVarianceCodeId = issueFinancial.ActualVsForecastVarianceCodeId, ActualVsBaselineNote = issueFinancial.ActualVsBaselineNote, ActualVsForecastNote = issueFinancial.ActualVsForecastNote, LastModifiedDate = issueFinancial.LastModifiedDate, LastModifiedUserId = issueFinancial.LastModifiedUserId, ForecastLastModifiedDate = issueFinancial.ForecastLastModifiedDate, ForecastLastModifiedUserId = issueFinancial.ForecastLastModifiedUserId, ActualsOpex = issueFinancial.ActualsOpex, ActualsCapex = issueFinancial.ActualsCapex, ForecastV1 = issueFinancial.ForecastV1, ForecastV2 = issueFinancial.ForecastV2, ForecastV3 = issueFinancial.ForecastV3 }; originalIssue.IssueFinancials.Add(newFinancial); } cee.Configuration.AutoDetectChangesEnabled = true; }
private void InsertUpdateData(IList<Cji3DataAdapter> importData) { if (importData.Count == 0) { RaiseMessage(CommonUtils.MessageType.Warning, NoDataFoundForWorkSheetMessage()); return; } var currentDate = DateTime.Now; var existingFinancials = (from x in Cee.IssueFinancials select x).ToList(); //get unique Project Definitions var projectDefinitions = (from x in importData select x.ProjectDefinition).Distinct().ToList(); //RaiseMessage(CommonUtils.MessageType.Warning, string.Format("!!!!! This version of a importer plugin will NOT set Accruals to 0 when importing CJI3 !!!!!")); //import all financial data foreach (var projectDefinition in projectDefinitions) { IssueFinancial existingFinancial = null; IssueFinancial newIssueFinancial = null; var issue = GetIssue(projectDefinition); if (issue != null) { string definition = projectDefinition; var uniqueDates = importData.Where(x => x.ProjectDefinition == definition).OrderBy(x=> x.Date).Select(x => x.Date).Distinct(); foreach (var uniqueDate in uniqueDates) { decimal currencySum = importData.Where(x => x.ProjectDefinition == projectDefinition && x.Date == uniqueDate).Select(x => x.ValueInObjectCurrency).Sum(); existingFinancial = existingFinancials.Find(x => x.IssueId == issue.Id && x.Date == uniqueDate); if (existingFinancial != null) { //Update existingFinancial.Actual = currencySum; existingFinancial.LastModifiedDate = currentDate; existingFinancial.LastModifiedUserId = MetaData.UserId; existingFinancial.LastImportedDate = currentDate; existingFinancial.LastImportedById = MetaData.UserId; } else { //Insert newIssueFinancial = new IssueFinancial { IssueId = issue.Id, Date = uniqueDate, Budget = 0, Baseline = 0, Forecast = 0, Actual = currencySum, Accrual = 0, LastModifiedDate = currentDate, LastModifiedUserId = MetaData.UserId, LastImportedDate = currentDate, LastImportedById = MetaData.UserId }; Cee.IssueFinancials.Add(newIssueFinancial); } if (newIssueFinancial != null) { mInsertedResults.Add(newIssueFinancial); } if (existingFinancial != null) { mUpdatedResults.Add(existingFinancial); } } } else { RaiseMessage(CommonUtils.MessageType.Warning, string.Format("Could not determine Issue from Project Definition '{0}'.", projectDefinition)); } } //https://jira.issgroup.com.au/browse/BODCMS-1574 //Set ALL IssueFinancial.Accruals to 0 when importing CJI3 //condition - only set to 0 where Month is less than (<) Current Month var now = DateTime.Now; foreach (var issueFinancial in Cee.IssueFinancials.Where(x => x.Date.Year < now.Year || (x.Date.Year == now.Year && x.Date.Month < now.Month)) ) { issueFinancial.Accrual = 0; } if (mInsertedResults.Count == 0 && mUpdatedResults.Count == 0) { RaiseMessage(CommonUtils.MessageType.Warning, string.Format("No Financials were added from worksheet {0}.", WorkSheetName)); } else { //SAVE Cee.SaveChanges(); foreach (var result in mInsertedResults) { RaiseMessage(CommonUtils.MessageType.Added, string.Format("Added into IssueFinancial Table: Issue Id '{0}', Date = '{1}', Actual = '{2}'", result.IssueId, result.Date, result.Actual)); } foreach (var eresult in mUpdatedResults) { RaiseMessage(CommonUtils.MessageType.Added, string.Format("Updated IssueFinancial Table: Issue Id '{0}', Date = '{1}', Actual = '{2}'", eresult.IssueId, eresult.Date, eresult.Actual)); } } }
public void Run() { using (var cee = new CmsEntities()) { //cee.Configuration.AutoDetectChangesEnabled = false; cee.Configuration.ValidateOnSaveEnabled = false; var existingSystemReferences = cee.SystemReferences.ToList(); foreach (var financialActualImporterObject in mFinancialActualImporterObjects) { mLog.Verbose(" "); mLog.Verbose("Processing Financial Actuals for IssueId {0} and its children ({1}).", financialActualImporterObject.IssueId, financialActualImporterObject.Children.Count); //Find if the ProjectCode(SystemReference.Number) and Type PRJ-DEF exist in CMS SystemReference table var issueFinancials = cee.IssueFinancials.Where(x => x.IssueId == financialActualImporterObject.IssueId).ToList(); var groupByDates = financialActualImporterObject.Children.Select(x => new DateTime(x.Year, x.Month, 1)).Distinct(); foreach (var groupByDate in groupByDates) { var actualMonthSum = financialActualImporterObject.Children.Where(x => x.Year == groupByDate.Year && x.Month == groupByDate.Month).Sum(x => x.Actuals); var opexSum = financialActualImporterObject.Children.Where( x => x.Year == groupByDate.Year && x.Month == groupByDate.Month && existingSystemReferences.Where( xx => xx.IssueId == financialActualImporterObject.IssueId && xx.FundingType == "OPEX" && x.WbsElement == xx.Number) .Select(y => y.Number).Contains(x.WbsElement)).Sum(a => a.Actuals); var capexSum = financialActualImporterObject.Children.Where( x => x.Year == groupByDate.Year && x.Month == groupByDate.Month && existingSystemReferences.Where( xx => xx.IssueId == financialActualImporterObject.IssueId && xx.FundingType == "CAPEX" && x.WbsElement == xx.Number) .Select(y => y.Number).Contains(x.WbsElement)).Sum(a => a.Actuals); var issueFinancial = issueFinancials.FirstOrDefault(x => x.Date.Year == groupByDate.Year && x.Date.Month == groupByDate.Month); if (issueFinancial == null) { issueFinancial = new IssueFinancial { IssueId = financialActualImporterObject.IssueId, Date = groupByDate, LastModifiedDate = DateTime.Now, LastModifiedUserId = 1, LastImportedById = 1, LastImportedDate = DateTime.Now, ActualsOpex = opexSum ?? 0, ActualsCapex = capexSum ?? 0 }; cee.IssueFinancials.Add(issueFinancial); } issueFinancial.Actual = actualMonthSum ?? 0; issueFinancial.ActualsOpex = opexSum ?? 0; issueFinancial.ActualsCapex = capexSum ?? 0; issueFinancial.LastImportedById = 1; issueFinancial.LastImportedDate = DateTime.Now; if (issueFinancial.Id == 0) { mLog.Verbose("Inserted new IssueFinancial IssueId = '{0}' Date ='{1}' Actual = '{2}'", issueFinancial.IssueId, issueFinancial.Date, issueFinancial.Actual); } else { mLog.Verbose("Updated IssueFinancial Id = '{0}', IssueId = '{1}' Date ='{2}' Actual = '{3}'", issueFinancial.Id,issueFinancial.IssueId, issueFinancial.Date, issueFinancial.Actual); } } } //https://jira.issgroup.com.au/browse/BODCMS-1574 //Set ALL IssueFinancial.Accruals to 0 when importing CJI3 //condition - only set to 0 where Month is less than (<) Current Month var now = DateTime.Now; foreach (var issueFinancial in cee.IssueFinancials.Where(x => x.Date.Year < now.Year || (x.Date.Year == now.Year && x.Date.Month < now.Month))) { issueFinancial.Accrual = 0; } cee.SaveChanges(); } }