⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmsalaryman.frm

📁 vb+sql 的企业人事管理系统 c/s模式 适合初学者使用
💻 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 + -