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

📄 ybnsdeliver.pas

📁 大型分布式销售管理系统,DELPHI编写,商业源代码,现在已经商用,下载者严禁出售该代码,只可以自己学习,包含数据库文件
💻 PAS
字号:
unit ybnsdeliver;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, ExtCtrls;

type
  Tfrm_ybnsdeliver = class(TForm)
    GroupBox2: TGroupBox;
    cbbsc: TComboBox;
    GroupBox3: TGroupBox;
    cbyear: TComboBox;
    Panel3: TPanel;
    btn_crtresult: TButton;
    btn_clr: TButton;
    btn_prt: TButton;
    GroupBox6: TGroupBox;
    s: TDBGrid;
    dsbnsdeliver: TDataSource;
    Queryuse: TQuery;
    qbnsdeliver: TQuery;
    qbnsdeliverField2: TFloatField;
    qbnsdeliverBDEDesigner: TStringField;
    qbnsdeliverBDEDesigner2: TStringField;
    qbnsdeliverBDEDesigner3: TStringField;
    qbnsdeliverBDEDesigner4: TStringField;
    qbnsdeliverBDEDesigner5: TCurrencyField;
    qbnsdeliverBDEDesigner6: TCurrencyField;
    qbnsdeliverBDEDesigner7: TCurrencyField;
    qbnsdeliverBDEDesigner8: TCurrencyField;
    qbnsdeliverBDEDesigner9: TFloatField;
    qbnsdeliverBDEDesigner10: TFloatField;
    qbnsdeliverBDEDesigner11: TFloatField;
    qbnsdeliverBDEDesigner12: TFloatField;
    qbnsdeliverField: TFloatField;
    Query1: TQuery;
    Panel4: TPanel;
    Panel9: TPanel;
    Panel8: TPanel;
    Panel5: TPanel;
    Edit1: TEdit;
    Panel6: TPanel;
    Edit2: TEdit;
    Panel7: TPanel;
    Edit3: TEdit;
    Panel10: TPanel;
    Edit4: TEdit;
    procedure getallratio;
    procedure getotherthree;
    procedure qbnsdeliverCalcFields(DataSet: TDataSet);
    procedure qbnsdeliverAfteropen(DataSet: TDataSet);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure btn_crtresultClick(Sender: TObject);
    procedure btn_clrClick(Sender: TObject);
    procedure btn_prtClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
   allratio:real;
   allmaintainratio:real;
   jyckmoney:real;
   sfmoney:real;
   deductmoney:real;
      { Public declarations }
  end;

var
  frm_ybnsdeliver: Tfrm_ybnsdeliver;

implementation

uses data, rp_ybnsdeliver;

{$R *.dfm}
//****全办事处年终奖金总权重,全办事处维修人工费总权重:
procedure Tfrm_ybnsdeliver.getallratio;
begin
   allratio:=1;
   allmaintainratio:=1;
     with query1 do begin
      if active then close;
      unprepare;
      sql.Clear;
      sql.Add('select sum(pub_z_yearratio.年终奖金权) 全办事处年终奖金总权重,sum(pub_z_yearratio.维修人工费权重) 全办事处维修人工费总权重 from pub_z_yearratio,pub_z_stuff where pub_z_stuff.办事处名称=:bscmc and pub_z_yearratio.工号=pub_z_stuff.工号');
      parambyname('bscmc').AsString :=cbbsc.Text ;
      prepare;
      open;

      if findfirst then begin
      allratio:=fieldbyname('全办事处年终奖金总权重').AsFloat ;
      allmaintainratio:=fieldbyname('全办事处维修人工费总权重').AsFloat ;
      end;

  end;
end;

//****12月份“月佣金和奖金发放表” 本人“结余存款”+12月份“月佣金和奖金发放表” 本人“应发”
//12月份“零配件计提分配表”的本人“零配件计提奖励”

procedure Tfrm_ybnsdeliver.getotherthree;
begin
   jyckmoney:=0;
   sfmoney:=0;
   deductmoney:=0;
     with query1 do begin
      if active then close;
      unprepare;
      sql.Clear;
      sql.Add('select distinct a.结余存款,a.实发,b.零配件计提奖励 from crttbl_monthdeliver a,pub_z_saledistribute b where a.年=:year and a.月=''12'' and a.工号=:gh and b.年=a.年 and b.月=a.月 and b.工号=a.工号');
      parambyname('year').AsString :=cbyear.Text ;
      parambyname('gh').AsString :=qbnsdeliver.fieldbyname('工号').AsString;
      prepare;
      open;

      if findfirst then begin
      jyckmoney:=fieldbyname('结余存款').AsFloat ;
      sfmoney:=fieldbyname('实发').AsFloat ;
      deductmoney:=fieldbyname('零配件计提奖励').AsFloat ;
      end;

  end;
end;


procedure Tfrm_ybnsdeliver.qbnsdeliverCalcFields(DataSet: TDataSet);
begin
    with qbnsdeliver do begin
      getallratio;
      getotherthree;
       fieldbyname('应发').AsFloat :=fieldbyname('总经理特别奖').AsFloat-fieldbyname('费用').AsFloat+fieldbyname('计划费用').AsFloat*fieldbyname('年终奖金权').AsFloat/allratio+jyckmoney+sfmoney+fieldbyname('维修人工费计提').AsFloat*fieldbyname('维修人工费权重').AsFloat/allmaintainratio+deductmoney+fieldbyname('其他奖励').AsFloat;
       fieldbyname('实发').AsFloat :=fieldbyname('应发').AsFloat-fieldbyname('应扣').AsFloat;
    end;
end;

procedure Tfrm_ybnsdeliver.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
        Action:=cafree;
end;

procedure Tfrm_ybnsdeliver.FormCreate(Sender: TObject);
begin
      if  qbnsdeliver.Active then qbnsdeliver.Close ;
  //通过qforuse读出办事处名称列表
  cbbsc.Items.Clear ;  
  with Queryuse do begin
    if active then close;
    unprepare;
    sql.Clear;
    sql.Add('select 办事处名称 from pub_z_office');
    prepare;
    open;
    while not eof do begin
      cbbsc.Items.Add(fieldbyname('办事处名称').AsString);
      next;
    end;
  end;
end;

procedure Tfrm_ybnsdeliver.btn_crtresultClick(Sender: TObject);
var
q1:string;
q2:string;
begin

  q1 :=cbbsc.Text;
  q2 :=cbyear.Text;

  if (q1='') or (q2='')
  then begin
    application.MessageBox('您还没有设置查询条件呢!','提示',MB_OK);
    btn_clrClick(btn_clr);
    end;
  if (q1<>'') and (q2<>'') then begin
     with  qbnsdeliver do begin
     if Active then Close ;
     parambyname('bscmc').AsString :=cbbsc.Text ;
     parambyname('year').AsString :=cbyear.Text ;

     Open ;
     qbnsdeliverAfterOpen(qbnsdeliver);
     if not findfirst then application.MessageBox('没有您想要的信息!','提示',MB_OK);
     end;
  end;
end;

procedure Tfrm_ybnsdeliver.btn_clrClick(Sender: TObject);
begin
      cbbsc.Text :='';
      cbyear.Text :='';
end;

procedure Tfrm_ybnsdeliver.qbnsdeliverAfterOpen(DataSet: TDataSet);
var
a1:real;
a2:real;
a3:real;
a4:real;
begin
//更改数据库
   with qbnsdeliver do begin
     first;
     while not eof do begin
          with Queryuse do begin
            if active then close;
            unprepare;
            sql.Clear;

            sql.Add('select * from pub_z_ybnsdeliver where 工号=:gh and 年=:nian');
            parambyname('gh').asstring:=qbnsdeliver.fieldbyname('工号').Asstring;
            parambyname('nian').AsString:=qbnsdeliver.fieldbyname('年').Asstring;
            open;
            //如果没有同样工号,年的记录,就插入。
            if  not findfirst then
            sql.Add('insert into pub_z_ybnsdeliver values(:gh,:yf,:yk,:shf,:nian)')
            //否则,更新数据。
            else begin
            sql.Add('update pub_z_ybnsdeliver set 工号=:gh,应发=:yf,应扣=:yk,实发=:shf,年=:nian');
            sql.Add('  where 工号=:gh and 年=:nian');
            end;

            parambyname('yf').ascurrency:=qbnsdeliver.fieldbyname('应发').ascurrency;
            parambyname('yk').ascurrency:=qbnsdeliver.fieldbyname('应扣').ascurrency;
            parambyname('shf').ascurrency:=qbnsdeliver.fieldbyname('实发').ascurrency;

            ExecSQL;

          end;
     next;
     end;
   end;
//合计列:
  a1:=0;
  a2:=0;
  a3:=0;
  a4:=0;
  with qbnsdeliver do begin
     first;
     while not Eof  do begin

         a1:=a1+fieldbyname('应发').asfloat;
         a2:=a2+fieldbyname('应扣').asfloat;
         a3:=a3+fieldbyname('实发').asfloat;
         Next ;
     end;
  end;
Edit1.text:=floattostr(a1);
Edit2.text:=floattostr(a2);
Edit3.text:=floattostr(a3);
Edit4.text:=floattostr(a4);

end;

procedure Tfrm_ybnsdeliver.btn_prtClick(Sender: TObject);
begin
     frp_ybnsdeliver:=Tfrp_ybnsdeliver.Create(application);
     frp_ybnsdeliver.QuickRep1.Preview;
     frp_ybnsdeliver.free;

end;

procedure Tfrm_ybnsdeliver.FormDestroy(Sender: TObject);
begin
     frm_ybnsdeliver:=nil;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -