1.需求说明
1.业主是一家幼儿园的老板,之前是用EXCEL计算每月员工的工资。
2.需要一套延续之前计算公式的薪资系统。
3.避免因人工计算造成的薪资计算错误情况。
4.在市面上尚未找到符该业主需求的薪资系统。
2.系统组成模块
- 认证与授权(auth)
- 基本设定(basic)
- 工资(salary)
2.1.认证与授权(admin 原有功能)
Model | 简介 |
---|---|
user | 使用者 |
group | 群组 |
2.2.基本设定
Model | 简介 |
---|---|
Residence | 户口 |
Depart | 单位 |
Position | 职位 |
Licence | 证照 |
Duty | 职务 |
Grade | 年级 |
Banji | 班级 |
Employee | 职员 |
Parttime | 兼任 |
Teachship | 教学 |
Careship | 保育 |
Licenceship | 证照 |
2.3.工资
Model | 简介 |
---|---|
Reason | 加减原因 |
Record | 加减项目 |
Bounty | 跟车津贴 |
BanjiAttend | 班级出勤记录 |
EmployeeOther | 职员其他资料 |
WageDetail | 工资明细 |
WageCreate | 工资产生记录 |
Leave | 请假 |
3.默认数据
3.1.Depart(单位)
因薪资计算需求,下面四个单位的[title(名称)]不能修改。
INSERT INTO basic_depart(id, title) VALUES(1, '行政');
INSERT INTO basic_depart(id, title) VALUES(2, '教师');
INSERT INTO basic_depart(id, title) VALUES(3, '保育');
INSERT INTO basic_depart(id, title) VALUES(4, '后勤');
3.2.Position(职位)
因薪资计算需求,下面六个职位的[depart_id(单位)]与[title(名称)]不能修改。
INSERT INTO basic_position(id, title, subsidy, created, updated, create_user_id, depart_id) VALUES(1, '教师', 0, sysdate(), sysdate(), 1, 2);
INSERT INTO basic_position(id, title, subsidy, created, updated, create_user_id, depart_id) VALUES(2, '保育员', 0, sysdate(), sysdate(), 1, 3);
INSERT INTO basic_position(id, title, subsidy, created, updated, create_user_id, depart_id) VALUES(3, '园长', 0, sysdate(), sysdate(), 1, 1);
INSERT INTO basic_position(id, title, subsidy, created, updated, create_user_id, depart_id) VALUES(11, '营养员', 0, sysdate(), sysdate(), 1, 4);
INSERT INTO basic_position(id, title, subsidy, created, updated, create_user_id, depart_id) VALUES(12, '驾驶员', 0, sysdate(), sysdate(), 1, 4);
INSERT INTO basic_position(id, title, subsidy, created, updated, create_user_id, depart_id) VALUES(13, '总务', 0, sysdate(), sysdate(), 1, 4);
3.3.Reason(加减原因)
因[Leave(请假)]需要,右图中两个加减原因的[名称]不能修改。
INSERT INTO salary_reason(id, title, type, yesno) VALUES(3, '事假', 1, 0);
INSERT INTO salary_reason(id, title, type, yesno) VALUES(4, '病假', 1, 0);
4.基本关系说明
4.1.职员(Employee)与单位(Depart)与职位(Position)与职务(Duty)
默认数据有三个单位:行政/教师/保育,单位下有职位(ex:例如[园长]这个职位在[行政]这个单位下面),每个职员都必须有一个职位(且只能有一个职位),每个职员可以有多个职务。
4.2.证照(Licence)
每位职员可以有多个证照,证照的[保育员证照]字段为是时,只有职位为保育员的职员才能拥有。
4.3.年级(Grade)与班级(Banji)
年级可能有:幼班/小班/中班/大班;幼班可能有:幼一班/幼二班/幼三班…等。
班级有不定数量的教师与保育员,职员的职位为教师时才能担任班级的教师,职员的职位为保育员时才能担任班级的保育员。
4.4.加减原因(Reason)与加减项目(Record)与请假(Leave)
加减原因可能有:协助招生/事假/病假等,另外还需设定是加项还是减项。
加减项目则是每个月,各员工的工资加减项目及金额,使用者只能借由请假新增病假与事假的加减项目。
加减项目的计算月份字段选项只有当月与前月,当前月的计算月份已被锁定时则无法新增。
请假有事假与病假两个项目,新增后会自动抛一笔对应的加减项目。
请假抛加减项目时金额的计算公式如下:
加减项目字段 | 计算公式 |
---|---|
事假 | ([请假]-请假时间 * [职员]-基本工资) / (21.75 * 8) |
病假 | ([请假]-请假时间 * 0.3 * [职员]-基本工资) / (21.75 * 8) |
4.5.工资产生记录(WageCreate)与工资明细(WageDetail)
每个月份有一笔工资产生记录,每个职员每月会有一笔工资明细,工资明细是由工资产生记录自动产生,使用者不可直接修改工资明细。
工资明细的数据来源包括:年级/职位/职务/职员/证照/加减项目/班级出勤记录/职员其他资料/跟车津贴。
工资明细中个字段计算公式如下:
工资明细字段 | 计算公式 |
---|---|
应发工资 | [工资明细]-基本工资 + [工资明细]-职位津贴 + [工资明细]-职务津贴 + [工资明细]-工作考核 + [工资明细]-幼儿出勤 + [工资明细]-全勤 + [工资明细]-跟车津贴 + [工资明细]-备加 + [工资明细]-延时奖金 |
基本工资 | [职员]-基本工资 |
职位津贴 | [职位]-职位津贴 |
职务津贴 | [职务]-职务津贴的加总 |
工作考核 | [职员]-考核奖金 * [职员其他资料]-考核分数 / 100 |
幼儿出勤1 | 当[职位]是教师时:所在[班级]-[年级]-班级出勤奖金(教师) * ([班级出勤记录]-出勤人数 / 所在[班级]-[年级]-班额) |
幼儿出勤2 | 当[职位]是保育员时:所在[班级]-[年级]-班级出勤奖金(保育员) * ([班级出勤记录]-出勤人数 / 所在[班级]-[年级]-班额) * [职员]拥有是保育员证照最大的保育员幼儿出勤倍数 |
幼儿出勤3 | 当[职位]是园长时:[工资产生记录]-幼儿出勤奖金总额 * [职员]-幼儿出勤奖金比例 |
幼儿出勤4 | 当[职位]是营养员/驾驶员/总务时:[职员]-幼儿出勤奖金 |
幼儿出勤5 | 当[职位]是其他时:[班级出勤记录]-出勤人数加总 * [职员]-幼儿出勤人头费用 |
全勤1 | 无有则无全勤的[加减项目]时:[职员]-全勤奖金 |
全勤2 | 有有则无全勤的[加减项目]时:0 |
跟车津贴 | [跟车津贴]加总 |
备加 | 原因其项目为加项的[加减项目]的金额加总 |
备减 | 原因其项目为减项的[加减项目]的金额加总 |
个税 | [职员其他资料]-个税 |
延时奖金1 | 当[职位]是教师时:担任教师的班级的[班级出勤记录]-延时人数 * 担任教师班级的[年级]-延时教师时薪 + [职员其他资料]-延时2奖金 |
延时奖金2 | 当[职位]是保育员时:担任保育员的班级的[班级出勤记录]-延时人数 * 担任保育员班级的[年级]-延时保育时薪 + [职员其他资料]-延时2奖金 |
延时奖金3 | 当[职位]是其他时:[职员其他资料]-延时2奖金 |
公积金 | [职员]-公积金 |
社保 | [职员]-养保 + [职员]-医保 + [职员]-失保 |
工会 | [职员]-工会费用 |
实发工资 | [工资明细]-基本工资 + [工资明细]-职位津贴 + [工资明细]-职务津贴 + [工资明细]-工作考核 + [工资明细]-幼儿出勤 + [工资明细]-全勤 + [工资明细]-跟车津贴 + [工资明细]-备加 + [工资明细]-延时奖金 - [工资明细]-公积金 - [工资明细]-社保 - [工资明细]-工会 - [工资明细]-备减 - [工资明细]-个税 |
4.6.班级出勤记录(BanjiAttend)
由工资产生记录新增,使用者可以更新,每个状态为正常的班级每月会有一笔班级出勤记录,修改该月份已被锁定的班级出勤记录时则会显示错误。
4.7.职员其他资料(EmployeeOther)
由工资产生记录新增,使用者可以更新,当职员的离职日期字段为空白或是到计算月份当月时才会有当月份的职员其他资料。
4.8.跟车津贴(Bounty)
使用者可以新增职员当月或前月的跟车津贴金额,如果新增的计算月份已被锁定则会显示错误。
5.环境说明
5.1.系统环境
Windows 10
Python 3.7.3
Mysql 8.0.16
5.2.Django 套件
Django 3.1
xlwt 1.3.0
后续将依照模块继续为各位介绍。