package cn.superdesk.uniorder.service.thirdpart.qchjc.statistics;

import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
import cn.superdesk.uniorder.dao.entity.sys.notify.SysNotify;
import cn.superdesk.uniorder.dto.param.accounting.statistics.ReceivableBalanceQueryParam;
import cn.superdesk.uniorder.dto.param.accounting.statistics.ReceivableDetailDataQueryParam;
import cn.superdesk.uniorder.dto.param.accounting.statistics.ReceivableStatisticsPageQueryParam;
import cn.superdesk.uniorder.dto.vo._statistics.ReceivableBalanceVO;
import cn.superdesk.uniorder.dto.vo._statistics.ReceivableDetailDataVo;
import cn.superdesk.uniorder.dto.vo._statistics.ReceivableStatisticsPageVo;

import java.util.List;

/**
 * @author xc
 * @description
 * @date 2022/4/1 11:43
 */
public interface ReceivableStatisticsService{

    /**
     * 查询应收明细数据queryReceivableDetailData
     * @return
     */
    List<ReceivableDetailDataVo> queryReceivableDetailData(ReceivableDetailDataQueryParam queryParam);


    /**
     * 保存应收明细数据
     */
    void saveReceivableDetailData(ReceivableDetailDataQueryParam queryParam, LoginSysUser loginSysUser);


    /**
     * 应收明细数据定时任务到每日数据
     */
    void saveReceivableDetailDataToDayData(ReceivableDetailDataQueryParam queryParam, LoginSysUser loginSysUser);

    R<List<ReceivableStatisticsPageVo>> getReceivableStatisticsPageVoList(ReceivableStatisticsPageQueryParam queryParam);


    SysNotify getReceivableStatisExcel(ReceivableStatisticsPageQueryParam queryParam);


    /**
     * 3.2.1.2 积分结算_对账单状态变更为“已取消”时
     * @param queryParam
     */
    void receivableCancelAccounting(ReceivableDetailDataQueryParam queryParam,LoginSysUser loginSysUser);

    /**
     * 实收_积分结算_对账单_回款状态变更为“已回款”时
     * @param queryParam
     */
    void receivableReturnedMoney(ReceivableDetailDataQueryParam queryParam,LoginSysUser loginSysUser) ;


}
