📄 card_backbadcard.pas
字号:
end;
CardSell_DataModule.ADOQuery2.FieldByName('卡片类型').AsString :=
Trim(Fields[0].AsString);
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_BackBadCard.FindNeareastRecord(var 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 序号,IC卡号');
Sql.Add('From SCSJ_TSKXX Where');
//Sql.Add('Convert(char(10),日期,20)<=''' + DateToStr(Rq) + '''');
//Sql.Add('IC卡号=''' + Trim(CardNo) + '''');
Sql.Add('卡片状态=''' +'退卡'+ '''');
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;
CardNo:=Trim(FieldByName('IC卡号').AsString);
end;
Result:=True;
end;
procedure TFrmCard_BackBadCard.BitBtn1Click(Sender: TObject);
var
ti: TIniFile;
Rq: TDate;
Kh, AFileName, CardLx, BackXx: string;
begin
WriteToHistroy('前台退卡', Now, Time, '用户《' + FrmMain.UserName +
'进行了退卡操作', FrmMain.UserName);
if DBEdit3.Text = '' then
begin
ShowMessage('请输入卡号!');
DBEdit3.SetFocus;
DBNavigator1.VisibleButtons := [nbFirst, nbPrior, nbNext, nbLast, nbInsert,
nbCancel];
DBNavigator1.DataSource.DataSet.Cancel;
ToolButton1.Enabled := False;
Exit;
end;
CardSell_DataModule.ADOQuery2.FieldByName('IC卡号').AsString :=
Trim(DBEdit3.Text);
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 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;
ScanData;
end;
procedure TFrmCard_BackBadCard.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 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);
ScanData;
end;
procedure TFrmCard_BackBadCard.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_BackBadCard.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_BackBadCard.BitBtn3Click(Sender: TObject);
begin
Close;
end;
procedure TFrmCard_BackBadCard.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_BackBadCard.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_BackBadCard.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_BackBadCard.GetIniValue1;
var
ti: TInifile;
pass: PChar;
MachineNo: string;
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);
CardSell_DataModule.ADOQuery2.FieldByName('IC卡号').EditMask := '00000000';
DBEdit3.ReadOnly:=False;
DBEdit3.SetFocus;
{if not ReadKh(CardNo, Comhm, pass) then
begin
DBNavigator1.VisibleButtons:=[nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbEdit,nbCancel];
DBNavigator1.DataSource.DataSet.Cancel;
PublicUnit.IsErrorFlag:=True;
Exit;
end;}
//if CardNo<>'' 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,nbEdit,nbCancel];
PublicUnit.IsErrorFlag:=True;
DBNavigator1.DataSource.DataSet.Cancel;
Exit;
end;}
ToolButton1.Enabled := True;
Screen.Cursor := crDefault;
end;
procedure TFrmCard_BackBadCard.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_BackBadCard.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 + -