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

📄 u_gzb.pas

📁 人力资源管理系统自动计算员工工资。自动生成员工工资报表。实现员工岗位调动操作。实现员工离职、复职操作。支持数据的模糊查询机制。运行环境 操作系统:Windows 2000/NT/XP/ME 开发工
💻 PAS
字号:
unit U_gzb;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, ExtCtrls, Buttons;

type
  Tfrm_gzb = class(TForm)
    DataSource1: TDataSource;
    Panel1: TPanel;
    Panel2: TPanel;
    ComboBox1: TComboBox;
    Button1: TButton;
    Button2: TButton;
    CheckBox1: TCheckBox;
    Panel3: TPanel;
    Label1: TLabel;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Button3: TButton;
    Button4: TButton;
    BitBtn1: TBitBtn;
    DBGrid1: TDBGrid;
    procedure CheckBox1Click(Sender: TObject);
    procedure jiesuan;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
    yfgz,ykgz,sfgz:integer;
  end;

var
  frm_gzb: Tfrm_gzb;

implementation

uses U_data;

{$R *.dfm}


procedure Tfrm_gzb.CheckBox1Click(Sender: TObject);
begin
if checkbox1.Checked=true then
   groupbox1.Enabled:=true
else
   groupbox1.Enabled:=false;
end;

procedure Tfrm_gzb.Button3Click(Sender: TObject);
var
ctext:string;
begin
ctext:=combobox1.Text;
if combobox1.Text<>'' then
begin
with data1.ADOQYbmxx do
begin
   close;
   sql.Clear;
   sql.Add('select * from 工资表 where gzyf=:aaa');
   parameters.ParamByName('aaa').Value:=trim(combobox1.Text);
   open;
end;
if data1.ADOQYbmxx.RecordCount>0 then
application.MessageBox('该月工资已经生成','提示',64)
else
begin
with data1.ADOpublic do
   begin
      close;
      sql.Clear;
      sql.Add('select * from 考核表 where 考核月份=:aa');
      parameters.ParamByName('aa').value:=combobox1.Text;
      open;
   end;
with data1.ADOQYkqxx do
   begin
      close;
      sql.Clear;
      sql.Add('select * from 考勤表');
      open;
   end;
while not data1.ADOpublic.Eof do
begin
with data1.ADOQuery1 do
   begin
      close;
      sql.Clear;
      sql.Add('select * from 工资模板 where 员工编号=:bb');
      parameters.ParamByName('bb').Value:=data1.ADOpublic.FieldByName('员工编号').Value;
      open;
   end;
with data1.ADOQYsl do
   begin
      close;
      sql.Clear;
      sql.Add('select * from 个人所得税税率表 where 级别号=:cc');
      parameters.ParamByName('cc').Value:=data1.ADOQuery1.FieldByName('扣税级别').Value;
      open;
   end;
      try
      with data1.ADOQYgzb do
         begin
            close;
            sql.Clear;
            sql.Add('insert 工资表 values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r)');
            parameters.ParamByName('a').Value:=trim(combobox1.Text);
            parameters.ParamByName('b').Value:=data1.ADOpublic.FieldByName('员工编号').Value;
            parameters.ParamByName('c').Value:=data1.ADOQuery1.FieldByName('员工姓名').Value; 
            parameters.ParamByName('d').Value:=data1.ADOQuery1.FieldByName('基本工资').Value;
            parameters.ParamByName('g').Value:=data1.ADOQuery1.FieldByName('职务津贴').Value;
            parameters.ParamByName('h').Value:=trim(edit2.Text);
            parameters.ParamByName('j').Value:=data1.ADOQuery1.FieldByName('基本工资').Value*data1.ADOQuery1 .FieldByName('养老保险').Value;
            parameters.ParamByName('k').Value:=data1.ADOQuery1.FieldByName('基本工资').Value*data1.ADOQuery1 .FieldByName('失业保险').Value;
            parameters.ParamByName('l').Value:=data1.ADOQuery1.FieldByName('基本工资').Value*data1.ADOQuery1 .FieldByName('医疗保险').Value;
            parameters.ParamByName('m').Value:=data1.ADOQuery1.FieldByName('基本工资').Value*data1.ADOQYsl .FieldByName('税率').Value;
            parameters.ParamByName('n').Value:=trim(edit1.Text);
            parameters.ParamByName('o').Value:=null;
            parameters.ParamByName('p').Value:=null;
            parameters.ParamByName('q').Value:=null;
            parameters.ParamByName('r').Value:=trim(edit3.Text);
         if data1.ADOpublic.FieldByName('加班时数').Value > 0 then
            parameters.ParamByName('e').Value:=data1.ADOQuery1.FieldByName('基本工资').Value/data1.ADOQYkqxx .FieldByName('月平均工作天数').Value/8*data1.ADOQYkqxx .FieldByName('几倍').Value*data1.ADOpublic.FieldByName('加班时数').Value
         else
            parameters.ParamByName('e').Value:=0;
         if (data1.ADOpublic.FieldByName('出勤天数').Value < data1.ADOQYkqxx.FieldByName('出勤天数').Value) or ((data1.ADOpublic.FieldByName('迟到次数').Value + data1.ADOpublic.FieldByName('早退次数').Value) >= data1.ADOQYkqxx.FieldByName('迟到早退次数').Value) then
            parameters.ParamByName('f').Value:=0
         else
            parameters.ParamByName('f').Value:=data1.ADOQuery1.FieldByName('全勤奖').Value;
         if data1.ADOpublic.FieldByName('旷工天数').Value > 0 then
            parameters.ParamByName('i').Value:=data1.ADOQuery1.FieldByName('基本工资').Value/data1.ADOQYkqxx .FieldByName('月平均工作天数').Value*data1.ADOQYkqxx .FieldByName('几倍').Value*data1.ADOpublic.FieldByName('旷工天数').Value
         else
            parameters.ParamByName('i').Value:=0;
            execsql;
         end;
      except
         application.MessageBox('生成失败','提示',64);
      end;
     data1.ADOpublic.Next;
     data1.ADOQuery1.Next;
     data1.ADOQYsl.Next;
   end;
end;
end
else
   application.MessageBox('请选择日期','提示',64);
with data1.ADOQYgzb do
   begin
      close;
      sql.Clear;
      sql.Add('select * from 工资表 where gzyf=:a');
      parameters.ParamByName('a').Value:=ctext;
      open;
   end;
   data1.ADOQYgzb.Active:=true;
end;

procedure Tfrm_gzb.Button2Click(Sender: TObject);
begin
with data1.ADOQYgzb do
begin
   close;
   sql.Clear;
   sql.Add('delete 工资表 where gzyf=:a');
   parameters.ParamByName('a').Value:=combobox1.Text;
   execsql;
end;
self.OnShow(sender);
end;

procedure Tfrm_gzb.FormShow(Sender: TObject);
begin
combobox1.Clear;
with data1.ADOQYkhgl do
   begin
      close;
      sql.Clear;
      sql.Add('select distinct 考核月份 from 考核表');
      open;
   end;
while not data1.ADOQYkhgl.Eof do
   begin
      combobox1.Items.Add(data1.ADOQYkhgl.FieldByName('考核月份').Value);
      data1.ADOQYkhgl.Next;
   end;
with data1.ADOQYgzb do
begin
   close;
   sql.Clear;
   sql.Add('select * from 工资表');
   open;
end;
data1.ADOQYgzb.Active:=true;
end;

procedure Tfrm_gzb.Button4Click(Sender: TObject);
begin
close;
end;

procedure Tfrm_gzb.jiesuan;
begin
with data1.ADOQYbmxx do
begin
   close;
   sql.Clear;
   sql.Add('select * from 工资表 where gzyf=:aaa');
   parameters.ParamByName('aaa').Value:=trim(combobox1.Text);
   open;
end;
if data1.ADOQYbmxx.FieldByName('yfgz').Value<>null then
application.MessageBox('该月工资已结算,请不要重复结算','提示',64)
else
begin
with data1.ADOQYgzb do
   begin
      close;
      sql.Clear;
      sql.Add('select * from 工资表');
      open;
   end;
while not data1.ADOQYgzb.Eof do
   begin
      yfgz:=data1.ADOQYgzb.FieldByName('jbgz').Value + data1.ADOQYgzb.FieldByName('jbf').Value + data1.ADOQYgzb.FieldByName('qqj').Value + data1.ADOQYgzb.FieldByName('zwjt').Value + data1.ADOQYgzb.FieldByName('qtje').Value;
      ykgz:=data1.ADOQYgzb.FieldByName('kgf').Value + data1.ADOQYgzb.FieldByName('ylbx').Value + data1.ADOQYgzb.FieldByName('ylx').Value + data1.ADOQYgzb.FieldByName('sybx').Value + data1.ADOQYgzb.FieldByName('qtke').Value + data1.ADOQYgzb.FieldByName('ks').Value;
      sfgz:=yfgz - ykgz;
   with data1.ADOQYgzb do
      begin
         edit;
         fieldbyname('yfgz').Value:=yfgz;
         fieldbyname('ykgz').Value:=ykgz;
         fieldbyname('sfgz').Value:=sfgz;
         next;
      end;
   end;
   application.MessageBox('结算完毕','提示',64);
end
end;

procedure Tfrm_gzb.Button1Click(Sender: TObject);
begin
if (edit1.Text='0') and (edit2.Text='0') then
   if MessageBox(self.Handle,'确定没有其它金额或扣额吗?','月工资结算',mb_yesno+mb_iconquestion)=idyes then
      jiesuan
   else
      checkbox1.Checked:=true
else
   jiesuan;
end;

procedure Tfrm_gzb.BitBtn1Click(Sender: TObject);
begin
if (edit1.Text<>'0') or (edit2.Text<>'0') then
if edit3.Text<>'' then
begin
with data1.ADOQYgzb do
   begin
      edit;
      fieldbyname('qtje').Value:=trim(edit2.Text);
      fieldbyname('qtke').Value:=trim(edit1.Text);
      fieldbyname('bz').Value:=trim(edit3.Text);
      post;
   end;
   checkbox1.Checked:=false;
   edit1.Text:='0';
   edit2.Text:='0';
   edit3.Clear;
end
else
   application.MessageBox('请对其它金额或扣额作出说明!','提示',64);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -