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

📄 officepay1.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
📖 第 1 页 / 共 3 页
字号:
      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 + -