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

📄 card_firback.~pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
    CardSell_DataModule.ADOQuery2.FieldByName('卡片面值').AsString :=
      Trim(Fields[1].AsString);
    CardSell_DataModule.ADOQuery2.FieldByName('押金').AsFloat :=
      Fields[2].AsFloat;
    CardSell_DataModule.ADOQuery2.FieldByName('存款金额').AsFloat :=
      Fields[3].AsFloat;
    CardSell_DataModule.ADOQuery2.FieldByName('客户姓名').AsString :=
      Trim(Fields[4].AsString);
    CardSell_DataModule.ADOQuery2.FieldByName('有效天数').AsInteger :=
      Fields[5].AsInteger;
    SellRq1 := Fields[6].AsDateTime;
    ValRq := Fields[6].AsDateTime + Fields[5].AsInteger;
    CardSell_DataModule.ADOQuery2.FieldByName('卡内余额').AsFloat :=
      Fields[7].AsFloat;
    if Rq > ValRq then
      CardSell_DataModule.ADOQuery2.FieldByName('退款金额').AsFloat :=
        Fields[2].AsFloat
    else
      CardSell_DataModule.ADOQuery2.FieldByName('退款金额').AsFloat :=
        Fields[2].AsFloat + Fields[7].AsFloat;
  end;
  Result := True;
end;

{获得数据库中与读写器中卡片卡号相同,状态为退卡的最近的一条记录的序号}
function  TFrmCard_FirBack.FindNeareastRecord(CardNo:String;var MaxXh:integer):Boolean;
begin
  Result:=False;
  MaxXh:=-100;
  with CardSell_DataModule.ADOQuery3 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Select top 1 序号');
    Sql.Add('From SCSJ_TSKXX Where');
    //Sql.Add('Convert(char(10),日期,20)<=''' + DateToStr(Rq) + '''');
    Sql.Add('IC卡号=''' + Trim(CardNo) + '''');
    Sql.Add('And 卡片状态=''' +'退卡'+ '''');
    Sql.Add('Order by 序号 DESC');
    try
      Open;
    except
      Screen.Cursor := crDefault;
      ShowMessage('无法浏览卡片退还信息!');
      Exit;
    end;
    if RecordCount = 0 then
    begin
      ShowMessage('卡片信息表中没有此卡号的退还信息!');
      Exit;
    end;
    MaxXh:=FieldByName('序号').AsInteger;
  end;
  Result:=True;
end;

procedure TFrmCard_FirBack.BitBtn1Click(Sender: TObject);
var
  ti: TIniFile;
  Rq: TDate;
  Kh, AFileName, CardLx, BackXx: string;
begin
  WriteToHistroy('前台退卡', Now, Time, '用户《' + FrmMain.UserName +
    '进行了退卡操作', FrmMain.UserName);
  with CardSell_DataModule.ADOQuery2 do
  begin
    Kh := Trim(FieldByName('IC卡号').AsString);
    Rq := StrToDate(DateTimeToStr(FieldByName('日期').AsDateTime));
  end;
  if not ReadXx1(Kh, Rq) then
  begin
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
     nbCancel];
    DBNavigator1.DataSource.DataSet.Cancel;
    ToolButton1.Enabled := False;
    Exit;
  end;
  CardLx :=
    Trim(CardSell_DataModule.ADOQuery2.FieldByName('卡片类型').AsString);
  ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
  BackXx := Trim(ti.ReadString('退卡类型', CardLx, '不可退'));
  ti.Free;
  if BackXx = '不可退' then
  begin
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    ToolButton1.Enabled := False;
    DBNavigator1.DataSource.DataSet.Cancel;
    ShowMessage(CardLx + '类型的卡片不能退!');
    Exit;
  end;
  if not OldCardFlag then
  begin
    PublicUnit.IsErrorFlag := True;
    ShowMessage('此卡片是一张新卡,不能退还!');
    DBNavigator1.DataSource.DataSet.Cancel;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    ToolButton1.Enabled := False;
    Exit;
  end
  else if not GetCardStatus(Rq, Kh) then
  begin
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.DataSource.DataSet.Cancel;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    ToolButton1.Enabled := False;
    Exit;
  end;
  if IfEditNull then
  begin
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.DataSource.DataSet.Cancel;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    ToolButton1.Enabled := False;
    Exit;
  end;
  if SaveToDb1 then
  begin
    //BackJe:=CardSell_DataModule.ADOQuery2.FieldByName('退款金额').AsFloat;
    //CardYe:=CardSell_DataModule.ADOQuery2.FieldByName('卡内余额').AsFloat;
    //ShowMessage('退卡成功!');
    //WriteToHistroy('前台退卡', Now, Time, '用户《' + FrmMain.UserName +
     // '退卡成功', FrmMain.UserName);
    //if IfValdate then  CardHint.SetWork('有效期内退卡!应该退还现金'+FloatToStr(BackJe)+'元!',1)
   // else  CardHint.SetWork('超期退卡!应该退还现金'+FloatToStr(BackJe)+'元,退还餐券'+FloatToStr(YtJe)+'元!',2);
  end
  else
  begin
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.DataSource.DataSet.Cancel;
    ShowMessage('退卡失败!');
  end;
  AFileName := Trim('c:\windows\valdate.txt');
  if FileExists(AFileName) then
    DeleteFile(AFileName);
  AFileName := Trim('c:\windows\balance.txt');
  if FileExists(AFileName) then
    DeleteFile(AFileName);
  DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
   nbCancel];
  ToolButton1.Enabled := False;
  ToolButton2.Enabled :=True;
  ScanData;
  Close;
end;

procedure TFrmCard_FirBack.BitBtn2Click(Sender: TObject);
var
  rq: TDate;
  IcKh, MachineNo, CardStatus, CzyName,CardNo: string;
  MaxNum:integer;
begin
  if MessageDlg('此操作将会清除卡片信息表中的数据,是否继续?',
    mtconfirmation, mbokcancel, 0) = mrcancel then
    Exit;
  {删除记录时确保卡片在读写器中}
  if not ReadKh(CardNo, Comhm, Pchar(PassWord1)) then
  begin
    ShowMessage('请插入卡片!');
    Exit;
  end;
  CardNo:=Trim(CardNo);
  if not FindNeareastRecord(CardNo,MaxNum) then Exit;
  if MaxNum=-100 then Exit;
  if ((CardSell_DataModule.ADOQuery2.FieldByName('序号').AsInteger<>MaxNum) or
  (CardSell_DataModule.ADOQuery2.FieldByName('IC卡号').AsString <>Trim(CardNo))) then
  begin
    ShowMessage('此条记录不是最新插入的,系统无法删除该记录!');
    Exit;
  end;
  with CardSell_DataModule.ADOQuery2 do
  begin
    rq := StrToDate(DateTimeToStr(Fields[0].AsDateTime));
    IcKh := (Fields[1].AsString);
    MachineNo := (Fields[10].AsString);
    CardStatus := Trim(Fields[7].AsString);
    CzyName := Trim(Fields[9].AsString);
  end;
  if not DeleteFromDB(rq, IcKh, MachineNo, CardStatus, CzyName) then
  begin
    ShowMessage('删除售卡信息表失败!');
    Exit;
  end;
  if not DeleteFromSubDB(rq, IcKh, MachineNo, Cardstatus, CzyName) then
  begin
    ShowMessage('删除售卡信息子表失败');
    Exit;
  end;
  //加入将卡恢复到操作前的状态
   //returnvalue := ReadFromDll('intialize', comh, pass);
  //清除有效期和余额
  //returnvalue:=ReadFromDll('clear',comh,pass);
  ToolButton2.Enabled:=False;
  ScanData;
end;

procedure TFrmCard_FirBack.DBEdit1DblClick(Sender: TObject);
var
  Rq: TDate;
begin
  if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
    Exit;
  {DI_DfmDBCalendar := TDI_DfmDBCalendar.Create(Application, nil,
    TDBEdit(Sender),
    'DBEdit');
  with DI_DfmDBCalendar do
  begin
    Width := 400;
    ShowModal;
    Free;
  end;}
  PZ_RqXz.SetWork(Rq);
  DBEdit1.Field.Value := Rq;
end;

procedure TFrmCard_FirBack.DBEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ((Sender is TDBEdit) and (Key = VK_RETURN)) then
  begin
    if TDBEdit(Sender).TabOrder = 12 then
    begin
      if TDBEdit(Sender).DataSource.DataSet <> nil then
        with TDBEdit(Sender).DataSource.DataSet do
        begin
          Next;
          DBEdit1.SetFocus;
          if EOF and CanModify then
            Append;
        end;
    end
    else
      perform(WM_NEXTDLGCTL, 0, 0);
  end;
end;

procedure TFrmCard_FirBack.BitBtn3Click(Sender: TObject);
begin
  Close;
end;

procedure TFrmCard_FirBack.DBEdit1Exit(Sender: TObject);
begin
  if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
    Exit;
  CardSell_DataModule.ADOQuery2.FieldByName('操作员姓名').AsString :=
    Trim(FrmMain.UserName);
  CardSell_DataModule.ADOQuery2.FieldByName('卡片状态').AsString := '退卡';
end;

procedure TFrmCard_FirBack.DBEdit2Exit(Sender: TObject);
begin
  if DBEdit1.DataSource.DataSet.State in [dsEdit, dsInsert] = False then
    Exit;
  if TEdit(Sender).Text = '' then
  begin
    ShowMessage(TEdit(Sender).Hint + '字段不能为空!');
    TEdit(Sender).SetFocus;
    Exit;
  end;
end;

procedure TFrmCard_FirBack.GetIniValue;
var
  ti: TInifile;
  pass: PChar;
  MachineNo, CardNo, ValDate, Year1, Month1, Day1, CardLx, BackXx: string;
  Rq, ValRq: TDate;
  Ye: Double;
  BackCardEnabled: Boolean;
begin
  Screen.Cursor := crHourGlass;
  PublicUnit.IsErrorFlag := False;
  IfValdate := False;
  OldCardFlag := False;
  BackCardEnabled := True;
  CardSell_DataModule.ADOQuery2.FieldByName('日期').AsDateTime := Date;
  CardSell_DataModule.ADOQuery2.FieldByName('操作员姓名').AsString :=
    Trim(FrmMain.UserName);
  CardSell_DataModule.ADOQuery2.FieldByName('卡片状态').AsString := '退卡';
  ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
  MachineNo := ti.ReadString('默认选项', 'MachineNo', '2');
  PassWord1 := ti.ReadString('默认选项', 'Mima', '55555');
  PassWord1 := UnEncryFunc(Trim(PassWord1));
  pass := PChar(PassWord1);
  Comhm := ti.ReadInteger('默认选项', 'Port', 0);
  CardSell_DataModule.ADOQuery2.FieldByName('售卡机编码').AsString :=
    Trim(MachineNo);
  if not ReadKh(CardNo, Comhm, pass) then
  begin
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
       nbCancel];
    PublicUnit.IsErrorFlag := True;
    Exit;
  end;
  if CardNo <> '' then
    OldCardFlag := True;
  Rq :=
    StrToDate(DateTimeToStr(CardSell_DataModule.ADOQuery2.FieldByName('日期').AsDateTime));
  if not ReadXx(CardNo, Rq) then
  begin
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    PublicUnit.IsErrorFlag := True;
    Exit;
  end;
  CardLx :=
    Trim(CardSell_DataModule.ADOQuery2.FieldByName('卡片类型').AsString);
  BackXx := Trim(ti.ReadString('退卡类型', CardLx, '不可退'));
  ti.Free;
  if BackXx = '不可退' then
  begin
    //BackCardEnabled:=False;
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    ShowMessage(CardLx + '类型的卡片不能退!');
  end;
  CardSell_DataModule.ADOQuery2.FieldByName('IC卡号').AsString := Trim(CardNo);
  Ye := 0;
  if not ReadYe(Ye, Comhm, pass) then
  begin
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
       nbCancel];
    Exit;
  end;
  CardSell_DataModule.ADOQuery2.FieldByName('卡内余额').AsFloat := Ye;
  if not ReadValdate(ValDate, Comhm, pass) then
  begin
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    Exit;
  end;
  Year1 := copy(ValDate, 1, 4);
  Month1 := copy(ValDate, 5, 2);
  Day1 := copy(ValDate, 7, 2);
  ValRq := EncodeDate(StrToInt(Year1), StrToInt(Month1), StrToInt(Day1));
  ValRq := StrToDate(FormatDateTime('yyyy-mm-dd', ValRq));
  if Rq > ValRq then //超期
  begin
    CardSell_DataModule.ADOQuery2.FieldByName('退款金额').AsFloat :=
      CardSell_DataModule.ADOQuery2.FieldByName('押金').AsFloat;
    YtJe := Ye;
  end
  else
  begin
    CardSell_DataModule.ADOQuery2.FieldByName('退款金额').AsFloat :=
      CardSell_DataModule.ADOQuery2.FieldByName('押金').AsFloat +
      CardSell_DataModule.ADOQuery2.FieldByName('卡内余额').AsFloat;
    IfValdate := True;
  end;
  ToolButton1.Enabled := True;
  Screen.Cursor := crDefault;
end;

procedure TFrmCard_FirBack.GetIniValue1;
var
  ti: TInifile;
  pass: PChar;
  MachineNo, CardNo: string;
  Rq: TDate;
  BackCardEnabled: Boolean;
begin
  Screen.Cursor := crHourGlass;
  PublicUnit.IsErrorFlag := False;
  IfValdate := False;
  OldCardFlag := False;
  BackCardEnabled := True;
  CardSell_DataModule.ADOQuery2.FieldByName('日期').AsDateTime := Date;
  CardSell_DataModule.ADOQuery2.FieldByName('操作员姓名').AsString :=
    Trim(FrmMain.UserName);
  CardSell_DataModule.ADOQuery2.FieldByName('卡片状态').AsString := '退卡';
  ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
  MachineNo := ti.ReadString('默认选项', 'MachineNo', '2');
  PassWord1 := ti.ReadString('默认选项', 'Mima', '55555');
  PassWord1 := UnEncryFunc(Trim(PassWord1));
  pass := PChar(PassWord1);
  Comhm := ti.ReadInteger('默认选项', 'Port', 0);
  ti.Free;
  CardSell_DataModule.ADOQuery2.FieldByName('售卡机编码').AsString :=
    Trim(MachineNo);
  if not ReadKh(CardNo, Comhm, pass) then
  begin
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    DBNavigator1.DataSource.DataSet.Cancel;
    PublicUnit.IsErrorFlag := True;
    Exit;
  end;
  if CardNo <> '00000000' then
    OldCardFlag := True;
  CardSell_DataModule.ADOQuery2.FieldByName('IC卡号').AsString := Trim(CardNo);
  Rq :=
    StrToDate(DateTimeToStr(CardSell_DataModule.ADOQuery2.FieldByName('日期').AsDateTime));
  if not ReadXx1(CardNo, Rq) then
  begin
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
      nbCancel];
    PublicUnit.IsErrorFlag := True;
    DBNavigator1.DataSource.DataSet.Cancel;
    Exit;
  end;
  ToolButton1.Enabled := True;
  Screen.Cursor := crDefault;
end;

procedure TFrmCard_FirBack.SetValue;
var
  ti: TInifile;
  MachineNo: string;
begin
  ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
  MachineNo :=
    Trim(CardSell_DataModule.ADOQuery2.FieldByName('售卡机编码').AsString);
  ti.WriteString('默认选项', 'MachineNo', MachineNo);
  ti.Free;
end;

procedure TFrmCard_FirBack.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  if Button = nbInsert then
  begin
    DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast,
      nbCancel];
    ToolButton1.Enabled := False;
    ToolButton2.Enabled := False;
    GetIniValue1;
  end;
  if Button = nbCancel then
  begin
    ToolButton1.Enabled := False;
    ToolButton2.Enabled := False;
  end;
end;
end.

⌨️ 快捷键说明

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