|
@ -114,7 +114,7 @@ public class UnplannedIssueJobAppService |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task<List<BalanceDTO>> DeductInventory(List<BalanceDTO> inventory, decimal quantityToDeduct) |
|
|
private async Task<List<BalanceDTO>> DeductInventory(List<BalanceDTO> inventory, decimal quantityToDeduct, EnumLocationType enumLocationType) |
|
|
{ |
|
|
{ |
|
|
List<BalanceDTO> balanceDTOs = new List<BalanceDTO>(); |
|
|
List<BalanceDTO> balanceDTOs = new List<BalanceDTO>(); |
|
|
decimal totalDeducted = 0; |
|
|
decimal totalDeducted = 0; |
|
@ -128,46 +128,18 @@ public class UnplannedIssueJobAppService |
|
|
{ |
|
|
{ |
|
|
var locationDto = await _locationAppService.GetByCodeAsync(item.LocationCode).ConfigureAwait(false); |
|
|
var locationDto = await _locationAppService.GetByCodeAsync(item.LocationCode).ConfigureAwait(false); |
|
|
BalanceDTO dto = new BalanceDTO(); |
|
|
BalanceDTO dto = new BalanceDTO(); |
|
|
switch (locationDto.Type) |
|
|
if (enumLocationType == EnumLocationType.RAW) |
|
|
{ |
|
|
{ |
|
|
case EnumLocationType.RAW: |
|
|
dto.InjectFrom(item); |
|
|
dto.InjectFrom(item); |
|
|
dto.Qty = availableToDeduct; |
|
|
dto.Qty = availableToDeduct; |
|
|
balanceDTOs.Add(dto); |
|
|
balanceDTOs.Add(dto); |
|
|
} |
|
|
break; |
|
|
else |
|
|
case EnumLocationType.FG: |
|
|
{ |
|
|
dto.InjectFrom(item); |
|
|
dto.InjectFrom(item); |
|
|
balanceDTOs.Add(dto); |
|
|
balanceDTOs.Add(dto); |
|
|
break; |
|
|
} |
|
|
case EnumLocationType.DimensionalStorehouse: |
|
|
|
|
|
dto.InjectFrom(item); |
|
|
|
|
|
balanceDTOs.Add(dto); |
|
|
|
|
|
break; |
|
|
|
|
|
case EnumLocationType.CUST: |
|
|
|
|
|
dto.InjectFrom(item); |
|
|
|
|
|
balanceDTOs.Add(dto); |
|
|
|
|
|
break; |
|
|
|
|
|
case EnumLocationType.KittingWip: |
|
|
|
|
|
dto.InjectFrom(item); |
|
|
|
|
|
balanceDTOs.Add(dto); |
|
|
|
|
|
break; |
|
|
|
|
|
case EnumLocationType.OUTSIDE: |
|
|
|
|
|
dto.InjectFrom(item); |
|
|
|
|
|
balanceDTOs.Add(dto); |
|
|
|
|
|
break; |
|
|
|
|
|
case EnumLocationType.SEMI: |
|
|
|
|
|
dto.InjectFrom(item); |
|
|
|
|
|
balanceDTOs.Add(dto); |
|
|
|
|
|
break; |
|
|
|
|
|
case EnumLocationType.WIP: |
|
|
|
|
|
dto.InjectFrom(item); |
|
|
|
|
|
balanceDTOs.Add(dto); |
|
|
|
|
|
break; |
|
|
|
|
|
case EnumLocationType.THIRDPARTY: |
|
|
|
|
|
dto.InjectFrom(item); |
|
|
|
|
|
balanceDTOs.Add(dto); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
// 如果已经扣减达到所需数量,退出循环
|
|
|
// 如果已经扣减达到所需数量,退出循环
|
|
|
if (totalDeducted >= quantityToDeduct) |
|
|
if (totalDeducted >= quantityToDeduct) |
|
@ -190,18 +162,11 @@ public class UnplannedIssueJobAppService |
|
|
{ |
|
|
{ |
|
|
var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)).ConfigureAwait(false);//获取存放库位
|
|
|
var locationCodes = await _locationAppService.GetListByErpLocationCodes(new StringList(requestDtoDetail.LocationErpCode)).ConfigureAwait(false);//获取存放库位
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (locationCodes.Count == 0) |
|
|
if (locationCodes.Count == 0) |
|
|
{ |
|
|
{ |
|
|
throw new UserFriendlyException("ERP库位没有对应WMS库位!"); |
|
|
throw new UserFriendlyException("ERP库位没有对应WMS库位!"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var first=locationCodes.FirstOrDefault(); |
|
|
var first=locationCodes.FirstOrDefault(); |
|
|
var locationDto = await _locationAppService.GetByCodeAsync(first.Code).ConfigureAwait(false); |
|
|
var locationDto = await _locationAppService.GetByCodeAsync(first.Code).ConfigureAwait(false); |
|
|
var input = new RecommendBalanceRequestInput(); |
|
|
var input = new RecommendBalanceRequestInput(); |
|
|