namespace CashLineERP.Application.Finance;

public interface IAccountsReceivableReceiptRepository
{
    IReadOnlyCollection<AccountsReceivableReceiptDetailView> GetReceipts();

    AccountsReceivableReceiptDetailView? GetReceipt(long accountsReceivableReceiptId);

    AccountsReceivableReceiptDetailView Create(CreateAccountsReceivableReceiptCommand command);

    AccountsReceivableReceiptDetailView Submit(long accountsReceivableReceiptId, long actorUserId);

    AccountsReceivableReceiptDetailView Approve(long accountsReceivableReceiptId, long actorUserId);

    AccountsReceivableReceiptDetailView Post(long accountsReceivableReceiptId, long actorUserId);

    AccountsReceivableReceiptDetailView Reverse(long accountsReceivableReceiptId, long actorUserId, ReverseAccountsReceivableReceiptCommand command);

    AccountsReceivableReceiptDetailView Reallocate(long accountsReceivableReceiptId, long actorUserId, ReallocateAccountsReceivableReceiptCommand command);
}
