示例#1
0
 public async Task <BillingAgingListsResult> GetAsync(string SessionKey, BillingAgingListSearch searchOption, string connectionId)
 {
     return(await authorizationProcessor.DoAuthorizeAsync(SessionKey, async token =>
     {
         var notifier = hubContext.CreateNotifier(connectionId);
         var result = await billingAgingListProcessor.GetAsync(searchOption, notifier, token);
         return new BillingAgingListsResult
         {
             ProcessResult = new ProcessResult {
                 Result = true
             },
             BillingAgingLists = new List <BillingAgingList>(result),
         };
     }, logger, connectionId));
 }
        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());
            }
        }
 public async Task <IEnumerable <BillingAgingList> > GetR(BillingAgingListSearch option)
 => await hubContext.DoAsync(option.ConnectionId, async (notifier, token)
                             => (await billingAgingListProcessor.GetAsync(option, notifier, token)).ToArray());
        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());
        }