using System.Data.Common; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.ResponseStandard; using MMDAL.DTO.BOM; using MMDAL.DTO.MRP; using MMDAL.DTO.MRPRun; namespace MMDAL.CustomCode.MRPRun { public interface IMRPRunDAL { // ── Legacy ────────────────────────────────────────────────────────── Task UndoMRP(UndoMRPDTO undoMRPDTO, LoginDTO loginDTO); Task GetSelectListMRP(CriteriaDTO crt, LoginDTO loginDTO, int firstNumber = -1, int maxResult = -1); // ── MRP Run CRUD ───────────────────────────────────────────────────── Task GetMRPRun(int MRPRunId, LoginDTO loginDTO); Task> SaveMRPRun(MRPRunDTO dto, LoginDTO loginDTO, DbTransaction tx); Task> UpdateMRPRun(MRPRunDTO dto, LoginDTO loginDTO, DbTransaction tx); Task> DeleteMRPRun(int MRPRunId, LoginDTO loginDTO, DbTransaction tx); Task> GetMRPRunList(int pageOffset, int pageSize, LoginDTO loginDTO); Task GetMRPRunListCount(LoginDTO loginDTO); // ── Processing engine ──────────────────────────────────────────────── Task GetMRPConfig(int mrpId, LoginDTO login, CancellationToken ct); Task CheckMPSRunExists(int mrpId, LoginDTO login, CancellationToken ct); IAsyncEnumerable StreamDemandForMRP(int masterScheduleId, DemandFilterSpecDTO spec, LoginDTO login, CancellationToken ct); IAsyncEnumerable StreamDemandFromSalesOrder(int salesOrderId, LoginDTO login, CancellationToken ct); Task> GetOpeningStock(int ouId, LoginDTO login, CancellationToken ct); Task> GetOpeningStockAllocationScoped(int allocationId, int ouId, LoginDTO login, CancellationToken ct); Task> GetScheduledReceipts(int ouId, DateTime fromDate, LoginDTO login, CancellationToken ct); Task> GetBOMExplosion(IEnumerable itemIds, LoginDTO login, CancellationToken ct); // ── Run status ─────────────────────────────────────────────────────── Task SaveMRPRunStatus(MRPRunStatusDTO dto, LoginDTO login, CancellationToken ct); Task UpdateMRPRunStatus(int mrpRunStatusId, byte status, byte percent, string step, string? error, DateTime? completedAt, LoginDTO login, CancellationToken ct); Task GetMRPRunStatus(int mrpRunId, LoginDTO login, CancellationToken ct); // ── Bulk inserts ───────────────────────────────────────────────────── Task BulkInsertMRPRunDetails(IEnumerable rows, LoginDTO login, CancellationToken ct); Task BulkInsertMRPActions(IEnumerable rows, LoginDTO login, CancellationToken ct); Task> GetMRPActionIdsByRunAsync(int mrpRunId, LoginDTO login, CancellationToken ct); Task BulkInsertPegging(IEnumerable rows, LoginDTO login, CancellationToken ct); Task UpdateMasterScheduleDetailMRPRunId(int mrpId,int mrpRunId, int masterScheduleId,int typeofrun, LoginDTO login, CancellationToken ct); // ── Post-run write-backs (Gap 1 & 2) ──────────────────────────────── Task InsertMRPRunDetailParts(int mrpRunId, LoginDTO login, CancellationToken ct); Task InsertDependentDemandRows(int mrpRunId, int masterScheduleId, int levelCode, LoginDTO login, CancellationToken ct); // ── Trace export ───────────────────────────────────────────────────── Task GetMRPRunTrace(int mrpRunId, LoginDTO login, CancellationToken ct); } }