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