public override void LeadingDocumentChanged(Sungero.Docflow.Shared.OfficialDocumentLeadingDocumentChangedEventArgs e) { base.LeadingDocumentChanged(e); if (Equals(e.NewValue, e.OldValue)) { return; } if (e.NewValue != null && _obj.Counterparty == null) { _obj.Counterparty = AccountingDocumentBases.Is(e.NewValue) ? Docflow.AccountingDocumentBases.As(e.NewValue).Counterparty : Contracts.ContractualDocuments.As(e.NewValue).Counterparty; } if (e.NewValue != null && _obj.BusinessUnit == null) { _obj.BusinessUnit = e.NewValue.BusinessUnit; } if (e.NewValue != null) { Docflow.PublicFunctions.OfficialDocument.CopyProjects(e.NewValue, _obj); } FillName(); _obj.Relations.AddFromOrUpdate(Contracts.PublicConstants.Module.AccountingDocumentsRelationName, e.OldValue, e.NewValue); }
/// <summary> /// Проверить контрагента на резидент/нерезидент. /// </summary> /// <param name="document">Документ.</param> /// <param name="task">Задача на согласование.</param> /// <returns>Результат проверки условия. Структуру формата - выполнение условия (true, если контрагент нерезидент), сообщение об ошибке.</returns> private Structures.ConditionBase.ConditionResult CheckNonresident(IOfficialDocument document, IApprovalTask task) { if (OutgoingDocumentBases.Is(document)) { var outgoingDocument = OutgoingDocumentBases.As(document); // Если хоть один адресат нерезидент, идем по ветке с нерезидентом. var isNonResident = outgoingDocument.Addressees.Any(x => x.Correspondent.Nonresident == true); return(Structures.ConditionBase.ConditionResult.Create(isNonResident, string.Empty)); } if (ContractualDocumentBases.Is(document)) { var counterparty = ContractualDocumentBases.As(document).Counterparty; var nonresident = counterparty != null ? counterparty.Nonresident : true; return(Structures.ConditionBase.ConditionResult.Create(nonresident, string.Empty)); } if (AccountingDocumentBases.Is(document)) { var counterparty = AccountingDocumentBases.As(document).Counterparty; var nonresident = counterparty != null ? counterparty.Nonresident : true; return(Structures.ConditionBase.ConditionResult.Create(nonresident, string.Empty)); } return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.DocumentNotContainsFieldCounterpartyOrCorrespondent)); }
/// <summary> /// Проверить валюту. /// </summary> /// <param name="document">Документ.</param> /// <param name="task">Задача на согласование.</param> /// <returns>Результат проверки условия. Структуру формата - выполнение условия (true, если валюта совпадает), сообщение об ошибке.</returns> private Structures.ConditionBase.ConditionResult CheckCurrency(IOfficialDocument document, IApprovalTask task) { var accountingDocument = AccountingDocumentBases.As(document); var contractualDocument = ContractualDocumentBases.As(document); if (accountingDocument == null && contractualDocument == null) { return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.DocumentNotContainsFieldCurrency)); } if (accountingDocument != null && accountingDocument.Currency != null) { return(Structures.ConditionBase.ConditionResult.Create(_obj.Currencies.Any(c => Equals(c.Currency, accountingDocument.Currency)), string.Empty)); } if (contractualDocument != null && contractualDocument.Currency != null) { return(Structures.ConditionBase.ConditionResult.Create(_obj.Currencies.Any(c => Equals(c.Currency, contractualDocument.Currency)), string.Empty)); } return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.FillCurrencyInContractCard)); }
/// <summary> /// Проверить сумму документа. /// </summary> /// <param name="document">Документ.</param> /// <param name="task">Задача на согласование.</param> /// <returns>Результат проверки условия. Структуру формата - выполнение условия (true, если сумма документа больше или равна сумме условия), сообщение об ошибке.</returns> private Structures.ConditionBase.ConditionResult CheckAmountIsMore(IOfficialDocument document, IApprovalTask task) { if (!AccountingDocumentBases.Is(document) && !ContractualDocumentBases.Is(document)) { return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.DocumentNotContainsFieldAmount)); } var accounting = AccountingDocumentBases.As(document); var contractual = ContractualDocumentBases.As(document); if (accounting != null && accounting.TotalAmount.HasValue) { return(Structures.ConditionBase.ConditionResult.Create(this.CheckAmount(accounting.TotalAmount), string.Empty)); } if (contractual != null && contractual.TotalAmount.HasValue) { return(Structures.ConditionBase.ConditionResult.Create(this.CheckAmount(contractual.TotalAmount), string.Empty)); } return(Structures.ConditionBase.ConditionResult.Create(null, ConditionBases.Resources.FillTotalAmountInContractCard)); }
public List <IAccountingDocumentBase> FindAccountingDocuments(string number, string date, string butin, string butrrc, string cuuid, string ctin, string ctrrc, bool corrective, bool incomingTaxInvoice, bool outgoingTaxInvoice, bool contractStatement, bool waybill, bool universalTransferDocument) { var result = AccountingDocumentBases.GetAll() .Where(a => incomingTaxInvoice && IncomingTaxInvoices.Is(a) || outgoingTaxInvoice && OutgoingTaxInvoices.Is(a) || contractStatement && ContractStatements.Is(a) || waybill && Waybills.Is(a) || universalTransferDocument && UniversalTransferDocuments.Is(a)); // Фильтр по НОР. if (string.IsNullOrWhiteSpace(butin) || string.IsNullOrWhiteSpace(butrrc)) { return(new List <IAccountingDocumentBase>()); } var businessUnit = Sungero.Company.BusinessUnits.GetAll().FirstOrDefault(x => x.TIN == butin && x.TRRC == butrrc); if (businessUnit == null) { return(new List <IAccountingDocumentBase>()); } else { result = result.Where(x => Equals(x.BusinessUnit, businessUnit)); } // Фильтр по номеру. var relevantNumbers = this.GetRelevantNumbers(number); result = result.Where(x => relevantNumbers.Contains(x.RegistrationNumber)); // Фильтр по дате. DateTime parsedDate; if (!string.IsNullOrWhiteSpace(date) && DateTime.TryParseExact(date, "dd'.'MM'.'yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out parsedDate)) { result = result.Where(x => x.RegistrationDate == parsedDate); } // Фильтр по контрагенту. var counterparties = Sungero.Parties.PublicFunctions.Module.Remote.FindCounterparty(cuuid, ctin, ctrrc, string.Empty); if (counterparties.Any()) { result = result.Where(x => counterparties.Contains(x.Counterparty)); } // Фильтр корректировочный или нет. result = result.Where(x => x.IsAdjustment == corrective); return(result.ToList()); }
public override bool CanCreateVersion(Sungero.Domain.Client.CanExecuteChildCollectionActionArgs e) { var accountDocument = AccountingDocumentBases.As(_obj.ElectronicDocument); return(base.CanCreateVersion(e) && accountDocument.IsFormalized != true); }