namespace Distribution.Features.PriceList; public record CreatePriceListRequest(string Name, Guid? RegionId, DateTime EffectiveFrom, DateTime EffectiveTo); public record UpdatePriceListRequest(string Name, Guid? RegionId, DateTime EffectiveFrom, DateTime EffectiveTo, bool IsActive); public record UpsertPriceListItemRequest( decimal Price, decimal? MinPrice = null, decimal? RetailPrice = null, decimal? AgencyMarginPercent = null); public record PriceListItemResponse( Guid Id, Guid ItemId, string Sku, string ItemName, decimal Price, decimal? MinPrice, decimal? RetailPrice, decimal? AgencyMarginPercent); /// /// A resolved price with its negotiable floor, plus the informational retail price and agency /// margin when the resolution came from an actual PriceListItem (both null on the Item.SalePrice /// fallback, since neither is tracked at the item level). /// public record PriceResolution(decimal Price, decimal? MinPrice, decimal? RetailPrice, decimal? AgencyMarginPercent); public record PriceListResponse( Guid Id, string Name, Guid? RegionId, string? RegionName, DateTime EffectiveFrom, DateTime EffectiveTo, bool IsActive, DateTime CreatedAt, List Items);