📄 wageinput.pas.~1~
字号:
unit wageinput;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB,wageinfo_unit,basedata_unit,workage_unit,
protitle_unit,rewardpun_unit,checkinfo_unit;
type
Twageinputfrm = class(TForm)
Label1: TLabel;
Bevel1: TBevel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
worker_ided: TEdit;
give_dateed: TEdit;
allowance1ed: TEdit;
rewarded: TEdit;
overtime_moneyed: TEdit;
deduct_checked: TEdit;
medical_moneyed: TEdit;
unemploy_moneyed: TEdit;
worker_nameed: TEdit;
base_wageed: TEdit;
allowance2ed: TEdit;
aged_moneyed: TEdit;
compo_moneyed: TEdit;
housing_moneyed: TEdit;
income_taxed: TEdit;
real_wageed: TEdit;
save_btn: TButton;
look_btn: TButton;
modify_btn: TButton;
delete_btn: TButton;
cancel_btn: TButton;
Label18: TLabel;
procedure cancel_btnClick(Sender: TObject);
procedure save_btnClick(Sender: TObject);
procedure give_dateedExit(Sender: TObject);
procedure base_wageedExit(Sender: TObject);
procedure allowance1edExit(Sender: TObject);
procedure allowance2edExit(Sender: TObject);
procedure rewardedExit(Sender: TObject);
procedure aged_moneyedExit(Sender: TObject);
procedure overtime_moneyedExit(Sender: TObject);
procedure compo_moneyedExit(Sender: TObject);
procedure deduct_checkedExit(Sender: TObject);
procedure housing_moneyedExit(Sender: TObject);
procedure medical_moneyedExit(Sender: TObject);
procedure income_taxedExit(Sender: TObject);
procedure unemploy_moneyedExit(Sender: TObject);
procedure real_wageedExit(Sender: TObject);
procedure look_btnClick(Sender: TObject);
procedure modify_btnClick(Sender: TObject);
procedure delete_btnClick(Sender: TObject);
procedure real_wageedClick(Sender: TObject);
private
wageinfo:Twageinfo;
basedata:Tbasedata;
workage:Tworkage;
protitle:Tprotitle;
rewardpun:Trewardpun;
checkinfo:Tcheckinfo;
{ Private declarations }
public
{ Public declarations }
end;
var
wageinputfrm: Twageinputfrm;
implementation
{$R *.dfm}
procedure Twageinputfrm.cancel_btnClick(Sender: TObject);
begin
worker_ided.Text:='';worker_nameed.Text :='';
give_dateed.Text :='';base_wageed.Text:='';
allowance1ed.Text :=''; allowance2ed.Text :='';
rewarded.Text :='';aged_moneyed.Text :='';
overtime_moneyed.Text :='';compo_moneyed.Text:='';
deduct_checked.Text :='';housing_moneyed.Text :='';
medical_moneyed.Text :='';income_taxed.Text :='';
unemploy_moneyed.Text :='';real_wageed.Text :='';
wageinputfrm.Close;
end;
procedure Twageinputfrm.save_btnClick(Sender: TObject);
var
insertsql:string;
begin
//创建类的实例
wageinfo:=Twageinfo.create ;
//判断必须输入的项是否为空
if (worker_ided.Text ='') or (give_dateed.Text='') then
begin
showmessage('员工编号和月份编号不能为空!');
exit;
end;
//判断输入的记录是否已经存在
if wageinfo.WageInfoRec(worker_ided.Text,give_dateed.Text) then
begin
showmessage('该记录已经存在,请重新输入!');
exit;
end;
//赋值插入操作SQL语句
insertsql:='insert into wage_info(worker_id,worker_name,give_date,base_wage,'
+'allowance1,allowance2,reward,aged_money,overtime_money,compo_money,'
+'deduct_check,housing_money,medical_money,income_tax,unemploy_money,'
+'real_wage)values('''+worker_ided.Text+''','''+worker_nameed.Text+''','
+''''+give_dateed.Text+''','''+base_wageed.Text+''','''+allowance1ed.Text+''','
+''''+allowance2ed.Text+''','''+rewarded.Text+''','''+aged_moneyed.Text+''','
+''''+overtime_moneyed.Text+''','''+compo_moneyed.Text+''','''+deduct_checked.Text+''','
+''''+housing_moneyed.Text+''','''+medical_moneyed.Text+''','''+income_taxed.Text+''','
+''''+unemploy_moneyed.Text+''','''+real_wageed.Text+''')';
//执行插入操作过程
wageinfo.RecInsert(insertsql);
showmessage('保存完毕!');
//释放实例
wageinfo.Free;
end;
procedure Twageinputfrm.give_dateedExit(Sender: TObject);
begin
if length(give_dateed.Text)<>6 then
begin
showmessage('月份编号位数输入有误!');
give_dateed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.base_wageedExit(Sender: TObject);
begin
try
strtofloat(base_wageed.Text);
except
showmessage('基本工资值输入有误!');
base_wageed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.allowance1edExit(Sender: TObject);
begin
try
strtofloat(allowance1ed.Text);
except
showmessage('基本工资值输入有误!');
allowance1ed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.allowance2edExit(Sender: TObject);
begin
try
strtofloat(allowance2ed.Text);
except
showmessage('基本工资值输入有误!');
allowance2ed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.rewardedExit(Sender: TObject);
begin
try
strtofloat(rewarded.Text);
except
showmessage('基本工资值输入有误!');
rewarded.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.aged_moneyedExit(Sender: TObject);
begin
try
strtofloat(aged_moneyed.Text);
except
showmessage('基本工资值输入有误!');
aged_moneyed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.overtime_moneyedExit(Sender: TObject);
begin
try
strtofloat(overtime_moneyed.Text);
except
showmessage('基本工资值输入有误!');
overtime_moneyed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.compo_moneyedExit(Sender: TObject);
begin
try
strtofloat(compo_moneyed.Text);
except
showmessage('基本工资值输入有误!');
compo_moneyed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.deduct_checkedExit(Sender: TObject);
begin
try
strtofloat(deduct_checked.Text);
except
showmessage('基本工资值输入有误!');
deduct_checked.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.housing_moneyedExit(Sender: TObject);
begin
try
strtofloat(housing_moneyed.Text);
except
showmessage('基本工资值输入有误!');
housing_moneyed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.medical_moneyedExit(Sender: TObject);
begin
try
strtofloat(medical_moneyed.Text);
except
showmessage('基本工资值输入有误!');
medical_moneyed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.income_taxedExit(Sender: TObject);
begin
try
strtofloat(income_taxed.Text);
except
showmessage('基本工资值输入有误!');
income_taxed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.unemploy_moneyedExit(Sender: TObject);
begin
try
strtofloat(unemploy_moneyed.Text);
except
showmessage('基本工资值输入有误!');
unemploy_moneyed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.real_wageedExit(Sender: TObject);
begin
try
strtofloat(real_wageed.Text);
except
showmessage('基本工资值输入有误!');
real_wageed.SetFocus ;
exit;
end;
end;
procedure Twageinputfrm.look_btnClick(Sender: TObject);
begin
//创建类的实例
wageinfo:=Twageinfo.create ;
//必须输入的查询条件
if (worker_ided.Text='') or (give_dateed.Text='') then
begin
showmessage('请根据员工编号和月份编号来查找!');
exit;
end;
//查询记录是否存在
if wageinfo.WageInfoRec(worker_ided.Text,give_dateed.Text)=false then
begin
showmessage('对不起,该记录不存在!');
exit;
end;
//如果存在的话取出对应的字段值在文本框中显示出来
worker_nameed.Text :=wageinfo.GetWorkerName(worker_ided.Text,give_dateed.Text) ;
base_wageed.Text :=wageinfo.GetBaseWage(worker_ided.Text,give_dateed.Text) ;
allowance1ed.Text :=wageinfo.GetAllowance1(worker_ided.Text,give_dateed.Text) ;
allowance2ed.Text :=wageinfo.GetAllowance2(worker_ided.Text,give_dateed.Text) ;
rewarded.Text :=wageinfo.GetReward(worker_ided.Text,give_dateed.Text) ;
aged_moneyed.Text :=wageinfo.GetAgedMoney(worker_ided.Text,give_dateed.Text) ;
overtime_moneyed.Text :=wageinfo.GetOverTimeMoney(worker_ided.Text,give_dateed.Text) ;
compo_moneyed.Text :=wageinfo.GetCompoMoney(worker_ided.Text,give_dateed.Text) ;
deduct_checked.Text :=wageinfo.GetDeductCheck(worker_ided.Text,give_dateed.Text);
housing_moneyed.Text :=wageinfo.GetHouseMoney(worker_ided.Text,give_dateed.Text);
medical_moneyed.Text :=wageinfo.GetMedicalMoney(worker_ided.Text,give_dateed.Text) ;
income_taxed.Text :=wageinfo.GetIncomeTax(worker_ided.Text,give_dateed.Text);
unemploy_moneyed.Text :=wageinfo.GetUnemployMoney (worker_ided.Text,give_dateed.Text);
real_wageed.Text :=wageinfo.GetRealWage(worker_ided.Text,give_dateed.Text) ;
end;
procedure Twageinputfrm.modify_btnClick(Sender: TObject);
var
modsql:string;
begin
//创建类的实例
wageinfo:=Twageinfo.create ;
if application.MessageBox('要修改吗?','提示:',mb_yesno+mb_iconquestion)=idyes then
//判断修改条件是否为空
begin
if (worker_ided.Text='') or (give_dateed.Text='') then
begin
showmessage('员工编号和月份编号不能为空!');
exit;
end;
//判断要修改的记录是否存在
if wageinfo.WageInfoRec(worker_ided.Text,give_dateed.Text)=false then
begin
showmessage('对不起,该记录不存在!');
exit;
end;
//赋值修改语句
modsql:='update wage_info set worker_name='''+worker_nameed.Text+''','
+'base_wage='''+base_wageed.Text+''',allowance1='''+allowance1ed.Text+''','
+'allowance2='''+allowance2ed.Text+''',reward='''+rewarded.Text+''','
+'aged_money='''+aged_moneyed.Text+''',overtime_money='''+overtime_moneyed.Text+''','
+'compo_money='''+compo_moneyed.Text+''',deduct_check='''+deduct_checked.Text+''','
+'housing_money='''+housing_moneyed.Text+''',medical_money='''+medical_moneyed.Text+''','
+'income_tax='''+income_taxed.Text+''',unemploy_money='''+unemploy_moneyed.Text+''','
+'real_wage='''+real_wageed.Text+''' where worker_id='''+worker_ided.Text+''' '
+' and give_date='''+give_dateed.Text+'''';
//执行修改操作
wageinfo.RecUpdate(modsql);
showmessage('修改成功!');
end;
//释放实例
wageinfo.Free;
end;
procedure Twageinputfrm.delete_btnClick(Sender: TObject);
begin
if application.MessageBox('要删除吗?','警告:',mb_yesno+mb_iconquestion)=idyes then
begin
//创建类的实例
wageinfo:=Twageinfo.create ;
//判断是否输入删除记录条件
if (worker_ided.Text='') or (give_dateed.Text='') then
begin
showmessage('请输入要删除记录的员工编号和月份编号!');
exit;
end;
//查询删除的记录是否存在
if wageinfo.WageInfoRec(worker_ided.Text,give_dateed.Text)=false then
begin
showmessage('对不起,该记录不存在!');
exit;
end;
//执行删除操作
wageinfo.RecDel(worker_ided.Text,give_dateed.Text);
showmessage('删除成功!');
//清除文本框的内容
worker_ided.Text:='';worker_nameed.Text :='';
give_dateed.Text :='';base_wageed.Text:='';
allowance1ed.Text :=''; allowance2ed.Text :='';
rewarded.Text :='';aged_moneyed.Text :='';
overtime_moneyed.Text :='';compo_moneyed.Text:='';
deduct_checked.Text :='';housing_moneyed.Text :='';
medical_moneyed.Text :='';income_taxed.Text :='';
unemploy_moneyed.Text :='';real_wageed.Text :='';
end;
//释放实例
wageinfo.Free;
end;
procedure Twageinputfrm.real_wageedClick(Sender: TObject);
var
gongling,zhicheng,jiangjin,shuiqian:real;
a,b,c,d,e,f,g:integer;
month1,month2:string;
begin
//创建类的实例
wageinfo:=Twageinfo.create ;
basedata:=Tbasedata.create ;
workage:=Tworkage.create ;
protitle:=Tprotitle.create ;
rewardpun:=Trewardpun.create ;
checkinfo:=Tcheckinfo.create ;
//判断是否输入员工编号和月份编号
if (worker_ided.Text='') or (give_dateed.Text='') then
begin
showmessage('请输入员工编号和月份编号!');
exit;
end;
//获取员工名称
worker_nameed.Text :=basedata.GetWorkerName(worker_ided.Text) ;
//获取员工工龄工资
gongling:=workage.GetSumWorTime(worker_ided.Text)*50;
//获取职称工资
if protitle.GetAssessTitle(worker_ided.Text)='高级工程师' then zhicheng:=2000
else if protitle.GetAssessTitle(worker_ided.Text)='工程师' then zhicheng:=1500
else zhicheng:=1000;
//计算基本工资
base_wageed.Text:=floattostr(gongling+zhicheng);//基本工资
//获取年份信息
month1:=copy(give_dateed.Text,1,4);
//获取月份信息
month2:=copy(give_dateed.Text,5,2);
//获取奖金信息,如果奖励次数大于惩罚次数获取奖金最高
if (rewardpun.GetRewardCount(month1,month2)-rewardpun.GetPunCount(month1,month2) )>0 then
jiangjin:=100
else if (rewardpun.GetRewardCount(month1,month2)-rewardpun.GetPunCount(month1,month2))=0 then
jiangjin:=50
else jiangjin:=0;
rewarded.Text :=floattostr(jiangjin);
//获取考核工资信息
a:=strtoint(checkinfo.GetAbsentDays(worker_ided.Text,give_dateed.Text) )*20; //旷工扣除
b:=strtoint(checkinfo.GetLeaveTimes(worker_ided.Text,give_dateed.Text) )*5; //请假扣除
c:=strtoint(checkinfo.GetLateTimes(worker_ided.Text,give_dateed.Text) )*5;//迟到扣除
d:=strtoint(checkinfo.GetLeaEarTimes(worker_ided.Text,give_dateed.Text) )*5;//早退扣除
//计算总的扣除考核
deduct_checked.Text:=inttostr(a+b+c+d);
e:=strtoint(checkinfo.GetHOliOverTimes(worker_ided.Text,give_dateed.Text) )*40;//节假日加班
f:=strtoint(checkinfo.GetOtherOverTimes(worker_ided.Text,give_dateed.Text) )*20;//其它加班
//计算加班工资
overtime_moneyed.Text:=inttostr(e+f);
//获取出差补助
g:=strtoint(checkinfo.GetBusinessDays(worker_ided.Text,give_dateed.Text) )*30;//出差
allowance2ed.Text :=inttostr(g);
//赋值公共奖金
allowance1ed.Text:='30';
medical_moneyed.Text:='30';unemploy_moneyed.Text:='30';
aged_moneyed.Text:='30';compo_moneyed.Text:='30';housing_moneyed.Text:='30';
//计算税前工资
shuiqian:=gongling+jiangjin+zhicheng+e+f+30+g-a-b-c-d-150;
//计算所得税
income_taxed.Text:=floattostr((shuiqian-800)*0.05);
//计算税后工资
real_wageed.Text:=floattostr(shuiqian-(shuiqian-800)*0.05);
//释放实例
wageinfo.Free ;
basedata.Free;
workage.Free;
protitle.Free ;
rewardpun.Free ;
checkinfo.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -