diff --git a/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs b/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs index 60774ee..9050da6 100644 --- a/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs +++ b/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs @@ -8,4 +8,5 @@ public interface IMaterialTransactionService Task GetByWzNumber(string wzNumber); Task> GetByWzNumbers(ISet wzNumbers); Task> GetByOrderNumber(string orderNumber); + Task> GetOrderNumbersByWz(ISet wzNumbers); } \ No newline at end of file diff --git a/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs b/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs index e278475..a2e9fb8 100644 --- a/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs +++ b/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs @@ -45,4 +45,25 @@ public class MaterialTransactionService(SytelineSaAppDbContext context, IMapper return await context.MaterialTransactions.Where(x => x.RefNum == orderNumber).OrderByDescending(x => x.TransDate) .Select(x => mapper.Map(x)).ToListAsync(); } + + public async Task> GetOrderNumbersByWz(ISet wzNumbers) + { + if (!wzNumbers.Any()) + return []; + + var wzNumbersList = string.Join(",", wzNumbers.Select(w => $"'{w}'")); + + var sql = $@" + SELECT z.* + FROM ZPL_InternalNum_Matltran z + WHERE z.MTGroupNum <> '' + AND z.MTGroupNum IN ({wzNumbersList})"; + + IList result = await context.MaterialTransactions + .FromSqlRaw(sql) + .AsNoTracking() + .ToListAsync(); + + return result.Select(x => mapper.Map(x)); + } } \ No newline at end of file