# 社保公积金个税扣除功能 ## 涉及页面 - 薪酬管理 -> 社保公积金方案 - 薪酬管理 -> 个税税率配置 - 薪酬管理 -> 薪酬核算 - 员工管理 -> 员工社保公积金档案 ## 数据库表 | 表名 | 说明 | |------|------| | hrm_employee | 员工基本信息表 | | hrm_employee_salary | 员工薪酬档案表 | | hrm_employee_social_security | 员工社保公积金档案表(绑定方案 + 个人化基数) | | hrm_social_security_scheme | 社保公积金方案表(比例模板) | | hrm_tax_rate_config | 个税税率配置表(累进税率) | **设计说明:** - **社保公积金方案**:定义各项缴纳比例,可被多个员工复用 - **员工社保公积金档案**:员工绑定方案,设置个人化的缴纳基数 - 一个社保方案可以绑定多个员工,一个员工可以有多个社保档案(按生效日期取最新) ## 表关联关系 **重要说明:员工与系统用户通过手机号绑定,userId 是系统用户ID,不是员工ID。** ``` ┌─────────────────────────────────────────────────────────────────────────┐ │ 表关联关系图 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ system_users (系统用户表) │ │ ├─ id (用户ID) ←────────────────── userId 字段关联此 ID │ │ ├─ username (用户名,等于手机号) │ │ ├─ mobile (手机号) │ │ └─ nickname (昵称,等于员工姓名) │ │ │ │ hrm_employee (员工表) │ │ ├─ id (员工ID) │ │ ├─ user_id → 关联系统用户ID (system_users.id) ← 绑定关系 │ │ ├─ phone (手机号) → 创建员工时同步创建用户(用户名=手机号) │ │ ├─ deptId (部门ID) │ │ ├─ baseSalary (基本工资,兜底数据) │ │ └─ salaryStructureId │ │ │ │ hrm_employee_salary (员工薪酬档案) │ │ ├─ userId → 关联系统用户ID (system_users.id) │ │ ├─ baseSalary (基本工资) │ │ ├─ performanceSalary (绩效工资) │ │ └─ effectiveDate (生效日期) │ │ │ │ hrm_employee_social_security (员工社保公积金档案) │ │ ├─ userId → 关联系统用户ID (system_users.id) │ │ ├─ socialSecuritySchemeId → 关联社保公积金方案ID │ │ ├─ socialSecurityBase (社保缴纳基数) │ │ ├─ housingFundBase (公积金缴纳基数) │ │ └─ effectiveDate (生效日期) │ │ │ │ hrm_social_security_scheme (社保公积金方案) │ │ ├─ id (方案ID) ←────────────────── socialSecuritySchemeId 关联此 ID │ │ ├─ name (方案名称) │ │ ├─ effectiveDate (生效日期) │ │ ├─ 各险种缴纳比例(养老、医疗、失业、工伤、生育、公积金) │ │ └─ 状态、备注 │ │ │ │ hrm_salary_calculation (薪酬核算记录) │ │ ├─ userId → 关联系统用户ID (system_users.id) │ │ ├─ deptId (部门ID,来自员工表) │ │ └─ 各项薪资和扣除 │ │ │ │ hrm_tax_rate_config (全局个税税率配置) │ │ └─ 7级累进税率表 │ │ │ └─────────────────────────────────────────────────────────────────────────┘ ``` **绑定逻辑说明:** 1. 创建员工时,系统自动创建一个系统用户(用户名=手机号) 2. 创建用户后,返回的 userId 存入员工的 `user_id` 字段 3. 薪酬档案、社保档案、核算记录中的 `userId` 都是系统用户ID 4. 查询员工信息时,可以通过 `userId` 关联系统用户获取登录账号信息 **社保公积金配置说明:** - 社保公积金方案定义各项缴纳比例,可被多个员工复用 - 员工社保公积金档案绑定方案,并设置个人化的缴纳基数 - 薪酬核算时:获取员工最新社保档案 → 获取绑定的方案 → 使用方案的比例计算扣除 ## 数据获取优先级 薪酬核算时,各数据的获取优先级: | 数据项 | 优先来源 | 兜底来源 | |------|---------|---------| | 基本工资 | `hrm_employee_salary.baseSalary` | `hrm_employee.baseSalary` | | 绩效工资 | `hrm_employee_salary.performanceSalary` | 0 | | 各项补贴 | `hrm_employee_salary.*Allowance` | 0 | | 社保基数 | `hrm_employee_social_security.socialSecurityBase` | 基本工资 | | 公积金基数 | `hrm_employee_social_security.housingFundBase` | 基本工资 | | 社保比例 | `hrm_social_security_scheme.*PersonalRatio`(通过档案的方案ID获取) | 默认比例 | | 公积金比例 | `hrm_social_security_scheme.housingFundPersonalRatio`(通过档案的方案ID获取) | 12% | | 个税税率 | `hrm_tax_rate_config` 按应纳税所得额匹配 | - | **默认缴纳比例:** | 险种 | 个人比例 | |------|---------| | 养老保险 | 8% | | 医疗保险 | 2% | | 失业保险 | 0.5% | | 公积金 | 12% | **userId 使用场景:** | 场景 | 使用方式 | |------|---------| | 创建薪酬档案 | userId = employee.getUserId() | | 创建社保档案 | userId = employee.getUserId() | | 薪酬核算记录 | userId = employee.getUserId() | | 查询薪酬档案 | selectLatestByUserId(userId) | | 查询社保档案 | selectLatestByUserId(userId) | ## API ### 社保公积金方案 | 方法 | 路径 | 说明 | |------|------|------| | POST | /hrm/salary/social-security-scheme/create | 创建社保公积金方案 | | PUT | /hrm/salary/social-security-scheme/update | 更新社保公积金方案 | | DELETE | /hrm/salary/social-security-scheme/delete | 删除社保公积金方案 | | GET | /hrm/salary/social-security-scheme/get | 获取社保公积金方案 | | GET | /hrm/salary/social-security-scheme/list | 获取社保公积金方案列表 | **社保公积金方案字段:** | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 方案ID | | name | String | 方案名称 | | effectiveDate | Date | 生效日期 | | pensionCompanyRatio | BigDecimal | 养老保险企业缴纳比例(如 0.16 表示 16%) | | pensionPersonalRatio | BigDecimal | 养老保险个人缴纳比例 | | medicalCompanyRatio | BigDecimal | 医疗保险企业缴纳比例 | | medicalPersonalRatio | BigDecimal | 医疗保险个人缴纳比例 | | unemploymentCompanyRatio | BigDecimal | 失业保险企业缴纳比例 | | unemploymentPersonalRatio | BigDecimal | 失业保险个人缴纳比例 | | workInjuryRatio | BigDecimal | 工伤保险企业缴纳比例 | | maternityRatio | BigDecimal | 生育保险企业缴纳比例 | | housingFundCompanyRatio | BigDecimal | 公积金企业缴纳比例 | | housingFundPersonalRatio | BigDecimal | 公积金个人缴纳比例 | | status | Integer | 状态:0-启用,1-禁用 | | remark | String | 备注 | ### 个税税率配置 | 方法 | 路径 | 说明 | |------|------|------| | POST | /hrm/salary/tax-rate-config/create-list | 批量创建个税税率配置 | | PUT | /hrm/salary/tax-rate-config/update | 更新个税税率配置 | | DELETE | /hrm/salary/tax-rate-config/delete | 删除个税税率配置 | | GET | /hrm/salary/tax-rate-config/get | 获取个税税率配置 | | GET | /hrm/salary/tax-rate-config/list | 获取个税税率配置列表 | | GET | /hrm/salary/tax-rate-config/get-effective | 获取生效的个税税率配置列表 | **个税税率配置字段:** | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 配置ID | | name | String | 配置名称 | | effectiveDate | Date | 生效日期 | | level | Integer | 税率级数(1-7) | | minAmount | BigDecimal | 应纳税所得额下限(含) | | maxAmount | BigDecimal | 应纳税所得额上限(不含),0表示无上限 | | taxRate | BigDecimal | 税率(如 0.03 表示 3%) | | quickDeduction | BigDecimal | 速算扣除数 | ### 员工社保公积金档案 | 方法 | 路径 | 说明 | |------|------|------| | POST | /hrm/salary/employee-social-security/create | 创建员工社保公积金档案 | | PUT | /hrm/salary/employee-social-security/update | 更新员工社保公积金档案 | | DELETE | /hrm/salary/employee-social-security/delete | 删除员工社保公积金档案 | | GET | /hrm/salary/employee-social-security/get | 获取员工社保公积金档案 | | GET | /hrm/salary/employee-social-security/page | 获取员工社保公积金档案分页 | | GET | /hrm/salary/employee-social-security/list-by-user | 获取员工社保公积金档案历史列表 | | GET | /hrm/salary/employee-social-security/get-latest | 获取员工最新生效的社保公积金档案 | **员工社保公积金档案字段:** | 字段 | 类型 | 说明 | |------|------|------| | id | Long | 档案ID | | userId | Long | 系统用户ID(关联员工表) | | userName | String | 员工姓名(响应字段) | | deptName | String | 部门名称(响应字段) | | socialSecuritySchemeId | Long | 社保公积金方案ID | | schemeName | String | 方案名称(响应字段) | | socialSecurityBase | BigDecimal | 社保缴纳基数(员工个性化设置) | | housingFundBase | BigDecimal | 公积金缴纳基数(员工个性化设置) | | effectiveDate | Date | 生效日期 | | status | Integer | 状态:0-启用,1-禁用 | | remark | String | 备注 | ## 前端修改点 ### 1. 个税税率配置页面 ```html ``` ### 2. 社保公积金方案页面 ```html ``` ### 3. 员工社保公积金档案页面 ```html ``` ## 扣除计算逻辑说明 ### 社保扣除(个人部分) 每个员工使用其绑定方案中的缴纳比例计算: ``` 社保扣除 = 社保基数 × (养老保险个人比例 + 医疗保险个人比例 + 失业保险个人比例) ``` - 基数取值:员工社保档案的 `socialSecurityBase` - 比例取值:通过 `socialSecuritySchemeId` 获取方案的比例 - 若方案中比例为空,使用默认值:养老8%、医疗2%、失业0.5% ### 公积金扣除(个人部分) 每个员工使用其绑定方案中的缴纳比例计算: ``` 公积金扣除 = 公积金基数 × 公积金个人比例 ``` - 基数取值:员工社保档案的 `housingFundBase` - 比例取值:通过 `socialSecuritySchemeId` 获取方案的比例 - 若方案中比例为空,使用默认值:12% ### 个税扣除 ``` 应纳税所得额 = 应发工资 - 社保扣除 - 公积金扣除 - 5000(起征点) 个税 = 应纳税所得额 × 税率 - 速算扣除数 ``` - 若应纳税所得额 ≤ 0,则个税为 0 - 根据7级累进税率表查找对应档位 ## 示例计算 假设员工: - 基本工资:10000 元 - 绩效工资:2000 元 - 社保基数:10000 元 - 公积金基数:10000 元 按 2024 年标准计算: 1. **应发工资** = 10000 + 2000 = 12000 元 2. **社保扣除** = 10000 × (8% + 2% + 0.5%) = 1050 元 3. **公积金扣除** = 10000 × 12% = 1200 元 4. **应纳税所得额** = 12000 - 1050 - 1200 - 5000 = 4750 元 5. **个税** = 4750 × 3% - 0 = 142.5 元 6. **实发工资** = 12000 - 1050 - 1200 - 142.5 = 9607.5 元 ## 注意事项 - 社保公积金配置需要根据当地政策设置比例和基数上下限 - 个税起征点目前固定为 5000 元/月 - 员工社保公积金档案可在员工管理中维护,支持按生效日期管理历史记录 - 薪酬核算时会自动计算各项扣除,无需手动干预