package com.engine.salary.service;

import com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentSaveParam;
import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.util.page.PageInfo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.util.List;

/**
 * 薪资档案-个税扣缴义务人
 * <p>Copyright: Copyright (c) 2022</p>
 * <p>Company: 泛微软件</p>
 *
 * @author qiantao
 * @version 1.0
 **/
public interface SalaryArchiveTaxAgentService {

    /**
     * 获取已经生效的个税扣缴义务人
     *
     * @param salaryArchiveId
     * @return
     */
    SalaryArchiveTaxAgentPO getEffectiveTaxAgent(Long salaryArchiveId);

    /**
     * 获取单个薪资档案个税扣缴义务人记录
     *
     * @param salaryArchiveTaxAgentId
     * @return
     */
    SalaryArchiveTaxAgentPO getById(Long salaryArchiveTaxAgentId);

    /**
     * 获取调整前的个税扣缴义务人
     *
     * @param salaryArchiveTaxAgent
     * @return
     */
    SalaryArchiveTaxAgentPO getAdjustBeforeTaxAgent(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent);

    /**
     * 个税扣缴义务人的调整记录（分页）
     *
     * @param queryParam
     * @return
     */
    PageInfo<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(TaxAgentAdjustRecordQueryParam queryParam);

    /**
     * 个税扣缴义务人的调整记录
     *
     * @param queryParam
     * @return
     */
    List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam);

    /**
     * 保存个税扣缴义务人调整
     *
     * @param saveParam
     * @return
     */
    String saveTaxAgent(SalaryArchiveTaxAgentSaveParam saveParam);

    /**
     * 删除个税扣缴义务人调整
     *
     * @param salaryArchiveTaxAgentId
     * @return
     */
    String deleteTaxAgent(Long salaryArchiveTaxAgentId);
    
    /**
     * 导出-个税扣缴义务人的调整记录列表
     *
     * @param queryParam
     */
    XSSFWorkbook exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam);
}
