using Distribution.Models; namespace Distribution.Features.Invoice; public interface IInvoiceRepository { Task GetByIdAsync(Guid id); Task GetByShopPOIdAsync(Guid shopPOId); Task> GetAllAsync(Guid? agentId, Guid? routeId, Guid? shopId, InvoiceStatus? status, PaymentStatus? paymentStatus, int page, int pageSize); Task GetCountAsync(Guid? agentId, Guid? routeId, Guid? shopId, InvoiceStatus? status, PaymentStatus? paymentStatus); Task> GetOutstandingAsync(); Task GetSchemeDiscountAsync(Guid shopPOId); Task AddAsync(Models.Invoice invoice); Task GetItemAsync(Guid itemId); Task AddItemsAsync(IEnumerable items); Task AddVersionAsync(InvoiceVersion version); Task GetLatestVersionNumberAsync(Guid invoiceId); Task> GetVersionsAsync(Guid invoiceId); void Update(Models.Invoice invoice); }