You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
2.9 KiB

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Timing;
using Volo.Abp.Uow;
using Volo.Abp.Users;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Domain;
namespace Win_in.Sfs.Wms.Inventory
{
/// <summary>
/// 采购收货记录触发的库存相关订阅事件
/// </summary>
public class PurchaseReceiptCreatedNoteEventHandler :
//IDistributedEventHandler<EntityCreatedEto<PurchaseReceiptNoteETO>>,
ITransientDependency
{
private readonly IObjectMapper _objectMapper;
private readonly IInventoryBalanceManager _inventoryBalanceManager;
private readonly IInventoryTransactionManager _inventoryTransactionManager;
public PurchaseReceiptCreatedNoteEventHandler(
IObjectMapper objectMapper,
IInventoryBalanceManager inventoryBalanceManager,
IInventoryTransactionManager inventoryTransactionManager
)
{
_objectMapper = objectMapper;
_inventoryBalanceManager = inventoryBalanceManager;
_inventoryTransactionManager = inventoryTransactionManager;
}
#region ------ 屏蔽此处订阅事件,调整在检验记录中入库 ------
/// <summary>
/// 采购收货记录创建时,入库(收货记录创建的时候,商品状态均为待检)(采购收货记录的状态来源为库位的默认库存状态)
/// </summary>
/// <param name="eventData"></param>
/// <returns></returns>
[UnitOfWork]
public virtual async Task HandleEventAsync(EntityCreatedEto<PurchaseReceiptNoteETO> eventData)
{
//判断
Check.NotNull(eventData, nameof(eventData));
//订阅:收货记录创建时,入库
var entity = eventData.Entity;
//采购收货记录详细信息
var details = eventData.Entity.Details;
try
{
//变更库存余额
var inventoryWithLocations =
_objectMapper.Map<List<PurchaseReceiptNoteDetailETO>, List<InventoryWithLocation>>(details);
var balance = await _inventoryBalanceManager.InboundAsync(inventoryWithLocations);
////添加库存事务
//var inventoryTransactions = _objectMapper.Map<List<PurchaseReceiptNoteDetailETO>, List<InventoryTransactionETO>>(details);
//await _inventoryTransactionManager.AddFromPurchaseReceiptNoteAsync(eventData.Entity);
}
catch (Exception ex)
{
throw new UserFriendlyException($"收货记录创建时,库存余额和库存事务更新失败!{Environment.NewLine}{ex.Message}");
}
}
#endregion
}
}