namespace CashLineERP.Application.Procurement;

public interface IAccountsPayableBillRepository
{
    IReadOnlyCollection<AccountsPayableBillDetailView> GetBills();

    AccountsPayableBillDetailView? GetBill(long accountsPayableBillId);

    AccountsPayableBillDetailView Create(CreateAccountsPayableBillCommand command);

    AccountsPayableBillDetailView Submit(long accountsPayableBillId, long actorUserId);

    AccountsPayableBillMatchView GetBillMatch(long accountsPayableBillId);

    AccountsPayableBillMatchView ApproveMatch(long accountsPayableBillId, long actorUserId);

    AccountsPayableBillDetailView PlaceOnHold(long accountsPayableBillId, long actorUserId, PlaceAccountsPayableBillOnHoldCommand command);

    AccountsPayableBillDetailView ResolveDispute(long accountsPayableBillId, long actorUserId, ResolveAccountsPayableBillDisputeCommand command);

    AccountsPayableBillDetailView Post(long accountsPayableBillId, long actorUserId);
}
