📄 chongzhi.pas
字号:
unit chongzhi;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, DB, Mask, DBCtrls, ADODB;
type
Tchongzhifrm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label3: TLabel;
DBEdit1: TDBEdit;
DataSource1: TDataSource;
Label4: TLabel;
DBEdit2: TDBEdit;
Label5: TLabel;
DBEdit3: TDBEdit;
Label6: TLabel;
DBEdit4: TDBEdit;
Edit1: TEdit;
Label7: TLabel;
DBEdit5: TDBEdit;
ADOQuery1: TADOQuery;
Label8: TLabel;
DBEdit6: TDBEdit;
ADODataSet1: TADODataSet;
Label10: TLabel;
ADOQuery2: TADOQuery;
Label11: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBEdit1Change(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
chongzhifrm: Tchongzhifrm;
implementation
uses unit1;
{$R *.dfm}
procedure Tchongzhifrm.BitBtn1Click(Sender: TObject);
var
danjia,zhekou:single;
chongzhicishu:integer;
chongzhidate:TDatetime;
riqi1,riqi2:single;
duoji:boolean;
begin
MainForm.old_kahao :='';
{if ADOQuery1.FieldValues['会员卡级别']<>null then
begin
MainForm.ADOQuery2.Close ;
MainForm.ADOQuery2.SQL.Text :='select * from 级别分类 where 会员级别=''' + ADOQuery1.FieldValues['会员卡级别'] + '''';
MainForm.ADOQuery2.Open ;
if MainForm.ADOQuery2.RecordCount >0 then
zhekou:= MainForm.ADOQuery2.FieldValues['折扣']
else zhekou:=1;
end else zhekou:=1; }
if edit1.Text <>'' then
begin
ADOQuery2.SQL.Text :='select * from 收支表';
ADOQuery2.Open ;
ADOQuery2.Append ;
ADOQuery2.FieldByName('收入').AsFloat := strtofloat(Edit1.text);
ADOQuery2.FieldByName('经手人').AsString :=MainForm.user_name;
ADOQuery2.FieldByName('事由').AsString :='会员冲值';
ADOQuery2.FieldByName('日期').AsDateTime :=date +time;
ADOQuery2.Post ;
ADOQuery2.Close ;
MainForm.qianxiang.Open ;
MainForm.qianxiang.Edit ;
MainForm.qianxiang.FieldByName('钱箱内总金额').AsFloat :=MainForm.qianxiang.FieldValues['钱箱内总金额']+ strtofloat(Edit1.text);
MainForm.qianxiang.FieldByName('本班收支').AsFloat :=MainForm.qianxiang.FieldValues['本班收支']+ strtofloat(Edit1.text);
MainForm.qianxiang.Post ;
MainForm.qianxiang.Close ;
end;
MainForm.ADOQuery2.Close;
MainForm.ADOQuery0.Close ;
MainForm.ADOQuery0.SQL.Text :='select * from 会员冲值表';
MainForm.ADOQuery0.Open ;
MainForm.ADOQuery0.Append ;
MainForm.ADOQuery0.FieldByName('会员卡号').AsString :=DBEdit1.text ;
if edit1.Text <>'' then
MainForm.ADOQuery0.FieldByName('金额').AsFloat :=strtofloat(Edit1.text) ;
MainForm.ADOQuery0.FieldByName('日期').AsDateTime :=date+time ;
ADOQuery1.Edit ;
if ADOQuery1.FieldValues['会员卡类型']='计时卡' then
begin
//danjia:=ADODataSet1.FieldValues ['计时卡'];
//danjia:=danjia*zhekou;
if ComboBox2.ItemIndex =0 then
zhekou:=strtofloat(ComboBox1.Text )
else zhekou:=strtofloat(ComboBox1.Text )*7 ;
riqi1:= round(ADOquery1.FieldValues ['到期日期']);
riqi2:=round(date);
riqi1:=riqi1-riqi2;
if (ADOQuery1.FieldValues['到期日期']=NULL) or (riqi1<=0) then
chongzhidate:=date
else chongzhidate:= ADOQuery1.FieldValues['到期日期'];
ADOQuery1.FieldByName('到期日期').AsDateTime :=chongzhidate+ Round(zhekou);
MainForm.ADOQuery0.FieldByName('备注').AsString :='增加可用天数:' + floattostr(Round(zhekou)) +'天 ';
end
else begin
if ADOQuery1.FieldValues['会员卡类型']='计次卡' then
begin
if ADOQuery1.FieldValues['剩余次数']=NULL then
chongzhicishu:=0
else chongzhicishu:= ADOQuery1.FieldValues['剩余次数'];
//danjia:=ADODataSet1.FieldValues ['计次卡'];
//danjia:=danjia*zhekou;
ADOQuery1.FieldByName('剩余次数').AsFloat :=chongzhicishu+Round(strtofloat(ComboBox1.Text ));
MainForm.ADOQuery0.FieldByName('备注').AsString :='增加可用次数:' + floattostr(Round(strtofloat(ComboBox1.Text ))) +'次 ';
end else showmessage('该会员资料有误');
end;
MainForm.ADOQuery0.Post ;
MainForm.ADOQuery0.Close;
if ADOQuery1.FieldValues['累计金额']=NULL then
danjia:=0 //使用danjia变量暂时保存上次冲值后的累积金额
else danjia:= ADOQuery1.FieldValues['累计金额'];
if edit1.text<>''then
ADOQuery1.FieldByName('累计金额').AsFloat :=danjia+strtofloat(edit1.Text )
else ADOQuery1.FieldByName('累计金额').AsFloat :=danjia;
if (ADOQuery1.FieldValues['会员卡级别']<>'') and (ADOQuery1.FieldValues['会员卡级别']<>null) then
begin
MainForm.ADOQuery2.Close ;
MainForm.ADOQuery2.SQL.Text :='select * from 级别分类 where 会员级别=''' + ADOQuery1.FieldValues['会员卡级别'] +'''';
MainForm.ADOQuery2.Open ;
if (MainForm.ADOQuery2.FieldValues['积分规则']<>'') and (MainForm.ADOQuery2.FieldValues['积分规则']<>null) then
begin
MainForm.ADOQuery2.SQL.Text :='select * from 积分规则表 where 积分规则=''' + MainForm.ADOQuery2.FieldValues['积分规则'] +'''';
MainForm.ADOQuery2.Close ;
MainForm.ADOQuery2.Open ;
if not MainForm.ADOQuery2.Eof then begin
riqi1:=MainForm.ADOQuery2.FieldValues['冲值积分系数'];
danjia:=MainForm.ADOQuery2.FieldValues['多级积分递减'];
riqi2:= MainForm.ADOQuery2.FieldValues['介绍人加分单价'];
duoji:= MainForm.ADOQuery2.FieldValues['允许多级积分'];
MainForm.ADOQuery2.Close ;
ADOQuery1.FieldByName('会员积分').AsFloat :=ADOQuery1.FieldValues['会员积分'] +strtofloat(edit1.Text ) * riqi1;
ADOQuery1.FieldByName('为上积分').AsFloat :=ADOQuery1.FieldValues['为上积分'] +strtofloat(edit1.Text ) * riqi1;
if ADOQuery1.FieldValues['介绍人卡号']<>null then
begin
if ADOQuery1.FieldValues['为上积分'] > riqi2 then
begin
MainForm.ADOQuery2.SQL.Text :='select * from 会员表 where 会员卡号=''' + ADOQuery1.FieldValues['介绍人卡号'] +'''';
MainForm.ADOQuery2.Open ;
if not MainForm.ADOQuery2.Eof then
begin
MainForm.ADOQuery2.Edit ;
zhekou:=ADOQuery1.FieldValues['为上积分'];
MainForm.ADOQuery2.FieldByName('会员积分').AsFloat :=MainForm.ADOQuery2.FieldValues['会员积分'] + zhekou/riqi2;
ADOQuery1.FieldByName('为上积分').AsFloat :=0;
if duoji then
begin
while danjia>0.01 do
begin
MainForm.ADOQuery2.SQL.Text :='select * from 会员表 where 会员卡号=''' + MainForm.ADOQuery2.FieldValues['介绍人卡号'] +'''';
MainForm.ADOQuery2.Close;
MainForm.ADOQuery2.Open ;
if not MainForm.ADOQuery2.Eof then
begin
MainForm.ADOQuery2.Edit ;
MainForm.ADOQuery2.FieldByName('会员积分').AsFloat :=MainForm.ADOQuery2.FieldValues['会员积分'] + zhekou/riqi2 * danjia;
danjia:=danjia * danjia;
end
else begin
MainForm.ADOQuery2.Close;
break;
end;
end;
end;
end;
end;
end;
end;//MainForm.ADOQuery2.FieldValues['积分规则']<>''
end;
end;// ADOQuery1.FieldValues['会员卡级别']<>''
//MainForm.ADOQuery2.Close ;
if ADOQuery1.FieldValues['会员积分']<>null then begin
MainForm.ADOQuery2.SQL.Text :='select 会员级别 from 级别分类 where 需要积分<' + floattostr(ADOQuery1.FieldValues['会员积分']) + ' order by 需要积分 desc ';
MainForm.ADOQuery2.Open ;
if MainForm.ADOQuery2.FieldValues['会员级别']<>null then
ADOQuery1.FieldByName('会员卡级别').AsString :=MainForm.ADOQuery2.FieldValues['会员级别'];
MainForm.ADOQuery2.Close;
end;
if dbedit1.text<>'' then begin
ADOQuery1.FieldByName('会员卡状态').AsString :='可用';
ADOQuery1.Post ;
end;
close;
MainForm.Edit1Change(self);
end;
procedure Tchongzhifrm.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure Tchongzhifrm.Edit1Change(Sender: TObject);
begin
{if dbedit1.Text <>'' then begin
if edit1.Text <>'' then
begin
bitbtn1.Enabled := true;
if ADOQuery1.FieldValues['会员卡级别']<>null then
begin
MainForm.ADOQuery2.Close ;
MainForm.ADOQuery2.SQL.Text :='select * from 级别分类 where 会员级别=''' + ADOQuery1.FieldValues['会员卡级别'] + '''';
MainForm.ADOQuery2.Open ;
if MainForm.ADOQuery2.RecordCount >0 then
zhekou:= MainForm.ADOQuery2.FieldValues['折扣']
else zhekou:=1;
end
else zhekou:=1;
if ADOQuery1.FieldValues['会员卡类型']='计时卡' then
begin
if ADODataSet1.FieldValues ['计时卡']<>null then
danjia:=ADODataSet1.FieldValues ['计时卡']
else begin
showmessage('计时卡健身消费价格没有设置,请设置。');
exit;
end;
danjia:=danjia*zhekou;
if danjia=0 then
begin
showmessage('健身消费价格设置不合理,请重新设置。');
exit;
end;
Label9.Caption :='增加可用天数:' + floattostr(Round(strtofloat(edit1.Text )/danjia)) +'天 ';
if ADOQuery1.FieldValues['到期日期']=NULL then
chongzhidate:=date
else chongzhidate:= ADOQuery1.FieldValues['到期日期'];
//Label10.caption:='到期日期' + datetimetostr(chongzhidate+ Round(strtofloat(edit1.Text )/danjia));
Label10.caption:='到期日期' + FormatDateTime('YYYY"年"MM"月"DD"日 "', chongzhidate+ Round(strtofloat(edit1.Text )/danjia));
end
else begin
if ADOQuery1.FieldValues['会员卡类型']='计次卡' then
begin
if ADODataSet1.FieldValues ['计次卡']<>null then
danjia:=ADODataSet1.FieldValues ['计次卡']
else begin
showmessage('计次卡健身消费价格没有设置,请设置。');
exit;
end;
//danjia:=ADODataSet1.FieldValues ['计次卡'];
danjia:=danjia*zhekou;
if danjia=0 then
begin
showmessage('计次卡健身消费价格设置不合理,请重新设置。');
exit;
end;
Label9.Caption :='增加可用次数:' + floattostr(Round(strtofloat(edit1.Text )/danjia)) +'次 ';
if ADOQuery1.FieldValues['剩余次数']=NULL then
chongzhicishu:=0
else chongzhicishu:= ADOQuery1.FieldValues['剩余次数'];
Label10.caption:='剩余次数' + floattostr(chongzhicishu+ Round(strtofloat(edit1.Text )/danjia)) +'次 ';
end
else showmessage('该会员数据有误');
end;
end
else bitbtn1.Enabled :=false;
end
else bitbtn1.Enabled :=false; }
end;
procedure Tchongzhifrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9','.']) then
key:=chr(0);
if (Pos('.', Edit1.Text) > 0) and (key='.') then
key:=chr(0);
end;
procedure Tchongzhifrm.FormShow(Sender: TObject);
begin
ADODataSet1.Open ;
Edit1.Text :='';
end;
procedure Tchongzhifrm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
mainform.DataSource2.Enabled :=true;
end;
procedure Tchongzhifrm.DBEdit1Change(Sender: TObject);
begin
if dbedit1.Text <>'' then
if edit1.Text <>'' then bitbtn1.Enabled := true
else bitbtn1.Enabled :=false;
end;
procedure Tchongzhifrm.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9','.']) then
key:=chr(0);
if (Pos('.', Edit1.Text) > 0) and (key='.') then
key:=chr(0);
end;
procedure Tchongzhifrm.ComboBox1Change(Sender: TObject);
begin
if dbedit1.Text <>'' then begin
if (edit1.Text <>'') and (ComboBox1.Text <>'') then
begin
bitbtn1.Enabled := true;
end
else bitbtn1.Enabled :=false;
end
else bitbtn1.Enabled :=false;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -