public override void Created(Sungero.Domain.CreatedEventArgs e) { if (!_obj.State.IsCopied) { _obj.Limit = Limit.NoLimit; if (CallContext.CalledFrom(PowerOfAttorneys.Info)) { _obj.Reason = Sungero.Docflow.SignatureSetting.Reason.PowerOfAttorney; var powerOfAttorney = PowerOfAttorneys.Get(CallContext.GetCallerEntityId(PowerOfAttorneys.Info)); if (powerOfAttorney.LifeCycleState != Docflow.OfficialDocument.LifeCycleState.Obsolete && powerOfAttorney.ValidTill >= Calendar.UserToday) { _obj.Document = powerOfAttorney; } } else { _obj.Reason = Sungero.Docflow.SignatureSetting.Reason.Duties; } _obj.DocumentFlow = SignatureSetting.DocumentFlow.All; _obj.Priority = 0; } _obj.IsSystem = false; }
public static List <IPowerOfAttorney> GetActivePowerOfAttorneys(Company.IEmployee employee, DateTime?date) { return(PowerOfAttorneys .GetAll(p => Equals(p.IssuedTo, employee) && (p.RegistrationDate == null || p.RegistrationDate <= date) && date <= p.ValidTill && (p.LifeCycleState == LifeCycleState.Draft || p.LifeCycleState == LifeCycleState.Active)) .ToList()); }
public XElement Serialize(string name = null) { return(new XElement(UblNames.Cac + (name ?? nameof(Party)), WebsiteURI?.Serialize(nameof(WebsiteURI)), EndpointID?.Serialize(nameof(EndpointID)), IndustryClassificationCode.Serialize(nameof(IndustryClassificationCode)), PartyIdentification?.Serialize(), PartyName?.Serialize(), PostalAddress?.Serialize(nameof(PostalAddress)), Contact?.Serialize(), Person?.Serialize(), AgentParty?.Serialize(nameof(AgentParty)), ServiceProviderParty?.Serialize(), PowerOfAttorneys?.Select(poa => poa?.Serialize()) )); }
public virtual IQueryable <T> DocumentFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e) { query = query.Where(d => InternalDocumentBases.Is(d) && d.LifeCycleState != Docflow.OfficialDocument.LifeCycleState.Obsolete); if (_obj.Reason == Docflow.SignatureSetting.Reason.PowerOfAttorney) { query = query.Where(d => PowerOfAttorneys.Is(d) && PowerOfAttorneys.As(d).ValidTill >= Calendar.UserToday); if (_obj.Recipient != null) { query = query.Where(d => Equals(_obj.Recipient, PowerOfAttorneys.As(d).IssuedTo)); } } return(query); }
public virtual void DocumentChanged(Sungero.Docflow.Shared.SignatureSettingDocumentChangedEventArgs e) { if (e.NewValue != null && !Equals(e.NewValue, e.OldValue) && _obj.Reason == Docflow.SignatureSetting.Reason.PowerOfAttorney) { if (PowerOfAttorneys.Is(e.NewValue)) { var powerOfAttorney = PowerOfAttorneys.As(e.NewValue); _obj.Recipient = powerOfAttorney.IssuedTo; _obj.ValidFrom = powerOfAttorney.RegistrationDate; _obj.ValidTill = powerOfAttorney.ValidTill; _obj.BusinessUnits.Clear(); var newBusinessUnit = _obj.BusinessUnits.AddNew(); newBusinessUnit.BusinessUnit = powerOfAttorney.BusinessUnit; } else { _obj.Recipient = null; _obj.ValidTill = null; _obj.BusinessUnits.Clear(); } } }
/// <summary> /// Агент рассылки уведомления об окончании срока действия доверенностей. /// </summary> public virtual void SendNotificationForExpiringPowerOfAttorney() { var createTableCommand = Queries.Module.CreateTableForExpiringPowerOfAttorney; Sungero.Docflow.PublicFunctions.Module.ExecuteSQLCommand(createTableCommand); var notifyParams = PublicFunctions.Module.GetDefaultExpiringDocsNotificationParams(Constants.Module.ExpiringPowerOfAttorneyLastNotificationKey, Constants.Module.ExpiringPowerOfAttorneyTableName); var alreadySentDocs = PublicFunctions.Module.GetDocumentsWithSendedTask(notifyParams.ExpiringDocTableName); var powerOfAttorneyIds = PowerOfAttorneys.GetAll() .Where(p => !alreadySentDocs.Contains(p.Id)) .Where(p => p.LifeCycleState == Sungero.Docflow.PowerOfAttorney.LifeCycleState.Active || p.LifeCycleState == Sungero.Docflow.PowerOfAttorney.LifeCycleState.Draft) .Where(p => p.IssuedTo != null || p.PreparedBy != null) .Where(p => notifyParams.LastNotificationReserve.AddDays(p.DaysToFinishWorks.HasValue ? p.DaysToFinishWorks.Value : 0) < p.ValidTill && p.ValidTill <= notifyParams.TodayReserve.AddDays(p.DaysToFinishWorks.HasValue ? p.DaysToFinishWorks.Value : 0)) .Where(p => p.DaysToFinishWorks == null || p.DaysToFinishWorks <= Constants.Module.MaxDaysToFinish) .Select(p => p.Id) .ToList(); Logger.DebugFormat("Powers of Attorney to send notification count = {0}.", powerOfAttorneyIds.Count()); for (int i = 0; i < powerOfAttorneyIds.Count(); i = i + notifyParams.BatchCount) { var result = Transactions.Execute( () => { var powerOfAttorneyPart = PowerOfAttorneys.GetAll(p => powerOfAttorneyIds.Contains(p.Id)).Skip(i).Take(notifyParams.BatchCount).ToList(); powerOfAttorneyPart = powerOfAttorneyPart.Where(p => notifyParams.LastNotification.ToUserTime(p.PreparedBy ?? p.IssuedTo).AddDays(p.DaysToFinishWorks.HasValue ? p.DaysToFinishWorks.Value : 0) < p.ValidTill && p.ValidTill <= Calendar.GetUserToday(p.PreparedBy ?? p.IssuedTo).AddDays(p.DaysToFinishWorks.HasValue ? p.DaysToFinishWorks.Value : 0)) .ToList(); if (!powerOfAttorneyPart.Any()) { return; } PublicFunctions.Module.ClearIdsFromExpiringDocsTable(notifyParams.ExpiringDocTableName, powerOfAttorneyPart.Select(x => x.Id).ToList()); PublicFunctions.Module.AddExpiringDocumentsToTable(notifyParams.ExpiringDocTableName, powerOfAttorneyPart.Select(x => x.Id).ToList()); foreach (var powerOfAttorney in powerOfAttorneyPart) { var subject = Docflow.PublicFunctions.Module.TrimQuotes(Resources.ExpiringPowerOfAttorneySubjectFormat(powerOfAttorney.DisplayValue)); if (subject.Length > Workflow.SimpleTasks.Info.Properties.Subject.Length) { subject = subject.Substring(0, Workflow.SimpleTasks.Info.Properties.Subject.Length); } var activeText = Docflow.PublicFunctions.Module.TrimQuotes(Resources.ExpiringPowerOfAttorneyTextFormat(powerOfAttorney.ValidTill.Value.ToShortDateString(), powerOfAttorney.DisplayValue)); var performers = Functions.Module.GetNotificationPerformers(powerOfAttorney); performers = performers.Where(p => p != null).Distinct().ToList(); var attachments = new List <Sungero.Content.IElectronicDocument>(); attachments.Add(powerOfAttorney); notifyParams.TaskParams.Document = powerOfAttorney; notifyParams.TaskParams.Subject = subject; notifyParams.TaskParams.ActiveText = activeText; notifyParams.TaskParams.Performers = performers; notifyParams.TaskParams.Attachments = attachments; PublicFunctions.Module.TrySendExpiringDocNotifications(notifyParams); } }); } if (PublicFunctions.Module.IsAllNotificationsStarted(notifyParams.ExpiringDocTableName)) { PublicFunctions.Module.UpdateLastNotificationDate(notifyParams); PublicFunctions.Module.ClearExpiringTable(notifyParams.ExpiringDocTableName, false); } }
public virtual void RecipientChanged(Sungero.Docflow.Shared.SignatureSettingRecipientChangedEventArgs e) { // При изменении подписывающего почистить документ. if (_obj.Reason == Docflow.SignatureSetting.Reason.PowerOfAttorney && _obj.Document != null && Docflow.PowerOfAttorneys.Is(_obj.Document) && !Equals(e.NewValue, PowerOfAttorneys.As(_obj.Document).IssuedTo)) { _obj.Document = null; _obj.ValidFrom = null; _obj.ValidTill = null; } if (!Equals(e.NewValue, e.OldValue)) { _obj.Certificate = null; } Functions.SignatureSetting.ChangePropertiesAccess(_obj); }