public async Task <byte[]> GetAsync(ScheduledPaymentListSearch option, CancellationToken token = default(CancellationToken))
        {
            var companyTask = companyQueryProcessor.GetAsync(new CompanySearch {
                Id = option.CompanyId
            }, token);
            var settingTask = reportSettingQueryProcessor.GetAsync(option.CompanyId, ReportId, token);
            var nameTask    = columnNameSettingQueryProcessor.GetAsync(new ColumnNameSetting {
                CompanyId = option.CompanyId, TableName = nameof(Billing),
            }, token);
            var loadTask = scheduledPaymentListQueryProcessor.GetAsync(option, token);

            var requireSettingLoad = !(option.ReportSettings?.Any() ?? false);

            var tasks = new List <Task>();

            tasks.Add(companyTask);
            if (requireSettingLoad)
            {
                tasks.Add(settingTask);
            }
            tasks.Add(nameTask);
            tasks.Add(loadTask);

            await Task.WhenAll(tasks);

            if (requireSettingLoad)
            {
                option.ReportSettings = settingTask.Result.ToList();
            }
            var company = companyTask.Result.First();
            var naming  = nameTask.Result.ToList();
            var items   = loadTask.Result.ToList();

            if (!items.Any())
            {
                return(null);
            }

            GrapeCity.ActiveReports.SectionReport report;

            if (option.CustomerSummaryFlag)
            {
                var reportTemp = new ScheduledPaymentCustomerListSectionReport();

                reportTemp.SetBasicPageSetting(company.Code, company.Name);
                reportTemp.SetData(items, option.Precision, option.ReportSettings);

                report = reportTemp;
            }
            else
            {
                var reportTemp = new ScheduledPaymentListSectionReport();

                reportTemp.SetBasicPageSetting(company.Code, company.Name);
                reportTemp.SetData(items, option.Precision, option.ReportSettings, naming);

                report = reportTemp;
            }

            report.Name = "入金予定明細表" + DateTime.Today.ToString("yyyyMMdd");
            report.Run();

            return(report.Convert());
        }
        public async Task <byte[]> GetAsync(BillingAgingListSearch option, IProgressNotifier notifier = null, CancellationToken token = default(CancellationToken))
        {
            var companyTask = companyQueryProcessor.GetAsync(new CompanySearch {
                Id = option.CompanyId,
            }, token);
            var appConTask  = applicationControlGetByCompanyQueryProcessor.GetAsync(option.CompanyId, token);
            var settingTask = reportSettingQueryProcessor.GetAsync(option.CompanyId, ReportId, token);
            var loadTask    = billingAgingListProcessor.GetAsync(option, notifier, token);


            var tasks = new List <Task> {
                companyTask, appConTask, settingTask, loadTask
            };

            Task <IEnumerable <Currency> > currenciesTask = null;

            if (option.CurrencyId.HasValue)
            {
                currenciesTask = currencyGetByIdsQueryProcessor.GetByIdsAsync(new[] { option.CurrencyId.Value }, token);
                tasks.Add(currenciesTask);
            }
            await Task.WhenAll(tasks);

            var company   = companyTask.Result.First();
            var appCon    = appConTask.Result;
            var settings  = settingTask.Result.ToList();
            var items     = loadTask.Result.ToList();
            var precition = currenciesTask?.Result.FirstOrDefault().Precision ?? 0;

            if (!items.Any())
            {
                return(null);
            }

            var remianType  = settings.GetReportSetting <ReportAdvanceReceivedType>(BillingRemainType);
            var displayCode = settings.GetReportSetting <ReportDoOrNot>(DisplayCustomerCode) == ReportDoOrNot.Do;


            var processor = remianType == ReportAdvanceReceivedType.UseMatchingAmount ?
                            (IProcessor) new BillingAgingListDocumentProcessor {
                Company             = company,
                Items               = items,
                Option              = option,
                Precision           = precition,
                DisplayCustomerCode = displayCode,
                UseForeignCurrency  = appCon.UseForeignCurrency == 1,
            } : new BillingAgingListReceiptDocumentProcessor {
                Company             = company,
                Items               = items,
                Option              = option,
                Precision           = precition,
                DisplayCustomerCode = displayCode,
                UseForeignCurrency  = appCon.UseForeignCurrency == 1,
            };

            using (var stream = new MemoryStream())
            {
                using (var document = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook))
                {
                    processor.Process(document);
                }
                return(stream.ToArray());
            }
        }
예제 #3
0
 public async Task <IEnumerable <ReportSetting> > GetAsync(int CompanyId, string ReportId, CancellationToken token = default(CancellationToken))
 => await reportSettingQueryProcessor.GetAsync(CompanyId, ReportId, token);
예제 #4
0
        public async Task <byte[]> GetAsync(ArrearagesListSearch option, CancellationToken token = default(CancellationToken))
        {
            var companyTask = companyQueryProcessor.GetAsync(new CompanySearch {
                Id = option.CompanyId,
            }, token);
            var columnTask = columnNameSettingQueryProcessor.GetAsync(new ColumnNameSetting {
                CompanyId = option.CompanyId, TableName = nameof(Billing),
            }, token);
            var settingTask = reportSettingQueryProcessor.GetAsync(option.CompanyId, ReportId, token);
            var loadTask    = arrearagesListQueryProcessor.GetAsync(option, token);
            var ccyCode     = string.IsNullOrEmpty(option.CurrencyCode) ? Constants.DefaultCurrencyCode : option.CurrencyCode;
            var ccyTask     = currencyGetByCodeQueryProcessor.GetByCodeAsync(option.CompanyId, ccyCode);

            var tasks = new List <Task>()
            {
                companyTask, columnTask, loadTask, ccyTask
            };
            var requireSetting = !(option.ReportSettings?.Any() ?? false);

            if (requireSetting)
            {
                tasks.Add(settingTask);
            }

            await Task.WhenAll(tasks);

            var company   = companyTask.Result.First();
            var columns   = columnTask.Result.ToList();
            var items     = loadTask.Result.ToList();
            var precision = ccyTask.Result.Precision;

            if (!items.Any())
            {
                return(null);
            }

            if (requireSetting)
            {
                option.ReportSettings = settingTask.Result.ToList();
            }

            var processor = option.CustomerSummaryFlag ?
                            (IProcessor) new ArrearagesListSummaryDocumentProcessor {
                Company   = company,
                Items     = items,
                Precision = precision,
            } : new ArrearagesListDocumentProcessor {
                Company   = company,
                Items     = items,
                Precision = precision,
                Note1     = columns.FirstOrDefault(x => x.ColumnName == nameof(ArrearagesList.Note1))?.DisplayColumnName ?? "備考1",
            };

            using (var stream = new MemoryStream())
            {
                using (var document = SpreadsheetDocument.Create(stream, SpreadsheetDocumentType.Workbook))
                {
                    processor.Process(document);
                }
                return(stream.ToArray());
            }
        }
예제 #5
0
        public async Task <byte[]> GetAsync(BillingSearch option, CancellationToken token = default(CancellationToken))
        {
            var companyTask = companyQueryProcessor.GetAsync(new CompanySearch {
                Id = option.CompanyId,
            }, token);
            var loadTask   = billingSearchQueryProcessor.GetAsync(option, token);
            var reportTask = reportSettingQueryProcessor.GetAsync(option.CompanyId, ReportId, token);
            var gridTask   = gridSettingQueryProcessor.GetAsync(new GridSettingSearch {
                CompanyId = option.CompanyId, GridId = GridId.BillingSearch,
            }, token);

            await Task.WhenAll(companyTask, gridTask, reportTask, loadTask);

            var company = companyTask.Result.First();
            var items   = loadTask.Result.ToList();

            if (!items.Any())
            {
                return(null);
            }

            var settings = reportTask.Result.ToList();
            var gridDic  = gridTask.Result.ToDictionary(x => x.ColumnName);
            var orders   = items.AsQueryable().OrderBy(x => 0);


            var departmentSubtotal = settings.GetReportSetting <ReportDoOrNot>(DepartmentSubtotal) == ReportDoOrNot.Do;
            var staffSubtotal      = settings.GetReportSetting <ReportDoOrNot>(StaffSubtotal) == ReportDoOrNot.Do;
            var customerSubtotal   = settings.GetReportSetting <ReportDoOrNot>(CustomerSubtotal) == ReportDoOrNot.Do;
            var unitPrice          = settings.GetReportSetting <ReportUnitPrice>(UnitPrice);
            var outputOrder        = settings.GetReportSetting <ReportOutputOrder>(OutputOrder);
            var orderDateType      = settings.GetReportSetting <ReportBaseDate>(OrderDateType);


            var billReport = new BillingServiceSearchSectionReport();

            billReport.SetBasicPageSetting(company.Code, company.Name);
            billReport.Name          = $"請求データ一覧{DateTime.Today:yyyyMMdd}";
            billReport.lblNote1.Text = gridDic["Note1"].ColumnNameJp;

            switch (unitPrice)
            {
            case ReportUnitPrice.Per1000:       billReport.UnitPrice = 1000M;    break;

            case ReportUnitPrice.Per10000:      billReport.UnitPrice = 10000M;    break;

            case ReportUnitPrice.Per1000000:    billReport.UnitPrice = 1000000M;    break;

            default:                            billReport.UnitPrice = 1M;    break;
            }

            if (departmentSubtotal)
            {
                orders = orders.ThenBy(x => x.DepartmentCode);
            }
            else
            {
                billReport.gfDepartmentTotal.Visible = false;
            }

            if (staffSubtotal)
            {
                orders = orders.ThenBy(x => x.StaffCode);
            }
            else
            {
                billReport.gfStaffTotal.Visible = false;
            }

            if (customerSubtotal)
            {
                orders = orders.ThenBy(x => x.CustomerCode);
            }
            else
            {
                billReport.gfCustomerTotal.Visible = false;
            }

            switch (outputOrder)
            {
            case ReportOutputOrder.ByCustomerCode:      orders = orders.ThenBy(x => x.CustomerCode); break;

            case ReportOutputOrder.ByDate:
                switch (orderDateType)
                {
                case ReportBaseDate.BilledAt:       orders = orders.ThenBy(x => x.BilledAt);    break;

                case ReportBaseDate.SalesAt:        orders = orders.ThenBy(x => x.SalesAt);     break;

                case ReportBaseDate.ClosingAt:      orders = orders.ThenBy(x => x.ClosingAt);   break;

                case ReportBaseDate.DueAt:          orders = orders.ThenBy(x => x.DueAt);       break;
                }
                break;

            case ReportOutputOrder.ById:                orders = orders.ThenBy(x => x.Id);          break;
            }

            billReport.DataSource = orders.ToList();
            billReport.Run();

            return(billReport.Convert());
        }
        public async Task <byte[]> GetAsync(ArrearagesListSearch option, CancellationToken token = default(CancellationToken))
        {
            var companyTask = companyQueryProcessor.GetAsync(new CompanySearch {
                Id = option.CompanyId,
            }, token);
            var columnTask = columnNameSettingQueryProcessor.GetAsync(new ColumnNameSetting {
                CompanyId = option.CompanyId, TableName = nameof(Billing),
            }, token);
            var settingTask = reportSettingQueryProcessor.GetAsync(option.CompanyId, ReportId, token);
            var loadTask    = arrearagesListQueryProcessor.GetAsync(option, token);

            var tasks = new List <Task>()
            {
                companyTask, columnTask, loadTask
            };
            var requireSetting = !(option.ReportSettings?.Any() ?? false);

            if (requireSetting)
            {
                tasks.Add(settingTask);
            }

            await Task.WhenAll(tasks);

            var company = companyTask.Result.First();
            var columns = columnTask.Result.ToList();
            var items   = loadTask.Result.ToList();

            if (!items.Any())
            {
                return(null);
            }

            if (requireSetting)
            {
                option.ReportSettings = settingTask.Result.ToList();
            }

            GrapeCity.ActiveReports.SectionReport report;
            var title = $"滞留明細一覧表{DateTime.Today:yyyyMMdd}";

            if (option.CustomerSummaryFlag)
            {
                var reportTemp = new ArrearagesCustomerListReport();
                reportTemp.SetBasicPageSetting(company.Code, company.Name);
                reportTemp.SetData(items, option.Precision, option.ReportSettings);

                report = reportTemp;
            }
            else
            {
                var reportTemp = new ArrearagesListReport();
                reportTemp.SetBasicPageSetting(company.Code, company.Name);
                reportTemp.SetData(items, option.Precision, option.ReportSettings, columns);

                report = reportTemp;
            }
            report.Name = title;
            report.Run();

            return(report.Convert());
        }
        public async Task <byte[]> GetAsync(BillingAgingListSearch option, IProgressNotifier notifier = null, CancellationToken token = default(CancellationToken))
        {
            var companyTask = companyQueryProcessor.GetAsync(new CompanySearch {
                Id = option.CompanyId,
            }, token);
            var appConTask  = applicationControlGetByCompanyQueryProcessor.GetAsync(option.CompanyId, token);
            var settingTask = reportSettingQueryProcessor.GetAsync(option.CompanyId, ReportId, token);
            var loadTask    = billingAgingListProcessor.GetAsync(option, notifier, token);

            await Task.WhenAll(companyTask, appConTask, settingTask, loadTask);

            var company  = companyTask.Result.First();
            var appCon   = appConTask.Result;
            var settings = settingTask.Result.ToList();
            var items    = loadTask.Result.ToList();

            if (!items.Any())
            {
                return(null);
            }

            var remianType  = settings.GetReportSetting <ReportAdvanceReceivedType>(BillingRemainType);
            var displayCode = settings.GetReportSetting <ReportDoOrNot>(DisplayCustomerCode) == ReportDoOrNot.Do;

            var title      = "請求残高年齢表";
            var outputName = $"{title}{DateTime.Today:yyyyMMdd}";

            GrapeCity.ActiveReports.SectionReport report;
            if (remianType == ReportAdvanceReceivedType.UseMatchingAmount)
            {
                var reportTemp = new BillingAgingListSectionReport1();
                reportTemp.ConsiderCustomerGroup     = option.ConsiderCustomerGroup;
                reportTemp.DisplayCustomerCode       = displayCode;
                reportTemp.RequireStaffSubtotal      = option.RequireStaffSubtotal;
                reportTemp.RequireDepartmentSubtotal = option.RequireDepartmentSubtotal;

                reportTemp.SetBasicPageSetting(company.Code, company.Name);
                reportTemp.lblMonthlyRemain0.Text = option.MonthlyRemain0;
                reportTemp.lblMonthlyRemain1.Text = option.MonthlyRemain1;
                reportTemp.lblMonthlyRemain2.Text = option.MonthlyRemain2;
                reportTemp.lblMonthlyRemain3.Text = option.MonthlyRemain3;
                reportTemp.SetData(items, option.Precision, appCon.UseForeignCurrency);
                report = reportTemp;
            }
            else
            {
                var reportTemp = new BillingAgingListSectionReport();
                reportTemp.ConsiderCustomerGroup     = option.ConsiderCustomerGroup;
                reportTemp.DisplayCutsomerCode       = displayCode;    // typo
                reportTemp.RequireStaffSubtotal      = option.RequireStaffSubtotal;
                reportTemp.RequireDepartmentSubtotal = option.RequireDepartmentSubtotal;
                reportTemp.SetBasicPageSetting(company.Code, company.Name);
                reportTemp.lblMonthlyRemain0.Text = option.MonthlyRemain0;
                reportTemp.lblMonthlyRemain1.Text = option.MonthlyRemain1;
                reportTemp.lblMonthlyRemain2.Text = option.MonthlyRemain2;
                reportTemp.lblMonthlyRemain3.Text = option.MonthlyRemain3;
                reportTemp.SetData(items, option.Precision, appCon.UseForeignCurrency);
                report = reportTemp;
            }
            report.Name          = outputName;
            report.Document.Name = outputName;
            report.Run();
            return(report.Convert());
        }