📄 transactionunit.pas
字号:
unit transactionunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, Grids, DBGrids, ADODB, DB;
type
Tfrm_transaction = class(TForm)
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
memberid: TEdit;
employeeid: TEdit;
buynum: TEdit;
time: TDateTimePicker;
b_js: TButton;
b_clear: TButton;
GroupBox2: TGroupBox;
Label6: TLabel;
articleName: TLabel;
employeeName: TLabel;
Label12: TLabel;
payment: TLabel;
Label14: TLabel;
discount: TLabel;
Label16: TLabel;
needPay: TLabel;
Label7: TLabel;
GroupBox3: TGroupBox;
Label8: TLabel;
memberName: TLabel;
Label18: TLabel;
balance: TLabel;
Label20: TLabel;
deficiency: TLabel;
Label22: TLabel;
dot: TLabel;
Label24: TLabel;
level: TLabel;
UpDown1: TUpDown;
DBGrid2: TDBGrid;
ds_jiaoyi: TDataSource;
q_jiaoyi: TADOQuery;
aidname: TPanel;
DBGrid3: TDBGrid;
t_article1: TADOTable;
t_member1: TADOTable;
ds_article1: TDataSource;
ds_member1: TDataSource;
midname: TPanel;
DBGrid1: TDBGrid;
Label1: TLabel;
articleid: TEdit;
t_transaction: TADOTable;
t_discount: TADOTable;
procedure articleidDblClick(Sender: TObject);
procedure memberidDblClick(Sender: TObject);
procedure employeeidDblClick(Sender: TObject);
procedure DBGrid3DblClick(Sender: TObject);
procedure DBGrid1DblClick(Sender: TObject);
procedure b_clearClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure b_jsClick(Sender: TObject);
private
{ Private declarations }
function canbuy:boolean;
public
{ Public declarations }
end;
var
frm_transaction: Tfrm_transaction;
implementation
uses datamoduleunit;
{$R *.dfm}
function tfrm_transaction.canbuy:boolean;
var x:integer;
begin
x:=t_article1.FieldByName('存货').AsInteger;
if (strtoint(buynum.Text)=0) or (strtoint(buynum.Text)>x) then
begin
result:=false;
exit;
end;
result:=true;
end;
procedure Tfrm_transaction.articleidDblClick(Sender: TObject);
begin
aidname.Visible:=false;
dbgrid3.Align:=alClient;
aidname.Top:=articleid.Top;
aidname.Left:=articleid.Left+80;
t_article1.Close;
t_article1.Open;
aidname.Visible:=true;
midname.Visible:=false;
end;
procedure Tfrm_transaction.memberidDblClick(Sender: TObject);
begin
midname.Visible:=false;
dbgrid1.Align:=alClient;
midname.Top:=memberid.Top;
midname.Left:=memberid.Left+80;
t_member1.Close;
t_member1.Open;
midname.Visible:=true;
aidname.Visible:=false;
end;
procedure Tfrm_transaction.employeeidDblClick(Sender: TObject);
begin
{idname.Visible:=false;
idname.Top:=employeeid.Top;
idname.Left:=employeeid.Left+80;
{if (dbgrid1.Columns[0].Title.caption='商品编号') or (dbgrid1.Columns[0].Title.caption='会员编号')
then
begin
dbgrid1.Columns[0].Destroy;
dbgrid1.Columns[1].Destroy;
end;
dbgrid1.Columns[0].Title.caption:='经手人编号';
dbgrid1.Columns[1].Title.caption:='经手人姓名';
idname.Visible:=true; }
end;
procedure Tfrm_transaction.DBGrid3DblClick(Sender: TObject);
begin
articleid.Text:=inttostr(t_article1.FieldValues['商品编号']);
aidname.Visible:=false;
end;
procedure Tfrm_transaction.DBGrid1DblClick(Sender: TObject);
begin
memberid.Text:=inttostr(t_member1.FieldValues['会员编号']);
membername.Caption:=t_member1.FieldValues['会员姓名'];
if t_member1.FieldValues['结余']=0 then balance.Caption:='0'
else balance.Caption:=floattostr(t_member1.FieldValues['结余']);
if t_member1.FieldValues['欠款']=0 then deficiency.Caption:='0'
else deficiency.Caption:=floattostr(t_member1.Fieldvalues['欠款']);
if t_member1.FieldValues['点数']=0 then dot.Caption:='0'
else dot.Caption:=inttostr(t_member1.FieldValues['点数']);
level.Caption:=t_member1.FieldValues['级别'];
midname.Visible:=false;
end;
procedure Tfrm_transaction.b_clearClick(Sender: TObject);
begin
articleid.Clear;
memberid.Clear;
employeeid.Clear;
buynum.Text:='0';
q_jiaoyi.Close;
try
q_jiaoyi.Open;
except
q_jiaoyi.ExecSQL;
end;
end;
procedure Tfrm_transaction.FormShow(Sender: TObject);
begin
frm_transaction.b_clearClick(nil);
end;
procedure Tfrm_transaction.b_jsClick(Sender: TObject);
var yf:currency; //应付金额
pay:currency; //商品单价;
youhui:double;
jy:currency;
needpay:currency; //实付金额;
jb:string;
mdot,d:integer;
begin
if articleid.Text='' then
begin
showmessage('请输入商品编号' );
activecontrol:=articleid;
exit;
end;
if memberid.Text='' then
begin
showmessage('请输入会员编号');
activecontrol:=memberid;
exit;
end;
if employeeid.Text='' then
begin
showmessage('请检查经手人编号是否已输入');
activecontrol:=employeeid;
exit;
end;
if frm_transaction.canbuy=false then
begin
showmessage('请添写正确的购买数量');
activecontrol:=buynum;
exit;
end;
jb:=t_member1.FieldValues['级别'];
t_discount.Close;
t_discount.Filter:='级别='''+jb+'''';
t_discount.Filtered:=true;
t_discount.Open;
youhui:=t_discount.FieldValues['优惠比例'];
youhui:=1-youhui;
pay:=t_article1.FieldByName('单价').AsFloat;
yf:=pay*strtoint(buynum.Text);
if youhui<>1 then needpay:=yf*youhui else needpay:=yf;
jy:=t_member1.FieldValues['结余']-needpay;
if (jy<0) and (abs(jy)>t_discount.FieldValues['欠款限额']) then
begin
messagedlg('你的欠款限额超过'+t_discount.FieldValues['欠款限额']+'元,不能购买',
mtwarning,[mbok],0);
exit;
end;
t_transaction.Close;
t_transaction.Open;
t_transaction.Append;
t_transaction.FieldByName('会员编号').AsInteger:=strtoint(memberid.Text);
t_transaction.FieldByName('商品编号').AsInteger:=strtoint(articleid.Text);
t_transaction.FieldByName('员工编号').AsInteger:=strtoint(employeeid.Text);
t_transaction.FieldByName('日期').AsDateTime:=time.Date;
t_transaction.FieldByName('数量').AsInteger:=strtoint(buynum.Text);
t_transaction.FieldByName('金额').AsCurrency:=needpay;
t_transaction.Post;
showmessage('交易成功');
t_member1.Edit;
if jy<0 then
begin
t_member1.FieldByName('结余').AsCurrency:=0;
t_member1.FieldByName('欠款').AsCurrency:=t_member1.FieldValues['欠款']+abs(jy);
end else
begin
t_member1.FieldByName('结余').AsCurrency:=jy;
t_member1.FieldByName('欠款').AsCurrency:=0;
end;
mdot:=t_member1.FieldValues['点数'];
t_member1.FieldByName('点数').AsFloat:=needpay*50+mdot;
d:=t_member1.FieldValues['点数'];
if d>1000000 then t_member1.FieldByName('级别').AsString:='白金会员'
else if d>600000 then t_member1.FieldValues['级别']:='黄金会员'
else if d>100000 then t_member1.FieldValues['级别']:='高级会员'
else t_member1.FieldValues['级别']:='普通会员';
t_member1.Post;
t_member1.Close;
//修改商品存货信息;
t_article1.Edit;
t_article1.FieldByName('存货').AsInteger:=t_article1.FieldValues['存货']-strtoint(buynum.Text);
t_article1.Post;
t_article1.Close;
frm_transaction.b_clearClick(nil);
t_transaction.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -