namespace MMDAL.DTO.PartLevel { public class PartAllocationDTO { public int PartAllocationId { get; set; } public int PartDetailId { get; set; } public int? LotId { get; set; } public int? LotDetailId { get; set; } public decimal AllocatedQty { get; set; } public decimal IssuedQty { get; set; } public decimal ConsumedQty { get; set; } public short Status { get; set; } // 0=Reserved, 1=Issued, 2=Consumed, 3=Released public int TenantId { get; set; } public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } public DateTime ModifiedOn { get; set; } } public class AllocatePartsDTO { public int PartDetailId { get; set; } public int? LotId { get; set; } public int? LotDetailId { get; set; } public decimal Quantity { get; set; } } public class IssuePartsDTO { public int PartAllocationId { get; set; } public decimal Quantity { get; set; } } public class ConsumePartsDTO { public int PartAllocationId { get; set; } public decimal Quantity { get; set; } } public class ReleasePartsDTO { public int PartAllocationId { get; set; } } public class AllocationScopeDTO { public int? AllocationId { get; set; } public List? FGItemIds { get; set; } public int? SalesOrderId { get; set; } public int PageSize { get; set; } = 500; // batch size for auto-allocate } public class AllocationResultDTO { public int TotalAllocated { get; set; } public int TotalPartiallyAllocated { get; set; } public int TotalShortages { get; set; } public decimal TotalAllocatedQty { get; set; } public decimal TotalShortageQty { get; set; } public List Shortages { get; set; } = []; } public class PartShortageLineDTO { public int PartDetailId { get; set; } public int ItemId { get; set; } public string ItemCode { get; set; } = string.Empty; public decimal RequiredQty { get; set; } public decimal AvailableQty { get; set; } public decimal ShortageQty { get; set; } public short Priority { get; set; } } }