Browse Source

修改采购上架是校验采购价格

dev_DY_CC
lvzb 1 year ago
parent
commit
81a1ade1fc
  1. 3
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Locations/ILocationAppService.cs
  2. 1
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/IPurchasePriceSheetAppService.cs
  3. 8
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Locations/LocationAppService.cs
  4. 12
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PurchasePrices/PurchasePriceSheetAppService.cs
  5. 13
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs
  6. 28
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs

3
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Locations/ILocationAppService.cs

@ -31,6 +31,5 @@ public interface ILocationAppService
Task<List<LocationDTO>> GetListByManyCodes(List<string> codes);
Task<List<LocationDTO>> GetListByTypesAndErpCodeAsync(List<EnumLocationType> types, string erpCode);
Task<List<LocationDTO>> GetListByTypesAndErpCodeAsync(List<EnumLocationType> types, string erpCode,string locCode);
Task<List<LocationDTO>> GetListByErpLocationCodes(List<string> ErpLocationCodes);
}

1
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/PurchasePrices/IPurchasePriceSheetAppService.cs

@ -5,6 +5,7 @@ namespace Win_in.Sfs.Basedata.Application.Contracts;
public interface IPurchasePriceSheetAppService : ISfsBaseDataAppServiceBase<PurchasePriceSheetDTO, SfsBaseDataRequestInputBase, PurchasePriceSheetEditInput>
{
Task<bool> CheckPurPriceAsync(string supplierCode, string itemCode);
Task<PurchasePriceSheetDTO> GetByItemCodeAsync(string itemCode,string supplierCode);
Task UpsertAsyncByInterface(PurchasePriceSheetEditInput input);
}

8
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Locations/LocationAppService.cs

@ -202,7 +202,15 @@ public class LocationAppService
return dtos;
}
[HttpPost("get-list-by-erplocation-codes")]
public virtual async Task<List<LocationDTO>> GetListByErpLocationCodes(List<string> ErpLocationCodes)
{
var entitys = await _repository.GetListAsync(p => ErpLocationCodes.Contains(p.ErpLocationCode)).ConfigureAwait(false);
var dtos = ObjectMapper.Map<List<Domain.Location>, List<LocationDTO>>(entitys);
return dtos;
}
[HttpGet("get-all")]
//[Authorize(LocationPermissions.Default)]
public virtual async Task<List<LocationDTO>> GetAllAsync()

12
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/PurchasePrices/PurchasePriceSheetAppService.cs

@ -41,4 +41,16 @@ public class PurchasePriceSheetAppService : SfsBaseDataAppServiceBase<PurchasePr
var entity = ObjectMapper.Map<PurchasePriceSheetEditInput, PurchasePriceSheet>(input);
await _repository.UpsertAsyncByInterface(entity).ConfigureAwait(false);
}
/// <summary>
/// 判断是否有采购价格
/// </summary>
/// <returns></returns>
[HttpPost("check-purprice")]
public virtual async Task<bool> CheckPurPriceAsync( string supplierCode, string itemCode)
{
bool result = false;
var entitys = await _repository.GetListAsync(p => p.SupplierCode == supplierCode && p.ItemCode == itemCode && p.SupplierCode == supplierCode, true).ConfigureAwait(false);
if (entitys.Count != 0) result = true;
return result;
}
}

13
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/PutawayNotes/PutawayNoteAppService.cs

@ -17,6 +17,7 @@ using Win_in.Sfs.Wms.Store.Domain.Shared;
namespace Win_in.Sfs.Wms.Store.Application;
using System.Linq;
using Win_in.Sfs.Basedata.Application.Contracts;
[Authorize]
[Route($"{StoreConsts.RootPath}putaway-note")]
@ -29,18 +30,21 @@ public class PutawayNoteAppService :
private readonly IPurchaseReceiptNoteAppService _purchaseReceiptNoteAppService;
public readonly IInspectJobAppService _inspectJobAppService;
public readonly IPurchaseOrderManager _purchaseOrderManager;
public readonly IPurchasePriceSheetAppService _purchasePriceSheetAppService;
public PutawayNoteAppService(
IPutawayNoteRepository repository,
IPutawayNoteManager putawayNoteManager,
IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService,
IInspectJobAppService inspectJobAppService,
IPurchaseOrderManager purchaseOrderManager) : base(repository)
IPurchaseOrderManager purchaseOrderManager,
IPurchasePriceSheetAppService purchasePriceSheetAppService ) : base(repository)
{
_putawayNoteManager = putawayNoteManager;
_purchaseReceiptNoteAppService = purchaseReceiptNoteAppService;
_inspectJobAppService = inspectJobAppService;
_purchaseOrderManager = purchaseOrderManager;
_purchasePriceSheetAppService = purchasePriceSheetAppService;
}
/// <summary>
@ -59,7 +63,12 @@ public class PutawayNoteAppService :
var isClosed = await _purchaseOrderManager.CheckIsCloseAsync(input.Number,input.SupplierCode, detail.ItemCode).ConfigureAwait(false);
if (isClosed)
{
throw new UserFriendlyException($"零件名称【{detail.ItemCode}】的订单明细行以关闭无法执行采购上价!");
throw new UserFriendlyException($"零件名称【{detail.ItemCode}】的订单明细行以关闭无法执行采购上架!");
}
var isprice = await _purchasePriceSheetAppService.CheckPurPriceAsync(input.SupplierCode, detail.ItemCode).ConfigureAwait(false);
if (isClosed)
{
throw new UserFriendlyException($"供应商【{input.SupplierCode}】零件名称【{detail.ItemCode}】无采购价格无法执行采购上架!");
}
var purchasereDetail = await _purchaseReceiptNoteAppService
.GetDetailByItemAndPackingAsync(detail.ItemCode, detail.ToPackingCode).ConfigureAwait(false);

28
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Orders/PurchaseOrders/PurchaseOrderAppService.cs

@ -28,17 +28,20 @@ public class PurchaseOrderAppService :
private readonly IPurchaseOrderManager _purchaseOrderManager;
private readonly ISupplierAppService _supplierAppService;
private readonly IItemBasicAppService _itemBasicAppService;
private readonly ILocationAppService _locationAppService;
public PurchaseOrderAppService(
IPurchaseOrderRepository repository,
IPurchaseOrderManager purchaseOrderManager,
ISupplierAppService supplierAppService,
IItemBasicAppService itemBasicAppService) : base(repository)
IItemBasicAppService itemBasicAppService
, ILocationAppService locationAppService) : base(repository)
{
_repository = repository;
_purchaseOrderManager = purchaseOrderManager;
_supplierAppService = supplierAppService;
_itemBasicAppService = itemBasicAppService;
_locationAppService = locationAppService;
base.CreatePolicyName = PurchaseOrderPermissions.Create;
base.UpdatePolicyName = PurchaseOrderPermissions.Update;
base.DeletePolicyName = PurchaseOrderPermissions.Delete;
@ -56,6 +59,15 @@ public class PurchaseOrderAppService :
{
var ImportData = dictionary.Select(p => p.Key);
#region 校验ERP库位是否存在
var allTempErpLocationCode = ImportData.Select(p => p.Details.Select(p => p.LocationErpCode).ToList()).ToList();
var allErpLocationCode = new List<string>();
allTempErpLocationCode.ForEach(p => { allErpLocationCode.AddRange(p); });
var erpLocations = await CheckErpLocationCodeAsync(allErpLocationCode).ConfigureAwait(false);
#endregion
var supplierDtos = new List<SupplierDTO>();
#region 校验供应商
@ -190,7 +202,21 @@ public class PurchaseOrderAppService :
return result;
}
private async Task<List<LocationDTO>> CheckErpLocationCodeAsync(List<string> erpLocationCodes)
{
erpLocationCodes = erpLocationCodes.Distinct().ToList();
var result = await _locationAppService.GetListByErpLocationCodes(erpLocationCodes).ConfigureAwait(false);
var resultcode = result.Select(r => r.ErpLocationCode).Distinct();
foreach (var code in erpLocationCodes)
{
if (resultcode.All(p => p != code))
{
throw new UserFriendlyException($"ERP储位代码【{code}】不存在");
}
}
return result;
}
#endregion

Loading…
Cancel
Save