using System.Text.Json.Serialization; using TakeoutSaaS.Shared.Abstractions.Serialization; namespace TakeoutSaaS.Application.App.Inventory.Dto; /// /// 库存项 DTO。 /// public sealed record InventoryItemDto { /// /// 库存记录 ID。 /// [JsonConverter(typeof(SnowflakeIdJsonConverter))] public long Id { get; init; } /// /// 租户 ID。 /// [JsonConverter(typeof(SnowflakeIdJsonConverter))] public long TenantId { get; init; } /// /// 门店 ID。 /// [JsonConverter(typeof(SnowflakeIdJsonConverter))] public long StoreId { get; init; } /// /// SKU ID。 /// [JsonConverter(typeof(SnowflakeIdJsonConverter))] public long ProductSkuId { get; init; } /// /// 批次号。 /// public string? BatchNumber { get; init; } /// /// 可用库存。 /// public int QuantityOnHand { get; init; } /// /// 已锁定库存。 /// public int QuantityReserved { get; init; } /// /// 安全库存。 /// public int? SafetyStock { get; init; } /// /// 储位。 /// public string? Location { get; init; } /// /// 过期日期。 /// public DateTime? ExpireDate { get; init; } /// /// 是否预售。 /// public bool IsPresale { get; init; } /// /// 预售开始时间。 /// public DateTime? PresaleStartTime { get; init; } /// /// 预售结束时间。 /// public DateTime? PresaleEndTime { get; init; } /// /// 预售上限。 /// public int? PresaleCapacity { get; init; } /// /// 已锁定预售量。 /// public int PresaleLocked { get; init; } /// /// 限购数量。 /// public int? MaxQuantityPerOrder { get; init; } /// /// 是否售罄。 /// public bool IsSoldOut { get; init; } }