public static IQueryable <IContractStatement> GetDuplicates(IContractStatement contractStatement, Sungero.Company.IBusinessUnit businessUnit, string registrationNumber, DateTime?registrationDate, Sungero.Parties.ICounterparty counterparty, Docflow.IOfficialDocument leadingDocument) { return(ContractStatements.GetAll() .Where(l => Equals(contractStatement.DocumentKind, l.DocumentKind)) .Where(l => Equals(businessUnit, l.BusinessUnit)) .Where(l => registrationDate == l.RegistrationDate) .Where(l => registrationNumber == l.RegistrationNumber) .Where(l => Equals(counterparty, l.Counterparty)) .Where(l => Equals(leadingDocument, l.LeadingDocument)) .Where(l => !Equals(contractStatement, l))); }
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()); }