📄 main.~pas
字号:
end;
with Table1.FieldDefs.AddFieldDef do //保险费
begin
Name:='insurance';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //房租
begin
Name:='rent';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //所得税
begin
Name:='tax';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //补扣
begin
Name:='detain';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //工资总计
begin
Name:='sum';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //实发工资
begin
Name:='real_salary';
DataType:=ftfloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //备注
begin
Name:='note';
DataType:=ftString;
size:=40;
end;
with Table1.FieldDefs.AddFieldDef do //其他工资
begin
Name:='rest';
DataType:=ftfloat;
Required:=true;
end;
Table1.IndexDefs.Clear;
with Table1.IndexDefs.AddIndexDef do
begin
Name := '';
Fields := 'number';
Options := [ixPrimary];
end;
Table1.CreateTable;
end;
//职工资料与工资数据表
Table1.TableName:='salary';
if not Table1.Exists then
begin
Table1.FieldDefs.Clear;
with Table1.FieldDefs.AddFieldDef do //工资编号
begin
Name:='number';
DataType:=ftstring;
size:=6;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //职工名称
begin
Name:='name';
DataType:=ftstring;
size:=8;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //性别
begin
Name:='sex';
DataType:=ftString;
size:=2;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //身份证号
begin
Name:='id';
DataType:=ftstring;
size:=18;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //出生年月
begin
Name:='birthdate';
DataType:=ftDate;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //参加工作时间
begin
Name:='workdate';
DataType:=ftDate;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //最后操作时间
begin
Name:='operatordate';
DataType:=ftDate;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //职称
begin
Name:='job';
DataType:=ftString;
size:=8;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //单位
begin
Name:='office';
DataType:=ftString;
size:=30;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //操作员
begin
Name:='operator';
DataType:=ftString;
size:=8;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //基本工资
begin
Name:='base_salary';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //浮动工资
begin
Name:='float_salary';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //岗位津贴
begin
Name:='allowance_salary';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //工龄工资
begin
Name:='age_salary';
DataType:=ftfloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //奖金
begin
Name:='award';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //补贴
begin
Name:='addition_award';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //其他
begin
Name:='rest';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //保险费
begin
Name:='insurance';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //房租
begin
Name:='rent';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //补扣
begin
Name:='detain';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //工资总额
begin
Name:='sum';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //实发总额
begin
Name:='real_salary';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //扣税
begin
Name:='tax';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //备注
begin
Name:='note';
DataType:=ftString;
size:=40;
end;
with Table1.FieldDefs.AddFieldDef do //冻结
begin
Name:='Enabled';
DataType:=ftboolean;
Required:=true;
end;
Table1.IndexDefs.Clear;
with Table1.IndexDefs.AddIndexDef do
begin
Name := '';
Fields := 'number';
Options := [ixPrimary];
end;
Table1.CreateTable;
end;
//所得税率表
Table1.TableName:='tax';
if not Table1.Exists then
begin
Table1.FieldDefs.Clear;
with Table1.FieldDefs.AddFieldDef do //税率分界点
begin
Name:='division';
DataType:=ftInteger;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //税率
begin
name:='rate';
DataType:=ftFloat;
Required:=true;
end;
with Table1.FieldDefs.AddFieldDef do //说明
begin
name:='note';
DataType:=ftString;
size:=40;
Required:=true;
end;
Table1.IndexDefs.Clear;
with Table1.IndexDefs.AddIndexDef do
begin
Name := '';
Fields := 'division';
Options := [ixPrimary];
end;
Table1.CreateTable;
end;
end;
procedure TMainForm.N9Click(Sender: TObject);
var
SourceTable:TTable;
DestTable:TTable;
LSTable:TTable;
begin
sourceTable:=TTable.Create(self);
SourceTable.DatabaseName:='gzgl';
SourceTable.TableName:='Salary';
SourceTable.Active:=true;
DestTable:=TTable.Create(self);
DestTable.DatabaseName:='gzgl';
DestTable.TableName:='month_Salary';
DestTable.EmptyTable;
DestTable.Active:=true;
LSTable:=TTable.Create(self);
LSTable.DatabaseName:='gzgl';
LSTable.TableName:='ls'+IntToStr(year);
LSTable.Active:=true;
while not SourceTable.Eof do
begin
if not SourceTable.FieldByName('enabled').asboolean then
begin
DestTable.Append;
DestTable.Edit;
DestTable.FieldByName('number').AsString:=SourceTable.FieldByName('number').AsString;
DestTable.FieldByName('name').AsString:=SourceTable.FieldByName('name').AsString;
DestTable.FieldByName('salary_date').AsString:=IntToStr(month);
DestTable.FieldByName('operator').AsString:=USERNAME;
DestTable.FieldByName('base_salary').AsFloat:=SourceTable.FieldByName('base_salary').AsFloat;
DestTable.FieldByName('float_salary').AsFloat:=SourceTable.FieldByName('float_salary').AsFloat;
DestTable.FieldByName('allowance_salary').AsFloat:=SourceTable.FieldByName('allowance_salary').AsFloat;
DestTable.FieldByName('award').AsFloat:=SourceTable.FieldByName('award').AsFloat;
DestTable.FieldByName('addition_award').AsFloat:=SourceTable.FieldByName('addition_award').AsFloat;
DestTable.FieldByName('insurance').AsFloat:=SourceTable.FieldByName('insurance').AsFloat;
DestTable.FieldByName('rent').AsFloat:=SourceTable.FieldByName('rent').AsFloat;
DestTable.FieldByName('age_salary').AsFloat:=SourceTable.FieldByName('age_salary').AsFloat;
DestTable.FieldByName('detain').AsFloat:=SourceTable.FieldByName('detain').AsFloat;
DestTable.FieldByName('rest').AsFloat:=SourceTable.FieldByName('rest').AsFloat;
DestTable.FieldByName('sum').AsFloat:=SourceTable.FieldByName('sum').AsFloat;
DestTable.FieldByName('REAL_SALARY').AsFloat:=SourceTable.FieldByName('REAL_SALARY').AsFloat;
DestTable.FieldByName('tax').AsFloat:=SourceTable.FieldByName('tax').AsFloat;
DestTable.FieldByName('note').AsString:=IntToStr(year)+'年'+IntToStr(month)+'月份工资';
DestTable.post;
LSTable.Append;
LSTable.Edit;
LSTable.FieldByName('number').AsString:=SourceTable.FieldByName('number').AsString;
LSTable.FieldByName('name').AsString:=SourceTable.FieldByName('name').AsString;
LSTable.FieldByName('operator').AsString:=USERNAME;
LSTable.FieldByName('base_salary').AsFloat:=SourceTable.FieldByName('base_salary').AsFloat;
LSTable.FieldByName('float_salary').AsFloat:=SourceTable.FieldByName('float_salary').AsFloat;
LSTable.FieldByName('allowance_salary').AsFloat:=SourceTable.FieldByName('allowance_salary').AsFloat;
LSTable.FieldByName('award').AsFloat:=SourceTable.FieldByName('award').AsFloat;
LSTable.FieldByName('addition_award').AsFloat:=SourceTable.FieldByName('addition_award').AsFloat;
LSTable.FieldByName('insurance').AsFloat:=SourceTable.FieldByName('insurance').AsFloat;
LSTable.FieldByName('rent').AsFloat:=SourceTable.FieldByName('rent').AsFloat;
LSTable.FieldByName('age_salary').AsFloat:=SourceTable.FieldByName('age_salary').AsFloat;
LSTable.FieldByName('detain').AsFloat:=SourceTable.FieldByName('detain').AsFloat;
LSTable.FieldByName('rest').AsFloat:=SourceTable.FieldByName('rest').AsFloat;
LSTable.FieldByName('sum').AsFloat:=SourceTable.FieldByName('sum').AsFloat;
lsTable.FieldByName('REAL_SALARY').AsFloat:=SourceTable.FieldByName('REAL_SALARY').AsFloat;
LSTable.FieldByName('note').AsString:=IntToStr(year)+'年'+IntToStr(month)+'月份工资';
lsTable.FieldByName('tax').AsFloat:=SourceTable.FieldByName('tax').AsFloat;
lsTable.FieldByName('OPERATOR_DATE').AsdATEtIME:=dATE();
LSTable.post;
end;
SourceTable.Next;
end;
Application.MessageBox('当月工资表生成完成!','提示信息',mb_OK);
end;
procedure TMainForm.N14Click(Sender: TObject);
begin
SetTaxRateTableForm.ShowModal;
end;
procedure TMainForm.N13Click(Sender: TObject);
var
ZLTable:TTable;
TaxTable:TTable;
i:Integer;
sum,tax:real;
rate:array[1..100] of real;
division:array[1..100] of integer;
begin
//计算所得税
ZLTable:=TTable.Create(self);
ZLTable.DatabaseName:='gzgl';
ZLTable.TableName:='salary';
ZLTable.Active:=true;
TaxTable:=TTable.Create(self);
TaxTable.DatabaseName:='gzgl';
TaxTable.TableName:='tax';
TaxTable.Active:=true;
i:=1;
while not TaxTable.Eof do
begin
division[i]:=TaxTable.fieldbyname('division').AsInteger;
rate[i]:=TaxTable.fieldbyname('rate').AsFloat;
TaxTable.Next;
i:=i+1;
end;
division[i]:=-1;
rate[i]:=0;
while not ZLTable.Eof do
begin
tax:=0;
i:=1;
sum:=ZLTable.Fieldbyname('sum').AsFloat;
while (sum>division[i]) and (division[i]<>-1) do
begin
if i=1 then
tax:=0
else
tax:=tax+(division[i]-division[i-1])*rate[i-1];
i:=i+1;
end;
if i=1 then
tax:=0
else
tax:=tax+(sum-division[i-1])*rate[i-1];
ZLTable.edit;
ZlTable.FieldByName('tax').AsFloat:=tax;
ZLTable.post;
zlTable.Next;
end;
end;
procedure TMainForm.N15Click(Sender: TObject);
begin
seekform.ShowModal;
end;
procedure TMainForm.N11Click(Sender: TObject);
begin
SalaryChangeForm.ShowModal;
end;
procedure TMainForm.N16Click(Sender: TObject);
begin
HistoryForm.ShowModal;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -