package com.crm.pay.service;

import com.crm.rely.backend.core.dto.base.BaseReportResultDto;
import com.crm.rely.backend.core.dto.base.BaseResultDto;
import com.crm.rely.backend.core.dto.base.ResultWithPagerDto;
import com.crm.rely.backend.core.exception.ServiceException;
import com.crm.rely.backend.model.dto.finance.train.FinanceTrainDto;
import com.crm.rely.backend.model.dto.report.FinanceTrainReportListDto;
import com.crm.rely.backend.model.dto.report.FinanceTrainReportSumDto;
import com.crm.rely.backend.model.dto.report.FinanceTrainSalesReportListDto;
import com.crm.rely.backend.model.entity.custom.login.CustomLoginCheckByLoginEntity;
import com.crm.rely.backend.model.entity.finance.train.FinanceTrainAddEntity;
import com.crm.rely.backend.model.entity.finance.train.FinanceTrainApproveEntity;
import com.crm.rely.backend.model.entity.finance.train.FinanceTrainSearchListEntity;

import java.util.List;

public interface FinanceTrainService {
    void add(FinanceTrainAddEntity entity) throws ServiceException;

    ResultWithPagerDto<FinanceTrainDto> searchPageList(FinanceTrainSearchListEntity entity) throws ServiceException;

    BaseResultDto<List<FinanceTrainDto>> searchList(FinanceTrainSearchListEntity entity) throws ServiceException;

    FinanceTrainDto searchSingle(Long id) throws ServiceException;

    boolean validateLogin(CustomLoginCheckByLoginEntity entity) throws ServiceException;

    void approve(FinanceTrainApproveEntity entity) throws ServiceException;

    BaseReportResultDto<List<FinanceTrainReportListDto>, FinanceTrainReportSumDto> report(FinanceTrainSearchListEntity entity) throws Exception;

    BaseResultDto<List<FinanceTrainReportListDto>> reportExport(FinanceTrainSearchListEntity entity) throws Exception;

    BaseReportResultDto<List<FinanceTrainSalesReportListDto>, FinanceTrainReportSumDto> salesReport(FinanceTrainSearchListEntity entity) throws Exception;

    BaseResultDto<List<FinanceTrainSalesReportListDto>> salesReportExport(FinanceTrainSearchListEntity entity) throws Exception;


}
