using MMDAL.DTO.ItemReason; namespace MMDAL.DTO.Production { public class ProductionSaveDTO { public int ProductionId { get; set; } public int BizTransactionTypeId { get; set; } = -1; public int OUId { get; set; } = -1; public int PeriodId { get; set; } = -1; public DateTime ProductionDate { get; set; } = DateTime.UtcNow; public string ProductionNumber { get; set; } = string.Empty; public string ReferenceNumber { get; set; } = string.Empty; public DateTime ReferenceDate { get; set; } = DateTime.UtcNow; // 0=WorkOrder, 1=WorkOrderGroup, 2=Direct public byte SelectType { get; set; } public int InChargeId { get; set; } = -1; public int ShiftId { get; set; } = -1; public int DepartmentId { get; set; } = -1; public int WorkCenterId { get; set; } = -1; public int FromStoreId { get; set; } = -1; public int ToStoreId { get; set; } = -1; // 0=Regular, 1=Reprocess public byte Type { get; set; } // 0=Inward,1=Outward,2=Both,3=None public byte IsStockPost { get; set; } = 2; public int PatternId { get; set; } = -1; public string Remarks { get; set; } = string.Empty; public int CreatedById { get; set; } = -1; public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } = -1; public DateTime ModifiedOn { get; set; } public byte Status { get; set; } public short Version { get; set; } public List Details { get; set; } = []; public List Resources { get; set; } = []; public List Stoppages { get; set; } = new(); public List Lots { get; set; } = []; // Quality reason breakdown (Rejected/Rework split by cause) — persisted to the shared // polymorphic TITEMREASON table, matched to a Details[] row via DetailSlNo. public List Reasons { get; set; } = []; } }