using System.ComponentModel.DataAnnotations.Schema; namespace Distribution.Models { public class StockMovement { public Guid Id { get; set; } = Guid.NewGuid(); public Guid FK_ItemId { get; set; } [ForeignKey("FK_ItemId")] public Item Item { get; set; } public Guid? FromLocationId { get; set; } public LocationType? FromLocationType { get; set; } public Guid? ToLocationId { get; set; } public LocationType? ToLocationType { get; set; } /// Null for items that don't track batches/expiry — no behavior change for existing items. public Guid? FK_ItemBatchId { get; set; } [ForeignKey("FK_ItemBatchId")] public ItemBatch? ItemBatch { get; set; } /// Null for items that don't track serial numbers. Quantity is always 1 when set. public Guid? FK_ItemSerialNumberId { get; set; } [ForeignKey("FK_ItemSerialNumberId")] public ItemSerialNumber? ItemSerialNumber { get; set; } public decimal Quantity { get; set; } public MovementType Type { get; set; } public string? ReasonCode { get; set; } public Guid? ReferenceId { get; set; } public DateTime CreatedAt { get; set; } = DateTime.Now; public Guid CreatedBy { get; set; } } }