예제 #1
0
        public virtual void NewDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            var warnMessage = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            if (_obj.CurrentDeadline < Calendar.Now)
            {
                // Проверить корректность срока.
                if (!Docflow.PublicFunctions.Module.CheckDeadline(e.NewValue, Calendar.Now))
                {
                    e.AddError(RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanToday);
                }
            }
            else
            {
                // Новый срок должен быть больше старого.
                if (!Docflow.PublicFunctions.Module.CheckDeadline(e.NewValue, _obj.CurrentDeadline))
                {
                    e.AddError(DeadlineExtensionTasks.Resources.DesiredDeadlineIsNotCorrect);
                }
            }
        }
예제 #2
0
        public override void DatedValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            base.DatedValueInput(e);

            if (e.NewValue != null && e.NewValue >= Calendar.SqlMinValue)
            {
                if (Functions.IncomingLetter.HaveDuplicates(_obj, _obj.DocumentKind, _obj.BusinessUnit, _obj.InNumber, e.NewValue, _obj.Correspondent))
                {
                    e.AddWarning(IncomingLetters.Resources.DuplicateDetected,
                                 _obj.Info.Properties.DocumentKind,
                                 _obj.Info.Properties.BusinessUnit,
                                 _obj.Info.Properties.InNumber,
                                 _obj.Info.Properties.Dated,
                                 _obj.Info.Properties.Correspondent);
                }
            }

            // Для DateTime событие изменения отрабатывает, даже если даты одинаковые.
            // Поэтому еще раз сравниваем только даты без учёта времени.
            if (e.OldValue.HasValue && e.NewValue.HasValue && Equals(e.OldValue.Value.Date, e.NewValue.Value.Date))
            {
                return;
            }

            this._obj.State.Properties.Dated.HighlightColor = Sungero.Core.Colors.Empty;
        }
예제 #3
0
        public virtual void DeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            var warnMessage = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(_obj.Addressee, e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }
        }
예제 #4
0
        private void CheckDeadline(Sungero.Presentation.DateTimeValueInputEventArgs e, IUser user)
        {
            var warnMessage = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(user, e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            // Предупреждение на установку даты больше даты основного поручения.
            var parentAssignment = ActionItemExecutionAssignments.As(_obj.ParentAssignment);

            if (parentAssignment != null && Docflow.PublicFunctions.Module.CheckDeadline(e.NewValue, parentAssignment.Deadline))
            {
                e.AddWarning(ActionItemExecutionTasks.Resources.DeadlineSubActionItemExecutionFormat(parentAssignment.Deadline.Value.ToUserTime().ToShortDateString()));
            }
            _obj.State.Controls.Control.Refresh();
        }
예제 #5
0
        public virtual void MilestonesDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            if (_obj.IsCompleted.Value)
            {
                e.AddError(ContractualDocuments.Resources.CannotChangeCompleteMilestone);
            }

            // Проверить корректность срока.
            var warnMessage = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(_obj.Performer ?? Users.Current, e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.Performer ?? Users.Current, e.NewValue, Calendar.Today))
            {
                e.AddWarning(ContractualDocuments.Resources.DeadlineMilestoneLessThenToday);
            }
        }
예제 #6
0
        public virtual void NewDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            var assignee    = ActionItemExecutionTasks.As(_obj.Task).Assignee;
            var warnMessage = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(assignee, e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            // Проверить корректность срока.
            if (!Docflow.PublicFunctions.Module.CheckDeadline(assignee, e.NewValue, Calendar.Now))
            {
                e.AddWarning(ActionItemSupervisorAssignments.Resources.NewDeadlineLessThenToday);
            }
            else if (e.NewValue != null &&
                     e.NewValue != _obj.ScheduledDate &&
                     !Docflow.PublicFunctions.Module.CheckDeadline(e.NewValue, _obj.ScheduledDate))
            {
                e.AddError(ActionItemSupervisorAssignments.Resources.ImpossibleSpecifyDeadlineLessActionItemDeadline);
            }
        }
예제 #7
0
        public virtual void DateTimeValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            if (!e.NewValue.HasValue)
            {
                return;
            }

            // Если время не задано, ставить начало рабочего дня.
            if (!e.NewValue.Value.HasTime())
            {
                e.NewValue = e.NewValue.Value.BeginningOfWorkingDay();
            }
            // Проверить корректность даты.
            else if (!e.NewValue.Value.IsWorkingDay(Users.Current))
            {
                e.AddWarning(Meetings.Resources.MeetingDateIsWeekend);
            }
            else if (!e.NewValue.Value.IsWorkingTime(Users.Current))
            {
                e.AddWarning(Meetings.Resources.MeetingTimeIsWeekend);
            }
        }
예제 #8
0
        public virtual void AddresseeDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            var warnMessage = Docflow.Functions.Module.CheckDeadlineByWorkCalendar(_obj.Addressee ?? Users.Current, e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.Addressee ?? Users.Current, e.NewValue, Calendar.Now))
            {
                e.AddError(FreeApprovalTasks.Resources.ImpossibleSpecifyDeadlineLessThanToday);
            }
        }
예제 #9
0
        public override void MaxDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            var warnMessage = Docflow.Functions.Module.CheckDeadlineByWorkCalendar(e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            if (!Functions.Module.CheckDeadline(e.NewValue, Calendar.Now))
            {
                e.AddError(FreeApprovalTasks.Resources.ImpossibleSpecifyDeadlineLessThanToday);
            }
        }
예제 #10
0
        public override void MaxDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            var warnMessage = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(_obj.Assignee, e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            // Проверить корректность срока.
            if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.Assignee, e.NewValue, Calendar.Now))
            {
                e.AddError(RecordManagement.Resources.ImpossibleSpecifyDeadlineForAssignee);
            }
        }
예제 #11
0
        public override void RegistrationDateValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            base.RegistrationDateValueInput(e);

            if (e.NewValue != null && e.NewValue >= Calendar.SqlMinValue)
            {
                if (Functions.ContractBase.HaveDuplicates(_obj, _obj.BusinessUnit, _obj.RegistrationNumber, e.NewValue, _obj.Counterparty))
                {
                    e.AddWarning(ContractualDocuments.Resources.DuplicatesDetected + ContractualDocuments.Resources.FindDuplicates,
                                 _obj.Info.Properties.Counterparty,
                                 _obj.Info.Properties.BusinessUnit,
                                 _obj.Info.Properties.RegistrationDate,
                                 _obj.Info.Properties.RegistrationNumber);
                }
            }
        }
예제 #12
0
        public virtual void ActionItemPartsDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            var assignee    = _obj.Assignee ?? Users.Current;
            var warnMessage = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(assignee, e.NewValue);

            if (!string.IsNullOrEmpty(warnMessage))
            {
                e.AddWarning(warnMessage);
            }

            // Проверить корректность срока.
            if (!Docflow.PublicFunctions.Module.CheckDeadline(assignee, e.NewValue, Calendar.Now))
            {
                e.AddError(RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanToday);
            }
        }
예제 #13
0
        public override void RegistrationDateValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            base.RegistrationDateValueInput(e);

            if (e.NewValue != null && e.NewValue >= Calendar.SqlMinValue)
            {
                if (Functions.ContractStatement.HaveDuplicates(_obj, _obj.BusinessUnit, _obj.RegistrationNumber, e.NewValue, _obj.Counterparty, _obj.LeadingDocument))
                {
                    e.AddWarning(Contracts.ContractualDocuments.Resources.DuplicatesDetected + Contracts.ContractualDocuments.Resources.FindDuplicates,
                                 _obj.Info.Properties.LeadingDocument,
                                 _obj.Info.Properties.Counterparty,
                                 _obj.Info.Properties.BusinessUnit,
                                 _obj.Info.Properties.RegistrationNumber,
                                 _obj.Info.Properties.RegistrationDate);
                }
            }

            this._obj.State.Properties.RegistrationDate.HighlightColor = Sungero.Core.Colors.Empty;
        }
예제 #14
0
        public override void DateValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            base.DateValueInput(e);

            if (e.NewValue != null && e.NewValue >= Calendar.SqlMinValue)
            {
                if (Functions.IncomingInvoice.HaveDuplicates(_obj, _obj.DocumentKind, _obj.Number, e.NewValue, _obj.TotalAmount, _obj.Currency, _obj.Counterparty))
                {
                    e.AddWarning(IncomingInvoices.Resources.DuplicateDetected,
                                 _obj.Info.Properties.DocumentKind,
                                 _obj.Info.Properties.Number,
                                 _obj.Info.Properties.Date,
                                 _obj.Info.Properties.TotalAmount,
                                 _obj.Info.Properties.Currency,
                                 _obj.Info.Properties.Counterparty);
                }
            }

            this._obj.State.Properties.Date.HighlightColor = Sungero.Core.Colors.Empty;
        }
예제 #15
0
        public virtual void NewDeadlineValueInput(Sungero.Presentation.DateTimeValueInputEventArgs e)
        {
            // Не давать указывать срок меньше, чем сейчас.
            if (e.NewValue.HasValue)
            {
                // Проводить валидацию на конец дня, если указана дата без времени.
                if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.Addressee ?? Users.Current, e.NewValue.Value, Calendar.Now))
                {
                    e.AddError(VerificationAssignments.Resources.ImpossibleSpecifyDeadlineLessThenToday,
                               _obj.Info.Properties.NewDeadline);
                }

                if (_obj.Addressee != null)
                {
                    var checkMessageText = Docflow.PublicFunctions.Module.CheckDeadlineByWorkCalendar(Users.Current, e.NewValue);
                    if (!string.IsNullOrEmpty(checkMessageText))
                    {
                        e.AddWarning(checkMessageText, _obj.Info.Properties.NewDeadline);
                    }
                }
            }
        }