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

import com.trade.admin.finance.paymentcollection.dto.BillingIncomeDetailDto;
import com.trade.admin.finance.paymentcollection.dto.BillingIncomeInfoDto;
import com.trade.common.core.page.GridPage;
import com.trade.service.finance.paymentcollection.dto.BillingIncomeSearchDto;
import com.trade.service.finance.paymentcollection.dto.EntryApplyDto;
import com.trade.service.finance.paymentcollection.dto.EntryReviewDto;
import com.trade.service.finance.paymentcollection.vo.BillingIncomePageVo;
import com.trade.service.finance.paymentcollection.vo.EntrySalesContractDetailVo;
import com.trade.service.finance.paymentcollection.vo.EntrySalesContractVo;

import java.util.List;

/**
 * @description: 出入账目管理
 * @Author: wanglang
 * @Date: 2024/10/22
 * @Version: 1.0
 */
public interface BPaymentCollectionService {

    /**
     * 分页查询采购订单列表
     *
     * @param incomeSearchDto
     * @return GridPage<BillingIncomePageVo>
     */
    GridPage<BillingIncomePageVo> queryListByPage(BillingIncomeSearchDto incomeSearchDto);

    /**
     * 获取销售合同列表
     * 
     * @return
     */
    List<EntrySalesContractVo> getEntrySalesContractList();

    /**
     * 获取销售合同详情
     * 
     * @param contractId 合同id
     * @return entrySalesContractDetailVo
     */
    EntrySalesContractDetailVo getEntrySalesContractDetail(Long contractId);

    /**
     * 提交出入账目申请
     * 
     * @param entryApplyDto 入账申请信息
     * @return true/false
     */
    Boolean submitEntryApply(EntryApplyDto entryApplyDto);

    /**
     * 提交出入账目审核
     * 
     * @param entryReviewDto 审核信息
     * @return true/false
     */
    Boolean submitEntryReview(EntryReviewDto entryReviewDto);

    /**
     * 获取出入账目详情
     * @param id
     * @return BillingIncomeDetailDto
     */
    BillingIncomeDetailDto getBillingIncomeDetail(Long id);


    /**
     * 提交出入账目明细
     * @param billingIncomeInfoDto
     * @return true/false
     */
    Boolean submitEntryDetail(BillingIncomeInfoDto billingIncomeInfoDto);
}
