package com.engine.salary.service; import com.engine.salary.common.YearMonthRange; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationAddParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDeleteParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.util.page.PageInfo; import java.time.YearMonth; import java.util.Collection; import java.util.List; public interface TaxDeclarationService { /** * 根据税款所属期、个税扣缴义务人查询个税申报表 * * @param salaryMonth 薪资所属月 * @param taxAgentIds 个税扣缴义务人id * @return */ List listByTaxCycleAndTaxAgentIds(YearMonth salaryMonth, Collection taxAgentIds); List listByTaxDeclareRecordId(Long taxDeclareRecordId); List listByTaxDeclareRecordId(Long taxDeclareRecordId,Integer incomeCategory); PageInfo listPageByParam(TaxDeclarationListQueryParam queryParam); List countByTaxDeclarationId(Collection taxAgentIds); TaxDeclarationPO getById(Long id); void save(TaxDeclarationSaveParam saveParam); /** * 删除个税申报表 */ void delete(SalaryAcctRecordPO salaryAcctRecordPO); /** * 判断是否有权限可查看个税申报表 * * @param taxDeclarationPO * @param employeeId * @return */ boolean checkByAuthority(TaxDeclarationPO taxDeclarationPO, Long employeeId); /** * 撤回个税申报单 * * @param taxDeclarationId */ void withDrawTaxDeclaration(Long taxDeclarationId); /** * 删除个税申报表 * * @param taxDeclareRecordIds */ void deleteByTaxDeclareRecordIds(Collection taxDeclareRecordIds); void saveBatch(List taxDeclarations); /** * 根据税款所属期查询个税申报表 * * @param yearMonthRange * @return */ List listByTaxCycleRange(YearMonthRange yearMonthRange); /** * 新增申报表 * @param param */ void addTaxDeclaration(TaxDeclarationAddParam param); void deleteTaxDeclaration(TaxDeclarationDeleteParam param); }