Ejemplo n.º 1
0
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            DateTime?beginDate        = InternalDocumentsReport.BeginDate;
            DateTime?endDate          = InternalDocumentsReport.EndDate;
            var      documentRegister = InternalDocumentsReport.DocumentRegister;
            bool     needRun          = true;

            if (!beginDate.HasValue && !endDate.HasValue)
            {
                var dialogResult = Functions.Module.ShowDocumentRegisterReportDialog(Resources.InternalDocumentsReport,
                                                                                     Docflow.DocumentRegister.DocumentFlow.Inner,
                                                                                     documentRegister, Constants.InternalDocumentsReport.HelpCode);
                needRun          = dialogResult.RunReport;
                beginDate        = dialogResult.PeriodBegin;
                endDate          = dialogResult.PeriodEnd;
                documentRegister = dialogResult.DocumentRegister;
            }

            if (needRun)
            {
                InternalDocumentsReport.BeginDate        = beginDate.Value;
                InternalDocumentsReport.EndDate          = endDate.Value;
                InternalDocumentsReport.DocumentRegister = documentRegister;
            }
            else
            {
                e.Cancel = true;
            }
        }
Ejemplo n.º 2
0
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            if (DocumentUsageReport.PeriodBegin.HasValue && DocumentUsageReport.PeriodEnd.HasValue)
            {
                return;
            }

            var dialog = Dialogs.CreateInputDialog(Resources.DocumentUsageReportDialog);

            dialog.HelpCode = Constants.DocumentUsageReport.HelpCode;
            dialog.Buttons.AddOkCancel();

            CommonLibrary.IDateDialogValue periodBegin = null;
            CommonLibrary.IDateDialogValue periodEnd   = null;
            INavigationDialogValue <Company.IDepartment> department = null;

            // Период.
            var today = Calendar.UserToday;

            if (!DocumentUsageReport.PeriodBegin.HasValue)
            {
                periodBegin = dialog.AddDate(Resources.DocumentUsagePeriodBegin, true, today.AddDays(-30));
            }
            if (!DocumentUsageReport.PeriodEnd.HasValue)
            {
                periodEnd = dialog.AddDate(Resources.DocumentUsagePeriodEnd, true, today);
            }
            if (DocumentUsageReport.Department == null)
            {
                department = dialog.AddSelect(Resources.Department, false, Company.Departments.Null)
                             .Where(x => x.Status == CoreEntities.DatabookEntry.Status.Active);
            }

            dialog.SetOnButtonClick((args) =>
            {
                Functions.Module.CheckReportDialogPeriod(args, periodBegin, periodEnd);
            });

            if (dialog.Show() != DialogButtons.Ok)
            {
                e.Cancel = true;
                return;
            }
            if (!DocumentUsageReport.PeriodBegin.HasValue)
            {
                DocumentUsageReport.PeriodBegin       = Docflow.PublicFunctions.Module.Remote.GetTenantDateTimeFromUserDay(periodBegin.Value.Value);
                DocumentUsageReport.ClientPeriodBegin = periodBegin.Value.Value;
            }
            if (!DocumentUsageReport.PeriodEnd.HasValue)
            {
                DocumentUsageReport.PeriodEnd       = periodEnd.Value.Value.EndOfDay().FromUserTime();
                DocumentUsageReport.ClientPeriodEnd = periodEnd.Value.Value;
            }
            if (DocumentUsageReport.Department == null)
            {
                DocumentUsageReport.Department = department.Value;
            }
        }
Ejemplo n.º 3
0
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            // Если отчёт вызывается из документа или совещания (свойство Документ или Совещание заполнено), то не показывать диалог с выбором параметров отчёта.
            if (ActionItemsExecutionReport.Document != null || ActionItemsExecutionReport.Meeting != null)
            {
                return;
            }

            if (ActionItemsExecutionReport.BeginDate.HasValue && ActionItemsExecutionReport.EndDate.HasValue &&
                ActionItemsExecutionReport.ClientEndDate.HasValue)
            {
                return;
            }

            var personalSettings = Docflow.PublicFunctions.PersonalSetting.GetPersonalSettings(null);
            var dialog           = Dialogs.CreateInputDialog(Resources.ActionItemsExecutionReport);

            dialog.HelpCode = Constants.ActionItemsExecutionReport.HelpCode;

            var settingsStartDate = Docflow.PublicFunctions.PersonalSetting.GetStartDate(personalSettings);
            var beginDate         = dialog.AddDate(Resources.PeriodFrom, true, settingsStartDate ?? Calendar.UserToday);
            var settingsEndDate   = Docflow.PublicFunctions.PersonalSetting.GetEndDate(personalSettings);
            var endDate           = dialog.AddDate(Resources.PeriodTo, true, settingsEndDate ?? Calendar.UserToday);

            var author       = dialog.AddSelect(Resources.AssignedBy, false, Company.Employees.Null);
            var businessUnit = dialog.AddSelect(Docflow.Resources.BusinessUnit, false, Company.BusinessUnits.Null);
            var department   = dialog.AddSelect(Resources.Department, false, Company.Departments.Null);
            var performer    = dialog.AddSelect(Resources.ResponsiblePerformer, false, Company.Employees.Null);
            var meeting      = dialog.AddSelect(Meetings.Meetings.Info.LocalizedName, false, Meetings.Meetings.Null);

            meeting.IsVisible = ActionItemsExecutionReport.IsMeetingsCoverContext == true;

            dialog.SetOnButtonClick((args) =>
            {
                Docflow.PublicFunctions.Module.CheckReportDialogPeriod(args, beginDate, endDate);
            });

            dialog.Buttons.AddOkCancel();

            if (dialog.Show() == DialogButtons.Ok)
            {
                ActionItemsExecutionReport.BeginDate     = beginDate.Value.Value;
                ActionItemsExecutionReport.ClientEndDate = endDate.Value.Value;
                ActionItemsExecutionReport.EndDate       = endDate.Value.Value.EndOfDay();
                ActionItemsExecutionReport.Author        = author.Value;
                ActionItemsExecutionReport.BusinessUnit  = businessUnit.Value;
                ActionItemsExecutionReport.Department    = department.Value;
                ActionItemsExecutionReport.Performer     = performer.Value;
                ActionItemsExecutionReport.Meeting       = meeting.Value;
            }
            else
            {
                e.Cancel = true;
            }
        }
Ejemplo n.º 4
0
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            var differentBusinessUnits = MailRegisterReport.OutgoingDocuments.Select(d => d.BusinessUnit).Distinct().ToList();

            if (differentBusinessUnits.Count > 1)
            {
                Dialogs.ShowMessage(Resources.SelectedMailsHasDifferenBusinessUnits,
                                    Resources.SelectOutgoingDocumentsWithSameBusinessUnit,
                                    MessageType.Warning);
                e.Cancel = true;
                return;
            }
        }
Ejemplo n.º 5
0
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            var connectedBoxes = ExchangeCore.PublicFunctions.BusinessUnitBox.Remote.GetActiveBoxes();

            if (!connectedBoxes.Any())
            {
                Dialogs.ShowMessage(Parties.Counterparties.Resources.InvitationBoxesNotFound,
                                    Parties.Resources.ContactAdministrator,
                                    MessageType.Error);
                e.Cancel = true;
                return;
            }
            var userSettings        = Docflow.Functions.PersonalSetting.GetPersonalSettings(Sungero.Company.Employees.Current);
            var defaultBusinessUnit = userSettings != null ? userSettings.BusinessUnit : Sungero.Company.BusinessUnits.Null;

            var resources = Sungero.Docflow.Reports.Resources.ExchangeServiceDocumentReport;
            var dialog    = Dialogs.CreateInputDialog(resources.ExchangeServiceDocumentReportName);

            dialog.HelpCode = Constants.ExchangeServiceDocumentReport.HelpCode;
            dialog.Buttons.AddOkCancel();

            var businessUnit            = dialog.AddSelect(Resources.BusinessUnit, false, defaultBusinessUnit);
            var department              = dialog.AddSelect(Resources.Department, false, Company.Departments.Null);
            var employee                = dialog.AddSelect(Resources.Employee, false, Company.Employees.Null);
            var counterparty            = dialog.AddSelect(resources.Counterparty, false, Parties.Counterparties.Null);
            var sendDateFrom            = dialog.AddDate(resources.SendDateFrom, false);
            var sendDateTo              = dialog.AddDate(resources.SendDateTo, false);
            var defaultExchangeServices = ExchangeCore.PublicFunctions.BusinessUnitBox.Remote.GetUsedServicesOfBox().ToArray();
            var exchangeServices        = dialog.AddSelectMany(Parties.Resources.WizardExchangeServices, true, defaultExchangeServices)
                                          .From(defaultExchangeServices);

            dialog.SetOnButtonClick((args) =>
            {
                Docflow.PublicFunctions.Module.CheckReportDialogPeriod(args, sendDateFrom, sendDateTo);
            });

            if (dialog.Show() == DialogButtons.Ok)
            {
                ExchangeServiceDocumentReport.SendDateFrom = sendDateFrom.Value;
                ExchangeServiceDocumentReport.SendDateTo   = sendDateTo.Value;
                ExchangeServiceDocumentReport.BusinessUnit = businessUnit.Value;
                ExchangeServiceDocumentReport.Department   = department.Value;
                ExchangeServiceDocumentReport.Employee     = employee.Value;
                ExchangeServiceDocumentReport.Counterparty = counterparty.Value;
                ExchangeServiceDocumentReport.ExchangeService.AddRange(exchangeServices.Value.ToList());
            }
            else
            {
                e.Cancel = true;
            }
        }
Ejemplo n.º 6
0
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            if (!DocumentReturnReport.NeedShowDialog ?? false)
            {
                return;
            }

            // Задать минимальную и максимальную даты. Формат yyyy-MM-dd нужен для правильного парсинга на ru и en локализациях.
            DocumentReturnReport.MinDeliveryDate = DateTime.Parse("1753-01-01");
            DocumentReturnReport.MaxDeliveryDate = DateTime.Parse("9999-12-31");

            var userSettings = Docflow.PublicFunctions.PersonalSetting.GetPersonalSettings(Sungero.Company.Employees.Current);
            var dialog       = Dialogs.CreateInputDialog(Resources.DocumentReturnReport);

            dialog.HelpCode = Constants.DocumentReturnReport.HelpCode;

            var defaultBusinessUnit = (userSettings != null) ? userSettings.BusinessUnit : Sungero.Company.BusinessUnits.Null;

            var businessUnit     = dialog.AddSelect(Docflow.Resources.BusinessUnit, false, defaultBusinessUnit);
            var department       = dialog.AddSelect(Resources.Department, false, Company.Departments.Null);
            var employee         = dialog.AddSelect(Resources.Employee, false, Company.Employees.Null);
            var deliveryDateFrom = dialog.AddDate(Resources.DeliveredFrom, false);
            var deliveryDateTo   = dialog.AddDate(Resources.DeliveredTo, false);

            dialog.SetOnButtonClick((args) =>
            {
                Docflow.PublicFunctions.Module.CheckReportDialogPeriod(args, deliveryDateFrom, deliveryDateTo);
            });

            dialog.Buttons.AddOkCancel();
            if (dialog.Show() == DialogButtons.Ok)
            {
                var dateFrom = deliveryDateFrom.Value;
                DocumentReturnReport.DeliveryDateFrom = dateFrom.HasValue ? dateFrom : DocumentReturnReport.MinDeliveryDate;

                var dateTo = deliveryDateTo.Value;
                DocumentReturnReport.DeliveryDateTo = dateTo.HasValue ? dateTo.Value.EndOfDay() : DocumentReturnReport.MaxDeliveryDate;

                DocumentReturnReport.BusinessUnit = businessUnit.Value;
                DocumentReturnReport.Department   = department.Value;
                DocumentReturnReport.Employee     = employee.Value;
            }
            else
            {
                e.Cancel = true;
            }
        }
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            if (AssignmentCompletionReport.PeriodBegin.HasValue && AssignmentCompletionReport.PeriodEnd.HasValue)
            {
                return;
            }

            // Запросить параметры.
            var dialog = Dialogs.CreateInputDialog(Resources.AssignmentCompletionReportDialog);

            dialog.HelpCode = Constants.AssignmentCompletionReport.HelpCode;
            dialog.Buttons.AddOkCancel();

            CommonLibrary.IDateDialogValue periodBegin = null;
            CommonLibrary.IDateDialogValue periodEnd   = null;
            INavigationDialogValue <Company.IDepartment>   department   = null;
            INavigationDialogValue <Company.IEmployee>     performer    = null;
            INavigationDialogValue <Company.IBusinessUnit> businessUnit = null;

            CommonLibrary.IBooleanDialogValue loadOldAssignments = null;

            // Период.
            var today = Calendar.UserToday;

            if (!AssignmentCompletionReport.PeriodBegin.HasValue)
            {
                periodBegin = dialog.AddDate(Resources.DocumentUsagePeriodBegin, true, today.AddDays(-30));
            }
            if (!AssignmentCompletionReport.PeriodEnd.HasValue)
            {
                periodEnd = dialog.AddDate(Resources.DocumentUsagePeriodEnd, true, today);
            }

            // НОР.
            if (AssignmentCompletionReport.BusinessUnit == null)
            {
                businessUnit = dialog.AddSelect(Resources.BusinessUnit, false, Company.BusinessUnits.Null);
            }

            // Подразделение.
            if (AssignmentCompletionReport.Department == null)
            {
                department = dialog.AddSelect(Resources.Department, false, Company.Departments.Null);
            }

            // Сотрудник.
            if (AssignmentCompletionReport.Performer == null)
            {
                performer = dialog.AddSelect(Resources.Employee, false, Company.Employees.Null);
            }

            if (AssignmentCompletionReport.LoadOldAssignments == null)
            {
                loadOldAssignments = dialog.AddBoolean(Resources.AddAssignmentsWithDeadlineBeforePeriodBegins, true);
            }

            dialog.SetOnButtonClick((args) =>
            {
                Functions.Module.CheckReportDialogPeriod(args, periodBegin, periodEnd);
            });

            if (dialog.Show() != DialogButtons.Ok)
            {
                e.Cancel = true;
                return;
            }

            if (!AssignmentCompletionReport.PeriodBegin.HasValue)
            {
                AssignmentCompletionReport.PeriodBegin = periodBegin.Value;
            }
            if (!AssignmentCompletionReport.PeriodEnd.HasValue)
            {
                AssignmentCompletionReport.ClientPeriodEnd = periodEnd.Value.Value;
                AssignmentCompletionReport.PeriodEnd       = periodEnd.Value.Value.EndOfDay();
            }

            if (AssignmentCompletionReport.BusinessUnit == null)
            {
                AssignmentCompletionReport.BusinessUnit = businessUnit.Value;
            }

            if (AssignmentCompletionReport.Department == null)
            {
                AssignmentCompletionReport.Department = department.Value;
            }

            if (AssignmentCompletionReport.Performer == null)
            {
                AssignmentCompletionReport.Performer = Users.As(performer.Value);
            }

            if (AssignmentCompletionReport.LoadOldAssignments == null)
            {
                AssignmentCompletionReport.LoadOldAssignments = loadOldAssignments.Value;
            }
        }
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            if (RegistrationSettingReport.BusinessUnit != null && !string.IsNullOrWhiteSpace(RegistrationSettingReport.Direction))
            {
                return;
            }

            RegistrationSettingReport.ParamsDescriprion = string.Empty;

            INavigationDialogValue <IBusinessUnit> businessUnit = null;

            CommonLibrary.IDropDownDialogValue documentFlow = null;

            var dialog = Dialogs.CreateInputDialog(Docflow.Resources.RegistrationSettingReport);

            dialog.HelpCode = Constants.RegistrationSettingReport.HelpCode;
            dialog.Buttons.AddOkCancel();

            // НОР.
            if (RegistrationSettingReport.BusinessUnit == null)
            {
                businessUnit = dialog.AddSelect(Docflow.Resources.BusinessUnit, false, BusinessUnits.Null);
            }

            // Документопоток.
            var avalableDirections = new List <Enumeration>()
            {
                RegistrationSetting.DocumentFlow.Incoming, RegistrationSetting.DocumentFlow.Outgoing,
                RegistrationSetting.DocumentFlow.Inner, RegistrationSetting.DocumentFlow.Contracts
            };
            var documentFlows = avalableDirections.Select(a => RegistrationSettings.Info.Properties.DocumentFlow.GetLocalizedValue(a)).ToList();

            if (string.IsNullOrWhiteSpace(RegistrationSettingReport.Direction))
            {
                documentFlow = dialog.AddSelect(Docflow.Resources.Direction, false).From(documentFlows.ToArray());
            }
            var filterDepartmentsForBusinessUnits = dialog.AddBoolean(Reports.Resources.ApprovalRulesConsolidatedReport.FilterDepartmentsForBusinessUnitsDialogCheckBox, true);

            // Показ диалога.
            if (dialog.Show() == DialogButtons.Ok)
            {
                if (RegistrationSettingReport.BusinessUnit == null && businessUnit.Value != null)
                {
                    RegistrationSettingReport.BusinessUnit = businessUnit.Value;
                }

                if (string.IsNullOrWhiteSpace(RegistrationSettingReport.Direction))
                {
                    RegistrationSettingReport.DirectionLabel = documentFlow.Value;
                    RegistrationSettingReport.Direction      = documentFlow.Value == null ? string.Empty : avalableDirections[documentFlows.IndexOf(documentFlow.Value)].Value;
                }

                if (filterDepartmentsForBusinessUnits != null)
                {
                    RegistrationSettingReport.FilterDepartmentsForBusinessUnits = filterDepartmentsForBusinessUnits.Value;
                }
            }
            else
            {
                e.Cancel = true;
            }

            // Получить адресс сервиса гиперссылок.
            var userHyperlink = Sungero.Domain.Client.Hyperlinks.HyperlinkExtensions.CreateHyperlink(Users.Current);

            RegistrationSettingReport.HyperlinkServer = string.Format("{0}://{1}{2}", userHyperlink.Scheme, userHyperlink.Host, userHyperlink.LocalPath);
        }
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            // Диалог.
            var dialog = Dialogs.CreateInputDialog(Docflow.Resources.ApprovalRulesConsolidatedReport);

            dialog.HelpCode = Constants.ApprovalRulesConsolidatedReport.HelpCode;
            var bussinesUnit = dialog.AddSelect(Docflow.Resources.BusinessUnit, false, Sungero.Company.BusinessUnits.Null)
                               .From(Company.PublicFunctions.BusinessUnit.Remote.GetBusinessUnits().ToArray());
            var department = dialog.AddSelect(Docflow.Resources.Department, false, Sungero.Company.Departments.Null)
                             .From(this.GetFilteredDepartments(null, false).ToArray());
            var includeSubsidiary = dialog.AddBoolean(Reports.Resources.ApprovalRulesConsolidatedReport.IncludeSubsidiary, true);
            var filterDepartmentsForBusinessUnits = dialog.AddBoolean(Reports.Resources.ApprovalRulesConsolidatedReport.FilterDepartmentsForBusinessUnitsDialogCheckBox, true);
            var availabledocumentFlows            = new List <Enumeration?>()
            {
                Docflow.DocumentKind.DocumentFlow.Incoming, Docflow.DocumentKind.DocumentFlow.Outgoing,
                Docflow.DocumentKind.DocumentFlow.Inner, Docflow.DocumentKind.DocumentFlow.Contracts
            };
            var documentFlows = availabledocumentFlows.Select(a => DocumentKinds.Info.Properties.DocumentFlow.GetLocalizedValue(a)).ToList();
            var documentFlow  = dialog.AddSelect(Docflow.Resources.Direction, false).From(documentFlows.ToArray());
            var documentKind  = dialog.AddSelect(Docflow.Resources.DocumentKind, false, Sungero.Docflow.DocumentKinds.Null);
            var category      = dialog.AddSelect(Docflow.Resources.Category, false, Sungero.Docflow.DocumentGroupBases.Null);

            // События.
            bussinesUnit.SetOnValueChanged((arg) =>
            {
                if (Equals(arg.NewValue, arg.OldValue))
                {
                    return;
                }

                if (department.Value != null && !Equals(arg.NewValue, department.Value.BusinessUnit))
                {
                    department.Value = Sungero.Company.Departments.Null;
                }

                department.From(this.GetFilteredDepartments(arg.NewValue, filterDepartmentsForBusinessUnits.Value));
            });

            department.SetOnValueChanged((arg) =>
            {
                if (!Equals(arg.NewValue, arg.OldValue) && arg.NewValue != null)
                {
                    bussinesUnit.Value = arg.NewValue.BusinessUnit;
                }
            });

            documentFlow.SetOnValueChanged((arg) =>
            {
                if (!Equals(arg.NewValue, arg.OldValue))
                {
                    var docFlow = !string.IsNullOrEmpty(arg.NewValue) ?
                                  availabledocumentFlows[documentFlows.IndexOf(arg.NewValue)] : null;
                    documentKind.From(this.GetFilteredDocumentKinds(docFlow));
                    category.From(this.GetFilteredCategories(documentKind.Value, docFlow));
                    if (documentKind.Value != null && documentKind.Value.DocumentFlow != docFlow)
                    {
                        documentKind.Value = Sungero.Docflow.DocumentKinds.Null;
                        category.Value     = Sungero.Docflow.DocumentGroupBases.Null;
                    }
                }
            });

            documentKind.SetOnValueChanged((arg) =>
            {
                if (!Equals(arg.NewValue, arg.OldValue))
                {
                    var docFlow = !string.IsNullOrEmpty(documentFlow.Value) ?
                                  availabledocumentFlows[documentFlows.IndexOf(documentFlow.Value)] : null;
                    category.From(this.GetFilteredCategories(arg.NewValue, docFlow));
                    if (arg.NewValue != null)
                    {
                        documentFlow.Value = DocumentKinds.Info.Properties.DocumentFlow.GetLocalizedValue(arg.NewValue.DocumentFlow);
                    }

                    if (category.Value != null && category.Value.DocumentKinds.Any() &&
                        !category.Value.DocumentKinds.Any(x => Equals(x.DocumentKind, arg.NewValue)))
                    {
                        category.Value = Sungero.Docflow.DocumentGroupBases.Null;
                    }
                }
            });

            category.SetOnValueChanged((arg) =>
            {
                if (!Equals(arg.NewValue, arg.OldValue))
                {
                    if (arg.NewValue != null && arg.NewValue.DocumentKinds.Count == 1)
                    {
                        documentKind.Value = arg.NewValue.DocumentKinds.Single().DocumentKind;
                    }
                }
            });

            filterDepartmentsForBusinessUnits
            .SetOnValueChanged((arg) =>
            {
                department.From(this.GetFilteredDepartments(bussinesUnit.Value, arg.NewValue));
            });

            // Показ диалога.
            if (dialog.Show() == DialogButtons.Ok)
            {
                if (bussinesUnit.Value != null)
                {
                    ApprovalRulesConsolidatedReport.BusinessUnit = bussinesUnit.Value;
                }
                if (department.Value != null)
                {
                    ApprovalRulesConsolidatedReport.Department = department.Value;
                }
                if (includeSubsidiary != null)
                {
                    ApprovalRulesConsolidatedReport.IncludeSubsidiary = includeSubsidiary.Value;
                }
                if (filterDepartmentsForBusinessUnits != null)
                {
                    ApprovalRulesConsolidatedReport.FilterDepartmentsForBusinessUnits = filterDepartmentsForBusinessUnits.Value;
                }
                if (!string.IsNullOrEmpty(documentFlow.Value))
                {
                    ApprovalRulesConsolidatedReport.DocumentFlow = documentFlow.Value;
                }
                if (documentKind != null)
                {
                    ApprovalRulesConsolidatedReport.DocumentKind = documentKind.Value;
                }
                if (category != null)
                {
                    ApprovalRulesConsolidatedReport.Category = category.Value;
                }
            }
            else
            {
                e.Cancel = true;
            }
        }
Ejemplo n.º 10
0
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            // Не строить отчет, если он вызван не от документа или не от задачи.
            if (AcquaintanceReport.Document == null && AcquaintanceReport.Task == null)
            {
                e.Cancel = true;
            }

            // Не показывать диалог, если задан документ, версия и по кому формировать отчет.
            if (AcquaintanceReport.Document != null &&
                !string.IsNullOrWhiteSpace(AcquaintanceReport.DocumentVersion) &&
                !string.IsNullOrWhiteSpace(AcquaintanceReport.EmployeesAcquaintanceStatus))
            {
                return;
            }

            // Не показывать диалог, если задана задача и по кому формировать отчет.
            if (AcquaintanceReport.Task != null &&
                !string.IsNullOrWhiteSpace(AcquaintanceReport.EmployeesAcquaintanceStatus))
            {
                return;
            }

            // Показать диалог запроса параметров.
            var dialog = Dialogs.CreateInputDialog(Reports.Resources.AcquaintanceReport.AcquaintanceReportName);

            dialog.HelpCode = Constants.AcquaintanceReport.DialogHelpCode;

            // Контрол "Подразделение".
            var department            = dialog.AddSelect(Resources.Department, false, Company.Departments.Null);
            var includeSubDepartments = dialog.AddBoolean(Reports.Resources.AcquaintanceReport.IncludeSubDepartments, true);

            // Контрол отбора по статусу выполнения.
            var acquaintanceStatuses = new string[] { Reports.Resources.AcquaintanceReport.ForAllPerformers,
                                                      Reports.Resources.AcquaintanceReport.ForNotAcquaintedPerformers,
                                                      Reports.Resources.AcquaintanceReport.ForAcquaintedPerformers };
            var dialogEmployeesAcquaintanceStatus = dialog.AddSelect(Reports.Resources.AcquaintanceReport.DialogAcquaintanceStatuses,
                                                                     true,
                                                                     Reports.Resources.AcquaintanceReport.ForAllPerformers)
                                                    .From(acquaintanceStatuses);

            // Контрол "Версия".
            CommonLibrary.IDropDownDialogValue dialogVersion = null;
            if (this.AcquaintanceReport.Document != null && this.AcquaintanceReport.Document.HasVersions)
            {
                var versions          = this.AcquaintanceReport.Document.Versions;
                var versionsWithTasks = new List <Content.IElectronicDocumentVersions>();

                var tasks = Docflow.PublicFunctions.OfficialDocument.Remote.GetAcquaintanceTasks(this.AcquaintanceReport.Document);

                foreach (var version in versions)
                {
                    var filteredTasks = tasks
                                        .Where(t => t.AcquaintanceVersions.First(v => v.IsMainDocument == true).Number == version.Number)
                                        .ToList();
                    if (filteredTasks.Any())
                    {
                        versionsWithTasks.Add(version);
                    }
                }

                if (versionsWithTasks.Any())
                {
                    var dialogVersions = versionsWithTasks.Select(v => string.Format("{0} {1}", Docflow.Resources.Version, v.Number.ToString()))
                                         .ToArray();
                    dialogVersion = dialog.AddSelect(Docflow.Resources.Version, true, dialogVersions.LastOrDefault()).From(dialogVersions);
                }
            }

            dialog.Buttons.AddOkCancel();
            if (dialog.Show() == DialogButtons.Ok)
            {
                if (dialogVersion != null && dialogVersion.Value != null)
                {
                    AcquaintanceReport.DocumentVersion = dialogVersion.Value.Replace(string.Format("{0} ", Docflow.Resources.Version), string.Empty);
                }

                AcquaintanceReport.Department = department.Value;
                AcquaintanceReport.EmployeesAcquaintanceStatus = dialogEmployeesAcquaintanceStatus.Value;
                AcquaintanceReport.IncludeSubDepartments       = includeSubDepartments.Value;
            }
            else
            {
                e.Cancel = true;
            }
        }
        public override void BeforeExecute(Sungero.Reporting.Client.BeforeExecuteEventArgs e)
        {
            // При запуске из диалога регистрации передается дата регистрации. Запрашивать доп.параметры не требуется.
            if (SkippedNumbersReport.RegistrationDate.HasValue || !string.IsNullOrEmpty(SkippedNumbersReport.Period))
            {
                return;
            }

            // Проверить, передан ли журнал регистрации.
            var reportDocumentRgister = SkippedNumbersReport.DocumentRegister;

            var description = string.Empty;

            INavigationDialogValue <IDocumentRegister> documentRegister = null;

            var dialog = Dialogs.CreateInputDialog(Docflow.Resources.SkippedNumbersReport);

            dialog.HelpCode = Constants.SkippedNumbersReport.HelpCode;

            // Журнал регистрации.
            var documentRegisterSpecified = SkippedNumbersReport.DocumentRegister != null;

            if (!documentRegisterSpecified)
            {
                documentRegister = dialog.AddSelect(Docflow.Resources.DocumentRegister, true, DocumentRegisters.Null);
            }
            IQueryable <IOfficialDocument> availableLeadingDocuments = null;

            // Ведущий документ.
            if (documentRegisterSpecified && SkippedNumbersReport.DocumentRegister.NumberingSection == DocumentRegister.NumberingSection.LeadingDocument)
            {
                availableLeadingDocuments = Docflow.Functions.Module.Remote.GetAvaliableLeadingDocuments();
            }
            var leadingDocumentSelect = dialog.AddSelect(Docflow.Resources.LeadingDocument, false, OfficialDocuments.Null)
                                        .From(availableLeadingDocuments);

            // Подразделение.
            var departmentSelect = dialog.AddSelect(Docflow.Resources.Department, false, Company.Departments.Null);

            // НОР.
            var businessUnitSelect = dialog.AddSelect(Docflow.Resources.BusinessUnit, false, Company.BusinessUnits.Null);

            var period = dialog.AddSelect(Reports.Resources.SkippedNumbersReport.Period, true).From(this.GetPeriods(SkippedNumbersReport.DocumentRegister));

            period.Value = Reports.Resources.SkippedNumbersReport.CurrentMonth;

            if (!documentRegisterSpecified)
            {
                documentRegister.SetOnValueChanged((arg) =>
                {
                    var periodValues = this.GetPeriods(arg.NewValue);
                    period.From(periodValues);
                    if (!periodValues.Contains(period.Value))
                    {
                        period.Value = string.Empty;
                    }
                });
            }

            dialog.SetOnButtonClick((arg) =>
            {
                if (reportDocumentRgister == null && documentRegister.Value != null)
                {
                    SkippedNumbersReport.DocumentRegister = documentRegister.Value;
                }

                if (leadingDocumentSelect != null)
                {
                    SkippedNumbersReport.LeadingDocument = leadingDocumentSelect.Value;
                }

                if (departmentSelect != null)
                {
                    SkippedNumbersReport.Department = departmentSelect.Value;
                }

                if (businessUnitSelect != null)
                {
                    SkippedNumbersReport.BusinessUnit = businessUnitSelect.Value;
                }

                SkippedNumbersReport.PeriodOffset = 0;
                if (period.Value != null)
                {
                    // Определить период.
                    if (period.Value.Equals(Reports.Resources.SkippedNumbersReport.CurrentYear) ||
                        period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousYear))
                    {
                        SkippedNumbersReport.Period = Constants.SkippedNumbersReport.Year;
                    }

                    if (period.Value.Equals(Reports.Resources.SkippedNumbersReport.CurrentQuarter) ||
                        period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousQuarter))
                    {
                        SkippedNumbersReport.Period = Constants.SkippedNumbersReport.Quarter;
                    }

                    if (period.Value.Equals(Reports.Resources.SkippedNumbersReport.CurrentMonth) ||
                        period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousMonth))
                    {
                        SkippedNumbersReport.Period = Constants.SkippedNumbersReport.Month;
                    }

                    if (period.Value.Equals(Reports.Resources.SkippedNumbersReport.CurrentWeek) ||
                        period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousWeek))
                    {
                        SkippedNumbersReport.Period = Constants.SkippedNumbersReport.Week;
                    }

                    // Определить смещение.
                    if (period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousYear) ||
                        period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousQuarter) ||
                        period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousMonth) ||
                        period.Value.Equals(Reports.Resources.SkippedNumbersReport.PreviousWeek))
                    {
                        SkippedNumbersReport.PeriodOffset = -1;
                    }
                }
            });

            dialog.SetOnRefresh((arg) =>
            {
                var docRegister = SkippedNumbersReport.DocumentRegister;
                if (docRegister == null && documentRegister != null)
                {
                    docRegister = documentRegister.Value;
                }

                documentRegisterSpecified  = docRegister != null;
                var hasLeadDocSection      = false;
                var hasDepartmentSection   = false;
                var hasBusinessUnitSection = false;

                if (documentRegisterSpecified)
                {
                    hasLeadDocSection      = docRegister.NumberingSection == DocumentRegister.NumberingSection.LeadingDocument;
                    hasDepartmentSection   = docRegister.NumberingSection == DocumentRegister.NumberingSection.Department;
                    hasBusinessUnitSection = docRegister.NumberingSection == DocumentRegister.NumberingSection.BusinessUnit;
                }

                if (hasLeadDocSection && availableLeadingDocuments == null)
                {
                    availableLeadingDocuments = Docflow.Functions.Module.Remote.GetAvaliableLeadingDocuments();
                    leadingDocumentSelect.From(availableLeadingDocuments);
                }
                leadingDocumentSelect.IsVisible  = documentRegisterSpecified && hasLeadDocSection;
                leadingDocumentSelect.IsRequired = documentRegisterSpecified && hasLeadDocSection;

                departmentSelect.IsVisible  = documentRegisterSpecified && hasDepartmentSection;
                departmentSelect.IsRequired = documentRegisterSpecified && hasDepartmentSection;

                businessUnitSelect.IsVisible  = documentRegisterSpecified && hasBusinessUnitSection;
                businessUnitSelect.IsRequired = documentRegisterSpecified && hasBusinessUnitSection;
            });
            if (documentRegister != null)
            {
                documentRegister.SetOnValueChanged((ex) =>
                {
                    if (ex.NewValue != ex.OldValue)
                    {
                        leadingDocumentSelect.Value = null;
                        departmentSelect.Value      = null;
                        businessUnitSelect.Value    = null;
                    }
                });
            }

            if (dialog.Show() != DialogButtons.Ok)
            {
                e.Cancel = true;
            }
        }