using PowderCoating.Application.DTOs.Quote; using PowderCoating.Core.Entities; namespace PowderCoating.Application.Interfaces; public interface IQuotePricingAssemblyService { void ApplyPricingSnapshot(Quote quote, QuotePricingResult pricingResult); Task> CreateQuoteItemsAsync( IEnumerable itemDtos, int quoteId, int companyId, decimal? ovenRateOverride, DateTime createdAtUtc); /// /// Creates one (IsIncoming=true) per unique powder catalog entry /// referenced by coats on the given quote, then links those coats to the new inventory records. /// Must be called after a quote transitions to Approved status. /// Safe to call multiple times — coats that already have an InventoryItemId are skipped. /// Task EnsureIncomingInventoryForApprovedQuoteAsync(int quoteId, int companyId); }