📄 officepay1.pas
字号:
with queryuse do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select * from std_pay_coefficient');
prepare;
open;
last;
while not bof do begin
if hkhlv >= fieldbyname('货款回笼率').Asfloat then
coefficientold:= fieldbyname('调整系数').Asfloat;
Prior;
end;
end;
end;
end;
procedure TFrm_officepay.getbonus;
begin
award:=0;
punish:=0;
with queryuse do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select std_pay_bonus.* from std_pay_bonus,std_machine where std_machine.机型=:xh and std_machine.吨位是否大于600t=std_pay_bonus.吨位是否大于600t');
parambyname('xh').asstring:=qmpc_var.fieldbyname('机型').Asstring;
prepare;
open;
if findfirst then begin
if qmpc_var.FieldByName('价差').AsFloat >0 then begin
award:=FieldByName('奖励率').asfloat;
punish:=0;
end;
if qmpc_var.FieldByName('价差').AsFloat <0 then begin
punish:=FieldByName('惩罚率').asfloat;
award:=0;
end;
end;
end;
end;
procedure TFrm_officepay.qmpc_varCalcFields(DataSet: TDataSet);
var
awpu,nameuse:real;
begin
with qmpc_var do begin
FieldByName('机台实收价格').AsFloat:=(FieldByName('价款').AsFloat-FieldByName('运输及保险费').AsFloat-FieldByName('附加装置费').AsFloat-FieldByName('特别工程价款').AsFloat-FieldByName('介绍费').AsFloat-FieldByName('其他').AsFloat)/FieldByName('台数').AsFloat;
FieldByName('价差').AsFloat:=FieldByName('机台实收价格').AsFloat-FieldByName('计佣底价').AsFloat;
getcoefficient;
FieldByName('货款调整系数').Asfloat:=coefficientnew;
getbonus;
FieldByName('价差奖励').Asfloat:=abs(FieldByName('价差').AsFloat*award);
FieldByName('价差罚款').Asfloat:=abs(FieldByName('价差').AsFloat*punish);
FieldByName('总佣金率').Asfloat:=FieldByName('经理佣金率').AsFloat+FieldByName('业务员佣金率').AsFloat*FieldByName('业务员人数').AsFloat;
awpu:=FieldByName('价差').AsFloat*award+FieldByName('价差').AsFloat*punish;
FieldByName('经理佣金_前累计').Asfloat:=saleout*(FieldByName('机台实收价格').AsFloat*FieldByName('经理佣金率').AsFloat+awpu*FieldByName('经理佣金率').AsFloat/FieldByName('总佣金率').Asfloat)*coefficientold*(1-FieldByName('业务部佣金比率').Asfloat);
nameuse:=saleout*(FieldByName('机台实收价格').AsFloat*FieldByName('经理佣金率').AsFloat+awpu*FieldByName('经理佣金率').AsFloat/FieldByName('总佣金率').Asfloat)*coefficientnew*(1-FieldByName('业务部佣金比率').Asfloat);
FieldByName('经理佣金_本期').Asfloat:=nameuse-FieldByName('经理佣金_前累计').Asfloat;
FieldByName('业务员佣金_前累计').Asfloat:=saleout*(FieldByName('机台实收价格').AsFloat*FieldByName('业务员佣金率').AsFloat+awpu*FieldByName('业务员佣金率').AsFloat/FieldByName('总佣金率').Asfloat)*coefficientold*(1-FieldByName('浮动率').Asfloat)*(1-FieldByName('业务部佣金比率').Asfloat);
nameuse:=saleout*(FieldByName('机台实收价格').AsFloat*FieldByName('业务员佣金率').AsFloat+awpu*FieldByName('业务员佣金率').AsFloat/FieldByName('总佣金率').Asfloat)*coefficientnew*(1-FieldByName('浮动率').Asfloat)*(1-FieldByName('业务部佣金比率').Asfloat);
FieldByName('业务员佣金_本期').Asfloat:=nameuse-FieldByName('业务员佣金_前累计').Asfloat;
// FieldByName('维修人员佣金_前累计').Asfloat:=(FieldByName('业务员佣金_前累计').AsFloat*FieldByName('维修人员与业务员的佣金比率').AsFloat*(1-FieldByName('客户服务部佣金比率').Asfloat))/(1-FieldByName('业务部佣金比率').Asfloat);
// nameuse:=(FieldByName('业务员佣金_本期').Asfloat*FieldByName('维修人员与业务员的佣金比率').AsFloat*(1-FieldByName('客户服务部佣金比率').Asfloat))/(1-FieldByName('业务部佣金比率').Asfloat);
// FieldByName('维修人员佣金_本期').Asfloat:=nameuse-FieldByName('维修人员佣金_前累计').Asfloat;
FieldByName('维修人员佣金_本期').Asfloat:=(FieldByName('业务员佣金_本期').AsFloat*FieldByName('维修人员与业务员的佣金比率').AsFloat*(1-FieldByName('客户服务部佣金比率').Asfloat))/(1-FieldByName('业务部佣金比率').Asfloat);
// FieldByName('浮动奖金_前累计').Asfloat:=(FieldByName('业务员佣金_前累计').AsFloat+FieldByName('维修人员佣金_前累计').AsFloat)*FieldByName('浮动率').AsFloat/(1-FieldByName('浮动率').Asfloat);
FieldByName('浮动奖金_本期').Asfloat:=(FieldByName('业务员佣金_本期').AsFloat+FieldByName('维修人员佣金_本期').AsFloat)*FieldByName('浮动率').AsFloat;
// FieldByName('业务部提成_前累计').Asfloat:=(FieldByName('经理佣金_前累计').Asfloat+FieldByName('业务员佣金_前累计').Asfloat)*FieldByName('业务部佣金比率').Asfloat/(1-FieldByName('业务部佣金比率').Asfloat)+FieldByName('总奖励').Asfloat-FieldByName('总扣罚').Asfloat;
FieldByName('业务部提成_本期').Asfloat:=(FieldByName('经理佣金_本期').Asfloat+FieldByName('业务员佣金_本期').Asfloat)*FieldByName('业务部佣金比率').Asfloat/(1-FieldByName('业务部佣金比率').Asfloat);//+FieldByName('总奖励').Asfloat-FieldByName('总扣罚').Asfloat;
// FieldByName('客户服务部提成_前累计').Asfloat:=FieldByName('维修人员佣金_前累计').Asfloat*FieldByName('客户服务部佣金比率').Asfloat/(1-FieldByName('客户服务部佣金比率').Asfloat);
FieldByName('客户服务部提成_本期').Asfloat:=FieldByName('维修人员佣金_本期').Asfloat*FieldByName('客户服务部佣金比率').Asfloat/(1-FieldByName('客户服务部佣金比率').Asfloat);
end;
end;
//heji
function TFrm_officepay.GetFieldType(FieldIndex:Integer):String;
var
FieldType:array[0..150] of TFieldType;
begin
case FieldType[FieldIndex] of
ftSmallint,ftInteger ,ftFloat:Result:='number';
ftCurrency:Result:='money';
ftDateTime:Result:='date';
ftString,ftMemo:Result:='string';
else
Result:='money';
end;
end;
//将计算结果保存到表 crttbl_officepay 中,以备后面计算用。
procedure TFrm_officepay.qmpc_varAfterOpen(DataSet: TDataSet);
var
a1:real;
a2:real;
a3:real;
a4:real;
a5:real;
a6:real;
i:integer;
j:integer;
begin
//合计列:
a1:=0;
a2:=0;
a3:=0;
a4:=0;
a5:=0;
a6:=0;
with qmpc_var do begin
first;
while not eof do begin
with queryuse do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select * from crttbl_officepay where 合同编号=:htbh and 型号=:xh and 年=:nian and 月=:yue');
parambyname('htbh').AsString:=qmpc_var.fieldbyname('合同号').Asstring;
parambyname('xh').asstring:=qmpc_var.fieldbyname('机型').Asstring;
parambyname('nian').AsString:=qmpc_var.fieldbyname('年').Asstring;
parambyname('yue').asstring:=qmpc_var.fieldbyname('月').Asstring;
open;
//如果没有同样合同号,机型,年和月的记录,就插入。
if not findfirst then
sql.Add('insert into crttbl_officepay values(:htbh,:xh,:jtssjg,:hktzxs,:jcjl,:jcfk,:jlbq,:ywybq,:wxbq,:fdjjbq,:wybbq,:khbbq,:jllj,:ywylj,:wxlj,:fdjjlj,:wyblj,:khblj,:bsc,:zjl,:zkf,:nian,:yue,:zg,:sh,:lr,:lrrq)')
//否则,更新数据。
else begin
sql.Add('update crttbl_officepay set 合同编号=:htbh,型号=:xh,机台实收价格=:jtssjg,货款调整系数=:hktzxs,价差奖励=:jcjl,价差罚款=:jcfk,');
sql.Add('经理佣金_本期=:jlbq,业务员佣金_本期=:ywybq,维修人员佣金_本期=:wxbq,浮动奖金_本期=:fdjjbq,业务部提成_本期=:wybbq,客户服务部提成_本期=:khbbq,');
sql.Add('经理佣金_前累计=:jllj,业务员佣金_前累计=:ywylj,维修人员佣金_前累计=:wxlj,浮动奖金_前累计=:fdjjlj,业务部提成_前累计=:wyblj,客户服务部提成_前累计=:khblj,');
sql.Add('办事处名称=:bsc,总奖励=:zjl,总扣罚=:zkf,年=:nian,月=:yue,主管=:zg,审核=:sh,录入=:lr,录入日期=:lrrq ');
sql.Add(' where 合同编号=:htbh and 型号=:xh and 年=:nian and 月=:yue');
end;
parambyname('jtssjg').ascurrency:=qmpc_var.fieldbyname('机台实收价格').ascurrency;
parambyname('hktzxs').asfloat:=qmpc_var.fieldbyname('货款调整系数').Asfloat;
parambyname('jcjl').ascurrency:=qmpc_var.fieldbyname('价差奖励').ascurrency;
parambyname('jcfk').ascurrency:=qmpc_var.fieldbyname('价差罚款').ascurrency;
parambyname('jlbq').ascurrency:=qmpc_var.fieldbyname('经理佣金_本期').ascurrency;
parambyname('ywybq').ascurrency:=qmpc_var.fieldbyname('业务员佣金_本期').ascurrency;
parambyname('wxbq').ascurrency:=qmpc_var.fieldbyname('维修人员佣金_本期').ascurrency;
parambyname('fdjjbq').ascurrency:=qmpc_var.fieldbyname('浮动奖金_本期').ascurrency;
parambyname('wybbq').ascurrency:=qmpc_var.fieldbyname('业务部提成_本期').ascurrency;
parambyname('khbbq').ascurrency:=qmpc_var.fieldbyname('客户服务部提成_本期').ascurrency;
parambyname('jllj').ascurrency:=qmpc_var.fieldbyname('经理佣金_前累计').ascurrency;
parambyname('ywylj').ascurrency:=qmpc_var.fieldbyname('业务员佣金_前累计').ascurrency;
parambyname('wxlj').ascurrency:=qmpc_var.fieldbyname('维修人员佣金_前累计').ascurrency;
parambyname('fdjjlj').ascurrency:=qmpc_var.fieldbyname('浮动奖金_前累计').ascurrency;
parambyname('wyblj').ascurrency:=qmpc_var.fieldbyname('业务部提成_前累计').ascurrency;
parambyname('khblj').ascurrency:=qmpc_var.fieldbyname('客户服务部提成_前累计').ascurrency;
parambyname('bsc').asstring:=qmpc_var.fieldbyname('办事处名称').asstring;
parambyname('zjl').ascurrency:=qmpc_var.fieldbyname('总奖励').ascurrency;
parambyname('zkf').ascurrency:=qmpc_var.fieldbyname('总扣罚').ascurrency;
parambyname('zg').AsString:=qmpc_var.fieldbyname('主管').Asstring;
parambyname('sh').asstring:=qmpc_var.fieldbyname('审核').Asstring;
parambyname('lr').AsString:=qmpc_var.fieldbyname('录入').Asstring;
parambyname('lrrq').Asdatetime:=qmpc_var.fieldbyname('录入日期').Asdatetime;
ExecSQL;
end;
next;
end;
end;
//合计列:
with qmpc_var do begin
first;
while not Eof do begin
a1:=a1+fieldbyname('经理佣金_本期').asfloat;
a2:=a2+fieldbyname('业务员佣金_本期').asfloat;
a3:=a3+fieldbyname('维修人员佣金_本期').asfloat;
a4:=a4+fieldbyname('浮动奖金_本期').asfloat;
a5:=a5+fieldbyname('业务部提成_本期').asfloat;
a6:=a6+fieldbyname('客户服务部提成_本期').asfloat;
Next ;
end;
end;
Edit1.text:=floattostr(a1);
Edit2.text:=floattostr(a2);
Edit3.text:=floattostr(a3);
Edit4.text:=floattostr(a4);
Edit5.text:=floattostr(a5);
Edit6.text:=floattostr(a6);
end;
procedure TFrm_officepay.DBEdit6Exit(Sender: TObject);
begin
if (qmpc.FieldByName('年').AsInteger<=0) or (qmpc.FieldByName('年').AsInteger>=9999) then
begin
application.MessageBox('时间超限,请重新输入!','提示',MB_OK) ;
DBComboBox3.Clear ;
DBComboBox3.Focused ;
end;
end;
procedure TFrm_officepay.DBComboBox5Exit(Sender: TObject);
begin
if (qmpc.FieldByName('月').AsInteger<=0) or (qmpc.FieldByName('月').AsInteger>=13) then
application.MessageBox('时间超限,请重新输入!','提示',MB_OK) ;
DBComboBox5.Focused ;
end;
procedure TFrm_officepay.TabSheet2Enter(Sender: TObject);
begin
//给出查询页的下拉列表。
with query1 do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select 合同号 from pub_z_contract');
prepare;
open;
cbhth.Items.Clear ;
while not Eof do begin
cbhth.Items.Add(FieldByName('合同号').AsString);
Next;
end;
end;
with query1 do begin
if active then close;
unprepare;
sql.Clear;
sql.Add('select 办事处名称 from pub_z_office');
prepare;
open;
cbbsc.Items.Clear ;
while not Eof do begin
cbbsc.Items.Add(FieldByName('办事处名称').AsString);
Next;
end;
end;
end;
procedure TFrm_officepay.btn_prtClick(Sender: TObject);
begin
frp_officepay:=Tfrp_officepay.Create(application);
frp_officepay.QuickRep1.Preview;
frp_officepay.free;
end;
procedure TFrm_officepay.Button1Click(Sender: TObject);
begin
frp_realprice:=Tfrp_realprice.Create(application);
frp_realprice.QuickRep1.Preview;
frp_realprice.free;
end;
procedure TFrm_officepay.Button2Click(Sender: TObject);
begin
if (edit7.text='') or (ComboBox1.text='') or (edit7.text=null) or (ComboBox1.text=null)
then application.MessageBox('您还没有设置日期!','提示',MB_OK)
else begin
with qgatherpay do begin
parambyname('gatheryear').asinteger:=strtoint(edit7.Text);
parambyname('gathermonth').asinteger:=strtoint(ComboBox1.Text);
open;
if findfirst then begin
frp_gatherpay:=Tfrp_gatherpay.Create(application);
frp_gatherpay.QuickRep1.Preview;
frp_gatherpay.free;
end
else application.MessageBox('没有记录可打印!','提示',MB_OK) ;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -