using CashLineERP.Contracts.Procurement;

namespace CashLineERP.Application.Procurement;

public interface IAccountsPayableBillService
{
    IReadOnlyCollection<AccountsPayableBillResponse> GetBills();

    AccountsPayableBillResponse? GetBill(long accountsPayableBillId);

    AccountsPayableBillResponse CreateBill(CreateAccountsPayableBillRequest request);

    AccountsPayableBillResponse SubmitBill(long accountsPayableBillId, long actorUserId);

    AccountsPayableBillMatchResponse GetBillMatch(long accountsPayableBillId);

    AccountsPayableBillMatchResponse ApproveMatch(long accountsPayableBillId, long actorUserId);

    AccountsPayableBillResponse PlaceBillOnHold(long accountsPayableBillId, long actorUserId, PlaceAccountsPayableBillOnHoldRequest request);

    AccountsPayableBillResponse ResolveBillDispute(long accountsPayableBillId, long actorUserId, ResolveAccountsPayableBillDisputeRequest request);

    AccountsPayableBillResponse PostBill(long accountsPayableBillId, long actorUserId);
}
