package cn.iocoder.yudao.module.hrm.service.salary; import cn.iocoder.yudao.module.hrm.dal.dataobject.salary.HrmSocialSecurityConfigDO; import java.math.BigDecimal; import java.time.LocalDate; /** * 薪酬扣除计算 Service 接口 * * @author 芋道源码 */ public interface HrmDeductionService { /** * 计算社保扣除(个人部分) * * @param socialSecurityBase 社保基数 * @param effectiveDate 生效日期 * @return 社保扣除金额 */ BigDecimal calculateSocialSecurityDeduction(BigDecimal socialSecurityBase, LocalDate effectiveDate); /** * 计算公积金扣除(个人部分) * * @param housingFundBase 公积金基数 * @param effectiveDate 生效日期 * @return 公积金扣除金额 */ BigDecimal calculateHousingFundDeduction(BigDecimal housingFundBase, LocalDate effectiveDate); /** * 计算个税扣除 * * @param taxableIncome 应纳税所得额(月收入 - 社保公积金 - 专项扣除 - 5000起征点) * @param effectiveDate 生效日期 * @return 个税扣除金额 */ BigDecimal calculateTaxDeduction(BigDecimal taxableIncome, LocalDate effectiveDate); /** * 获取最新的社保公积金配置 * * @param effectiveDate 生效日期 * @return 社保公积金配置 */ HrmSocialSecurityConfigDO getLatestSocialSecurityConfig(LocalDate effectiveDate); }