using CashLineERP.Contracts.Finance;

namespace CashLineERP.Application.Finance;

public interface IAccountsPayablePaymentService
{
    IReadOnlyCollection<AccountsPayablePaymentResponse> GetPayments();

    AccountsPayablePaymentResponse? GetPayment(long accountsPayablePaymentId);

    AccountsPayablePaymentResponse CreatePayment(CreateAccountsPayablePaymentRequest request);

    AccountsPayablePaymentResponse SubmitPayment(long accountsPayablePaymentId, long actorUserId);

    AccountsPayablePaymentResponse ApprovePayment(long accountsPayablePaymentId, long actorUserId);

    AccountsPayablePaymentResponse PostPayment(long accountsPayablePaymentId, long actorUserId);

    AccountsPayablePaymentResponse ReversePayment(long accountsPayablePaymentId, long actorUserId, ReverseAccountsPayablePaymentRequest request);

    AccountsPayablePaymentResponse RepostPayment(long accountsPayablePaymentId, long actorUserId, RepostAccountsPayablePaymentRequest request);
}
