📄 frmsalaryman.frm
字号:
VERSION 5.00
Object = "{67397AA1-7FB1-11D0-B148-00A0C922E820}#6.0#0"; "MSADODC.OCX"
Object = "{CDE57A40-8B86-11D0-B3C6-00A0C90AEA82}#1.0#0"; "MSDATGRD.OCX"
Begin VB.Form FrmSalaryMan
BorderStyle = 1 'Fixed Single
Caption = "员工工资管理"
ClientHeight = 7365
ClientLeft = 45
ClientTop = 330
ClientWidth = 11910
LinkTopic = "Form1"
LockControls = -1 'True
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 7365
ScaleWidth = 11910
StartUpPosition = 2 '屏幕中心
Begin VB.CommandButton Cmd_Pay
BackColor = &H80000004&
Caption = "工资发放"
Height = 400
Left = 3107
MouseIcon = "FrmSalaryMan.frx":0000
MousePointer = 99 'Custom
Style = 1 'Graphical
TabIndex = 4
Top = 6600
Width = 1300
End
Begin VB.ComboBox ComboY
Height = 300
Left = 1320
TabIndex = 0
Text = "Combo1"
Top = 240
Width = 1095
End
Begin VB.ComboBox ComboM
Height = 300
Left = 2520
TabIndex = 1
Text = "Combo1"
Top = 240
Width = 735
End
Begin VB.ComboBox ComboDep
Height = 300
Left = 5400
TabIndex = 2
Text = "Combo1"
Top = 240
Width = 1815
End
Begin VB.CommandButton Cmd_Back
BackColor = &H80000004&
Cancel = -1 'True
Caption = "返 回"
Height = 400
Left = 7504
MouseIcon = "FrmSalaryMan.frx":030A
MousePointer = 99 'Custom
Style = 1 'Graphical
TabIndex = 7
Top = 6600
Width = 1300
End
Begin VB.CommandButton Cmd_Rules
BackColor = &H80000004&
Caption = "工资制度"
Height = 400
Left = 6037
MouseIcon = "FrmSalaryMan.frx":0614
MousePointer = 99 'Custom
Style = 1 'Graphical
TabIndex = 6
Top = 6600
Width = 1300
End
Begin VB.CommandButton Cmd_Modi
BackColor = &H80000004&
Caption = "修 改"
Height = 400
Left = 4572
MouseIcon = "FrmSalaryMan.frx":091E
MousePointer = 99 'Custom
Style = 1 'Graphical
TabIndex = 5
Top = 6600
Width = 1300
End
Begin MSDataGridLib.DataGrid DataGrid1
Bindings = "FrmSalaryMan.frx":0C28
Height = 5655
Left = 240
TabIndex = 3
Top = 660
Width = 11415
_ExtentX = 20135
_ExtentY = 9975
_Version = 393216
AllowUpdate = 0 'False
HeadLines = 1
RowHeight = 15
BeginProperty HeadFont {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ColumnCount = 2
BeginProperty Column00
DataField = ""
Caption = ""
BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED}
Type = 0
Format = ""
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 2052
SubFormatType = 0
EndProperty
EndProperty
BeginProperty Column01
DataField = ""
Caption = ""
BeginProperty DataFormat {6D835690-900B-11D0-9484-00A0C91110ED}
Type = 0
Format = ""
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 2052
SubFormatType = 0
EndProperty
EndProperty
SplitCount = 1
BeginProperty Split0
BeginProperty Column00
EndProperty
BeginProperty Column01
EndProperty
EndProperty
End
Begin MSAdodcLib.Adodc Adodc1
Height = 330
Left = 0
Top = 6420
Visible = 0 'False
Width = 1815
_ExtentX = 3201
_ExtentY = 582
ConnectMode = 0
CursorLocation = 3
IsolationLevel = -1
ConnectionTimeout= 15
CommandTimeout = 30
CursorType = 3
LockType = 3
CommandType = 8
CursorOptions = 0
CacheSize = 50
MaxRecords = 0
BOFAction = 0
EOFAction = 0
ConnectStringType= 3
Appearance = 1
BackColor = -2147483643
ForeColor = -2147483640
Orientation = 0
Enabled = -1
Connect = "DSN=HrSys"
OLEDBString = ""
OLEDBFile = ""
DataSourceName = "HrSys"
OtherAttributes = ""
UserName = "sa"
Password = "sa"
RecordSource = "SELECT * FROM Checkin"
Caption = "Adodc1"
BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851}
Name = "宋体"
Size = 9
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
_Version = 393216
End
Begin VB.Label Label1
AutoSize = -1 'True
Caption = "选择月份"
Height = 180
Left = 360
TabIndex = 9
Top = 300
Width = 720
End
Begin VB.Label Label2
AutoSize = -1 'True
Caption = "选择部门"
Height = 180
Left = 4440
TabIndex = 8
Top = 300
Width = 720
End
End
Attribute VB_Name = "FrmSalaryMan"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub CreateSalary()
Dim TmpMonth As String
Dim TmpTax As Single
Dim DayPay As Single '日工资
If CurDep.Dep_Id <= 0 Then
Exit Sub
End If
'生成指定月份
TmpMonth = ComboY.Text + "-" + ComboM.Text
'读取指定部门的员工编号到数组Arr_EmpId()
MyEmp.Load_by_Dep (CurDep.Dep_Id)
'对每一位员工生成当月的工资数据
i = 0
Do While Arr_EmpId(i) > 0
'如果指定月份当前员工的工资并未发放,则自动生成
With MySal
If .GetPayFlag(TmpMonth, Arr_EmpId(0)) = 0 Then
.PayMonth = TmpMonth
.Emp_Id = Arr_EmpId(i)
'读取员工基本信息(包含基本工资和奖金基数)
MyEmp.GetInfo (.Emp_Id)
'读取考勤记录
Call MyCheck.GetInfo(TmpMonth, Arr_EmpId(i))
'读取考评记录
Call MyEva.GetInfo(TmpMonth, Arr_EmpId(i))
DayPay = Round(MyEmp.Base_Wage / 30, 2)
.BaseWage = MyEmp.Base_Wage
'记算加班费
.Ot1Pay = MyCheck.ot1Days * DayPay * 3
.Ot2Pay = MyCheck.ot2Days * DayPay * 2
.Ot3Pay = MyCheck.ot3Days * DayPay * 1.5
'扣款
.Cdkk = MyCheck.cdDays * MyRule.GetAmount(1)
.Sjkk = (MyCheck.sjDays + MyCheck.kgDays) * DayPay
.Bjkk = Round(MyCheck.bjDays * DayPay / 2, 2)
'奖金
.Prize = Round(MyEmp.Base_Prize * (MyEva.PrizeFactor1 + MyEva.PrizeFactor2) / 100 / 2, 2)
'出差补助
.Clbz = MyCheck.cxDays * MyRule.GetAmount(2)
'养老代扣
.Yldk = Round(MyEmp.Base_Wage * MyRule.GetAmount(3) / 100, 2)
'基本医疗代扣
.Mddk = Round(MyEmp.Base_Wage * MyRule.GetAmount(4) / 100, 2)
'失业保险
.Sydk = Round(MyEmp.Base_Wage * MyRule.GetAmount(5) / 100, 2)
'住房公积金代扣
.HouseFunds = Round(MyEmp.Base_Wage * MyRule.GetAmount(6) / 100, 2)
'代扣税
.Sfgz = .BaseWage + .Prize + .Ot1Pay + .Ot2Pay + .Ot3Pay + .Clbz _
- .Cdkk - .Sjkk - .Bjkk - .Yldk - .Mddk - .Sydk - .HouseFunds - 1000
If .Sfgz < 0 Then
TmpTax = 0
End If
If .Sfgz <= 500 And .Sfgz > 0 Then
TmpTax = 0.5
End If
If .Sfgz <= 2000 And .Sfgz > 500 Then
TmpTax = .Sfgz * 0.1 - 25
End If
If .Sfgz <= 5000 And .Sfgz > 2000 Then
TmpTax = .Sfgz * 0.15 - 125
End If
If .Sfgz <= 20000 And .Sfgz > 5000 Then
TmpTax = .Sfgz * 0.2 - 375
End If
If .Sfgz <= 40000 And .Sfgz > 20000 Then
TmpTax = .Sfgz * 0.25 - 1375
End If
If .Sfgz <= 60000 And .Sfgz > 40000 Then
TmpTax = .Sfgz * 0.3 - 3375
End If
If .Sfgz <= 80000 And .Sfgz > 60000 Then
TmpTax = .Sfgz * 0.35 - 6375
End If
If .Sfgz <= 100000 And .Sfgz > 80000 Then
TmpTax = .Sfgz * 0.4 - 10375
End If
If .Sfgz > 100000 Then
TmpTax = .Sfgz * 0.45 - 13375
End If
.Tax = TmpTax
.Sfgz = .Sfgz + 1000 - .Tax
If MySal.In_DB(TmpMonth, Arr_EmpId(i)) = False Then
'其它扣款
.Qtkk = 0
'医疗费报销
.Mdbx = 0
'年休假
.YearPrize = 0
.Insert
Else
'读取其它扣款、医疗报销和年终奖金
Call .GetInput(TmpMonth, Arr_EmpId(i))
.Sfgz = .Sfgz - .Qtkk + .Mdbx + .YearPrize
'将重新计算的结果写如表中
Call .UpdateAuto(TmpMonth, Arr_EmpId(i))
End If
Cmd_Pay.Enabled = True
Cmd_Modi.Enabled = True
Else
'如果工资已经发放,则不能再修改和发放
Cmd_Pay.Enabled = False
Cmd_Modi.Enabled = False
End If
End With
i = i + 1
Loop
End Sub
Private Sub Refresh_Salary()
Dim TmpSource As String
CreateSalary
TmpSource = "SELECT e.Emp_Id as 员工编号," _
+ "e.Emp_Name as 员工姓名, c.BaseWage as 基本工资," _
+ "c.Prize as 奖金, c.Ot1Pay as 法定节假日加班费," _
+ "c.Ot2Pay as 休息日加班费, c.Ot3Pay as 日常加班费," _
+ "c.Cdkk as 迟到扣款, c.Sjkk as 事假扣款, c.Bjkk as 病假扣款," _
+ "c.Clbz as 差旅补助, c.Yldk as 养老代扣," _
+ "c.Mddk as 基本医疗代扣, c.Sydk as 失业保险代扣," _
+ "c.HouseFunds as 住房公积金代扣, c.Tax as 代扣税," _
+ "c.Qtkk as 其他扣款, c.Mdbx as 医药费报销, " _
+ "c.YearPrize as 年终奖金, c.Sfgz as 实发工资" _
+ " FROM Employees e, Salary c WHERE c.PayMonth='" _
+ ComboY.Text + "-" + ComboM.Text + "' And e.Emp_Id=c.Emp_Id"
If CurUser.User_type = 0 Or CurUser.User_type = 2 Then
If CurDep.Dep_Id <= 0 Then
DataGrid1.Visible = False
Exit Sub
End If
DataGrid1.Visible = True
Adodc1.RecordSource = TmpSource _
+ " And e.Dep_Id=" + Trim(Str(CurDep.Dep_Id))
Else
Adodc1.RecordSource = TmpSource _
+ " And e.Emp_Id=" + Trim(Str(CurUser.Emp_Id))
End If
Adodc1.Refresh
End Sub
Private Sub Cmd_Back_Click()
Unload Me
End Sub
Private Sub Cmd_Modi_Click()
With FrmSalaryEdit
.lblMonth = ComboY.Text + "-" + ComboM.Text
.lblName = Adodc1.Recordset.Fields(1)
.OriEmpId = Adodc1.Recordset.Fields(0)
.txtQtkk = Adodc1.Recordset.Fields(16)
.txtMdbx = Adodc1.Recordset.Fields(17)
.txtYearPrize = Adodc1.Recordset.Fields(18)
.TmpSfgz = Adodc1.Recordset.Fields(19)
.Show 1
End With
Refresh_Salary
End Sub
Private Sub Cmd_Pay_Click()
If MsgBox("确定要发放当月工资", vbYesNo, "请确认") = vbYes Then
Call MySal.SetPay(ComboY + "-" + ComboM, 1)
Cmd_Pay.Enabled = False
Cmd_Modi.Enabled = False
End If
End Sub
Private Sub Cmd_Rules_Click()
FrmSalaryRule.Show 1
End Sub
Private Sub ComboDep_GotFocus()
ComboY.SetFocus
'设置frmdepsel窗体的位置
FrmDepSel.Left = Me.Left + ComboDep.Left + 350 - FrmDepSel.Width
FrmDepSel.Top = Me.Top + ComboDep.Top + ComboDep.Height + 450
FrmDepSel.Show 1
'将选择的员工姓名显示到ComboUpper控件中
ComboDep.Text = CurDep.Dep_name
Refresh_Salary
End Sub
Private Sub ComboM_Click()
Refresh_Salary
End Sub
Private Sub ComboY_Click()
Refresh_Salary
End Sub
Private Sub Form_Load()
Dim yy, mm As Integer
For i = 1999 To 2100
ComboY.AddItem Trim(Str(i))
Next
For i = 1 To 12
ComboM.AddItem Trim(Str(i))
Next
yy = Year(Now)
If yy > 1998 And yy < 2101 Then
ComboY.Text = Trim(Str(yy))
End If
mm = Month(Now)
If mm > 0 And mm < 13 Then
ComboM.Text = Trim(Str(mm))
End If
ComboDep.Text = ""
CurDep.Init
Refresh_Salary
' '根据用户类型设置界面
If CurUser.User_type = 1 Or CurUser.User_type = 3 Or CurUser.User_type = 4 Then
Cmd_Pay.Visible = False
Cmd_Modi.Visible = False
Cmd_Rules.Visible = False
Cmd_Back.Left = 3500
Label2.Visible = False
ComboDep.Visible = False
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -