每月的第一日,根据人事档案自动生成上月的工资表,生成的工资表中仅包括标准工资的数据,这里可以编辑修改其他工资数据。
工资表制作模块的用户自定义 load 事件中,调用了一个存储过程:新建工资表,新建工资表的源代码如下所示:
USE [EVKDEMO]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDUR [dbo].[新建工资表]
@年 INT = 0,
@月 INT = 0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @记录数 INT
IF @年 = 0 SET @年 = YEAR(DATEADD(MONTH,-1,GETDATE()))
IF @月 = 0 SET @月 = MONTH(DATEADD(MONTH,-1,GETDATE()))
SELECT @记录数 = COUNT(*) FROM 工资表 WHERE 年=@年 AND 月=@月
IF @记录数 = 0
BEGIN
INSERT INTO 工资表 (编号,部门,姓名,基本工资,岗位津贴,职务津贴,交通费,工龄工资,奖金,年,月)
SELECT 编号,部门,姓名,基本工资,岗位津贴,职务津贴,交通费,工龄工资,0,@年,@月 FROM dbo.人事档案
UPDATE 工资表
SET 应发合计=基本工资+岗位津贴+职务津贴+交通费+工龄工资,
个人所得税=dbo.个人所得税(基本工资+岗位津贴+职务津贴+交通费+工龄工资)
WHERE 年=@年 AND 月=@月
UPDATE 工资表
SET 实发合计=应发合计 - 个人所得税
WHERE 年=@年 AND 月=@月
END
return @记录数
END
在工资表制作模块的用户自定义 load 事件中,调用[新建工资表]存储过程。
#region 用户自定义_Load
主表.更新("EXEC [新建工资表]");
#endregion