using GB5Shared.DTO.Framework.Login; using MMDAL.DTO.StockValuation; using System.Data.Common; namespace MMDAL.CustomCode.FifoLayerCost; public interface IFifoLayerCostDAL { Task CreateCostLayerAsync( long costLayerId, int itemId, int skuId, int storeId, int ouid, decimal quantity, decimal unitCost, int objectTypeId, int objectId, long stockLedgerId, DateOnly layerDate, LoginDTO login, DbTransaction tx, CancellationToken ct); /// /// Returns slices consumed from open cost layers for this issue quantity. /// isLifo=false → FIFO; isLifo=true → LIFO. /// Task> AllocateLayersAsync( int itemId, int skuId, int storeId, int ouid, decimal issueQty, bool isLifo, LoginDTO login, CancellationToken ct); /// /// Decrements TCOSTLAYER.RemainingQuantity for a consumed slice. /// Marks ISFULLYCONSUMED=1 when remaining drops to zero. /// Task ConsumeLayerAsync( long costLayerId, decimal consumedQty, LoginDTO login, DbTransaction tx, CancellationToken ct); /// /// Records each layer consumption in TCOSTLAYERDETAIL for audit. /// Task InsertLayerConsumptionAsync( long costLayerDetailId, long costLayerId, long issueStockLedgerId, decimal consumedQuantity, decimal unitCost, LoginDTO login, DbTransaction tx, CancellationToken ct); Task> GetOpenCostLayersAsync( int itemId, int skuId, int storeId, int ouid, LoginDTO login, CancellationToken ct); }