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

📄 transactionunit.pas

📁 Delphi 编写的"会员销售管理系统",源码全,数据库全,未经测试,请有兴趣的朋友自己测试!
💻 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 + -