package cn.superdesk.uniorder.dubbo.facade.thirdpart.qchjc.statistics;

import cn.superdesk.uniorder.common.rest.response.R;
import cn.superdesk.uniorder.common.security.dto.LoginSysUser;
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.ReceivableDetailDataVo;
import cn.superdesk.uniorder.dto.vo._statistics.ReceivableStatisticsPageVo;
import cn.superdesk.uniorder.dto.vo._statistics.payable.PayableStatisticsPageVo;

import java.util.List;

/**
 * @author qzy
 * @description
 * @date 2022/4/1 10:21
 */
public interface DubboReceivableStatisticsService {



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

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


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

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

    String getReceivableStatisExcel(ReceivableStatisticsPageQueryParam queryParam,LoginSysUser loginSysUser);





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


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

    R<List<PayableStatisticsPageVo>> getPayableStatisticsPageVoList(ReceivableStatisticsPageQueryParam queryParam);

    String getPayableStatisExcel(ReceivableStatisticsPageQueryParam queryParam,LoginSysUser loginSysUser);


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

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


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


    void payableCancelAccounting(ReceivableDetailDataQueryParam queryParam,LoginSysUser loginSysUser);


}
