薪资扣罚登记表,增加计算出勤天数功能表CYMstMonthSalarydata的attssbts字段,计算当月的上月的出勤天数。
计算规则:根据考勤打卡明细数据,取最早的进最晚的出,统计时间超过4个小时,则计算1天出勤,否则为0天出勤。
把计算逻辑写到下面截图显示的方法上
if not exists(SELECT OBJECT_NAME (id )FROM sysobjects
WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0
and OBJECT_NAME (id)='CYMstMonthSalarydata')
create table dbo.CYMstMonthSalarydata(
ID uniqueidentifier not null primary key,--主键
yejimodel varchar(50) null,--使用业绩模式
Staffid uniqueidentifier null,--
IYear int null,
IMonth int null,
Status int null,--0未发 1已发
StaffName varchar(50) null,
Departid uniqueidentifier null,
Departname varchar(50) null,--归属部门
BYeji decimal(10,2) null,--普通业绩
CYeji decimal(10,2) null,--超额业绩
Depyeji decimal(10,2) null,--部门业绩
Yeji decimal(10,2) null,--业绩合计
Huikuantotal decimal(10,2) null,--本月回款合计
jstotal decimal(10,2) null,--本月应结回款合计
--HR输入
ysbts decimal(10,2) null,--应上班天数(月天数-4,可调整)
ssbts decimal(10,2) null,--实上班天数(输入)
attssbts decimal(10,2) null,--实上班天数(计算)
AttrKou decimal(10,2) null,--出勤扣除
Koukuan decimal(10,2) null,--罚款
WebKoukuan decimal(10,2) null,--网站及其他扣除
AttrRemark varchar(1000) null,
--财务输入
preqianyeji decimal(10,2) null,--上月结欠业绩
qianyeji decimal(10,2) null,--结欠业绩
qianyejiex decimal(10,2) null,--未清结欠业绩
BaseSalary decimal(10,2) null,--基本工资
PositionSalary decimal(10,2) null,--岗位津贴
Persalary decimal(10,2) null,--绩效津贴
SalaryTotal decimal(10,2) null,--薪资合计
Yingfa decimal(10,2) null,--业绩奖金
TelKou decimal(10,2) null,--话费扣除
shebao decimal(10,2) null,--社保类个人扣除
YingfaSalary decimal(10,2) null,--应发工资
tax decimal(10,2) null,--个税
Shifa decimal(10,2) null,--本月工资
Remark varchar(100) null,--备注
Handlestaff uniqueidentifier null,--发放处理人
Handlestaffname varchar(50) null,--发放处理人
HandleDate datetime null,--发放时间
Laster uniqueidentifier null,
LastDate datetime null,
LasterName varchar(100) , --创建者
BuildDate datetime ,--创建日期
Builder uniqueidentifier , --创建人
BuilderName varchar(50) --创建人姓名
)
exec CTYGenerateField 'CYMstMonthSalarydata'
提供个思路供参考, 读取出全部的list, 对每个人,每天进行处理,每天的数据按照时间排序,取最大记录和最小记录然后进行相减,仅供参考,方法比较笨