独角鲸同步合作方公司数据项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

650 lines
42 KiB

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"]