public override MatchResult Match(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult) { matchResult.Commitments = commitments.ToArray(); var commitmentsToMatch = commitments.Where(c => priceEpisode.NegotiatedPrice.HasValue && (long)c.NegotiatedPrice == priceEpisode.NegotiatedPrice.Value).ToList(); if (!commitmentsToMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.MismatchingPrice); } else { matchResult.Commitments = commitmentsToMatch.ToArray(); } return(ExecuteNextHandler(commitments, priceEpisode, dasAccounts, matchResult)); }
public override MatchResult Match(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult) { matchResult.Commitments = commitments.ToArray(); if (priceEpisode.StandardCode.HasValue) { var commitmentsToMatch = commitments.Where(c => c.StandardCode.HasValue && c.StandardCode.Value == priceEpisode.StandardCode.Value).ToList(); if (!commitmentsToMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.MismatchingStandard); } else { matchResult.Commitments = commitmentsToMatch.ToArray(); } } return(ExecuteNextHandler(commitments, priceEpisode, dasAccounts, matchResult)); }
public override MatchResult Match(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult) { var commitment = commitments.FirstOrDefault(); var accountsMatch = dasAccounts.Where(a => commitments.Any(c => c.Id == a.Id && a.IsLevyPayer == true)); if (!accountsMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.NotLevyPayer); } return(ExecuteNextHandler(commitments, priceEpisode, dasAccounts, matchResult)); }
public override MatchResult Match(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult) { var distinctCommitmentIds = commitments .Where(x => x.PaymentStatus != (int)PaymentStatus.Cancelled && x.PaymentStatus != (int)PaymentStatus.Deleted && x.PaymentStatus != (int)PaymentStatus.Completed) .Select(c => new { Id = c.Id }) .Distinct() .ToArray(); if (distinctCommitmentIds.Length > 1) { matchResult.ErrorCodes.Add(DataLockErrorCodes.MultipleMatches); } matchResult.Commitments = commitments.ToArray(); return(ExecuteNextHandler(commitments, priceEpisode, dasAccounts, matchResult)); }
public override MatchResult Match(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult) { var commitmentsToMatch = commitments.Where(c => priceEpisode.StartDate >= c.StartDate && priceEpisode.StartDate < c.EndDate && priceEpisode.StartDate >= c.EffectiveFrom && (c.EffectiveTo == null || priceEpisode.StartDate <= c.EffectiveTo)).ToList(); if (!commitmentsToMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.EarlierStartDate); matchResult.Commitments = commitments.ToArray(); } else { matchResult.Commitments = commitmentsToMatch.ToArray(); } return(ExecuteNextHandler(commitmentsToMatch, priceEpisode, dasAccounts, matchResult)); }
public override MatchResult Match(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult) { var commitmentsToMatch = commitments.Where(c => c.Ukprn == priceEpisode.Ukprn).ToList(); if (!commitmentsToMatch.Any()) { matchResult.ErrorCodes.Add(DataLockErrorCodes.MismatchingUkprn); matchResult.Commitments = commitments.ToArray(); } else { matchResult.Commitments = commitmentsToMatch.ToArray(); } return(ExecuteNextHandler(commitmentsToMatch, priceEpisode, dasAccounts, matchResult)); }
protected MatchResult ExecuteNextHandler(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult) { return(NextMatchHandler == null || (StopOnError && matchResult.ErrorCodes.Count > 0) ? matchResult : NextMatchHandler.Match(commitments, priceEpisode, dasAccounts, matchResult)); }
public abstract MatchResult Match(List <Commitment> commitments, Earning priceEpisode, List <Account> dasAccounts, MatchResult matchResult);