using GB5Shared.DTO.Framework.Login; using MMDAL.CustomCode.StockPosition; using MMDAL.DTO.StockValuation; using Microsoft.Extensions.Logging; using System.Data.Common; namespace MMBLL.StockPosition; public class StockPositionBLL : IStockPositionBLL { private readonly IStockPositionDAL _dal; private readonly ILogger _logger; public StockPositionBLL(IStockPositionDAL dal, ILogger logger) { _dal = dal; _logger = logger; } public async Task GetStockPositionAsync( int itemId, int skuId, int storeId, int ouid, LoginDTO login, CancellationToken ct) { return await _dal.GetStockPositionAsync(itemId, skuId, storeId, ouid, login, ct) .ConfigureAwait(false); } public async Task EnsurePositionExistsAsync( int itemId, int skuId, int storeId, int ouid, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _dal.EnsurePositionExistsAsync(itemId, skuId, storeId, ouid, login, tx, ct) .ConfigureAwait(false); } public async Task UpdatePositionQuantitiesAsync( int itemId, int skuId, int storeId, int ouid, decimal goodQuantity, decimal shadowGoodQuantity, decimal rejectedQuantity, decimal reworkQuantity, decimal otherQuantity, decimal wipQuantity, decimal unlinkedWipGoodQty, decimal unlinkedWipReworkQty, int postSign, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _dal.UpdatePositionQuantitiesAsync( itemId, skuId, storeId, ouid, goodQuantity, shadowGoodQuantity, rejectedQuantity, reworkQuantity, otherQuantity, wipQuantity, unlinkedWipGoodQty, unlinkedWipReworkQty, postSign, login, tx, ct).ConfigureAwait(false); } public async Task UpdateDirectAverageCostAsync( int itemId, int skuId, int storeId, int ouid, decimal newAverageCost, decimal newAverageValue, LoginDTO login, DbTransaction tx, CancellationToken ct) { _logger.LogInformation( "Direct average cost override: Item {ItemId} SKU {SKUId} Store {StoreId} NewCost {Cost}", itemId, skuId, storeId, newAverageCost); await _dal.UpdateDirectAverageCostAsync( itemId, skuId, storeId, ouid, newAverageCost, newAverageValue, login, tx, ct).ConfigureAwait(false); } }