📄 u_gzb.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 + -