예제 #1
0
        public virtual void DocumentForReviewGroupAdded(Sungero.Workflow.Interfaces.AttachmentAddedEventArgs e)
        {
            var document = OfficialDocuments.As(e.Attachment);

            // Задать тему.
            using (TenantInfo.Culture.SwitchTo())
                _obj.Subject = Docflow.PublicFunctions.Module.TrimSpecialSymbols(DocumentReviewTasks.Resources.Consideration, document.Name);

            // Задать адресата.
            if (IncomingDocumentBases.Is(document))
            {
                _obj.Addressee = IncomingDocumentBases.As(document).Addressee;
            }
            if (Memos.Is(document))
            {
                _obj.Addressee = Memos.As(document).Addressee;
            }

            // Задать срок рассмотрения.
            var addressee = _obj.Addressee ?? Users.Current;

            _obj.Deadline = Docflow.PublicFunctions.DocumentKind.GetConsiderationDate(document.DocumentKind, addressee) ??
                            Calendar.Now.AddWorkingDays(addressee, Functions.Module.Remote.GetDocumentReviewDefaultDays());
            if (!_obj.State.IsCopied)
            {
                Docflow.PublicFunctions.Module.SynchronizeAddendaAndAttachmentsGroup(_obj.AddendaGroup, _obj.DocumentForReviewGroup.OfficialDocuments.FirstOrDefault());
            }

            Docflow.PublicFunctions.OfficialDocument.DocumentAttachedInMainGroup(document, _obj);

            // Добавить вложения.
            Docflow.PublicFunctions.OfficialDocument.AddRelatedDocumentsToAttachmentGroup(document, _obj.OtherGroup);
        }
예제 #2
0
 public static IQueryable <IOfficialDocument> GetOfficialCorrespondenceWithCounterparty(
     Parties.ICounterparty counterparty, DateTime?periodBegin, DateTime?periodEnd)
 {
     return(OfficialDocuments.GetAll()
            .Where(l => l.RegistrationState == Docflow.OfficialDocument.RegistrationState.Reserved ||
                   l.RegistrationState == Docflow.OfficialDocument.RegistrationState.Registered)
            .Where(l => periodBegin == null || l.RegistrationDate >= periodBegin)
            .Where(l => periodEnd == null || l.RegistrationDate <= periodEnd)
            .Where(l => (IncomingDocumentBases.Is(l) && Equals(IncomingDocumentBases.As(l).Correspondent, counterparty)) ||
                   (OutgoingDocumentBases.Is(l) && OutgoingDocumentBases.As(l).Addressees.Select(x => x.Correspondent).Any(y => Equals(y, counterparty)))));
 }
예제 #3
0
        /// <summary>
        /// Проверить, требуется ли скрытие создания сопроводительного письма.
        /// </summary>
        /// <param name="collapsedStageTypes">Схлопнутые этапы.</param>
        /// <returns>True, если требуется.</returns>
        public bool NeedHideCoverLetterAction(List <Enumeration?> collapsedStageTypes)
        {
            if (!collapsedStageTypes.Where(s => s == Docflow.ApprovalStage.StageType.Sending).Any())
            {
                return(true);
            }

            var document = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();

            if (ContractualDocumentBases.Is(document) || IncomingDocumentBases.Is(document))
            {
                return(false);
            }

            return(true);
        }