using System.ComponentModel.DataAnnotations.Schema; namespace Distribution.Models { public class Item : Template { public string Sku { get; set; } public string Name { get; set; } public string? Description { get; set; } public Guid FK_CategoryId { get; set; } [ForeignKey("FK_CategoryId")] public Category Category { get; set; } public Guid? FK_SubCategoryId { get; set; } [ForeignKey("FK_SubCategoryId")] public SubCategory? SubCategory { get; set; } public Guid? FK_BrandId { get; set; } [ForeignKey("FK_BrandId")] public Brand? Brand { get; set; } public Guid FK_BaseUomId { get; set; } [ForeignKey("FK_BaseUomId")] public Uom BaseUom { get; set; } public decimal? SalePrice { get; set; } /// Warehouse quantity threshold below which the item shows up in low-stock alerts; null disables alerting for this item. public decimal? ReorderLevel { get; set; } /// Cost/purchase price, used to value free-goods scheme redemptions for getSchemeROI. public decimal? CostPrice { get; set; } public bool TracksSerialNumbers { get; set; } = false; public bool TracksBatches { get; set; } = false; public bool TracksExpiryDate { get; set; } = false; public bool HasWarranty { get; set; } = false; public int? WarrantyPeriodDays { get; set; } public bool AllowCustomWarrantyPeriod { get; set; } = false; public SyncSource SyncSource { get; set; } = SyncSource.Manual; public int? ExternalErpItemId { get; set; } public DateTime? LastSyncedAt { get; set; } public ICollection Conversions { get; set; } = []; } }