private void lePayType_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e) { string id = Convert.ToString(e.NewValue); PayType = id; if (PayType != null) { payrollCache = payrollCache ?? crudApi.GetCache(typeof(Uniconta.DataModel.EmpPayrollCategory)); catMileage = (Uniconta.DataModel.EmpPayrollCategory)payrollCache.Get(PayType); internalProject = catMileage?._InternalProject; RegistrationProject = internalProject ?? Project; } }
void intializeProperties() { var journalline = this.journalline; Project = journalline._Project; WorkSpace = journalline._WorkSpace; VechicleRegNo = employee._VechicleRegNo; if (catMileage == null) { payrollCache = payrollCache ?? crudApi.GetCache(typeof(Uniconta.DataModel.EmpPayrollCategory)); var payrollLst = (EmpPayrollCategory[])payrollCache.GetRecords; catMileage = payrollLst.Where(s => s._InternalType == Uniconta.DataModel.InternalType.Mileage).OrderByDescending(s => s._Rate).FirstOrDefault(); } internalProject = catMileage?._InternalProject; RegistrationProject = internalProject ?? journalline._Project; PrTask = internalProject ?? journalline._Task; PayType = catMileage?._Number; }
private async Task IncludeTimeJournals() { if (!InclTimeJournals || timeTransFound) { return; } ProjectClient proj = null; EmployeeClient emp = null; if (master != null) { emp = master as EmployeeClient; if (emp == null) { proj = master as ProjectClient; } if (proj == null) { var WIPreport = master as UnicontaClient.Pages.ProjectTransLocalClient; if (WIPreport != null) { proj = WIPreport.ProjectRef; } } } if (timetransLst == null && (master == null || emp != null || proj != null)) { timetransLst = new List <ProjectTransClient>(); timeTransFound = true; busyIndicator.IsBusy = true; var pairTM = new List <PropValuePair>(); if (emp != null) { pairTM.Add(PropValuePair.GenereteWhereElements(nameof(TMJournalLineClient.Employee), typeof(string), emp._Number)); pairTM.Add(PropValuePair.GenereteWhereElements(nameof(TMJournalLineClient.Date), emp._TMApproveDate, CompareOperator.GreaterThanOrEqual)); } else if (proj != null) { if (projLst == null) { var strb = StringBuilderReuse.Create(); strb.Append(proj._Number); foreach (var x in Projects) { if (x._MasterProject == proj._Number) { strb.Append(';').Append(x._Number); } } projLst = strb.ToString(); strb.Release(); } var projselected = includeSubProject ? projLst : proj._Number; pairTM.Add(PropValuePair.GenereteWhereElements(nameof(TMJournalLineClient.Project), typeof(string), projselected)); var minApproveDate = Employees.Where(x => x._TMApproveDate != DateTime.MinValue && x._Terminated == DateTime.MinValue).Min(x => x._TMApproveDate as DateTime?) ?? DateTime.MinValue; if (minApproveDate != DateTime.MinValue) { pairTM.Add(PropValuePair.GenereteWhereElements(nameof(TMJournalLineClient.Date), minApproveDate, CompareOperator.GreaterThanOrEqual)); } } else { var minApproveDate = Employees.Where(x => x._TMApproveDate != DateTime.MinValue && x._Terminated == DateTime.MinValue).Min(x => x._TMApproveDate as DateTime?) ?? DateTime.MinValue; if (minApproveDate != DateTime.MinValue) { pairTM.Add(PropValuePair.GenereteWhereElements(nameof(TMJournalLineClient.Date), minApproveDate, CompareOperator.GreaterThanOrEqual)); } } var tmJourLines = await api.Query <TMJournalLineClient>(pairTM); var tmLines = tmJourLines.Where(s => (s.Project != null && s.PayrollCategory != null && s.Date > Employees.First(z => z._Number == s.Employee)._TMApproveDate)).ToArray(); var search = new TMJournalLineClient(); var sort = new TMJournalEmpDateSort(); int pos = 0; Array.Sort(tmLines, sort); string lastEmployee = null; string lastPayroll = null; string lastProject = null; EmpPayrollCategory payrollCat = null; Uniconta.DataModel.Project project = null; var grpEmpDate = tmLines.GroupBy(x => new { x.Employee, x.Date }).Select(g => new { g.Key.Employee, g.Key.Date, EmployeeTable = Employees.Get(g.Key.Employee) }); foreach (var rec in grpEmpDate) { if (lastEmployee != rec.Employee) { lastEmployee = rec.Employee; await priceLookup.EmployeeChanged(rec.EmployeeTable); } search._Employee = rec.Employee; search._Date = rec.Date; pos = Array.BinarySearch(tmLines, search, sort); if (pos < 0) { pos = ~pos; } while (pos < tmLines.Length) { var s = tmLines[pos++]; if (s._Employee != rec.Employee || s._Date != rec.Date) { break; } if (s.Total != 0) { if (lastPayroll != s._PayrollCategory) { payrollCat = (Uniconta.DataModel.EmpPayrollCategory)Payrolls?.Get(s._PayrollCategory); lastPayroll = s._PayrollCategory; } var line = new ProjectTransClient(); line.IsTimeJournal = true; line._Project = s._Project; line._Employee = s._Employee; line._PayrollCategory = s._PayrollCategory; line._PrCategory = payrollCat?._PrCategory; line._Task = s._Task; line._Invoiceable = s._Invoiceable; line._Date = s._Date; if (s._RegistrationType == RegistrationType.Hours) { line._Text = s._Text; line._Unit = (byte)ItemUnit.Hours; if (payrollCat != null && (payrollCat._InternalType == Uniconta.DataModel.InternalType.OverTime || payrollCat._InternalType == Uniconta.DataModel.InternalType.FlexTime)) { line._Qty = payrollCat._Factor == 0 ? s.Total : s.Total * payrollCat._Factor; } else { line._Qty = s.Total; } } else { line._Text = TMJournalLineClient.GetMileageFormattedText(s._Text, s._AddressFrom, s._AddressTo, s._VechicleRegNo); line._Unit = (byte)ItemUnit.km; line._Qty = s.Total; } s.Day1 = s.Total; s.Day2 = s.Day3 = s.Day4 = s.Day5 = s.Day6 = s.Day7 = 0; await priceLookup.GetEmployeePrice(s); line._CostPrice = s.GetCostPricesDayN(1); line._SalesPrice = s.GetSalesPricesDayN(1); if (api.CompanyEntity._DimFromProject) { if (lastProject != s._Project) { project = (Uniconta.DataModel.Project)Projects.Get(s._Project); lastProject = s._Project; } line._Dim1 = project._Dim1; line._Dim2 = project._Dim2; line._Dim3 = project._Dim3; line._Dim4 = project._Dim4; line._Dim5 = project._Dim5; } else { line._Dim1 = rec.EmployeeTable._Dim1; line._Dim2 = rec.EmployeeTable._Dim2; line._Dim3 = rec.EmployeeTable._Dim3; line._Dim4 = rec.EmployeeTable._Dim4; line._Dim5 = rec.EmployeeTable._Dim5; } timetransLst.Add(line); } } } busyIndicator.IsBusy = false; } if (timetransLst != null) { var transLst = ((IEnumerable <ProjectTransClient>)dgProjectTransaction.ItemsSource).ToList(); transLst.AddRange(timetransLst); dgProjectTransaction.SetSource(transLst.ToArray()); } }