namespace MMDAL.DTO.MRPRun { public class MRPActionDTO { // Identity public int MRPActionId { get; set; } public int MRPRunId { get; set; } = -1; public short MRPActionSlNo { get; set; } = 1; // Item public int PlanItemId { get; set; } = -1; public string PlanItemCode { get; set; } = string.Empty; public string PlanItemName { get; set; } = string.Empty; public string PlanItemShortName { get; set; } = string.Empty; // SKU public int PlanSKUId { get; set; } = -1; public string PlanSKUCode { get; set; } = string.Empty; public string PlanSKUName { get; set; } = string.Empty; // Plan public byte MRPActionPlanType { get; set; } public int MRPActionObjectId { get; set; } = -1; public DateTime MRPActionPlannedStartDate { get; set; } = DateTime.UtcNow; public DateTime MRPActionPlannedOrderDate { get; set; } = DateTime.UtcNow; public DateTime MRPActionPlannedDueDate { get; set; } = DateTime.UtcNow; public decimal MRPActionPlannedQuantity { get; set; } public decimal MRPActionOriginalPlannedQuantity { get; set; } public decimal MRPActionInProcessQuantity { get; set; } public decimal MRPActionImplementedQuantity { get; set; } public short MRPActionCompressionDays { get; set; } public byte MRPActionIsFirmPlan { get; set; } public DateTime MRPActionFirmDate { get; set; } = DateTime.UtcNow; public decimal MRPActionFirmQuantity { get; set; } public byte MRPActionPlannedAction { get; set; } public string MRPActionRemarks { get; set; } = string.Empty; [GB5Shared.EntityHandler.WorkflowStatusField] public byte MRPActionPlanStatus { get; set; } // 0=Unreleased,1=ToBeReleased,2=Released,3=OnHold // Store public int StoreId { get; set; } = -1; public string StoreCode { get; set; } = string.Empty; public string StoreName { get; set; } = string.Empty; // Release public byte MRPActionReleaseType { get; set; } // 0=None,1=PO,2=PR,3=WorkIndent public int ReleaseBizTransactionTypeId { get; set; } = -1; public string ReleaseBizTransactionTypeCode { get; set; } = string.Empty; public string ReleaseBizTransactionTypeName { get; set; } = string.Empty; public int MRPActionReleaseId { get; set; } = -1; public byte IsAllocationBasedRelease { get; set; } // Party public int PartyId { get; set; } = -1; public string PartyCode { get; set; } = string.Empty; public string PartyName { get; set; } = string.Empty; public int PartyBranchId { get; set; } = -1; public string PartyBranchCode { get; set; } = string.Empty; public string PartyBranchName { get; set; } = string.Empty; public string PartyBranchShortName { get; set; } = string.Empty; // BOM / Routing public int AlternateBOMId { get; set; } = -1; public string AlternateBOMVersionName { get; set; } = string.Empty; public int DefaultBOMId { get; set; } = -1; public int AlternateRoutingId { get; set; } = -1; public string AlternateRoutingCode { get; set; } = string.Empty; public string AlternateRoutingName { get; set; } = string.Empty; // MRP Run Detail public int MRPRunDetailId { get; set; } = -1; public int MRPActionNestingPlanId { get; set; } = -1; // Misc public string MRPName { get; set; } = string.Empty; public decimal LotSize { get; set; } = 1; public short LeadTime { get; set; } public string ReferenceNumber { get; set; } = string.Empty; // Priority + scope tracking (v3) — carry from demand at run time; not user-editable public short Priority { get; set; } // 0=unset (lowest); 1=highest public int AllocationId { get; set; } = -1; public int SalesOrderId { get; set; } = -1; public byte RunScope { get; set; } // 0=Macro,1=Allocation,2=SalesOrder,3=FGItem public int MRPActionTaskId { get; set; } = -1; public int? PartDimId { get; set; } // dimension variant; null = part item public int CreatedById { get; set; } = -1; public int ModifiedById { get; set; } = -1; public int TenantId { get; set; } } }