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

📄 unit_cardmanager.pas

📁 用delphi开发的美容院管理系统
💻 PAS
字号:
unit Unit_CardManager;

interface

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

type
  Tfrm_cardmanager = class(TForm)
    PageControl1: TPageControl;
    sht_currency: TTabSheet;
    sht_password: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    edt_CusNo1: TEdit;
    edt_CardNo1: TEdit;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    edt_CardType1: TEdit;
    edt_Curcurrency1: TEdit;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    edt_LastCurrency1: TEdit;
    Label7: TLabel;
    edt_CurrencyAdded: TEdit;
    Label8: TLabel;
    dtp_ThisTime: TDateTimePicker;
    Label9: TLabel;
    edt_CostScore1: TEdit;
    Label10: TLabel;
    edt_StoreCurrency1: TEdit;
    RadioGroup1: TRadioGroup;
    Label11: TLabel;
    edt_WarningCurrency1: TEdit;
    Label12: TLabel;
    edt_Empno: TEdit;
    sbtn_Search1: TSpeedButton;
    sbtn_save2: TSpeedButton;
    sbtn_close2: TSpeedButton;
    Label15: TLabel;
    edt_OldPassword: TEdit;
    Label16: TLabel;
    edt_NewPassword1: TEdit;
    Label17: TLabel;
    edt_NewPassword2: TEdit;
    Label13: TLabel;
    Label14: TLabel;
    edt_CardNo2: TEdit;
    edt_CusNo2: TEdit;
    SpeedButton6: TSpeedButton;
    RadioGroup2: TRadioGroup;
    GroupBox2: TGroupBox;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    edt_CardType2: TEdit;
    edt_Curcurrency2: TEdit;
    dtp_LastTime2: TDateTimePicker;
    edt_LastCurrency2: TEdit;
    edt_CostScore2: TEdit;
    edt_StoreCurrency2: TEdit;
    edt_WarningCurrency2: TEdit;
    dtp_LastTime1: TDateTimePicker;
    Panel1: TPanel;
    sbtn_save1: TSpeedButton;
    sbtn_close1: TSpeedButton;
    Label25: TLabel;
    edt_Score: TEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbtn_close1Click(Sender: TObject);
    procedure sbtn_close2Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure sbtn_Search1Click(Sender: TObject);
    procedure sbtn_save1Click(Sender: TObject);
    procedure RadioGroup2Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure edt_OldPasswordExit(Sender: TObject);
    procedure sbtn_save2Click(Sender: TObject);
    procedure edt_CurrencyAddedExit(Sender: TObject);
  private
    { Private declarations }
    IsChecked,IsSamePassword:boolean;
    
    procedure SearchCustomerCardInfo(isCurrency:boolean);
    function  SaveCustomerCardChangeInfo:boolean;
    function  SaveCustomerCardPasswordInfo:boolean;
    procedure ClearCustomerCardChangeInfo;
    procedure ClearCustomerCardPasswordInfo;
  public
    { Public declarations }
    procedure cardmanager_ref;
  end;

var
  frm_cardmanager: Tfrm_cardmanager;

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

{**********************************************}
procedure Tfrm_cardmanager.cardmanager_ref ;
begin
  pagecontrol1.ActivePage := sht_currency;
  sbtn_save1.Enabled := GetPower(SysUserId,'顾客卡管理','修改权');
  sbtn_save2.Enabled := sbtn_save1.Enabled;
  edt_Empno.Text := SysUserId;
end;

procedure Tfrm_cardmanager.SearchCustomerCardInfo(isCurrency:boolean) ;
var
  temp_str:string;
begin
  if isCurrency then
    if radiogroup1.ItemIndex =0 then
      temp_str:='select cus_no,card_no,type_name,cost_score,warning_currency,store_currency,last_time,last_currency,cur_currency '+
              ' from CustomerCard,MemberCardType where CustomerCard.card_type=MemberCardType.type_id and cus_no='+
              #39+trim(edt_CusNo1.Text)+#39
    else
      temp_str:='select cus_no,card_no,type_name,cost_score,warning_currency,store_currency,last_time,last_currency,cur_currency '+
              ' from CustomerCard,MemberCardType where CustomerCard.card_type=MemberCardType.type_id and card_no='+
              #39+trim(edt_CardNo2.Text)+#39
  else
    if radiogroup2.ItemIndex =0 then
      temp_str:='select cus_no,card_no,type_name,cost_score,warning_currency,store_currency,last_time,last_currency,cur_currency '+
              ' from CustomerCard,MemberCardType where CustomerCard.card_type=MemberCardType.type_id and cus_no='+
              #39+trim(edt_CusNo2.Text)+#39
    else
      temp_str:='select cus_no,card_no,type_name,cost_score,warning_currency,store_currency,last_time,last_currency,cur_currency '+
              ' from CustomerCard,MemberCardType where CustomerCard.card_type=MemberCardType.type_id and card_no='+
              #39+trim(edt_CardNo2.Text)+#39;
              
  with dmod.qrydata do
  begin
    close;
    SQL.Text := temp_str;
    Open;
    if not eof then
    begin
      if isCurrency then
      begin
        if radiogroup1.ItemIndex =0 then
           edt_cardno1.Text := FieldByName('card_no').AsString
        else
           edt_cusno1.Text  := FieldByName('cus_no').AsString ;

        edt_CardType1.Text := FieldByName('type_name').AsString ;
        edt_CostScore1.Text:= FieldByName('cost_score').AsString ;
        edt_WarningCurrency1.Text := FieldByName('warning_currency').AsString ;
        edt_StoreCurrency1.Text := FieldByName('store_currency').AsString ;
        dtp_LastTime1.Date  := FieldByName('last_time').AsDateTime ;
        edt_LastCurrency1.Text := FieldByName('last_currency').AsString ;
        edt_Curcurrency1.Text := FieldByName('cur_currency').AsString ;
      end else begin
        if radiogroup2.ItemIndex =0 then
           edt_cardno2.Text := FieldByName('card_no').AsString
        else
           edt_cusno2.Text  := FieldByName('cus_no').AsString ;

        edt_CardType2.Text := FieldByName('type_name').AsString ;
        edt_CostScore2.Text:= FieldByName('cost_score').AsString ;
        edt_WarningCurrency2.Text := FieldByName('warning_currency').AsString ;
        edt_StoreCurrency2.Text := FieldByName('store_currency').AsString ;
        dtp_LastTime2.Date  := FieldByName('last_time').AsDateTime ;
        edt_LastCurrency2.Text := FieldByName('last_currency').AsString ;
        edt_Curcurrency2.Text := FieldByName('cur_currency').AsString ;
      end;
   end else
      MessageBox(self.handle,'没有找到相符合的客户卡号记录,请重试!','提示',mb_ok+mb_iconinformation);
  end;
end;

function Tfrm_cardmanager.SaveCustomerCardChangeInfo:boolean ;
var
  temp_changeno:string;
begin
  result:=true;

  if edt_CardNo1.Text = '' then
  begin
    MessageBox(handle,'顾客卡号不能为空,请重试!','提示',mb_ok+mb_iconinformation);
    result:=false;
    exit;
  end;

  if edt_CurrencyAdded.text='' then
  begin
    MessageBox(handle,'请输入你要充值的金额!','提示',mb_ok+mb_iconinformation);
    result:=false;
    exit;
  end;

  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','CustomerCardCurrencyChange','','','change_no',temp_changeno,2);
  try
    dmod.Database.StartTransaction;
    with dmod.qrydata do
    begin
      close;
      SQL.Text :='update CustomerCard set last_time='+#39+DateToStr(dtp_ThisTime.DateTime)+#39+
                ',last_currency='+#39+trim(edt_CurrencyAdded.Text)+#39+
                ',cur_currency=cur_currency+'+#39+trim(edt_CurrencyAdded.Text)+#39+
                ',cost_score=cost_score+'+#39+trim(edt_score.Text)+#39+
                ' where card_no='+#39+trim(edt_CardNo1.Text)+#39;
      ExecSQL;

      close;
      SQL.Text :='insert into CustomerCardCurrencyChange(change_no,card_no,cus_no,emp_no,change_date,last_currency,currency_added,total_currency,add_or_reduced) '+
                'values(:changeno,:cardno,:cusno,:empno,:changedate,:lastcurrency,:currencyadded,:totalcurrency,:addorreduced)';
      ParamByName('changeno').AsString :=temp_changeno;
      ParamByName('cardno').AsString := trim(edt_Cardno1.Text);
      ParamByName('cusno').AsString  := trim(edt_Cusno1.Text );
      ParamByName('empno').AsString  := trim(edt_Empno.Text );
      ParamByName('changedate').AsDate:=dtp_ThisTime.Date ;
      ParamByName('lastcurrency').AsFloat:=StrToFloat(trim(edt_curcurrency1.Text));
      ParamByName('currencyadded').AsFloat:=StrToFloat(trim(edt_currencyadded.Text ));
      ParamByName('totalcurrency').AsFloat:=StrToFloat(trim(edt_curcurrency1.Text))+StrToFloat(trim(edt_currencyadded.Text) );
      ParamByName('addorreduced').AsString:='0'; 
      ExecSQL;
    end;
  finally
    try
      dmod.Database.Commit ;
      MessageBox(handle,'顾客卡充值完成!','提示',mb_ok+mb_iconinformation);
    except
      dmod.Database.Rollback ;
      result:=false;
      Messagebox(handle,'顾客卡充值失败,请重试!','提示',mb_ok+mb_iconinformation);
    end;
  end;
end;

procedure Tfrm_cardmanager.ClearCustomerCardChangeInfo ;
begin
  edt_CusNo1.Text :='';
  edt_CardNo1.Text :='';
  edt_CardType1.Text :='';
  edt_CostScore1.Text :='';
  edt_WarningCurrency1.Text :='';
  edt_StoreCurrency1.Text :='';
  edt_LastCurrency1.Text :='';
  edt_Curcurrency1.Text :='';
  edt_CurrencyAdded.Text :='';
  edt_Score.Text :='';
end;

function Tfrm_cardmanager.SaveCustomerCardPasswordInfo ;
begin
  result:=true;
  
  IsSamePassword:=true;

  if Trim(edt_CardNo2.Text)='' then
  begin
    Messagebox(handle,'顾客卡号不能为空,请重试!','提示',mb_ok+mb_iconinformation);
    edt_CardNo2.SetFocus ;
    exit;
  end;

  if (edt_NewPassword1.Text <> '') or (edt_NewPassword2.Text <> '') then
  if edt_NewPassword2.Text <> edt_NewPassword1.Text then
  begin
    Messagebox(handle,'两次输入的新密码不一样,请重试!','提示',mb_ok+mb_iconinformation);
    edt_NewPassword1.SetFocus ;
    IsSamePassword:=false;
  end;

  if IsSamePassword and IsChecked then
  begin
    with dmod.qrydata do
    begin
      close;
      SQL.Text :='update CustomerCard set password='+#39+trim(edt_NewPassword1.Text)+#39+
                 ' where card_no='+#39+trim(edt_CardNo2.Text)+#39;
      ExecSQL;
      MessageBox(self.handle,'密码更新成功!','提示',mb_ok+mb_iconinformation);
    end;
  end else
  begin
     MessageBox(handle,'密码更新时出错,请重试!','提示',mb_ok+mb_iconinformation);
     result:=false;
  end;
end;

procedure Tfrm_cardmanager.ClearCustomerCardPasswordInfo ;
begin
  edt_CusNo2.Text :='';
  edt_CardNo2.Text :='';
  edt_CardType2.Text :='';
  edt_CostScore2.Text :='';
  edt_WarningCurrency2.Text :='';
  edt_StoreCurrency2.Text :='';
  edt_LastCurrency2.Text :='';
  edt_Curcurrency2.Text :='';
  edt_OldPassword.Text  :='';
  edt_NewPassword1.Text :='';
  edt_NewPassword2.Text :='';
end;
{**********************************************}
procedure Tfrm_cardmanager.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  action:=cafree;
  frm_cardmanager:=nil;
end;

procedure Tfrm_cardmanager.sbtn_close1Click(Sender: TObject);
begin
  close;
end;

procedure Tfrm_cardmanager.sbtn_close2Click(Sender: TObject);
begin
  close;
end;

procedure Tfrm_cardmanager.RadioGroup1Click(Sender: TObject);
begin
  if radiogroup1.ItemIndex =0 then
  begin
    edt_CusNo1.Color := clWindow;
    edt_CusNo1.ReadOnly := false;
    edt_CardNo1.Color := $00D5F0F1;
    edt_CardNo1.ReadOnly :=true;
  end else begin
    edt_CardNo1.Color := clWindow;
    edt_CardNo1.ReadOnly :=false;
    edt_CusNo1.Color := $00D5F0F1;
    edt_CusNo1.ReadOnly := true;
  end;
end;

procedure Tfrm_cardmanager.sbtn_Search1Click(Sender: TObject);
begin
  SearchCustomerCardInfo(true);
end;

procedure Tfrm_cardmanager.sbtn_save1Click(Sender: TObject);
begin
  if SaveCustomerCardChangeInfo then
     ClearCustomerCardChangeInfo;
end;

procedure Tfrm_cardmanager.RadioGroup2Click(Sender: TObject);
begin
  if radiogroup2.ItemIndex =0 then
  begin
    edt_CusNo2.Color := clWindow;
    edt_CusNo2.ReadOnly := false;
    edt_CardNo2.Color := $00D5F0F1;
    edt_CardNo2.ReadOnly :=true;
  end else begin
    edt_CardNo2.Color := clWindow;
    edt_CardNo2.ReadOnly :=false;
    edt_CusNo2.Color := $00D5F0F1;
    edt_CusNo2.ReadOnly := true;
  end;
end;

procedure Tfrm_cardmanager.SpeedButton6Click(Sender: TObject);
begin
  SearchCustomerCardInfo(false);
end;

procedure Tfrm_cardmanager.edt_OldPasswordExit(Sender: TObject);
var
  temp_password:string;
begin
  isChecked:=true;

  with dmod.qrydata do
  begin
    close;
    SQL.Text :='select password from customercard where card_no='+#39+trim(edt_CardNo2.Text)+#39;
    Open;
    if not eof then
       temp_password:=FieldByname('password').AsString ;
  end;
  if temp_password<>trim(edt_OldPassword.Text) then
  begin
    MessageBox(handle,'输入的密码错误,请重试!','提示',mb_ok+mb_iconinformation);
    edt_OldPassword.SetFocus ;
    isChecked:=false;
  end;
end;

procedure Tfrm_cardmanager.sbtn_save2Click(Sender: TObject);
begin
  if SaveCustomerCardPasswordInfo then
    ClearCustomerCardPasswordInfo;
end;

procedure Tfrm_cardmanager.edt_CurrencyAddedExit(Sender: TObject);
begin
  try
    edt_Score.Text := FloatToStr(StrToFloat(edt_CurrencyAdded.Text)*0.1);
  except
    MessageBox(handle,'输入的充值金额不合法,请重试!','提示',mb_ok+mb_iconinformation);
  end;
end;

end.

⌨️ 快捷键说明

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