Ejemplo n.º 1
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            if (!string.IsNullOrEmpty(_obj.FirstName))
            {
                _obj.FirstName = _obj.FirstName.Trim();
                if (string.IsNullOrWhiteSpace(_obj.FirstName))
                {
                    e.AddError(_obj.Info.Properties.FirstName, Commons.Resources.RequiredPropertiesNotFilledIn);
                }
            }
            if (!string.IsNullOrEmpty(_obj.LastName))
            {
                _obj.LastName = _obj.LastName.Trim();
                if (string.IsNullOrWhiteSpace(_obj.LastName))
                {
                    e.AddError(_obj.Info.Properties.LastName, Commons.Resources.RequiredPropertiesNotFilledIn);
                }
            }
            if (!string.IsNullOrEmpty(_obj.MiddleName))
            {
                _obj.MiddleName = _obj.MiddleName.Trim();
            }

            Functions.Person.FillName(_obj);

            base.BeforeSave(e);
        }
Ejemplo n.º 2
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            // Проверить правильность заполнения дат.
            if (_obj.StartDate > _obj.EndDate)
            {
                e.AddError(_obj.Info.Properties.StartDate, CaseFiles.Resources.WrongPeriod, new[] { _obj.Info.Properties.StartDate, _obj.Info.Properties.EndDate });
                e.AddError(_obj.Info.Properties.EndDate, CaseFiles.Resources.WrongPeriod, new[] { _obj.Info.Properties.StartDate, _obj.Info.Properties.EndDate });
            }

            // Проверить уникальность индекса в рамках нашей организации и периода.
            if (!Functions.CaseFile.CheckIndexForUniqueness(_obj))
            {
                e.AddError(CaseFiles.Resources.IndexIsNotUnique);
            }

            // Проверить индекс на пробелы, если свойство изменено.
            if (!string.IsNullOrEmpty(_obj.Index))
            {
                // При изменении индекса e.AddError сбрасывается.
                var indexIsChanged = _obj.State.Properties.Index.IsChanged;
                _obj.Index = _obj.Index.Trim();
                if (indexIsChanged && Regex.IsMatch(_obj.Index, @"\s"))
                {
                    e.AddError(_obj.Info.Properties.Index, Docflow.CaseFiles.Resources.NoSpacesInIndex);
                }
            }

            _obj.Name = string.Format("{0}. {1}", _obj.Index, _obj.Title);
        }
Ejemplo n.º 3
0
 public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
 {
     // Выдать права на документы для всех, кому выданы права на задачу.
     if (_obj.State.IsChanged)
     {
         Functions.Module.GrantManualReadRightForAttachments(_obj, _obj.AllAttachments.ToList());
     }
 }
 public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
 {
     base.BeforeSave(e);
     if (_obj.InResponseTo != null && _obj.InResponseTo.AccessRights.CanRead() && !_obj.Relations.GetRelatedFrom(Constants.Module.ResponseRelationName).Contains(_obj.InResponseTo))
     {
         _obj.Relations.AddFromOrUpdate(Constants.Module.ResponseRelationName, _obj.State.Properties.InResponseTo.OriginalValue, _obj.InResponseTo);
     }
 }
Ejemplo n.º 5
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            var isNotUniquePriority = Functions.StoragePolicyBase.HasSamePriorityPolicies(_obj);

            if (isNotUniquePriority)
            {
                e.AddError(_obj.Info.Properties.Priority, Sungero.Docflow.StoragePolicyBases.Resources.NonUniquePriority, _obj.Info.Properties.Priority);
            }
        }
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            base.BeforeSave(e);

            // Выдать ответственному права на изменение документа.
            var responsible = _obj.ResponsibleEmployee;

            if (responsible != null && !Equals(_obj.State.Properties.ResponsibleEmployee.OriginalValue, responsible) &&
                !Equals(responsible, Sungero.Company.Employees.Current))
            {
                _obj.AccessRights.Grant(responsible, DefaultAccessRightsTypes.Change);
            }
        }
Ejemplo n.º 7
0
 public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
 {
     base.BeforeSave(e);
     if (Functions.IncomingLetter.HaveDuplicates(_obj,
                                                 _obj.DocumentKind,
                                                 _obj.BusinessUnit,
                                                 _obj.InNumber,
                                                 _obj.Dated,
                                                 _obj.Correspondent))
     {
         e.AddWarning(IncomingLetters.Resources.DuplicateDetected, _obj.Info.Actions.ShowDuplicates);
     }
 }
Ejemplo n.º 8
0
 public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
 {
     // Проверить код региона на уникальность.
     if (!string.IsNullOrWhiteSpace(_obj.Code))
     {
         var region = Regions.GetAll().FirstOrDefault(r => r.Code == _obj.Code &&
                                                      r.Country.Equals(_obj.Country) &&
                                                      r.Status != CoreEntities.DatabookEntry.Status.Closed);
         if (region != null && !region.Equals(_obj))
         {
             e.AddWarning(_obj.Info.Properties.Code, Regions.Resources.CodeDuplicateFormat(region.Name));
         }
     }
 }
Ejemplo n.º 9
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            base.BeforeSave(e);

            if (Functions.ContractStatement.HaveDuplicates(_obj,
                                                           _obj.BusinessUnit,
                                                           _obj.RegistrationNumber,
                                                           _obj.RegistrationDate,
                                                           _obj.Counterparty,
                                                           _obj.LeadingDocument))
            {
                e.AddWarning(Contracts.ContractualDocuments.Resources.DuplicatesDetected, _obj.Info.Actions.ShowDuplicates);
            }
        }
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            base.BeforeSave(e);

            if (_obj.IsManyAddressees == true && !_obj.Addressees.Any())
            {
                e.AddError(_obj.Info.Properties.Addressees, OutgoingDocumentBases.Resources.NeedFillAddressee);
            }

            if (_obj.InResponseTo != null && _obj.InResponseTo.AccessRights.CanRead() && !_obj.Relations.GetRelatedFrom(Constants.Module.ResponseRelationName).Contains(_obj.InResponseTo))
            {
                _obj.Relations.AddFromOrUpdate(Constants.Module.ResponseRelationName, _obj.State.Properties.InResponseTo.OriginalValue, _obj.InResponseTo);
            }
        }
Ejemplo n.º 11
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            // Удалить дубли в списке участников, если они есть.
            var distinctAcquaintanceList = _obj.Participants.Select(r => r.Participant).ToList().Distinct();

            if (distinctAcquaintanceList.Count() != _obj.Participants.Count())
            {
                _obj.Participants.Clear();
                foreach (var participant in distinctAcquaintanceList)
                {
                    var newRow = _obj.Participants.AddNew();
                    newRow.Participant = participant;
                }
            }

            // Удалить дубли в поле "Кроме", если они есть.
            var distinctExcludedAcquaintanceList = _obj.ExcludedParticipants.Select(r => r.ExcludedParticipant).ToList().Distinct();

            if (distinctExcludedAcquaintanceList.Count() != _obj.ExcludedParticipants.Count())
            {
                _obj.ExcludedParticipants.Clear();
                foreach (var excludedParticipant in distinctExcludedAcquaintanceList)
                {
                    var newRow = _obj.ExcludedParticipants.AddNew();
                    newRow.ExcludedParticipant = excludedParticipant;
                }
            }

            // Предупредить о техническом ограничении платформы на запуск задачи для большого числа участников.
            var participants         = _obj.Participants.Select(p => p.Participant).ToList();
            var excludedParticipants = _obj.ExcludedParticipants.Select(x => x.ExcludedParticipant).ToList();
            var performers           = Functions.AcquaintanceTask.GetParticipants(participants, excludedParticipants);

            if (performers.Count() > Constants.AcquaintanceTask.PerformersLimit)
            {
                if (_obj.State.IsInserted)
                {
                    e.AddError(AcquaintanceLists.Resources.TooManyParticipantsFormat(Constants.AcquaintanceTask.PerformersLimit));
                    return;
                }

                e.AddWarning(AcquaintanceLists.Resources.TooManyParticipantsFormat(Constants.AcquaintanceTask.PerformersLimit));
            }

            // Проверить наличие участников ознакомления.
            if (performers.Count == 0)
            {
                e.AddError(AcquaintanceTasks.Resources.PerformersCantBeEmpty);
            }
        }
Ejemplo n.º 12
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            // Проверить валидность кода.
            var result = Functions.Country.ValidateCountryCode(_obj.Code);

            if (!string.IsNullOrEmpty(result))
            {
                e.AddError(Countries.Resources.InvalidCountryCode);
            }

            if (Functions.Country.HaveDuplicates(_obj))
            {
                e.AddWarning(Sungero.Commons.Resources.DuplicateDetected, _obj.Info.Actions.ShowDuplicates);
            }
        }
Ejemplo n.º 13
0
 public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
 {
   base.BeforeSave(e);
   
   // При изменении сотрудника в "Кому выдана" проверить наличие действующих прав подписи.
   if (!Equals(_obj.IssuedTo, _obj.State.Properties.IssuedTo.OriginalValue))
   {
     var signSettings = Functions.PowerOfAttorney.GetActiveSignatureSettingsByPOA(_obj);
     if (signSettings.Any())
       e.AddError(PowerOfAttorneys.Resources.AlreadyExistSignatureSetting, _obj.Info.Actions.FindActiveSignatureSetting);
   }
   
   // Выдать права на документ сотруднику, указанному в поле "Кому выдана".
   _obj.AccessRights.Grant(_obj.IssuedTo, DefaultAccessRightsTypes.Read);
 }
Ejemplo n.º 14
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            // Если тема не сформирована, то подставить пустую.
            if (_obj.Subject == Docflow.Resources.AutoformatTaskSubject)
            {
                using (TenantInfo.Culture.SwitchTo())
                    _obj.Subject = ApprovalTasks.Resources.TaskSubjectFormat(string.Empty);
            }

            // Выдать права на документы для всех, кому выданы права на задачу.
            if (_obj.State.IsChanged)
            {
                Functions.Module.GrantManualReadRightForAttachments(_obj, _obj.AllAttachments.ToList());
            }
        }
Ejemplo n.º 15
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            if (Equals(_obj.Status, Status.Closed))
            {
                return;
            }

            if (!_obj.DocumentKinds.Any() &&
                !_obj.BusinessUnits.Any() &&
                !_obj.Departments.Any() &&
                !_obj.DocumentGroups.Any())
            {
                e.AddError(AccessRightsRules.Resources.RuleMustHaveCriteria);
            }
        }
Ejemplo n.º 16
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            // Запомнить номер версии и хеш для отчета.
            var document = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();

            if (document != null)
            {
                _obj.AcquaintanceVersions.Clear();
                Functions.AcquaintanceTask.StoreAcquaintanceVersion(_obj, document, true);
                var addenda = _obj.AddendaGroup.OfficialDocuments;
                foreach (var addendum in addenda)
                {
                    Functions.AcquaintanceTask.StoreAcquaintanceVersion(_obj, addendum, false);
                }
            }
        }
Ejemplo n.º 17
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            if (_obj.State.Properties.ConditionType.IsChanged && Functions.ConditionBase.HasRules(_obj))
            {
                e.AddError(ConditionBases.Resources.ConditionHasRules);
            }

            var conditionName = Functions.ConditionBase.GetConditionName(_obj);

            _obj.Name = Functions.Module.TrimSpecialSymbols(conditionName);

            if (_obj.Name.Length >= 250)
            {
                _obj.Name = _obj.Name.Remove(250);
            }
        }
Ejemplo n.º 18
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            // Проверка шаблона сайта.
            if (!string.IsNullOrEmpty(_obj.Url))
            {
                _obj.Url = _obj.Url.Trim();
                var error = Functions.DueDiligenceWebsite.CheckDueDiligenceWebsiteUrl(_obj.Url);
                if (!string.IsNullOrWhiteSpace(error))
                {
                    e.AddError(_obj.Info.Properties.Url, error);
                }
            }

            // Проверка шаблона сайта (ИП).
            if (!string.IsNullOrEmpty(_obj.UrlForSelfEmployed))
            {
                _obj.UrlForSelfEmployed = _obj.UrlForSelfEmployed.Trim();
                var error = Functions.DueDiligenceWebsite.CheckDueDiligenceWebsiteUrl(_obj.UrlForSelfEmployed);
                if (!string.IsNullOrWhiteSpace(error))
                {
                    e.AddError(_obj.Info.Properties.UrlForSelfEmployed, error);
                }
            }

            // Если установить для текущего сайта флаг по умолчанию, то с другого сайта этот флаг снимается.
            if (_obj.IsDefault == true)
            {
                var defaultWebsite = Functions.DueDiligenceWebsite.GetDefaultDueDiligenceWebsite();
                if (defaultWebsite != null && !Equals(defaultWebsite, _obj))
                {
                    var lockInfo = Locks.GetLockInfo(defaultWebsite);
                    if (lockInfo != null && lockInfo.IsLocked)
                    {
                        var error = Commons.Resources.LinkedEntityLockedFormat(
                            defaultWebsite.Name,
                            defaultWebsite.Id,
                            lockInfo.OwnerName);
                        e.AddError(error);
                    }

                    defaultWebsite.IsDefault = false;
                }
            }
            _obj.HomeUrl = _obj.HomeUrl.Trim();
        }
Ejemplo n.º 19
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            base.BeforeSave(e);

            if (!_obj.AccessRights.CanUpdate())
            {
                e.AddError(Projects.Resources.NoRightToUpdateProject);
                return;
            }

            // TODO Zamerov: сравнивать надо с ресурсом в локали тенанта. BUG: 35010
            if (Equals(_obj.ShortName, Sungero.Projects.Resources.ProjectArhiveFolderName))
            {
                e.AddError(Projects.Resources.PropertyReservedFormat(_obj.Info.Properties.ShortName.LocalizedName, Sungero.Projects.Resources.ProjectArhiveFolderName));
            }

            if (Projects.GetAll().Any(p => !Equals(p, _obj) && Equals(p.ShortName, _obj.ShortName)))
            {
                e.AddError(Projects.Resources.PropertyAlreadyUsedFormat(_obj.Info.Properties.ShortName.LocalizedName, _obj.ShortName));
            }

            // Проверка циклических ссылок в подпроектах.
            if (_obj.State.Properties.LeadingProject.IsChanged && _obj.LeadingProject != null)
            {
                var leadingProject = _obj.LeadingProject;

                while (leadingProject != null)
                {
                    if (Equals(leadingProject, _obj))
                    {
                        e.AddError(_obj.Info.Properties.LeadingProject, Projects.Resources.LeadingProjectCyclicReference, _obj.Info.Properties.LeadingProject);
                        break;
                    }

                    leadingProject = leadingProject.LeadingProject;
                }
            }

            if (!e.Params.Contains(Sungero.Projects.Constants.Module.DontUpdateModified))
            {
                _obj.Modified = Calendar.Now;
            }
        }
Ejemplo n.º 20
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            Functions.Employee.UpdateName(_obj, _obj.Person);

            if (string.IsNullOrEmpty(_obj.Name))
            {
                _obj.Name = " ";
            }

            if (!Functions.Employee.IsValidEmail(_obj.Email))
            {
                e.AddWarning(_obj.Info.Properties.Email, Parties.Resources.WrongEmailFormat);
            }
            else if (!Docflow.PublicFunctions.Module.IsASCII(_obj.Email))
            {
                e.AddWarning(_obj.Info.Properties.Email, Docflow.Resources.ASCIIWarning);
            }

            var oldDepartment = _obj.State.Properties.Department.OriginalValue;
            var newDepartment = _obj.Department;

            if (!Equals(oldDepartment, newDepartment))
            {
                if (newDepartment != null)
                {
                    var newDepartmentLockInfo = Locks.GetLockInfo(newDepartment);
                    if (newDepartmentLockInfo.IsLockedByOther)
                    {
                        e.AddError(Employees.Resources.DeparmentLockedByUserFormat(newDepartment.Name, newDepartmentLockInfo.OwnerName));
                    }
                }

                if (oldDepartment != null)
                {
                    var oldDepartmentLockInfo = Locks.GetLockInfo(oldDepartment);
                    if (oldDepartmentLockInfo.IsLockedByOther)
                    {
                        e.AddError(Employees.Resources.DeparmentLockedByUserFormat(oldDepartment.Name, oldDepartmentLockInfo.OwnerName));
                    }
                }
            }
        }
Ejemplo n.º 21
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            if (!string.IsNullOrEmpty(_obj.PSRN))
            {
                var newPsrn = _obj.PSRN.Trim();
                if (!_obj.PSRN.Equals(newPsrn, StringComparison.InvariantCultureIgnoreCase))
                {
                    _obj.PSRN = newPsrn;
                }
            }

            if (!string.IsNullOrEmpty(_obj.TRRC))
            {
                var newTrrc = _obj.TRRC.Trim();
                if (!_obj.TRRC.Equals(newTrrc, StringComparison.InvariantCultureIgnoreCase))
                {
                    _obj.TRRC = newTrrc;
                }
            }

            #region Проверить циклические ссылки в подчиненных организациях

            if (_obj.State.Properties.HeadCompany.IsChanged && _obj.HeadCompany != null)
            {
                var headCompany = _obj.HeadCompany;

                while (headCompany != null)
                {
                    if (Equals(headCompany, _obj))
                    {
                        e.AddError(_obj.Info.Properties.HeadCompany, CompanyBases.Resources.HeadCompanyCyclicReference, _obj.Info.Properties.HeadCompany);
                        break;
                    }

                    headCompany = headCompany.HeadCompany;
                }
            }

            #endregion

            base.BeforeSave(e);
        }
Ejemplo n.º 22
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            if (_obj.ValidFrom > _obj.ValidTill)
            {
                e.AddError(_obj.Info.Properties.ValidFrom, SignatureSettings.Resources.IncorrectValidDates, _obj.Info.Properties.ValidTill);
                e.AddError(_obj.Info.Properties.ValidTill, SignatureSettings.Resources.IncorrectValidDates, _obj.Info.Properties.ValidFrom);
            }

            if (_obj.Reason == Docflow.SignatureSetting.Reason.PowerOfAttorney)
            {
                if (!Docflow.PowerOfAttorneys.Is(_obj.Document))
                {
                    e.AddError(SignatureSettings.Info.Properties.Document, Docflow.SignatureSettings.Resources.IncorrectDocumentType);
                }
                else if (_obj.ValidTill > Docflow.PowerOfAttorneys.As(_obj.Document).ValidTill)
                {
                    e.AddError(Docflow.SignatureSettings.Resources.IncorrectValidTill);
                }
            }
        }
Ejemplo n.º 23
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            var result = Functions.Currency.ValidateNumericCode(_obj.NumericCode);

            if (!string.IsNullOrEmpty(result))
            {
                e.AddError(result);
            }

            if (Functions.Currency.HaveDuplicates(_obj))
            {
                e.AddError(Sungero.Commons.Resources.DuplicateDetected, _obj.Info.Actions.ShowDuplicates);
            }

            // Нельзя закрывать валюту по умолчанию.
            if (_obj.Status == Status.Closed && _obj.IsDefault == true)
            {
                e.AddError(Currencies.Resources.ClosedCurrencyCannotBeDefault);
            }

            // Если установить для текущей валюты флаг валюты по умолчанию, то с другой валюты этот флаг снимается.
            if (_obj.IsDefault == true)
            {
                var defaultCurrency = Functions.Currency.GetDefaultCurrency();
                if (defaultCurrency != null && defaultCurrency != _obj)
                {
                    var lockInfo = Locks.GetLockInfo(defaultCurrency);
                    if (lockInfo != null && lockInfo.IsLocked)
                    {
                        var error = Commons.Resources.LinkedEntityLockedFormat(
                            defaultCurrency.Name,
                            defaultCurrency.Id,
                            lockInfo.OwnerName);
                        e.AddError(error);
                    }

                    defaultCurrency.IsDefault = false;
                }
            }
        }
Ejemplo n.º 24
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            _obj.Name = _obj.Name.Trim();
            if (string.IsNullOrWhiteSpace(_obj.Name))
            {
                e.AddError(_obj.Info.Properties.Name, Commons.Resources.RequiredPropertiesNotFilledIn);
            }

            var duplicates = Functions.JobTitle.GetDuplicates(_obj);

            if (duplicates.Any())
            {
                e.AddError(JobTitles.Resources.JobTitleNameAlreadyExists, _obj.Info.Actions.ShowDuplicates);
            }

            var employees = Functions.JobTitle.GetEmployeesWithSameJobTitle(_obj);

            if (_obj.Department != null && employees.Any())
            {
                e.AddError(Sungero.Company.JobTitles.Resources.JobTitleAlreadyAssignedToEmployees, _obj.Info.Actions.ShowEmployeesWithSameJobTitle);
            }
        }
Ejemplo n.º 25
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            // Проверить неизменность ведущего документа, если нет прав на его изменение.
            var contractIsChanged = _obj.LeadingDocument != _obj.State.Properties.LeadingDocument.OriginalValue;

            if (contractIsChanged)
            {
                var isContractDisabled = Sungero.Docflow.PublicFunctions.OfficialDocument.NeedDisableLeadingDocument(_obj);
                if (isContractDisabled)
                {
                    e.AddError(Sungero.Docflow.OfficialDocuments.Resources.RelationPropertyDisabled);
                }
            }

            if (_obj.ValidFrom > _obj.ValidTill)
            {
                e.AddError(_obj.Info.Properties.ValidFrom, SupAgreements.Resources.IncorrectValidDates, _obj.Info.Properties.ValidTill);
                e.AddError(_obj.Info.Properties.ValidTill, SupAgreements.Resources.IncorrectValidDates, _obj.Info.Properties.ValidFrom);
            }

            base.BeforeSave(e);

            if (_obj.LeadingDocument != null && _obj.LeadingDocument.AccessRights.CanRead() &&
                !_obj.Relations.GetRelatedFrom(Constants.Module.SupAgreementRelationName).Contains(_obj.LeadingDocument))
            {
                _obj.Relations.AddFromOrUpdate(Constants.Module.SupAgreementRelationName, _obj.State.Properties.LeadingDocument.OriginalValue, _obj.LeadingDocument);
            }

            if (Functions.SupAgreement.HaveDuplicates(_obj,
                                                      _obj.BusinessUnit,
                                                      _obj.RegistrationNumber,
                                                      _obj.RegistrationDate,
                                                      _obj.Counterparty,
                                                      _obj.LeadingDocument))
            {
                e.AddWarning(ContractualDocuments.Resources.DuplicatesDetected, _obj.Info.Actions.ShowDuplicates);
            }
        }
Ejemplo n.º 26
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            var leadingDocumentChanged = _obj.LeadingDocument != _obj.State.Properties.LeadingDocument.OriginalValue;

            if (leadingDocumentChanged)
            {
                // Проверить, доступен ли для изменения ведущий документ.
                var isLeadingDocumentDisabled = Sungero.Docflow.PublicFunctions.OfficialDocument.NeedDisableLeadingDocument(_obj);
                if (isLeadingDocumentDisabled)
                {
                    e.AddError(Sungero.Docflow.OfficialDocuments.Resources.RelationPropertyDisabled);
                }
                e.Params.AddOrUpdate(Constants.OfficialDocument.GrantAccessRightsToProjectDocument, true);
            }

            base.BeforeSave(e);

            if (_obj.LeadingDocument != null && _obj.LeadingDocument.AccessRights.CanRead() &&
                !_obj.Relations.GetRelatedFrom(Constants.Module.AddendumRelationName).Contains(_obj.LeadingDocument))
            {
                _obj.Relations.AddFromOrUpdate(Constants.Module.AddendumRelationName, _obj.State.Properties.LeadingDocument.OriginalValue, _obj.LeadingDocument);
            }
        }
Ejemplo n.º 27
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            base.BeforeSave(e);

            if (Functions.ContractBase.HaveDuplicates(_obj,
                                                      _obj.BusinessUnit,
                                                      _obj.RegistrationNumber,
                                                      _obj.RegistrationDate,
                                                      _obj.Counterparty))
            {
                e.AddWarning(ContractualDocuments.Resources.DuplicatesDetected, _obj.Info.Actions.ShowDuplicates);
            }

            if (_obj.DaysToFinishWorks < 0)
            {
                e.AddError(_obj.Info.Properties.DaysToFinishWorks, ContractBases.Resources.IncorrectReminder);
            }

            if (_obj.ValidFrom > _obj.ValidTill)
            {
                e.AddError(_obj.Info.Properties.ValidFrom, ContractBases.Resources.IncorrectValidDates, _obj.Info.Properties.ValidTill);
                e.AddError(_obj.Info.Properties.ValidTill, ContractBases.Resources.IncorrectValidDates, _obj.Info.Properties.ValidFrom);
            }
        }
Ejemplo n.º 28
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            base.BeforeSave(e);

            // Выдать ответственному права на изменение документа.
            var responsible = _obj.ResponsibleEmployee;

            if (responsible != null && !Equals(_obj.State.Properties.ResponsibleEmployee.OriginalValue, responsible) &&
                !Equals(responsible, Sungero.Company.Employees.Current))
            {
                _obj.AccessRights.Grant(responsible, DefaultAccessRightsTypes.Change);
            }

            if (_obj.LeadingDocument != null && _obj.LeadingDocument.AccessRights.CanRead() &&
                !_obj.Relations.GetRelatedFrom(Contracts.PublicConstants.Module.AccountingDocumentsRelationName).Contains(_obj.LeadingDocument))
            {
                _obj.Relations.AddFromOrUpdate(Contracts.PublicConstants.Module.AccountingDocumentsRelationName, _obj.State.Properties.LeadingDocument.OriginalValue, _obj.LeadingDocument);
            }

            if (_obj.Corrected != null && _obj.Corrected.AccessRights.CanRead() && !_obj.Relations.GetRelatedFrom(Constants.Module.CorrectionRelationName).Contains(_obj.Corrected))
            {
                _obj.Relations.AddFromOrUpdate(Constants.Module.CorrectionRelationName, _obj.State.Properties.Corrected.OriginalValue, _obj.Corrected);
            }
        }
Ejemplo n.º 29
0
        public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
        {
            var deletedApprovers = _obj.State.Properties.Approvers.Deleted;
            var addedApprovers   = _obj.State.Properties.Approvers.Added;
            var changedApprovers = _obj.State.Properties.Approvers.Changed;

            var createFromSchema = false;

            e.Params.TryGetValue(Constants.ApprovalTask.CreateFromSchema, out createFromSchema);
            if (!createFromSchema)
            {
                var stages = Functions.ApprovalTask.GetStages(ApprovalTasks.As(_obj.Task));
                Functions.ApprovalReworkAssignment.ValidateApprovalReworkAssignment(_obj, stages, e);
            }
            else
            {
                e.Params.Remove(Constants.ApprovalTask.CreateFromSchema);
            }

            // Синхронизация грида согласующих со списком доп. согласующих.
            foreach (var deletedApprover in deletedApprovers)
            {
                var deleted = _obj.AddApprovers.Where(a => Equals(a.Approver, deletedApprover.Approver)).FirstOrDefault();
                _obj.AddApprovers.Remove(deleted);
            }

            if (addedApprovers.Any(a => a.IsRequiredApprover != true) || changedApprovers.Any(a => a.IsRequiredApprover != true))
            {
                _obj.AddApprovers.Clear();
                foreach (var approver in _obj.Approvers.Where(a => a.IsRequiredApprover != true))
                {
                    var newApprover = _obj.AddApprovers.AddNew();
                    newApprover.Approver = approver.Approver;
                }
            }
        }
Ejemplo n.º 30
0
 public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
 {
     _obj.LastUpdate = Calendar.Now;
 }