from django.db import models # 员工 class Staff(models.Model): """ 员工 """ name = models.CharField(max_length=20, null=True, blank=True, verbose_name="姓名", help_text="姓名") gender = models.IntegerField(null=True, blank=True, default=1, verbose_name="性别", help_text="性别") # 1:男 2:女 idCode = models.CharField(max_length=200, null=True, blank=True, verbose_name="身份唯一识别码", help_text="身份唯一识别码") category = models.IntegerField(null=True, blank=True, verbose_name="人员类别", help_text="人员类别 # 1.研发人员 2.技术人员 3.辅助人员 4.非研发人员") dept = models.IntegerField(null=True, blank=True, verbose_name="所属部门id", help_text="所属部门id") education = models.IntegerField(null=True, blank=True, verbose_name="学历", help_text="学历 # 1.高中(中专)及以下 2.大专 3.本科 4.硕士 5.博士") employmentMethod = models.IntegerField(null=True, blank=True, verbose_name="聘用方式", help_text="聘用方式 # 1:正式 2:临时 3.兼职") isActive = models.BooleanField(null=True, blank=True, default=True, verbose_name="用户是否可用", help_text="用户是否可用 # 用户锁定与激活用户") education = models.IntegerField(null=True, blank=True, verbose_name="学历", help_text="学历 # 1.高中(中专)及以下 2.大专 3.本科 4.硕士 5.博士") employmentMethod = models.IntegerField(null=True, blank=True, verbose_name="聘用方式", help_text="聘用方式 # 1:正式 2:临时 3.兼职") isActive = models.BooleanField(null=True, blank=True, default=True, verbose_name="用户是否可用", help_text="用户是否可用 # 用户锁定与激活用户") duties = models.CharField(null=True, blank=True, max_length=200, verbose_name="职务", help_text="职务") major = models.CharField(null=True, blank=True, max_length=200, verbose_name="专业", help_text="专业") isAbroad = models.BooleanField(default=False, null=True, blank=True, verbose_name="是否海归") isForeign = models.BooleanField(default=False, null=True, blank=True, verbose_name="是否外籍人员") birthday = models.DateField(null=True, blank=True, verbose_name="出生日期", help_text="出生日期") entryTime = models.DateField(null=True, blank=True, verbose_name="入职时间", help_text="入职时间") leaveTime = models.DateField(null=True, blank=True, verbose_name="离职时间", help_text="离职时间") changeTime = models.DateField(null=True, blank=True, verbose_name="变动时间", help_text="变动时间") status = models.PositiveSmallIntegerField(null=True, blank=True, default=0, verbose_name="状态", help_text="状态 # 0:未离职 1:离职") # relCount = models.IntegerField(default=0, verbose_name="关联员工的数量,relCount>0时不可删除", help_text="关联员工的数量,relCount>0时不可删除") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 professionalCertificate = models.CharField(null=True, blank=True, max_length=200, verbose_name="专业证书") personalHonor = models.CharField(null=True, blank=True, max_length=200, verbose_name="个人荣誉") talentQualification = models.CharField(null=True, blank=True, max_length=10, verbose_name="人才资质", help_text="1.国家高层次人才 2.地方高层次人才 3.区高层次人才") graduationSchool = models.CharField(null=True, blank=True, max_length=200, verbose_name="毕业院校") class Meta: verbose_name = "员工信息" verbose_name_plural = verbose_name ordering = ["id"] def __str__(self): return self.name class Dept(models.Model): """ 部门 """ name = models.CharField(max_length=20, null=True, blank=True, verbose_name="名称", help_text="名称") # type = models.CharField(max_length=50, null=True, blank=True, verbose_name="类型", help_text="类型") is_rnd = models.BooleanField(default=False, null=True, blank=True, verbose_name="是否研发部门,默认否", help_text="是否研发部门,默认否") pid = models.ForeignKey("self", null=True, blank=True, on_delete=models.SET_NULL, verbose_name="上级部门id", help_text="上级部门id") # relCount = models.IntegerField(default=0, verbose_name="关联部门的数量,relCount>0时不可删除", help_text="关联部门的数量,relCount>0时不可删除") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: verbose_name = "部门信息" verbose_name_plural = verbose_name ordering = ["id"] def __str__(self): return self.name # 考勤 class Attendance(models.Model): """ 考勤记录 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="被考勤人员id", help_text="被考勤人员id") attendanceDate = models.DateField(null=True, blank=True, verbose_name="考勤年月", help_text="考勤年月 # 2024-01") attendanceDays = models.FloatField(null=True, blank=True, verbose_name="月出勤天数", help_text="月出勤天数") restDay = models.CharField(max_length=200, null=True, blank=True, verbose_name="休息日", help_text="休息日") rndDay = models.FloatField(null=True, blank=True, verbose_name="研发天数", help_text="研发天数") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证(已记账)") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: verbose_name = "考勤记录" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.attendanceDate: self.attendanceDate = self.attendanceDate.replace(day=1) super().save(*args, **kwargs) # 实发工资 class Wages(models.Model): """ 工资记录 费用编码 1.1 外聘劳务费 1.3 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="工资", help_text="工资") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_wages" # 不可删除 verbose_name = "工资记录" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 实发社保 class SocialInsurance(models.Model): """ 社保记录 费用编码 1.2.1(多种社保,具体类型由用户自定义的社保科目类型决定) """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") # endowment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="养老", help_text="养老") # medical = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="医疗", help_text="医疗") # unemployment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="失业", help_text="失业") # workInjury = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="工伤", help_text="工伤") # maternity = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="生育", help_text="生育") # illness = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="大病医疗", help_text="大病医疗") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_social_insurance" verbose_name = "社保记录" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 实发公积金 class Accumulation(models.Model): """ 公积金记录 费用编码 1.2.2 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") # accumulation = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="公积金", help_text="公积金") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_accumulation" verbose_name = "公积金记录" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 实发奖金 class Bonus(models.Model): """ 奖金管理 费用编码 1.4 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, null=True, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") remark = models.CharField(max_length=200, null=True, blank=True, verbose_name="备注信息", help_text="备注信息") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_bonus" verbose_name = "奖金管理" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 实发福利 class Welfare(models.Model): """ 福利管理 费用编码 7.9.3 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, null=True, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") remark = models.CharField(max_length=200, null=True, blank=True, verbose_name="备注信息", help_text="备注信息") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_welfare" verbose_name = "福利管理" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # # 以下为预提管理的model # # 预提工资 class AccruedWages(models.Model): """ 预提工资记录 费用编码 1.1 外聘劳务费 1.3 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="工资", help_text="工资") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_accrued_wages" verbose_name = "工资记录" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 预提社保 class AccruedSocialInsurance(models.Model): """ 预提社保记录 费用编码 1.2.1(多种社保,具体类型由用户自定义的社保科目类型决定) """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") # endowment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="养老", help_text="养老") # medical = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="医疗", help_text="医疗") # unemployment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="失业", help_text="失业") # workInjury = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="工伤", help_text="工伤") # maternity = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="生育", help_text="生育") # illness = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="大病医疗", help_text="大病医疗") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_accrued_social_insurance" verbose_name = "社保记录" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 预提公积金 class AccruedAccumulation(models.Model): """ 预提公积金记录 费用编码 1.2.2 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") # accumulation = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="公积金", help_text="公积金") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_accrued_accumulation" verbose_name = "公积金记录" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 预提奖金 class AccruedBonus(models.Model): """ 预提奖金管理 费用编码 1.4 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, null=True, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") remark = models.CharField(max_length=200, null=True, blank=True, verbose_name="备注信息", help_text="备注信息") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_accrued_bonus" verbose_name = "奖金管理" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) # 预提福利 class AccruedWelfare(models.Model): """ 预提福利管理 费用编码 7.9.3 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") date = models.DateField(null=True, blank=True, verbose_name="薪资入账年月", help_text="薪资入账年月 # 2024-01") startDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生开始年月", help_text="薪资费用发生开始年月 # 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="薪资费用发生结束年月", help_text="薪资费用发生结束年月 # 2024-01") amount = models.DecimalField(max_digits=18, decimal_places=2, null=True, blank=True, verbose_name="金额", help_text="金额") subjectId = models.IntegerField(null=True, blank=True, verbose_name="对应科目id", help_text="对应科目id") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") remark = models.CharField(max_length=200, null=True, blank=True, verbose_name="备注信息", help_text="备注信息") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: db_table = "staff_accrued_welfare" verbose_name = "福利管理" verbose_name_plural = verbose_name ordering = ["id"] def save(self, *args, **kwargs): # 强制确保日期为每月的第一天 if self.date: self.date = self.date.replace(day=1) super().save(*args, **kwargs) class Salary(models.Model): """ 薪资记录(工资,公积金) """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") salaryDate = models.DateField(null=True, blank=True, verbose_name="薪资记录年月", help_text="薪资记录年月 # 2024-01") salaryAmount = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="工资", help_text="工资") accumulation = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="公积金", help_text="公积金") endowment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="养老", help_text="养老") medical = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="医疗", help_text="医疗") unemployment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="失业", help_text="失业") workInjury = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="工伤", help_text="工伤") maternity = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="生育", help_text="生育") illness = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="大病医疗", help_text="大病医疗") # type = models.IntegerField(null=True, blank=True, verbose_name="类型", help_text="1:工资SA(salary), 2:公积金AC(accumulation)") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 1+:已添加凭证") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: verbose_name = "薪资记录" verbose_name_plural = verbose_name ordering = ["id"] class Accrued(models.Model): """ 预提记录(工资,奖金,福利) """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") accruedDate = models.DateField(null=True, blank=True, verbose_name="预提年月", help_text="预提年月 # 2024-01") accruedEndDate = models.DateField(null=True, blank=True, verbose_name="预提终止年月", help_text="预提终止年月 # 2024-01") accruedAmount = models.DecimalField(max_digits=18, decimal_places=2, null=True, blank=True, verbose_name="预提金额", help_text="预提金额") accruedType = models.IntegerField(null=True, blank=True, verbose_name="预提类型", help_text="预提类型 # (1:工资&社保公积金,2:奖金,3:福利)") amountType = models.IntegerField(null=True, blank=True, verbose_name="预提金额类型id", help_text="预提金额类型id # 用户自定义的奖金与福利类型") attendanceStatus = models.BooleanField(default=0, verbose_name="考勤状态是否完成,0-未完成", help_text="考勤状态是否完成,0-未完成") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 2:已添加凭证") remark = models.CharField(max_length=200, null=True, blank=True, verbose_name="备注信息", help_text="备注信息") accumulation = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="公积金", help_text="公积金") endowment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="养老", help_text="养老") medical = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="医疗", help_text="医疗") unemployment = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="失业", help_text="失业") workInjury = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="工伤", help_text="工伤") maternity = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="生育", help_text="生育") illness = models.DecimalField(max_digits=18, decimal_places=2, default=0, blank=True, verbose_name="大病医疗", help_text="大病医疗") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: verbose_name = "预提记录" verbose_name_plural = verbose_name ordering = ["id"] class Reward(models.Model): """ 奖金福利管理 """ staffId = models.IntegerField(null=True, blank=True, verbose_name="员工id", help_text="员工id") startDate = models.DateField(null=True, blank=True, verbose_name="起始年月", help_text="起始年月# 2024-01") endDate = models.DateField(null=True, blank=True, verbose_name="终止年月", help_text="终止年月 # 2024-01") # 2024-01 amount = models.DecimalField(max_digits=18, decimal_places=2, null=True, blank=True, verbose_name="金额", help_text="金额") type = models.IntegerField(null=True, blank=True, verbose_name="类型", help_text="类型") # 1:奖金 2:福利 amountType = models.IntegerField(null=True, blank=True, verbose_name="金额类型id", help_text="金额类型 # 用户自定义的奖金与福利类型id") attendanceStatus = models.BooleanField(default=False, verbose_name="是否完成对应时间的考勤,0-未完成", help_text="是否完成对应时间的考勤,0-未完成") status = models.IntegerField(null=True, default=0, blank=True, verbose_name="状态", help_text="状态 # 0:未审核 1:已审核保存 2:已添加凭证") remark = models.CharField(max_length=200, null=True, blank=True, verbose_name="备注信息", help_text="备注信息") CreateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="创建人") UpdateBy = models.CharField(max_length=36, null=True, blank=True, verbose_name="更新人") CreateByUid = models.IntegerField(null=True, blank=True, verbose_name="创建人ID") UpdateByUid = models.IntegerField(null=True, blank=True, verbose_name="更新人ID") CreateDateTime = models.DateTimeField(auto_now_add=True, verbose_name="创建时间") UpdateDateTime = models.DateTimeField(auto_now=True, verbose_name="更新时间") companyMid = models.CharField(null=True, blank=True, max_length=36, verbose_name="公司全局id") # 用于绑定公司 class Meta: verbose_name = "奖金福利管理" verbose_name_plural = verbose_name ordering = ["id"]