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

📄 ygzjs.pas

📁 实现人力资源的管理
💻 PAS
字号:
unit ygzjs;

interface

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

type
  Tygzjsfrm = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Label1: TLabel;
    ComboBox1: TComboBox;
    CheckBox1: TCheckBox;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    SpeedButton5: TSpeedButton;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    procedure FormShow(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure jiesuan;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    yfgz,ykgz,sfgz:integer;
  end;

var
  ygzjsfrm: Tygzjsfrm;

implementation

uses dbdata;

{$R *.dfm}

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

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

procedure Tygzjsfrm.jiesuan;
begin
with data.ADOQYbmxx do
begin
   close;
   sql.Clear;
   sql.Add('select * from 工资表 where 工资月份=:aaa');
   parameters.ParamByName('aaa').Value:=trim(combobox1.Text);
   open;
end;
if data.ADOQYbmxx.FieldByName('应发工资').Value<>null then
application.MessageBox('该月工资已结算,请不要重复结算','提示',64)
else
begin
with data.ADOQYygzjs do
   begin
      close;
      sql.Clear;
      sql.Add('select * from 工资表');
      open;
   end;
while not data.ADOQYygzjs.Eof do
   begin
      yfgz:=data.ADOQYygzjs.FieldByName('基本工资').Value +data.ADOQYygzjs.FieldByName('加班费').Value +data.ADOQYygzjs.FieldByName('全勤奖').Value +data.ADOQYygzjs.FieldByName('职务津贴').Value +data.ADOQYygzjs.FieldByName('其它金额').Value;
      ykgz:=data.ADOQYygzjs.FieldByName('旷工费').Value +data.ADOQYygzjs.FieldByName('养老保险').Value +data.ADOQYygzjs.FieldByName('医疗保险').Value +data.ADOQYygzjs.FieldByName('失业保险').Value +data.ADOQYygzjs.FieldByName('其它扣额').Value +data.ADOQYygzjs.FieldByName('扣税').Value;
      sfgz:=yfgz - ykgz;
   with data.ADOQYygzjs do
      begin
         edit;
         fieldbyname('应发工资').Value:=yfgz;
         fieldbyname('应扣工资').Value:=ykgz;
         fieldbyname('实发工资').Value:=sfgz;
         next;
      end;
   end;
   application.MessageBox('结算完毕','提示',64);
end
end;

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

procedure Tygzjsfrm.SpeedButton2Click(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 Tygzjsfrm.SpeedButton3Click(Sender: TObject);
begin
with data.ADOQYygzjs do
begin
   close;
   sql.Clear;
   sql.Add('delete 工资表 where 工资月份=:a');
   parameters.ParamByName('a').Value:=combobox1.Text;
   execsql;
end;
self.OnShow(sender);
end;

procedure Tygzjsfrm.SpeedButton4Click(Sender: TObject);
begin
close;
end;

procedure Tygzjsfrm.SpeedButton5Click(Sender: TObject);
begin
if (edit1.Text<>'0') or (edit2.Text<>'0') then
if edit3.Text<>'' then
begin
with data.ADOQYygzjs do
   begin
      edit;
      fieldbyname('其它金额').Value:=trim(edit2.Text);
      fieldbyname('其它扣额').Value:=trim(edit1.Text);
      fieldbyname('备注').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 + -