Browse Source

1.非生产领退料原来允许导入成品库数据

2.非生产领料原料库存推荐加参数控制是否不推荐无箱码库存
dev_DY_CC
lvzb 1 year ago
parent
commit
f2a48f8862
  1. 6
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/Inputs/RecommendBalanceRequestInput.cs
  2. 2
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs
  3. 8
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs
  4. 2
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/IBalanceManager.cs
  5. 11
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs
  6. 5
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs

6
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/Inputs/RecommendBalanceRequestInput.cs

@ -38,6 +38,12 @@ public class RecommendBalanceRequestInput
[Display(Name = "库存状态")]
public List<EnumInventoryStatus> Statuses { get; set; }
/// <summary>
/// 是否必须有箱码
/// </summary>
[Display(Name = "是否必须有箱码")]
public bool IsPackingCode { get; set; } = false;
public override string ToString()
{
var locationTypes = LocationTypes.Aggregate("", (current, locationType) => current + (locationType.GetDisplayName() + ","));

2
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs

@ -498,7 +498,7 @@ public class BalanceAppService
}
Logger.LogDebug(traceId + "|Input:" + input);
var balances = await _balanceManager.GetRecommendBalancesByLocationAsync(traceId, itemCode, qty, locations, statuses).ConfigureAwait(false);
var balances = await _balanceManager.GetRecommendBalancesByLocationAsync(traceId, itemCode, qty, locations, statuses, input.IsPackingCode).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<Balance>, List<BalanceDTO>>(balances);

8
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs

@ -450,7 +450,7 @@ public class BalanceManager : DomainService, IBalanceManager
/// <exception cref="UserFriendlyException"></exception>
public virtual async Task<List<Balance>> GetRecommendBalancesByLocationAsync(Guid traceId, string itemCode,
decimal requestQty, List<string> validLocations,
List<EnumInventoryStatus> validStatuses)
List<EnumInventoryStatus> validStatuses,bool ispackingcode)
{
var recommendBalances = new List<Balance>();//返回可使用的推荐库存余额
@ -465,11 +465,17 @@ public class BalanceManager : DomainService, IBalanceManager
Expression<Func<Balance, bool>> expression = p => p.ItemCode == itemCode;
expression = expression.And(p => validStatuses.Contains(p.Status));
expression = expression.And(p => p.IsActive);
//如果物品的有效期不是无限的, 要过滤掉过期库存
if (item.ValidityUnit != EnumValidityUnit.Infinite)
{
expression = expression.And(p => p.ExpireDate > DateTime.Now);
}
//排除无箱码库存
if (ispackingcode)
{
expression = expression.And(p => !string.IsNullOrEmpty(p.PackingCode));
}
//筛选有效库区 2023-6-29 李智慧 王旭 袁静雯 确认不需要做区域校验
//if (validLocationAreas.Any())
//{

2
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/IBalanceManager.cs

@ -33,5 +33,5 @@ public interface IBalanceManager : IDomainService
Task<List<string>> GetItemCodesOfLocationAsync(string locationCode);
Task<Balance> ModifyAsync(Balance balance);
Task<List<Balance>> GetListByLocationTypeAndInventoryStatusAsync(string itemCode, EnumInventoryStatus enumInventoryStatus, List<EnumLocationType> enumLocationTypes);
Task<List<Balance>> GetRecommendBalancesByLocationAsync(Guid traceId, string itemCode, decimal requestQty, List<string> validLocations, List<EnumInventoryStatus> validStatuses);
Task<List<Balance>> GetRecommendBalancesByLocationAsync(Guid traceId, string itemCode, decimal requestQty, List<string> validLocations, List<EnumInventoryStatus> validStatuses,bool ispackingcode);
}

11
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedIssueRequests/UnplannedIssueRequestForDongyangAppService.cs

@ -96,16 +96,20 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
List<UnplannedIssueRequestDetail> newDetails = new List<UnplannedIssueRequestDetail>();
foreach (var detail in unplannedIssueRequest.Details)
{
//需要复制一个这个方法 去掉区域参数 换成库位参数
RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
if (unplannedIssueRequest.UnplannedIssueType == EnumUnplannedIssueType.Raw)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI)
if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI && locationDto.Type != EnumLocationType.FG)
{
throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," +
$"不是{EnumLocationType.RAW.GetDisplayName()}" +
$"或{EnumLocationType.SEMI.GetDisplayName()}】");
$"或{EnumLocationType.SEMI.GetDisplayName()}" +
$"或{EnumLocationType.FG.GetDisplayName()}】");
}
unplannedIssueRequest.DirectCreateNote = false;
input.IsPackingCode = true;//只查询带箱码的推荐
}
if (unplannedIssueRequest.UnplannedIssueType == EnumUnplannedIssueType.Wip)
{
@ -116,8 +120,7 @@ public class UnplannedIssueRequestForDongyangAppService : UnplannedIssueRequestA
$"不是{EnumLocationType.WIP.GetDisplayName()}】");
}
}
//需要复制一个这个方法 去掉区域参数 换成库位参数
RecommendBalanceRequestInput input = new RecommendBalanceRequestInput();
input.ItemCode = detail.ItemCode;
input.Locations = new List<string>() { detail.LocationCode };
input.Qty = detail.Qty;

5
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs

@ -103,11 +103,12 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ
if (unplannedReceiptRequest.UnplannedReceiptType == EnumUnplannedReceiptType.Raw)
{
var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode).ConfigureAwait(false);
if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI)
if (locationDto.Type != EnumLocationType.RAW && locationDto.Type != EnumLocationType.SEMI && locationDto.Type != EnumLocationType.FG)
{
throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," +
$"不是{EnumLocationType.RAW.GetDisplayName()}" +
$"或{EnumLocationType.SEMI.GetDisplayName()}】");
$"或{EnumLocationType.SEMI.GetDisplayName()}】" +
$"或{EnumLocationType.FG.GetDisplayName()}】");
}
unplannedReceiptRequest.DirectCreateNote = false;
//需要复制一个这个方法 去掉区域参数 换成库位参数

Loading…
Cancel
Save