private void BuildSalesReport(ref Report report, IEnumerable<object[]> reportData, Guid responsibleID, DateTime fromDate, DateTime toDate) { report.Lables = new List<String> { CRMDealResource.DealAmount, CRMDealResource.DealCount, CRMCommonResource.Part }; var fromDateStr = String.Empty; if (fromDate != DateTime.MinValue) fromDateStr = fromDate.ToShortDateString(); var toDateStr = String.Empty; if (toDate != DateTime.MinValue) toDateStr = toDate.ToShortDateString(); var responsibleStr = String.Empty; if (responsibleID != Guid.Empty) responsibleStr = ASC.Core.CoreContext.UserManager.GetUsers(ASC.Core.SecurityContext.CurrentAccount.ID).DisplayUserName(); var result = reportData.GroupBy(row => { var bidCurrency = Convert.ToString(row[1]); if (bidCurrency != Global.TenantSettings.DefaultCurrency.Abbreviation) row[2] = CurrencyProvider.MoneyConvertToDefaultCurrency(Convert.ToDecimal(row[2]), bidCurrency); return row[0]; }).Select(group => new[] { group.Key, group.Sum(p => Convert.ToDecimal(p[2])), group.Sum(p => Convert.ToDecimal(p[3])), 0 }).ToList(); var totalDeals = result.Sum(row => Convert.ToInt32(row[2])); foreach (var item in result) item[3] = Convert.ToInt32(item[2]) * 100 / totalDeals; report.Data = result.ConvertAll(row => new { title = row[0], amount = row[1], count = row[2], percent = row[3] }); }
private void BuildSalesReport(ref Report report, IEnumerable<object[]> reportData, Guid responsibleID, DateTime fromDate, DateTime toDate) { report.Lables = new List<String> { CRMDealResource.DealAmount, CRMDealResource.DealCount, CRMCommonResource.Part }; var result = reportData.GroupBy(row => { var bidCurrency = Convert.ToString(row[1]); if (bidCurrency != Global.TenantSettings.DefaultCurrency.Abbreviation) row[2] = CurrencyProvider.MoneyConvertToDefaultCurrency(Convert.ToDecimal(row[2]), bidCurrency); return row[0]; }).Select(group => new[] { group.Key, group.Sum(p => Convert.ToDecimal(p[2])), group.Sum(p => Convert.ToDecimal(p[3])), 0 }).ToList(); var totalDeals = result.Sum(row => Convert.ToInt32(row[2])); foreach (var item in result) item[3] = Convert.ToInt32(item[2]) * 100 / totalDeals; report.Data = result.ConvertAll(row => new { title = row[0], amount = row[1], count = row[2], percent = row[3] }); }