package com.trade.admin.finance.disbursement.service;

import com.trade.admin.business.payment.domain.PaymentBasic;
import com.trade.admin.business.payment.domain.PaymentBasicInfo;
import com.trade.admin.finance.disbursement.dto.ConfirmedDisbursementDto;
import com.trade.admin.finance.disbursement.vo.BillingDisbursementDetail;
import com.trade.common.core.page.GridPage;
import com.trade.service.business.separateaccounts.domain.SeparateAccounts;
import com.trade.service.business.separateaccounts.domain.SeparateAccountsInfo;
import com.trade.service.finance.disbursement.dto.DisbursementSearchDto;
import com.trade.service.finance.disbursement.vo.BillingDisbursementPageVo;

/**
 * @description: 账单出账服务接口
 * @Author: wanglang
 * @Date: 2024/10/28 20:04
 * @Version: 1.0
 */
public interface BBillingDisbursementService {

    /**
     * 保存出账信息
     * 
     * @param paymentBasic
     * @param paymentBasicInfo
     * @param operator
     * @return boolean
     */
    @Deprecated
    boolean saveDisbursement(PaymentBasic paymentBasic, PaymentBasicInfo paymentBasicInfo, String operator);

    /**
     * 分页查询
     *
     * @param searchDto
     * @return GridPage<BillingDisbursementPageVo>
     */
    GridPage<BillingDisbursementPageVo> queryListByPage(DisbursementSearchDto searchDto);

    /**
     * @param confirmedDisbursementDto
     * @return boolean
     */
    Boolean confirmedDisbursement(ConfirmedDisbursementDto confirmedDisbursementDto);

    /**
     * 查询详情
     * 
     * @param id
     * @return BillingDisbursementDetail
     */
    @Deprecated
    BillingDisbursementDetail queryDetail(Long id);

    /**
     * 查询详情
     *
     * @param id
     * @return BillingDisbursementDetail
     */
    BillingDisbursementDetail queryDetailV2(Long id);

    /**
     * 保存出账信息
     *
     * @param separateAccounts
     * @param separateAccountsInfo
     * @param operator
     * @return boolean
     */
    boolean saveBillingDisbursement(SeparateAccounts separateAccounts, SeparateAccountsInfo separateAccountsInfo,
                             String operator);
}
