package com.cpop.oam.business.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.cpop.oam.business.bo.*;
import com.cpop.oam.business.entity.FinanceReimburse;
import com.cpop.oam.business.vo.FinanceReimburseAuditPageVo;
import com.cpop.oam.business.vo.FinanceReimbursePageVo;
import com.cpop.oam.business.vo.ReimbursePersonStatisticVo;

/**
 * 报销记录表 服务层。
 *
 * @author DB
 * @since 2023-09-20
 */
public interface FinanceReimburseService extends IService<FinanceReimburse> {

    /**
     * @Description: 财务报销模块-报销分页列表
     * @param bo 请求参数
     * @return: R<Page<FinanceReimbursePageVo>>
     * @Author: DB
     * @Date: 2023/5/30 15:44
     **/
    Page<FinanceReimbursePageVo> getFinanceReimbursePage(FinanceReimbursePageBo bo);

    /**
     * @Description: 财务报销模块-报销审核分页列表
     * @param bo 请求参数
     * @return: R<Page<FinanceReimbursePageVo>>
     * @Author: DB
     * @Date: 2023/5/30 15:44
     **/
    Page<FinanceReimburseAuditPageVo> getReimburseAuditPage(FinanceReimburseAuditPageBo bo);

    /**
     * @Description: 修改报销状态
     * @param bo 请求参数
     * @Author: DB
     * @Date: 2023/5/10 16:01
     **/
    void updateReimburseStatus(ReimburseStatusBo bo);

    /**
     * @descriptions 新增报销申请
     * @author DB
     * @date 2023/09/21 15:55
     * @param bo 请求参数
     * @return: com.cpop.core.base.R<java.lang.Void>
     */
    void insertReimburseApplication(ReimburseApplicationBo bo);

    /**
     * 修改报销申请
     * @author DB
     * @since 2023/12/21
     * @param bo 请求
     */
    void updateReimburseApplication(ReimburseApplicationBo bo);

    /**
     * @Description: 财务报销模块-个人报销统计
     * @return: R<Page<FinanceReimbursePageVo>>
     * @Author: DB
     * @Date: 2023/5/30 15:44
     **/
    ReimbursePersonStatisticVo getPersonStatistic();

    /**
     * @descriptions 报销下款
     * @author DB
     * @date 2023/09/08 15:20
     * @param bo 请求参数
     * @return: com.jambox.core.base.R<java.lang.Void>
     */
    void reimbursePay(ReimbursePayBo bo);

}
