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

📄 main.~pas

📁 这是工资管理系统,能够应用于各种类型的企业。
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
                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 + -