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>> GetListByManyCodes(List<string> codes);
Task<List<LocationDTO>> GetListByTypesAndErpCodeAsync(List<EnumLocationType> types, string erpCode); Task<List<LocationDTO>> GetListByTypesAndErpCodeAsync(List<EnumLocationType> types, string erpCode);
Task<List<LocationDTO>> GetListByTypesAndErpCodeAsync(List<EnumLocationType> types, string erpCode,string locCode); 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> public interface IPurchasePriceSheetAppService : ISfsBaseDataAppServiceBase<PurchasePriceSheetDTO, SfsBaseDataRequestInputBase, PurchasePriceSheetEditInput>
{ {
Task<bool> CheckPurPriceAsync(string supplierCode, string itemCode);
Task<PurchasePriceSheetDTO> GetByItemCodeAsync(string itemCode,string supplierCode); Task<PurchasePriceSheetDTO> GetByItemCodeAsync(string itemCode,string supplierCode);
Task UpsertAsyncByInterface(PurchasePriceSheetEditInput input); 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; 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")] [HttpGet("get-all")]
//[Authorize(LocationPermissions.Default)] //[Authorize(LocationPermissions.Default)]
public virtual async Task<List<LocationDTO>> GetAllAsync() 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); var entity = ObjectMapper.Map<PurchasePriceSheetEditInput, PurchasePriceSheet>(input);
await _repository.UpsertAsyncByInterface(entity).ConfigureAwait(false); 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; namespace Win_in.Sfs.Wms.Store.Application;
using System.Linq; using System.Linq;
using Win_in.Sfs.Basedata.Application.Contracts;
[Authorize] [Authorize]
[Route($"{StoreConsts.RootPath}putaway-note")] [Route($"{StoreConsts.RootPath}putaway-note")]
@ -29,18 +30,21 @@ public class PutawayNoteAppService :
private readonly IPurchaseReceiptNoteAppService _purchaseReceiptNoteAppService; private readonly IPurchaseReceiptNoteAppService _purchaseReceiptNoteAppService;
public readonly IInspectJobAppService _inspectJobAppService; public readonly IInspectJobAppService _inspectJobAppService;
public readonly IPurchaseOrderManager _purchaseOrderManager; public readonly IPurchaseOrderManager _purchaseOrderManager;
public readonly IPurchasePriceSheetAppService _purchasePriceSheetAppService;
public PutawayNoteAppService( public PutawayNoteAppService(
IPutawayNoteRepository repository, IPutawayNoteRepository repository,
IPutawayNoteManager putawayNoteManager, IPutawayNoteManager putawayNoteManager,
IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService, IPurchaseReceiptNoteAppService purchaseReceiptNoteAppService,
IInspectJobAppService inspectJobAppService, IInspectJobAppService inspectJobAppService,
IPurchaseOrderManager purchaseOrderManager) : base(repository) IPurchaseOrderManager purchaseOrderManager,
IPurchasePriceSheetAppService purchasePriceSheetAppService ) : base(repository)
{ {
_putawayNoteManager = putawayNoteManager; _putawayNoteManager = putawayNoteManager;
_purchaseReceiptNoteAppService = purchaseReceiptNoteAppService; _purchaseReceiptNoteAppService = purchaseReceiptNoteAppService;
_inspectJobAppService = inspectJobAppService; _inspectJobAppService = inspectJobAppService;
_purchaseOrderManager = purchaseOrderManager; _purchaseOrderManager = purchaseOrderManager;
_purchasePriceSheetAppService = purchasePriceSheetAppService;
} }
/// <summary> /// <summary>
@ -59,7 +63,12 @@ public class PutawayNoteAppService :
var isClosed = await _purchaseOrderManager.CheckIsCloseAsync(input.Number,input.SupplierCode, detail.ItemCode).ConfigureAwait(false); var isClosed = await _purchaseOrderManager.CheckIsCloseAsync(input.Number,input.SupplierCode, detail.ItemCode).ConfigureAwait(false);
if (isClosed) 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 var purchasereDetail = await _purchaseReceiptNoteAppService
.GetDetailByItemAndPackingAsync(detail.ItemCode, detail.ToPackingCode).ConfigureAwait(false); .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 IPurchaseOrderManager _purchaseOrderManager;
private readonly ISupplierAppService _supplierAppService; private readonly ISupplierAppService _supplierAppService;
private readonly IItemBasicAppService _itemBasicAppService; private readonly IItemBasicAppService _itemBasicAppService;
private readonly ILocationAppService _locationAppService;
public PurchaseOrderAppService( public PurchaseOrderAppService(
IPurchaseOrderRepository repository, IPurchaseOrderRepository repository,
IPurchaseOrderManager purchaseOrderManager, IPurchaseOrderManager purchaseOrderManager,
ISupplierAppService supplierAppService, ISupplierAppService supplierAppService,
IItemBasicAppService itemBasicAppService) : base(repository) IItemBasicAppService itemBasicAppService
, ILocationAppService locationAppService) : base(repository)
{ {
_repository = repository; _repository = repository;
_purchaseOrderManager = purchaseOrderManager; _purchaseOrderManager = purchaseOrderManager;
_supplierAppService = supplierAppService; _supplierAppService = supplierAppService;
_itemBasicAppService = itemBasicAppService; _itemBasicAppService = itemBasicAppService;
_locationAppService = locationAppService;
base.CreatePolicyName = PurchaseOrderPermissions.Create; base.CreatePolicyName = PurchaseOrderPermissions.Create;
base.UpdatePolicyName = PurchaseOrderPermissions.Update; base.UpdatePolicyName = PurchaseOrderPermissions.Update;
base.DeletePolicyName = PurchaseOrderPermissions.Delete; base.DeletePolicyName = PurchaseOrderPermissions.Delete;
@ -56,6 +59,15 @@ public class PurchaseOrderAppService :
{ {
var ImportData = dictionary.Select(p => p.Key); 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>(); var supplierDtos = new List<SupplierDTO>();
#region 校验供应商 #region 校验供应商
@ -190,7 +202,21 @@ public class PurchaseOrderAppService :
return result; 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 #endregion

Loading…
Cancel
Save