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

📄 member_input.pas

📁 类似于安利公司的奖金制度下的会员层次关系、会员级别、会员奖金等
💻 PAS
字号:
unit member_input;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DB, DBCtrls, Mask, ExtCtrls, Grids, DBGrids,
  ADODB, Menus;

type
  TForm2 = class(TForm)
    StatusBar1: TStatusBar;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Label7: TLabel;
    Label8: TLabel;
    Panel2: TPanel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label3: TLabel;
    Edit4: TEdit;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Upgrade_higher(str0:string);
    procedure add_kaituo(str1:string;str2:string;ratio:Extended);
    procedure add_fudao(str1:string;str2:string;ratio:Extended);
    procedure add_guanli(str1:string;str2:string;ratio:Extended);
    procedure Button3Click(Sender: TObject);
    procedure ChangeFonts(OldFormWidth:integer;NewFormWidth:integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
uses
    Data_Unit1,select_member;

type
  TFooClass = class(TControl); { needed to get at protected }
                             { font property }
const
ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
ScreenHeight: LongInt = 600;

procedure TForm2.ChangeFonts(OldFormWidth:integer;NewFormWidth:integer);
var
i: integer;
begin
  NewFormWidth := longint(width) * longint(screen.width) div ScreenWidth;
  for i := ControlCount - 1 downto 0 do
    TFooClass(Controls[i]).Font.Size :=
      (NewFormWidth div OldFormWidth) *
      TFooClass(Controls[i]).Font.Size;
end;

procedure TForm2.FormCreate(Sender: TObject);
var
  str1,c1:string;
begin
  scaled := true;
  if (screen.width <> ScreenWidth) then
  begin
    height := longint(height) * longint(screen.height) div ScreenHeight;
    width := longint(width) * longint(screen.width) div ScreenWidth;
    scaleBy(screen.width, ScreenWidth);
  end;
  ChangeFonts(ScreenWidth,width);

  Edit8.Text := '18800.00';
  Edit9.Text := datetostr(date);
  DataModule1.ADOQuery5.Open;
  if DataModule1.ADOQuery5.Recordset.RecordCount = 0 then str1 := 'M00001'
  else begin
    str1 := DataModule1.ADOQuery5.FieldValues['member_id'];
    str1 := '1'+Copy (str1,2,length(str1)-1);
    str1 := inttostr(strtoint(str1)+1);
    c1 := Copy (str1,1,1);
    if strtoint(c1) > 1 then
      str1 := 'M1' + Copy (str1,2,length(str1)-1)
    else
      str1 := 'M' + Copy (str1,2,length(str1)-1);
  end;
  Edit1.Text := str1;
  DataModule1.ADOQuery5.Close;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  str1,str2,str3:string;
  C1,C2,S:integer;
  UpFinished:boolean;
begin

with DataModule1.ADOQuery_upgrade2 do begin
  sql.Clear;
  sql.Add('select id from member where member_id = :AA1');
  Parameters.ParamValues['AA1'] := Edit1.Text;
  open;
end;
if DataModule1.ADOQuery_upgrade2.Recordset.RecordCount > 0 then begin
  showmessage('会员编号或名称已经存在,请重新输入!');
  DataModule1.ADOQuery_upgrade2.Close;
end
else begin
  DataModule1.ADOQuery_upgrade2.Close;
  with DataModule1.ADOQuery_upgrade2 do begin
    sql.Clear;
    sql.Add('select id from member where name = :AA3 or member_id = :AA1');
    Parameters.ParamValues['AA1'] := Edit4.Text;
    Parameters.ParamValues['AA3'] := Edit2.Text;
    open;
  end;
  if DataModule1.ADOQuery_upgrade2.Recordset.RecordCount = 0 then begin
    showmessage('上级会员不存在,请重新输入!');
    DataModule1.ADOQuery_upgrade2.Close;
  end
  else begin
    DataModule1.ADOQuery_upgrade2.Close;

    StatusBar1.SimpleText := '正在保存新会员信息……';
    StatusBar1.Show;
    with DataModule1.ADOQuery1 do begin
      SQL.Clear;
      SQL.Add('insert into member (member_id,name,class,higher_id,person,telephone,'+
              'handphone,email,url,pay_amount,pay_date,remarks) VALUES (:AA1,:AA2,:AA3,'+
              ':AA4,:AA5,:AA6,:AA7,:AA8,:AA9,:AA10,:AA11,:AA12)');
      Parameters.ParamValues['AA1'] := Edit1.Text;
      Parameters.ParamValues['AA2'] := Edit2.Text;
      Parameters.ParamValues['AA3'] := 0;
      Parameters.ParamValues['AA4'] := Edit4.Text;
      Parameters.ParamValues['AA5'] := Edit5.Text;
      Parameters.ParamValues['AA6'] := Edit6.Text;
      Parameters.ParamValues['AA7'] := Edit7.Text;
      Parameters.ParamValues['AA8'] := 'info@chinafoods.cn';
      Parameters.ParamValues['AA9'] := 'http://www.chinafoods.cn';
      Parameters.ParamValues['AA10'] := strtofloat(Edit8.Text);
      Parameters.ParamValues['AA11'] := strtodate(Edit9.Text);
      Parameters.ParamValues['AA12'] := memo1.Lines.Text;
      ExecSQL;
    end;

    StatusBar1.SimpleText := '正在升级上级会员,并计算奖金等……';
    StatusBar1.Show;

//计算上级会员开拓奖金

    add_kaituo(Edit4.Text,Edit1.Text,20.0);

//计算上级会员辅导津贴

    str1 := Edit4.Text;
    C1 := 0;
    UpFinished := False;
    repeat
      if C1 >= 5 then UpFinished := True else begin
      with  DataModule1.ADOQuery_upgrade1 do begin
        SQL.Clear;
        SQL.Add('Select higher_id,class from member where member_id = :AA1');
        Parameters.ParamValues['AA1'] := str1;
        open;
        if RecordCount = 0 then begin
          UpFinished := True;
        end
        else begin
          str2 := Recordset.Fields.Item['higher_id'].Value;
          C2 := Recordset.Fields.Item['class'].Value;
          if C2 > C1 then begin
            add_fudao(str1,Edit1.Text,5*(C2-C1));
            C1 := C2;
          end;
          str1 := str2;
        end;
        close;
      end;
      end;
    until  UpFinished = True;

//计算上级会员管理奖金
    str3 := Edit4.Text;
    S := 0;
    UpFinished := False;
    with  DataModule1.ADOQuery_upgrade1 do begin
      SQL.Clear;
      SQL.Add('Select higher_id,class from member where member_id = :AA1');
      Parameters.ParamValues['AA1'] := str3;
      open;
    end;
    if DataModule1.ADOQuery_upgrade1.RecordCount <> 0 then begin
      C1 := DataModule1.ADOQuery_upgrade1.Recordset.Fields.Item['class'].Value;
      str1 := DataModule1.ADOQuery_upgrade1.Recordset.Fields.Item['higher_id'].Value;
      repeat
        if C1 <= S then UpFinished := True else begin
          with  DataModule1.ADOQuery_upgrade1 do begin
            SQL.Clear;
            SQL.Add('Select higher_id,class from member where member_id = :AA1');
            Parameters.ParamValues['AA1'] := str1;
            open;
            if RecordCount = 0 then begin
              UpFinished := True;
            end
            else begin
              str2 := Recordset.Fields.Item['higher_id'].Value;
              C2 := Recordset.Fields.Item['class'].Value;
              if C2>5 then C2 := 5;
              if (C2 = C1) and (C2 > S) then begin
                add_guanli(str1,Edit1.Text,C2-S);
                Inc(S);
              end;
              str1 := str2;
            end;
            close;
          end;
        end;
      until  UpFinished = True;
    end;


//升级上级会员

    Upgrade_higher(Edit1.Text);

//将显示的会员编号加1

    str1 := Edit1.Text;
    str1 := '1'+Copy (str1,2,length(str1)-1);
    str1 := inttostr(strtoint(str1)+1);
    if strtoint(Copy (str1,1,1)) > 1 then
      str1 := 'M1' + Copy (str1,2,length(str1)-1)
    else
      str1 := 'M' + Copy (str1,2,length(str1)-1);
    Edit1.Text := str1;
    
    Showmessage('新会员保存、上级会员升级完毕!');
    StatusBar1.SimpleText := '新会员保存、上级会员升级完毕!';
    StatusBar1.Show;

  end;
end;
end;

procedure TForm2.add_kaituo(str1:string;str2:string;ratio:Extended);
begin
     with DataModule1.ADOinsert_jiangjin do begin
          SQL.Clear;
          SQL.Add('insert into jiangjin (member_id,lower_id,jj_type,amount,date_valid) VALUES (:AA1,:AA2,:AA3,:AA4,:AA5)');
          Parameters.ParamValues['AA1'] := str1;
          Parameters.ParamValues['AA2'] := str2;
          Parameters.ParamValues['AA3'] := '开拓奖';
          Parameters.ParamValues['AA4'] := 188.0*ratio;
          Parameters.ParamValues['AA5'] := date;
          ExecSQL;
     end;
end;

procedure TForm2.add_fudao(str1:string;str2:string;ratio:Extended);
begin
     with DataModule1.ADOinsert_jiangjin do begin
          SQL.Clear;
          SQL.Add('insert into jiangjin (member_id,lower_id,jj_type,amount,date_valid) VALUES (:AA1,:AA2,:AA3,:AA4,:AA5)');
          Parameters.ParamValues['AA1'] := str1;
          Parameters.ParamValues['AA2'] := str2;
          Parameters.ParamValues['AA3'] := '辅导奖';
          Parameters.ParamValues['AA4'] := 150.4*ratio;
          Parameters.ParamValues['AA5'] := date;
          ExecSQL;
     end;
end;

procedure TForm2.add_guanli(str1:string;str2:string;ratio:Extended);
begin
     with DataModule1.ADOinsert_jiangjin do begin
          SQL.Clear;
          SQL.Add('insert into jiangjin (member_id,lower_id,jj_type,amount,date_valid) VALUES (:AA1,:AA2,:AA3,:AA4,:AA5)');
          Parameters.ParamValues['AA1'] := str1;
          Parameters.ParamValues['AA2'] := str2;
          Parameters.ParamValues['AA3'] := '管理奖';
          Parameters.ParamValues['AA4'] := 150.4*ratio;
          Parameters.ParamValues['AA5'] := date;
          ExecSQL;
     end;
end;

procedure TForm2.Upgrade_higher(str0:string);
var
  str1:string;
  Class1,Class2:integer;
  UpFinished:boolean;
begin
  str1 := str0;
  with  DataModule1.ADOQuery_upgrade1 do begin
    close;
    SQL.Clear;
    SQL.Add('Select id from member where member_id = :AA1');
    Parameters.ParamValues['AA1'] := str1;
    open;
    if RecordCount > 0 then begin      //开始检测上级会员,是否需要升级;
        UpFinished := false;
        repeat
          close;
          SQL.Clear;    //查出输入会员的上级会员编号
          SQL.Add('Select higher_id from member where member_id = :AA1');
          Parameters.ParamValues['AA1'] := str1;
          open;
          
          if (RecordCount = 0) or (FieldValues['higher_id'] = '总部') then  UpFinished := True
          else  begin
            str1 := FieldValues['higher_id'];  //上级会员编号
            close;
            SQL.Clear;        //查询上级会员级别
            SQL.Add('Select class from member where member_id = :AA1');
            Parameters.ParamValues['AA1'] := str1;
            open;
            if RecordCount > 0 then begin
              Class1 := FieldValues['class'];    //上级会员级别
              close;
              SQL.Clear;      //查询同级会员级别,
              SQL.Add('Select class from member where higher_id = :AA1 order by class Desc');
              Parameters.ParamValues['AA1'] := str1;
              open;
              if RecordCount > 1 then begin   //若有两个以上同级会员,则继续判断,
                Recordset.MoveFirst;
                Recordset.MoveNext;
                Class2 := Recordset.Fields.Item['class'].Value;
                if Class2 >= Class1 then begin   // 若第二高级别大于或等于上级会员级别,则上级会员需要升级;
                  close;
                  SQL.Clear;
                  SQL.Add('Update member set class = :AA2 where member_id = :AA1');
                  Parameters.ParamValues['AA1'] := str1;
                  Parameters.ParamValues['AA2'] := Class2 + 1;
                  ExecSQL;
                end;
              end;
            end
            else begin   //数据库有错误
              UpFinished := true;
            end;
          end;
        until UpFinished = true;
    end;
    close;
  end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
    Form2.Close;
end;

procedure TForm2.Button3Click(Sender: TObject);
begin
    Application.CreateForm(TForm7,Form7);
    if Form7.Tag = 1 then
      try
        Form7.ShowModal;
      finally
        Form7.Release;
      end
    else
      Form7.Release;
    Edit4.Text :=  VarMember_ID;
end;

end.

⌨️ 快捷键说明

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