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

📄 unit_createcard.pas

📁 用delphi开发的美容院管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit_CreateCard;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, Buttons, Grids, StdCtrls;

type
  Tfrm_createcard = class(TForm)
    Panel1: TPanel;
    PageControl1: TPageControl;
    sht_Customer: TTabSheet;
    sht_Card: TTabSheet;
    sbtn_front: TSpeedButton;
    sbtn_back: TSpeedButton;
    sbtn_append: TSpeedButton;
    sbtn_edit: TSpeedButton;
    sbtn_save: TSpeedButton;
    sbtn_delete: TSpeedButton;
    sbtn_print: TSpeedButton;
    sbtn_close: TSpeedButton;
    sg_Customer: TStringGrid;
    Label1: TLabel;
    edt_CardNo: TEdit;
    Label2: TLabel;
    edt_CusNo: TEdit;
    Label3: TLabel;
    edt_CusName: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    edt_MinCost: TEdit;
    Label6: TLabel;
    edt_Discount: TEdit;
    Label7: TLabel;
    edt_curcurrency: TEdit;
    Label8: TLabel;
    edt_Storecurrency: TEdit;
    Label9: TLabel;
    edt_Warningcurrency: TEdit;
    Label10: TLabel;
    edt_Costscore: TEdit;
    Label11: TLabel;
    Label12: TLabel;
    edt_Password1: TEdit;
    Label13: TLabel;
    edt_Password2: TEdit;
    mm_remark: TMemo;
    Label14: TLabel;
    dtp_CreateDate: TDateTimePicker;
    Label15: TLabel;
    edt_Empno: TEdit;
    SpeedButton1: TSpeedButton;
    cbb_CardType: TComboBox;
    StatusBar1: TStatusBar;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbtn_closeClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure sbtn_appendClick(Sender: TObject);
    procedure sg_CustomerSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure sbtn_editClick(Sender: TObject);
    procedure sbtn_saveClick(Sender: TObject);
    procedure sbtn_deleteClick(Sender: TObject);
    procedure sbtn_backClick(Sender: TObject);
    procedure sbtn_frontClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure cbb_CardTypeEnter(Sender: TObject);
    procedure cbb_CardTypeExit(Sender: TObject);
    procedure edt_CusNoExit(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure sht_CardShow(Sender: TObject);
    procedure sht_CustomerShow(Sender: TObject);
    procedure edt_Password2Exit(Sender: TObject);
    procedure sbtn_printClick(Sender: TObject);
  private
    { Private declarations }
    PageIndex : integer;
    AppendOrEdit,DoChange:boolean;
    CardNo:String;
    
    procedure SearchCustomerCardInfo;
    procedure ClearCustomerCardInfo;
    function  SaveCustomerCardInfo:boolean;
    procedure MakeEnabled(temp:boolean);
    procedure GetCustomerCardInfo;
  public
    { Public declarations }
    procedure createcard_ref;
  end;

var
  frm_createcard: Tfrm_createcard;

implementation
  uses unit_DataModule,unit_TotalPublic,PublicFunOrPro;
{$R *.dfm}

{*****************用户定义过程***********************}
procedure Tfrm_createcard.createcard_ref ;
begin
  pagecontrol1.ActivePage := sht_Customer;
  dtp_CreateDate.Date  := Date;
  StatusBar1.Panels[0].Text :='当前操作员工:'+SysUserId;
  edt_Empno.Text := SysUserId;
  edt_curcurrency.Text :='0.00';
  edt_storecurrency.Text :='0.00';
  edt_warningcurrency.Text :='0.00';
  edt_costscore.Text :='0';
  
  with sg_Customer do
  begin
    cells[0,0]:='客户卡号';
    cells[1,0]:='客户编号';
    cells[2,0]:='客户姓名';
    cells[3,0]:='办卡日期';
    cells[4,0]:='办卡类型';
    cells[5,0]:='办卡员工';
    cells[6,0]:='备注';
  end;
  formresize(nil);
  SearchCustomerCardInfo();

  sbtn_append.Enabled := GetPower(SysUserId,'顾客办卡','修改权');
  sbtn_edit.Enabled   := sbtn_append.Enabled ;
  sbtn_delete.Enabled := sbtn_append.Enabled ;
  sbtn_print.Enabled  := GetPower(SysUserId,'顾客办卡','打印权');
end;

procedure Tfrm_createcard.SearchCustomerCardInfo ;
var
  i:integer;
begin
  with dmod.qrydata do
  begin
    close;
    SQL.Text:='select card_no,customercard.cus_no,cus_name,create_date,card_type,type_name,emp_no,card_remark from customercard,membercardtype,customer '+
              ' where customercard.card_type=membercardtype.type_id and customer.cus_no=customercard.cus_no';
    Open;
    i:=1;
    while not eof do
    begin
      with sg_Customer do
      begin
        cells[0,i]:=FieldByName('card_no').asstring;
        cells[1,i]:=FieldByName('cus_no').asstring;
        cells[2,i]:=FieldByName('cus_name').asstring;
        cells[3,i]:=FieldByName('create_date').AsString ;
        cells[4,i]:=FieldByName('card_type').asstring+'-'+FieldByName('type_name').AsString;
        cells[5,i]:=FieldByName('emp_no').AsString ;
        cells[6,i]:=FieldByName('card_remark').asstring;
      end;
      inc(i);
      next;
    end;
  end;
  if i<>1 then sg_Customer.RowCount :=i+1;
end;

function Tfrm_createcard.SaveCustomerCardInfo :boolean;
var
  temp_cardtype,temp_changeno:string;
begin
  result := true;
  DoChange := true;
  //to determine if the following two fields are filled or not
  if trim(edt_Cardno.Text)='' then
  begin
    MessageBox(handle,'请输入客户卡号!','提示',mb_ok+mb_iconinformation);
    result := false;
    DoChange := false;
    edt_Cardno.SetFocus ;
    exit;
  end;
  if trim(edt_Cusno.Text)='' then
  begin
    MessageBox(handle,'请输入客户编号!','提示',mb_ok+mb_iconinformation);
    result := false;
    DoChange := false;
    edt_Cusno.SetFocus ;
    exit;
  end;
  //to determine whether the Card no has existed or not
  Cardno := trim(edt_Cardno.Text );
  if AppendOrEdit then
  with dmod.qrydata do
  begin
    close;
    SQL.Text := 'select Card_no from Customercard where Card_no=:no';
    ParamByName('no').AsString := Cardno;
    open;
    if not eof then
    begin
      MessageBox(self.Handle ,'该客户卡号已经存在,请重新确认!','提示',mb_ok+mb_iconinformation);
      edt_Cardno.SetFocus ;
      result := false;
      exit;
    end;
  end;

  with dmod.qrydata do
  begin
    Close;
    SQL.Text :='select cus_no from CustomerCard where cus_no=:no';
    ParamByName('no').AsString := trim(edt_Cusno.Text);
    Open;
    if not eof then
    begin
      MessageBox(self.Handle ,'该客户编号已经存在,请重新确认!','提示',mb_ok+mb_iconinformation);
      edt_Cusno.SetFocus ;
      result := false;
      exit;
    end;
  end;
  //try to save the information
  temp_cardtype:=trim(cbb_cardtype.Text);
  
  temp_changeno:=GetDateString('DBMeirong');
  temp_changeno:=copy(temp_changeno,1,4)+copy(temp_changeno,6,2)+copy(temp_changeno,9,2);
  temp_changeno:=GetNo('DBMeirong','CustomerCardChange','','','change_no',temp_changeno,2);
  try
    dmod.Database.StartTransaction ;
    with dmod.qrydata do
    begin
      close;
      SQL.Text := 'delete from CustomerCard where card_no='+#39+Cardno+#39;
      ExecSQL;

      close;
      SQL.Text := 'insert into CustomerCard(Card_no,Cus_no,password,card_type,create_date' +
                  ',emp_no,cur_currency,store_currency,warning_currency,cost_score,card_remark,last_time,last_currency)'+
                  ' values (:cardno,:cusno,:password,:cardtype,:createdate,:empno' +
                  ',:curcurrency,:storecurrency,:warningcurrency,:costscore,:cardremark,:lasttime,:lastcurrency)';
      ParamByName('cardno').AsString   := trim(edt_Cardno.Text);
      ParamByName('cusno').AsString    := trim(edt_Cusno.Text );
      ParamByName('password').AsString := trim(edt_Password1.Text) ;
      ParamByName('cardtype').AsString := StringGetChar(temp_cardtype,'-');
      ParamByName('createdate').AsDate:= dtp_createDate.Date ;
      ParamByName('empno').AsString    := trim(edt_Empno.Text );
      ParamByName('curcurrency').AsFloat := StrToFloat(trim(edt_Curcurrency.Text ));
      ParamByName('storecurrency').AsFloat:=StrToFloat(trim(edt_StoreCurrency.Text) );
      ParamByName('warningcurrency').AsFloat := StrToFloat(trim(edt_WarningCurrency.Text) );
      ParamByName('costscore').AsFloat := StrToFloat(trim(edt_CostScore.Text));
      ParamByName('cardremark').AsString := mm_remark.Text ;
      ParamByName('lasttime').asDate := dtp_createdate.Date  ;
      ParamByName('lastcurrency').AsFloat := StrToFloat(trim(edt_StoreCurrency.Text) );
      ExecSQL;

      Close;
      SQL.Text :='insert into CustomerCardChange(change_no,card_no,cus_no,emp_no,change_date,change_remark) '+
               'values(:changeno,:cardno,:cusno,:empno,:changedate,:changeremark)';
      ParamByName('changeno').Asstring:=temp_changeno;
      ParamByName('cardno').Asstring:=trim(edt_Cardno.Text);
      ParamByName('cusno').Asstring:=trim(edt_cusno.Text);
      ParamByName('empno').Asstring:=trim(edt_empno.Text);
      ParamByName('changedate').AsDateTime :=dtp_createDate.DateTime  ;
      if AppendOrEdit then
        ParamByName('changeremark').Asstring:='新建办卡,并且保存'
      else
        ParamByName('changeremark').Asstring:='修改记录,并且保存';
      ExecSQL;
    end;
  finally
    try
       dmod.Database.Commit ;
    except
       dmod.Database.Rollback ;
       MessageBox(handle,'操作失败,请重试!','提示',mb_ok+mb_iconinformation);
       result := false;
    end;
  end;
end;

procedure Tfrm_createcard.GetCustomerCardInfo ;
var
  temp_cardtype:string;
begin
  if sg_Customer.Cells[0,sg_Customer.row]='' then exit;
  Cardno := sg_Customer.Cells[0,sg_Customer.Row];
  with dmod.qrydata do
  begin
    close;
    SQL.Text := 'select CustomerCard.cus_no,cus_name,password,card_type,type_name,create_date,emp_no,cur_currency,store_currency,warning_currency,cost_score,card_remark'+
                ' from CustomerCard,MemberCardType,Customer where CustomerCard.card_type=MemberCardType.type_id and CustomerCard.cus_no=Customer.cus_no and card_no='+#39+cardno+#39;
    open;

    edt_CardNo.Text   := Cardno;
    edt_cusno.Text    := fieldByname('cus_no').AsString ;
    edt_cusname.Text  := FieldByName('cus_name').AsString ;
    edt_password1.Text:= FieldByName('password').AsString ;
    edt_password2.Text:= FieldByName('password').AsString ;
    cbb_cardtype.Text := FieldByName('card_type').AsString+'-'+FieldByName('type_name').AsString  ;
    dtp_createdate.Date  :=FieldByName('create_Date').AsDateTime ;
    edt_empno.text       := FieldByName('Emp_no').Asstring ;
    edt_Curcurrency.Text := FloatToStr(FieldByName('cur_currency').AsFloat) ;
    edt_Storecurrency.Text  := FloatToStr(FieldByName('store_currency').AsFloat);
    edt_Warningcurrency.Text:= FloatToStr(FieldByName('warning_currency').AsFloat) ;
    edt_CostScore.Text      := FloatToStr(FieldByName('cost_score').AsFloat) ;
    mm_remark.Text    := FieldByName('card_remark').AsString ;
    temp_cardtype:=FieldByName('card_type').AsString;
  end;

  with dmod.qrydata do
  begin
    Close;
    SQL.Text :='select mincost,discount from MemberCardType where type_id='+#39+temp_cardtype+#39;
    Open;
    if not eof then
    begin
      edt_MinCost.Text :=FieldByName('mincost').AsString ;
      edt_Discount.Text :=FieldByName('discount').AsString ;
    end;
  end;

  //设置密码为不可修改
  edt_password1.ReadOnly :=true;
  edt_password2.ReadOnly :=true;
end;

procedure Tfrm_createcard.ClearCustomerCardInfo ;
begin
  edt_Cardno.Text :='';
  edt_Cusno.Text  :='';
  edt_Password1.Text :='';
  edt_Password2.Text :='';
  edt_Cusname.Text :='';
  cbb_CardType.Text :='';
  edt_MinCost.Text :='';
  edt_Discount.Text :='';
  edt_Curcurrency.Text :='';
  edt_StoreCurrency.Text :='';
  edt_WarningCurrency.Text :='';
  edt_CostScore.Text :='';
  dtp_CreateDate.Date:=Date;
  mm_remark.Text :='';
end;

procedure Tfrm_createcard.MakeEnabled(temp:boolean);
begin
   if sbtn_append.Enabled then
      sbtn_save.Enabled := temp
   else
      sbtn_save.Enabled := false;
   sbtn_delete.Enabled := false;

⌨️ 快捷键说明

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