Exemplo n.º 1
0
        /// <summary>
        /// Отправить задание исполнителю
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public bool SentTaskToPerformer(Task task)
        {
            //MessageBox.Show("Вошли в функцию taskSent");
            string oErrMessageForStart;

            ITaskService  TaskService  = context.ObjectContext.GetService <ITaskService>();
            IStateService StateService = context.ObjectContext.GetService <IStateService>();

            bool canStart = TaskService.ValidateForBegin(task, out oErrMessageForStart);

            if (canStart)
            {
                TaskService.StartTask(task);

                StatesState oStartedState = StateService.GetStates(task.SystemInfo.CardKind).FirstOrDefault(br => br.DefaultName == "Started");
                task.SystemInfo.State = oStartedState;
                //UIService.ShowMessage("Задание было отправлено");
            }
            else
            {
                throw new Exception($"Ошибка отправки задания: {oErrMessageForStart}");
            }

            context.ObjectContext.SaveObject <Task>(task);
            return(canStart);
        }
        private void командаЗарегистрировать_ItemClick(System.Object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (!SaveCard())
            {
                UIService.ShowError("Сохранение не удалось. Выполните сохранение вручную");
                return;
            }
            KindsCardKind kind = Context.GetObject <KindsCardKind>(new Guid("AB801854-70AF-4B6C-AB48-1B59B5D11AA9"));

            DocsVision.BackOffice.ObjectModel.Task task = TaskService.CreateTask(kind);
            task.MainInfo.Name = "Проверка бухгалтерских документов " + Document.MainInfo.Name;
            task.Description   = "Проверка бухгалтерских документов " + Document.MainInfo.Name;
            string content = "Вы назначены ответственным за первичную проверку бухгалтерских документов и выставление согласущего куратора.";

            content = content + ". Пожалуйста, отметьте в родительском документе сотрудника в поле Куратор и отправьте документ на согласование";
            task.MainInfo.Content   = content;
            task.MainInfo.Author    = this.StaffService.GetCurrentEmployee();
            task.MainInfo.StartDate = DateTime.Now;
            task.MainInfo.Priority  = TaskPriority.Normal;
            task.Preset.AllowDelegateToAnyEmployee = true;
            TaskService.AddSelectedPerformer(task.MainInfo, Document.MainInfo.Registrar);
            //добавляем ссылку на родительскую карточку
            TaskService.AddLinkOnParentCard(task, TaskService.GetKindSettings(kind), this.Document);
            //добавляем ссылку на задание в карточку
            TaskListService.AddTask(this.Document.MainInfo.Tasks, task, this.Document);
            //создаем и сохраняем новый список заданий
            TaskList newTaskList = TaskListService.CreateTaskList();

            Context.SaveObject <DocsVision.BackOffice.ObjectModel.TaskList>(newTaskList);
            //записываем в задание
            task.MainInfo.ChildTaskList = newTaskList;
            Context.SaveObject <DocsVision.BackOffice.ObjectModel.Task>(task);
            string oErrMessageForStart;
            bool   CanStart = TaskService.ValidateForBegin(task, out oErrMessageForStart);

            if (CanStart)
            {
                TaskService.StartTask(task);
                StatesState oStartedState = StateService.GetStates(kind).FirstOrDefault(br => br.DefaultName == "Started");
                task.SystemInfo.State = oStartedState;

                UIService.ShowMessage("Документ успешно отправлен пользователю " + Document.MainInfo.Registrar.DisplayString, "Отправка задания");
            }

            else
            {
                UIService.ShowMessage(oErrMessageForStart, "Ошибка отправки задания");
            }

            Context.SaveObject <DocsVision.BackOffice.ObjectModel.Task>(task);

            changeState("Is registered");
        }
        private void sendApproval(String role, StaffEmployee Performer, int performingType)
        {
            KindsCardKind kind = Context.GetObject <KindsCardKind>(new Guid("F841AEE1-6018-44C6-A6A6-D3BAE4A3439F"));    // Задание на согласование фин.документов

            DocsVision.BackOffice.ObjectModel.Task task = TaskService.CreateTask(kind);
            task.MainInfo.Name = "Согласование бухгалтерских документов " + Document.MainInfo.Name;
            task.Description   = "Согласование бухгалтерских документов " + Document.MainInfo.Name;
            string content = "Вы назначены " + role + " при согласовании бухгалтерских документов.";

            content = content + " Пожалуйста, отметьте свое решение кнопками Согласован или Не согласован и напишите соответствующий комментарий";
            task.MainInfo.Content   = content;
            task.MainInfo.Author    = this.StaffService.GetCurrentEmployee();
            task.MainInfo.StartDate = DateTime.Now;
            task.MainInfo.Priority  = TaskPriority.Normal;
            task.Preset.AllowDelegateToAnyEmployee = true;
            TaskService.AddSelectedPerformer(task.MainInfo, Performer);
            BaseCardSectionRow taskRow = (BaseCardSectionRow)task.GetSection(new System.Guid("20D21193-9F7F-4B62-8D69-272E78E1D6A8"))[0];

            taskRow["PerformanceType"] = performingType;
            addTaskRows(task);
            //добавляем ссылку на родительскую карточку
            TaskService.AddLinkOnParentCard(task, TaskService.GetKindSettings(kind), this.Document);
            //добавляем ссылку на задание в карточку
            TaskListService.AddTask(this.Document.MainInfo.Tasks, task, this.Document);
            //создаем и сохраняем новый список заданий
            TaskList newTaskList = TaskListService.CreateTaskList();

            Context.SaveObject <DocsVision.BackOffice.ObjectModel.TaskList>(newTaskList);
            //записываем в задание
            task.MainInfo.ChildTaskList = newTaskList;
            Context.SaveObject <DocsVision.BackOffice.ObjectModel.Task>(task);
            string oErrMessageForStart;
            bool   CanStart = TaskService.ValidateForBegin(task, out oErrMessageForStart);

            if (CanStart)
            {
                TaskService.StartTask(task);
                StatesState oStartedState = StateService.GetStates(kind).FirstOrDefault(br => br.DefaultName == "Started");
                task.SystemInfo.State = oStartedState;

                UIService.ShowMessage("Документ успешно отправлен пользователю " + Performer.DisplayString, "Отправка задания");
            }

            else
            {
                UIService.ShowMessage(oErrMessageForStart, "Ошибка отправки задания");
            }

            Context.SaveObject <DocsVision.BackOffice.ObjectModel.Task>(task);
        }
        private void sendTasks(String Performer)
        {
            try
            {
                //сохраняем карточку
                if (!SaveCard())
                {
                    UIService.ShowError("Сохранение не удалось. Выполните сохранение вручную");
                    return;
                }
                //this.Context.SaveObject(this.Document);
                Guid          TaskKindID = new Guid("0F6C537B-9D75-43EC-9D91-B29C5F1B7C4D");  //айди типа задания на исполнение
                KindsCardKind kind       = Context.GetObject <KindsCardKind>(TaskKindID);
                DocsVision.BackOffice.ObjectModel.Task oTask = this.TaskService.CreateTask(kind);
                TaskService.InitializeDefaults(oTask);

                //заполняем данные задания
                oTask.MainInfo.Author = this.StaffService.GetCurrentEmployee();        //текущий сотрудник
                //содержание задания
                oTask.MainInfo.Content   = "Документ пришел Вам на исполнение/ознакомление";
                oTask.MainInfo.StartDate = DateTime.Now;
                oTask.MainInfo.OnControl = false;
                oTask.MainInfo.Name      = "Задание по бухгалтерскому документу " + this.Document.MainInfo.Name;
                oTask.Description        = "Задание по бухгалтерскому документу " + this.Document.MainInfo.Name;
                //определяем важность
                oTask.MainInfo.Priority = TaskPriority.Normal;

                BaseCardSectionRow contractRow = (BaseCardSectionRow)this.Document.GetSection(new System.Guid("3997861D-4FF5-496A-B8A2-D16617DE91D7"))[0];
                if (contractRow["ContractEnd"] != null)
                {
                    oTask.MainInfo.EndDate = Convert.ToDateTime(contractRow["ContractEnd"]);
                }


                //добавляем исполнителя
                StaffEmployee oPerf = Context.GetObject <StaffEmployee>(new System.Guid(Performer));;
                TaskService.AddSelectedPerformer(oTask.MainInfo, oPerf);

                TaskSetting oTaskSetting = TaskService.GetKindSettings(kind);
                //добавляем ссылку на родительскую карточку
                TaskService.AddLinkOnParentCard(oTask, oTaskSetting, this.Document);
                //добавляем ссылку на задание в карточку
                TaskListService.AddTask(this.Document.MainInfo.Tasks, oTask, this.Document);
                //создаем и сохраняем новый список заданий
                TaskList newTaskList = TaskListService.CreateTaskList();
                Context.SaveObject <DocsVision.BackOffice.ObjectModel.TaskList>(newTaskList);
                //записываем в задание
                oTask.MainInfo.ChildTaskList = newTaskList;
                Context.SaveObject <DocsVision.BackOffice.ObjectModel.Task>(oTask);
                Context.SaveObject <DocsVision.BackOffice.ObjectModel.Document>(this.Document);
                //MessageBox.Show("Документ готов, запускаем");
                //запускаем задание на исполнение
                string oErrMessageForStart;
                bool   CanStart = TaskService.ValidateForBegin(oTask, out oErrMessageForStart);
                if (CanStart)
                {
                    //MessageBox.Show("Can start");
                    TaskService.StartTask(oTask);

                    //MessageBox.Show("Изменяется состояние задания");
                    StatesState oStartedState = StateService.GetStates(Context.GetObject <KindsCardKind>(TaskKindID)).FirstOrDefault(br => br.DefaultName == "Started");
                    oTask.SystemInfo.State = oStartedState;

                    UIService.ShowMessage("Документ успешно отправлен пользователю " + oPerf.ToString(), "Отправка задания");
                }


                else
                {
                    UIService.ShowMessage(oErrMessageForStart, "Ошибка отправки задания");
                }

                Context.SaveObject <DocsVision.BackOffice.ObjectModel.Task>(oTask);
            }

            catch (System.Exception ex)
            {
                UIService.ShowError(ex);
            }
        }