📄 unit_salarymanager.pas
字号:
unit Unit_SalaryManager;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ExtCtrls, Buttons, StdCtrls, ComCtrls;
type
Tfrm_salarymanager = class(TForm)
sg_salary: TStringGrid;
StatusBar1: TStatusBar;
Panel1: TPanel;
sbtn_front: TSpeedButton;
sbtn_back: TSpeedButton;
sbtn_close: TSpeedButton;
sbtn_save: TSpeedButton;
Label1: TLabel;
sbtn_salarymanager: TSpeedButton;
sbtn_print: TSpeedButton;
sbtn_edit: TSpeedButton;
cbb_Year: TComboBox;
Label2: TLabel;
cbb_Month: TComboBox;
procedure sbtn_closeClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbtn_backClick(Sender: TObject);
procedure sbtn_frontClick(Sender: TObject);
procedure sg_salarySelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure sbtn_salarymanagerClick(Sender: TObject);
procedure sbtn_saveClick(Sender: TObject);
procedure sbtn_editClick(Sender: TObject);
procedure sbtn_printClick(Sender: TObject);
private
{ Private declarations }
SalaryAddItems: array of string;
SalaryReducedItems: array of string;
search_year_month:string;
addcount,reducedcount: integer;
addamount,reducedamount: double;
procedure SearchExistedEmployeeSalary(temp:string);
public
{ Public declarations }
procedure SalaryManager_ref;
end;
var
frm_salarymanager: Tfrm_salarymanager;
implementation
uses unit_DataModule,unit_TotalPublic,PublicFunOrPro;
{$R *.dfm}
{****************************************************}
procedure Tfrm_salarymanager.SalaryManager_ref ;
var
i:integer;
begin
with dmod.qrydata do
begin
//查找增加工资的项目
Close;
SQL.Text :='select count(*) as count from salaryitem where add_or_reduced="0"';
Open;
SetLength(SalaryAddItems,FieldByName('count').AsInteger);
Close;
SQL.Text :='select item_name,default_price from salaryitem where add_or_reduced="0"';
Open;
i:=0;
while not eof do
begin
SalaryAddItems[i]:=FieldByName('item_name').AsString +'-'+FloatToStr(FieldByName('default_price').AsFloat);
inc(i);
next;
end;
addcount:=i;
//查找扣除工资的项目
Close;
SQL.Text :='select count(*) as count from salaryitem where add_or_reduced="1"';
Open;
SetLength(SalaryReducedItems,FieldByName('count').AsInteger);
Close;
SQL.Text :='select item_name,default_price from salaryitem where add_or_reduced="1"';
Open;
i:=0;
while not eof do
begin
SalaryReducedItems[i]:=FieldByName('item_name').AsString +'-'+FloatToStr(FieldByName('default_price').AsFloat);
inc(i);
next;
end;
reducedcount:=i;
end;
with sg_salary do
begin
cells[0,0]:='员工编号';
cells[1,0]:='员工编号';
cells[2,0]:='基本工资';
cells[3,0]:='服务提成';
for i:=0 to addcount-1 do
begin
cells[4+i,0]:=StringGetChar(SalaryAddItems[i],'-'); //使得代表工资添加项目的数组变化
end;
for i:=0 to reducedcount-1 do
begin
cells[4+addcount+i,0]:=StringGetChar(SalaryReducedItems[i],'-'); //使得代表工资减少项目的数组变化
end;
cells[4+addcount+reducedcount,0]:='应发工资';
end;
sg_salary.ColCount :=5+addcount+reducedcount;
//sbtn_edit.Enabled := GetPower(SysUserId,'工资管理','修改权');
sbtn_print.Enabled := GetPower(SysUserId,'工资管理','打印权');
end;
procedure Tfrm_salarymanager.SearchExistedEmployeeSalary(temp:string);
var
arow,i,dcols:integer;
temp_empno:string;
begin
with dmod.qrydata do
begin
Close;
SQL.Text :='select b.emp_no,emp_name,b_salary,s_extra,t_salary from salarybasic b,employee e '+
' where b.emp_no=e.emp_no and year_month='+#39+temp+#39;
Open;
arow:=1;
while not eof do
begin
temp_empno:=FieldByName('emp_no').AsString;
sg_salary.Cells[0,arow]:=temp_empno;
sg_salary.Cells[1,arow]:=FieldByName('emp_name').AsString ;
sg_salary.Cells[2,arow]:=FLoatToStr(FieldByName('b_salary').AsFloat);
sg_salary.Cells[3,arow]:=FloatToStr(FieldbyName('s_extra').AsFloat);
with dmod.qrydata2 do
begin
Close;
SQL.Text :='select distinct item_name from salarydynamic where year_month='+#39+temp+#39+' order by item_name';
Open;
dcols:=0;
while not eof do
begin
sg_salary.Cells[4+dcols,0]:= FieldByName('item_name').AsString ;
inc(dcols);
next;
end;
sg_salary.Cells[4+dcols,0]:='应发工资';
end;
for i:=0 to dcols-1 do
begin
with dmod.qrydata2 do
begin
Close;
SQL.Text :='select item_value from salarydynamic where emp_no='+#39+temp_empno+#39+
' and item_name='+#39+sg_salary.Cells[4+i,0]+#39+
' and year_month='+#39+temp+#39;
Open;
sg_salary.Cells[4+i,arow]:=FloatToStr(FieldByName('item_value').asFloat);
end;
end;
sg_salary.Cells[4+dcols,arow]:=FloatToStr(FieldByName('t_salary').AsFloat);
inc(arow);
next;
end;
end;
if arow<>1 then
begin
sg_salary.RowCount :=arow+1;
sbtn_edit.Enabled:=true;
sbtn_save.Enabled:=true;
sbtn_edit.Enabled := GetPower(SysUserId,'工资管理','修改权');
sbtn_save.Enabled := sbtn_edit.Enabled ;
end;
end;
{*****************************************************************}
procedure Tfrm_salarymanager.sbtn_closeClick(Sender: TObject);
begin
close;
end;
procedure Tfrm_salarymanager.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
frm_salarymanager:=nil;
end;
procedure Tfrm_salarymanager.sbtn_backClick(Sender: TObject);
begin
if sg_Salary.Row > sg_Salary.RowCount-2 then
begin
sbtn_back.Enabled := false;
exit;
end;
sbtn_front.Enabled := true;
sg_Salary.Row := sg_Salary.Row+1;
end;
procedure Tfrm_salarymanager.sbtn_frontClick(Sender: TObject);
begin
if sg_Salary.Row=1 then
begin
sbtn_front.Enabled := false;
exit;
end;
sbtn_back.Enabled := true;
sg_Salary.Row := sg_Salary.Row-1;
end;
procedure Tfrm_salarymanager.sg_salarySelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if ARow = sg_Salary.RowCount - 1 then
CanSelect:= false
else
begin
sbtn_back.Enabled := true;
sbtn_front.Enabled := true;
if ARow = sg_Salary.RowCount - 2 then sbtn_back.Enabled := false;
if ARow = 1 then sbtn_front.Enabled := false;
CanSelect := true;
end;
end;
procedure Tfrm_salarymanager.sbtn_salarymanagerClick(Sender: TObject);
var
temp,temp_year,temp_mindate,temp_maxdate,temp_sql:string;
temp_empno,temp_itemid,temp_typeid:string;
i,arow:integer;
tc_items,tc_meals,totalsalary:double;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -